diff options
author | Bernhard Posselt <nukeawhale@gmail.com> | 2013-03-11 02:43:16 -0700 |
---|---|---|
committer | Bernhard Posselt <nukeawhale@gmail.com> | 2013-03-11 02:43:16 -0700 |
commit | 1e20067c005a2363b06b8e163c95c75a32dea3b0 (patch) | |
tree | 35efef4b096798a4416c656db6fb4668c8202eef /core | |
parent | 11251ec8a8c22c35c40c5ee4ce995b63032124ed (diff) | |
parent | 9ad03b61a357fa1edb322ffd1aab4d62daa856e5 (diff) | |
download | nextcloud-server-1e20067c005a2363b06b8e163c95c75a32dea3b0.tar.gz nextcloud-server-1e20067c005a2363b06b8e163c95c75a32dea3b0.zip |
Merge pull request #2183 from owncloud/fix-shared-statuses-again
Fix #2080 and fix #2141
Diffstat (limited to 'core')
-rw-r--r-- | core/js/share.js | 88 |
1 files changed, 36 insertions, 52 deletions
diff --git a/core/js/share.js b/core/js/share.js index 34f24da4df7..8e767663f12 100644 --- a/core/js/share.js +++ b/core/js/share.js @@ -10,8 +10,9 @@ OC.Share={ // Load all share icons $.get(OC.filePath('core', 'ajax', 'share.php'), { fetch: 'getItemsSharedStatuses', itemType: itemType }, function(result) { if (result && result.status === 'success') { - $.each(result.data, function(item, hasLink) { - OC.Share.statuses[item] = hasLink; + $.each(result.data, function(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'); @@ -21,30 +22,33 @@ OC.Share={ if (itemType != 'file' && itemType != 'folder') { $('a.share[data-item="'+item+'"]').css('background', 'url('+image+') no-repeat center'); } else { - var file = $('tr').filterAttr('data-file', OC.basename(item)); + var file = $('tr').filterAttr('data-id', item); if (file.length > 0) { var action = $(file).find('.fileactions .action').filterAttr('data-action', 'Share'); var img = action.find('img').attr('src', image); action.addClass('permanent'); action.html(' '+t('core', 'Shared')).prepend(img); - } - 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 == item) { - var action = $('.fileactions .action').filterAttr('data-action', 'Share'); - 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); + } 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').filterAttr('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); } - last = path; - path = OC.Share.dirname(path); } } } @@ -53,15 +57,6 @@ OC.Share={ }); }, updateIcon:function(itemType, itemSource) { - if (itemType == 'file' || itemType == 'folder') { - var file = $('tr').filterAttr('data-id', String(itemSource)); - var filename = file.data('file'); - if ($('#dir').val() == '/') { - itemSource = $('#dir').val() + filename; - } else { - itemSource = $('#dir').val() + '/' + filename; - } - } var shares = false; var link = false; var image = OC.imagePath('core', 'actions/share'); @@ -83,18 +78,21 @@ OC.Share={ if (itemType != 'file' && itemType != 'folder') { $('a.share[data-item="'+itemSource+'"]').css('background', 'url('+image+') no-repeat center'); } else { - var action = $(file).find('.fileactions .action').filterAttr('data-action', 'Share'); - var img = action.find('img').attr('src', image); - if (shares) { - action.addClass('permanent'); - action.html(' '+t('core', 'Shared')).prepend(img); - } else { - action.removeClass('permanent'); - action.html(' '+t('core', 'Share')).prepend(img); + var file = $('tr').filterAttr('data-id', String(itemSource)); + if (file.length > 0) { + var action = $(file).find('.fileactions .action').filterAttr('data-action', 'Share'); + var img = action.find('img').attr('src', image); + if (shares) { + action.addClass('permanent'); + action.html(' '+ escapeHTML(t('core', 'Shared'))).prepend(img); + } else { + action.removeClass('permanent'); + action.html(' '+ escapeHTML(t('core', 'Share'))).prepend(img); + } } } if (shares) { - OC.Share.statuses[itemSource] = link; + OC.Share.statuses[itemSource]['link'] = link; } else { delete OC.Share.statuses[itemSource]; } @@ -102,21 +100,7 @@ OC.Share={ loadItem:function(itemType, itemSource) { var data = ''; var checkReshare = true; - // Switch file sources to path to check if status is set - if (itemType == 'file' || itemType == 'folder') { - var filename = $('tr').filterAttr('data-id', String(itemSource)).data('file'); - if ($('#dir').val() == '/') { - var item = $('#dir').val() + filename; - } else { - var item = $('#dir').val() + '/' + filename; - } - if (item.substring(0, 8) != '/Shared/') { - checkReshare = false; - } - } else { - var item = itemSource; - } - if (typeof OC.Share.statuses[item] === 'undefined') { + if (typeof OC.Share.statuses[itemSource] === 'undefined') { // NOTE: Check does not always work and misses some shares, fix later checkShares = true; } else { |