【问题标题】:Joomla - Insert text in editor through a pluginJoomla - 通过插件在编辑器中插入文本
【发布时间】:2013-09-16 15:39:47
【问题描述】:

我目前正在创建一个 Joomla 插件,它可以向任何编辑器添加一个新按钮。单击按钮时,会出现一个模式,显示一个包含一些信息的表格。我想在这个模态中创建一个按钮,当它被点击时,模态将被关闭并在编辑器中显示一个文本(现在是任何文本)。

模态出现,按钮实现如下:

<button class="btn" type="button" onclick="window.parent.jInsertEditorText('something');window.parent.SqueezeBox.close();"><?php echo JText::_('CANCEL') ?></button>

但是点击的时候报错:

Uncaught TypeError: Object [object Array] has no method 'execCommand' tiny_mce.js:1
 j.EditorManager.d.execInstanceCommand tiny_mce.js:1
 jInsertEditorText index.php?option=com_content&view=article&layout=edit:49
 onclick

我会很乐意提供任何帮助:)

【问题讨论】:

    标签: jquery plugins joomla


    【解决方案1】:

    jInsertEditorText 方法需要编辑器 id 作为其第二个参数。

    方法的签名是:

    function jInsertEditorText( text, editor );
    

    你应该这样称呼它:

    jInsertEditorText('sometText', 'editor_id'); 
    

    您需要通知您的 SqueezeBox/按钮以哪个编辑器为目标,或添加一个包装器方法,该方法将针对它的正确编辑器。

    例如,文章编辑器包含一个 ID 为 jform_articletext 的编辑器。在父窗口中定义了一个名为jSelectArticle 的方法,该方法获取另一篇文章的详细信息并在编辑器中添加指向该文章的链接。

    function jSelectArticle(id, title, catid, object, link, lang)
    {
        var hreflang = '';
        if (lang !== '')
        {
            var hreflang = ' hreflang = "' + lang + '"';
        }
        var tag = '<a' + hreflang + ' href="' + link + '">' + title + '</a>';
        jInsertEditorText(tag, 'jform_articletext');
        SqueezeBox.close();
    }
    

    当点击编辑器下方的按钮时,会打开一个带有文章列表的 Squeezebox。每篇文章都有一个单击处理程序,该处理程序使用其属性调用该函数:

    if (window.parent) window.parent.jSelectArticle(...);
    

    我更愿意为 SqueezeBox 提供编辑器 ID,因为它更简洁、更便携。

    在服务器端,插件的onDisplay 方法接收表单标识符。你可以随心所欲地使用它。

    public function onDisplay($name)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-08
      • 2020-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多