-
Notifications
You must be signed in to change notification settings - Fork 863
/
smiley-debug.js
108 lines (104 loc) · 3.97 KB
/
smiley-debug.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
/*
Copyright 2014, KISSY v5.0.0
MIT Licensed
build time: Jul 18 14:00
*/
/*
combined modules:
editor/plugin/smiley
*/
KISSY.add('editor/plugin/smiley', [
'editor',
'./overlay',
'./button',
'node',
'util'
], function (S, require, exports, module) {
/**
* @ignore
* smiley button
* @author yiminghe@gmail.com
*/
var Editor = require('editor');
var Overlay4E = require('./overlay');
require('./button');
var $ = require('node');
var util = require('util');
var smileyMarkup = '<div class="{prefixCls}editor-smiley-sprite">';
for (var i = 0; i <= 98; i++) {
smileyMarkup += '<a href="javascript:void(0)" ' + 'data-icon="http://a.tbcdn.cn/sys/wangwang/smiley/48x48/' + i + '.gif">' + '</a>';
}
smileyMarkup += '</div>';
function Smiley() {
}
Smiley.prototype = {
pluginRenderUI: function (editor) {
var prefixCls = editor.get('prefixCls');
editor.addButton('smiley', {
tooltip: '\u63D2\u5165\u8868\u60C5',
checkable: true,
listeners: {
afterSyncUI: function () {
var self = this;
self.on('blur', function () {
// make click event fire
setTimeout(function () {
if (self.smiley) {
self.smiley.hide();
}
}, 150);
});
},
click: function () {
var self = this, smiley, checked = self.get('checked');
if (checked) {
if (!(smiley = self.smiley)) {
smiley = self.smiley = new Overlay4E({
content: util.substitute(smileyMarkup, { prefixCls: prefixCls }),
focus4e: false,
width: 300,
elCls: prefixCls + 'editor-popup',
zIndex: Editor.baseZIndex(Editor.ZIndexManager.POPUP_MENU),
mask: false
}).render();
smiley.get('el').on('click', function (ev) {
var t = $(ev.target), icon;
if (t.nodeName() === 'a' && (icon = t.attr('data-icon'))) {
var img = $('<img ' + 'alt="" src="' + icon + '"/>', editor.get('document')[0]);
editor.insertElement(img);
}
});
smiley.on('hide', function () {
self.set('checked', false);
});
}
smiley.set('align', {
node: this.get('el'),
points: [
'bl',
'tl'
],
overflow: {
adjustX: 1,
adjustY: 1
}
});
smiley.show();
} else {
if (self.smiley) {
self.smiley.hide();
}
}
},
destroy: function () {
if (this.smiley) {
this.smiley.destroy();
}
}
},
mode: Editor.Mode.WYSIWYG_MODE
});
}
};
module.exports = Smiley;
});