phpcms中的ckeditor编辑器升级方法
<p>准备:</p>
<p>
1.当前phpcms最新版本(自带ckeditor 版本为3.6.6)</p>
<p>
2.准备替换的最新ckeditor,版本4.2.1</p>
<p>
</p>
<p>
<strong>一、开始之前说下原版ckeditor与phpcms的ckeditor的一些主要区别:</strong></p>
<p>
1.原版的分页符是一个div标签,而phpcms中编辑器的是。</p>
<p>
2.phpcms编辑器下方,多了3个按钮,“分页符”,“子标题”,“附件上传”。</p>
<p>
3.由于ckeditor的版本不一样,一些自己开发的插件不能兼容。</p>
<p>
<strong>二、下面开始替换。</strong></p>
<p>
1.备份phpcms的 /statics/js/ckeditor 文件夹(重命名即可)。以及/phpcms/libs/classes/form.class.php (这个文件中有个方法就是创建一个编辑器,使用一些编辑器的工具栏配置需要在这里操作)</p>
<p>
2.把新版ckedtior复制到/statics/js/下。打开/statics/js/ckeditor/config.js 文件,用旧版的config.js替换。但请注释掉 config.extraPlugins = ''; 这一行(我想应该是插件不兼容问题)</p>
<p>
</p>
<div>
<p>
代码如下:</p>
</div>
<div id="phpcode10">
<br>
/**<br>
* @license Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved.<br>
* For licensing, see LICENSE.html or http://ckeditor.com/license<br>
*/</p> <p>CKEDITOR.editorConfig = function( config ) {<br>
// Define changes to default configuration here. For example:<br>
// config.language = 'fr';<br>
// config.uiColor = '#AADC6E';<br><br>
config.uiColor = '#f7f5f4';<br>
config.width = '';<br>
config.removePlugins = 'elementspath,scayt';<br>
config.disableNativeSpellChecker = false;<br>
config.resize_dir = 'vertical';<br>
config.keystrokes =[[ CKEDITOR.CTRL + 13 /*Enter*/, 'maximize' ]]; <br>
config.extraPlugins = '';<br>
config.enterMode = CKEDITOR.ENTER_BR; <br>
config.shiftEnterMode = CKEDITOR.ENTER_P;<br>
config.font_names='宋体/宋体;黑体/黑体;仿宋/仿宋_GB2312;楷体/楷体_GB2312;隶书/隶书;幼圆/幼圆;微软雅黑/微软雅黑;'+ config.font_names;<br>
};</p> <p><br>
CKEDITOR.on( 'instanceReady', function( ev ){ with (ev.editor.dataProcessor.writer) { setRules("p", {indent : false, breakAfterOpen : false, breakBeforeClose : false} ); setRules("h1", {indent : false, breakAfterOpen : false, breakBeforeClose : false} ); setRules("h2", {indent : false, breakAfterOpen : false, breakBeforeClose : false} ); setRules("h3", {indent : false, breakAfterOpen : false, breakBeforeClose : false} ); setRules("h4", {indent : false, breakAfterOpen : false, breakBeforeClose : false} ); setRules("h5", {indent : false, breakAfterOpen : false, breakBeforeClose : false} ); setRules("div", {indent : false, breakAfterOpen : false, breakBeforeClose : false} ); setRules("table", {indent : false, breakAfterOpen : false, breakBeforeClose : false} ); setRules("tr", {indent : false, breakAfterOpen : false, breakBeforeClose : false} ); setRules("td", {indent : false, breakAfterOpen : false, breakBeforeClose : false} ); setRules("iframe", {indent : false, breakAfterOpen : false, breakBeforeClose : false} ); setRules("li", {indent : false, breakAfterOpen : false, breakBeforeClose : false} ); setRules("ul", {indent : false, breakAfterOpen : false, breakBeforeClose : false} ); setRules("ol", {indent : false, breakAfterOpen : false, breakBeforeClose : false} ); } }); <br>
//CKEDITOR.plugins.load('pgrfilemanager');<br>
function insert_page(editorid)<br>
{<br>
var editor = CKEDITOR.instances;<br>
editor.insertHtml('');<br>
if($('#paginationtype').val()) {<br>
$('#paginationtype').val(2);<br>
$('#paginationtype').css("color","red");<br>
}<br>
}</p> <p>function insert_page_title(editorid,insertdata)<br>
{<br>
if(insertdata)<br>
{<br>
var editor = CKEDITOR.instances;<br>
var data = editor.getData();<br>
var page_title_value = $("#page_title_value").val();<br>
if(page_title_value=='')<br>
{<br>
$("#msg_page_title_value").html("<font color='red'>请输入子标题</font>");<br>
return false;<br>
}<br>
page_title_value = ''+page_title_value+'';<br>
editor.insertHtml(page_title_value);<br>
$("#page_title_value").val('');<br>
$("#msg_page_title_value").html('');<br>
if($('#paginationtype').val()) {<br>
$('#paginationtype').val(2);<br>
$('#paginationtype').css("color","red");<br>
}<br>
}<br>
else<br>
{<br>
$("#page_title_div").slideDown("fast");<br>
}<br>
}<br>
var objid = MM_objid = key = 0;<br>
function file_list(fn,url,obj) {<br>
$('#MM_file_list_editor1').append('<div id="MM_file_list_'+fn+'">'+url+' <a href=\'#\' onMouseOver=\'javascript:FilePreview("'+url+'", 1);\' onMouseout=\'javascript:FilePreview("", 0);\'>查看</a> | <a href="javascript:insertHTMLToEditor(\'<img src='+url+'>\',\''+fn+'\')">插入</A> | <a href="javascript:del_file(\''+fn+'\',\''+url+'\','+fn+')">删除</a><br>
');<br>
}</div>
<p>
</p>
<p>
3.打开/statics/js/ckeditor/ckeditor.js 做一些修改,目的是 把工具栏上的分页按钮与phpcms的分页保持一致。</p>
<p>
找到:</p>
<p>
</p>
<div>
<p>
代码如下:</p>
</div>
<div id="phpcode11">
<br>
CKEDITOR.plugins.pagebreakCmd={exec:function(a){var b=a.lang.pagebreak.alt,b=CKEDITOR.dom.element.createFromHtml('<divcontenteditable="false">
<p>
代码如下:</p>
</div>
<div id="phpcode12">
<br>
CKEDITOR.plugins.pagebreakCmd={exec:function(a){a.insertHtml('');o=document.getElementById('paginationtype');o.options.selected = true}};</div>
<p>
</p>
<p>
4.打开/phpcms/libs/classes/form.class.php 添加一些内容,目的是加上编辑器底部的三个按钮。(phpcms之前是在 ckeditor.js中做的。)</p>
<p>
在下面代码后面</p>
<p>
</p>
<div>
<p>
代码如下:</p>
</div>
<div id="phpcode13">
<br>
if(!defined('IMAGES_INIT')) {<br>
$ext_str .= '<script type="text/javascript" src="'.JS_PATH.'swfupload/swf2ckeditor.js"></script>';<br>
define('IMAGES_INIT', 1);<br>
}</div>
<p>
</p>
<p>
添加:</p>
<p>
</p>
<div>
<p>
代码如下:</p>
</div>
<div id="phpcode14">
<br>
$ext_str.="<div class=\"cke_footer\">";<br>
if(!$disabled_page){<br>
$ext_str.="<a href=\"javascript:insert_page('content')\">分页符</a><a href=\"javascript:insert_page_title('content')\">子标题</a>";<br>
}<br>
$ext_str.="<a onclick=\"flashupload('flashupload', '附件上传','{$textareaid}','','{$allowuploadnum},{$alowuploadexts},{$allowbrowser}','{$module}','{$catid}','{$authkey}');;return false;\" href=\"javascript:void(0);\">附件上传</a><br>
</div>";</div>
<p>
</p>
<p>
5.复制旧版ckeditor/skins/kama/images/文件夹下的文件 到 新版ckeditor/skins/moono/images/下。目的是一些样式的需要。</p>
<p>
6.打开ckeditor\skins\moonoeditor_gecko.css文件,在最后加入三个按钮的样式即可</p>
<p>
</p>
<div>
<p>
代码如下:</p>
</div>
<div id="phpcode15">
<br>
/*phpcms 新增编辑器底部按钮样式*/<br>
.cke_top {<br>
background: url("images/line.png") repeat-x scroll 0 0 transparent;<br>
}<br>
.cke_footer {<br>
float: left;<br>
margin-top: 3px;<br>
}<br>
.cke_footer a, .cke_footer a:hover, .cke_footer a:visited,.cke_footer a:active {<br>
background: url("images/cke_fot.gif") repeat-x scroll left bottom transparent;<br>
border: 1px solid #E0E0E0;<br>
color: #666666;<br>
cursor: pointer;<br>
display: block;<br>
float: left;<br>
height: 19px;<br>
line-height: 19px;<br>
margin-right: 8px;<br>
padding: 0 10px;<br>
}<br>
.cke_footer a:hover {<br>
background-position: left top;<br>
}</p> <p><br>
.editor_bottom {<br>
clear: both;<br>
height: 12px;<br>
top:-28px;<br>
position: relative;<br>
}<br>
#page_title_div {<br>
display: none;<br>
height: 78px;<br>
left: 18px;<br>
position: absolute;<br>
top: -120px;<br>
width: 295px;<br>
z-index: 99999;<br>
}<br>
#page_title_div table {<br>
background: none repeat scroll 0 0 #FFFFFF;<br>
border: 2px solid #D5E0E6;<br>
height: 78px;<br>
width: 295px;<br>
}<br>
#page_title_div table td {<br>
border: medium none;<br>
}<br>
#page_title_div table td.title {<br>
color: #333333;<br>
font: 18px/31px "MicroSoft YaHei","SimHei";<br>
height: 26px;<br>
margin: 0;<br>
padding: 0 0 0 12px;<br>
text-align: left;<br>
}<br>
#page_title_div a.close span {<br>
display: none;<br>
}<br>
#page_title_div a.close {<br>
background: url("images/cross.png") no-repeat scroll left 3px transparent;<br>
display: block;<br>
float: right;<br>
height: 16px;<br>
margin-right: 10px;<br>
width: 16px;<br>
}<br>
#page_title_div a.close:hover {<br>
background-position: left -46px;<br>
}<br>
.content_attr {<br>
background: none repeat scroll 0 0 #FFFFCC;<br>
border: 1px solid #CCCCCC;<br>
margin-top: 6px;<br>
padding: 5px 8px;<br>
}<br>
#Capture {<br>
color: #474747;<br>
font-size: 12px;<br>
line-height: 20px;<br>
}<br>
#Capture font {<br>
color: #FF0000;<br>
}<br>
#Capture a {<br>
background: url("images/cdw.png") no-repeat scroll 0 0 transparent;<br>
color: #0075C0;<br>
display: inline-block;<br>
padding-left: 20px;<br>
text-decoration: none;<br>
}<br>
#Capture a:hover {<br>
text-decoration: underline;<br>
}<br>
#Capture #CaptureDown {<br>
background-image: url("images/cd.png");<br>
}</div>
<p>
</p>
<p>
到此,ckeditor编辑器升级完成,需要说明一下的是,phpcms本身自带一个capture插件,本次升级没有考虑它,一是用处不大,而是只能在ie中使用。</p>
<p>
如有什么疑问或错误,请告知,谢谢!</p>
頁:
[1]