mirror of
https://github.com/moparisthebest/SickRage
synced 2024-11-05 17:05:03 -05:00
2c510aa210
Fixes the issue where top menu items would disappear on smaller screens. Add Bootstrap v3.2.0 with Normalize v3.0.1 from github.com/twbs/bootstrap. Add a modified jquery pnotify stylesheet. Various UI tweaks. Update CHANGES.md and TODO.txt
539 lines
22 KiB
Cheetah
539 lines
22 KiB
Cheetah
#import sickbeard
|
|
#import datetime
|
|
#from sickbeard.common import *
|
|
#from sickbeard import sbdatetime
|
|
|
|
#set global $title="Coming Episodes"
|
|
#set global $header="Coming Episodes"
|
|
|
|
#set global $sbPath=".."
|
|
|
|
#set global $topmenu="comingEpisodes"
|
|
#import os.path
|
|
#include $os.path.join($sickbeard.PROG_DIR, "gui/slick/interfaces/default/inc_top.tmpl")
|
|
#set $sort = $sickbeard.COMING_EPS_SORT
|
|
<script type="text/javascript" src="$sbRoot/js/ajaxEpSearch.js?$sbPID"></script>
|
|
#if $varExists('header')
|
|
<h1 class="header">$header</h1>
|
|
#else
|
|
<h1 class="title">$title</h1>
|
|
#end if
|
|
|
|
<style type="text/css">
|
|
#SubMenu {display:none;}
|
|
#contentWrapper {padding-top:30px;}
|
|
</style>
|
|
|
|
<div class="h2footer pull-right">
|
|
<span> Layout:
|
|
<select name="layout" class="form-control form-control-inline input-sm" onchange="location = this.options[this.selectedIndex].value;">
|
|
<option value="$sbRoot/setComingEpsLayout/?layout=poster" #if $sickbeard.COMING_EPS_LAYOUT == "poster" then "selected=\"selected\"" else ""#>Poster</option>
|
|
<option value="$sbRoot/setComingEpsLayout/?layout=calendar" #if $sickbeard.COMING_EPS_LAYOUT == "calendar" then "selected=\"selected\"" else ""#>Calendar</option>
|
|
<option value="$sbRoot/setComingEpsLayout/?layout=banner" #if $sickbeard.COMING_EPS_LAYOUT == "banner" then "selected=\"selected\"" else ""#>Banner</option>
|
|
<option value="$sbRoot/setComingEpsLayout/?layout=list" #if $sickbeard.COMING_EPS_LAYOUT == "list" then "selected=\"selected\"" else ""#>List</option>
|
|
</select>
|
|
</span>
|
|
|
|
|
|
<span> Sort By:
|
|
<select name="sort" class="form-control form-control-inline input-sm" onchange="location = this.options[this.selectedIndex].value;">
|
|
<option value="$sbRoot/setComingEpsSort/?sort=date" #if $sickbeard.COMING_EPS_SORT == "date" then "selected=\"selected\"" else ""#>Date</option>
|
|
<option value="$sbRoot/setComingEpsSort/?sort=network" #if $sickbeard.COMING_EPS_SORT == "network" then "selected=\"selected\"" else ""#>Network</option>
|
|
<option value="$sbRoot/setComingEpsSort/?sort=show" #if $sickbeard.COMING_EPS_SORT == "show" then "selected=\"selected\"" else ""#>Show</option>
|
|
</select>
|
|
</span>
|
|
|
|
|
|
<span> View Paused:
|
|
<select name="viewpaused" class="form-control form-control-inline input-sm" onchange="location = this.options[this.selectedIndex].value;">
|
|
<option value="$sbRoot/toggleComingEpsDisplayPaused" #if $sickbeard.COMING_EPS_DISPLAY_PAUSED == "0" then "selected=\"selected\"" else ""#>Hide</option>
|
|
<option value="$sbRoot/toggleComingEpsDisplayPaused" #if $sickbeard.COMING_EPS_DISPLAY_PAUSED == "1" then "selected=\"selected\"" else ""#>Show</option>
|
|
</select>
|
|
</span>
|
|
</div>
|
|
|
|
<div class="key pull-right">
|
|
#if $layout != 'calendar':
|
|
<b>Key:</b>
|
|
<span class="listing-key listing-overdue">Missed</span>
|
|
<span class="listing-key listing-current">Current</span>
|
|
<span class="listing-key listing-default">Future</span>
|
|
<span class="listing-key listing-toofar">Distant</span>
|
|
#end if
|
|
<a class="btn btn-inline forceBacklog" href="webcal://$sbHost:$sbHttpPort/calendar">
|
|
<i class="icon-calendar icon-white"></i>Subscribe</a>
|
|
</div>
|
|
|
|
<br>
|
|
|
|
#if $layout == 'list':
|
|
<!-- start list view //-->
|
|
<script type="text/javascript" src="$sbRoot/js/plotTooltip.js?$sbPID"></script>
|
|
<script type="text/javascript" charset="utf-8">
|
|
<!--
|
|
\$.tablesorter.addParser({
|
|
id: 'loadingNames',
|
|
is: function(s) {
|
|
return false;
|
|
},
|
|
format: function(s) {
|
|
if (s.indexOf('Loading...') == 0)
|
|
return s.replace('Loading...','000');
|
|
#if not $sickbeard.SORT_ARTICLE:
|
|
return (s || '').replace(/^(The|A|An)\s/i,'');
|
|
#else:
|
|
return (s || '');
|
|
#end if
|
|
},
|
|
type: 'text'
|
|
});
|
|
\$.tablesorter.addParser({
|
|
id: 'quality',
|
|
is: function(s) {
|
|
return false;
|
|
},
|
|
format: function(s) {
|
|
return s.replace('hd1080p',5).replace('hd720p',4).replace('hd',3).replace('sd',2).replace('any',1).replace('best',0).replace('custom',7);
|
|
},
|
|
type: 'numeric'
|
|
});
|
|
\$.tablesorter.addParser({
|
|
id: 'cDate',
|
|
is: function(s) {
|
|
return false;
|
|
},
|
|
format: function(s) {
|
|
return s;
|
|
},
|
|
type: 'numeric'
|
|
});
|
|
|
|
\$(document).ready(function(){
|
|
|
|
#set $sort_codes = {'date': 0, 'show': 1, 'network': 4}
|
|
#if $sort not in $sort_codes:
|
|
$sort = 'date'
|
|
#end if
|
|
sortList = [[$sort_codes[$sort],0]];
|
|
|
|
\$("#showListTable:has(tbody tr)").tablesorter({
|
|
widgets: ['stickyHeaders'],
|
|
sortList: sortList,
|
|
textExtraction: {
|
|
0: function(node) { return \$(node).find("span").text().toLowerCase(); },
|
|
4: function(node) { return \$(node).find("img").attr("alt"); },
|
|
5: function(node) { return \$(node).find("span").text().toLowerCase(); }
|
|
},
|
|
headers: {
|
|
0: { sorter: 'cDate' },
|
|
1: { sorter: 'loadingNames' },
|
|
2: { sorter: false },
|
|
3: { sorter: false },
|
|
4: { sorter: 'loadingNames' },
|
|
5: { sorter: 'quality' },
|
|
6: { sorter: false },
|
|
7: { sorter: false },
|
|
8: { sorter: false }
|
|
}
|
|
});
|
|
|
|
\$('#sbRoot').ajaxEpSearch();
|
|
|
|
#set $fuzzydate = 'airdate'
|
|
#if $sickbeard.FUZZY_DATING:
|
|
fuzzyMoment({
|
|
containerClass : '.${fuzzydate}',
|
|
dateHasTime : true,
|
|
dateFormat : '${sickbeard.DATE_PRESET}',
|
|
timeFormat : '${sickbeard.TIME_PRESET}',
|
|
trimZero : #if $sickbeard.TRIM_ZERO then "true" else "false"#
|
|
});
|
|
#end if
|
|
|
|
});
|
|
//-->
|
|
</script>
|
|
|
|
#set $show_div = "listing-default"
|
|
|
|
<input type="hidden" id="sbRoot" value="$sbRoot" />
|
|
|
|
<table id="showListTable" class="sickbeardTable tablesorter seasonstyle" cellspacing="1" border="0" cellpadding="0">
|
|
|
|
<thead>
|
|
<tr>
|
|
<th>Airdate</th>
|
|
<th>Show</th>
|
|
<th class="nowrap">Next Ep</th>
|
|
<th>Next Ep Name</th>
|
|
<th>Network</th>
|
|
<th>Quality</th>
|
|
<th>Indexers</th>
|
|
<th>Search</th>
|
|
</tr>
|
|
</thead>
|
|
|
|
<tbody style="text-shadow:none;">
|
|
|
|
#for $cur_result in $sql_results:
|
|
#set $cur_indexer = int($cur_result["indexer"])
|
|
#set $runtime = $cur_result["runtime"]
|
|
|
|
#if int($cur_result["paused"]) and not $sickbeard.COMING_EPS_DISPLAY_PAUSED:
|
|
#continue
|
|
#end if
|
|
|
|
#set $cur_ep_airdate = $cur_result["localtime"].date()
|
|
|
|
#if $runtime:
|
|
#set $cur_ep_enddate = $cur_result["localtime"] + datetime.timedelta(minutes=$runtime)
|
|
#if $cur_ep_enddate < $today:
|
|
#set $show_div = "listing-overdue"
|
|
#elif $cur_ep_airdate >= $next_week.date():
|
|
#set $show_div = "listing-toofar"
|
|
#elif $cur_ep_airdate >= $today.date() and $cur_ep_airdate < $next_week.date():
|
|
#if $cur_ep_airdate == $today.date():
|
|
#set $show_div = "listing-current"
|
|
#else:
|
|
#set $show_div = "listing-default"
|
|
#end if
|
|
#end if
|
|
#end if
|
|
|
|
<!-- start $cur_result["show_name"] //-->
|
|
<tr class="$show_div">
|
|
## forced to use a div to wrap airdate, the column sort went crazy with a span
|
|
<td align="center" class="nowrap">
|
|
<div class="${fuzzydate}">$sbdatetime.sbdatetime.sbfdatetime($cur_result["localtime"]).decode($sickbeard.SYS_ENCODING)</div><span class="sort_data">$time.mktime($cur_result["localtime"].timetuple())</span>
|
|
</td>
|
|
|
|
<td class="tvShow"><a href="$sbRoot/home/displayShow?show=${cur_result["showid"]}">$cur_result["show_name"]</a>
|
|
#if int($cur_result["paused"]):
|
|
<span class="pause">[paused]</span>
|
|
#end if
|
|
</td>
|
|
|
|
<td class="nowrap" align="center">
|
|
<%="S%02i" % int(cur_result["season"])+"E%02i" % int(cur_result["episode"]) %>
|
|
</td>
|
|
|
|
<td>
|
|
#if $cur_result["description"] != "" and $cur_result["description"] != None:
|
|
<img alt="" src="$sbRoot/images/info32.png" height="16" width="16" class="plotInfo" id="plot_info_<%=str(cur_result["showid"])+"_"+str(cur_result["season"])+"_"+str(cur_result["episode"])%>" />
|
|
#else:
|
|
<img src="$sbRoot/images/info32.png" width="16" height="16" class="plotInfoNone" alt="" />
|
|
#end if
|
|
$cur_result["name"]
|
|
</td>
|
|
|
|
<td align="center">
|
|
$cur_result["network"]
|
|
</td>
|
|
|
|
<td align="center">
|
|
#if int($cur_result["quality"]) in $qualityPresets:
|
|
<span class="quality $qualityPresetStrings[int($cur_result["quality"])]">$qualityPresetStrings[int($cur_result["quality"])]</span>
|
|
#else:
|
|
<span class="quality Custom">Custom</span>
|
|
#end if
|
|
</td>
|
|
|
|
<td align="center" style="vertical-align: middle;">
|
|
#if $cur_result["imdb_id"]:
|
|
<a href="http://www.imdb.com/title/${cur_result["imdb_id"]}" rel="noreferrer" onclick="window.open('${sickbeard.ANON_REDIRECT}' + this.href, '_blank'); return false;" title="http://www.imdb.com/title/${cur_result["imdb_id"]}"><img alt="[imdb]" height="16" width="16" src="$sbRoot/images/imdb.png" />
|
|
#end if
|
|
<a href="$sickbeard.indexerApi($cur_indexer).config["show_url"]${cur_result["showid"]}" rel="noreferrer" onclick="window.open('${sickbeard.ANON_REDIRECT}' + this.href, '_blank'); return false;" title="$sickbeard.indexerApi($cur_indexer).config["show_url"]${cur_result["showid"]}"><img alt="$sickbeard.indexerApi($cur_indexer).name" height="16" width="16" src="$sbRoot/images/$sickbeard.indexerApi($cur_indexer).config["icon"]" /></a>
|
|
</td>
|
|
|
|
<td align="center">
|
|
<a href="$sbRoot/home/searchEpisode?show=${cur_result["showid"]}&season=$cur_result["season"]&episode=$cur_result["episode"]" title="Manual Search" id="forceUpdate-${cur_result["showid"]}" class="forceUpdate epSearch"><img alt="[search]" height="16" width="16" src="$sbRoot/images/search16.png" id="forceUpdateImage-${cur_result["showid"]}" /></a>
|
|
</td>
|
|
</tr>
|
|
<!-- end $cur_result["show_name"] //-->
|
|
#end for
|
|
</tbody>
|
|
|
|
<tfoot>
|
|
<tr>
|
|
<th rowspan="1" colspan="10" align="center"> </th>
|
|
</tr>
|
|
</tfoot>
|
|
|
|
</table>
|
|
<!-- end list view //-->
|
|
|
|
#else if $layout in ['banner', 'poster']:
|
|
|
|
<!-- start non list view //-->
|
|
<script type="text/javascript" charset="utf-8">
|
|
<!--
|
|
\$(document).ready(function(){
|
|
\$('#sbRoot').ajaxEpSearch({'size': 16, 'loadingImage': 'loading16.gif'});
|
|
\$(".ep_summary").hide();
|
|
\$(".ep_summaryTrigger").click(function() {
|
|
\$(this).next(".ep_summary").slideToggle('normal', function() {
|
|
\$(this).prev(".ep_summaryTrigger").attr('src', function(i, src) {
|
|
return \$(this).next(".ep_summary").is(':visible') ? src.replace('plus','minus') : src.replace('minus','plus');
|
|
});
|
|
});
|
|
});
|
|
|
|
#set $fuzzydate = 'airdate'
|
|
#if $sickbeard.FUZZY_DATING:
|
|
fuzzyMoment({
|
|
dtInline : true,
|
|
dtGlue : ' at ',
|
|
containerClass : '.${fuzzydate}',
|
|
dateHasTime : true,
|
|
dateFormat : '${sickbeard.DATE_PRESET}',
|
|
timeFormat : '${sickbeard.TIME_PRESET}',
|
|
trimZero : #if $sickbeard.TRIM_ZERO then "true" else "false"#
|
|
});
|
|
#end if
|
|
|
|
});
|
|
//-->
|
|
</script>
|
|
|
|
#set $cur_segment = None
|
|
#set $too_late_header = False
|
|
#set $missed_header = False
|
|
#set $today_header = False
|
|
#set $show_div = "ep_listing listing-default"
|
|
|
|
#if $sort == "show":
|
|
<br /><br />
|
|
#end if
|
|
|
|
#for $cur_result in $sql_results:
|
|
#set $cur_indexer = int($cur_result["indexer"])
|
|
|
|
<!-- start $cur_result["show_name"] //-->
|
|
|
|
#if int($cur_result["paused"]) and not $sickbeard.COMING_EPS_DISPLAY_PAUSED:
|
|
#continue
|
|
#end if
|
|
|
|
#set $runtime = $cur_result["runtime"]
|
|
|
|
#if $sort == "network":
|
|
#if $cur_result["network"] and $cur_segment != $cur_result["network"]:
|
|
<div class="comingepheader">
|
|
<br><h2 class="network">$cur_result["network"]</h2>
|
|
#set $cur_segment = $cur_result["network"]
|
|
#end if
|
|
#set $cur_ep_airdate = $cur_result["localtime"].date()
|
|
|
|
#if $runtime:
|
|
#set $cur_ep_enddate = $cur_result["localtime"] + datetime.timedelta(minutes=$runtime)
|
|
#if $cur_ep_enddate < $today:
|
|
#set $show_div = "ep_listing listing-overdue"
|
|
#elif $cur_ep_airdate >= $next_week.date():
|
|
#set $show_div = "ep_listing listing-toofar"
|
|
#elif $cur_ep_enddate >= $today and $cur_ep_airdate < $next_week.date():
|
|
#if $cur_ep_airdate == $today.date():
|
|
#set $show_div = "ep_listing listing-current"
|
|
#else:
|
|
#set $show_div = "ep_listing listing-default"
|
|
#end if
|
|
#end if
|
|
#end if
|
|
|
|
#elif $sort == "date":
|
|
#set $cur_ep_airdate = $cur_result["localtime"].date()
|
|
|
|
#if $cur_segment != $cur_ep_airdate:
|
|
#if $runtime:
|
|
#set $cur_ep_enddate = $cur_result["localtime"] + datetime.timedelta(minutes=$runtime)
|
|
#if $cur_ep_enddate < $today and $cur_ep_airdate != $today.date() and not $missed_header:
|
|
<br /><h2 class="day">Missed</h2>
|
|
#set $missed_header = True
|
|
#elif $cur_ep_airdate >= $next_week.date() and not $too_late_header:
|
|
<br /><h2 class="day">Later</h2>
|
|
#set $too_late_header = True
|
|
#elif $cur_ep_enddate >= $today and $cur_ep_airdate < $next_week.date():
|
|
#if $cur_ep_airdate == $today.date():
|
|
<br /><h2 class="day">$datetime.date.fromordinal($cur_ep_airdate.toordinal).strftime("%A").decode($sickbeard.SYS_ENCODING).capitalize() <span style="font-size: 14px; vertical-align: top;">[Today]</span></h2>
|
|
#set $today_header = True
|
|
#else:
|
|
<br /><h2 class="day">$datetime.date.fromordinal($cur_ep_airdate.toordinal).strftime("%A").decode($sickbeard.SYS_ENCODING).capitalize()</h2>
|
|
#end if
|
|
#end if
|
|
#end if
|
|
#set $cur_segment = $cur_ep_airdate
|
|
#end if
|
|
|
|
#if $cur_ep_airdate == $today.date() and not $today_header:
|
|
<div class="comingepheader">
|
|
<br /><h2 class="day">$datetime.date.fromordinal($cur_ep_airdate.toordinal).strftime("%A").decode($sickbeard.SYS_ENCODING).capitalize() <span style="font-size: 14px; vertical-align: top;">[Today]</span></h2>
|
|
#set $today_header = True
|
|
#end if
|
|
#if $runtime:
|
|
#if $cur_ep_enddate < $today:
|
|
#set $show_div = "ep_listing listing-overdue"
|
|
#elif $cur_ep_airdate >= $next_week.date():
|
|
#set $show_div = "ep_listing listing-toofar"
|
|
#elif $cur_ep_enddate >= $today and $cur_ep_airdate < $next_week.date():
|
|
#if $cur_ep_airdate == $today.date():
|
|
#set $show_div = "ep_listing listing-current"
|
|
#else:
|
|
#set $show_div = "ep_listing listing-default"
|
|
#end if
|
|
#end if
|
|
#end if
|
|
|
|
#elif $sort == "show":
|
|
#set $cur_ep_airdate = $cur_result["localtime"].date()
|
|
|
|
#if $runtime:
|
|
#set $cur_ep_enddate = $cur_result["localtime"] + datetime.timedelta(minutes=$runtime)
|
|
#if $cur_ep_enddate < $today:
|
|
#set $show_div = "ep_listing listing-overdue listingradius"
|
|
#elif $cur_ep_airdate >= $next_week.date():
|
|
#set $show_div = "ep_listing listing-toofar listingradius"
|
|
#elif $cur_ep_enddate >= $today and $cur_ep_airdate < $next_week.date():
|
|
#if $cur_ep_airdate == $today.date():
|
|
#set $show_div = "ep_listing listing-current listingradius"
|
|
#else:
|
|
#set $show_div = "ep_listing listing-default listingradius"
|
|
#end if
|
|
#end if
|
|
#end if
|
|
#end if
|
|
|
|
<div class="$show_div" id="listing-${cur_result["showid"]}">
|
|
<div class="tvshowDiv">
|
|
<table width="100%" border="0" cellpadding="0" cellspacing="0">
|
|
<tr>
|
|
<th #if $layout == 'banner' then "class=\"nobg\"" else "rowspan=\"2\""# valign="top">
|
|
<a href="$sbRoot/home/displayShow?show=${cur_result["showid"]}"><img alt="" class="#if $layout == 'banner' then "bannerThumb" else "posterThumb"#" src="$sbRoot/showPoster/?show=${cur_result["showid"]}&which=#if $layout == 'poster' then "poster_thumb" else $layout#" /></a>
|
|
</th>
|
|
#if $layout == 'banner':
|
|
</tr>
|
|
<tr>
|
|
#end if
|
|
|
|
<td class="next_episode">
|
|
<div class="clearfix">
|
|
<span class="tvshowTitle">
|
|
<a href="$sbRoot/home/displayShow?show=${cur_result["showid"]}">$cur_result["show_name"]
|
|
#if int($cur_result["paused"]):
|
|
<span class="pause">[paused]</span>
|
|
#end if
|
|
</a></span>
|
|
|
|
<span class="tvshowTitleIcons">
|
|
#if $cur_result["imdb_id"]:
|
|
<a href="http://www.imdb.com/title/${cur_result["imdb_id"]}" rel="noreferrer" onclick="window.open('${sickbeard.ANON_REDIRECT}' + this.href, '_blank'); return false;" title="http://www.imdb.com/title/${cur_result["imdb_id"]}"><img alt="[imdb]" height="16" width="16" src="$sbRoot/images/imdb.png" />
|
|
#end if
|
|
<a href="$sickbeard.indexerApi($cur_indexer).config["show_url"]${cur_result["showid"]}" rel="noreferrer" onclick="window.open('${sickbeard.ANON_REDIRECT}' + this.href, '_blank'); return false;" title="$sickbeard.indexerApi($cur_indexer).config["show_url"]${cur_result["showid"]}"><img alt="$sickbeard.indexerApi($cur_indexer).name" height="16" width="16" src="$sbRoot/images/$sickbeard.indexerApi($cur_indexer).config["icon"]" /></a>
|
|
<span><a href="$sbRoot/home/searchEpisode?show=${cur_result["showid"]}&season=$cur_result["season"]&episode=$cur_result["episode"]" title="Manual Search" id="forceUpdate-${cur_result["showid"]}" class="epSearch forceUpdate"><img alt="[search]" height="16" width="16" src="$sbRoot/images/search16.png" id="forceUpdateImage-${cur_result["showid"]}" /></a></span>
|
|
</span>
|
|
</div>
|
|
|
|
<span class="title">Next Episode:</span> <span><%="S%02i" % int(cur_result["season"])+"E%02i" % int(cur_result["episode"]) %> - $cur_result["name"]</span>
|
|
|
|
<div class="clearfix">
|
|
|
|
<span class="title">Airs: </span><span class="${fuzzydate}">$sbdatetime.sbdatetime.sbfdatetime($cur_result["localtime"]).decode($sickbeard.SYS_ENCODING)</span><span> on $cur_result["network"]</span>
|
|
</div>
|
|
|
|
<div class="clearfix">
|
|
<span class="title">Quality:</span>
|
|
#if int($cur_result["quality"]) in $qualityPresets:
|
|
<span class="quality $qualityPresetStrings[int($cur_result["quality"])]">$qualityPresetStrings[int($cur_result["quality"])]</span>
|
|
#else:
|
|
<span class="quality Custom">Custom</span>
|
|
#end if
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="vertical-align: top;">
|
|
<div>
|
|
#if $cur_result["description"] != "" and $cur_result["description"] != None:
|
|
<span class="title" style="vertical-align:middle;">Plot:</span>
|
|
<img class="ep_summaryTrigger" src="$sbRoot/images/plus.png" height="16" width="16" alt="" title="Toggle Summary" /><div class="ep_summary">$cur_result["description"]</div>
|
|
#else:
|
|
<span class="title ep_summaryTriggerNone" style="vertical-align:middle;">Plot:</span>
|
|
<img class="ep_summaryTriggerNone" src="$sbRoot/images/plus.png" height="16" width="16" alt="" />
|
|
#end if
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- end $cur_result["show_name"] //-->
|
|
#end for
|
|
|
|
<!-- end non list view //-->
|
|
#end if
|
|
|
|
#if $layout == 'calendar':
|
|
|
|
#set $today = datetime.date.today()
|
|
#set $dates = [$today + datetime.timedelta(days=$i) for $i in range(7)]
|
|
#set $tbl_day = 0
|
|
<br>
|
|
<br>
|
|
<div class="calendarWrapper">
|
|
<input type="hidden" id="sbRoot" value="$sbRoot" />
|
|
#for $day in $dates
|
|
#set $tbl_day += 1
|
|
<table class="sickbeardTable tablesorter calendarTable <%= 'cal-%s' % ('odd' if 1 == tbl_day % 2 else 'even') %>" cellspacing="0" border="0" cellpadding="0">
|
|
<thead><tr><th>$day.strftime("%A").decode($sickbeard.SYS_ENCODING).capitalize()</th></tr></thead>
|
|
<tbody>
|
|
#set $day_has_show = False
|
|
#for $cur_result in $sql_results:
|
|
#set $cur_indexer = int($cur_result["indexer"])
|
|
#set $runtime = $cur_result["runtime"]
|
|
#set $airday = $cur_result["localtime"].date()
|
|
|
|
#if $airday == $day:
|
|
#set $day_has_show = True
|
|
#set $airtime = $sbdatetime.sbdatetime.fromtimestamp($time.mktime($cur_result["localtime"].timetuple())).sbftime().decode($sickbeard.SYS_ENCODING)
|
|
#if $sickbeard.TRIM_ZERO:
|
|
#set $airtime = re.sub(r"0(\d:\d\d)", r"\1", $airtime, 0, re.IGNORECASE | re.MULTILINE)
|
|
#end if
|
|
|
|
<tr>
|
|
<td class="calendarShow">
|
|
<div class="poster">
|
|
<a title="${cur_result["show_name"]}" href="$sbRoot/home/displayShow?show=${cur_result["showid"]}"><img alt="" src="$sbRoot/showPoster/?show=${cur_result["showid"]}&which=poster_thumb" /></a>
|
|
</div>
|
|
<div class="text">
|
|
<span class="airtime">
|
|
${airtime} on $cur_result["network"]
|
|
</span>
|
|
<span class="episode-title" title="$cur_result["name"]">
|
|
<%= "S%02i" % int(cur_result["season"]) + "E%02i" % int(cur_result["episode"]) %> - $cur_result["name"]
|
|
</span>
|
|
</div>
|
|
</td> <!-- end $cur_result["show_name"] -->
|
|
</tr>
|
|
#end if
|
|
|
|
#end for
|
|
#if not $day_has_show:
|
|
<tr><td class="calendarShow"><span class="show-status">No shows for this day</span></td></tr>
|
|
#end if
|
|
</tbody>
|
|
</table>
|
|
#end for
|
|
|
|
<!-- end calender view //-->
|
|
</div>
|
|
#end if
|
|
|
|
<div class="clearfix"></div>
|
|
|
|
<script type="text/javascript" charset="utf-8">
|
|
<!--
|
|
window.setInterval( "location.reload(true)", 600000); // Refresh every 10 minutes
|
|
//-->
|
|
</script>
|
|
|
|
#include $os.path.join($sickbeard.PROG_DIR, "gui/slick/interfaces/default/inc_bottom.tmpl")
|