Проблемы с TinyMCE / MCImageManager - PullRequest
4 голосов
/ 25 июня 2009

У меня возникают всевозможные странные проблемы с путями в tinyMCE. Я не уверен, имеет ли это отношение к MCImageMana. Я попытаюсь обобщить мои настройки:

У меня есть сайт .NET. На данный момент корень приложения находится на http://localhost/APP/

tiny_mce находится в ~ / tiny_mce, плагин imagemanager, конечно, в ~ / tiny_mce / plugins / imagemanager

~ / uploads - это место, где я хочу, чтобы изображения загружались / управлялись

~ / tiny_mce / plugins / imagemanager / web.config содержит этот ключ: <add key="filesystem.rootpath" value="../../../upload" />

Также содержит <add key="preview.urlprefix" value="{proto}://{host}/APP/" /> чтобы учесть, что корень приложения не находится в корне имени хоста (серьезно, мне не нужно это жестко кодировать .... но это другая проблема)

Пока все хорошо - когда я просматриваю из диалогового окна изображения в tinyMCE, я получаю браузер изображения, и он просматривает правильную папку

Странность начинается, когда я выбираю изображение. Вот что помещается в поле «URL-адрес изображения» в форме «Вставить / отредактировать изображение»:

.. / APPot / загрузки / Image.jpg

APPot? Что за черт? Разве это не должно быть просто «upload / Image.JPG»?

Это было с

tinyMCE.init({
//.....
relative_urls: true,
remove_script_host: true,
document_base_url: 'http://localhost/APP/'
});

а также

mcImageManager.init({
relative_urls: true,
remove_script_host: true,
document_base_url: 'http://localhost/APP/'
});

Я не могу сказать, нужен ли второй, или вообще что-то делать

откуда происходит "ot"? Я предполагаю, что его существование объясняет, почему он не может понять, как использовать document_base_url.

Если я сброслю префикс url к исходной настройке: <add key="preview.urlprefix" value="{proto}://{host}/" />, я получу:

.. / загрузки / DSCF0546.JPG

что на самом деле кажется немного ближе. Там нет "ot", но каталог выключен.

Кто-нибудь знает, что происходит?

Ответы [ 2 ]

1 голос
/ 12 марта 2014

TL; DR

Пример конфигурации

  • ваш веб www.example.com имеет DocumentRoot /var/www-data/
  • Вы загружаете свои изображения в /var/www/uploads/images
  • вы предоставляете свои изображения из vhost static.example.com с DocumentRoot /var/www

Соответствующие настройки

  • установить preview.wwwroot на /var/www
  • установить filesystem.rootpath на /var/www/uploads/images
  • установить preview.urlprefix на http://static.example.com (или //static.example.com)

Расширенное объяснение

Счастливое кодирование, когда появляется wild 'ds'!

Проблема связана с Moxiecode_ManagerEngine::convertPathToURI, который использует фрагмент кода $uri = substr($abs_path, strlen($root));, где $abs_path - это путь к "серверу" (/var/www/uploads/images/image.png), а $root - $root = $this->getSiteRoot();. По умолчанию MCIE пытается «угадать» ситроот URL (он угадывает /var/www-data/). В моем случае я сохранил загруженные файлы на другой сервер, где siteurl немного отличался. Таким образом, субстрат удалил полностью несвязанную часть $abs_path

substr('/var/www/uploads/images/image.png', strlen('/var/www-data/')) == 'ds/images/image.png'

Чтобы это исправить, вам нужно установить директиву preview.wwwroot config. Если установлено, он возвращается из getSiteRoot и удаляется соответствующим образом.

substr('/var/www/uploads/images/image.png', strlen('/var/www/')) == 'uploads/images/image.png'

Код Moxiecode_ManagerEngine::convertPathToURI тупой и должен быть исправлен, но это решение достаточно хорошее.

0 голосов
/ 27 февраля 2013

Поскольку relative_urls: имеет значение true, document_based_url используется для генерации пути. Попробуйте установить relative_urls: в false. Вот некоторая документация, которая объясняет опции:

...