|
|
|
Page.Wizard = new Class({
|
|
|
|
|
|
|
|
Extends: Page.Settings,
|
|
|
|
|
|
|
|
name: 'wizard',
|
|
|
|
has_tab: false,
|
|
|
|
wizard_only: true,
|
|
|
|
|
|
|
|
headers: {
|
|
|
|
'general': {
|
|
|
|
'title': 'General',
|
|
|
|
'description': 'If you want to access CP from outside your local network, you better secure it a bit with a username & password.'
|
|
|
|
},
|
|
|
|
'downloaders': {
|
|
|
|
'title': 'What download apps are you using?',
|
|
|
|
'description': 'If you don\'t have any of these listed, you have to use Blackhole. Or drop me a line, maybe I\'ll support your download app.'
|
|
|
|
},
|
|
|
|
'providers': {
|
|
|
|
'title': 'Are you registered at any of these sites?',
|
|
|
|
'description': 'CP uses these sites to search for movies. A few free are enabled by default, but it\'s always better to have a few more.'
|
|
|
|
},
|
|
|
|
'renamer': {
|
|
|
|
'title': 'Move & rename the movies after downloading?',
|
|
|
|
'description': ''
|
|
|
|
},
|
|
|
|
'finish': {
|
|
|
|
'title': 'Finish Up',
|
|
|
|
'description': 'Are you done? Did you fill in everything or as much as possible? Yes, ok gogogo!',
|
|
|
|
'content': new Element('div').adopt(
|
|
|
|
new Element('a.button.green', {
|
|
|
|
'text': 'I\'m ready to start the awesomeness, wow this button is big and green!',
|
|
|
|
'events': {
|
|
|
|
'click': function(e){
|
|
|
|
(e).stop();
|
|
|
|
Api.request('settings.save', {
|
|
|
|
'data': {
|
|
|
|
'section': 'core',
|
|
|
|
'name': 'show_wizard',
|
|
|
|
'value': 0
|
|
|
|
},
|
|
|
|
'useSpinner': true,
|
|
|
|
'spinnerOptions': {
|
|
|
|
'target': self.el
|
|
|
|
},
|
|
|
|
'onComplete': function(){
|
|
|
|
window.location = App.createUrl();
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
})
|
|
|
|
)
|
|
|
|
}
|
|
|
|
},
|
|
|
|
groups: ['general', 'downloaders', 'searcher', 'providers', 'renamer', 'finish'],
|
|
|
|
|
|
|
|
open: function(action, params){
|
|
|
|
var self = this;
|
|
|
|
|
|
|
|
if(!self.initialized){
|
|
|
|
App.fireEvent('unload');
|
|
|
|
App.getBlock('header').hide();
|
|
|
|
|
|
|
|
self.parent(action, params);
|
|
|
|
|
|
|
|
self.addEvent('create', function(){
|
|
|
|
var mnn = new MultipleNewznab('Wizard');
|
|
|
|
mnn.addSettings();
|
|
|
|
|
|
|
|
self.order();
|
|
|
|
});
|
|
|
|
|
|
|
|
self.initialized = true;
|
|
|
|
|
|
|
|
self.scroll = new Fx.Scroll(document.body, {
|
|
|
|
'transition': 'quint:in:out'
|
|
|
|
});
|
|
|
|
}
|
|
|
|
else
|
|
|
|
(function(){
|
|
|
|
var sc = self.el.getElement('.wgroup_'+action);
|
|
|
|
self.scroll.start(0, sc.getCoordinates().top-80);
|
|
|
|
}).delay(1)
|
|
|
|
},
|
|
|
|
|
|
|
|
order: function(){
|
|
|
|
var self = this;
|
|
|
|
|
|
|
|
var form = self.el.getElement('.uniForm');
|
|
|
|
var tabs = self.el.getElement('.tabs');
|
|
|
|
|
|
|
|
self.groups.each(function(group){
|
|
|
|
if(self.headers[group]){
|
|
|
|
group_container = new Element('.wgroup_'+group, {
|
|
|
|
'styles': {
|
|
|
|
'opacity': 0.2
|
|
|
|
},
|
|
|
|
'tween': {
|
|
|
|
'duration': 350
|
|
|
|
}
|
|
|
|
});
|
|
|
|
group_container.adopt(
|
|
|
|
new Element('h1', {
|
|
|
|
'text': self.headers[group].title
|
|
|
|
}),
|
|
|
|
self.headers[group].description ? new Element('span.description', {
|
|
|
|
'text': self.headers[group].description
|
|
|
|
}) : null,
|
|
|
|
self.headers[group].content ? self.headers[group].content : null
|
|
|
|
).inject(form);
|
|
|
|
}
|
|
|
|
|
|
|
|
var tab_navigation = tabs.getElement('.t_'+group);
|
|
|
|
if(tab_navigation && group_container){
|
|
|
|
tab_navigation.inject(tabs); // Tab navigation
|
|
|
|
self.el.getElement('.tab_'+group).inject(group_container); // Tab content
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
new Element('li.t_'+group).adopt(
|
|
|
|
new Element('a', {
|
|
|
|
'href': App.createUrl('wizard/'+group),
|
|
|
|
'text': group.capitalize()
|
|
|
|
})
|
|
|
|
).inject(tabs);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
// Remove toggle
|
|
|
|
self.el.getElement('.advanced_toggle').destroy();
|
|
|
|
|
|
|
|
// Hide retention
|
|
|
|
self.el.getElement('.tab_searcher').hide();
|
|
|
|
self.el.getElement('.t_searcher').hide();
|
|
|
|
|
|
|
|
// Add pointer
|
|
|
|
new Element('.tab_wrapper').wraps(tabs).adopt(
|
|
|
|
self.pointer = new Element('.pointer', {
|
|
|
|
'tween': {
|
|
|
|
'transition': 'quint:in:out'
|
|
|
|
}
|
|
|
|
})
|
|
|
|
);
|
|
|
|
|
|
|
|
// Add nav
|
|
|
|
var minimum = self.el.getSize().y-window.getSize().y;
|
|
|
|
self.groups.each(function(group, nr){
|
|
|
|
|
|
|
|
var g = self.el.getElement('.wgroup_'+group);
|
|
|
|
if(!g || !g.isVisible()) return;
|
|
|
|
var t = self.el.getElement('.t_'+group);
|
|
|
|
if(!t) return;
|
|
|
|
|
|
|
|
var func = function(){
|
|
|
|
var ct = t.getCoordinates();
|
|
|
|
self.pointer.tween('left', ct.left+(ct.width/2)-(self.pointer.getWidth()/2));
|
|
|
|
g.tween('opacity', 1);
|
|
|
|
}
|
|
|
|
|
|
|
|
if(nr == 0)
|
|
|
|
func();
|
|
|
|
|
|
|
|
|
|
|
|
var ss = new ScrollSpy( {
|
|
|
|
min: function(){
|
|
|
|
var c = g.getCoordinates();
|
|
|
|
var top = c.top-(window.getSize().y/2);
|
|
|
|
return top > minimum ? minimum : top
|
|
|
|
},
|
|
|
|
max: function(){
|
|
|
|
var c = g.getCoordinates();
|
|
|
|
return c.top+(c.height/2)
|
|
|
|
},
|
|
|
|
onEnter: func,
|
|
|
|
onLeave: function(){
|
|
|
|
g.tween('opacity', 0.2)
|
|
|
|
}
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
var ScrollSpy = new Class( {
|
|
|
|
Implements : [ Options, Events ],
|
|
|
|
|
|
|
|
options : {
|
|
|
|
min : 0,
|
|
|
|
mode : "vertical",
|
|
|
|
max : 0,
|
|
|
|
container : window,
|
|
|
|
onEnter : Function.from(),
|
|
|
|
onLeave : Function.from(),
|
|
|
|
onTick : Function.from()
|
|
|
|
},
|
|
|
|
initialize : function(b) {
|
|
|
|
this.setOptions(b);
|
|
|
|
this.container = $(this.options.container);
|
|
|
|
this.enters = this.leaves = 0;
|
|
|
|
this.timer = 0;
|
|
|
|
|
|
|
|
if (this.options.max == 0) {
|
|
|
|
var c = this.container.getScrollSize();
|
|
|
|
this.options.max = this.options.mode == "vertical" ? c.y : c.x;
|
|
|
|
}
|
|
|
|
this.addListener();
|
|
|
|
},
|
|
|
|
addListener : function() {
|
|
|
|
var self = this;
|
|
|
|
|
|
|
|
self.inside = false;
|
|
|
|
self.container.addEvent("scroll", function() {
|
|
|
|
if(self.timer) clearTimeout(self.timer);
|
|
|
|
self.timer = self.scrollHandler();
|
|
|
|
});
|
|
|
|
},
|
|
|
|
|
|
|
|
scrollHandler: function(){
|
|
|
|
var self = this;
|
|
|
|
|
|
|
|
var b = self.container.getScroll();
|
|
|
|
var c = self.options.mode == "vertical" ? b.y : b.x;
|
|
|
|
|
|
|
|
var min = typeOf(self.options.min) == 'function' ? self.options.min() : self.options.min;
|
|
|
|
var max = typeOf(self.options.max) == 'function' ? self.options.max() : self.options.max;
|
|
|
|
|
|
|
|
if (c >= min && c <= max) {
|
|
|
|
if (!self.inside) {
|
|
|
|
self.inside = true;
|
|
|
|
self.enters++;
|
|
|
|
self.fireEvent("enter", [ b, this.enters ]);
|
|
|
|
}
|
|
|
|
self.fireEvent("tick", [ b, self.inside, self.enters, self.leaves ]);
|
|
|
|
} else {
|
|
|
|
if (self.inside) {
|
|
|
|
self.inside = false;
|
|
|
|
self.leaves++;
|
|
|
|
self.fireEvent("leave", [ b, self.leaves ]);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|