summaryrefslogtreecommitdiffstats
path: root/core/js
diff options
context:
space:
mode:
Diffstat (limited to 'core/js')
-rw-r--r--core/js/config.js2
-rw-r--r--core/js/js.js104
-rw-r--r--core/js/listview.js10
-rw-r--r--core/js/oc-dialogs.js2
-rw-r--r--core/js/oc-vcategories.js4
-rw-r--r--core/js/setup.js4
-rw-r--r--core/js/share.js160
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();
- });
});