easyComm - комментарии, отзывы, вопросы на сайте

Установить easyComm >>

Компонент предназначен для создания на сайтах таких модулей/разделов, как:
  • Отзывы,
  • Комментарии,
  • Вопрос-ответ.
Название easyComm произошло от Easy Communication, или Easy Comments, кому как больше нравится.

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

Компонент предназначен для работы с неавторизованными пользователями и не носит социальной направленности. Т.е. он не проектировался как модуль для добавления комментариев в блогах или каких то соц сетях. Скорее как сервис для связи с пользователями для интернет магазинов или компаний, продающих услуги.

Введение



За последнее время было создано несколько сайтов, продающих товары и услуги, на которых была необходимость в модуле, позволяющем организовать обратную связь с пользователями в виде возможности отставить комментарий (отзыв) или задать вопрос непосредственно на сайте.

В настоящее время существуют несколько решений для MODx, решающих вопрос комментирования (Tickets, старый Quip, ModxTalks), однако они заточены под сайты социальной направленности, блоги, обладают явно избыточным функционалом и несколько сложной настройкой в том случае, если вас не устраивает их внешний вид или работа по-умолчанию.

Поэтому долгое время я использовал свое решение на базе MIGx, я даже писал про него modx.pro/help/3967/#comment-29953

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

Используя эти требования в качестве своеобразного ТЗ я и написал этот компонент.

Видео работы, 3.5 минуты


При просмотре поставьте высокое качество.


Описание


Для понимания общей сути нужна написать, что компонент оперирует 2мя объектами: Сообщение (ecMessage) и Цепочка (ecThread). Каждое сообщение относится к определенной цепочке, а цепочка в свою очерез к определенному ресурсу. Это позволяет создать несколько цепочек для одного ресурса.

Поля объекта ecThread:
  • resource — id ресурса, к которому относится цепочка
  • name — уникальное имя цепочки
  • title — заголовок цепочки (для удобства)
  • message_last — id последнего опубликованного и неудаленного сообщения
  • message_last_date — дата последнего опубликованного и неудаленного сообщения
  • count — количество опубликованных и неудаленных сообщений в цепочке
  • properties — параметры, с которыми вызывался сниппет ecForm, создавший эту цепочку
  • extended — не используется в текущей версии
Поля объекта ecMessage:
  • thread — id цепочки
  • subject — тема сообщения, например вы можете создать выпадающий список со значениями «служба поддержки», «отдел продаж»
  • date — дата и время сообщения
  • user_name — имя пользователя, который оставил сообщение
  • user_email — электронная почта
  • user_contacts — контактная информация
  • text — текст сообщения
  • reply_author — автор ответа
  • reply_text — текст ответа
  • notify — уведомить об ответе пользователя
  • notify_date — дата последнего уведомления пользователя (что бы не уведомлять 2 раза)
  • extended — не используется в текущей версии

Фронтенд

При помощи сниппета
[[!ecForm]]
отображается форма добавления нового сообщения.



Когда пользователь заполняет ее, сообщение заносится в базу данных со статусом «не опубликовано». Менеджеру сайта приходит по почте уведомление. Если пользователь оставил свою электронную почту, ему так же придет уведомление о том, что его сообщение получено.

Менеджер в специальном разделе может управлять сообщениями, например опубликовать его, удалить, или оставить свой ответ. При редактировании сообщения менеджер имеет возможность установить галочку «уведомить об ответе», в этом случае пользователь получит уведомление о том, что менеджер опубликовал сообщение на сайте или дал ответ на него. Возможны различные варианты действий, например: опубликовал без ответа; опубликовал и оставил ответ; не публиковал на сайте, но ответил.

При помощи сниппета
[[!ecMessages]]
выводятся сообщения на странице.



Административный интерфейс

После установки компонента в меню Приложения появится новый пункт меню «Сообщения».

Раздел имеет 2 вкладки: Сообщения и Цепочки.

Сообщения
В этом разделе собраны все сообщения на сайте, последние добавленные будут сверху.



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

Для создания нового сообщения необходимо нажать на кнопку «Создать», для редактирования существующего — кликнуть правой кнопкой мыши по сообщению и выбрать в контекстном меню пункт «Изменить». Откроется окно со всеми доступными для заполнения полями. Перед этим необходимо, что бы у вас была создана цепочка, в которой данное сообщение будет находится.

У окна редактирования сообщения 3 вкладки:
— Сообщение. Основная информация о сообщении.
— Ответ. Поля для ответа на сообщение. Заполняется менеджером сайта.
— Настройки. Служебные настройки.



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



Цепочки
В этом разделе собраны все цепочки сообщений.



Каждая цепочка привязана к определенному ресурсу и имеет свое уникальное имя, по умолчанию «resource-[[*id]]». Для одного ресурса может существовать несколько цепочек, например «reviews-[[*id]]» (Отзывы) и «questions-[[*id]]» (Вопросы).

Кроме того, для цепочки можно задать Заголовок, например «Отзывы о компании» для удобства работы.

В контекстом меню цепочек доступен пункт «Управление сообщениями этой цепочки», которые открывает отдельную вкладку с сообщениями только этой цепочки.



Цепочки создаются автоматически при отображении формы с добавлением сообщения на сайте.

Управление сообщениями через вкладку «Сообщения» при редактировании ресурсов.
Если в настройках включено отображение вкладки Сообщения, то при редактировании ресурса появится эта вкладка. Ее функционал идентичен тому, что есть в меню «Приложения» с той разницей, что доступны только те сообщения и цепочки, которые относятся к текущему ресурсу.



Ссылки


Документация: docs.modx.pro/components/easycomm/
Установочный пакет: modstore.pro/packages/utilities/easycomm, стоимость 490 рублей

Примечание


easyComm для своей работы использует pdoTools, не забудьте его установить.

В общем если что-то сбивчиво или непонятно написал — укажите мне на это, поправлю. Задавайте вопросы, постараюсь ответить!

Обновления



31.05.2017, версия 1.3.2-pl, поддержка Google ReCaptcha v2

Пожалуйста, не путайте с компонентом ReCaptchaV2, который лежит в репозитории MODX. easyComm поддерживает рекапчу от гугл не зависимо от того компонента и его установка не требуется!

Для того, что бы включить капчу, нужно:
1. Зарегистрировать сайт, получить site key и secret key, вписать их в настройки MODX (раздел easyComm, настройки ec_recaptcha2_site_key, ec_recaptcha2_secret_key).
2. Включить капчу, настройка ec_captcha_enable

Если вам не нужна капча — просто не включайте ее, все будет работать, как раньше (простая проверка на спам осуществляется через скрытое поле).

Да, при обновлении — нужно перезаписать чанк tpl.ecForm, т.к. он изменился (или добавить в него плейсхолдер [[+recaptcha]] перед блоком с кнопкой).

Если у вас уже используется на сайте компонент ReCaptchaV2 (в других формах, реализованных через Formit), то вам придется самостоятельно подумать, как подключать скрипт от google recaptcha только 1 раз и как совместить работу компонентов. Это уже все индивидуально.

24.05.2018, версия 1.5.0-pl, переезд на Fenom.
В этой версии синтаксис чанков был изменен на Fenom, как более понятный.
Кроме того, добавилась вкладка с историей изменения Сообщения (создано, обновлено, удалено).
И да, внедрен механизм защиты от «левых установок», не через ModStore. Последняя версия без этого механизма — 1.4.3. Если вас устраивает отсутствие обновлений и не нужна поддержка — пользуйтесь)
Наумов Алексей
03 апреля 2015, 09:40
12
15 922
+14

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

Илья Уткин
03 апреля 2015, 13:26
+3
Работа, конечно немаленькая проведена. Получилось очень хорошо. Я восхищен. Считаю, что цена адекватная.
    Наумов Алексей
    03 апреля 2015, 13:46
    +2
    Спасибо! Постараюсь до вечера еще видео о работе снять, что бы 100% понятны стали возможности и назначение компонента.
      Илья Уткин
      03 апреля 2015, 13:47
      0
      Лучше подключайся к MODX Russia Online — там все покажешь, а запись твоего доклада разместим на YouTube
        Наумов Алексей
        03 апреля 2015, 13:50
        0
        К сожалению ни подготовится не успею, ни по участвовать не смогу, только потом запись гляну…
        wgame
        03 апреля 2015, 14:31
        0
        Илья что-то не понял как посмотреть в онлайне можно будет
Наумов Алексей
03 апреля 2015, 15:00
0
Добавил небольшое видео в статью о работе компонента.
Денис Богдановский
03 апреля 2015, 16:46
+3
Алексей, отличная работа! Ценник хороший )
Мордынский Николай
03 апреля 2015, 17:37
0
С учетом наличия Tickets — велосипед или я ошибаюсь?
    Wassi Wassinen
    03 апреля 2015, 17:48
    0
    Ветки есть (несколько веток комментариев в одном ресурсе). В Тикетах, как я понимаю, этого нет.
      Наумов Алексей
      03 апреля 2015, 17:58
      0
      В тикетс с тояки срения архитектуры это есть, но фронтенд js скрипт это не поддерживает
    Наумов Алексей
    03 апреля 2015, 18:02
    0
    Я написал в статье про тикетс… Это несколько не то. Авторизация, древоводные комментарии, весьма сложная настройка (если нужно поменять стандартный функционал), неудобство работы из админки… Все это скорее мешает, чем помогает в тех задачах, которые призван решать мой компонент. Тикетс отлично подходит для блогов, а мой компонент наоборот)
      Wassi Wassinen
      03 апреля 2015, 18:08
      0
      В тикетс все то же самое, только нет реализации из коробки нескольких веток комментариев в одном ресурсе. Если вы зайдете в раздел «Приложения» -> «Тикеты» в админке сайта, то увидите то же самое, что и в вашем дополнении. Удобства столько же. Отсюда вопрос к ценнику. :) Вот если бы можно было добавлять свои поля… :)
        Илья Уткин
        03 апреля 2015, 18:42
        +2
        Тут основное — это бэкенд.

        Менеджер получает письмо «На сайте новый вопрос», заходит в админку, видит там «Эй, вы меня обманули!» и может ответить, не публикуя вопрос на сайте — прямо через админку. А тому, кто вопрос задал будет отправлено письмо.
          Wassi Wassinen
          03 апреля 2015, 18:50
          0
          Мысль понял.
          Наумов Алексей
          03 апреля 2015, 19:04
          0
          Все верно, Илья. В этом ключе и собирался продолжать. Пока только первая версия, надеюсь дальше функционал будет улучшаться.
        Сергей Шлоков
        03 апреля 2015, 18:43
        +3
        Если компонент предназначен для коммерческой работы, то ценник должен быть. Его все равно оплачивает закачик. Если для социальной сферы (как тикетс), то бесплатно. Такое мое скромное мнение.
        Ведь покупать же никто не заставляет. :)
          Wassi Wassinen
          03 апреля 2015, 18:52
          0
          Было бы неплохо дать ссылку на гитхаб.

          Про оплачивающего заказчика — согласен. :)
            Сергей Шлоков
            03 апреля 2015, 18:58
            0
            Гитхаб на платный компонент? Ну не все же такие щедрые как Василий :)
              Наумов Алексей
              03 апреля 2015, 19:03
              0
              Да исходники есть, я просто ссылку не публиковал)) но кто захочет, найти сможет. =)
              Wassi Wassinen
              03 апреля 2015, 19:04
              +1
              Дело в том, что отсутствие ссылки на гитхаб только немного усложняет неизбежное. :) Василий поступает не только щедро, но и мудро — те кто хотят купить — купят. И возможно предложат полезные изменения на гитхабе.

              Посмотрите статистику modstore.pro :) mSearch2, Office, ms2Gallery — говорят о том, что качественные дополнения будут покупать. Потому что, цитирую :)
              Его все равно оплачивает закачик.
                Сергей Шлоков
                03 апреля 2015, 19:08
                0
                Могу ошибаться, но думаю, что в статистике по mSearch2, Office, ms2Gallery учтены загрузки на тестовые сайты. Поэтому реальное количество покупок на самом деле гораздо меньше.
                Посмотрите статистику modstore.pro :)
                Лучше на ты. Так я чувствую себя моложе. :)
                  Wassi Wassinen
                  03 апреля 2015, 19:16
                  0
                  Лучше на ты. Так я чувствую себя моложе. :)
                  Аналогично :)
                  Василий Наумкин
                  03 апреля 2015, 19:44
                  +1
                  Нет, тестовые сайты не считаются, только реальные.

                  Но показываются именно загрузки, а не покупки. То есть, чем больше новых версий дополнения — тем больше закачек.
Андрей
03 апреля 2015, 18:57
+3
— сообщения должны оставлять неавторизованные пользователи
— сообщения публикуются после модерации администратором
— минимально необходимый набор полей: имя, электронная почта, контакты (отдельно), текст сообщения, тема сообщения
— возможность администратора ответить на это сообщение, указав при этом кто отвечает (например свое ФИО)
— уведомление администратора о новом сообщении с сайта
— уведомление пользователя о публикации или получении ответа на его сообщение по почте
— достаточно простой в использовании компонент
— возможность внедрить на одну страницу несколько блоков с сообщениями (например Отзывы и Вопросы на разных вкладках, но в рамках одной страницы)
Использую для всего этого Tickets — всё супер)



P.S. но ваш компонент лишним, безусловно, не будет.
    Wassi Wassinen
    03 апреля 2015, 18:59
    +1
    Андрей, скажите, как вы реализовали это изящное решение с оценкой?
      Андрей
      03 апреля 2015, 19:54
      1
      +4
      Весьма благодарен, что находите это изящным)

      У меня на сайте Tickets используется для оценки товаров и оставления отзыва о том или ином товаре. Соответственно, голосовалка за отзывы мне не нужна (как здесь со стрелочками), а вот само поле `rating` в базе очень даже подходит для оценки товара, причём по любой шкале)

      Поэтому я убрал возможность голосовать за отзывы, а на событие OnCommentSave повесил плагин, сохраняющий оценку пользователя в поле `rating`. Соответственно, в форму отзыва добавил радиокнопки для возможности выставить оценку. С помощью JS высвечивается та оценка, которую выбирает в данный момент пользователь.

      Звёздочки картинками выводятся сниппетом (выбирает этот самый `rating` из базы) и чанком на основании выставленной оценки (c плейсхолдером [[+rating]]). В чанке примерно следующее:
      <img src="/assets/theme/image/stars-[[+rating]].png" alt="Оценка [[+rating]]">
      Там ещё прикручена общая оценка для товара на основании всех оценок юзеров.
      В общем, может это и не совсем прямое использование компонента, и в некоторых местах костыльно получилось, но всё же работает быстро и свои функции выполняет, и меня в целом устраивает)
        Wassi Wassinen
        03 апреля 2015, 20:33
        +1
        Вы могли бы поделиться реализацией? Очень полезный функционал, тем более что к минишопу отзывы-комментарии идут по по умолчанию.
          Андрей
          03 апреля 2015, 22:06
          +3
          Да я с радостью выложу, когда приведу код в божеский вид, а то в «коленочном» виде стыдно в сообщество выкладывать))) А руки всё не доходят.
          Выше я озвучил общую концепцию функционала.
            Wassi Wassinen
            03 апреля 2015, 22:07
            +1
            Спасибо за ответ. Будет любопытно посмотреть.
          Mihan
          03 апреля 2015, 23:49
          +1
          тоже очень нужен такой функционал. Буду благодарен, если Андрей выложит.
Наумов Алексей
08 апреля 2015, 10:58
+1
Пакет доступен в репозитории: modstore.pro/packages/utilities/easycomm
Хулио Надда
09 апреля 2015, 01:08
0
Подскажите есть ли возможность добавлять свои поля TV?
    Наумов Алексей
    09 апреля 2015, 08:50
    0
    Ну во первых это не ресурсы MODx, поэтому о каких TV полях речь вообще?

    А если имеются ввиду просто дополнительные поля, например, как в minishop2 — то нет. Но возможно, что пока нет.

    Каких полей вам не хватает?
      Хулио Надда
      09 апреля 2015, 08:55
      0
      Ну собственно конечн дополнительные. Каких именно я сказать не могу. Сегодня одних завтра другой сайт и понадобятся другие. В Tickets например можно к отзыву добавлять свои TV поля и писать в них. Поэтому и спросил для меня это важно. Дополнение хорошее, судя по описанию и скриншотам удобное, но пока увы я не смогу воспользоваться. Так что есть куда развиваться =)
        Наумов Алексей
        09 апреля 2015, 09:02
        0
        Дело в том, что я пока вижу следующие сценарии использования дополнения: отзывы, вопрос-ответ, комментарии. Для этих сценариев стандартных полей хватает. Если вы назовете другие сценарии использования — я подумаю над ними, но пока даже сам не представляю.
          Василий Наумкин
          09 апреля 2015, 09:15
          1
          0
          Он говорит о том, что в Tickets при создании комментария все нестандартные поля формы добавляются в properties и их потом можно как-то использовать.

          Исходник.
            Наумов Алексей
            09 апреля 2015, 09:16
            0
            А, ок =)

            Спасибо! Ну, почему бы и нет конечно )
            Хулио Надда
            09 апреля 2015, 12:55
            0
            По моему не так вы меня поняли. Я имею ввиду возможность писать в TV дополнительные свойства для моего тикета.

            Ну например мне нужно к Записи прикрутить доп поле с датой я добавляю в чанк с формой дополнительный инпут и передаю в TV своего тикета, дальше уже вывожу список с дополнительными полями.
            Более конкретный пример тут. Есть два дополнительных TV: date (не заполнено) и resouecelist

            Василий, если не сложно не могли бы вы меня направить в правильное русло. При создании тикета хочу отправлять уведомление менеджеру сайта. Я так понимаю проще через плагин?
Наумов Алексей
05 мая 2015, 16:49
+1
В версии 1.1.1-pl добавил возможность автопубликации сообщений, такие просьбы были.
Александр
10 мая 2015, 01:00
0
Пагинацию сделайте пожалуйста в новых версиях.
    Василий Наумкин
    10 мая 2015, 07:21
    1
    +1
    А что, pdoPage не работает?
    Наумов Алексей
    10 мая 2015, 16:35
    1
    0
    Ну да, должно по идее работать с pdoPage
      Сергей
      30 июля 2015, 14:49
      0
      Да, работает
      [[!pdoPage?
          &element=`ecMessages`
          &limit=`2`
          &tpl=`tpl.ecMessages.Row`
          &thread=`reviews-[[*id]]` 
      ]]
Alex Lenk
26 мая 2015, 11:50
0
Компонент классный, не пожалел, что купил. Вопрос, как быть с конфликтами других js скриптами?


$(document).ready(function(){
    easyComm.initialize();
});
Тестовый сайт
artlenk.ru/otzyivyi-klientov/
    Наумов Алексей
    26 мая 2015, 12:30
    +1
    Надо заменить $(document) на jQuery(document), как в остальных подключенных скриптах… подробности stackoverflow.com/questions/7975093/typeerror-undefined-is-not-a-function-evaluating-document
      Alex Lenk
      26 мая 2015, 13:22
      0
      Алексей, искренне благодарю. Все заработало как надо. А я уже подумал отказаться от других скриптов.

      Для тех кто не понял, нужно в файле ec.default.js (assets/components/easycomm/js/web/) заменить все знаки:

      $
      на
      jQuery
        Наумов Алексей
        26 мая 2015, 15:49
        +1
        Только лучше сделайте копию файла, когда делаете изменения и укажите путь к нему в системных настройках, а то при обновлении ваши правки перезатрутся. Хотя конкретно эту проблему постараюсь закрыть в следующей версии.
          Alex Lenk
          26 мая 2015, 17:50
          0
          Да и исправте ошибку в документации «Усли указан этот параметр» joxi.ru/a2XelMPfl4dJAg
Katya Larionova
01 июня 2015, 19:25
0
У меня через easycomm реализован вопрос-ответ. Как сделать поиск по вопросам?
    Наумов Алексей
    02 июня 2015, 08:54
    1
    0
    Вы можете в параметре where сниппета ecMessages указать поисковый запрос, например:
    &where=`{"`ecMessage`.`text`:LIKE": "%слово%"}`
    А для подстановки «слово» из $_GET использовать простой сниппет
    return empty($_GET['query']) ? '' : $_GET['query'];
    не проверял, но как то так…
Дмитрий
02 июня 2015, 13:36
0
Алексей, спасибо за модуль. То что надо.
Правда купить пока не получилось — при оплате по ВебМани ругается. Но решу сегодня.

Вопрос у меня следующий:
— Хочу к «вопросам» прикрепить возможность загрузки скриншота (фотки). Планирую использовать Uploadify. Такое возможно? или может что-то посоветуете?
    Наумов Алексей
    02 июня 2015, 14:37
    0
    Даже не знаю, чего посоветовать…
    Я не пробовал прикреплять файлы, наверное пока что никаких в этом направлении идей у меня нет… я даже не знаю что посоветовать, наверное вам придется самому подумать. Если будут нужны какие-то изменения в компоненте для реализации — я готов их внести, но пока не знаю что =)
      Дмитрий
      02 июня 2015, 17:27
      0
      Мое ощущение (я не очень «программист»), что достаточно «подружиться» с модулем загрузки, иметь возможность в компоненте вашей опцию включить типа «useUploadify», чтобы появилось в форме поле «Загрузить файл» и кнопочка от Uploadify. Не знаю как это точнее описать. На текущий момент у меня очень остро стоит задача такая и я даже думал, что временным решением будет 2 формы выводить, одну вашу, а перед ней (или между input'ами форму от загрузчика файла (если я правильно понял, он может работать независимо).
Денис
10 июня 2015, 23:42
0
Подскажите пожалуйста, как отключить вывод времени создания сообщения?
Дата\время создания выводятся через [[+date]], а стандартные фильтры не срабатывают
    Наумов Алексей
    11 июня 2015, 08:43
    0
    Фильтры должны работать. Даже в стандартном чанке для вывода даты используется фильтр dateAgo.
      Денис
      11 июня 2015, 10:46
      0
      Ввожу вместо
      [[+date]]

      [[!dateAgo? &input=`[[*date]]` &dateFormat=`dateFormat`]]
      дата вообще не выводиться.
        Пётр Молчанов
        11 июня 2015, 10:55
        +1
        [[+date]]
        [[*date]]
        не видите разницу?
          Денис
          11 июня 2015, 11:17
          0
          [[!dateAgo? &input=`[[+date]]` &dateFormat=`dateFormat`]]
          Я первоначально так и делал. так тоже не работает.

          [[+date:dateAgo=`{"dateFormat":d F Y}`]]
          Вот так дата выводится, но фильтры не применяются
Сергей
29 июня 2015, 19:32
0
Можно ли в форме ответа включить визуальный редактор для создания ссылок и т.п?
    Наумов Алексей
    29 июня 2015, 20:42
    0
    Имеется ввиду поле «Ответ» в админке? Думаю, что это реально, поставлю в планы на будущее.
      Сергей
      01 июля 2015, 23:24
      0
      Да. Клиенты спрашивают. Думаю, популярная функция — сослаться на какую-то страницу. Держите в курсе.
      Сергей
      01 сентября 2015, 16:18
      0
      Здравствуйте. Как там визуальный редактор поживает?)
        Наумов Алексей
        01 сентября 2015, 17:02
        0
        Добрый день!

        Честно говоря, пока у меня не получилось это реализовать. Поиск не дал мне нужных знаний, что бы понять, как это правильно сделать в MODx. Те способы, которые я испробовал не работают до конца. Но задача стоит, так что надежды не теряем!)
          Klike
          04 августа 2016, 11:57
          0
          Алексей, скажите пожалуйста, получилось ли реализовать визуальный редактор?
            Наумов Алексей
            04 августа 2016, 15:43
            0
            Нет, я что-то и не брался за эту задачу. Насколько помню в прошлый раз у меня это не получалось, не все так просто было там.
Антон Левиц
20 июля 2015, 16:42
0
А как вывести количество комментариев на странице?
Сергей
23 июля 2015, 23:29
0
Здравствуйте. По поводу плагинов.
Как осуществить этот пункт?
«5. Добавить записи в словари системы ec_message_field1 и ec_message_field2 (пространство имен easycomm).»
Спасибо.
И еще, есть ли возможность для отправки вопросов/отзывов зарегистрированными юзерами?
    Наумов Алексей
    24 июля 2015, 08:40
    0
    Находите в админке пункт меню «Управление словарями» и там создаете новую запись, указав пространство имен easycomm, язык ru.

    Отправлять вопросы зарегистрированные пользователи могут, да. В этом случае автоматически подставляется их имя и заполняется колонка createdby (посмотрите структуру таблиц компонента в phpmyadmin).
Сергей
23 июля 2015, 23:46
0
Еще один вопрос в догонку. Есть ли возможность создания рубрикатора? Интересует функционал www.lood.ru/index.php?rubr=consult&page=list&cur_page=9.
Ну и выбор отвечающего из списка с ссылкой на профиль и изображением.
Спасибо.
    Наумов Алексей
    24 июля 2015, 08:37
    0
    Рубрики — это ресурсы modx, тогда все должно получиться.

    Ну и выбор отвечающего из списка с ссылкой на профиль и изображением.
    не очень понял, про что вы.
      Сергей
      28 июля 2015, 10:41
      0
      Спасибо за ответы.
      Чтобы в админке можно было выбрать отвечающего из пользователей сайта ( у каждого свой профиль, например с помощью userProfile).
      И поддерживается ли древовидная структура вопросов-ответов?
        Наумов Алексей
        28 июля 2015, 10:52
        0
        Для ответа предусмотрено 2 поля: текст (reply_text) и имя (reply_author), иного функционала нет.

        Древовидной структуры так же нет.
          Сергей
          28 июля 2015, 11:50
          0
          Понятно. А древовидная, я так понимаю может быть с помощью Tickets реализована?
            Наумов Алексей
            28 июля 2015, 18:46
            0
            Если посмотреть на сайт, где мы сейчас общаемся — да.
          Сергей
          28 июля 2015, 13:02
          0
          Еще пока стоит старая версия «вопросов», которая не компонент.
          Там такое вот поведение странное, завис
          mail.yandex.ru/message_part/Screenshot+%2827%29.png?_uid=89491354&hid=1.1.2&ids=2560000001153381924&name=Screenshot+%2827%29.png
            Наумов Алексей
            28 июля 2015, 18:46
            0
            По ссылке у меня белый экран
              Сергей
              29 июля 2015, 09:33
              0
              Загружается на диск файл по ссылке.
              Я разобрался с этим. Оказалось что если в поле ответа есть тег ссылки с незакрытым кавычкой адресом, то не грузится. Вот такое странное поведение.
                Воеводский Михаил
                29 июля 2015, 09:39
                +1
                Сергей, смотрите внимательно на ссылки, которые размещаете.
                В данном случае ссылка на файл из письма, данный файл доступен только при авторизации в вашем почтовом ящике. Совершенно естественно, что больше никто получить к нему доступ не может.
          Сергей
          28 июля 2015, 15:52
          0
          И еще =) Есть ли возможность задавать вопросы с разных ресурсов на определенный ресурс и выводить все ответы на нем?
Максим Степанов
24 июля 2015, 04:26
0
Здравствуйте. Приобрел компонент. но при вызове выдает ошибку Can`t find jQuery ajaxForm plugin! Подскажите как поправить? Или его нужно выводить как то совместно с ajaxForm?
На данные момент так
[[!ecForm]]
[[!ecMessages]]
Вопрос закрыт сразу не заметил про jquery.form.js.
    Наумов Алексей
    24 июля 2015, 08:35
    0
    Хорошо, что разобрались =) Вообще изначально были вопросы у многих подобные, но я все это старался отражать в документации.
Егор
12 августа 2015, 03:49
0
Не могу на отдельной странице вывести все цепочки, даже одну не получается(
[[ecMessages? &thread=`1`]] — Вот так вывожу
Кэши сайта также обновляю
    Наумов Алексей
    12 августа 2015, 08:49
    +1
    thread=`1`
    1 — это id цепочки в вашем понимании? Должно быть имя, например resource-1.
      Егор
      12 августа 2015, 12:03
      0
      Получилось вывести одну цепочку вот так [[ecMessages? &tpl=`mess` &thread=`resource-18`]] спасибо)
      А как теперь вывести несколько цепочек?
        Наумов Алексей
        12 августа 2015, 14:07
        0
        Скопируйте сниппет ecMesasges, в нем найдите обработку параметра $thread, начиная со строки
        $thread = $modx->getOption('thread', $scriptProperties, '');
        и немного ниже, удалите.

        После чего еще ниже найдите

        $where = array('`Thread`.`name`' => $thread->get('name'));
        и поменяйте на

        $where = array();
        по идее все
          Егор
          12 августа 2015, 14:26
          0
          Все получилось спасибо большое) Очень крутой плагин спасибо ещё раз. Полностью окупает свою стоимость. Хотелось бы видеть в будущем возможность добавления фото в админке)
            Наумов Алексей
            12 августа 2015, 15:51
            0
            Прям в ядре компонента этого не будет. Но через плагины сделать можно: modx.pro/components/5707-easycomm-additional-picture-field/
              Егор
              12 августа 2015, 23:01
              0
              Да круто тоже получилось. Теперь не получается вывести 3 или 4 цепочки на одной странице. Вывести подряд не подходит такой вариант, потому что потом хочу сделать пагинация с помощью [[!pdoPage?]]. Как нибудь можно вывести несколько определенных цепочек?
                Наумов Алексей
                13 августа 2015, 09:38
                0
                Не очень понял… Несколько вызовов ecMessages вроде как и все:

                [[ecMessages? &thread=`resource-1`]]
                [[ecMessages? &thread=`resource-2`]]
                [[ecMessages? &thread=`resource-3`]]
varanika
05 ноября 2015, 17:05
0
А можно подробнее про ajaxform? Не до конца поняла про подключение.
Вызывать так:
[[!AjaxForm? 
&snippet=`ecForm`
&form=`tpl.ecForm`
Нужно ли что-то дописывать в php? Выбивает error submit…
    Наумов Алексей
    05 ноября 2015, 19:47
    0
    Нет, не тот ajaxform имею ввиду, а вот это плагин jQuery malsup.com/jquery/form/, подключите его на страницу.
      varanika
      06 ноября 2015, 13:11
      0
      Спасибо, ох уж эти тезки :) А не подскажете, какие таблицы в базе создает плагин? Интересует, ибо планирую сделать чистку от старого удаленного мусора, который сидит то в базе, то в папках…
Denis
19 ноября 2015, 21:30
0
Здравствуйте! У меня возникла проблема с выводом отзывов в других разделах моего сайта. При выводе отзыва на странице ресурса, к которому он принадлежит, звездочки выводятся нормально, но при выводе в другом разделе сайта, например, если нужно вывести несколько последних отзывов на главной странице сайта, то в этом случае звездочки не выводятся. Кто знает куда копать?
    Denis
    19 ноября 2015, 23:06
    0
    Проблема решена. Нужно было прописать путь к файлу ec.default.css в секции
    <head></head>
      Наумов Алексей
      20 ноября 2015, 10:19
      0
      Все верно.

      Компонент использует свой файл стилей, который подключается при вызове сниппета ecForm.

      Я рекомендую еще убрать из системных настроек путь к этому файлу, что бы избежать двойного подключения на странице.
Виталий
01 декабря 2015, 17:38
0
Крутая штука, но мне в ней не хватает возможности оставлять комменты после авторизации через соц сети! А так бы купил
    Наумов Алексей
    03 декабря 2015, 10:02
    0
    В каком плане? После авторизации можно оставлять комментарии… И id авторизованного пользователя даже в базе сохраняется, после чего можно делать выборку с JOIN таблицы пользователей. Но да, это не из коробки, нужно писать самому.
      Виталий
      03 декабря 2015, 11:51
      0
      Я имею ввиду авторизацию через соц сети не на самом сайте где есть форма с комментариями, а именно что бы соц и конки были возле формы комментариев, и только после авторизации нажав на любую соц иконку можно было писать комменты или отзывы!
        Наумов Алексей
        03 декабря 2015, 11:55
        0
        Воспользуйтесь HybrudAuth или иным компонентом для авторизации, а компонентом Personalize для того, что бы скрывать форму добавления новых сообщений не авторизованными пользователями.
Anton
02 декабря 2015, 23:21
0
а как вывести средний рейтинг в отдельное ТВ?
Наумов Алексей
03 декабря 2015, 10:03
0
Что значит в отдельное ТВ?

Если я верно понял, то можно написать плагин, который будет реагировать на добавление/редактирование/удаление комментария и в этот момент копировать рейтинг цепочки хоть куда, в том числе и в TV.
    Anton
    03 декабря 2015, 14:10
    0
    Поняли правильно. Только я не зна как так сделать
Volk
16 декабря 2015, 13:18
+1
Хотелось бы, что бы было реализовано в отзыве загружать фотографии на сервер, которые потом будут автоматом прикреплены к отзыву. ну и с возможностью отключения этой функции.
Сергей
23 декабря 2015, 08:25
0
Где подкрутить, что бы при ответе на сообщение в админке галка «Уведомить о публикации (или ответе) пользователя по почте:» была по умолчанию включена?
    Наумов Алексей
    23 декабря 2015, 10:46
    0
    Думаю, что можно попробовать пойти аж тремя путями:
    1. Добавить hidden поле notify=«1» в форму, не забыв добавить и его и в параметр allowedFields сниппета ecForm.
    2. Написать плагин на событие OnEcMessageSave с проверкой, что это новое сообщение и там установить значение поля notify.
    3. Поменять в исходниках значение поля по-умолчанию =)
      Сергей
      23 декабря 2015, 11:58
      0
      задал 1 в 'notify' => 1, в файле и все заработало как надо
      core\components\easycomm\model\easycomm\mysql\ecmessage.map.inc.php
        Наумов Алексей
        23 декабря 2015, 12:02
        0
        Ну так то оно да, но ровно до следующего обновления компонента…
antonina022
27 декабря 2015, 14:15
0
Подскажите, пожалуйста, easycomm можно применять для modx evolution???
    Николай
    27 декабря 2015, 14:18
    0
    Конечно нет, это два разных движка
Сергей
13 января 2016, 11:01
0
Использую ваш компонент, на мед портале, для ответов на вопросы пациентов, на форме добавил галку
Не отображать вопрос на сайте
/>
в core\components\easycomm\model\easycomm\easycomm.class.php
Добавил if (!$data['noshow']) $fields['published'] = 1;
т.е. если человек не хочет что бы его вопрос отображался на сайте, ставит галку «Не отображать вопрос на сайте»

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

    Наумов Алексей
    13 января 2016, 11:37
    0
    У вас часть кода съелась в комментарии…

    Но если я верно понял, то добавьте в вызов ecMessages условие:

    &where=`{"noshow": 0, "reply_text:!=": ""}`
    как-то так получается…
      Сергей
      14 января 2016, 06:23
      0
      то что съехало, там был просто input type=«checkbox» id=«noshow» name=«noshow»
      в зависимости от того стоит там галка или нет в core\components\easycomm\model\easycomm\easycomm.class.php

      $fields['published'] присваивается либо 0 либо 1

      &where=`{«noshow»: 0, «reply_text:!=»: ""}`
      как-то так получается…
      Так?
      [[!ecMessages? &where=`{"noshow": 0, "reply_text:!=": ""}`]]
      от куда сниппет узнает про noshow? он же только в html

      ps: Мне нужно сделать мадерирование вопросов пользователей, перед публикацией, а публиковать автоматом при ответе только те, на которых сняли галку «Не отображать вопрос на сайте»
      <td><label for="noshow">Не отображать вопрос на сайте</label></td>
      <td><input type="checkbox" id="noshow" name="noshow"/></td>
        Наумов Алексей
        14 января 2016, 09:44
        0
        Я думал, что noshow — это поле, которое вы добавили к объекту и оно есть в таблице, я бы так сделал.

        Если у вас уже проставляется published так, как нужно, то просто добавьте условие, что бы показывались все опубликованные отзывы, у которых есть ответ:

        [[!ecMessages? &where=`{"reply_text:!=": ""}`]]
        По идее должно работать
Сергей
16 февраля 2016, 08:30
0
постоянно выскакивает надпись ec_fe_spam_detected
при выводе сообщений
искал в исходниках что бы затереть, что то не могу найти
    Наумов Алексей
    16 февраля 2016, 11:12
    0
    У компонента есть такая защита, что одно из полей (address) при добавлении нового сообщения должно быть hidden и пустым. Поищите в документации antispamField.

    Вероятно вы что-то с ним связанное поменяли.

    Вот код из файла easycomm.class.php, который проверяет на спам:

    if(!empty($this->config['antispamField'])) {
                if(!empty($data[$this->config['antispamField']])) {
                    return $this->error("ec_fe_spam_detected");
                }
            }
      Сергей
      16 февраля 2016, 11:19
      0
      Спасибо, помогло, не стал разбираться, просто затер сообщение.
      Оно появляется на странице где только снипет ecMessages формы нету. какой там антиспам может быть?
        Наумов Алексей
        16 февраля 2016, 11:22
        0
        Очень странно:) вроде только в 1-м месте этот ec_fe_spam_detected выводится и то, при создании сообщения…
Andrey Frost
16 февраля 2016, 15:54
0
Подскажите, пожалуйста как реализовать возможность ответа на вопрос/комментарий с фронтенда
    Наумов Алексей
    16 февраля 2016, 16:25
    +1
    Такой возможности не предусмотрено и она не закладывалась.

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

    Конечно, вы можете написать некий код, что бы и с фронтэнда отвечать, но какого то общего решения нет. В вашем коде вам нужно просто заполнять поле reply_text у сообщения, это и есть ответ на него.
      Andrey Frost
      16 февраля 2016, 17:57
      0
      Подскажите пожалуйста в какую сторону копать, пробовал через сниппет ecForm, но как определить к какому из комментов цепочки относится ответ
        Наумов Алексей
        16 февраля 2016, 21:00
        0
        Сниппет ecForm вам тут совершенно не поможет. Нужно полностью писать самому всю обработку, ничего готового — нет.
Сергей
16 марта 2016, 14:33
0
Добрый день!
Только установил и столкнулся с проблемой. Русский язык не понимает screenshot.su/show.php?img=423faa833ff89bd360c3df58450832a7.jpg
В админке та-же проблема.
Помогите решить
    Наумов Алексей
    16 марта 2016, 14:37
    0
    Добрый день. Ищите проблему в кодировке вашей БД. Должна быть utf-8 как всей базы, так и отдельных таблиц и колонок.

    У вас с вероятностью 99% где-то стоит иная кодировка.
      Сергей
      16 марта 2016, 15:01
      0
      Спасибо за такой быстрый ответ.
      1. Админку проверил, стоит utf8
      2. Базу скачал, там везде CHARSET=utf8
      Единственное, что сделал, это сравнение utf8_general_ci
      Сбросил кэш, перезашел в админку, не помогло. Что еще посмотреть.
      Дополнение tickets работает нормально.
      И как цепочки скрыть?
        Konstantin
        16 марта 2016, 15:08
        0
        заголовки сервера какие?
        в исходном коде страницы что стоит?
        в базе данных уже хранятся знаки вопроса вместо букв?
        В браузере меняли кодировку?
          Сергей
          16 марта 2016, 15:23
          0
          заголовки сервера какие? — это вы про логи или что?? Если да, то по данному компоненту нет ошибок
          в исходном коде страницы что стоит? — это вы про что? m2.demo.cresca.ru/otzyivyi.html
          в базе данных уже хранятся знаки вопроса вместо букв? — да
          В браузере меняли кодировку? — я даже знать не знаю как это сделать, как и любой другой пользователь, который будет комментарий оставлять

          И как вот этот бред остановить в логах? Я уже давно удалил компонент этот
          [2016-03-08 15:04:14] (ERROR @ /index.php) Could not load class: TicketsSection from mysql.ticketssection.
          Из-за этого логи уже 120 мб весят
            Сергей
            16 марта 2016, 15:40
            0
            Все вопрос решен, при установке, 2 таблицы и строки создались в неверной кодировке.
            Пришлось заменить в скаченном файле кодировку.

            Вопрос по поводу как закрыть или спрятать «цепочки» еще открыт.
            И подскажите пожалуйста как полностью удалить компонент tickets, всем заранее спасибо.
              Наумов Алексей
              16 марта 2016, 16:35
              0
              закрыть или спрятать «цепочки»
              Где? Что именно вы хотите получить?
                Сергей
                16 марта 2016, 17:50
                0
                Я установить хочу ваш модуль клиенту, сделать отзывы, но при этом не хочу, что бы эта вкладка вообще была ему доступна screenshot.su/show.php?img=7263530b9811f70d71a2d376f51fc072.jpg
                Убрать полностью это вкладку для роли manager
                  Наумов Алексей
                  17 марта 2016, 08:51
                  0
                  вот как… понял. Штатно вроде бы нет такой возможности.

                  Могу предложить закомментировать в файле
                  assets/components/easycomm/js/mgr/widgets/home.panel.js

                  строки с 28 по 38, вот так:
                  }/*, {
                                  title: _('ec_threads'),
                                  layout: 'anchor',
                                  items: [{
                                      html: _('ec_threads_intro_msg'),
                                      cls: 'panel-desc'
                                  }, {
                                      xtype: 'ec-grid-threads',
                                      cls: 'main-wrapper'
                                  }]
                              }*/]
                  только в скобочках не запутайтесь, по идее это просто уберет вкладку, на иной функционал повлиять не должно.

                  В будущей версии мож придумаю чего, хотя вы первый попросили. Ну или надо плагин написать, который будет скрывать эту вкладку, но как это сделать я не знаю :)
                    Сергей
                    17 марта 2016, 09:21
                    0
                    Все супер, спасибо, работает!
                    Сергей
                    17 марта 2016, 12:45
                    0
                    Простите, я вас еще немного помучаю, как скрыть их у самой страницы, цепочки screenshot.su/show.php?img=4cd4c4240479460f3e52c32da5efd9d9.jpg
                      Наумов Алексей
                      17 марта 2016, 13:54
                      0
                      Если только по аналогии…

                      файл assets/components/easycomm/js/mgr/widgets/page.panel.js

                      Там с 30 по 40 строки аналогичные действия.
                      Сергей
                      17 марта 2016, 14:53
                      0
                      Все супер, работает! Спасибо еще раз.
                      Илья
                      03 апреля 2016, 11:41
                      0
                      В будущей версии мож придумаю чего, хотя вы первый попросили. Ну или надо плагин написать, который будет скрывать эту вкладку, но как это сделать я не знаю :)
                      Честно говоря, я тоже хотел такую возможность. Буквально вчера настроил политики доступа, ограничил юзеру ресурсы, встал вопрос с сообщениями.

                      У меня юзер видит только тот ресурс, который я ему разрешил (в настройках пользователя указал id ресурса для ключа tree_root_id), и хотелось бы, что бы юзер мог видеть сообщения только для видимого ему ресурса, без правки исходников.

                      ps. если tree_root_id указать 0 — видны все ресурсы, если перечислять (можно перечислять через запятую), то видны только перечисленные ресурсы. Отсюда можно ввести проверку по этому ключу и на основе проверки показывать только сообщения и цепочки для разрешенного ресурса.

                      Спасибо, надеюсь моё сообщение поможет в реализации данной функции.
                        Наумов Алексей
                        03 апреля 2016, 16:23
                        0
                        Так можно ж вывести вкладку Сообщения для ресурсов, соответсвенно и будут пользователи видеть только сообщения тех ресурсов, что они видят :)
                        Илья
                        03 апреля 2016, 17:27
                        0
                        Верно, только еще пользователь видит и может редактировать цепочки,
                        а при редактировании сообщения можно в настройках поменять привязку к цепочке. Такая возможность удручает.
      Roman Sirecky
      20 марта 2016, 03:23
      0
      Подскажите, пожалуйста, можно ли вывести последний комментарий, например, на главной? В схожих приложениях есть что то типа «lastcomment», есть ли это тут?
      Сергей
      24 марта 2016, 10:14
      0
      Вы простите меня, но я вас еще немного помучаю.
      Как сделать, что бы эта вкладка не создавалась на других страницах? Надо что бы она была только на 1 й. Где действительно отзывы. А то при создании новых ресурсов она появляется автоматически.
        Sergey
        24 марта 2016, 10:17
        0
        В системных настройках параметры: ec_show_resources, ec_show_templates.
        Сергей
        24 марта 2016, 10:20
        0
        Все вопрос решен!
      Артур
      17 апреля 2016, 23:46
      0
      Добрый день! Во-первых огромное спасибо за компонент, он действительно шикарен) А во-вторых — подскажите пожалуйста, возможно ли сделать так, чтобы если на странице нет ни одного сообщения выдавалось что-то вроде
      <div>К данному товару пока нет отзывов</div>
      А когда было оставлено первое сообщение данный блок пропадал?) Я понял, что штатно этой функции нет, но может подскажите куда пилить) Заранее огромное спасибо)
        Наумов Алексей
        18 апреля 2016, 11:01
        1
        0
        Добрый день! Спасибо за спасибо)

        По сабжу: а вызов типа

        [[!ecMessages:default=`НИЧЕГО НЕТ`? ..параметры..]]
        не решит этот вопрос?
          Артур
          18 апреля 2016, 19:44
          0
          Оу)) не знал, что так можно) Молодой, не опытный… Спасибо огромное)
      Denis
      22 апреля 2016, 14:36
      0
      Здравствуйте. Можете подсказать как вывести средний рейтинг по отзывам для одной ветки?
        Наумов Алексей
        22 апреля 2016, 15:25
        0
        Так сниппет ecThreadRating есть в комплекте, он именно это и делает.
          Denis
          28 апреля 2016, 14:24
          0
          Я новичек в modx поэтому возникают некоторые вопросы. С выводом рейтинга на странице я разобрался, а как можно вывести среднее значение рейтинга, на превью. Допустим у меня есть каталог отелей, в карточке отеля понятно как вывести рейтинг, как это сделать в превью отеля на общей странице не ясно.
      Mike
      01 августа 2016, 10:25
      0
      Здравствуйте. Подскажите пожалуйста куда копать, при нажатии кнопки «Отправить» возникает всплывающее окно «Неизвестное действие». Jquery и jquery.form вроде подключил.
        Наумов Алексей
        01 августа 2016, 10:34
        0
        Что-то с формой наверное намудрили. Сложно сказать, нужно смотреть сайт.
          Mike
          01 августа 2016, 10:58
          0
          Поставил форму по умолчанию, результат тот-же. Были проблемы с установкой дополнения, слетели разрешения, потом вроде поправил — ошибок при переустановке не было. Форма находится здесь kim-rm.ru/otzyivyi-o-rabote-kliniki
            Наумов Алексей
            01 августа 2016, 11:08
            0
            Попробуйте в файле /assets/components/easycomm/action.php отловить, что происходит с переменной $action. Такой ответ (срока 50 файла) вроде только из-за проблем с ней может быть.

            Может быть на сервере какие-то настройки мешают…
              Mike
              07 августа 2016, 16:33
              0
              В переменной $action — message/create, а по оператору switch в 50 строке берется действие не для case 'message/create', а применяется default действие. Ничего не понимаю. Я печатал в начале файла массив $_REQUEST целиком и $_REQUEST[action] в частности, значение message/create. Смотрел POST-запрос — все данные уходят. Наверное на сервере что-то не так отрабатывается, других вариантов скорее всего нет. Может попробовать поставить пустой тестовый modx на этот же сервер и запустить на нем компонент с целью проверки? Насколько я понимаю компонент привязан к доменному имени. Можно потом вернуть привязку к первоначальному имени?
      Сергей
      17 августа 2016, 11:52
      0
      Сегодня или вчера перестали выводиться вопросы, пол года все работало, ни чего не трогал, форма для ввода выводится, сообщения отправляются, а не выводится на сайте ни чего, уже все позабыл, где что копать и еще названия всех цепочек продублировались gyazo.com/bbac00cc73d3dd9fa790fc8b234ed094

      За день до этого перестали подходить пороли от всех админов сайта, сбросил их запросом к базе
      Сами вопросы в админке есть, в базе всмысле
      Сергей
      17 августа 2016, 12:26
      0
      Удаляю новые дублированные цепочки из админки или прям из базы и она снова создаются, gyazo.com/6a72ec7d01f668fd2a48c33e4edef702 выделено желтым

      и названия в апострофах заключено почему то
      Сергей
      17 августа 2016, 12:49
      0
      Если я вызываю на странице у которой заголовок английскими буквами, то все работает и создается цепочка с названием из заголовка, а если заголовок русскими буквами, то создается цепочка с заголовком заключенным в апострофы, с чего вдруг так стало, на сайте ни чего не менял
      Сергей
      17 августа 2016, 13:11
      0
      Если переименовать заголовок документа и соответствующую цепочку в английскии символы, то все начинает работать.
      Но нужны русские, зачем
      [[!ecForm?
      &requiredFields=`user_name,text,user_email`
      &thread=`[[*pagetitle]]`
      ]]

      создает цепочку и добавляет апострофы к заголовку (для русских заголовков)?
        Наумов Алексей
        17 августа 2016, 14:20
        0
        кавычки из-за каких-то проблем на сервере, точно не могу сказать.

        А зачем thread делаете равным pagetitle?
        Это же чревато… чем родной resource-[[*id]] не устроил? Думаю, что нужно это исправить и проблем не будет.
          Klike
          18 августа 2016, 07:56
          0
          Алексей, подскажите пожалуйста, можно ли реализовать вывод формы ecForm, с выбором ветки?
          Например, на сайте есть две ветки (вопросы, отзывы), и в форме, например выпадающим списком (или радио, не важно) посетитель выбирает, куда написать.
            Наумов Алексей
            18 августа 2016, 09:35
            +1
            Да, вы просто делаете select с name=«thread», где у options разные value, например review-[[*id]], question-[[*id]] и работаете.
              Klike
              18 августа 2016, 10:12
              0
              Спасибо!
      Кирилл Киселев
      19 августа 2016, 21:23
      0
      Здравствуйте! Пытался сделать свои дополнительные поля через эту статью:
      docs.modx.pro/components/minishop2/development/plug-ins-products
      В админке поля создаются, но через форму в базе данных они не сохраняются! Как быть?
      В бд я эти поля создал.
      Валерий
      31 августа 2016, 19:30
      0
      Добрый вечер.
      А можно в данном компоненте настроить подтверждение активации отзыва через почту. Т.е. на почту администратору приходит письмо с самим отзывом и ссылкой, перейдя по которой, администратор активирует этот отзыв (как подтверждение регистрации на большинстве сайтов)?
        Наумов Алексей
        01 сентября 2016, 09:18
        +1
        Приветствую!

        Из коробки нет такой функции, нужно что-то придумывать и писать, например сделать отдельную страницу и разместить там небольшой сниппет, который будет обрабатывать запросы типа: /puplish-comment/?id=XXX&publish=1&secret=XXXXXXX
        где secret это что нибудь типа md5 от id + секретный код, записанный в настройках.

        А ссылку такую уже формировать в шаблоне письма…
          Валерий
          01 сентября 2016, 13:33
          0
          Спасибо, буду пробовать :)
          Перед глазами код с предыдущего сайта на Evo. Там это реализовано. В принципе, примерно так, как вы описали, по крайней мере в реализации ссылки.
      Tomas
      22 сентября 2016, 21:27
      1
      0
      Здравствуйте.
      Использую компонент для отзывов о пользователях.

      Подскажите как вывести общий рейтинг в списке пользователей? Используется pdoUser.

      thread == user-(id пользователя)

      Форма с добавлением отзыва находится на одном и том же ресурсе для разных пользователей, пример www.site.ru/user?id=111

      Пробовал сделать плагин, при добавлении, удалении и тд. Он должен был брать из обновленной ветки рейтинг и добавлять его в кастомную таблицу пользователя, но он срабатывал только при добавлении отзыва с сайта, а при публикации, удалении не срабатывал. Использовал эти события joxi.ru/Q2KlNas95nXoAj
        Наумов Алексей
        23 сентября 2016, 09:08
        0
        Добрый день!
        При вызове pdoUsers делайте join таблицы отзывов, по аналогии с этой публикацией: modx.pro/solutions/7446-join-easycomm-and-mfilter2/, только у вас условие будет не
        "on": "msProduct.id = ecThread.resource"
        а что-то вроде (не проверял)
        "on": "CONCAT('user-', modUser.id)= ecThread.name"
          Tomas
          23 сентября 2016, 11:57
          0
          Спасибо, все получилось
      max
      max
      30 сентября 2016, 08:52
      0
      Отличный плагин!
      Есть маленькое предложение: было бы неплохо в настройки сниппета ecForm внести параметр типа adminEmail — чтобы можно было уведомлять определенных менеджеров. Часто, например, за функционал «вопрос-ответ» и «отзывы» (оба реализованы с помощью EasyComm) отвечают два разных контент-менеджера и хотелось бы распределять уведомления о новых сообщениях пользователей по конкретным ответственным менеджерам. Плюсом было бы неплохо, если в параметр можно было бы передавать несколько адресов e-mail разделенных запятой.
      А так — все отлично! Спасибо за плагин =)

      Для тех, кому срочно надо (типа меня)… По идее, достаточно поменять код в файле easycomm.class.php в функции sendNewMessageNotification:
      if(empty($to)) {
          $to = $this->modx->getOption('emailsender');
      }
      на
      if(empty($to)) {
          $to = !empty($this->config['adminEmail']) ? $this->config['adminEmail'] : $this->modx->getOption('emailsender');
      }
      и затем передавать в вызове ecForm параметр adminEmail
        Наумов Алексей
        30 сентября 2016, 09:11
        0
        Спасибо за отзыв и предложение, запишу в пожелания.
        Наумов Алексей
        11 января 2017, 15:41
        0
        С опозданием, но сделал :)

        Параметр mailManager у сниппета ecForm в свежей версии (1.2.7-pl), доступно для обновления.
          Василий Столейков
          06 декабря 2017, 13:29
          1
          +1
          Вопрос: параметр mailManager (как и системная настройка ec_mail_manager) позволяет указывать только один емайл, или можно несколько через запятую как это сделано у тикетов?
          Если нет, то как отправить сообщение нескольким менеджерам одновременно?
      Сергей
      07 октября 2016, 10:35
      0
      вывожу сообщения так
      [[!ecMessages?  &limit=`1200`]]

      но все равно выводятся не все сообщения, а всего 11 штук примерно, а должно быть гораздо больше, где и что можно подправить?
        Наумов Алексей
        07 октября 2016, 10:55
        0
        т.к. по-умолчанию выводятся сообщения текущего ресурса.

        Укажите &threads=`*`, см. описание параметра в документации docs.modx.pro/components/easycomm/snippets
          Сергей
          07 октября 2016, 10:57
          0
          Дак мне и надо текущего, в админки их больше гораздо
            Сергей
            07 октября 2016, 10:59
            0
            В админке 64, а выводится 11
              Сергей
              07 октября 2016, 11:02
              0
              gyazo.com/0b0d55b1ddffb02310869f6203c2a8ba

              прописал так [[!ecMessages? &threads=`resource-242` &limit=`1200`]]

              стало вообще одно выводиться

              так &threads=`*` тоже одно выводится
                Сергей
                07 октября 2016, 11:06
                0
                [[!ecMessages? &limit=`0`]]

                все вот так теперь выводятся все сообщения из этого раздела
                  Наумов Алексей
                  07 октября 2016, 11:33
                  0
                  Очень странное поведение, никогда не встречал такого…
                  параметр limit всегда отличался корректностью работы. Я обычно 0 пишу, когда нужно вывести все. Хорошо, что заработало.
                    Konstantin
                    30 октября 2016, 21:10
                    0
                    А у меня [[!ecMessages?
                    &limit=`0`
                    ]]
                    категорически не работает… выводит всего несколько сообщений
      Александр
      06 ноября 2016, 08:54
      0
      напишите как вывести средний рейтинг я не понимаю использую rating_simple но может не так как то вывожу?
      Александр
      09 ноября 2016, 20:31
      0
      подскажите пожалуйста как вывести комментарий:

      к примеру у меня такая структура:

      дом (родитель)
      — о доме (дочерний элемент)
      — новости (дочерний элемент)
      — отзывы (дочерний элемент)

      отзывы люди оставляют во вкладке отзывы, как эти отзывы вывести на родительской странице «дом»

      спасибо за ответ
        Наумов Алексей
        09 ноября 2016, 20:56
        0
        Добрый день. Используйте параметр thread у сниппетов, например:

        // на странице Дом
        &thread=`house-[[*id]]`
        // на странице Отзывы
        &thread=`house-[[*parent]]`
      Александр
      09 ноября 2016, 21:03
      0
      все разобрался спасибо!
      Александр
      10 ноября 2016, 09:08
      0
      Добрый день!

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

      Спасибо.
        Наумов Алексей
        10 ноября 2016, 10:13
        0
        Вы же выше это же спросили и написали, что разобрались.
        Я не очень понимаю, где, как, каким сниппетом вы выводите, что значит цифрой?
      Александр
      10 ноября 2016, 10:15
      0
      на странице записи как вывести эти значения?

      prntscr.com/d5edsf
      Александр
      29 ноября 2016, 09:13
      1
      0
      День добрый! Сразу оговорюсь, я чайник в этих делах. Купил Ваше дополнение, установил. Создаю новый ресурс, привязываю к нему это дополнение, получается, что могу редактировать сообщения прям из под ресурса — это понял, все ок. Но скажите какой код нужно вставить на странице ресурса, чтобы он начал отображать комменты и дал возможность писать новые! Заранее спасибо! Все, что необходимо для работы установил, как написано в инструкции.
        Наумов Алексей
        29 ноября 2016, 16:02
        0
        На странице вызываете сниппеты:

        [[!ecMessages]]
        [[!ecForm]]
        первый выводит опубликованные сообщения, второй выводит форму добавления.
      Даниил
      19 декабря 2016, 11:01
      0
      С плагинами вроде понял и разобрался. Поля могу добавить. А вот как мне через систему плагинов подключить свой JS-скрипт? Надо добавить кое-какие действия, а в родной JS не хочется засовывать, ибо потом обновления все дела. Конечно можно просто в системных настройках прописать свой JS-файл, но тоже чревато.

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

      Не хочу чтоб через пару лет мне пришлось столкнуться с той же проблемой у easyComm. Поэтому хочу именно еще одним дополнительным JS-файлом это сделать, как плагин.
        Даниил
        19 декабря 2016, 11:07
        0
        Пробовал в плагине «core/components/easycomm/plugins/actions/index.php» просто подключиться к MODX и зарегать свой скрипт

        <?php
        define('MODX_API_MODE', true);
        require $_SERVER['DOCUMENT_ROOT'].'/index.php';
        $modx->getService('error','error.modError');
        $modx->regClientStartupScript('assets/components/easycomm/plugins/actions/actions.js');

        Так не работает. Вообще страница падает из-за php конфликта.
          Наумов Алексей
          19 декабря 2016, 12:08
          0
          Так просто в head подключите свой скрипт и все, зачем мучать себя? Пусть всегда будет подключен.

          Я же обычно делаю так:
          Конечно можно просто в системных настройках прописать свой JS-файл, но тоже чревато.
          но при обновлениях приходится следить, что произошло и вносить изменения.
            Даниил
            20 декабря 2016, 12:39
            0
            Ну в head эт я в первую очередь сделал, но думаю это как временное решение, потом всеж придумаю как плагином. Поросто сайтов много и когда переносишь какое-то настроенное решение с одного сайта на другой, то всеж гораздо удобнее, чтоб достаточно было ограничиться перекидыванием чанков и заливкой файлов, чтоб в коды поминимуму вникать… Ну и как-то цивилизованнее и современнее чтоль так)))
      Даниил
      20 декабря 2016, 12:45
      0
      Сейчас вот еще вопрос возник. Как после отправки сообщения сразу отобразить его, как в Tickets?

      Попытался в tpl.ecForm.Success впихнуть вызов ecMessages с &limit=`1`, но там видимо где-то есть оператор экранирующий теги MODX, в итоге вместо вывода результата работы сниппета вижу просто строку его вызова. Как исправить, в каком php-файле какой кусок кода? Ну или можт еще какой путь есть?
        Даниил
        20 декабря 2016, 14:17
        0
        Компонент кстати, если интересно, прикручиваю вот на этот лэндинг http://abortam.net/. Там еще многое не работает, так сказать в процессе сборки и тестов…

        Изначально был Tickets, но отказался из-за того, что в базовом варианте нет поддержки вывода нескольких веток комментариев на одной странице, а easyComm имеется. Править исходники Tickets, чтобы сделать поддержку нескольких вызовов сейчас банально нет времени.

        Что касательно easyComm сделано:
        1. Сделал поддержку включения/отключения комментов для статьи в один клик в доп.полях через радиобатон в админке.
        2. Само-собой с CSS поработал
        3. Убрал лишние стандартные поля, вход/регистрация производится через собственный компонент logReg (доведу однажды до ума — выложу релиз)
        4. Реализована возможность мультикомментариев (комментарии на комментарий).

        Сейчас после входа и отправки сообщений приходится обнавлять страницу, но в планах все через AJAX допилить. Также будут аватары, загружаемые пользователями (не через Gravatar, а напрямую на хостинг). Сейчас заканчиваю еще один собственный компонент modxAva. Точнее компонент уже готов, просто на этом сайте еще не прикрутил, но потестить его можно на другом сайте — http://esolife.ru/. Там он успешно работает в паре с Tickets (на основе которого кстати там построен полноценный форум, функционал которого постепенно расширяю).
        Наумов Алексей
        20 декабря 2016, 15:44
        0
        Вот с Success не понял, в чем причина, вроде бы все должно быть хорошо…

        К сожалению, сейчас нет времени смоделировать ситуацию, проверьте еще раз, что каких-нибудь досадных опечаток нет…
          Даниил
          21 декабря 2016, 15:03
          0
          На всякий, для полного понимания ситуации

      exist17
      22 декабря 2016, 14:47
      +1
      Здравствуйте!
      Ваш отличный компонент пришелся очень вовремя и к месту. Буду использовать его для раздела FAQ. У меня на вопросы пользователей будет отвечать около 20 специалистов. Будет довольно большой объем сообщений. Поэтому без аватаров, страница будет довольно обезличенная и «не живая». Отсюда вопрос.
      Подскажите пожалуйста, как бы вы реализовали вывод аватара менеджера сайта, того который отвечает на вопрос пользователя?
      Вижу в плагине «easyComm» следующий код:
      $defaultReplyAuthor = '';
      if($modx->getOption('ec_auto_reply_author')) {
      	$defaultReplyAuthor = addslashes($modx->user->getOne('Profile')->get('fullname'));
      }
      Как бы так тоже прикрутить вывод аватара, который прописан у менеджера в профиле?
        Наумов Алексей
        22 декабря 2016, 15:04
        +2
        Добрый день.

        Жёсткой привязки автора ответа к пользователю нет, как видите тут просто fullname берем. Я бы рекомендовал в этом случае вам заменить на такой код:

        $defaultReplyAuthor = $modx->user->get('id');
        и хранить уже id пользователя.

        На на фронте в выборку добавлять fullname и аватар удобным вам способом
          exist17
          22 декабря 2016, 17:53
          0
          Спасибо! Примерно так структурно и представлял себе решение.
          Алексей, можете чуть подробнее подсказать в каком модуле можно определить текущего пользователя админки и сохранить его в таблицу «modx_ec_messages»?.. А то, изменив код именно в плагине «easyComm» как вы описали, даже после очистки кэша и всяческих перелогиниваний и удалении core\cache ничего не меняется. Думаю что это делается где-то в другом месте…
            Наумов Алексей
            22 декабря 2016, 19:58
            0
            Еще в файле /core/components/easycomm/index.class.php, аналогичный код.

            Плагин работает когда работаем на странице ресурса, файл выше — работает в разделе Приложения/easyComm.
              exist17
              22 декабря 2016, 23:22
              0
              Теперь понятно. Спасибо!
      varanika
      24 декабря 2016, 22:45
      0
      Добрый вечер.
      Хочу реализовать форму вопроса во всплывающем окне. Если использовать фэнсибок и настроить в js закрытие на клик по кнопке — то форма закроется даже при ошибке в заполнении. Случайно в коробке нет ответов на эту реализацию?
        varanika
        25 декабря 2016, 00:55
        +2
        Как бы нашла решение :)
        jQuery(form).hide();
                                     setTimeout( function() {$.fancybox.close(); },3000);
        Добавить в my.default.js вместо
        jQuery(form).hide();
      varanika
      25 декабря 2016, 21:14
      1
      0
      Целиком, вдруг кто еще захочет сделать всплывающую форму связи с администрацией
      var easyComm = {
          initialize: function(){
              if(!jQuery().ajaxForm) {
                  easyComm.notice.error('Can`t find jQuery ajaxForm plugin!');
              }
              easyComm.rating.initialize();
              jQuery(document).on('submit', 'form.ec-form', function(e){
                  easyComm.message.send(this);
                  e.preventDefault();
                  return false;
              });
          },
      
          message: {
              send: function(form) {
                  jQuery(form).ajaxSubmit({
                      data: {action: 'message/create'}
                      ,url: easyCommConfig.actionUrl
                      ,form: form
                      ,dataType: 'json'
                      ,beforeSubmit: function() {
                          jQuery(form).find('input[type="submit"]').attr('disabled','disabled');
                          jQuery(form).find('.has-error').removeClass('has-error');
                          jQuery(form).find('.ec-error').text('').hide();
                          return true;
                      }
                      ,success: function(response) {
                          var fid = jQuery(form).data('fid');
                          jQuery(form).find('input[type="submit"]').removeAttr('disabled');
                          if (response.success) {
                              jQuery(form)[0].reset();
                              if(typeof (response.data) == "string") {
                                  jQuery('#ec-form-success-' + fid).html(response.data);
                                  jQuery(form).hide();
                                  setTimeout( function() {$.fancybox.close(); },3000);
                              }
                              else {
                                  easyComm.notice.show(response.message);
                              }
                          }
                          else {
                              if(response.data && response.data.length) {
                                  jQuery.each(response.data, function(i, error) {
                                      jQuery(form).find('[name="' + error.field + '"]').closest('.form-group').addClass('has-error');
                                      jQuery(form).find('#ec-' + error.field + '-error-' + fid).text(error.message).show();
                                  });
                              } else {
                                  easyComm.notice.error(response.message);
                              }
                          }
                      }
                      ,error: function(){
                          jQuery(form).find('input[type="submit"]').removeAttr('disabled');
                          easyComm.notice.error('Submit error');
                      }
                  });
              }
          },
      
      
          rating: {
              initialize: function(){
                  var stars = jQuery('.ec-rating').find('.ec-rating-stars>span');
                  stars.on('touchend click', function(e){
                      var starDesc = jQuery(this).data('description');
                      jQuery(this).parent().parent().find('.ec-rating-description').html(starDesc).data('old-text', starDesc);
                      jQuery(this).parent().children().removeClass('active active2 active-disabled');
                      jQuery(this).prevAll().addClass('active');
                      jQuery(this).addClass('active');
                      // save vote
                      var storageId = jQuery(this).closest('.ec-rating').data('storage-id');
                      jQuery('#' + storageId).val(jQuery(this).data('rating'));
                  });
                  stars.hover(
                      // hover in
                      function() {
                          var descEl = jQuery(this).parent().parent().find('.ec-rating-description');
                          descEl.data('old-text', descEl.html());
                          descEl.html(jQuery(this).data('description'));
                          jQuery(this).addClass('active2').removeClass('active-disabled');
                          jQuery(this).prevAll().addClass('active2').removeClass('active-disabled');
                          jQuery(this).nextAll().removeClass('active2').addClass('active-disabled');
                      },
                      // hover out
                      function(){
                          var descEl = jQuery(this).parent().parent().find('.ec-rating-description');
                          descEl.html(descEl.data('old-text'));
                          jQuery(this).parent().children().removeClass('active2 active-disabled');
                      }
                  );
              }
          },
      
          notice: {
              error: function(text) {
                  alert(text);
              },
              show: function(text) {
                  alert(text);
              }
          }
      }
      
      jQuery(document).ready(function(){
          easyComm.initialize();
          
           var forma = $('a.fansy');
           if (forma.length > 0) {
           forma.fancybox({
      		closeClick  : false,
      		closeBtn	: false,
      		width       : '70%',
                      height	: '70%',
      		openEffect	: 'elastic',
          	        closeEffect	: 'elastic',
      		hideOnContentClick:false,
      		titleShow:false,
                      helpers: {
                         overlay: {
                            locked: false
                                       },
      		   title:      {
      			type: 'outside'
      			         }
          }
      });
      }
      });
      Само собой кнопка вызова формы имеет класс fansy, a на странице подключен стиль и скрипт fancyapps.com/
      Sergey Boev
      30 декабря 2016, 07:05
      0
      Доброе утро.
      У меня не работает отправка писем на почту о новых отзывах и тд. Как и где мне настроить необходимые параметры, чтобы все работало верно?
      Любовь
      03 января 2017, 15:47
      0
      Есть ли возможность выводить комментарии в случайном порядке? Или сделать для каждого комментария свой шаблон вывода?
      Артём
      14 февраля 2017, 15:40
      +1
      Здравствуйте! Подскажите, можно ли реализовать выставление нескольких рейтингов, например: 1 — сервис, 2 — качество, 3 — цена? И чтобы была сумма отдельно групповых оценок и итоговая оценка, реально ли реализовать?
        Наумов Алексей
        14 февраля 2017, 15:48
        0
        Добрый день. «Из коробки» нет такой возможности. Вы можете добавить через плагин доп поля для хранения нужных вам рейтингов, но всю их обработку придется производить самостоятельно.
      exist17
      02 марта 2017, 12:59
      0
      Доброго дня!
      У меня компонент используется для вывода более 100 000 сообщений. Все они находятся в одной цепочке. Конечно же используется пагинация, выводится все через pdoPage. В каждом сообщении выводится id-шник, это как бы «номер вопроса». Поток вопросов довольно большой, поэтому пользователям нужна возможность находить свой вопрос по его номеру. В идеале бы генерировать алиас для каждого сообщения и иметь возможность вывести сообщение как ресурс MODX, чтобы на него можно было ссылаться. Скажите, как бы вы это реализовали?
      Спасибо.
        Наумов Алексей
        02 марта 2017, 15:41
        +1
        Добрый день.

        Я бы взял VirtualPage, настроил в нем правило для страниц типа /message/XXX/, где XXX — id сообщения, и дальше уже вроде все понятно… конкретная реализация — на ваше усмотрение, но в целом это абсолютно реализуемо.
          exist17
          02 марта 2017, 20:51
          0
          Очень интересный компонент. Похоже, именно то что нужно! Спасибо!
            Наумов Алексей
            02 марта 2017, 21:15
            0
            Думаю, что да. Я уже на 2-х сайтах по данному сценарию его использую, все ок.
      Denis
      13 марта 2017, 11:39
      0
      Добрый день.
      А есть ли возможность добавлять фото к отзыву?
      Или можно её реализовать.
      Sergey
      14 марта 2017, 02:31
      0
      Добрый день, Алексей!
      После создания доп. полей по твоей инструкции, по-умолчанию они не сохраняются в базе через форму на сайте (в админке редактирование/сохранение работает).
      Сохраняется только при добавлении их в allowedFields при вызове сниппета формы. В доках этот момент не описан. Или я что-то не верно делаю?
        Наумов Алексей
        14 марта 2017, 08:50
        0
        Да не, все верно. Про allowedFields в заметке видимо упустил.
        Заработало все в итоге?
          Sergey
          14 марта 2017, 08:53
          0
          Да, заработало.
      Семён Лебедев
      29 марта 2017, 11:00
      0
      Вам бы стоило нормально документацию здесь переписать:
      docs.modx.pro/components/easycomm/

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

      Ещё очень не понравилось то, что CSS дефолтный отключить нельзя, что загрузить его отдельно и подогнать под speedtest google
        Наумов Алексей
        29 марта 2017, 11:13
        0
        Документация процентов на 90 актуальная, но все равно исправить ее в планах.

        CSS отключается, есть соответствующая настройка, прям первая на странице.
          Семён Лебедев
          29 марта 2017, 12:29
          0
          Спасибо!

          В версии 1.1.1-pl добавил возможность автопубликации сообщений, такие просьбы были.
          А где это можно сделать?

          Как вариант на будущее:
          css-tricks.com/examples/StarRating/
          Семён Лебедев
          29 марта 2017, 12:55
          0
          И последнее как вывести черерзз ecThreadRating rating_simple?
          А то уже начали писать ecThreadRatingCustom
            Семён Лебедев
            29 марта 2017, 13:06
            -1
            Ответа от вас нет.
            Сделал так
            продублировал ecThreadRatingCustom и заменил rating_wilson
            array(
                    'rating_wilson_percent' => number_format($thread->get('rating_simple') / $ratingMax * 100, 3),
                    'rating_simple_percent' => number_format($thread->get('rating_simple') / $ratingMax * 100, 3),
                )
            Это не круто вообще но это бытсрее чем найти ответ в документации которой по рейтингу нет.
              Наумов Алексей
              29 марта 2017, 14:15
              +1
              Вопрос мне не понятен, и смысл вашей замены я тоже не понял.
              Я вижу перед собой 2 одинаковые строчки и чем они должны различаться — не ясно.
              Алексей Федоров
              29 марта 2017, 18:26
              0
              То есть вызвать плейсхолдер [[+rating_simple]] уже не торт? И он есть в документации --_--
      Максим
      17 апреля 2017, 20:59
      0
      Всем привет! Пробую задать e-mail получателя:
      [[!ecForm?
          					   &mailManager=`info@yandex.ru`
          					   &ec_mail_from_name=`info@site.ru`
          					   &ec_mail_new_subject_manager=`Новый отзыв с сайта site.ru`
          					   &tplForm=`tpl.FormReviews`
          					]]
      Письма не приходят, если поменять почту в системе сайта на info@yandex.ru, все работает. В чем трабл. Может кто подскажет?
        Sergey
        17 апреля 2017, 21:02
        0
        &ec_mail_manager
          Максим
          17 апреля 2017, 21:04
          0
          Пробовал и так, не приходят(. И первом и втором случае приходят только отправителю отзывы, админу нет(
        Наумов Алексей
        17 апреля 2017, 21:32
        0
        ec_mail_from, ec_mail_from_name — это системные настройки, а не параметры сниппета.

        Если проверить отправку почты через QuickEmail, письма приходят? Может дело в настройке почты именно сайта, а не компонента?
          Максим
          17 апреля 2017, 21:54
          0
          Проблема решилась настройкой smtp
          Jaz75RUS
          24 апреля 2017, 08:16
          0
          modx.pro/solutions/7446-join-easycomm-and-mfilter2/
          это бы в доки добавить, а то долго искал) Спасибо за сниппет, шикарная вещь)

          Единственное не совсем понял, через плейсхолдер [[+rating]] выводится рейтинг в цифре, где его чанк оформления или как вместо него вывести рейтинг в звездах?
            Наумов Алексей
            24 апреля 2017, 10:02
            +1
            1. Плохо искали))) docs.modx.pro/components/easycomm/standard-solutions-and-frequently-asked-questions
            не давно добавил ссылку в документацию.
            2. Для вывода в звездах смотрите, как это сделано в стандартных чанках, там используется конструкция
            style="width:[[+rating_persent]]%"
            которая позволяет задать ширину блока со звездами
              Jaz75RUS
              24 апреля 2017, 10:54
              0
              Спасибо за ответ, плейсхолдер [[+rating_persent]] должен выводить процент рейтинга я так понимаю, пока че то не хочет =(
                Наумов Алексей
                24 апреля 2017, 11:04
                +1
                А, если вы делаете JOIN — то конечно его не будет.

                Нужна хитрость, добавить в select поле, которое вычислить через запрос, как (rating * 20), что как раз составит проценты, т.к. максимальный рейтинг 5 — это 100%, значит текущий это (X *100) / 5 = (X * 20).
                  Jaz75RUS
                  24 апреля 2017, 11:07
                  0
                  ок спасибо, разберусь)
                  Jaz75RUS
                  24 апреля 2017, 11:40
                  0
                  вы не могли бы все же показать пример поля в селекте, и плейсхолдер вывода в превьюшке, я на эти эксперементы еще пол дня убью) Думаю многим это поможет, вопрос наверняка частый)))
                    Наумов Алексей
                    24 апреля 2017, 12:06
                    0
                    Как-то вот так должен выглядеть select:
                    &select=`{"ecThread": "ecThread.rating_simple * 20 AS rating"}`
                    Проверить на живом примере я сейчас, к сожалению, не могу. Если совсем не получается -можете доступ к сайту дать, я там настрою.
                      Jaz75RUS
                      24 апреля 2017, 13:09
                      0
                      спасибо что отвечаете))
                      селект в filters такой:
                      &select=`{
                      «msProduct»: "*",
                      «ecThread»: «ecThread.rating_simple * 20 AS rating, ecThread.count AS reviews»
                      }`

                      в чанке tpl.msProducts.row так:

                      [[+rating_simple]] — ничего
                      [[+rating_percent]] — ничего
                      [[+rating_simple_percent]] — ничего
                      [[+rating]] — число рейтинга (3 звезды) умноженное на 20, т.е. 60.000000
                        Jaz75RUS
                        24 апреля 2017, 13:32
                        0
                        нули нужно убирать или css на них пофиг?)
                        Дальше по идее все должно заработать на стилях ec-stars
                        Наумов Алексей
                        24 апреля 2017, 14:08
                        0
                        В базе 2 поля: rating_simple и rating_wilson, мы выбрали rating_simple под именем rating просто.

                        60.0000 — это корректное значение процентов для css, можно использовать его.
                          Jaz75RUS
                          24 апреля 2017, 15:22
                          0
                          да, все заработало, большое спасибо за помощь, отличное дополнение, куплю еще на один сайт)
        Николай
        29 апреля 2017, 15:33
        0
        Добрый день, а работает ли компонент с товарами в отдельной таблице migx?
          Наумов Алексей
          01 мая 2017, 18:13
          +1
          Да, только параметр thread нужно сделать уникальным каким-либо образом для каждого товара, например можно использовать комбинацию id ресурса + idx от migx (типа page-6-product-12).
        Николай
        29 апреля 2017, 15:34
        0
        И еще вопрос, при загрузке/выгрузке товаров, когда они автоматом создаются/удаляются, как можно удалять ветки комментариев?
        Может можно привязать не к id товара, а к alias?
          Наумов Алексей
          01 мая 2017, 18:14
          0
          оперируйте объектом ecThread, удаляйте его в нужный момент, все привязанные к цепочке сообщения удаляться автоматически.

          Создавать не обязательно, он создается при первом вызове сниппета ecForm.
            Николай
            01 мая 2017, 23:33
            0
            установил, пока тестирую, все удобно и настраивается легко.

            Вот чего не нашел — это возможности передать кастомный урл в снипет ecMessages, чтобы в админке можно было на ресурс перейти.
            Например, у меня товары в таблице migx. У них также есть свои страницы и урл.
            Я могу передать относительный урл к ресурсу в виде /category/tovar.html (site_url уже из системных параметров брать). Если не затруднит, не могли бы добавить такой функционал?
            Простите за наглость))
              Наумов Алексей
              02 мая 2017, 09:41
              0
              Не оч понял суть вопроса…
              нужен более детальный пример.
                Николай
                02 мая 2017, 10:09
                0
                Итак, у меня товары хранятся в своей таблице.
                У каждого товара есть следующие поля:
                article — уникальный номер товара
                alias — ссылка относительно категории
                category_id — id категории. Категория это обычный ресурс modx.

                Я хочу сделать отзывы к товарам на странице каждого товара. На странице товара вызываю ecForm
                с параметром thread = [[*article]]. Во фронтенде все работает отлично, а вот бекенде — нет.

                В качестве ресурса в админке сейчас получается просто один из ресурсов modx с тем же id, что и у товара, что конечно не корректно. Т.е. из админки, при клике перейти к ресурсу с комментарием во фронтенде забрасывает вообще на другой документ и то же самое в бекенде.

                Я в код не влезал, но предполагаю, что в снипете автоматом генерится ссылка на ресурс по id.

                А хотелось бы, для таких ситуаций, как у меня, иметь возможность самому передавать эту ссылку. Причем передавать разные ссылки для перехода в бекенд и фронтенд.

                Я предлагаю добавить в снипет ecForm, например такой параметр — &customFrontUrl- в него можно будет передать такую конструкцию:
                &customFrontUrl=[[~[[*category_id]]? &scheme=`abs`]]/[[*alias]]
                , чтобы сформировать ссылку на товар с комментарием в виде:
                &frontUrl=`/category_1/category_2/tovar_1.htm`
                Тогда из бекенда можно будет заходить на товар во фронтенде.

                И еще параметр &customBackId- сюда можно забрасывать id категории, чтобы формировалась ссылку уже на ресурс в бекенде, к которому привязана таблица modx с товарами.
                  Наумов Алексей
                  02 мая 2017, 11:20
                  0
                  Понял суть…

                  Нужно подумать, ваше решение не самый гуд, вам будет удобно, многим другим пользователям — будет мешать или у них будет свой вариант реализации.

                  Сейчас да, в админке «Перейти к ресурсу с комментарием» открывает ресурс, к которому привязан ecThread.

                  Постараюсь поразмыслить, чтобы сделать красивое решение.
                    Николай
                    02 мая 2017, 11:25
                    0
                    Нет, для простых пользователей ничего не надо менять, у вас все отлично работает.

                    Я предлагаю сделать проверку, что если &customFrontUrl или &customBackId не заданы, то у вас все формируется как сейчас, а если заданы, то урл из них берется.
                    Или вы так и поняли и я зря пишу?))
                      Наумов Алексей
                      02 мая 2017, 11:43
                      +1
                      Суть предложения понял, но 2 доп параметра для формирования + видимо поле в базе не очень хочется создавать для довольно простой вещи, нужно подумать :)
                        Николай
                        02 мая 2017, 13:58
                        0
                        Согласен, поля в базу придется добавлять))

                        Сейчас можно сделать, чтобы бы id ресурса можно было передавать.

                        Те у кого товары в migx, а категории в ресурсах будут передавать сюда id нужной под категории.
                        И внутри через makeUrl будет уже часть ссылки /category_1/category_2/. Внутри категории товар проще найти, чем вообще в другом месте.

                        Более того, есть побочный плюс — форму с комментарием на одном ресурсе повесить можно будет, а комментарии в буду выводить на том, к который указан к форме, например.
                        Николай
                        02 мая 2017, 14:00
                        0
                        Как вариант, можно в системные настройки добавлять параметры пакета migx (название класса и т.п.) и принцип формирования урл на основе этих данных.

                        Дальше, в админке добавлять пакет migx.
                        По переданному id отыскивать товар в таблице. Вытягивать у него все поля для формирования урл, например — alias (у кого-то может быть другое название) и id категории (ресурс модх).
                        И по шаблону
                        modx->makeUrl($category_id).'/'.$alias.$urlSuffix
                        $urlSuffix брать из настроек modx

                          Наумов Алексей
                          02 мая 2017, 15:52
                          0
                          Привязывать один компонент к другому — совсем плохая идея, завтра выйдет альтернатива MIGX, и что мы будем делать? Привязываться ко второму компоненту? Нужно более универсальное решение.
                            Николай
                            02 мая 2017, 17:09
                            0
                            К migx привязки не нужно.

                            migx ведь по сути только обертка для создания своих таблиц и класса с описанием для товаров. Любая своя таблица с товарами будет именно по такому принципу формироваться, какой бы компонент ее не строил.

                            Важно только, чтобы человек указал название класса и пакета со своими товарами.
                            А дальше уже подключать пакет через adPackage и доступ к таблице через класс.
          Николай
          04 мая 2017, 22:51
          0
          Добрый день! Скажите, а через AjaxSnippet нельзя ecForm вызвать получится?
          Хотел сделать по клику:
          [[!AjaxSnippet?
           	&snippet=`ecForm`
          	&thread=`[[*thread]]`
                &as_mode=`onclick`
               &as_trigger=`Написать сообщение`
          ]]
          Форма отображается, но не скрывается скрытое поле и голосование не работает. Похоже jquery.form.js не срабатывает.
            Наумов Алексей
            05 мая 2017, 09:15
            0
            Скрипты и стили компонента в этом случае подключите вручную.
            Вам потребуются:
            1. сами jquery.js, jquery.forms.js
            2. /assets/components/easycomm/css/web/ec.default.css
            3. /assets/components/easycomm/js/web/ec.default.js

            Пункты 2 и 3 подключаются через regClientJs/CSS, при вызове через AjaxSnippet этого не происходит.
              Николай
              06 мая 2017, 11:14
              0
              Стили подключаются все в порядке.
              Но JS не срабатывает, хотя и подключил ec.default.js. Скорее всего JS внутри Ajax работать не будет.
                Наумов Алексей
                09 мая 2017, 20:03
                0
                В стандартном файле инициализация работает так:
                jQuery(document).ready(function(){
                    easyComm.initialize();
                });
                вызовите easyComm.initialize() после загрузки блока через ajax.
                  Николай
                  10 мая 2017, 22:58
                  0
                  Алексей, спасибо за наводку.
                  Итого:

                  1. Подключил /assets/components/easycomm/css/web/ec.default.css
                  2. Подключил /assets/components/easycomm/js/web/ec.default.js
                  3. Добавил в шаблон формы конструкцию:
                  <script type="text/javascript" >
                  	$(document).on('as_complete', document, function(e,d) {
                  		easyComm.initialize();
                  	});
                  	</script>
                  4. Добавил в шаблон товара вызов
                  [[!AjaxSnippet?
                   	&snippet=`ecForm`
                  	&thread=`[[*thread]]`
                        &as_mode=`onclick`
                       &as_trigger=`Написать сообщение`
                  ]]
                  Все вроде работает.
                    Николай
                    11 мая 2017, 22:58
                    0
                    Рано порадовался сообщения не оставляются. Пришлось откатить((
                      Наумов Алексей
                      12 мая 2017, 09:41
                      0
                      Напишите ссылку сайт в личном сообщении, в профиле есть, посмотрю хоть.
                      Наумов Алексей
                      15 мая 2017, 09:03
                      +1
                      Нашел проблему!

                      При обычном вызове сниппета ecForm в head сайта добавляется js код с конфигом компонента.
                      При вызове через AjaxSnippet этого не происходит.
                      Таким образом при отправке формы выскакивает js ошибка из-за не найденного конфига, выполнение скрипта прекращается, форма банально обновляет страницу.

                      Найдите подходящий вам способ добавить конфиг компонента на страницу при вызове через AjaxSnipet.
          Maxim Erzh
          09 мая 2017, 20:14
          0
          Здравствуйте, jquery.js и jquery.form.js подключил, но все равно выходит ошибка Can`t find jQuery ajaxForm plugin!
          В чем может быть проблема?
            Наумов Алексей
            09 мая 2017, 20:42
            0
            В неверном подключении jquery.form.js, иного варианта не вижу
              Maxim Erzh
              09 мая 2017, 21:56
              0
              а как правильно подключить? я проверю, не первый раз скрипты подключаю вроде)
                Наумов Алексей
                10 мая 2017, 08:39
                0
                Да как обычно, в head или внизу страницы.

                Просто пути проверьте, что если у вас сайт по https работает, то и скрипт также подключен, что он раньше подключен, чем скрипты easyComm.
                  Maxim Erzh
                  10 мая 2017, 09:14
                  0
                  спасибо, разобрался, в последовательности подключения библиотеки jquery и jquery.form.js была проблема.