source: trunk/plugins/HtmlTidy/html-tidy.js @ 856

Last change on this file since 856 was 856, checked in by wymsy, 12 years ago

Change namespace from HTMLArea to Xinha in all the plugins - ref ticket #916

  • Property svn:eol-style set to native
  • Property svn:keywords set to LastChangedDate LastChangedRevision LastChangedBy HeadURL Id
File size: 2.8 KB
Line 
1// Plugin for htmlArea to run code through the server's HTML Tidy
2// By Adam Wright, for The University of Western Australia
3//
4// Distributed under the same terms as HTMLArea itself.
5// This notice MUST stay intact for use (see license.txt).
6
7function HtmlTidy(editor) {
8        this.editor = editor;
9
10        var cfg = editor.config;
11        var bl = HtmlTidy.btnList;
12        var self = this;
13
14        this.onMode = this.__onMode;
15
16        // register the toolbar buttons provided by this plugin
17        var toolbar = [];
18        for (var i = 0; i < bl.length; ++i) {
19                var btn = bl[i];
20                if (btn == "html-tidy") {
21                        var id = "HT-html-tidy";
22                        cfg.registerButton(id, this._lc("HTML Tidy"), editor.imgURL(btn[0] + ".gif", "HtmlTidy"), true,
23                                           function(editor, id) {
24                                                   // dispatch button press event
25                                                   self.buttonPress(editor, id);
26                                           }, btn[1]);
27                        toolbar.push(id);
28                } else if (btn == "html-auto-tidy") {
29            var btnTxt = [this._lc("Auto-Tidy"), this._lc("Don't Tidy")];
30            var optionItems = new Object();
31            optionItems[btnTxt[0]] = "auto";
32            optionItems[btnTxt[1]] = "noauto";
33                        var ht_class = {
34                                id      : "HT-auto-tidy",
35                                options : optionItems,
36                                action  : function (editor) { self.__onSelect(editor, this); },
37                                refresh : function (editor) { },
38                                context : "body"
39                        };
40                        cfg.registerDropdown(ht_class);
41                }
42        }
43
44        for (var i in toolbar) {
45                cfg.toolbar[0].push(toolbar[i]);
46        }
47}
48
49HtmlTidy._pluginInfo = {
50        name          : "HtmlTidy",
51        version       : "1.0",
52        developer     : "Adam Wright",
53        developer_url : "http://blog.hipikat.org/",
54        sponsor       : "The University of Western Australia",
55        sponsor_url   : "http://www.uwa.edu.au/",
56        license       : "htmlArea"
57};
58
59HtmlTidy.prototype._lc = function(string) {
60    return Xinha._lc(string, 'HtmlTidy');
61};
62
63HtmlTidy.prototype.__onSelect = function(editor, obj) {
64        // Get the toolbar element object
65        var elem = editor._toolbarObjects[obj.id].element;
66
67        // Set our onMode event appropriately
68        if (elem.value == "auto")
69                this.onMode = this.__onMode;
70        else
71                this.onMode = null;
72};
73
74HtmlTidy.prototype.__onMode = function(mode) {
75        if ( mode == "textmode" ) {
76                this.buttonPress(this.editor, "HT-html-tidy");
77        }
78};
79
80HtmlTidy.btnList = [
81                    null, // separator
82                    ["html-tidy"],
83                    ["html-auto-tidy"]
84];
85
86HtmlTidy.prototype.buttonPress = function(editor, id) {
87
88        switch (id)
89  {
90    case "HT-html-tidy":
91    {
92      var oldhtml = editor.getHTML();
93      if(oldhtml=="") break; //don't clean empty text
94      // Ask the server for some nice new html, based on the old...
95      Xinha._postback(_editor_url + 'plugins/HtmlTidy/html-tidy-logic.php', {'htisource_name' : oldhtml},
96                            function(javascriptResponse) { eval(javascriptResponse) });
97    }
98                break;
99        }
100};
101
102HtmlTidy.prototype.processTidied = function(newSrc) {
103        editor = this.editor;
104        editor.setHTML(newSrc);
105};
Note: See TracBrowser for help on using the repository browser.