mirror of
https://github.com/coderaiser/cloudcmd.git
synced 2026-07-18 17:05:17 +00:00
fixed bug with empty directorys
This commit is contained in:
parent
9273b65aa3
commit
f1f65d2ce1
3 changed files with 55 additions and 61 deletions
|
|
@ -3,6 +3,9 @@
|
|||
* Changed name of menu files, fixed npm and jitsu
|
||||
problem with menu showing.
|
||||
|
||||
* Fixed bug with empty directorys. If directory
|
||||
was empty, we could not go in.
|
||||
|
||||
|
||||
2012.08.24, Version 0.1.6
|
||||
|
||||
|
|
|
|||
|
|
@ -323,45 +323,40 @@ CloudFunc._getFileTableHeader=function(pFileTableTitles)
|
|||
* [{path:'путь',size:'dir'},
|
||||
* {name:'имя',size:'размер',mode:'права доступа'}]
|
||||
*/
|
||||
CloudFunc.buildFromJSON=function(pJSON,pKeyBinded)
|
||||
CloudFunc.buildFromJSON = function(pJSON, pKeyBinded)
|
||||
{
|
||||
var files;
|
||||
/*
|
||||
* если пропарсить стандартными
|
||||
* функциями нельзя -
|
||||
* пробуем eval,
|
||||
*/
|
||||
/*
|
||||
* Если мы на клиенте и нет JSON -
|
||||
* через eval парсим.
|
||||
* Если-же мы на сервере,
|
||||
* или на клиенте всё есть
|
||||
* парсим стандарным методом
|
||||
*/
|
||||
|
||||
/* По скольку мы прописали заголовок application/json
|
||||
*
|
||||
* По скольку мы прописали заголовок application/json
|
||||
* нет необходимости его конвертировать,
|
||||
* но она есть, если мы вытягиваем данные из
|
||||
* localStorage
|
||||
*/
|
||||
files=pJSON;
|
||||
files = pJSON;
|
||||
|
||||
/* сохраняем путь каталога в котором мы сейчас находимся*/
|
||||
var lPath=files[0].path;
|
||||
var lPath = files[0].path;
|
||||
|
||||
/* сохраняем путь */
|
||||
CloudFunc.Path=lPath;
|
||||
CloudFunc.Path = lPath;
|
||||
|
||||
/*
|
||||
* Строим путь каталога в котором мы находимся
|
||||
* со всеми подкаталогами
|
||||
*/
|
||||
var lHtmlPath=CloudFunc._getDirPath(lPath);
|
||||
var lHtmlPath = CloudFunc._getDirPath(lPath);
|
||||
|
||||
/* Убираем последний слэш
|
||||
* с пути для кнопки обновить страницу
|
||||
* если он есть
|
||||
*/
|
||||
var lRefreshPath=CloudFunc.removeLastSlash(lPath);
|
||||
var lRefreshPath = CloudFunc.removeLastSlash(lPath);
|
||||
|
||||
/* путь в ссылке, который говорит
|
||||
* что js отключен
|
||||
|
|
@ -385,6 +380,7 @@ CloudFunc.buildFromJSON=function(pJSON,pKeyBinded)
|
|||
|
||||
var fileTableTitles = ['name','size','owner','mode'];
|
||||
lFileTable += CloudFunc._getFileTableHeader(fileTableTitles);
|
||||
|
||||
/* Если мы не в корне */
|
||||
if(lPath !== '/'){
|
||||
/* ссылка на верхний каталог*/
|
||||
|
|
|
|||
89
server.js
89
server.js
|
|
@ -534,7 +534,7 @@ CloudServer._readDir = function (pError, pFiles)
|
|||
DirPath += '/';
|
||||
}
|
||||
|
||||
pFiles=pFiles.sort();
|
||||
pFiles = pFiles.sort();
|
||||
|
||||
var lCount = 0;
|
||||
var lStats = {};
|
||||
|
|
@ -542,16 +542,16 @@ CloudServer._readDir = function (pError, pFiles)
|
|||
* and putting it to lStats object
|
||||
*/
|
||||
var getFilesStat_f = function(pName){
|
||||
return function(pError, pStat){
|
||||
var fReturnFalse = function returnFalse(){
|
||||
return function(pError, pStat){
|
||||
var fReturnFalse = function(){
|
||||
return false;
|
||||
};
|
||||
|
||||
if(pError)
|
||||
lStats[pName] = {
|
||||
'mode':0,
|
||||
'size':0,
|
||||
'isDirectory':fReturnFalse
|
||||
'mode':0,
|
||||
'size':0,
|
||||
'isDirectory':fReturnFalse
|
||||
};
|
||||
|
||||
else
|
||||
|
|
@ -563,11 +563,13 @@ CloudServer._readDir = function (pError, pFiles)
|
|||
};
|
||||
};
|
||||
|
||||
for(var i=0;i<pFiles.length;i++){
|
||||
/* Получаем информацию о файле*/
|
||||
Fs.stat(DirPath + pFiles[i],
|
||||
getFilesStat_f(pFiles[i]));
|
||||
}
|
||||
if(pFiles.length)
|
||||
for(var i = 0; i < pFiles.length; i++){
|
||||
/* Получаем информацию о файле*/
|
||||
Fs.stat(DirPath + pFiles[i],
|
||||
getFilesStat_f(pFiles[i]));
|
||||
}
|
||||
else CloudServer._fillJSON(null, pFiles);
|
||||
};
|
||||
|
||||
/*
|
||||
|
|
@ -580,41 +582,34 @@ CloudServer._readDir = function (pError, pFiles)
|
|||
*/
|
||||
CloudServer._fillJSON = function(pStats, pFiles){
|
||||
/* данные о файлах в формате JSON*/
|
||||
var lJSON=[];
|
||||
var lJSONFile={};
|
||||
var lJSON = [];
|
||||
var lJSONFile = {};
|
||||
|
||||
lJSON[0]={path:DirPath,size:'dir'};
|
||||
lJSON[0] = {
|
||||
path:DirPath,
|
||||
size:'dir'
|
||||
};
|
||||
|
||||
var fReturnFalse=function returnFalse(){return false;};
|
||||
for(var i=0;i<pFiles.length;i++)
|
||||
for(var i = 0; i < pFiles.length; i++)
|
||||
{
|
||||
/*
|
||||
*Переводим права доступа в 8-ричную систему
|
||||
*/
|
||||
var lName = pFiles[i];
|
||||
|
||||
var lMode=(pStats[lName].mode-0).toString(8);
|
||||
|
||||
/* Если папка - выводим пиктограмму папки */
|
||||
if(pStats[lName].isDirectory())
|
||||
{
|
||||
lJSONFile={'name':pFiles[i],
|
||||
'size' : 'dir',
|
||||
'uid' : pStats[lName].uid,
|
||||
'mode' : lMode};
|
||||
|
||||
lJSON[i+1]=lJSONFile;
|
||||
}
|
||||
/* В противоположном случае - файла */
|
||||
else
|
||||
{
|
||||
lJSONFile={'name':pFiles[i],
|
||||
'uid' : pStats[lName].uid,
|
||||
'size' : pStats[lName].size,
|
||||
'mode' : lMode};
|
||||
|
||||
lJSON[i+1]=lJSONFile;
|
||||
}
|
||||
var lMode = (pStats[lName].mode-0).toString(8);
|
||||
var lStats = pStats[lName];
|
||||
var lIsDir = lStats.isDirectory();
|
||||
|
||||
/* Если папка - выводим пиктограмму папки *
|
||||
* В противоположном случае - файла */
|
||||
lJSONFile = {'name':pFiles[i],
|
||||
'size' : (lIsDir?'dir':lStats.size),
|
||||
'uid' : lStats.uid,
|
||||
'mode' : lMode};
|
||||
|
||||
lJSON[i+1] = lJSONFile;
|
||||
}
|
||||
|
||||
/* заголовок ответа сервера */
|
||||
|
|
@ -626,24 +621,24 @@ CloudServer._fillJSON = function(pStats, pFiles){
|
|||
* и прописываем соответствующие заголовки
|
||||
*/
|
||||
if(CloudServer.NoJS){
|
||||
var lPanel=CloudFunc.buildFromJSON(lJSON);
|
||||
lList='<ul id=left class=panel>';
|
||||
lList+=lPanel;
|
||||
lList+='</ul>';
|
||||
var lPanel = CloudFunc.buildFromJSON(lJSON);
|
||||
lList = '<ul id=left class=panel>';
|
||||
lList += lPanel;
|
||||
lList += '</ul>';
|
||||
|
||||
lList+='<ul id=right class="panel hidden">';
|
||||
lList+=lPanel;
|
||||
lList+='</ul>';
|
||||
lList += '<ul id=right class="panel hidden">';
|
||||
lList += lPanel;
|
||||
lList += '</ul>';
|
||||
|
||||
var lIndex;
|
||||
/* пробуем достать данные из кэша
|
||||
* с жатием или без, взависимости
|
||||
* от настроек
|
||||
*/
|
||||
var lFileData=CloudServer.Cache.get(CloudServer.INDEX);
|
||||
var lFileData = CloudServer.Cache.get(CloudServer.INDEX);
|
||||
/* если их нет там - вычитываем из файла*/
|
||||
if(!lFileData) {
|
||||
lIndex=Fs.readFile(CloudServer.INDEX,
|
||||
lIndex = Fs.readFile(CloudServer.INDEX,
|
||||
CloudServer.indexReaded(lList));
|
||||
}else {
|
||||
var lReaded_f = CloudServer.indexReaded(lList);
|
||||
|
|
@ -680,7 +675,7 @@ CloudServer.indexReaded = function(pList){
|
|||
* меняем в index.html обычный client.js на
|
||||
* минифицированый
|
||||
*/
|
||||
pIndex=pIndex.toString();
|
||||
pIndex = pIndex.toString();
|
||||
|
||||
/* if scripts shoud be minified and
|
||||
* minification proceed sucessfully
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue