[Tickets] Версия 1.6.1-pl Рейтинги пользователей
Представляю вам новую версию Tickets 1.6.0-pl, с системой рейтингов. Она написана в рамках нашей краудфандинговой компании, вот beta версия, а вот rc.
В этой версии появлсяются 2 новых объекта: TicketAuthor, связанный с modUser, и TicketAuthorAction. Как нетрудно догадаться, первый объект это профиль автора на сайте, куда пишется:
Во втором объекте у нас данные о всех действиях, нужных для расчета рейтинга:
У секций тикетов появилась новая вкладка «Рейтинги», в которой можно назначать рейтинг за каждый тип событий.
При изменении этих значений рейтинги событий секции пересчитываются. Я постарался сделать это максимально быстро, например, для пересчета всех событий в нашем блоге «Вопросы» (4353 тикета) потребовалось всего 6.8 сек.
В объекте TicketAuthor есть методы addAction и removeAction, которыми пользуются другие классы при сохранении. Например, при голосовании за тикет создаётся объект TicketVote, который при сохранении получает нужный профиль автора и добавляет в него действие.
Рейтинг автора при добавлении или удалении действий пересчитывается, что позволяет поддерживать его актуальность. Если вдруг случилась внештатная ситуация (кто-то вручную поковырял БД), всегда можно обновить рейтинг автора вот так:
Это удалит все действия, связанные с пользователем, забьёт их в базу повторно и пересчитает итоговые цифры в профиле.
Новые профили пользователей можно использовать как своими сниппетами, так и сниппетами pdoTools. Например, вот подключение в pdoUsers и вывод пользователей по рейтингу:
На данный момент весь код в Tickets прилизан, все страницы админки написаны заново, поправлены все ошибки на GitHub, и добавлена продвинутая система рейтингов.
При изменений правил раздела тикетов рейтинг для него пересчитывается. При перемещении тикета в другой раздел, смене его автора, удалении, публикации — пересчитываются рейтинги, связанные с этим тикетом.
Работа проделана очень приличная, и если вы считаете, что изначально поставленную задачу я несколько перевыполнил — прошу не стесняться.
В комментариях можно обсудить предложения о дальнейшем развитии рейтинговой системы, но практически всё можно сделать уже сейчас, работая с TicketAuthorAction. В ближайшее время я переделаю наш раздел пользователей на вывод новых рейтингов.
Обновляемся, создаём профили авторов, радуемся рейтингам и пишем отзывы.
В репозитории уже доступна версия 1.6.1-pl, в которой список рейтингов в профиле значительно расширен.
Вместо суммы голосов и количества избранного в профиле пользователя теперь есть:
Все колонки в таблицу не входят, поэтому вместо заголовков используются иконки + некоторые столбцы скрыты по умолчанию. Но вы можете их включить в меню колонок и это сохранится в куки.
Расшифровка иконок всплывает при наведении мышки. Также title прописан у ячеек с рейтингами.
За столь скорое обновление можно благодарить мистера Сuriosity, который был весьма настойчив.
Новые объекты
В этой версии появлсяются 2 новых объекта: TicketAuthor, связанный с modUser, и TicketAuthorAction. Как нетрудно догадаться, первый объект это профиль автора на сайте, куда пишется:
- Дата создания профиля (регистрация пользователя)
- Последняя активность
- Общий рейтинг
- Количество тикетов
- Количество комментариев
- Просмотров
- Сколько тикетов или комментов автора было добавлено в избранное
- Сколько было отдано голосов за тикеты и комменты автора
Во втором объекте у нас данные о всех действиях, нужных для расчета рейтинга:
- id объекта, к которому было применено действие
- Само действие (ticket, comment, view и т.д.)
- Владелец объекта (получатель рейтинга)
- Рейтинг за действие
- Множитель (нужен для правильного учета голосов и пересчета при смене правил)
- id тикета, хозяина объекта действия
- id секции, в которой лежит этот тикет
- Создатель действия
- Время действия
- Год, месяц и день в отдельных столбцах, для удобной выборки
Логика работы
У секций тикетов появилась новая вкладка «Рейтинги», в которой можно назначать рейтинг за каждый тип событий.
При изменении этих значений рейтинги событий секции пересчитываются. Я постарался сделать это максимально быстро, например, для пересчета всех событий в нашем блоге «Вопросы» (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, в которой список рейтингов в профиле значительно расширен.
Вместо суммы голосов и количества избранного в профиле пользователя теперь есть:
- Общий рейтинг тикетов
- Общий рейтинг комментов
- Количество голосов за тикеты (отдельно за и против)
- Количество голосов за комменты (отдельно за и против)
- Количество добавлений тикетов в избранное
- Количество добавлений комментариев в избранное
Все колонки в таблицу не входят, поэтому вместо заголовков используются иконки + некоторые столбцы скрыты по умолчанию. Но вы можете их включить в меню колонок и это сохранится в куки.
Расшифровка иконок всплывает при наведении мышки. Также title прописан у ячеек с рейтингами.
За столь скорое обновление можно благодарить мистера Сuriosity, который был весьма настойчив.
Комментарии: 193
Огогошеньки
Прекрасно. Огромная работа проделана.
Еще бы тэги из коробки.
Не туда ответил(
Еще бы тэги из коробки.
Не туда ответил(
Они теперь не нужны. Внимательно прочитайте пост про RC:
Страницы классов TicketsSection и Ticket расширены гораздо более грамотно, и не мешают подключению сторонних дополнений, типа Tagger. Да-да, вы можете использовать эти теги вместе с Tickets!
Ништяк, Вась, красава! Премного БлагоДарен!
Давно хотел спросить, а зачем ты пишешь заглавную букву Д в слове «благодарю»? Это какой-то секретный знак-только-для-своих?
Мне так хочется. ;) А вообще понять это не так уж и сложно.
Не интересно, почему я пишу приставку не «бес», а «без»?)) В слове «безплатный», например…
Не интересно, почему я пишу приставку не «бес», а «без»?)) В слове «безплатный», например…
Ясно, вопросов больше нет.
Просто мне не хочется, чтобы наше сообщество стало филиалом Вконтакте.
Просто мне не хочется, чтобы наше сообщество стало филиалом Вконтакте.
О каком ещё филиале идёт речь?)) Чес слово долго пытался понять суть твоих слов, однако я наверное не настолько умен, чтобы понять смысл выражения про филиал ВК. =)
Я о том, что у нас здесь сообщество разработчиков сайтов, и средний уровень грамотности должен быть повыше чем на том же Вконтакте.
Это там все пишут не как в школе учили, а как нравится. Когда я вижу такое здесь — расстраиваюсь.
Понятное дело, что не все мы ставим верно запятые (и я в том числе), но стараться-то нужно! Зачем коверкать слова специально — понимать отказываюсь.
Это там все пишут не как в школе учили, а как нравится. Когда я вижу такое здесь — расстраиваюсь.
Понятное дело, что не все мы ставим верно запятые (и я в том числе), но стараться-то нужно! Зачем коверкать слова специально — понимать отказываюсь.
Это учение о скрытом смысле и подспудном значении слов или их составляющих. Я предполагаю, что приставка «бес» отнесена к чему-то негативному, несущему в себе что-то от лукавого. :) И наоборот — выделение составляющих, которые несут ярко выраженный позитивный окрас — благо дарить и т.д. :) Наверное, подразумевается, что таким образом можно стать лучше. Хотя, не уверен.
Таким образом можно не до конца забыть истинный смысл употребляемых тобой и другими людьми слов…
Да? А как тогда в устной речи этот бред соблюдать?
Менять ударения, или пояснять скрытый смысл собеседнику отдельно, размахивая руками? «Да ты чо, я же не просто спасибо сказал, я тебе благо подарил!»
Вот до чего доводит отказ от советской программы в школе и повсеместное ЕГЭ.
Менять ударения, или пояснять скрытый смысл собеседнику отдельно, размахивая руками? «Да ты чо, я же не просто спасибо сказал, я тебе благо подарил!»
Вот до чего доводит отказ от советской программы в школе и повсеместное ЕГЭ.
А я расстраиваюсь, к примеру, когда вижу текст не по инфо стилю. :)
Василий, я не считаю за ошибку это, т.к. подобные нововведения с приставками и другими моментами в русском языке начались относительно недавно. Ещё к концу 19 века люди употребляли приставку «без». И говоря или читая слово «БлагоДарю» человек не всегда ощущает его истинный смысл и силу. Когда я выражаю благодарность, я стараюсь выделить в этом слове то, что я тем самым Дарю Благо тому человеку, который заслужил это.
Кто-то может возразить, что наука с каждым годом прогрессирует и всё постоянно меняется, некоторые законы физики, которые были приняты учёными ещё в 50х гг прошлого века в наше время опровергают. Однако язык — это не наука, это наследие предков. Чем сложнее язык, тем он насыщеннее, и тем глубже мыслит человек думающий на этом языке, и напротив — чем примитивнее язык, тем примитивнее мышление на этом языке. А у нас почему-то всеми возможными способами урезают и азбуку, которая отныне алфавит состоящий из 33 букв.
P.S.: В школе много чему учили, только почему-то ныне всё чаще убеждаюсь в том, что многое из того либо не пригождается, либо чушь.
P.P.S.: Не собираюсь продолжать этот спор ни с тобой, ни с кем-либо другим, поэтому если будут возражения тому, что я здесь написал — не удивляйтесь игнорированию. :)
Василий, я не считаю за ошибку это, т.к. подобные нововведения с приставками и другими моментами в русском языке начались относительно недавно. Ещё к концу 19 века люди употребляли приставку «без». И говоря или читая слово «БлагоДарю» человек не всегда ощущает его истинный смысл и силу. Когда я выражаю благодарность, я стараюсь выделить в этом слове то, что я тем самым Дарю Благо тому человеку, который заслужил это.
Кто-то может возразить, что наука с каждым годом прогрессирует и всё постоянно меняется, некоторые законы физики, которые были приняты учёными ещё в 50х гг прошлого века в наше время опровергают. Однако язык — это не наука, это наследие предков. Чем сложнее язык, тем он насыщеннее, и тем глубже мыслит человек думающий на этом языке, и напротив — чем примитивнее язык, тем примитивнее мышление на этом языке. А у нас почему-то всеми возможными способами урезают и азбуку, которая отныне алфавит состоящий из 33 букв.
P.S.: В школе много чему учили, только почему-то ныне всё чаще убеждаюсь в том, что многое из того либо не пригождается, либо чушь.
P.P.S.: Не собираюсь продолжать этот спор ни с тобой, ни с кем-либо другим, поэтому если будут возражения тому, что я здесь написал — не удивляйтесь игнорированию. :)
Ты меня извини, но это бред.
Не даришь ты никакое благо, ты пытаешься выразить свои мысли в письменном виде. Чтобы люди тебя понимали, и не считали замалолетнего дурачка неграмотного, нужно использовать общепринятые нормы и правила русского языка.
Здесь — сообщество программистов. То есть людей, который пишут и понимают программный код, уважают его правила и улавливают разницу между нулём и единицей.
Мы говорим на русском, а не на каком-то новоязе или наречии 19го века. В русском языке принято писать слова без заглавных в середине, и приставки использовать согласно правил, а не как красивее выглядит.
У меня накипело, честно.
Не даришь ты никакое благо, ты пытаешься выразить свои мысли в письменном виде. Чтобы люди тебя понимали, и не считали за
Здесь — сообщество программистов. То есть людей, который пишут и понимают программный код, уважают его правила и улавливают разницу между нулём и единицей.
Мы говорим на русском, а не на каком-то новоязе или наречии 19го века. В русском языке принято писать слова без заглавных в середине, и приставки использовать согласно правил, а не как красивее выглядит.
У меня накипело, честно.
Ничего, Вась, выплесни негатив, в себе держать плохого нельзя. :)))))))) К тому-же всегда есть возможность забанить, как ты это любишь делать, правда ведь? :))))
Больше смайликов, Пашок, больше! Иначе же невозможно понять, что ты шутишь.
Детский сад какой-то. Будет за что — отключу, а пока только прошу, по-хорошему, не приносить к нам сюда всякую дурь.
Детский сад какой-то. Будет за что — отключу, а пока только прошу, по-хорошему, не приносить к нам сюда всякую дурь.
Я так понимаю твоё «прошу по хорошему» — это требование, за несоблюдение которого ты считаешь себя правым меня забанить? :))) Если так, то отключай прямо сейчас, я не стану соблюдать твои личные требования. Если бы я приносил какой-то вред кому-то — полностью согласен, однако не вижу никаких противоправных действий со своей стороны, поэтому считаю правильным общаться и писать слова так, как мне это по Душе. Если ты не заметил, я тоже уважаю язык, который считаю Родным. Ошибки в словах мне также ломают понимание написанного. Однако если в слове «БлагоДарю» чётко выделяю два слова, из которых оно состоит, то здесь нет никакой ошибки. Ну это лично моё мнение. Ты в праве считать иначе, но общаться меня иначе ты не заставишь никакими «просьбами по-хорошему». ;)
P.S.: Или может ты обязуешь всех перед регистрацией в сообществе прочитать, выучить, и пересказать тебе все правила русского языка?)) Ну так, вместо капчи. Как тебе идея? :))) Чтобы не кипело больше ничего там у тебя, а Вась? :))
P.S.: Или может ты обязуешь всех перед регистрацией в сообществе прочитать, выучить, и пересказать тебе все правила русского языка?)) Ну так, вместо капчи. Как тебе идея? :))) Чтобы не кипело больше ничего там у тебя, а Вась? :))
Понятно.
Теперь я буду знать, что ты — малолетний дурачок, русского языка не понимаешь и общаться с тобой нужно соответствующе.
Хотел выделиться — у тебя это получилось, поздравляю.
Теперь я буду знать, что ты — малолетний дурачок, русского языка не понимаешь и общаться с тобой нужно соответствующе.
Хотел выделиться — у тебя это получилось, поздравляю.
А администраторов здесь не отключают, нет? Ну, к примеру, за оскорбления?)))
Задели бы меня твои слова, Вась, если б ты являлся для меня человеком уважаемым. :)
Я тебя уважаю, как программиста, потому что ты действительно хороший программист. За твои труды не раз выражал тебе БлагоДарность и не постесняюсь выразить снова. Но как человека… увы… не могу проникнуться уважением к тому, кто открыто рекламирует в своём блоге бутылку яда, которую ему прислали в подарок. ;)
Считаю прямоту за качество в человеке. Если задели мои слова, значит стоит разобраться в себе.
Задели бы меня твои слова, Вась, если б ты являлся для меня человеком уважаемым. :)
Я тебя уважаю, как программиста, потому что ты действительно хороший программист. За твои труды не раз выражал тебе БлагоДарность и не постесняюсь выразить снова. Но как человека… увы… не могу проникнуться уважением к тому, кто открыто рекламирует в своём блоге бутылку яда, которую ему прислали в подарок. ;)
Считаю прямоту за качество в человеке. Если задели мои слова, значит стоит разобраться в себе.
Какой же ты тугой
Да это же наш старый знакомый, который уже ярко выступил в моём блоге, за что был заслуженно отключен.
Здесь он пока себя держит в руках, но высший разум иногда проскакивает.
Взял на заметку.
Здесь он пока себя держит в руках, но высший разум иногда проскакивает.
Взял на заметку.
Вот это поврот! А я б никогда и не вспомнил бы ту ветку диалога, если б не напомнил)
А это не прямота, это глупость назвать человека «тугим» без объяснения причин. :) Взгляни в зеркало, может тебя взбесило совсем не это? :)))
Эх, ты даже не понимаешь с кем ввязываешься в полемику xD
Если ты полезешь «в бутылку», то откроешь ящик Пандоры и к вечеру здесь будут десятки оранжевых квадратиков вместо комментариев)
Но да ладно, к сути.
Я постараюсь коротко и поэтому приведу такую аналогию.
Вот бывают взрослые, а бывают дети. У них совершенно разные уровни компетенции в познании окружающего мира. И вот тогда взрослый в рамках своей компетенции объясняет многие очевидные для себя, но совершенно не очевидные для ребёнка, вещи.
Ребёнок может верить на слово, может проверять всё опытным путём, набивая собственные шишки (к примеру засовывать пальцы в розетку), а может (в силу своей неопытности и, чего уж, глупости) забить хер на все рассказы, объяснения и заверения взрослого человека и жить в своём собственном выдуманном мире.
И вот объясняешь ты такой этому ребёнку, который ничего слышать не хочет, объясняешь, объясняешь… объясняешь…
Но ребёнок не понимает очевидного — его персональное видение фактов окружающего мира не отменяет настоящий смысл этих фактов.
Скажу проще — окружающему миру глубоко фиолетово, что красное ребёнок видит зелёным, а оранжевое — серым. Персональное видение конкретной особи не отменяет того, что красное — это красное, а оранжевое — оранжевое.
(хотя цвет — это вопрос больше филосовский, но сейчас не об этом)
И вот если таким ребёнком никто не занимается, то из него вырастает гуманитарий, «я-художник-я-так-вижу» или (что ещё хуже) либерал.
И вот как ты думаешь — как люди, которые понимают (это ключевое слово) некомпетентность маленького ребёнка или такого вот «художника», будут смотреть на них со стороны? Есть варианты?
А я тебе скажу — здесь 3 стадии:
1. Снисходительность. Тобишь, простыми словами, как на глупенького.
2. Снисходительность будет длиться до тех пор, пока такие люди, считая себя самыми умными, не начинают лезть со своим видением в жизнь других, навязывая им это своё видение. Естессна, у людей с более высокой компетенцией ничего кроме раздражения это вызывать не будет.
3. Ну и, если эго таких людей не образумилось, ничего, кроме отвращения, они у социума уже не вызывают.
(кстати, ничем пида.асов не напоминает? ну тех самых, которые с радужными флагами, всюду выпячивают своё «видение»)
И скитается потом этот «художник» по разным социумам и везде проходит эти три стадии. И сидит такой на весь мир обиженный и размышляет — «А чего это все вокруг такие охуевшие? За что они меня так ненавидят?».
Но не понимает бедный «художник» причинно-следственной связи, гуманитарий он, всё видит по-своему.
Меняет одну работу, вторую — везде его не понимают. До тех пор пока не натыкается на сайт «эха москвы» или не встречает стайку других таких же самопровозглашённых «особенных».
Ну дальше вы поняли.
Ну и собссна, к чему всё это.
Мне кажется это очевидным, но тебе, скорей всего, придётся подсказать — в этой самой аналогии ты тот самый маленький ребёнок, который пошёл по третьему пути, со всеми вытекающими.
И вот в этой ветке за пяток комментариев ты прошёл все три стадии. Умудрился же ведь.
Но эта аналогия относится больше к тому диалогу.
С текущим диалогом всё проще.
В разных кругах приняты свои нормы поведения, общения и ведения диалога. Так вот.
Тебе говорят — в текущем сообществе ты делаешь что-то, чего в этом сообществе не принято.
Но ты ложишь на это хер с высокой колокольни, мотивируя это тем, что «я-так-вижу».
Пришёл в сообщество — будь добр соблюдать устоявшиеся здесь нормы общения и поведения. Не хочешь? Ну так тогда не удивляйся, что тебе высказали персональное «фу» на эту тему. А если снова дойдёшь до 3й стадии — не удивляйся, что тебя забанят.
Не надо искать проблемы в других. Начни с себя. Это вообще должно быть жизненным кредом.
Печально, что такое нужно объяснять.
Конечно, все мы люди, где-то не можем сдержать эмоции, где-то грубим. Мои комментарии тоже не раз удалялись. Но я же не говорю, мол, «Вась, с хера ли? Чо, правда глаза режет?». Не говорю, потому что понимаю, что палку перегибал. Но ты же…
И да, полемика у тебя отвратительная — прикидываясь белым и пушистым, завуалированно оскорбляешь собеседника, в собственном глазу бельма не замечая.
А не пгм'нутый ли ты часом?
upd. обидно то, что ты, скорей всего, ничему не внемлишь, а я в очередной раз зря потратил на тебя время. Ну да ладно, раз уж написал — не удалять ведь.
Если ты полезешь «в бутылку», то откроешь ящик Пандоры и к вечеру здесь будут десятки оранжевых квадратиков вместо комментариев)
Но да ладно, к сути.
Я постараюсь коротко и поэтому приведу такую аналогию.
Вот бывают взрослые, а бывают дети. У них совершенно разные уровни компетенции в познании окружающего мира. И вот тогда взрослый в рамках своей компетенции объясняет многие очевидные для себя, но совершенно не очевидные для ребёнка, вещи.
Ребёнок может верить на слово, может проверять всё опытным путём, набивая собственные шишки (к примеру засовывать пальцы в розетку), а может (в силу своей неопытности и, чего уж, глупости) забить хер на все рассказы, объяснения и заверения взрослого человека и жить в своём собственном выдуманном мире.
И вот объясняешь ты такой этому ребёнку, который ничего слышать не хочет, объясняешь, объясняешь… объясняешь…
Но ребёнок не понимает очевидного — его персональное видение фактов окружающего мира не отменяет настоящий смысл этих фактов.
Скажу проще — окружающему миру глубоко фиолетово, что красное ребёнок видит зелёным, а оранжевое — серым. Персональное видение конкретной особи не отменяет того, что красное — это красное, а оранжевое — оранжевое.
(хотя цвет — это вопрос больше филосовский, но сейчас не об этом)
И вот если таким ребёнком никто не занимается, то из него вырастает гуманитарий, «я-художник-я-так-вижу» или (что ещё хуже) либерал.
И вот как ты думаешь — как люди, которые понимают (это ключевое слово) некомпетентность маленького ребёнка или такого вот «художника», будут смотреть на них со стороны? Есть варианты?
А я тебе скажу — здесь 3 стадии:
1. Снисходительность. Тобишь, простыми словами, как на глупенького.
2. Снисходительность будет длиться до тех пор, пока такие люди, считая себя самыми умными, не начинают лезть со своим видением в жизнь других, навязывая им это своё видение. Естессна, у людей с более высокой компетенцией ничего кроме раздражения это вызывать не будет.
3. Ну и, если эго таких людей не образумилось, ничего, кроме отвращения, они у социума уже не вызывают.
(кстати, ничем пида.асов не напоминает? ну тех самых, которые с радужными флагами, всюду выпячивают своё «видение»)
И скитается потом этот «художник» по разным социумам и везде проходит эти три стадии. И сидит такой на весь мир обиженный и размышляет — «А чего это все вокруг такие охуевшие? За что они меня так ненавидят?».
Но не понимает бедный «художник» причинно-следственной связи, гуманитарий он, всё видит по-своему.
Меняет одну работу, вторую — везде его не понимают. До тех пор пока не натыкается на сайт «эха москвы» или не встречает стайку других таких же самопровозглашённых «особенных».
Ну дальше вы поняли.
Ну и собссна, к чему всё это.
Мне кажется это очевидным, но тебе, скорей всего, придётся подсказать — в этой самой аналогии ты тот самый маленький ребёнок, который пошёл по третьему пути, со всеми вытекающими.
И вот в этой ветке за пяток комментариев ты прошёл все три стадии. Умудрился же ведь.
Но эта аналогия относится больше к тому диалогу.
С текущим диалогом всё проще.
В разных кругах приняты свои нормы поведения, общения и ведения диалога. Так вот.
Тебе говорят — в текущем сообществе ты делаешь что-то, чего в этом сообществе не принято.
Но ты ложишь на это хер с высокой колокольни, мотивируя это тем, что «я-так-вижу».
Пришёл в сообщество — будь добр соблюдать устоявшиеся здесь нормы общения и поведения. Не хочешь? Ну так тогда не удивляйся, что тебе высказали персональное «фу» на эту тему. А если снова дойдёшь до 3й стадии — не удивляйся, что тебя забанят.
Не надо искать проблемы в других. Начни с себя. Это вообще должно быть жизненным кредом.
Печально, что такое нужно объяснять.
Конечно, все мы люди, где-то не можем сдержать эмоции, где-то грубим. Мои комментарии тоже не раз удалялись. Но я же не говорю, мол, «Вась, с хера ли? Чо, правда глаза режет?». Не говорю, потому что понимаю, что палку перегибал. Но ты же…
И да, полемика у тебя отвратительная — прикидываясь белым и пушистым, завуалированно оскорбляешь собеседника, в собственном глазу бельма не замечая.
А не пгм'нутый ли ты часом?
upd. обидно то, что ты, скорей всего, ничему не внемлишь, а я в очередной раз зря потратил на тебя время. Ну да ладно, раз уж написал — не удалять ведь.
Много воды. :) Подобное можно написать в 3 предложениях, если не в 3 словах… :)
В спор с тобой вступать не собираюсь, ибо не вижу смысла. Да и в любом споре нет его. Истина рождается в обсуждении. А ты мне предлагаешь вступить в полемику. Я не являюсь особью женского пола, чтобы опускаться до споров. ;) Спорь с кем-нибудь другим, кто более подходит под данный тип.
Есть такое психологическое понятие — «Проекции», почитай об этом, может что-то станет понятно. Например, почему некоторые люди (к примеру, «пида.асы», как ты их назвал), тебя раздражают.
Про нормы поведения. Я проявил какое-то неуважительное поведение? Если я пишу слово «БлагоДарю» не так, как приятно видеть это Васе — это означает, что я веду себя неуважительно по отношению к данному сообществу? Позволь узнать, а где уважение того, кто лезет в общение между двумя людьми, называя одного из них «тугим»? Я считаю, что подобное поведение граничит с женским настроением в «критические» дни, когда ей что-то не нравится и она ищет любой повод придраться.
P.S.: А пример с поведением ребёнка тут неуместен. Любое поведение ребёнка зависит от воспитательного процесса того самого «взрослого», о котором ты упомянул. Поэтому данный пример на мой взгляд не более чем глупость.
P.P.S.: И я ни кем не прикидываюсь. Оскорбляю? Да нееет. :) А вот как понимать мои слова — каждый для себя решает сам. Кто-то видит в них оскорбление, кто-то нечто другое.
Удачи тебе. Более «срач» в этом топике от моего лица продолжаться не будет. И если ты напишешь мне ответ, велика вероятность того, что он так и останется непрочитанным мною. Да и кто знает, может Василий найдёт повод хоть в этом сообщении заблокировать меня. :))
В спор с тобой вступать не собираюсь, ибо не вижу смысла. Да и в любом споре нет его. Истина рождается в обсуждении. А ты мне предлагаешь вступить в полемику. Я не являюсь особью женского пола, чтобы опускаться до споров. ;) Спорь с кем-нибудь другим, кто более подходит под данный тип.
Есть такое психологическое понятие — «Проекции», почитай об этом, может что-то станет понятно. Например, почему некоторые люди (к примеру, «пида.асы», как ты их назвал), тебя раздражают.
Про нормы поведения. Я проявил какое-то неуважительное поведение? Если я пишу слово «БлагоДарю» не так, как приятно видеть это Васе — это означает, что я веду себя неуважительно по отношению к данному сообществу? Позволь узнать, а где уважение того, кто лезет в общение между двумя людьми, называя одного из них «тугим»? Я считаю, что подобное поведение граничит с женским настроением в «критические» дни, когда ей что-то не нравится и она ищет любой повод придраться.
P.S.: А пример с поведением ребёнка тут неуместен. Любое поведение ребёнка зависит от воспитательного процесса того самого «взрослого», о котором ты упомянул. Поэтому данный пример на мой взгляд не более чем глупость.
P.P.S.: И я ни кем не прикидываюсь. Оскорбляю? Да нееет. :) А вот как понимать мои слова — каждый для себя решает сам. Кто-то видит в них оскорбление, кто-то нечто другое.
Удачи тебе. Более «срач» в этом топике от моего лица продолжаться не будет. И если ты напишешь мне ответ, велика вероятность того, что он так и останется непрочитанным мною. Да и кто знает, может Василий найдёт повод хоть в этом сообщении заблокировать меня. :))
Ну как и предполагалось — я зря потратил время.
Ты как считал себя умнее остальных, так и продолжаешь считать. Как ударялся в завуалированные оскорбления прикидываясь белой овечкой, так и продолжаешь.
Безнадёга
Ты как считал себя умнее остальных, так и продолжаешь считать. Как ударялся в завуалированные оскорбления прикидываясь белой овечкой, так и продолжаешь.
Безнадёга
Мне не нужны поводы, я делаю как считаю правильным.
Здесь нет демократии, здесь сплошной тоталитаризм. Именно поэтому наше сообщество самое живое и рабочее из всех аналогов.
За всё время с 2012 года, вместе с bezumkin.ru я заблокировал 48 учетных записей, включая 2 твоих (одна с email niibaca-nah@почтовыйсервис).
Если хочешь, чтобы их стало 49 — продолжай в том же стиле. Показательные расстрелы укрепляют моральных дух коллектива.
Здесь нет демократии, здесь сплошной тоталитаризм. Именно поэтому наше сообщество самое живое и рабочее из всех аналогов.
За всё время с 2012 года, вместе с bezumkin.ru я заблокировал 48 учетных записей, включая 2 твоих (одна с email niibaca-nah@почтовыйсервис).
Если хочешь, чтобы их стало 49 — продолжай в том же стиле. Показательные расстрелы укрепляют моральных дух коллектива.
Будь добр, удали мой email из сообщения. Не хотелось бы, чтобы из-за раздутого Эго кого-либо я страдал от переизбытка спама в одном из своих ящиков. Да и вообще, не красиво это, администратору сайта (которому люди доверяют свои личные данные, которые как правило нужно скрывать), публиковать их. Так все здравомыслящие администраторы делают, кроме мейл.ру, но это другая история. Посему прошу удалить мой ящик из общего доступа. Надеюсь на твоё здравомыслие.
В смысле, это реальный ящик — niibaca-nah@почтовыйсервис?
И ты нам после этого рассказываешь про силу слов и высокий смысл?
Атас!
И ты нам после этого рассказываешь про силу слов и высокий смысл?
Атас!
Вась, ты до сих пор не угомонишься?) Ты наверное тоже раньше думал, что мальчики и девочки ничем не отличаются? :) Или ты никогда в жизни ошибок не допускал? Лично моё мнение на этот счёт, что каждый из нас совершает ошибки и впредь время от времени.
Я не собираюсь ни перед кем оправдываться, почему по сей день пользуюсь, или зачем вообще создавался такой ящик. Скажу лишь, что ящик создавался в 2004 году, думаю прозрение придёт к здравым самостоятельно без вмешательства моих рассказов о том, какими мыслями я тогда руководствовался и какой образ жизни вёл.
Перестань уже искать повод поругаться. Мне это не интересно. БлагоДарю за понимание.
Я не собираюсь ни перед кем оправдываться, почему по сей день пользуюсь, или зачем вообще создавался такой ящик. Скажу лишь, что ящик создавался в 2004 году, думаю прозрение придёт к здравым самостоятельно без вмешательства моих рассказов о том, какими мыслями я тогда руководствовался и какой образ жизни вёл.
Перестань уже искать повод поругаться. Мне это не интересно. БлагоДарю за понимание.
Ты или трусы одень, или крестик сними, преподобный. Я просил тебя писать по-русски, но ты не понял.
Всего хорошего, благодарю за понимание.
Всего хорошего, благодарю за понимание.
Вась, ну и чего ты этим добился? Из-за личной неприязни заблокировал человека мотивируя это каким-то вымышленным в твоём понимании правильным «русским языком».
Вот скажи мне, Вася, кто в таком случае считает себя умнее других («высшим разумом», как ты «гениально» решил меня подколоть), я или ты? Откуда у тебя знание о том, что тот русский язык, которым оперируешь ты, в общении с людьми, правильнее моего, которым оперирую я? Насколько это не личное? Помоему, Василий, вы слишком зазнались и не видите грани между личной неприязнью и нормами поведения.
Легко за толщиной экрана проявлять поведение альфа-самца, сидя в одиночестве в комнате, когда на тебя не влияет социум. И куда тяжелее сделать или сказать что-то в глаза человеку при личной встрече. Знакомо?
Если тебя так это парило всё это время, то почему ты проявил подобное поведение только сейчас? Я несколько раз произносил в процессе нашей беседы (а как я теперь понимаю, лишь для меня таковой, а для тебя гневным спором с лицом, к которому ты испытываешь личностную неприязнь) слово "БлагоДарю", и только лишь в предыдущем моём сообщении, когда я задел тебя за то, что способно было вывести тебя из себя и проявить твою истинную суть (я про твой эгоизм и моё спокойствие на твой очередной «подкол»), ты «принял» решение меня заблокировать? Как-то не сходится особо, не так ли, Василий?
P.S.: Конечно, определённо ты это сообщение удалишь, т.к. не хочешь выглядеть в глазах сообщества тираном или девочкой (на выбор, как тебе больше нравится), и забанишь меня снова (эх, в какой там уже раз, в 4ый? :))), однако тебе тем самым не поменять свою суть, Вася, это делается несколько иначе.
P.P.S.: И кстати твою «шутку» про преподобного я не понял. Наверное у меня что-то с чувством юмора, да, Вась?))))
Вот скажи мне, Вася, кто в таком случае считает себя умнее других («высшим разумом», как ты «гениально» решил меня подколоть), я или ты? Откуда у тебя знание о том, что тот русский язык, которым оперируешь ты, в общении с людьми, правильнее моего, которым оперирую я? Насколько это не личное? Помоему, Василий, вы слишком зазнались и не видите грани между личной неприязнью и нормами поведения.
Легко за толщиной экрана проявлять поведение альфа-самца, сидя в одиночестве в комнате, когда на тебя не влияет социум. И куда тяжелее сделать или сказать что-то в глаза человеку при личной встрече. Знакомо?
Если тебя так это парило всё это время, то почему ты проявил подобное поведение только сейчас? Я несколько раз произносил в процессе нашей беседы (а как я теперь понимаю, лишь для меня таковой, а для тебя гневным спором с лицом, к которому ты испытываешь личностную неприязнь) слово "БлагоДарю", и только лишь в предыдущем моём сообщении, когда я задел тебя за то, что способно было вывести тебя из себя и проявить твою истинную суть (я про твой эгоизм и моё спокойствие на твой очередной «подкол»), ты «принял» решение меня заблокировать? Как-то не сходится особо, не так ли, Василий?
P.S.: Конечно, определённо ты это сообщение удалишь, т.к. не хочешь выглядеть в глазах сообщества тираном или девочкой (на выбор, как тебе больше нравится), и забанишь меня снова (эх, в какой там уже раз, в 4ый? :))), однако тебе тем самым не поменять свою суть, Вася, это делается несколько иначе.
P.P.S.: И кстати твою «шутку» про преподобного я не понял. Наверное у меня что-то с чувством юмора, да, Вась?))))
Это сообщение оставлю, чтобы всем было понятно кто у нас тут притаился.
Остальные удалю, да. Потому что всё происходит именно так, как Алексей выше описал.
Будь ты поумнее, просто перестал бы нарываться еще когда с тобой вежливо разговаривали.
Остальные удалю, да. Потому что всё происходит именно так, как Алексей выше описал.
Будь ты поумнее, просто перестал бы нарываться еще когда с тобой вежливо разговаривали.
Это сообщение было удалено
Добрый вечер!
Василий как с Вами можно связаться?
Хочу Вам предложить не бедный проект)
Василий как с Вами можно связаться?
Хочу Вам предложить не бедный проект)
Спасибо, я работу не ищу.
Василий, скажи, а возможно считать очки не только за тикеты? Ты, в свое время, сделал отличную штуку — TicketMeta, которая считала просмотры и тот же рейтинг (оценку пользователями). Можно ли по этому принципу насчитывать рейтинг, например, для товаров miniShop2 или простых страниц?
На данный момент — нет.
Всё очень глубоко завязано на разделы тикетов с их настройками (ты же сам просил, помнишь?), а у товаров настроек нет.
Но, в теории, наверное, можно научить MS2 через плагины создавать TicketAuthorAction при создании товаров. Может быть, когда-нибудь…
Пусть сначала рейтинги устаканятся в самих тикетах, как было с голосованием и функционалом только для авторизованных.
Всё очень глубоко завязано на разделы тикетов с их настройками (ты же сам просил, помнишь?), а у товаров настроек нет.
Но, в теории, наверное, можно научить MS2 через плагины создавать TicketAuthorAction при создании товаров. Может быть, когда-нибудь…
Пусть сначала рейтинги устаканятся в самих тикетах, как было с голосованием и функционалом только для авторизованных.
Ок. Я, как обычно, готов поддержать материально.
Спасибо за проделанную работу.
Спасибо за проделанную работу.
Медаль мне в новом разделе «пользователей» дашь? :))
Медаль «Медаль».
Медаль «Медаль».
Медалей пока нет, это типа последний этап, который еще толком не обсуждали.
Да и не думаю, что у нас здесь нужны какие-то медали.
Да и не думаю, что у нас здесь нужны какие-то медали.
Это я так. Настроение хорошее. :)
Отлично! Василий, я может пропустил этот момент. Интересует возможность использования загрузки файлов/изображений из админки.
Нет, этого нет и пока не планирую.
Эм, а если комментарии добавляются не к тикетам, а просто к ресурсам, они в подсчете рейтинга не участвуют? Это как-то плохо =)))
Не, выше чуть не про то.
Вот смотри: комментарии можно оставлять не только к тикетам же, так? Почему же не добавлять рейтинг за эти комментарии? Правда придется продублировать очки рейтинга в настройках видимо, т.к. сейчас они только у секции…
Вот смотри: комментарии можно оставлять не только к тикетам же, так? Почему же не добавлять рейтинг за эти комментарии? Правда придется продублировать очки рейтинга в настройках видимо, т.к. сейчас они только у секции…
Выше именно про то.
Стоит только вынести настройки рейтинга в системные — сразу спросят, а как задать отдельно для категории товара или страницы? В ТВ JSON массив указывать или что?
Поэтому пока Система рейтингов привязана к тикетам и секциям тикетов намертво. Обкатаем, понаблюдаем, потом что-то придумаем (возможно).
Стоит только вынести настройки рейтинга в системные — сразу спросят, а как задать отдельно для категории товара или страницы? В ТВ JSON массив указывать или что?
Поэтому пока Система рейтингов привязана к тикетам и секциям тикетов намертво. Обкатаем, понаблюдаем, потом что-то придумаем (возможно).
Ок, обкатываем) я уже поставил, хотел вывести рейтинг, да увидел, что на моем сайте есть человек, оставивший 600 комментариев, и ни одного из них у тикетов))) в итоге его рейтинг — 0, хотя на сайте он мегаполезный и активный персонаж))
Технически (технически) это можно сделать. Но заморочка в том, как назначать рейтинг для действий не с тикетами.
У них структура постоянна, я знаю как получить настройки. В других случаях вообще не ясно, как брать рейтинг, какова структура разделов, что делать с разными уровнями вложения ресурсов?
Пока придумал только подключать отдельный таб для ресурсов с настройками, по типу ms2Gallery, но желания как-то нет.
У них структура постоянна, я знаю как получить настройки. В других случаях вообще не ясно, как брать рейтинг, какова структура разделов, что делать с разными уровнями вложения ресурсов?
Пока придумал только подключать отдельный таб для ресурсов с настройками, по типу ms2Gallery, но желания как-то нет.
Думается мне, что может быть такой вариант:
1. Основной «источник» настроек очков рейтинга — в системных настройках. Это логично, на то они и настройки. Пусть там же будут и настройки для начисления очков.
2. Для тикетов — дополнительная возможность переопределить их через вкладку у секий, как сделано сейчас. Это тоже удобно, т.к. для каждой секции мы указываем ее значимость. К примеру на modx.pro секция Вопросы мало значима, а секция Готовые решения — дает высокий рейтинг.
3. Что делать с остальными страницами… действительно, четкого видения нет, либо пусть их настройки будут те, что в п.1 и нечего заморачивться, либо… как ты сказал, например отдельная вкладка. Можно ее показывать для ресурсов с определенным шаблоном или id.
Но в принципе пункт 3 можно сделать и потом) а вот почему сразу ты сделал сразу более сложный пункт 2 вместо более простого пункта 1 я не понял =)
1. Основной «источник» настроек очков рейтинга — в системных настройках. Это логично, на то они и настройки. Пусть там же будут и настройки для начисления очков.
2. Для тикетов — дополнительная возможность переопределить их через вкладку у секий, как сделано сейчас. Это тоже удобно, т.к. для каждой секции мы указываем ее значимость. К примеру на modx.pro секция Вопросы мало значима, а секция Готовые решения — дает высокий рейтинг.
3. Что делать с остальными страницами… действительно, четкого видения нет, либо пусть их настройки будут те, что в п.1 и нечего заморачивться, либо… как ты сказал, например отдельная вкладка. Можно ее показывать для ресурсов с определенным шаблоном или id.
Но в принципе пункт 3 можно сделать и потом) а вот почему сразу ты сделал сразу более сложный пункт 2 вместо более простого пункта 1 я не понял =)
Потому что заказали именно это. Системные настройки тоже есть, но как настройки по умолчанию для секций.
Ну и вообще, покопай подробно код изменений, там много станет понятно.
Ну и вообще, покопай подробно код изменений, там много станет понятно.
Как идея, если рейтинг будет считаться от значений, что указаны в TVпараметрах раздела или ресурса?
К примеру, из коробки создаются TVпараметры с уникальными названиями, например:
TVrateTickets, TVrateComments, TVrateStars,…
В значениях по умолчанию прописать уже какие-то балы.
А админ уже сам будет решать, в какие шаблоны включать все эти TVпараметры, а в какие нет. Так же он будет сам решать, какие значения будут в этих TV для каждого раздела или даже ресурса.
Ну а подсчет рейтинга всегда будет зависеть от значений в TVrateTickets, TVrateComments, TVrateStars…
К примеру, из коробки создаются TVпараметры с уникальными названиями, например:
TVrateTickets, TVrateComments, TVrateStars,…
В значениях по умолчанию прописать уже какие-то балы.
А админ уже сам будет решать, в какие шаблоны включать все эти TVпараметры, а в какие нет. Так же он будет сам решать, какие значения будут в этих TV для каждого раздела или даже ресурса.
Ну а подсчет рейтинга всегда будет зависеть от значений в TVrateTickets, TVrateComments, TVrateStars…
Я же именно для этого придумал отдельные классы Ticket и TicketsSection, чтобы потом реализовывать их функционал на ТВ параметрах, правда?
))) Ах ха ха!
Комментарий я оставил относительно применения голосования ко всем ресурсам. И всего лишь как вариант… достаточно гибкий вариант…
Но, судя по вашему саркастически-стёбному ответу, этот вариант совсем никудышный и совсем не рассматривается.
Комментарий я оставил относительно применения голосования ко всем ресурсам. И всего лишь как вариант… достаточно гибкий вариант…
Но, судя по вашему саркастически-стёбному ответу, этот вариант совсем никудышный и совсем не рассматривается.
Василий, супер! Многие этого ждали!
Подскажите.
Если мне надо вывести, то, понятно, я вывожу такие плейсхолдеры:
+votes = количество голосов, которые поставили пользователи
+comments = Количество комментариев, которые оставил пользователь
А как вывести количество голосов за комментарии пользователя?
Подскажите.
Если мне надо вывести, то, понятно, я вывожу такие плейсхолдеры:
+votes = количество голосов, которые поставили пользователи
+comments = Количество комментариев, которые оставил пользователь
А как вывести количество голосов за комментарии пользователя?
Самостоятельно выбрать их из таблицы TicketVote, как и раньше.
Василий, пожалуйста, внесите в таблицу tickets_authors, колнку подсчета голосов за комментари.
Это ж очень важный пункт, который всегда может пригодится.
Вы представьте, если на стрице рейтинга выводить 500 пользователей:
Где у каждого будет выводиться:
— количество оставленных тикетов;
— количество оставленных комментариев;
— количество просмотров тикетов пользователя;
— количество звезд (кол-во пользовоталей, которые добавили в избранное);
— количество голосов за тикеты пользователя;
— количество голосов за комментарии пользователя.
Одно дело, когда все берется с одной таблицы (все пункты, кроме последнего), и другое дело, когда нужно делать дополнительный запрос к другой таблице (где нужно еще подсчитать… а если таких комментов 1000 у каждого юзера, так вообще жесть).
Если вы внесете в табилцу tickets_authors подсчет голосов за комментарии, это решит вопрос многих разработчиков сайтов с элементами соцсети.
Василий, я понимаю, что вам далеко не комильфо принимать всякие хотелки, которые под ваши цели не нужны. Но не судите сразу строго. Подумайте, какие возможности это может дать другим, в том числе и вам.
Например:
можно выводить все эти данные и на основе их составлять свой рейтинг (где одну из ключевых ролей играет и голосование за комментарии пользователя).
Это ж очень важный пункт, который всегда может пригодится.
Вы представьте, если на стрице рейтинга выводить 500 пользователей:
Где у каждого будет выводиться:
— количество оставленных тикетов;
— количество оставленных комментариев;
— количество просмотров тикетов пользователя;
— количество звезд (кол-во пользовоталей, которые добавили в избранное);
— количество голосов за тикеты пользователя;
— количество голосов за комментарии пользователя.
Одно дело, когда все берется с одной таблицы (все пункты, кроме последнего), и другое дело, когда нужно делать дополнительный запрос к другой таблице (где нужно еще подсчитать… а если таких комментов 1000 у каждого юзера, так вообще жесть).
Если вы внесете в табилцу tickets_authors подсчет голосов за комментарии, это решит вопрос многих разработчиков сайтов с элементами соцсети.
Василий, я понимаю, что вам далеко не комильфо принимать всякие хотелки, которые под ваши цели не нужны. Но не судите сразу строго. Подумайте, какие возможности это может дать другим, в том числе и вам.
Например:
можно выводить все эти данные и на основе их составлять свой рейтинг (где одну из ключевых ролей играет и голосование за комментарии пользователя).
Вот где ты был, когда обсуждали эти рейтинги и скидывались деньгами?
Пока с тикетами я закончил. Когда соберусь что-то улучшать — не знаю, только багфиксы уже сделанного.
а если таких комментов 1000 у каждого юзера, так вообще жесть
SELECT COUNT(id) FROM modx_tickets_votes WHERE class = "TicketComment" AND owner = 2;
Вместо количества строк можно брать и SUM(value).Пока с тикетами я закончил. Когда соберусь что-то улучшать — не знаю, только багфиксы уже сделанного.
я готов заплатить! Хоть сейчас.
Василий, пожалуйста, поднажмите еще чуток. Сделайте мою просьбу. И скажите сколько это будет стоить, я сразу отправлю деньги.
Вы говорите, что устали. Надеюсь, оплата этого момента (нужного для многих хоть они и сами этого не знают) вас промотивирует…
Вы говорите, что устали. Надеюсь, оплата этого момента (нужного для многих хоть они и сами этого не знают) вас промотивирует…
Хорошо, 5000 рублей, оплатить можно здесь.
Василий, вы можете дать прямой номер вашей карты или вебмани счета? Зайдите пожалуйста в на пару минут в скайп.
P.S. я не резидент РФ. напрямую с карты не получается. Пей пал — эт какая-то чертовщина, Киви вообще для каких-то умолишенных… а через вебмани тройные комиссии… вначале за конвертацию, потом доходит до третьего лица, а потом третье лицо уже шлет вам… жесть какая-то.
P.P.S. Зайдите пожалуйста на пару минут в скайп.
P.S. я не резидент РФ. напрямую с карты не получается. Пей пал — эт какая-то чертовщина, Киви вообще для каких-то умолишенных… а через вебмани тройные комиссии… вначале за конвертацию, потом доходит до третьего лица, а потом третье лицо уже шлет вам… жесть какая-то.
P.P.S. Зайдите пожалуйста на пару минут в скайп.
Василий, оплатил! Через PayPal
Ну вот, еще одна чертовщина побеждена!
Завтра сделаю и выложу обновление.
Завтра сделаю и выложу обновление.
Супер!
Василий, подводя итоги, просьба:
В таблице tickets_authors добавить:
— подсчет суммы голосов пользователей за тикеты текущего пользователя;
— подсчет суммы голосов пользователей за комментарии текущего пользователя;
В идеале было бы хорошо, если б там же были колонки:
— количество положительных голосов за тикеты текущего пользователя;
— количество отрицательных голосов за тикеты текущего пользователя;
— количество положительных голосов за комментарии текущего пользователя;
— количество отрицательных голосов за комментарии текущего пользователя;
Соостветственно, если будет и возможность фильтровать по этим параметрам в админке, то вообще будет супер…
Можно будет видеть яростных рецидивистов и ангелов проекта…
P.S. Ну и соответствующие плейсхолдеры.
P.P.S. Весело пляшу у рабочего стола…
Василий, подводя итоги, просьба:
В таблице tickets_authors добавить:
— подсчет суммы голосов пользователей за тикеты текущего пользователя;
— подсчет суммы голосов пользователей за комментарии текущего пользователя;
В идеале было бы хорошо, если б там же были колонки:
— количество положительных голосов за тикеты текущего пользователя;
— количество отрицательных голосов за тикеты текущего пользователя;
— количество положительных голосов за комментарии текущего пользователя;
— количество отрицательных голосов за комментарии текущего пользователя;
Соостветственно, если будет и возможность фильтровать по этим параметрам в админке, то вообще будет супер…
Можно будет видеть яростных рецидивистов и ангелов проекта…
P.S. Ну и соответствующие плейсхолдеры.
P.P.S. Весело пляшу у рабочего стола…
Готово, можно обновляться.
Дополнил заметку, см. в конце.
Дополнил заметку, см. в конце.
К тому же вы написали:
Как нетрудно догадаться, первый объект это профиль автора на сайте, куда пишется:Но в самой таблице отсутствует соответствующий столбец.
Дата создания профиля (регистрация пользователя)
Последняя активность
…
Сколько было отдано голосов за тикеты и комменты автора
Нет, не отсутствует. Там сумма голосов за тикеты и комменты.
Оо… вообще не хорошо (
Надо разделить:
Голоса за посты и голоса за комменты.
Так ждал этого релиза, а теперь аж голова бо…
Надо разделить:
Голоса за посты и голоса за комменты.
Так ждал этого релиза, а теперь аж голова бо…
Так ждал, что аж ни слова не сказал, когда деньги собирали.
Вот здесь заказчик расписывает план работ. Как видно, я выполнил значительно больше заявленного, а голосов и избранного и вовсе в плане не было — личная инициатива.
В общем, ты меня удивляешь.
Вот здесь заказчик расписывает план работ. Как видно, я выполнил значительно больше заявленного, а голосов и избранного и вовсе в плане не было — личная инициатива.
В общем, ты меня удивляешь.
К сожалению, я не видел этих обсуждений. Так бы обязательно принял участие, как финансовое, так и дискуссионное…
:(
:(
Мне кажется было бы удобнее, если бы на вкладе Авторы указывались не логины, а полное имя. Думаю, не многие смогут связать bezumkin с Василием Наумкиным. А уж про остальных вообще молчу — инкогнито.
Так и задумано — username должен выводиться при пустом fullname, а это просто ошибка.
Поправил, обновил пакет и скриншот в заметке.
Поправил, обновил пакет и скриншот в заметке.
Нет тот скриншот поменял. :)
Да блин! Устал.
Такой вопрос, нет ли у тикетов рейтинга? А точнее больше интересует сортировка тикетов по просмотрам и коментариям.
ибо через getTickets нельзя сортировать по tickets и views
ибо через getTickets нельзя сортировать по tickets и views
Присоединяй таблицы TicketVote, TicketView — и сортируй по ним.
Изначально это было из коробки, но убрал из-за тормозов.
Изначально это было из коробки, но убрал из-за тормозов.
можно ткнуть носом на пример такой сортировки (или на тигхабе старенькую версию)? как я понимаю что-то вроде этого в 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);
вот
[[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`
]]
спасибо! Просто с getTickets работает, а вот с mfilter нет…
Небольшое замечание — в сводной таблице всех тикетов в колонке Комментарии у меня везде нули, хотя комментарии есть.
См. обновление заметки.
А, ты вон про что. У нас всё ок:
В процессоре присоединяется TicketThread через колонку resource и там уже получаются комментарии.
В процессоре присоединяется TicketThread через колонку resource и там уже получаются комментарии.
Чего то вообще не пойму в чем дело.
В процессоре в методе prepareQueryBeforeCount формируется верный запрос, и при его выполнении в pma комментарии считаются, а в prepareRow уже поле comments равно 0. Странная ситуация.
В процессоре в методе prepareQueryBeforeCount формируется верный запрос, и при его выполнении в pma комментарии считаются, а в prepareRow уже поле comments равно 0. Странная ситуация.
Там комменты не считаются, они выбираются из колонки comments таблицы TicketThread.
Проверь, может у тебя туда ничего не пишется? Или структура таблицы неверная?
Проверь, может у тебя туда ничего не пишется? Или структура таблицы неверная?
В конце метода prepareQueryBeforeCount процессора TicketGetListProcessor добавляю:
А куда они потом пропадают — не пойму. Хотя уже 100 раз код сам проверил, вроде все в порядке.
$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 раз код сам проверил, вроде все в порядке.
Класс!!!
Василий, а может здесь на modx.pro cделать виджет по типу «Прямой эфир», который будет выводить ежемесячную статистику?
Василий, а может здесь на modx.pro cделать виджет по типу «Прямой эфир», который будет выводить ежемесячную статистику?
Для этого ежемесячную статистику нужно сначала сделать. Создать такую таблицу и написать скрипт для ей забивки по расписанию из TicketAuthorAction.
Это последний этап твоего плана, мы его оставим на потом.
Это последний этап твоего плана, мы его оставим на потом.
Чет у меня благополучно таблица modx_tickets_votes удалилась и более не создается при переустановке компонента))) сайт соответственно не работает)) огонь)))
Да это жесть уже какая-то пошла, от усталости. Заменил пакет на pl3, прости пожалуйста.
Бэкапы есть? Если сайт у нас на хостинге — скажи, я восстановлю только эту таблицу.
Бэкапы есть? Если сайт у нас на хостинге — скажи, я восстановлю только эту таблицу.
Иди отдыхать))) Хорошо, что это просто любительский проект, восстановлюсь как нибудь!
Скажи тогда всем, что в честь великого праздника мира и труда, сайт провёл генеральную уборку оценок!
Именно так))))
Отлично!!! Большое спасибо за Ваши труды )
Покажите, пожалуйста, свои работы с Tickets.
Более всего интересно посмотреть на профессиональные сообщества, наподобие modx.pro.
Более всего интересно посмотреть на профессиональные сообщества, наподобие modx.pro.
Прям натуральный форум — прикольно!
Осталось только плоский режим комментариев сделать и вообще будет не отличить.
Осталось только плоский режим комментариев сделать и вообще будет не отличить.
Понравился сайт :)
Хорошо сделан.
Хорошо сделан.
Отличный сайт, а чем карту водоёмов делали?
Спасибо! На фронтенде ручками все, ручками. А в админке координаты водоемов через Mapex добавляю.
Спасибо
Подскажи пожалуйста, с помощью чего форум реализован?
Это Tickets, просто сильно переделан вывод внешнего вида… Хотя ядро Tickets не менялось.
обновил с 1.5.1 — до 1.6.1, теперь белый экран в backend когда в раздел Тикеты захожу. логах modx пусто
наверно кеш был, теперь все ок
Обновление авторов вот как то не совсем работает, обновил — пользователи появились, а вот остальное все по «0» или "-", у меня правда тикетов нету все modResource — просто комменты и лайки к ним, может из-за этого? и в таблице modx_tickets_author_actions — пусто и при лайках и при рефреш рейтинга
да проверил — создал секцию и тикет — modx_tickets_author_actions — появились записи =/ то есть для обычных ресурсов не будет?
Василий, ты жжешь! Прочитал последние комменты — отличные изменения. Если хватит сил — подумай над аналогом тикетМета для рейтинга (подсчет для любых ресурсов). Не уверен, но подозреваю, что мы наберем интересную тебе сумму)
Первая проблема в том, что негде хранить настройки для расчёта рейтинга разделов. Могу предложить только системные настройки, которые будут одинаковы для всех страниц контекста.
Отсюда вторая проблема, что при изменении этих системных настроек нужно будет заново рассчитать все рейтингов для всех документов раздела, что может просто повесить сайт.
А третья проблема в том, что при смене создателя документа или переносе в другой раздел, в классе Ticket делаются проверки и рейтинг пересчитывается. Как это делать с обычным ресурсом — непонятно. Через системный плагин только.
В общем, получается какой-то бред. Я же не просто так сделал классы Ticket и TicketsSection. Явно не для того, чтобы потом весь их функционал пихать в ресурсы, только через, пардон, задний проход.
Отсюда вторая проблема, что при изменении этих системных настроек нужно будет заново рассчитать все рейтингов для всех документов раздела, что может просто повесить сайт.
А третья проблема в том, что при смене создателя документа или переносе в другой раздел, в классе Ticket делаются проверки и рейтинг пересчитывается. Как это делать с обычным ресурсом — непонятно. Через системный плагин только.
В общем, получается какой-то бред. Я же не просто так сделал классы Ticket и TicketsSection. Явно не для того, чтобы потом весь их функционал пихать в ресурсы, только через, пардон, задний проход.
Кстати, я тут подумал, на примере моего сайта.
Считать рейтинг за создание modResource и за плюсы к ним совсем не нужно, ведь их администратор добавляет, а не пользователи. Много ли ситуаций, когда ресурсы-не тикеты добавляют пользователи?..
Остаются тогда только действия добавления комментария, голос за комментарий, добавление в избранное.
Может только эти действия считать тогда у НЕ тикетов?
Считать рейтинг за создание modResource и за плюсы к ним совсем не нужно, ведь их администратор добавляет, а не пользователи. Много ли ситуаций, когда ресурсы-не тикеты добавляют пользователи?..
Остаются тогда только действия добавления комментария, голос за комментарий, добавление в избранное.
Может только эти действия считать тогда у НЕ тикетов?
Если так, то да — можно. Нет никаких действий с авторством тикета и его разделом — нет и проблем.
Тогда общие системные настройки для всех комментов, просмотров и избранного, индивидуальные для тикетов и их разделов. Готов сделать за еще 5000 рублей.
Тогда общие системные настройки для всех комментов, просмотров и избранного, индивидуальные для тикетов и их разделов. Готов сделать за еще 5000 рублей.
Еще не делали?
После обновления и установки компонента на главной пропал вывод всех тикетов и вместо этого появилась форма добавления тикета. В шаблоне стоит вывод такой:
<div id="tickets-wrapper">
<div id="tickets-rows">
[[!pdoPage?
&element=`getTickets`
&parents=`2`
&ajax=`1`
]]
</div>
[[!+page.nav]]
</div>
Нашёл проблему. Оказалось такое странное поведение вызвано установленным компонентом PayAndSee.
Василий, ОГРОНОМНОЕ спасибо за качество и оперативность! Теперь Tickets — стал еще лучше и теперь может составлять серьезную основу для сайтов социально направленности на modx! Еще раз большое спасибо!
P.S. Видел еще вчера, но был настолько занят, что не мог добраться к комментированию этой хорошей новости! Но, как говорится, лучше поздно, чем никогда…
P.S. Видел еще вчера, но был настолько занят, что не мог добраться к комментированию этой хорошей новости! Но, как говорится, лучше поздно, чем никогда…
На здоровье!
Василий, у меня еще одна маленькая просьба…
Дело в том, что я пока не программист, а потому для меня это вопрос, пока сложный. Но логически понимаю, что дело в нескольких не сложных строчках нового сниппета.
Вот так я вывожу рейтинг списка пользователей с цифрами их заслуг:
Теперь, собственно, просьба…
Мне нужен сниппет, который должен давать два плейсхолдера:
1) maxticketsvote — выводит максимальное значение из массива общего рейтинга тикетов.
2) maxcommvote — выводит максимальное значение из массива общего рейтинга комментариев.
Пример:
Петрову дали = 10 голосов за его тикеты и 5 голосов за его комменты.
Сидорову дали = 5 голосов за его тикеты и 10 голосов за его комменты.
Иванову дали = 12 голосов за его тикеты и 9 голосов за его комменты.
Результат сниппета:
1) maxticketsvote = 12
2) maxcommvote = 10
Василий, пожалуйста, подарите этот сниппет вашему доброжелателю. :)
Дело в том, что я пока не программист, а потому для меня это вопрос, пока сложный. Но логически понимаю, что дело в нескольких не сложных строчках нового сниппета.
Вот так я вывожу рейтинг списка пользователей с цифрами их заслуг:
[[!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
Василий, пожалуйста, подарите этот сниппет вашему доброжелателю. :)
<?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]]
Василий, еще раз СПАСИБО!
Единственное, поправьте немного ваш ответ… в
тоесть должно быть так:
Единственное, поправьте немного ваш ответ… в
$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);
Поправьте меня, если ошибаюсь…
Если нужно количество голосов, то нужно складывать отрицательные и положительные голоса.
Если нужна сумма голосов, то можно выбрать MAX(vote_tickets) и MAX(vote_comments) — это и есть суммы рейтинга.
Если нужна сумма голосов, то можно выбрать MAX(vote_tickets) и MAX(vote_comments) — это и есть суммы рейтинга.
Всё понял, спасиб!
Василий, я опять в замешательстве…
Пожалуйста, подскажите.
Я вызываю два сниппета:
1-й — тот, что вы написали чуть выше (находит максимальное значение в массиве голосов за тикеты и комменты). Он дает мне два значения: [[+maxticketsvote]] и [[+maxcommvote]]
и
2-й сниппет:
Моя задача:
Голоса за тикеты = [[+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.
Пожалуйста, подскажите.
Я вызываю два сниппета:
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.
Решил вопрос тем, что формулу Z = X / Y *100 запихнул в третий сниппет.
А вызов этого третьего сниппета вставил в шаблон вывода сниппета pdoUsers.
Пока не знаю насколько это оптимально, но главное, что работает…
P.S. На самом деле я сделал так изначально, но результат выдывало = 0;
Оказалось, что я не внимательно прописал один плейсхолдер pdoUsers.
А вызов этого третьего сниппета вставил в шаблон вывода сниппета pdoUsers.
Пока не знаю насколько это оптимально, но главное, что работает…
P.S. На самом деле я сделал так изначально, но результат выдывало = 0;
Оказалось, что я не внимательно прописал один плейсхолдер pdoUsers.
Василий, пожалуйста подскажите. Можно ли сортировать выдачу pdoUsers по плейсхолдеру стороннего сниппета?
Как мне, вызывая pdoUsers, сделать сортировку выдачи по плейсхолдеру [[+ticketprocent]]?
[[!pdoUsers? &tpl=`tpl_rating_users` …]]
У меня в чанке tpl_rating_users вызывается еще один сниппет (VoteProcent), который, например, умножает один плейсхолдер выданый pdoUsers на другой, после чего выдает свой плейсхолдер [[+ticketprocent]].Как мне, вызывая pdoUsers, сделать сортировку выдачи по плейсхолдеру [[+ticketprocent]]?
Можно ли сортировать выдачу pdoUsers по плейсхолдеру стороннего сниппета?Нет, нельзя.
Сортировка происходит в базе данных при выборке результатов, а сторонний сниппет работает уже позже, оформляя данные.
Василий, маленький баг: [[+stars_tickets]] возвращает на 1 меньше чем есть на самом деле.
- Количество тикетов
- Количество комментариев
- Просмотров
- Сколько тикетов или комментов автора было добавлено в избранное
- Сколько было отдано голосов за тикеты и комменты автора
Скорее просто у тебя один тикет удалён или неопубликован.
Может делаю что неправильно…
В плагине
В плагине
$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>
Количество выводящихся тикетов всегда больше чем значение в плейсхолдере, иногда на много.
Посмотрел в БД — значения колонок(stars_tickets, stars_comments) таблицы tickets_authors не соответствует тому что содержится в таблице tickets_stars.
И в админке на вкладке авторы тоже не верные данные выводятся.
И в админке на вкладке авторы тоже не верные данные выводятся.
Выше уже обсуждали, что рейтинги работают только с тикетами и комментариями к ним. Обычные ресурсы пока не поддерживаются, данные для них не учитываются.
У нас здесь всё считается точно, насколько я вижу.
У нас здесь всё считается точно, насколько я вижу.
Это я читал и понял. У меня только тикеты и комментарии к ним.
По данным таблицы tickets_authors — такое ощущение что данные в колонках stars_tickets и stars_comments заполняются не по столбцу createdby таблицы tickets_stars, а по столбцу owner той же таблицы.
Василий, где то есть ошибка.
По данным таблицы tickets_authors — такое ощущение что данные в колонках stars_tickets и stars_comments заполняются не по столбцу createdby таблицы tickets_stars, а по столбцу owner той же таблицы.
Василий, где то есть ошибка.
Естественно. Добавления избранного считается автору того, что добавили, а не тому, кто добавил.
Ты бы заметку то прочитал, там это написано:
Ты бы заметку то прочитал, там это написано:
Было бы неплохо сделать настройку в тикете, о запрете комментировать. Понимаю, что это можно решить шаблоном, но тем не менее…
можно закрыть ветвь
Да вы что? А если запись не предполагает комментирование? Остаётся только менять шаблон.
Кстати, попробуйте закрыть ветвь в которой нет комментариев.
Кстати, попробуйте закрыть ветвь в которой нет комментариев.
А почему у записей с комментирование и без комментирования один шаблон? Шаблоны экономим, или что?
Ну сделай тогда ТВ параметр disable_comments:
Ну сделай тогда ТВ параметр disable_comments:
[[[[*disable_comments:isnot=`1`:then=`TicketCommenst@MyParams`]]]]
Я бы не говорил об этом, если бы это было документировано. По-моему, это только усложняет всю разработку. У любого подобного компонента эта настройка есть, как само-собой разумеющееся.
Ну так используй этот любой подобный компонент, с мега-настройками.
Зачем тебе кривобокий Tickets, где нет важнейшей функции, которая за 2.5 года его существования, вдруг оказалась необходимой только тебе?
Нет желания? Ну так и у меня нет, уже давно надоело жилы рвать ради неблагодарности.
Зачем тебе кривобокий Tickets, где нет важнейшей функции, которая за 2.5 года его существования, вдруг оказалась необходимой только тебе?
если бы это было документированоНу так возьми и задокументируй — возможность для этого давно есть. Сядь вот на майские праздники и напиши всё, что знаешь о Tickets в документации, а я проверю потом и добавлю в репозиторий.
Нет желания? Ну так и у меня нет, уже давно надоело жилы рвать ради неблагодарности.
Что за манера дерзить? Неужели попроще быть нельзя?
Пока что здесь дерзишь только ты.
Слабо назвать дополнения для блогов и комментариев MODX с требуемой тобой настройкой?
Слабо назвать дополнения для блогов и комментариев MODX с требуемой тобой настройкой?
Здравствуйте, Василий!
Подскажите, пожалуйста, что не так у меня в настройках комментариев Tickets.
Не работает предпросмотр и комментарии не отправляются.
Журнал ошибок (я, пока, не понимаю, как разобраться какие тут ошибки):
Подскажите, пожалуйста, что не так у меня в настройках комментариев 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}
Не работает предпросмотр и комментарии не отправляются.jQuery подключи.
Спасибо!
Всё заработало.
Всё заработало.
Василий, пожалуйста, подскажите, как в панели статистик, что под каждым тикетом, кроме всего прочего, вывести плейсхолдеры:
— рейтинг автора;
— количество лайков за посты автора;
— количество добавленных им в избранное;
— в общем те значения, что находятся в таблице tickets_authors.
Интересует, чтоб выводило в панелях как в общей ленте. Вызывая, например, так:
[[!pdoPage? &element=`getTickets` &tpl=`tpl_Tickets.list.row`]]
Так и в панели по самим тикетом. Вызывая, например, так:
[[!TicketMeta? &tpl=`tpl_Tickets.meta`]]
Вопрос, можно ли в вызове этих сниппетов, прописать какой-то параметр, который будет делать дополнительную выборку в таблице tickets_authors и отдавать соответствующие плейсхолдеры?
Если нет, то как оптимально это реализовать?
— рейтинг автора;
— количество лайков за посты автора;
— количество добавленных им в избранное;
— в общем те значения, что находятся в таблице tickets_authors.
Интересует, чтоб выводило в панелях как в общей ленте. Вызывая, например, так:
[[!pdoPage? &element=`getTickets` &tpl=`tpl_Tickets.list.row`]]
Так и в панели по самим тикетом. Вызывая, например, так:
[[!TicketMeta? &tpl=`tpl_Tickets.meta`]]
Вопрос, можно ли в вызове этих сниппетов, прописать какой-то параметр, который будет делать дополнительную выборку в таблице tickets_authors и отдавать соответствующие плейсхолдеры?
Если нет, то как оптимально это реализовать?
Как вариант.
Можно, если хочу вывести ленту тикетов, при вызове [[!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.
Но, думается мне, это как-то уж совсем не оптимально…
Василий, подскажите как быть, направьте на правильный путь…
Можно, если хочу вывести ленту тикетов, при вызове [[!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.
Но, думается мне, это как-то уж совсем не оптимально…
Василий, подскажите как быть, направьте на правильный путь…
Я так понял, сейчас получается, что таблица tickets_authors есть, но в сниппетах getTickets и TicketMeta не прописано к ней обращения и соответственно нет плейсхолдеров.
Если это так, то, возможно, стоит внести изменения?)
Это было бы логично, чтоб в панели под тикетами были не только: количество просмотров, количество голосов и звезд, но и рейтинг пользователя…
Если это так, то, возможно, стоит внести изменения?)
Это было бы логично, чтоб в панели под тикетами были не только: количество просмотров, количество голосов и звезд, но и рейтинг пользователя…
Это было бы логично, чтоб в панели под тикетами были не только: количество просмотров, количество голосов и звезд, но и рейтинг пользователя…Я так не считаю.
Взять хотяб хабр… Ну да ладно, на вкус и цвет…
Василий, подскажите, как оптимальней реализовать вопрос, что чуть выше?
Василий, подскажите, как оптимальней реализовать вопрос, что чуть выше?
Василий, пожалуйста, подскажите, как в панели статистик, что под каждым тикетом, кроме всего прочего, вывести плейсхолдеры:
— рейтинг автора;
— количество лайков за посты автора;
— количество добавленных им в избранное;
— в общем те значения, что находятся в таблице tickets_authors.
Интересует, чтоб выводило в панелях как в общей ленте. Вызывая, например, так:
[[!pdoPage? &element=`getTickets` &tpl=`tpl_Tickets.list.row`]]
Так и в панели по самим тикетом. Вызывая, например, так:
[[!TicketMeta? &tpl=`tpl_Tickets.meta`]]
Вопрос, можно ли в вызове этих сниппетов, прописать какой-то параметр, который будет делать дополнительную выборку в таблице tickets_authors и отдавать соответствующие плейсхолдеры?
Если нет, то как оптимально это реализовать?
На том же Хабре в списке статей рейтинга нет.
А В TicketsMeta, может, и стоит добавить, но я пока занят другими делами.
А В TicketsMeta, может, и стоит добавить, но я пока занят другими делами.
Василий, простите за оффтоп: где можно писать предложения по возможному дальнейшему развитию компонентов? Tickets, в частности. С вариантами платной доработки. Дайте ссылку, пожалуйста.
гитхаб, новый issue
Спасибо!
Василий, подскажите как скрыть «форму для комментирования» и выводить кнопку «Написать комментарий», как здесь на сайте.
У меня, по умолчанию, скрыта кнопка «Написать комментарий» и выводится «форма для комментирования».
Спасибо.
У меня, по умолчанию, скрыта кнопка «Написать комментарий» и выводится «форма для комментирования».
Спасибо.
Ты не поверишь:
#comment-form { display: none; }
ПросмотрыОчки же даются тому, кто просмотрел? Или автору тикета?
Очки за просмотр тикетов в этом разделе.
Тому, кто просмотрел.
У меня пара вопросов:
1. просмотр страницы считается только зарегеным пользователем? Если да, то как сделать подсчет любого посетителя?
2. выставлять оценку могут тока зарегеные пользователи? Если да, то как сделать, чтобы могли все это делать?
1. просмотр страницы считается только зарегеным пользователем? Если да, то как сделать подсчет любого посетителя?
2. выставлять оценку могут тока зарегеные пользователи? Если да, то как сделать, чтобы могли все это делать?
Василий, здравствуйте.
Надеюсь, Вы мне поможете.
Я на своём сайте установил 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 есть такой блок:
Спасибо.
Надеюсь, Вы мне поможете.
Я на своём сайте установил 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 сайта? И что ещё нужно изменить в других чанках или сниппетах, чтобы всё это работало?Спасибо.
Чтоб не создавать ветку)
порой в ошибка появляется
порой в ошибка появляется
[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'
)
Отчего это?
Тоже постоянно эта ошибка сыпется в логи, один в один…
Может, конечно, немного не в тему, но
очень не хватает в тикетах кнопок «Предыдущий тикет»,«Вверх» и «Следующий тикет», как это реализовано в товарах в минишопе.
Приходится постоянно возвращаться к секции тикетов, искать отредактированный тикет и переходить к следующему, а это ужасно неудобно, когда тикетов очень много! Неудобно, потому что тикеты в дереве не отображаются, и приходится долго искать соседний.
На компьютере мышкой ещё нажимал на среднюю кнопку мыши для открытия статьи в соседней вкладке, но на ноутбуке это очень неудобно…
очень не хватает в тикетах кнопок «Предыдущий тикет»,
Приходится постоянно возвращаться к секции тикетов, искать отредактированный тикет и переходить к следующему, а это ужасно неудобно, когда тикетов очень много! Неудобно, потому что тикеты в дереве не отображаются, и приходится долго искать соседний.
На компьютере мышкой ещё нажимал на среднюю кнопку мыши для открытия статьи в соседней вкладке, но на ноутбуке это очень неудобно…
На ноутбуке советую Alt+Click, во всяком случае на маках это открывает ссылки в новых окнах.
По всему остальному — планов улучшать Tickets у меня нет, никто не горит это оплачивать.
По всему остальному — планов улучшать Tickets у меня нет, никто не горит это оплачивать.
Спасибо за совет! На семёрке (Windows 7) открывается при нажатой Ctrl+Click, хоть какое-то облегченье…
А сколько ты возьмёшь за добавление кнопок «Назад» и «Вперёд»? Может быть есть смысл собраться и оплатить — функция нужная и подразумевающаяся во всех структурах, которые работают на тикетах.
А сколько ты возьмёшь за добавление кнопок «Назад» и «Вперёд»? Может быть есть смысл собраться и оплатить — функция нужная и подразумевающаяся во всех структурах, которые работают на тикетах.
Здравствуйте. Помогите пожалуйста, возникла проблема. Решил обновить сайт с modx 2.2.16 на 2.3.5 и естественно заодно обновил и все компоненты на последние, включая Tickets (был 1.4.2).
Теперь при оправке тикета с фото, с фронта не меняются пути картинки с 0 на id, остаются /assets/images/tickets/0/… причем все отображается, картинка помещается в папку 0
Все изменения откатил и попробовал обновить только Tickets, не трогая modx. Ситуация та же.
Теперь при оправке тикета с фото, с фронта не меняются пути картинки с 0 на id, остаются /assets/images/tickets/0/… причем все отображается, картинка помещается в папку 0
Все изменения откатил и попробовал обновить только Tickets, не трогая modx. Ситуация та же.
Такая проблема уже была раньше, до перехода на Tickets 1.4.2, после обновления на 1.4.2 все заработало.
Обновил Tickets на другом сайте, все хорошо никаких проблем. В чем дело понять не могу.
Есть ли возможность добавлять комменты через свои сниппеты?
Возможно ли отправлять уведомление о комменте на email администратору?
Благодарен за труб.
Возможно ли отправлять уведомление о комменте на email администратору?
Благодарен за труб.
Есть ли возможность добавлять комменты через свои сниппеты?Добавляй конечно, кто тебе может помешать?
Возможно ли отправлять уведомление о комменте на email администратору?Конечно, есть специальные системные настройки для уведомлений админов.
Нужна все же подсказка, не могу создать коммент через процессор, в логах пустая запись
$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';
}
Спасибо
$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';
}
Спасибо
нет идей?
Василий, может быт уже есть тема в которой ты рассказываешь как вывести список пользователей с рейтингами и тикетами, наподобие реализации нашей страницы «Пользователи»? Никак не пойму чего и куда джойнить нужно, чтобы через pdoUsers вывести эту красоту.
В заметке есть рабочий пример, смотри абзац с заголовком «Работа с pdoUsers».
Ага, спасибо. Не сразу понял, что после обращения к классу можно выводить плейсхолдерами [[+rating]] и т.д. Удобно!
Василий, подскажи, пожалуйста, — как сортировать тикеты по рейтингу? Добавлю в доки.
Не работает настройка по умолчанию «Скрыть в меню».
Выставлено не показывать, но в новых тикетах все равно приходится проставлять данную позицию в ручную.
Подскажите как поправить.
Спасибо.
Выставлено не показывать, но в новых тикетах все равно приходится проставлять данную позицию в ручную.
Подскажите как поправить.
Спасибо.
Здравствуйте, а подскажите, как реализовать загрузку файлов именно к комментариям? А то я как понял можно только к тикету его прикреплять, а в комментариях только ссылку на картинку, а загрузки на сервер нет.
Здравствуйте, подскажите, пожалуйста, как добавить колонку со своим TV в таблицу тикетов?
Василий, Jevix почему-то вырезает параметр rel у тега a. Все остальные параметры остаются. Настройки такие. Подскажи, как тут настроен тег а.
У меня всё ровно так же.
Или кэш, или ты меняешь параметр в наборе Tickets, а проверяешь в комментариях, у которых свой набор Comment.
Или кэш, или ты меняешь параметр в наборе Tickets, а проверяешь в комментариях, у которых свой набор Comment.
Проверяю в тикетах. Если отметить «Отключить Jevix», то rel появляется. Но не хочется отключать. Все кэши чистил и сайта и браузера. Странно как-то.
П.С. В предыдущем комментарии хотел обратить внимание на отсутствие лексикона для двух параметров.
П.С. В предыдущем комментарии хотел обратить внимание на отсутствие лексикона для двух параметров.
Рейтинг увеличивается, если добавлять свои записи в избранное.
Василий, а подскажи пожалуйста, а можно ли как-нибудь сделать обязательным к тикету, добавить хотябы один файл? т.е. если пользователь не прикрепил не один файл форма не отправляется… чёт я никак не придумаю решение…
$user = $modx->getObject('modUser', 10);
if ($profile = $user->getOne('AuthorProfile')) {
print_r($profile->refreshRatings());
}
Скажите пожалуйста, этот код из статьи ещё актуален? Ничего не изменилось с тех пор в плане обновления рейтинга автора?У меня логика построена на этом коде, который у меня не работает. И в Console тоже уходит в бесконечное выполнение…
Так как обновить рейтинг конкретного пользователя? Код из статьи не срабатывает в дополнении 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
Очепятка, нужно использовать refreshActions.
Мне кажется, ты мог бы просто посмотреть, какие вообще методы есть в TicketAuthor, чем просто ждать ответа полгода.
Мне кажется, ты мог бы просто посмотреть, какие вообще методы есть в TicketAuthor, чем просто ждать ответа полгода.
Спасибо! Тогда столкнулся, но было не столь актуально и не стал копать. Сейчас снова всплыл вопрос.
Спасибо за поправку!
Спасибо за поправку!
Василий, обрати, пожалуйста, внимание на это обсуждение.
Версия 1.6.16-pl
Установили на новый сайт, создали раздел с тикетами, создаем тикет — нет кнопок сохранить, просмотр и т.п.
В чем может быть дело?
Установили на новый сайт, создали раздел с тикетами, создаем тикет — нет кнопок сохранить, просмотр и т.п.
В чем может быть дело?
1.7.6-pl -текущая версия на сегодня
Полагаю, с ней все будет норм.
Полагаю, с ней все будет норм.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.