diff options
Diffstat (limited to 'js/dojo/dojox/editor/plugins/_SmileyPalette.js')
| -rw-r--r-- | js/dojo/dojox/editor/plugins/_SmileyPalette.js | 150 |
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; + +}); |
