From 0a2c7966b5340cc8aca7284a254204dd306ff03d Mon Sep 17 00:00:00 2001 From: hummypkg Date: Tue, 30 Oct 2012 18:58:54 +0000 Subject: [PATCH] checkpoint git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1182 2a923420-c742-0410-a762-8d5b09965624 --- var/mongoose/cgi-bin/browse.jim | 38 +--- var/mongoose/cgi-bin/epg/search.jim | 2 +- var/mongoose/cgi-bin/settings.jim | 13 ++ var/mongoose/cgi-bin/settings.js | 19 ++ var/mongoose/cgi-bin/status.jim | 2 +- var/mongoose/html/diag/diag.jim | 1 + var/mongoose/html/img/desktop.png | Bin 0 -> 24780 bytes var/mongoose/html/img/mobile.png | Bin 0 -> 9831 bytes var/mongoose/html/index.shtml | 4 +- var/mongoose/html/m/browse.jim | 184 ++++++++++++++++++++ var/mongoose/html/m/channel.jim | 23 +-- var/mongoose/html/m/event_d.jim | 155 +++++++++++++++++ var/mongoose/html/m/include/epgcell.jim | 37 ++++ var/mongoose/html/m/include/searchform.jim | 32 ++++ var/mongoose/html/m/include/searchstyle.jim | 8 + var/mongoose/html/m/index.jim | 20 ++- var/mongoose/html/m/lib/footer.jim | 18 +- var/mongoose/html/m/lib/header.jim | 33 +++- var/mongoose/html/m/schedule.jim | 85 +++++++++ var/mongoose/html/m/schedule_d.jim | 118 +++++++++++++ var/mongoose/html/m/script.js | 122 ++++++++++++- var/mongoose/html/m/search.jim | 36 ++++ var/mongoose/html/m/style.css | 57 ++++++ var/mongoose/html/sched/info.jim | 39 +---- var/mongoose/html/sched/sched.jim | 40 +---- var/mongoose/include/menuicons.jim | 15 +- var/mongoose/lib/browse.class | 54 ++++++ var/mongoose/lib/epg.class | 28 ++- var/mongoose/lib/mwildcard | 5 + var/mongoose/lib/rsv.class | 39 +++++ var/mongoose/lib/settings.class | 5 + 31 files changed, 1080 insertions(+), 152 deletions(-) create mode 100644 var/mongoose/html/img/desktop.png create mode 100644 var/mongoose/html/img/mobile.png create mode 100755 var/mongoose/html/m/browse.jim create mode 100755 var/mongoose/html/m/event_d.jim create mode 100755 var/mongoose/html/m/include/epgcell.jim create mode 100644 var/mongoose/html/m/include/searchform.jim create mode 100644 var/mongoose/html/m/include/searchstyle.jim create mode 100755 var/mongoose/html/m/schedule.jim create mode 100755 var/mongoose/html/m/schedule_d.jim create mode 100755 var/mongoose/html/m/search.jim create mode 100644 var/mongoose/lib/browse.class create mode 100644 var/mongoose/lib/mwildcard diff --git a/var/mongoose/cgi-bin/browse.jim b/var/mongoose/cgi-bin/browse.jim index 5bf6479..aa2650d 100755 --- a/var/mongoose/cgi-bin/browse.jim +++ b/var/mongoose/cgi-bin/browse.jim @@ -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 "
" 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 " - 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 " @@ -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) diff --git a/var/mongoose/cgi-bin/epg/search.jim b/var/mongoose/cgi-bin/epg/search.jim index c68d83e..9b35144 100755 --- a/var/mongoose/cgi-bin/epg/search.jim +++ b/var/mongoose/cgi-bin/epg/search.jim @@ -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 {} } diff --git a/var/mongoose/cgi-bin/settings.jim b/var/mongoose/cgi-bin/settings.jim index 33895f3..bba63ce 100755 --- a/var/mongoose/cgi-bin/settings.jim +++ b/var/mongoose/cgi-bin/settings.jim @@ -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 "> " +puts -nonewline " + + Mobile link on main page? + +
+ + +" + puts "
diff --git a/var/mongoose/cgi-bin/settings.js b/var/mongoose/cgi-bin/settings.js index 1a05b18..a395f3f 100644 --- a/var/mongoose/cgi-bin/settings.js +++ b/var/mongoose/cgi-bin/settings.js @@ -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'); + }); + }); }); diff --git a/var/mongoose/cgi-bin/status.jim b/var/mongoose/cgi-bin/status.jim index 639f746..a59ce8f 100755 --- a/var/mongoose/cgi-bin/status.jim +++ b/var/mongoose/cgi-bin/status.jim @@ -135,7 +135,7 @@ if {![system instandby] && $play < 1} { if {[system instandby]} { if {$runmode eq "cgi"} { lappend output [concat \ - "\n" + "\n" \ " \n" \ " System is in standby.\n" \ diff --git a/var/mongoose/html/diag/diag.jim b/var/mongoose/html/diag/diag.jim index 558c848..2364337 100755 --- a/var/mongoose/html/diag/diag.jim +++ b/var/mongoose/html/diag/diag.jim @@ -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 " diff --git a/var/mongoose/html/img/desktop.png b/var/mongoose/html/img/desktop.png new file mode 100644 index 0000000000000000000000000000000000000000..f757c059806b4a5a6c909b2079da2e6a986dcd51 GIT binary patch literal 24780 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 XYs{ -
+
Status... @@ -19,8 +19,6 @@ $(document).ready(function() { - -
diff --git a/var/mongoose/html/m/browse.jim b/var/mongoose/html/m/browse.jim new file mode 100755 index 0000000..7ab0712 --- /dev/null +++ b/var/mongoose/html/m/browse.jim @@ -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 "\"$hover\"" +} + +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 "
  • + +

    $bfile

    + " + if {[llength $icons]} { + puts "

    [join $icons ""]

    " + } + puts "

    + +

    +
  • + " +} + +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 "
  • + +

    $bfile

    +

    + $sz +

    +

    + " + + # 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 "

  • " +} + +mheader + +puts " + $dir +
      +
    • $dir +

      + +

      +
    • +" + +# 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 "
    " + +mfooter + diff --git a/var/mongoose/html/m/channel.jim b/var/mongoose/html/m/channel.jim index 8d4761d..1b33298 100755 --- a/var/mongoose/html/m/channel.jim +++ b/var/mongoose/html/m/channel.jim @@ -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"] " } - set et $($st + [$e get duration]) - puts " -
  • -

    [$e get name]

    -

    [$e get text]

    - " - set guidance [$e get warning] - if {$guidance ne ""} { - puts "

    - $guidance

    " - } - puts " -

    - [clock format $st -format "%H:%M"] - - [clock format $et -format "%H:%M"] -

    -
  • - " + + epgcell $e 1 } puts "" diff --git a/var/mongoose/html/m/event_d.jim b/var/mongoose/html/m/event_d.jim new file mode 100755 index 0000000..2d59f71 --- /dev/null +++ b/var/mongoose/html/m/event_d.jim @@ -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 " + +
    +

    EPG Event

    +
    + +
    + + + + + + + + + + + + + + + + + +" + +if {[$record get warning] != ""} { + puts " + + + + + " +} + +if {[$record get event_crid] != ""} { + puts " + + + + " +} + +if {[$record get series_crid] != ""} { + puts " + + + + " +} + +if {[$record get rec_crid] != ""} { + set rec [$record recommended] + if {$rec != ""} { + puts "" + } +} + +puts " + + + +
    Programme[$record get name]
    Synopsis[$record get text]
    Start[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 "
        " + puts -nonewline "Also: " + puts -nonewline "" + 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 "" + puts "" +} + +puts " +
    Duration[clock format [$record get duration] -format %T] +" +if {[$record showing]} { + puts [progressbar [$record percent]] +} +puts " +
    Type[$record get content_type] ([$record get content_code])
    Warning[$record get warning]
    CRID + [$record get channel_crid][$record get event_crid] +
    Series CRID + [$record get channel_crid][$record get series_crid] +
    Recommends + [$rec get name] + ([$rec get channel_crid][$rec get event_crid]) +
    + [$record channel_icon 50] + [join [$record icon_set] " "] +
    +" + +# 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 " + Record Series" + } + if {$rec > 0} { + puts " + Record Programme" + puts " + Set Reminder" + } +} +puts "Close" + +puts "
    " + +epg cleanup + +mfooter + diff --git a/var/mongoose/html/m/include/epgcell.jim b/var/mongoose/html/m/include/epgcell.jim new file mode 100755 index 0000000..ea3d34b --- /dev/null +++ b/var/mongoose/html/m/include/epgcell.jim @@ -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 " +
  • + [$e channel_icon 80] +

    [$e get name]

    +

    + [clock format $st -format {%a %d %b %Y %H:%M}] + - + [clock format $et -format {%H:%M}] +

    +

    + [join [$e icon_set 14] ""] + [$e get text]

    + " + set guidance [$e get warning] + if {$guidance ne ""} { + puts "

    + $guidance

    " + } + if {[$e showing]} { + puts "

    [progressbar [$e percent]]

    " + } + if {$aside} { + puts " +

    + [clock format $st -format "%H:%M"] - + [clock format $et -format "%H:%M"] +

    + " + } +} + diff --git a/var/mongoose/html/m/include/searchform.jim b/var/mongoose/html/m/include/searchform.jim new file mode 100644 index 0000000..5bb5ad9 --- /dev/null +++ b/var/mongoose/html/m/include/searchform.jim @@ -0,0 +1,32 @@ + +puts -nonewline " + + + +
    + + + +
    + +" + diff --git a/var/mongoose/html/m/include/searchstyle.jim b/var/mongoose/html/m/include/searchstyle.jim new file mode 100644 index 0000000..e974dee --- /dev/null +++ b/var/mongoose/html/m/include/searchstyle.jim @@ -0,0 +1,8 @@ + +puts -nonewline " + +" + diff --git a/var/mongoose/html/m/index.jim b/var/mongoose/html/m/index.jim index deb7616..634120a 100755 --- a/var/mongoose/html/m/index.jim +++ b/var/mongoose/html/m/index.jim @@ -5,6 +5,8 @@ require settings.class plugin mheader +source include/searchstyle.jim + puts "
    " diff --git a/var/mongoose/html/m/lib/footer.jim b/var/mongoose/html/m/lib/footer.jim index dc463ab..85196a9 100755 --- a/var/mongoose/html/m/lib/footer.jim +++ b/var/mongoose/html/m/lib/footer.jim @@ -1,15 +1,17 @@ #!/mod/bin/jimsh -puts { -
  • +puts {
    } -
    -} +if {!$_dialog} { + puts "
    " -if {![catch { - set rendertime [expr [expr [clock milliseconds] - $renderstart] / 1000.0] - }]} { - puts "Rendered in: $rendertime seconds" + if {![catch { + set rendertime $(([clock milliseconds] - $renderstart) / 1000.0) + }]} { + puts " + Rendered in: $rendertime seconds" + } + puts "
    " } puts { diff --git a/var/mongoose/html/m/lib/header.jim b/var/mongoose/html/m/lib/header.jim index 1dee4b3..ebe41b2 100755 --- a/var/mongoose/html/m/lib/header.jim +++ b/var/mongoose/html/m/lib/header.jim @@ -34,23 +34,44 @@ puts { } -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 " - +set _dialog 0 +if {[string range $pageid end-1 end] eq "_d"} { + set _dialog 1 +} +puts "" + +if {$_dialog} { + puts "
    \n" +} else { + puts "
    - +
    + +
    +
    + +
    +
    +

    [system model] ([system hostname])

    -
    -" +} set renderstart [clock milliseconds] diff --git a/var/mongoose/html/m/schedule.jim b/var/mongoose/html/m/schedule.jim new file mode 100755 index 0000000..16e7c45 --- /dev/null +++ b/var/mongoose/html/m/schedule.jim @@ -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 "
  • $title ($num)
  • \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 "" + } + if {$rsvicon ne ""} { + append icons "" + } + if {$RKIcon ne ""} { + append icons "" + } + + 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 "--:--:--
    + (Last: $last)" + } else { + set ds $last + set dur "[clock format [$event get nduration] \ + -format %T]" + } + puts " +
  • + [epg channelicon [$event channel_name] 80] +

    $icons $name

    +

    + $ds $dur +

    + "; + if {$recording} { + set perc $(($n - $s) * 100 / $d) + puts "

    + + [progressbar $perc] +

    + " + } + puts "
  • "; + } +} + +mheader + +puts "
      " +eventtab "pending" "Pending Events" +eventtab "TBL_RESERVATION" "Active Events" +puts "
    " + +mfooter + diff --git a/var/mongoose/html/m/schedule_d.jim b/var/mongoose/html/m/schedule_d.jim new file mode 100755 index 0000000..f91cac7 --- /dev/null +++ b/var/mongoose/html/m/schedule_d.jim @@ -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 " + +
    +

    Scheduled Event

    +
    + +
    +" + +puts " + + + + + + + + + + + + +" + +set s [$event get nsttime] +set d [$event get nduration] +set e $($s + $d) +set n [clock seconds] + +if { $n > $e } { + puts " + + + + +" + +set crid [join [lrange [split [$event get szCRID] /] 1 end]] +if {$crid != ""} { + puts "" +} +puts "" +puts "" +puts "
    Event [$event get ulslot][join [$event iconset] ""]
    Channel +" +if {[$event get usLcn] ne ""} { + puts "[epg channelicon [$event channel_name] 50] + - [$event get usLcn] - [$event channel_name] + " +} + +puts " +
    Event Name[$event name]" +if {[$event get ucRecKind] == 4 && [$event name] ne [$event folder]} { + puts "(Folder: [$event folder])" +} + +puts "
    Start" +} else { + puts "" +} +puts "[clock format $s -format "%a %d %b %Y"] + [clock format $s -format "%H:%M %Z"]" + +if {$d > 0 && $n > $s && $n < $e} { + puts "
    " + set perc [expr [expr $n - $s] * 100 / $d] + puts "" + puts [progressbar $perc] +} + +puts " +
    Duration[clock format [$event get nduration] -format %T]
    " + if {[$event isseries]} { puts "Series" } else { puts "Event" } + puts " CRID + + [$event get szCRID] +
    Events" +set flag 0 +foreach ev [split [$event get szEventToRecord] "|"] { + if {$ev eq ""} { continue } + set ev [string range $ev 1 end] + if {$flag} { puts "
    " } + incr flag + set crid [join [lrange [split $ev /] 1 end]] + puts "$ev" +} +puts "
    Accepted" +if {[$event get aulEventToRecordInfo] ne ""} { + puts "Yes" +} +puts "
    " + +# Buttons +puts "Cancel Event" +puts "Close" + +epg cleanup + +mfooter + diff --git a/var/mongoose/html/m/script.js b/var/mongoose/html/m/script.js index 28e5380..7958b25 100644 --- a/var/mongoose/html/m/script.js +++ b/var/mongoose/html/m/script.js @@ -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'); -//}); diff --git a/var/mongoose/html/m/search.jim b/var/mongoose/html/m/search.jim new file mode 100755 index 0000000..61519d5 --- /dev/null +++ b/var/mongoose/html/m/search.jim @@ -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 "
    • " +source include/searchform.jim +puts "
    • " + +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 "
    " + +mfooter + diff --git a/var/mongoose/html/m/style.css b/var/mongoose/html/m/style.css index af953dc..e46c5e0 100644 --- a/var/mongoose/html/m/style.css +++ b/var/mongoose/html/m/style.css @@ -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; +} + diff --git a/var/mongoose/html/sched/info.jim b/var/mongoose/html/sched/info.jim index f2d5f18..2691754 100755 --- a/var/mongoose/html/sched/info.jim +++ b/var/mongoose/html/sched/info.jim @@ -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 "" - if {[$event get ersvtype] == 3} { - if {[$event padded]} { - set padding "<- [expr [$event get ulPreOffset] / 60], [expr [$event get ulPostOffset] / 60] ->" - append rsvicon \ - "\"$padding\"" - } else { - append rsvicon \ - "" - } - } -} - -set RKIcon [$event RKIcon] -if {$RKIcon ne ""} { - set RKIcon "" -} - -if {[$event get ucRecKind] == 4} { - set series 1 -} else { - set series 0 -} - puts " - + " + puts "" } puts "" @@ -127,7 +93,7 @@ proc eventrow {event {table TBL_RESERVATION}} { set ds "[clock format $s -format "%a %d %b %Y"]
    [clock format $s -format "%H:%M %Z"]" - if { $n > $e && [$event get ersvtype] <= 3} { + if {$n > $e && [$event get ersvtype] <= 3} { puts "" } - puts "" + puts "" puts "" diff --git a/var/mongoose/include/menuicons.jim b/var/mongoose/include/menuicons.jim index 5b0d088..4b75d7e 100755 --- a/var/mongoose/include/menuicons.jim +++ b/var/mongoose/include/menuicons.jim @@ -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 {
    } + set num 0 + } if {$extra ne ""} { append extra " " } puts -nonewline "
    @@ -42,7 +48,9 @@ if {[file exists "/mod/bin/ir"]} { menuitem "Remote" "/img/remote.png" /plugin/ir/remote.jim 217 228 } -puts {
    } +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 {
    } - diff --git a/var/mongoose/lib/browse.class b/var/mongoose/lib/browse.class new file mode 100644 index 0000000..fc1b332 --- /dev/null +++ b/var/mongoose/lib/browse.class @@ -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 "\"$hover\"" + 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] +} + diff --git a/var/mongoose/lib/epg.class b/var/mongoose/lib/epg.class index 1642e2b..8f5811a 100644 --- a/var/mongoose/lib/epg.class +++ b/var/mongoose/lib/epg.class @@ -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 } diff --git a/var/mongoose/lib/mwildcard b/var/mongoose/lib/mwildcard new file mode 100644 index 0000000..d9f8fc9 --- /dev/null +++ b/var/mongoose/lib/mwildcard @@ -0,0 +1,5 @@ + +proc mwildcard {v} { + return [string map {"%" "\\%" "*" "%" "_" "\\_" "?" "_"} $v] +} + diff --git a/var/mongoose/lib/rsv.class b/var/mongoose/lib/rsv.class index db85a25..25653a1 100755 --- a/var/mongoose/lib/rsv.class +++ b/var/mongoose/lib/rsv.class @@ -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 "" +} + +rsv method iconset {{height 20}} { + set iconlist {} + set icon [$self icon] + if {$icon ne ""} { + lappend iconlist "" + if {$ersvtype == 3} { + if {[$self padded]} { + set padding "<- [expr $ulPreOffset / 60], [expr $ulPostOffset / 60] ->" + lappend iconlist \ + "\"$padding\"" + } else { + lappend iconlist \ + "" + } + } + } + set icon [$self RKIcon] + if {$icon ne ""} { + lappend iconlist "" + } + return $iconlist +} + rsv method set_delete {} { set action 1 } diff --git a/var/mongoose/lib/settings.class b/var/mongoose/lib/settings.class index f256a7d..ee13603 100644 --- a/var/mongoose/lib/settings.class +++ b/var/mongoose/lib/settings.class @@ -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] }
    Event [$event get ulslot]$rsvicon $RKIcon[join [$event iconset] ""]
    Channel " if {[$event get usLcn] ne ""} { - puts " - + 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 "
    " - if $series { puts "Series" } else { puts "Event" } + if {[$event isseries]} { puts "Series" } else { puts "Event" } puts " CRID" puts -nonewline " diff --git a/var/mongoose/html/sched/sched.jim b/var/mongoose/html/sched/sched.jim index c299c75..3dba1d5 100755 --- a/var/mongoose/html/sched/sched.jim +++ b/var/mongoose/html/sched/sched.jim @@ -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 "" - if {[$event get ersvtype] == 3} { - if {[$event padded]} { - set padding "<- [expr [$event get ulPreOffset] / 60], [expr [$event get ulPostOffset] / 60] ->" - append rsvicon \ - "\"$padding\"" - } else { - append rsvicon \ - "" - } - } - } - if {$RKIcon ne ""} { - set RKIcon "" - } - 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 " - [$event pendingicon][$event get ulslot] --- -- --- ----
    --:--" @@ -147,7 +113,7 @@ proc eventrow {event {table TBL_RESERVATION}} { puts "[clock format [$event get nduration] -format %T]
    $rsvicon $RKIcon[join [$event iconset] ""]