Подключить вкладку с комментариями Tickets

Добрый день.

Подскажите, как подключить вкладку с комментариями Tickets к простому ресурсу с определенным шаблоном в менеджере?
De Ribaskin
20 июля 2015, 13:48
modx.pro
9
2 726
+3

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

Abu
Abu
20 июля 2015, 19:54
0
Предполагаю, что определенным вызовом сниппета TicketComments
    De Ribaskin
    20 июля 2015, 21:36
    0
    Сниппет он на фронтенде выводит комментарии. Мне надо в менеджере у стандартного ресурса сделать вкладочку «Комментарии» как у ресурса Tickets.
      Максим Кузнецов
      20 июля 2015, 22:05
      0
      Дополнительные табы реализуются при помощи ExtJS. (примеры)

      Что же до аналога вкладки tickets'ов — можно или расширить его ядро в том месте, где определяется этот таб (не рекомендуется, т.к. при обновлении расширения все слетит) или сэмулировать его вызов внутри свежесозданного таба, по аналогии с тем, как он вызывается для tickets'ов. В этом случае минусом будет то, что при изменении данного вызова для tickets'ов в новых версиях, ваша версия закладки комментариев для прочих ресурсов станет устаревшей.
    Василий Наумкин
    21 июля 2015, 07:28
    0
    Думаю, можно написать плагин, который будет подключать эту вкладку к ресурсу так, чтобы ничего не ломалось при обновлениях, но бесплатно проверять лень.
      De Ribaskin
      21 июля 2015, 08:29
      0
      Сколько и куда кидать? )
        Василий Наумкин
        21 июля 2015, 09:26
        0
        2000 рублей, вот здесь. Уже проверил, всё работает.
          De Ribaskin
          21 июля 2015, 11:39
          0
          Василий, а через webmoney нет способа оплаты?
            Василий Наумкин
            21 июля 2015, 12:13
            0
            Пока что вот такая беда
              De Ribaskin
              21 июля 2015, 12:25
              0
              Василий, а у тебя кошелька нет? Я напрямую бы кинул.
                Василий Наумкин
                21 июля 2015, 12:28
                0
                Кидай на R100477009970, выеду куда-нибудь.
                  De Ribaskin
                  21 июля 2015, 12:33
                  0
                  Отправил :)
                    Василий Наумкин
                    21 июля 2015, 12:36
                    0
                    Тебе как, тайно код отправить, или чтобы все видели?
                      De Ribaskin
                      21 июля 2015, 12:39
                      +4
                      Да пусть все видят. Можно вообще плагин в тикетс включить отключенным, кому надо — включили и пользуют.
                        Василий Наумкин
                        21 июля 2015, 12:42
                        4
                        +3
                        <?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);
                        	}
                        }
                        Может и включу потом, да. Но пока это твой эксклюзив =)
                        De Ribaskin
                        21 июля 2015, 12:43
                        0
                        Спасибо :)
    De Ribaskin
    21 июля 2015, 12:59
    0
    Вставил вот такое условие и все замечательно работает! :)
    $templates = array(4, 6, 7);
    $current_template = $resource->get('template');
    
    if (in_array($current_template, $templates)) {
    ...
    }
    Еще раз спасибо Василий!
    Павел Романов
    28 февраля 2023, 14:17
    0
    Если вкладка есть, но комментарии не выводятся, а в консоли ошибка по поводу отсутствия функции 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);
        }
    }
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      18