summaryrefslogtreecommitdiffstats
path: root/core/js
diff options
context:
space:
mode:
authorArthur Schiwon <blizzz@owncloud.com>2015-09-04 15:31:45 +0200
committerVincent Petry <pvince81@owncloud.com>2015-09-16 07:23:27 +0200
commit858a2a4e6c42f8cc68212439930c16029a6bba36 (patch)
tree02f1c4e0acd23d9fdd3ccc4ded40c5c92d3218b0 /core/js
parentce1b0c650e3a0e4cb701609ee08a13182909219a (diff)
downloadnextcloud-server-858a2a4e6c42f8cc68212439930c16029a6bba36.tar.gz
nextcloud-server-858a2a4e6c42f8cc68212439930c16029a6bba36.zip
display expiration info
Diffstat (limited to 'core/js')
-rw-r--r--core/js/shareconfigmodel.js18
-rw-r--r--core/js/sharedialogexpirationview.js57
-rw-r--r--core/js/sharedialogview.js1
-rw-r--r--core/js/shareitemmodel.js7
4 files changed, 60 insertions, 23 deletions
diff --git a/core/js/shareconfigmodel.js b/core/js/shareconfigmodel.js
index 846b2692ecb..472fdcc75d7 100644
--- a/core/js/shareconfigmodel.js
+++ b/core/js/shareconfigmodel.js
@@ -17,7 +17,9 @@
var ShareConfigModel = OC.Backbone.Model.extend({
defaults: {
publicUploadEnabled: false,
- enforcePasswordForPublicLink: oc_appconfig.core.enforcePasswordForPublicLink
+ enforcePasswordForPublicLink: oc_appconfig.core.enforcePasswordForPublicLink,
+ isDefaultExpireDateEnforced: oc_appconfig.core.defaultExpireDateEnforced === true,
+ defaultExpireDate: oc_appconfig.core.defaultExpireDate,
},
/**
@@ -45,13 +47,6 @@
/**
* @returns {boolean}
*/
- isDefaultExpireDateEnforced: function() {
- return oc_appconfig.core.defaultExpireDateEnforced === true;
- },
-
- /**
- * @returns {boolean}
- */
isRemoteShareAllowed: function() {
return oc_appconfig.core.remoteShareAllowed;
},
@@ -75,13 +70,6 @@
*/
getFederatedShareDocLink: function() {
return oc_appconfig.core.federatedCloudShareDoc;
- },
-
- /**
- * @returns {number}
- */
- getDefaultExpireDate: function () {
- return oc_appconfig.core.defaultExpireDate;
}
});
diff --git a/core/js/sharedialogexpirationview.js b/core/js/sharedialogexpirationview.js
index 9fb404a090e..56473cdb1fa 100644
--- a/core/js/sharedialogexpirationview.js
+++ b/core/js/sharedialogexpirationview.js
@@ -14,13 +14,22 @@
}
var TEMPLATE =
- // well that could go to linkShareView…
+ // currently expiration is only effective for link share.
+ // this is about to change in future. Therefore this is not included
+ // in the LinkShareView to ease reusing it in future. Then,
+ // modifications (getting rid of IDs) are still necessary.
'{{#if isLinkShare}}' +
- '<input type="checkbox" name="expirationCheckbox" id="expirationCheckbox" value="1" />' +
+ '<input type="checkbox" name="expirationCheckbox" id="expirationCheckbox" value="1" ' +
+ '{{#if isExpirationSet}}checked="checked"{{/if}} {{#if disableCheckbox}}disabled="disabled"{{/if}} />' +
'<label for="expirationCheckbox">{{setExpirationLabel}}</label>' +
- '<label for="expirationDate" class="hidden-visually">{{expirationLabel}}</label>' +
- '<input id="expirationDate" type="text" placeholder="{{expirationDatePlaceholder}}" class="hidden" />' +
+ ' {{#if isExpirationSet}}' +
+ '<label for="expirationDate" class="hidden-visually" value="{{expirationDate}}">{{expirationLabel}}</label>' +
+ '<input id="expirationDate" class="datepicker" type="text" placeholder="{{expirationDatePlaceholder}}" />' +
+ ' {{/if}}' +
+ ' {{#if isExpirationEnforced}}' +
+ // originally the expire message was shown when a default date was set, however it never had text
'<em id="defaultExpireMessage">{{defaultExpireMessage}}</em>' +
+ ' {{/if}}' +
'{{/if}}'
;
@@ -59,24 +68,58 @@
render: function() {
var defaultExpireMessage = '';
+ var defaultExpireDays = this.configModel.get('defaultExpireDate');
if( (this.model.isFolder() || this.model.isFile())
- && this.configModel.isDefaultExpireDateEnforced()) {
+ && this.configModel.get('isDefaultExpireDateEnforced')) {
defaultExpireMessage = t(
'core',
'The public link will expire no later than {days} days after it is created',
- {'days': this.configModel.getDefaultExpireDate()}
+ {'days': defaultExpireDays }
);
}
+ var isExpirationSet = !!this.model.get('linkShare').expiration;
+ var isExpirationEnforced = this.configModel.get('isDefaultExpireDateEnforced');
+
var expirationTemplate = this.template();
this.$el.html(expirationTemplate({
setExpirationLabel: t('core', 'Set expiration date'),
expirationLabel: t('core', 'Expiration'),
expirationDatePlaceholder: t('core', 'Expiration date'),
defaultExpireMessage: defaultExpireMessage,
- isLinkShare: this.model.get('linkShare').isLinkShare
+ isLinkShare: this.model.get('linkShare').isLinkShare,
+ isExpirationSet: isExpirationSet,
+ isExpirationEnforced: isExpirationEnforced,
+ disableCheckbox: isExpirationEnforced && isExpirationSet,
+ expirationValue: this.model.get('linkShare').expiration
}));
+ if(isExpirationSet) {
+ // what if there is another date picker on that page?
+ var minDate = new Date();
+ // min date should always be the next day
+ minDate.setDate(minDate.getDate()+1);
+
+ var maxDate = null;
+ if(isExpirationEnforced) {
+ // TODO: hack: backend returns string instead of integer
+ var shareTime = this.model.get('linkShare').stime;
+ if (_.isNumber(shareTime)) {
+ shareTime = new Date(shareTime * 1000);
+ }
+ if (!shareTime) {
+ shareTime = new Date(); // now
+ }
+ shareTime = OC.Util.stripTime(shareTime).getTime();
+ maxDate = new Date(shareTime + defaultExpireDays * 24 * 3600 * 1000);
+ }
+
+ $.datepicker.setDefaults({
+ minDate: minDate,
+ maxDate: maxDate
+ });
+ }
+
return this;
},
diff --git a/core/js/sharedialogview.js b/core/js/sharedialogview.js
index 9bfe38eea3c..12e682a3b82 100644
--- a/core/js/sharedialogview.js
+++ b/core/js/sharedialogview.js
@@ -134,6 +134,7 @@
$this.imageplaceholder($this.data('seed'));
});
}
+ this.$el.find('.datepicker').datepicker({dateFormat : 'dd-mm-yy'});
return this;
},
diff --git a/core/js/shareitemmodel.js b/core/js/shareitemmodel.js
index e8371e16e0a..24aa5fe344d 100644
--- a/core/js/shareitemmodel.js
+++ b/core/js/shareitemmodel.js
@@ -20,6 +20,8 @@
* @property {string} token
* @property {string|null} password
* @property {string} link
+ * @property {Date} expiration
+ * @property {number} stime share time
*/
/**
@@ -445,7 +447,10 @@
isLinkShare: true,
token: share.token,
password: share.share_with,
- link: link
+ link: link,
+ // currently expiration is only effective for link shares.
+ expiration: share.expiration,
+ stime: share.stime
};
return share;