Страница 9 из 12

addon_for_thanks_for_posts

Добавлено: 05 окт 2014, 10:32
rxu
Ну как же. Сколько уже раз при изменении кода хелпера, уведомлений, и даже шаблона приходилось менять и контроллер, и вызывающий его яваскрипт.

addon_for_thanks_for_posts

Добавлено: 05 окт 2014, 10:45
Алг
Контроллер-да, но Вы же его и меняли и хорошо в этом разбираетесь, джаваскрипт пока не менялся при этих изменениях. При изменении шаблона со стороны движка, изменение джскрипта маловероятно, если Вы в эксте будете менять шаблон, то возможно, придётся менять и скрипт. Уверена на 100%, что в команде есть неплохо знающие клиентские скрипты, помогут поправить код, если я отвалюсь

Отправлено спустя 1 минуту 39 секунд:
И в любом случае, весь мой код можно легко отключить

addon_for_thanks_for_posts

Добавлено: 05 окт 2014, 11:03
rxu
Вобщем, разобрался. Всё немного по-другому.
Инъекцию зависимости можно сделать опциональной, очень просто. Вместо

Код: Выделить всё

- @gfksx.ThanksForPosts.helper
добавляем

Код: Выделить всё

- @?gfksx.ThanksForPosts.helper
знак вопроса означает, что сервис будет передан в конструктор, если этот сервис существует. Если нет - просто не будет передано ничего, т.е. null.
Соответственно, в конструкторе можно установить для этого сервиса значение по умолчанию, типа

Код: Выделить всё

\gfksx\ThanksForPosts\core\helper $gfksx_helper = NULL
и потом в коде делать проверку, например

Код: Выделить всё

if ($this->gfksx_helper !== NULL)
{
	$this->gfksx_helper->add_notification($thanks_data);
}
Источник: Service Container (The Symfony Book) :: Making References optional

addon_for_thanks_for_posts

Добавлено: 05 окт 2014, 13:39
Алг
пр?

addon_for_thanks_for_posts

Добавлено: 05 окт 2014, 14:52
rxu
ПР это да, по идее, при отсутствии хелпера надо вообще блокировать работу аддона, пока не понял, в какое место return вставить :oops:

addon_for_thanks_for_posts

Добавлено: 05 окт 2014, 16:47
Алг
лучше не return, а

Код: Выделить всё

$this->error[] = array('error' => $this->user->lang['INCORRECT_THANKS']);
или задать новое сообщение об ошибке

Отправлено спустя 8 минут 45 секунд:
нет, лучше и не так.
rxu писал(а):QR_BBPOST в коде делать проверку, например
КОД: ВЫДЕЛИТЬ ВСЁ
if ($this->gfksx_helper !== NULL)
{
   $this->gfksx_helper->add_notification($thanks_data);
}
эта проверка в листенере? Если в нем, то добавьте в темплейт булевскую переменную, а я в шаблоне буду проверять её значение. если не подключён экст, то я не подключаю файл addon_for_thanks_for_posts.js и аддон не будет работать

addon_for_thanks_for_posts

Добавлено: 05 окт 2014, 17:17
rxu
Так-с. В аддоне подключение addon_for_thanks_for_posts.js происходит внутри условия

Код: Выделить всё

<!-- IF S_TOPIC_ID && S_FORUM_THANKS -->
...
<!-- INCLUDEJS addon_for_thanks_for_posts.js -->
<!-- ENDIF -->
Т.е., тогда, ничего делать не надо?

Отправлено спустя 1 минуту 6 секунд:
Хотя нет, такая же переменная есть и в основном эксте, и в аддоне. Кстати, надо ли это? В основном эксте S_FORUM_THANKS определена во вьютопике, в принципе, в аддоне можно вообще от слушателя избавиться тогда.

Отправлено спустя 11 минут 18 секунд:
Попробовал - не вышло почему-то.

addon_for_thanks_for_posts

Добавлено: 05 окт 2014, 17:18
Алг
rxu писал(а):QR_BBPOST <!-- IF S_TOPIC_ID && S_FORUM_THANKS -->
1-е понятно, 2-е я уже забыла, что это. выглядит не очень мнемонически

addon_for_thanks_for_posts

Добавлено: 05 окт 2014, 17:19
rxu
А потому, что событие шаблона от аддона срабатывает раньше.
Алг писал(а):QR_BBPOST 2-е я уже забыла, что это. выглядит не очень мнемонически
Ага. Это флаг наличия права благодарить в данном форуме.

addon_for_thanks_for_posts

Добавлено: 05 окт 2014, 17:22
Алг
rxu писал(а):QR_BBPOST А потому, что событие шаблона от аддона срабатывает раньше.
можно задать низший приоритет?