我想从我正在构建的自定义块内部的模态对话框中打开TinyMCE。我知道如何实现模态对话框,但无法找到在对话框中集成TinyMCE的方法。
我想要实现的是当在块添加/编辑弹出窗口中单击文本时,它应该打开一个带有TinyMCE的对话框来编辑该单击的文本。有人这么做过吗?
这是我想在添加/编辑表单中实现的目标:
$this->addHeaderItem(Loader::helper('html')->javascript('tiny_mce/tiny_mce.js'));
Loader::element('editor_init');
Loader::element('editor_config');
Loader::element('editor_controls');
<textarea name="field-name" class="text-area-value ccm-input-textarea">Some text here or empty....</textarea>
$bt = BlockType::getByHandle('myblock');
<a class="dialog-launch ccm-block-type-inner"
dialog-on-close="ccm_blockWindowAfterClose()" dialog-append-buttons="true"
dialog-modal="false" dialog-width="500"
dialog-height="500" dialog-title="<?php echo t('Add/Edit Text)?>"
href="<?php echo $th->getBlockTypeToolsURL($bt); ?>/tinymce_dialog.php?text=<?php echo $text-area-value; ?>">
Edit the above text in TinyMCE
</a>
在tools文件夹中的tinymce_dialog.php中:
<textarea name="textarea-name"
class="ccm-input-textarea advancedEditor ccm-advanced-editor">
<?php echo $_GET['text']; ?>
</textarea>
<div class="ccm-buttons dialog-buttons">
<a href="javascript:void(0)" onClick="ccm_blockWindowClose();"
class="ccm-button-left btn">Cancel</a>
<a href="" onClick="" class="btn primary">Ok</a>
</div>
但是我无法将textarea的值传递给模态对话框弹出窗口。我尝试在锚标记中使用href
将textarea的值传递给驻留在tools文件夹中的脚本,但这似乎不起作用。
编辑:我还在tinymce_dialog.php中添加了按钮(请参阅上面的代码)。不确定是否可以通过表单中的<a dialog-on-close="ccm_blockWindowAfterClose()" dialog-append-buttons="true".....>
传递这些按钮。
答案 0 :(得分:2)
应该和其他地方一样工作。首先,在对话框中包含一行代码(无论你有多少TinyMCE,你只需要一次):
<?php Loader::element('editor_config'); ?>
然后,对于您想要的每个TinyMCE,请使用:
<?php Loader::element('editor_controls'); ?>
<textarea name="your-field-name" class="ccm-advanced-editor"></textarea>
答案 1 :(得分:1)
有两种方法可以解决这个问题:
$_GET
不会工作。确保URL首先包含文本(您可以通过查看开发人员控制台查看)。 display: none;
创建隐藏在表单中的div,将文本保存到其中(如果已经初始化,tinymce有.update()
或其他),然后显示隐藏的div(使用示例3来自{ {3}})。当他们点击(SAVE)时,你可以(大概)将数据复制出来并将其放回需要去的地方。 请注意,在许多情况下,tinymce初始化代码仅在页面加载时运行。我认为这就是Loader::element('editor_init')
的作用。它的工作原理是检测适当的textareas(基于类名)。因此,如果在加载textarea之前加载了具有editor_init的页面(例如它现在的样子),则必须重新启动tinymce。这是对#2的投票。一般来说,我建议你走这条路。