[Tickets] Версия 1.6.1-pl Рейтинги пользователей

Представляю вам новую версию Tickets 1.6.0-pl, с системой рейтингов. Она написана в рамках нашей краудфандинговой компании, вот beta версия, а вот rc.

Новые объекты


В этой версии появлсяются 2 новых объекта: TicketAuthor, связанный с modUser, и TicketAuthorAction. Как нетрудно догадаться, первый объект это профиль автора на сайте, куда пишется:
  • Дата создания профиля (регистрация пользователя)
  • Последняя активность
  • Общий рейтинг
  • Количество тикетов
  • Количество комментариев
  • Просмотров
  • Сколько тикетов или комментов автора было добавлено в избранное
  • Сколько было отдано голосов за тикеты и комменты автора

Во втором объекте у нас данные о всех действиях, нужных для расчета рейтинга:
  • id объекта, к которому было применено действие
  • Само действие (ticket, comment, view и т.д.)
  • Владелец объекта (получатель рейтинга)
  • Рейтинг за действие
  • Множитель (нужен для правильного учета голосов и пересчета при смене правил)
  • id тикета, хозяина объекта действия
  • id секции, в которой лежит этот тикет
  • Создатель действия
  • Время действия
  • Год, месяц и день в отдельных столбцах, для удобной выборки
Эти 2 объекта позволяют начислять рейтинги пользователям в зависимости от событий, происходящих на сайте.

Логика работы


У секций тикетов появилась новая вкладка «Рейтинги», в которой можно назначать рейтинг за каждый тип событий.

При изменении этих значений рейтинги событий секции пересчитываются. Я постарался сделать это максимально быстро, например, для пересчета всех событий в нашем блоге «Вопросы» (4353 тикета) потребовалось всего 6.8 сек.

В объекте TicketAuthor есть методы addAction и removeAction, которыми пользуются другие классы при сохранении. Например, при голосовании за тикет создаётся объект TicketVote, который при сохранении получает нужный профиль автора и добавляет в него действие.

Рейтинг автора при добавлении или удалении действий пересчитывается, что позволяет поддерживать его актуальность. Если вдруг случилась внештатная ситуация (кто-то вручную поковырял БД), всегда можно обновить рейтинг автора вот так:
$user = $modx->getObject('modUser', 10);
if ($profile = $user->getOne('AuthorProfile')) {
	print_r($profile->refreshActions());
}

Это удалит все действия, связанные с пользователем, забьёт их в базу повторно и пересчитает итоговые цифры в профиле.

Работа с pdoUsers


Новые профили пользователей можно использовать как своими сниппетами, так и сниппетами pdoTools. Например, вот подключение в pdoUsers и вывод пользователей по рейтингу:
[[!pdoUsers?
	&innerJoin=`{"AuthorProfile":{"class":"TicketAuthor"}}`
	&sortby=`AuthorProfile.rating`
	&sortdir=`DESC`
	&select=`{"AuthorProfile":"*"}`
	&showLog=`1`
]]
Как видите, всё просто и отдельный сниппет для вывода профилей авторов я писать не стал.

Заключение


На данный момент весь код в Tickets прилизан, все страницы админки написаны заново, поправлены все ошибки на GitHub, и добавлена продвинутая система рейтингов.

При изменений правил раздела тикетов рейтинг для него пересчитывается. При перемещении тикета в другой раздел, смене его автора, удалении, публикации — пересчитываются рейтинги, связанные с этим тикетом.

Работа проделана очень приличная, и если вы считаете, что изначально поставленную задачу я несколько перевыполнил — прошу не стесняться.

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

Обновляемся, создаём профили авторов, радуемся рейтингам и пишем отзывы.

Версия 1.6.1-pl


В репозитории уже доступна версия 1.6.1-pl, в которой список рейтингов в профиле значительно расширен.

Вместо суммы голосов и количества избранного в профиле пользователя теперь есть:
  • Общий рейтинг тикетов
  • Общий рейтинг комментов
  • Количество голосов за тикеты (отдельно за и против)
  • Количество голосов за комменты (отдельно за и против)
  • Количество добавлений тикетов в избранное
  • Количество добавлений комментариев в избранное
Таблица TicketAuthor сильно изменилась, поэтому старая таблица версии 1.6.0 будет перезаписана. Конечно, вам нужно сразу обновить рейтинги сайта, для чего я добавил специальную кнопочку в админку, вместо консольного скрипта — должно быть удобно.

Все колонки в таблицу не входят, поэтому вместо заголовков используются иконки + некоторые столбцы скрыты по умолчанию. Но вы можете их включить в меню колонок и это сохранится в куки.

Расшифровка иконок всплывает при наведении мышки. Также title прописан у ячеек с рейтингами.

За столь скорое обновление можно благодарить мистера Сuriosity, который был весьма настойчив.
Василий Наумкин
30 апреля 2015, 09:41
modx.pro
13
15 169
+19

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

Наумов Алексей
29 апреля 2015, 14:06
0
Огогошеньки
    Дмитрий Иванов
    29 апреля 2015, 15:09
    0
    Прекрасно. Огромная работа проделана.
    Еще бы тэги из коробки.
    Не туда ответил(
      Воеводский Михаил
      29 апреля 2015, 15:10
      +3
      Они теперь не нужны. Внимательно прочитайте пост про RC:
      Страницы классов TicketsSection и Ticket расширены гораздо более грамотно, и не мешают подключению сторонних дополнений, типа Tagger. Да-да, вы можете использовать эти теги вместе с Tickets!
    Пашок
    Пашок
    29 апреля 2015, 15:46
    0
    Ништяк, Вась, красава! Премного БлагоДарен!
      Василий Наумкин
      29 апреля 2015, 16:18
      0
      Давно хотел спросить, а зачем ты пишешь заглавную букву Д в слове «благодарю»? Это какой-то секретный знак-только-для-своих?
        Пашок
        Пашок
        29 апреля 2015, 16:24
        0
        Мне так хочется. ;) А вообще понять это не так уж и сложно.
        Не интересно, почему я пишу приставку не «бес», а «без»?)) В слове «безплатный», например…
          Василий Наумкин
          29 апреля 2015, 17:04
          +2
          Ясно, вопросов больше нет.

          Просто мне не хочется, чтобы наше сообщество стало филиалом Вконтакте.
            Пашок
            Пашок
            29 апреля 2015, 17:25
            0
            О каком ещё филиале идёт речь?)) Чес слово долго пытался понять суть твоих слов, однако я наверное не настолько умен, чтобы понять смысл выражения про филиал ВК. =)
              Василий Наумкин
              29 апреля 2015, 17:43
              +3
              Я о том, что у нас здесь сообщество разработчиков сайтов, и средний уровень грамотности должен быть повыше чем на том же Вконтакте.

              Это там все пишут не как в школе учили, а как нравится. Когда я вижу такое здесь — расстраиваюсь.

              Понятное дело, что не все мы ставим верно запятые (и я в том числе), но стараться-то нужно! Зачем коверкать слова специально — понимать отказываюсь.
                Wassi Wassinen
                29 апреля 2015, 17:49
                0
                Это учение о скрытом смысле и подспудном значении слов или их составляющих. Я предполагаю, что приставка «бес» отнесена к чему-то негативному, несущему в себе что-то от лукавого. :) И наоборот — выделение составляющих, которые несут ярко выраженный позитивный окрас — благо дарить и т.д. :) Наверное, подразумевается, что таким образом можно стать лучше. Хотя, не уверен.
                  Пашок
                  Пашок
                  29 апреля 2015, 18:03
                  0
                  Таким образом можно не до конца забыть истинный смысл употребляемых тобой и другими людьми слов…
                    Василий Наумкин
                    29 апреля 2015, 18:33
                    +3
                    Да? А как тогда в устной речи этот бред соблюдать?
                    Менять ударения, или пояснять скрытый смысл собеседнику отдельно, размахивая руками? «Да ты чо, я же не просто спасибо сказал, я тебе благо подарил!»

                    Вот до чего доводит отказ от советской программы в школе и повсеместное ЕГЭ.
                    Пашок
                    Пашок
                    29 апреля 2015, 18:01
                    0
                    А я расстраиваюсь, к примеру, когда вижу текст не по инфо стилю. :)

                    Василий, я не считаю за ошибку это, т.к. подобные нововведения с приставками и другими моментами в русском языке начались относительно недавно. Ещё к концу 19 века люди употребляли приставку «без». И говоря или читая слово «БлагоДарю» человек не всегда ощущает его истинный смысл и силу. Когда я выражаю благодарность, я стараюсь выделить в этом слове то, что я тем самым Дарю Благо тому человеку, который заслужил это.

                    Кто-то может возразить, что наука с каждым годом прогрессирует и всё постоянно меняется, некоторые законы физики, которые были приняты учёными ещё в 50х гг прошлого века в наше время опровергают. Однако язык — это не наука, это наследие предков. Чем сложнее язык, тем он насыщеннее, и тем глубже мыслит человек думающий на этом языке, и напротив — чем примитивнее язык, тем примитивнее мышление на этом языке. А у нас почему-то всеми возможными способами урезают и азбуку, которая отныне алфавит состоящий из 33 букв.

                    P.S.: В школе много чему учили, только почему-то ныне всё чаще убеждаюсь в том, что многое из того либо не пригождается, либо чушь.

                    P.P.S.: Не собираюсь продолжать этот спор ни с тобой, ни с кем-либо другим, поэтому если будут возражения тому, что я здесь написал — не удивляйтесь игнорированию. :)
                      Василий Наумкин
                      29 апреля 2015, 18:24
                      +1
                      Ты меня извини, но это бред.

                      Не даришь ты никакое благо, ты пытаешься выразить свои мысли в письменном виде. Чтобы люди тебя понимали, и не считали за малолетнего дурачка неграмотного, нужно использовать общепринятые нормы и правила русского языка.

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

                      Мы говорим на русском, а не на каком-то новоязе или наречии 19го века. В русском языке принято писать слова без заглавных в середине, и приставки использовать согласно правил, а не как красивее выглядит.

                      У меня накипело, честно.
                        Пашок
                        Пашок
                        29 апреля 2015, 18:44
                        -1
                        Ничего, Вась, выплесни негатив, в себе держать плохого нельзя. :)))))))) К тому-же всегда есть возможность забанить, как ты это любишь делать, правда ведь? :))))
                          Василий Наумкин
                          29 апреля 2015, 18:55
                          +2
                          Больше смайликов, Пашок, больше! Иначе же невозможно понять, что ты шутишь.

                          Детский сад какой-то. Будет за что — отключу, а пока только прошу, по-хорошему, не приносить к нам сюда всякую дурь.
                            Пашок
                            Пашок
                            29 апреля 2015, 19:12
                            -2
                            Я так понимаю твоё «прошу по хорошему» — это требование, за несоблюдение которого ты считаешь себя правым меня забанить? :))) Если так, то отключай прямо сейчас, я не стану соблюдать твои личные требования. Если бы я приносил какой-то вред кому-то — полностью согласен, однако не вижу никаких противоправных действий со своей стороны, поэтому считаю правильным общаться и писать слова так, как мне это по Душе. Если ты не заметил, я тоже уважаю язык, который считаю Родным. Ошибки в словах мне также ломают понимание написанного. Однако если в слове «БлагоДарю» чётко выделяю два слова, из которых оно состоит, то здесь нет никакой ошибки. Ну это лично моё мнение. Ты в праве считать иначе, но общаться меня иначе ты не заставишь никакими «просьбами по-хорошему». ;)

                            P.S.: Или может ты обязуешь всех перед регистрацией в сообществе прочитать, выучить, и пересказать тебе все правила русского языка?)) Ну так, вместо капчи. Как тебе идея? :))) Чтобы не кипело больше ничего там у тебя, а Вась? :))
                            Василий Наумкин
                            29 апреля 2015, 19:19
                            +1
                            Понятно.

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

                            Хотел выделиться — у тебя это получилось, поздравляю.
                            Пашок
                            Пашок
                            29 апреля 2015, 19:27
                            -1
                            А администраторов здесь не отключают, нет? Ну, к примеру, за оскорбления?)))

                            Задели бы меня твои слова, Вась, если б ты являлся для меня человеком уважаемым. :)

                            Я тебя уважаю, как программиста, потому что ты действительно хороший программист. За твои труды не раз выражал тебе БлагоДарность и не постесняюсь выразить снова. Но как человека… увы… не могу проникнуться уважением к тому, кто открыто рекламирует в своём блоге бутылку яда, которую ему прислали в подарок. ;)

                            Считаю прямоту за качество в человеке. Если задели мои слова, значит стоит разобраться в себе.
                            Алексей Карташов
                            30 апреля 2015, 10:22
                            +1
                            Какой же ты тугой
                            Василий Наумкин
                            30 апреля 2015, 11:36
                            0
                            Да это же наш старый знакомый, который уже ярко выступил в моём блоге, за что был заслуженно отключен.

                            Здесь он пока себя держит в руках, но высший разум иногда проскакивает.

                            Взял на заметку.
                            Алексей Карташов
                            30 апреля 2015, 15:54
                            0
                            Вот это поврот! А я б никогда и не вспомнил бы ту ветку диалога, если б не напомнил)
                            Пашок
                            Пашок
                            01 мая 2015, 13:10
                            0
                            А это не прямота, это глупость назвать человека «тугим» без объяснения причин. :) Взгляни в зеркало, может тебя взбесило совсем не это? :)))
                            Алексей Карташов
                            01 мая 2015, 14:50
                            0
                            Эх, ты даже не понимаешь с кем ввязываешься в полемику xD
                            Если ты полезешь «в бутылку», то откроешь ящик Пандоры и к вечеру здесь будут десятки оранжевых квадратиков вместо комментариев)

                            Но да ладно, к сути.
                            Я постараюсь коротко и поэтому приведу такую аналогию.

                            Вот бывают взрослые, а бывают дети. У них совершенно разные уровни компетенции в познании окружающего мира. И вот тогда взрослый в рамках своей компетенции объясняет многие очевидные для себя, но совершенно не очевидные для ребёнка, вещи.

                            Ребёнок может верить на слово, может проверять всё опытным путём, набивая собственные шишки (к примеру засовывать пальцы в розетку), а может (в силу своей неопытности и, чего уж, глупости) забить хер на все рассказы, объяснения и заверения взрослого человека и жить в своём собственном выдуманном мире.

                            И вот объясняешь ты такой этому ребёнку, который ничего слышать не хочет, объясняешь, объясняешь… объясняешь…
                            Но ребёнок не понимает очевидного — его персональное видение фактов окружающего мира не отменяет настоящий смысл этих фактов.
                            Скажу проще — окружающему миру глубоко фиолетово, что красное ребёнок видит зелёным, а оранжевое — серым. Персональное видение конкретной особи не отменяет того, что красное — это красное, а оранжевое — оранжевое.
                            (хотя цвет — это вопрос больше филосовский, но сейчас не об этом)

                            И вот если таким ребёнком никто не занимается, то из него вырастает гуманитарий, «я-художник-я-так-вижу» или (что ещё хуже) либерал.

                            И вот как ты думаешь — как люди, которые понимают (это ключевое слово) некомпетентность маленького ребёнка или такого вот «художника», будут смотреть на них со стороны? Есть варианты?

                            А я тебе скажу — здесь 3 стадии:
                            1. Снисходительность. Тобишь, простыми словами, как на глупенького.
                            2. Снисходительность будет длиться до тех пор, пока такие люди, считая себя самыми умными, не начинают лезть со своим видением в жизнь других, навязывая им это своё видение. Естессна, у людей с более высокой компетенцией ничего кроме раздражения это вызывать не будет.
                            3. Ну и, если эго таких людей не образумилось, ничего, кроме отвращения, они у социума уже не вызывают.

                            (кстати, ничем пида.асов не напоминает? ну тех самых, которые с радужными флагами, всюду выпячивают своё «видение»)

                            И скитается потом этот «художник» по разным социумам и везде проходит эти три стадии. И сидит такой на весь мир обиженный и размышляет — «А чего это все вокруг такие охуевшие? За что они меня так ненавидят?».
                            Но не понимает бедный «художник» причинно-следственной связи, гуманитарий он, всё видит по-своему.
                            Меняет одну работу, вторую — везде его не понимают. До тех пор пока не натыкается на сайт «эха москвы» или не встречает стайку других таких же самопровозглашённых «особенных».
                            Ну дальше вы поняли.


                            Ну и собссна, к чему всё это.
                            Мне кажется это очевидным, но тебе, скорей всего, придётся подсказать — в этой самой аналогии ты тот самый маленький ребёнок, который пошёл по третьему пути, со всеми вытекающими.
                            И вот в этой ветке за пяток комментариев ты прошёл все три стадии. Умудрился же ведь.

                            Но эта аналогия относится больше к тому диалогу.

                            С текущим диалогом всё проще.

                            В разных кругах приняты свои нормы поведения, общения и ведения диалога. Так вот.
                            Тебе говорят — в текущем сообществе ты делаешь что-то, чего в этом сообществе не принято.
                            Но ты ложишь на это хер с высокой колокольни, мотивируя это тем, что «я-так-вижу».
                            Пришёл в сообщество — будь добр соблюдать устоявшиеся здесь нормы общения и поведения. Не хочешь? Ну так тогда не удивляйся, что тебе высказали персональное «фу» на эту тему. А если снова дойдёшь до 3й стадии — не удивляйся, что тебя забанят.
                            Не надо искать проблемы в других. Начни с себя. Это вообще должно быть жизненным кредом.
                            Печально, что такое нужно объяснять.

                            Конечно, все мы люди, где-то не можем сдержать эмоции, где-то грубим. Мои комментарии тоже не раз удалялись. Но я же не говорю, мол, «Вась, с хера ли? Чо, правда глаза режет?». Не говорю, потому что понимаю, что палку перегибал. Но ты же…

                            И да, полемика у тебя отвратительная — прикидываясь белым и пушистым, завуалированно оскорбляешь собеседника, в собственном глазу бельма не замечая.
                            А не пгм'нутый ли ты часом?


                            upd. обидно то, что ты, скорей всего, ничему не внемлишь, а я в очередной раз зря потратил на тебя время. Ну да ладно, раз уж написал — не удалять ведь.
                            Пашок
                            Пашок
                            01 мая 2015, 15:23
                            0
                            Много воды. :) Подобное можно написать в 3 предложениях, если не в 3 словах… :)

                            В спор с тобой вступать не собираюсь, ибо не вижу смысла. Да и в любом споре нет его. Истина рождается в обсуждении. А ты мне предлагаешь вступить в полемику. Я не являюсь особью женского пола, чтобы опускаться до споров. ;) Спорь с кем-нибудь другим, кто более подходит под данный тип.

                            Есть такое психологическое понятие — «Проекции», почитай об этом, может что-то станет понятно. Например, почему некоторые люди (к примеру, «пида.асы», как ты их назвал), тебя раздражают.

                            Про нормы поведения. Я проявил какое-то неуважительное поведение? Если я пишу слово «БлагоДарю» не так, как приятно видеть это Васе — это означает, что я веду себя неуважительно по отношению к данному сообществу? Позволь узнать, а где уважение того, кто лезет в общение между двумя людьми, называя одного из них «тугим»? Я считаю, что подобное поведение граничит с женским настроением в «критические» дни, когда ей что-то не нравится и она ищет любой повод придраться.

                            P.S.: А пример с поведением ребёнка тут неуместен. Любое поведение ребёнка зависит от воспитательного процесса того самого «взрослого», о котором ты упомянул. Поэтому данный пример на мой взгляд не более чем глупость.

                            P.P.S.: И я ни кем не прикидываюсь. Оскорбляю? Да нееет. :) А вот как понимать мои слова — каждый для себя решает сам. Кто-то видит в них оскорбление, кто-то нечто другое.

                            Удачи тебе. Более «срач» в этом топике от моего лица продолжаться не будет. И если ты напишешь мне ответ, велика вероятность того, что он так и останется непрочитанным мною. Да и кто знает, может Василий найдёт повод хоть в этом сообщении заблокировать меня. :))
                            Алексей Карташов
                            01 мая 2015, 15:43
                            0
                            Ну как и предполагалось — я зря потратил время.
                            Ты как считал себя умнее остальных, так и продолжаешь считать. Как ударялся в завуалированные оскорбления прикидываясь белой овечкой, так и продолжаешь.

                            Безнадёга
                            Василий Наумкин
                            01 мая 2015, 16:07
                            0
                            Мне не нужны поводы, я делаю как считаю правильным.

                            Здесь нет демократии, здесь сплошной тоталитаризм. Именно поэтому наше сообщество самое живое и рабочее из всех аналогов.

                            За всё время с 2012 года, вместе с bezumkin.ru я заблокировал 48 учетных записей, включая 2 твоих (одна с email niibaca-nah@почтовыйсервис).

                            Если хочешь, чтобы их стало 49 — продолжай в том же стиле. Показательные расстрелы укрепляют моральных дух коллектива.
                            Пашок
                            Пашок
                            01 мая 2015, 19:45
                            0
                            Будь добр, удали мой email из сообщения. Не хотелось бы, чтобы из-за раздутого Эго кого-либо я страдал от переизбытка спама в одном из своих ящиков. Да и вообще, не красиво это, администратору сайта (которому люди доверяют свои личные данные, которые как правило нужно скрывать), публиковать их. Так все здравомыслящие администраторы делают, кроме мейл.ру, но это другая история. Посему прошу удалить мой ящик из общего доступа. Надеюсь на твоё здравомыслие.
                            Василий Наумкин
                            01 мая 2015, 20:07
                            0
                            В смысле, это реальный ящик — niibaca-nah@почтовыйсервис?

                            И ты нам после этого рассказываешь про силу слов и высокий смысл?

                            Атас!
                            Пашок
                            Пашок
                            01 мая 2015, 20:32
                            0
                            Вась, ты до сих пор не угомонишься?) Ты наверное тоже раньше думал, что мальчики и девочки ничем не отличаются? :) Или ты никогда в жизни ошибок не допускал? Лично моё мнение на этот счёт, что каждый из нас совершает ошибки и впредь время от времени.

                            Я не собираюсь ни перед кем оправдываться, почему по сей день пользуюсь, или зачем вообще создавался такой ящик. Скажу лишь, что ящик создавался в 2004 году, думаю прозрение придёт к здравым самостоятельно без вмешательства моих рассказов о том, какими мыслями я тогда руководствовался и какой образ жизни вёл.

                            Перестань уже искать повод поругаться. Мне это не интересно. БлагоДарю за понимание.
                            Василий Наумкин
                            01 мая 2015, 20:41
                            0
                            Ты или трусы одень, или крестик сними, преподобный. Я просил тебя писать по-русски, но ты не понял.

                            Всего хорошего, благодарю за понимание.
                            Пашок
                            Пашок
                            01 мая 2015, 21:22
                            -1
                            Вась, ну и чего ты этим добился? Из-за личной неприязни заблокировал человека мотивируя это каким-то вымышленным в твоём понимании правильным «русским языком».
                            Вот скажи мне, Вася, кто в таком случае считает себя умнее других («высшим разумом», как ты «гениально» решил меня подколоть), я или ты? Откуда у тебя знание о том, что тот русский язык, которым оперируешь ты, в общении с людьми, правильнее моего, которым оперирую я? Насколько это не личное? Помоему, Василий, вы слишком зазнались и не видите грани между личной неприязнью и нормами поведения.
                            Легко за толщиной экрана проявлять поведение альфа-самца, сидя в одиночестве в комнате, когда на тебя не влияет социум. И куда тяжелее сделать или сказать что-то в глаза человеку при личной встрече. Знакомо?
                            Если тебя так это парило всё это время, то почему ты проявил подобное поведение только сейчас? Я несколько раз произносил в процессе нашей беседы (а как я теперь понимаю, лишь для меня таковой, а для тебя гневным спором с лицом, к которому ты испытываешь личностную неприязнь) слово "БлагоДарю", и только лишь в предыдущем моём сообщении, когда я задел тебя за то, что способно было вывести тебя из себя и проявить твою истинную суть (я про твой эгоизм и моё спокойствие на твой очередной «подкол»), ты «принял» решение меня заблокировать? Как-то не сходится особо, не так ли, Василий?

                            P.S.: Конечно, определённо ты это сообщение удалишь, т.к. не хочешь выглядеть в глазах сообщества тираном или девочкой (на выбор, как тебе больше нравится), и забанишь меня снова (эх, в какой там уже раз, в 4ый? :))), однако тебе тем самым не поменять свою суть, Вася, это делается несколько иначе.

                            P.P.S.: И кстати твою «шутку» про преподобного я не понял. Наверное у меня что-то с чувством юмора, да, Вась?))))
                            Василий Наумкин
                            01 мая 2015, 21:31
                            0
                            Это сообщение оставлю, чтобы всем было понятно кто у нас тут притаился.

                            Остальные удалю, да. Потому что всё происходит именно так, как Алексей выше описал.

                            Будь ты поумнее, просто перестал бы нарываться еще когда с тобой вежливо разговаривали.
                            Это сообщение было удалено
            NikolayNosatov
            01 мая 2015, 19:56
            0
            Добрый вечер!
            Василий как с Вами можно связаться?
            Хочу Вам предложить не бедный проект)
        Wassi Wassinen
        29 апреля 2015, 15:48
        0
        Василий, скажи, а возможно считать очки не только за тикеты? Ты, в свое время, сделал отличную штуку — TicketMeta, которая считала просмотры и тот же рейтинг (оценку пользователями). Можно ли по этому принципу насчитывать рейтинг, например, для товаров miniShop2 или простых страниц?
          Василий Наумкин
          29 апреля 2015, 16:17
          0
          На данный момент — нет.

          Всё очень глубоко завязано на разделы тикетов с их настройками (ты же сам просил, помнишь?), а у товаров настроек нет.
          Но, в теории, наверное, можно научить MS2 через плагины создавать TicketAuthorAction при создании товаров. Может быть, когда-нибудь…

          Пусть сначала рейтинги устаканятся в самих тикетах, как было с голосованием и функционалом только для авторизованных.
            Wassi Wassinen
            29 апреля 2015, 16:35
            0
            Ок. Я, как обычно, готов поддержать материально.

            Спасибо за проделанную работу.
              Wassi Wassinen
              29 апреля 2015, 17:14
              0
              Медаль мне в новом разделе «пользователей» дашь? :))

              Медаль «Медаль».
                Василий Наумкин
                29 апреля 2015, 17:18
                0
                Медалей пока нет, это типа последний этап, который еще толком не обсуждали.

                Да и не думаю, что у нас здесь нужны какие-то медали.
                  Wassi Wassinen
                  29 апреля 2015, 17:22
                  0
                  Это я так. Настроение хорошее. :)
            Alexander V
            29 апреля 2015, 16:50
            0
            Отлично! Василий, я может пропустил этот момент. Интересует возможность использования загрузки файлов/изображений из админки.
            Наумов Алексей
            29 апреля 2015, 17:37
            0
            Эм, а если комментарии добавляются не к тикетам, а просто к ресурсам, они в подсчете рейтинга не участвуют? Это как-то плохо =)))
                Наумов Алексей
                29 апреля 2015, 19:27
                +1
                Не, выше чуть не про то.

                Вот смотри: комментарии можно оставлять не только к тикетам же, так? Почему же не добавлять рейтинг за эти комментарии? Правда придется продублировать очки рейтинга в настройках видимо, т.к. сейчас они только у секции…
                  Василий Наумкин
                  29 апреля 2015, 19:48
                  0
                  Выше именно про то.

                  Стоит только вынести настройки рейтинга в системные — сразу спросят, а как задать отдельно для категории товара или страницы? В ТВ JSON массив указывать или что?

                  Поэтому пока Система рейтингов привязана к тикетам и секциям тикетов намертво. Обкатаем, понаблюдаем, потом что-то придумаем (возможно).
                    Наумов Алексей
                    29 апреля 2015, 19:54
                    0
                    Ок, обкатываем) я уже поставил, хотел вывести рейтинг, да увидел, что на моем сайте есть человек, оставивший 600 комментариев, и ни одного из них у тикетов))) в итоге его рейтинг — 0, хотя на сайте он мегаполезный и активный персонаж))
                      Василий Наумкин
                      29 апреля 2015, 19:58
                      0
                      Технически (технически) это можно сделать. Но заморочка в том, как назначать рейтинг для действий не с тикетами.

                      У них структура постоянна, я знаю как получить настройки. В других случаях вообще не ясно, как брать рейтинг, какова структура разделов, что делать с разными уровнями вложения ресурсов?

                      Пока придумал только подключать отдельный таб для ресурсов с настройками, по типу ms2Gallery, но желания как-то нет.
                        Наумов Алексей
                        29 апреля 2015, 20:12
                        0
                        Думается мне, что может быть такой вариант:
                        1. Основной «источник» настроек очков рейтинга — в системных настройках. Это логично, на то они и настройки. Пусть там же будут и настройки для начисления очков.
                        2. Для тикетов — дополнительная возможность переопределить их через вкладку у секий, как сделано сейчас. Это тоже удобно, т.к. для каждой секции мы указываем ее значимость. К примеру на modx.pro секция Вопросы мало значима, а секция Готовые решения — дает высокий рейтинг.
                        3. Что делать с остальными страницами… действительно, четкого видения нет, либо пусть их настройки будут те, что в п.1 и нечего заморачивться, либо… как ты сказал, например отдельная вкладка. Можно ее показывать для ресурсов с определенным шаблоном или id.

                        Но в принципе пункт 3 можно сделать и потом) а вот почему сразу ты сделал сразу более сложный пункт 2 вместо более простого пункта 1 я не понял =)
                        Сuriosity
                        05 мая 2015, 23:31
                        0
                        Как идея, если рейтинг будет считаться от значений, что указаны в TVпараметрах раздела или ресурса?
                        К примеру, из коробки создаются TVпараметры с уникальными названиями, например:
                        TVrateTickets, TVrateComments, TVrateStars,…
                        В значениях по умолчанию прописать уже какие-то балы.
                        А админ уже сам будет решать, в какие шаблоны включать все эти TVпараметры, а в какие нет. Так же он будет сам решать, какие значения будут в этих TV для каждого раздела или даже ресурса.
                        Ну а подсчет рейтинга всегда будет зависеть от значений в TVrateTickets, TVrateComments, TVrateStars…
                          Василий Наумкин
                          06 мая 2015, 04:19
                          0
                          Я же именно для этого придумал отдельные классы Ticket и TicketsSection, чтобы потом реализовывать их функционал на ТВ параметрах, правда?
                            Сuriosity
                            06 мая 2015, 07:58
                            0
                            ))) Ах ха ха!
                            Комментарий я оставил относительно применения голосования ко всем ресурсам. И всего лишь как вариант… достаточно гибкий вариант…
                            Но, судя по вашему саркастически-стёбному ответу, этот вариант совсем никудышный и совсем не рассматривается.
              Сuriosity
              29 апреля 2015, 18:12
              0
              Василий, супер! Многие этого ждали!

              Подскажите.
              Если мне надо вывести, то, понятно, я вывожу такие плейсхолдеры:
              +votes = количество голосов, которые поставили пользователи
              +comments = Количество комментариев, которые оставил пользователь

              А как вывести количество голосов за комментарии пользователя?
                Василий Наумкин
                29 апреля 2015, 18:26
                0
                Самостоятельно выбрать их из таблицы TicketVote, как и раньше.
                  Сuriosity
                  29 апреля 2015, 19:05
                  +1
                  Василий, пожалуйста, внесите в таблицу tickets_authors, колнку подсчета голосов за комментари.
                  Это ж очень важный пункт, который всегда может пригодится.

                  Вы представьте, если на стрице рейтинга выводить 500 пользователей:
                  Где у каждого будет выводиться:
                  — количество оставленных тикетов;
                  — количество оставленных комментариев;
                  — количество просмотров тикетов пользователя;
                  — количество звезд (кол-во пользовоталей, которые добавили в избранное);
                  — количество голосов за тикеты пользователя;
                  — количество голосов за комментарии пользователя.

                  Одно дело, когда все берется с одной таблицы (все пункты, кроме последнего), и другое дело, когда нужно делать дополнительный запрос к другой таблице (где нужно еще подсчитать… а если таких комментов 1000 у каждого юзера, так вообще жесть).
                  Если вы внесете в табилцу tickets_authors подсчет голосов за комментарии, это решит вопрос многих разработчиков сайтов с элементами соцсети.
                  Василий, я понимаю, что вам далеко не комильфо принимать всякие хотелки, которые под ваши цели не нужны. Но не судите сразу строго. Подумайте, какие возможности это может дать другим, в том числе и вам.
                  Например:
                  можно выводить все эти данные и на основе их составлять свой рейтинг (где одну из ключевых ролей играет и голосование за комментарии пользователя).
                    Василий Наумкин
                    29 апреля 2015, 19:16
                    +1
                    Вот где ты был, когда обсуждали эти рейтинги и скидывались деньгами?

                    а если таких комментов 1000 у каждого юзера, так вообще жесть
                    SELECT COUNT(id) FROM modx_tickets_votes WHERE class = "TicketComment" AND owner = 2;
                    Вместо количества строк можно брать и SUM(value).

                    Пока с тикетами я закончил. Когда соберусь что-то улучшать — не знаю, только багфиксы уже сделанного.
                      Сuriosity
                      29 апреля 2015, 19:17
                      +1
                      я готов заплатить! Хоть сейчас.
                        Сuriosity
                        29 апреля 2015, 19:36
                        +1
                        Василий, пожалуйста, поднажмите еще чуток. Сделайте мою просьбу. И скажите сколько это будет стоить, я сразу отправлю деньги.
                        Вы говорите, что устали. Надеюсь, оплата этого момента (нужного для многих хоть они и сами этого не знают) вас промотивирует…
                          Василий Наумкин
                          29 апреля 2015, 19:50
                          0
                          Хорошо, 5000 рублей, оплатить можно здесь.
                            Сuriosity
                            29 апреля 2015, 21:07
                            +1
                            Василий, вы можете дать прямой номер вашей карты или вебмани счета? Зайдите пожалуйста в на пару минут в скайп.
                            P.S. я не резидент РФ. напрямую с карты не получается. Пей пал — эт какая-то чертовщина, Киви вообще для каких-то умолишенных… а через вебмани тройные комиссии… вначале за конвертацию, потом доходит до третьего лица, а потом третье лицо уже шлет вам… жесть какая-то.
                            P.P.S. Зайдите пожалуйста на пару минут в скайп.
                              Сuriosity
                              29 апреля 2015, 21:18
                              +1
                              Василий, оплатил! Через PayPal
                                Василий Наумкин
                                29 апреля 2015, 21:27
                                0
                                Ну вот, еще одна чертовщина побеждена!

                                Завтра сделаю и выложу обновление.
                                  Сuriosity
                                  29 апреля 2015, 21:40
                                  +2
                                  Супер!
                                  Василий, подводя итоги, просьба:
                                  В таблице tickets_authors добавить:
                                  — подсчет суммы голосов пользователей за тикеты текущего пользователя;
                                  — подсчет суммы голосов пользователей за комментарии текущего пользователя;

                                  В идеале было бы хорошо, если б там же были колонки:
                                  — количество положительных голосов за тикеты текущего пользователя;
                                  — количество отрицательных голосов за тикеты текущего пользователя;
                                  — количество положительных голосов за комментарии текущего пользователя;
                                  — количество отрицательных голосов за комментарии текущего пользователя;
                                  Соостветственно, если будет и возможность фильтровать по этим параметрам в админке, то вообще будет супер…
                                  Можно будет видеть яростных рецидивистов и ангелов проекта…

                                  P.S. Ну и соответствующие плейсхолдеры.
                                  P.P.S. Весело пляшу у рабочего стола…
                                    Василий Наумкин
                                    30 апреля 2015, 12:47
                                    0
                                    Готово, можно обновляться.

                                    Дополнил заметку, см. в конце.
                        Сuriosity
                        29 апреля 2015, 19:12
                        +1
                        К тому же вы написали:
                        Как нетрудно догадаться, первый объект это профиль автора на сайте, куда пишется:
                        Дата создания профиля (регистрация пользователя)
                        Последняя активность

                        Сколько было отдано голосов за тикеты и комменты автора
                        Но в самой таблице отсутствует соответствующий столбец.
                          Василий Наумкин
                          29 апреля 2015, 19:17
                          0
                          Нет, не отсутствует. Там сумма голосов за тикеты и комменты.
                            Сuriosity
                            29 апреля 2015, 19:50
                            +1
                            Оо… вообще не хорошо (
                            Надо разделить:
                            Голоса за посты и голоса за комменты.
                            Так ждал этого релиза, а теперь аж голова бо…
                              Василий Наумкин
                              29 апреля 2015, 19:53
                              0
                              Так ждал, что аж ни слова не сказал, когда деньги собирали.

                              Вот здесь заказчик расписывает план работ. Как видно, я выполнил значительно больше заявленного, а голосов и избранного и вовсе в плане не было — личная инициатива.

                              В общем, ты меня удивляешь.
                                Сuriosity
                                29 апреля 2015, 20:00
                                +1
                                К сожалению, я не видел этих обсуждений. Так бы обязательно принял участие, как финансовое, так и дискуссионное…
                                :(
                      Сергей Шлоков
                      29 апреля 2015, 18:23
                      0
                      Мне кажется было бы удобнее, если бы на вкладе Авторы указывались не логины, а полное имя. Думаю, не многие смогут связать bezumkin с Василием Наумкиным. А уж про остальных вообще молчу — инкогнито.
                        Василий Наумкин
                        29 апреля 2015, 18:31
                        +1
                        Так и задумано — username должен выводиться при пустом fullname, а это просто ошибка.

                        Поправил, обновил пакет и скриншот в заметке.
                      but1head
                      29 апреля 2015, 18:54
                      0
                      Такой вопрос, нет ли у тикетов рейтинга? А точнее больше интересует сортировка тикетов по просмотрам и коментариям.

                      ибо через getTickets нельзя сортировать по tickets и views
                        Василий Наумкин
                        29 апреля 2015, 18:58
                        0
                        Присоединяй таблицы TicketVote, TicketView — и сортируй по ним.

                        Изначально это было из коробки, но убрал из-за тормозов.
                          but1head
                          29 апреля 2015, 19:00
                          0
                          можно ткнуть носом на пример такой сортировки (или на тигхабе старенькую версию)? как я понимаю что-то вроде этого в getTickets?
                          // Adding fields to row
                          		$additional_fields = $pdoFetch->getObject('Ticket', $row['id'], array(
                          			'leftJoin' => array(
                          				'View' => array('class' => 'TicketView', 'on' => '`Ticket`.`id` = `View`.`parent`'),
                          				'LastView' => array('class' => 'TicketView', 'on' => '`Ticket`.`id` = `LastView`.`parent` AND `LastView`.`uid` != 0 AND `LastView`.`uid` = '.$modx->user->id),
                          				'Thread' => array('class' => 'TicketThread', 'on' => '`Thread`.`resource` = `Ticket`.`id`  AND `Thread`.`deleted` = 0'),
                          			),
                          			'select' => array(
                          				'View' => 'COUNT(`View`.`parent`) as `views`',
                          				'LastView' => '`LastView`.`timestamp` as `new_comments`',
                          				'Thread' => '`Thread`.`id` as `thread`',
                          			),
                          			'groupby' => $class.'.id'
                          		));
                          		$row = array_merge($row, $additional_fields);
                            Ivan Shvindin
                            29 апреля 2015, 23:29
                            1
                            +1
                            вот
                            [[getTickets?
                              &loadModels=`ms2gallery`
                              &leftJoin=`{
                                "520x360": {"class":"msResourceFile","alias":"520x360", "on": "520x360.resource_id = Ticket.id AND 520x360.path LIKE '%/520x360/' AND 520x360.rank=0"},
                                "View": {"class":"TicketView","alias":"View", "on": "Ticket.id = View.parent"}
                              }`
                              &select=`{
                                "Ticket":"*",
                                "520x360":"520x360.url as 520x360",
                                "View": "COUNT(View.parent) as views"
                              }`
                              &groupby=`Ticket.id`
                              &sortby=`views`
                              &includeOriginal=`1`
                              &showLog=`0`
                            ]]
                              but1head
                              30 апреля 2015, 13:44
                              0
                              спасибо! Просто с getTickets работает, а вот с mfilter нет…
                        Наумов Алексей
                        29 апреля 2015, 20:15
                        0
                        Небольшое замечание — в сводной таблице всех тикетов в колонке Комментарии у меня везде нули, хотя комментарии есть.
                          Василий Наумкин
                          29 апреля 2015, 20:24
                          0
                          См. обновление заметки.
                            Наумов Алексей
                            29 апреля 2015, 20:29
                            0
                            Таблицу удалил, обновился, пересчитал все, а тут все равно нули:
                              Василий Наумкин
                              29 апреля 2015, 20:36
                              0
                              А, ты вон про что. У нас всё ок:

                              В процессоре присоединяется TicketThread через колонку resource и там уже получаются комментарии.
                                Наумов Алексей
                                30 апреля 2015, 08:47
                                0
                                Чего то вообще не пойму в чем дело.
                                В процессоре в методе prepareQueryBeforeCount формируется верный запрос, и при его выполнении в pma комментарии считаются, а в prepareRow уже поле comments равно 0. Странная ситуация.
                                  Василий Наумкин
                                  30 апреля 2015, 08:53
                                  0
                                  Там комменты не считаются, они выбираются из колонки comments таблицы TicketThread.

                                  Проверь, может у тебя туда ничего не пишется? Или структура таблицы неверная?
                                    Наумов Алексей
                                    30 апреля 2015, 08:58
                                    0
                                    В конце метода prepareQueryBeforeCount процессора TicketGetListProcessor добавляю:

                                    $c->prepare();
                                    echo $c->toSql();
                                    die;
                                    в инструментах разработчика браузера при обновлении списка в админке получаю запрос:
                                    SELECT `Ticket`.`id`, `Ticket`.`type`, `Ticket`.`contentType`, `Ticket`.`pagetitle`, `Ticket`.`longtitle`, `Ticket`.`description`, `Ticket`.`alias`, `Ticket`.`link_attributes`, `Ticket`.`published`, `Ticket`.`pub_date`, `Ticket`.`unpub_date`, `Ticket`.`parent`, `Ticket`.`isfolder`, `Ticket`.`introtext`, `Ticket`.`content`, `Ticket`.`richtext`, `Ticket`.`template`, `Ticket`.`menuindex`, `Ticket`.`searchable`, `Ticket`.`cacheable`, `Ticket`.`createdby`, `Ticket`.`createdon`, `Ticket`.`editedby`, `Ticket`.`editedon`, `Ticket`.`deleted`, `Ticket`.`deletedon`, `Ticket`.`deletedby`, `Ticket`.`publishedon`, `Ticket`.`publishedby`, `Ticket`.`menutitle`, `Ticket`.`donthit`, `Ticket`.`privateweb`, `Ticket`.`privatemgr`, `Ticket`.`content_dispo`, `Ticket`.`hidemenu`, `Ticket`.`class_key`, `Ticket`.`context_key`, `Ticket`.`content_type`, `Ticket`.`uri`, `Ticket`.`uri_override`, `Ticket`.`hide_children_in_tree`, `Ticket`.`show_in_tree`, `Ticket`.`properties`, CreatedBy.username AS username, UserProfile.fullname AS author, Thread.comments AS comments, Parent.id AS section_id, Parent.pagetitle AS section FROM `modx_site_content` AS `Ticket` LEFT JOIN `modx_users` `CreatedBy` ON `Ticket`.`createdby` = `CreatedBy`.`id` LEFT JOIN `modx_user_attributes` `UserProfile` ON UserProfile.internalKey = Ticket.createdby LEFT JOIN `modx_tickets_threads` `Thread` ON Thread.resource = Ticket.id LEFT JOIN `modx_site_content` `Parent` ON `Ticket`.`parent` = `Parent`.`id` WHERE `Ticket`.`class_key` = 'Ticket'
                                    Иду с ним в phpMyAdmin — все ок, колонка comments есть, цифры в ней есть.

                                    А куда они потом пропадают — не пойму. Хотя уже 100 раз код сам проверил, вроде все в порядке.
                          Александр Наумов
                          29 апреля 2015, 20:33
                          0
                          Класс!!!
                          Василий, а может здесь на modx.pro cделать виджет по типу «Прямой эфир», который будет выводить ежемесячную статистику?
                            Василий Наумкин
                            29 апреля 2015, 20:38
                            0
                            Для этого ежемесячную статистику нужно сначала сделать. Создать такую таблицу и написать скрипт для ей забивки по расписанию из TicketAuthorAction.

                            Это последний этап твоего плана, мы его оставим на потом.
                            Наумов Алексей
                            29 апреля 2015, 20:41
                            0
                            Чет у меня благополучно таблица modx_tickets_votes удалилась и более не создается при переустановке компонента))) сайт соответственно не работает)) огонь)))
                              Василий Наумкин
                              29 апреля 2015, 20:45
                              0
                              Да это жесть уже какая-то пошла, от усталости. Заменил пакет на pl3, прости пожалуйста.

                              Бэкапы есть? Если сайт у нас на хостинге — скажи, я восстановлю только эту таблицу.
                                Наумов Алексей
                                29 апреля 2015, 20:46
                                0
                                Иди отдыхать))) Хорошо, что это просто любительский проект, восстановлюсь как нибудь!
                                  Василий Наумкин
                                  29 апреля 2015, 20:49
                                  0
                                  Скажи тогда всем, что в честь великого праздника мира и труда, сайт провёл генеральную уборку оценок!
                            Александр
                            30 апреля 2015, 05:34
                            +1
                            Отлично!!! Большое спасибо за Ваши труды )
                              Павел Левин
                              30 апреля 2015, 13:54
                              +1
                              Все приплыли какл замутил отзывы о продукте за 600 рублей -___- за месяц!
                                Александр Семенов
                                30 апреля 2015, 14:50
                                0
                                Покажите, пожалуйста, свои работы с Tickets.
                                Более всего интересно посмотреть на профессиональные сообщества, наподобие modx.pro.
                                  Наумов Алексей
                                  30 апреля 2015, 14:51
                                  1
                                  +6
                                    Василий Наумкин
                                    30 апреля 2015, 16:53
                                    0
                                    Прям натуральный форум — прикольно!

                                    Осталось только плоский режим комментариев сделать и вообще будет не отличить.
                                      De Ribaskin
                                      01 мая 2015, 13:24
                                      0
                                      Понравился сайт :)
                                      Хорошо сделан.
                                        Jury
                                        06 мая 2015, 10:28
                                        0
                                        Отличный сайт, а чем карту водоёмов делали?
                                          Наумов Алексей
                                          06 мая 2015, 10:42
                                          0
                                          Спасибо! На фронтенде ручками все, ручками. А в админке координаты водоемов через Mapex добавляю.
                                            Jury
                                            06 мая 2015, 10:43
                                            0
                                            Спасибо
                                          Сергей Лим
                                          13 января 2016, 05:07
                                          0
                                          Подскажи пожалуйста, с помощью чего форум реализован?
                                            Наумов Алексей
                                            13 января 2016, 10:57
                                            0
                                            Это Tickets, просто сильно переделан вывод внешнего вида… Хотя ядро Tickets не менялось.
                                        Саша Пекшев
                                        30 апреля 2015, 20:33
                                        0
                                        обновил с 1.5.1 — до 1.6.1, теперь белый экран в backend когда в раздел Тикеты захожу. логах modx пусто
                                        Саша Пекшев
                                        30 апреля 2015, 22:10
                                        0
                                        Обновление авторов вот как то не совсем работает, обновил — пользователи появились, а вот остальное все по «0» или "-", у меня правда тикетов нету все modResource — просто комменты и лайки к ним, может из-за этого? и в таблице modx_tickets_author_actions — пусто и при лайках и при рефреш рейтинга
                                        Wassi Wassinen
                                        01 мая 2015, 03:00
                                        0
                                        Василий, ты жжешь! Прочитал последние комменты — отличные изменения. Если хватит сил — подумай над аналогом тикетМета для рейтинга (подсчет для любых ресурсов). Не уверен, но подозреваю, что мы наберем интересную тебе сумму)
                                          Василий Наумкин
                                          01 мая 2015, 08:25
                                          0
                                          Первая проблема в том, что негде хранить настройки для расчёта рейтинга разделов. Могу предложить только системные настройки, которые будут одинаковы для всех страниц контекста.

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

                                          А третья проблема в том, что при смене создателя документа или переносе в другой раздел, в классе Ticket делаются проверки и рейтинг пересчитывается. Как это делать с обычным ресурсом — непонятно. Через системный плагин только.

                                          В общем, получается какой-то бред. Я же не просто так сделал классы Ticket и TicketsSection. Явно не для того, чтобы потом весь их функционал пихать в ресурсы, только через, пардон, задний проход.
                                            Наумов Алексей
                                            01 мая 2015, 09:21
                                            +1
                                            Кстати, я тут подумал, на примере моего сайта.
                                            Считать рейтинг за создание modResource и за плюсы к ним совсем не нужно, ведь их администратор добавляет, а не пользователи. Много ли ситуаций, когда ресурсы-не тикеты добавляют пользователи?..

                                            Остаются тогда только действия добавления комментария, голос за комментарий, добавление в избранное.

                                            Может только эти действия считать тогда у НЕ тикетов?
                                              Василий Наумкин
                                              01 мая 2015, 09:27
                                              +3
                                              Если так, то да — можно. Нет никаких действий с авторством тикета и его разделом — нет и проблем.

                                              Тогда общие системные настройки для всех комментов, просмотров и избранного, индивидуальные для тикетов и их разделов. Готов сделать за еще 5000 рублей.
                                        Андрей Копп
                                        01 мая 2015, 16:59
                                        0
                                        После обновления и установки компонента на главной пропал вывод всех тикетов и вместо этого появилась форма добавления тикета. В шаблоне стоит вывод такой:

                                        <div id="tickets-wrapper">
                                        								<div id="tickets-rows">
                                        									[[!pdoPage?
                                        										&element=`getTickets`
                                        										&parents=`2`
                                        										&ajax=`1`
                                        									]]
                                        								</div>
                                        								[[!+page.nav]]
                                        							</div>
                                          Андрей Копп
                                          01 мая 2015, 17:27
                                          0
                                          Нашёл проблему. Оказалось такое странное поведение вызвано установленным компонентом PayAndSee.
                                          Сuriosity
                                          01 мая 2015, 19:47
                                          0
                                          Василий, ОГРОНОМНОЕ спасибо за качество и оперативность! Теперь Tickets — стал еще лучше и теперь может составлять серьезную основу для сайтов социально направленности на modx! Еще раз большое спасибо!

                                          P.S. Видел еще вчера, но был настолько занят, что не мог добраться к комментированию этой хорошей новости! Но, как говорится, лучше поздно, чем никогда…
                                            Василий Наумкин
                                            01 мая 2015, 20:09
                                            0
                                            На здоровье!
                                              Сuriosity
                                              01 мая 2015, 20:16
                                              0
                                              Василий, у меня еще одна маленькая просьба…
                                              Дело в том, что я пока не программист, а потому для меня это вопрос, пока сложный. Но логически понимаю, что дело в нескольких не сложных строчках нового сниппета.
                                              Вот так я вывожу рейтинг списка пользователей с цифрами их заслуг:
                                              [[!pdoUsers?
                                              &tpl=`tpl_rating_users`
                                              &innerJoin=`{"AuthorProfile":{"class":"TicketAuthor"}}`
                                              &sortby=`AuthorProfile.rating`
                                              &sortdir=`DESC`
                                              &select=`{"AuthorProfile":"*"}`
                                              &showLog=`1`
                                              ]]
                                              В чанеке «tpl_rating_users» соответственно оформление выводов строк.

                                              Теперь, собственно, просьба
                                              Мне нужен сниппет, который должен давать два плейсхолдера:
                                              1) maxticketsvote — выводит максимальное значение из массива общего рейтинга тикетов.
                                              2) maxcommvote — выводит максимальное значение из массива общего рейтинга комментариев.

                                              Пример:
                                              Петрову дали = 10 голосов за его тикеты и 5 голосов за его комменты.
                                              Сидорову дали = 5 голосов за его тикеты и 10 голосов за его комменты.
                                              Иванову дали = 12 голосов за его тикеты и 9 голосов за его комменты.
                                              Результат сниппета:
                                              1) maxticketsvote = 12
                                              2) maxcommvote = 10
                                              Василий, пожалуйста, подарите этот сниппет вашему доброжелателю. :)
                                                Василий Наумкин
                                                01 мая 2015, 20:31
                                                2
                                                +1
                                                <?php
                                                $pls = array();
                                                
                                                $c = $modx->newQuery('TicketAuthor');
                                                $c->select('MAX(votes_tickets_up + votes_tickets_down)');
                                                if ($c->prepare() && $c->stmt->execute()) {
                                                	$pls['maxticketsvote'] = $c->stmt->fetchColumn();
                                                }
                                                
                                                $c = $modx->newQuery('TicketAuthor');
                                                $c->select('MAX(votes_comments_up + votes_comments_down)');
                                                if ($c->prepare() && $c->stmt->execute()) {
                                                	$pls['maxcommvote'] = $c->stmt->fetchColumn();
                                                }
                                                
                                                $modx->setPlaceholders($pls);

                                                После вызова можно использовать плейсхолдеры
                                                [[+maxticketsvote]] и [[+maxcommvote]]
                                                  Сuriosity
                                                  01 мая 2015, 21:00
                                                  0
                                                  Василий, еще раз СПАСИБО!
                                                  Единственное, поправьте немного ваш ответ… в
                                                  $c->select('MAX(votes_comments_up + votes_comments_down)');
                                                  скорей всего нужно не складывать, а вычитать… потому как в таблице БД только положительные цифры…
                                                  тоесть должно быть так:
                                                  $pls = array();
                                                  
                                                  $c = $modx->newQuery('TicketAuthor');
                                                  $c->select('MAX(votes_tickets_up - votes_tickets_down)');
                                                  if ($c->prepare() && $c->stmt->execute()) {
                                                  	$pls['maxticketsvote'] = $c->stmt->fetchColumn();
                                                  }
                                                  
                                                  $c = $modx->newQuery('TicketAuthor');
                                                  $c->select('MAX(votes_comments_up - votes_comments_down)');
                                                  if ($c->prepare() && $c->stmt->execute()) {
                                                  	$pls['maxcommvote'] = $c->stmt->fetchColumn();
                                                  }
                                                  
                                                  $modx->setPlaceholders($pls);
                                                  Поправьте меня, если ошибаюсь…
                                                    Василий Наумкин
                                                    01 мая 2015, 21:23
                                                    0
                                                    Если нужно количество голосов, то нужно складывать отрицательные и положительные голоса.

                                                    Если нужна сумма голосов, то можно выбрать MAX(vote_tickets) и MAX(vote_comments) — это и есть суммы рейтинга.

                                                      Сuriosity
                                                      01 мая 2015, 21:50
                                                      0
                                                      Всё понял, спасиб!
                                                        Сuriosity
                                                        01 мая 2015, 23:12
                                                        0
                                                        Василий, я опять в замешательстве…
                                                        Пожалуйста, подскажите.
                                                        Я вызываю два сниппета:
                                                        1-й — тот, что вы написали чуть выше (находит максимальное значение в массиве голосов за тикеты и комменты). Он дает мне два значения: [[+maxticketsvote]] и [[+maxcommvote]]
                                                        и
                                                        2-й сниппет:
                                                        [[!pdoUsers?
                                                        &tpl=`tpl_rating_users`
                                                        &innerJoin=`{"AuthorProfile":{"class":"TicketAuthor"}}`
                                                        &sortby=`AuthorProfile.rating`
                                                        &sortdir=`DESC`
                                                        &select=`{"AuthorProfile":"*"}`
                                                        &showLog=`1`
                                                        ]]
                                                        Мне нужно, чтоб при выводе результатов сниппета pdoUsers, помимо всех его плейсхолдеров выводилося плейсхолдер, например: «ticketprocent».

                                                        Моя задача:
                                                        Голоса за тикеты = [[+votes_tickets]] = X;
                                                        Максимальное значение голоса за тикеты = [[+maxticketsvote]] = Y
                                                        Плейсхолдер [[+ticketprocent]] = Z = X / Y *100;

                                                        Василий, благодаря вашему ответу, я уже понял, как сниппетом создать свой плейсхолдер и, более-менее, понял, как делать выборку из нужной мне таблицы БД. Как написать на php формулу подсчета плейсхолдера [[+ticketprocent]] я тоже знаю.
                                                        Мое замешательство в том, какой мой порядок действий? Куда мне нужно вписать несколько строк кода, который создаст плейсхолдер Z, который будет выводить: X / Y *100? Или как я могу в выдаче pdoUsers делать какие-то математические манипуляции с плейсхолдерами? Может все гораздо проще и я захожу не с той стороны…
                                                        Если коротко, то мне, вызывая pdoUsers, нужно получить результат:
                                                        — Пользователь Петров получил: 10 балов за тикеты, что составляет Z процентов;
                                                        — Пользователь Иванов получил: 8 балов за тикеты, что составляет Z процентов;
                                                        — Пользователь Сидоров получил: 5 балов за тикеты, что составляет Z процентов.
                                                        Соответственное, если в массиве максимальное значение =10, то вместо Z было бы: 100, 80, 50.
                                                        Пожалуйста, помогите мистеру Сuriosity.
                                                          Сuriosity
                                                          02 мая 2015, 00:53
                                                          0
                                                          Решил вопрос тем, что формулу Z = X / Y *100 запихнул в третий сниппет.
                                                          А вызов этого третьего сниппета вставил в шаблон вывода сниппета pdoUsers.
                                                          Пока не знаю насколько это оптимально, но главное, что работает…

                                                          P.S. На самом деле я сделал так изначально, но результат выдывало = 0;
                                                          Оказалось, что я не внимательно прописал один плейсхолдер pdoUsers.
                                                            Сuriosity
                                                            02 мая 2015, 06:43
                                                            0
                                                            Василий, пожалуйста подскажите. Можно ли сортировать выдачу pdoUsers по плейсхолдеру стороннего сниппета?
                                                            [[!pdoUsers? &tpl=`tpl_rating_users` …]]
                                                            У меня в чанке tpl_rating_users вызывается еще один сниппет (VoteProcent), который, например, умножает один плейсхолдер выданый pdoUsers на другой, после чего выдает свой плейсхолдер [[+ticketprocent]].
                                                            Как мне, вызывая pdoUsers, сделать сортировку выдачи по плейсхолдеру [[+ticketprocent]]?
                                                              Василий Наумкин
                                                              02 мая 2015, 07:37
                                                              0
                                                              Можно ли сортировать выдачу pdoUsers по плейсхолдеру стороннего сниппета?
                                                              Нет, нельзя.

                                                              Сортировка происходит в базе данных при выборке результатов, а сторонний сниппет работает уже позже, оформляя данные.
                                                  De Ribaskin
                                                  02 мая 2015, 00:31
                                                  0
                                                  Василий, маленький баг: [[+stars_tickets]] возвращает на 1 меньше чем есть на самом деле.
                                                    Василий Наумкин
                                                    02 мая 2015, 06:23
                                                    0
                                                    Скорее просто у тебя один тикет удалён или неопубликован.
                                                      De Ribaskin
                                                      02 мая 2015, 09:10
                                                      1
                                                      0
                                                      Может делаю что неправильно…
                                                      В плагине
                                                      $user = $modx->getObject('modUser', $userid);
                                                      		$profile = $user->getOne('Profile');
                                                      		$tickets_profile = $user->getOne('AuthorProfile');
                                                      		$userArray = array_merge($user->toArray(),$profile->toArray(),$tickets_profile->toArray());
                                                      		$modx->toPlaceholders($userArray,'user');
                                                      В документе
                                                      <div class="tab-content user-page">
                                                      	<div class="tab-pane fade in active">
                                                      		
                                                      		<div class="pills">
                                                      			<span class="active">
                                                      				<a href="users/[[!+user.id]]/favorites/">Заметки</a>
                                                      				<sup>([[!+user.stars_tickets]])</sup>
                                                      			</span>
                                                      			<span>
                                                      				<a href="users/[[!+user.id]]/favorites/comments/">Комментарии</a>
                                                      				<sup>([[!+user.stars_comments]])</sup>
                                                      			</span>
                                                      		</div>
                                                      		[[!pdoPage?
                                                      			&element=`getStars`
                                                      			&class=`Ticket`
                                                      			&user=`[[!+user.id]]`
                                                      			&tpl=`my.tpl.Tickets.list.row.userprofile`
                                                      		]]
                                                      		[[!+page.nav]]
                                                      	</div>
                                                      </div>
                                                      Количество выводящихся тикетов всегда больше чем значение в плейсхолдере, иногда на много.

                                                        De Ribaskin
                                                        02 мая 2015, 10:48
                                                        0
                                                        Посмотрел в БД — значения колонок(stars_tickets, stars_comments) таблицы tickets_authors не соответствует тому что содержится в таблице tickets_stars.
                                                        И в админке на вкладке авторы тоже не верные данные выводятся.
                                                          Василий Наумкин
                                                          02 мая 2015, 11:36
                                                          0
                                                          Выше уже обсуждали, что рейтинги работают только с тикетами и комментариями к ним. Обычные ресурсы пока не поддерживаются, данные для них не учитываются.

                                                          У нас здесь всё считается точно, насколько я вижу.
                                                            De Ribaskin
                                                            02 мая 2015, 12:13
                                                            0
                                                            Это я читал и понял. У меня только тикеты и комментарии к ним.

                                                            По данным таблицы tickets_authors — такое ощущение что данные в колонках stars_tickets и stars_comments заполняются не по столбцу createdby таблицы tickets_stars, а по столбцу owner той же таблицы.

                                                            Василий, где то есть ошибка.
                                                              Василий Наумкин
                                                              02 мая 2015, 12:17
                                                              1
                                                              0
                                                              Естественно. Добавления избранного считается автору того, что добавили, а не тому, кто добавил.

                                                              Ты бы заметку то прочитал, там это написано:
                                                              • Количество тикетов
                                                              • Количество комментариев
                                                              • Просмотров
                                                              • Сколько тикетов или комментов автора было добавлено в избранное
                                                              • Сколько было отдано голосов за тикеты и комменты автора
                                                      Alexander V
                                                      02 мая 2015, 13:32
                                                      -2
                                                      Было бы неплохо сделать настройку в тикете, о запрете комментировать. Понимаю, что это можно решить шаблоном, но тем не менее…
                                                        Ivan Shvindin
                                                        02 мая 2015, 14:07
                                                        0
                                                        можно закрыть ветвь
                                                          Alexander V
                                                          03 мая 2015, 09:28
                                                          -2
                                                          Да вы что? А если запись не предполагает комментирование? Остаётся только менять шаблон.
                                                          Кстати, попробуйте закрыть ветвь в которой нет комментариев.
                                                            Василий Наумкин
                                                            03 мая 2015, 09:48
                                                            +1
                                                            А почему у записей с комментирование и без комментирования один шаблон? Шаблоны экономим, или что?

                                                            Ну сделай тогда ТВ параметр disable_comments:
                                                            [[[[*disable_comments:isnot=`1`:then=`TicketCommenst@MyParams`]]]]
                                                              Alexander V
                                                              03 мая 2015, 10:00
                                                              -1
                                                              Я бы не говорил об этом, если бы это было документировано. По-моему, это только усложняет всю разработку. У любого подобного компонента эта настройка есть, как само-собой разумеющееся.
                                                                Василий Наумкин
                                                                03 мая 2015, 10:54
                                                                0
                                                                Ну так используй этот любой подобный компонент, с мега-настройками.

                                                                Зачем тебе кривобокий Tickets, где нет важнейшей функции, которая за 2.5 года его существования, вдруг оказалась необходимой только тебе?

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

                                                                Нет желания? Ну так и у меня нет, уже давно надоело жилы рвать ради неблагодарности.
                                                                  Alexander V
                                                                  03 мая 2015, 10:58
                                                                  0
                                                                  Что за манера дерзить? Неужели попроще быть нельзя?
                                                                    Василий Наумкин
                                                                    03 мая 2015, 11:04
                                                                    0
                                                                    Пока что здесь дерзишь только ты.

                                                                    Слабо назвать дополнения для блогов и комментариев MODX с требуемой тобой настройкой?
                                                        Михаил
                                                        03 мая 2015, 12:46
                                                        0
                                                        Здравствуйте, Василий!

                                                        Подскажите, пожалуйста, что не так у меня в настройках комментариев Tickets.
                                                        Не работает предпросмотр и комментарии не отправляются.

                                                        Журнал ошибок (я, пока, не понимаю, как разобраться какие тут ошибки):
                                                        [2015-05-03 03:51:06] (ERROR @ /index.php) `[[*id` is not a valid integer and may not be passed to makeUrl()
                                                        [2015-05-03 03:51:06] (ERROR @ /index.php) #0 /home/user/www/site/core/model/modx/modparser.class.php(1330): modX->makeUrl('[[*id', '', '', '-1', Array)
                                                        #1 /home/user/www/site/core/model/modx/modparser.class.php(476): modLinkTag->process(NULL)
                                                        #2 /home/user/www/site/core/model/modx/modparser.class.php(247): modParser->processTag(Array, false)
                                                        #3 /home/user/www/site/core/model/modx/modparser.class.php(259): modParser->processElementTags('[[$?id=`10`&nam...', '<figure class="...', false, false, '[[', ']]', Array, 9)
                                                        #4 /home/user/www/site/core/model/modx/modchunk.class.php(118): modParser->processElementTags('[[$?id=`10`&nam...', '<figure class="...', false, false, '[[', ']]', Array, 10)
                                                        #5 /home/user/www/site/core/components/gallery/model/gallery/gallery.class.php(174): modChunk->process(Array)
                                                        #6 /home/user/www/site/core/cache/includes/elements/modsnippet/30.include.cache.php(156): Gallery->getChunk('galItemThumbTpl', Array)
                                                        #7 /home/user/www/site/core/model/modx/modscript.class.php(70): include('/home/user11912...')
                                                        #8 /home/user/www/site/core/model/modx/modparser.class.php(513): modScript->process('&album=`???????...')
                                                        #9 /home/user/www/site/core/model/modx/modparser.class.php(247): modParser->processTag(Array, false)
                                                        #10 /home/user/www/site/core/model/modx/modtemplate.class.php(120): modParser->processElementTags('[[]]', '<!DOCTYPE html>...', false, false, '[[', ']]', Array, 10)
                                                        #11 /home/user/www/site/core/model/modx/modresource.class.php(446): modTemplate->process()
                                                        #12 /home/user/www/site/core/model/modx/modresponse.class.php(75): modResource->process()
                                                        #13 /home/user/www/site/core/model/modx/modrequest.class.php(145): modResponse->outputContent(Array)
                                                        #14 /home/user/www/site/core/model/modx/modrequest.class.php(129): modRequest->prepareResponse()
                                                        #15 /home/user/www/site/core/model/modx/modx.class.php(1412): modRequest->handleRequest()
                                                        #16 /home/user/www/site/index.php(69): modX->handleRequest()
                                                        #17 {main}
                                                          Василий Наумкин
                                                          03 мая 2015, 14:34
                                                          +1
                                                          Не работает предпросмотр и комментарии не отправляются.
                                                          jQuery подключи.
                                                            Михаил
                                                            03 мая 2015, 17:25
                                                            0
                                                            Спасибо!
                                                            Всё заработало.
                                                          Сuriosity
                                                          05 мая 2015, 20:51
                                                          0
                                                          Василий, пожалуйста, подскажите, как в панели статистик, что под каждым тикетом, кроме всего прочего, вывести плейсхолдеры:
                                                          — рейтинг автора;
                                                          — количество лайков за посты автора;
                                                          — количество добавленных им в избранное;
                                                          — в общем те значения, что находятся в таблице tickets_authors.

                                                          Интересует, чтоб выводило в панелях как в общей ленте. Вызывая, например, так:
                                                          [[!pdoPage? &element=`getTickets` &tpl=`tpl_Tickets.list.row`]]

                                                          Так и в панели по самим тикетом. Вызывая, например, так:
                                                          [[!TicketMeta? &tpl=`tpl_Tickets.meta`]]

                                                          Вопрос, можно ли в вызове этих сниппетов, прописать какой-то параметр, который будет делать дополнительную выборку в таблице tickets_authors и отдавать соответствующие плейсхолдеры?
                                                          Если нет, то как оптимально это реализовать?
                                                            Сuriosity
                                                            05 мая 2015, 21:24
                                                            0
                                                            Как вариант.
                                                            Можно, если хочу вывести ленту тикетов, при вызове [[!pdoPage? &element=`getTickets` &tpl=`tpl_Tickets.list.row`]]
                                                            Использовать в шаблоне tpl_Tickets.list.row вызов еще одного сниппета
                                                            [[!pdoUsers?
                                                            &tpl=`tpl-user-meta-info`
                                                            &groups=`users`
                                                            &users=`-1,[[*createdby:userinfo=`id`]]`
                                                            &innerJoin=`{«AuthorProfile»:{«class»:«TicketAuthor»}}`
                                                            &sortby=`AuthorProfile.rating`
                                                            &sortdir=`DESC`
                                                            &select=`{«AuthorProfile»:"*"}`
                                                            ]]

                                                            А если зайти на сам тикет, то под контентом вызвать не только [[!TicketMeta? &tpl=`tpl_Tickets.meta`]]
                                                            , а еще и pdoUsers.

                                                            Но, думается мне, это как-то уж совсем не оптимально…

                                                            Василий, подскажите как быть, направьте на правильный путь…
                                                              Сuriosity
                                                              05 мая 2015, 22:43
                                                              0
                                                              Я так понял, сейчас получается, что таблица tickets_authors есть, но в сниппетах getTickets и TicketMeta не прописано к ней обращения и соответственно нет плейсхолдеров.
                                                              Если это так, то, возможно, стоит внести изменения?)
                                                              Это было бы логично, чтоб в панели под тикетами были не только: количество просмотров, количество голосов и звезд, но и рейтинг пользователя…
                                                                Василий Наумкин
                                                                06 мая 2015, 04:17
                                                                0
                                                                Это было бы логично, чтоб в панели под тикетами были не только: количество просмотров, количество голосов и звезд, но и рейтинг пользователя…
                                                                Я так не считаю.
                                                                  Сuriosity
                                                                  06 мая 2015, 08:03
                                                                  0
                                                                  Взять хотяб хабр… Ну да ладно, на вкус и цвет…

                                                                  Василий, подскажите, как оптимальней реализовать вопрос, что чуть выше?
                                                                  Василий, пожалуйста, подскажите, как в панели статистик, что под каждым тикетом, кроме всего прочего, вывести плейсхолдеры:
                                                                  — рейтинг автора;
                                                                  — количество лайков за посты автора;
                                                                  — количество добавленных им в избранное;
                                                                  — в общем те значения, что находятся в таблице tickets_authors.

                                                                  Интересует, чтоб выводило в панелях как в общей ленте. Вызывая, например, так:
                                                                  [[!pdoPage? &element=`getTickets` &tpl=`tpl_Tickets.list.row`]]

                                                                  Так и в панели по самим тикетом. Вызывая, например, так:
                                                                  [[!TicketMeta? &tpl=`tpl_Tickets.meta`]]

                                                                  Вопрос, можно ли в вызове этих сниппетов, прописать какой-то параметр, который будет делать дополнительную выборку в таблице tickets_authors и отдавать соответствующие плейсхолдеры?
                                                                  Если нет, то как оптимально это реализовать?
                                                                    Василий Наумкин
                                                                    06 мая 2015, 08:43
                                                                    0
                                                                    На том же Хабре в списке статей рейтинга нет.

                                                                    А В TicketsMeta, может, и стоит добавить, но я пока занят другими делами.
                                                                      r5uY40
                                                                      06 мая 2015, 11:16
                                                                      0
                                                                      Василий, простите за оффтоп: где можно писать предложения по возможному дальнейшему развитию компонентов? Tickets, в частности. С вариантами платной доработки. Дайте ссылку, пожалуйста.
                                                                        Alexei
                                                                        06 мая 2015, 12:10
                                                                        +1
                                                                        гитхаб, новый issue
                                                                          r5uY40
                                                                          06 мая 2015, 12:20
                                                                          0
                                                                          Спасибо!
                                                              Михаил
                                                              06 мая 2015, 13:34
                                                              0
                                                              Василий, подскажите как скрыть «форму для комментирования» и выводить кнопку «Написать комментарий», как здесь на сайте.
                                                              У меня, по умолчанию, скрыта кнопка «Написать комментарий» и выводится «форма для комментирования».

                                                              Спасибо.
                                                              Дмитрий Иванов
                                                              06 мая 2015, 13:50
                                                              0
                                                              Просмотры
                                                              Очки за просмотр тикетов в этом разделе.
                                                              Очки же даются тому, кто просмотрел? Или автору тикета?
                                                              Александр Янк
                                                              07 мая 2015, 22:15
                                                              0
                                                              Здравствуйте, столкнулся с такой проблемой
                                                              действующий сайт v-otpyske.ru/tour.html
                                                                Пётр Молчанов
                                                                27 мая 2015, 11:19
                                                                0
                                                                У меня пара вопросов:
                                                                1. просмотр страницы считается только зарегеным пользователем? Если да, то как сделать подсчет любого посетителя?
                                                                2. выставлять оценку могут тока зарегеные пользователи? Если да, то как сделать, чтобы могли все это делать?
                                                                  panov_a_v
                                                                  04 июня 2015, 11:47
                                                                  0
                                                                  Василий, здравствуйте.
                                                                  Надеюсь, Вы мне поможете.
                                                                  Я на своём сайте установил tickets-1.4.2-pl, настроил комментарии по схеме, предложенной Сергеем Шлоковым (https://modx.pro/solutions/4057-tikets-book-reviews-with-ajax-loading/). Но возник один вопрос, с которым Сергей порекомендовал обратиться к Вам.
                                                                  В форме для написания комментария есть только поля для имени автора и email. Каким образом и что нужно прописать в чанках и сниппетах, чтобы добавить поле «Сайт», url из которого будет возвращаться как ссылка с анкором «Имя автора»?
                                                                  Я совершенно не разбираюсь в php и написании сниппетов для MODX, поэтому вряд ли пойму ответ, написанный для разработчика. Если не трудно, то, пожалуйста, напишите конкретно, какой код куда вставить.
                                                                  Вот, например, в чанке tpl.Tickets.comment.form.guest есть такой блок:
                                                                  <div class="form-group">
                                                                  <label for="comment-email">[[%ticket_comment_email]]</label>
                                                                  <input type="text" name="email" value="[[+email]]" id="comment-email" class="form-control" />
                                                                  <span class="error"></span>
                                                                  </div>
                                                                  Как мне надо переделать этот блок, чтобы он стал полем для URL сайта? И что ещё нужно изменить в других чанках или сниппетах, чтобы всё это работало?
                                                                  Спасибо.
                                                                    Ilya Ev
                                                                    20 июня 2015, 14:03
                                                                    0
                                                                    Чтоб не создавать ветку)

                                                                    порой в ошибка появляется
                                                                    [2015-06-20 13:08:26] (ERROR @ /index.php) Error 23000 executing statement:
                                                                    INSERT INTO `modx_tickets_views` (`parent`, `uid`, `guest_key`, `timestamp`) VALUES (0, 0, '3b2784a6992049b04ff673e798f79a27', '2015-06-20 13:08:26')
                                                                    Array
                                                                    (
                                                                        [0] => 23000
                                                                        [1] => 1062
                                                                        [2] => Duplicate entry '0-0-3b2784a6992049b04ff673e798f79a27' for key 'PRIMARY'
                                                                    )
                                                                    Отчего это?
                                                                    Василий Столейков
                                                                    07 июля 2015, 10:58
                                                                    0
                                                                    Может, конечно, немного не в тему, но
                                                                    очень не хватает в тикетах кнопок «Предыдущий тикет», «Вверх» и «Следующий тикет», как это реализовано в товарах в минишопе.
                                                                    Приходится постоянно возвращаться к секции тикетов, искать отредактированный тикет и переходить к следующему, а это ужасно неудобно, когда тикетов очень много! Неудобно, потому что тикеты в дереве не отображаются, и приходится долго искать соседний.
                                                                    На компьютере мышкой ещё нажимал на среднюю кнопку мыши для открытия статьи в соседней вкладке, но на ноутбуке это очень неудобно…
                                                                      Василий Наумкин
                                                                      07 июля 2015, 11:39
                                                                      0
                                                                      На ноутбуке советую Alt+Click, во всяком случае на маках это открывает ссылки в новых окнах.

                                                                      По всему остальному — планов улучшать Tickets у меня нет, никто не горит это оплачивать.
                                                                        Василий Столейков
                                                                        07 июля 2015, 11:49
                                                                        0
                                                                        Спасибо за совет! На семёрке (Windows 7) открывается при нажатой Ctrl+Click, хоть какое-то облегченье…
                                                                        А сколько ты возьмёшь за добавление кнопок «Назад» и «Вперёд»? Может быть есть смысл собраться и оплатить — функция нужная и подразумевающаяся во всех структурах, которые работают на тикетах.
                                                                      Борис И
                                                                      24 июля 2015, 17:44
                                                                      0
                                                                      Здравствуйте. Помогите пожалуйста, возникла проблема. Решил обновить сайт с modx 2.2.16 на 2.3.5 и естественно заодно обновил и все компоненты на последние, включая Tickets (был 1.4.2).
                                                                      Теперь при оправке тикета с фото, с фронта не меняются пути картинки с 0 на id, остаются /assets/images/tickets/0/… причем все отображается, картинка помещается в папку 0
                                                                      Все изменения откатил и попробовал обновить только Tickets, не трогая modx. Ситуация та же.
                                                                        Борис И
                                                                        24 июля 2015, 17:52
                                                                        0
                                                                        Такая проблема уже была раньше, до перехода на Tickets 1.4.2, после обновления на 1.4.2 все заработало.
                                                                          Борис И
                                                                          24 июля 2015, 17:57
                                                                          0
                                                                          Обновил Tickets на другом сайте, все хорошо никаких проблем. В чем дело понять не могу.
                                                                        Alex
                                                                        20 сентября 2015, 23:25
                                                                        0
                                                                        Есть ли возможность добавлять комменты через свои сниппеты?
                                                                        Возможно ли отправлять уведомление о комменте на email администратору?
                                                                        Благодарен за труб.
                                                                          Василий Наумкин
                                                                          21 сентября 2015, 04:11
                                                                          0
                                                                          Есть ли возможность добавлять комменты через свои сниппеты?
                                                                          Добавляй конечно, кто тебе может помешать?

                                                                          Возможно ли отправлять уведомление о комменте на email администратору?
                                                                          Конечно, есть специальные системные настройки для уведомлений админов.
                                                                            Alex
                                                                            05 октября 2015, 22:48
                                                                            0
                                                                            Нужна все же подсказка, не могу создать коммент через процессор, в логах пустая запись

                                                                            $fields = array();
                                                                            $fields['thread'] = 'resource-507';
                                                                            $fields['text'] = $text;
                                                                            $fields['email'] = $email;
                                                                            $otherProps = array(
                                                                            'processors_path' => $modx->getOption('core_path'). 'components/tickets/processors/'
                                                                            );
                                                                            $response = $modx->runProcessor('web/comment/create', $fields, $otherProps);
                                                                            if ($response->isError()) {
                                                                            $modx->log(modX::LOG_LEVEL_ERROR, 'comment error, Message: '.$response->getMessage());
                                                                            return 'error comment';
                                                                            }

                                                                            Спасибо
                                                                              Alex
                                                                              07 октября 2015, 16:52
                                                                              0
                                                                              нет идей?
                                                                              Wassi Wassinen
                                                                              24 декабря 2015, 07:53
                                                                              0
                                                                              Василий, может быт уже есть тема в которой ты рассказываешь как вывести список пользователей с рейтингами и тикетами, наподобие реализации нашей страницы «Пользователи»? Никак не пойму чего и куда джойнить нужно, чтобы через pdoUsers вывести эту красоту.
                                                                                Василий Наумкин
                                                                                24 декабря 2015, 08:07
                                                                                0
                                                                                В заметке есть рабочий пример, смотри абзац с заголовком «Работа с pdoUsers».
                                                                                  Wassi Wassinen
                                                                                  24 декабря 2015, 08:12
                                                                                  +1
                                                                                  Ага, спасибо. Не сразу понял, что после обращения к классу можно выводить плейсхолдерами [[+rating]] и т.д. Удобно!
                                                                                    Wassi Wassinen
                                                                                    07 февраля 2016, 01:03
                                                                                    0
                                                                                    Василий, подскажи, пожалуйста, — как сортировать тикеты по рейтингу? Добавлю в доки.
                                                                              Роман
                                                                              01 ноября 2015, 23:03
                                                                              0
                                                                              Не работает настройка по умолчанию «Скрыть в меню».
                                                                              Выставлено не показывать, но в новых тикетах все равно приходится проставлять данную позицию в ручную.

                                                                              Подскажите как поправить.

                                                                              Спасибо.
                                                                                Роман Воропаев (Volk)
                                                                                14 декабря 2015, 15:47
                                                                                0
                                                                                Здравствуйте, а подскажите, как реализовать загрузку файлов именно к комментариям? А то я как понял можно только к тикету его прикреплять, а в комментариях только ссылку на картинку, а загрузки на сервер нет.
                                                                                  gg-
                                                                                  gg-
                                                                                  24 декабря 2015, 01:39
                                                                                  0
                                                                                  Здравствуйте, подскажите, пожалуйста, как добавить колонку со своим TV в таблицу тикетов?
                                                                                    Сергей Шлоков
                                                                                    22 апреля 2016, 08:04
                                                                                    0
                                                                                    Василий, Jevix почему-то вырезает параметр rel у тега a. Все остальные параметры остаются. Настройки такие. Подскажи, как тут настроен тег а.
                                                                                      Василий Наумкин
                                                                                      22 апреля 2016, 10:44
                                                                                      0
                                                                                      У меня всё ровно так же.

                                                                                      Или кэш, или ты меняешь параметр в наборе Tickets, а проверяешь в комментариях, у которых свой набор Comment.
                                                                                        Сергей Шлоков
                                                                                        22 апреля 2016, 11:12
                                                                                        0
                                                                                        Проверяю в тикетах. Если отметить «Отключить Jevix», то rel появляется. Но не хочется отключать. Все кэши чистил и сайта и браузера. Странно как-то.

                                                                                        П.С. В предыдущем комментарии хотел обратить внимание на отсутствие лексикона для двух параметров.
                                                                                      Николай DELETE
                                                                                      12 июня 2016, 18:02
                                                                                      0
                                                                                      Рейтинг увеличивается, если добавлять свои записи в избранное.
                                                                                        Павел
                                                                                        16 июня 2016, 16:17
                                                                                        0
                                                                                        Василий, а подскажи пожалуйста, а можно ли как-нибудь сделать обязательным к тикету, добавить хотябы один файл? т.е. если пользователь не прикрепил не один файл форма не отправляется… чёт я никак не придумаю решение…

                                                                                          Василий Столейков
                                                                                          09 июля 2016, 18:05
                                                                                          0
                                                                                          $user = $modx->getObject('modUser', 10);
                                                                                          if ($profile = $user->getOne('AuthorProfile')) {
                                                                                          	print_r($profile->refreshRatings());
                                                                                          }
                                                                                          Скажите пожалуйста, этот код из статьи ещё актуален? Ничего не изменилось с тех пор в плане обновления рейтинга автора?
                                                                                          У меня логика построена на этом коде, который у меня не работает. И в Console тоже уходит в бесконечное выполнение…
                                                                                            Василий Столейков
                                                                                            10 января 2017, 14:16
                                                                                            1
                                                                                            0
                                                                                            Так как обновить рейтинг конкретного пользователя? Код из статьи не срабатывает в дополнении Console:
                                                                                            Fatal error: Uncaught Error: Call to undefined method TicketAuthor_mysql::refreshRatings() in /home/s****/www/core/components/console/processors/exec.class.php(24) : eval()'d code:6 Stack trace: #0 /home/s****/www/core/components/console/processors/exec.class.php(24): eval() #1 /home/s****/www/core/model/modx/modprocessor.class.php(173): ConsoleExecProcessor->process() #2 /home/s****/www/core/model/modx/modx.class.php(1704): modProcessor->run() #3 /home/s****/www/core/model/modx/modconnectorresponse.class.php(140): modX->runProcessor('exec', Array, Array) #4 /home/s****/www/core/model/modx/modconnectorrequest.class.php(82): modConnectorResponse->outputContent(Array) #5 /home/s****/www/core/model/modx/modconnectorrequest.class.php(69): modConnectorRequest->prepareResponse(Array) #6 /home/s****/www/manager/components/console/connectors/console.php(11): modConnectorRequest->handleRequest(Array) #7 {main} thrown in /home/s****/www/core/components/console/processors/exec.class.php(24) : eval()'d code on line 6
                                                                                              Василий Наумкин
                                                                                              10 января 2017, 15:09
                                                                                              +1
                                                                                              Очепятка, нужно использовать refreshActions.

                                                                                              Мне кажется, ты мог бы просто посмотреть, какие вообще методы есть в TicketAuthor, чем просто ждать ответа полгода.
                                                                                                Василий Столейков
                                                                                                10 января 2017, 15:30
                                                                                                1
                                                                                                0
                                                                                                Спасибо! Тогда столкнулся, но было не столь актуально и не стал копать. Сейчас снова всплыл вопрос.
                                                                                                Спасибо за поправку!
                                                                                            Сергей Шлоков
                                                                                            29 августа 2016, 12:13
                                                                                            0
                                                                                            Василий, обрати, пожалуйста, внимание на это обсуждение.
                                                                                              adminixi
                                                                                              23 декабря 2016, 18:21
                                                                                              0
                                                                                              Версия 1.6.16-pl

                                                                                              Установили на новый сайт, создали раздел с тикетами, создаем тикет — нет кнопок сохранить, просмотр и т.п.

                                                                                              В чем может быть дело?
                                                                                              Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
                                                                                              194