--- /dev/null
+/**\r
+ * Plugin designed for test prupose. It add a button (that manage an alert) and a select (that allow to insert tags) in the toolbar.\r
+ * This plugin also disable the "f" key in the editarea, and load a CSS and a JS file\r
+ */ \r
+var EditArea_test= {\r
+ /**\r
+ * Get called once this file is loaded (editArea still not initialized)\r
+ *\r
+ * @return nothing \r
+ */ \r
+ init: function(){ \r
+ // alert("test init: "+ this._someInternalFunction(2, 3));\r
+ editArea.load_css(this.baseURL+"css/test.css");\r
+ editArea.load_script(this.baseURL+"test2.js");\r
+ }\r
+ /**\r
+ * Returns the HTML code for a specific control string or false if this plugin doesn't have that control.\r
+ * A control can be a button, select list or any other HTML item to present in the EditArea user interface.\r
+ * Language variables such as {$lang_somekey} will also be replaced with contents from\r
+ * the language packs.\r
+ * \r
+ * @param {string} ctrl_name: the name of the control to add \r
+ * @return HTML code for a specific control or false.\r
+ * @type string or boolean\r
+ */ \r
+ ,get_control_html: function(ctrl_name){\r
+ switch(ctrl_name){\r
+ case "test_but":\r
+ // Control id, button img, command\r
+ return parent.editAreaLoader.get_button_html('test_but', 'test.gif', 'test_cmd', false, this.baseURL);\r
+ case "test_select":\r
+ html= "<select id='test_select' onchange='javascript:editArea.execCommand(\"test_select_change\")' fileSpecific='no'>"\r
+ +" <option value='-1'>{$test_select}</option>"\r
+ +" <option value='h1'>h1</option>"\r
+ +" <option value='h2'>h2</option>"\r
+ +" <option value='h3'>h3</option>"\r
+ +" <option value='h4'>h4</option>"\r
+ +" <option value='h5'>h5</option>"\r
+ +" <option value='h6'>h6</option>"\r
+ +" </select>";\r
+ return html;\r
+ }\r
+ return false;\r
+ }\r
+ /**\r
+ * Get called once EditArea is fully loaded and initialised\r
+ * \r
+ * @return nothing\r
+ */ \r
+ ,onload: function(){ \r
+ alert("test load");\r
+ }\r
+ \r
+ /**\r
+ * Is called each time the user touch a keyboard key.\r
+ * \r
+ * @param (event) e: the keydown event\r
+ * @return true - pass to next handler in chain, false - stop chain execution\r
+ * @type boolean \r
+ */\r
+ ,onkeydown: function(e){\r
+ var str= String.fromCharCode(e.keyCode);\r
+ // desactivate the "f" character\r
+ if(str.toLowerCase()=="f"){\r
+ return true;\r
+ }\r
+ return false;\r
+ }\r
+ \r
+ /**\r
+ * Executes a specific command, this function handles plugin commands.\r
+ *\r
+ * @param {string} cmd: the name of the command being executed\r
+ * @param {unknown} param: the parameter of the command \r
+ * @return true - pass to next handler in chain, false - stop chain execution\r
+ * @type boolean \r
+ */\r
+ ,execCommand: function(cmd, param){\r
+ // Handle commands\r
+ switch(cmd){\r
+ case "test_select_change":\r
+ var val= document.getElementById("test_select").value;\r
+ if(val!=-1)\r
+ parent.editAreaLoader.insertTags(editArea.id, "<"+val+">", "</"+val+">");\r
+ document.getElementById("test_select").options[0].selected=true; \r
+ return false;\r
+ case "test_cmd":\r
+ alert("user clicked on test_cmd");\r
+ return false;\r
+ }\r
+ // Pass to next handler in chain\r
+ return true;\r
+ }\r
+ \r
+ /**\r
+ * This is just an internal plugin method, prefix all internal methods with a _ character.\r
+ * The prefix is needed so they doesn't collide with future EditArea callback functions.\r
+ *\r
+ * @param {string} a Some arg1.\r
+ * @param {string} b Some arg2.\r
+ * @return Some return.\r
+ * @type unknown\r
+ */\r
+ ,_someInternalFunction : function(a, b) {\r
+ return a+b;\r
+ }\r
+};\r
+\r
+// Adds the plugin class to the list of available EditArea plugins\r
+editArea.add_plugin("test", EditArea_test);\r