|
之前找了些集成ckeditor资料,自己总结了一份,发上来共享下。
先说调用,只需在需要的控制器内使用$this->load->helper('ckeditor');
然后就可以在view中使用<?php echo ckeditor('textareaname',array(0,1,2,3),'初始化显示文字');?>;
就是这么简单。。。。
下面说下都需要哪些操作
1、下载官方的ckeditor和ckfinder文件,可以把里面没用的东西删除,进行瘦身,这个网上搜下很多的,把下载好的目录放到项目中,位置自己选定。
2、将两个目录中各自的类文件拷贝到application/library/目录下并重新命名,修改成CI支持的类文件名称。
3、在CI的application/config/config.php文件末尾添加ckeditor和ckfinder的配置信息,代码如下:
PHP复制代码
/*
* ckeditor和ckfinder的配置选项
* ckeditorPath是ckeditor目录的位置
* ckfinderPath是ckfinder目录的位置
* editor_config为ckeditor的标题配置文件
*/
$config['ckeditorPath'] = 'public/ckeditor/';
$config['ckfinderPath'] = 'public/ckfinder/';
$config['editor_config'] = array(
'language'=> 'zh-cn', //默认语言
'skin' => 'kama', //皮肤方案kama(默认) office2003 v2 三种皮肤
'resize_enable' => 'false' //是否可拖动改变尺寸
);
$config['toolbar_Full'] = array(
array('Source','-','Save','NewPage','Preview','-','Templates'), //源码,保存,新建,预览,模版
array('TextColor','BGColor'),
array('Image','Flash','Table','HorizontalRule','Smiley','SpecialChar','PageBreak'),
array('Styles','Format','Font','FontSize'),
array('Cut','Copy','Paste','PasteText','PasteFromWord','-','Print', 'SpellChecker', 'Scayt'),
array('Undo','Redo','-','Find','Replace','-','SelectAll','RemoveFormat'),
array('Form', 'Checkbox', 'Radio', 'TextField', 'Textarea', 'Select', 'Button', 'ImageButton', 'HiddenField'),
array('Bold','Italic','Underline','Strike','-','Subscript','Superscript'),
array('NumberedList','BulletedList','-','Outdent','Indent','Blockquote'),
array('JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock'),
array('Link','Unlink','Anchor'),
); 复制代码
4、在application/helpers/目录下创建editor_helper.php文件,代码如下:
PHP复制代码
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
if( ! function_exists('ckeditor')){
/*
* name是创建的textarea的name名字
* type是工具栏调用功能,如果为空的话调用全部
* content是编辑器默认显示的内容,默认为空
*/
function ckeditor ($name='content',$type = array(0,3,2,1),$content = ''){
$CI =& get_instance ();
$config = $CI->config->config; //取得配置文件中的配置信息
if(!empty($config['ckeditorPath'])){
$ckeditorPath = base_url ().$config['ckeditorPath']; //ckeditor路径
}
if(!empty($config['ckfinderPath'])){
$ckfinderPath = base_url ().$config['ckfinderPath']; //ckfinder路径
}
if(!empty($config['editor_config'])){
$editor_config = $config['editor_config']; //配置文件
}else{
$editor_config = '';
}
if(!empty($config['toolbar_Full'])){ //头部功能建设置
if(is_array($type) && count($type) > 0){
foreach($type as $k => $v){
$editor_config['toolbar_Full'][] = $config['toolbar_Full'][$v];
}
}else{
$editor_config['toolbar_Full'] = '';
$editor_config['toolbar'] = 'Full';
}
}else{
$editor_config['toolbar'] = 'Full';
}
$CI->load->library('ckeditor'); //导入application/library/ckeditor.php文件
$CI->load->library('ckfinder'); //导入application/library/ckfinder.php文件
$CI->ckfinder->BasePath = $ckfinderPath; //初始化ckfinder路径
$CI->ckeditor->returnOutput = true; //设置返回输出
$CI->ckeditor->basePath = $ckeditorPath; //初始化ckeditor路径
$CI->ckfinder->SetupCKEditor($CI->ckeditor,$ckfinderPath); //ckfinder中自带集成ckeditor函数
$ckeditor = $CI->ckeditor->editor($name,$content,$editor_config); //生成ckeditor编辑器,带上传文件功能
return $ckeditor;
}
}
?>
复制代码
5、修改ckfinder的上传文件路径,这里他本身引用的好像是决定路径。。刚在论坛里看到有个朋友已经解决了这个问题,这里就引用他的方法。
修改ckfinder目录下的config.php文件,找到$baseUrl这行代码,将其注释掉,并更换成代码:
PHP复制代码
$right_ulr = explode('/',$_SERVER['PHP_SELF']);
$len = count($right_ulr);
for($i=0;$i<6;$i++)
unset($right_ulr[count($right_ulr)-1]);
//var_dump($right_ulr);
$baseUrl = implode('/', $right_ulr).'/public/upload/';
复制代码
6、ckfinder上传文件后采用的是原文件名,修改方法是在网上找的,
打开/ckfinder/core /connector/php/php5/CommandHandler/FileUpload.php 找到
$sUnsafeFileName = CKFinder_Connector_Utils_FileSystem::convertToFilesystemEncoding(CKFinder_Connector_Utils_Misc::mbBasename($uploadedFile['name']));
后面加上
$sExtension = CKFinder_Connector_Utils_FileSystem::getExtension($sUnsafeFileName);
$sUnsafeFileName=date('YmdHis').'.'.$sExtension;
7、上传权限问题,找到/ckfinder/config.php文件,第一个函数CheckAuthentication()是用来判断上传文件权限的,自己根据业务逻辑进行权限判断,这个函数返回true,就表示能够上传,返回false则不能上传文件。测试时可将其直接返回true。
PHP复制代码
function CheckAuthentication(){
return ture;
}
复制代码
注:cifinder的商业使用是需要购买版权的,详细请查看ckfinder官网
|
|