tolanych

tolanych

С нами с 02 декабря 2018; Место в рейтинге пользователей: #45
tolanych
13 апреля 2019, 21:44
1
0
Проверил на 2.7.1, работает.
Во время теста заметил, что упустил еще момент в этом плагине, не отсылались ответы гостям, в $scriptProperties для этого еще надо добавить 'allowGuestEmails' => 1, мб это был как раз ваш случай
tolanych
13 апреля 2019, 19:53
1
0
Да, работает, правда проверял только на 2.6.5
По части плагина всё правильно, видимо проблема где-то в другом месте
tolanych
12 апреля 2019, 10:12
1
0
Что я упустил?
Привет, похоже это я упустил, добавляя функционал комментирования в админку. В ближайшем обновлении Tickets поправлю. Здесь и сейчас по быстрому решить это можешь с помощью плагина на событие OnCommentSave

switch ($modx->event->name) {
    case 'OnCommentSave':
        if ($modx->context->key == 'mgr' && $mode == 'new') {
            // тут описать функционал отправки письма, сам комментарий в переменной $object;
        }
}
tolanych
20 марта 2019, 16:46
+1
Настройкой форм это не решится, решения из коробки нет. Переопределение вкладок в редактировании тикетов вот здесь, отсюда можно и начинать копать.
tolanych
20 февраля 2019, 09:59
+1
На самом деле хранение в сессии это костыль.
Правильный подход к веб-разработке не выводить POST, а после POST-запроса выполнить редирект на страницу с выводом обработанных данных из БД/другого хранилища
tolanych
09 февраля 2019, 19:36
0
Для приватного общения с автором можно нашаманить обертку над модх-овскими личными сообщениями — habr.com/ru/post/132802/
tolanych
06 февраля 2019, 22:42
0
Привет, уже обсуждалось в этой ветке:
modx.pro/components/17235#comment-105731

Предлагались следующие пути решения:
  • использовать utf8 без mb4
  • либо обновить версию сервера mySQL и подкрутить настройки sysvar_innodb_large_prefix, чтобы влазить в лимит длины ключа
  • либо перед установкой создать таблицу вручную с меньшей длиной поля name
tolanych
28 января 2019, 23:10
0
я у тебя в ЛС попросил подробности, проверь почту ;)
tolanych
28 января 2019, 14:56
0
Учтет, что уже инциализрован, но в каждом сниппете нужно индивидуально смотреть. В теории всё хорошо, на практике есть ньюансы. Например после вызова сниппета GetTicket вызову сниппет TicketForm и он еще внутри себя подключает web/files.js и TicketsConfig.source, поэтому если есть потребность отрубить что-то на корню, лучше скопируй сниппеты, прочитай исходники и подправь под свою задачу.

По феншую в твоем случае лучше вообще доработать сам тикетс и добавить в качестве настройки возможность задавать кастомный TicketsConfig
tolanych
27 января 2019, 15:46
+2
Всю магию делал в файле items.grid.js

в рендерере для ссылки добавил атрибут myattr, в котором помещается текст, который нужно кидать в searchbox и класс myClick, по которому элемент буду отлавливать
_renderUserCell: function(val, cell, row, rowIndex, colIndex, store, view) {
	return  '<a href="javascript:void(0);" class="myClick" myattr="'+row.get('pagetitle')+'">' + row.get('pagetitle') + '</a><br /><small>(' + val + ')</small>';
},
В getTopBar для field-search добавил id
...
xtype: 'mycomponent-field-search',
id: 'my-search-block',
width: 250,
...
(это стандартный поиск, тебе соответственно id добавлять в своё поле «Автор»)

в методе onClick от modExtra есть стандартная проверка на if (elem.nodeName == 'BUTTON') {
после неё добавил
if (elem.nodeName == 'A' && elem.className == 'myClick') {
	search = Ext.getCmp('my-search-block'); //ищу блок поиска по id
	search.setValue(elem.getAttribute('myattr')); //в него ставлю поисковой текст
	search._triggerSearch(); //имитируем нажатие кнопки
}
tolanych
27 января 2019, 14:28
1
0
Не очень понял, что нужно и какие цели преследуются.
Чтобы не регистрировались js — не вызывай сниппет, а просто рисуй форму, которая нужна.

Либо пример как достичь такого эффекта с вызовом сниппета getTicket:
начальные строки его заменить на:
$Tickets = $modx->getService('tickets', 'Tickets', $modx->getOption('tickets.core_path', null,
        $modx->getOption('core_path') . 'components/tickets/') . 'model/tickets/', $scriptProperties);
$Tickets->initialized['web'] = true;
$Tickets->initialize($modx->context->key, $scriptProperties);
и системные настройки tickets.frontend_css, tickets.frontend_js сделать пустыми
tolanych
24 января 2019, 22:51
+1
Проверил у себя с вызовом сниппета и чанком указанным в посте — работает. Права доступа такие же

tolanych
18 января 2019, 21:59
0
Попробуй перед очисткой корзины в файле /core/components/tickets/model/tickets/ticket.class.php в методе remove
со строчки 667 закомментировать этот блок

if ($total = $this->xpdo->getObject('TicketTotal', array('id' => $this->parent, 'class' => 'TicketsSection'))) {
    $total->set('children', $total->get('children') - 1);
    $total->save();
}
tolanych
08 января 2019, 22:21
+2
switch ($modx->event->name) {
    case 'OnCommentSave':
        $author = $TicketComment->createdby;
        $text = $TicketComment->text;
        do_magic();
        break;
}
tolanych
05 января 2019, 19:08
0
Обновить на сервере mySQL до 5.7 и выше и включить опцию innodb_large_prefix.
Либо сменить кодировку БД на обычный utf8.
tolanych
03 января 2019, 14:25
0
utf8mb4 не плох, и отказываться от него не обязательно. Есть вариант — обновить версию mySQL, где лимит индекса увеличен, подкрутить конфиг (https://dev.mysql.com/doc/refman/5.7/en/innodb-parameters.html#sysvar_innodb_large_prefix) и дальше невозбранно пользоваться utf8mb4. Просто это уже направление к сисдамину/хостеру или кто там настраивает сервер. А вариант со сменой на обычный utf8 — это то, что и рядовому кодеру подвластно.
tolanych
02 января 2019, 00:19
+1
Предлагаю нагуглить причину и решение по тексту ошибки — «Specified key was too long; max key length is 767 bytes» :)

По тому, что нагуглил я, есть предположение, что либо сервер древний с жесткими лимитами, либо кодировка БД стоит utf8mb4. Если ни то, ни другое, нужно дополнительное обследование пациента (чистая установка modx, tickets и т.д.)