easyComm 1.15.0 большой апдейт: ответы, улучшенные файлы и многое другогое!

Привет!

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

В связи с этим: БЕКАП ПЕРЕД ОБНОВЛЕНИЕМ ОБЯЗАТЕЛЕН!!!
Эта версия содержит большое количество изменений, я не исключаю того, что будут баги.

На это обновление я затратил наверное часов 60 рабочего времени, так что в этой статье даже и не опишу всего, точно что-нибудь пропущу или забуду.



1. Ответы на сообщения


Про это у меня много раз спрашивали, будут ли ответы на сообщения (отзывы/вопросы — смотря для чего компонент используется на вашем сайте). Пора что-то сделать)))

В прошлых версиях компонента у менеджера была возможность написать на сообщение пользователя. Для этого у объекта ecMessages были доступны 2 текстовых поля: reply_author и reply_text, которые мог заполнить менеджер сайта, например так: «Администратор: спасибо за ваш отзыв».

В этой версии я добавил новую сущность Ответ (ecReply), содержащий просто имя пользователя, его почту и текст. Ответы не влияют на рейтинг, на количество отзывов или вопросов на вашем сайте. Воспринимайте их как комментарии к отзывам. В целом ecReply поддерживают вложенность (древовидность), но на фронте я не стал реализовать мощную систему вроде комментариев Tickets. Всё несколько проще, напоминает наверное ответы в telegram.
Сразу отвечу: к ответам нельзя прикреплять файлы или голосовать за них, это простое обсуждение.



Для того, чтобы функционал ответов стал доступен на сайте нужно:
1. у сниппета ecMessages включить параметр repliesEnable
2. Добавить в произвольное место страницы вызов сниппета ecReplyForm (форма добавления ответа другая, поэтому для нее свой сниппет по аналогии со знакомым ecForm).

2. Улучшил работу с прикрепленными к сообщениям файлами


1. Добавил генерацию превьюшек для изображений, чтобы страницы вашего сайта открывались быстрее. Для управления размером превью посмотрите настройки (конкретно thumbnailConfig) источника файлов easyComm.
В принципе демонстрация работы тоже не скриншоте выше. Если прикреплено изображение — видим его превью с открытием по клику, а если это файл — то видим ссылку с именем файла, его типом и размером. Само собой всё можно поменять в чанке и через css.

3. Улучшил внешний вид и внутренности стандартных чанков


Здесь много мелочей:
— я переписал чанки, стили;
— обновил js файл (в т.ч. потому что появились ответы);
— один момент изменился очень сильно: в чанке tpl сниппета ecMessages теперь выводятся все сообщения в цикле, а не сообщения по одному! Поэтому если вы делали свой чанк на его основе — просто обновится не получится! При этом такие параметры сниппета как tplWrapper, tplEmpty, outputSeparator, toSeparatePlaceholders стали не нужны и были удалены.
— чанк tpl.ecForm (это тот, который использует сниппет ecForm) тоже изменился, там теперь другие идентификаторы (id) у слоёв, это важно, новый js файл рассчитан на работу с ними.

4. Переименованы некоторые поля в БД


Переименованы поля у объектов:
— ecThread: resource > resource_id
— ecMessage: thread > thread_id
— ecVote: message > message_id
— Переименованы timestamp поля объектов (напр. createdon => created_on)

Я учел эти переименования в установщике, но БЕКАП ВСЕ РАВНО ОБЯЗАТЕЛЕН при обновлении.

5. Изменена работа уведомлений через email


Изменена работа уведомлений через email, обновились соответствующие чанки шаблонов писем и параметры сниппетов ecForm и ecMessage.

Все параметры для сниппетов прописаны, когда вы перетаскиваете в админке сниппет в область контента, в появившемся окне их можно подсмотреть и настроить.

И я решил не отправлять письмо пользователю в момент добавления нового отзыва (там ранее был текст вроде «Ваше сообщение отправлено, оно будет опубликовано после модерации»). Аналогичное сообщение выводится на фронте, зачем его дублировать на почту я не знаю. Email будет отправляться только при публикации сообщения на сайте.

6. Улучшено уведомление о добавлении сообщения


При добавлении нового сообщения или ответа мы теперь сразу его видим с предупреждением, что он не опубликован.


7. Улучшения по интерфейсу в админке


Постарался немного улучшить интерфейс путем добавления индикаторов, сигнализирующих о наличии у сообщения прикрепленных файлов, ответов, голосов, а так же о кол-ве неопубликованных сообщений и ответов.



Версия компонента для MODX 3


upd 28.03.2024: Для MODX 3 выпущена версия 3.6.0-pl, доступна в modstrore.pro

Актуализация документации


К сожалению на это требуется много времени, займусь по мере возможностей.
Наумов Алексей
26 марта 2024, 20:22
modx.pro
858
+15

Комментарии: 7

Сергей Карпович
27 марта 2024, 11:00
+2
Крутое обновление, спасибо
    Сергей
    25 июля 2024, 16:07
    0
    Почему может не подхватывать системную настройку ec_mail_manager? Подставляет emailsender, а при указании mailManager подхватывает его верно.

    PS: перестало подхватывать сразу после обновления пакета до последней версии, до этого работало.
      Наумов Алексей
      26 июля 2024, 09:31
      0
      Добрый день. Может глюк?) Вообще код вот такой, выглядит вроде верно, но проверить сейчас не могу…

      // Почта менеджера указана в настройке ec_mail_manager
      $to = $this->modx->getOption('ec_mail_manager', null, '');
      // Параметр mailManager сниппета ecForm (ecReplyForm) переопределяет эту настройку
      $to = $this->modx->getOption('mailManager', $snippetProperties, $to, true);
      
      // Если везде пусто - письма пойдут на адрес, указанный в emailsender
      if (empty($to)) {
          $to = $this->modx->getOption('emailsender');
      }
      Это файл /core/components/easycomm/model/easycomm/easycommnotifier.class.php, строка примерно 120…
        Сергей
        26 июля 2024, 10:46
        0
        Тоже думал сначала что глюк, но обновил 4 сайта и везде одинаково не подхватывает. Пока явно указал везде mailManager в вызовах. Код easycommnotifier.class.php у меня сходится — такой же везде.
          Сергей
          26 июля 2024, 10:53
          +2
          Вот оно и переопределяет ПУСТЫМ значением mailManager. Поменял эти две строчки на одну, протестировал сейчас — работает как надо.
          $to = $this->modx->getOption("mailManager", $snippetProperties, $this->modx->getOption("ec_mail_manager"), true);

          PS: надо тестировать и выпускать апдейт )
        Сергей
        28 июля 2024, 09:05
        0
        Можно поинтересоваться чем обусловлено использование input[type=«submit»] вместо button. Мало того что форма сейчас просто не отправляется — обновляется страница, в предыдущих версиях работало отправка по button (бог с ним про disable и тд) — проверки кнопки не было.
        Но как использовать input, если переписывать с button, если кнопка нужна двустрочная или текст с картинкой. Попалось сейчас пару проектов таких при обновлении.
          Наумов Алексей
          29 июля 2024, 09:07
          0
          Добрый день. Да ничем в принципе)
          Замените на button. В js скрипте в первых строчках файла есть селектор для элемента, отправляющего форму, замените и его тоже.
          Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
          7