Change fanart images to not use cache as cache is not required.

Change rename "Manual Post-Processing" menu item to "Process Media".
Change rename "Search Providers" -> "Media Providers".
Change rename "Manage Searches" -> "Media Search".
Change rename "Episode Status Management" -> "Episode Status".
Change rename "Mass Update" -> "Bulk Change".
Change indicate default home on "Shows Menu".
Change relocate "Episodes" menu to "Shows"/"Episode Schedule".
Change relocate "History" menu to "Shows"/"History".
Change remove restart/shutdown buttons from "Show List".
Change remove superfluous buttons from all submenus.
This commit is contained in:
JackDandy 2016-12-18 20:24:18 +00:00
parent d372bd5453
commit 0bcc2c03e6
25 changed files with 188 additions and 143 deletions

View file

@ -37,7 +37,7 @@
* Add passthru of param "post_json" to Requests() "json" in helpers.getURL
* Add search show Name to Show List Layout: Poster
* Change indicate when not sorting with article by dimming ("The", "A", "An") on Show List, Episode, History,
Mass Update, Add with Browse and from Existing views
Bulk Change, Add with Browse and from Existing views
* Add Emby notifier to config/Notifications
* Use a subprocess and cp for copying files on posix systems to preserve file metadata
* Fix alternative unicode show names from breaking search
@ -133,7 +133,7 @@
* Change post process to join incrementally named (i.e. file.001 to file.nnn) split files
* Change replace unrar2 lib with rarfile 3.0 and UnRAR.exe 5.40 freeware
* Change post process "Copy" to delete redundant files after use
* Add indicator for public access search providers
* Add indicator for public access media providers
* Change improve probability selecting most seeded release
* Change add the TorrentDay x265 category to search
* Add smart logic to reduce api hits to newznab server types and improve how nzbs are downloaded
@ -141,7 +141,7 @@
* Change improve performance by using newznab server advertised capabilities
* Change config/providers newznab to display only non-default categories
* Change use scene season for wanted segment in backlog if show is scene numbering
* Change combine Manage Searches / Backlog Search / Limited and Full to Force
* Change combine Media Search / Backlog Search / Limited and Full to Force
* Change consolidate limited and full backlog
* Change config / Search / Backlog search frequency to instead spread backlog searches over a number of days
* Change migrate minimum used value for search frequency into new minimum 7 for search spread
@ -172,7 +172,7 @@
* Remove redundant config/general/"Allow incomplete show data"
* Fix status reset of a snatched, downloaded, or archived episode when its date is set to never (no date) on the info
source and there is no media file
* Change only show unaired episodes on Manage/Backlog Overview and Manage/Episode Status Management where relevant
* Change only show unaired episodes on Manage/Backlog Overview and Manage/Episode Status where relevant
* Change locally cache Trakt/IMDb/Anime show cards
* Change allow pp to replace files with a repack or proper of same quality
* Fix ensure downloaded eps are not shown on episode view
@ -251,6 +251,17 @@
* Change View Log File add a typeface and some colour to improve readability
* Change View Log File/Errors only display "Clear Errors" button when there are errors to clear
* Change improve performance of View Log File
* Change fanart images to not use cache as cache is not required
* Change rename "Manual Post-Processing" menu item to "Process Media"
* Change rename "Search Providers" -> "Media Providers"
* Change rename "Manage Searches" -> "Media Search"
* Change rename "Episode Status Management" -> "Episode Status"
* Change rename "Mass Update" -> "Bulk Change"
* Change indicate default home on "Shows Menu"
* Change relocate "Episodes" menu to "Shows"/"Episode Schedule"
* Change relocate "History" menu to "Shows"/"History"
* Change remove restart/shutdown buttons from "Show List"
* Change remove superfluous buttons from all submenus
[develop changelog]
* Change send nzb data to NZBGet for Anizb instead of url

Binary file not shown.

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 205 KiB

After

Width:  |  Height:  |  Size: 235 KiB

Binary file not shown.

Binary file not shown.

View file

@ -397,6 +397,10 @@ inc_top.tmpl
margin-right:6px
}
.dropdown [class^="sgicon-"].tight{
margin-right:0px
}
#SubMenu [class^="sgicon-"], #SubMenu [class*="sgicon-"]{
margin-right:3px
}
@ -478,7 +482,7 @@ inc_top.tmpl
content:"\e614"
}
.sgicon-massupdate:before{
.sgicon-bulk-change:before{
content:"\e615"
}
@ -566,6 +570,26 @@ inc_top.tmpl
content:"\e62a"
}
.sgicon-list:before{
content:"\e62b"
}
.sgicon-cal:before{
content:"\e62c"
}
.sgicon-mediafile:before{
content:"\e62d"
}
.sgicon-archive:before{
content:"\e62e"
}
.sgicon-book:before{
content:"\e62f"
}
.sgicon-imdb:before{
content:"\e898"
}

View file

@ -14,7 +14,7 @@
<% def sg_str(varname, default=''): return getattr(sickbeard, varname, default) %>#slurp#
##
#set global $title = 'Config - General'
#set global $header = 'General Configuration'
#set global $header = 'General Settings'
#set global $sbPath = '../..'
#set global $topmenu = 'config'
##
@ -47,7 +47,7 @@
<ul>
<li><a href="#core-component-group1">Misc</a></li>
<li><a href="#core-component-group2">Interface</a></li>
<li><a href="#core-component-group3">Advanced Settings</a></li>
<li><a href="#core-component-group3">Advanced</a></li>
</ul>
<div id="core-component-group1">
@ -568,7 +568,7 @@
<div id="core-component-group3" class="component-group">
<div class="component-group-desc">
<h3>Advanced Settings</h3>
<h3>Advanced</h3>
</div>

View file

@ -5,7 +5,7 @@
#from sickbeard.helpers import anon_url, starify
##
#set global $title = 'Config - Providers'
#set global $header = 'Search Providers'
#set global $header = 'Media Providers'
#set global $sbPath = '../..'
#set global $topmenu = 'config'
##
@ -74,10 +74,10 @@
<li><a href="#core-component-group2">Provider Options</a></li>
#if $sickbeard.USE_NZBS
<li><a href="#core-component-group3">Configure Custom Newznab Providers</a></li>
<li><a href="#core-component-group3">Custom Newznab</a></li>
#end if
#if $sickbeard.USE_TORRENTS
<li><a href="#core-component-group4">Configure Custom Torrent Providers</a></li>
<li><a href="#core-component-group4">Custom Torrent</a></li>
#end if
</ul>
@ -623,8 +623,8 @@ name = '' if not client else get_client_instance(sickbeard.TORRENT_METHOD)().nam
<div id="core-component-group3" class="component-group">
<div class="component-group-desc">
<h3>Configure Custom<br />Newznab Providers</h3>
<p>Add and setup or remove custom newznab providers.</p>
<h3>Custom Newznab Providers</h3>
<p>Add, setup or remove custom newznab providers.</p>
</div>
<fieldset class="component-group-list">
@ -717,7 +717,7 @@ name = '' if not client else get_client_instance(sickbeard.TORRENT_METHOD)().nam
<div id="core-component-group4" class="component-group">
<div class="component-group-desc">
<h3>Configure Custom Torrent Providers</h3>
<h3>Custom Torrent Providers</h3>
<p>Add or remove custom RSS providers.</p>
</div>

View file

@ -2,7 +2,7 @@
#from sickbeard import clients
#from sickbeard.helpers import starify
##
#set global $title = 'Config - Episode Search'
#set global $title = 'Config - Media Search'
#set global $header = 'Search Settings'
#set global $sbPath = '../..'
#set global $topmenu = 'config'
@ -33,16 +33,16 @@
<div id="config-components">
<ul>
<li><a href="#core-component-group1">Episode Search</a></li>
<li><a href="#core-component-group2">NZB Search</a></li>
<li><a href="#core-component-group3">Torrent Search</a></li>
<li><a href="#core-component-group1">Media Search</a></li>
<li><a href="#core-component-group2">NZB Results</a></li>
<li><a href="#core-component-group3">Torrent Results</a></li>
</ul>
<div id="core-component-group1" class="component-group">
<div class="component-group-desc">
<h3>Episode Search</h3>
<h3>Media Search</h3>
<p>How to manage searching with <a href="$sbRoot/config/providers/">providers</a>.</p>
</div>
@ -214,7 +214,7 @@
<div id="core-component-group2" class="component-group">
<div class="component-group-desc">
<h3>NZB Search</h3>
<h3>NZB Results</h3>
<p>How to handle NZB search results.</p>
</div>
@ -225,7 +225,7 @@
<span class="component-title">Search NZBs</span>
<span class="component-desc">
<input type="checkbox" name="use_nzbs" class="enabler" id="use_nzbs"<%= html_checked if sickbeard.USE_NZBS else '' %>>
<p>enable NZB search providers</p></span>
<p>enable NZB media providers</p></span>
</label>
</div>
@ -414,7 +414,7 @@
<div id="core-component-group3" class="component-group">
<div class="component-group-desc">
<h3>Torrent Search</h3>
<h3>Torrent Results</h3>
<p>How to handle Torrent search results.</p>
</div>
@ -426,7 +426,7 @@
<span class="component-title">Search torrents</span>
<span class="component-desc">
<input type="checkbox" name="use_torrents" class="enabler" id="use_torrents"<%= html_checked if sickbeard.USE_TORRENTS == True else '' %>>
<p>enable torrent search providers</p>
<p>enable torrent media providers</p>
</span>
</label>
</div>

View file

@ -11,7 +11,7 @@
#set global $title = 'Episode View'
#set global $header = 'Episode View'
#set global $sbPath = '..'
#set global $topmenu = 'episodeView'
#set global $topmenu = 'home'
#set $css = $getVar('css', '')
#set $has_art = $getVar('has_art', None)
#set $restart = 'Restart SickGear for new features on this page'
@ -248,7 +248,7 @@
</a>
#end if
<a class="btn btn-inline forceBacklog" href="webcal://$sbHost:$sbHttpPort/calendar">
<i class="sgicon-rss"></i> Subscribe</a>
<i class="sgicon-cal" style="font-size:14px"></i> Webcal</a>
</div>
</div>

View file

@ -12,7 +12,7 @@
#set global $title = 'History'
#set global $header = 'History'
#set global $sbPath = '..'
#set global $topmenu = 'history'
#set global $topmenu = 'home'
#set $layout = $sg_str('HISTORY_LAYOUT', 'detailed')
##
#import os.path

View file

@ -1,8 +1,8 @@
#import sickbeard
##
#set global $header = 'Post Processing'
#set global $header = 'Process Media'
#set global $title = $header
#set global $topmenu = 'home'
#set global $topmenu = 'manage'
#set global $sbPath = '../..'
##
#import os.path
@ -102,4 +102,4 @@ $('#process_method').change(function(){
//-->
</script>
#include $os.path.join($sickbeard.PROG_DIR, 'gui/slick/interfaces/default/inc_bottom.tmpl')
#include $os.path.join($sickbeard.PROG_DIR, 'gui/slick/interfaces/default/inc_bottom.tmpl')

View file

@ -49,7 +49,6 @@
#end for
</select><br />
<span>Ctrl + Click = toggle a quality</span>
<br /><span>Ctrl + Click = toggle a quality</span>
</div>
<div style="line-height:normal;padding-top:50px" id="quality-notes" class="tip-text">

View file

@ -111,9 +111,18 @@
<ul class="nav navbar-nav navbar-right">
<li id="NAVhome" class="dropdown">
<a href="$sbRoot/home/" class="dropdown-toggle" data-toggle="dropdown" data-delay="0" tabindex="$tab#set $tab += 1#">Shows <b class="caret"></b></a>
#set $showlist_home, $episode_home, $history_home = 3 * ['(<i class="sgicon-home tight"></i>)']
#if 'shows' == $sickbeard.DEFAULT_HOME
#set $episode_home, $history_home = 2 * ['']
#elif 'episodes' == $sickbeard.DEFAULT_HOME
#set $showlist_home, $history_home = 2 * ['']
#else
#set $showlist_home, $episode_home = 2 * ['']
#end if
<ul class="dropdown-menu">
<li><a href="$sbRoot/home/showlistView/" tabindex="$tab#set $tab += 1#"><i class="sgicon-home"></i>Show List</a></li>
<li><a href="$sbRoot/home/postprocess/" tabindex="$tab#set $tab += 1#"><i class="sgicon-postprocess"></i>Manual Post-Processing</a></li>
<li><a href="$sbRoot/home/showlistView/" tabindex="$tab#set $tab += 1#"><i class="sgicon-list" style="font-size:12px"></i>Show List $showlist_home</a></li>
<li><a href="$sbRoot/episodeView/" tabindex="$tab#set $tab += 1#"><i class="sgicon-cal"></i>Episode Schedule $episode_home</a></li>
<li><a href="$sbRoot/history/" tabindex="$tab#set $tab += 1#"><i class="sgicon-mediafile"></i>History $history_home</a></li>
<li class="divider"></li>
<li class="menu-item-noicon opacity60">Add show...</li>
<li><a href="$sbRoot/home/addShows/new_show/" tabindex="$tab#set $tab += 1#"><i class="sgicon-addshow"></i>Search
@ -132,22 +141,16 @@
</ul>
</li>
<li id="NAVepisodeView">
<a href="$sbRoot/episodeView/" tabindex="$tab#set $tab += 1#">Episodes</a>
</li>
<li id="NAVhistory">
<a href="$sbRoot/history/" tabindex="$tab#set $tab += 1#">History</a>
</li>
<li id="NAVmanage" class="dropdown">
<a href="$sbRoot/manage/" class="dropdown-toggle" data-toggle="dropdown" data-delay="0" tabindex="$tab#set $tab += 1#">Manage <b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a href="$sbRoot/manage/" tabindex="$tab#set $tab += 1#"><i class="sgicon-massupdate"></i>Mass Update</a></li>
<li><a href="$sbRoot/home/postprocess/" tabindex="$tab#set $tab += 1#"><i class="sgicon-postprocess"></i>Process Media</a></li>
<li class="divider"></li>
<li><a href="$sbRoot/manage/" tabindex="$tab#set $tab += 1#"><i class="sgicon-bulk-change"></i>Bulk Change</a></li>
<li><a href="$sbRoot/manage/backlogOverview/" tabindex="$tab#set $tab += 1#"><i class="sgicon-backlog"></i>Backlog Overview</a></li>
<li><a href="$sbRoot/manage/manageSearches/" tabindex="$tab#set $tab += 1#"><i class="sgicon-search"></i>Manage Searches</a></li>
<li><a href="$sbRoot/manage/showQueueOverview/" tabindex="$tab#set $tab += 1#"><i class="sgicon-showqueue"></i>Show Queue Overview</a></li>
<li><a href="$sbRoot/manage/episodeStatuses/" tabindex="$tab#set $tab += 1#"><i class="sgicon-episodestatus"></i>Episode Status Management</a></li>
<li><a href="$sbRoot/manage/manageSearches/" tabindex="$tab#set $tab += 1#"><i class="sgicon-search"></i>Media Search</a></li>
<li><a href="$sbRoot/manage/showProcesses/" tabindex="$tab#set $tab += 1#"><i class="sgicon-showqueue"></i>Show Processes</a></li>
<li><a href="$sbRoot/manage/episodeStatuses/" tabindex="$tab#set $tab += 1#"><i class="sgicon-episodestatus"></i>Episode Status</a></li>
#if hasattr($sickbeard, 'USE_EMBY') and $sg_var('USE_EMBY') and $sg_str('EMBY_HOST') != '' and $sg_str('EMBY_APIKEY') != ''
<li><a href="$sbRoot/home/updateEMBY/" tabindex="$tab#set $tab += 1#"><i class="sgicon-emby"></i>Update Emby</a></li>
#end if
@ -172,11 +175,13 @@
<li id="NAVconfig" class="dropdown">
<a href="$sbRoot/config/" class="dropdown-toggle" data-toggle="dropdown" data-delay="0" tabindex="$tab#set $tab += 1#"><img src="$sbRoot/images/menu/system18.png" class="navbaricon hidden-xs" /><b class="caret hidden-xs"></b><span class="visible-xs">Config <b class="caret"></b></span></a>
<ul class="dropdown-menu">
<li><a href="$sbRoot/config/" tabindex="$tab#set $tab += 1#"><i class="sgicon-info"></i>Help &amp; Info</a></li>
<li><a href="$sbRoot/config/" tabindex="$tab#set $tab += 1#"><i class="sgicon-info"></i>About</a></li>
<li class="divider"></li>
<li class="menu-item-noicon opacity60">Settings...</li>
<li><a href="$sbRoot/config/general/" tabindex="$tab#set $tab += 1#"><i class="sgicon-config"></i>General</a></li>
<li><a href="$sbRoot/config/search/" tabindex="$tab#set $tab += 1#"><i class="sgicon-search"></i>Search Settings</a></li>
<li><a href="$sbRoot/config/providers/" tabindex="$tab#set $tab += 1#"><i class="sgicon-search"></i>Search Providers</a></li>
<li><a href="$sbRoot/config/subtitles/" tabindex="$tab#set $tab += 1#"><i class="sgicon-subtitles"></i>Subtitles Settings</a></li>
<li><a href="$sbRoot/config/providers/" tabindex="$tab#set $tab += 1#"><i class="sgicon-book"></i>Media Providers</a></li>
<li><a href="$sbRoot/config/search/" tabindex="$tab#set $tab += 1#"><i class="sgicon-search"></i>Search</a></li>
<li><a href="$sbRoot/config/subtitles/" tabindex="$tab#set $tab += 1#"><i class="sgicon-subtitles"></i>Subtitles</a></li>
<li><a href="$sbRoot/config/postProcessing/" tabindex="$tab#set $tab += 1#"><i class="sgicon-postprocess"></i>Post Processing</a></li>
<li><a href="$sbRoot/config/notifications/" tabindex="$tab#set $tab += 1#"><i class="sgicon-notification"></i>Notifications</a></li>
<li><a href="$sbRoot/config/anime/" tabindex="$tab#set $tab += 1#"><i class="sgicon-anime"></i>Anime</a></li>

View file

@ -1,8 +1,8 @@
#import sickbeard
#from sickbeard.common import *
##
#set global $title = 'Mass Update'
#set global $header = 'Mass Update'
#set global $title = 'Bulk Change'
#set global $header = 'Bulk Change'
#set global $sbPath = '../..'
#set global $topmenu = 'manage'
##
@ -62,7 +62,7 @@ $myShowList.sort(lambda x, y: cmp(x.name, y.name))
\$(document).ready(function()
{
\$('#massUpdateTable:has(tbody tr)').tablesorter({
\$('#bulkChangeTable:has(tbody tr)').tablesorter({
widgets: ['zebra'],
sortList: [[1,0]],
headers: {
@ -76,15 +76,15 @@ $myShowList.sort(lambda x, y: cmp(x.name, y.name))
});
//-->
</script>
<script type="text/javascript" src="$sbRoot/js/massUpdate.js?v=$sbPID"></script>
<script type="text/javascript" src="$sbRoot/js/bulkChange.js?v=$sbPID"></script>
#if $varExists('header')
<h1 class="header">$header</h1>
#else
<h1 class="title">$title</h1>
#end if
<form name="massUpdateForm" method="post" action="massUpdate">
<form name="bulkChangeForm" method="post" action="bulkChange">
<table id="massUpdateTable" class="sickbeardTable tablesorter" cellspacing="1" border="0" cellpadding="0">
<table id="bulkChangeTable" class="sickbeardTable tablesorter" cellspacing="1" border="0" cellpadding="0">
<thead>
<tr>
<th class="col-checkbox">Edit<br /><input type="checkbox" class="bulkCheck" id="editCheck"></th>
@ -117,7 +117,7 @@ $myShowList.sort(lambda x, y: cmp(x.name, y.name))
<tfoot>
<tr>
<td rowspan="1" colspan="2" class="align-center alt"><input class="btn pull-left" type="button" value="Edit Selected" id="submitMassEdit"></td>
<td rowspan="1" colspan="#echo $columns_total-2#" class="align-right alt"><input class="btn pull-right" type="button" value="Submit" id="submitMassUpdate"></td>
<td rowspan="1" colspan="#echo $columns_total-2#" class="align-right alt"><input class="btn pull-right" type="button" value="Submit" id="submitBulkChange"></td>
</tr>
</tfoot>

View file

@ -1,7 +1,7 @@
#import sickbeard
##
#set global $title = 'Manage Searches'
#set global $header = 'Manage Searches'
#set global $title = 'Media Search'
#set global $header = 'Media Search'
#set global $sbPath = '..'
#set global $topmenu = 'manage'
##
@ -47,8 +47,6 @@
#end if
<br />
<h3>Version Check:</h3>
<a class="btn" href="$sbRoot/manage/manageSearches/forceVersionCheck"><i class="sgicon-updatecheck"></i> Force Check</a>
<br /><br />
<h3>Search Queue:</h3>

View file

@ -1,15 +1,15 @@
#import sickbeard
#from sickbeard.helpers import findCertainShow
##
#set global $title = 'Show Queue Overview'
#set global $header = 'Show Queue Overview'
#set global $title = 'Show Processes'
#set global $header = 'Show Processes'
#set global $sbPath = '..'
#set global $topmenu = 'manage'
##
#import os.path
#include $os.path.join($sickbeard.PROG_DIR, 'gui/slick/interfaces/default/inc_top.tmpl')
<script type="text/javascript" src="$sbRoot/js/manageShowQueueOverview.js?v=$sbPID" xmlns="http://www.w3.org/1999/html"></script>
<script type="text/javascript" src="$sbRoot/js/manageShowProcesses.js?v=$sbPID" xmlns="http://www.w3.org/1999/html"></script>
<div id="content800">
#if $varExists('header')
<h1 class="header">$header</h1>
@ -19,7 +19,7 @@
<div id="summary2" class="align-left">
<h3> Daily Show Update:</h3>
<a id="showupdatebutton" class="btn#if $ShowUpdateRunning# disabled#end if#" href="$sbRoot/manage/showQueueOverview/forceShowUpdate"><i class="sgicon-play"></i> Force</a>
<a id="showupdatebutton" class="btn#if $ShowUpdateRunning# disabled#end if#" href="$sbRoot/manage/showProcesses/forceShowUpdate"><i class="sgicon-play"></i> Force</a>
#if not $ShowUpdateRunning:
Not in progress<br />
#else:

View file

@ -18,7 +18,7 @@ $(document).ready(function() {
});
$('#submitMassUpdate').click(function() {
$('#submitBulkChange').click(function() {
var updateArr = [], refreshArr = [], renameArr = [], subtitleArr = [],
deleteArr = [], removeArr = [], metadataArr = [];
@ -69,7 +69,7 @@ $(document).ready(function() {
if (0 == updateArr.length + refreshArr.length + renameArr.length + subtitleArr.length + deleteArr.length + removeArr.length + metadataArr.length)
return !1;
window.location.href = $.SickGear.Root + 'massUpdate?toUpdate=' + updateArr.join('|') + '&toRefresh=' + refreshArr.join('|') + '&toRename=' + renameArr.join('|') + '&toSubtitle=' + subtitleArr.join('|') + '&toDelete=' + deleteArr.join('|') + '&toRemove=' + removeArr.join('|') + '&toMetadata=' + metadataArr.join('|');
window.location.href = $.SickGear.Root + 'bulkChange?toUpdate=' + updateArr.join('|') + '&toRefresh=' + refreshArr.join('|') + '&toRename=' + renameArr.join('|') + '&toSubtitle=' + subtitleArr.join('|') + '&toDelete=' + deleteArr.join('|') + '&toRemove=' + removeArr.join('|') + '&toMetadata=' + metadataArr.join('|');
});

View file

@ -1,38 +1,40 @@
function initActions() {
$('#SubMenu a[href*="/home/restart/"]').addClass('btn restart').html('<i class="sgicon-restart"></i>Restart');
$('#SubMenu a[href*="/home/shutdown/"]').addClass('btn shutdown').html('<i class="sgicon-shutdown"></i>Shutdown');
$('#SubMenu a[href*="/home/logout/"]').addClass('btn').html('<i class="sgicon-logout"></i>Logout');
$('#SubMenu a:contains("Edit")').addClass('btn').html('<i class="sgicon-edit"></i>Edit');
$('#SubMenu a:contains("Remove")').addClass('btn remove').html('<i class="sgicon-delete"></i>Remove');
$('#SubMenu a:contains("Clear History")').addClass('btn clearhistory').html('<i class="sgicon-delete"></i>Clear History');
$('#SubMenu a:contains("Trim History")').addClass('btn trimhistory').html('<i class="sgicon-trim"></i>Trim History');
$('#SubMenu a[href$="/errorlogs/downloadlog/"]').addClass('btn').html('<i class="sgicon-download"></i>Download Log');
$('#SubMenu a[href$="/errorlogs/clearerrors/"]').addClass('btn').html('<i class="sgicon-delete"></i>Clear Errors');
$('#SubMenu a:contains("Re-scan")').addClass('btn').html('<i class="sgicon-refresh"></i>Re-scan');
$('#SubMenu a:contains("Backlog Overview")').addClass('btn').html('<i class="sgicon-backlog"></i>Backlog Overview');
$('#SubMenu a[href$="/home/updatePLEX/"]').addClass('btn').html('<i class="sgicon-plex"></i>Update PLEX');
$('#SubMenu a:contains("Force")').addClass('btn').html('<i class="sgicon-fullupdate"></i>Force Full Update');
$('#SubMenu a:contains("Rename")').addClass('btn').html('<i class="sgicon-rename"></i>Media Renamer');
$('#SubMenu a[href$="/config/subtitles/"]').addClass('btn').html('<i class="sgicon-subtitles"></i>Search Subtitles');
$('#SubMenu a[href*="/home/subtitleShow"]').addClass('btn').html('<i class="sgicon-subtitles"></i>Download Subtitles');
$('#SubMenu a:contains("Anime")').addClass('btn').html('<i class="sgicon-anime"></i>Anime');
$('#SubMenu a:contains("Settings")').addClass('btn').html('<i class="sgicon-search"></i>Search Settings');
$('#SubMenu a:contains("Provider")').addClass('btn').html('<i class="sgicon-search"></i>Search Providers');
$('#SubMenu a:contains("General")').addClass('btn').html('<i class="sgicon-config"></i>General');
$('#SubMenu a:contains("Episode Status")').addClass('btn').html('<i class="sgicon-episodestatus"></i>Episode Status Management');
$('#SubMenu a:contains("Missed Subtitle")').addClass('btn').html('<i class="sgicon-subtitles"></i>Missed Subtitles');
$('#SubMenu a:contains("Processing")').addClass('btn').html('<i class="sgicon-postprocess"></i>Post-Processing');
$('#SubMenu a:contains("Manage Searches")').addClass('btn').html('<i class="sgicon-search"></i>Manage Searches');
$('#SubMenu a:contains("Manage Torrents")').addClass('btn').html('<i class="sgicon-bittorrent"></i>Manage Torrents');
$('#SubMenu a:contains("Show Queue Overview")').addClass('btn').html('<i class="sgicon-showqueue"></i>Show Queue Overview');
$('#SubMenu a[href$="/manage/failedDownloads/"]').addClass('btn').html('<i class="sgicon-failed"></i>Failed Downloads');
$('#SubMenu a:contains("Notification")').addClass('btn').html('<i class="sgicon-notification"></i>Notifications');
$('#SubMenu a[href$="/home/updateEMBY/"]').addClass('btn').html('<i class="sgicon-emby"></i>Update Emby');
$('#SubMenu a[href$="/home/updateKODI/"]').addClass('btn').html('<i class="sgicon-kodi"></i>Update Kodi');
$('#SubMenu a[href$="/home/updateXBMC/"]').addClass('btn').html('<i class="sgicon-xbmc"></i>Update XBMC');
$('#SubMenu a:contains("Update show in Emby")').addClass('btn').html('<i class="sgicon-emby"></i>Update show in Emby');
$('#SubMenu a:contains("Update show in Kodi")').addClass('btn').html('<i class="sgicon-kodi"></i>Update show in Kodi');
$('#SubMenu a:contains("Update show in XBMC")').addClass('btn').html('<i class="sgicon-xbmc"></i>Update show in XBMC');
var menu$ = $('#SubMenu');
menu$.find('a[href*="/home/restart/"]').addClass('btn restart').html('<i class="sgicon-restart"></i>Restart');
menu$.find('a[href*="/home/shutdown/"]').addClass('btn shutdown').html('<i class="sgicon-shutdown"></i>Shutdown');
menu$.find('a[href*="/home/logout/"]').addClass('btn').html('<i class="sgicon-logout"></i>Logout');
menu$.find('a:contains("Edit")').addClass('btn').html('<i class="sgicon-edit"></i>Edit');
menu$.find('a:contains("Remove")').addClass('btn remove').html('<i class="sgicon-delete"></i>Remove');
menu$.find('a:contains("Clear History")').addClass('btn clearhistory').html('<i class="sgicon-delete"></i>Clear History');
menu$.find('a:contains("Trim History")').addClass('btn trimhistory').html('<i class="sgicon-trim"></i>Trim History');
menu$.find('a[href$="/errorlogs/downloadlog/"]').addClass('btn').html('<i class="sgicon-download"></i>Download Log');
menu$.find('a[href$="/errorlogs/clearerrors/"]').addClass('btn').html('<i class="sgicon-delete"></i>Clear Errors');
menu$.find('a:contains("Re-scan")').addClass('btn').html('<i class="sgicon-refresh"></i>Re-scan');
menu$.find('a:contains("Backlog Overview")').addClass('btn').html('<i class="sgicon-backlog"></i>Backlog Overview');
menu$.find('a[href$="/home/updatePLEX/"]').addClass('btn').html('<i class="sgicon-plex"></i>Update PLEX');
menu$.find('a:contains("Force")').addClass('btn').html('<i class="sgicon-fullupdate"></i>Force Full Update');
menu$.find('a:contains("Rename")').addClass('btn').html('<i class="sgicon-rename"></i>Media Renamer');
menu$.find('a[href$="/config/subtitles/"]').addClass('btn').html('<i class="sgicon-subtitles"></i>Subtitles');
menu$.find('a[href*="/home/subtitleShow"]').addClass('btn').html('<i class="sgicon-subtitles"></i>Download Subtitles');
menu$.find('a:contains("Anime")').addClass('btn').html('<i class="sgicon-anime"></i>Anime');
menu$.find('a:contains("Search")').addClass('btn').html('<i class="sgicon-search"></i>Search');
menu$.find('a:contains("Provider")').addClass('btn').html('<i class="sgicon-book"></i>Media Providers');
menu$.find('a:contains("General")').addClass('btn').html('<i class="sgicon-config"></i>General');
menu$.find('a:contains("Episode Status")').addClass('btn').html('<i class="sgicon-episodestatus"></i>Episode Status');
menu$.find('a:contains("Missed Subtitle")').addClass('btn').html('<i class="sgicon-subtitles"></i>Missed Subtitles');
menu$.find('a[href$="/config/postProcessing/"]').addClass('btn').html('<i class="sgicon-postprocess"></i>Post Processing');
menu$.find('a[href$="/postprocess/"]').addClass('btn').html('<i class="sgicon-postprocess"></i>Process Media');
menu$.find('a:contains("Media Search")').addClass('btn').html('<i class="sgicon-search"></i>Media Search');
menu$.find('a:contains("Manage Torrents")').addClass('btn').html('<i class="sgicon-bittorrent"></i>Manage Torrents');
menu$.find('a:contains("Show Processes")').addClass('btn').html('<i class="sgicon-showqueue"></i>Show Processes');
menu$.find('a[href$="/manage/failedDownloads/"]').addClass('btn').html('<i class="sgicon-failed"></i>Failed Downloads');
menu$.find('a:contains("Notification")').addClass('btn').html('<i class="sgicon-notification"></i>Notifications');
menu$.find('a[href$="/home/updateEMBY/"]').addClass('btn').html('<i class="sgicon-emby"></i>Update Emby');
menu$.find('a[href$="/home/updateKODI/"]').addClass('btn').html('<i class="sgicon-kodi"></i>Update Kodi');
menu$.find('a[href$="/home/updateXBMC/"]').addClass('btn').html('<i class="sgicon-xbmc"></i>Update XBMC');
menu$.find('a:contains("Update show in Emby")').addClass('btn').html('<i class="sgicon-emby"></i>Update show in Emby');
menu$.find('a:contains("Update show in Kodi")').addClass('btn').html('<i class="sgicon-kodi"></i>Update show in Kodi');
menu$.find('a:contains("Update show in XBMC")').addClass('btn').html('<i class="sgicon-xbmc"></i>Update show in XBMC');
}
$(document).ready(function(){

View file

@ -559,7 +559,7 @@ def initialize(console_logging=True):
# Search Settings/Torrent search
global USE_TORRENTS, TORRENT_METHOD, TORRENT_DIR, TORRENT_HOST, TORRENT_USERNAME, TORRENT_PASSWORD, \
TORRENT_LABEL, TORRENT_PATH, TORRENT_SEED_TIME, TORRENT_PAUSED, TORRENT_HIGH_BANDWIDTH, TORRENT_VERIFY_CERT
# Search Providers
# Media Providers
global PROVIDER_ORDER, NEWZNAB_DATA, PROVIDER_HOMES
# Subtitles
global USE_SUBTITLES, SUBTITLES_LANGUAGES, SUBTITLES_DIR, SUBTITLES_FINDER_FREQUENCY, \

View file

@ -324,7 +324,7 @@ class ImageCache:
count_urls = len(image_urls)
sources = []
for image_url in image_urls or []:
img_data = helpers.getURL(image_url)
img_data = helpers.getURL(image_url, nocache=True)
if None is img_data:
continue
crc = '%05X' % (zlib.crc32(img_data) & 0xFFFFFFFF)

View file

@ -122,7 +122,7 @@ class ProgressIndicator():
self.currentStatus = currentStatus
class ProgressIndicators():
_pi = {'massUpdate': [],
_pi = {'bulkChange': [],
'massAdd': [],
'dailyUpdate': []
}

View file

@ -617,13 +617,11 @@ class MainHandler(WebHandler):
class Home(MainHandler):
def HomeMenu(self):
return [
{'title': 'Manual Post-Processing', 'path': 'home/postprocess/'},
{'title': 'Process Media', 'path': 'home/postprocess/'},
{'title': 'Update Emby', 'path': 'home/updateEMBY/', 'requires': self.haveEMBY},
{'title': 'Update Kodi', 'path': 'home/updateKODI/', 'requires': self.haveKODI},
{'title': 'Update XBMC', 'path': 'home/updateXBMC/', 'requires': self.haveXBMC},
{'title': 'Update Plex', 'path': 'home/updatePLEX/', 'requires': self.havePLEX},
{'title': 'Restart', 'path': 'home/restart/?pid=' + str(sickbeard.PID), 'confirm': True},
{'title': 'Shutdown', 'path': 'home/shutdown/?pid=' + str(sickbeard.PID), 'confirm': True},
{'title': 'Update Plex', 'path': 'home/updatePLEX/', 'requires': self.havePLEX}
]
@staticmethod
@ -1372,9 +1370,9 @@ class Home(MainHandler):
del(ep_counts['totals'][0])
ep_counts['eps_all'] = sum(ep_counts['totals'].values())
ep_counts['eps_most'] = max(ep_counts['totals'].values())
ep_counts['eps_most'] = max(ep_counts['totals'].values() + [0])
all_seasons = sorted(ep_counts['totals'].keys(), reverse=True)
t.lowest_season, t.highest_season = all_seasons[-1], all_seasons[0]
t.lowest_season, t.highest_season = all_seasons and (all_seasons[-1], all_seasons[0]) or (0, 0)
# 55 == seasons 1-10 and excludes the random season 0
force_display_show_minimum = 30 < ep_counts['eps_most'] or 55 < sum(ep_counts['totals'].keys())
@ -2491,7 +2489,7 @@ class HomePostProcess(Home):
def index(self, *args, **kwargs):
t = PageTemplate(headers=self.request.headers, file='home_postprocess.tmpl')
t.submenu = self.HomeMenu()
t.submenu = [x for x in self.HomeMenu() if 'postprocess' not in x['path']]
return t.respond()
def processEpisode(self, dir=None, nzbName=None, jobName=None, quiet=None, process_method=None, force=None,
@ -3653,24 +3651,24 @@ class NewHomeAddShows(Home):
class Manage(MainHandler):
def ManageMenu(self):
manageMenu = [
def ManageMenu(self, exclude='n/a'):
menu = [
{'title': 'Backlog Overview', 'path': 'manage/backlogOverview/'},
{'title': 'Manage Searches', 'path': 'manage/manageSearches/'},
{'title': 'Show Queue Overview', 'path': 'manage/showQueueOverview/'},
{'title': 'Episode Status Management', 'path': 'manage/episodeStatuses/'}, ]
{'title': 'Media Search', 'path': 'manage/manageSearches/'},
{'title': 'Show Processes', 'path': 'manage/showProcesses/'},
{'title': 'Episode Status', 'path': 'manage/episodeStatuses/'}, ]
if sickbeard.USE_SUBTITLES:
manageMenu.append({'title': 'Missed Subtitle Management', 'path': 'manage/subtitleMissed/'})
menu.append({'title': 'Missed Subtitle Management', 'path': 'manage/subtitleMissed/'})
if sickbeard.USE_FAILED_DOWNLOADS:
manageMenu.append({'title': 'Failed Downloads', 'path': 'manage/failedDownloads/'})
menu.append({'title': 'Failed Downloads', 'path': 'manage/failedDownloads/'})
return manageMenu
return [x for x in menu if exclude not in x['title']]
def index(self, *args, **kwargs):
t = PageTemplate(headers=self.request.headers, file='manage.tmpl')
t.submenu = self.ManageMenu()
t.submenu = self.ManageMenu('Bulk')
return t.respond()
def showEpisodeStatuses(self, indexer_id, whichStatus):
@ -3708,7 +3706,7 @@ class Manage(MainHandler):
status_list = []
t = PageTemplate(headers=self.request.headers, file='manage_episodeStatuses.tmpl')
t.submenu = self.ManageMenu()
t.submenu = self.ManageMenu('Episode')
t.whichStatus = whichStatus
my_db = db.DBConnection()
@ -3832,7 +3830,7 @@ class Manage(MainHandler):
def subtitleMissed(self, whichSubs=None):
t = PageTemplate(headers=self.request.headers, file='manage_subtitleMissed.tmpl')
t.submenu = self.ManageMenu()
t.submenu = self.ManageMenu('Subtitle')
t.whichSubs = whichSubs
if not whichSubs:
@ -3914,7 +3912,7 @@ class Manage(MainHandler):
def backlogOverview(self, *args, **kwargs):
t = PageTemplate(headers=self.request.headers, file='manage_backlogOverview.tmpl')
t.submenu = self.ManageMenu()
t.submenu = self.ManageMenu('Backlog')
showCounts = {}
showCats = {}
@ -4205,7 +4203,7 @@ class Manage(MainHandler):
self.redirect('/manage/')
def massUpdate(self, toUpdate=None, toRefresh=None, toRename=None, toDelete=None, toRemove=None, toMetadata=None, toSubtitle=None):
def bulkChange(self, toUpdate=None, toRefresh=None, toRename=None, toDelete=None, toRemove=None, toMetadata=None, toSubtitle=None):
if toUpdate is not None:
toUpdate = toUpdate.split('|')
@ -4347,7 +4345,7 @@ class Manage(MainHandler):
t.over_limit = limit and len(sql_results) > limit
t.failedResults = t.over_limit and sql_results[0:-1] or sql_results
t.limit = str(limit)
t.submenu = self.ManageMenu()
t.submenu = self.ManageMenu('Failed')
return t.respond()
@ -4365,7 +4363,7 @@ class ManageSearches(Manage):
t.findPropersStatus = sickbeard.searchQueueScheduler.action.is_propersearch_in_progress()
t.queueLength = sickbeard.searchQueueScheduler.action.queue_length()
t.submenu = self.ManageMenu()
t.submenu = self.ManageMenu('Search')
return t.respond()
@ -4418,14 +4416,15 @@ class ManageSearches(Manage):
time.sleep(5)
self.redirect('/manage/manageSearches/')
class showQueueOverview(Manage):
class showProcesses(Manage):
def index(self, *args, **kwargs):
t = PageTemplate(headers=self.request.headers, file='manage_showQueueOverview.tmpl')
t = PageTemplate(headers=self.request.headers, file='manage_showProcesses.tmpl')
t.queueLength = sickbeard.showQueueScheduler.action.queue_length()
t.showList = sickbeard.showList
t.ShowUpdateRunning = sickbeard.showQueueScheduler.action.isShowUpdateRunning() or sickbeard.showUpdateScheduler.action.amActive
t.submenu = self.ManageMenu()
t.submenu = self.ManageMenu('Processes')
return t.respond()
@ -4437,7 +4436,8 @@ class showQueueOverview(Manage):
ui.notifications.message('Forced Show Update started')
time.sleep(5)
self.redirect('/manage/showQueueOverview/')
self.redirect('/manage/showProcesses/')
class History(MainHandler):
def index(self, limit=100):
@ -4530,20 +4530,21 @@ class History(MainHandler):
class Config(MainHandler):
@staticmethod
def ConfigMenu():
return [
def ConfigMenu(exclude='n/a'):
menu = [
{'title': 'General', 'path': 'config/general/'},
{'title': 'Search Settings', 'path': 'config/search/'},
{'title': 'Search Providers', 'path': 'config/providers/'},
{'title': 'Subtitles Settings', 'path': 'config/subtitles/'},
{'title': 'Media Providers', 'path': 'config/providers/'},
{'title': 'Search', 'path': 'config/search/'},
{'title': 'Subtitles', 'path': 'config/subtitles/'},
{'title': 'Post Processing', 'path': 'config/postProcessing/'},
{'title': 'Notifications', 'path': 'config/notifications/'},
{'title': 'Anime', 'path': 'config/anime/'},
]
return [x for x in menu if exclude not in x['title']]
def index(self, *args, **kwargs):
t = PageTemplate(headers=self.request.headers, file='config.tmpl')
t.submenu = self.ConfigMenu
t.submenu = self.ConfigMenu()
return t.respond()
@ -4552,7 +4553,7 @@ class ConfigGeneral(Config):
def index(self, *args, **kwargs):
t = PageTemplate(headers=self.request.headers, file='config_general.tmpl')
t.submenu = self.ConfigMenu
t.submenu = self.ConfigMenu('General')
t.show_tags = ', '.join(sickbeard.SHOW_TAGS)
t.indexers = dict([(i, sickbeard.indexerApi().indexers[i]) for i in sickbeard.indexerApi().indexers
if sickbeard.indexerApi(i).config['active']])
@ -4748,7 +4749,7 @@ class ConfigSearch(Config):
def index(self, *args, **kwargs):
t = PageTemplate(headers=self.request.headers, file='config_search.tmpl')
t.submenu = self.ConfigMenu
t.submenu = self.ConfigMenu('Search')
t.using_rls_ignore_words = [(show.indexerid, show.name)
for show in sickbeard.showList if show.rls_ignore_words and
show.rls_ignore_words.strip()]
@ -4871,7 +4872,7 @@ class ConfigPostProcessing(Config):
def index(self, *args, **kwargs):
t = PageTemplate(headers=self.request.headers, file='config_postProcessing.tmpl')
t.submenu = self.ConfigMenu
t.submenu = self.ConfigMenu('Processing')
return t.respond()
def savePostProcessing(self, naming_pattern=None, naming_multi_ep=None,
@ -5067,7 +5068,7 @@ class ConfigPostProcessing(Config):
class ConfigProviders(Config):
def index(self, *args, **kwargs):
t = PageTemplate(headers=self.request.headers, file='config_providers.tmpl')
t.submenu = self.ConfigMenu
t.submenu = self.ConfigMenu('Providers')
return t.respond()
def canAddNewznabProvider(self, name):
@ -5407,7 +5408,7 @@ class ConfigNotifications(Config):
def index(self, *args, **kwargs):
t = PageTemplate(headers=self.request.headers, file='config_notifications.tmpl')
t.submenu = self.ConfigMenu
t.submenu = self.ConfigMenu('Notifications')
t.root_dirs = []
if sickbeard.ROOT_DIRS:
root_pieces = sickbeard.ROOT_DIRS.split('|')
@ -5668,7 +5669,7 @@ class ConfigNotifications(Config):
class ConfigSubtitles(Config):
def index(self, *args, **kwargs):
t = PageTemplate(headers=self.request.headers, file='config_subtitles.tmpl')
t.submenu = self.ConfigMenu
t.submenu = self.ConfigMenu('Subtitle')
return t.respond()
def saveSubtitles(self, use_subtitles=None, subtitles_plugins=None, subtitles_languages=None, subtitles_dir=None,
@ -5726,7 +5727,7 @@ class ConfigAnime(Config):
def index(self, *args, **kwargs):
t = PageTemplate(headers=self.request.headers, file='config_anime.tmpl')
t.submenu = self.ConfigMenu
t.submenu = self.ConfigMenu('Anime')
return t.respond()
def saveAnime(self, use_anidb=None, anidb_username=None, anidb_password=None, anidb_use_mylist=None,

View file

@ -84,7 +84,7 @@ class WebServer(threading.Thread):
(r'%s/home/postprocess(/?.*)' % self.options['web_root'], webserve.HomePostProcess),
(r'%s/home(/?.*)' % self.options['web_root'], webserve.Home),
(r'%s/manage/manageSearches(/?.*)' % self.options['web_root'], webserve.ManageSearches),
(r'%s/manage/showQueueOverview(/?.*)' % self.options['web_root'], webserve.showQueueOverview),
(r'%s/manage/showProcesses(/?.*)' % self.options['web_root'], webserve.showProcesses),
(r'%s/manage/(/?.*)' % self.options['web_root'], webserve.Manage),
(r'%s/ui(/?.*)' % self.options['web_root'], webserve.UI),
(r'%s/browser(/?.*)' % self.options['web_root'], webserve.WebFileBrowser),