diff --git a/couchpotato/core/providers/nzb/newznab/__init__.py b/couchpotato/core/providers/nzb/newznab/__init__.py index 8af1643a..fa2f351e 100644 --- a/couchpotato/core/providers/nzb/newznab/__init__.py +++ b/couchpotato/core/providers/nzb/newznab/__init__.py @@ -9,7 +9,7 @@ config = [{ { 'tab': 'providers', 'name': 'newznab', - 'description': 'Enable multiple NewzNab providers', + 'description': 'Enable multiple NewzNab providers such as NZB.su', 'options': [ { 'name': 'enabled', @@ -22,7 +22,7 @@ config = [{ { 'name': 'host', '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', diff --git a/couchpotato/core/providers/nzb/newznab/static/newznab.js b/couchpotato/core/providers/nzb/newznab/static/newznab.js index 61d9dc12..793a4ea2 100644 --- a/couchpotato/core/providers/nzb/newznab/static/newznab.js +++ b/couchpotato/core/providers/nzb/newznab/static/newznab.js @@ -31,28 +31,51 @@ var MultipleNewznab = new Class({ }); self.inputs[name].getParent().hide() + self.inputs[name].addEvent('change', self.addEmpty.bind(self)) }); self.values.each(function(item, nr){ self.createItem(item.use, item.host, item.api_key); }); - - new Element('a.nice_button', { - 'text': 'Add new NewzNab provider', - 'events': { - 'click': function(e){ - (e).stop(); - - self.createItem(1, '', ''); - } - } - }).inject(self.fieldset.getElement('h2'), 'after'); + + new Element('div.head').adopt( + new Element('abbr.host', { + 'text': 'Host', + 'title': self.inputs['host'].getNext().get('text') + }), + new Element('abbr.api_key', { + 'text': 'Api Key', + 'title': self.inputs['api_key'].getNext().get('text') + }) + ).inject(self.fieldset.getElement('h2'), 'after'); + + self.addEmpty(); }) }, + 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){ var self = this; @@ -83,12 +106,12 @@ var MultipleNewznab = new Class({ } }), new Element('a.icon.delete', { - 'text': 'delete', 'events': { 'click': self.deleteItem.bind(self) } }) ).inject(self.fieldset); + item[!host ? 'addClass' : 'removeClass']('is_empty'); new Form.Check(checkbox, { 'onChange': checkbox.fireEvent.bind(checkbox, 'change') @@ -105,6 +128,7 @@ var MultipleNewznab = new Class({ self.items.each(function(item, nr){ self.input_types.each(function(type){ var input = item.getElement('input.'+type); + if(input.getParent('.ctrlHolder').hasClass('is_empty')) return; if(!temp[type]) temp[type] = []; temp[type][nr] = input.get('type') == 'checkbox' ? +input.get('checked') : input.get('value').trim(); @@ -125,7 +149,7 @@ var MultipleNewznab = new Class({ (e).stop(); var item = e.target.getParent(); - + self.items.erase(item); item.destroy(); diff --git a/couchpotato/core/providers/nzb/nzbs/__init__.py b/couchpotato/core/providers/nzb/nzbs/__init__.py index 1fe5a642..c4c60002 100644 --- a/couchpotato/core/providers/nzb/nzbs/__init__.py +++ b/couchpotato/core/providers/nzb/nzbs/__init__.py @@ -9,6 +9,7 @@ config = [{ { 'tab': 'providers', 'name': 'nzbs', + 'description': 'Id and Key can be found on your nzbs.org RSS page.', 'options': [ { 'name': 'enabled', @@ -17,12 +18,12 @@ config = [{ { 'name': 'id', 'label': 'Id', - 'description': 'Can be found here, the number after "&i="', + 'description': 'The number after "&i="', }, { 'name': 'api_key', 'label': 'Api Key', - 'description': 'Can be found here, the string after "&h="' + 'description': 'The string after "&h="' }, ], }, diff --git a/couchpotato/static/style/main.css b/couchpotato/static/style/main.css index 88289c6b..ec883c1c 100644 --- a/couchpotato/static/style/main.css +++ b/couchpotato/static/style/main.css @@ -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 { color: #fff; @@ -35,15 +38,24 @@ input, textarea { 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 { border:none; } a { text-decoration:none; - color: #fff; + color: #ebfcbc; outline: 0; cursor: pointer; + font-weight: bold; } a:hover { color: #f3f3f3; } diff --git a/couchpotato/static/style/page/settings.css b/couchpotato/static/style/page/settings.css index ee0641ce..ff7fd147 100644 --- a/couchpotato/static/style/page/settings.css +++ b/couchpotato/static/style/page/settings.css @@ -38,6 +38,7 @@ .page.settings .tabs a { display: block; padding: 11px 15px; + color: #fff; } .page.settings .tabs .active a { background: #4e5969; @@ -92,6 +93,7 @@ position: relative; margin-bottom: -25px; border: none; + width: 20px; } .page.settings .ctrlHolder { @@ -106,6 +108,7 @@ .page.settings .ctrlHolder:last-child { border: none; } .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:first-child, .page.settings .ctrlHolder:first-child{ background-color: transparent; } .page.settings .ctrlHolder .formHint { float: right; @@ -287,4 +290,43 @@ .page.settings .directory_list .actions:last-child > .save { background: #9dc156; - } \ No newline at end of file + } + + .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; +} \ No newline at end of file