diff --git a/apps/files_sharing/css/sharetabview.css b/apps/files_sharing/css/sharetabview.css
index 4738f8b7802..5896e18abad 100644
--- a/apps/files_sharing/css/sharetabview.css
+++ b/apps/files_sharing/css/sharetabview.css
@@ -21,6 +21,17 @@
padding: 14px;
}
+.shareTabView .linkMore {
+ position: absolute;
+ right: -7px;
+ top: -4px;
+ padding: 14px;
+}
+
+.shareTabView .popovermenu .clipboardButton {
+ position: relative;
+}
+
.shareTabView label {
white-space: nowrap;
}
diff --git a/core/js/sharedialoglinkshareview.js b/core/js/sharedialoglinkshareview.js
index 84a3d18942f..014819d5103 100644
--- a/core/js/sharedialoglinkshareview.js
+++ b/core/js/sharedialoglinkshareview.js
@@ -27,7 +27,12 @@
'
' +
@@ -64,6 +69,27 @@
'{{#if noSharingPlaceholder}}
{{/if}}' +
'{{/if}}'
;
+ var TEMPLATE_POPOVER_MENU =
+ '';
/**
* @class OCA.Share.ShareDialogLinkShareView
@@ -85,6 +111,9 @@
/** @type {Function} **/
_template: undefined,
+ /** @type {Function} **/
+ _popoverMenuTemplate: undefined,
+
/** @type {boolean} **/
showLink: true,
@@ -96,7 +125,9 @@
'change .publicUploadCheckbox': 'onAllowPublicUploadChange',
'change .publicEditingCheckbox': 'onAllowPublicEditingChange',
'change .hideFileListCheckbox': 'onHideFileListChange',
- 'click .showPasswordCheckbox': 'onShowPasswordClick'
+ 'click .showPasswordCheckbox': 'onShowPasswordClick',
+ 'click .icon-more': 'onToggleMenu',
+ 'click .pop-up': 'onPopUpClick'
},
initialize: function(options) {
@@ -150,8 +181,7 @@
.tooltip('show');
_.delay(function() {
$input.tooltip('hide')
- .attr('data-original-title', t('core', 'Copy'))
- .tooltip('fixTitle');
+ .tooltip("destroy");
}, 3000);
});
clipboard.on('error', function (e) {
@@ -173,7 +203,7 @@
_.delay(function () {
$input.tooltip('hide')
.attr('data-original-title', t('core', 'Copy'))
- .tooltip('fixTitle');
+ .tooltip("destroy");
}, 3000);
});
@@ -354,6 +384,26 @@
&& isLinkShare
&& this.model.updatePermissionPossible();
+ var link = this.model.get('linkShare').link;
+ var social = [];
+ OC.Share.Social.Collection.each(function(model) {
+ var url = model.get('url');
+ url = url.replace('{{reference}}', link);
+
+ social.push({
+ url: url,
+ label: t('core', 'Share to {name}', {name: model.get('name')}),
+ name: model.get('name'),
+ iconClass: model.get('iconClass')
+ });
+ });
+
+ var popover = this.popoverMenuTemplate({
+ cid: this.cid,
+ copyLabel: t('core', 'Copy'),
+ social: social
+ });
+
this.$el.html(linkShareTemplate({
cid: this.cid,
shareAllowed: true,
@@ -376,16 +426,27 @@
publicEditingLabel: t('core', 'Allow editing'),
hideFileListLabel: t('core', 'File drop (upload only)'),
mailPrivatePlaceholder: t('core', 'Email link to person'),
- mailButtonText: t('core', 'Send')
+ mailButtonText: t('core', 'Send'),
+ singleAction: OC.Share.Social.Collection.size() == 0,
+ popoverMenu: popover
}));
- this.$el.find('.clipboardButton').tooltip({placement: 'bottom', title: t('core', 'Copy'), trigger: 'hover'});
-
this.delegateEvents();
return this;
},
+ onToggleMenu: function(event) {
+ event.preventDefault();
+ event.stopPropagation();
+ var $element = $(event.target);
+ var $li = $element.closest('.oneline');
+ var $menu = $li.find('.popovermenu');
+
+ OC.showMenu(null, $menu);
+ this._menuOpen = $li.data('share-id');
+ },
+
/**
* @returns {Function} from Handlebars
* @private
@@ -395,6 +456,32 @@
this._template = Handlebars.compile(TEMPLATE);
}
return this._template;
+ },
+
+ /**
+ * renders the popover template and returns the resulting HTML
+ *
+ * @param {Object} data
+ * @returns {string}
+ */
+ popoverMenuTemplate: function(data) {
+ if(!this._popoverMenuTemplate) {
+ this._popoverMenuTemplate = Handlebars.compile(TEMPLATE_POPOVER_MENU);
+ }
+ return this._popoverMenuTemplate(data);
+ },
+
+ onPopUpClick: function(event) {
+ var url = $(event.target).data('url');
+ $(event.target).tooltip('hide');
+ if (url) {
+ var width = 600;
+ var height = 400;
+ var left = (screen.width/2)-(width/2);
+ var top = (screen.height/2)-(height/2);
+
+ window.open(url, 'name', 'width=' + width + ', height=' + height + ', top=' + top + ', left=' + left);
+ }
}
});
diff --git a/core/js/sharedialoglinksocialview.js b/core/js/sharedialoglinksocialview.js
deleted file mode 100644
index 1cd8d91bc7a..00000000000
--- a/core/js/sharedialoglinksocialview.js
+++ /dev/null
@@ -1,132 +0,0 @@
-/**
- * @copyright 2017, Roeland Jago Douma
- *
- * @author Roeland Jago Douma
- *
- * @license GNU AGPL version 3 or any later version
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see .
- *
- */
-
-(function() {
- if (!OC.Share) {
- OC.Share = {};
- }
-
- var TEMPLATE =
- ''
- ;
-
- /**
- * @class OCA.Share.ShareDialogLinkSocialView
- * @member {OC.Share.ShareItemModel} model
- * @member {jQuery} $el
- * @memberof OCA.Sharing
- * @classdesc
- *
- * Represents the GUI of the share dialogue
- *
- */
- var ShareDialogLinkSocialView = OC.Backbone.View.extend({
- /** @type {string} **/
- id: 'shareDialogLinkSocialView',
-
- /** @type {OC.Share.ShareConfigModel} **/
- configModel: undefined,
-
- /** @type {Function} **/
- _template: undefined,
-
- /** @type {boolean} **/
- showLink: true,
-
- events: {
- 'click .pop-up': 'onPopUpClick'
- },
-
- initialize: function(options) {
- var view = this;
-
- this.model.on('change:linkShare', function() {
- view.render();
- });
-
- if(!_.isUndefined(options.configModel)) {
- this.configModel = options.configModel;
- } else {
- throw 'missing OC.Share.ShareConfigModel';
- }
- },
-
- onPopUpClick: function(event) {
- var url = $(event.target).data('url');
- $(event.target).tooltip('hide');
- if (url) {
- var width = 600;
- var height = 400;
- var left = (screen.width/2)-(width/2);
- var top = (screen.height/2)-(height/2);
-
- window.open(url, 'name', 'width=' + width + ', height=' + height + ', top=' + top + ', left=' + left);
- }
- },
-
- render: function() {
- var isLinkShare = this.model.get('linkShare').isLinkShare;
- if (isLinkShare && OC.Share.Social.Collection.size() > 0) {
- var linkShareTemplate = this.template();
- var link = this.model.get('linkShare').link;
-
- var html = '';
-
- OC.Share.Social.Collection.each(function(model) {
- var url = model.get('url');
- url = url.replace('{{reference}}', link);
-
- html += linkShareTemplate({
- url: url,
- shareToolTip: t('core', 'Share to {name}', {name: model.get('name')}),
- iconClass: model.get('iconClass')
- });
- });
-
- this.$el.html(html);
- this.$el.show();
- } else {
- this.$el.hide();
- }
-
- this.delegateEvents();
-
- return this;
- },
-
- /**
- * @returns {Function} from Handlebars
- * @private
- */
- template: function () {
- if (!this._template) {
- this._template = Handlebars.compile(TEMPLATE);
- }
- return this._template;
- }
-
- });
-
- OC.Share.ShareDialogLinkSocialView = ShareDialogLinkSocialView;
-})();
diff --git a/core/js/sharedialogview.js b/core/js/sharedialogview.js
index ed887dfb716..a63960da2b8 100644
--- a/core/js/sharedialogview.js
+++ b/core/js/sharedialogview.js
@@ -28,7 +28,6 @@
'' +
'' +
'' +
- '' +
'';
var TEMPLATE_REMOTE_SHARE_INFO =
@@ -70,9 +69,6 @@
/** @type {object} **/
shareeListView: undefined,
- /** @type OC.Share.ShareDialogLinkSocialView **/
- socalView: undefined,
-
events: {
'input .shareWithField': 'onShareWithFieldChanged'
},
@@ -109,8 +105,7 @@
resharerInfoView: 'ShareDialogResharerInfoView',
linkShareView: 'ShareDialogLinkShareView',
expirationView: 'ShareDialogExpirationView',
- shareeListView: 'ShareDialogShareeListView',
- socialView: 'ShareDialogLinkSocialView'
+ shareeListView: 'ShareDialogShareeListView'
};
for(var name in subViews) {
@@ -426,9 +421,6 @@
this.shareeListView.$el = this.$el.find('.shareeListView');
this.shareeListView.render();
- this.socialView.$el = this.$('.socialView');
- this.socialView.render();
-
this.$el.find('.hasTooltip').tooltip();
return this;
diff --git a/lib/private/Share/Share.php b/lib/private/Share/Share.php
index c693af02a50..38b12a57ccf 100644
--- a/lib/private/Share/Share.php
+++ b/lib/private/Share/Share.php
@@ -97,7 +97,6 @@ class Share extends Constants {
\OC_Util::addScript('core', 'sharesocialmanager');
\OC_Util::addScript('core', 'sharedialogresharerinfoview');
\OC_Util::addScript('core', 'sharedialoglinkshareview');
- \OC_Util::addScript('core', 'sharedialoglinksocialview');
\OC_Util::addScript('core', 'sharedialogexpirationview');
\OC_Util::addScript('core', 'sharedialogshareelistview');
\OC_Util::addScript('core', 'sharedialogview');