Jxstar集成百度富媒体编辑器UEditor

因为项目需要,需要在Jxstar中集成百度富媒体编辑器,主要是需要使用百度地图,尝试了很多种方案,终于能够优雅的集成UEditor了,但是在集成过程中,在JxExt.js添加了代码,不是很好,在开发过程中尽量不要修改平台源码,直接放图片

百度富媒体编辑器.png

集成百度富媒体编辑器说明

  1. 导入百度富媒体编辑器文件,放到lib目录下面ueditor1.4.3.3,并且把jsp页面下的jar包添加到WEB-INFO/lib下面,其中有两个jar版本比JxStar版本高,我使用了新版本的jar
  2. 在index_top.jsp 文件底部引入
    
    
  1. 在JxExt.js添加如下代码
Ueditor = Ext.extend(Ext.form.Field ,{
    id : 'editor',
    defaultAutoCreate : {tag: 'div'},
    constructor : function(cfg){
        Ext.apply(this,cfg);
        this.listeners = {
            render : function(cmp) {
                //注意此处zIndex的值为8999 目的是防止百度富媒体编辑器覆盖Extjs的弹出框
                var ueditor = new UE.ui.Editor({zIndex:8999,initialFrameWidth:"100%",initialFrameHeight : 500,});
                this.ueditor = ueditor;
                ueditor.render(cmp.id);
                if(this.originalValue){
                    var v = this.originalValue;
                    ueditor.ready(function(){
                        ueditor.setHeight(500);
                        ueditor.setContent(v);
                    });
                }
                //监听百度富媒体编辑器内容改变事件
                ueditor.addListener("contentChange",function(){
                    ueditor.setHeight(500);
                });
            },
            scope : this,
        };

        Ueditor.superclass.constructor.call(this);
    },
    /**
     * 重写setValue方法 主要为修改设置值
     * */
    setValue : function(value){
        var self = this;
        if(!self.ueditor){
            self.originalValue = value;
        }else{
            self.ueditor.ready(function(){
                self.ueditor.setHeight(500);
                self.ueditor.setContent(value);
            });
        }
    },
    getValue : function(){
        var self = this;
        var ueditorValue = "";
        if(!self.ueditor){
            ueditorValue =  self.originalValue ;
        }else{
            self.ueditor.ready(function(){
                self.ueditor.setHeight(500);
                ueditorValue = self.ueditor.getContent();
            });
        }
        return ueditorValue;
    }



});
Ext.reg('ueditor', Ueditor);
  1. 使用方法:在Inc文件中直接修改控件的类型即可
var isret = false;
var findcfg = function(datas) {
    if (isret) return;
    for (var i = datas.length-1; i >= 0; i--) {
        if (datas[i].name == 'uoa_news__news_content') {
            var heitem = datas[i];
            if (heitem) {
                delete heitem.width;
                heitem.xtype = 'ueditor';
                heitem.anchor = '100%';
                heitem.maxLength = 20000;
            }
            isret = true; return;
        } else {
            if (datas[i].items && datas[i].items.length > 0) {
                findcfg(datas[i].items);
            }
        }
    }
};
findcfg(items);

优化百度富媒体编辑器皮肤说明

  1. 在themes下导入wx皮肤包(大神定制好的,直接导入使用即可)
  2. 在ueditor.config.js 中设置 微信主题:theme: 'wx',themePath : URL + "themes/"

升级百度富媒体编辑器百度地图,以及自动获取百度地图IP地址并绑定到指定控件说明

  1. 默认富媒体编辑器百度地图的版本为V1.1升级方式为:

  1. 升级完成后有过期的API需要修改
    marker.setPoint(point)需要升级为marker.setPosition(point);
    marker.getPoint()需要升级为marker.getPosition();
    map.zoomLevel;需要升级为map.getZoom();
  2. 绑定百度地图的坐标到指定的控件需要在map.html上修改代码:
      var mapCoordinate = point.lng + ',' + point.lat;
              if($G('is_dynamic').checked) {
                  var URL = editor.options.UEDITOR_HOME_URL,
                      url = [URL + (/\/$/.test(URL) ? '':'/') + "dialogs/map/show.html" +
                          '#center=' + center.lng + ',' + center.lat,
                          '&zoom=' + zoom,
                          '&width=' + mapWidth,
                          '&height=' + mapHeight,
                          '&markers=' + point.lng + ',' + point.lat,
                          '&markerStyles=' + 'l,A'].join('');
                  editor.execCommand('inserthtml', '');
              } else {
                  var url = "http://api.map.baidu.com/staticimage?center=" + center.lng + ',' + center.lat +
                          "&zoom=" + zoom + "&width=" + size.width + '&height=' + size.height + "&markers=" + point.lng + ',' + point.lat;
                  editor.execCommand('inserthtml', '');
              }

在ueditor.all.js修改代码即可:

     UE.commands['inserthtml'] = {
         execCommand: function (command,html,notNeedFilter){
             if(document.getElementsByName('uoa_news__map_coordinate').length > 0){
                 var objDiv = document.createElement("div");
                 objDiv.innerHTML =html;
                 if(objDiv.childNodes[0].getAttribute("mapcoordinate")){
                     document.getElementsByName('uoa_news__map_coordinate')[0].value = objDiv.childNodes[0].getAttribute("mapcoordinate");
                 }
             }

你可能感兴趣的:(Jxstar集成百度富媒体编辑器UEditor)