From 6489905690c86293eb03acb81fe275b38c6fc0af Mon Sep 17 00:00:00 2001 From: Supremicus Date: Wed, 29 Oct 2014 10:50:38 +1000 Subject: [PATCH] Feature/config_provider_improvements * Styled config_providers to match new config_general styling * Removed qtip from providers and converted back to a tab * Removed superfish-1.4.8.js and supersubs-0.2b.js as they no longer break provider sorting with qtip removed and is no longer required due to new UI --- CHANGES.md | 5 +- gui/slick/css/dark.css | 2 +- gui/slick/css/light.css | 2 +- gui/slick/css/style.css | 2 +- .../interfaces/default/config_providers.tmpl | 583 ++++++++++-------- gui/slick/interfaces/default/inc_top.tmpl | 2 - gui/slick/js/configProviders.js | 102 +-- gui/slick/js/lib/superfish-1.4.8.js | 120 ---- gui/slick/js/lib/supersubs-0.2b.js | 90 --- 9 files changed, 325 insertions(+), 583 deletions(-) delete mode 100644 gui/slick/js/lib/superfish-1.4.8.js delete mode 100644 gui/slick/js/lib/supersubs-0.2b.js diff --git a/CHANGES.md b/CHANGES.md index 65e29848..fc777a89 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,4 +1,4 @@ -### 0.x.x (2014-10-27 xx:xx:xx UTC) +### 0.x.x (2014-10-29 xx:xx:xx UTC) * Add Bootstrap for UI features * Change UI to resize fluidly on different display sizes, fixes the issue where top menu items would disappear on smaller screens. @@ -26,6 +26,9 @@ * Fix Layout "Poster" sort of Paused, Ended, and Continuing shows as they were random * Fix Layout "Simple" sort of tvrage "New" and "Returning" series by changing status column text to "Continuing" * Add dark spinner to "Add New Show" (searching indexers), "Add existing shows" (Loading Folders), Coming Eps and all config pages (when saving) +* Styled config_providers to match new config_general styling +* Removed qtip from providers and converted back to a tab +* Removed superfish-1.4.8.js and supersubs-0.2b.js as they no longer break provider sorting with qtip removed and is no longer required due to new UI ### 0.2.1 (2014-10-22 06:41:00 UTC) diff --git a/gui/slick/css/dark.css b/gui/slick/css/dark.css index 5d0bf275..70f58028 100644 --- a/gui/slick/css/dark.css +++ b/gui/slick/css/dark.css @@ -1498,7 +1498,7 @@ config*.tmpl margin-right: 6px; } -#config .nocheck, #config div #customQuality, .metadataDiv, .providerDiv { +#config .nocheck, #config div #customQuality, .metadataDiv { padding-left: 20px; } diff --git a/gui/slick/css/light.css b/gui/slick/css/light.css index feac4096..11f4aa81 100644 --- a/gui/slick/css/light.css +++ b/gui/slick/css/light.css @@ -1475,7 +1475,7 @@ config*.tmpl margin-right: 6px; } -#config .nocheck, #config div #customQuality, .metadataDiv, .providerDiv { +#config .nocheck, #config div #customQuality, .metadataDiv { padding-left: 20px; } diff --git a/gui/slick/css/style.css b/gui/slick/css/style.css index a6b4d1a5..c774ee14 100644 --- a/gui/slick/css/style.css +++ b/gui/slick/css/style.css @@ -1534,7 +1534,7 @@ config*.tmpl float: left; } -#config .nocheck, #config div #customQuality, .metadataDiv, .providerDiv { +#config .nocheck, #config div #customQuality, .metadataDiv { padding-left: 20px; } diff --git a/gui/slick/interfaces/default/config_providers.tmpl b/gui/slick/interfaces/default/config_providers.tmpl index 448e4005..1dd95505 100644 --- a/gui/slick/interfaces/default/config_providers.tmpl +++ b/gui/slick/interfaces/default/config_providers.tmpl @@ -11,9 +11,9 @@ #include $os.path.join($sickbeard.PROG_DIR, "gui/slick/interfaces/default/inc_top.tmpl") #if $varExists('header') -

$header

+

$header

#else -

$title

+

$title

#end if @@ -43,19 +43,19 @@ var show_nzb_providers = #if $sickbeard.USE_NZBS then "true" else "false"#; #end if
-
+
-
+
@@ -63,7 +63,7 @@ var show_nzb_providers = #if $sickbeard.USE_NZBS then "true" else "false"#;

Provider Priorities

-

Check off, configure and drag the providers into the order you want them to be used.

+

Check off and drag the providers into the order you want them to be used.

At least one provider is required but two are recommended.

#if not $sickbeard.USE_NZBS or not $sickbeard.USE_TORRENTS: @@ -75,7 +75,7 @@ var show_nzb_providers = #if $sickbeard.USE_NZBS then "true" else "false"#;

*

Provider does not support backlog searches at this time.

**

Provider supports limited backlog searches, all episodes/qualities may not be available.

-

!

Provider is NOT WORKING.

+

!

Provider is NOT WORKING.

@@ -106,14 +106,15 @@ var show_nzb_providers = #if $sickbeard.USE_NZBS then "true" else "false"#;
-

Configure Built-In
Providers

+

Provider Options

+

Configure individual provider settings here.

Check with provider's website on how to obtain an API key if needed.

- - #for $curNewznabProvider in [$curProvider for $curProvider in $sickbeard.newznabProviderList]: -
+ + #for $curNewznabProvider in [$curProvider for $curProvider in $sickbeard.newznabProviderList]: +
#if $curNewznabProvider.default and $curNewznabProvider.needs_auth
-
-
#end if - #if $hasattr($curNewznabProvider, 'enable_daily'): + #if $hasattr($curNewznabProvider, 'enable_daily'):
-
#end if - + #if $hasattr($curNewznabProvider, 'enable_backlog'):
-
#end if #if $hasattr($curNewznabProvider, 'search_fallback'):
-
#end if #if $hasattr($curNewznabProvider, 'search_mode'):
-
#end if -
- #end for +
+ #end for - #for $curNzbProvider in [$curProvider for $curProvider in $sickbeard.providers.sortedProviderList() if $curProvider.providerType == $GenericProvider.NZB]: -
+ #for $curNzbProvider in [$curProvider for $curProvider in $sickbeard.providers.sortedProviderList() if $curProvider.providerType == $GenericProvider.NZB and $curProvider not in $sickbeard.newznabProviderList]: +
#if $hasattr($curNzbProvider, 'username'):
-
#end if #if $hasattr($curNzbProvider, 'api_key'):
-
#end if - #if $hasattr($curNzbProvider, 'enable_daily'): -
- - -
- #end if - - #if $hasattr($curNzbProvider, 'enable_backlog'): -
- - -
- #end if + #if $hasattr($curNzbProvider, 'enable_daily'): +
+ +
+ #end if + + #if $hasattr($curNzbProvider, 'enable_backlog'): +
+ +
+ #end if #if $hasattr($curNzbProvider, 'search_fallback'):
-
#end if #if $hasattr($curNzbProvider, 'search_mode'):
-
#end if -
- #end for +
+ #end for - #for $curTorrentProvider in [$curProvider for $curProvider in $sickbeard.providers.sortedProviderList() if $curProvider.providerType == $GenericProvider.TORRENT]: -
+ #for $curTorrentProvider in [$curProvider for $curProvider in $sickbeard.providers.sortedProviderList() if $curProvider.providerType == $GenericProvider.TORRENT]: +
#if $hasattr($curTorrentProvider, 'api_key'):
-
#end if #if $hasattr($curTorrentProvider, 'digest'):
-
#end if #if $hasattr($curTorrentProvider, 'hash'):
-
#end if - #if $hasattr($curTorrentProvider, 'options'): -
- -
- Advanced Options -
- -
-
- -
-
- -
-
-
- #end if - #if $hasattr($curTorrentProvider, 'username'):
-
#end if #if $hasattr($curTorrentProvider, 'password'):
-
#end if #if $hasattr($curTorrentProvider, 'passkey'):
-
#end if #if $hasattr($curTorrentProvider, 'ratio'):
-
#end if #if $hasattr($curTorrentProvider, 'minseed'):
-
#end if #if $hasattr($curTorrentProvider, 'minleech'):
-
#end if #if $hasattr($curTorrentProvider, 'proxy'):
- -
#if $hasattr($curTorrentProvider.proxy, 'url'):
-
- #end for +
+ #end for - +
- #if $sickbeard.USE_NZBS + #if $sickbeard.USE_NZBS

Configure Custom
Newznab Providers

-

Add and setup custom Newznab providers.

-

Some built-in Newznab providers are already available above.

+

Add and setup or remove custom Newznab providers.

-
-
-
- -
- - - + +
+ + +
- -
- -
- -
+ +
+ +
+ +
- #end if + #end if - #if $sickbeard.USE_TORRENTS: + #if $sickbeard.USE_TORRENTS:

Configure Custom Torrent Providers

-

Add and setup custom RSS providers.

-

 

+

Add and setup or remove custom RSS providers.

-
-
+
-
-
-
-
- -
- -
-
+
+ +
+ +
+
- #end if + #end if

- -
+ + - - diff --git a/gui/slick/js/configProviders.js b/gui/slick/js/configProviders.js index 6ad8fe11..b7eb56af 100644 --- a/gui/slick/js/configProviders.js +++ b/gui/slick/js/configProviders.js @@ -5,11 +5,11 @@ $(document).ready(function(){ var providerName = $(this).attr('id'); var selectedProvider = $('#editAProvider :selected').val(); - if (selectedProvider+'Div' == providerName) + if (selectedProvider + 'Div' == providerName) { $(this).show(); - else + } else { $(this).hide(); - + } }); } @@ -25,7 +25,6 @@ $(document).ready(function(){ var url = selectedProvider[1]; var key = selectedProvider[2]; - if (!name) return; @@ -205,12 +204,8 @@ $(document).ready(function(){ else { updateNewznabCaps( null, data ); } - - - } } - } ifExists = function(loopThroughArray, searchFor) { @@ -252,12 +247,8 @@ $(document).ready(function(){ }); $("#newznab_cap").replaceOptions(newCapOptions); } - }); }; - - - } $.fn.makeNewznabProviderString = function() { @@ -326,91 +317,9 @@ $(document).ready(function(){ $("#provider_order").val(finalArr.join(' ')); } - $.fn.hideConfigTab = function () { - - $("#config-components").tabs( "disable", 1 ); - $("#config-components ul li:eq(1)").hide(); - - }; - - $.fn.showProvidersConfig = function () { - - $("#provider_order_list li").each(function( index ) { - - if ($(this).find("input").attr("checked")) { - $(this).addTip(); - } else { - $(this).qtip('destroy'); - } - }); - }; - - $.fn.addTip = function() { - - var config_id = $(this).find("input").attr('id').replace("enable_", "") + "Div"; - var config_form = '
' + $("div[id*="+config_id+"]").html() + '
' - var provider_name = $.trim($(this).text()).replace('*','') - - if ($("div[id*="+config_id+"]").length == 0) { - return false - } - - $(this).qtip({ - - overwrite: true, - position: { - adjust: { - x: 0, y: 0, - }, - my: 'left top', - at: 'top right', - }, - show: { - event: 'mouseenter', // Show it on click... - target: false, - solo: true, - delay: 90, - effect: true, - }, - hide: { - fixed: true, - delay: 900, - }, - content: { - text: config_form, - title: { - text: provider_name + ' Config', - button: true - } - }, - style: { - border: { - width: 5, - radius: 2, - color: '#e1e1e1' - }, - width: 400, - background: '#FFF', - padding: 15, - tip: true, // Give it a speech bubble tip with automatic corner detection - classes: 'qtip-dark qtip-shadow', - }, - }); - - } - var newznabProviders = new Array(); var torrentRssProviders = new Array(); - $("#provider_order_list li").on('change', function() { - if ($(this).find("input").attr("checked")) { - $(this).addTip(); - $(this).qtip('show'); - } else { - $(this).qtip('destroy'); - } - }); - $(this).on('change', '.newznab_key', function(){ var provider_id = $(this).attr('id'); @@ -660,18 +569,13 @@ $(document).ready(function(){ $.fn.newznabProvidersCapabilities = []; - - $(this).hideConfigTab(); $(this).showHideProviders(); - $(this).showProvidersConfig(); - $("#provider_order_list").sortable({ placeholder: 'ui-state-highlight', update: function (event, ui) { $(this).refreshProviderList(); - ui.item.qtip('reposition'); } }); diff --git a/gui/slick/js/lib/superfish-1.4.8.js b/gui/slick/js/lib/superfish-1.4.8.js deleted file mode 100644 index 419fa51b..00000000 --- a/gui/slick/js/lib/superfish-1.4.8.js +++ /dev/null @@ -1,120 +0,0 @@ - -/* - * Superfish v1.4.8 - jQuery menu widget - * Copyright (c) 2008 Joel Birch - * - * Dual licensed under the MIT and GPL licenses: - * http://www.opensource.org/licenses/mit-license.php - * http://www.gnu.org/licenses/gpl.html - * - * CHANGELOG: http://users.tpg.com.au/j_birch/plugins/superfish/changelog.txt - */ - -;(function($){ - $.fn.superfish = function(op){ - - var sf = $.fn.superfish, - c = sf.c, - $arrow = $([' »'].join('')), - over = function(){ - var $$ = $(this), menu = getMenu($$); - clearTimeout(menu.sfTimer); - $$.showSuperfishUl().siblings().hideSuperfishUl(); - }, - out = function(){ - var $$ = $(this), menu = getMenu($$), o = sf.op; - clearTimeout(menu.sfTimer); - menu.sfTimer=setTimeout(function(){ - o.retainPath=($.inArray($$[0],o.$path)>-1); - $$.hideSuperfishUl(); - if (o.$path.length && $$.parents(['li.',o.hoverClass].join('')).length<1){over.call(o.$path);} - },o.delay); - }, - getMenu = function($menu){ - var menu = $menu.parents(['ul.',c.menuClass,':first'].join(''))[0]; - sf.op = sf.o[menu.serial]; - return menu; - }, - addArrow = function($a){ $a.addClass(c.anchorClass).append($arrow.clone()); }; - - return this.each(function() { - var s = this.serial = sf.o.length; - var o = $.extend({},sf.defaults,op); - o.$path = $('li.'+o.pathClass,this).slice(0,o.pathLevels).each(function(){ - $(this).addClass([o.hoverClass,c.bcClass].join(' ')) - .filter('li:has(ul)').removeClass(o.pathClass); - }); - sf.o[s] = sf.op = o; - - $('li:has(ul)',this)[($.fn.hoverIntent && !o.disableHI) ? 'hoverIntent' : 'hover'](over,out).each(function() { - if (o.autoArrows) addArrow( $('>a:first-child',this) ); - }) - .not('.'+c.bcClass) - .hideSuperfishUl(); - - var $a = $('a',this); - $a.each(function(i){ - var $li = $a.eq(i).parents('li'); - $a.eq(i).focus(function(){over.call($li);}).blur(function(){out.call($li);}); - }); - o.onInit.call(this); - - }).each(function() { - var menuClasses = [c.menuClass]; - if (sf.op.dropShadows && !($.browser.msie && $.browser.version < 7)) menuClasses.push(c.shadowClass); - $(this).addClass(menuClasses.join(' ')); - }); - }; - - var sf = $.fn.superfish; - sf.o = []; - sf.op = {}; - sf.IE7fix = function(){ - var o = sf.op; - if ($.browser.msie && $.browser.version > 6 && o.dropShadows && o.animation.opacity!=undefined) - this.toggleClass(sf.c.shadowClass+'-off'); - }; - sf.c = { - bcClass : 'sf-breadcrumb', - menuClass : 'sf-js-enabled', - anchorClass : 'sf-with-ul', - arrowClass : 'sf-sub-indicator', - shadowClass : 'sf-shadow' - }; - sf.defaults = { - hoverClass : 'sfHover', - pathClass : 'overideThisToUse', - pathLevels : 1, - delay : 800, - animation : {opacity:'show'}, - speed : 'normal', - autoArrows : true, - dropShadows : true, - disableHI : false, // true disables hoverIntent detection - onInit : function(){}, // callback functions - onBeforeShow: function(){}, - onShow : function(){}, - onHide : function(){} - }; - $.fn.extend({ - hideSuperfishUl : function(){ - var o = sf.op, - not = (o.retainPath===true) ? o.$path : ''; - o.retainPath = false; - var $ul = $(['li.',o.hoverClass].join(''),this).add(this).not(not).removeClass(o.hoverClass) - .find('>ul').hide().css('visibility','hidden'); - o.onHide.call($ul); - return this; - }, - showSuperfishUl : function(){ - var o = sf.op, - sh = sf.c.shadowClass+'-off', - $ul = this.addClass(o.hoverClass) - .find('>ul:hidden').css('visibility','visible'); - sf.IE7fix.call($ul); - o.onBeforeShow.call($ul); - $ul.animate(o.animation,o.speed,function(){ sf.IE7fix.call($ul); o.onShow.call($ul); }); - return this; - } - }); -})(jQuery); diff --git a/gui/slick/js/lib/supersubs-0.2b.js b/gui/slick/js/lib/supersubs-0.2b.js deleted file mode 100644 index 45221510..00000000 --- a/gui/slick/js/lib/supersubs-0.2b.js +++ /dev/null @@ -1,90 +0,0 @@ - -/* - * Supersubs v0.2b - jQuery plugin - * Copyright (c) 2008 Joel Birch - * - * Dual licensed under the MIT and GPL licenses: - * http://www.opensource.org/licenses/mit-license.php - * http://www.gnu.org/licenses/gpl.html - * - * - * This plugin automatically adjusts submenu widths of suckerfish-style menus to that of - * their longest list item children. If you use this, please expect bugs and report them - * to the jQuery Google Group with the word 'Superfish' in the subject line. - * - */ - -;(function($){ // $ will refer to jQuery within this closure - - $.fn.supersubs = function(options){ - var opts = $.extend({}, $.fn.supersubs.defaults, options); - // return original object to support chaining - return this.each(function() { - // cache selections - var $$ = $(this); - // support metadata - var o = $.meta ? $.extend({}, opts, $$.data()) : opts; - // get the font size of menu. - // .css('fontSize') returns various results cross-browser, so measure an em dash instead - var fontsize = $('').css({ - 'padding' : 0, - 'position' : 'absolute', - 'top' : '-999em', - 'width' : 'auto' - }).appendTo($$).width(); //clientWidth is faster, but was incorrect here - // remove em dash - $('#menu-fontsize').remove(); - // cache all ul elements - $ULs = $$.find('ul'); - // loop through each ul in menu - $ULs.each(function(i) { - // cache this ul - var $ul = $ULs.eq(i); - // get all (li) children of this ul - var $LIs = $ul.children(); - // get all anchor grand-children - var $As = $LIs.children('a'); - // force content to one line and save current float property - var liFloat = $LIs.css('white-space','nowrap').css('float'); - // remove width restrictions and floats so elements remain vertically stacked - var emWidth = $ul.add($LIs).add($As).css({ - 'float' : 'none', - 'width' : 'auto' - }) - // this ul will now be shrink-wrapped to longest li due to position:absolute - // so save its width as ems. Clientwidth is 2 times faster than .width() - thanks Dan Switzer - .end().end()[0].clientWidth / fontsize; - // add more width to ensure lines don't turn over at certain sizes in various browsers - emWidth += o.extraWidth; - // restrict to at least minWidth and at most maxWidth - if (emWidth > o.maxWidth) { emWidth = o.maxWidth; } - else if (emWidth < o.minWidth) { emWidth = o.minWidth; } - emWidth += 'em'; - // set ul to width in ems - $ul.css('width',emWidth); - // restore li floats to avoid IE bugs - // set li width to full width of this ul - // revert white-space to normal - $LIs.css({ - 'float' : liFloat, - 'width' : '100%', - 'white-space' : 'normal' - }) - // update offset position of descendant ul to reflect new width of parent - .each(function(){ - var $childUl = $('>ul',this); - var offsetDirection = $childUl.css('left')!==undefined ? 'left' : 'right'; - $childUl.css(offsetDirection,emWidth); - }); - }); - - }); - }; - // expose defaults - $.fn.supersubs.defaults = { - minWidth : 9, // requires em unit. - maxWidth : 25, // requires em unit. - extraWidth : 0 // extra width can ensure lines don't sometimes turn over due to slight browser differences in how they round-off values - }; - -})(jQuery); // plugin code ends