所见即所得 - 文本和代码编辑器

3

我有一个需求,我相信其他开发者也一定需要,而StackOverflow也有这个功能。

场景

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

任务

需要一个所见即所得的编辑器让用户发布文章。显然,它可能是一段文本、一些标题……这不是问题,因为TinyMCE目前已经可以解决这个问题。 混合在文本中的将是代码示例,最好是用code标签包含。

执行

所以我一直在尝试扩展TinyMCE。 我可以允许使用code标签,但无法将高亮文本放入code标签中,但可以放入pre标签中。这不是问题。 所以粘贴代码:

<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>

进入所见即所得编辑器,选择预格式化并进行高亮和选择是可以的。它会将所有括号编码为<和>,这是完全可以接受的。它存储在我的数据库中,并以此形式呈现。

<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>

然而,在编辑时,需要加载包含现有内容的文本区域;请查看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有过任何好的经验吗? 我能偷/借Stackoverflow的东西吗?检查源代码看不出来它是一个插件,更像是一个自定义构建的东西。 有人知道其他允许使用代码片段的格式化插件吗?

不是的...这不是一个关于产品建议的请求。一点都不是。 - JSON
2个回答

0

谢谢,我已经看了 Code Mirror,但如果你要像在这里提问一样写东西... 你不想自己标记所有的文本内容吧? - Will Hancock
这就是为什么Stackoverflow使用Markdown语法而不是所见即所得编辑器的原因... - mb21

0

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


是的,但我不想为所有可能的标签都这样做...特别是因为XML可以是任何标签名称。 - Will Hancock
停用清理设置,然后执行操作。 - Thariama
取消清理设置?这种东西真的存在吗?!?!去谷歌一下...嗯,不太确定,仍需要确保它仍然是有效的XML,因为它存储在DB中的XML字符串中,并在输出时输出到更大的XML文档中,以便XSLT将其转换为xHTML。http://www.tinymce.com/wiki.php/Configuration:cleanup “它还确保它是一个正确的XHTML文档,所有标签都关闭,在正确的位置放置“”,诸如此类的事情。” - Will Hancock
是的,这种东西确实存在,但如果您需要确保仍然具有有效的HTML,则不应将其停用。 - Thariama

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接