我有一个需求,我相信其他开发者也一定需要,而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><xsl:template match="*" mode="jsonObjectOrElementProperty"><br /> <xsl:text>"</xsl:text><br /> <xsl:value-of select="name()"/><br /> <xsl:text>":</xsl:text><br /> <xsl:apply-templates select="." mode="jsonObjectProperties"/><br /> </xsl:template></pre>
然而,在编辑时,需要加载包含现有内容的文本区域;请查看HTML。
<textarea class="tinyMCE"><pre><xsl:template match="*" mode="jsonObjectOrElementProperty"><br /> <xsl:text>"</xsl:text><br /> <xsl:value-of select="name()"/><br /> <xsl:text>":</xsl:text><br /> <xsl:apply-templates select="." mode="jsonObjectProperties"/><br /> </xsl:template></pre></textarea>
TinyMCE重新编码所有的括号并删除所有和任何基于XML的代码,将脚本标签视为非有效元素,而不是将它们作为纯文本处理。
此外,它没有任何形式的CDATA功能,因此会忽略某些部分......
我需要一个插件,因为我无法从头开始编写它,我没有时间和预算。正如StackOverflow在创建这个问题时允许我的那样!! Good Stackoverflow 问题:
有人对将此应用到TinyMCE有过任何好的经验吗? 我能偷/借Stackoverflow的东西吗?检查源代码看不出来它是一个插件,更像是一个自定义构建的东西。 有人知道其他允许使用代码片段的格式化插件吗?