Added mountType attribute and adapted Delete action text

Added mountType attribute for files/folder to indicated whether they are
regular, external or shared.

The client side then adapts the "Delete" action hint text based on this
information.

Only the mount roots must have the delete icon hint adapted.
To make this detectable on the client side, the mountType can now
be null, "shared", "shared-root", "external" or "external-root".

This also gives room to icon customization on the client side.
This commit is contained in:
Vincent Petry 2014-07-10 17:25:46 +02:00
parent e58dce2ee0
commit dd7529da98
5 changed files with 30 additions and 5 deletions

View File

@ -291,14 +291,20 @@
if (actions['Delete']) { if (actions['Delete']) {
var img = self.icons['Delete']; var img = self.icons['Delete'];
var html; var html;
var mountType = $tr.attr('data-mounttype');
var deleteTitle = t('files', 'Delete');
if (mountType === 'external-root') {
deleteTitle = t('files', 'Disconnect storage');
} else if (mountType === 'shared-root') {
deleteTitle = t('files', 'Unshare');
} else if (fileList.id === 'trashbin') {
deleteTitle = t('files', 'Delete permanently');
}
if (img.call) { if (img.call) {
img = img(file); img = img(file);
} }
if (typeof trashBinApp !== 'undefined' && trashBinApp) { html = '<a href="#" original-title="' + escapeHTML(deleteTitle) + '" class="action delete delete-icon" />';
html = '<a href="#" original-title="' + t('files', 'Delete permanently') + '" class="action delete delete-icon" />';
} else {
html = '<a href="#" original-title="' + t('files', 'Delete') + '" class="action delete delete-icon" />';
}
var element = $(html); var element = $(html);
element.data('action', actions['Delete']); element.data('action', actions['Delete']);
element.on('click', {a: null, elem: parent, actionFunc: actions['Delete'].action}, actionHandler); element.on('click', {a: null, elem: parent, actionFunc: actions['Delete'].action}, actionHandler);

View File

@ -600,6 +600,10 @@
"data-permissions": fileData.permissions || this.getDirectoryPermissions() "data-permissions": fileData.permissions || this.getDirectoryPermissions()
}); });
if (fileData.mountType) {
tr.attr('data-mounttype', fileData.mountType);
}
if (!_.isUndefined(path)) { if (!_.isUndefined(path)) {
tr.attr('data-path', path); tr.attr('data-path', path);
} }

View File

@ -37,6 +37,7 @@ class Helper
public static function determineIcon($file) { public static function determineIcon($file) {
if($file['type'] === 'dir') { if($file['type'] === 'dir') {
$icon = \OC_Helper::mimetypeIcon('dir'); $icon = \OC_Helper::mimetypeIcon('dir');
// TODO: move this part to the client side, using mountType
if ($file->isShared()) { if ($file->isShared()) {
$icon = \OC_Helper::mimetypeIcon('dir-shared'); $icon = \OC_Helper::mimetypeIcon('dir-shared');
} elseif ($file->isMounted()) { } elseif ($file->isMounted()) {
@ -125,6 +126,18 @@ class Helper
if (isset($i['is_share_mount_point'])) { if (isset($i['is_share_mount_point'])) {
$entry['isShareMountPoint'] = $i['is_share_mount_point']; $entry['isShareMountPoint'] = $i['is_share_mount_point'];
} }
$mountType = null;
if ($i->isShared()) {
$mountType = 'shared';
} else if ($i->isMounted()) {
$mountType = 'external';
}
if ($mountType !== null) {
if ($i->getInternalPath() === '') {
$mountType .= '-root';
}
$entry['mountType'] = $mountType;
}
return $entry; return $entry;
} }

View File

@ -104,6 +104,7 @@
_makeFiles: function(data) { _makeFiles: function(data) {
var files = _.map(data, function(fileData) { var files = _.map(data, function(fileData) {
fileData.icon = OC.imagePath('core', 'filetypes/folder-external'); fileData.icon = OC.imagePath('core', 'filetypes/folder-external');
fileData.mountType = 'external';
return fileData; return fileData;
}); });

View File

@ -233,6 +233,7 @@
.each(function(data) { .each(function(data) {
// convert the recipients map to a flat // convert the recipients map to a flat
// array of sorted names // array of sorted names
data.mountType = 'shared';
data.recipients = _.keys(data.recipients); data.recipients = _.keys(data.recipients);
data.recipientsDisplayName = OCA.Sharing.Util.formatRecipients( data.recipientsDisplayName = OCA.Sharing.Util.formatRecipients(
data.recipients, data.recipients,