added ability create folders

This commit is contained in:
coderaiser 2013-03-03 06:33:33 -05:00
parent 80e559c9e4
commit 07d93be012
8 changed files with 130 additions and 130 deletions

View file

@ -1,3 +1,10 @@
2012.03.*, Version 0.2.0
* Added alerting about errors.
* Removed addListener for DOM.
2012.03.01, Version 0.1.9
* Changed the way of getting github application id

View file

@ -2,12 +2,12 @@
"api_url" : "/api/v1",
"appcache" : false,
"minification" : {
"js" : true,
"js" : false,
"css" : true,
"html" : true,
"img" : true
},
"cache" : true,
"cache" : false,
"logs" : false,
"show_keys_panel" : true,
"server" : true,

View file

@ -286,7 +286,7 @@ function initKeysPanel(pCallBack){
CloudCmd.Editor, /* f4 */
null, /* f5 */
null, /* f6 */
null, /* f7 */
DOM.promptNewFolder, /* f7 */
DOM.promptDeleteCurrent,/* f8 */
];
@ -470,49 +470,52 @@ CloudCmd._changeLinks = function(pPanelID){
DOM.setCurrentFile(pElement);
},
lUrl = CloudCmd.HOST;
lUrl = CloudCmd.HOST,
lLoadDirOnce = CloudCmd._loadDir();
var lLoadDirOnce = CloudCmd._loadDir(),
/* номер ссылки иконки обновления страницы */
lREFRESHICON = 0;
for(var i = 0, n = a.length; i < n ; i++){
/* убираем адрес хоста*/
var ai = a[i],
link = ai.href.replace(lUrl, ''),
lNEADREFRESH = i === lREFRESHICON,
lLoadDir = CloudCmd._loadDir(link, lNEADREFRESH);
(function(a){
var a0 = a[0],
lParent = a0.parentElement,
lNEEDREFRESH = true,
lLink = Util.removeStr(a0.href, lUrl);
CloudCmd.refresh = CloudCmd._loadDir(lLink, lNEEDREFRESH);
/* ставим загрузку гифа на клик*/
if(lNEADREFRESH)
DOM.addClickListener( lLoadDir, ai.parentElement );
DOM.addClickListener( CloudCmd.refresh, lParent );
})(a);
/* start from 1 cous 0 is a path and it's setted up */
for(var i = 1, n = a.length; i < n ; i++){
/* убираем адрес хоста*/
var ai = a[i],
lLink = Util.removeStr(ai.href, lUrl),
lLoadDir = CloudCmd._loadDir(lLink),
/* устанавливаем обработчики на строку
* на двойное нажатие на левую кнопку мышки */
lLi = ai.parentElement.parentElement;
/* if we in path - set click event */
if (lLi.className === 'path')
DOM.addClickListener( lLoadDir, ai );
else {
DOM.addClickListener( DOM.preventDefault, lLi);
DOM.addListener('mousedown', lSetCurrentFile_f, lLi);
DOM.addListener('dragstart', lOnDragStart_f, ai);
/* if right button clicked menu will
* loads and shows
*/
DOM.addListener('contextmenu', lOnContextMenu_f, lLi);
/* устанавливаем обработчики на строку
* на двойное нажатие на левую кнопку мышки */
else{
var lLi = ai.parentElement.parentElement;
/* if we in path changing onclick events */
if (lLi.className === 'path')
DOM.addClickListener( lLoadDir, ai );
else {
DOM.addClickListener( DOM.preventDefault, lLi);
DOM.addListener('mousedown', lSetCurrentFile_f, lLi);
DOM.addListener('dragstart', lOnDragStart_f, ai);
/* if right button clicked menu will
* loads and shows
*/
DOM.addListener('contextmenu', lOnContextMenu_f, lLi);
/* если ссылка на папку, а не файл */
if(ai.target !== '_blank'){
DOM.addListener('dblclick', lLoadDirOnce, lLi);
DOM.addListener('touchend', lLoadDirOnce, lLi);
}
lLi.id = (ai.title ? ai.title : ai.textContent) +
'(' + pPanelID + ')';
/* если ссылка на папку, а не файл */
if(ai.target !== '_blank'){
DOM.addListener('dblclick', lLoadDirOnce, lLi);
DOM.addListener('touchend', lLoadDirOnce, lLi);
}
}
lLi.id = (ai.title ? ai.title : ai.textContent) +
'(' + pPanelID + ')';
}
}
};

View file

@ -10,7 +10,6 @@ var CloudCommander, Util,
/* private members */
var /* название css-класа текущего файла*/
CURRENT_FILE = 'current-file',
Listeners = [],
XMLHTTP,
Title,
@ -115,18 +114,6 @@ var CloudCommander, Util,
DOM.RESTfull = new RESTfull();
function removeListenerFromList(pElement){
var lRet;
for(var i = 0, n = Listeners.length; i < n; i++){
if(Listeners[i].element === pElement){
Listeners[i] = null;
break;
}
}
return lRet;
}
/**
* private function thet unset currentfile
@ -184,18 +171,12 @@ var CloudCommander, Util,
var lRet = this,
lElement = (pElement || window);
if( lElement.addEventListener){
if( lElement.addEventListener)
lElement.addEventListener(
pType,
pListener,
pUseCapture
);
Listeners.push({
element : lElement,
callback: pListener
});
}
return lRet;
};
@ -275,23 +256,6 @@ var CloudCommander, Util,
return DOM.addListener('error', pListener, pElement, pUseCapture);
};
/**
* getListener for element
*
* @param pElement
*/
DOM.getListener = function(pElement){
var lRet;
for(var i = 0, n = Listeners.length; i < n; i++){
if(Listeners[i].element === pElement){
lRet = Listeners[i].callback;
break;
}
}
return lRet;
};
/**
* load file countent thrue ajax
@ -438,6 +402,24 @@ var CloudCommander, Util,
DOM.Cache = new DOM.Cache();
/**
* create new folder
*
* @pCurrentFile
*/
DOM.promptNewFolder = function(){
var lName = DOM.getCurrentName(),
lDir = DOM.getCurrentDirPath();
if(lName === '..')
lName = '';
lName = prompt("New directory", lName);
if(lName)
DOM.RESTfull.save(lDir + lName + '?dir', null, CloudCommander.refresh);
};
/**
* delete currentfile, prompt before it
*
@ -912,6 +894,7 @@ var CloudCommander, Util,
DOM.hide(lLoadingImage);
Util.log(lText);
alert(lText);
}
};

View file

@ -1,12 +1,12 @@
var CloudCommander, Util, DOM, CloudFunc, CodeMirror;
var CloudCommander, Util, DOM, CodeMirror;
/* object contains editors CodeMirror */
(function(CloudCmd, Util, DOM, CloudFunc){
(function(CloudCmd, Util, DOM){
'use strict';
var KeyBinding = CloudCommander.KeyBinding,
CodeMirrorEditor = {},
CodeMirrorEditor = {},
FM,
CodeMirrorElement,
CodeMirrorElement,
CodeMirrorLoaded = false,
/* indicator says CodeMirror still loads */
Loading = false,
@ -52,9 +52,10 @@ var CloudCommander, Util, DOM, CloudFunc, CodeMirror;
*/
function initCodeMirror(pParams){
if(!FM)
FM = DOM.getFM();
FM = DOM.getFM();
var lCSS = setCSS();
var lCSS = setCSS(),
lPath = DOM.getCurrentPath();
CodeMirrorElement = DOM.anyload({
name : 'div',
@ -78,7 +79,7 @@ var CloudCommander, Util, DOM, CloudFunc, CodeMirror;
DOM.remove(lCSS, document.head);
},
'Ctrl-S': function(){
DOM.RESTfull.save(DOM.getCurrentPath(), lEditor.getValue());
DOM.RESTfull.save(lPath, lEditor.getValue());
}
},
readOnly : ReadOnly
@ -211,4 +212,4 @@ var CloudCommander, Util, DOM, CloudFunc, CodeMirror;
CloudCmd.Editor.CodeMirror = CodeMirrorEditor;
})(CloudCommander, Util, DOM, CloudFunc);
})(CloudCommander, Util, DOM);

View file

@ -34,6 +34,7 @@ var CloudCommander, Util, DOM;
F2 : 113,
F3 : 114,
F4 : 115,
F7 : 118,
F10 : 121,
TRA : 192 /* Typewritten Reverse Apostrophe (`) */
@ -119,34 +120,39 @@ var CloudCommander, Util, DOM;
else
DOM.promptDeleteCurrent(lCurrentFile);
}
else if(lKeyCode === KEY.F1){
DOM.preventDefault(pEvent);
}
else if(lKeyCode === KEY.F2)
DOM.renameCurrentFile(lCurrentFile);
/* if f3 or shift+f3 or alt+f3 pressed */
else if(lKeyCode === KEY.F3){
var lEditor = CloudCmd[pEvent.shiftKey ?
'Viewer' : 'Editor'];
else if(lKeyCode >= KEY.F1 && lKeyCode <= KEY.F10)
switch(lKeyCode){
case KEY.F1:
DOM.preventDefault(pEvent);
break;
Util.exec(lEditor, true);
case KEY.F2:
DOM.renameCurrentFile(lCurrentFile);
break;
case KEY.F3:
var lEditor = CloudCmd[pEvent.shiftKey ?
'Viewer' : 'Editor'];
Util.exec(lEditor, true);
DOM.preventDefault(pEvent);
break;
DOM.preventDefault(pEvent);
}
/* if f4 pressed */
else if(lKeyCode === KEY.F4) {
DOM.Images.showLoad();
Util.exec(CloudCmd.Editor);
case KEY.F4:
DOM.Images.showLoad();
Util.exec(CloudCmd.Editor);
DOM.preventDefault(pEvent);
break;
DOM.preventDefault(pEvent);
}
else if(lKeyCode === KEY.F10 && pEvent.shiftKey){
Util.exec(CloudCmd.Menu);
DOM.preventDefault(pEvent);
}
case KEY.F7:
DOM.promptNewFolder();
break;
case KEY.F10:
if(pEvent.shiftKey){
Util.exec(CloudCmd.Menu);
DOM.preventDefault(pEvent);
}
}
else if (lKeyCode === KEY.TRA){
DOM.Images.showLoad({top: true});
@ -239,21 +245,9 @@ var CloudCommander, Util, DOM;
console.log('<ctrl>+r pressed\n' +
'reloading page...\n' +
'press <alt>+q to remove all key-handlers');
/* Программно нажимаем на кнопку перезагрузки
* содержимого каталога
*/
var lRefreshIcon = DOM.getRefreshButton();
if(lRefreshIcon){
/* если нашли элемент нажимаем него
* а если не можем - нажимаем на
* ссылку, на которую повешен eventHandler
* onclick
*/
Util.exec( DOM.getListener(lRefreshIcon) );
CloudCmd.refresh();
DOM.preventDefault(pEvent);
}
}
/* если нажали <ctrl>+d чистим кэш */

View file

@ -91,11 +91,15 @@ var CloudCommander, Util, DOM, CloudFunc, $;
name : pName
};
if(Util.isFunction(pCallBack) )
lRet.callback = pCallBack;
if( Util.isFunction(pCallBack) )
lRet.callback = pCallBack;
else if (Util.isObject(pCallBack))
lRet.items = pCallBack;
else if ( Util.isObject(pCallBack) ){
if(pCallBack.name)
lRet.items = pCallBack;
else
lRet.items = getAllItems(pCallBack);
}
return lRet;
}
@ -164,7 +168,7 @@ var CloudCommander, Util, DOM, CloudFunc, $;
'Rename' : function(){
setTimeout( Util.retExec(DOM.renameCurrentFile), 100);
},
'Delete' : Util.retExec(DOM.promptDeleteCurrent),
'Delete' : Util.retExec(DOM.promptDeleteCurrent)
};
if(UploadToItemNames.length)
@ -172,6 +176,14 @@ var CloudCommander, Util, DOM, CloudFunc, $;
lMenuItems.Download = Util.retExec(downloadFromMenu);
lMenuItems.New = {
'File' : function(){
Util.log('New->File');
},
'Dir' : DOM.promptNewFolder
};
lRet = {
// define which elements trigger this menu
selector: 'li',

View file

@ -1,6 +1,6 @@
{
"name": "cloudcmd",
"version": "0.1.9",
"version": "0.2.0",
"author": "coderaiser <mnemonic.enemy@gmail.com> (https://github.com/coderaiser)",
"description": "User friendly cloud file manager.",
"homepage": "https://github.com/coderaiser/cloudcmd",