checkpoint

git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1182 2a923420-c742-0410-a762-8d5b09965624
This commit is contained in:
hummypkg
2012-10-30 18:58:54 +00:00
parent 57b78c4c0d
commit 0a2c7966b5
31 changed files with 1080 additions and 152 deletions

View File

@@ -2,7 +2,7 @@
package require cgi
source /mod/webif/lib/setup
require ts.class pretty_size system.class settings.class escape
require ts.class pretty_size system.class settings.class escape browse.class
puts "Content-Type: text/html"
puts ""
@@ -42,8 +42,6 @@ proc icon {img {hover ""} {extra ""} {class "va"}} {
}
proc directory {file bfile tbfile} {
global flatten
puts "<div class=va>"
set img "/images/711_1_09_Media_Folder.png"
if {$bfile eq $::dustbin} { set img "/img/Dustbin_Folder.png" }
@@ -55,38 +53,14 @@ proc directory {file bfile tbfile} {
puts "$bfile</a><span class=filesize id=\"$tbfile\">
</span>"
set noflat 0
if $flatten {
if {[string match {\[*\]} [file tail $file]]} { set noflat 1 }
if {[file exists "$file/.noflatten"]} { set noflat 1 }
if $noflat { icon "/img/flat-tyre.png" "No-flatten" }
}
lassign [{dir iconset} $file] icons attrs
set autoshrink 0
if {[file exists "$file/.autoshrink"]} {
set autoshrink 1
icon "/img/compress.png" "Auto-shrink"
}
set autodedup 0
if {[file exists "$file/.autodedup"]} {
set autodedup 1
icon "/img/dedup.png" "Auto-dedup"
}
set autodecrypt 0
if {[file exists "$file/.autodecrypt"]} {
set autodecrypt 1
icon "/img/decrypt.png" "Auto-decrypt"
}
puts [join $icons ""]
puts -nonewline "
<a href=#>
<img class=\"dopt va\" border=0 width=45 "
puts -nonewline "autoshrink=$autoshrink "
puts -nonewline "autodedup=$autodedup "
puts -nonewline "autodecrypt=$autodecrypt "
if $flatten { puts -nonewline "noflat=$noflat " }
puts -nonewline [join $attrs " "]
puts "
src=/images/181_1_00_Help5_OPT_Plus.png>
</a>
@@ -106,10 +80,10 @@ proc entry {file} {{i 0}} {
}
if [file isdirectory "$file"] {
directory $file $bfile $tbfile
continue
return
}
set ext [file extension $file]
if {$ext in $::ignore || $ext ni $::include} { continue }
if {$ext in $::ignore || $ext ni $::include} { return }
file stat $file st
set rsz $st(size)

View File

@@ -60,7 +60,7 @@ if {$ct > 0 } {
} elseif {$scrid ne ""} {
set records [epg fetch dump -scrid $scrid]
} elseif {$searchterm ne ""} {
set records [epg fetch $cmd -extra $searchterm]
set records [epg dbfetch $cmd -term $searchterm]
} else {
set records {}
}

View File

@@ -30,6 +30,7 @@ set channel_group [$settings channel_group]
set epg_style [$settings epg_style]
set pkgdev [$settings pkgdev]
set notoolbar [$settings notoolbar]
set nomobile [$settings nomobile]
# Handle updates
@@ -67,6 +68,7 @@ handle_int_update channel_group $channel_group "Channel Group"
handle_str_update epg_style $epg_style "EPG Type"
handle_int_update pkgdev $pkgdev "Development Package Display"
handle_int_update notoolbar $notoolbar "Disable toolbar"
handle_int_update nomobile $nomobile "Disable mobile link"
set acluser [cgi_get acluser "-"]
set aclpass [cgi_get aclpass "-"]
@@ -153,6 +155,17 @@ puts ">
</tr>
"
puts -nonewline "
<tr>
<th class=key>Mobile link on main page?</th>
<td><input id=mobile_toggle name=mobile type=checkbox value=yes"
if {$nomobile == 0} { puts -nonewline " checked" }
puts ">
<div id=mobile_output></div>
</td>
</tr>
"
puts "
<tr>
<form class=auto id=epg_style method=get action=$env(REQUEST_URI)>

View File

@@ -94,5 +94,24 @@ $(document).ready(function () {
.delay(2000).fadeOut('slow');
});
});
$('#mobile_toggle').change(function() {
var arg = '1';
if ($(this).attr('checked'))
arg = '0';
$(this).disable();
$('#mobile_output')
.empty()
.show('slow')
.load('/cgi-bin/settings.jim?nomobile=' + arg,
function() {
$('#mobile_toggle').enable();
$('#mobile_output')
.css('font-style', 'italic')
.delay(2000).fadeOut('slow');
});
});
});

View File

@@ -135,7 +135,7 @@ if {![system instandby] && $play < 1} {
if {[system instandby]} {
if {$runmode eq "cgi"} {
lappend output [concat \
"<span class=\"va stitem\">\n"
"<span class=\"va stitem\">\n" \
" <img class=va width=28 style=\"padding: 0 4px\"" \
"src=/img/standby.png>\n" \
" <span>System is in standby.</span>\n" \

View File

@@ -122,6 +122,7 @@ View:
foreach file [lsort [concat \
[glob -nocomplain /var/log/*.log] \
[glob -nocomplain /mod/tmp/*.log] \
[glob -nocomplain /mnt/hd3/*.log] \
]] {
puts "<a href=# class=log file=\"$file\">
<img border=0 height=14 src=/images/421_1_00_CH_Title_2R_Arrow.png>

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.6 KiB

View File

@@ -1,6 +1,6 @@
<!--#include virtual="/lib/header.shtml" -->
<div class=toolbarouter>
<div class=toolbarouter style="top: -40px">
<div id=status class=toolbar>
<span id=status_txt>
Status...
@@ -19,8 +19,6 @@ $(document).ready(function() {
</script>
<!--#exec cmd="/mod/webif/include/menuicons.jim" -->
<div style="clear: both; padding-top: 1em">
<!--#exec cmd="/mod/webif/include/menuplugins.jim" -->
</div>

184
var/mongoose/html/m/browse.jim Executable file
View File

@@ -0,0 +1,184 @@
#!/mod/bin/jimsh
package require cgi
source /mod/webif/lib/setup
require ts.class pretty_size system.class settings.class escape browse.class
cgi_input
set ignore {.nts .thm .hmi}
set include {.ts .avi .mpg .mpeg .wmv .mkv .mp3 .mp4 .mov .hmt}
set dir [cgi_get dir [system mediaroot]]
set model [system model]
set dustbin [system dustbin 1]
proc icon {img {hover ""} {extra ""} {class "va"}} {
puts -nonewline "<img src=$img class=\"$class\" height=21 $extra"
if {$hover ne ""} {
puts -nonewline " alt=\"$hover\" title=\"$hover\""
}
puts ">"
}
proc directory {file bfile tbfile {img /images/711_1_09_Media_Folder.png}} {
if {$bfile eq $::dustbin} { set img "/img/Dustbin_Folder.png" }
lassign [{dir iconset} $file] icons attrs
puts "<li><a href=\"browse.jim?dir=[cgi_quote_url $file]\"
data-transition=flip>
<img src=$img border=0 class=va width=80 id=\"img$tbfile\">
<h3>$bfile</h3>
"
if {[llength $icons]} {
puts "<p>[join $icons ""]</p>"
}
puts "<p class=ui-li-count>
<span class=filesize id=\"$tbfile\"></span>
</p>
</a></li>
"
}
proc entry {file {i 0}} {
set bfile [file tail $file]
regsub -all " +" $bfile "" tbfile
if {[string index $bfile 0] == "\025"} {
set bfile [string range $bfile 1 end]
}
if [file isdirectory "$file"] {
directory $file $bfile $tbfile
return
}
set ext [file extension $file]
if {$ext in $::ignore || $ext ni $::include} { return }
file stat $file st
set rsz $st(size)
set sz [pretty_size $rsz]
set base [file rootname $file]
if {$ext eq ".ts" && [file exists "${base}.nts"]} {
set type ts
set ts [ts fetch $file 1]
set img Video_TS
set omenu opt
} elseif {$ext eq ".hmt"} {
if {[file exists "${base}.ts"]} { continue }
# Sole hmt file indicates failure to track.
set type bad
set ts 0
set img Video_Failed
set omenu oopt
} else {
set type gen
set ts 0
set img Video_Other
set omenu oopt
}
set new 0
if {$type eq "ts"} {
if {[$ts flag "New"] > 0} { set new 1 }
} elseif {$type eq "gen"} {
if {![file exists "${base}.hmi"]} { set new 1 }
}
if {$new} { append img _New }
set fscl "fs"
set synopsis ""
if {$type eq "ts"} {
set fscl "fs fsts"
set synopsis [cgi_quote_html [$ts get synopsis]]
}
puts "<li>
<img class=va border=0 width=80 src=/img/$img.png>
<h3>$bfile</h3>
<p class=ui-li-count>
<span class=filesize> $sz </span>
</p>
<p class=icons>
"
# Icons
set locked 0
set encd 0
set odencd 1
set def unknown
set bx 0
set dlna 0
if {$type eq "ts"} {
# HD / SD
if {[$ts get definition] eq "HD"} {
set def HD
set img "172_1_00_HD"
} else {
set def SD
set img "172_1_26_SD"
}
icon "/images/$img.png"
# Locked
if {[$ts flag "Locked"] > 0} {
set locked 1
icon "/images/178_1_00_Icon_Lock.png" "Locked"
}
# Encrypted
if {[$ts flag "Encrypted"] > 0} {
set encd 1
icon "/images/749_1_26_Video_Encryption.png" ""
}
if {![$ts flag "ODEncrypted"]} {
set odencd 0
icon "/img/Decrypted.png" "Decrypted"
}
# Guidance
if {[$ts flag "Guidance"] > 0} {
icon "/images/174_1_26_GuidancePolicy.png"
}
# Indexed
if {$::model eq "HDR" && [llength [$ts dlnaloc]]} {
icon "/img/dlna.png" "Indexed by DLNA Server"
set dlna 1
}
# Shrunk (shown when necessary via Ajax)
icon "/img/compress.png" "Shrunk" \
"id=\"sp_$tbfile\"" "va hidden"
}
puts "</p></li>"
}
mheader
puts "
<span class=\"dir hidden\">$dir</span>
<ul data-role=listview data-filter=true data-count-theme=e>
<li data-role=list-divider>$dir
<p class=ui-li-count>
<span class=\"filesize dirsize\"></span>
</p>
</li>
"
# Parent directory
directory [join [lrange [split $dir /] 0 end-1] /] "\[parent directory\]" \
_parent "/images/711_3_09_Media_Folder_UP.png"
set files [readdir -nocomplain $dir]
set files [lsort $files]
foreach file $files { entry "$dir/$file" }
puts "</ul>"
mfooter

View File

@@ -3,6 +3,7 @@
package require cgi
source /mod/webif/lib/setup
require epg.class
source include/epgcell.jim
cgi_input
@@ -26,6 +27,8 @@ puts "
"
foreach e $records {
$e copy_channel_info $tr
set st [$e get start]
set nday [clock format $st -format "%F"]
if {$day ne $nday} {
@@ -34,24 +37,8 @@ foreach e $records {
[clock format $st -format "%a %d %b %Y"]
</li>"
}
set et $($st + [$e get duration])
puts "
<li><a href=event.jim?sid=[$e get service_id]&eid=[$e get event_id]>
<h4>[$e get name]</h4>
<p style=\"white-space: normal\">[$e get text]</p>
"
set guidance [$e get warning]
if {$guidance ne ""} {
puts "<p class=blood style=\"white-space: normal\">
$guidance</p>"
}
puts "
<p class=ui-li-aside>
[clock format $st -format "%H:%M"] -
[clock format $et -format "%H:%M"]
</p>
</a></li>
"
epgcell $e 1
}
puts "</ul>"

155
var/mongoose/html/m/event_d.jim Executable file
View File

@@ -0,0 +1,155 @@
#!/mod/bin/jimsh
package require cgi
source /mod/webif/lib/setup
require epg.class
cgi_input
set sid [cgi_get sid 0]
set eid [cgi_get eid 0]
mheader
set record [lindex [epg fetch dump -service $sid -event $eid] 0]
$record get_channel_info
set others [$record othertimes]
puts "
<div data-role=header data-theme=b>
<h1>EPG Event</h1>
</div>
<div data-role=content>
<table class=keyval>
<tr>
<th>Programme</th>
<td>[$record get name]</td>
</tr><tr>
<th>Synopsis</th>
<td>[$record get text]</td>
</tr><tr>
<th>Start</th>
<td>[clock format [$record get start] -format {%c %Z}]
"
foreach o $others {
if {[$o ended]} { continue }
$o get_channel_info
$o process_sched
if {[$o get series_crid] eq ""} { set ro 1 } else { set ro 2 }
puts -nonewline "<br><font class=also>&nbsp;&nbsp;&nbsp;&nbsp;"
puts -nonewline "Also: "
puts -nonewline "<a href=event_d.jim?sid=[$o get service_id]&"
puts -nonewline "eid=[$o get event_id] data-rel=dialog>"
puts -nonewline "[clock format [$o get start] -format {%c %Z}]"
puts -nonewline " on "
puts -nonewline [$o channel_icon 16]
puts -nonewline "[$o get channel_name] "
puts "</a>"
puts "</font>"
}
puts "
</td>
</tr><tr>
<th>Duration</th>
<td>[clock format [$record get duration] -format %T]
"
if {[$record showing]} {
puts [progressbar [$record percent]]
}
puts "
</td>
</tr><tr>
<th>Type</th>
<td>[$record get content_type] ([$record get content_code])</td>
</tr>
"
if {[$record get warning] != ""} {
puts "
<tr>
<th>Warning</th>
<td>[$record get warning]</td>
</tr>
"
}
if {[$record get event_crid] != ""} {
puts "
<tr>
<th>CRID</th><td>
[$record get channel_crid][$record get event_crid]
</td>
</tr>
"
}
if {[$record get series_crid] != ""} {
puts "
<tr>
<th nowrap>Series CRID</th><td>
[$record get channel_crid][$record get series_crid]
</td>
</tr>
"
}
if {[$record get rec_crid] != ""} {
set rec [$record recommended]
if {$rec != ""} {
puts "<tr><th>Recommends</th><td>
[$rec get name]
([$rec get channel_crid][$rec get event_crid])
</td></tr>"
}
}
puts "
<tr>
<td colspan=2 valign=top>
[$record channel_icon 50]
[join [$record icon_set] "&nbsp;"]
</td>
</tr>
</table>
"
# Buttons
if {[$record get start] < [clock seconds]} {
set rec 0
} elseif {[$record get series_crid] ne ""} {
set rec 2
} else {
set rec 1
}
$record process_sched
set sch [$record get sched_type]
if {!$sch} {
if {$rec == 2} {
puts "<a href=# data-theme=b class=schedule stype=2
sid=$sid eid=$eid data-role=button>
Record Series</a>"
}
if {$rec > 0} {
puts "<a href=# data-theme=b class=schedule stype=1
sid=$sid eid=$eid data-role=button>
Record Programme</a>"
puts "<a href=# data-theme=b class=schedule stype=3
sid=$sid eid=$eid data-role=button>
Set Reminder</a>"
}
}
puts "<a href=# data-role=button data-theme=a id=close data-rel=back>Close</a>"
puts "<div id=epginfo_extra class=footnote></div>"
epg cleanup
mfooter

View File

@@ -0,0 +1,37 @@
proc epgcell {e {aside 0}} {
$e get_channel_info
set st [$e get start]
set et $($st + [$e get duration])
puts "
<li><a data-rel=dialog data-transition=slidedown
href=event_d.jim?sid=[$e get service_id]&eid=[$e get event_id]>
[$e channel_icon 80]
<h4>[$e get name]</h4>
<p class=datetime>
[clock format $st -format {%a %d %b %Y %H:%M}]
-
[clock format $et -format {%H:%M}]
</p>
<p style=\"white-space: normal\">
[join [$e icon_set 14] ""]
[$e get text]</p>
"
set guidance [$e get warning]
if {$guidance ne ""} {
puts "<p class=blood style=\"white-space: normal\">
$guidance</p>"
}
if {[$e showing]} {
puts "<p>[progressbar [$e percent]]</p>"
}
if {$aside} {
puts "
<p class=ui-li-aside>
[clock format $st -format "%H:%M"] -
[clock format $et -format "%H:%M"]
</p>
"
}
}

View File

@@ -0,0 +1,32 @@
puts -nonewline "
<form action=search.jim method=get data-transition=fade>
<label class=ui-hidden-accessible for=epgsearchterm>
Search
</label>
<input size=20 maxlength=50
type=search placeholder=\"Enter search term\"
data-mini=true
name=epgsearchterm id=epgsearchterm value=\"$term\" />
<div data-role=fieldcontain class=va>
<label for=epgsearchfull
style=\"line-height: 1; width: auto; margin: 10px 0.5em 0 0;\">
Descriptions
</label>
<select data-mini=true
name=epgsearchfull id=epgsearchfull data-role=slider>
<option value=0"
if {!$full} { puts -nonewline " selected" }
puts -nonewline ">Off</option>
<option value=1"
if {$full} { puts -nonewline " selected" }
puts ">On</option>
</select>
<button type=submit data-mini=true name=search value=search
data-theme=b>Search</button>
</div>
</form>
"

View File

@@ -0,0 +1,8 @@
puts -nonewline "
<style>
.ui-field-contain .ui-btn.ui-submit { width: auto; }
.ui-field-contain { margin: 0 }
</style>
"

View File

@@ -5,6 +5,8 @@ require settings.class plugin
mheader
source include/searchstyle.jim
puts "<ul data-role=listview data-inset=true>"
proc tb {icon txt link {height 80} {width 0}} {
@@ -23,13 +25,27 @@ if {[file exists "/mod/bin/ir"]} {
tb "/img/remote.png" "Remote" "/plugin/ir/m/index.jim\" rel=\"external"
}
tb "/images/328_1_26_Menu_TV_Guide.png" "Now/Next" "nownext.jim"
tb "/images/323_1_10_Menu_Video.png" "Browse" "#"
tb "/images/321_1_00_Menu_CHList.png" "Schedule" "#"
puts "<li><a id=epgsearch href=#>
<img src=/images/328_1_26_Menu_TV_Guide.png height=80 border=0>
<h3>Search EPG</h3>
</a>
</li>
<li id=xepgsearch class=ui-screen-hidden>
"
set term ""
set full 0
source include/searchform.jim
puts "</li>"
tb "/images/323_1_10_Menu_Video.png" "Browse" "browse.jim"
tb "/images/321_1_00_Menu_CHList.png" "Schedule" "schedule.jim"
tb "/img/spanner.png" "Services" "#"
tb "/img/packages.png" "Packages" "#"
tb "/images/326_1_00_Menu_Settings.png" "Settings" \
"/cgi-bin/settings.jim\" rel=\"external"
tb "/img/diagnostics.png" "Diag" "#"
tb "/img/desktop.png" "Desktop Version" "/\" rel=\"external"
#eval_plugins toolbar
puts "</ul>"

View File

@@ -1,15 +1,17 @@
#!/mod/bin/jimsh
puts {
</div>
puts {</div>}
<div data-role=footer data-theme=c>
}
if {!$_dialog} {
puts "<div data-role=footer data-theme=c>"
if {![catch {
set rendertime [expr [expr [clock milliseconds] - $renderstart] / 1000.0]
}]} {
puts "<font class=footnote>Rendered in: $rendertime seconds</font>"
if {![catch {
set rendertime $(([clock milliseconds] - $renderstart) / 1000.0)
}]} {
puts "<font class=footnote>
Rendered in: $rendertime seconds</font>"
}
puts "</div>"
}
puts {

View File

@@ -34,23 +34,44 @@ puts {
</head>
}
set pageid [string range $env(SCRIPT_NAME) 3 end-4]
if [dict exists $env SCRIPT_NAME] {
set pageid [string range $env(SCRIPT_NAME) 3 end-4]
} else {
set pageid test
}
puts "
<body>
set _dialog 0
if {[string range $pageid end-1 end] eq "_d"} {
set _dialog 1
}
puts "<body>"
if {$_dialog} {
puts "<div data-role=page id=${pageid}page>\n"
} else {
puts "
<div data-role=page data-add-back-btn=true id=${pageid}page>
<div class=\"hidden status\"></div>
<div data-role=header data-theme=b>
<a class=ui-btn-right data-theme=b data-icon=home data-iconpos=notext
<div class=ui-btn-right style=\"top: -5px\">
<div style=\"display: inline-block; margin-right: 10px;\">
<a data-theme=b data-icon=home data-iconpos=notext data-role=button
data-direction=reverse href=index.jim></a>
</div>
<div style=\"display: inline-block;\">
<a data-theme=b data-icon=refresh data-iconpos=notext data-role=button
class=refresh data-direction=reverse href=#></a>
</div>
</div>
<h1>[system model] ([system hostname])</h1>
</div>
<div data-role=content>
"
}
set renderstart [clock milliseconds]

View File

@@ -0,0 +1,85 @@
#!/mod/bin/jimsh
package require cgi
source /mod/webif/lib/setup
require epg.class
proc eventtab {type title} {
set events [rsv list $type]
if {[set num [llength $events]] <= 0} return
puts "<li data-role=list-divider>$title ($num)</li>\n";
foreach event $events {
set name [$event name]
set rsvicon [$event icon]
set RKIcon [$event RKIcon]
set icons ""
if {$type eq "pending"} {
switch [$event get action] {
0 { set icon "add" }
1 { set icon "close" }
2 { set icon "ar" }
3 { set icon "pad" }
4 { set icon "folder" }
}
append icons "<img src=/img/$icon.png height=30>"
}
if {$rsvicon ne ""} {
append icons "<img src='/images/$rsvicon' height=20>"
}
if {$RKIcon ne ""} {
append icons "<img src='/images/$RKIcon' height=20>"
}
set s [$event get nsttime]
set d [$event get nduration]
set e $($s + $d)
set n [clock seconds]
set recording 0
if {$d > 0 && $n > $s && $n < $e} {
set recording 1
}
set last "[clock format $s -format {%a %d %b %Y %H:%M %Z}]"
if {$n > $e && [$event get ersvtype] <= 3} {
set ds "--- -- --- ---- --:--"
set dur "--:--:--<br>
<span class=blood>(Last: $last)</span>"
} else {
set ds $last
set dur "[clock format [$event get nduration] \
-format %T]"
}
puts "
<li><a data-rel=dialog data-transition=slidedown
href=schedule_d.jim?table=$type&slot=[$event get ulslot]>
[epg channelicon [$event channel_name] 80]
<h3>$icons $name</h3>
<p>
$ds $dur
</p>
";
if {$recording} {
set perc $(($n - $s) * 100 / $d)
puts "<p class=va>
<img class=va src=/images/745_1_11_Video_1REC.png>
[progressbar $perc]
</p>
"
}
puts "</a></li>";
}
}
mheader
puts "<ul data-role=listview data-filter=true>"
eventtab "pending" "Pending Events"
eventtab "TBL_RESERVATION" "Active Events"
puts "</ul>"
mfooter

View File

@@ -0,0 +1,118 @@
#!/mod/bin/jimsh
package require cgi
source /mod/webif/lib/setup
require epg.class
cgi_input
set table [cgi_get table TBL_RESERVATION]
set slot [cgi_get slot 0]
set event [rsv slot $table $slot]
mheader
puts "
<div data-role=header data-theme=b>
<h1>Scheduled Event</h1>
</div>
<div data-role=content>
"
puts "
<table class=keyval>
<tr>
<th>Event [$event get ulslot]</th>
<td class=va>[join [$event iconset] ""]</td>
</tr><tr>
<th>Channel</th>
<td class=va>
"
if {[$event get usLcn] ne ""} {
puts "[epg channelicon [$event channel_name] 50]
- [$event get usLcn] - [$event channel_name]
"
}
puts "
</td>
</tr><tr>
<th>Event Name</th>
<td>[$event name]"
if {[$event get ucRecKind] == 4 && [$event name] ne [$event folder]} {
puts "<span class=also>(Folder: [$event folder])</span>"
}
puts "</td>
</tr><tr>
<th>Start</th>
"
set s [$event get nsttime]
set d [$event get nduration]
set e $($s + $d)
set n [clock seconds]
if { $n > $e } {
puts "<td class=blood nowrap class=va>"
} else {
puts "<td nowrap class=va>"
}
puts "[clock format $s -format "%a %d %b %Y"]
[clock format $s -format "%H:%M %Z"]"
if {$d > 0 && $n > $s && $n < $e} {
puts "<br>"
set perc [expr [expr $n - $s] * 100 / $d]
puts "<img class=va src=/images/745_1_11_Video_1REC.png>"
puts [progressbar $perc]
}
puts "
</td>
</tr><tr>
<th>Duration</th>
<td>[clock format [$event get nduration] -format %T]</td>
</tr>
"
set crid [join [lrange [split [$event get szCRID] /] 1 end]]
if {$crid != ""} {
puts "<tr><th>"
if {[$event isseries]} { puts "Series" } else { puts "Event" }
puts " CRID</th><td>
<img border=0 src=/images/421_1_00_CH_Title_2R_Arrow.png
height=14>
[$event get szCRID]
</td></tr>"
}
puts "<tr><th>Events</th><td>"
set flag 0
foreach ev [split [$event get szEventToRecord] "|"] {
if {$ev eq ""} { continue }
set ev [string range $ev 1 end]
if {$flag} { puts "<br>" }
incr flag
set crid [join [lrange [split $ev /] 1 end]]
puts "<img border=0 src=/images/421_1_00_CH_Title_2R_Arrow.png
height=14>$ev"
}
puts "</td></tr>"
puts "<tr><th>Accepted</th><td>"
if {[$event get aulEventToRecordInfo] ne ""} {
puts "Yes"
}
puts "</td></tr>"
puts "</table>"
# Buttons
puts "<a href=# data-theme=b id=delevent data-role=button
tab=$table slot=$slot>Cancel Event</a>"
puts "<a href=# data-role=button data-theme=a id=close data-rel=back>Close</a>"
epg cleanup
mfooter

View File

@@ -1,11 +1,127 @@
function s(query) {return $("div.ui-page-active " + query);}
$(document).bind('pageinit', function() {
$('div.status').last().load('/cgi-bin/status.jim', function() {
$(this).slideDown('slow');
});
$('a.refresh').on('click', function(e) {
e.preventDefault();
$.mobile.showPageLoadingMsg();
window.location.reload(true);
});
});
$(document).delegate('#indexpage', 'pageinit', function() {
$('#epgsearch').on('click', function(e) {
e.preventDefault();
$('#xepgsearch').toggle('slow');
});
});
$(document).delegate('#event_dpage', 'pageinit', function() {
$('a.schedule').click(function(e) {
e.preventDefault();
$.mobile.showPageLoadingMsg();
$('#epginfo_extra').load('/cgi-bin/epg/schedule.jim?' +
'service=' +
encodeURIComponent($(this).attr('sid')) +
'&event=' +
encodeURIComponent($(this).attr('eid')) +
'&type=' +
$(this).attr('stype'), function() {
$('a.schedule').fadeOut('slow');
});
});
});
$(document).delegate('#schedule_dpage', 'pageinit', function() {
$('#delevent').click(function(e) {
e.preventDefault();
if (!confirm('Confirm event cancellation?'))
return;
$.mobile.showPageLoadingMsg();
$.get('/sched/cancel.jim' +
'?slot=' + $(this).attr('slot') +
'&table=' + $(this).attr('tab'), function() {
$('.ui-dialog').dialog('close');
$.mobile.showPageLoadingMsg();
window.location.reload(true);
});
});
});
function insert_folder_size(folder, size)
{
folder = folder.replace(/ /g, '');
folder = folder.replace(/([ #;&,.+*~\':"!^$[\]()=>|\/@])/g, '\\$1');
//console.log("Folder: (%s) = (%s)", folder, size);
if (size.search(/\d$/) == -1)
size += 'iB';
else
size += ' bytes';
if (folder == "")
$('span.dirsize').text(size);
else
$('#' + folder).text(size);
}
function folder_size_callback(data, status, xhr)
{
//console.log("Status: %s", status);
//console.dir(data);
$.each(data, insert_folder_size);
}
function set_folder_new(folder, cnt)
{
folder = folder.replace(/ /g, '');
folder = folder.replace(/([ #;&,.+*~\':"!^$[\]()=>|\/@])/g, '\\$1');
//console.log("Folder: (%s) = (%s)", folder, cnt);
$('#img' + folder).attr('src', '/img/Folder_New.png');
}
function new_folder_callback(data, status, xhr)
{
//console.log("Status: %s", status);
//console.dir(data);
$.each(data, set_folder_new);
}
function insert_shrunk(file, perc)
{
if (perc == 0)
{
file = file.replace(/[ ]/g, '');
file = file.replace(/([ #;&,.+*~\':"!^$[\]()=>|\/@])/g, '\\$1');
//console.log("File: (%s) = (%s)", file, perc);
$('#sp_' + file).show();
}
}
function shrunk_callback(data, status, xhr)
{
//console.log("Status: %s", status);
//console.dir(data);
$.each(data, insert_shrunk);
}
$(document).delegate('#browsepage', 'pageinit', function() {
var dir = $('span.dir').last().text();
//console.log('DIR: %O', dir);
// Load folder sizes
$.getJSON('/cgi-bin/browse/sizes.jim?dir=' + encodeURIComponent(dir),
folder_size_callback);
// Flag folders with unwatched items
$.getJSON('/cgi-bin/browse/newdir.jim?dir=' + encodeURIComponent(dir),
new_folder_callback);
// Flag shrunk recordings
$.getJSON('/cgi-bin/browse/shrunk.jim?dir=' + encodeURIComponent(dir),
shrunk_callback);
});
//$(document).delegate('#channelpage', 'pageinit', function() {
//console.log('pageinit for channelpage');
//});

36
var/mongoose/html/m/search.jim Executable file
View File

@@ -0,0 +1,36 @@
#!/mod/bin/jimsh
package require cgi
source /mod/webif/lib/setup
require epg.class
source include/epgcell.jim
cgi_input
set term [cgi_get epgsearchterm ""]
set full [cgi_get epgsearchfull 0]
mheader
source include/searchstyle.jim
puts "<ul data-role=listview data-filter=false><li>"
source include/searchform.jim
puts "</li>"
set cmd search
if {$full} { set cmd searchall }
if {$term ne ""} {
#set records [epg fetch $cmd -extra $term]
set records [epg dbfetch $cmd -term $term]
} else {
set records {}
}
foreach e $records {
epgcell $e
}
puts "</ul>"
mfooter

View File

@@ -1,4 +1,32 @@
html body
{
line-height: 1.55em;
font-family: "Lucida Grande", verdana, lucida, helvetica, sans-serif;
background-color: #f8f8f8;
margin: 1em;
padding: 0;
font-size: small;
}
html>body
{
font-size: small;
}
p.datetime
{
font-style: italic;
}
img.progress
{
background: transparent url(/img/percentback.png) top left no-repeat;
padding: 0;
margin: 0;
background-position: 1px 0;
}
.va
{
vertical-align: middle;
@@ -37,3 +65,32 @@ li.sticky
top: 0;
}
table.keyval
{
position: relative;
left: -10px;
}
table.keyval th, th.key
{
background: #ccff99;
font-weight: bold;
text-align: right;
color: black;
}
table.keyval td
{
background: #ffffcc;
color: black;
}
.also
{
font-size: 0.8em;
font-style: italic;
color: #333;
background: transparent;
text-decoration: none;
}

View File

@@ -2,7 +2,7 @@
package require cgi
source /mod/webif/lib/setup
require rsv.class progressbar
require rsv.class progressbar epg.class
puts "Content-Type: text/html"
puts ""
@@ -15,46 +15,17 @@ set slot [cgi_get slot 0]
set event [rsv slot $table $slot]
set rsvicon [$event icon]
if {$rsvicon ne ""} {
set rsvicon "<img src='/images/$rsvicon' height=20>"
if {[$event get ersvtype] == 3} {
if {[$event padded]} {
set padding "<- [expr [$event get ulPreOffset] / 60], [expr [$event get ulPostOffset] / 60] ->"
append rsvicon \
"<img src=/img/pad.png height=20
title=\"$padding\" alt=\"$padding\">"
} else {
append rsvicon \
"<img src=/img/ar.png height=20>"
}
}
}
set RKIcon [$event RKIcon]
if {$RKIcon ne ""} {
set RKIcon "<img src='/images/$RKIcon' height=20>"
}
if {[$event get ucRecKind] == 4} {
set series 1
} else {
set series 0
}
puts "
<table class=keyval>
<tr>
<th>Event [$event get ulslot]</th>
<td class=va>$rsvicon $RKIcon</td>
<td class=va>[join [$event iconset] ""]</td>
</tr><tr>
<th>Channel</th>
<td class=va>
"
if {[$event get usLcn] ne ""} {
puts "
<img class=va width=50
src=\"/img/channels/[$event channel_name].png\">
puts "[epg channelicon [$event channel_name] 50]
- [$event get usLcn] - [$event channel_name]
"
}
@@ -104,10 +75,10 @@ puts "
set crid [join [lrange [split [$event get szCRID] /] 1 end]]
if {$crid != ""} {
puts "<tr><th>"
if $series { puts "Series" } else { puts "Event" }
if {[$event isseries]} { puts "Series" } else { puts "Event" }
puts " CRID</th><td>"
puts -nonewline "<a href=/cgi-bin/epg/search.jim?"
if $series { puts -nonewline "s" }
if {[$event isseries]} { puts -nonewline "s" }
puts "crid=/$crid>
<img border=0 src=/images/421_1_00_CH_Title_2R_Arrow.png
height=14>

View File

@@ -56,42 +56,8 @@ proc eventrow {event {table TBL_RESERVATION}} {
ar=[expr ! [$event padded]]"
altrow $attrs
set rsvicon [$event icon]
set RKIcon [$event RKIcon]
if {[$event get ucRecKind] == 4} {
set series 1
} else {
set series 0
}
if {$rsvicon ne ""} {
set rsvicon "<img src='/images/$rsvicon' height=20>"
if {[$event get ersvtype] == 3} {
if {[$event padded]} {
set padding "<- [expr [$event get ulPreOffset] / 60], [expr [$event get ulPostOffset] / 60] ->"
append rsvicon \
"<img src=/img/pad.png height=20
title=\"$padding\" alt=\"$padding\">"
} else {
append rsvicon \
"<img src=/img/ar.png height=20>"
}
}
}
if {$RKIcon ne ""} {
set RKIcon "<img src='/images/$RKIcon' height=20>"
}
if {$table eq "pending"} {
switch [$event get action] {
0 { set icon "add" }
1 { set icon "close" }
2 { set icon "ar" }
3 { set icon "pad" }
4 { set icon "folder" }
}
puts "<td align=center>
<img class=va width=30 src=/img/$icon.png></td>"
puts "<td align=center>[$event pendingicon]</td>"
}
puts "<td>[$event get ulslot]</td>"
@@ -127,7 +93,7 @@ proc eventrow {event {table TBL_RESERVATION}} {
set ds "[clock format $s -format "%a %d %b %Y"]<br>
[clock format $s -format "%H:%M %Z"]"
if { $n > $e && [$event get ersvtype] <= 3} {
if {$n > $e && [$event get ersvtype] <= 3} {
puts "<td nowrap class=va
alt=\"$ds\" title=\"$ds\">
--- -- --- ----<br>--:--"
@@ -147,7 +113,7 @@ proc eventrow {event {table TBL_RESERVATION}} {
puts "[clock format [$event get nduration] -format %T]</td>"
}
puts "<td nowrap>$rsvicon $RKIcon</td>"
puts "<td nowrap>[join [$event iconset] ""]</td>"
puts "<td><a href=# class=smenu sid=[$event get ulslot]>
<img border=0 src=/img/more_btn.gif></a></td>"

View File

@@ -3,7 +3,13 @@
source /mod/webif/lib/setup
require settings.class
proc menuitem {title icon link {width 217} {height 0} {extra ""}} {
proc menuitem {title icon link {width 217} {height 0} {extra ""}} {{num 0}} {
incr num
if {$title eq ""} return
if {$num > 4} {
puts {</div><div style="clear: both; padding-top: 1em">}
set num 0
}
if {$extra ne ""} { append extra " " }
puts -nonewline "
<div class=left>
@@ -42,7 +48,9 @@ if {[file exists "/mod/bin/ir"]} {
menuitem "Remote" "/img/remote.png" /plugin/ir/remote.jim 217 228
}
puts {</div><div style="clear: both; padding-top: 1em">}
if {[[settings] nomobile] eq "0"} {
menuitem "Mobile Version" "/img/mobile.png" /m/ 217 228
}
menuitem "Service Management" "/img/spanner.png" \
/services.shtml 217 228
@@ -50,8 +58,7 @@ menuitem "Package Management" "/img/packages.png" \
/pkg/index.shtml 217 228
menuitem "Settings" "/images/326_1_00_Menu_Settings.png" \
/cgi-bin/settings.jim 217 228
menuitem "Diagnostics" "/img/diagnostics.png" \
/diag/diag.jim 217 228
puts {</div>}

View File

@@ -0,0 +1,54 @@
require system.class
#if {![exists -proc class]} { package require oo }
#class browse {}
set _flatten [system pkginst flatten]
proc _addicon {img {hover ""} {class va}} {
set icon "<img src=$img class=\"$class\" height=21"
if {$hover ne ""} {
append icon " alt=\"$hover\" title=\"$hover\""
}
append icon ">"
return $icon
}
proc {dir iconset} {dir} {
set icons {}
set attrs {}
set noflat 0
if $::_flatten {
if {[string match {\[*\]} [file tail $dir]]} { set noflat 1 }
if {[file exists "$dir/.noflatten"]} { set noflat 1 }
if $noflat { lappend icons \
[_addicon "/img/flat-tyre.png" "No-flatten" }
lappend attrs "noflat=$noflat"
}
set autoshrink 0
if {[file exists "$dir/.autoshrink"]} {
set autoshrink 1
lappend icons [_addicon "/img/compress.png" "Auto-shrink"]
lappend attrs "autoshrink=$autoshrink"
}
set autodedup 0
if {[file exists "$dir/.autodedup"]} {
set autodedup 1
lappend icons [_addicon "/img/dedup.png" "Auto-dedup"]
lappend attrs "autodedup=$autodedup"
}
set autodecrypt 0
if {[file exists "$dir/.autodecrypt"]} {
set autodecrypt 1
lappend icons [_addicon "/img/decrypt.png" "Auto-decrypt"]
lappend attrs "autodecrypt=$autodecrypt"
}
return [list $icons $attrs]
}

View File

@@ -3,7 +3,7 @@ source /mod/webif/lib/setup
if {![exists -proc class]} { package require oo }
if {![exists -proc sqlite3.open]} { package require sqlite3 }
require settings.class progressbar rsv.class
require settings.class progressbar rsv.class mwildcard
set ::epgpath /mnt/hd1/dvbepg/epg.dat
@@ -155,6 +155,13 @@ epg method get_channel_info {} {
}
}
epg method copy_channel_info {s} {
set channel_num [$s get channel_num]
set channel_name [$s get channel_name]
set channel_crid [$s get channel_crid]
set channel_hsvc [$s get channel_hsvc]
}
epg method get_rsv {} {
if {$hsvc == 0} { $self get_channel_info }
if {$hsvc == 0} { return }
@@ -334,6 +341,7 @@ proc {epg exec} {mode args} {
proc {epg dbfetch} {mode args} {
set records {}
set extra ""
set params {}
set select "
select distinct *,
@@ -384,6 +392,18 @@ proc {epg dbfetch} {mode args} {
append q "and f.eFavGroup = $v "
set sort "order by f.favIdx, start"
}
-term {
set v [mwildcard $v]
append q "and ("
append q "e.name like '%s' "
lappend params "%$v%"
if {$mode eq "searchall"} {
append q \
"or e.text like '%s' "
lappend params "%$v%"
}
append q ") "
}
default { error "Invalid option, $arg" }
}
}
@@ -394,10 +414,12 @@ proc {epg dbfetch} {mode args} {
#puts "QUERY -$query-"
set records {}
catch {
foreach rec [$::channeldb query $query] {
if {[catch {
foreach rec [$::channeldb query $query {*}$params] {
lappend records [epg new $rec]
}
} msg]} {
puts "MSG: $msg"
}
return $records
}

View File

@@ -0,0 +1,5 @@
proc mwildcard {v} {
return [string map {"%" "\\%" "*" "%" "_" "\\_" "?" "_"} $v]
}

View File

@@ -69,6 +69,10 @@ rsv method clear_ulslot {} {
set ulslot -1
}
rsv method isseries {} {
if {$ucRecKind == 4} { return 1 } else { return 0 }
}
rsv method _strip {str} {
if {[string range $str 1 2] eq "i7"} {
set str [string range $str 3 end]
@@ -143,6 +147,41 @@ rsv method RKIcon {} {
return $RKIcon
}
rsv method pendingicon {{width 30}} {
switch $action {
0 { set icon "add" }
1 { set icon "close" }
2 { set icon "ar" }
3 { set icon "pad" }
4 { set icon "folder" }
}
return "<img class=va width=$width src=/img/$icon.png>"
}
rsv method iconset {{height 20}} {
set iconlist {}
set icon [$self icon]
if {$icon ne ""} {
lappend iconlist "<img src='/images/$icon' height=$height>"
if {$ersvtype == 3} {
if {[$self padded]} {
set padding "<- [expr $ulPreOffset / 60], [expr $ulPostOffset / 60] ->"
lappend iconlist \
"<img src=/img/pad.png height=$height
title=\"$padding\" alt=\"$padding\">"
} else {
lappend iconlist \
"<img src=/img/ar.png height=$height>"
}
}
}
set icon [$self RKIcon]
if {$icon ne ""} {
lappend iconlist "<img src='/images/$icon' height=$height>"
}
return $iconlist
}
rsv method set_delete {} {
set action 1
}

View File

@@ -23,6 +23,7 @@ class settings {
smtp_server ""
pkgdev 0
notoolbar 0
nomobile 0
}
settings method hostname {{name ""}} {
@@ -121,6 +122,10 @@ settings method notoolbar {{val -1}} {
return [$self _nval_setting notoolbar $val]
}
settings method nomobile {{val -1}} {
return [$self _nval_setting nomobile $val]
}
settings method sortorder {{val -1}} {
return [$self _nval_setting sortorder $val]
}