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

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

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

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

Clean
05 марта 2014, 20:48
На все — ДА, в одном из последних релизов тикетов есть как раз разработка для неавторизированных юзеров
    Андрей
    05 марта 2014, 20:55
    не подскажете как реализовать возможность публикации неавторизированными пользователями?
Андрей
06 марта 2014, 13:27
Есть еще одна проблема.
На сайте вообще нет авторизации.
Указал что комментарии могут писать и гости. передал параметры &tplCommentFormGuest=`my.tpl.Tickets.comment.form.guest` и &tplCommentFormGuest=`my.tpl.Tickets.comment.one.guest`
в этом чанке my.tpl.Tickets.comment.one.guest просто нет кнопки ответить на комментарий, а вот для авторизированных пользователей кнопку, ответить оставил.
Предполагалось что авторизированными пользователями могут быть только админы и модераторы т.к. авторизация есть только в админке.
Так вот я залогиниваюсь в админке перехожу на сайт, но вижу шаблон, который должен видеть гость. Получается авторизация в админке не считается как авторизация на всем сайте? Как будет правильнее реализовать такую вещь?
    Илья Уткин
    06 марта 2014, 14:21
    Попробуйте создать плагин на событие 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
      спасибо
        Андрей
        06 марта 2014, 20:56
        И снова я столкнулся с проблемой
        Вот вызов сниппета
        [[!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
          Но вот комментарии для всех показываются одинаково, по шаблону описанному в чанке my.tpl.Tickets.comment.one.auth. Параметр &tplCommentGuest=`my.tpl.Tickets.comment.one.guest` просто игнорируется.
          Ты авторизированный пользователь, по этому тебе показывается чанк для авторизированных, зайди на сайт с другого браузера или в режиме инкогнито.
            Андрей
            06 марта 2014, 21:16
            Ну это понятно. Форма отображается для авторизированных одна, для неавторизированных другая.
            Хотя я нашел решение. Тут, наверно, косяк в самом сниппите 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
              Имеется ввиду, что если пользователь неавторизован, он не видит ссылок «Ответить», поэтому нужно использовать другой шаблон. А если гостям разрешено комментировать, то ответить они могут и им надо показывать тот же самый шаблон.
                Андрей
                06 марта 2014, 21:45
                Да, я уже в этом разобрался, но для моих нужд гостям нужно показывать другой шаблон.
      Евгений
      04 августа 2015, 21:42
      Подскажите как сделать чтобы анонимные пользователи могли создать тикет?
      Также комментарии не нужны, только ответ от администратора.

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

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

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

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