mirror of
https://github.com/SickGear/SickGear.git
synced 2024-12-11 21:53:37 +00:00
6fcf80c02d
Add "Maximum fanart image files per show to cache" to config General/Interface. Add populate images when the daily show updater is run with a default maximum 3 images per show. Change force full update in a show will replace existing images with new. Add fanart livepanel to lower right of Episodes View and Display Show page. Add highlight panel red until button is clicked a few times. Add flick through multiple background images on Episodes View and Display Show page. Add persistent move poster image to right hand side or hide on Display Show page (multi-click the eye). Add persistent translucency of background images on Episodes View and Display Show page. Add persistent fanart rating to avoid art completely, random display, random from a group, or display fave always. Add persistent views of the show detail on Display Show page. Add persistent views on Episodes View. Add persistent button to collapse and expand card images on Episode View/Layout daybyday. Add non persistent "Open gear" and "Full fanart" image views to Episodes View and Display Show page. Add "smart" selection of fanart image to display on Episode view. Change insert [!] and change text shade of ended shows in drop down show list on Display Show page. Change button graphic for next and previous show of show list on Display Show page. Add logic to hide some livepanel buttons until artwork becomes available or in other circumstances. Add "(Ended)" where appropriate to show title on Display Show page. Add links to fanart.tv where appropriate on Display Show page. Change use tense for label "Airs" or "Aired" depending on if show ended. Change display "No files" instead of "0 files" and "Upgrade once" instead of "End upgrade on first match". Add persistent button to newest season to "Show all" episodes. Add persistent button to all shown seasons to "Hide most" episodes. Add button to older seasons to toggle "Show Season n" or "Show Specials" with "Hide..." episodes. Add season level status counts next to each season header on display show page Add sorting to season table headers on display show page Add filename and size to quality badge on display show page, removed its redundant "downloaded" text Remove redundant "Add show" buttons Change combine the NFO and TBN columns into a single Meta column Change reduce screen estate used by episode numbers columns Change improve clarity of text on Add Show page. Add "Reset fanart ratings" to show Edit/Other tab. Add fanart usage to show Edit/Other tab. Add fanart keys guide to show Edit/Other tab. Change add placeholder tip to "Alternative release name(s)" on show Edit. Change add placeholder tip to search box on shows Search. Change hide Anime tips on show Edit when selecting its mutually exclusive options. Change label "End upgrade on first match" to "Upgrade once" on show Edit. Change improve performance rendering displayShow. Add total episodes to start of show description (excludes specials if those are hidden). Add "Add show" actions i.e. "Search", "Trakt cards", "IMDb cards", and "Anime" to Shows menu. Add "Import (existing)" action to Tools menu. Change SD quality from red to dark green, 2160p UHD 4K is red. Change relocate the functions of Logs & Errors to the right side Tools menu -> View Log File. Add warning indicator to the Tools menu in different colour depending on error count (green through red). Change View Log error item output from reversed to natural order. Change View Log add a typeface and some colour to improve readability. Change View Log/Errors only display "Clear Errors" button when there are errors to clear. Change improve performance of View Log File.
442 lines
18 KiB
Cheetah
442 lines
18 KiB
Cheetah
#import sickbeard
|
|
#import datetime
|
|
#from sickbeard.common import *
|
|
#from sickbeard import sbdatetime, network_timezones
|
|
<% def sg_var(varname, default=False): return getattr(sickbeard, varname, default) %>#slurp#
|
|
<% def sg_str(varname, default=''): return getattr(sickbeard, varname, default) %>#slurp#
|
|
##
|
|
#set global $title = 'Home'
|
|
#set global $header = 'Show List'
|
|
#set global $sbPath = '..'
|
|
#set global $topmenu = 'home'
|
|
#set global $page_body_attr = 'show-list'
|
|
#set fuzzydate = 'airdate'
|
|
##
|
|
#import os.path
|
|
#include $os.path.join($sg_str('PROG_DIR'), 'gui/slick/interfaces/default/inc_top.tmpl')
|
|
<script>
|
|
var config = {
|
|
isPoster: #echo ['!1','!0']['poster' == $sg_var('HOME_LAYOUT')]#,
|
|
sortArticle: #echo ['!1','!0'][$sg_var('SORT_ARTICLE')]#,
|
|
homeSearchFocus: #echo ['!1','!0'][$sg_var('HOME_SEARCH_FOCUS', True)]#,
|
|
fuzzyDating: #echo ['!1','!0'][$sg_var('FUZZY_DATING')]#,
|
|
timeZero: #echo ['!1','!0'][$sg_var('TRIM_ZERO')]#,
|
|
datePreset: "$sg_str('DATE_PRESET', '%x')",
|
|
timePreset: "$sg_str('TIME_PRESET', '%I:%M %p')",
|
|
posterSortby: "$sg_var('POSTER_SORTBY')",
|
|
posterSortdir: #echo ['!1','!0'][$sg_var('POSTER_SORTDIR', True)]#,
|
|
fuzzydate: ".$fuzzydate",
|
|
};
|
|
</script>
|
|
<script type="text/javascript" src="$sbRoot/js/home.js?v=$sbPID"></script>
|
|
<h1 class="header" style="margin-bottom:0">$showlists[0][1]</h1>
|
|
|
|
<div id="HomeLayout" class="pull-right">
|
|
#set $tab = 1
|
|
#set $selected = ' selected="selected"'
|
|
#if 'poster' == $layout
|
|
<div id="top-row">
|
|
<span>Sort By:
|
|
<select id="postersort" class="form-control form-control-inline input-sm" tabindex="$tab#set $tab += 1#">
|
|
<option value="name" data-sort="$sbRoot/setPosterSortBy/?sort=name"#echo $selected if 'name' == $sg_str('POSTER_SORTBY', 'name') else ''#>Name</option>
|
|
<option value="date" data-sort="$sbRoot/setPosterSortBy/?sort=date"#echo $selected if 'date' == $sg_str('POSTER_SORTBY') else ''#>Next Episode</option>
|
|
<option value="network" data-sort="$sbRoot/setPosterSortBy/?sort=network"#echo $selected if 'network' == $sg_str('POSTER_SORTBY') else ''#>Network</option>
|
|
<option value="progress" data-sort="$sbRoot/setPosterSortBy/?sort=progress"#echo $selected if 'progress' == $sg_str('POSTER_SORTBY') else ''#>Progress</option>
|
|
<option value="quality" data-sort="$sbRoot/setPosterSortBy/?sort=quality"#echo $selected if 'quality' == $sg_str('POSTER_SORTBY') else ''#>Quality</option>
|
|
</select>
|
|
</span>
|
|
|
|
<span style="margin-left:5px">Sort Order:
|
|
<select id="postersortdirection" class="form-control form-control-inline input-sm" tabindex="$tab#set $tab += 1#">
|
|
<option value="true" data-sort="$sbRoot/setPosterSortDir/?direction=1"#echo $selected if 1 == $sg_var('POSTER_SORTDIR', 1) else ''#>Asc</option>
|
|
<option value="false" data-sort="$sbRoot/setPosterSortDir/?direction=0"#echo $selected if 0 == $sg_var('POSTER_SORTDIR') else ''#>Desc</option>
|
|
</select>
|
|
</span>
|
|
|
|
<span style="margin-left:5px" class="no-marginr">Layout:
|
|
#else
|
|
<span id="top-row" class="pull-right no-marginr">Layout:
|
|
#end if
|
|
<select style="margin-bottom:10px" name="layout" class="form-control form-control-inline input-sm" onchange="location = this.options[this.selectedIndex].value;" tabindex="$tab#set $tab += 1#">
|
|
<option value="$sbRoot/setHomeLayout/?layout=poster"#echo $selected if 'poster' == $sg_str('HOME_LAYOUT', 'poster') else ''#>Poster</option>
|
|
<option value="$sbRoot/setHomeLayout/?layout=small"#echo $selected if 'small' == $sg_str('HOME_LAYOUT') else ''#>Small Poster</option>
|
|
<option value="$sbRoot/setHomeLayout/?layout=banner"#echo $selected if 'banner' == $sg_str('HOME_LAYOUT') else ''#>Banner</option>
|
|
<option value="$sbRoot/setHomeLayout/?layout=simple"#echo $selected if 'simple' == $sg_str('HOME_LAYOUT') else ''#>Simple</option>
|
|
</select>
|
|
</span>
|
|
|
|
#if 'poster' == $layout
|
|
</div>
|
|
#end if
|
|
<div class="pull-right" style="clear:right">
|
|
<input id="search_show_name" class="search form-control form-control-inline input-sm input200" type="search" data-column="1" placeholder="Search Show Name" tabindex="$tab#set $tab += 1#">
|
|
<button type="button" class="resetshows btn btn-inline" tabindex="$tab#set $tab += 1#">Reset Search</button>
|
|
</div>
|
|
</div><!-- /HomeLayout -->
|
|
##
|
|
#for $curShowlist in $showlists
|
|
#set $curListID = $curShowlist[0]
|
|
#set $curListName = $curShowlist[1]
|
|
#set $myShowList = $list($curShowlist[2])
|
|
#if $curShowlist != $showlists[0]
|
|
##
|
|
<h1 class="header">$curListName</h1>
|
|
|
|
#end if
|
|
##
|
|
#if 'poster' == $layout
|
|
##
|
|
<div id="$curListID" class="clearfix container" style="clear:both#if 'poster' == $layout#;padding:0#end if#">
|
|
<div class="posterview">
|
|
##
|
|
#for $curLoadingShow in $sickbeard.showQueueScheduler.action.loadingShowList
|
|
##
|
|
#if $curLoadingShow.show != None and $curLoadingShow.show in $sg_str('showList')
|
|
#continue
|
|
#end if
|
|
##
|
|
#if None is $curLoadingShow.show
|
|
##
|
|
<div class="show-card" data-name="0" data-date="010101" data-network="0">
|
|
<img alt="" title="$curLoadingShow.show_name" class="show-image" style="border-bottom:1px solid #111" src="$sbRoot/images/poster.png" />
|
|
<div class="show-details">
|
|
<div class="show-add">Loading... ($curLoadingShow.show_name)</div>
|
|
</div>
|
|
<span class="sort-data" data-progress="101"></span>
|
|
</div>
|
|
##
|
|
#end if
|
|
##
|
|
#end for
|
|
##
|
|
$myShowList.sort(lambda x, y: cmp(x.name, y.name))
|
|
#for $curShow in $myShowList
|
|
##
|
|
#set $cur_airs_next = ''
|
|
#set $cur_snatched = 0
|
|
#set $cur_downloaded = 0
|
|
#set $cur_total = 0
|
|
#set $download_stat_tip = ''
|
|
#set $display_status = $curShow.status
|
|
#set $display_name = (re.sub('^((?:A(?!\s+to)n?)|The)\s(\w)', r'<span class="article">\1</span> \2', $curShow.name), $curShow.name)[$sg_var('SORT_ARTICLE')]
|
|
#if None is not $display_status
|
|
#if re.search(r'(?i)(?:new|returning)\s*series', $curShow.status)
|
|
#set $display_status = 'Continuing'
|
|
#else if re.search(r'(?i)(?:nded)', $curShow.status)
|
|
#set $display_status = 'Ended'
|
|
#end if
|
|
#end if
|
|
##
|
|
#if $curShow.indexerid in $show_stat
|
|
#set $cur_airs_next = $show_stat[$curShow.indexerid]['ep_airs_next']
|
|
##
|
|
#set $cur_snatched = $show_stat[$curShow.indexerid]['ep_snatched']
|
|
#if not $cur_snatched
|
|
#set $cur_snatched = 0
|
|
#end if
|
|
##
|
|
#set $cur_downloaded = $show_stat[$curShow.indexerid]['ep_downloaded']
|
|
#if not $cur_downloaded
|
|
#set $cur_downloaded = 0
|
|
#end if
|
|
##
|
|
#set $cur_total = $show_stat[$curShow.indexerid]['ep_total']
|
|
#if not $cur_total
|
|
#set $cur_total = 0
|
|
#end if
|
|
#end if
|
|
##
|
|
#if $cur_total != 0
|
|
#set $download_stat = str($cur_downloaded)
|
|
#set $download_stat_tip = 'Downloaded: ' + str($cur_downloaded)
|
|
#if $cur_snatched > 0
|
|
#set $download_stat = '%s<a class="ui-font" href="%s/manage/episodeStatuses?whichStatus=2" title="View overview of snatched episodes">+%s</a>' % ($download_stat, $sbRoot, $cur_snatched)
|
|
#set $download_stat_tip = download_stat_tip + '
' + 'Snatched: ' + str($cur_snatched)
|
|
#end if
|
|
#set $download_stat = download_stat + ' / ' + str($cur_total)
|
|
#set $download_stat_tip = download_stat_tip + '
' + 'Total: ' + str($cur_total)
|
|
#else
|
|
#set $download_stat = '?'
|
|
#set $download_stat_tip = 'no data'
|
|
#end if
|
|
##
|
|
#set $nom = $cur_downloaded
|
|
#set $den = $cur_total
|
|
#if $den == 0
|
|
#set $den = 1
|
|
#end if
|
|
##
|
|
#set $progressbar_percent = $nom * 100 / $den
|
|
##
|
|
#set $data_date = '600000000000'
|
|
#if $cur_airs_next
|
|
#set $data_date = $sbdatetime.sbdatetime.convert_to_setting($network_timezones.parse_date_time($cur_airs_next, $curShow.airs, $curShow.network)).strftime('%Y%m%d%H%M')
|
|
#else if None is not $display_status
|
|
#if 'nded' not in $display_status and 1 == int($curShow.paused)
|
|
#set $data_date = '500000000500'
|
|
#else if 'ontinu' in $display_status
|
|
#set $data_date = '500000000000'
|
|
#else if 'nded' in $display_status
|
|
#set $data_date = '500000000100'
|
|
#end if
|
|
#end if
|
|
##
|
|
<div id="show$curShow.indexerid" class="show-card" data-name="$curShow.name" data-date="$data_date" data-network="$curShow.network">
|
|
<div class="show-card-top">
|
|
<div class="show-image">
|
|
<a href="$sbRoot/home/displayShow?show=$curShow.indexerid"><img alt="" class="show-image" src="$sbRoot/showPoster/?show=$curShow.indexerid&which=poster_thumb" /></a>
|
|
</div>
|
|
|
|
<div style="border-top:1px solid black;height:1px"></div>
|
|
|
|
<div class="show-title">
|
|
$display_name
|
|
</div>
|
|
|
|
<div class="show-date">
|
|
#if $cur_airs_next
|
|
#set $ldatetime = $sbdatetime.sbdatetime.convert_to_setting($network_timezones.parse_date_time($cur_airs_next,$curShow.airs,$curShow.network))
|
|
<span class="$fuzzydate">$sbdatetime.sbdatetime.sbfdate($ldatetime)</span>
|
|
#else
|
|
#set $output_html = '?'
|
|
#if None is not $display_status
|
|
#if 'nded' not in $display_status and 1 == int($curShow.paused)
|
|
#set $output_html = 'Paused'
|
|
#else if $display_status
|
|
#set $output_html = $display_status
|
|
#end if
|
|
#end if
|
|
$output_html
|
|
#end if
|
|
</div><!-- /show-date -->
|
|
|
|
<table width="100%" border="0">
|
|
<tr>
|
|
<td class="show-table">
|
|
<span class="show-dlstats" title="$download_stat_tip">$download_stat</span>
|
|
</td>
|
|
|
|
<td class="show-table show-network">
|
|
#if 'simple' == $layout
|
|
$curShow.network
|
|
#else
|
|
#set $img_text = ($curShow.network, 'No Network')[None is $curShow.network]
|
|
#if 'No Network' is not $img_text and 'nonetwork' in $network_images[$curShow.indexerid]
|
|
$curShow.network
|
|
#else
|
|
<img class="show-network-image" src="$sbRoot/images/network/$network_images[$curShow.indexerid]" alt="$img_text" title="$img_text" />
|
|
#end if
|
|
#end if
|
|
</td>
|
|
|
|
<td class="show-table">
|
|
#if $curShow.quality in $qualityPresets
|
|
<span class="show-quality">$qualityPresetStrings[$curShow.quality]</span>
|
|
#else
|
|
<span class="show-quality">Custom</span>
|
|
#end if
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<div id="progressbar$curShow.indexerid"></div>
|
|
<span class="sort-data" data-progress="$progressbar_percent"></span>
|
|
</div><!-- /show$curShow.indexerid -->
|
|
|
|
#end for
|
|
</div>
|
|
</div><!-- /$curListID -->
|
|
|
|
########################
|
|
## end of poster layout
|
|
########################
|
|
#else
|
|
|
|
<table id="$curListID" class="tablesorter">
|
|
<thead>
|
|
<tr>
|
|
<th>Next Ep</th>
|
|
<th>Show</th>
|
|
<th>Network</th>
|
|
<th>Quality</th>
|
|
<th>Downloads</th>
|
|
<th>Active</th>
|
|
<th>Status</th>
|
|
</tr>
|
|
</thead>
|
|
|
|
<tfoot>
|
|
<tr>
|
|
<th><a href="$sbRoot/home/addShows/">Add Show</a></th>
|
|
<th colspan="6"></th>
|
|
</tr>
|
|
</tfoot>
|
|
|
|
<tbody>
|
|
#for $curLoadingShow in $sickbeard.showQueueScheduler.action.loadingShowList
|
|
#if $curLoadingShow.show != None and $curLoadingShow.show in $sg_str('showList')
|
|
#continue
|
|
#end if
|
|
##
|
|
<tr>
|
|
<td>(loading)</td>
|
|
<td class="text-left">
|
|
#if None is $curLoadingShow.show
|
|
Loading... ($curLoadingShow.show_name)
|
|
#else
|
|
<a href="$sbRoot/home/displayShow?show=$curLoadingShow.show.indexerid">$curLoadingShow.show.name</a>
|
|
#end if
|
|
</td>
|
|
<td></td>
|
|
<td></td>
|
|
<td></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
#end for
|
|
##
|
|
#set void = $myShowList.sort(lambda x, y: cmp(x.name, y.name))
|
|
##
|
|
#for $curShow in $myShowList
|
|
##
|
|
#set $cur_airs_next = ''
|
|
#set $cur_snatched = 0
|
|
#set $cur_downloaded = 0
|
|
#set $cur_total = 0
|
|
#set $download_stat_tip = ''
|
|
#set $display_name = (re.sub('^((?:A(?!\s+to)n?)|The)\s(\w)', r'<span class="article">\1</span> \2', $curShow.name), $curShow.name)[$sg_var('SORT_ARTICLE')]
|
|
##
|
|
#if $curShow.indexerid in $show_stat
|
|
#set $cur_airs_next = $show_stat[$curShow.indexerid]['ep_airs_next']
|
|
##
|
|
#set $cur_snatched = $show_stat[$curShow.indexerid]['ep_snatched']
|
|
#if not $cur_snatched
|
|
#set $cur_snatched = 0
|
|
#end if
|
|
##
|
|
#set $cur_downloaded = $show_stat[$curShow.indexerid]['ep_downloaded']
|
|
#if not $cur_downloaded
|
|
#set $cur_downloaded = 0
|
|
#end if
|
|
##
|
|
#set $cur_total = $show_stat[$curShow.indexerid]['ep_total']
|
|
#if not $cur_total
|
|
#set $cur_total = 0
|
|
#end if
|
|
#end if
|
|
##
|
|
#if $cur_total != 0
|
|
#set $download_stat = str($cur_downloaded)
|
|
#set $download_stat_tip = 'Downloaded: ' + str($cur_downloaded)
|
|
#if $cur_snatched > 0
|
|
#set $download_stat = '%s<a class="ui-font" href="%s/manage/episodeStatuses?whichStatus=2" title="View overview of snatched episodes">+%s</a>' % ($download_stat, $sbRoot, $cur_snatched)
|
|
#set $download_stat_tip = download_stat_tip + '
' + 'Snatched: ' + str($cur_snatched)
|
|
#end if
|
|
#set $download_stat = download_stat + ' / ' + str($cur_total)
|
|
#set $download_stat_tip = download_stat_tip + '
' + 'Total: ' + str($cur_total)
|
|
#else
|
|
#set $download_stat = '?'
|
|
#set $download_stat_tip = 'no data'
|
|
#end if
|
|
##
|
|
#set $nom = $cur_downloaded
|
|
#set $den = $cur_total
|
|
#if $den == 0
|
|
#set $den = 1
|
|
#end if
|
|
##
|
|
#set $progressbar_percent = $nom * 100 / $den
|
|
#if not $progressbar_percent
|
|
#set $progressbar_percent = (0, -1)['?' == $download_stat]
|
|
#end if
|
|
##
|
|
<tr>
|
|
#if $cur_airs_next
|
|
#set $ldatetime = $sbdatetime.sbdatetime.convert_to_setting($network_timezones.parse_date_time($cur_airs_next,$curShow.airs,$curShow.network))
|
|
<td class="text-nowrap"><div class="$fuzzydate">$sbdatetime.sbdatetime.sbfdate($ldatetime)</div><span class="sort-data">$ldatetime.strftime('%Y%m%d%H%M')</span></td>
|
|
#else
|
|
<td></td>
|
|
#end if
|
|
#if 'small' == $layout
|
|
|
|
<td class="tvShow text-left">
|
|
<div class="imgsmallposter $layout">
|
|
<a href="$sbRoot/showPoster/?show=$curShow.indexerid&which=poster" rel="dialog" title="$curShow.name">
|
|
<img src="$sbRoot/showPoster/?show=$curShow.indexerid&which=poster_thumb" class="$layout" alt="$curShow.indexerid"/>
|
|
</a>
|
|
<a href="$sbRoot/home/displayShow?show=$curShow.indexerid" style="vertical-align:middle">$display_name</a>
|
|
</div>
|
|
</td>
|
|
#else if 'banner' == $layout
|
|
|
|
<td class="text-left">
|
|
<div class="imgbanner $layout">
|
|
<a href="$sbRoot/home/displayShow?show=$curShow.indexerid">
|
|
<img src="$sbRoot/showPoster/?show=$curShow.indexerid&which=banner" class="$layout" alt="$curShow.indexerid" title="$curShow.name" />
|
|
</a>
|
|
</div>
|
|
<span class="sort-data">$display_name</span>
|
|
</td>
|
|
#else if 'simple' == $layout
|
|
|
|
<td class="tvShow text-left"><a href="$sbRoot/home/displayShow?show=$curShow.indexerid">$display_name</a></td>
|
|
#end if
|
|
#if 'simple' != $layout
|
|
#set $img_text = ($curShow.network, 'No Network')[None is $curShow.network]
|
|
|
|
<td>
|
|
#if 'No Network' is not $img_text and 'nonetwork' in $network_images[$curShow.indexerid]
|
|
$curShow.network
|
|
#else
|
|
<img width="54" height="27" src="$sbRoot/images/network/$network_images[$curShow.indexerid]" alt="#echo '%s" title="%s' % ($img_text, $img_text)#" />
|
|
<span class="sort-data">$curShow.network</span>
|
|
#end if
|
|
</td>
|
|
#else
|
|
|
|
<td class="text-left">
|
|
<span>$curShow.network</span>
|
|
<span class="sort-data">$curShow.network</span>
|
|
</td>
|
|
#end if
|
|
#if $curShow.quality in $qualityPresets
|
|
|
|
<td><span class="quality $qualityPresetStrings[$curShow.quality]">$qualityPresetStrings[$curShow.quality]</span></td>
|
|
#else
|
|
|
|
<td><span class="quality Custom">Custom</span></td>
|
|
#end if
|
|
|
|
<td>
|
|
<div id="progressbar$curShow.indexerid" style="position:relative">
|
|
<div class="progressbarText ui-font" title="$download_stat_tip">$download_stat</div>
|
|
</div>
|
|
<span class="sort-data" data-progress="$progressbar_percent"></span>
|
|
</td>
|
|
|
|
<td>
|
|
<i class=#echo '"%s" alt="%s"' % (('no', 'N'),('yes', 'Y'))[0 == int($curShow.paused) and 'Ended' != $curShow.status]#></i>
|
|
</td>
|
|
|
|
<td>
|
|
#set $display_status = $curShow.status
|
|
#if None is not $display_status
|
|
#if re.search(r'(?i)(?:new|returning)\s*series', $curShow.status)
|
|
#set $display_status = 'Continuing'
|
|
#else if re.search(r'(?i)(?:nded)', $curShow.status)
|
|
#set $display_status = 'Ended'
|
|
#end if
|
|
#end if
|
|
$display_status
|
|
</td>
|
|
</tr>
|
|
#end for
|
|
</tbody>
|
|
</table>
|
|
|
|
#end if
|
|
#end for
|
|
##
|
|
|
|
|
|
#include $os.path.join($sg_str('PROG_DIR'), 'gui/slick/interfaces/default/inc_bottom.tmpl')
|