2010-04-05 107 views
1

我使用InnovaStudio WYSIWYG Editor,我試圖用CKFinder替代InnovaStudio的資產管理器。編輯器配置中有一行用於資產管理器的URL。我已經指出它在CKFinder。我無法工作的部分是通過CKFinder的雙擊文件路徑填充字段。將CKFinder與InnovaStudio WYSIWYG編輯器集成

它似乎使用'func'參數來指定回調函數。我撥打的URL爲:/common/ckfinder/ckfinder.html?action=js&func=setAssetValue

InnovaStudio所見即所得編輯器提供setAssetValue(v)回調函數來設置字段值。 v參數應該包含URL。

CKFinder會在調用時彈出按預期的方式,但不會雙擊縮略圖,也不會在上下文菜單中使用「select」選項。正常/預期的行爲是CKFinder關閉,目標字段填充所選資產的URL。


附加信息:的InnovaStudio所見即所得編輯器具有添加圖像或Flash文件內容的「彈出」。此彈出窗口位於iframe中。當它調用CKFinder(或它自己的資產管理器)時,也是在iframe中。看來CKFinder正在查看主窗口的範圍,而不是實際包含需要填充的字段的圖像/ Flash iframe。

回答

0

(排序)解決方案

我發現,通過使用Firebug的DOM挖,這InnovaStudio創建ISWindow對象,其中它把引用到它產生的窗口。我修改了我的回調函數以遍歷該對象,並調用適當的iframe的setAssetValue()函數。這工作,但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); 
     } 
    } 
} 
+0

我剛纔已經證實,該代碼可以使用InnovaStudio所見即所得編輯器5.3 – Sonny 2011-05-23 15:24:18