blob: 7f224f27a79f2f3b6ed5cc9f2f19b6e313d60c90 [file] [log] [blame]
// Plugin for htmlArea to run code through the server's HTML Tidy
// By Adam Wright, for The University of Western Australia
//
// Distributed under the same terms as HTMLArea itself.
// This notice MUST stay intact for use (see license.txt).
function HtmlTidy(editor) {
this.editor = editor;
var cfg = editor.config;
var bl = HtmlTidy.btnList;
var self = this;
this.onMode = this.__onMode;
// register the toolbar buttons provided by this plugin
var toolbar = [];
for (var i = 0; i < bl.length; ++i) {
var btn = bl[i];
if (btn == "html-tidy") {
var id = "HT-html-tidy";
cfg.registerButton(id, this._lc("HTML Tidy"), editor.imgURL(btn[0] + ".gif", "HtmlTidy"), true,
function(editor, id) {
// dispatch button press event
self.buttonPress(editor, id);
}, btn[1]);
toolbar.push(id);
} else if (btn == "html-auto-tidy") {
var btnTxt = [this._lc("Auto-Tidy"), this._lc("Don't Tidy")];
var optionItems = new Object();
optionItems[btnTxt[0]] = "auto";
optionItems[btnTxt[1]] = "noauto";
var ht_class = {
id : "HT-auto-tidy",
options : optionItems,
action : function (editor) { self.__onSelect(editor, this); },
refresh : function (editor) { },
context : "body"
};
cfg.registerDropdown(ht_class);
}
}
for (var i in toolbar) {
cfg.toolbar[0].push(toolbar[i]);
}
}
HtmlTidy._pluginInfo = {
name : "HtmlTidy",
version : "1.0",
developer : "Adam Wright",
developer_url : "http://blog.hipikat.org/",
sponsor : "The University of Western Australia",
sponsor_url : "http://www.uwa.edu.au/",
license : "htmlArea"
};
HtmlTidy.prototype._lc = function(string) {
return Xinha._lc(string, 'HtmlTidy');
};
HtmlTidy.prototype.__onSelect = function(editor, obj) {
// Get the toolbar element object
var elem = editor._toolbarObjects[obj.id].element;
// Set our onMode event appropriately
if (elem.value == "auto")
this.onMode = this.__onMode;
else
this.onMode = null;
};
HtmlTidy.prototype.__onMode = function(mode) {
if ( mode == "textmode" ) {
this.buttonPress(this.editor, "HT-html-tidy");
}
};
HtmlTidy.btnList = [
null, // separator
["html-tidy"],
["html-auto-tidy"]
];
HtmlTidy.prototype.buttonPress = function(editor, id) {
switch (id)
{
case "HT-html-tidy":
{
var oldhtml = editor.getHTML();
if(oldhtml=="") break; //don't clean empty text
// Ask the server for some nice new html, based on the old...
Xinha._postback(Xinha.getPluginDir("HtmlTidy") + '/html-tidy-logic.php', {'htisource_name' : oldhtml},
function(javascriptResponse) { eval(javascriptResponse) });
}
break;
}
};
HtmlTidy.prototype.processTidied = function(newSrc) {
editor = this.editor;
editor.setHTML(newSrc);
};