diff --git a/core/js/sharedialogexpirationview.js b/core/js/sharedialogexpirationview.js new file mode 100644 index 00000000000..e752c66bf35 --- /dev/null +++ b/core/js/sharedialogexpirationview.js @@ -0,0 +1,93 @@ +/* + * Copyright (c) 2015 + * + * This file is licensed under the Affero General Public License version 3 + * or later. + * + * See the COPYING-README file. + * + */ + +(function() { + if (!OC.Share) { + OC.Share = {}; + } + + var TEMPLATE = + '' + + '' + + '' + + '' + + '{{defaultExpireMessage}}' + ; + + /** + * @class OCA.Share.ShareDialogExpirationView + * @member {OC.Share.ShareItemModel} model + * @member {jQuery} $el + * @memberof OCA.Sharing + * @classdesc + * + * Represents the expiration part in the GUI of the share dialogue + * + */ + var ShareDialogExpirationView = OC.Backbone.View.extend({ + /** @type {string} **/ + id: 'shareDialogLinkShare', + + /** @type {OC.Share.ShareConfigModel} **/ + configModel: undefined, + + /** @type {Function} **/ + _template: undefined, + + /** @type {boolean} **/ + showLink: true, + + initialize: function(options) { + if(!_.isUndefined(options.configModel)) { + this.configModel = options.configModel; + } else { + console.warn('missing OC.Share.ShareConfigModel'); + } + }, + + render: function() { + var defaultExpireMessage = ''; + if( (this.model.isFolder() || this.model.isFile()) + && this.configModel.isDefaultExpireDateEnforced()) { + defaultExpireMessage = t( + 'core', + 'The public link will expire no later than {days} days after it is created', + {'days': this.configModel.getDefaultExpireDate()} + ); + } + + var expirationTemplate = this.template(); + this.$el.empty(); + this.$el.append(expirationTemplate({ + setExpirationLabel: t('core', 'Set expiration date'), + expirationLabel: t('core', 'Expiration'), + expirationDatePlaceholder: t('core', 'Expiration date'), + defaultExpireMessage: defaultExpireMessage + })); + + return this; + }, + + /** + * @returns {Function} from Handlebars + * @private + */ + template: function () { + if (!this._template) { + this._template = Handlebars.compile(TEMPLATE); + } + return this._template; + } + + }); + + OC.Share.ShareDialogExpirationView = ShareDialogExpirationView; + +})(); diff --git a/core/js/sharedialogview.js b/core/js/sharedialogview.js index cc9590815a7..cdf5214fa65 100644 --- a/core/js/sharedialogview.js +++ b/core/js/sharedialogview.js @@ -14,7 +14,7 @@ } var TEMPLATE_BASE = - '
' + + '
' + '' + '
' + ' ' + @@ -25,11 +25,11 @@ '' + '{{#if shareAllowed}}' + - '
' + + '
' + '{{else}}' + '{{{noSharing}}}' + '{{/if}}' + - '{{{expiration}}}' + '
' ; var TEMPLATE_REMOTE_SHARE_INFO = @@ -40,16 +40,6 @@ '' ; - var TEMPLATE_EXPIRATION = - '
' + - ' ' + - ' ' + - ' ' + - ' ' + - ' {{defaultExpireMessage}}' + - '
' - ; - /** * @class OCA.Share.ShareDialogView * @member {OC.Share.ShareItemModel} model @@ -79,6 +69,9 @@ /** @type {object} **/ linkShareView: undefined, + /** @type {object} **/ + expirationView: undefined, + initialize: function(options) { var view = this; this.model.on('change', function() { @@ -108,6 +101,10 @@ ? new OC.Share.ShareDialogLinkShareView(subViewOptions) : options.linkShareView; + this.expirationView = _.isUndefined(options.expirationView) + ? new OC.Share.ShareDialogExpirationView(subViewOptions) + : options.expirationView; + }, render: function() { @@ -119,14 +116,16 @@ remoteShareInfo: this._renderRemoteShareInfoPart(), shareAllowed: this.model.hasSharePermission(), noSharing: this._renderNoSharing(), - expiration: this._renderExpirationPart() })); - this.resharerInfoView.$el = this.$el.find('.resharerInfo'); + this.resharerInfoView.$el = this.$el.find('.resharerInfoView'); this.resharerInfoView.render(); + this.expirationView.$el = this.$el.find('.expirationView'); + this.expirationView.render(); + if(this.model.hasSharePermission()) { - this.linkShareView.$el = this.$el.find('.linkShare'); + this.linkShareView.$el = this.$el.find('.linkShareView'); this.linkShareView.render(); } @@ -181,29 +180,6 @@ return noSharing; }, - _renderExpirationPart: function() { - var expirationTemplate = this._getTemplate('expiration', TEMPLATE_EXPIRATION); - - var defaultExpireMessage = ''; - if(( this.model.isFolder() || this.model.isFile()) - && this.configModel.isDefaultExpireDateEnforced()) { - defaultExpireMessage = t( - 'core', - 'The public link will expire no later than {days} days after it is created', - {'days': this.configModel.getDefaultExpireDate()} - ); - } - - var expiration = expirationTemplate({ - setExpirationLabel: t('core', 'Set expiration date'), - expirationLabel: t('core', 'Expiration'), - expirationDatePlaceholder: t('core', 'Expiration date'), - defaultExpireMessage: defaultExpireMessage - }); - - return expiration; - }, - /** * * @param {string} key - an identifier for the template diff --git a/lib/private/share/share.php b/lib/private/share/share.php index ea4f01c0a95..b5d508b30ba 100644 --- a/lib/private/share/share.php +++ b/lib/private/share/share.php @@ -87,6 +87,7 @@ class Share extends Constants { \OC_Util::addScript('core', 'shareitemmodel'); \OC_Util::addScript('core', 'sharedialogresharerinfoview'); \OC_Util::addScript('core', 'sharedialoglinkshareview'); + \OC_Util::addScript('core', 'sharedialogexpirationview'); \OC_Util::addScript('core', 'sharedialogview'); \OC_Util::addScript('core', 'share'); \OC_Util::addStyle('core', 'share');