webui-aria2/js/libs/dojox/editor/plugins/_SmileyPalette.js.uncompressed.js
2012-05-01 19:52:07 +08:00

151 lines
3.7 KiB
JavaScript

//>>built
define("dojox/editor/plugins/_SmileyPalette", [
"dojo",
"dijit",
"dojox",
"dijit/_Widget",
"dijit/_TemplatedMixin",
"dijit/_PaletteMixin",
"dojo/_base/connect",
"dojo/_base/declare",
"dojo/i18n",
"dojo/i18n!dojox/editor/plugins/nls/Smiley"
], function(dojo, dijit, dojox) {
dojo.experimental("dojox.editor.plugins._SmileyPalette");
dojo.declare("dojox.editor.plugins._SmileyPalette",
[dijit._Widget, dijit._TemplatedMixin, dijit._PaletteMixin],
{
// summary:
// A keyboard accessible emoticon-picking widget (for inserting smiley characters)
// description:
// Grid showing various emoticons.
// Can be used standalone, or as a popup.
//
// example:
// | <div dojoType="dojox.editor.plugins._SmileyPalette"></div>
//
// example:
// | var picker = new dojox.editor.plugins._SmileyPalette({ },srcNode);
// | picker.startup();
// The template of this widget.
templateString:
'<table class="dijitInline dijitEditorSmileyPalette dijitPaletteTable"' +
' cellSpacing=0 cellPadding=0><tbody dojoAttachPoint="gridNode"></tbody></table>',
baseClass: "dijitEditorSmileyPalette",
_palette: [
["smile", "laughing", "wink", "grin"],
["cool", "angry", "half", "eyebrow"],
["frown", "shy", "goofy", "oops"],
["tongue", "idea", "angel", "happy"],
["yes", "no", "crying", ""]
],
dyeClass: 'dojox.editor.plugins.Emoticon',
buildRendering: function(){
// Instantiate the template, which makes a skeleton into which we'll insert a bunch of
// <img> nodes
this.inherited(arguments);
var i18n = dojo.i18n.getLocalization("dojox.editor.plugins", "Smiley");
// Generate hash from emoticon standard name (like "smile") to translation
var emoticonI18n = {};
for(var name in i18n){
if(name.substr(0,8) == "emoticon"){
emoticonI18n[name.substr(8).toLowerCase()] = i18n[name];
}
}
this._preparePalette(
this._palette,
emoticonI18n
);
}
});
dojo.declare("dojox.editor.plugins.Emoticon",
null,
{
// summary:
// JS Object representing an emoticon
constructor: function(/*String*/ id){
// summary:
// Create emoticon object from an id (like "smile")
// value: String
// alias name 'smile', 'cool' ..
this.id = id;
},
getValue: function(){
// summary:
// Returns a emoticon string in ascii representation, ex: :-)
return dojox.editor.plugins.Emoticon.ascii[this.id];
},
imgHtml: function(/*String*/ clazz){
// summary:
// Return the HTML string for an <img> node that shows this smiley
var eId = "emoticon" + this.id.substr(0,1).toUpperCase() + this.id.substr(1),
src = dojo.moduleUrl("dojox.editor.plugins", "resources/emoticons/" + eId + ".gif"),
label = dojo.i18n.getLocalization("dojox.editor.plugins", "Smiley")[eId],
html = ['<img src=\"',
src,
'\" class=\"',
clazz,
'\" alt=\"',
this.getValue(),
'\" title=\"',
label,
'\">'];
return html.join("");
},
fillCell: function(/*DOMNode*/cell, /*String*/ blankGif){
dojo.place(this.imgHtml("dijitPaletteImg"), cell);
}
});
dojox.editor.plugins.Emoticon.ascii = {
smile: ":-)",
laughing: "lol",
wink: ";-)",
grin: ":-D",
cool: "8-)",
angry: ":-@",
half: ":-/",
eyebrow: "/:)",
frown: ":-(",
shy: ":-$",
goofy: ":-S",
oops: ":-O",
tongue: ":-P",
idea: "(i)",
yes: "(y)",
no: "(n)",
angel: "0:-)",
crying: ":'(",
happy: "=)"
};
dojox.editor.plugins.Emoticon.fromAscii = function(/*String*/str){
// summary:
// Factory to create Emoticon object based on string like ":-)" rather than id like "smile"
var ascii = dojox.editor.plugins.Emoticon.ascii;
for(var i in ascii){
if(str == ascii[i]){
return new dojox.editor.plugins.Emoticon(i);
}
}
return null;
};
return dojox.editor.plugins._SmileyPalette;
});