WYSIWYG - 文本和代码编辑器

时间:2012-02-09 18:32:54

标签: javascript xml jquery-plugins tinymce wysiwyg

我有需要,我确信其他开发人员必须拥有的东西,StackOverflow确实有。

方案

我正在建立一个网站来发布代码示例,这些文章是由我通过管理系统编写的,但也可能是前端注册用户。

拥有用户可以发布文章的WYSIWYG编辑器。显然它可能是一段文字,一些标题......不是问题因为TinyMCE目前处理这个问题。 与文本混合将是代码示例,最好是代码标记。

执行

所以我一直在玩TinyMCE。 我可以允许代码标记,但无法将其突出显示在代码标记中,但可以将其转换为预标记。不是问题。 所以粘贴:

<xsl:template match="*" mode="jsonObjectOrElementProperty">
    <xsl:text>"</xsl:text>
    <xsl:value-of select="name()"/>
    <xsl:text>":</xsl:text>
    <xsl:apply-templates select="." mode="jsonObjectProperties"/>
  </xsl:template>

进入WYSIWIG并突出显示并选择Preformatted是好的,它将所有括号编码为&lt;和&gt;这很好。它存储在我的数据库中,然后就这样出现了;

<pre>&lt;xsl:template match="*" mode="jsonObjectOrElementProperty"&gt;<br /> &lt;xsl:text&gt;"&lt;/xsl:text&gt;<br /> &lt;xsl:value-of select="name()"/&gt;<br /> &lt;xsl:text&gt;":&lt;/xsl:text&gt;<br /> &lt;xsl:apply-templates select="." mode="jsonObjectProperties"/&gt;<br /> &lt;/xsl:template&gt;</pre>

但是在编辑时,所以用现有内容加载textarea;见HTML;

<textarea class="tinyMCE"><pre>&lt;xsl:template match="*" mode="jsonObjectOrElementProperty"&gt;<br /> &lt;xsl:text&gt;"&lt;/xsl:text&gt;<br /> &lt;xsl:value-of select="name()"/&gt;<br /> &lt;xsl:text&gt;":&lt;/xsl:text&gt;<br /> &lt;xsl:apply-templates select="." mode="jsonObjectProperties"/&gt;<br /> &lt;/xsl:template&gt;</pre></textarea>

TinyMCE重新编码所有括号并删除所有和任何基于XML的代码,脚本标记为无效元素,而不是将它们视为纯文本。

除此之外,它没有任何CDATA功能,因此忽略了某些部分......

我需要一个插件,因为我无法从头开始编写,我没有时间也没有预算。对于StackOverflow完全让我在创建这个问题时所做的事情! Good Stackoverflow

问题

有没有人对TinyMCE这样做有什么好运? 我可以窃取/借用Stackoverflows吗?检查源代码无法看到它的插件,更多的是自定义构建的东西。 有没有人知道允许代码片段的任何其他格式化插件?

2 个答案:

答案 0 :(得分:0)

Codemirror - 可能是您的解决方案吗?

答案 1 :(得分:0)

我认为你需要调整你的tinymce init设置valid_elements和valid_children(不要忘记你的属性)。