Change more overhaul to Config Post Processing.

Change texts and descriptions throughout.
Fix info icons in "Naming Legends".
Change naming sample lines to be more available.
Add failed downloads Sabnzbd setup guide.
Fix "Anime name pattern" custom javascript validation.
This commit is contained in:
JackDandy 2014-11-19 17:20:03 +00:00
parent be92776792
commit 9d37bd538f
6 changed files with 1595 additions and 1480 deletions

View file

@ -4,6 +4,7 @@
* Remove redundant references from Config/Help & Info
* Fix poster preview on small poster layout
* Change overhaul Config/Anime to be in line with General Configuration
* Change descriptions and layout on Config/Anime page
* Remove output of source code line when warnings highlight libraries not used with IMDb
* Add dropdown on Add Trending Shows to display all shows, shows not in library, or shows in library
* Change Help and Info icon sprites to color and text of Arguments if unused
@ -19,11 +20,15 @@
* Remove old version checking code that no longer applies to SickGear's release system
* Fix pnotify notifications going full page
* Change overhaul Config Post Processing to be in line with General Configuration
* Change rearrange post processing items into sections for easier use
* Change rearrange Config Post Processing items into sections for easier use
* Fix CSS overriding link colors on config pages
* Change Config Post Processing texts and descriptions throughout
* Fix Config Post Processing info icons in "Naming Legends"
* Change Config Post Processing naming sample lines to be more available
* Add Config Post Processing failed downloads Sabnzbd setup guide
* Fix Config Post Processing "Anime name pattern" custom javascript validation
[develop changelog]
* Change descriptions and layout on Config/Anime page
### 0.3.1 (2014-11-19 16:40:00 UTC)

View file

@ -206,7 +206,7 @@ inc_top.tmpl
}
.ui-widget-content a {
color: #fff;
color: #2D8FBF;
}
.ui-widget-content a:hover {
@ -1607,10 +1607,14 @@ select .selected {
config_postProcessing.tmpl
========================================================================== */
#config .episode-sample {
background-color: rgb(34, 34, 34);
border-color: rgb(17, 17, 17);
}
#config div.example {
padding: 10px;
background-color: #333333;
border: 1px solid #111;
border-color: #111;
}
.Key {
@ -1652,19 +1656,7 @@ config_postProcessing.tmpl
config_notifications.tmpl
========================================================================== */
div.metadata_options_wrapper {
float: left;
width: 190px;
}
div.metadata_example_wrapper {
float: right;
width: 325px;
}
div.metadata_options {
padding: 7px;
overflow: auto;
background: #333;
color: #fff;
border: 1px solid #111;
@ -1673,34 +1665,22 @@ div.metadata_options {
div.metadata_options label:hover {
color: #fff;
background-color: #15528F;
cursor: pointer;
}
div.metadata_options label {
display: block;
padding-left: 7px;
line-height: 20px;
color: #fff;
}
div.metadata_example {
padding: 8px;
border: 1px solid rgb(61, 61, 61);
}
div.metadata_example label {
display: block;
line-height: 21px;
color: #fff;
cursor: pointer;
}
div.metadataDiv .disabled {
color: #ccc;
}
.notifier-icon {
float: left;
margin: 6px 4px 0px 0px;
color: #888;
}
.warning {

View file

@ -1587,8 +1587,14 @@ select .selected {
config_postProcessing.tmpl
========================================================================== */
#config .episode-sample {
background-color: rgb(255, 255, 255);
border-color: rgb(204, 204, 204);
}
#config div.example {
padding: 10px; background-color: #efefef;
background-color: #efefef;
border-color: rgb(204, 204, 204);
}
.Key {
@ -1630,19 +1636,7 @@ config_postProcessing.tmpl
config_notifications.tmpl
========================================================================== */
div.metadata_options_wrapper {
float: left;
width: 190px;
}
div.metadata_example_wrapper {
float: right;
width: 325px;
}
div.metadata_options {
padding: 7px;
overflow: auto;
background: #f5f1e4;
border: 1px solid #ccc;
}
@ -1650,34 +1644,22 @@ div.metadata_options {
div.metadata_options label:hover {
color: #fff;
background-color: #57442b;
cursor: pointer;
}
div.metadata_options label {
display: block;
padding-left: 7px;
line-height: 20px;
color: #036;
}
div.metadata_example {
padding: 8px;
border: 1px solid rgb(247, 247, 247);
}
div.metadata_example label {
display: block;
line-height: 21px;
color: #000;
cursor: pointer;
}
div.metadataDiv .disabled {
color: #ccc;
}
.notifier-icon {
float: left;
margin: 6px 4px 0px 0px;
color: #aaa;
}
.warning {

View file

@ -199,6 +199,10 @@ inc_top.tmpl
background: #dcdcdc url("../css/lib/images/ui-bg_highlight-soft_75_dcdcdc_1x100.png") 50% top repeat-x;
}
.ui-widget-content a {
text-decoration: none;
}
.ui-widget-header {
background: #ffffff url("../css/lib/images/ui-bg_flat_0_ffffff_40x100.png") 50% 50% repeat-x;
}
@ -1660,8 +1664,21 @@ select .selected {
config_postProcessing.tmpl
========================================================================== */
#config .episode-sample {
width: 240px;
margin-right: 10px;
border: 1px solid;
}
#config .episode-sample h3 {
margin: 10px;
font-size: 18px;
line-height: 24px;
}
#config div.example {
padding: 10px; background-color: #efefef;
padding: 10px;
border: 1px solid;
}
.Key {
@ -1709,43 +1726,47 @@ div.metadata_options_wrapper {
}
div.metadata_example_wrapper {
float: right;
width: 325px;
margin-left: 220px;
}
div.metadata_options_wrapper h4,
div.metadata_example_wrapper h4 {
margin: 0 0 10px;
}
div.metadata_options {
padding: 7px;
overflow: auto;
background: #f5f1e4;
border: 1px solid #ccc;
}
div.metadata_options label:hover {
color: #fff;
background-color: #57442b;
cursor: pointer;
}
div.metadata_options label {
display: block;
padding-left: 7px;
line-height: 20px;
color: #036;
}
div.metadata_example {
padding: 8px;
div.metadata_example label {
cursor: pointer;
font-weight: 600;
}
div.metadata_options label,
div.metadata_example label {
display: block;
line-height: 21px;
color: #000;
cursor: pointer;
display: block;
padding: 3px;
margin: 0px;
}
div.metadata_options input {
margin-right: 3px;
vertical-align: baseline;
}
div.metadataDiv .disabled {
color: #ccc;
font-weight: normal;
}
.notifier-icon {
@ -1753,11 +1774,6 @@ div.metadataDiv .disabled {
margin: 6px 4px 0px 0px;
}
.warning {
border-color: #F89406;
background: url("../images/warning16.png") no-repeat right 5px center #fff;
}
/* =======================================================================
manage*.tmpl
========================================================================== */
@ -3006,13 +3022,31 @@ span.token-input-delete-token {
margin: 0 1px;
}
.ui-widget-content a {
text-decoration: none;
}
.boldest {font-weight: 900}
.red-text {color:#d33}
.clear-left {clear:left}
.float-left {float:left}
.nextline-block {display:block}
#failed-guide,
#failed-guide .title,
#failed-guide li {margin:0; padding:0}
#failed-guide .title {list-style-type: none}
#failed-guide li {margin-left:15px}
.icon-info-sign {
display: block;
width: 16px;
height: 16px;
margin: 2px 5px;
float: left;
}
.pp .component-group-list.right,
.pp .field-pair.right {
margin: 0 0 0 250px;
}
.trakt-image {
display: block;
width: 100%;

View file

@ -23,8 +23,10 @@
#else
<h1 class="title">$title</h1>
#end if
#set $checked = 'checked="checked"'
#set $selected = 'selected="selected"'
<div id="config">
<div id="config" class="pp">
<div id="config-content">
<form id="configForm" action="savePostProcessing" method="post">
@ -41,19 +43,20 @@
<div class="component-group-desc">
<h3>Post-Processing</h3>
<p>Settings that dictate how SickGear should process completed downloads.</p>
<p>SickGear options to process completed downloads.</p>
</div>
<fieldset class="component-group-list">
<div class="field-pair">
<label for="tv_download_dir">
<span class="component-title">TV download dir</span>
<span class="component-title">Completed TV downloads
<div class="red-text"><em class="boldest">must not</em> be the folder where downloading files are created</div>
</span>
<span class="component-desc">
<input type="text" name="tv_download_dir" id="tv_download_dir" value="$sickbeard.TV_DOWNLOAD_DIR" class="form-control input-sm input350" />
<div class="clear-left">
<p>the folder where your download client puts <b>completed</b> downloads<br>
<span class="red-text">should be separate to where your download client puts files while downloading</span><br>
<b>note:</b> use only if not using SABnzbd+ post processing or if SABnzbd+ and SickGear are on different PCs.</p>
<div class="float-left">
<p>folder where download clients save <b><em class="boldest">completed</em></b> downloads.&nbsp;
<b>note:</b> only use if not using SABnzbd post processing <em>or</em> if SABnzbd is on a different PC to SickGear</p>
</div>
</span>
</label>
@ -64,39 +67,38 @@
<span class="component-title">Process episode method</span>
<span class="component-desc">
<select name="process_method" id="process_method" class="form-control input-sm">
#set $process_method_text = {'copy': "Copy", 'move': "Move", 'hardlink': "Hard Link", 'symlink' : "Symbolic Link"}
#for $curAction in ('copy', 'move', 'hardlink', 'symlink'):
#set $process_method_text = {'copy': "Copy", 'move': "Move", 'hardlink': "Hard Link", 'symlink' : "Symbolic Link"}
#for $curAction in ('copy', 'move', 'hardlink', 'symlink'):
#if $sickbeard.PROCESS_METHOD == $curAction:
#set $process_method = "selected=\"selected\""
#set $process_method = $selected
#else
#set $process_method = ""
#set $process_method = ''
#end if
<option value="$curAction" $process_method>$process_method_text[$curAction]</option>
#end for
#end for
</select>
<p>method to be used to put file in the <em>TV directory</em></p>
<span>...&nbsp;completed downloads to under a parent TV folder</span>
</span>
</label>
</div>
<div class="field-pair">
<label for="process_automatically">
<span class="component-title">Scan and post-process</span>
<span class="component-title">Scan and post process</span>
<span class="component-desc">
<input type="checkbox" name="process_automatically" id="process_automatically" #if $sickbeard.PROCESS_AUTOMATICALLY == True then "checked=\"checked\"" else ""# />
<p>scan and post-process any files in your <em>TV download dir</em>?<br>
<b>note:</b> do not use if you use an external post-processing script<br>
eg. NZBMedia w/ NZBGET, sabToSickbeard w/ SABnzbd</p>
<input type="checkbox" name="process_automatically" id="process_automatically" #if $sickbeard.PROCESS_AUTOMATICALLY == True then $checked else ''# />
<p>files in the <em>completed TV downloads</em> folder.&nbsp;
<b>note:</b> do not enable with external post processing scripts like sabToSickbeard for SABnzbd, or NZBMedia for NZBGET</p>
</span>
</label>
</div>
<div class="field-pair">
<label for="autopostprocesser_frequency">
<span class="component-title">Run post-process every</span>
<span class="component-title">Run post process every</span>
<span class="component-desc">
<input type="text" name="autopostprocesser_frequency" id="autopostprocesser_frequency" value="$sickbeard.AUTOPOSTPROCESSER_FREQUENCY" class="form-control input-sm input75" />
<p>minutes to check for new files to post-process (eg. 10)</p>
<p>minutes to check for new files to process (e.g. 10)</p>
</span>
</label>
</div>
@ -105,8 +107,8 @@
<label for="postpone_if_sync_files">
<span class="component-title">Postpone post processing</span>
<span class="component-desc">
<input type="checkbox" name="postpone_if_sync_files" id="postpone_if_sync_files" #if $sickbeard.POSTPONE_IF_SYNC_FILES == True then "checked=\"checked\"" else ""# />
<p>if <b>!sync</b> files are present in the <em>TV download dir</em></p>
<input type="checkbox" name="postpone_if_sync_files" id="postpone_if_sync_files" #if $sickbeard.POSTPONE_IF_SYNC_FILES == True then $checked else ''# />
<p>if <b>!sync</b> files are present in the <em>completed TV downloads</em> folder</p>
</span>
</label>
</div>
@ -117,8 +119,9 @@
<span class="component-desc">
<input type="text" name="extra_scripts" value="<%='|'.join(sickbeard.EXTRA_SCRIPTS)%>" class="form-control input-sm input350" />
<div class="clear-left">
<p>Additional scripts separated by <b>|</b><br>
<b>note:</b> scripts are called after SickGear's own post-processing</p>
<p>scripts are called after SickGear's built-in post processing.
&nbsp;<b>note:</b> use <b>|</b> to separate additional extra scripts</span>
</p>
</div>
</span>
</label>
@ -133,7 +136,7 @@
<div class="component-group-desc">
<h3>File Handling</h3>
<p>Optional settings for the way post-processing handles files</p>
<p>More file processing controls.</p>
</div>
<fieldset class="component-group-list">
@ -142,9 +145,8 @@
<label for="unpack">
<span class="component-title">Unpack downloads</span>
<span class="component-desc">
<input id="unpack" type="checkbox" name="unpack" #if $sickbeard.UNPACK == True then "checked=\"checked\"" else ""# />
<p>unpack any TV releases in your <em>TV download dir</em>?<br>
<b>note:</b> only working with RAR archive</p>
<input id="unpack" type="checkbox" name="unpack" #if $sickbeard.UNPACK == True then $checked else ''# />
<p>unrar TV releases in the <em>completed TV downloads</em> folder</p>
</span>
</label>
</div>
@ -153,8 +155,8 @@
<label for="skip_removed_files">
<span class="component-title">Skip remove detection</span>
<span class="component-desc">
<input type="checkbox" name="skip_removed_files" id="skip_removed_files" #if $sickbeard.SKIP_REMOVED_FILES == True then "checked=\"checked\"" else ""# />
<p>skip detection of removed files, so they don't get set to ignored<br>
<input type="checkbox" name="skip_removed_files" id="skip_removed_files" #if $sickbeard.SKIP_REMOVED_FILES == True then $checked else ''# />
<p>skip detection of removed files so the episode is not set to ignored<br>
<b>note:</b> this may mean SickGear misses renames as well</p>
</span>
</label>
@ -164,7 +166,7 @@
<label for="move_associated_files">
<span class="component-title">Move associated files</span>
<span class="component-desc">
<input type="checkbox" name="move_associated_files" id="move_associated_files" #if $sickbeard.MOVE_ASSOCIATED_FILES == True then "checked=\"checked\"" else ""# />
<input type="checkbox" name="move_associated_files" id="move_associated_files" #if $sickbeard.MOVE_ASSOCIATED_FILES == True then $checked else ''# />
<p>move srr/srt/sfv/etc files with the episode when processed</p>
</span>
</label>
@ -174,7 +176,7 @@
<label for="nfo_rename">
<span class="component-title">Rename .nfo file</span>
<span class="component-desc">
<input type="checkbox" name="nfo_rename" id="nfo_rename" #if $sickbeard.NFO_RENAME == True then "checked=\"checked\"" else ""# />
<input type="checkbox" name="nfo_rename" id="nfo_rename" #if $sickbeard.NFO_RENAME == True then $checked else ''# />
<p>rename the original .nfo file to .nfo-orig to avoid conflicts</p>
</span>
</label>
@ -184,7 +186,7 @@
<label for="rename_episodes">
<span class="component-title">Rename episodes</span>
<span class="component-desc">
<input type="checkbox" name="rename_episodes" id="rename_episodes" #if $sickbeard.RENAME_EPISODES == True then "checked=\"checked\"" else ""# />
<input type="checkbox" name="rename_episodes" id="rename_episodes" #if $sickbeard.RENAME_EPISODES == True then $checked else ''# />
<p>rename episodes using the Episode Naming settings</p>
</span>
</label>
@ -194,7 +196,7 @@
<label for="airdate_episodes">
<span class="component-title">Change file date</span>
<span class="component-desc">
<input type="checkbox" name="airdate_episodes" id="airdate_episodes" #if $sickbeard.AIRDATE_EPISODES == True then "checked=\"checked\"" else ""# />
<input type="checkbox" name="airdate_episodes" id="airdate_episodes" #if $sickbeard.AIRDATE_EPISODES == True then $checked else ''# />
<p>set last modified filedate to the date that the episode aired<br>
<b>note:</b> some systems may ignore this feature.</p>
</span>
@ -210,28 +212,38 @@
<div class="component-group-desc">
<h3>Failed Downloads</h3>
<p>SickGear will attempt to download another release if downloads are reported as failed</p>
<p>SickGear can attempt a different release if a download is found to fail</p>
</div>
<fieldset class="component-group-list">
<div class="field-pair">
<label for="use_failed_downloads">
<div class="field-pair" style="padding-bottom:0">
<label for="use_failed_downloads" style="margin-bottom:0">
<span class="component-title">Enable</span>
<span class="component-desc">
<input id="use_failed_downloads" type="checkbox" class="enabler" name="use_failed_downloads" #if $sickbeard.USE_FAILED_DOWNLOADS == True then "checked=\"checked\"" else ""# />
<p>failed download handling<br>
<b>note:</b> see <em><a href="<%= anon_url('https://raw.githubusercontent.com/SickGear/SickGear/master/readme-FailedDownloads.md') %>" rel="noreferrer" onclick="window.open(this.href, '_blank'); return false;">readme-FailedDownloads.md</a></em> before enabling for SABnzbd setup instructions</p>
<input id="use_failed_downloads" type="checkbox" class="enabler" name="use_failed_downloads" #if $sickbeard.USE_FAILED_DOWNLOADS == True then $checked else ''# />
<p>failed download handling</p>
</span>
</label>
</div>
<div id="content_use_failed_downloads">
<div class="field-pair" style="padding-top:0">
<span class="component-desc">
<ul id="failed-guide">
<li class="title">SABnzbd setup guide</li>
<li class="action">menu "Switches"&nbsp;... [disable] "<em class="boldest">Abort jobs that cannot be completed</em>"</li>
<li class="action">menu "Switches"&nbsp;... [disable] "<em class="boldest">Post-Process Only Verified Jobs</em>"</li>
<li class="action">menu "Special"&nbsp;... [enable] "<em class="boldest">empty_postproc</em>"</li>
</ul>
</span>
</div>
<div class="field-pair">
<label for="delete_failed">
<span class="component-title">Delete failed downloads</span>
<span class="component-desc">
<input id="delete_failed" type="checkbox" name="delete_failed" #if $sickbeard.DELETE_FAILED == True then "checked=\"checked\"" else ""# />
<input id="delete_failed" type="checkbox" name="delete_failed" #if $sickbeard.DELETE_FAILED == True then $checked else ''# />
<p>delete left over files from a failed download<br>
</span>
</label>
@ -245,29 +257,39 @@
</div><!-- /component-group1 //-->
<% ######################################################################################### %>
<% ######################################################################################### %>
<% ## TAB 2 ## %>
<% ######################################################################################### %>
<% ######################################################################################### %>
<% ########################### %>
<% ## Start of Regular Show ## %>
<% ########################### %>
<div id="core-component-group2" class="component-group">
<div class="component-group-desc">
<h3>Episode Naming</h3>
<p>How SickGear will name and sort your episodes.</p>
<p>Regular episode naming.</p>
</div>
<fieldset class="component-group-list">
<div class="field-pair">
<label for="name_presets">
<span class="component-title">Naming pattern</span>
<span class="component-title">Name pattern</span>
<span class="component-desc">
<select id="name_presets" class="form-control input-sm">
#set is_custom = True
#for $cur_preset in $naming.name_presets:
#set is_custom = True
#for $cur_preset in $naming.name_presets:
#set $tmp = $naming.test_name($cur_preset, anime_type=3)
#if $cur_preset == $sickbeard.NAMING_PATTERN:
#if $sickbeard.NAMING_PATTERN == $cur_preset:
#set is_custom = False
#end if
<option id="$cur_preset" #if $cur_preset == $sickbeard.NAMING_PATTERN then "selected=\"selected\"" else ""#>$os.path.join($tmp['dir'], $tmp['name'])</option>
#end for
<option id="$sickbeard.NAMING_PATTERN" #if $is_custom then "selected=\"selected\"" else ""#>Custom...</option>
<option id="$cur_preset" #if $sickbeard.NAMING_PATTERN == $cur_preset then $selected else ''#>$os.path.join($tmp['dir'], $tmp['name'])</option>
#end for
<option id="$sickbeard.NAMING_PATTERN" #if $is_custom then $selected else ''#>Custom...</option>
</select>
</span>
</label>
@ -407,19 +429,35 @@
<div class="field-pair">
<label for="naming_multi_ep">
<span class="component-title">Multi-Episode style</span>
<span class="component-title">Multi episode style</span>
<span class="component-desc">
<select id="naming_multi_ep" name="naming_multi_ep" class="form-control input-sm">
#for $cur_multi_ep in sorted($multiEpStrings.items(), key=lambda x: x[1]):
<option value="$cur_multi_ep[0]" #if $cur_multi_ep[0] == $sickbeard.NAMING_MULTI_EP then "selected=\"selected\" class=\"selected\"" else ""#>$cur_multi_ep[1]</option>
#end for
#for $cur_multi_ep in sorted($multiEpStrings.items(), key=lambda x: x[1]):
<option value="$cur_multi_ep[0]" #if $sickbeard.NAMING_MULTI_EP == $cur_multi_ep[0] then 'selected="selected" class="selected"' else ''#>$cur_multi_ep[1]</option>
#end for
</select>
</span>
</label>
</div>
<div class="field-pair">
<label for="naming_strip_year">
<span class="component-title">Strip show year</span>
<span class="component-desc">
<input type="checkbox" id="naming_strip_year" name="naming_strip_year" #if $sickbeard.NAMING_STRIP_YEAR then $checked else ''#/>
<p>when renaming files, remove years that are inside parentheses #if True then 'e.g. "(%s)"' % str(time.strftime('%Y')) else ''#</p>
</span>
</label>
</div>
</fieldset>
<fieldset class="component-group-list">
<div id="naming_example_div">
<h3>Single-Episode sample:</h3>
<div class="component-group-desc episode-sample">
<h3>Single episode sample:</h3>
</div>
<div class="example">
<span class="jumbo" id="naming_example">&nbsp;</span>
</div>
@ -427,53 +465,55 @@
</div>
<div id="naming_example_multi_div">
<h3>Multi-Episode sample:</h3>
<div class="component-group-desc episode-sample">
<h3>Multi episode sample:</h3>
</div>
<div class="example">
<span class="jumbo" id="naming_example_multi">&nbsp;</span>
</div>
<br/>
</div>
<div class="field-pair">
<label for="naming_strip_year">
<span class="component-title">Strip show year</span>
<span class="component-desc">
<input type="checkbox" id="naming_strip_year" name="naming_strip_year" #if $sickbeard.NAMING_STRIP_YEAR then "checked=\"checked\"" else ""#/>
<p>remove the show's year when renaming the file<br>
only applies to shows that have year inside parentheses</p>
</span>
</label>
</fieldset>
<% ########################## %>
<% ## End of Regular Show ## %>
<% ## ## %>
<% ## Start of Air-by-Date ## %>
<% ########################## %>
<div class="component-group-desc">
<p>Air-by-date episode naming.</p>
</div>
<div class="field-pair">
<div class="field-pair right">
<label for="naming_custom_abd">
<span class="component-title">Custom Air-By-Date</span>
<span class="component-title">Custom air-by-date</span>
<span class="component-desc">
<input type="checkbox" class="enabler" id="naming_custom_abd" name="naming_custom_abd" #if $sickbeard.NAMING_CUSTOM_ABD then "checked=\"checked\"" else ""#/>
<p>name Air-By-Date shows differently than regular shows</p>
<input type="checkbox" class="enabler" id="naming_custom_abd" name="naming_custom_abd" #if $sickbeard.NAMING_CUSTOM_ABD then $checked else ''#/>
<p>name air-by-date shows differently than regular shows</p>
</span>
</label>
</div>
<div id="content_naming_custom_abd">
<div class="field-pair">
<fieldset class="component-group-list">
<div class="field-pair right">
<label for="name_abd_presets">
<span class="component-title">Naming pattern</span>
<span class="component-title">Air-by-date name pattern</span>
<span class="component-desc">
<select id="name_abd_presets" class="form-control input-sm">
#set is_abd_custom = True
#for $cur_preset in $naming.name_abd_presets:
#set is_abd_custom = True
#for $cur_preset in $naming.name_abd_presets:
#set $tmp = $naming.test_name($cur_preset)
#if $cur_preset == $sickbeard.NAMING_ABD_PATTERN:
#if $sickbeard.NAMING_ABD_PATTERN == $cur_preset:
#set is_abd_custom = False
#end if
<option id="$cur_preset" #if $cur_preset == $sickbeard.NAMING_ABD_PATTERN then "selected=\"selected\"" else ""#>$os.path.join($tmp['dir'], $tmp['name'])</option>
#end for
<option id="$sickbeard.NAMING_ABD_PATTERN" #if $is_abd_custom then "selected=\"selected\"" else ""#>Custom...</option>
<option id="$cur_preset" #if $sickbeard.NAMING_ABD_PATTERN == $cur_preset then $selected else ''#>$os.path.join($tmp['dir'], $tmp['name'])</option>
#end for
<option id="$sickbeard.NAMING_ABD_PATTERN" #if $is_abd_custom then $selected else ''#>Custom...</option>
</select>
</span>
</label>
</div>
<div id="naming_abd_custom">
<div class="field-pair">
@ -592,17 +632,17 @@
<td>09</td>
</tr>
<tr>
<td class="align-right"><i class="icon-info-sign" title="Multi-EP style is ignored"></i> <b>Release Name:</b></td>
<td class="align-right"><i class="icon-info-sign" title="Multi-episode style is ignored"></i> <b>Release Name:</b></td>
<td>%RN</td>
<td>Show.Name.2010.03.09.HDTV.XviD-RLSGROUP</td>
</tr>
<tr class="even">
<td class="align-right"><i class="icon-info-sign" title="'SickGear' is used in place of RLSGROUP if it could not be properly detected"></i> <b>Release Group:</b></td>
<td class="align-right"><i class="icon-info-sign" title="if RLSGROUP is not detected, 'SickGear' is used"></i> <b>Release Group:</b></td>
<td>%RG</td>
<td>RLSGROUP</td>
</tr>
<tr>
<td class="align-right"><i class="icon-info-sign" title="If episode is proper/repack add 'proper' to name."></i> <b>Release Type:</b></td>
<td class="align-right"><i class="icon-info-sign" title="Add 'proper' to name if episode is a proper or repack">&nbsp;</i> <b>Release Type:</b></td>
<td>%RT</td>
<td>PROPER</td>
</tr>
@ -611,49 +651,70 @@
<br/>
</div>
</div><!-- /naming_abd_custom -->
</div>
</fieldset>
<fieldset class="component-group-list">
<div class="component-group-list">
<div id="naming_abd_example_div">
<h3>Air-By-Date sample:</h3>
<div class="component-group-desc episode-sample">
<h3>Air-by-date sample:</h3>
</div>
<div class="example">
<span class="jumbo" id="naming_abd_example">&nbsp;</span>
</div>
<br/>
</div>
</div>
</fieldset>
<div class="field-pair right">
<input type="submit" class="btn config_submitter" value="Save Changes" /><br/>
</div>
</div><!-- /naming_abd_different -->
<div class="field-pair">
<% ######################## %>
<% ## End of Air-by-Date ## %>
<% ## ## %>
<% ## Start of Sports ## %>
<% ######################## %>
<div class="component-group-desc">
<p>Sport episode naming.</p>
</div>
<div class="field-pair right">
<label for="naming_custom_sports">
<span class="component-title">Custom Sports</span>
<span class="component-title">Custom sports</span>
<span class="component-desc">
<input type="checkbox" class="enabler" id="naming_custom_sports" name="naming_custom_sports" #if $sickbeard.NAMING_CUSTOM_SPORTS then "checked=\"checked\"" else ""#/>
<p>name Sports shows differently than regular shows</p>
<input type="checkbox" class="enabler" id="naming_custom_sports" name="naming_custom_sports" #if $sickbeard.NAMING_CUSTOM_SPORTS then $checked else ''#/>
<p>name sports shows differently than regular shows</p>
</span>
</label>
</div>
<div id="content_naming_custom_sports">
<div class="field-pair">
<fieldset class="component-group-list">
<div class="field-pair right">
<label for="name_sports_presets">
<span class="component-title">Naming pattern</span>
<span class="component-title">Sports name pattern</span>
<span class="component-desc">
<select id="name_sports_presets" class="form-control input-sm">
#set is_sports_custom = True
#for $cur_preset in $naming.name_sports_presets:
#set is_sports_custom = True
#for $cur_preset in $naming.name_sports_presets:
#set $tmp = $naming.test_name($cur_preset)
#if $cur_preset == $sickbeard.NAMING_SPORTS_PATTERN:
#if $sickbeard.NAMING_SPORTS_PATTERN == $cur_preset:
#set is_sports_custom = False
#end if
<option id="$cur_preset" #if $cur_preset == $sickbeard.NAMING_SPORTS_PATTERN then "selected=\"selected\"" else ""#>$os.path.join($tmp['dir'], $tmp['name'])</option>
#end for
<option id="$sickbeard.NAMING_SPORTS_PATTERN" #if $is_sports_custom then "selected=\"selected\"" else ""#>Custom...</option>
<option id="$cur_preset" #if $sickbeard.NAMING_SPORTS_PATTERN == $cur_preset then $selected else ''#>$os.path.join($tmp['dir'], $tmp['name'])</option>
#end for
<option id="$sickbeard.NAMING_SPORTS_PATTERN" #if $is_sports_custom then $selected else ''#>Custom...</option>
</select>
</span>
</label>
</div>
<div id="naming_sports_custom">
<div class="field-pair" style="padding-top: 0;">
<div class="field-pair">
<label for="naming_sports_pattern">
<span class="component-title"></span>
<span class="component-desc">
@ -769,17 +830,17 @@
<td>09</td>
</tr>
<tr>
<td class="align-right"><i class="icon-info-sign" title="Multi-EP style is ignored"></i> <b>Release Name:</b></td>
<td class="align-right"><i class="icon-info-sign" title="Multi-episode style is ignored"></i> <b>Release Name:</b></td>
<td>%RN</td>
<td>Show.Name.9th.Mar.2011.HDTV.XviD-RLSGROUP</td>
</tr>
<tr class="even">
<td class="align-right"><i class="icon-info-sign" title="'SickGear' is used in place of RLSGROUP if it could not be properly detected"></i> <b>Release Group:</b></td>
<td class="align-right"><i class="icon-info-sign" title="If RLSGROUP is not detected, 'SickGear' is used"></i> <b>Release Group:</b></td>
<td>%RG</td>
<td>RLSGROUP</td>
</tr>
<tr>
<td class="align-right"><i class="icon-info-sign" title="If episode is proper/repack add 'proper' to name."></i> <b>Release Type:</b></td>
<td class="align-right"><i class="icon-info-sign" title="Add 'proper' to name if episode is a proper or repack"></i> <b>Release Type:</b></td>
<td>%RT</td>
<td>PROPER</td>
</tr>
@ -788,47 +849,72 @@
<br/>
</div>
</div><!-- /naming_sports_custom -->
</div>
</fieldset>
<fieldset class="component-group-list">
<div class="component-group-list">
<div id="naming_sports_example_div">
<div class="component-group-desc episode-sample">
<h3>Sports sample:</h3>
</div>
<div class="example">
<span class="jumbo" id="naming_sports_example">&nbsp;</span>
</div>
<br/>
</div>
</div>
</fieldset>
<div class="field-pair right">
<input type="submit" class="btn config_submitter" value="Save Changes" /><br/>
</div>
</div><!-- /naming_sports_different -->
<% #################### %>
<% ## End of Sports ## %>
<% ## ## %>
<% ## Start of Anime ## %>
<% #################### %>
<div class="component-group-desc">
<p>Anime episode naming.</p>
</div>
<!-- naming_anime_custom -->
<div class="field-pair">
<div class="field-pair right">
<label for="naming_custom_anime">
<span class="component-title">Custom Anime</span>
<span class="component-title">Custom anime</span>
<span class="component-desc">
<input type="checkbox" class="enabler" id="naming_custom_anime" name="naming_custom_anime" #if $sickbeard.NAMING_CUSTOM_ANIME then "checked=\"checked\"" else ""#/>
<p>name Anime shows differently than regular shows</p>
<input type="checkbox" class="enabler" id="naming_custom_anime" name="naming_custom_anime" #if $sickbeard.NAMING_CUSTOM_ANIME then $checked else ''#/>
<p>name anime shows differently than regular shows</p>
</span>
</label>
</div>
<div id="content_naming_custom_anime">
<div class="field-pair">
<fieldset class="component-group-list">
<div class="field-pair right">
<label for="name_anime_presets">
<span class="component-title">Name Pattern:</span>
<span class="component-title">Anime name pattern</span>
<span class="component-desc">
<select id="name_anime_presets" class="form-control input-sm">
#set is_anime_custom = True
#for $cur_preset in $naming.name_anime_presets:
#set is_anime_custom = True
#for $cur_preset in $naming.name_anime_presets:
#set $tmp = $naming.test_name($cur_preset)
#if $cur_preset == $sickbeard.NAMING_ANIME_PATTERN:
#if $sickbeard.NAMING_ANIME_PATTERN == $cur_preset:
#set is_anime_custom = False
#end if
<option id="$cur_preset" #if $cur_preset == $sickbeard.NAMING_ANIME_PATTERN then "selected=\"selected\"" else ""#>$os.path.join($tmp['dir'], $tmp['name'])</option>
#end for
<option id="$sickbeard.NAMING_ANIME_PATTERN" #if $is_anime_custom then "selected=\"selected\"" else ""#>Custom...</option>
<option id="$cur_preset" #if $sickbeard.NAMING_ANIME_PATTERN == $cur_preset then $selected else ''#>$os.path.join($tmp['dir'], $tmp['name'])</option>
#end for
<option id="$sickbeard.NAMING_ANIME_PATTERN" #if $is_anime_custom then $selected else ''#>Custom...</option>
</select>
</span>
</label>
</div>
<div id="naming_anime_custom">
<div class="field-pair">
@ -942,17 +1028,17 @@
<td>720p_BluRay</td>
</tr>
<tr class="even">
<td class="align-right"><i class="icon-info-sign" title="Multi-EP style is ignored"></i> <b>Release Name:</b></td>
<td class="align-right"><i class="icon-info-sign" title="Multi-episode style is ignored"></i> <b>Release Name:</b></td>
<td>%RN</td>
<td>Show.Name.S02E03.HDTV.XviD-RLSGROUP</td>
</tr>
<tr>
<td class="align-right"><i class="icon-info-sign" title="'SickGear' is used in place of RLSGROUP if it could not be properly detected"></i> <b>Release Group:</b></td>
<td class="align-right"><i class="icon-info-sign" title="If RLSGROUP is not detected, 'SickGear' is used"></i> <b>Release Group:</b></td>
<td>%RG</td>
<td>RLSGROUP</td>
</tr>
<tr class="even">
<td class="align-right"><i class="icon-info-sign" title="If episode is proper/repack add 'proper' to name."></i> <b>Release Type:</b></td>
<td class="align-right"><i class="icon-info-sign" title="Add 'proper' to name if episode is a proper or repack"></i> <b>Release Type:</b></td>
<td>%RT</td>
<td>PROPER</td>
</tr>
@ -964,19 +1050,27 @@
<div class="field-pair">
<label for="naming_anime_multi_ep">
<span class="component-title">Multi-Episode style</span>
<span class="component-title">Multi episode style</span>
<span class="component-desc">
<select id="naming_anime_multi_ep" name="naming_anime_multi_ep" class="form-control input-sm">
#for $cur_multi_ep in sorted($multiEpStrings.items(), key=lambda x: x[1]):
<option value="$cur_multi_ep[0]" #if $cur_multi_ep[0] == $sickbeard.NAMING_ANIME_MULTI_EP then "selected=\"selected\" class=\"selected\"" else ""#>$cur_multi_ep[1]</option>
#end for
#for $cur_multi_ep in sorted($multiEpStrings.items(), key=lambda x: x[1]):
<option value="$cur_multi_ep[0]" #if $sickbeard.NAMING_ANIME_MULTI_EP == $cur_multi_ep[0] then 'selected="selected" class="selected"' else ''#>$cur_multi_ep[1]</option>
#end for
</select>
</span>
</label>
</div>
</div>
</fieldset>
<fieldset class="component-group-list">
<div id="naming_example_anime_div">
<h3>Single-Episode Anime sample:</h3>
<div class="component-group-desc episode-sample">
<h3>Single anime sample:</h3>
</div>
<div class="example">
<span class="jumbo" id="naming_example_anime">&nbsp;</span>
</div>
@ -984,18 +1078,24 @@
</div>
<div id="naming_example_multi_anime_div">
<h3>Multi-Episode Anime sample:</h3>
<div class="component-group-desc episode-sample">
<h3>Multi anime sample:</h3>
</div>
<div class="example">
<span class="jumbo" id="naming_example_multi_anime">&nbsp;</span>
</div>
<br/>
</div>
</fieldset>
<fieldset class="component-group-list right">
<div class="field-pair">
<label for="naming_anime">
<span class="component-title">Add absolute numbering</span>
<span class="component-desc">
<input type="radio" name="naming_anime" id="naming_anime" value="1" #if $sickbeard.NAMING_ANIME == 1 then "checked=\"checked\"" else ""#/>
<input type="radio" name="naming_anime" id="naming_anime" value="1" #if $sickbeard.NAMING_ANIME == 1 then $checked else ''#/>
<p>add the absolute number to the season/episode format<br>
(eg. S15E45 - 310 vs S15E45)</p>
</span>
@ -1006,7 +1106,7 @@
<label for="naming_anime_only">
<span class="component-title">Only absolute numbering</span>
<span class="component-desc">
<input type="radio" name="naming_anime" id="naming_anime_only" value="2" #if $sickbeard.NAMING_ANIME == 2 then "checked=\"checked\"" else ""#/>
<input type="radio" name="naming_anime" id="naming_anime_only" value="2" #if $sickbeard.NAMING_ANIME == 2 then $checked else ''#/>
<p>replace season/episode format with absolute numbering</p>
</span>
</label>
@ -1016,60 +1116,75 @@
<label for="naming_anime_none">
<span class="component-title">No absolute numbering</span>
<span class="component-desc">
<input type="radio" name="naming_anime" id="naming_anime_none" value="3" #if $sickbeard.NAMING_ANIME == 3 then "checked=\"checked\"" else ""#/>
<input type="radio" name="naming_anime" id="naming_anime_none" value="3" #if $sickbeard.NAMING_ANIME == 3 then $checked else ''#/>
<p>do <b>not</b> include absolute numbering</p>
</span>
</label>
</div>
</fieldset>
<div class="field-pair right">
<input type="submit" class="btn config_submitter" value="Save Changes" /><br/>
</div>
</div><!-- /naming_anime_different -->
<div></div>
<input type="submit" class="btn config_submitter" value="Save Changes" /><br/>
</fieldset>
</div><!-- /component-group2 //-->
<% ######################################################################################### %>
<% ######################################################################################### %>
<% ## TAB 3 ## %>
<% ######################################################################################### %>
<% ######################################################################################### %>
<div id="core-component-group3" class="component-group">
<div class="component-group-desc">
<h3>Metadata</h3>
<p>The data associated to the data. These are files associated to a TV show in the form of images and text that, when supported, will enhance the viewing experience.</p>
<p>These are files associated to a TV show in the form of images and text that, where supported, enhance the viewing experience.</p>
</div>
<fieldset class="component-group-list">
<div class="field-pair">
<label>
<span class="component-title">Metadata type</span>
<span class="component-title">Metadata target</span>
<span class="component-desc">
#set $m_dict = $metadata.get_metadata_generator_dict()
#set $m_dict = $metadata.get_metadata_generator_dict()
<select id="metadataType" class="form-control input-sm">
#for ($cur_name, $cur_generator) in sorted($m_dict.items()):
#for ($cur_name, $cur_generator) in sorted($m_dict.items()):
<option value="$cur_generator.get_id()">$cur_name</option>
#end for
#end for
</select>
<span>multiple targets can be configured in turn</span>
</span>
</label>
<span>Toggle the metadata options that you wish to be created. <b>Multiple targets may be used.</b></span>
</div>
#for ($cur_name, $cur_generator) in $m_dict.items():
<div class="field-pair">
<span>Choose data files to create with the following toggle options...</span>
</div>
<div class="field-pair">
#for ($cur_name, $cur_generator) in $m_dict.items():
#set $cur_metadata_inst = $sickbeard.metadata_provider_dict[$cur_generator.name]
#set $cur_id = $cur_generator.get_id()
<div class="metadataDiv" id="$cur_id">
<div class="metadata_options_wrapper">
<h4>Create:</h4>
<div class="metadata_options">
<label for="${cur_id}_show_metadata"><input type="checkbox" class="metadata_checkbox" id="${cur_id}_show_metadata" #if $cur_metadata_inst.show_metadata then "checked=\"checked\"" else ""#/>&nbsp;Show Metadata</label>
<label for="${cur_id}_episode_metadata"><input type="checkbox" class="metadata_checkbox" id="${cur_id}_episode_metadata" #if $cur_metadata_inst.episode_metadata then "checked=\"checked\"" else ""#/>&nbsp;Episode Metadata</label>
<label for="${cur_id}_fanart"><input type="checkbox" class="float-left metadata_checkbox" id="${cur_id}_fanart" #if $cur_metadata_inst.fanart then "checked=\"checked\"" else ""#/>&nbsp;Show Fanart</label>
<label for="${cur_id}_poster"><input type="checkbox" class="float-left metadata_checkbox" id="${cur_id}_poster" #if $cur_metadata_inst.poster then "checked=\"checked\"" else ""#/>&nbsp;Show Poster</label>
<label for="${cur_id}_banner"><input type="checkbox" class="float-left metadata_checkbox" id="${cur_id}_banner" #if $cur_metadata_inst.banner then "checked=\"checked\"" else ""#/>&nbsp;Show Banner</label>
<label for="${cur_id}_episode_thumbnails"><input type="checkbox" class="float-left metadata_checkbox" id="${cur_id}_episode_thumbnails" #if $cur_metadata_inst.episode_thumbnails then "checked=\"checked\"" else ""#/>&nbsp;Episode Thumbnails</label>
<label for="${cur_id}_season_posters"><input type="checkbox" class="float-left metadata_checkbox" id="${cur_id}_season_posters" #if $cur_metadata_inst.season_posters then "checked=\"checked\"" else ""#/>&nbsp;Season Posters</label>
<label for="${cur_id}_season_banners"><input type="checkbox" class="float-left metadata_checkbox" id="${cur_id}_season_banners" #if $cur_metadata_inst.season_banners then "checked=\"checked\"" else ""#/>&nbsp;Season Banners</label>
<label for="${cur_id}_season_all_poster"><input type="checkbox" class="float-left metadata_checkbox" id="${cur_id}_season_all_poster" #if $cur_metadata_inst.season_all_poster then "checked=\"checked\"" else ""#/>&nbsp;Season All Poster</label>
<label for="${cur_id}_season_all_banner"><input type="checkbox" class="float-left metadata_checkbox" id="${cur_id}_season_all_banner" #if $cur_metadata_inst.season_all_banner then "checked=\"checked\"" else ""#/>&nbsp;Season All Banner</label>
<label for="${cur_id}_show_metadata"><input type="checkbox" class="metadata_checkbox" id="${cur_id}_show_metadata" #if $cur_metadata_inst.show_metadata then $checked else ''#/>&nbsp;Show Metadata</label>
<label for="${cur_id}_episode_metadata"><input type="checkbox" class="metadata_checkbox" id="${cur_id}_episode_metadata" #if $cur_metadata_inst.episode_metadata then $checked else ''#/>&nbsp;Episode Metadata</label>
<label for="${cur_id}_fanart"><input type="checkbox" class="float-left metadata_checkbox" id="${cur_id}_fanart" #if $cur_metadata_inst.fanart then $checked else ''#/>&nbsp;Show Fanart</label>
<label for="${cur_id}_poster"><input type="checkbox" class="float-left metadata_checkbox" id="${cur_id}_poster" #if $cur_metadata_inst.poster then $checked else ''#/>&nbsp;Show Poster</label>
<label for="${cur_id}_banner"><input type="checkbox" class="float-left metadata_checkbox" id="${cur_id}_banner" #if $cur_metadata_inst.banner then $checked else ''#/>&nbsp;Show Banner</label>
<label for="${cur_id}_episode_thumbnails"><input type="checkbox" class="float-left metadata_checkbox" id="${cur_id}_episode_thumbnails" #if $cur_metadata_inst.episode_thumbnails then $checked else ''#/>&nbsp;Episode Thumbnails</label>
<label for="${cur_id}_season_posters"><input type="checkbox" class="float-left metadata_checkbox" id="${cur_id}_season_posters" #if $cur_metadata_inst.season_posters then $checked else ''#/>&nbsp;Season Posters</label>
<label for="${cur_id}_season_banners"><input type="checkbox" class="float-left metadata_checkbox" id="${cur_id}_season_banners" #if $cur_metadata_inst.season_banners then $checked else ''#/>&nbsp;Season Banners</label>
<label for="${cur_id}_season_all_poster"><input type="checkbox" class="float-left metadata_checkbox" id="${cur_id}_season_all_poster" #if $cur_metadata_inst.season_all_poster then $checked else ''#/>&nbsp;Season All Poster</label>
<label for="${cur_id}_season_all_banner"><input type="checkbox" class="float-left metadata_checkbox" id="${cur_id}_season_all_banner" #if $cur_metadata_inst.season_all_banner then $checked else ''#/>&nbsp;Season All Banner</label>
</div>
</div>
<div class="metadata_example_wrapper">
@ -1089,8 +1204,7 @@
</div>
<input type="hidden" name="${cur_id}_data" id="${cur_id}_data" value="$cur_metadata_inst.get_config()" />
</div>
#end for
#end for
<div class="clearfix"></div><br/>
<input type="submit" class="btn config_submitter" value="Save Changes" /><br/>
@ -1110,7 +1224,7 @@
<script type="text/javascript" charset="utf-8">
<!--
jQuery('#config-components').tabs();
jQuery('#tv_download_dir').fileBrowser({ title: 'Select TV Download Directory' });
jQuery('#tv_download_dir').fileBrowser({ title: 'Select completed TV downloads directory' });
//-->
</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

@ -230,26 +230,26 @@ $(document).ready(function () {
$.get(sbRoot + '/config/postProcessing/isNamingValid', {pattern: pattern, multi: multi, anime_type: anime_type},
function (data) {
if (data == "invalid") {
$('#naming_pattern').qtip('option', {
$('#naming_anime_pattern').qtip('option', {
'content.text': 'This pattern is invalid.',
'style.classes': 'qtip-rounded qtip-shadow qtip-red'
});
$('#naming_pattern').qtip('toggle', true);
$('#naming_pattern').css('background-color', '#FFDDDD');
$('#naming_anime_pattern').qtip('toggle', true);
$('#naming_anime_pattern').css('background-color', '#FFDDDD');
} else if (data == "seasonfolders") {
$('#naming_pattern').qtip('option', {
$('#naming_anime_pattern').qtip('option', {
'content.text': 'This pattern would be invalid without the folders, using it will force "Flatten" off for all shows.',
'style.classes': 'qtip-rounded qtip-shadow qtip-red'
});
$('#naming_pattern').qtip('toggle', true);
$('#naming_pattern').css('background-color', '#FFFFDD');
$('#naming_anime_pattern').qtip('toggle', true);
$('#naming_anime_pattern').css('background-color', '#FFFFDD');
} else {
$('#naming_pattern').qtip('option', {
$('#naming_anime_pattern').qtip('option', {
'content.text': 'This pattern is valid.',
'style.classes': 'qtip-rounded qtip-shadow qtip-green'
});
$('#naming_pattern').qtip('toggle', false);
$('#naming_pattern').css('background-color', '#FFFFFF');
$('#naming_anime_pattern').qtip('toggle', false);
$('#naming_anime_pattern').css('background-color', '#FFFFFF');
}
});
}