CKEditor接触初了解
来源:互联网 发布:苹果mac切换输入法 编辑:程序博客网 时间:2024/06/03 22:52
ckeditor有了初步的了解。关于这个富文本编辑器,功能还是挺强大的,在这几天的学习中就大致的对它进行了添加了部分功能。那么接下来就说说吧。 下面做的是添加一个日历的插件功能。 首先看下文件的结构,有个plugin文件夹,这里肯定就是要外部添加的地方了。由于是结合easyui,其中的具体效果就没用my97DatePicker了。 先在plugin下新建一个名为datepicker的文件夹。其中文件夹的具体分类如图。!! - 包结构(图片上传不了,就只有自己来写哈了) - ckeditor - plugins - datepicker - dailogs - datepicker.js - images - date.png(大小为16*16) - plugin.js 其中plugin.js的代码如下
CKEDITOR.plugins.add('datepicker', { requires : ['dialog'], init : function (editor) { var pluginName = 'datepicker'; //加载自定义窗口 CKEDITOR.dialog.add('datepicker',this.path + "dialogs/datepicker.js"); //给自定义插件注册一个调用命令 editor.addCommand( pluginName, new CKEDITOR.dialogCommand( 'datepicker' ) ); //注册一个按钮,来调用自定义插件 editor.ui.addButton('datepicker', { //editor.lang.date.toolbar是在zh-cn.js中定义的一个中文项, //这里可以直接写英文字符,不过要想显示中文就得修改zh-cn.js label : editor.lang.date.toolbar, command : pluginName, icon: this.path + 'images/date.png' }); } } );
而datepicker.js的代码是参考它的源代码修改的
/* wangxizhu 2015/04/11*/CKEDITOR.dialog.add("datepicker",function(b){ function d(a){ var b=this.getValue(); b?(a.attributes[this.id]=b, "name"==this.id&&(a.attributes["data-cke-saved-name"]=b)):( delete a.attributes[this.id], "name"==this.id&&delete a.attributes["data-cke-saved-name"]) } return{ title:b.lang.date.title, minWidth:300, minHeight:125, onShow:function(){ delete this.button; var a=this.getParentEditor().getSelection().getSelectedElement(); a&&a.is("input")&&a.getAttribute("type")in{easyui_calendar:1,easyui_datebox:1,easyui_datetimebox:1}&&(this.date=a,this.setupContent(a))}, onOk:function(){ var a=this.getParentEditor(), b=this.button, d=!b, c=b?CKEDITOR.htmlParser.fragment.fromHtml( b.getOuterHtml() ).children[0]:new CKEDITOR.htmlParser.element("input"); this.commitContent(c); var e=new CKEDITOR.htmlParser.basicWriter; c.writeHtml(e); c=CKEDITOR.dom.element.createFromHtml(e.getHtml(),a.document);d?a.insertElement(c):(c.replace(b),a.getSelection().selectElement(c)) }, contents:[{ id:"info", label:b.lang.date.title, title:b.lang.date.title, elements:[ //配置name属性 { id:"name", type:"text", label:b.lang.common.name, style:"width:150px;", "default":"", //默认显示的内容 setup:function(a){ this.setValue(a.data("cke-saved-name")||a.getAttribute("name")||"") }, commit:d }, //配置class属性,添加了easyui的3种时间类型 { id:"class", type:"select", label:b.lang.date.class, style:"width:150px;", "default":"easyui-datetimebox", accessKey:"C", items:[ [b.lang.date.easyui_calendar,"easyui-calendar"], [b.lang.date.easyui_datebox,"easyui-datebox"], [b.lang.date.easyui_datetimebox,"easyui-datetimebox"] ], setup:function(a){ this.setValue(a.getAttribute("class")||"") }, commit:d }, //验证是否必填 { id:"required", type:"checkbox", label:b.lang.date.required, "default":"", accessKey:"R", value:"required", setup:function(a){ this.setValue(a.getAttribute("required")) }, commit:d } ]} ] }});
而而关于代码中用名称,如b.lang.date.class则写在具体的配置文件中。打开lang中的zh-cn.js,找到about,即“关于”,在花括号后添加配置信息。
"date":{"title":"时间属性","toolbar":"日历控件","id":"日历ID","text":"日历名称","class":"时间类型","type":"类型","required":"是否必须输入","easyui_calendar":"日历","easyui_datebox":"日期","easyui_datetimebox":"日期和时间"},
基本快要接近尾声了,datepicker算是创建好了,那么要添加到toolbar中,则需要在config.js中添加以下代码。
config.extraPlugins = 'datepicker'; //添加插件 config.allowedContent= true; //允许添加所有的内容,从而不会过滤掉css或js的代码
其他部分: 1.在通过easyui的form方法提交表单数据时,却不能获取到editor的内容,那么这时就需要用到`
var chartCode=parent.CKEDITOR.instances.theadEditor.getData();
注:由于是在弹框中用到的编辑器,所以就在index.jsp中调用的ckeditor.js然后这里就需要“parent”了。 在前台像后台传送数据时,就需要自己封装了。
$.post("stuController/save.do",stu{name:"zc",chartCode:parent.CKEDITOR.instances.theadEditor.getData()},function(data){ if(data){ $.prompt(); }else{ alert('添加配置信息失败!'); } });后台的话就直接接受接可以了,因为前台通过json字串传递,已经封装为一个对象了。 public String save(Student stu){ return service.save(stu)==1? "true" : "false"; }
2.ckeditor的toolbar中的内容可能有点多,有些没有必要,那么在页面中通过js也可以来控制的(是不是挺好的:)
CKEDITOR.replace('searEditor',{ toolbar :[ ['Source','-','Save','NewPage','Preview','-','Templates'], ['Cut','Copy','Paste'],['Undo','Redo','-'], ['Form', 'Checkbox', 'Radio','-', 'TextField', 'Textarea', 'Select','-', 'Button', 'ImageButton','datepicker'], '/', ['Bold','Italic','Underline','Strike','-','Subscript','Superscript'], ['JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock'], ['Link','Unlink','Anchor','Table'], '/', ['Styles','Format','Font','FontSize'], ['TextColor','BGColor','-'] ]}); 纯粹本人理解,有错误的地方,希望同学们指出,多多交流咯。
0 0
- CKEditor接触初了解
- 接触了解Java
- ExtJS初接触 —— 了解 Ext Core
- 初接触单例模式的些许了解
- android Ant初次接触了解
- Freemaker初接触(四)宏的了解和变量的类型
- 刚接触jsp 想了解一下jsp
- ckeditor初尝试
- CKeditor
- CKEditor
- CKEditor
- CKEditor
- ckeditor
- CKeditor
- ckeditor
- CKeditor
- ckeditor
- CKEditor
- 分区索引--本地索引和全局索引比较
- HTML学习基础-<!DOCTYPE html>
- python部分正则
- BZOJ2738【整体二分】【树状数组】
- 随笔
- CKEditor接触初了解
- NYOJ 640 “炫舞家“ST(DP)
- leetcode-192 Word Frequency
- 利用python控制Autocad:pyautocad
- 不修改代码就能优化ASP.NET网站性能的一些方法
- Unity3D插件EasyTouch详细说明(03)
- 社交关系与大数据的结合
- 在Linux环境下无法正常安装VMware tools工具的解决方法
- Twitter的分布式自增ID算法