[Tickets] Версия 1.4.0-rc7 Публикация тикетов

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

Безусловно, это можно было делать и раньше, манипулируя полем published, но выходило так себе. Сейчас же всё просто — нужно только обновить чанки
  • tpl.Tickets.form.create
  • tpl.Tickets.form.update
И проверить у юзеров разрешение ticket_publish. Обратите внимание, что это разрешение требуется только на публикацию тикета, при снятии с публикации оно не нужно.

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

Вот так теперь выглядят формы:
  • Создание нового тикета
  • Изменение неопубликованного
  • Изменение опубликованного


В списке разрешенных полей для редактирования больше не нужно указывать published — его значение все равно никого не волнует.
Работа с тикетом зависит только от нажатой кнопки:
  • Опубликовать — сохраняет тикет, публикует и редиректит юзера на готовую страницу.
  • В черновики — сохраняет тикет, снимает с публикации и перезагружает страницу редактирования. Если у сниппета TicketForm указан параметр redirectUnpublished — то юзер редиректится на него.
  • Сохранить — просто сохранение тикета, без перезагрузок. В углу высвечивается зеленое окошко «Сохранено!» — можно поменять в лексиконах. Эта кнопка отсутствует при создании тикета, потому что там его нужно обязательно куда-то отправить — или на редактирование, или на просмотр страницы.
Также в режиме редактирования опубликованного тиекта появляется кнопочка «Открыть» — она просто открывает страницу тикета в новом окне, для удобства.

Вывод черновиков

Тут все очевидно, но на всякий случай напишу:
[[!pdoPage?
	&element=`getTickets`
	&showLog=`1`
	&user=`[[!+modx.user.id]]`
	&showUnpublished=`1`
]]

[[!+page.nav]]
Конечно, желательно как-то разделять тикеты по статусу в оформлении чанков — но это уже на ваше усмотрение.

Также нужно добавить ссылку на редактирование:
<a href="[[~[[+id страницы с вызовом TicketForm]]]]?tid=[[+id]]">Отредактировать</a>
Теперь пользователи смогут просматривать и редактировать свои неопубликованные тикеты.

Заключение

Я внёс уже все запланированные изменения в Tickets 1.4.0. Честно говоря, с учетом наших краудфандинговых компаний, изменений было гораздо больше, чем планировалось.

Так что сейчас все внимательно тестируем и через какое-то время будет стабильная версия. Больше особо ничего не поменяется — только исправление ошибок.

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

Следующая заметка
[Tickets] Версия 1.4.0-pl
Предыдущая заметка
[Tickets] Версия 1.4.0-rc4 Работа с избранным


Комментарии ()

  1. Наумов Алексей 02 апреля 2014, 16:57 # 0
    Класс. Все больше костылей, которые я написал еще с год назад, закрываются штатными методами)
    1. Саша Друмс 02 апреля 2014, 17:51 # 0
      У меня на хостинге такая проблема: при вызове сниппета TicketMeta на странице тикета 1-ый раз страница нормально грузится. При перезагрузке страницы 500 ошибка. В логах пишет:
      Call to undefined method Ticket_mysql::getStars() in /site.ru/core/components/tickets/model/tickets/ticket.class.php on line 59
      Вот эта 59 строка:
      case 'stars': $value = $this->getStars(); break;
      При выводе
      case 'stars': $value = $this->getStarsCount(); break;
      ошибка исчезает, но не уверен в правильности решения.
      ps: php 5.3.27 а на test.modx.pro вроде все ок.
      1. Василий Наумкин 02 апреля 2014, 18:02 # 0
        Ага, завалялось старое имя метода.

        Поправил и обновил пакет, спасибо!
      2. Evgeny Epifanov 02 апреля 2014, 20:18 # 0
        Подскажите, а можно ли через TicketLatest выводить случайные комментарии? Не последние, а именно случайные?
        1. Василий Наумкин 02 апреля 2014, 23:05 # 0
          Нет.

          Но можно через getTickets и getComments:
          &sortby=`RAND()`
          1. Evgeny Epifanov 03 апреля 2014, 00:26 # 0
            Спасибо. Заодно и обновился.
        2. Andrei D. 03 апреля 2014, 15:43 # 0
          А как теперь с кэшем быть?
          Раньше после сохранения был редирект на тикет и там поля были уже обновлены.
          Теперь нужно чистить кэш сайта, чтобы появились изменения
          P.S. использую старую связку input type=«submit» class=«btn btn-primary submit» value=«Save» />
          Дайте наводку где копать)
          1. Василий Наумкин 03 апреля 2014, 15:52 # 0
            Очистка кэша прописана в процессорах создания и изменения тикета.

            Там ничего не менялось — всё работает как и раньше.
          2. Wassi Wassinen 15 апреля 2014, 07:36 # 0
            Василий, что-то не выводит он пдоПейджем черновики.
            1. Василий Наумкин 15 апреля 2014, 07:37 # 0
              Может, подумать немного, и указать
              &showUnpublished=`1`
              1. Wassi Wassinen 15 апреля 2014, 07:59 # 0
                Я очень много раз думал понемногу и указывал так и сяк. Не выводит ничего. Даже если указываю id юзера.
                1. Василий Наумкин 15 апреля 2014, 08:13 # 0
                  А нужно всего один раз, но хорошенько — тогда бы ты вспомнил про &parents.

                  Ну и напоминаю про использование &showLog, который есть почти у всех сниппетов pdoTools, включая getTickets.
                  1. Wassi Wassinen 15 апреля 2014, 08:16 # 0
                    Т.е. он не умеет по дефолту (0) искать везде? Сейчас попробую с парентсом.
                    1. Wassi Wassinen 15 апреля 2014, 08:22 # 0
                      А! С ноликом работает! :)))
                    2. Wassi Wassinen 15 апреля 2014, 08:18 # 0
                      Кстати о парентсах — почему-то когда ticketForm использую, указывая &parents — не выводит ничего. Убираю парентс — разрешает публиковать во все разделы.
                      1. Василий Наумкин 15 апреля 2014, 08:27 # 0
                        Parents в TicketForm, так же как и в других сниппетах — это родители для выборки потомков. В данном случае, это родитель для выборки секций, а не сами секции.

                        По хорошему, нужно настроить права доступа на секции, управляя разрешением section_add_children. Если не получится — можно и так, но в этом случае юзер сможет опубликовать заметку в левую секцию (при большом желании).
                        1. Wassi Wassinen 15 апреля 2014, 10:54 # 0
                          Мозг себе сломал ночью, а оно вот как работает…

                          pp.vk.me/c540104/c616523/v616523002/9d10/FKDQT-q4g0Q.jpg
                          1. Wassi Wassinen 15 апреля 2014, 10:56 # 0
                            Именно поэтому у тебя тикет-разделы не вкладываются друг в друга?
                            1. Wassi Wassinen 15 апреля 2014, 10:57 # 0
                              Как бы тебе вискаря заслать, Василий? Сам я не пью, а спиртное дарят. :)
                      2. Wassi Wassinen 15 апреля 2014, 08:01 # 0
                        Не будь таким угрюмым — у нас солнце. :)
                    3. Валерий Сафронов 24 апреля 2014, 19:16 # 0
                      Подскажите как сделать отправку сообщения на email Администратора при создании нового черновика тикета?
                      1. Василий Наумкин 24 апреля 2014, 21:36 # 0
                        Только своим плагином на создание документа.

                        А так уведомления отсылаются при первой публикации тикета.
                      Добавление новых комментариев отключено.