summaryrefslogtreecommitdiffstats
path: root/apps/files/js/navigation.js
diff options
context:
space:
mode:
authorVincent Petry <pvince81@owncloud.com>2014-05-08 22:06:30 +0200
committerVincent Petry <pvince81@owncloud.com>2014-05-15 17:51:04 +0200
commit9d38e3602b2faf37d861729c52690ce51b8fee97 (patch)
tree5da63d26db4a4e8ec356dee45fc8f7804c6fe38a /apps/files/js/navigation.js
parentfb10bf4048aaf5b2a9665fc9dff217c790efe005 (diff)
downloadnextcloud-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.js38
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;
}
};