【问题标题】:TinyMCE4 file_picker_callback - return additional paramsTinyMCE4 file_picker_callback - 返回附加参数
【发布时间】:2014-09-14 00:28:20
【问题描述】:

我正在使用我自己的自定义文件选择器和 TinyMCE 4 的新 file_picker_callback 函数。这方面的文档不是很好,所以感谢 Fred 让我走到了这一步 - https://stackoverflow.com/a/24571800/2460995

自定义文件选择器正在工作,当您单击图像时,它会填充“来源”和“尺寸”。我只是想知道是否有任何方法可以自动填写“图片描述”字段。

图像的信息是从数据库表中生成的,所以我已经有了描述,如果能自动为用户填写它会很好。在尝试了各种传回数据的方法后,我很难理解如何做到这一点。

TinyMCE 代码:

tinymce.init({
    ...
    file_picker_callback: function(callback, value, meta) {
        myImagePicker(callback, value, meta);
    }
});

function myImagePicker(callback, value, meta) {
    tinymce.activeEditor.windowManager.open({
        title: 'Image Browser',
        url: '/media/browser/1?type=' + meta.filetype,
        width: 800,
        height: 550,
    }, {
        oninsert: function (url) {
            callback(url);
        }
    });
};

自定义文件选择器的代码:

$(function(){
    $('.img').on('click', function(event){
        mySubmit('/upload/' + $(this).data('filename'));
    });
});

function mySubmit(url) {
    top.tinymce.activeEditor.windowManager.getParams().oninsert(url);
    top.tinymce.activeEditor.windowManager.close();
}

我的 javascript 知识还不是最丰富的,因为我对它很陌生,所以如果你能用示例和/或清晰的逻辑来说明任何答案,这将非常有用和非常感谢。

【问题讨论】:

    标签: javascript callback tinymce tinymce-4 filepicker


    【解决方案1】:

    我遇到了同样的问题,并想出了以下解决方案:

    1. 将您的myImagePicker 函数更新为(注意oninsert 函数的新objVals 参数):

      function myImagePicker(callback, value, meta) {
          tinymce.activeEditor.windowManager.open({
              title: 'Image Browser',
              url: '/media/browser/1?type=' + meta.filetype,
              width: 800,
              height: 550,
          }, {
              oninsert: function (url, objVals) {
                  callback(url, objVals);
              }
          });
      };
      
    2. mySubmit 函数更新为(注意传递给oninsertobjVals 参数):

      function mySubmit (url, objVals) {
          top.tinymce.activeEditor.windowManager.getParams().oninsert(url, objVals);
          top.tinymce.activeEditor.windowManager.close();
          return false;
      }
      
    3. 更新您调用mySubmit 的位置以填写objVals 对象。

      例如:

      mySubmit("https://google.com", { text: "Go To Google", target: '_blank' });
      

      objVals 填写的属性会根据调用对话框的类型而变化,并且(部分)记录在 here 中。

      对于链接对话框:

      mySubmit("https://google.com", { text: "Go To Google", target: '_blank' });
      

      对于图像对话框:

      mySubmit("image.jpg", { alt: "My image" });
      

      对于媒体对话:

      mySubmit("movie.mp4", {source2: 'movie-alt.ogg', poster: 'movie-image.jpg'});
      

    【讨论】:

    • 我几乎已经放弃了对此的希望,但在我发布 6 周后,一位名叫 Jason 的英雄出现并第一次做到了。这对我来说非常有效。非常感谢您抽出宝贵时间回复!
    • @Lason S:在这种情况下,您应该接受答案
    猜你喜欢
    • 2017-07-16
    • 2021-10-20
    • 2019-12-16
    • 2022-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-08
    相关资源
    最近更新 更多