Ignore:
Timestamp:
11/24/09 16:07:27 (14 years ago)
Author:
amuller
Message:

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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • sandbox/filemanager/js/connector.js

    r1693 r1704  
    151151} 
    152152 
     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 TracChangeset for help on using the changeset viewer.