refactored menu module

This commit is contained in:
coderaiser 2012-12-22 10:49:00 -05:00
parent 560a6de5f5
commit 4e12e8b4a4
4 changed files with 98 additions and 92 deletions

View file

@ -7,8 +7,8 @@
"use strict";
if(window.opener){
var lGitHub = window.opener.CloudCommander.Github;
lGitHub.init(lGitHub.getUserData, window.location.search);
var lGitHub = window.opener.CloudCommander.GitHub;
lGitHub.autorize(lGitHub.callback, window.location.search);
window.close();
}

View file

@ -1084,7 +1084,9 @@ var CloudCommander, Util, DOM, CloudFunc;
',personalbar=0,toolbar=0' +
',scrollbars=1,resizable=1';
window.open(pUrl, 'Cloud Commander Auth', lOptions);
var lWind = window.open(pUrl, 'Cloud Commander Auth', lOptions);
if(!lWind)
Util.log('Pupup blocked!');
};
/**

View file

@ -57,26 +57,53 @@ var CloudCommander, Util, DOM, $;
*/
function getUploadToItem(pObjectName){
var lObj = {};
lObj.name = pObjectName;
lObj.callback = function(key, opt){
getCurrentData(function(pParams){
var lObject = cloudcmd[pObjectName];
if('init' in lObject)
lObject.uploadFile(pParams);
else
Util.exec(lObject, function(){
cloudcmd[pObjectName].uploadFile(pParams);
});
});
Util.log('Uploading to ' + pObjectName+ '...');
};
if( Util.isArray(pObjectName) ){
var n = pObjectName.length;
for(var i = 0; i < n; i++){
var lStr = pObjectName[i];
lObj[lStr] = getUploadToItem( lStr );
}
}
else if( Util.isString(pObjectName) ){
lObj.name = pObjectName;
lObj.callback = function(key, opt){
getCurrentData(function(pParams){
var lObject = cloudcmd[pObjectName];
if('init' in lObject)
lObject.uploadFile(pParams);
else
Util.exec(lObject, function(){
cloudcmd[pObjectName].uploadFile(pParams);
});
});
Util.log('Uploading to ' + pObjectName+ '...');
};
}
return lObj;
}
/**
* get menu item
*/
function getItem(pName, pCallBack){
var lRet = {
name : pName
};
if(Util.isFunction(pCallBack) )
lRet.callback = pCallBack;
else if (Util.isObject(pCallBack))
lRet.items = pCallBack;
return lRet;
}
/**
* function return configureation for menu
*/
@ -94,68 +121,40 @@ var CloudCommander, Util, DOM, $;
// define the elements of the menu
items: {
view: {
name : 'View',
callback : function(key, opt){
showEditor(true);
}
},
edit: {
name : 'Edit',
callback : function(key, opt){
showEditor();
}
},
delete: {
name: 'Delete',
callback: function(key, opt){
DOM.promptRemoveCurrent();
}
},
upload: {
name: 'Upload to',
items: {
'GitHub' : getUploadToItem('GitHub'),
'GDrive' : getUploadToItem('GDrive'),
'DropBox' : getUploadToItem('DropBox')
}
},
download: {
name: 'Download',
callback: function(key, opt){
DOM.Images.showLoad();
'View' : getItem( 'View', Util.retExec(showEditor, true) ),
'Edit' : getItem( 'Edit', Util.retExec(showEditor) ),
'Delete' : getItem( 'Delete', Util.retExec(DOM.promptRemoveCurrent) ),
'Upload to' : getItem( 'Upload to',
getUploadToItem( ['GitHub', 'GDrive', 'DropBox'] ) ),
'Download' : getItem( 'Download', function(key, opt){
DOM.Images.showLoad();
var lPath = DOM.getCurrentPath(),
lId = DOM.getIdBySrc(lPath);
Util.log('downloading file ' + lPath +'...');
lPath = lPath + '?download';
if(!DOM.getById(lId)){
var lDownload = DOM.anyload({
name : 'iframe',
async : false,
className : 'hidden',
src : lPath,
func : Util.retFunc(DOM.Images.hideLoad)
});
var lPath = DOM.getCurrentPath(),
lId = DOM.getIdBySrc(lPath);
Util.log('downloading file ' + lPath +'...');
lPath = lPath + '?download';
if(!DOM.getById(lId)){
var lDownload = DOM.anyload({
name : 'iframe',
async : false,
className : 'hidden',
src : lPath,
func : Util.retFunc(DOM.Images.hideLoad)
});
DOM.Images.hideLoad();
setTimeout(function() {
document.body.removeChild(lDownload);
}, 10000);
}
else
DOM.Images.showError({
responseText: 'Error: You trying to' +
'download same file to often'});
DOM.Images.hideLoad();
setTimeout(function() {
document.body.removeChild(lDownload);
}, 10000);
}
}
else
DOM.Images.showError({
responseText: 'Error: You trying to' +
'download same file to often'});
})
}
};
}

View file

@ -13,7 +13,7 @@ var CloudCommander, Util, DOM, $, Github, cb;
GitHub_ID,
GithubLocal,
User,
GithubStore = {};
GitHubStore = {};
/* temporary callback function for work with github */
cb = function (err, data){ console.log(err || data);};
@ -52,10 +52,10 @@ var CloudCommander, Util, DOM, $, Github, cb;
}
GithubStore.init = function(pCallBack, pCode){
GitHubStore.autorize = function(pCallBack, pCode){
var lToken = Cache.get('token');
if(lToken){
GithubStore.Login(lToken);
GitHubStore.Login(lToken);
Util.exec(pCallBack);
}
else{
@ -67,7 +67,7 @@ var CloudCommander, Util, DOM, $, Github, cb;
if(pData && pData.token){
lToken = pData.token;
GithubStore.Login(lToken);
GitHubStore.Login(lToken);
Cache.set('token', lToken);
Util.exec(pCallBack);
}
@ -90,7 +90,7 @@ var CloudCommander, Util, DOM, $, Github, cb;
}
};
GithubStore.getUserData = function(pCallBack){
GitHubStore.getUserData = function(pCallBack){
var lName,
lShowUserInfo = function(pError, pData){
@ -109,7 +109,7 @@ var CloudCommander, Util, DOM, $, Github, cb;
}
/* PUBLIC FUNCTIONS */
GithubStore.basicLogin = function(pUser, pPasswd){
GitHubStore.basicLogin = function(pUser, pPasswd){
GithubLocal = new Github({
username: pUser,
password: pPasswd,
@ -117,7 +117,7 @@ var CloudCommander, Util, DOM, $, Github, cb;
});
};
GithubStore.Login = function(pToken){
GitHubStore.Login = function(pToken){
Github = GithubLocal = new Github({
token : pToken,
auth : 'oauth'
@ -129,7 +129,7 @@ var CloudCommander, Util, DOM, $, Github, cb;
/**
* function creates gist
*/
cloudcmd.GitHub.uploadFile = function(pParams, pCallBack){
GitHubStore.uploadFile = function(pParams, pCallBack){
var lContent = pParams.data,
lName = pParams.name;
@ -165,17 +165,22 @@ var CloudCommander, Util, DOM, $, Github, cb;
return lContent;
};
cloudcmd.GitHub.init = function(pCallBack){
GitHubStore.init = function(pCallBack){
Util.loadOnLoad([
Util.retExec(pCallBack),
GithubStore.getUserData,
GithubStore.init,
GitHubStore.getUserData,
GitHubStore.autorize,
setConfig,
load
]);
cloudcmd.GitHub.init = null;
GitHubStore.callback = function(){
Util.loadOnLoad([
Util.retExec(pCallBack),
GitHubStore.getUserData,
]);
};
};
cloudcmd.Github = GithubStore;
cloudcmd.GitHub = GitHubStore;
})();