You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
101 lines
2.0 KiB
101 lines
2.0 KiB
Block.Navigation = new Class({
|
|
|
|
Extends: BlockBase,
|
|
|
|
create: function(){
|
|
var self = this;
|
|
|
|
self.el = new Element('div.navigation').adopt(
|
|
self.foldout = new Element('a.foldout.icon2.menu', {
|
|
'events': {
|
|
'click': self.toggleMenu.bind(self)
|
|
}
|
|
}).grab(new Element('span.overlay')),
|
|
self.logo = new Element('a.logo', {
|
|
'text': 'CouchPotato',
|
|
'href': App.createUrl('')
|
|
}),
|
|
self.nav = new Element('ul'),
|
|
self.backtotop = new Element('a.backtotop', {
|
|
'text': 'back to top',
|
|
'events': {
|
|
'click': function(){
|
|
window.scroll(0,0)
|
|
}
|
|
},
|
|
'tween': {
|
|
'duration': 100
|
|
}
|
|
})
|
|
);
|
|
|
|
new ScrollSpy({
|
|
min: 400,
|
|
onLeave: function(){
|
|
self.backtotop.fade('out')
|
|
},
|
|
onEnter: function(){
|
|
self.backtotop.fade('in')
|
|
}
|
|
});
|
|
|
|
self.nav.addEvents({
|
|
'click:relay(a)': function(){
|
|
if($(document.body).getParent().hasClass('menu_shown'))
|
|
self.toggleMenu();
|
|
}
|
|
})
|
|
|
|
},
|
|
|
|
addTab: function(name, tab){
|
|
var self = this;
|
|
|
|
return new Element('li.tab_'+(name || 'unknown')).grab(
|
|
new Element('a', tab)
|
|
).inject(self.nav)
|
|
|
|
},
|
|
|
|
removeTab: function(name) {
|
|
var self = this;
|
|
|
|
var element = self.nav.getElement('li.tab_'+name);
|
|
if (element) {
|
|
element.dispose()
|
|
}
|
|
},
|
|
|
|
toggleMenu: function(){
|
|
var self = this,
|
|
body = $(document.body),
|
|
html = body.getParent();
|
|
|
|
// Copy over settings menu
|
|
if(!self.added){
|
|
|
|
new Element('li.separator').inject(self.nav);
|
|
body.getElements('.header .more_menu.menu li a, .header .more_menu.menu li span.separator').each(function(el, nr){
|
|
if(nr <= 2) return;
|
|
if(el.get('tag') == 'a')
|
|
self.nav.grab(new Element('li').grab(el.clone().cloneEvents(el)));
|
|
else
|
|
self.nav.grab(new Element('li.separator'));
|
|
});
|
|
|
|
self.added = true;
|
|
}
|
|
|
|
html.toggleClass('menu_shown');
|
|
|
|
},
|
|
|
|
activate: function(name){
|
|
var self = this;
|
|
|
|
self.nav.getElements('.active').removeClass('active');
|
|
self.nav.getElements('.tab_'+name).addClass('active');
|
|
|
|
}
|
|
|
|
});
|
|
|