aboutsummaryrefslogtreecommitdiffstats
path: root/apps/files/js/mainfileinfodetailview.js
diff options
context:
space:
mode:
Diffstat (limited to 'apps/files/js/mainfileinfodetailview.js')
-rw-r--r--apps/files/js/mainfileinfodetailview.js43
1 files changed, 34 insertions, 9 deletions
diff --git a/apps/files/js/mainfileinfodetailview.js b/apps/files/js/mainfileinfodetailview.js
index f5f9e926f64..ea3063f6176 100644
--- a/apps/files/js/mainfileinfodetailview.js
+++ b/apps/files/js/mainfileinfodetailview.js
@@ -14,7 +14,7 @@
'<div class="file-details-container">' +
'<div class="fileName">' +
'<h3 title="{{name}}" class="ellipsis">{{name}}</h3>' +
- '<a class="permalink" href="{{permalink}}" title="{{permalinkTitle}}">' +
+ '<a class="permalink" href="{{permalink}}" title="{{permalinkTitle}}" data-clipboard-text="{{permalink}}">' +
'<span class="icon icon-clippy"></span>' +
'<span class="hidden-visually">{{permalinkTitle}}</span>' +
'</a>' +
@@ -86,16 +86,37 @@
throw 'Missing required parameter "fileActions"';
}
this._previewManager = new OCA.Files.SidebarPreviewManager(this._fileList);
+
+ this._setupClipboard();
},
- _onClickPermalink: function() {
- var $row = this.$('.permalink-field');
- $row.toggleClass('hidden');
- if (!$row.hasClass('hidden')) {
- $row.find('>input').focus();
- }
- // cancel click, user must right-click + copy or middle click
- return false;
+ _setupClipboard: function() {
+ var clipboard = new Clipboard('.permalink');
+ clipboard.on('success', function(e) {
+ var $el = $(e.trigger);
+ $el.tooltip('hide')
+ .attr('data-original-title', t('core', 'Copied!'))
+ .tooltip('fixTitle')
+ .tooltip({placement: 'bottom', trigger: 'manual'})
+ .tooltip('show');
+ _.delay(function() {
+ $el.tooltip('hide');
+ $el.attr('data-original-title', t('files', 'Copy direct link (only works for users who have access to this file/folder)'))
+ .tooltip('fixTitle');
+ }, 3000);
+ });
+ clipboard.on('error', function(e) {
+ var $row = this.$('.permalink-field');
+ $row.toggleClass('hidden');
+ if (!$row.hasClass('hidden')) {
+ $row.find('>input').focus();
+ }
+ });
+ },
+
+ _onClickPermalink: function(e) {
+ e.preventDefault();
+ return;
},
_onFocusPermalink: function() {
@@ -150,6 +171,8 @@
* Renders this details view
*/
render: function() {
+ this.trigger('pre-render');
+
if (this.model) {
var isFavorite = (this.model.get('tags') || []).indexOf(OC.TAG_FAVORITE) >= 0;
this.$el.html(this.template({
@@ -188,6 +211,8 @@
this.$el.empty();
}
this.delegateEvents();
+
+ this.trigger('post-render');
}
});