blob: 44dcfc0f2c17d6e78d8d1c22153219adc6ae5748 [file] [log] [blame]
// Unormat plugin for Xinha
UnFormat._pluginInfo = {
name : "UnFormat",
version : "1.0",
license : "htmlArea"
};
function UnFormat(editor) {
this.editor = editor;
var cfg = editor.config;
var self = this;
cfg.registerButton({
id : "unformat",
tooltip : Xinha._lc("Page Cleaner",'UnFormat'),
image : editor.imgURL("unformat.gif", "UnFormat"),
textMode : false,
action : function(editor) {
self.show();
}
});
cfg.addToolbarElement("unformat", "killword", 1);
}
UnFormat.prototype.onGenerateOnce = function(editor){
// Load assets
var self = UnFormat;
if (self.loading) return;
self.loading = true;
self.methodsReady = true;
Xinha._getback(Xinha.getPluginDir('UnFormat') + '/dialog.html', function(getback) { self.html = getback; self.dialogReady = true; });
}
UnFormat.prototype.onUpdateToolbar = function(editor){
if (!(UnFormat.dialogReady && UnFormat.methodsReady))
{
this.editor._toolbarObjects.unformat.state("enabled", false);
}
else this.onUpdateToolbar = null;
}
UnFormat.prototype.prepareDialog = function(editor){
var self = this;
var editor = this.editor;
var dialog = this.dialog = new Xinha.Dialog(editor, UnFormat.html, 'Xinha',{width:400})
// Connect the OK and Cancel buttons
dialog.getElementById('ok').onclick = function() {self.apply();}
dialog.getElementById('cancel').onclick = function() { self.dialog.hide()};
this.dialogReady = true;
}
UnFormat.prototype.show = function(editor){
if (!this.dialog) this.prepareDialog();
var editor = this.editor;
var values =
{
"cleaning_area" : 'selection',
"formatting" : '',
"html_all" : ''
}
// now calling the show method of the Xinha.Dialog object to set the values and show the actual dialog
this.dialog.show(values);
this.dialog.onresize();
}
UnFormat.prototype.apply = function(editor){
var editor = this.editor;
var doc = editor._doc;
var param = this.dialog.getValues();
// selection is only restored on dialog.hide()
this.dialog.hide();
// assign the given arguments
if (param["cleaning_area"] == "all") {
var html = editor._doc.body.innerHTML;
} else {
var html = editor.getSelectedHTML();
}
if (param.html_all) {
html = html.replace(/<[\!]*?[^<>]*?>/g, "");
}
if (param.formatting) {
html = html.replace(/style="[^"]*"/gi, "");
html = html.replace(/<\/?font[^>]*>/gi,"");
html = html.replace(/<\/?b>/gi,"");
html = html.replace(/<\/?strong[^>]*>/gi,"");
html = html.replace(/<\/?i>/gi,"");
html = html.replace(/<\/?em[^>]*>/gi,"");
html = html.replace(/<\/?u[^>]*>/gi,"");
html = html.replace(/<\/?strike[^>]*>/gi,"");
html = html.replace(/ align=[^\s|>]*/gi,"");
html = html.replace(/ class=[^\s|>]*/gi,"");
}
if (param["cleaning_area"] == "all") {
editor._doc.body.innerHTML = html;
} else {
editor.insertHTML(html);
}
};