TinyMCE + IMCE

Главные вкладки

Аватар пользователя Weisnar Weisnar 23 июня 2010 в 13:01

В некоторых стандартных шаблонах, инициализация TinyMCE + IMCE проходит нормально. В Ява коде имеем:

и

tinyMCE.init({
mode : "exact",
...............
elements : "edit-body",
file_browser_callback : "imceImageBrowser"

Но в других шаблонах, даже шестой версии, imceImageBrowser никак не цнициализируется.
Тоесть, в tinyMCE.init просто не добавляется строка file_browser_callback : "imceImageBrowser".

Возился с этим весь день. Понял много чего, но от куда берется эта переменная, и как она зависит от шаблона сайта - так и не понял.

ВложениеРазмер
Иконка изображения IMCE.gif4.22 КБ

Комментарии

Аватар пользователя Weisnar Weisnar 23 июня 2010 в 14:35

"в теме надо добавить <?php print $closure ?>"
Да, на некоторых блогах и форумах я тоже это вычитал. Естественно, не подходи. Иначе бы и спрашивал:)
Кстати, "<?php print $closure ?>" в конце страницы ничего и не добавляет. Имеется ввиду, что переменная $closure ничего не содержит.

Инициализиция tinyMCE происходит в Ява коде в хедере страницы.
В переменной которая выводится: " <?php echo $scripts ?>"

Но проблема в том, что в зависимости от шаблона, в этой переменной то есть строка "file_browser_callback : "imceImageBrowser". то нету.

И решение тут не такое уж и очевидное.

Вообще... пока думаю... как альтернативу, использовать только стандартную тему Garland и пытаться переделывать её под другие дизайны...

Но в чем же действительно проблема... пока так и не понял.

Аватар пользователя Weisnar Weisnar 23 июня 2010 в 14:50

Решение покажется невероятным, но факт:

Видимо единоразово, при инсталяции, в тему в файл template.php было добавлено

<?phpfunction phptemplate_tinymce_theme($init, $textarea_name, $theme_name, $is_running) {
  static $access, $integrated;

  if (!isset($access)) {
    $access = function_exists('imce_access') && imce_access();
  }

  $init = theme_tinymce_theme($init, $textarea_name, $theme_name, $is_running);

  if ($init && $access) {
    $init['file_browser_callback'] = 'imceImageBrowser';
    if (!isset($integrated)) {
      $integrated = TRUE;
      drupal_add_js("function imceImageBrowser(fid, url, type, win) {win.open(Drupal.settings.basePath +'?q=imce&app=TinyMCE|url@'+ fid, '', 'width=760,height=560,resizable=1');}", 'inline');
    }
  }

  return $init;
}
?>

Понятно, что я это заметил и пробовал добавить эту инициализацию в другие темы. Результата небыло.

Представьте моё удивление, когда я сейчас захожу, а эта долбаная imceImageBrowser появилась сама по себе! Поняяяяятно:)

Выбрал другую тему. Посмотрел. Иконки нет. Добавил в файл template.php вышеприведенный код. Посмотрел. Иконки нет. Зашел: Главная › Администрирование › Настройка сайта - Очистить кеш данных
Очистил. Проверил. Вот она блин!!! Эта долбаная иконка.
Оказывается. Я тут пол дня експериментирую, меняю всякие значения, возможно, кучу раз уже решил свою проблему, а оно мне всё время старый закешированный вариант показывало.

Вот такие пироги... уже тихонько начинаю ненавидеть Drupal Smile

Аватар пользователя Weisnar Weisnar 23 июня 2010 в 20:32

"Я правильно понимаю, что вы TinyMCE включаете через тему? О.о"
А вот я этого вопроса не понял.
Включаю его через Друпаловский модуль: http://drupal.org/project/tinymce

Пару дней экспериментировал. Пробовал и через http://drupal.org/project/wysiwyg

Пробовал и FCKeditor и BUEditor. TinyMCE вроде лучше.

Единственное, что мне очень не понравилось, это исчезновение возможности создать анонс заметки, как это работает с BUEditor.

Решение пока муторное. Зайти в html код заметки и добавить разделитель <!--break-->
Но непосвященному юзеру это будет не под силу. Разве что попробую свою кнопку создать... но... вот изначально, как было с двумя окнами (без визуальных редакторов), было лучше.