Интеграция CKFinder с помощью INNOVASTUDIO WYSIWYG Editor
-
24-09-2019 - |
Вопрос
я использую INNOVASTUDIO WYSIWYG редактор, и я пытаюсь заменить менеджер актива INNOWASTIO CKFinder. Отказ В конфигурации редактора есть строка для того, чтобы использовать URL для использования для менеджера актива. Я указал на это в CKFinder. Часть, которую я не могу добраться до работы, является получение поля для заполнения двойным щелчком файла от CKFinder.
Похоже, что использует параметр «Func» для указания функции обратного вызова. Урл, который я звоню: /common/ckfinder/ckfinder.html?action=js&func=setAssetValue
Редактор Innovastudio Wysiwyg предоставляет setAssetValue(v)
Функция обратного вызова для настройки значения поля. То v
Параметр должен держать URL.
Ckfinder всплывает, как ожидается, когда он вызывает, но ни дважды щелкнув миниатюры, ни используя опцию «Выбор» в контекстном меню. Обычное / ожидаемое поведение заключается в том, что CKFinder закрывает, и целевое поле заполняется URL для выбранного актива.
Дополнительная информация: Enternastudio Wysiwyg Editor имеет «всплывающее окно» для добавления изображения или файла Flash в контент. Это всплывающее окно в iframe. Когда он называет CKFinder (или это собственный менеджер актива), то есть также в iFrame. Похоже, что CKFinder смотрит в объем главного окна, а не изображение / Flash iFrame, которое фактически содержит поле, которое необходимо заполнить.
Решение
(Вроде) решение
Я обнаружил, выкапывая дому с Firebug, что инностанция создает ISWindow
Объект, где он размещает ссылки на окна, которые он нередит. Я изменил мою функцию обратного вызова, чтобы закрутить этот объект и позвонить setAssetValue()
функция для подходящего IFrame. Это сработало, но Ckeditor все еще не закрыл себя. Я предполагаю, что это потому, что он не «не знал», как закрыть iFrame, что он был внутри. Есть ли способ сказать CKFinder, как закрыть окно внутри? Я могу представить другие случаи, когда использование IFrame будет полезна.
Я бы предпочел, чтобы CKFinder использовать дисплей IFrame, но я наконец-то получил вещи, используя стандартное всплывающее окно CKFinder.
Редактор Конфигурация строки: oEdit1.cmdAssetManager = "parent.BrowseServerIS();";
Поддерживающие функции:
// InnovaStudio WYSIWYG Editor version
function BrowseServerIS()
{
// You can use the "CKFinder" class to render CKFinder in a page:
var finder = new CKFinder();
// The path for the installation of CKFinder (default = "/ckfinder/").
finder.BasePath = '/common/ckfinder/';
// Name of a function which is called when a file is selected in CKFinder.
finder.SelectFunction = SetFileFieldIS;
// Launch CKFinder
finder.Popup();
}
// InnovaStudio WYSIWYG Editor version
function SetFileFieldIS(fileUrl, data)
{
for (var i in ISWindow.objs) {
if ((null != ISWindow.objs[i].rt.frm.contentWindow)
&& ('function' == typeof ISWindow.objs[i].rt.frm.contentWindow.setAssetValue)) {
ISWindow.objs[i].rt.frm.contentWindow.setAssetValue(fileUrl);
}
}
}