четверг, 28 сентября 2017 г.

Предпросмотр для приложенных файлов в списках CRM Битрикс24

Такой вот необычный кейс был реализован нами для одного из наших клиентов. Возникла необходимость показывать предпросмотры вложений - документов различного формата в коробочной версии Битрикс24 в списках CRM:



Для реализации данного кейса на сервер Битрикс24 клиента были установлены расширения ImageMagick и Libreoffice для PHP.

Для устновки ImageMagick необходимо ввести в командной панели ssh следующие команды:

yum install ImageMagick ImageMagick-devel
yum install php-pear gcc make php-devel
pecl install imagick

на вопрос "Please proivde prefix..." пишем all

echo "extension=imagick.so" > /etc/php.d/imagick.ini

затем ребутим апач

service httpd restart

и проверяем что все установлено

php -m | grep imagick


Установка Libreoffice осуществляется следующим образом:

yum install libreoffice-headless
yum install libreoffice-writer
yum install libreoffice-calc

shell_exec('/usr/bin/libreoffice --headless -convert-to pdf --outdir /home/bitrix/ext_www/portal.bitrix.center /home/bitrix/ext_www/portal.bitrix.center/testdoc.doc');


После этого мы завели хайлоадблок для хранения превью файлов, и добавили в систему 2 обработчика: для события

$eventManager->addEventHandler('disk', 'onAfterAddFile', function (\Bitrix\Main\Event $event)
{
...
}

и для события 

$eventManager->addEventHandler('disk', 'onAfterDeleteFile', function (\Bitrix\Main\Event $event)
{
...
}

При загрузке нового файла на диск Битрикс24 в зависимости т формата файла для него генерируется превью расширением ImageMagick и/или Libreoffice, далее превью хранится в инфоблоке. Шаблоны компонентов CRM Битрикс24, в которых необходим вывод превью - кастомизированы.

При удалении файла с диска Битрикс24, удаляется превью и удаляется запись о нем из хайлоадблока.