ExtJs 集成UEditor and KindEditor

贡献两个Extjs 4.2 编辑器插件

1.UEditor(使用页面需要引用UEditor相关文件)

Ext.define(‘App.ux.UEditor‘, {
    extend: ‘Ext.form.field.Text‘,
    alias: [‘widget.ueditor‘],
    //alternateClassName: ‘Ext.form.UEditor‘,
    fieldSubTpl: [
        ‘<textarea id="{id}" {inputAttrTpl}‘,
            ‘<tpl if="name"> name="{name}"</tpl>‘,
            ‘<tpl if="rows"> rows="{rows}" </tpl>‘,
            ‘<tpl if="cols"> cols="{cols}" </tpl>‘,
            ‘<tpl if="placeholder"> placeholder="{placeholder}"</tpl>‘,
            ‘<tpl if="size"> size="{size}"</tpl>‘,
            ‘<tpl if="maxLength !== undefined"> maxlength="{maxLength}"</tpl>‘,
            ‘<tpl if="readOnly"> readonly="readonly"</tpl>‘,
            ‘<tpl if="disabled"> disabled="disabled"</tpl>‘,
            ‘<tpl if="tabIdx"> tabIndex="{tabIdx}"</tpl>‘,
    //            ‘ class="{fieldCls} {inputCls}" ‘,
            ‘<tpl if="fieldStyle"> style="{fieldStyle}"</tpl>‘,
            ‘ autocomplete="off">\n‘,
            ‘<tpl if="value">{[Ext.util.Format.htmlEncode(values.value)]}</tpl>‘,
        ‘</textarea>‘,
        {
            disableFormats: true
        }
    ],
    ueditorConfig: {},
    initComponent: function () {
        var me = this;
        me.callParent(arguments);
    },
    afterRender: function () {
        var me = this;
        me.callParent(arguments);
        if (!me.ue) {
            me.ue = UE.getEditor(me.getInputId(), Ext.apply(me.ueditorConfig, {
                initialFrameHeight: me.height || ‘300px‘,
                initialFrameWidth: ‘100%‘
            }));
            me.ue.ready(function () {
                me.UEditorIsReady = true;
            });

      //这块 组件的父容器关闭的时候 需要销毁编辑器 否则第二次渲染的时候会出问题 可根据具体布局调整
            var win = me.up(‘window‘);
            if (win && win.closeAction == "hide") {
                win.on(‘beforehide‘, function () {
                    me.onDestroy();
                });
            } else {
                var panel = me.up(‘panel‘);
                if (panel && panel.closeAction == "hide") {
                    panel.on(‘beforehide‘, function () {
                        me.onDestroy();
                    });
                }
            }
        } else {
            me.ue.setContent(me.getValue());
        }
    },
    setValue: function (value) {
        var me = this;
        if (!me.ue) {
            me.setRawValue(me.valueToRaw(value));
        } else {
            me.ue.ready(function () {
                me.ue.setContent(value);
            });
        }
        me.callParent(arguments);
        return me.mixins.field.setValue.call(me, value);
    },
    getRawValue: function () {
        var me = this;
        if (me.UEditorIsReady) {
            me.ue.sync(me.getInputId());
        }
        v = (me.inputEl ? me.inputEl.getValue() : Ext.value(me.rawValue, ‘‘));
        me.rawValue = v;
        return v;
    },
    destroyUEditor: function () {
        var me = this;
        if (me.rendered) {
            try {
                me.ue.destroy();
                var dom = document.getElementById(me.id);
                if (dom) {
                    dom.parentNode.removeChild(dom);
                }
                me.ue = null;
            } catch (e) { }
        }
    },
    onDestroy: function () {
        var me = this;
        me.callParent();
        me.destroyUEditor();
    }
});

    

1.KindEditor(使用页面需要引用KindEditor相关文件)

Ext.define(‘App.ux.KindEditor‘, {
    extend: ‘Ext.form.field.Text‘,
    alias: [‘widget.kindeditor‘],
    alternateClassName: ‘Ext.form.KindEditor‘,
    fieldSubTpl: [
        ‘<textarea id="{id}" {inputAttrTpl}‘,
            ‘<tpl if="name"> name="{name}"</tpl>‘,
            ‘<tpl if="rows"> rows="{rows}" </tpl>‘,
            ‘<tpl if="cols"> cols="{cols}" </tpl>‘,
            ‘<tpl if="placeholder"> placeholder="{placeholder}"</tpl>‘,
            ‘<tpl if="size"> size="{size}"</tpl>‘,
            ‘<tpl if="maxLength !== undefined"> maxlength="{maxLength}"</tpl>‘,
            ‘<tpl if="readOnly"> readonly="readonly"</tpl>‘,
            ‘<tpl if="disabled"> disabled="disabled"</tpl>‘,
            ‘<tpl if="tabIdx"> tabIndex="{tabIdx}"</tpl>‘,
    //            ‘ class="{fieldCls} {inputCls}" ‘,
            ‘<tpl if="fieldStyle"> style="{fieldStyle}"</tpl>‘,
            ‘ autocomplete="off">\n‘,
            ‘<tpl if="value">{[Ext.util.Format.htmlEncode(values.value)]}</tpl>‘,
        ‘</textarea>‘,
        {
            disableFormats: true
        }
    ],
    kindeditorConfig: {},
    initComponent: function () {
        var me = this;
        me.callParent(arguments);
    },
    afterRender: function () {
        var me = this;
        me.callParent(arguments);
        if (!me.ke) {
            me.ke = KindEditor.create("#" + me.getInputId(), Ext.apply(me.kindeditorConfig, {
                height: me.height || ‘300px‘,
                width: ‘100%‘,
                afterCreate: function () {
                    me.KindEditorIsReady = true;
                }
            }));

      //这块 组件的父容器关闭的时候 需要销毁编辑器 否则第二次渲染的时候会出问题 可根据具体布局调整
            var win = me.up(‘window‘);
            if (win && win.closeAction == "hide") {
                win.on(‘beforehide‘, function () {
                    me.onDestroy();
                });
            } else {
                var panel = me.up(‘panel‘);
                if (panel && panel.closeAction == "hide") {
                    panel.on(‘beforehide‘, function () {
                        me.onDestroy();
                    });
                }
            }
        } else {
            me.ke.html(me.getValue());
        }
    },
    setValue: function (value) {
        var me = this;
        if (!me.ke) {
            me.setRawValue(me.valueToRaw(value));
        } else {
            me.ke.html(value.toString());
        }
        me.callParent(arguments);
        return me.mixins.field.setValue.call(me, value);
    },
    getRawValue: function () {
        var me = this;
        if (me.KindEditorIsReady) {
            me.ke.sync();
        }
        v = (me.inputEl ? me.inputEl.getValue() : Ext.value(me.rawValue, ‘‘));
        me.rawValue = v;
        return v;
    },
    destroyKindEditor: function () {
        var me = this;
        if (me.rendered) {
            try {
                me.ke.remove();
                var dom = document.getElementById(me.id);
                if (dom) {
                    dom.parentNode.removeChild(dom);
                }
                me.ke = null;
            } catch (e) { }
        }
    },
    onDestroy: function () {
        var me = this;
        me.destroyKindEditor();
        me.callParent(arguments);
    }
});

  

使用方法:

{
	fieldLabel: ‘UEditor‘,
	name: "email",
	id: "testueditor",
	xtype: ‘ueditor‘,
	anchor: ‘-20‘,
	height: 150,
	ueditorConfig: {
		//编辑器配置项
	}
}, {
	fieldLabel: ‘KindEditor‘,
	name: "id",
	id: "testkindeditor",
	xtype: ‘kindeditor‘,
	anchor: ‘-20‘,
	height: 150,
	kindeditorConfig: {
		//编辑器配置项
	}
}

  

.NET MVC Extjs 门户网站、行业软件 开发

邮箱:[email protected]

ExtJs 集成UEditor and KindEditor,布布扣,bubuko.com

时间: 2024-10-18 19:37:53

ExtJs 集成UEditor and KindEditor的相关文章

在Django Xadmin中集成Ueditor

Ueditor是由百度开发的一个开源的富文本编辑器,有人做了一个将其集成到Django中的方案(请戳),但是在xadmin中却无法正常加载编辑器. 其使用了一个模板用来呈现Ueditor的编辑界面 <textarea name={{ UEditor.name }} id=id_{{ UEditor.name }} style="display:inline-block;width:{{ UEditor.width }}px; {{ UEditor.css }}">{{UEd

在Vue2.0中集成UEditor 富文本编辑器

在vue的'项目中遇到了需要使用富文本编辑器的需求,在github上看了很多vue封装的editor插件,很多对图片上传和视频上传的支持并不是很好,最终还是决定使用UEditor. 这类的文章网上有很多,我进行了摸索.手写代码.汇总.排版,形成了这篇文章. 下载对应的UEditor源码 首先,去官网上下载UEditor的源码,根据你后台语言的不同下载对应的版本(PHP.Asp..Net.Jsp),下载地址. 下载之后,把资源放到 /static/ue/ 静态目录下.文档结构如下: (我把UEdi

xadmin集成ueditor

from DjangoUeditor.models import UEditorField content = UEditorField(u"内容", imagePath="uploadimg/",blank=True, null=True) 在adminx.py里 style_fields = {'content': 'ueditor'} 在adminx里plugins里加入ueditor.py import xadminfrom django.db.models

vue集成ueditor

相关代码见github 1.引入ueditor相关的文件,具体目录见下图如下 我将下载的文件放在static下面,这里专门用来放置相关的静态文件 (在ueditor.config.js需要配置一下路径 var URL = window.UEDITOR_HOME_URL || '/static/ueditor_1/')根据自己的文件路径各自处理 2.新建一个Ueditor.vue组件对象,该组件用来封装ueditor,用来进行复用. <template> <div> <!--下

帝国cms后台编辑器集成ueditor编辑器

我更换成百度编辑器的原因有以下几点:1.使用百度编辑器的图片粘贴上传功能,这个功能实在是太有必要了,有开发的过程中或上传的过程中,通常用qq直接截图,直接放到文章上面,避免了再放到本地保存的情况,真是麻烦 .2.使用word图片转存功能,离线的时候,可以使用Word将文章写好,然后再上传到网站上来.图片是最大的问题,使用百度编辑器可以完美的解决.3.良好的扩展性,百度编辑器貌似开发起插件来更方便容易一些.本功能不修改帝国cms核心代码,所以没得问题.下面介绍步骤:1.下载定制好的百度插件,下面是

网站如何集成百度UEditor编辑器

在平时的网站维护使用过程中,富文本编辑器是网站必不可少的元素之一.现在市面上各种编辑器功能设计参差不齐,自己做了几个网站都是用蝉知建站系统做的,而蝉知默认内置的编辑器是KindEditor,功能简单,已经满足不了我的需求了,比如多图上传.视频发布.代码高亮等功能. 所以想换个编辑器,听说百度的UEditro还不错,所以就打算把UEditor集成到蝉知系统中.操作也不是很麻烦,下面分享下过程,考虑到大家通用性,设计蝉知系统的改动我就不过多讲解了,这里主要分享在网站中集成UEditor的主要流程.

spring和UEditor结合

前言 春节无聊,就去弄一下富文本编辑器,然后百度了一番,很多说百度的UEditor不错,然后去官网照着文档弄一遍,是挺简单好用的.然后想把这玩意结合到自己的一个spring项目里面,果然还是在点上传图片的时候GG了,百度谷歌了一遍,现在只能做到前后台一起时上传图片可用,如果有jsp 的 UEditor跨域能上传图片的告诉小弟一声,这里就总结一下这几天遇到的各种问题. PS:话说博客园这里的富文本编辑器好像还可以.... 简介 UEditor是百度开发的一个开源html富文本编辑器,界面的确是好看

ueditor上传图片到七牛云存储(form api,java)

转:http://my.oschina.net/duoduo3369/blog/174655 ueditor上传图片到七牛云存储 ueditor结合七牛传图片 七牛的试炼 开发前的准备与注意事项说明 Let's rock 与ueditor结合前的准备工作 首先从表单开始 生成token 建立图片空间 生成token 上传流程 集成ueditor 将ueditor中的图片模块的在线管理功能和七牛结合 ueditor上传图片到七牛云存储 重要说明,本人已不做java多年,请不要加qq再问我java的

UEditor上传图片到七牛云储存(c#)

我们的网站一般放在虚拟空间或者服务器上,图片如果存在本地目录,会占用很多空间和流量,还增加了负担,好的办法是把图片存放到云储存服务里面,平时用url去拿 云储存:普遍说又拍云和七牛比较好,看到七牛免费额度很大,网上评价也挺好的,我就选了七牛 编辑器:我用的是百度的UEditor编辑器,之后需要修改一些的开放的类和js文件 下面写一下c#版本的修改方法(java版本在下一篇) 一.集成UEditor 1.在项目中加入UEditor 在UEditor的下载页,可以下载到最新的1.4.3.3 .Net