Реализация отзывов на tikets

Здравствуйте.
Можно ли на Tikets реализовать следующую систему отзывов?
— все отзывы будут находиться на одной странице.
— форма добавления отзыва должна находиться на этой же странице.
— отзывы должны проходить модерацию.
— на отзывы может отвечать админ или несколько заданных групп пользователей.(у обычных пользователей не должно быть этой возможности)
— форма должна отправляться при помощи ajax.
— отзыв могут добавлять неавторизированные пользователи.

Не смог сделать так что бы тикеты или комментарии могли добавлять неавторизированные пользователи и решил спросить у Вас возможно ли все это реализовать на Tikets?
Андрей
05 марта 2014, 09:43
modx.pro
3 274
0

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

Clean
05 марта 2014, 20:48
+1
На все — ДА, в одном из последних релизов тикетов есть как раз разработка для неавторизированных юзеров
    Андрей
    05 марта 2014, 20:55
    0
    не подскажете как реализовать возможность публикации неавторизированными пользователями?
      Clean
      05 марта 2014, 21:38
      +1
      Aртур Чикин
      05 марта 2014, 22:09
      +4
      Господи, почему сначала задают вопрос, а потом смотрят в сам компонент и его параметры?!
        Андрей
        06 марта 2014, 13:19
        0
        параметры смотрел, но скорее всего не внимательно…
    Андрей
    06 марта 2014, 13:27
    0
    Есть еще одна проблема.
    На сайте вообще нет авторизации.
    Указал что комментарии могут писать и гости. передал параметры &tplCommentFormGuest=`my.tpl.Tickets.comment.form.guest` и &tplCommentFormGuest=`my.tpl.Tickets.comment.one.guest`
    в этом чанке my.tpl.Tickets.comment.one.guest просто нет кнопки ответить на комментарий, а вот для авторизированных пользователей кнопку, ответить оставил.
    Предполагалось что авторизированными пользователями могут быть только админы и модераторы т.к. авторизация есть только в админке.
    Так вот я залогиниваюсь в админке перехожу на сайт, но вижу шаблон, который должен видеть гость. Получается авторизация в админке не считается как авторизация на всем сайте? Как будет правильнее реализовать такую вещь?
      Илья Уткин
      06 марта 2014, 14:21
      +1
      Попробуйте создать плагин на событие OnHandleRequest:

      <?php
      if ($modx->event->name != 'OnHandleRequest') return;
      if ($modx->user->hasSessionContext('mgr') && !$modx->user->hasSessionContext('web')) {
          $modx->user->addSessionContext('web');
      }
        Андрей
        06 марта 2014, 20:00
        0
        спасибо
          Андрей
          06 марта 2014, 20:56
          0
          И снова я столкнулся с проблемой
          Вот вызов сниппета
          [[!TicketComments? &thread=`отзывы`
              &autoPublish=`0`
              &allowGuest=`1`
              &allowGuestEdit=`0`
              &tplCommentFormGuest=`my.tpl.Tickets.comment.form.guest`
              &tplComments=`my.tpl.Tickets.comment.wrapper`
              &tplCommentGuest=`my.tpl.Tickets.comment.one.guest`
              &tplCommentAuth=`my.tpl.Tickets.comment.one.auth`]]
          Форма для гостей показывается одна, а для авторизированых пользователей(админа) другая. Все как и должно быть.
          Но вот комментарии для всех показываются одинаково, по шаблону описанному в чанке my.tpl.Tickets.comment.one.auth. Параметр &tplCommentGuest=`my.tpl.Tickets.comment.one.guest` просто игнорируется.
            Aртур Чикин
            06 марта 2014, 21:07
            0
            Но вот комментарии для всех показываются одинаково, по шаблону описанному в чанке my.tpl.Tickets.comment.one.auth. Параметр &tplCommentGuest=`my.tpl.Tickets.comment.one.guest` просто игнорируется.
            Ты авторизированный пользователь, по этому тебе показывается чанк для авторизированных, зайди на сайт с другого браузера или в режиме инкогнито.
              Андрей
              06 марта 2014, 21:16
              0
              Ну это понятно. Форма отображается для авторизированных одна, для неавторизированных другая.
              Хотя я нашел решение. Тут, наверно, косяк в самом сниппите TicketComments вот в этом месте
              $tpl = !$thread->get('closed') && ($modx->user->isAuthenticated($modx->context->key) || !empty($allowGuest))
              		? $tplCommentAuth 
              		: $tplCommentGuest;
              Я передаю параметр $allowGuest = 1, поэтому !empty($allowGuest) будет всегда TRUE. И в любом случае условие верно и $tpl = $tplCommentAuth. Нужно без восклицательного знака empty($allowGuest)
              $tpl = !$thread->get('closed') && ($modx->user->isAuthenticated($modx->context->key) || empty($allowGuest))
              		? $tplCommentAuth 
              		: $tplCommentGuest;
                Илья Уткин
                06 марта 2014, 21:41
                0
                Имеется ввиду, что если пользователь неавторизован, он не видит ссылок «Ответить», поэтому нужно использовать другой шаблон. А если гостям разрешено комментировать, то ответить они могут и им надо показывать тот же самый шаблон.
                  Андрей
                  06 марта 2014, 21:45
                  0
                  Да, я уже в этом разобрался, но для моих нужд гостям нужно показывать другой шаблон.
        Евгений
        04 августа 2015, 21:42
        0
        Подскажите как сделать чтобы анонимные пользователи могли создать тикет?
        Также комментарии не нужны, только ответ от администратора.

        Сейчас на странице тикетов выводятся сами тикеты
        а далее
        Вы должны авторизоваться, чтобы создать тикет.
        вместо формы, вызываю ее так
        [[!TicketForm]]
          Максим Кузнецов
          04 августа 2015, 21:50
          +1
          При создании тикета пользователь ОБЯЗАТЕЛЬНО должен быть авторизован, т.к. у ресурсов модкса (тикеты — такие же ресурсы) всегда должен быть автор.

          Можно попробовать вешать плагин для анонимных пользователей, присваивающий им авторизацию какого-нибудь дефолтного пользователя, предварительно создав такого.
            Евгений
            04 августа 2015, 22:13
            0
            Попробуем разабраться, хотя в данный момент будучу залогиненным админом вижу ту же самую надпись.

            А каким образом сделать ответ администратором?
              Максим Кузнецов
              04 августа 2015, 22:20
              0
              Если необходимо сделать добавление со стороны фронтэнда, то самый простой вариант:
              [[!TicketComments? &depth=`1`]] — и оставить права комментирования только у администратора.

              Ну или можно добавить одно дополнительное tv-поле (допустим, adminComment) и выводить его.
              [[+adminComment:notempty=`
              //здесь верстка для вывода комментария, если пол не пустое.
              `]]
              Возможность заполнения, соответственно, оставить только со стороны админки.
              Ну или создать небольшой сниппет, проверяющий права юзера, и если юзер — админ, то давать возможность заполнять поле комментария и сохранять значение в tv при отправке.
          zvorchik
          19 апреля 2017, 14:34
          0
          мне подошел такой вариант
          [[!+modx.user.id:is=`1`:then=`контейнер со ссылкой ответ`]]
            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
            19