#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"> .sort_data {display:none} </style> <div class="h2footer align-right"> <b>Key:</b> <span class="listing_overdue">Missed</span> <span class="listing_current">Current</span> <span class="listing_default">Future</span> <span class="listing_toofar">Distant</span> <a class="btn btn-mini btn-inverse forceBacklog" href="webcal://$sbHost:$sbHttpPort/calendar"> <i class="icon-calendar icon-white"></i>Subscribe</a> <!-- <span class="listing_unknown">Unknown</span> //--> </div> #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" 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>IMDb</th><th>Indexer</th><th>Search</th></tr></thead> <tbody> #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" style="color: #555555; font-size: 16px;"><b><%="%02ix%02i" % (int(cur_result["season"]), int(cur_result["episode"])) %></b></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"])%>" style="padding-top: 6px;"/> #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"> #if $cur_result["imdb_id"]: <a href="http://www.imdb.com/title/${cur_result["imdb_id"]}" onclick="window.open(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 </td> <td align="center"><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/search32.png" id="forceUpdateImage-${cur_result["showid"]}" /></a> </td> </tr> <!-- end $cur_result["show_name"] //--> #end for </tbody> </table> <!-- end list view //--> #else: <!-- 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'); }); }); }); }); //--> </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"]: <h1 class="network">$cur_result["network"]</h1> #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 /><h1 class="day">Missed</h1> #set $missed_header = True #elif $cur_ep_airdate >= $next_week.date() and not $too_late_header: <br /><h1 class="day">Later</h1> #set $too_late_header = True #elif $cur_ep_enddate >= $today and $cur_ep_airdate < $next_week.date(): #if $cur_ep_airdate == $today.date(): <br /><h1 class="day">$datetime.date.fromordinal($cur_ep_airdate.toordinal).strftime("%A").decode($sickbeard.SYS_ENCODING).capitalize() <span style="font-size: 12px;">[today]</span></h1> #set $today_header = True #else: <br /><h1 class="day">$datetime.date.fromordinal($cur_ep_airdate.toordinal).strftime("%A").decode($sickbeard.SYS_ENCODING).capitalize()</h1> #end if #end if #end if #set $cur_segment = $cur_ep_airdate #end if #if $cur_ep_airdate == $today.date() and not $today_header: <br /><h1 class="day">$datetime.date.fromordinal($cur_ep_airdate.toordinal).strftime("%A").decode($sickbeard.SYS_ENCODING).capitalize() <span style="font-size: 12px;">[today]</span></h1> #set $today_header = True #end if #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 #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" #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 #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\""# style="background-color: #efefef;" 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"> <h2 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></h2> <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/search32.png" id="forceUpdateImage-${cur_result["showid"]}" /></a></span> </span> </div> <span class="title">Next Episode:</span> <span><%=str(cur_result["season"])+"x"+"%02i" % int(cur_result["episode"]) %> - $cur_result["name"] ($sbdatetime.sbdatetime.fromtimestamp($time.mktime($cur_result["localtime"].timetuple())).sbfdate().decode($sickbeard.SYS_ENCODING))</span> <div class="clearfix"> <span class="title">Airs:</span> <span>$sbdatetime.sbdatetime.fromtimestamp($time.mktime($cur_result["localtime"].timetuple())).sbftime().decode($sickbeard.SYS_ENCODING) 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"] == '': <span class="title">Plot:</span> <img class="ep_summaryTrigger" src="$sbRoot/images/plus.png" height="16" width="16" alt="" title="Toggle Summary" /><div class="ep_summary">[There is no summary added for this episode]</div> #else: <span class="title">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> #end if </div> </td> </tr> </table> </div> </div> <!-- end $cur_result["show_name"] //--> #end for <!-- end non list view //--> #end if <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")