Выпустил Tickets

Сегодня замечательный день! Наконец-то, компонент Tickets был выпущен в свободное плавание — в репозиторий MODX.

В общей сложности, на эту работу у меня ушло около 40 дней. Чистого времени, приблизительно, 140 часов.
По сути вышло первое качественное расширение, для создания пользовательских страниц с комментариями. Этакий упрощенный LiveStreet. Комментарии однозначно лучшие из всех, что есть на Revolution (ха-ха, конечно — кроме Quip ничего и не было).

Документации нет, как и желания бесплатно её писать. Поэтому я просто сделал видео, в котором показано, что Tickets запускается на новом сайте буквально за несколько минут. Пока делал видео офигел от мысли, что из 8 нужных компонентов, 4 — мои.



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

Сейчас есть:
  • Создание особых разделов для тикетов в админке, со своим интерфейсом.
  • Создание тикетов в админке, тоже со своими панелями и табами.
  • Создание страниц с фронтенда.
  • Редактирование страниц с фронтенда, с проверкой авторства.
  • Чумовые ajax-комментарии.
  • Редактирование\удаление комментариев с админки.
  • Права доступа на добавление страниц в раздел и создание комментариев.
  • Собственное кэширование тикетов.
  • Принудительная фильтрация тикетов при выводе на экран by Jevix.
  • Автоматическая установка и настройка Jevix при инсталляции пакета. 2 набора параметров, раздельно для тикетов и комментариев.
  • Замечательный редактор MarkItUp для тикетов и комментариев. Набор кнопок меняется в системных настройках.
  • Почтовые уведомления о комментариях автору тикета, и тем, кому ответили на его комментарий.
  • Вывод последних комментариев и тикетов, с разбивкой по разделам и возможностью кэширования.
  • Комплектные сниппеты для грамотной обрезки и фильтрации текста, а также подсчета кол-ва комментариев тикета.
  • Все нужные чанки оформления, прописанные параметры у сниппетов, 2 языка — русский и английский.
Очень прошу не задавать глупых вопросов, все что нужно для работы я показал в ролике. У сниппетов есть параметры, у параметров есть описания. Включайте голову, разбирайтесь.

Компонент заказан, оплачен и подарен вам студией Simple Dream. Если бы не они, вы бы вряд ли увидели и другие работы: miniShop, mSearch, Jevix, BannerY.

Следующая заметка
Обновил Jevix, версия 1.1.0
Предыдущая заметка
Кэширование в компоненте Tickets


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

  1. Andrei Kilin 21 ноября 2012, 15:42 # 0
    Снимаю шляпу. Вечером спасибо будет.
    1. Andrei Kilin 21 ноября 2012, 16:08 # 0
      Хинт с драгэнддропом сниппетов — атас. Несколько раз видел, как ты писал про это, но не придавал значения, а тут такой ништяк оказывается.
      1. Василий Наумкин 21 ноября 2012, 16:12 # 0
        Работает только если разработчик пропишет параметры у сниппета. То есть, далеко не у всех сниппетов.
      2. Евгений Залесский 21 ноября 2012, 17:02 # 0
        Уже давно читаю ваш блог, вообще не очень люблю регистрироваться, что-то писать в комментариях, задавать дурацкие вопросы и.т.п. Просто хочу сказать огромное человеческое спасибо вам, что находите время на этот сайт и выкладываете тут море полезной информации.
        1. Василий Краковецкий 21 ноября 2012, 18:32 # 0
          Вообще красота) Полная замена Articles, если в словаре переименовать Тикеты в Статьи и не давать возможность пользователям создавать тикеты, то можно получить готовый блог)

          И запишите в планы — Подписку на комментарии в тикете, чтоб уведомления приходили не только автору тикета.
          1. Василий Наумкин 21 ноября 2012, 19:10 # 0
            В планах много чего есть, но щас надо переключиться на другую работу.

            Лично я давно хочу избавиться от Articles, но надо придумать, как пропускать сложную верстку моих заметок через Jevix. Пока на ум пришло только сделать параметр disableJevix для определенного тикета\раздела — но сейчас некогда.
            1. Василий Краковецкий 21 ноября 2012, 19:14 # 0
              Ну да, как вариант тв поле, поставить всем старым чтоб jevix их не трогал, а у всех новых выбор будет уже вручную ставить или нет.
              1. Василий Наумкин 21 ноября 2012, 19:25 # 0
                Бугагашеньки =)
                Jevix работает на уровне выдачи контента, ТВ параметр тут прокатит только при изменении исходника класса Ticket.

                То есть, при $ticket->getContent() — он будет уже фильтрован Jevix. Даже при $ticket->get('content') и некоторых других полей там будут заменены MODXовые теги.

                В общем, на эту тему надо еще подумать и потом доработать, чтобы включать\отключать галочкой с админки.
                1. Василий Краковецкий 21 ноября 2012, 19:51 # 0
                  Да не все так просто…
          2. СикретНаме 21 ноября 2012, 20:48 # 0
            Прекрасная весть, однако! Спасибо, Василий!
            1. Галич Сергей 22 ноября 2012, 00:41 # 0
              Хорошая вещь!
              1. Denys Butenko 23 ноября 2012, 00:05 # 0
                Спасибо, крутой компонент.
                Вчера писал коммент, забыл отправить и закрыл вкладку.
                Это по поводу подключения JS файлов. Ситуация следующая если использовать MinifyX или другие сборщики-минимизаторы и подключать jquery в подвале(footer) страницы, не будет работать markitup.js который подключается через regClientStartupScript(...) и загружается в шапке(head)
                Решений как этого избежать много, но хочется нативного решения. Без правки tickets.class.php и без подключения отдельно jquery в шапке перед markitup.js
                1. Василий Наумкин 23 ноября 2012, 04:56 # 0
                  Есть системный параметр tickets.enable_editor. Ставьте 0 и после этого подключайте скрипты вручную, как хотите.
                  1. Иван Брежнев 23 ноября 2012, 05:42 # 0
                    $modx->regClientScript() вставляет скрипт перед закрывающим тегом
                    1. Иван Брежнев 23 ноября 2012, 05:42 # 0
                      </body>
                      1. Комментарий был удален.
                        1. Denys Butenko 23 ноября 2012, 07:51 # 0
                          Это называется правка tickets.class.php ;)
                          Я то подключил все как нужно. Просто сообщаю о возможных неудобствах.
                          1. Иван Брежнев 23 ноября 2012, 08:03 # 0
                            понял)
                      2. Иван Брежнев 23 ноября 2012, 15:25 # 0
                        Если бы не Менделеев вы бы не увидели таблицу Менделеева! Если бы не Попов вы бы не увидели радио, если бы не Эйнштейн, если бы не Максвелл, если бы не… так можно до бесконечности
                        1. Василий Наумкин 23 ноября 2012, 15:39 # 0
                          Ты что сказать то хотел?
                          1. Иван Брежнев 23 ноября 2012, 15:57 # 0
                            Да просто ты всё время пишешь если бы не они то где были бы мы. Не понимаю смысла таких фраз
                            1. Василий Наумкин 23 ноября 2012, 16:14 # 0
                              Смысл в том, что лично ты бесплатно пользуешься продуктами, которые оплатили другие люди.

                              Чем больше таких «непониманий» — тем меньше вы увидите новых продуктов.
                              1. Василий Наумкин 23 ноября 2012, 16:20 # 0
                                Да, забыл сказать.

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

                                В процессе разработки же решили, что штука клевая — надо со всеми поделиться. Мир, дружба, Open Source!
                                Прочитал твой коммент и подумал «ну и нахуя мне это все?».

                                Верной дорогой, Ваня.
                                1. Иван Брежнев 23 ноября 2012, 16:48 # 0
                                  Это выбор каждого.
                                  А ты сказал спасибо в денежном эквиваленте тому кто создал nginx, php и еще много чего? Слышали бы они тебе сейчас
                                  1. Василий Наумкин 23 ноября 2012, 16:56 # 0
                                    Я им постоянно говорю спасибо.
                                    Иногда деньгами, иногда словами. «Не понимаю смысла таких фраз» — такого нет.

                                    Может, тебе лучше больше не ходить сюда?
                                    1. Иван Брежнев 23 ноября 2012, 17:06 # 0
                                      Ну ты «мочишь», заканчивай…
                                      1. Василий Наумкин 23 ноября 2012, 17:08 # 0
                                        Это ты мне советы даешь, как себя вести на моём сайте?

                                        Действительно, тебе пора.
                          2. Denys Butenko 23 ноября 2012, 23:13 # 0
                            Будет ли возможность управлять комментариями которые вызываются на других страницах? То есть, не в разделе Тикетов, например, на странице товаров.
                            1. Василий Наумкин 24 ноября 2012, 06:34 # 0
                              Да, в планах есть.
                            2. Alexandr Semenov 24 ноября 2012, 16:00 # 0
                              Возможно ли сделать что бы пользователи не видели тикеты друг друга, а их мог видеть только администратор, менеджер?
                              1. Василий Наумкин 24 ноября 2012, 16:07 # 0
                                1. Плагин на загрузку страницы, с проверкой авторизации и авторства (createdby) — это именно просмотр тикета
                                2. Вывод списка через getResources, который понимает список id через запятую, для вывода. То есть — надо мелким сниппетом выбрать подходящие ресурсы и отдать их getResources.

                                Так что да, без проблем. У всех тикетов включен параметр hidemenu, то есть, по умолчанию их никто не покажет, ни Wayfinder, ни getResources, ни Sitemap — никто.
                              2. Алексей П 26 ноября 2012, 01:43 # 0
                                Прежде всего огромное спасибо за проделанную работу!
                                При добавлении комментария необходимо вставить картинку. Если я прописываю тег img в ручную и и в аттрибуте src прописываю относительный путь, то после публикации src выглядит так:
                                src="http://assets/img/go.gif"

                                Т.е. добавляется совершенно мне не нужный http. Перепробовал различные варианты параметров jevix, но ничего не помогает. Подскажите как можно убрать этот http.
                                1. Василий Наумкин 26 ноября 2012, 04:41 # 0
                                  Никак, только правкой класса Jevix.

                                  Это серьёзный инструмент, который защищает вас от разных атак, типа инъекций и XSS. В новой версии Tickets есть возможность отключить фильтрацию через него для определенной страницы — пригодится ведущим блог с админки.
                                  1. Алексей П 26 ноября 2012, 16:13 # 0
                                    К чему может привести если я подкорректирую класс jevix и удалю вставку http в тег img? Это критично или ничего страшного?
                                    1. Василий Наумкин 26 ноября 2012, 16:21 # 0
                                      Ничего, если не обновлять потом jevix.

                                      А в чем проблема указать полный url?
                                      1. Алексей П 26 ноября 2012, 17:01 # 0
                                        Я хотел добавить к markitup смайлы. При выводе комментария jevix должен заменять определенные символы на img с src, который ведет в папку со смайлами. Но в настоящий момент сайт находится на тестовом домене. Поэтому чтобы потом не переписывать правила для jevix, на мой взгляд, проще сделать src относительным.
                                        1. Василий Наумкин 27 ноября 2012, 19:47 # 0
                                          Все просто — вставляйте картинки вместе со слешем /.
                                          То есть, относительный путь от корня сайта:
                                          <img src="/inc/img/1.png" />

                                2. Галич Сергей 27 ноября 2012, 16:43 # 0
                                  такой кстати вопрос, там в админке когда тикет смотришь, редактор tinymce не ставится,
                                  это просто забыли? или проблема какая то возникла?
                                  1. Василий Наумкин 27 ноября 2012, 17:20 # 0
                                    Не проверял даже с ним — не пользуюсь.

                                    В любом случае, все его теги повырезает Jevix, так что все не просто. Поставил в задачу себе.
                                  2. Виталий Киреев 29 ноября 2012, 09:06 # 0
                                    Немного не в тему вопрос: какой софт используете для создания видео? :)
                                    И за одно багу нашел: всплывающее окно логинзы перекрывается на этой странице ютубом.
                                    1. Василий Наумкин 29 ноября 2012, 11:37 # 0
                                      Я использую gtk-recordmydesktop.
                                    2. Юрий Зюзин 21 ноября 2013, 06:22 # 0
                                      Василий, здравствуйте!
                                      Никак не могу найти хоть какую то документацию по Tickets, кроме быстрого старта(
                                      1. Василий Наумкин 21 ноября 2013, 06:24 # 0
                                      2. Антон Соловьёв 27 февраля 2014, 15:15 # 0
                                        А возможно ли премодерация редактирования тиккета? Ну, т.е. как на вики движках, чел зарегистрировался, отредактировал уже существующую статью, и модератор должен прийти и одобрить изменения.
                                        На эво есть хотя бы что-то из той стороны (не то, но на тему истории версий документа) modx.im/blog/addons/113.html
                                        На рево придется извращаться с сохранением контента в тв и копированием оного при изменении.
                                        Если можно сделать иначе как-то или кто-то в курсе в какую сторону копать — подскажите.
                                        1. Володя 27 февраля 2014, 15:25 # 0
                                          Можно брать содержимое тикета — ставить разделитель и дописывать измененный контент. Я так не делал — просто мысль…
                                          я думаю даже можно прикрутить pagebreaker и выводить существующие версии тиккета…
                                        2. Антон Соловьёв 27 февраля 2014, 16:24 # 0
                                          pagebreaker не совсем понял, как организовать сохранение нового контента, чтобы старый ушел под разделитель… Нет, можно конечно свой сниппет для редактирования ресурсов создать и делать там что угодно…
                                          Но в любом случаи — у нас же там еще и тв.
                                          А можно ли как-нибудь сделать, чтобы при изменениях в контенте тиккета (или в тв) в разделе с тиккетами, в списке дочерних тиккетов в строке измененного появлялся какой-нибудь флажок, предупреждающий, что в тиккете пользователем (не админом) совершены изменения? Сейчас там есть флажок о комментариях. Понятно, что задача не простая. Я скорее помечтать и расширения кругозора для.
                                          1. Володя 27 февраля 2014, 16:29 # 0
                                            1. плагином на сохрание тикета наверно
                                            2. Я с тикетами дела не имел, не знаю. Но редактировать тикет — изначально может только создатель.
                                            1. Антон Соловьёв 27 февраля 2014, 16:43 # 0
                                              Таки да, можно.
                                              Из админки -то не обязательно создатель.
                                              Спасибо за ответы.
                                              1. Володя 27 февраля 2014, 16:48 # 0
                                                Ну тогда плагином опять же — при редактировании проверяем кем создан, если пользователь не равен текущему, то выставляйте в какое нибудь поле допустим — «был изменент {имя_юзера}»
                                                1. Антон Соловьёв 27 февраля 2014, 17:22 # 0
                                                  Там же crc-класс ресурса. Список дочерних ресурсов не в дереве, а на странице редактирования ресурса под формой. Там дополнительные поля дочерних не отображаются. Вот в этот список как-нить вклиниться бы…
                                                  1. Володя 27 февраля 2014, 17:40 # 0
                                                    плагином вклинивайся)))
                                          Добавление новых комментариев отключено.