diff --git a/cloudcmd.js b/cloudcmd.js index 840cd07d..3dfc687c 100644 --- a/cloudcmd.js +++ b/cloudcmd.js @@ -113,11 +113,8 @@ lOptimizeParams.push(lIndex); if (pAllowed.css) { - var lStyles = []; - - lStyles[0] = {}; + var lStyles = [{}, {}]; lStyles[0][lStyleCSS] = lCSSOptions; - lStyles[1] = {}; lStyles[1][lResetCSS] = lCSSOptions; lOptimizeParams.push(lStyles[0]); diff --git a/lib/client.js b/lib/client.js index 63fa1851..1bb70da0 100644 --- a/lib/client.js +++ b/lib/client.js @@ -3,11 +3,11 @@ * клиентский и серверный */ -var Util, DOM, CloudFunc, CloudCommander = (function(){ +var Util, DOM, CloudFunc, $, KeyBinding, CloudCommander = (function(){ "use strict"; /* Клиентский обьект, содержащий функциональную часть*/ -var CloudClient = { +var CloudCmd = { /* Конструктор CloudClient, который выполняет * весь функционал по инициализации */ @@ -56,18 +56,6 @@ var CloudClient = { return lLocation.protocol + '//' + lLocation.host; })() }; - - - -var cloudcmd = CloudClient, - -/* глобальные переменные */ - $, KeyBinding, - -/* short names used all the time functions */ - getByClass, getById; - - /** * function load modules * @pParams = {name, path, func, dobefore, arg} @@ -97,24 +85,24 @@ var loadModule = function(pParams){ if( !Util.isContainStr(lPath, '.js') ) lPath += '.js'; - if(!cloudcmd[lName]) - cloudcmd[lName] = function(pArg){ + if(!CloudCmd[lName]) + CloudCmd[lName] = function(pArg){ Util.exec(lDoBefore); - return DOM.jsload(cloudcmd.LIBDIRCLIENT + lPath, lFunc || + return DOM.jsload(CloudCmd.LIBDIRCLIENT + lPath, lFunc || function(){ - Util.exec(cloudcmd[lName].init, pArg); + Util.exec(CloudCmd[lName].init, pArg); }); }; }; -CloudClient.GoogleAnalytics = function(){ +CloudCmd.GoogleAnalytics = function(){ /* google analytics */ var lFunc = document.onmousemove; document.onmousemove = function(){ setTimeout(function(){ - DOM.jsload(cloudcmd.LIBDIRCLIENT + 'google_analytics.js'); + DOM.jsload(CloudCmd.LIBDIRCLIENT + 'google_analytics.js'); },5000); Util.exec(lFunc); @@ -130,7 +118,7 @@ CloudClient.GoogleAnalytics = function(){ * @param pLink - ссылка * @param pNeedRefresh - необходимость обязательной загрузки данных с сервера */ -CloudClient._loadDir = function(pLink, pNeedRefresh){ +CloudCmd._loadDir = function(pLink, pNeedRefresh){ return function(){ /* * показываем гиф загрузки возле пути папки сверху @@ -143,11 +131,11 @@ CloudClient._loadDir = function(pLink, pNeedRefresh){ lDir = DOM.getCurrentDir(); /* загружаем содержимое каталога */ - CloudClient._ajaxLoad(pLink, { refresh: pNeedRefresh }); + CloudCmd._ajaxLoad(pLink, { refresh: pNeedRefresh }); /* если нажали на ссылку на верхний каталог*/ if(lParent === '..' && lDir !== '/') - CloudClient._currentToParent(lDir); + CloudCmd._currentToParent(lDir); }; }; @@ -158,7 +146,7 @@ CloudClient._loadDir = function(pLink, pNeedRefresh){ * @param pParent - parent element * @param pEvent */ -CloudClient._editFileName = function(pParent){ +CloudCmd._editFileName = function(pParent){ var lA = DOM.getCurrentLink(pParent); if (lA && lA.textContent !== '..'){ @@ -197,7 +185,7 @@ CloudClient._editFileName = function(pParent){ * в верх по файловой структуре * @param pDirName - имя каталога с которого мы пришли */ -CloudClient._currentToParent = function(pDirName){ +CloudCmd._currentToParent = function(pDirName){ /* опредиляем в какой мы панели: * правой или левой */ @@ -206,7 +194,7 @@ CloudClient._currentToParent = function(pDirName){ /* убираем слэш с имени каталога*/ pDirName = pDirName.replace('/',''); - var lRootDir = getById(pDirName + '(' + lPanel.id + ')'); + var lRootDir = DOM.getById(pDirName + '(' + lPanel.id + ')'); /* if found li element with ID directory name * set it to current file @@ -221,7 +209,7 @@ CloudClient._currentToParent = function(pDirName){ * выполняет весь функционал по * инициализации */ -CloudClient.init = function(){ +CloudCmd.init = function(){ var lFunc = function(){ Util.loadOnLoad([ initKeysPanel, @@ -229,16 +217,12 @@ CloudClient.init = function(){ baseInit ]); }; - - getByClass = DOM.getByClass; - getById = DOM.getById; - - + //Util.socketLoad(); if(!document.body.scrollIntoViewIfNeeded){ this.OLD_BROWSER = true; - var lSrc = CloudClient.LIBDIRCLIENT + 'ie.js'; + var lSrc = CloudCmd.LIBDIRCLIENT + 'ie.js'; DOM.jqueryLoad( DOM.retJSLoad(lSrc, lFunc) @@ -252,7 +236,7 @@ function initModules(pCallBack){ /* привязываем клавиши к функциям */ path : 'keyBinding.js', func : function(){ - KeyBinding = cloudcmd.KeyBinding; + KeyBinding = CloudCmd.KeyBinding; KeyBinding.init(); } }); @@ -266,7 +250,7 @@ function initModules(pCallBack){ var lFunc = document.oncontextmenu; document.oncontextmenu = function(){ Util.exec(lFunc); - return cloudcmd.Menu.ENABLED || false; + return CloudCmd.Menu.ENABLED || false; }; }, @@ -306,8 +290,8 @@ function initKeysPanel(pCallBack){ null, null, /* f1 */ null, /* f2 */ - cloudcmd.Viewer, /* f3 */ - cloudcmd.Editor, /* f4 */ + CloudCmd.Viewer, /* f3 */ + CloudCmd.Editor, /* f4 */ null, /* f5 */ null, /* f6 */ null, /* f7 */ @@ -316,13 +300,13 @@ function initKeysPanel(pCallBack){ for(var i = 1; i <= 8; i++){ var lButton = 'f' + i, - lEl = getById('f' + i); + lEl = DOM.getById('f' + i); lEl.onclick = lFuncs[i]; lKeysPanel[lButton] = lEl; } - cloudcmd.KeysPanel = lKeysPanel; + CloudCmd.KeysPanel = lKeysPanel; Util.exec(pCallBack); } @@ -339,12 +323,12 @@ function baseInit(pCallBack){ } /* загружаем общие функции для клиента и сервера */ - DOM.jsload(cloudcmd.LIBDIR + 'cloudfunc.js',function(){ + DOM.jsload(CloudCmd.LIBDIR + 'cloudfunc.js',function(){ DOM.addListener("popstate", function(pEvent) { var lPath = pEvent.state; if(lPath) - cloudcmd._ajaxLoad(lPath, {nohistory: true}); + CloudCmd._ajaxLoad(lPath, {nohistory: true}); return true; }); @@ -353,14 +337,14 @@ function baseInit(pCallBack){ CloudFunc = window.CloudFunc; /* меняем ссылки на ajax'овые */ - cloudcmd._changeLinks(CloudFunc.LEFTPANEL); - cloudcmd._changeLinks(CloudFunc.RIGHTPANEL); + CloudCmd._changeLinks(CloudFunc.LEFTPANEL); + CloudCmd._changeLinks(CloudFunc.RIGHTPANEL); /* устанавливаем переменную доступности кэша */ DOM.Cache.isAllowed(); /* Устанавливаем кэш корневого каталога */ if( !DOM.Cache.get('/') ) - DOM.Cache.set('/', cloudcmd._getJSONfromFileTable()); + DOM.Cache.set('/', CloudCmd._getJSONfromFileTable()); }); /* устанавливаем размер высоты таблицы файлов @@ -368,11 +352,11 @@ function baseInit(pCallBack){ */ /* выделяем строку с первым файлом */ - var lFmHeader = getByClass('fm-header'); + var lFmHeader = DOM.getByClass('fm-header'); DOM.setCurrentFile(lFmHeader[0].nextSibling); /* показываем элементы, которые будут работать только, если есть js */ - var lFM = getById('fm'); + var lFM = DOM.getById('fm'); if(lFM) lFM.className='localstorage'; @@ -386,7 +370,7 @@ function baseInit(pCallBack){ lHeight = (lHeight / 100).toFixed() * 100; - cloudcmd.HEIGHT = lHeight; + CloudCmd.HEIGHT = lHeight; DOM.cssSet({id:'cloudcmd', inner: @@ -396,32 +380,32 @@ function baseInit(pCallBack){ }); Util.exec(pCallBack); - cloudcmd.KeyBinding(); + CloudCmd.KeyBinding(); } -CloudClient.getConfig = function(pCallBack){ - if(!cloudcmd.Config) +CloudCmd.getConfig = function(pCallBack){ + if(!CloudCmd.Config) return DOM.ajax({ url:'/config.json', success: function(pConfig){ - cloudcmd.Config = pConfig; + CloudCmd.Config = pConfig; Util.exec(pCallBack, pConfig); } }); else - Util.exec(pCallBack, cloudcmd.Config); + Util.exec(pCallBack, CloudCmd.Config); }; /* функция меняет ссыки на ajax-овые */ -CloudClient._changeLinks = function(pPanelID){ +CloudCmd._changeLinks = function(pPanelID){ /* назначаем кнопку очистить кэш и показываем её */ - var lClearcache = getById('clear-cache'); + var lClearcache = DOM.getById('clear-cache'); lClearcache.onclick = DOM.Cache.clear; /* меняем ссылки на ajax-запросы */ - var lPanel = getById(pPanelID), + var lPanel = DOM.getById(pPanelID), a = lPanel.getElementsByTagName('a'), /* номер ссылки иконки обновления страницы */ @@ -445,8 +429,8 @@ CloudClient._changeLinks = function(pPanelID){ var lTarget = pEvent.currentTarget || pEvent.target; DOM.setCurrentFile(lTarget); - if(Util.isFunction(cloudcmd.Menu) ){ - cloudcmd.Menu({ + if(Util.isFunction(CloudCmd.Menu) ){ + CloudCmd.Menu({ x: pEvent.x, y: pEvent.y }); @@ -494,7 +478,7 @@ CloudClient._changeLinks = function(pPanelID){ DOM.setCurrentFile(pElement); }, - lUrl = cloudcmd.HOST; + lUrl = CloudCmd.HOST; for(var i = 0, n = a.length; i < n ; i++) { @@ -503,7 +487,7 @@ CloudClient._changeLinks = function(pPanelID){ /* ставим загрузку гифа на клик*/ if(i === lREFRESHICON){ - a[i].onclick = CloudClient._loadDir(link, true); + a[i].onclick = CloudCmd._loadDir(link, true); a[i].parentElement.onclick = a[i].onclick; } @@ -515,7 +499,7 @@ CloudClient._changeLinks = function(pPanelID){ /* if we in path changing onclick events */ if (lLi.className === 'path') { - a[i].onclick = CloudClient._loadDir(link); + a[i].onclick = CloudCmd._loadDir(link); } else { lLi.onclick = Util.retFalse; @@ -529,10 +513,10 @@ CloudClient._changeLinks = function(pPanelID){ /* если ссылка на папку, а не файл */ if(a[i].target !== '_blank'){ - lLi.ondblclick = CloudClient._loadDir(link); + lLi.ondblclick = CloudCmd._loadDir(link); DOM.addListener('touchend', - CloudClient._loadDir(link), + CloudCmd._loadDir(link), false, lLi ); @@ -552,7 +536,7 @@ CloudClient._changeLinks = function(pPanelID){ * @param pOptions * { refresh, nohistory } - необходимость обновить данные о каталоге */ -CloudClient._ajaxLoad = function(pFullPath, pOptions){ +CloudCmd._ajaxLoad = function(pFullPath, pOptions){ if(!pOptions) pOptions = {}; /* Отображаем красивые пути */ @@ -614,8 +598,8 @@ CloudClient._ajaxLoad = function(pFullPath, pOptions){ }else lJSON = JSON.parse(lJSON); - CloudClient._createFileTable(lPanel, lJSON); - CloudClient._changeLinks(lPanel); + CloudCmd._createFileTable(lPanel, lJSON); + CloudCmd._changeLinks(lPanel); return; @@ -633,8 +617,8 @@ CloudClient._ajaxLoad = function(pFullPath, pOptions){ if(!jqXHR.responseText.indexOf('Error:')) return DOM.showError(jqXHR); - CloudClient._createFileTable(lPanel, data); - CloudClient._changeLinks(lPanel); + CloudCmd._createFileTable(lPanel, data); + CloudCmd._changeLinks(lPanel); /* Сохраняем структуру каталогов в localStorage, * если он поддерживаеться браузером @@ -659,13 +643,14 @@ CloudClient._ajaxLoad = function(pFullPath, pOptions){ * @param pEleme - родительский элемент * @param pJSON - данные о файлах */ -CloudClient._createFileTable = function(pElem, pJSON){ - var lElem = getById(pElem); +CloudCmd._createFileTable = function(pElem, pJSON){ + var lElem = DOM.getById(pElem); /* getting current element if was refresh */ - var lPath = getByClass('path', lElem); - var lWasRefresh_b = lPath[0].textContent === pJSON[0].path; - var lCurrent; + var lPath = DOM.getByClass('path', lElem), + lWasRefresh_b = lPath[0].textContent === pJSON[0].path, + lCurrent; + if(lWasRefresh_b) lCurrent = DOM.getCurrentFile(); @@ -698,9 +683,9 @@ CloudClient._createFileTable = function(pElem, pJSON){ * Функция генерирует JSON из html-таблицы файлов и * используеться при первом заходе в корень */ -CloudClient._getJSONfromFileTable = function(){ - var lLeft = getById('left'), - lPath = getByClass('path')[0].textContent, +CloudCmd._getJSONfromFileTable = function(){ + var lLeft = DOM.getById('left'), + lPath = DOM.getByClass('path')[0].textContent, lFileTable = [{ path:lPath, @@ -764,7 +749,7 @@ CloudClient._getJSONfromFileTable = function(){ return JSON.stringify(lFileTable); }; -return CloudClient; +return CloudCmd; })(); window.onload = function(){