2010-08-06 51 views
1

使用CKEDITOR 3,我創建了圖像處理功能:
的上傳reciever(filebrowserUploadUrl)和圖像瀏覽器對話框(filebrowserBrowseUrl)
- 兩個工作完全一個上傳對話框 - 兩個目標?

但當然我的用戶希望更多...我們有兩個圖像數據庫:公用和專用
- 圖像瀏覽器允許用戶從兩個圖像中挑選圖像。

我的upload-reciever(php)可以很容易地將新圖像放入這些容器中的任何一箇中。
- 但我如何讓用戶選擇哪一個?

三去處 - 所有涉及修改上傳-對話框的選項卡(類型=文件+上傳按鈕)
通過添加目標選擇器:

 
Using two different upload-buttons: (Upload to Common) and (Upload to Private) 
both pointing to the same filebrowserUploadUrl but adding a parameter: 
&target=C or &target=P 

 
A couple of "radio switches": Common or Private 
- essentially doing the same: Adding &target=(P or C) 
with one of them selected by default, so the user can't break it by negligence... 

 
Just a single checkbox: Private (or not) ~ adding &target=P (or not) 

我真的試過了(我的手指在流血,我已經v忽略了兩次!),但作爲一個非jQuery的JavaScript開發人員,我無法理解這一切。當我添加一個文本字段時,它顯示得很好:)
- 但不是實際的上傳表單(在iframe中),仍然只包含type = file字段?!?

所以我很感激如何修改上傳對話框選項卡來實現它的一個例子?

我有我的發射平臺準備好(我認爲):

 
CKEDITOR.on('dialogDefinition', 
function(ev) 
{ 
var dialogName = ev.data.name; 
var dialogDefinition = ev.data.definition; 

if (dialogName == 'image') 
    { 
    var infoTab = dialogDefinition.getContents('Upload'); 
    infoTab.add({ 

    what ? 

回答

0

解決它自己,但也得去一下就可以了胭脂:)

我認爲有可能是一個錯誤CKeditor在這裏(或者它可能是由設計..)
添加新字段(無論是在image.js或通過CKEDITOR.on('dialogDefinition'..)他們只是沒有翻譯成實際上傳形式的新領域iframe。(Bug或特性?)

因此,我在文件字段和按鈕之間的(id:'Upload',)部分添加了一個複選框(私有?不是),以/plugins/image/dialogs/image.js
,其中的onClick事件完成業務,難度如此:

{ 
    type : 'checkbox', 
    id : 'PrivateFlag', 
    label: 'Private', 
    checked : false, 
    onClick: function() 
     { 
     var theFrame = document.getElementById("125_fileInput"); 
     var theDoc = theFrame.contentDocument || theFrame.contentWindow.document; 
     var theForm = theDoc.forms[0]; 
     var action = theForm.getAttribute("action"); // alert("pre:"+theForm.getAttribute("action")); 

     if (action.indexOf("&target=P") == -1) 
      action += "&target=P"; 
     else 
      action = action.replace("&target=P",""); 

     theForm.setAttribute("action",action); // alert("post: "+theForm.getAttribute("action")); 
     } 
}, 

它的工作原理(至少只要iframe的ID是 「125_fileInput」)

IE-修改(當然):

if (navigator.appName == 'Microsoft Internet Explorer') // aka BrokenTurd 
    { 
    var theFrame = document.frames[1]; // may be inaccurate in your case.. 
    var theDoc = theFrame.document; 
    } 
else 
    { 
    var theFrame = document.getElementById("125_fileInput"); 
    var theDoc = theFrame.contentDocument || theFrame.contentWindow.document; 
    } 
+0

如果有人看到一個問題,做這個方式,現在是時候說出來! – T4NK3R 2010-08-07 16:55:30

相關問題