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');