Ruby on rails 跳过tinymce图像上载模式

Ruby on rails 跳过tinymce图像上载模式,ruby-on-rails,tinymce,tinymce-4,Ruby On Rails,Tinymce,Tinymce 4,我在编辑器中使用gem和gem上传图像。我环顾四周,找不到改变默认上传过程的方法。我不想单击工具栏中的图像按钮并获得一个模式弹出窗口来上传图像和添加标题,而是希望工具栏中的图像按钮充当“选择文件”按钮并直接打开文件查找器。tinymce是否可以这样做?更新: 又快又脏的猴子补丁 在按下按钮和“系统文件选择”对话框之间没有其他窗口,并且在选择文件后立即插入图像。在我的Chrome40.0.2214.111中,Ubuntu 14.04(64位)似乎如预期的那样工作 git clone https:/

我在编辑器中使用gem和gem上传图像。我环顾四周,找不到改变默认上传过程的方法。我不想单击工具栏中的图像按钮并获得一个模式弹出窗口来上传图像和添加标题,而是希望工具栏中的图像按钮充当“选择文件”按钮并直接打开文件查找器。tinymce是否可以这样做?

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

在按下按钮和“系统文件选择”对话框之间没有其他窗口,并且在选择文件后立即插入图像。在我的Chrome40.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版本和主分支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
<函数对话框(){
{type:'iframe',url:'javascript:void(0)},
>{类型:'textbox',名称:'file',标签:ed.translate('Choose a image'),子类型:'file'},
103112D94

没有特殊的旋钮做它,只有重写


我认为您需要为后端希望上载的字段保留其iframe,但您可以将其设置为不可见,只需在showDialog中打开文件选择对话框,并在选择文件后调用insertImage即可。

嘿,Evgeny,谢谢您的回答,但是您在关于离开iframe的部分失去了我。哦,这里有我的实验结果,你们可以直接调用insertImage来更改文本框。第26行的“风格”也不是必需的。但它现在可以正常工作,这只是一个想法,对于制作,我建议删除所有不必要的元素,只留下一个紧凑的隐藏形式。并将alt文本设置为大小。对不起,我没有经验,但我应该将新功能放在哪里呢。我是否创建了plugin.js文件、“initializers/.rb”文件或其他文件?我的第一个代码snipplet是unix shell命令-它将下载imageupload gem源代码,您可以修改plugin.js并构建并安装这个新gem来代替原来的gem非常好!谢谢你的帮助:)
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);
<