aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRoeland Jago Douma <rullzer@users.noreply.github.com>2019-10-23 19:38:59 +0200
committerGitHub <noreply@github.com>2019-10-23 19:38:59 +0200
commitc0c63fcbdce3796b576dda2413adf650816c392e (patch)
treea070dedbc888a5f53da9645ddc8b92a182645acf
parent178ead40141a3fd63ff900061c09004cb48ee30c (diff)
parent975c1982a0fcaaed41db85b2d4ec37eb5fefce0b (diff)
downloadnextcloud-server-c0c63fcbdce3796b576dda2413adf650816c392e.tar.gz
nextcloud-server-c0c63fcbdce3796b576dda2413adf650816c392e.zip
Merge pull request #17482 from nextcloud/feature/noid/rich-workspace
Allow registering header/footer sections in the file lists
-rw-r--r--apps/files/js/filelist.js60
-rw-r--r--apps/files/templates/list.php2
2 files changed, 62 insertions, 0 deletions
diff --git a/apps/files/js/filelist.js b/apps/files/js/filelist.js
index 0e24c09ec07..58e2bfae7ff 100644
--- a/apps/files/js/filelist.js
+++ b/apps/files/js/filelist.js
@@ -58,6 +58,12 @@
*/
$fileList: null,
+ $header: null,
+ headers: [],
+
+ $footer: null,
+ footers: [],
+
/**
* @type OCA.Files.BreadCrumb
*/
@@ -262,6 +268,8 @@
this.$container = options.scrollContainer || $(window);
this.$table = $el.find('table:first');
this.$fileList = $el.find('#fileList');
+ this.$header = $el.find('#filelist-header');
+ this.$footer = $el.find('#filelist-footer');
if (!_.isUndefined(this._filesConfig)) {
this._filesConfig.on('change:showhidden', function() {
@@ -408,6 +416,46 @@
OC.Plugins.attach('OCA.Files.FileList', this);
+
+ this.initHeadersAndFooters()
+ },
+
+ initHeadersAndFooters: function() {
+ this.headers.sort(function(a, b) {
+ return a.order - b.order;
+ })
+ this.footers.sort(function(a, b) {
+ return a.order - b.order;
+ })
+ var uniqueIds = [];
+ var self = this;
+ this.headers.forEach(function(header) {
+ if (header.id) {
+ if (uniqueIds.indexOf(header.id) !== -1) {
+ return
+ }
+ uniqueIds.push(header.id)
+ }
+ self.$header.append(header.el)
+
+ setTimeout(function() {
+ header.render(self)
+ }, 0)
+ })
+
+ uniqueIds = [];
+ this.footers.forEach(function(footer) {
+ if (footer.id) {
+ if (uniqueIds.indexOf(footer.id) !== -1) {
+ return
+ }
+ uniqueIds.push(footer.id)
+ }
+ self.$footer.append(footer.el)
+ setTimeout(function() {
+ footer.render(self)
+ }, 0)
+ })
},
/**
@@ -3642,6 +3690,18 @@
}
return null;
+ },
+
+ registerHeader: function(header) {
+ this.headers.push(
+ _.defaults(header, { order: 0 })
+ );
+ },
+
+ registerFooter: function(footer) {
+ this.footers.push(
+ _.defaults(footer, { order: 0 })
+ );
}
};
diff --git a/apps/files/templates/list.php b/apps/files/templates/list.php
index 8b20c84e008..697a0a9cf44 100644
--- a/apps/files/templates/list.php
+++ b/apps/files/templates/list.php
@@ -19,6 +19,7 @@
<input type="hidden" class="max_human_file_size"
value="(max <?php isset($_['uploadMaxHumanFilesize']) ? p($_['uploadMaxHumanFilesize']) : ''; ?>)">
</div>
+<div id="filelist-header"></div>
<div id="emptycontent" class="hidden">
<div class="icon-folder"></div>
@@ -68,6 +69,7 @@
<tfoot>
</tfoot>
</table>
+<div id="filelist-footer"></div>
<input type="hidden" name="dir" id="dir" value="" />
<div class="hiddenuploadfield">
<input type="file" id="file_upload_start" class="hiddenuploadfield" name="files[]" />