Новости Joomla

Как триггерить события для плагинов на манер Joomla 5+?В Joomla 6 должны удалить метод...

Как триггерить события для плагинов на манер Joomla 5+?В Joomla 6 должны удалить метод...

👩‍💻 Как триггерить события для плагинов на манер Joomla 5+?В Joomla 6 должны удалить метод triggerEvent(), с помощью которого раньше вызывались события для плагинов. Теперь чтобы в своём коде вызвать событие для плагина и получить от него результаты нужно:- создать объект класса события- передать в него параметры

use Joomla\CMS\Event\AbstractEvent;use Joomla\CMS\Factory;use Joomla\CMS\Plugin\PluginHelper;// Грузим плагины нужных группPluginHelper::importPlugin('system');// Создаём объект события$event = AbstractEvent::create('onAfterInitUniverse', [    'subject' => $this,    'data'    => $data, // какие-то данные    'article' => $article, // ещё материал вдовесок    'product' => $product, // и товаров подвезли]);// Триггерим событиеFactory::getApplication()->getDispatcher()->dispatch(    $event->getName(), // Тут можно строку передать 'onAfterInitUniverse'    $event);// Получаем результаты// В случае с AbstractEvent это может быть не 'result',// а что-то ещё - куда сами отдадите данные.// 2-й аргумент - значение по умолчанию, // если не получены результаты$results = $event->getArgument('result', []);
Плюсы такого подхода - вам не нужно запоминать порядок аргументов и проверять их наличие. Если вы написали свой класс события, то в плагине можно получать аргументы с помощью методов $event->getArticle(), $event->getData(), $event->getProduct() и подобными - реализуете сами под свои нужды. Если такой класс события написали, то создаёте экземпляр своего класса события и укажите его явно в аргументе eventClass
use Joomla\Component\MyComponent\Administrator\Event\MyCoolEvent;$event = MyCoolEvent::create('onAfterInitUniverse', [    'subject'    => $this,    'eventClass' => MyCoolEvent::class, // ваш класс события    'data'       => $data, // какие-то данные    'article'    => $article, // ещё материал вдовесок    'product'    => $product, // и товаров подвезли]);
Ожидаемо, что класс вашего события будет расширять AbsractEvent или другие классы событий Joomla.🙁 Есть неприятный нюанс - нельзя просто так вызывать событие и ничего не передать в аргументы. Аргумент subject обязательный. Но если вы всё-таки не хотите туда ничего передавать - передайте туда пустой stdClass или объект Joomla\registry\Registry.
@joomlafeed#joomla #php #webdev

0 Пользователей и 1 Гость просматривают эту тему.
  • 9 Ответов
  • 4358 Просмотров
*

YoJiG

  • Захожу иногда
  • 55
  • 3 / 0
Joomla 2.5.3 K2 2.5.5
При добавлении материала пользователем через фронтенд после нажатии пимпы "сохранить" в том окне в котором редактировали материал получаем:
"403
Вы не авторизованы для просмотра этого ресурса" - пользователь авторизован и залогинен.


На самом сайте появляется надпись "Материал сохранен"


А сам материал появляется, естественно неопубликованный.


Хотел сделать как тут написанно , но не нашел у себя такого файла.
« Последнее редактирование: 02.04.2012, 23:16:50 от SDKiller »
*

YoJiG

  • Захожу иногда
  • 55
  • 3 / 0
Re: K2 2.5.5 при добавлении материалов -403
« Ответ #1 : 02.04.2012, 23:14:50 »
Так:

Нашел файл отвечающий за данную форму components/com_k2/templates/default/itemform.php
Нашел там такую функцию вроде бы похожа на нужное
Код
Joomla.submitbutton = function(pressbutton){
if (pressbutton == 'cancel') {
submitform( pressbutton );
return;
}
if (\$K2.trim(\$K2('#title').val()) == '') {
alert( '".JText::_('K2_ITEM_MUST_HAVE_A_TITLE', true)."' );
}
else if (\$K2.trim(\$K2('#catid').val()) == '0') {
alert( '".JText::_('K2_PLEASE_SELECT_A_CATEGORY', true)."' );
}
else {
syncExtraFieldsEditor();
\$K2('#selectedTags option').attr('selected', 'selected');
submitform( pressbutton );
Если поставить после этого
Код
parent.$('sbox-window').close();
или
Код
parent.document.getElementById('sbox-window').close();

то при нажатии на пимпу сохранить - пропадают кнопки управления всплывающим окном ( то есть его можно закрыть, только если жмакать назад в браузере), но пропадает ошибка 403 и выводится сообщение что "Администратор сайта одобрит ваш материал после проверки."
« Последнее редактирование: 02.04.2012, 23:17:16 от SDKiller »
*

SDKiller

  • Moderator
  • 2705
  • 329 / 5
  • ...ergo sum
Re: K2 2.5.5 при добавлении материалов -403
« Ответ #2 : 02.04.2012, 23:30:28 »
... получаем:
"403
Вы не авторизованы для просмотра этого ресурса" ...

Включите режим отладки, посмотрите что написано в сообщении об ошибке (что-нибудь наподобие "View not found (name, type, prefix)...")
*

YoJiG

  • Захожу иногда
  • 55
  • 3 / 0
Re: K2 2.5.5 при добавлении материалов -403
« Ответ #3 : 02.04.2012, 23:33:59 »
Вы не авторизованы для просмотра этого ресурса
1. Вы не авторизованы для просмотра этого ресурса
Call stack
#   Function   Location
1   JSite->dispatch()   JROOT/index.php:42
2   JComponentHelper::renderComponent()   JROOT/includes/application.php:187
3   JComponentHelper::executeComponent()   JROOT/libraries/joomla/application/component/helper.php:357
4   require_once()   JROOT/libraries/joomla/application/component/helper.php:388
5   K2HelperPermissions::checkPermissions()   JROOT/components/com_k2/k2.php:28
6   JError::raiseError()   JROOT/components/com_k2/helpers/permissions.php:130
7   JError::raise()   JROOT/libraries/joomla/error/error.php:251

Это если оригинальный файл , если вносить дополнения как я писал выше, то ошибок нет.
« Последнее редактирование: 02.04.2012, 23:38:42 от YoJiG »
*

SDKiller

  • Moderator
  • 2705
  • 329 / 5
  • ...ergo sum
Re: K2 2.5.5 при добавлении материалов -403
« Ответ #4 : 03.04.2012, 00:08:07 »
5   K2HelperPermissions::checkPermissions()   JROOT/components/com_k2/k2.php:28
6   JError::raiseError()   JROOT/components/com_k2/helpers/permissions.php:130

Для начала попробуйте проверить настройки уровней доступа к категориям для данного пользователя.
*

YoJiG

  • Захожу иногда
  • 55
  • 3 / 0
Re: K2 2.5.5 при добавлении материалов -403
« Ответ #5 : 03.04.2012, 00:41:11 »
В К2 стоит, что пользователь может добавлять на сайт новости, но не может их публиковать. В самой Joomla - по умолчанию - как я понимаю - register.

Кстати, если в К2 дать право пользователю публиковать материалы, то ошибки не вылезает, но материал становиться заблокированным.

Не уж то детская болезнь К2 еще с версии 1.5 ?
« Последнее редактирование: 03.04.2012, 00:47:54 от YoJiG »
*

YoJiG

  • Захожу иногда
  • 55
  • 3 / 0
Re: K2 2.5.5 при добавлении материалов -403
« Ответ #6 : 03.04.2012, 00:47:08 »
А подскажите где про права доступа почитать? Что то я совсем в них запутался.

Так, вроде бы что то проясняется. Выставил пока все и всем - разрешить, ошибки пропали. Завтра буду запрещать, и смотреть что к чему.
« Последнее редактирование: 03.04.2012, 01:39:47 от YoJiG »
*

chernblx

  • Захожу иногда
  • 262
  • 2 / 0
Re: K2 2.5.5 при добавлении материалов -403
« Ответ #7 : 03.04.2012, 16:30:04 »
У тебя по любому проблема вот в чём: Стоит запрет на редактирование материала. При нажатии сохранить, он пытается вывести тебя на страницу редактирования. А редактирование с фронта скорее всего отключено. Проверь
*

smithana

  • Осваиваюсь на форуме
  • 12
  • 0 / 0
Re: K2 2.5.5 при добавлении материалов -403
« Ответ #8 : 11.01.2014, 13:32:16 »
столкнулся с такой же проблемой.
Пользователь может добавлять новости из фронтенда, но редактировать их он не может. Это делает модератор.
Соответственно после нажатия на кнопку сохранить получает 403 ошибку.

Кто-нибудь вообще знает как можно закрыть это модальное окно handler:'iframe'?
Joomla у меня 2.5, k2 версии 2.5.7.

Пробовал различные вариации
parent.$('sbox-window').close();
parent.document.getElementById('sbox-window').close()
ругается что parent.$('...').close(); не является функцией.

подсмотрел что у кнопки выхода из окна (крест) ссылка #, пробовал window.location='#'; вообще ничего консоль не выдала и осталась 403 ошибка.

Сработали два варианта, но криво:
1. pressbutton = 'cancel';
submitform( pressbutton );
403 ошибки нет, но модалка не закрывается, а в ней отображается сайт.
2. window.history.back();
модалка закрывается, но открывается не та страница с которой открывалась модалка, а предыдущая.

Всё пробовал добавлять в конец
syncExtraFieldsEditor();
\$K2('#selectedTags option').attr('selected', 'selected');
submitform( pressbutton );
*

donvincento

  • Осваиваюсь на форуме
  • 31
  • 0 / 0
Re: K2 2.5.5 при добавлении материалов -403
« Ответ #9 : 09.11.2014, 12:09:04 »
И я столкнулся с такой же проблемой.
Пользователь должен мочь добавлять новости из фронтенда, но редактировать их он не должен. Это делает модератор.
Именно такую группу я хочу иметь. Но раз такой вариант заложен в K2, то должен работать, а он не работает. Это баг.

Соответственно после создания материала при этих условиях и нажатия на кнопку сохранить, пользователь этой группы получает 403 ошибку.

Вот очень хочется с этим разобраться и "допилить".
Также бред с разрешением Редактировать комментарии на свои статьи. Можно вырезать кусок кода и запретить всем. Но хотелось бы также давать права группам.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Перенос материалов из Joomla3 + K2 в Joomla4

Автор Magnum79

Ответов: 0
Просмотров: 1474
Последний ответ 24.05.2024, 21:49:14
от Magnum79
Как добавить свой класс для страниц вывода материалов по тегу k2?

Автор Slava77

Ответов: 0
Просмотров: 4084
Последний ответ 16.02.2023, 23:29:34
от Slava77
Наполняя категорию K2 копированием материалов, пропадает навигация в статьях

Автор Slava77

Ответов: 4
Просмотров: 3027
Последний ответ 24.12.2021, 22:30:56
от Slava77
Перестала работать опция оценки материалов/рейтинг в компоненте K2

Автор Yonakano

Ответов: 4
Просмотров: 1766
Последний ответ 07.02.2021, 00:30:57
от Yonakano
Не работает мультиязычность для материалов К2

Автор Kokshetau

Ответов: 5
Просмотров: 1137
Последний ответ 21.11.2020, 23:36:12
от Kokshetau