2012-01-15 17:32:12|?次阅读|上传:wustguangh【已有?条评论】发表评论
关键词:JavaScript, Web, CKEditor|来源:唯设编程网
在定义了tab页面之后, 你可以通过传递一个uiElements的数组作为contentDefinition的元素来定义每个tab页的UI. 那里右两种类型的uiElements, 结构型的和输入型的. 结构型元素(vbox和hbox)使用表格来放置元素的位置. 结构型的元素可以镶嵌从而形成复杂的结构. 当输入的uiElements拥有一些比较重要的特征的时候这会使得他们比DOM输入元素更有用.
elements:[{ type : 'hbox', widths : [ '100px', '100px', '100px' ], children : [{ type:'html', html:'<div>Cell1', },{ type:'html', html:'
', },{ type: 'vbox', children:[{ type:'html', html:'
', },{ type:'html', html:'
' }] }]
输入型元素有很多的属性和方法可用. 更多的细节请参考uiElement文档, 同时这里也有一些比较重要的:
this.getDialog().getContentElement(pageIdName,elementIdName) //pageIdName is the ID for page containing the element
validate : CKEDITOR.dialog.validate.notEmpty(ErrorMessage)
如果域是空的,那么错误消息将在你点击ok按钮的时候弹出.
内置的验证器包含:
onShow : function(){ //onShow function for the dialog definition
//... other code ...
var elem= this.getParentEditor().getSelection().getSelectedElement(); //get the current selected element
this.setupContent(elem); //this function will call all the setup function for all uiElements
//... other code...
},
contents: [{
id: 'InfoTab',
label: 'Info Tab',
elements:[
{ //input element for the width
type: 'text',
id: 'widthInput',
label: 'Width',
labelLayout: 'horizontal',
setup: function(element){
this.setValue(element.getAttribute('width'));
}
}]
}]
上下文菜单是你在CKEditor中右键所弹出的菜单. 就像CKEditor的其它特征一样,它也很容易被定制. 下面的代码展示了如何增加一个“Code“菜单项的过程:
if(editor.addMenuItems) { editor.addMenuItems( //have to add menu item first { insertCode: //name of the menu item { label: 'Code', command: 'insertCode', group: 'insertCode' //have to be added in config } }); } if(editor.contextMenu) { editor.contextMenu.addListener(function(element, selection) //function to be run when context menu is displayed { if(! element || !element.is('pre')) return null; return { insertCode: CKEDITOR.TRISTATE_OFF }; }); }
前述代码在上下文菜单中增加了额外的insertCode元素. 当右击在非‘pre’元素上时, insertCode菜单将不会显示. 当右击在‘pre’元素上时insertCode菜单将会显示OFF状态.
除了上面的代码, 你依然需要把insertCode组放到config中,这样才能排列菜单显示的顺序. 以下是需要在config.js中增加的代码:
config.menu_groups = 'clipboard, form, tablecell, tablecellproperties, tablerow, tablecolumn, table, anchor, link, image, flash, checkbox, radio, textfield, hiddenfield, imagebutton, button,select, textarea, insertCode';
你会看到insertCode插入在了menu_groups配置的最后面. 最终的结果是:
写完所有的代码之后, 就须要把你的代码产品化. 就像前面提到的那样, 原始的代码包含了很多文件,都会被压缩成一些个文件从而降低HTTP请求. 有必要把你的代码和这些文件合并。
打包这些文件实际上是由ckeditor.pack控制的. 把你的源代码文件放到‘ckeditor.js’的列表中, 将会把你的文件添加进去.
而事实上的打包,你须要额外的两个文件ckpackager.exe或ckpackager.jar. 在你下载完这两个文件后,在你的ckeditor根下运行下面的命令:
ckpackager.exe ckeditor.pack
现在你的源码文件将会自动被打包并拷贝到ckeditor的根目录下. 可以开始享用你的插件了!