mirror of
https://github.com/coderaiser/cloudcmd.git
synced 2026-01-23 18:55:26 +00:00
refactored
This commit is contained in:
parent
f6a4772d49
commit
526ef37e15
2 changed files with 62 additions and 80 deletions
|
|
@ -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]);
|
||||
|
|
|
|||
137
lib/client.js
137
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(){
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue