added in popup programming info box
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif@167 2a923420-c742-0410-a762-8d5b09965624
|
@ -0,0 +1,100 @@
|
|||
#!/mod/bin/jimsh
|
||||
|
||||
package require cgi
|
||||
source /mod/var/mongoose/lib/epg.class
|
||||
|
||||
puts "Content-Type: text/html"
|
||||
puts ""
|
||||
|
||||
cgi_input
|
||||
#cgi_dump
|
||||
|
||||
set service 0
|
||||
catch { set service [dict get $_cgi service] }
|
||||
set event 0
|
||||
catch { set event [dict get $_cgi event] }
|
||||
if {! [dict exists $_cgi bare]} {
|
||||
source /mod/var/mongoose/html/lib/header.jim
|
||||
}
|
||||
|
||||
#set service 8384
|
||||
#set event 25293
|
||||
|
||||
set record [lindex [epg fetch dump -service $service -event $event] 0]
|
||||
|
||||
puts "
|
||||
<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}]</td>
|
||||
</tr><tr>
|
||||
<th>Duration</th>
|
||||
<td>[clock format [$record get duration] -format %T]</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>
|
||||
<a href=/cgi-bin/epg_search.jim?scrid=[$record get series_crid]>
|
||||
[$record get channel_crid][$record get series_crid]
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
"
|
||||
}
|
||||
|
||||
if {[$record get rec_crid] != ""} {
|
||||
set rec [$record recommended]
|
||||
if {$rec != ""} {
|
||||
puts "<tr><th>Recommends</th><td>
|
||||
<a href=/cgi-bin/epg_search.jim?crid=[$rec get event_crid]>
|
||||
[$rec get name]
|
||||
([$rec get channel_crid][$rec get event_crid])
|
||||
</a>
|
||||
</td></tr>"
|
||||
}
|
||||
}
|
||||
|
||||
puts "
|
||||
<tr>
|
||||
<td colspan=2>
|
||||
[$record icon_set]
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
"
|
||||
|
||||
epg cleanup
|
||||
if {! [dict exists $_cgi bare]} {
|
||||
source /mod/var/mongoose/html/lib/footer.jim
|
||||
}
|
||||
|
|
@ -22,6 +22,10 @@ set cmd "search"
|
|||
if {[dict exists $_cgi full]} { set cmd "searchall" }
|
||||
set ct 0
|
||||
catch { set ct [dict get $_cgi ct] }
|
||||
set crid ""
|
||||
catch { set crid [dict get $_cgi crid] }
|
||||
set scrid ""
|
||||
catch { set scrid [dict get $_cgi scrid] }
|
||||
|
||||
puts "
|
||||
<form method=get action=/cgi-bin/epg_search.jim>
|
||||
|
@ -89,6 +93,10 @@ puts "</form>"
|
|||
|
||||
if {$ct > 0 } {
|
||||
set records [epg fetch dump -type $ct]
|
||||
} elseif {$crid ne ""} {
|
||||
set records [epg fetch dump -crid $crid]
|
||||
} elseif {$scrid ne ""} {
|
||||
set records [epg fetch dump -scrid $scrid]
|
||||
} elseif {$term ne ""} {
|
||||
set records [epg fetch $cmd -extra $term]
|
||||
}
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
package require cgi
|
||||
source /mod/var/mongoose/lib/epg.class
|
||||
source /mod/var/mongoose/lib/spinner.class
|
||||
source /mod/var/mongoose/lib/altrow
|
||||
|
||||
puts "Content-Type: text/html"
|
||||
|
@ -9,6 +10,12 @@ puts ""
|
|||
|
||||
source /mod/var/mongoose/html/lib/header.jim
|
||||
|
||||
[spinner new {
|
||||
text "Loading EPG Data..."
|
||||
size "1.2em"
|
||||
style "margin: 1em;"
|
||||
}] start
|
||||
|
||||
cgi_input
|
||||
#cgi_dump
|
||||
|
||||
|
|
|
@ -50,7 +50,7 @@
|
|||
*
|
||||
* http://docs.jquery.com/UI/Theming/API
|
||||
*
|
||||
* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Segoe%20UI,%20Arial,%20sans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=8px&bgColorHeader=817865&bgTextureHeader=12_gloss_wave.png&bgImgOpacityHeader=45&borderColorHeader=494437&fcHeader=ffffff&iconColorHeader=fadc7a&bgColorContent=feeebd&bgTextureContent=03_highlight_soft.png&bgImgOpacityContent=100&borderColorContent=8e846b&fcContent=383838&iconColorContent=d19405&bgColorDefault=fece2f&bgTextureDefault=12_gloss_wave.png&bgImgOpacityDefault=60&borderColorDefault=d19405&fcDefault=4c3000&iconColorDefault=3d3d3d&bgColorHover=ffdd57&bgTextureHover=12_gloss_wave.png&bgImgOpacityHover=70&borderColorHover=a45b13&fcHover=381f00&iconColorHover=bd7b00&bgColorActive=ffffff&bgTextureActive=05_inset_soft.png&bgImgOpacityActive=30&borderColorActive=655e4e&fcActive=0074c7&iconColorActive=eb990f&bgColorHighlight=fff9e5&bgTextureHighlight=12_gloss_wave.png&bgImgOpacityHighlight=90&borderColorHighlight=eeb420&fcHighlight=1f1f1f&iconColorHighlight=ed9f26&bgColorError=d34d17&bgTextureError=07_diagonals_medium.png&bgImgOpacityError=20&borderColorError=ffb73d&fcError=ffffff&iconColorError=ffe180&bgColorOverlay=5c5c5c&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=50&opacityOverlay=80&bgColorShadow=cccccc&bgTextureShadow=01_flat.png&bgImgOpacityShadow=30&opacityShadow=60&thicknessShadow=7px&offsetTopShadow=-7px&offsetLeftShadow=-7px&cornerRadiusShadow=8px
|
||||
* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Segoe%20UI,%20Arial,%20sans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=8px&bgColorHeader=ccff99&bgTextureHeader=12_gloss_wave.png&bgImgOpacityHeader=45&borderColorHeader=494437&fcHeader=000000&iconColorHeader=554e34&bgColorContent=ffffcc&bgTextureContent=03_highlight_soft.png&bgImgOpacityContent=100&borderColorContent=8e846b&fcContent=383838&iconColorContent=d19405&bgColorDefault=fece2f&bgTextureDefault=12_gloss_wave.png&bgImgOpacityDefault=60&borderColorDefault=d19405&fcDefault=4c3000&iconColorDefault=3d3d3d&bgColorHover=ffdd57&bgTextureHover=12_gloss_wave.png&bgImgOpacityHover=70&borderColorHover=a45b13&fcHover=381f00&iconColorHover=bd7b00&bgColorActive=ffffff&bgTextureActive=05_inset_soft.png&bgImgOpacityActive=30&borderColorActive=655e4e&fcActive=0074c7&iconColorActive=eb990f&bgColorHighlight=fff9e5&bgTextureHighlight=12_gloss_wave.png&bgImgOpacityHighlight=90&borderColorHighlight=eeb420&fcHighlight=1f1f1f&iconColorHighlight=ed9f26&bgColorError=d34d17&bgTextureError=07_diagonals_medium.png&bgImgOpacityError=20&borderColorError=ffb73d&fcError=ffffff&iconColorError=ffe180&bgColorOverlay=5c5c5c&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=50&opacityOverlay=80&bgColorShadow=cccccc&bgTextureShadow=01_flat.png&bgImgOpacityShadow=30&opacityShadow=60&thicknessShadow=7px&offsetTopShadow=-7px&offsetLeftShadow=-7px&cornerRadiusShadow=8px
|
||||
*/
|
||||
|
||||
|
||||
|
@ -59,10 +59,10 @@
|
|||
.ui-widget { font-family: Segoe UI, Arial, sans-serif; font-size: 1.1em; }
|
||||
.ui-widget .ui-widget { font-size: 1em; }
|
||||
.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Segoe UI, Arial, sans-serif; font-size: 1em; }
|
||||
.ui-widget-content { border: 1px solid #8e846b; background: #feeebd url(/img/ui/ui-bg_highlight-soft_100_feeebd_1x100.png) 50% top repeat-x; color: #383838; }
|
||||
.ui-widget-content { border: 1px solid #8e846b; background: #ffffcc url(/img/ui/ui-bg_highlight-soft_100_ffffcc_1x100.png) 50% top repeat-x; color: #383838; }
|
||||
.ui-widget-content a { color: #383838; }
|
||||
.ui-widget-header { border: 1px solid #494437; background: #817865 url(/img/ui/ui-bg_gloss-wave_45_817865_500x100.png) 50% 50% repeat-x; color: #ffffff; font-weight: bold; }
|
||||
.ui-widget-header a { color: #ffffff; }
|
||||
.ui-widget-header { border: 1px solid #494437; background: #ccff99 url(/img/ui/ui-bg_gloss-wave_45_ccff99_500x100.png) 50% 50% repeat-x; color: #000000; font-weight: bold; }
|
||||
.ui-widget-header a { color: #000000; }
|
||||
|
||||
/* Interaction states
|
||||
----------------------------------*/
|
||||
|
@ -91,7 +91,7 @@
|
|||
/* states and images */
|
||||
.ui-icon { width: 16px; height: 16px; background-image: url(/img/ui/ui-icons_d19405_256x240.png); }
|
||||
.ui-widget-content .ui-icon {background-image: url(/img/ui/ui-icons_d19405_256x240.png); }
|
||||
.ui-widget-header .ui-icon {background-image: url(/img/ui/ui-icons_fadc7a_256x240.png); }
|
||||
.ui-widget-header .ui-icon {background-image: url(/img/ui/ui-icons_554e34_256x240.png); }
|
||||
.ui-state-default .ui-icon { background-image: url(/img/ui/ui-icons_3d3d3d_256x240.png); }
|
||||
.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(/img/ui/ui-icons_bd7b00_256x240.png); }
|
||||
.ui-state-active .ui-icon {background-image: url(/img/ui/ui-icons_eb990f_256x240.png); }
|
||||
|
|
|
@ -86,6 +86,21 @@ table th
|
|||
text-align: left;
|
||||
}
|
||||
|
||||
table.keyval th
|
||||
{
|
||||
background: #ccff99;
|
||||
font-weight: bold;
|
||||
text-align: right;
|
||||
color: black;
|
||||
padding: 0.5em;
|
||||
}
|
||||
|
||||
table.keyval td
|
||||
{
|
||||
background: #ffffcc;
|
||||
color: black;
|
||||
}
|
||||
|
||||
pre
|
||||
{
|
||||
font-family: Consolas, 'Courier New', Courier, monospace;
|
||||
|
|
After Width: | Height: | Size: 1.7 KiB |
After Width: | Height: | Size: 199 B |
Before Width: | Height: | Size: 180 B |
After Width: | Height: | Size: 180 B |
After Width: | Height: | Size: 211 B |
Before Width: | Height: | Size: 178 B |
Before Width: | Height: | Size: 120 B |
Before Width: | Height: | Size: 105 B |
Before Width: | Height: | Size: 111 B |
Before Width: | Height: | Size: 110 B |
Before Width: | Height: | Size: 119 B |
After Width: | Height: | Size: 3.4 KiB |
After Width: | Height: | Size: 3.4 KiB |
After Width: | Height: | Size: 3.7 KiB |
After Width: | Height: | Size: 2.2 KiB |
After Width: | Height: | Size: 100 B |
Before Width: | Height: | Size: 101 B |
After Width: | Height: | Size: 100 B |
Before Width: | Height: | Size: 4.3 KiB After Width: | Height: | Size: 4.3 KiB |
Before Width: | Height: | Size: 4.3 KiB After Width: | Height: | Size: 4.3 KiB |
Before Width: | Height: | Size: 4.3 KiB After Width: | Height: | Size: 4.3 KiB |
Before Width: | Height: | Size: 4.3 KiB |
After Width: | Height: | Size: 5.2 KiB |
Before Width: | Height: | Size: 4.3 KiB After Width: | Height: | Size: 4.3 KiB |
After Width: | Height: | Size: 4.3 KiB |
After Width: | Height: | Size: 5.2 KiB |
|
@ -4,6 +4,9 @@ puts {
|
|||
<title>Humax HD[R] Fox T2</title>
|
||||
<link rel="shortcut icon" href=/img/favicon.ico>
|
||||
<link href=/css/style.css rel=stylesheet type=text/css>
|
||||
<link type="text/css" href="/css/jquery-ui.css" rel="Stylesheet" />
|
||||
<script type="text/javascript" src="/js/jquery.js"></script>
|
||||
<script type="text/javascript" src="/js/jquery-ui.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
}
|
||||
|
|
|
@ -3,6 +3,9 @@
|
|||
<title>Humax HD[R] Fox T2</title>
|
||||
<link rel="shortcut icon" href=/img/favicon.ico>
|
||||
<link href=/css/style.css rel=stylesheet type=text/css>
|
||||
<link type="text/css" href="/css/jquery-ui.css" rel="Stylesheet" />
|
||||
<script type="text/javascript" src="/js/jquery.js"></script>
|
||||
<script type="text/javascript" src="/js/jquery-ui.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
|
|
|
@ -2,6 +2,8 @@
|
|||
|
||||
package require sqlite3
|
||||
|
||||
source /mod/var/mongoose/lib/altrow
|
||||
|
||||
proc db_info {db_file} {
|
||||
set db [sqlite3.open $db_file]
|
||||
set tables [$db query {SELECT name FROM sqlite_master WHERE type='table' ORDER BY name}]
|
||||
|
@ -17,11 +19,11 @@ proc db_info {db_file} {
|
|||
puts "<table>"
|
||||
puts " <tr>"
|
||||
foreach column $columns {
|
||||
puts " <td>[lindex $column 3]</td>"
|
||||
puts " <th>[lindex $column 3]</th>"
|
||||
}
|
||||
puts " </tr>"
|
||||
foreach data $datas {
|
||||
puts " <tr>"
|
||||
altrow
|
||||
|
||||
for {set i 1} {$i < [llength $data]} {incr i 2} {
|
||||
puts " <td>[lindex $data $i]</td>"
|
||||
|
@ -38,3 +40,4 @@ puts {<style type="text/css">table, td, th {border-collapse:collapse; border:1px
|
|||
db_info /var/lib/humaxtv/rsv.db
|
||||
db_info /var/lib/humaxtv/setup.db
|
||||
db_info /var/lib/humaxtv/channel.db
|
||||
|
||||
|
|
|
@ -1,8 +1,43 @@
|
|||
#!/mod/bin/jimsh
|
||||
|
||||
source /mod/var/mongoose/lib/epg.class
|
||||
source /mod/var/mongoose/lib/spinner.class
|
||||
source /mod/var/mongoose/lib/altrow
|
||||
|
||||
[spinner new {
|
||||
text "Loading EPG Data..."
|
||||
size "1.2em"
|
||||
style "margin: 1em;"
|
||||
}] start
|
||||
|
||||
puts {
|
||||
<div id=dialogue></div>
|
||||
<script type=text/javascript>
|
||||
$(document).ready(function() {
|
||||
var $dialog = $('#dialogue').dialog({
|
||||
title: "Programme Details",
|
||||
modal: false,
|
||||
autoOpen: false,
|
||||
height: 500,
|
||||
width: 700,
|
||||
show: 'scale',
|
||||
hide: 'fade',
|
||||
draggable: false,
|
||||
resizable: false,
|
||||
buttons: { "Close":
|
||||
function() {$(this).dialog('close');}},
|
||||
close: function(e,u) { $('#dialogue').empty().html('<img src="/img/loading.gif" alt="loading">'); }
|
||||
});
|
||||
$('a.event').click(function(e) {
|
||||
e.preventDefault();
|
||||
var url = $(this).attr('href');
|
||||
$('#dialogue').load(url + '&bare=1');
|
||||
$dialog.dialog('open');
|
||||
});
|
||||
});
|
||||
</script>
|
||||
}
|
||||
|
||||
set start [clock milliseconds]
|
||||
set records [epg fetch dump -time [clock seconds]]
|
||||
set got [clock milliseconds]
|
||||
|
@ -25,7 +60,6 @@ proc rsort {v1 v2} {
|
|||
return -1
|
||||
}
|
||||
|
||||
set i 0
|
||||
foreach record [lsort -command rsort $records] {
|
||||
altrow
|
||||
puts "<td>[$record get channel_num]</td>"
|
||||
|
|
|
@ -26,7 +26,6 @@ puts "<th>Date/Time</th>"
|
|||
puts "<th>Mode</th>"
|
||||
puts "<th>Series ID</th>"
|
||||
puts "</tr>"
|
||||
set i 0
|
||||
foreach r $res {
|
||||
set name [string range $r(szevtname) 1 end]
|
||||
if {[string first "i7" $name] == 0} {
|
||||
|
|
|
@ -30,11 +30,13 @@ class epg {
|
|||
|
||||
channel_num 0
|
||||
channel_name ""
|
||||
channel_crid ""
|
||||
}
|
||||
|
||||
epg method channel {chnum chname} {
|
||||
epg method channel {chnum chname chcrid} {
|
||||
set channel_num $chnum
|
||||
set channel_name $chname
|
||||
set channel_crid [string toupper $chcrid]
|
||||
}
|
||||
|
||||
epg method _parse {line} {
|
||||
|
@ -78,14 +80,7 @@ epg method remaining {} {
|
|||
return [expr $duration - [$self elapsed]]
|
||||
}
|
||||
|
||||
epg method cell {} {
|
||||
set name [$self get name]
|
||||
set text [$self get text]
|
||||
|
||||
set percent [$self percent]
|
||||
|
||||
puts "<td nowrap valign=top title=\"$text\">"
|
||||
|
||||
epg method type_icon {} {
|
||||
set img ""
|
||||
switch -- [$self get content_code] {
|
||||
1 { set img "Movie" }
|
||||
|
@ -100,16 +95,44 @@ epg method cell {} {
|
|||
10 { set img "Leisure" }
|
||||
}
|
||||
if {$img != ""} {
|
||||
puts "<img src=/images/173_3_00_G3_$img.png height=14
|
||||
return "/images/173_3_00_G3_$img.png"
|
||||
} else {
|
||||
return ""
|
||||
}
|
||||
}
|
||||
|
||||
epg method icon_set {{height 0}} {
|
||||
if {$height > 0} { set height "height=$height" } else { set height "" }
|
||||
set icon [$self type_icon]
|
||||
set str ""
|
||||
if {$icon != ""} {
|
||||
append str "<img src=$icon $height
|
||||
alt=\"[$self get content_type]\"
|
||||
title=\"[$self get content_type]\"
|
||||
>"
|
||||
title=\"[$self get content_type]\">"
|
||||
}
|
||||
if {[$self get rec_crid] != ""} {
|
||||
append str \
|
||||
"<img src=/images/178_1_26_Icon_Recommend.png $height>"
|
||||
}
|
||||
if {[$self get series_crid] != ""} {
|
||||
puts "<img src=/images/178_1_00_Icon_Serise.png height=14>"
|
||||
append str \
|
||||
"<img src=/images/178_1_00_Icon_Serise.png $height>"
|
||||
}
|
||||
return $str
|
||||
}
|
||||
|
||||
epg method cell {} {
|
||||
set name [$self get name]
|
||||
set text [$self get text]
|
||||
|
||||
set percent [$self percent]
|
||||
|
||||
puts "<td nowrap valign=top title=\"$text\">"
|
||||
|
||||
puts [$self icon_set 14]
|
||||
|
||||
puts "
|
||||
<a href=/cgi-bin/epg_dump.jim?service=[$self get service_id]&event=[$self get event_id]>
|
||||
<a class=event href=/cgi-bin/epg_info.jim?service=[$self get service_id]&event=[$self get event_id]>
|
||||
$name</a>"
|
||||
|
||||
puts "<br>"
|
||||
|
@ -137,6 +160,15 @@ epg method next {} {
|
|||
}
|
||||
}
|
||||
|
||||
epg method recommended {} {
|
||||
set rec ""
|
||||
if {[$self get rec_crid] != ""} {
|
||||
catch { set rec [lindex [
|
||||
epg fetch dump -crid [$self get rec_crid]] 0] }
|
||||
}
|
||||
return $rec
|
||||
}
|
||||
|
||||
proc {epg parse} {line} {
|
||||
set e [epg new]
|
||||
$e _parse $line
|
||||
|
@ -146,7 +178,7 @@ proc {epg parse} {line} {
|
|||
proc {epg cleanup} {} {
|
||||
global channeldb
|
||||
|
||||
if $channeldb { $channeldb close }
|
||||
if {$channeldb != ""} { $channeldb close }
|
||||
}
|
||||
|
||||
proc {epg exec} {mode args} {
|
||||
|
@ -158,6 +190,7 @@ proc {epg exec} {mode args} {
|
|||
switch -- $arg {
|
||||
-raw { set raw 1 }
|
||||
-crid { lappend cmd -C $args($arg) }
|
||||
-scrid { lappend cmd -R $args($arg) }
|
||||
-type { lappend cmd -T $args($arg) }
|
||||
-service { lappend cmd -S $args($arg) }
|
||||
-event { lappend cmd -E $args($arg) }
|
||||
|
@ -179,15 +212,18 @@ proc {epg exec} {mode args} {
|
|||
proc {epg fetch} {mode args} {
|
||||
global channeldb
|
||||
|
||||
set records ""
|
||||
foreach line [split [epg exec $mode {*}$args] "\n"] {
|
||||
set record [epg parse $line]
|
||||
if $channeldb {
|
||||
if {$channeldb != ""} {
|
||||
set chan [lindex [$channeldb query {
|
||||
select szSvcName, usLcn from TBL_SVC
|
||||
select szSvcName, usLcn, aucDefaultAuthority
|
||||
from TBL_SVC
|
||||
where usSvcId = %s} "[$record get service_id]"
|
||||
] 0]
|
||||
$record channel $chan(usLcn) \
|
||||
[string range $chan(szSvcName) 1 end]
|
||||
[string range $chan(szSvcName) 1 end] \
|
||||
$chan(aucDefaultAuthority)
|
||||
}
|
||||
|
||||
lappend records $record
|
||||
|
|
|
@ -0,0 +1,31 @@
|
|||
|
||||
class spinner {
|
||||
name "spinner"
|
||||
text "Loading..."
|
||||
img "/img/loading.gif"
|
||||
size "1.1em"
|
||||
style ""
|
||||
speed "slow"
|
||||
}
|
||||
|
||||
spinner method start {} {
|
||||
puts "<div style=\"
|
||||
align: center;
|
||||
font-size: [$self get size];
|
||||
[$self get style]
|
||||
\"
|
||||
id=\"[$self get name]\">
|
||||
<img src=\"[$self get img]\">
|
||||
[$self get text]
|
||||
</div>
|
||||
";
|
||||
puts "
|
||||
<script type=text/javascript>
|
||||
\$(document).ready(function () {
|
||||
\$('#[$self get name]').hide('[$self get speed]');
|
||||
});
|
||||
</script>
|
||||
"
|
||||
flush stdout
|
||||
}
|
||||
|