diff options
-rw-r--r-- | apps/files/js/detailsview.js | 8 | ||||
-rw-r--r-- | apps/files/js/detailtabview.js | 6 | ||||
-rw-r--r-- | apps/files/tests/js/detailsviewSpec.js | 15 | ||||
-rw-r--r-- | apps/files_sharing/js/share.js | 2 | ||||
-rw-r--r-- | apps/files_versions/js/filesplugin.js | 2 | ||||
-rw-r--r-- | apps/files_versions/js/versionstabview.js | 1 |
6 files changed, 31 insertions, 3 deletions
diff --git a/apps/files/js/detailsview.js b/apps/files/js/detailsview.js index b01f9cea610..bad4be4ceef 100644 --- a/apps/files/js/detailsview.js +++ b/apps/files/js/detailsview.js @@ -132,6 +132,14 @@ closeLabel: t('files', 'Close') }; + this._tabViews = this._tabViews.sort(function(tabA, tabB) { + var orderA = tabA.order || 0; + var orderB = tabB.order || 0; + if (orderA === orderB) { + return OC.Util.naturalSortCompare(tabA.getLabel(), tabB.getLabel()); + } + return orderA - orderB; + }); if (this._tabViews.length > 1) { // only render headers if there is more than one available templateVars.tabHeaders = _.map(this._tabViews, function(tabView, i) { diff --git a/apps/files/js/detailtabview.js b/apps/files/js/detailtabview.js index 449047cf252..d885e47b15e 100644 --- a/apps/files/js/detailtabview.js +++ b/apps/files/js/detailtabview.js @@ -29,11 +29,15 @@ _template: null, - initialize: function() { + initialize: function(options) { + options = options || {}; if (!this.id) { this.id = 'detailTabView' + DetailTabView._TAB_COUNT; DetailTabView._TAB_COUNT++; } + if (options.order) { + this.order = options.order || 0; + } }, /** diff --git a/apps/files/tests/js/detailsviewSpec.js b/apps/files/tests/js/detailsviewSpec.js index 852f8b04293..f02e419434f 100644 --- a/apps/files/tests/js/detailsviewSpec.js +++ b/apps/files/tests/js/detailsviewSpec.js @@ -153,5 +153,20 @@ describe('OCA.Files.DetailsView tests', function() { expect(detailsView.$el.find('.tabHeader').length).toEqual(0); }); + it('sorts by order and then label', function() { + detailsView.remove(); + detailsView = new OCA.Files.DetailsView(); + detailsView.addTabView(new OCA.Files.DetailTabView({id: 'abc', order: 20})); + detailsView.addTabView(new OCA.Files.DetailTabView({id: 'def', order: 10})); + detailsView.addTabView(new OCA.Files.DetailTabView({id: 'jkl'})); + detailsView.addTabView(new OCA.Files.DetailTabView({id: 'ghi'})); + detailsView.render(); + + var tabs = detailsView.$el.find('.tabHeader').map(function() { + return $(this).attr('data-tabid'); + }).toArray(); + + expect(tabs).toEqual(['ghi', 'jkl', 'def', 'abc']); + }); }); }); diff --git a/apps/files_sharing/js/share.js b/apps/files_sharing/js/share.js index 5290dfbb7d1..66e4f9dc273 100644 --- a/apps/files_sharing/js/share.js +++ b/apps/files_sharing/js/share.js @@ -111,7 +111,7 @@ } }); - var shareTab = new OCA.Sharing.ShareTabView('shareTabView'); + var shareTab = new OCA.Sharing.ShareTabView('shareTabView', {order: -20}); // detect changes and change the matching list entry shareTab.on('sharesChanged', function(shareModel) { var fileInfoModel = shareModel.fileInfoModel; diff --git a/apps/files_versions/js/filesplugin.js b/apps/files_versions/js/filesplugin.js index 42075ce6462..a9457c522d6 100644 --- a/apps/files_versions/js/filesplugin.js +++ b/apps/files_versions/js/filesplugin.js @@ -25,7 +25,7 @@ return; } - fileList.registerTabView(new OCA.Versions.VersionsTabView('versionsTabView')); + fileList.registerTabView(new OCA.Versions.VersionsTabView('versionsTabView', {order: -10})); } }; })(); diff --git a/apps/files_versions/js/versionstabview.js b/apps/files_versions/js/versionstabview.js index f6a6f037988..6dab8014229 100644 --- a/apps/files_versions/js/versionstabview.js +++ b/apps/files_versions/js/versionstabview.js @@ -44,6 +44,7 @@ }, initialize: function() { + OCA.Files.DetailTabView.prototype.initialize.apply(this, arguments); this.collection = new OCA.Versions.VersionCollection(); this.collection.on('request', this._onRequest, this); this.collection.on('sync', this._onEndRequest, this); |