跳过计时 image-upload 模态

Skipping tinymce image-upload modal

我正在使用 tinymce-rails gem and the tinymce-rails-imageupload gem 在编辑器中上传图片。我环顾四周,找不到更改默认上传过程的方法。我希望工具栏中的图像按钮充当 'choose file' 按钮并直接打开文件查找器。这可以用 tinymce 实现吗?

更新: 又快又脏的猴子补丁 here

在按下按钮和系统文件选择对话框之间没有额外的 window,并且在选择文件后立即插入图像。在我的 chrome 40.0.2214.111 Ubuntu 14.04(64 位)中似乎按预期工作。

git clone https://github.com/PerfectlyNormal/tinymce-rails-imageupload.git
cd tinymce-rails-imageupload

# substitute app/assets/javascripts/tinymce/plugins/uploadimage/plugin.js with a patched version

gem build tinymce-rails-imageupload.gemspec
gem install ./tinymce-rails-imageupload-4.0.16.beta.gem

以下是修改版和主分支 github 版本之间的差异 (2 月 25 日星期三 10:34:49 2015 +0100)

diff plugin-modified.js tinymce-rails-imageupload/app/assets/javascripts/tinymce/plugins/uploadimage/plugin.js 

12,17d11
<       function Dialog() {
<         if (document.getElementsByName("file")[0].value) {
<           insertImage();
<         } else ed.windowManager.close;
<       }
< 
19,20d12
<             if(win) {win.close()};
< 
26,27c18,19
<             {type: 'iframe',  url: 'javascript:void(0)', style: 'display: none'},
<             {type: 'textbox', name: 'file', label: ed.translate('Choose an image'), subtype: 'file', onchange: Dialog},
---
>             {type: 'iframe',  url: 'javascript:void(0)'},
>             {type: 'textbox', name: 'file', label: ed.translate('Choose an image'), subtype: 'file'},
103,112d94
<         win.hide();
<        
< 
<         var clickEvent = new MouseEvent("click", {
<                                         "view": window,
<                                         "bubbles": true,
<                                         "cancelable": false});
<         clickEvent.toElement=document.getElementsByName("file")[0];
<         document.getElementsByName("file")[0].dispatchEvent(clickEvent);
< 

那里没有特殊的旋钮,只能通过重写 this function...

我认为您需要将 iframe 留给后端在上传时期望的字段,但您可以使其不可见,只需在 showDialog 中打开文件选择对话框并在选择文件后调用 insertImage。