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

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

Ticket #597 - Melhorias no módulo gerenciador de arquivos com ajax

  • 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                return;
84        }
85
86        div.style.visibility = 'visible';
87
88        this.isVisibleBar = true;
89}
90
91        function XMLTools()
92        {
93                this.path = "";
94        }
95var connector = new cConnector();
96
97function cExecuteForm(form, handler){
98        connector.showProgressBar();
99        if(! (divUpload = document.getElementById('divUpload'))) {
100                divUpload               = document.createElement('DIV');               
101                divUpload.id    = 'divUpload';
102                document.body.appendChild(divUpload);
103        }
104
105        handlerExecuteForm = handler;
106        var form_handler = function (data){
107                handlerExecuteForm(data);
108                handlerExecuteForm = null;
109        }
110        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>";
111        form.target ="uploadFile";
112        form.submit();
113}
114
115function cExecute(requestURL,handler){
116        if (connector.isVisibleBar == true){
117                setTimeout('cExecute("'+requestURL+'",'+handler+')',150);
118                return;
119        }
120        connector.showProgressBar();
121        var AjaxRequest = function () {
122                Ajax = false;
123                if (window.XMLHttpRequest) //Gecko
124                        Ajax = new XMLHttpRequest();
125                else
126                        if (window.ActiveXObject) //Other nav.
127                                try
128                                {
129                                        Ajax = new ActiveXObject("Msxml12.XMLHTTP");
130                                } catch (e)
131                {
132                        Ajax = new ActiveXObject("Microsoft.XMLHTTP");
133                }
134        }
135        var responseRequest = function (){
136                if (Ajax.readyState == 4)
137                        if (Ajax.status == 200){
138                                handler(Ajax.responseText);
139                                connector.hideProgressBar();
140                        }
141                        else
142                                throw("Connection error!");
143        }
144
145
146        AjaxRequest();
147        if (!Ajax){
148                throw("No connection");
149                return;
150        }
151
152        Ajax.onreadystatechange = responseRequest;
153        if (typeof(method) == 'undefined')
154                method = 'GET';
155        Ajax.open(method, requestURL, true);
156        Ajax.send(null);
157}
158
159function unserialize(str)
160{
161
162        var matchB = function (str, iniPos)
163        {
164                var nOpen, nClose = iniPos;
165                do
166                {
167                        nOpen = str.indexOf('{', nClose+1);
168                        nClose = str.indexOf('}', nClose+1);
169
170                        if (nOpen == -1)
171                        {
172                                return nClose;
173                        }
174                        if (nOpen < nClose )
175                        {
176                                nClose = matchB(str, nOpen);
177                        }
178                } while (nOpen < nClose);
179
180                return nClose;
181        }
182
183        var f = function (str)
184        {
185                switch (str.charAt(0))
186                {
187                        case 'a':
188                                var data = new Array();
189                                var n = parseInt( str.substring( str.indexOf(':')+1, str.indexOf(':',2) ) );
190                                var arrayContent = str.substring(str.indexOf('{')+1, str.lastIndexOf('}'));
191
192                                for (var i = 0; i < n; i++)
193                                {
194                                        var pos = 0;
195
196                                        /* Process Index */
197                                        var indexStr = arrayContent.substr(pos, arrayContent.indexOf(';')+1);
198                                        var index = f(indexStr);
199                                        pos = arrayContent.indexOf(';', pos)+1;
200
201                                        /* Process Content */
202                                        var part = null;
203                                        switch (arrayContent.charAt(pos))
204                                        {
205                                                case 'a':
206                                                        var pos_ = matchB(arrayContent, arrayContent.indexOf('{', pos))+1;
207                                                        part = arrayContent.substring(pos, pos_);
208                                                        pos = pos_;
209                                                        data[index] = f(part);
210                                                        break;
211
212                                                case 's':
213                                                        var pval = arrayContent.indexOf(':', pos+2);
214                                                        var val  = parseInt(arrayContent.substring(pos+2, pval));
215                                                        pos = pval + val + 4;
216                                                        data[index] = arrayContent.substr(pval+2, val);
217                                                        break;
218
219                                                default:
220                                                        part = arrayContent.substring(pos, arrayContent.indexOf(';', pos)+1);
221                                                        pos = arrayContent.indexOf(';', pos)+1;
222                                                        data[index] = f(part);
223                                                        break;
224                                        }
225                                        arrayContent = arrayContent.substr(pos);
226                                }
227                                break;
228
229                        case 's':
230                                var pos = str.indexOf(':', 2);
231                                var val = parseInt(str.substring(2,pos));
232                                var data = str.substr(pos+2, val);
233                                str = str.substr(pos + 4 + val);
234                                break;
235
236                        case 'i':
237                        case 'd':
238                                var pos = str.indexOf(';');
239                                var data = parseInt(str.substring(2,pos));
240                                str = str.substr(pos + 1);
241                                break;
242
243                        case 'N':
244                                var data = null;
245                                str = str.substr(str.indexOf(';') + 1);
246                                break;
247
248                        case 'b':
249                                var data = str.charAt(2) == '1' ? true : false;
250                                break;
251                }
252                return data;
253        }
254        unserialized = f(str);
255        return unserialized;
256}
257var unserialized = new Object();
258
259// Serialize Data Method
260function serialize(data)
261{
262        var f = function(data)
263        {
264                var str_data;
265
266                if (data == null ||
267                                (typeof(data) == 'string' && data == ''))
268                {
269                        str_data = 'N;';
270                }
271
272                else switch(typeof(data))
273                {
274                        case 'object':
275                                var arrayCount = 0;
276
277                                str_data = '';
278
279                                for (i in data)
280                                {
281                                        if (i == 'length')
282                                        {
283                                                continue;
284                                        }
285
286                                        arrayCount++;
287                                        switch (typeof(i))
288                                        {
289                                                case 'number':
290                                                        str_data += 'i:' + i + ';' + f(data[i]);
291                                                        break;
292
293                                                case 'string':
294                                                        str_data += 's:' + i.length + ':"' + i + '";' + f(data[i]);
295                                                        break;
296
297                                                default:
298                                                        showMessage(Element('cc_msg_err_serialize_data_unknown').value);
299                                                        break;
300                                        }
301                                }
302                                if (!arrayCount)
303                                {
304                                        str_data = 'N;';       
305                                }
306                                else
307                                {
308                                        str_data = 'a:' + arrayCount + ':{' + str_data + '}';
309                                        }
310
311                                        break;
312
313                                        case 'string':
314                                        str_data = 's:' + data.length + ':"' + data + '";';
315                                        break;
316
317                                        case 'number':
318                                        str_data = 'i:' + data + ';';
319                                        break;
320
321                                        case 'boolean':
322                                        str_data = 'b:' + (data ? '1' : '0') + ';';
323                                        break;
324
325                                        default:
326                                        showMessage(Element('cc_msg_err_serialize_data_unknown').value);
327                                        return null;
328                                }
329
330                                return str_data;
331                }
332
333                return f(data);
334        }
Note: See TracBrowser for help on using the repository browser.