diff options
Diffstat (limited to 'core/js')
-rw-r--r-- | core/js/config.js | 2 | ||||
-rw-r--r-- | core/js/js.js | 104 | ||||
-rw-r--r-- | core/js/listview.js | 10 | ||||
-rw-r--r-- | core/js/oc-dialogs.js | 2 | ||||
-rw-r--r-- | core/js/oc-vcategories.js | 4 | ||||
-rw-r--r-- | core/js/setup.js | 4 | ||||
-rw-r--r-- | core/js/share.js | 160 |
7 files changed, 198 insertions, 88 deletions
diff --git a/core/js/config.js b/core/js/config.js index 11168f1c483..f7a29276f7d 100644 --- a/core/js/config.js +++ b/core/js/config.js @@ -51,5 +51,5 @@ OC.AppConfig={ deleteApp:function(app){ OC.AppConfig.postCall('deleteApp',{app:app}); }, -} +}; //TODO OC.Preferences diff --git a/core/js/js.js b/core/js/js.js index 0c842f05593..e3c3716e055 100644 --- a/core/js/js.js +++ b/core/js/js.js @@ -4,6 +4,8 @@ * @param text the string to translate * @return string */ +var OC; + function t(app,text){ if( !( app in t.cache )){ $.ajax(OC.filePath('core','ajax','translations.php'),{ @@ -40,6 +42,11 @@ function fileDownloadPath(dir, file) { } OC={ + PERMISSION_CREATE:4, + PERMISSION_READ:1, + PERMISSION_UPDATE:2, + PERMISSION_DELETE:8, + PERMISSION_SHARE:16, webroot:oc_webroot, appswebroots:oc_appswebroots, currentUser:(typeof oc_current_user!=='undefined')?oc_current_user:false, @@ -120,18 +127,19 @@ OC={ */ addScript:function(app,script,ready){ var path=OC.filePath(app,'js',script+'.js'); - if(OC.addScript.loaded.indexOf(path)==-1){ - OC.addScript.loaded.push(path); + if(!OC.addScript.loaded[path]){ if(ready){ - $.getScript(path,ready); + var deferred=$.getScript(path,ready); }else{ - $.getScript(path); + var deferred=$.getScript(path); } + OC.addScript.loaded[path]=deferred; }else{ if(ready){ ready(); } } + return OC.addScript.loaded[path]; }, /** * load a css file and load it @@ -146,6 +154,12 @@ OC={ $('head').append(style); } }, + basename: function(path) { + return path.replace(/\\/g,'/').replace( /.*\//, '' ); + }, + dirname: function(path) { + return path.replace(/\\/g,'/').replace(/\/[^\/]*$/, '');; + }, /** * do a search query and display the results * @param query the search query @@ -200,7 +214,7 @@ OC={ popup.prepend('<span class="arrow '+arrowclass+'"></span><h2>'+t('core', 'Settings')+'</h2><a class="close svg"></a>').show(); popup.find('.close').bind('click', function() { popup.remove(); - }) + }); if(typeof props.loadJS !== 'undefined') { var scriptname; if(props.loadJS === true) { @@ -230,6 +244,49 @@ OC.search.lastResults={}; OC.addStyle.loaded=[]; OC.addScript.loaded=[]; +OC.Breadcrumb={ + container:null, + crumbs:[], + push:function(name, link){ + if(!OC.Breadcrumb.container){//default + OC.Breadcrumb.container=$('#controls'); + } + var crumb=$('<div/>'); + crumb.addClass('crumb').addClass('last'); + crumb.attr('style','background-image:url("'+OC.imagePath('core','breadcrumb')+'")'); + + var crumbLink=$('<a/>'); + crumbLink.attr('href',link); + crumbLink.text(name); + crumb.append(crumbLink); + + var existing=OC.Breadcrumb.container.find('div.crumb'); + if(existing.length){ + existing.removeClass('last'); + existing.last().after(crumb); + }else{ + OC.Breadcrumb.container.append(crumb); + } + OC.Breadcrumb.crumbs.push(crumb); + return crumb; + }, + pop:function(){ + if(!OC.Breadcrumb.container){//default + OC.Breadcrumb.container=$('#controls'); + } + OC.Breadcrumb.container.find('div.crumb').last().remove(); + OC.Breadcrumb.container.find('div.crumb').last().addClass('last'); + OC.Breadcrumb.crumbs.pop(); + }, + clear:function(){ + if(!OC.Breadcrumb.container){//default + OC.Breadcrumb.container=$('#controls'); + } + OC.Breadcrumb.container.find('div.crumb').remove(); + OC.Breadcrumb.crumbs=[]; + } +} + if(typeof localStorage !='undefined' && localStorage != null){ //user and instance awere localstorage OC.localStorage={ @@ -586,3 +643,40 @@ function formatDate(date){ t('files','July'), t('files','August'), t('files','September'), t('files','October'), t('files','November'), t('files','December') ]; return monthNames[date.getMonth()]+' '+date.getDate()+', '+date.getFullYear()+', '+((date.getHours()<10)?'0':'')+date.getHours()+':'+((date.getMinutes()<10)?'0':'')+date.getMinutes(); } + +/** + * get a variable by name + * @param string name + */ +OC.get=function(name) { + var namespaces = name.split("."); + var tail = namespaces.pop(); + var context=window; + + for(var i = 0; i < namespaces.length; i++) { + context = context[namespaces[i]]; + if(!context){ + return false; + } + } + return context[tail]; +} + +/** + * set a variable by name + * @param string name + * @param mixed value + */ +OC.set=function(name, value) { + var namespaces = name.split("."); + var tail = namespaces.pop(); + var context=window; + + for(var i = 0; i < namespaces.length; i++) { + if(!context[namespaces[i]]){ + context[namespaces[i]]={}; + } + context = context[namespaces[i]]; + } + context[tail]=value; +} diff --git a/core/js/listview.js b/core/js/listview.js index e3e5ebdab8f..3a713a6222c 100644 --- a/core/js/listview.js +++ b/core/js/listview.js @@ -11,15 +11,15 @@ ListView.generateTable=function(collumns){ html+='<thead>'; html+='</head>'; html+='<tbody>'; - html+'<tr class="template">' + html+'<tr class="template">'; $.each(collumns,function(index,collumn){ html+='<th class="'+collumn.toLower()+'"</th>'; }); - html+'</tr>' + html+'</tr>'; html+='</tbody>'; html='</table>'; return $(html); -} +}; ListView.prototype={ rows:{}, @@ -49,7 +49,7 @@ ListView.prototype={ var element=$(html); element.append($('<img src="'+element.icon+'"/>')); element.click(element.callback); - tr.children('td.'+collumn).append(element) + tr.children('td.'+collumn).append(element); }); }); if(this.deleteCallback){ @@ -68,4 +68,4 @@ ListView.prototype={ empty:function(){ this.element.children('tr:not(.template)').remove(); } -}
\ No newline at end of file +}; diff --git a/core/js/oc-dialogs.js b/core/js/oc-dialogs.js index 0fa41696a16..4dd3c89c14d 100644 --- a/core/js/oc-dialogs.js +++ b/core/js/oc-dialogs.js @@ -22,7 +22,7 @@ /** * this class to ease the usage of jquery dialogs */ -OCdialogs = { +var OCdialogs = { /** * displays alert dialog * @param text content of dialog diff --git a/core/js/oc-vcategories.js b/core/js/oc-vcategories.js index dfed8223b1b..c99dd51f53a 100644 --- a/core/js/oc-vcategories.js +++ b/core/js/oc-vcategories.js @@ -1,4 +1,4 @@ -OCCategories={ +var OCCategories={ edit:function(){ if(OCCategories.app == undefined) { OC.dialogs.alert('OCCategories.app is not set!'); @@ -95,7 +95,7 @@ OCCategories={ } }).error(function(xhr){ if (xhr.status == 404) { - OC.dialogs.alert('The required file ' + OC.filePath(Categories.app, 'ajax', 'categories/rescan.php') + ' is not installed!', 'Error'); + OC.dialogs.alert('The required file ' + OC.filePath(OCCategories.app, 'ajax', 'categories/rescan.php') + ' is not installed!', 'Error'); } }); }, diff --git a/core/js/setup.js b/core/js/setup.js index 23c705a0686..39fcf4a2715 100644 --- a/core/js/setup.js +++ b/core/js/setup.js @@ -1,11 +1,11 @@ -var dbtypes +var dbtypes; $(document).ready(function() { dbtypes={ sqlite:!!$('#hasSQLite').val(), mysql:!!$('#hasMySQL').val(), postgresql:!!$('#hasPostgreSQL').val(), oracle:!!$('#hasOracle').val(), - } + }; $('#selectDbType').buttonset(); $('#datadirContent').hide(250); diff --git a/core/js/share.js b/core/js/share.js index 2f3b5c2fa50..8a00587b77a 100644 --- a/core/js/share.js +++ b/core/js/share.js @@ -3,11 +3,6 @@ OC.Share={ SHARE_TYPE_GROUP:1, SHARE_TYPE_LINK:3, SHARE_TYPE_EMAIL:4, - PERMISSION_CREATE:4, - PERMISSION_READ:1, - PERMISSION_UPDATE:2, - PERMISSION_DELETE:8, - PERMISSION_SHARE:16, itemShares:[], statuses:[], droppedDown:false, @@ -76,7 +71,8 @@ OC.Share={ var item = itemSource; } if (typeof OC.Share.statuses[item] === 'undefined') { - checkShares = false; + // NOTE: Check doesn't always work and misses some shares, fix later + checkShares = true; } else { checkShares = true; } @@ -129,18 +125,19 @@ OC.Share={ } html += '<br />'; } - if (possiblePermissions & OC.Share.PERMISSION_SHARE) { - html += '<input id="shareWith" type="text" placeholder="Share with" style="width:90%;"/>'; + if (possiblePermissions & OC.PERMISSION_SHARE) { + html += '<input id="shareWith" type="text" placeholder="Share with" />'; html += '<ul id="shareWithList">'; html += '</ul>'; if (link) { html += '<div id="link">'; html += '<input type="checkbox" name="linkCheckbox" id="linkCheckbox" value="1" /><label for="linkCheckbox">Share with link</label>'; - // TODO Change to lock/unlock icon? - html += '<a href="#" id="showPassword" style="display:none;"><img class="svg" alt="Password protect" src="'+OC.imagePath('core', 'actions/triangle-n')+'"/></a>'; + html += '<a href="#" id="showPassword" style="display:none;"><img class="svg" alt="Password protect" src="'+OC.imagePath('core', 'actions/lock')+'"/></a>'; html += '<br />'; - html += '<input id="linkText" style="display:none; width:90%;" readonly="readonly" />'; - html += '<input id="linkPassText" type="password" placeholder="Password" style="display:none; width:90%;" />'; + html += '<input id="linkText" type="text" readonly="readonly" />'; + html += '<div id="linkPass">'; + html += '<input id="linkPassText" type="password" placeholder="Password" />'; + html += '</div>'; html += '</div>'; } html += '<div id="expiration">'; @@ -155,7 +152,11 @@ OC.Share={ if (share.share_type == OC.Share.SHARE_TYPE_LINK) { OC.Share.showLink(itemSource, share.share_with); } else { - OC.Share.addShareWith(share.share_type, share.share_with, share.permissions, possiblePermissions); + if (share.collection) { + OC.Share.addShareWith(share.share_type, share.share_with, share.permissions, possiblePermissions, share.collection); + } else { + OC.Share.addShareWith(share.share_type, share.share_with, share.permissions, possiblePermissions, false); + } } }); } @@ -168,12 +169,12 @@ OC.Share={ response(result.data); } else { // Suggest sharing via email if valid email address - var pattern = new RegExp(/^[+a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/i); - if (pattern.test(search.term)) { - response([{label: 'Share via email: '+search.term, value: {shareType: OC.Share.SHARE_TYPE_EMAIL, shareWith: search.term}}]); - } else { +// var pattern = new RegExp(/^[+a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/i); +// if (pattern.test(search.term)) { +// response([{label: 'Share via email: '+search.term, value: {shareType: OC.Share.SHARE_TYPE_EMAIL, shareWith: search.term}}]); +// } else { response(['No people found']); - } +// } } }); // } @@ -188,7 +189,7 @@ OC.Share={ var shareWith = selected.item.value.shareWith; $(this).val(shareWith); // Default permissions are Read and Share - var permissions = OC.Share.PERMISSION_READ | OC.Share.PERMISSION_SHARE; + var permissions = OC.PERMISSION_READ | OC.PERMISSION_SHARE; OC.Share.share(itemType, itemSource, shareType, shareWith, permissions, function() { OC.Share.addShareWith(shareType, shareWith, permissions, possiblePermissions); $('#shareWith').val(''); @@ -219,56 +220,70 @@ OC.Share={ } }); }, - addShareWith:function(shareType, shareWith, permissions, possiblePermissions) { + addShareWith:function(shareType, shareWith, permissions, possiblePermissions, collection) { if (!OC.Share.itemShares[shareType]) { OC.Share.itemShares[shareType] = []; } OC.Share.itemShares[shareType].push(shareWith); - var editChecked = createChecked = updateChecked = deleteChecked = shareChecked = ''; - if (permissions & OC.Share.PERMISSION_CREATE) { - createChecked = 'checked="checked"'; - editChecked = 'checked="checked"'; - } - if (permissions & OC.Share.PERMISSION_UPDATE) { - updateChecked = 'checked="checked"'; - editChecked = 'checked="checked"'; - } - if (permissions & OC.Share.PERMISSION_DELETE) { - deleteChecked = 'checked="checked"'; - editChecked = 'checked="checked"'; - } - if (permissions & OC.Share.PERMISSION_SHARE) { - shareChecked = 'checked="checked"'; - } - var html = '<li style="clear: both;" data-share-type="'+shareType+'" data-share-with="'+shareWith+'">'; - html += shareWith; - if (possiblePermissions & OC.Share.PERMISSION_CREATE || possiblePermissions & OC.Share.PERMISSION_UPDATE || possiblePermissions & OC.Share.PERMISSION_DELETE) { - if (editChecked == '') { - html += '<label style="display:none;">'; + if (collection) { + if (collection.item_type == 'file' || collection.item_type == 'folder') { + var item = collection.path; } else { - html += '<label>'; + var item = collection.item_source; } - html += '<input type="checkbox" name="edit" class="permissions" '+editChecked+' />can edit</label>'; - } - html += '<a href="#" class="showCruds" style="display:none;"><img class="svg" alt="Unshare" src="'+OC.imagePath('core', 'actions/triangle-s')+'"/></a>'; - html += '<a href="#" class="unshare" style="display:none;"><img class="svg" alt="Unshare" src="'+OC.imagePath('core', 'actions/delete')+'"/></a>'; - html += '<div class="cruds" style="display:none;">'; - if (possiblePermissions & OC.Share.PERMISSION_CREATE) { - html += '<label><input type="checkbox" name="create" class="permissions" '+createChecked+' data-permissions="'+OC.Share.PERMISSION_CREATE+'" />create</label>'; + var collectionList = $('#shareWithList li').filterAttr('data-collection', item); + if (collectionList.length > 0) { + $(collectionList).append(', '+shareWith); + } else { + var html = '<li style="clear: both;" data-collection="'+item+'">Shared in '+item+' with '+shareWith+'</li>'; + $('#shareWithList').prepend(html); } - if (possiblePermissions & OC.Share.PERMISSION_UPDATE) { - html += '<label><input type="checkbox" name="update" class="permissions" '+updateChecked+' data-permissions="'+OC.Share.PERMISSION_UPDATE+'" />update</label>'; + } else { + var editChecked = createChecked = updateChecked = deleteChecked = shareChecked = ''; + if (permissions & OC.PERMISSION_CREATE) { + createChecked = 'checked="checked"'; + editChecked = 'checked="checked"'; } - if (possiblePermissions & OC.Share.PERMISSION_DELETE) { - html += '<label><input type="checkbox" name="delete" class="permissions" '+deleteChecked+' data-permissions="'+OC.Share.PERMISSION_DELETE+'" />delete</label>'; + if (permissions & OC.PERMISSION_UPDATE) { + updateChecked = 'checked="checked"'; + editChecked = 'checked="checked"'; } - if (possiblePermissions & OC.Share.PERMISSION_SHARE) { - html += '<label><input type="checkbox" name="share" class="permissions" '+shareChecked+' data-permissions="'+OC.Share.PERMISSION_SHARE+'" />share</label>'; + if (permissions & OC.PERMISSION_DELETE) { + deleteChecked = 'checked="checked"'; + editChecked = 'checked="checked"'; } - html += '</div>'; - html += '</li>'; - $(html).appendTo('#shareWithList'); - + if (permissions & OC.PERMISSION_SHARE) { + shareChecked = 'checked="checked"'; + } + var html = '<li style="clear: both;" data-share-type="'+shareType+'" data-share-with="'+shareWith+'">'; + html += shareWith; + if (possiblePermissions & OC.PERMISSION_CREATE || possiblePermissions & OC.PERMISSION_UPDATE || possiblePermissions & OC.PERMISSION_DELETE) { + if (editChecked == '') { + html += '<label style="display:none;">'; + } else { + html += '<label>'; + } + html += '<input type="checkbox" name="edit" class="permissions" '+editChecked+' />can edit</label>'; + } + html += '<a href="#" class="showCruds" style="display:none;"><img class="svg" alt="Unshare" src="'+OC.imagePath('core', 'actions/triangle-s')+'"/></a>'; + html += '<a href="#" class="unshare" style="display:none;"><img class="svg" alt="Unshare" src="'+OC.imagePath('core', 'actions/delete')+'"/></a>'; + html += '<div class="cruds" style="display:none;">'; + if (possiblePermissions & OC.PERMISSION_CREATE) { + html += '<label><input type="checkbox" name="create" class="permissions" '+createChecked+' data-permissions="'+OC.PERMISSION_CREATE+'" />create</label>'; + } + if (possiblePermissions & OC.PERMISSION_UPDATE) { + html += '<label><input type="checkbox" name="update" class="permissions" '+updateChecked+' data-permissions="'+OC.PERMISSION_UPDATE+'" />update</label>'; + } + if (possiblePermissions & OC.PERMISSION_DELETE) { + html += '<label><input type="checkbox" name="delete" class="permissions" '+deleteChecked+' data-permissions="'+OC.PERMISSION_DELETE+'" />delete</label>'; + } + if (possiblePermissions & OC.PERMISSION_SHARE) { + html += '<label><input type="checkbox" name="share" class="permissions" '+shareChecked+' data-permissions="'+OC.PERMISSION_SHARE+'" />share</label>'; + } + html += '</div>'; + html += '</li>'; + $(html).appendTo('#shareWithList'); + } }, showLink:function(itemSource, password) { $('#linkCheckbox').attr('checked', true); @@ -283,9 +298,15 @@ OC.Share={ $('#linkText').val(link); $('#linkText').show('blind'); $('#showPassword').show(); + if (password != null) { + $('#linkPass').show('blind'); + $('#linkPassText').attr('placeholder', 'Password protected'); + } }, hideLink:function() { $('#linkText').hide('blind'); + $('#showPassword').hide(); + $('#linkPass').hide(); }, dirname:function(path) { return path.replace(/\\/g,'/').replace(/\/[^\/]*$/, ''); @@ -381,7 +402,7 @@ $(document).ready(function() { $(checkboxes).filter('input[name="edit"]').attr('checked', true); } } - var permissions = OC.Share.PERMISSION_READ; + var permissions = OC.PERMISSION_READ; $(checkboxes).filter(':not(input[name="edit"])').filter(':checked').each(function(index, checkbox) { permissions |= $(checkbox).data('permissions'); }); @@ -393,7 +414,7 @@ $(document).ready(function() { var itemSource = $('#dropdown').data('item-source'); if (this.checked) { // Create a link - OC.Share.share(itemType, itemSource, OC.Share.SHARE_TYPE_LINK, '', OC.Share.PERMISSION_READ, function() { + OC.Share.share(itemType, itemSource, OC.Share.SHARE_TYPE_LINK, '', OC.PERMISSION_READ, function() { OC.Share.showLink(itemSource); // TODO Change icon }); @@ -411,30 +432,28 @@ $(document).ready(function() { }); $('#showPassword').live('click', function() { - $('#linkText').after('<br />'); - $('#linkPassText').toggle('blind'); + $('#linkPass').toggle('blind'); }); $('#linkPassText').live('keyup', function(event) { if (event.keyCode == 13) { var itemType = $('#dropdown').data('item-type'); var itemSource = $('#dropdown').data('item-source'); - // TODO Do this internally - OC.Share.unshare(itemType, itemSource, OC.Share.SHARE_TYPE_LINK, ''); - OC.Share.share(itemType, itemSource, OC.Share.SHARE_TYPE_LINK, $(this).val(), OC.Share.PERMISSION_READ); + OC.Share.share(itemType, itemSource, OC.Share.SHARE_TYPE_LINK, $(this).val(), OC.PERMISSION_READ, function() { + $('#linkPassText').val(''); + $('#linkPassText').attr('placeholder', 'Password protected'); + }); } }); - $('#expirationCheckbox').live('change', function() { + $('#expirationCheckbox').live('click', function() { if (this.checked) { - console.log('checked'); $('#expirationDate').before('<br />'); $('#expirationDate').show(); $('#expirationDate').datepicker({ dateFormat : 'dd-mm-yy' }); } else { - console.log('unchecled'); $('#expirationDate').hide(); } }); @@ -449,7 +468,4 @@ $(document).ready(function() { }); }); - $('#emailPrivateLink').live('submit', function() { - OC.Share.emailPrivateLink(); - }); }); |