summaryrefslogtreecommitdiff
path: root/js/dojo/dojox/editor/plugins/_SmileyPalette.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/dojo/dojox/editor/plugins/_SmileyPalette.js')
-rw-r--r--js/dojo/dojox/editor/plugins/_SmileyPalette.js150
1 files changed, 150 insertions, 0 deletions
diff --git a/js/dojo/dojox/editor/plugins/_SmileyPalette.js b/js/dojo/dojox/editor/plugins/_SmileyPalette.js
new file mode 100644
index 0000000..c83c634
--- /dev/null
+++ b/js/dojo/dojox/editor/plugins/_SmileyPalette.js
@@ -0,0 +1,150 @@
+//>>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;
+
+});