1 /**
  2  * smiley button
  3  * @author yiminghe@gmail.com
  4  */
  5 KISSY.add("editor/plugin/smiley/index", function (S, Editor, Overlay4E) {
  6 
  7     var smiley_markup = "<div class='ks-editor-smiley-sprite'>";
  8     for (var i = 0; i <= 98; i++) {
  9         smiley_markup += "<a href='javascript:void(0)' " +
 10             "data-icon='http://a.tbcdn.cn/sys/wangwang/smiley/48x48/" + i + ".gif'>" +
 11             "</a>"
 12     }
 13     smiley_markup += "</div>";
 14 
 15     function Smiley() {
 16     }
 17 
 18     S.augment(Smiley, {
 19         init:function (editor) {
 20             editor.addButton("smiley", {
 21                 tooltip:"插入表情",
 22                 checkable:true,
 23                 listeners:{
 24                     afterSyncUI:function () {
 25                         var self = this;
 26                         self.on("blur", function () {
 27                             // make click event fire
 28                             setTimeout(function () {
 29                                 self.smiley && self.smiley.hide();
 30                             }, 150);
 31                         });
 32 
 33                     },
 34                     click:function () {
 35                         var self = this, smiley, checked = self.get("checked");
 36                         if (checked) {
 37                             if (!(smiley = self.smiley)) {
 38                                 smiley = self.smiley = new Overlay4E({
 39                                     content:smiley_markup,
 40                                     focus4e:false,
 41                                     width:"297px",
 42                                     autoRender:true,
 43                                     elCls:"ks-editor-popup",
 44                                     zIndex:Editor.baseZIndex(Editor.zIndexManager.POPUP_MENU),
 45                                     mask:false
 46                                 });
 47                                 smiley.get("el").on("click", function (ev) {
 48                                     var t = new S.Node(ev.target),
 49                                         icon;
 50                                     if (t.nodeName() == "a" &&
 51                                         (icon = t.attr("data-icon"))) {
 52                                         var img = new S.Node("<img " +
 53                                             "alt='' src='" +
 54                                             icon + "'/>", null,
 55                                             editor.get("document")[0]);
 56                                         editor.insertElement(img);
 57                                     }
 58                                 });
 59                                 smiley.on("hide", function () {
 60                                     self.set("checked", false);
 61                                 });
 62                             }
 63                             smiley.set("align", {
 64                                 node:this.get("el"),
 65                                 points:["bl", "tl"]
 66                             });
 67                             smiley.show();
 68                         } else {
 69                             self.smiley && self.smiley.hide();
 70                         }
 71                     },
 72                     destroy:function () {
 73                         if (this.smiley) {
 74                             this.smiley.destroy();
 75                         }
 76                     }
 77 
 78                 },
 79                 mode:Editor.WYSIWYG_MODE
 80             });
 81         }
 82     });
 83 
 84     return Smiley;
 85 }, {
 86     requires:['editor', '../overlay/']
 87 });