Merge pull request #5381 from owncloud/files-sharingstateafterupload
Fixed sharing status update for new/uploaded files
This commit is contained in:
commit
01349850b0
|
@ -539,7 +539,7 @@ $(document).ready(function() {
|
||||||
lazyLoadPreview(path, result.data.mime, function(previewpath){
|
lazyLoadPreview(path, result.data.mime, function(previewpath){
|
||||||
tr.find('td.filename').attr('style','background-image:url('+previewpath+')');
|
tr.find('td.filename').attr('style','background-image:url('+previewpath+')');
|
||||||
});
|
});
|
||||||
FileActions.display(tr.find('td.filename'));
|
FileActions.display(tr.find('td.filename'), true);
|
||||||
} else {
|
} else {
|
||||||
OC.dialogs.alert(result.data.message, t('core', 'Error'));
|
OC.dialogs.alert(result.data.message, t('core', 'Error'));
|
||||||
}
|
}
|
||||||
|
|
|
@ -61,7 +61,13 @@ var FileActions = {
|
||||||
var actions = this.get(mime, type, permissions);
|
var actions = this.get(mime, type, permissions);
|
||||||
return actions[name];
|
return actions[name];
|
||||||
},
|
},
|
||||||
display: function (parent) {
|
/**
|
||||||
|
* Display file actions for the given element
|
||||||
|
* @param parent "td" element of the file for which to display actions
|
||||||
|
* @param triggerEvent if true, triggers the fileActionsReady on the file
|
||||||
|
* list afterwards (false by default)
|
||||||
|
*/
|
||||||
|
display: function (parent, triggerEvent) {
|
||||||
FileActions.currentFile = parent;
|
FileActions.currentFile = parent;
|
||||||
var actions = FileActions.get(FileActions.getCurrentMimeType(), FileActions.getCurrentType(), FileActions.getCurrentPermissions());
|
var actions = FileActions.get(FileActions.getCurrentMimeType(), FileActions.getCurrentType(), FileActions.getCurrentPermissions());
|
||||||
var file = FileActions.getCurrentFile();
|
var file = FileActions.getCurrentFile();
|
||||||
|
@ -137,6 +143,10 @@ var FileActions = {
|
||||||
element.on('click', {a: null, elem: parent, actionFunc: actions['Delete']}, actionHandler);
|
element.on('click', {a: null, elem: parent, actionFunc: actions['Delete']}, actionHandler);
|
||||||
parent.parent().children().last().append(element);
|
parent.parent().children().last().append(element);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (triggerEvent){
|
||||||
|
$('#fileList').trigger(jQuery.Event("fileActionsReady"));
|
||||||
|
}
|
||||||
},
|
},
|
||||||
getCurrentFile: function () {
|
getCurrentFile: function () {
|
||||||
return FileActions.currentFile.parent().attr('data-file');
|
return FileActions.currentFile.parent().attr('data-file');
|
||||||
|
|
|
@ -151,7 +151,7 @@ var FileList={
|
||||||
if (hidden) {
|
if (hidden) {
|
||||||
tr.hide();
|
tr.hide();
|
||||||
}
|
}
|
||||||
FileActions.display(tr.find('td.filename'));
|
FileActions.display(tr.find('td.filename'), true);
|
||||||
return tr;
|
return tr;
|
||||||
},
|
},
|
||||||
/**
|
/**
|
||||||
|
@ -817,7 +817,7 @@ $(document).ready(function(){
|
||||||
data.context.attr('data-permissions', file.permissions);
|
data.context.attr('data-permissions', file.permissions);
|
||||||
data.context.data('permissions', file.permissions);
|
data.context.data('permissions', file.permissions);
|
||||||
}
|
}
|
||||||
FileActions.display(data.context.find('td.filename'));
|
FileActions.display(data.context.find('td.filename'), true);
|
||||||
|
|
||||||
var path = getPathForPreview(file.name);
|
var path = getPathForPreview(file.name);
|
||||||
lazyLoadPreview(path, file.mime, function(previewpath){
|
lazyLoadPreview(path, file.mime, function(previewpath){
|
||||||
|
|
|
@ -1,11 +1,19 @@
|
||||||
$(document).ready(function() {
|
$(document).ready(function() {
|
||||||
|
|
||||||
var disableSharing = $('#disableSharing').data('status');
|
var disableSharing = $('#disableSharing').data('status'),
|
||||||
|
sharesLoaded = false;
|
||||||
|
|
||||||
if (typeof OC.Share !== 'undefined' && typeof FileActions !== 'undefined' && !disableSharing) {
|
if (typeof OC.Share !== 'undefined' && typeof FileActions !== 'undefined' && !disableSharing) {
|
||||||
|
|
||||||
$('#fileList').on('fileActionsReady',function(){
|
$('#fileList').on('fileActionsReady',function(){
|
||||||
OC.Share.loadIcons('file');
|
if (!sharesLoaded){
|
||||||
|
OC.Share.loadIcons('file');
|
||||||
|
// assume that we got all shares, so switching directories
|
||||||
|
// will not invalidate that list
|
||||||
|
sharesLoaded = true;
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
OC.Share.updateIcons('file');
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
FileActions.register('all', 'Share', OC.PERMISSION_READ, OC.imagePath('core', 'actions/share'), function(filename) {
|
FileActions.register('all', 'Share', OC.PERMISSION_READ, OC.imagePath('core', 'actions/share'), function(filename) {
|
||||||
|
|
101
core/js/share.js
101
core/js/share.js
|
@ -4,58 +4,77 @@ OC.Share={
|
||||||
SHARE_TYPE_LINK:3,
|
SHARE_TYPE_LINK:3,
|
||||||
SHARE_TYPE_EMAIL:4,
|
SHARE_TYPE_EMAIL:4,
|
||||||
itemShares:[],
|
itemShares:[],
|
||||||
statuses:[],
|
statuses:{},
|
||||||
droppedDown:false,
|
droppedDown:false,
|
||||||
|
/**
|
||||||
|
* Loads ALL share statuses from server, stores them in OC.Share.statuses then
|
||||||
|
* calls OC.Share.updateIcons() to update the files "Share" icon to "Shared"
|
||||||
|
* according to their share status and share type.
|
||||||
|
*/
|
||||||
loadIcons:function(itemType) {
|
loadIcons:function(itemType) {
|
||||||
// Load all share icons
|
// Load all share icons
|
||||||
$.get(OC.filePath('core', 'ajax', 'share.php'), { fetch: 'getItemsSharedStatuses', itemType: itemType }, function(result) {
|
$.get(OC.filePath('core', 'ajax', 'share.php'), { fetch: 'getItemsSharedStatuses', itemType: itemType }, function(result) {
|
||||||
if (result && result.status === 'success') {
|
if (result && result.status === 'success') {
|
||||||
|
OC.Share.statuses = {};
|
||||||
$.each(result.data, function(item, data) {
|
$.each(result.data, function(item, data) {
|
||||||
OC.Share.statuses[item] = data;
|
OC.Share.statuses[item] = data;
|
||||||
var hasLink = data['link'];
|
|
||||||
// Links override shared in terms of icon display
|
|
||||||
if (hasLink) {
|
|
||||||
var image = OC.imagePath('core', 'actions/public');
|
|
||||||
} else {
|
|
||||||
var image = OC.imagePath('core', 'actions/shared');
|
|
||||||
}
|
|
||||||
if (itemType != 'file' && itemType != 'folder') {
|
|
||||||
$('a.share[data-item="'+item+'"]').css('background', 'url('+image+') no-repeat center');
|
|
||||||
} else {
|
|
||||||
var file = $('tr[data-id="'+item+'"]');
|
|
||||||
if (file.length > 0) {
|
|
||||||
var action = $(file).find('.fileactions .action[data-action="Share"]');
|
|
||||||
var img = action.find('img').attr('src', image);
|
|
||||||
action.addClass('permanent');
|
|
||||||
action.html(' '+t('core', 'Shared')).prepend(img);
|
|
||||||
} else {
|
|
||||||
var dir = $('#dir').val();
|
|
||||||
if (dir.length > 1) {
|
|
||||||
var last = '';
|
|
||||||
var path = dir;
|
|
||||||
// Search for possible parent folders that are shared
|
|
||||||
while (path != last) {
|
|
||||||
if (path == data['path']) {
|
|
||||||
var actions = $('.fileactions .action[data-action="Share"]');
|
|
||||||
$.each(actions, function(index, action) {
|
|
||||||
var img = $(action).find('img');
|
|
||||||
if (img.attr('src') != OC.imagePath('core', 'actions/public')) {
|
|
||||||
img.attr('src', image);
|
|
||||||
$(action).addClass('permanent');
|
|
||||||
$(action).html(' '+t('core', 'Shared')).prepend(img);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
last = path;
|
|
||||||
path = OC.Share.dirname(path);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
OC.Share.updateIcons(itemType);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
/**
|
||||||
|
* Updates the files' "Share" icons according to the known
|
||||||
|
* sharing states stored in OC.Share.statuses.
|
||||||
|
* (not reloaded from server)
|
||||||
|
*/
|
||||||
|
updateIcons:function(itemType){
|
||||||
|
var item;
|
||||||
|
for (item in OC.Share.statuses){
|
||||||
|
var data = OC.Share.statuses[item];
|
||||||
|
|
||||||
|
var hasLink = data['link'];
|
||||||
|
// Links override shared in terms of icon display
|
||||||
|
if (hasLink) {
|
||||||
|
var image = OC.imagePath('core', 'actions/public');
|
||||||
|
} else {
|
||||||
|
var image = OC.imagePath('core', 'actions/shared');
|
||||||
|
}
|
||||||
|
if (itemType != 'file' && itemType != 'folder') {
|
||||||
|
$('a.share[data-item="'+item+'"]').css('background', 'url('+image+') no-repeat center');
|
||||||
|
} else {
|
||||||
|
var file = $('tr[data-id="'+item+'"]');
|
||||||
|
if (file.length > 0) {
|
||||||
|
var action = $(file).find('.fileactions .action[data-action="Share"]');
|
||||||
|
var img = action.find('img').attr('src', image);
|
||||||
|
action.addClass('permanent');
|
||||||
|
action.html(' '+t('core', 'Shared')).prepend(img);
|
||||||
|
} else {
|
||||||
|
var dir = $('#dir').val();
|
||||||
|
if (dir.length > 1) {
|
||||||
|
var last = '';
|
||||||
|
var path = dir;
|
||||||
|
// Search for possible parent folders that are shared
|
||||||
|
while (path != last) {
|
||||||
|
if (path == data['path']) {
|
||||||
|
var actions = $('.fileactions .action[data-action="Share"]');
|
||||||
|
$.each(actions, function(index, action) {
|
||||||
|
var img = $(action).find('img');
|
||||||
|
if (img.attr('src') != OC.imagePath('core', 'actions/public')) {
|
||||||
|
img.attr('src', image);
|
||||||
|
$(action).addClass('permanent');
|
||||||
|
$(action).html(' '+t('core', 'Shared')).prepend(img);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
last = path;
|
||||||
|
path = OC.Share.dirname(path);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
updateIcon:function(itemType, itemSource) {
|
updateIcon:function(itemType, itemSource) {
|
||||||
var shares = false;
|
var shares = false;
|
||||||
var link = false;
|
var link = false;
|
||||||
|
|
Loading…
Reference in New Issue