admin 发表于 2015-9-24 16:16:38

实战-Ueditor扩展二次开发

第一部分 开发前期准备   

1、UEditor从1.4.1开始,添加对于二次开发的扩展支持。   Jeewx扩展二次开发采用1.4.3.1 Jsp 版本
2、上传图片设置   简述: UE做的不够灵活,不如老版本
    配置文件:ueditor/jsp/config.json       说明: 所有项目配置访问前缀
    引入UE依赖的JAR包        特殊说明:UE自带的ueditor-1.1.2.jar有问题,经过修改源码好用。第二部分 扩展增加按钮DEMO

customizeToolbarUIDemo.html页面 <!DOCTYPE HTML>
<html>
<head>
    <title>完整demo</title>
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
    <!--UEditor-->
    <script type="text/javascript" charset="utf-8" src="../ueditor.config.js"></script>
    <script type="text/javascript" charset="utf-8" src="../ueditor.all.min.js"> </script>
    <script type="text/javascript" charset="utf-8" src="../lang/zh-cn/zh-cn.js"></script>
    <!--添加按钮-->
    <script type="text/javascript" charset="utf-8" src="addCustomizeButton.js"></script>
    <style type="text/css">
      .clear {
            clear: both;
      }
      div{
            width:100%;
      }
    </style>
</head>
<body>
<div>
    <h1>二次开发demo</h1>
    <script id="editor" type="text/plain" style="width:1024px;height:500px;"></script>
</div>
</body>
<script type="text/javascript">
    //实例化编辑器
    UE.getEditor('editor');
</script>
</html> addCustomizeButton.js页面
UE.registerUI('微信模板', function(editor, uiName) {
    //注册按钮执行时的command命令,使用命令默认就会带有回退操作
    editor.registerCommand(uiName, {
      execCommand: function() {
            alert('execCommand:' + uiName)
      }
    });
    //创建一个button
    var btn = new UE.ui.Button({
      //按钮的名字
      name: uiName,
      //提示
      title: uiName,
      //添加额外样式,指定icon图标,这里默认使用一个重复的icon
      cssRules: 'background-position: -500px 0;',
      //点击时执行的命令
      onclick: function() {
            //这里可以不用执行命令,做你自己的操作也可
            editor.execCommand(uiName);
      }
    });
    //当点到编辑内容上时,按钮要做的状态反射
    editor.addListener('selectionchange', function() {
      var state = editor.queryCommandState(uiName);
      if (state == -1) {
            btn.setDisabled(true);
            btn.setChecked(false);
      } else {
            btn.setDisabled(false);
            btn.setChecked(state);
      }
    });
    //因为你是添加button,所以需要返回这个button
    return btn;
});第三部分 微信编辑扩展我的素材插件

​ 修改JSP页面,引入插件JS
      weixin/guanjia/newstemplate/weixinArticle-update.jsp   
    插件JS源码
UE.plugins['weixin_template'] = function () {
    var me = this,thePlugins = 'weixin_template';
    me.commands = {
      execCommand:function (cmd,uiName) {
                var pos='WXNRQ';
            if(uiName=='内容区'){
                pos         ='WXNRQ';//此处编码要对应weixin数据字典项
      }if(uiName=='关注引导'){
                pos         ='WXGZYD';
      }else if(uiName=='标题'){
                pos         ='WXBT';
      }else if(uiName=='原文引导'){
                pos         ='WXYWYD';
      }else if(uiName=='分隔线'){
                pos         ='WXFGX';
      }else if(uiName=='互推账号'){
                pos         ='WXHTZH';
      }else if(uiName=='我的样式'){
                pos         ='WXWDYS';
      }else if(uiName=='其他'){
                pos         ='WXQT';
      }
            var dialog = new UE.ui.Dialog({
                iframeUrl:this.options.UEDITOR_HOME_URL + '/demo/weixin.html?type='+pos,
                name:thePlugins,
                editor:this,
                title: '微信图文模板',
                cssRules:"width:740px;height:430px;",
                buttons:[
                {
                  className:'edui-okbutton',
                  label:'确定',
                  onclick:function () {
                        dialog.close(true);
                  }
                }]
            });
            dialog.render();
            dialog.open();
      }
    };
};

function weixinButton(editor,uiName){
    //注册按钮执行时的command命令,使用命令默认就会带有回退操作
    editor.registerCommand(uiName,{
      execCommand:function(){
                try {
                     editor.execCommand('weixin_template',uiName);
            } catch ( e ) {
                alert('打开模板异常'+e);
            }
      }
    });
    //创建一个button
    var btn = new UE.ui.Button({
      //按钮的名字
      name:uiName,
      //提示
      title:uiName,
      //需要添加的额外样式,指定icon图标,这里默认使用一个重复的icon
      cssRules :'background-position:-902px -45px;width: 63px!important;',
      //点击时执行的命令
      onclick:function () {
            //这里可以不用执行命令,做你自己的操作也可
         editor.execCommand(uiName);
      }
    });
    //因为你是添加button,所以需要返回这个button
    return btn;
}
UE.registerUI('微信图文模板',weixinButton);
页: [1]
查看完整版本: 实战-Ueditor扩展二次开发