Файловый менеджер для CRM
Очень часто к MS CRM прикручивают функции файловых менеджеров, т.е. делают из него своего рода систему документооборота. Это нужно в основном для хранения различной документации по клиентам и договорам которые ведутся в CRM. Одним из наиболее упоминаемых способов является использование контролов SharePoint. Но SharePoint есть далеко не у всех и далеко не все захотят его установить ради одной «фичи» 🙂 Поэтому воспользуемся другими предложениями на рынке OpenSource! 🙂 И тут Вас ждет сюрприз… логично было бы использовать вместе с MS CRM файловый веб-менеджер на основе ASP.NET. Но к сожалению ситуация на этом фронте весьма печальна – их нет! А те что есть мягко говоря не очень (как по качеству так и по подаче материала). Поэтому обратимся к детищам других платформ (а что? никто не клялся в верности .Net’у 🙂 ). А именно – к PHP 🙂
Итак, задача на сегодня: прикрутить к MS CRM открытый файловый веб-менеджер elFinder (выбор был сделан как по критериям качества, так и по наличию русскоязычной документации и форуму поддержки)!
Дружим PHP и IIS
Т.к. elFinder работает на PHP, то первым делом нужно заставить IIS понимать этот язык (что он конечно, по идеологическим причинам, по дефолту делать не хочет 🙂 ). Приступим:
- Для начала необходимо включить в IIS модуль FastCGI, с помощью которого и будет происходить работа PHP-интерпритатора:
- Перейдите Start — All Progrms — Administrative Tools — Server Manager;
- В дереве на левой панели разверните узел Roles и выделите пункт Web Server (IIS). Прокрутуте основную область до раздела Role Services и щелкните Add Role Services;
- Откроется окно визарда в котором Вы сможете доустановить необходимые компоненты. В данном случае нам необходим только один – CGI – его и выделяйте галкой. Завершите установку.
- Далее, с php.net качаем последний стабильный релиз PHP-интерпритатора (обязательно zip в виде бинарный файлов Windows). З.Ы. в данном примере используется версия 5.2.13 (локальное зеркало: php-5.2.13-Win32.zip). Разархивируйте архив в папку inetpub;
- Откройте папку в которую разархивировали PHP и найдите файл php.ini-recommended. Переименуйте его в php.ini.
- Сейчас осталось самую малость: заставить IIS использовать PHP-интерпритатор при обработке файлов с расширением *.php (основное расширение php-приложений). Но маленькое отступление: в целом можно настроить использование PHP-интерпритатора для всего IIS’а, но т.к. я собираюсь расположить elFinder в папке ISV\filemanager сайта CRM, то достаточно будет чтобы сопоставление файлов *.php (с PHP-интерпритатором) работало только для для этой папки. Поэтому:
- Создайте в папке <сайт CRM>\ISV подпапку filemanager;
- Откройте IIS и разверните иерархическое дереве сайта CRM до только что созданной папки filemanager;
- В основной области IIS (представлении Features View) дважды щелкните на Handler Mappings.
- Откроется список сопоставлений различных ресурсов (DLL-файлов например) с различными расширениями файлов. Нам необходимо добавить новое для *.php 🙂 Щелкните правой кнопкой где-нибудь на списке и выберите Add Module Mapping. В открывшемся диалоге сделайте такие настройки:
- Request Path: *.php
- Module: FastCgiModuale
- Executable: путь к файлу php-cgi.exe, который находится в распакованном архиве (в данном примере архив был распакован в папку inetpub\php)
- Name: любое имя для создаваемого сопоставления (лучше «гворящее» 🙂 )
- Ну, что же… PHP настроен 🙂 пора настраивать файл-менеджер 🙂
П.С. В качестве теста Вы можете создать в папке filemanager файл test.php (название можете изменить) с таким содержимым:
<?php phpinfo(); ?>
И открыть его по URL:
http://<сервер CRM>/isv/filemanager/test.php
В браузере должна отобразится служебная информация об установленном PHP-интерпритаторе 🙂
Установка elFinder’а
- Скачайте последнюю версию elFinder’а (в данном примере использовалась версия 1.1; локальная копия: elFinder 1.1);
- Разархивируйте содержимое архива в папку filemanager, созданную на предыдущем этапе;
- Переименуйте файл elfinder.php.html (расположенный в корневой директории) в elfinder.php и откройте в каком-нибудь текстовом редакторе. Замените его содержимое на следующее:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>elFinder</title> <!-- <script type='text/javascript' src='http://getfirebug.com/releases/lite/1.2/firebug-lite-compressed.js'></script> --> <link rel="stylesheet" href="js/ui-themes/base/ui.all.css" type="text/css" media="screen" title="no title" charset="utf-8"> <link rel="stylesheet" href="css/elfinder.css" type="text/css" media="screen" title="no title" charset="utf-8"> <!-- <script src="js/jquery-1.3.2.min.js" type="text/javascript" charset="utf-8"></script> <script src="js/jquery-ui-1.8b1.min.js" type="text/javascript" charset="utf-8"></script> --> <script src="js/jquery-1.4.1.min.js" type="text/javascript" charset="utf-8"></script> <script src="js/jquery-ui-1.7.2.custom.min.js" type="text/javascript" charset="utf-8"></script> <script src="js/elfinder.min.js" type="text/javascript" charset="utf-8"></script> <script src="js/i18n/elfinder.ru.js" type="text/javascript" charset="utf-8"></script> <script type="text/javascript" charset="utf-8"> $().ready(function() { var f = $('#finder').elfinder({ url : 'connectors/php/connector.php', lang : 'ru' }) }); // Динамическое изменение размеров elFinder'а для заполнения всего доступного пространства $(window).resize(function() { var root = document.getElementById('finder'); root.childNodes[1].childNodes[0].style.height = (parent.document.body.clientHeight - 241); root.childNodes[1].childNodes[1].style.height = (parent.document.body.clientHeight - 241); }); </script> </head> <body> <div id="finder">finder</div> </body> </html>
- Откройте в текстовом редакторе файл filemanager\css\elfinder.css и внестие в него такие изменения:
- Добавьте селектор для тега BODY:
body { margin: 0; padding: 0; }
- Удалите свойство width для класса .el-finder;
- Добавьте селектор для тега BODY:
- Далее открйте файл filemanager\connectors\php\connector.php и измените параметры root и URL в соответствии с расположением той папки, которая будет являться корневой дирректорией для файл-менеджера;
Нуссс, приготовления в самим elFinder’ом закончены, теперь займемся CRM 🙂
- Откройте форму редактирования объекта, на котором хотите разместить файл-менеджер;
- Добавьте новую вкладку и новый раздел на ней. В этотм размеле создайте iFrame:
- В качестве URL iFrame’а укажите:
- Обязательно снимите галку ограничивающую использование сценариев между кадрами;
- Помимо этого поставьте галку разворачивать iFrame на всю доступную область, запретите полосы прокрутки и уберите отображение границ (настроки находятся на второй вкладке);
- Публикуем и любуемся 🙂
З.Ы. По дефолту у учетки под которой работает сайт нет доступа на создание и/или изменение файлов в папке files (которую я использую в данном примере). Поэтому попытка закачать файл на сервер приведет к ошибке. Чтобы это исправить выдайте для этой папке (или той что используется у Вас) все права для учетке Everyone: правый щелчек по папке — Properties — вкладка Security — Edit — Add — ищем юзвера Everyone, Ок — выдаем все права — Ок 🙂
Интересно, но зачем разводить технологический зоопарк на сервере?
Я бы посмотрел в сторону WebDAV. Пример: http://www.webdavsystem.com/ajaxfilebrowser
Полностью скриптовый (JS) клиент.
Хотя, через sharepoint, наверное, полегче будет: http://blogs.msdn.com/b/crm/archive/2007/04/18/integrating-windows-explorer-files-and-folders-into-crm-tabs.aspx
1. Цена 🙂
2. SP — лень изучать (пока) 🙂
Напишите коннектор на .net и мы включим его в дистрибутив efinder. Протокол довольно простой и хорошо документирован в нашем wiki http://elrte.ru/redmine/projects/elfinder/wiki/Client-Server_Protocol_RU
Ну, это будет несколько проблематично 🙂 Я не программист 🙂 а то что выше — это хобби 🙂
Хорошее у тебя Хобби! Им можно на жизнь зарабатывать!
Здравствуйте! у меня стоит Microsoft WINDOWS Server 2003 R2 Standart Edition Service Pack 2.
на нем в AdministrativeTools нет Service Manager а есть только Manager Your Server и там нет такого менб как у вас на скриншотах.
Как мне в моем случае настроить PHP?
Спасибо!
Ну, да там менюшки отличаются 🙂 но в интете полно опсаний, как поставить PHP на 2003 сервер
http://www.google.ru/#hl=ru&source=hp&q=install+PHP+to+2003&aq=f&aqi=&aql=&oq=&gs_rfai=&fp=3f69c78786943c13