За показ списка «моих дел» на портале Битрикс24 отвечает комплексный компонент bitrix:crm.activity. Для решения задачи необходимо было создавать копию шаблона компонента и кастомизировать его, а это не приветствуется в Битрикс24 (из-за того, что этот шаблон не будет обновляться).
В связи с этим было принято решение создать копию страницы со списком моих дел, разместить на ней компонент bitrix:crm.activity и кастомизировать его шаблон. На текущей странице (далее по тексту будет называть ее стандартной) со списком дел добавить ссылку на новую страницу. Таким образом при добавлении возможности показа компании клиента разработчиками Битрикса, мы увидим это на странице со стандартным шаблоном.
Для решения задачи нам нужно будет сделать следующие действия:
- Создать новую страницу (назовем ее «список с дополнениями») и разместить на ней компонент bitrix:crm.activity;
- Создать копию шаблона этого компонента и кастомизировать его;
- Добавить ссылку на новую страницу на странице со стандартным шаблоном;
Итак, приступим. Первый пункт я описывать не буду, с этим каждый справится, поэтому перейдем сразу ко второму.
Так как компонент bitrix:crm.activity – комплексный, он состоит из нескольких простых. Нужно понять какой простой компонент отвечает за показ списка дел. Это можно выяснить без особых трудностей: им является bitrix:crm.activity.list (шаблон - grid).
Создадим копию шаблона bitrix:crm.activity, назовем его custom, и разместим в папке дефолтного шаблона портала (/bitrix/templates/.default/components/bitrix). Далее переходим в папку шаблона (grid простого компонента bitrix:crm.activity.list.
Для того, чтобы была возможность показывать в таблице новый столбец, нужно добавить массив с его названием и описанием в массив $arResult["HEADERS"]. Это можно сделать с помощью файла result_modifier.php, который будет размещен в папке с шаблоном grid.
Содержимое файла будет следующим:
PHP
После этих действий мы сможем увидеть столбец в шапке таблицы. Его содержание будет такое, как определено в массиве $arCustomHeader («Компания»). Заголовок мы вывели, теперь нужно вывести название компаний клиентов в строках таблицы с планируемыми звонками. Для этого нужно добавить определенный PHP-код в файл template.php.
Найдем в файле строку с условием: if($arResult['DISPLAY_CLIENT']), и вставим перед ней следующий блок кода:
PHP
После добавления кода мы увидим в строках таблицы, которые связаны с планируемыми звонками, название компании, к которой «привязан» клиент.
Также на странице списка с дополнениями необходимо добавить ссылку на стандартную страницу, чтобы после просмотра списка звонков, мы могли бы перейти на страницу со стандартным списком. Разместим ее над таблицей в правом верхнем углу. Так как эта часть страницы списка дел не является частью шаблона компонента bitrix:crm.activity.list, добавление ссылок нужно осуществить с помощью JS. Создадим файл script.js со следующим содержимым:
JavaScript
Приведенный выше код скроет стандартную кнопку с подписью «Список», которая на указанной странице не срабатывает как ссылка на стандартную страницу. Вместо нее разместим «свою» ссылку, ведущую на стандартную страницу со списком, а также HTML-элемент <span>, который будет указывать, что мы находимся на странице списка с дополнением.
Также в нашем шаблоне добавлен файл с CSS-стилями (style.css), который стилизует добавленные ссылки.
Если мы все сделали правильно, то на данный момент страница с кастомизированным списком готова, и мы можем перейти к добавлению ссылки на нее на стандартной странице.
Это можно (и нужно) сделать при помощи JS кода. Для начала создадим скрипт, который будет добавлять ссылку и размещать ее после кнопки «Список» на стандартной странице со списком (как показано на изображении выше). Создадим папку для нашего скрипта в /bitrix/js/. Я назвал ее custom_activity. В ней создадим JS-файл. Например, с именем create_link.js. Для стилизации ссылок, можно создать в этой папке и CSS-файл, с аналогичным именем: create_link.css
JS-код в этом файле будет выглядеть следующим образом:
JavaScript
Этот скрипт похож на приведенный выше – с его помощью в правом верхнем углу в список ссылок над таблицей добавляется новый пункт.
Для того, чтобы этот скрипт запустился и сработал на нужной нам странице, добавим в файл /bitrix/php_interface/init.php следующий код:
PHP
Как можно понять из приведенного выше кода, при наступлении события OnEpilog файл со скриптом подключается и срабатывает в случае если URL текущей страницы равен /crm/activity/.
Если все сделано правильно, то при загрузке страницы со списком моих дел, на ней будет появляться ссылка на страницу с кастомизированным списком, в котором у запланированных звонков будет отображаться компания, к которой «привязан» клиент.