mirror of
https://github.com/coderaiser/cloudcmd.git
synced 2026-01-23 18:55:26 +00:00
minor changes
This commit is contained in:
parent
7cac5550b0
commit
e090d75ecb
4 changed files with 115 additions and 117 deletions
63
client.js
63
client.js
|
|
@ -14,45 +14,47 @@ var CloudClient = {
|
|||
* выполняет весь функционал по
|
||||
* инициализации
|
||||
*/
|
||||
init :function(){},
|
||||
init : function(){},
|
||||
|
||||
keyBinding :function(){},/* функция нажатий обработки клавишь*/
|
||||
keyBinded :false, /* оброботка нажатий клавишь установлена */
|
||||
keyBinding : function(){},/* функция нажатий обработки клавишь*/
|
||||
keyBinded : false, /* оброботка нажатий клавишь установлена */
|
||||
|
||||
Editor :function(){},/* function loads and shows editor */
|
||||
Viewer :function(){},/* function loads and shows viewer */
|
||||
Terminal :function(){},/* function loads and shows terminal*/
|
||||
Menu :function(){},/* function loads and shows menu */
|
||||
Editor : function(){},/* function loads and shows editor */
|
||||
Viewer : function(){},/* function loads and shows viewer */
|
||||
Terminal : function(){},/* function loads and shows terminal*/
|
||||
Menu : function(){},/* function loads and shows menu */
|
||||
|
||||
_loadDir :function(){}, /* Функция привязываеться ко всем
|
||||
_loadDir : function(){}, /* Функция привязываеться ко всем
|
||||
* ссылкам и
|
||||
* загружает содержимое каталогов */
|
||||
|
||||
/* ОБЬЕКТЫ */
|
||||
/* Обьект для работы с кэшем */
|
||||
Cache :{},
|
||||
Cache : {},
|
||||
/* Object contain additional system functional */
|
||||
Util :{},
|
||||
Util : {},
|
||||
|
||||
/* ПРИВАТНЫЕ ФУНКЦИИ */
|
||||
/* функция загружает json-данные о файловой системе */
|
||||
_ajaxLoad :function(){},
|
||||
_ajaxLoad : function(){},
|
||||
|
||||
/* Функция генерирует JSON из html-таблицы файлов */
|
||||
_getJSONfromFileTable :function(){},
|
||||
_getJSONfromFileTable : function(){},
|
||||
|
||||
/* функция меняет ссыки на ajax-овые */
|
||||
_changeLinks :function(){},
|
||||
_changeLinks : function(){},
|
||||
|
||||
/* КОНСТАНТЫ*/
|
||||
/* название css-класа текущего файла*/
|
||||
CURRENT_FILE :'current-file',
|
||||
LIBDIR :'/lib/',
|
||||
LIBDIRCLIENT :'/lib/client/',
|
||||
CURRENT_FILE : 'current-file',
|
||||
LIBDIR : '/lib/',
|
||||
LIBDIRCLIENT : '/lib/client/',
|
||||
/* height of Cloud Commander
|
||||
* seting up in init()
|
||||
*/
|
||||
HEIGHT :0,
|
||||
MIN_ONE_PANEL_WIDTH :1155,
|
||||
OLD_BROWSER :false
|
||||
HEIGHT : 0,
|
||||
MIN_ONE_PANEL_WIDTH : 1155,
|
||||
OLD_BROWSER : false
|
||||
};
|
||||
|
||||
/*
|
||||
|
|
@ -61,24 +63,29 @@ var CloudClient = {
|
|||
* работы с LocalStorage, webdb,
|
||||
* indexed db etc.
|
||||
*/
|
||||
CloudClient.Cache={
|
||||
_allowed :true, /* приватный переключатель возможности работы с кэшем */
|
||||
/* функция проверяет возможно ли работать с кэшем каким-либо образом */
|
||||
isAllowed :function(){},
|
||||
CloudClient.Cache = {
|
||||
_allowed : true, /* приватный переключатель возможности работы с кэшем */
|
||||
|
||||
/* функция проверяет возможно ли работать с кэшем каким-либо образом */
|
||||
isAllowed : function(){},
|
||||
|
||||
/* Тип кэша, который доступен*/
|
||||
type :{},
|
||||
type : {},
|
||||
|
||||
/* Функция устанавливает кэш, если выбранный вид поддерживаеться браузером*/
|
||||
set :function(){},
|
||||
|
||||
/* Функция достаёт кэш, если выбранный вид поддерживаеться браузером*/
|
||||
get :function(){},
|
||||
get : function(){},
|
||||
|
||||
/* функция чистит весь кэш для всех каталогов*/
|
||||
clear :function(){}
|
||||
clear : function(){}
|
||||
};
|
||||
|
||||
|
||||
/* функция проверяет поддерживаеться ли localStorage */
|
||||
CloudClient.Cache.isAllowed=(function(){
|
||||
if(window.localStorage &&
|
||||
CloudClient.Cache.isAllowed = (function(){
|
||||
if(window.localStorage &&
|
||||
localStorage.setItem &&
|
||||
localStorage.getItem){
|
||||
CloudClient.Cache._allowed=true;
|
||||
|
|
|
|||
|
|
@ -1,28 +0,0 @@
|
|||
/* object contain poyfills of functions */
|
||||
var CloudCommander;
|
||||
|
||||
var PolyFills = (function(){
|
||||
document.head = document.getElementsByTagName("head")[0];
|
||||
|
||||
document.getElementsByClassName = function(pClassName){
|
||||
return window.jQuery('.'+pClassName)[0];
|
||||
};
|
||||
|
||||
/*
|
||||
{name: '', src: ' ',func: '', style: '', id: '', parent: '',
|
||||
async: false, inner: 'id{color:red, }, class:'', not_append: false}
|
||||
*/
|
||||
this.cssSet = function(pParams_o){
|
||||
var lElement = '<style ';
|
||||
|
||||
if (pParams_o.id) lElement += 'id=' + pParams_o.id + ' ';
|
||||
if (pParams_o.style) lElement += 'style=' + pParams_o.style + ' ';
|
||||
if (pParams_o.className) lElement += 'class=' + pParams_o.className;
|
||||
if (pParams_o.inner)lElement += '>' + pParams_o.inner;
|
||||
|
||||
lElement +='</style>';
|
||||
return $(lElement)
|
||||
.appendTo(pParams_o.parent || document.head);
|
||||
|
||||
},
|
||||
});
|
||||
|
|
@ -226,17 +226,7 @@ CloudFunc._getDirPath=function(url)
|
|||
do{
|
||||
folders[i++]=url; url=url.substr(url,url.lastIndexOf('/'));
|
||||
}while(url!=='');
|
||||
|
||||
/* сохраяем адрес предыдущего каталога */
|
||||
/*
|
||||
if(i>2){
|
||||
if(folders[0].lastIndexOf('/')===folders[0].length)
|
||||
LPrevDir=folders[1];
|
||||
else LPrevDir=folders[2];
|
||||
}else LPrevDir='/';
|
||||
*/
|
||||
/* ################################### */
|
||||
|
||||
|
||||
/* Формируем ссылки на каждый каталог в пути */
|
||||
var lHref='<a class=links href="';
|
||||
var lTitle='" title="';
|
||||
|
|
@ -247,11 +237,19 @@ CloudFunc._getDirPath=function(url)
|
|||
/* путь в ссылке, который говорит
|
||||
* что js отключен
|
||||
*/
|
||||
var lNoJS_s=CloudFunc.NOJS;
|
||||
var lFS_s=CloudFunc.FS;
|
||||
var lNoJS_s = CloudFunc.NOJS;
|
||||
var lFS_s = CloudFunc.FS;
|
||||
/* корневой каталог */
|
||||
lHtmlPath=lHref+lFS_s+lNoJS_s+lTitle+'"/"'+_l+'/'+lHrefEnd;
|
||||
for(i=folders.length-1;i>0;i--)
|
||||
lHtmlPath = lHref +
|
||||
lFS_s +
|
||||
lNoJS_s +
|
||||
lTitle +
|
||||
'"/"' +
|
||||
_l +
|
||||
'/' +
|
||||
lHrefEnd;
|
||||
|
||||
for(i = folders.length - 1; i > 0; i--)
|
||||
{
|
||||
var lUrl=folders[i];
|
||||
var lShortName=lUrl.replace(lUrl.substr(lUrl,lUrl.lastIndexOf('/')+1),'');
|
||||
|
|
@ -368,54 +366,55 @@ CloudFunc.buildFromJSON=function(pJSON,pKeyBinded)
|
|||
/* путь в ссылке, который говорит
|
||||
* что js отключен
|
||||
*/
|
||||
var lNoJS_s=CloudFunc.NOJS;
|
||||
var lFS_s=CloudFunc.FS;
|
||||
var lNoJS_s = CloudFunc.NOJS;
|
||||
var lFS_s = CloudFunc.FS;
|
||||
|
||||
var lFileTable =
|
||||
'<li class=path>'+
|
||||
'<span class="path_icon clear-cache"' +
|
||||
'id=clear-cache' +
|
||||
'title="clear cache (Ctrl+D)">' +
|
||||
'</span>'+
|
||||
'<span class="path_icon ' + CloudFunc.REFRESHICON + '"' +
|
||||
' title="refresh (Ctrl+R)">' +
|
||||
'<a href="'+lFS_s+lNoJS_s+lRefreshPath+'">' +
|
||||
'</a>' +
|
||||
'</span>' +
|
||||
'<span>' + lHtmlPath + '</span>' +
|
||||
'<span class="path_icon clear-cache"' +
|
||||
'id=clear-cache' +
|
||||
'title="clear cache (Ctrl+D)">' +
|
||||
'</span>' +
|
||||
'<span class="path_icon ' + CloudFunc.REFRESHICON + '"' +
|
||||
' title="refresh (Ctrl+R)">' +
|
||||
'<a href="' + lFS_s + lNoJS_s + lRefreshPath + '">' +
|
||||
'</a>' +
|
||||
'</span>' +
|
||||
'<span>' + lHtmlPath + '</span>' +
|
||||
'</li>';
|
||||
|
||||
var fileTableTitles=['name','size','owner','mode'];
|
||||
lFileTable+=CloudFunc._getFileTableHeader(fileTableTitles);
|
||||
var fileTableTitles = ['name','size','owner','mode'];
|
||||
lFileTable += CloudFunc._getFileTableHeader(fileTableTitles);
|
||||
/* Если мы не в корне */
|
||||
if(lPath!=='/'){
|
||||
if(lPath !== '/'){
|
||||
/* ссылка на верхний каталог*/
|
||||
var lDotDot;
|
||||
/* убираем последний слеш и каталог в котором мы сейчас находимся*/
|
||||
lDotDot=lPath.substr(lPath,lPath.lastIndexOf('/'));
|
||||
lDotDot=lDotDot.substr(lDotDot,lDotDot.lastIndexOf('/'));
|
||||
lDotDot = lPath.substr(lPath,lPath.lastIndexOf('/'));
|
||||
lDotDot = lDotDot.substr(lDotDot,lDotDot.lastIndexOf('/'));
|
||||
/* Если предыдущий каталог корневой */
|
||||
if(lDotDot==='')lDotDot='/';
|
||||
if(lDotDot === '')lDotDot = '/';
|
||||
|
||||
/* Сохраняем путь к каталогу верхнего уровня*/
|
||||
lFileTable += '<li class=current-file>'+
|
||||
'<span class="mini-icon directory">' +
|
||||
'</span>' +
|
||||
'<span class=name>' +
|
||||
'<a href="'+lFS_s+lNoJS_s +
|
||||
'<a href="' + lFS_s+lNoJS_s +
|
||||
lDotDot +
|
||||
'">'+"..</a>" +
|
||||
'">' + "..</a>" +
|
||||
'</span>' +
|
||||
'<span class=size><dir></span>'+
|
||||
'<span class=owner>.</span>' +
|
||||
'<span class=mode></span>' +
|
||||
'</li>';
|
||||
}
|
||||
var lLength=files.length;
|
||||
var lLength = files.length;
|
||||
|
||||
for(var i=1;i<lLength;i++){
|
||||
lFileTable +='<li class>';
|
||||
for(var i = 1; i < lLength; i++){
|
||||
lFileTable += '<li class>';
|
||||
lFileTable += '<span class="mini-icon ';
|
||||
|
||||
/* если папка - выводим другую иконку */
|
||||
lFileTable += (files[i].size==='dir'?
|
||||
'directory':'text-file') +
|
||||
|
|
|
|||
66
server.js
66
server.js
|
|
@ -271,6 +271,17 @@ CloudServer._controller=function(pReq, pRes)
|
|||
var url = require("url");
|
||||
var lParsedUrl = url.parse(pReq.url);
|
||||
var pathname = lParsedUrl.pathname;
|
||||
|
||||
/* varible contain one of queris:
|
||||
* download - change content-type for
|
||||
* make downloading process
|
||||
* from client js
|
||||
* json - /no-js/ will be removed, and
|
||||
* if we will wont get directory
|
||||
* content wi will set json
|
||||
* query like this
|
||||
* ?json
|
||||
*/
|
||||
var lQuery = lParsedUrl.query;
|
||||
if(lQuery)
|
||||
console.log('query = ' + lQuery);
|
||||
|
|
@ -288,7 +299,7 @@ CloudServer._controller=function(pReq, pRes)
|
|||
if (lAcceptEncoding &&
|
||||
lAcceptEncoding.match(/\bgzip\b/) &&
|
||||
Zlib){
|
||||
CloudServer.Gzip=true;
|
||||
CloudServer.Gzip = true;
|
||||
}
|
||||
/* путь в ссылке, который говорит
|
||||
* что js отключен
|
||||
|
|
@ -299,28 +310,28 @@ CloudServer._controller=function(pReq, pRes)
|
|||
if(pathname!=='/favicon.ico')
|
||||
{
|
||||
console.log("request for " + pathname + " received...");
|
||||
var lName;
|
||||
|
||||
/* если в пути нет информации ни о ФС,
|
||||
* ни об отсутствии js,
|
||||
* ни о том, что это корневой
|
||||
* каталог - загружаем файлы проэкта
|
||||
*/
|
||||
if(pathname.indexOf(lFS_s) < 0 &&
|
||||
pathname.indexOf(lNoJS_s) < 0 &&
|
||||
pathname!=='/'){
|
||||
if(pathname.indexOf(lFS_s) < 0 &&
|
||||
pathname.indexOf(lNoJS_s) < 0 &&
|
||||
pathname!=='/' &&
|
||||
lQuery !=='json'){
|
||||
/* если имена файлов проекта - загружаем их*/
|
||||
/* убираем слеш и читаем файл с текущец директории*/
|
||||
|
||||
/* добавляем текующий каталог к пути */
|
||||
lName='.'+pathname;
|
||||
var lName = '.' + pathname;
|
||||
console.log('reading '+lName);
|
||||
|
||||
/* сохраняем указатель на response и имя */
|
||||
CloudServer.Responses[lName]=pRes;
|
||||
CloudServer.Responses[lName] = pRes;
|
||||
|
||||
/* saving status OK for current file */
|
||||
CloudServer.Statuses[lName] = 200;
|
||||
CloudServer.Statuses[lName] = 200;
|
||||
|
||||
/* Берём значение из кэша
|
||||
* сжатый файл - если gzip-поддерживаеться браузером
|
||||
|
|
@ -381,20 +392,29 @@ CloudServer._controller=function(pReq, pRes)
|
|||
* длиннее
|
||||
*/
|
||||
|
||||
if(pathname.indexOf(lNoJS_s)!==lFS_s.length && pathname!=='/'){
|
||||
CloudServer.NoJS=false;
|
||||
}else pathname=pathname.replace(lNoJS_s,'');
|
||||
if(pathname.indexOf(lNoJS_s) !== lFS_s.length &&
|
||||
pathname !== '/'){
|
||||
CloudServer.NoJS = false;
|
||||
|
||||
}else pathname = pathname.replace(lNoJS_s,'');
|
||||
|
||||
/* убираем индекс файловой системы */
|
||||
if(pathname.indexOf(lFS_s)===0){
|
||||
if(pathname.indexOf(lFS_s) === 0){
|
||||
pathname = pathname.replace(lFS_s,'');
|
||||
/* если посетитель только зашел на сайт
|
||||
* no-js будет пустым, как и fs
|
||||
*/
|
||||
/* если в пути нету fs - посетитель только зашел на сайт
|
||||
|
||||
/* if query json setted up
|
||||
* load json data, no-js false.
|
||||
*/
|
||||
if(lQuery === 'json'){
|
||||
CloudServer.NoJS = false;
|
||||
}
|
||||
|
||||
/* если посетитель только зашел на сайт
|
||||
* no-js будет пустым, как и fs.
|
||||
* Если в пути нету fs - посетитель только зашел на сайт
|
||||
* загружаем его полностью.
|
||||
*/
|
||||
}else CloudServer.NoJS=true;
|
||||
} else CloudServer.NoJS = true;
|
||||
/* если в итоге путь пустой
|
||||
* делаем его корневым
|
||||
*/
|
||||
|
|
@ -403,12 +423,12 @@ CloudServer._controller=function(pReq, pRes)
|
|||
|
||||
DirPath = pathname;
|
||||
|
||||
CloudServer.Responses[DirPath] = pRes;
|
||||
CloudServer.Responses[DirPath] = pRes;
|
||||
|
||||
CloudServer.Statuses[DirPath] = 200;
|
||||
CloudServer.Statuses[DirPath] = 200;
|
||||
|
||||
/* saving query of current file */
|
||||
CloudServer.Queries[DirPath] = lQuery;
|
||||
CloudServer.Queries[DirPath] = lQuery;
|
||||
|
||||
/* Проверяем с папкой ли мы имеем дело */
|
||||
|
||||
|
|
@ -419,16 +439,16 @@ CloudServer._controller=function(pReq, pRes)
|
|||
* меняем название html-файла и
|
||||
* загружаем сжатый html-файл в дальнейшем
|
||||
*/
|
||||
CloudServer.INDEX=(CloudServer.Minify._allowed.html?
|
||||
CloudServer.INDEX = (CloudServer.Minify._allowed.html ?
|
||||
'.' + CloudServer.Minify.MinFolder + 'index.min.html'
|
||||
:CloudServer.INDEX);
|
||||
: CloudServer.INDEX);
|
||||
|
||||
/*
|
||||
* сохраним указатель на response
|
||||
* и на статус ответа
|
||||
*/
|
||||
CloudServer.Responses[CloudServer.INDEX] = pRes;
|
||||
CloudServer.Statuses[CloudServer.INDEX] = 200;
|
||||
CloudServer.Statuses [CloudServer.INDEX] = 200;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue