diff --git a/html/auth.html b/html/auth.html index 5390efe7..aa23df2b 100644 --- a/html/auth.html +++ b/html/auth.html @@ -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(); } diff --git a/lib/client/dom.js b/lib/client/dom.js index c27351c6..ce665c6a 100644 --- a/lib/client/dom.js +++ b/lib/client/dom.js @@ -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!'); }; /** diff --git a/lib/client/menu.js b/lib/client/menu.js index b1ee40ba..62fdd3c4 100644 --- a/lib/client/menu.js +++ b/lib/client/menu.js @@ -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'}); + }) } }; } diff --git a/lib/client/storage/_github.js b/lib/client/storage/_github.js index 9bd5292c..47e7e24a 100644 --- a/lib/client/storage/_github.js +++ b/lib/client/storage/_github.js @@ -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; })();