diff --git a/lib/client.js b/lib/client.js index a5388124..b97a34fc 100644 --- a/lib/client.js +++ b/lib/client.js @@ -24,9 +24,8 @@ var CloudCmd = { Menu : null, /* function loads and shows menu */ GoogleAnalytics : null, - _loadDir : null, /* Функция привязываеться ко всем - * ссылкам и - * загружает содержимое каталогов */ + loadDir : null, /* Функция привязываеться ко всем ссылкам и + * загружает содержимое каталогов */ /* ОБЬЕКТЫ */ @@ -75,7 +74,7 @@ CloudCmd.GoogleAnalytics = function(){ * @param pNeedRefresh - необходимость обязательной загрузки данных с сервера */ CloudCmd.loadDir = function(pLink, pNeedRefresh){ - return function(){ + return function(pEvent){ /* показываем гиф загрузки возле пути папки сверху * ctrl+r нажата? */ @@ -97,6 +96,8 @@ CloudCmd.loadDir = function(pLink, pNeedRefresh){ if(lParent === '..' && lDir !== '/') CloudCmd._currentToParent(lDir); } + + DOM.preventDefault(pEvent); }; }; @@ -507,7 +508,7 @@ CloudCmd._changeLinks = function(pPanelID){ lLi = ai.parentElement.parentElement; /* if we in path - set click event */ - if (lLi.className === 'path') + if (lLi.className === 'path') DOM.addClickListener( lLoadDir, ai ); else { DOM.addClickListener( DOM.preventDefault, lLi); @@ -538,70 +539,70 @@ CloudCmd._changeLinks = function(pPanelID){ * { refresh, nohistory } - необходимость обновить данные о каталоге */ CloudCmd._ajaxLoad = function(pPath, pOptions){ - if(!pOptions) - pOptions = {}; + if(!pOptions) + pOptions = {}; + + /* Отображаем красивые пути */ + var lFSPath = decodeURI(pPath), + lNOJSPath = Util.removeStr( lFSPath, '?json' ), + lCleanPath = Util.removeStr( lNOJSPath, CloudFunc.FS ) || '/', - /* Отображаем красивые пути */ - var lFSPath = decodeURI(pPath), - lNOJSPath = Util.removeStr( lFSPath, '?json' ), - lCleanPath = Util.removeStr( lNOJSPath, CloudFunc.FS ) || '/', - - lOldURL = window.location.pathname; + lOldURL = window.location.pathname; + + Util.log ('reading dir: "' + lCleanPath + '";'); + + if(!pOptions.nohistory){ + lNOJSPath = lCleanPath === '/' ? '/' : lNOJSPath; + DOM.setHistory(lNOJSPath, null, lNOJSPath); + } + + DOM.setTitle( CloudFunc.getTitle(lCleanPath) ); + + var lPanel = DOM.getPanel().id; + /* если доступен localStorage и + * в нём есть нужная нам директория - + * читаем данные с него и + * выходим + * если стоит поле обязательной перезагрузки - + * перезагружаемся + */ + var lRet = pOptions.refresh; + if(!lRet){ + var lJSON = DOM.Cache.get(lCleanPath); - Util.log ('reading dir: "' + lCleanPath + '";'); - - if(!pOptions.nohistory){ - lNOJSPath = lCleanPath === '/' ? '/' : lNOJSPath; - DOM.setHistory(lNOJSPath, null, lNOJSPath); + if (lJSON){ + /* переводим из текста в JSON */ + lJSON = Util.parseJSON(lJSON); + CloudCmd._createFileTable(lPanel, lJSON, true); + CloudCmd._changeLinks(lPanel); } - - DOM.setTitle( CloudFunc.getTitle(lCleanPath) ); - - var lPanel = DOM.getPanel().id; - /* если доступен localStorage и - * в нём есть нужная нам директория - - * читаем данные с него и - * выходим - * если стоит поле обязательной перезагрузки - - * перезагружаемся - */ - var lRet = pOptions.refresh; - if(!lRet){ - var lJSON = DOM.Cache.get(lCleanPath); + else + lRet = true; + } + + if(lRet) + DOM.getCurrentFileContent({ + url : lFSPath, - if (lJSON){ - /* переводим из текста в JSON */ - lJSON = Util.parseJSON(lJSON); - CloudCmd._createFileTable(lPanel, lJSON, true); + error : function(){ + DOM.setHistory(lOldURL, null, lOldURL); + }, + + success : function(pData){ + CloudCmd._createFileTable(lPanel, pData, true); CloudCmd._changeLinks(lPanel); + + /* переводим таблицу файлов в строку, для * + * сохранения в localStorage */ + var lJSON_s = Util.stringifyJSON(pData); + Util.log(lJSON_s.length); + + /* если размер данных не очень бошьой * + * сохраняем их в кэше */ + if(lJSON_s.length < 50000 ) + DOM.Cache.set(lCleanPath, lJSON_s); } - else - lRet = true; - } - - if(lRet) - DOM.getCurrentFileContent({ - url : lFSPath, - - error : function(){ - DOM.setHistory(lOldURL, null, lOldURL); - }, - - success : function(pData){ - CloudCmd._createFileTable(lPanel, pData, true); - CloudCmd._changeLinks(lPanel); - - /* переводим таблицу файлов в строку, для * - * сохранения в localStorage */ - var lJSON_s = Util.stringifyJSON(pData); - Util.log(lJSON_s.length); - - /* если размер данных не очень бошьой * - * сохраняем их в кэше */ - if(lJSON_s.length < 50000 ) - DOM.Cache.set(lCleanPath, lJSON_s); - } - }); + }); }; /** @@ -627,7 +628,7 @@ CloudCmd._createFileTable = function(pElem, pJSON, pSetCurrent){ while(i--) lElem.removeChild(lElem.lastChild); - /* заполняем панель новыми элементами */ + /* заполняем панель новыми элементами */ lElem.innerHTML = CloudFunc.buildFromJSON(pJSON, pSetCurrent); /* searching current file */ @@ -661,15 +662,15 @@ CloudCmd._getJSONfromFileTable = function(){ lPath = DOM.getByClass('path')[0].textContent, lFileTable = [{ - path:lPath, - size:'dir' + path : lPath, + size : 'dir' }], lLI = lLeft.getElementsByTagName('li'), i, n, j = 1; /* счётчик реальных файлов */ - /* счётчик элементов файлов в DOM */ - /* Если путь отличный от корневного + /* счётчик элементов файлов в DOM + * Если путь отличный от корневного * второй элемент li - это ссылка на верхний * каталог '..' */