Представляю вам новую версию Tickets, с большими изменениями.
В первую очередь, добавились социальные функции - возможность голосовать за тикеты и комментарии. Кое-что было предусмотрено для этого в компоненте с самого начала, но руки так и не дошли.
А вот недавно товарищ Wassi Wassinen профинансировал вопрос, и теперь у нас есть рейтинги. Не знаю, насколько это будет полезно у меня на сайте, но как минимум протестировать нужно. А там решим - оставить или отключить.
Голосовать можно за комментарии и тикеты. Для этого нужно обладать правами - ticket_vote - разрешение голосовать за тикеты
Оба разрешения включены в политики безопасности по умолчанию. За свои тикеты и комменты голосовать нельзя.
Чтобы включить рейтинги, вам нужно просто обновить чанки. Пришлось довольно сильно помучиться с оформлением всех этих стрелочек и статусов, но я умудрился сделать всё без единого фильтра - только "быстрыми плейсхолдерами" pdoTools.
Изменены чанки: - tpl.Tickets.list.row - чанк оформления списка тикетов
Их можно перезаписать при обновлении пакета, если у вас там немного изменений. Иначе топаем по ссылкам на github и делаем как там.
Чего пока нет: 1. Нет периода скрытия рейтинга тикета для гостей. Гости видят рейтинг сразу, а юзеры после голосования. 2. Нет подсчета рейтинга юзера и кармы. Честно говоря, не уверен, что это вообще будет, но вы легко можете делать выборки из таблицы TicketVote и считать что угодно. 3. Заминусованные комментарии никак не прячутся. 4. Время голосования никак не ограничивается.
Всё остальное вроде реализовал (поправьте в комментариях, если нет).
Для голосования за тикет на его собственной странице пришлось написать новый сниппет.
Он умеет: - Выводить симатичную дату [[+date_ago]]
То есть, это готовый сниппет для вывода всей нужной информации на странице тикета. В комплекте к нему идёт чанк tpl.Tickets.meta. Если вдруг кто пользовался плейсхолдерами [[+views]], [[+comments]] и [[+date_ago]], то переходите на использование нового сниппета - этих плейсхолдеров на странице больше нет.
У сниппета всего три параметра: чанк для вывода и возможность отключить получение секции и автора, чтобы не делать лишних запросов, если они вам не нужны.
В комментарии добавлена прикольная штука, подсмотренная на Хабре - перемотка к родителю и обратно. Может быть полезно при больших беседах, когда зыбываешь, на что отвечаешь.
Также в комментарии добавлен плейсхолдер [[+idx]]. Ну, просто для порядка.
[#57] Добавлены все плейсхолдеры юзера при просмотре и публикации комментария - можно использовать [[+username]].
[#56] При редактировании тикета в админке добавлено окошко description.
[#55] Исправлена ошибка с изменением alias тикета при редактировании pagetitle на фронтенде.
Почистил код класса Ticket и сниппета TicketComments.
Обновляемся из репозитория и благодарим Wassi Wassinen за финансирование новой версии. Просьба тестировать и писать об ошибках - здесь и на GitHub.
Ну и, конечно, голосуем!
Выложил в репозиторий beta2: - [#58] Исправлено переключение класса существующего документа на Ticket
[[!pdoPage?
&element=`pdoUsers`
&leftJoin=`{"Vote":{"class":"TicketVote","on":"modUser.id=Vote.owner AND class IN ('Ticket','TicketComment')"}}`
&select=`{"modUser":"*", "Vote":"SUM(value) as rating"}`
&groupby=`modUser.id`
&sortby=`rating`
&sortdir=`desc`
&tpl=`@INLINE <p>[[+idx]]. [[+fullname]] — <b>[[+rating]]</b></p>`
]]
[[!+page.nav]]
Кстати говоря, еще вы можете выводить тикеты, отсортировав их по рейтингу:
[[!pdoPage?
&element=`getTickets`
&parents=`0`
&leftJoin=`{"Vote":{"class":"TicketVote","on":"Ticket.id=Vote.id and Vote.class='Ticket'"}}`
&select=`{"Ticket":"*", "Vote":"SUM(value) as rating"}`
&groupby=`Ticket.id`
&sortby=`rating`
&sortdir=`desc`
&tpl=`@INLINE <p>[[+idx]]. [[+pagetitle]] — <b>[[+rating]]</b></p>`
]]
[[!+page.nav]]
Присоединение таблиц в сниппетах pdoTools - могучая вещь!
Спасибо, всё - окончательно перехожу на Tickets! :)
Проголосовал за эту статью - рейтинг не изменился, так и стоит 0...
Прошу прощения, работает. Возможно после Ctrl+F5...
Это нормально, я набегу исправляю тут всякое =)
Проверил на тебе минусовый рейтинг.. =)
Ну да, виноват, не все отладил =(
Жалко не могу поставить плюс =( Говорит "У вас недостаточно прав для этого действия."
Просто перелогинься.
Шикарно!!!
Крутяк )))
ШИКАРНО!
круто!
Василий, как всегда радуешь отличными новостями. Если не трудно, ответь на несколько вопросов (чтобы не устанавливать и настраивать себе все) 1. Для этого компонента необходимы продвинутые сниппеты авторизации? Либо же обычного Login будет достаточно 2. Каждый новый текет от пользователя, это полноценный ресурс? Либо же это обычная таблица записей в базе? 3. В тикетах все еще нету возможности комментировать ресурс не авторизированным пользователям? 4. Можно ли добавить к созданию тикета доп поля? (В случае если тикеты это все таки ресурсы) Спасибо.
1 юзер должен быть авторизован, неважно как 2 это ресурс, но с особенностями 3 нету 4 конечно
Катарсис!
Теперь проматываешь портянки сообщений и можешь заострять внимание преимущественно на "мощно заплюсованных" комментариях))
А я думаю что лучше их сдвинуть влево, к остальным элементам комментария, так как из за скрипта который не так давно добавили, на больших ветках комментарий разъезжается на весь экран, жуть как не удобно.
Отключил расширение контента.
Всё-таки, оно больше мешает чем помогает.
Если есть возможность, Василий, дай клацать по серым стрелкам голосования анонимусам с выводом некого сообщения "Чтобы оставлять голосовать вам необходимо войти или зарегистрироваться" (можно даже на jGrowl) - это очень способствует вовлечению новых посетителей. Спасибо еще раз.
Не думаю что это будет полезно. Если пользователь не хочешь авторизироваться что бы оставить комментарий, то для того что бы поставить + или - он авторизироваться и подавно не будет.
Это практика подавляющего большинства крупных ресурсов. Буду опираться на неё. :) Спасибо за мнение.
Вся фишка в том что на крупных проектах, это смотрится довольно таки правильным решением, а на меньших проектах, это смотрится несуразно.
Везде, где можно надеяться на более или менее адекватную оценку полезности комментария сообществом - это правильное решение. Плюс отсекает неадекватов: накомментил фигни - твой комментарий скрыт или не виден. А в целом у меня нет желания кого-либо переубеждать :)
Вы отклонились от парадигмы обсуждения, я говорил про ненадобность предупреждать пользователя о том что ему нужно авторизироваться что бы проголосовать, а ты мне говоришь о необходимости рейтинга вообще:)
Поспешил - людей насмешил. Фразу "Чтобы голосовать Вам необходимо войти или зарегистрироваться".
Добавь у себя вызов скриптов на стрелочки в чанке для гостей.
Оно будет ругаться на права - переименуй это в лексиконе.
Давно хотел спросить - как вызывать всплывающие окошки не подключая jGrowl? У тебя, как я понял, лексикон немного изменен?
В любом случае нужно что-то подключать, если ты не планируешь написать собственное решение на чистом javascript.
У меня везде используется jGrowl.
Разобрался. Он у тебя дефолтом подключается. Что касается - и + для анонимуса - когда нажимаешь плюс не залогинившись, просто ничего не происходит. Это сбивает с толку. Вроде как нажать можно, а вроде как и ничего не происходит. У себя добавлю вывод сообщения. По поводу сниппета написал на почту.
И готов поучаствовать в финансировании подсчета кармы и вывода на странице с юзерами. Если возьмешься. :) Кстати, Василий, есть мысль сделать вкладку "Наше сообщество", "Hate you" или лаконичное "Пользователи", чтобы выводить туда зарегистрированных с фильтрами по активности и той же карме? Было бы здорово. Вы затеваете отличный проект с modx.pro, а к нему было бы хорошо сформировать социальную группу, которая должна общаться и видеть друг-друга.
Сама затея гуд, но это блог а не социальная платформа, так что лучше уж подождать когда запустится modx.pro и там уже все социальные плюшки реализовывать)
«Hate you»?? Или я чего-то не понял? :-)
Василий как бы подчеркивает тоталитаризм царящий на этом ресурсе и я по этому поводу чуть-чуть посарказмировал. :)
Тонко :-)
Я еще не уверен, что оставлю здесь рейтинг, а ты уже про карму.
Народ и так хорошо общается, без всяких писькомерок. Наоборот сейчас могут начаться обидки "за что меня минусанули?".
Тем более, вопросов по карме и её управлению очень много, тянет на отдельный компонент по масштабам. Так что, пока не возьмусь.
В принципе, могу написать тебе отдельный сниппет который будет выбирать сумму минусов\плюсов юзеров и выводить их список по убыванию. Без всяких хитрых формул, просто список с общим рейтингом. Если нужно - пиши на мыло, обсудим.
Как вариант, можно оставить плюсы без минусов. (По поводу юзабилити, можно оценку поставить между стрелок, чтобы не промахиваться).
А как насчёт цветового затухания текста заминусованных комментариев как на Хабре? Чтобы взгляд сразу цеплялся за плюсованные, и не останавливался отрицательных..
Оно в списке "Чего пока нет", пункт 3.
можно же за 2 минуты на js написать, например .... if( count
Жду коммит на GitHub`е.
лови https://github.com/bezumkin/Tickets/issues/59
Было бы здорово сделать небольшую градацию (
на тесте поставил,
при попытке изменить рейтинг статьи, пишет: "У вас недостаточно прав для этого действия." на 6 разных юзерах, зареганых через авторизацию HybridAuth
куда покапать?
Даже не знаю, может нужно создать группу пользователей, указать её в HybridAuth и назначить ей политику доступа TicketUserPolicy?
Ну, чтобы юзеры регистрировались в группу, которая имеет право писать тикеты, комменты и голосовать?
ахах) точно) получилось что-то не могу найти на сайте инструкцию по установке)
http://bezumkin.ru/modx/tickets/quickstart
Ну и подумать немного можно.
тьфу искал установку hybryd)) туплю
в chunk.ticket_meta.tpl есть строка
а [[+comments]] [[+new_comments]] нету, либо убрали что-то одно, либо забыли убрать что-то другое, как мне кажется
Забыл убрать, конечно.
Зашел в этот тикет. Написано вверх тире Вниз. Чтобы просмотреть рейтинг предлагается нажать тире. Нажимаю тире - показывает +36 и голосовалка переходит в статус inactive, т.е. голосовать после просмотра я уже не могу. ps с какой целью рейтинг прячется то?
С целью независимого голосования.
то есть это так и задумано? Если посмотрел рейтинг, то ты уже необъективен и голосовать не можешь? =)
Именно.
Зачем тебе смотреть рейтинг до голосования если это не влияет на твое мнение? Или голосуй объективно или воздержись
Придумал это не я - повторяю логику с Хабрахабра.
Ну для Хабра то понятно - там вход по пропускам и с iq>200, на других сайтах контингент не факт,что поймет,что это вообще голосовалка, если там циферок стоять не будет =)
Может, им тогда и не стоит голосовать.
А вообще, в чанке можно настроить. Убрать возможность "воздержаться" и сразу показывать рейтинг.
Василий, какие файлы можно переместить из новой версии Tickets в предыдущую, чтоб голосование заработало? А то у меня слишком уж там много исправленных исходников, не хочу травмировать целиком компонент, полюбому ченьть да полетит, а счас это совсем не кстати было б
Смотри на GitHub.
Ок, спасибо
Эх! Не было бы авторизации, цены бы не было!
И сейчас цены нет.
Я бы заплатил, за версию без регистрации )))
Согласен сделать возможность анонимного комментирования всего за 10 000 рублей.
Кто готов скинутся на разработку? Уверен - многим нужно. Дам 5 000 р. Ещё пару человек по 2 500 р. и исчезнут такие сообщения: "мне б без авторизации". Давайте скидываться!!! Создал топик: http://bezumkin.ru/sections/work/2574/
Tikets + Hybridauth и ненужны никакие анонимные комментарии.
А то сейчас появятся аннонимные комментарии, завтра будут выть что нужно придумать защиту от спама, и тд)
А я правильно понимаю,что сниппет TicketMeta надо вызывать некешированным? (у меня иначе циферки обновляются только вместе с кэшем всей страницы)
Естественно.
А как создавался файл с иконками для редактора editor2x.png? Надо добавить пару своих иконок, но что-то через фотошоп качество теряется без исходника...
Василий, а можно как-нибудь в TicketLatest выводить текст комментария или интро? Может есть какой-то плейсхолдер?
Укажи &tpl=`` и посмотри, что там есть.
Спасибо.
Эх, новую инструкцию по Tickets бы, а то уже очень многое изменилось(
А выводить комментарии тикета по рейтингу возможно?
Как ты себе это представляешь, учитывая древовидную структуру комментариев?
Поизвращавшись с css и jQuery - можно.
Понятно, просто есть страница, где в один уровень дерева выводятся комментарии, и самые важные (плюсованные) нужно выводить выше всех.. Задача такая вот, но думаю можно и без извращений обойтись пока что...
У комментариев есть поле rating - сортируй по нему.
Спасибо - круто! Не подумал сразу, потому что по умолчанию параметра &sortby нету в параметрах сниппета...
Доброго времени суток. Василий подскажи плиз в чем может быть проблема? на одном сайте все ок на другом нет! попытка добавления тикета --> У вас недостаточно прав для этого действия. Группу пользователей создал, указал её в HybridAuth и назначил ей политику доступа TicketUserPolicy. Работает только если в редактирование пользователя поставить неограниченные права. Уже измучился, движок 2.5, развернул на новом хостинге, на старом юзал не я, там не знаю как работает!
Решил проблему созданием собственной политики
А голосовать не за тикеты, а за обычные ресурсы можно?..
TicketsMeta ругается "This resource is not instance of Ticket class", ну это ладно, модифицирую этот сниппет. А какие нибудь еще проблемы будут?...
Будут, с обновлениями будут. Возможно какие то другие скрытые баги будут, индивидуальные только для вас.
Шикарный компонент, Василию огромный респект за его труды!!