Подключить вкладку с комментариями Tickets
Добрый день.
Подскажите, как подключить вкладку с комментариями Tickets к простому ресурсу с определенным шаблоном в менеджере?
Подскажите, как подключить вкладку с комментариями Tickets к простому ресурсу с определенным шаблоном в менеджере?
Комментарии: 18
Предполагаю, что определенным вызовом сниппета TicketComments
Сниппет он на фронтенде выводит комментарии. Мне надо в менеджере у стандартного ресурса сделать вкладочку «Комментарии» как у ресурса Tickets.
Дополнительные табы реализуются при помощи ExtJS. (примеры)
Что же до аналога вкладки tickets'ов — можно или расширить его ядро в том месте, где определяется этот таб (не рекомендуется, т.к. при обновлении расширения все слетит) или сэмулировать его вызов внутри свежесозданного таба, по аналогии с тем, как он вызывается для tickets'ов. В этом случае минусом будет то, что при изменении данного вызова для tickets'ов в новых версиях, ваша версия закладки комментариев для прочих ресурсов станет устаревшей.
Что же до аналога вкладки tickets'ов — можно или расширить его ядро в том месте, где определяется этот таб (не рекомендуется, т.к. при обновлении расширения все слетит) или сэмулировать его вызов внутри свежесозданного таба, по аналогии с тем, как он вызывается для tickets'ов. В этом случае минусом будет то, что при изменении данного вызова для tickets'ов в новых версиях, ваша версия закладки комментариев для прочих ресурсов станет устаревшей.
Думаю, можно написать плагин, который будет подключать эту вкладку к ресурсу так, чтобы ничего не ломалось при обновлениях, но бесплатно проверять лень.
Сколько и куда кидать? )
Василий, а через webmoney нет способа оплаты?
Василий, а у тебя кошелька нет? Я напрямую бы кинул.
Кидай на R100477009970, выеду куда-нибудь.
Отправил :)
Тебе как, тайно код отправить, или чтобы все видели?
Да пусть все видят. Можно вообще плагин в тикетс включить отключенным, кому надо — включили и пользуют.
<?php
if ($modx->event->name != 'OnDocFormPrerender' || $resource instanceof Ticket || $resource instanceof TicketsSection) {
return;
}
if ($Tickets = $modx->getService('Tickets')) {
$modx->controller->addLexiconTopic('tickets:default');
$Tickets->loadManagerFiles($modx->controller, array(
'config' => true,
'utils' => true,
'css' => true,
'comments' => true,
));
$insert = '
tabs.add({
title: _("comments"),
items: [{
xtype: "tickets-panel-comments",
hidden: false,
record: ' . $modx->toJSON($resource->toArray()) . ',
parents: ' . $resource->id . ',
}]
});
';
if ($modx->getCount('modPlugin', array('name' => 'AjaxManager', 'disabled' => false))) {
$modx->controller->addHtml('
<script type="text/javascript">
Ext.onReady(function() {
window.setTimeout(function() {
var tabs = Ext.getCmp("modx-resource-tabs");
if (tabs) {
' . $insert . '
}
}, 10);
});
</script>', true);
}
else {
$modx->controller->addHtml('
<script type="text/javascript">
Ext.ComponentMgr.onAvailable("modx-resource-tabs", function() {
var tabs = this;
tabs.on("beforerender", function() {
' . $insert . '
});
});
</script>', true);
}
}
Может и включу потом, да. Но пока это твой эксклюзив =)
Спасибо :)
Вставил вот такое условие и все замечательно работает! :)
$templates = array(4, 6, 7);
$current_template = $resource->get('template');
if (in_array($current_template, $templates)) {
...
}
Еще раз спасибо Василий!
На здоровье!
Если вкладка есть, но комментарии не выводятся, а в консоли ошибка по поводу отсутствия функции strftime, добавить подключение файла strftime-min-1.3.js:
$templates = array(4, 6, 7);
if (in_array($resource->get('template'), $templates)) {
if($Tickets = $modx->getService('Tickets')){
$modx->controller->addLexiconTopic('tickets:default');
$modx->controller->addLastJavascript(MODX_ASSETS_URL.'components/tickets/js/mgr/misc/strftime-min-1.3.js');
$Tickets->loadManagerFiles($modx->controller, array(
'config' => true,
'utils' => true,
'css' => true,
'comments' => true,
));
$insert = '
tabs.add({
title: _("comments"),
items: [{
xtype: "tickets-panel-comments",
hidden: false,
record: ' . $modx->toJSON($resource->toArray()) . ',
parents: ' . $resource->id . ',
}]
});
';
$modx->controller->addHtml('
<script>
Ext.ComponentMgr.onAvailable("modx-resource-tabs", function() {
var tabs = this;
tabs.on("beforerender", function() {
' . $insert . '
});
});
</script>', true);
}
}
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.