Multiple Newznab settings page style

This commit is contained in:
Ruud
2011-09-06 12:10:03 +02:00
parent 630e79ccb6
commit 577c87ff2b
5 changed files with 99 additions and 20 deletions
@@ -9,7 +9,7 @@ config = [{
{ {
'tab': 'providers', 'tab': 'providers',
'name': 'newznab', 'name': 'newznab',
'description': 'Enable multiple NewzNab providers', 'description': 'Enable multiple NewzNab providers such as <a href="http://nzb.su" target="_blank">NZB.su</a>',
'options': [ 'options': [
{ {
'name': 'enabled', 'name': 'enabled',
@@ -22,7 +22,7 @@ config = [{
{ {
'name': 'host', 'name': 'host',
'default': 'http://nzb.su', 'default': 'http://nzb.su',
'description': 'The hostname of your newznab provider, like http://nzb.su' 'description': 'The hostname of your newznab provider'
}, },
{ {
'name': 'api_key', 'name': 'api_key',
@@ -31,6 +31,7 @@ var MultipleNewznab = new Class({
}); });
self.inputs[name].getParent().hide() self.inputs[name].getParent().hide()
self.inputs[name].addEvent('change', self.addEmpty.bind(self))
}); });
@@ -38,21 +39,43 @@ var MultipleNewznab = new Class({
self.createItem(item.use, item.host, item.api_key); self.createItem(item.use, item.host, item.api_key);
}); });
new Element('a.nice_button', { new Element('div.head').adopt(
'text': 'Add new NewzNab provider', new Element('abbr.host', {
'events': { 'text': 'Host',
'click': function(e){ 'title': self.inputs['host'].getNext().get('text')
(e).stop(); }),
new Element('abbr.api_key', {
'text': 'Api Key',
'title': self.inputs['api_key'].getNext().get('text')
})
).inject(self.fieldset.getElement('h2'), 'after');
self.createItem(1, '', ''); self.addEmpty();
}
}
}).inject(self.fieldset.getElement('h2'), 'after');
}) })
}, },
add_empty_timeout: 0,
addEmpty: function(){
var self = this;
if(self.add_empty_timeout) clearTimeout(self.add_empty_timeout);
var has_empty = false;
self.items.each(function(ctrl_holder){
if(ctrl_holder.getElement('.host').get('value') == '' && ctrl_holder.getElement('.api_key').get('value') == ''){
has_empty = true;
}
ctrl_holder[has_empty ? 'addClass' : 'removeClass']('is_empty');
});
if(has_empty) return;
self.add_empty_timeout = setTimeout(function(){
self.createItem(false);
}, 10);
},
createItem: function(use, host, api){ createItem: function(use, host, api){
var self = this; var self = this;
@@ -83,12 +106,12 @@ var MultipleNewznab = new Class({
} }
}), }),
new Element('a.icon.delete', { new Element('a.icon.delete', {
'text': 'delete',
'events': { 'events': {
'click': self.deleteItem.bind(self) 'click': self.deleteItem.bind(self)
} }
}) })
).inject(self.fieldset); ).inject(self.fieldset);
item[!host ? 'addClass' : 'removeClass']('is_empty');
new Form.Check(checkbox, { new Form.Check(checkbox, {
'onChange': checkbox.fireEvent.bind(checkbox, 'change') 'onChange': checkbox.fireEvent.bind(checkbox, 'change')
@@ -105,6 +128,7 @@ var MultipleNewznab = new Class({
self.items.each(function(item, nr){ self.items.each(function(item, nr){
self.input_types.each(function(type){ self.input_types.each(function(type){
var input = item.getElement('input.'+type); var input = item.getElement('input.'+type);
if(input.getParent('.ctrlHolder').hasClass('is_empty')) return;
if(!temp[type]) temp[type] = []; if(!temp[type]) temp[type] = [];
temp[type][nr] = input.get('type') == 'checkbox' ? +input.get('checked') : input.get('value').trim(); temp[type][nr] = input.get('type') == 'checkbox' ? +input.get('checked') : input.get('value').trim();
@@ -9,6 +9,7 @@ config = [{
{ {
'tab': 'providers', 'tab': 'providers',
'name': 'nzbs', 'name': 'nzbs',
'description': 'Id and Key can be found <a href="http://nzbs.org/index.php?action=rss" target="_blank">on your nzbs.org RSS page</a>.',
'options': [ 'options': [
{ {
'name': 'enabled', 'name': 'enabled',
@@ -17,12 +18,12 @@ config = [{
{ {
'name': 'id', 'name': 'id',
'label': 'Id', 'label': 'Id',
'description': 'Can be found <a href="http://nzbs.org/index.php?action=rss" target="_blank">here</a>, the number after "&amp;i="', 'description': 'The number after "&amp;i="',
}, },
{ {
'name': 'api_key', 'name': 'api_key',
'label': 'Api Key', 'label': 'Api Key',
'description': 'Can be found <a href="http://nzbs.org/index.php?action=rss" target="_blank">here</a>, the string after "&amp;h="' 'description': 'The string after "&amp;h="'
}, },
], ],
}, },
+14 -2
View File
@@ -1,4 +1,7 @@
/* @override http://localhost:5000/static/style/main.css */ /* @override
http://localhost:5000/static/style/main.css
http://192.168.1.20:5000/static/style/main.css
*/
html { html {
color: #fff; color: #fff;
@@ -35,15 +38,24 @@ input, textarea {
font-family: "Helvetica Neue", Helvetica, Arial, Geneva, sans-serif; font-family: "Helvetica Neue", Helvetica, Arial, Geneva, sans-serif;
} }
input:-moz-placeholder, textarea:-moz-placeholder {
color: rgba(255, 255, 255, 0.6);
}
::-webkit-input-placeholder, ::-webkit-textarea-placeholder {
color: rgba(255, 255, 255, 0.6);
}
a img { a img {
border:none; border:none;
} }
a { a {
text-decoration:none; text-decoration:none;
color: #fff; color: #ebfcbc;
outline: 0; outline: 0;
cursor: pointer; cursor: pointer;
font-weight: bold;
} }
a:hover { color: #f3f3f3; } a:hover { color: #f3f3f3; }
@@ -38,6 +38,7 @@
.page.settings .tabs a { .page.settings .tabs a {
display: block; display: block;
padding: 11px 15px; padding: 11px 15px;
color: #fff;
} }
.page.settings .tabs .active a { .page.settings .tabs .active a {
background: #4e5969; background: #4e5969;
@@ -92,6 +93,7 @@
position: relative; position: relative;
margin-bottom: -25px; margin-bottom: -25px;
border: none; border: none;
width: 20px;
} }
.page.settings .ctrlHolder { .page.settings .ctrlHolder {
@@ -106,6 +108,7 @@
.page.settings .ctrlHolder:last-child { border: none; } .page.settings .ctrlHolder:last-child { border: none; }
.page.settings .ctrlHolder:hover { background-color: rgba(255,255,255,0.05); } .page.settings .ctrlHolder:hover { background-color: rgba(255,255,255,0.05); }
.page.settings .ctrlHolder.focused { background-color: rgba(255,255,255,0.2); } .page.settings .ctrlHolder.focused { background-color: rgba(255,255,255,0.2); }
.page.settings .ctrlHolder.focused:first-child, .page.settings .ctrlHolder:first-child{ background-color: transparent; }
.page.settings .ctrlHolder .formHint { .page.settings .ctrlHolder .formHint {
float: right; float: right;
@@ -288,3 +291,42 @@
.page.settings .directory_list .actions:last-child > .save { .page.settings .directory_list .actions:last-child > .save {
background: #9dc156; background: #9dc156;
} }
.page.settings .section_newznab {
}
.page.settings .section_newznab .head {
margin: 0 0 0 60px;
}
.page.settings .section_newznab .head abbr {
display: inline-block;
font-weight: bold;
border-bottom: 1px dotted #fff;
line-height: 140%;
cursor: help;
}
.page.settings .section_newznab .head abbr.host {
margin-right: 197px;
}
.page.settings .section_newznab .ctrlHolder {
padding-top: 2px;
padding-bottom: 3px;
}
.page.settings .section_newznab .ctrlHolder > * {
margin: 0 10px 0 0;
}
.page.settings .section_newznab .ctrlHolder .delete {
display: inline-block;
width: 22px;
height: 22px;
vertical-align: middle;
background-position: left center;
}
.page.settings .section_newznab .ctrlHolder.is_empty .delete, .page.settings .section_newznab .ctrlHolder.is_empty .use {
visibility: hidden;
}