mirror of https://github.com/nextcloud/server.git
Files app navigation can now switch
- added new OCA.Files namespace for files classes - the sidebar can now switch between views/containers - the trashbin renders in its own container but currently doesn't work due to overrides - added app.js as entry point for JS code (ideally all other files should only contain classes and not trigger anything)remotes/origin/ldap_group_count
parent
88ebb15f1d
commit
fb10bf4048
@ -0,0 +1,25 @@
|
||||
/*
|
||||
* Copyright (c) 2014
|
||||
*
|
||||
* @author Vincent Petry
|
||||
* @copyright 2014 Vincent Petry <pvince81@owncloud.com>
|
||||
*
|
||||
* This file is licensed under the Affero General Public License version 3
|
||||
* or later.
|
||||
*
|
||||
* See the COPYING-README file.
|
||||
*
|
||||
*/
|
||||
|
||||
if (!OCA.Files) {
|
||||
OCA.Files = {};
|
||||
}
|
||||
|
||||
$(document).ready(function() {
|
||||
var nav = new OCA.Files.Navigation($('#app-navigation ul'));
|
||||
|
||||
nav.setSelectedItem('files');
|
||||
|
||||
// TODO: init file list, actions and others
|
||||
});
|
||||
|
@ -0,0 +1,81 @@
|
||||
/*
|
||||
* Copyright (c) 2014
|
||||
*
|
||||
* @author Vincent Petry
|
||||
* @copyright 2014 Vincent Petry <pvince81@owncloud.com>
|
||||
*
|
||||
* This file is licensed under the Affero General Public License version 3
|
||||
* or later.
|
||||
*
|
||||
* See the COPYING-README file.
|
||||
*
|
||||
*/
|
||||
|
||||
(function() {
|
||||
|
||||
var Navigation = function($el) {
|
||||
this.initialize($el);
|
||||
};
|
||||
|
||||
Navigation.prototype = {
|
||||
|
||||
/**
|
||||
* Currently selected item in the list
|
||||
*/
|
||||
_selectedItem: null,
|
||||
|
||||
/**
|
||||
* Currently selected container
|
||||
*/
|
||||
$currentContent: null,
|
||||
|
||||
/**
|
||||
* Initializes the navigation from the given container
|
||||
* @param $el element containing the navigation
|
||||
*/
|
||||
initialize: function($el) {
|
||||
this.$el = $el;
|
||||
this._selectedItem = null;
|
||||
this.$currentContent = null;
|
||||
this._setupEvents();
|
||||
},
|
||||
|
||||
/**
|
||||
* Setup UI events
|
||||
*/
|
||||
_setupEvents: function() {
|
||||
this.$el.on('click', 'li a', _.bind(this._onClickItem, this));
|
||||
},
|
||||
|
||||
/**
|
||||
* 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
|
||||
*/
|
||||
setSelectedItem: function(itemId) {
|
||||
if (itemId === this._selectedItem) {
|
||||
return;
|
||||
}
|
||||
this._selectedItem = itemId;
|
||||
this.$el.find('li').removeClass('selected');
|
||||
if (this.$currentContent) {
|
||||
this.$currentContent.addClass('hidden');
|
||||
}
|
||||
this.$currentContent = $('#app-content-' + itemId);
|
||||
this.$currentContent.removeClass('hidden');
|
||||
this.$el.find('li[data-id=' + itemId + ']').addClass('selected');
|
||||
},
|
||||
|
||||
/**
|
||||
* Event handler for when clicking on an item.
|
||||
*/
|
||||
_onClickItem: function(ev) {
|
||||
var $target = $(ev.target);
|
||||
var itemId = $target.closest('li').attr('data-id');
|
||||
this.setSelectedItem(itemId);
|
||||
}
|
||||
};
|
||||
|
||||
OCA.Files.Navigation = Navigation;
|
||||
|
||||
})();
|
Loading…
Reference in New Issue