跳过计时 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。
我正在使用 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。