diff options
author | Vincent Petry <pvince81@owncloud.com> | 2014-05-08 22:06:30 +0200 |
---|---|---|
committer | Vincent Petry <pvince81@owncloud.com> | 2014-05-15 17:51:04 +0200 |
commit | 9d38e3602b2faf37d861729c52690ce51b8fee97 (patch) | |
tree | 5da63d26db4a4e8ec356dee45fc8f7804c6fe38a /apps/files/js/navigation.js | |
parent | fb10bf4048aaf5b2a9665fc9dff217c790efe005 (diff) | |
download | nextcloud-server-9d38e3602b2faf37d861729c52690ce51b8fee97.tar.gz nextcloud-server-9d38e3602b2faf37d861729c52690ce51b8fee97.zip |
Namespacing for FileList, FileActions and trashbin app
- FileList is now an instantiable class
- FileActions is now in namespace
- added App class for trashbin app
- moved trashbin overrides into classes extending FileList
- replaced many static calls with "this." or "self." to make the classes
reusable/extendable
- new URL parameter "view" to specify which view is shown, for example
"files" or "trashbin"
- added OC.Util.History utility class in core for handling history
- moved URL handling/routing to OCA.Files.App
- popstate will correctly update the current view and notify the view of
the URL change so it can update the current dir
- added JS unitt tests for the trashbin app
- fixed public app to work with the new namespaces
Diffstat (limited to 'apps/files/js/navigation.js')
-rw-r--r-- | apps/files/js/navigation.js | 38 |
1 files changed, 32 insertions, 6 deletions
diff --git a/apps/files/js/navigation.js b/apps/files/js/navigation.js index f53abddd4db..c4a02ee7549 100644 --- a/apps/files/js/navigation.js +++ b/apps/files/js/navigation.js @@ -22,7 +22,7 @@ /** * Currently selected item in the list */ - _selectedItem: null, + _activeItem: null, /** * Currently selected container @@ -35,7 +35,7 @@ */ initialize: function($el) { this.$el = $el; - this._selectedItem = null; + this._activeItem = null; this.$currentContent = null; this._setupEvents(); }, @@ -48,22 +48,47 @@ }, /** + * Returns the container of the currently active app. + * + * @return app container + */ + getActiveContainer: function() { + return this.$currentContent; + }, + + /** + * Returns the currently active item + * + * @return item ID + */ + getActiveItem: function() { + return this._activeItem; + }, + + /** * Switch the currently selected item, mark it as selected and * make the content container visible, if any. + * * @param string itemId id of the navigation item to select + * @param array options "silent" to not trigger event */ - setSelectedItem: function(itemId) { - if (itemId === this._selectedItem) { + setActiveItem: function(itemId, options) { + if (itemId === this._activeItem) { return; } - this._selectedItem = itemId; + this._activeItem = itemId; this.$el.find('li').removeClass('selected'); if (this.$currentContent) { this.$currentContent.addClass('hidden'); + this.$currentContent.trigger(jQuery.Event('hide')); } this.$currentContent = $('#app-content-' + itemId); this.$currentContent.removeClass('hidden'); this.$el.find('li[data-id=' + itemId + ']').addClass('selected'); + if (!options || !options.silent) { + this.$currentContent.trigger(jQuery.Event('show')); + this.$el.trigger(new $.Event('itemChanged', {itemId: itemId})); + } }, /** @@ -72,7 +97,8 @@ _onClickItem: function(ev) { var $target = $(ev.target); var itemId = $target.closest('li').attr('data-id'); - this.setSelectedItem(itemId); + this.setActiveItem(itemId); + return false; } }; |