`
jaky821
  • 浏览: 42544 次
  • 性别: Icon_minigender_1
  • 来自: contry
文章分类
社区版块
存档分类
最新评论

Ext.form.HtmlEditor 的 表情扩展 收藏

阅读更多
/*
* IChat Emote Chooser v0.1
* IChat Emote Chooser -- EmoteChooser
* viperasi@gmail.com
* 根据Ext.ColorPalette修改
* 文件名:EmoteChooser.js
*/
Ext.EmoteChooser = function(config){
    Ext.EmoteChooser.superclass.constructor.call(this, config);
    this.addEvents(
        'select'
    );
    if(this.handler){
        this.on("select", this.handler, this.scope, true);
    }
};
Ext.extend(Ext.EmoteChooser, Ext.Component, {
    itemCls : "emote-chooser",
    value : null,
    clickEvent:'click',
    ctype: "Ext.EmoteChooser",
    allowReselect : false,
    emotes : [//表情列表 
        "001","002","003","004","005","006","007","008","009","010","011",
        "012","013","014","015","016","017","018","019","020","021","022",
        "023","024","025","026","027","028","029","030","031","032","033",
        "034","035","036","037","038","039","040","041","042","043",
        "044","045","046","047","048","049","050","051","052","053","054",
        "055","056","057","058","059","060"
    ],
    onRender : function(container, position){
        var t = this.tpl || new Ext.XTemplate(
            '<tpl for="."><a href="#" class="emote-{.}" hidefocus="on"><em><img src="images/emote/emote_{.}.gif" unselectable="on" /></em></a></tpl>'
        );//套用模板,图片路径需自己修改 
        var el = document.createElement("div");
        el.className = this.itemCls;
        t.overwrite(el, this.emotes);
        container.dom.insertBefore(el, position);
        this.el = Ext.get(el);
        this.el.on(this.clickEvent, this.handleClick,  this, {delegate: "a"});
        if(this.clickEvent != 'click'){
            this.el.on('click', Ext.emptyFn,  this, {delegate: "a", preventDefault:true});
        }
    },
    afterRender : function(){
        Ext.EmoteChooser.superclass.afterRender.call(this);
        if(this.value){
            var s = this.value;
            this.value = null;
            this.select(s);
        }
    },
    handleClick : function(e, t){
        e.preventDefault();
        if(!this.disabled){
            var c = t.className.match(/(?:^|\s)emote-(.{3})(?:\s|$)/)[1];
            this.select(c.toUpperCase());
        }
    },
    select : function(emote){
        //emote = emote.replace("#", ""); 
        if(emote != this.value || this.allowReselect){
            var el = this.el;
            if(this.value){
                el.child("a.emote-"+this.value).removeClass("emote-chooser-sel");
            }
            el.child("a.emote-"+emote).addClass("emote-chooser-sel");
            this.value = emote;
            this.fireEvent("select", this, emote);
        }
    }
});
Ext.reg('emotechooser', Ext.EmoteChooser);
/*
* IChat Emote Chooser v0.1
* IChat Emote Chooser -- EmoteItem
* viperasi@gmail.com
* 根据Ext.menu.ColorItem修改
* 文件名:EmoteItem.js
*/
Ext.menu.EmoteItem = function(config){
    Ext.menu.EmoteItem.superclass.constructor.call(this, new Ext.EmoteChooser(config), config);
    this.chooser = this.component;
    this.relayEvents(this.chooser, ["select"]);
    if(this.selectHandler){
        this.on('select', this.selectHandler, this.scope);
    }
};
Ext.extend(Ext.menu.EmoteItem, Ext.menu.Adapter);
/*
* IChat Emote Chooser v0.1
* IChat Emote Chooser -- EmoteMenu
* viperasi@gmail.com
* 根据Ext.menu.ColorMenu修改
* 文件名:EmoteMenu.js
*/
Ext.menu.EmoteMenu = function(config){
    Ext.menu.EmoteMenu.superclass.constructor.call(this, config);
    this.plain = true;
    var ci = new Ext.menu.EmoteItem(config);
    this.add(ci);
    this.chooser = ci.chooser;
    this.relayEvents(ci, ["select"]);
};
Ext.extend(Ext.menu.EmoteMenu, Ext.menu.Menu);
/*
*调用示例
*
*/
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>emote_chooser</title>
        <link rel="stylesheet" type="text/css" href="resources/css/ext-all.css" />
        <script type="text/javascript" src="js/ext-base.js"></script>
        <script type="text/javascript" src="js/ext-all.js"></script>
        
        <script type="text/javascript" src="js/EmoteChooser.js"></script>
        <script type="text/javascript" src="js/EmoteItem.js"></script>
        <script type="text/javascript" src="js/EmoteMenu.js"></script>
        <style type="text/css"><!--css样式,必须存在,可写入ext-all.css -->
            .emote-chooser{width:150px;height:92px;cursor:pointer;}
            .emote-chooser a{border:1px solid #fff;float:left;padding:2px;text-decoration:none;-moz-outline:0 none;outline:0 none;cursor:pointer;}
            .emote-chooser a:hover,.emote-chooser a.emote-chooser-sel{border:1px solid #8BB8F3;background:#deecfd;}
            .emote-chooser em{display:block;border:1px solid #ACA899;}
            .emote-chooser em img{cursor:pointer;display:block;height:20px;line-height:10px;width:20px;}
        </style>
        <script language="javascript">
            Ext.onReady(function(){
            
                var emoteMenu = new Ext.menu.EmoteMenu({
                    allowReselect: true,
                    focus: Ext.emptyFn,
                    plain:true,
                    selectHandler: function(cm, emote){
                        Ext.example.msg('Emote Selected', 'You choose {0}.', emote);
                    },
                    scope: this,
                    clickEvent:'mousedown'
                });
            
                var tb = new Ext.Toolbar();
                tb.render('toolbar');
            
                tb.add({
                        text:'emote',
                        iconCls: 'bmenu',  // <-- icon 
                        menu: emoteMenu  // assign menu by instance 
                    });
            
            });
        </script>
    </head>
  
    <body>
        <div id="container">
            <div id="toolbar"></div>
        </div>
    </body>
</html>
附上 HtmlEditor的添加示例:

var  editor = new Ext.form.HtmlEditor({

     //内容略

});

editor.getToolbar().add('-', {
                    tooltip : '选择表情',
                    iconCls : 'temote',
                    menu : new Ext.menu.EmoteMenu({
                                allowReselect : true,
                                focus : Ext.emptyFn,
                                plain : true,
                                selectHandler : function(cm, emote) {
                                    var emimg = "<img src='images/emote/emote_"
                                            + emote + ".gif' />";
                                    editor.insertAtCursor(emimg);
                                },
                                scope : this,
                                clickEvent : 'mousedown'
                            })
                });

此代码不全,请在form 或者 win 被show 或者 render的时候 添加此内容


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/viperasi/archive/2008/08/06/2778036.aspx
分享到:
评论
1 楼 yaoweinan 2013-01-15  
        

相关推荐

    Ext组件描述,各个组件含义

    **2.23 HTML Editor (Ext.form.HtmlEditor)** - **xtype**: `htmleditor` - **功能描述**:HTML Editor 是一个富文本编辑器。 - **主要用途**:适用于需要用户编辑格式化的文本内容。 **2.24 Number Field (Ext....

    ExtJSWeb应用程序开发指南(第2版)

    4.1.16 Ext.form.field.HtmlEditor编辑器字段 4.1.17 Ext.form.field.Display只读文本字段 4.1.18 Ext.form.Label标签字段 4.1.19 Ext.form.FieldSet字段集 4.1.20 Ext.form.FieldContainer容器字段 4.1.21 Ext...

    mzExt:Extjs 4.x的插件和扩展

    Extjs 4.x的插件和扩展Ext.ux.form.field.CodeMirror 可与ExtJS 4.0.7、4.1.x和4.2.x以及CodeMirror 3.20一起使用。 执照:麻省理工学院演示:论坛:Ext.ux.form.field.UploadFileField 执照:麻省理工学院演示:...

    ext_表单提交_数据校验

    `Ext.form.HtmlEditor`是一个富文本编辑器,提供了多种格式化工具,如对齐、字体颜色、字体大小等。通过`enableAlignments`、`enableColors`等参数,可以开启或关闭不同的编辑功能,以适应不同复杂度的文本编辑需求...

    ExtJs_xtype一览

    - `htmleditor`:`Ext.form.HtmlEditor`,HTML编辑器组件。 - `numberfield`:`Ext.form.NumberField`,数字输入框。 - `radio`:`Ext.form.Radio`,单选按钮。 - `textarea`:`Ext.form.TextArea`,多行文本...

    EXT 表单验证EXT 表单验证

    9. **插件和扩展**:EXT社区提供了许多表单验证相关的插件和扩展,如`Ext.form.field.Picker`,用于下拉选择验证,以及`Ext.form.field.HtmlEditor`,用于富文本编辑器的验证。 10. **实际应用**:在实际项目中,...

    EXT核心API详解.doc

    43. **Ext.form.HtmlEditor类**:HTML编辑器组件,提供富文本编辑功能。 这些类构成了EXT的核心API,它们提供了丰富的UI组件、数据管理和网络通信功能,使得开发者能够构建出功能强大、用户体验优秀的Web应用。理解...

    Ext Js权威指南(.zip.001

    Ex4.0共2个压缩包特性,《ext js权威指南》 前 言 第1章 ext js 4开发入门 / 1 1.1 学习ext js必需的基础知识 / 1 1.2 json概述 / 3 1.2.1 认识json / 3 1.2.2 json的结构 / 3 1.2.3 json的例子 / 4 1.2.4 ...

    Ext Htmleditor 支持上传图片

    var editor = new Ext.form.field.HtmlEditor({ width: 500, height: 300, plugins: [{ ptype: 'htmleditor_upload', // 自定义插件,实现图片上传 uploadUrl: '/upload/image' // 服务器端上传接口 }], ...

    ExtJs xtype一览

    - **`htmleditor` (Ext.form.HtmlEditor)**: HTML编辑器组件,允许用户编辑HTML内容。 - **`label` (Ext.form.Label)**: 标签组件,用于为表单元素提供描述性标签。 - **`numberfield` (Ext.form.NumberField)**: ...

    EXT扩展Htmleditor,在工具栏中添加插入图片按钮,可选择图片插入到编辑器中(也可添加其他功能按钮)

    var editor = new Ext.form.HtmlEditor({ width: 500, height: 300, plugins: [new MyPlugins.ImageInsert()] }); ``` 以上只是一个简单的示例,实际开发中可能需要处理更多细节,如图片大小限制、上传到服务器...

    精通JS脚本之ExtJS框架.part1.rar

    7.2.7 在线编辑器Ext.form.HtmlEditor 7.3 ExtJS表单组件的综合应用 第8章 设计表格类布局 8.1 表格简介 8.1.1 表格的基本属性 8.1.2 制作第一个表格 8.2 表格常用功能详解 8.2.1 主要属性功能 8.2.2 自定义...

    extjs控件列表

    **Ext.form.HtmlEditor** - **描述**: HTML编辑器,用于编辑富文本。 - **用途**: 内容编辑、文档编写等。 **Ext.form.Label** - **描述**: 标签,用于标记表单元素。 - **用途**: 为表单元素提供描述性的标签,如...

    精通JS脚本之ExtJS框架.part2.rar

    7.2.7 在线编辑器Ext.form.HtmlEditor 7.3 ExtJS表单组件的综合应用 第8章 设计表格类布局 8.1 表格简介 8.1.1 表格的基本属性 8.1.2 制作第一个表格 8.2 表格常用功能详解 8.2.1 主要属性功能 8.2.2 自定义...

    Extjs xtype集合

    ### Extjs xtype集合详解 #### 一、基本概念与背景 在Extjs开发过程中,`xtype`(扩展类型... - **`Class`**: `Ext.form.HtmlEditor` - **描述**: HTML编辑器。 10. **`label`:** - **`xtype`**: `label` - **`...

    extjs中利用htmleditor与第三方打印插件Lodop结合使用WEB打印功能

    var Printreport_panel = new Ext.form.FormPanel({ frame: false, border: false, preventBodyReset: false, height: 400, layout: 'fit', items: [{ border: false, xtype: 'htmleditor', name: 'Conten'...

    htmleditor扩展插入图片功能,使用Extjs+servlet请求实现

    var editor = new Ext.form.HtmlEditor({ width: 500, height: 300, enableAlignments: true, enableLists: true, enableLinks: true, enableImages: true, // 开启图片插入功能 plugins: ['sourceedit'] // ...

    .archExtJs2.0学习系列(7)--Ext.FormPanel之第四式(其他组件示例篇).doc

    在本文中,我们将深入探讨ExtJS 2.0中的FormPanel组件,并通过具体的示例来了解如何使用不同的组件,如checkbox、radio以及htmleditor。首先,Ext.FormPanel是ExtJS中用于创建表单的主要组件,它允许我们构建复杂的...

    ExtJS3总结内容

    - `formcomponents`: `form`, `checkbox`, `checkboxgroup`, `combo`, `datefield`, `displayfield`, `field`, `fieldset`, `hidden`, `htmleditor`, `label`, `numberfield`, `radio`, `radiogroup`, `textarea`, `...

Global site tag (gtag.js) - Google Analytics