changed the way file table building. From now templating used.

This commit is contained in:
coderaiser 2013-03-15 12:08:14 -04:00
parent 40312754b6
commit 9268c4c281
3 changed files with 40 additions and 29 deletions

View file

@ -37,7 +37,9 @@ would be on top.
* Fixed bug with saving json to localStorage, it's always
writed root directory.
* Moved out set current file from cloudfunc to client.js
* Moved out set current file from cloudfunc to client.js.
* Changed the way file table building. From now templating used.
2012.03.01, Version 0.1.9

View file

@ -584,8 +584,11 @@ var Util, DOM, CloudFunc, $, KeyBinding, CloudCommander;
if (lJSON){
/* переводим из текста в JSON */
lJSON = Util.parseJSON(lJSON);
CloudCmd._createFileTable(lPanel, lJSON);
CloudCmd._changeLinks(lPanel);
CloudCmd.getFileTemplate(function(pTemplate){
CloudCmd._createFileTable(lPanel, lJSON, pTemplate);
CloudCmd._changeLinks(lPanel);
});
}
else
lRet = true;
@ -600,8 +603,10 @@ var Util, DOM, CloudFunc, $, KeyBinding, CloudCommander;
},
success : function(pData){
CloudCmd._createFileTable(lPanel, pData);
CloudCmd._changeLinks(lPanel);
CloudCmd.getFileTemplate(function(pTemplate){
CloudCmd._createFileTable(lPanel, pData, pTemplate);
CloudCmd._changeLinks(lPanel);
});
/* переводим таблицу файлов в строку, для *
* сохранения в localStorage */
@ -621,26 +626,22 @@ var Util, DOM, CloudFunc, $, KeyBinding, CloudCommander;
* @param pEleme - родительский элемент
* @param pJSON - данные о файлах
*/
CloudCmd._createFileTable = function(pElem, pJSON){
CloudCmd._createFileTable = function(pElem, pJSON, pTemplate){
var lElem = DOM.getById(pElem),
/* getting current element if was refresh */
lPath = DOM.getByClass('path', lElem),
lCurrent = DOM.getCurrentFile(),
lName = DOM.getCurrentName(lName),
lWasRefresh_b = lPath[0].textContent === pJSON[0].path;
/* говорим построителю,
* что бы он в нужный момент
* выделил строку с первым файлом
*/
/* очищаем панель */
var i = lElem.childNodes.length;
while(i--)
lElem.removeChild(lElem.lastChild);
/* заполняем панель новыми элементами */
lElem.innerHTML = CloudFunc.buildFromJSON(pJSON);
/* заполняем панель новыми элементами */
lElem.innerHTML = CloudFunc.buildFromJSON(pJSON, pTemplate);
var lFound;
/* searching current file */
@ -662,7 +663,6 @@ var Util, DOM, CloudFunc, $, KeyBinding, CloudCommander;
lCurrent = lElem.childNodes[2];
DOM.setCurrentFile(lCurrent);
};
/**

View file

@ -295,7 +295,7 @@ var CloudFunc, exports, Util;
* [{path:'путь',size:'dir'},
* {name:'имя',size:'размер',mode:'права доступа'}]
*/
CloudFunc.buildFromJSON = function(pJSON)
CloudFunc.buildFromJSON = function(pJSON, pTemplate)
{
var files = pJSON,
/* сохраняем путь каталога в котором мы сейчас находимся*/
@ -348,16 +348,27 @@ var CloudFunc, exports, Util;
lLink = FS + lDotDot;
/* Сохраняем путь к каталогу верхнего уровня*/
lFileTable += '<li draggable class>' +
'<span class="mini-icon directory"></span>' +
'<span class=name>' +
'<a href="' + lLink +
'" draggable=true>' + "..</a>" +
'</span>' +
'<span class=size>&lt;dir&gt;</span>' +
'<span class=owner>.</span>' +
'<span class=mode></span>' +
'</li>';
if(pTemplate)
lFileTable += Util.render(pTemplate,{
type : 'directory',
link : lLink,
name : '..',
size : '&lt;dir&gt;',
owner : '.',
mode : ''
});
else
lFileTable += '<li draggable class>' +
'<span class="mini-icon directory"></span>' +
'<span class=name>' +
'<a href="' + lLink +
'" draggable=true>' + "..</a>" +
'</span>' +
'<span class=size>&lt;dir&gt;</span>' +
'<span class=owner>.</span>' +
'<span class=mode></span>' +
'</li>';
}
for(var i = 1, n = files.length; i < n; i++){
@ -397,8 +408,6 @@ var CloudFunc, exports, Util;
(!lFile.uid ? 'root' : lFile.uid) +
'</span>' +
'<span draggable class=mode>' +
/* конвертируем названия разрешений
* из числового формата в буквенный */
CloudFunc.getSymbolicPermissions(lFile.mode)+
'</span>';
lFileTable += '</li>';