diff options
author | Roeland Jago Douma <rullzer@users.noreply.github.com> | 2019-10-23 19:38:59 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-10-23 19:38:59 +0200 |
commit | c0c63fcbdce3796b576dda2413adf650816c392e (patch) | |
tree | a070dedbc888a5f53da9645ddc8b92a182645acf | |
parent | 178ead40141a3fd63ff900061c09004cb48ee30c (diff) | |
parent | 975c1982a0fcaaed41db85b2d4ec37eb5fefce0b (diff) | |
download | nextcloud-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.js | 60 | ||||
-rw-r--r-- | apps/files/templates/list.php | 2 |
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[]" /> |