source: sandbox/filemanager/js/connector.js @ 1704

Revision 1704, 7.2 KB checked in by amuller, 14 years ago (diff)

Ticket #597 - Melhorias na visualização do módulo fm com tema azul

  • Property svn:executable set to *
Line 
1var progressBar;
2
3if (document.all)
4{
5        navigator.userAgent.toLowerCase().indexOf('msie 5') != -1 ? is_ie5 = true : is_ie5 = false;
6        is_ie = true;
7        is_moz1_6 = false;
8        is_mozilla = false;
9        is_ns4 = false;
10}
11else if (document.getElementById)
12{
13        navigator.userAgent.toLowerCase().match('mozilla.*rv[:]1\.6.*gecko') ? is_moz1_6 = true : is_moz1_6 = false;
14        is_ie = false;
15        is_ie5 = false;
16        is_mozilla = true;
17        is_ns4 = false;
18}
19else if (document.layers)
20{
21        is_ie = false;
22        is_ie5 = false
23        is_moz1_6 = false;
24        is_mozilla = false;
25        is_ns4 = true;
26}
27
28/****************************************** Connector Class *************************************************/
29// Constructor
30function cConnector()
31{
32        this.requests = new Array();
33        this.oxmlhttp = null;
34        this.isVisibleBar = false;
35        this.tid = 0;
36        this.progressBar = null;
37        this.oldX = 0;
38        this.oldY = 0;
39        this.updateVersion = "";
40}
41cConnector.prototype.buildBar = function()
42{
43        var div = document.getElementById('divProgressBar');
44
45        if(! div) {                                                                                           
46                div = document.createElement("DIV");
47                div.style.visibility    = "hidden";
48                div.style.width = "103px";
49                div.id = 'divProgressBar';
50                div.align = "center";
51                div.innerHTML = '&nbsp;&nbsp;<font face="Verdana" size="2" color="WHITE">'+get_lang('loading')+'...</font>&nbsp;';
52                div.style.background = "#cc4444";
53                div.style.position = 'fixed';
54                div.style.top = '0px';
55                div.style.right = '0px';
56                document.body.appendChild(div);                                                               
57
58                if(is_ie) {
59                        var elem = document.all[div.id];
60                        elem.style.position="absolute";
61                        var root = document.body;
62                        var posX = elem.offsetLeft-root.scrollLeft;
63                        var posY = elem.offsetTop-root.scrollTop;
64                        root.onscroll = function() {
65                                elem.style.right = '0px';
66                                elem.style.top = (posY + root.scrollTop) + "px";
67                        };
68                }
69        }
70}
71
72cConnector.prototype.hideProgressBar = function ()
73{
74        var div = document.getElementById('divProgressBar');
75        div.style.visibility = 'hidden';
76        this.isVisibleBar = false;
77}
78
79cConnector.prototype.showProgressBar = function(){
80        var div = document.getElementById('divProgressBar');
81        if (! div){
82                connector.buildBar();
83                connector.showProgressBar();
84                return;
85        }
86
87        div.style.visibility = 'visible';
88
89        this.isVisibleBar = true;
90}
91
92        function XMLTools()
93        {
94                this.path = "";
95        }
96var connector = new cConnector();
97
98function cExecuteForm(form, handler){
99        connector.showProgressBar();
100        if(! (divUpload = document.getElementById('divUpload'))) {
101                divUpload               = document.createElement('DIV');               
102                divUpload.id    = 'divUpload';
103                document.body.appendChild(divUpload);
104        }
105
106        handlerExecuteForm = handler;
107        var form_handler = function (data){
108                handlerExecuteForm(data);
109                handlerExecuteForm = null;
110        }
111        divUpload.innerHTML= "<iframe onload=\"connector.hideProgressBar();cExecute('./index.php/index.php?menuaction=filemanager.uifilemanager.getReturnExecuteForm',"+form_handler+");\"  style='display:none;width:0;height:0;' name='uploadFile'></iframe>";
112        form.target ="uploadFile";
113        form.submit();
114}
115
116function cExecute(requestURL,handler){
117        var AjaxRequest = function () {
118                Ajax = false;
119                if (window.XMLHttpRequest) //Gecko
120                        Ajax = new XMLHttpRequest();
121                else
122                        if (window.ActiveXObject) //Other nav.
123                                try
124                                {
125                                        Ajax = new ActiveXObject("Msxml12.XMLHTTP");
126                                } catch (e)
127                {
128                        Ajax = new ActiveXObject("Microsoft.XMLHTTP");
129                }
130        }
131        var responseRequest = function (){
132                if (Ajax.readyState == 4)
133                        if (Ajax.status == 200)
134                                handler(Ajax.responseText);
135                        else
136                                throw("Connection error!");
137        }
138
139
140        AjaxRequest();
141        if (!Ajax){
142                throw("No connection");
143                return;
144        }
145
146        Ajax.onreadystatechange = responseRequest;
147        if (typeof(method) == 'undefined')
148                method = 'GET';
149        Ajax.open(method, requestURL, true);
150        Ajax.send(null);
151}
152
153function unserialize(str)
154{
155
156        var matchB = function (str, iniPos)
157        {
158                var nOpen, nClose = iniPos;
159                do
160                {
161                        nOpen = str.indexOf('{', nClose+1);
162                        nClose = str.indexOf('}', nClose+1);
163
164                        if (nOpen == -1)
165                        {
166                                return nClose;
167                        }
168                        if (nOpen < nClose )
169                        {
170                                nClose = matchB(str, nOpen);
171                        }
172                } while (nOpen < nClose);
173
174                return nClose;
175        }
176
177        var f = function (str)
178        {
179                switch (str.charAt(0))
180                {
181                        case 'a':
182                                var data = new Array();
183                                var n = parseInt( str.substring( str.indexOf(':')+1, str.indexOf(':',2) ) );
184                                var arrayContent = str.substring(str.indexOf('{')+1, str.lastIndexOf('}'));
185
186                                for (var i = 0; i < n; i++)
187                                {
188                                        var pos = 0;
189
190                                        /* Process Index */
191                                        var indexStr = arrayContent.substr(pos, arrayContent.indexOf(';')+1);
192                                        var index = f(indexStr);
193                                        pos = arrayContent.indexOf(';', pos)+1;
194
195                                        /* Process Content */
196                                        var part = null;
197                                        switch (arrayContent.charAt(pos))
198                                        {
199                                                case 'a':
200                                                        var pos_ = matchB(arrayContent, arrayContent.indexOf('{', pos))+1;
201                                                        part = arrayContent.substring(pos, pos_);
202                                                        pos = pos_;
203                                                        data[index] = f(part);
204                                                        break;
205
206                                                case 's':
207                                                        var pval = arrayContent.indexOf(':', pos+2);
208                                                        var val  = parseInt(arrayContent.substring(pos+2, pval));
209                                                        pos = pval + val + 4;
210                                                        data[index] = arrayContent.substr(pval+2, val);
211                                                        break;
212
213                                                default:
214                                                        part = arrayContent.substring(pos, arrayContent.indexOf(';', pos)+1);
215                                                        pos = arrayContent.indexOf(';', pos)+1;
216                                                        data[index] = f(part);
217                                                        break;
218                                        }
219                                        arrayContent = arrayContent.substr(pos);
220                                }
221                                break;
222
223                        case 's':
224                                var pos = str.indexOf(':', 2);
225                                var val = parseInt(str.substring(2,pos));
226                                var data = str.substr(pos+2, val);
227                                str = str.substr(pos + 4 + val);
228                                break;
229
230                        case 'i':
231                        case 'd':
232                                var pos = str.indexOf(';');
233                                var data = parseInt(str.substring(2,pos));
234                                str = str.substr(pos + 1);
235                                break;
236
237                        case 'N':
238                                var data = null;
239                                str = str.substr(str.indexOf(';') + 1);
240                                break;
241
242                        case 'b':
243                                var data = str.charAt(2) == '1' ? true : false;
244                                break;
245                }
246                return data;
247        }
248        unserialized = f(str);
249        return unserialized;
250}
251var unserialized = new Object();
252
253// Serialize Data Method
254function serialize(data)
255{
256        var f = function(data)
257        {
258                var str_data;
259
260                if (data == null ||
261                                (typeof(data) == 'string' && data == ''))
262                {
263                        str_data = 'N;';
264                }
265
266                else switch(typeof(data))
267                {
268                        case 'object':
269                                var arrayCount = 0;
270
271                                str_data = '';
272
273                                for (i in data)
274                                {
275                                        if (i == 'length')
276                                        {
277                                                continue;
278                                        }
279
280                                        arrayCount++;
281                                        switch (typeof(i))
282                                        {
283                                                case 'number':
284                                                        str_data += 'i:' + i + ';' + f(data[i]);
285                                                        break;
286
287                                                case 'string':
288                                                        str_data += 's:' + i.length + ':"' + i + '";' + f(data[i]);
289                                                        break;
290
291                                                default:
292                                                        showMessage(Element('cc_msg_err_serialize_data_unknown').value);
293                                                        break;
294                                        }
295                                }
296                                if (!arrayCount)
297                                {
298                                        str_data = 'N;';       
299                                }
300                                else
301                                {
302                                        str_data = 'a:' + arrayCount + ':{' + str_data + '}';
303                                        }
304
305                                        break;
306
307                                        case 'string':
308                                        str_data = 's:' + data.length + ':"' + data + '";';
309                                        break;
310
311                                        case 'number':
312                                        str_data = 'i:' + data + ';';
313                                        break;
314
315                                        case 'boolean':
316                                        str_data = 'b:' + (data ? '1' : '0') + ';';
317                                        break;
318
319                                        default:
320                                        showMessage(Element('cc_msg_err_serialize_data_unknown').value);
321                                        return null;
322                                }
323
324                                return str_data;
325                }
326
327                return f(data);
328        }
Note: See TracBrowser for help on using the repository browser.