SickGear/gui/slick/interfaces/default/config_general.tmpl
JackDandy ccb9bb329c Coming Episodes Overhaul.
Change Coming Episodes to "Episodes" page (API endpoint is not renamed).
Add coming episodes to episode view renaming to config migration code.
Change Layout term "Calender" to "Day by Day" on Episodes page.
Fix saving of sort modes to config file on Episodes page.
Add qTip episode plots to "Day by Day" on Episodes page.
Add article sorting to networks on Episodes page.
Add toggle sort direction and multidimensional sort to isotope on Episodes page.
Add text "[paused]" where appropriate to shows on layout Day by Day.
Simplified sort code in webserver and in template.
Change page auto refresh from 10 to 30 mins.
Add other UI tweaks.
2015-01-08 16:43:17 +00:00

591 lines
25 KiB
Cheetah

#import os.path
#import datetime
#import locale
#import sickbeard
#from sickbeard.common import *
#from sickbeard.sbdatetime import *
#from sickbeard import config
#from sickbeard import metadata
#from sickbeard.metadata.generic import GenericMetadata
#from sickbeard.helpers import anon_url
#set global $title = 'Config - General'
#set global $header = 'General Configuration'
#set global $sbPath = '../..'
#set global $topmenu = 'config'
#include $os.path.join($sickbeard.PROG_DIR, 'gui/slick/interfaces/default/inc_top.tmpl')
#if $varExists('header')
<h1 class="header">$header</h1>
#else
<h1 class="title">$title</h1>
#end if
#set $indexer = 0
#if $sickbeard.INDEXER_DEFAULT
#set $indexer = $sickbeard.INDEXER_DEFAULT
#end if
<script type="text/javascript" src="$sbRoot/js/config.js?$sbPID"></script>
<script type="text/javascript" src="$sbRoot/js/rootDirs.js?$sbPID"></script>
<div id="config">
<div id="config-content">
<form id="configForm" action="saveGeneral" method="post">
<div id="config-components">
<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>
</ul>
<div id="core-component-group1">
<div class="component-group">
<div class="component-group-desc">
<h3>Misc</h3>
<p>Startup options. Indexer options. Log and show file locations.</p>
<p><b>Some options may require a manual restart to take effect.</b></p>
</div>
<fieldset class="component-group-list">
<div class="field-pair">
<label for="launch_browser">
<span class="component-title">Launch browser</span>
<span class="component-desc">
<input type="checkbox" name="launch_browser" id="launch_browser" #if $sickbeard.LAUNCH_BROWSER then 'checked="checked"' else ''#/>
<p>open the SickGear home page on startup</p>
</span>
</label>
</div>
<div class="field-pair">
<label for="update_shows_on_start">
<span class="component-title">Update shows on startup</span>
<span class="component-desc">
<input type="checkbox" name="update_shows_on_start" id="update_shows_on_start" #if $sickbeard.UPDATE_SHOWS_ON_START then 'checked="checked"' else ''#/>
<p>with information such as next air dates, show ended, etc. Disable for a faster startup as show info is scheduled to update in the background anyway</p>
</span>
</label>
</div>
<div class="field-pair">
<span class="component-title">Send to trash for actions</span>
<span class="component-desc">
<label for="trash_remove_show" class="nextline-block">
<input type="checkbox" name="trash_remove_show" id="trash_remove_show" #if $sickbeard.TRASH_REMOVE_SHOW then 'checked="checked"' else ''#/>
<p>when using show "Remove" and delete files</p>
</label>
<label for="trash_rotate_logs" class="nextline-block">
<input type="checkbox" name="trash_rotate_logs" id="trash_rotate_logs" #if $sickbeard.TRASH_ROTATE_LOGS then 'checked="checked"' else ''#/>
<p>on scheduled deletes of the oldest log files</p>
</label>
<div class="clear-left"><p>selected actions use trash (recycle bin) instead of the default permanent delete</p></div>
</span>
</div>
<div class="field-pair">
<label for="log_dir">
<span class="component-title">Log file folder location</span>
<span class="component-desc">
<input type="text" name="log_dir" id="log_dir" value="$sickbeard.ACTUAL_LOG_DIR" class="form-control input-sm input350" />
</span>
</label>
</div>
<div class="field-pair">
<label for="indexer_default">
<span class="component-title">Use initial indexer set to</span>
<span class="component-desc">
<select id="indexer_default" name="indexer_default" class="form-control input-sm">
<option value="0" #if $indexer == 0 then 'selected="selected"' else ''#>All Indexers</option>
#for $indexer in $sickbeard.indexerApi().indexers
<option value="$indexer" #if $indexer == $sickbeard.INDEXER_DEFAULT then 'selected="selected"' else ''#>$sickbeard.indexerApi().indexers[$indexer]</option>
#end for
</select>
<span>as the default selection when adding new shows</span>
</span>
</label>
</div>
<div class="field-pair">
<label for="indexer_timeout">
<span class="component-title">Timeout show indexer at</span>
<span class="component-desc">
<input type="text" name="indexer_timeout" id="indexer_timeout" value="$sickbeard.INDEXER_TIMEOUT" class="form-control input-sm input75" />
<p>seconds of inactivity when finding new shows (default:10)</p>
</span>
</label>
</div>
<div class="field-pair">
<label>
<span class="component-title">Show root directories</span>
<span class="component-desc">
<p>where the files of shows are located</p>
#include $os.path.join($sickbeard.PROG_DIR, 'gui/slick/interfaces/default/inc_rootDirs.tmpl')
</span>
</label>
</div>
<input type="submit" class="btn config_submitter" value="Save Changes" />
</fieldset>
</div>
<div class="component-group">
<div class="component-group-desc">
<h3>Updates</h3>
<p>Options for software updates.</p>
</div>
<fieldset class="component-group-list">
<div class="field-pair">
<label for="version_notify">
<span class="component-title">Check software updates</span>
<span class="component-desc">
<input type="checkbox" name="version_notify" id="version_notify" #if $sickbeard.VERSION_NOTIFY then 'checked="checked"' else ''#/>
<p>and display notifications when updates are available.
Checks are run on startup and at the frequency set below*</p>
</span>
</label>
</div>
<div class="field-pair">
<label for="auto_update">
<span class="component-title">Automatically update</span>
<span class="component-desc">
<input type="checkbox" name="auto_update" id="auto_update" #if $sickbeard.AUTO_UPDATE then 'checked="checked"' else ''#/>
<p>fetch and install software updates.
Updates are run on startup and in the background at the frequency set below*</p>
</span>
</label>
</div>
<div class="field-pair">
<label>
<span class="component-title">Check the server every*</span>
<span class="component-desc">
<input type="text" name="update_frequency" id="update_frequency" value="$sickbeard.UPDATE_FREQUENCY" class="form-control input-sm input75" />
<p>hours for software updates (default:12)</p>
</span>
</label>
</div>
<div class="field-pair">
<label for="notify_on_update">
<span class="component-title">Notify on software update</span>
<span class="component-desc">
<input type="checkbox" name="notify_on_update" id="notify_on_update" #if $sickbeard.NOTIFY_ON_UPDATE then 'checked="checked"' else ''#/>
<p>send a message to all enabled notifiers when SickGear has been updated</p>
</span>
</label>
</div>
<input type="submit" class="btn config_submitter" value="Save Changes" />
</fieldset>
</div>
</div><!-- /component-group1 //-->
<div id="core-component-group2">
<div class="component-group">
<div class="component-group-desc">
<h3>User Interface</h3>
<p>Options for visual appearance.</p>
</div>
<fieldset class="component-group-list">
<div class="field-pair">
<label for="theme_name">
<span class="component-title">Display theme:</span>
<span class="component-desc">
<select id="theme_name" name="theme_name" class="form-control input-sm">
<option value="dark" #if $sickbeard.THEME_NAME == 'dark' then 'selected="selected"' else ''#>Dark</option>
<option value="light" #if $sickbeard.THEME_NAME == 'light' then 'selected="selected"' else ''#>Light</option>
</select>
<span class="red-text">for appearance to take effect, save then refresh your browser</span>
</span>
</label>
</div>
<div class="field-pair">
<label for="home_search_focus">
<span class="component-title">Give show list search focus</span>
<span class="component-desc">
<input type="checkbox" name="home_search_focus" id="home_search_focus" #if $sickbeard.HOME_SEARCH_FOCUS then 'checked="checked"' else ''#/>
<p>page refresh on "Show List" will start search box focused</p>
</span>
</label>
</div>
<div class="field-pair">
<label for="sort_article">
<span class="component-title">Sort with "The", "A", "An"</span>
<span class="component-desc">
<input type="checkbox" name="sort_article" id="sort_article" #if $sickbeard.SORT_ARTICLE then 'checked="checked"' else ''#/>
<p>include articles ("The", "A", "An") when sorting show lists</p>
</span>
</label>
</div>
<div class="field-pair">
<label for="fuzzy_dating">
<span class="component-title">Display fuzzy dates</span>
<span class="component-desc">
<input type="checkbox" name="fuzzy_dating" id="fuzzy_dating" class="viewIf datePresets" #if $sickbeard.FUZZY_DATING == True then 'checked="checked"' else ''#/>
<p>move absolute dates into tooltips and display e.g. "Last Thu", "On Tue"</p>
</span>
</label>
</div>
<div class="field-pair show_if_fuzzy_dating#if True == $sickbeard.FUZZY_DATING then '' else ' metadataDiv'#">
<label for="trim_zero">
<span class="component-title">Trim date and time</span>
<span class="component-desc">
<input type="checkbox" name="trim_zero" id="trim_zero" #if True == $sickbeard.TRIM_ZERO then 'checked="checked"' else ''#/>
<p>display minimalist date and time i.e. <del>02:00</del> = 2:00, <del>02:00pm</del> = 2pm, <del>03 Jan</del> = 3 Jan</p>
</span>
</label>
</div>
<div class="field-pair">
<label for="date_presets">
<span class="component-title">Date style:</span>
<span class="component-desc">
<select class="form-control input-sm #if True == $sickbeard.FUZZY_DATING then '' else ' metadataDiv'#" id="date_presets#if True == $sickbeard.FUZZY_DATING then '' else '_na'#" name="date_preset#if True == $sickbeard.FUZZY_DATING then '' else '_na'#">
#for $cur_preset in $date_presets:
<option value="$cur_preset" #if $cur_preset == $sickbeard.DATE_PRESET or ("%x" == $sickbeard.DATE_PRESET and "$cur_preset" == '%a, %b %d, %Y') then 'selected="selected"' else ''#>$datetime.datetime($datetime.datetime.now().year, 12, 31, 14, 30, 47).strftime($cur_preset)</option>
#end for
</select>
<select class="form-control input-sm #if True != $sickbeard.FUZZY_DATING then '' else ' metadataDiv'#" id="date_presets#if True != $sickbeard.FUZZY_DATING then '' else '_na'#" name="date_preset#if True != $sickbeard.FUZZY_DATING then '' else '_na'#">
<option value="%x" #if "%x" == $sickbeard.DATE_PRESET then 'selected="selected"' else ''#>Use System Default</option>
#for $cur_preset in $date_presets:
<option value="$cur_preset" #if $cur_preset == $sickbeard.DATE_PRESET then 'selected="selected"' else ''#>$datetime.datetime($datetime.datetime.now().year, 12, 31, 14, 30, 47).strftime($cur_preset)</option>
#end for
</select>
</span>
</label>
</div>
<div class="field-pair">
<label for="time_presets">
<span class="component-title">Time style:</span>
<span class="component-desc">
<select id="time_presets" name="time_preset" class="form-control input-sm">
#for $cur_preset in $time_presets:
#set $show_seconds = not $sickbeard.FUZZY_DATING
<option value="$cur_preset" #if $cur_preset == $sickbeard.TIME_PRESET_W_SECONDS then 'selected="selected"' else ''#>$sbdatetime.now().sbftime(show_seconds=$show_seconds, t_preset=$cur_preset)</option>
#end for
</select>
<span id="trim_info_seconds"><b>note:</b> seconds are only shown on the History page</span>
</span>
</label>
</div>
<div class="field-pair">
<span class="component-title">Timezone:</span>
<span class="component-desc">
<label for="local" class="space-right">
<input type="radio" name="timezone_display" id="local" value="local" #if "local" == $sickbeard.TIMEZONE_DISPLAY then 'checked="checked"' else ''# />local
</label>
<label for="network">
<input type="radio" name="timezone_display" id="network" value="network" #if "network" == $sickbeard.TIMEZONE_DISPLAY then 'checked="checked"' else ''# />network
</label>
<div class="clear-left"><p>display dates and times in either your timezone or the shows network timezone</p></div>
</span>
</div>
<input type="submit" class="btn config_submitter" value="Save Changes" />
</fieldset>
</div><!-- /User interface component-group -->
<div class="component-group">
<div class="component-group-desc">
<h3>Web Interface</h3>
<p>It is recommended that you enable a username and password to secure SickGear from being tampered with remotely.</p>
<p><b>These options require a manual restart to take effect.</b></p>
</div>
<fieldset class="component-group-list">
<div class="field-pair">
<label for="use_api">
<span class="component-title">Enable API</span>
<span class="component-desc">
<input type="checkbox" name="use_api" class="enabler" id="use_api" #if $sickbeard.USE_API then 'checked="checked"' else ''#/>
<p>allow the use of the SickGear API</p>
</span>
</label>
</div>
<div id="content_use_api">
<div class="field-pair">
<label for="api_key">
<span class="component-title">API key</span>
<span class="component-desc">
<input type="text" name="api_key" id="api_key" value="$sickbeard.API_KEY" class="form-control input-sm input300" readonly="readonly" />
<input class="btn btn-inline" type="button" id="generate_new_apikey" value="Generate">
<div class="clear-left"><p>used to give 3rd party programs limited access to SickGear</p></div>
</span>
</label>
</div>
</div>
<div class="field-pair">
<label for="web_log">
<span class="component-title">HTTP logs</span>
<span class="component-desc">
<input type="checkbox" name="web_log" id="web_log" #if $sickbeard.WEB_LOG then 'checked="checked"' else ''#/>
<p>enable logs from the internal Tornado web server</p>
</span>
</label>
</div>
<div class="field-pair">
<label for="web_username">
<span class="component-title">HTTP username</span>
<span class="component-desc">
<input type="text" name="web_username" id="web_username" value="$sickbeard.WEB_USERNAME" class="form-control input-sm input300" />
<p>set blank for no login</p>
</span>
</label>
</div>
<div class="field-pair">
<label for="web_password">
<span class="component-title">HTTP password</span>
<span class="component-desc">
<input type="password" name="web_password" id="web_password" value="$sickbeard.WEB_PASSWORD" class="form-control input-sm input300" />
<p>blank = no authentication</span>
</label>
</div>
<div class="field-pair">
<label for="web_port">
<span class="component-title">HTTP port</span>
<span class="component-desc">
<input type="text" name="web_port" id="web_port" value="$sickbeard.WEB_PORT" class="form-control input-sm input100" />
<p>web port to browse and access SickGear (default:8081)</p>
</span>
</label>
</div>
<div class="field-pair">
<label for="web_ipv6">
<span class="component-title">Listen on IPv6</span>
<span class="component-desc">
<input type="checkbox" name="web_ipv6" id="web_ipv6" #if $sickbeard.WEB_IPV6 then 'checked="checked"' else ''#/>
<p>attempt binding to any available IPv6 address</p>
</span>
</label>
</div>
<div class="field-pair">
<label for="enable_https">
<span class="component-title">Enable HTTPS</span>
<span class="component-desc">
<input type="checkbox" name="enable_https" class="enabler" id="enable_https" #if $sickbeard.ENABLE_HTTPS then 'checked="checked"' else ''#/>
<p>enable access to the web interface using a HTTPS address</p>
</span>
</label>
</div>
<div id="content_enable_https">
<div class="field-pair">
<label for="https_cert">
<span class="component-title">HTTPS certificate</span>
<span class="component-desc">
<input type="text" name="https_cert" id="https_cert" value="$sickbeard.HTTPS_CERT" class="form-control input-sm input300" />
<div class="clear-left"><p>file name or path to HTTPS certificate</p></div>
</span>
</label>
</div>
<div class="field-pair">
<label for="https_key">
<span class="component-title">HTTPS key</span>
<span class="component-desc">
<input type="text" name="https_key" id="https_key" value="$sickbeard.HTTPS_KEY" class="form-control input-sm input300" />
<div class="clear-left"><p>file name or path to HTTPS key</p></div>
</span>
</label>
</div>
</div>
<div class="field-pair">
<label for="handle_reverse_proxy">
<span class="component-title">Reverse proxy headers</span>
<span class="component-desc">
<input type="checkbox" name="handle_reverse_proxy" id="handle_reverse_proxy" #if $sickbeard.HANDLE_REVERSE_PROXY then 'checked="checked"' else ''#/>
<p>accept the following reverse proxy headers (advanced)...<br />(X-Forwarded-For, X-Forwarded-Host, and X-Forwarded-Proto)</p>
</span>
</label>
</div>
<input type="submit" class="btn config_submitter" value="Save Changes" />
</fieldset>
</div><!-- /component-group2 //-->
</div>
<div id="core-component-group3" class="component-group">
<div class="component-group-desc">
<h3>Advanced Settings</h3>
</div>
<fieldset class="component-group-list">
<div class="field-pair">
<label>
<span class="component-title">Branch version:</span>
<span class="component-desc">
<select id="branchVersion" class="form-control form-control-inline input-sm pull-left">
#for $cur_branch in $sickbeard.versionCheckScheduler.action.list_remote_branches():
<option value="$cur_branch" #if $cur_branch == $sickbeard.BRANCH then 'selected="selected"' else ''#>$cur_branch</option>
#end for
</select>
<input class="btn btn-inline" style="margin-left: 6px;" type="button" id="branchCheckout" value="Checkout Branch">
<div class="clear-left"><p>select branch to use (restart required)</p></div>
</span>
</label>
</div>
#set pulls = sickbeard.versionCheckScheduler.action.list_remote_pulls()
#if len(pulls) > 0 and $sickbeard.BRANCH != 'master':
<div class="field-pair">
<label>
<span class="component-title">Pull request:</span>
<span class="component-desc">
<select id="pullRequestVersion" class="form-control form-control-inline input-sm pull-left">
#for $cur_branch in $pulls:
<option value="$cur_branch.fetch_name()" #if $cur_branch == $sickbeard.BRANCH then 'selected="selected"' else ''#>$cur_branch</option>
#end for
</select>
<input class="btn btn-inline" style="margin-left: 6px;" type="button" id="pullRequestCheckout" value="Checkout Pull Request">
<div class="clear-left"><p>select pull request to test (restart required)</p></div>
</span>
</label>
</div>
#end if
<div class="field-pair">
<label for="git_remote">
<span class="component-title">Git remote for branch</span>
<span class="component-desc">
<input type="text" name="git_remote" id="git_remote" value="$sickbeard.GIT_REMOTE" class="form-control input-sm input300" />
<div class="clear-left"><p>default:origin. Access repo configured remotes (save then refresh browser)</p></div>
</span>
</label>
</div>
<div class="field-pair">
<label>
<span class="component-title">Git executable path</span>
<span class="component-desc">
<input type="text" name="git_path" value="$sickbeard.GIT_PATH" class="form-control input-sm input300" />
<div class="clear-left"><p>only needed if OS is unable to locate git from env</p></div>
</span>
</label>
</div>
<div class="field-pair">
<label>
<span class="component-title">CPU throttling:</span>
<span class="component-desc">
<select id="cpu_presets" name="cpu_preset" class="form-control input-sm">
#for $cur_preset in $cpu_presets:
<option value="$cur_preset" #if $cur_preset == $sickbeard.CPU_PRESET then 'selected="selected"' else ''#>$cur_preset.capitalize()</option>
#end for
</select>
<span>Normal (default). High is lower and Low is higher CPU use</span>
</span>
</label>
</div>
<div class="field-pair">
<label>
<span class="component-title">Anonymous redirect</span>
<span class="component-desc">
<input type="text" name="anon_redirect" value="$sickbeard.ANON_REDIRECT" class="form-control input-sm input300" />
<div class="clear-left"><p>backlink protection via anonymizer service, must end in "?"</p></div>
</span>
</label>
</div>
<div class="field-pair">
<label for="encryption_version">
<span class="component-title">Encrypt passwords</span>
<span class="component-desc">
<input type="checkbox" name="encryption_version" id="encryption_version" #if $sickbeard.ENCRYPTION_VERSION then 'checked="checked"' else ''#/>
<p>in the <code>config.ini</code> file.
<b>Warning:</b> Passwords must only contain <a target="_blank" href="<%= anon_url('http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters') %>">ASCII characters</a></p>
</span>
</label>
</div>
<div class="field-pair">
<label for="calendar_unprotected">
<span class="component-title">Unprotected calendar</span>
<span class="component-desc">
<input type="checkbox" name="calendar_unprotected" id="calendar_unprotected" #if $sickbeard.CALENDAR_UNPROTECTED then 'checked="checked"' else ''#/>
<p>allow subscribing to the calendar without user and password.
Some services like Google Calendar only work this way</p>
</span>
</label>
</div>
<div class="field-pair">
<label>
<span class="component-title">Proxy host</span>
<span class="component-desc">
<input type="text" name="proxy_setting" value="$sickbeard.PROXY_SETTING" class="form-control input-sm input300" />
<div class="clear-left"><p>blank to disable or proxy to use when connecting to providers</p></div>
</label>
</div>
<div class="field-pair">
<label for="proxy_indexers">
<span class="component-title">Use proxy for indexers</span>
<span class="component-desc">
<input type="checkbox" name="proxy_indexers" id="proxy_indexers" #if True == $sickbeard.PROXY_INDEXERS then 'checked="checked"' else ''#/>
<p>use proxy host for connecting to indexers (thetvdb, tvrage)</p>
</span>
</label>
</div>
<input type="submit" class="btn config_submitter" value="Save Changes" />
</fieldset>
</div><!-- /component-group3 //-->
<br/>
<h6 class="pull-right"><b class="boldest">All non-absolute folder locations are relative to <span class="path">$sickbeard.DATA_DIR</span></b></h6>
<input type="submit" class="btn pull-left config_submitter button" value="Save Changes" />
</div><!-- /config-components -->
</form>
</div>
</div>
<div></div>
<script type="text/javascript" charset="utf-8">
<!--
jQuery('#log_dir').fileBrowser({ title: 'Select log file folder location' });
jQuery('#config-components').tabs();
//-->
</script>
#include $os.path.join($sickbeard.PROG_DIR, 'gui/slick/interfaces/default/inc_bottom.tmpl')