From b5dea82e45ec6e7eea293605ddd4eac06a8d9dd0 Mon Sep 17 00:00:00 2001 From: Morris Jobke Date: Wed, 30 Sep 2015 18:20:55 +0200 Subject: [PATCH] Add expiration date to share by link view --- apps/files_sharing/js/sharedfilelist.js | 38 +++++++++++++++++++++++++ apps/files_sharing/templates/list.php | 3 ++ 2 files changed, 41 insertions(+) diff --git a/apps/files_sharing/js/sharedfilelist.js b/apps/files_sharing/js/sharedfilelist.js index da0f957ed9..10ea3e33ef 100644 --- a/apps/files_sharing/js/sharedfilelist.js +++ b/apps/files_sharing/js/sharedfilelist.js @@ -79,6 +79,38 @@ var permission = parseInt($tr.attr('data-permissions')) | OC.PERMISSION_DELETE; $tr.attr('data-permissions', permission); } + + // add row with expiration date for link only shares - influenced by _createRow of filelist + if (this._linksOnly) { + var expirationTimestamp = moment(fileData.shares[0].expiration).valueOf(); + $tr.attr('data-expiration', expirationTimestamp); + + // date column (1000 milliseconds to seconds, 60 seconds, 60 minutes, 24 hours) + // difference in days multiplied by 5 - brightest shade for expiry dates in more than 32 days (160/5) + var modifiedColor = Math.round((expirationTimestamp - (new Date()).getTime()) / 1000 / 60 / 60 / 24 * 5); + // ensure that the brightest color is still readable + if (modifiedColor >= '160') { + modifiedColor = 160; + } + + if (expirationTimestamp > 0) { + formatted = OC.Util.formatDate(expirationTimestamp); + text = OC.Util.relativeModifiedDate(expirationTimestamp); + } else { + formatted = t('files_sharing', 'No expiration date set'); + text = ''; + } + td = $('').attr({"class": "date"}); + td.append($('').attr({ + "class": "modified", + "title": formatted, + "style": 'color:rgb(' + modifiedColor + ',' + modifiedColor + ',' + modifiedColor + ')' + }).text(text) + .tooltip({placement: 'top'}) + ); + + $tr.append(td); + } return $tr; }, @@ -172,6 +204,11 @@ if (shares[0].ocs && shares[0].ocs.data) { files = files.concat(this._makeFilesFromShares(shares[0].ocs.data)); + + // hide expiration date header for non link only shares + if (!this._linksOnly) { + this.$el.find('th.column-expiration').addClass('hidden'); + } } if (remoteShares && remoteShares[0].ocs && remoteShares[0].ocs.data) { @@ -249,6 +286,7 @@ type: share.share_type, target: share.share_with, stime: share.stime * 1000, + expiration: share.expiration, }; if (self._sharedWithUser) { file.shareOwner = share.displayname_owner; diff --git a/apps/files_sharing/templates/list.php b/apps/files_sharing/templates/list.php index fa0365c749..f59cb7653d 100644 --- a/apps/files_sharing/templates/list.php +++ b/apps/files_sharing/templates/list.php @@ -22,6 +22,9 @@ t( 'Share time' )); ?> + + t( 'Expiration date' )); ?> +