Один диалог загрузки - две цели? - PullRequest
1 голос
/ 06 августа 2010

Используя CKeditor 3, я создал функции обработки изображений:
Приемник загрузки (filebrowserUploadUrl) и диалоговое окно браузера изображений (filebrowserBrowseUrl)
- оба отлично работают

НО, конечно, мои пользователи хотят большего ... У нас есть две базы данных изображений: Общая и Частная
- Браузер изображений позволяет пользователю выбирать изображения из любого.

Мой загрузчик (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)

Я действительно пытался (у меня кровоточат пальцы, и меня дважды вырвало от ярости!), Но как разработчик не jQuery javascript, я просто не могу понять все это. Когда я добавляю текстовое поле, оно появляется просто отлично:)
- но не в самой загружаемой форме (в iframe), которая все еще содержит только поле type = file?!?

Так что я был бы признателен за пример того, как изменить вкладку upload-dialog-tab, чтобы выполнить это?

У меня есть готовая платформа для запуска (я думаю):

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 ?

1 Ответ

0 голосов
/ 07 августа 2010

Решил сам, но пришлось немного покраснеть:)

Я думаю, что здесь может быть ошибка в CKeditor (или, может быть, это из-за замысла ...)
Добавление новых полей(будь то в image.js или через CKEDITOR.on ('dialogDefinition' ..), они просто не переводятся в новые поля в фактической форме загрузки в iframe. (Ошибка или функция?), Я добавил один флажок (Приват? Нет) к /plugins/image/dialogs/image.js
в разделе (id: «Upload»,) между полем файла и кнопкой, с событием 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 равен "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;
    }
...