refactored

This commit is contained in:
coderaiser 2012-12-28 09:19:43 -05:00
parent f6a4772d49
commit 526ef37e15
2 changed files with 62 additions and 80 deletions

View file

@ -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]);

View file

@ -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(){