forked from hummypkg/webif
checkpoint
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1182 2a923420-c742-0410-a762-8d5b09965624
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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 {}
|
||||
}
|
||||
|
||||
@@ -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)>
|
||||
|
||||
@@ -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');
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
@@ -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" \
|
||||
|
||||
@@ -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>
|
||||
|
||||
BIN
var/mongoose/html/img/desktop.png
Normal file
BIN
var/mongoose/html/img/desktop.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 24 KiB |
BIN
var/mongoose/html/img/mobile.png
Normal file
BIN
var/mongoose/html/img/mobile.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 9.6 KiB |
@@ -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
184
var/mongoose/html/m/browse.jim
Executable 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
|
||||
|
||||
@@ -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
155
var/mongoose/html/m/event_d.jim
Executable 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> "
|
||||
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] " "]
|
||||
</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
|
||||
|
||||
37
var/mongoose/html/m/include/epgcell.jim
Executable file
37
var/mongoose/html/m/include/epgcell.jim
Executable 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>
|
||||
"
|
||||
}
|
||||
}
|
||||
|
||||
32
var/mongoose/html/m/include/searchform.jim
Normal file
32
var/mongoose/html/m/include/searchform.jim
Normal 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>
|
||||
"
|
||||
|
||||
8
var/mongoose/html/m/include/searchstyle.jim
Normal file
8
var/mongoose/html/m/include/searchstyle.jim
Normal file
@@ -0,0 +1,8 @@
|
||||
|
||||
puts -nonewline "
|
||||
<style>
|
||||
.ui-field-contain .ui-btn.ui-submit { width: auto; }
|
||||
.ui-field-contain { margin: 0 }
|
||||
</style>
|
||||
"
|
||||
|
||||
@@ -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>"
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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]
|
||||
|
||||
|
||||
85
var/mongoose/html/m/schedule.jim
Executable file
85
var/mongoose/html/m/schedule.jim
Executable 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
|
||||
|
||||
118
var/mongoose/html/m/schedule_d.jim
Executable file
118
var/mongoose/html/m/schedule_d.jim
Executable 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
|
||||
|
||||
@@ -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
36
var/mongoose/html/m/search.jim
Executable 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
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>"
|
||||
|
||||
@@ -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>}
|
||||
|
||||
|
||||
54
var/mongoose/lib/browse.class
Normal file
54
var/mongoose/lib/browse.class
Normal 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]
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
5
var/mongoose/lib/mwildcard
Normal file
5
var/mongoose/lib/mwildcard
Normal file
@@ -0,0 +1,5 @@
|
||||
|
||||
proc mwildcard {v} {
|
||||
return [string map {"%" "\\%" "*" "%" "_" "\\_" "?" "_"} $v]
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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]
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user