tinyMCE插件开发之插入html,php,sql,js代码 并代码高亮显示
2014-08-11来源:易贤网

下面就是我开发的过程。

首先,我的 tinyMCE版本是 Version: 3.2.7 (2009-09-22) 。

tinyMCE插入代码,需要调用 tinyMCE的 tinyMCE.execCommand('mceInsertContent',false,value); 方法。其中参数无需改变,value 就是你要插入的内容,

比如我写了一个函数,

代码如下:

function InsertHTML(value)

{

tinyMCE.execCommand('mceInsertContent',false,value);

}

后面,针对该例子,提供下载。在例子中。一共涉及到三个文件。

tinyMCE.html insertcode.php save.php 这三个文件。

tinyMCE.html 是tinyMCE文本框页面。

主要代码如下:

代码如下:

function InsertHTML(value)

{

tinyMCE.execCommand('mceInsertContent',false,value);

}

后面,针对该例子,提供下载。在例子中。一共涉及到三个文件。

tinyMCE.html insertcode.php save.php 这三个文件。

tinyMCE.html 是tinyMCE文本框页面。

主要代码如下:

代码如下:

input name="button" type="button" onclick="window.open('insertcode.php','插入代码','height=500, width=600, top=300, left=300, toolbar=no, menubar=no, scrollbars=no, resizable=no,location=no, status=no')" value="点击这里插入代码" />

上面这段代码,是用来打开insertcode.php文件的。

接下来,我们来看下 insertcode。php 这个文件的代码。

首先是 js 代码

代码如下:

<script language="javascript" src="http://www.gosoa.com.cn/js/jquery.js"></script>

<script language="javascript">

function insertcode()

{

var value = $('#postcontent').html();

var codetype = $('#codetype').val();

// window.opener.InsertHTML('<textarea rows="3" cols="50" name="code" class="'+codetype+'">'+value+'</textarea>');

window.opener.InsertHTML('<pre name="code" class="'+codetype+'">'+value+'</pre>');

window.close();

}

</script>

其次是 PHP 和 html 代码

代码如下:

<?php

error_reporting(0);

$content = $_POST['content'];

if(!empty($content))

{

    $codetype = $_POST['codetype'];

    echo '<div id="postcontent">';

    $content = htmlspecialchars($content);

    echo $content;

    echo '</div>

    <input type="hidden" name="codetype" id="codetype" value="'.$codetype.'" />

    <input type="button" name="Submit" value="提交" onclick="insertcode()" style="border:1px solid #000; line-height:18px; width:60px;"/>';

}else

{

?>

<div style="margin:0 auto">

<form id="form1" name="form1" method="post" action="insertcode.php">

<label>选择要插入的代码类型

<select name="codetype" id="codetype">

    <option value='php'>php</option>

    <option value='js'>js</option>

    <option value='html'>html</option>

    <option value='c'>c</option>

    <option value='asp'>asp</option>

    <option value='xml'>xml</option>

    <option value='java'>java</option>

    <option value='java'>java</option>

    <option value='CSharp'>C#</option>

    <option value='sql'>SQL</option>

</select>

</label>

<label>

<textarea name="content" id="content" cols="30" rows="20" style="width:600px; height:200px; border:1px dashed #333"></textarea>

</label>

<p>

<label style="padding-left:50px;">

<input type="Submit" name="Submit" value="提交" style="border:1px solid #000; line-height:18px; width:60px;"/>

</label>

</p>

<p> </p>

</form>

</div>

<?php

}    

?>

在insertcode.php中,insertcode() 函数用来调用 tinyMCE.html页面的 insertHTMl()函数,并将代码插入到 tinyMCE.html 页面中。

代码中,我们为什么要 '+value+' 呢?

因为我们在显示页面,将会采用 SyntaxHighlighter 插件来高亮显示代码。

还有一点要说明,在这里,$content = htmlspecialchars($content); 我们对于代码本身,进行了 htmlspecialchars 转义操作。这样,插入数据库的代码则会是安全的。

OK,我们再来看 save.php,该页面用来显示 提交的内容。

主要代码如下:

代码如下:

<?

$Article_Content = $_POST['Article_Content'];

function transcode($str)

{

if(empty($str))

{

return false;

}

$str = str_replace('"','"',$str);

$str = str_replace('','',$str);

$str = str_ireplace('<BR>',"n",$str);

$str = str_ireplace('<pre','<pre name="code" ',$str);

return $str;

}

echo transcode($Article_Content);

?>

<script class="javascript" src="/tinymce/lightcode/Scripts/shCore.js"></script>

<script class="javascript" src="/tinymce/lightcode/Scripts/shBrushCSharp.js"></script>

<script class="javascript" src="/tinymce/lightcode/Scripts/shBrushPhp.js"></script>

<script class="javascript" src="/tinymce/lightcode/Scripts/shBrushJScript.js"></script>

<script class="javascript" src="/tinymce/lightcode/Scripts/shBrushJava.js"></script>

<script class="javascript" src="/tinymce/lightcode/Scripts/shBrushVb.js"></script>

<script class="javascript" src="/tinymce/lightcode/Scripts/shBrushSql.js"></script>

<script class="javascript" src="/tinymce/lightcode/Scripts/shBrushXml.js"></script>

<script class="javascript" src="/tinymce/lightcode/Scripts/shBrushDelphi.js"></script>

<script class="javascript" src="/tinymce/lightcode/Scripts/shBrushPython.js"></script>

<script class="javascript" src="/tinymce/lightcode/Scripts/shBrushRuby.js"></script>

<script class="javascript" src="/tinymce/lightcode/Scripts/shBrushCss.js"></script>

<script class="javascript" src="/tinymce/lightcode/Scripts/shBrushCpp.js"></script>

<script class="javascript">

dp.SyntaxHighlighter.HighlightAll('code');

</script>

OK,完了。

^_^ ~~~

更多信息请查看IT技术专栏

推荐信息