Joomla - 通过插件在编辑器中插入文本

时间:2013-09-12 09:57:13

标签: jquery plugins joomla

我目前正在创建一个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

我会很乐意得到任何帮助:)

1 个答案:

答案 0 :(得分:5)

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)