1. Скачиваем Ajax File and Image Manager с сайта разработчика.
2. Создаем папку assets\plugins\ajaxfilemanager\ и копируем в неё содержимое папки ajaxfilemanager из архива, чтобы внутри появились подпапки
- assets\plugins\ajaxfilemanager\inc\
- assets\plugins\ajaxfilemanager\jscripts\
- assets\plugins\ajaxfilemanager\langs\
- plugins\ajaxfilemanager\session\
- assets\plugins\ajaxfilemanager\theme\
и все вложенные файлы.
3. Идём в папку TinyMCE, сохраняем файл tinymce.functions.php в виде копии, например old_tinymce.functions.php и начинаем редактировать tinymce.functions.php. Предполагаем, что он был из штатной сборки MODx с подключением MCPUK.
Редактирование tinymce.functions.php
Суть настроек TinyMCE в этом файле заключается в формировании средствами PHP огромной строки $tinymceInit, в которую включаются любые настройки редактора. Сам-то редактор написан на Javascript, а MODx — на PHP, вот и требуется специальный «посредник». В отношении файлового менеджера имеется такой код:
Штатные настройки FileBrowser (фрагмент tinymce.functions.php)
if($theme == "editor" || $theme == "custom"){
if($frontend=='false' || ($frontend=='true'&& $webuser))
{ $tinymceInit .= ($use_browser==1 ? "
file_browser_callback: \"myFileBrowser\",\n":"");
В этом кусочке кода в строке $tinymceInit по условию задается в качестве значения для параметра file_browser_callback имя функции myFileBrowser. Далее по тексту идёт описание этой функции в переменной $tinyCallback с использованием специального синтаксиса.
Определение $tinyCallback
$tinyCallback = <<<TINY_CALLBACK
function myFileBrowser (field_name, url, type, win) {
if (type == 'media') {type = win.document.getElementById('media_type').value;}
var cmsURL = '{$base_url}manager/media/browser/mcpuk/browser.php?Connector={$base_url}manager/media/browser/mcpuk/connectors/php/connector.php&ServerPath={$base_url}&editor=tinymce3&editorpath={$tinyURL}';
switch (type) {
case "image":
type = 'images';
break;
case "media":
case "qt":
case "wmp":
case "rmp":
type = 'media';
break;
case "shockwave":
case "flash":
type = 'flash';
break;
case "file":
type = 'files';
break;
default:
return false;
}
if (cmsURL.indexOf("?") < 0) {
cmsURL = cmsURL + "?type=" + type;
}
else {
cmsURL = cmsURL + "&type=" + type;
}
var windowManager = tinyMCE.activeEditor.windowManager.open({
file : cmsURL,
width : screen.width * 0.7,
height : screen.height * 0.7,
resizable : "yes",
inline : "yes",
close_previous : "no"
}, {
window : win,
input : field_name
});
if (window.focus) {windowManager.focus()}
return false;
}
TINY_CALLBACK;
Смысл этой функции в том, что:
В качестве файлового менеджера запускается manager/media/browser/mcpuk/browser.php с кучей аргументов, которые здесь же и формируются;
Устанавливаются параметры окна файлового менеджера, и анализируются результаты работы этого окна.
Теперь, понимая суть, мы можем и заменить Mcpuk на любой файловый менеджер. Нам нужен AFM. Нам необходимо только переписать определение $tinyCallback.
Переопределение $tinyCallback
$tinyCallback = <<<TINY_CALLBACK
function myFileBrowser(field_name, url, type, win) {
var ajaxfilemanagerurl = "{$base_url}assets/plugins/ajaxfilemanager4/ajaxfilemanager.php";
switch (type) {
case "image":
break;
case "media":
break;
case "flash":
break;
case "file":
break;
default:
return false;
}
var windowManager = tinyMCE.activeEditor.windowManager.open({
file : ajaxfilemanagerurl,
width : screen.width * 0.7,
height : screen.height * 0.7,
resizable : "yes",
inline : "yes",
close_previous : "no"
}, {
window : win,
input : field_name
});
if (window.focus) {windowManager.focus()}
return false;
}
TINY_CALLBACK;
Смысл этой функции в том, что:
- В качестве файлового менеджера запускается assets/plugins/ajaxfilemanager4/ajaxfilemanager.php без дополнительных параметров;
- Устанавливаются параметры окна файлового менеджера, и анализируются результаты работы этого окна — так же, как и с любым другим файловым менеджером.
Обратите внимание на существенные отличия — для AFM мы не формируем специальных параметров, указывающих, какую папку просматривать — images, files или media.
Мы позволяем обзор, начиная с корня, т.е. с папки assets.
В результате всех этих махинаций у нас должен запускаться AFM при щелчках по кнопке Просмотр в диалоговых окнах вставки изображений и ссылок. При выборе файла AFM должен возвращать в соответствующее диалоговое окно относительное имя файла.
Теперь можем приступать к настройкам самого AFM.
Написать комментарий