#!/usr/bin/perl -w # # sample.cgi - Produit et traite le formulaire pour Active Background Demo # $Id: sample.cgi,v 1.1.1.1 2004/06/07 13:59:09 felix Exp $ ### # (C) 2004, Félix Hauri - Felix@F-Hauri.CH # # This is part of demo ``active background'' # must stay in same directory. # # Read and write files ``desired'' (temperature) and ``speed'' # use CGI qw(:standard :html3); use CGI::Carp qw(fatalsToBrowser); $TITLE='Active BG Demo'; $q = new CGI; $resol=80; $resol=$1 if defined param('resol') and param('resol') =~ /^(\d+\.?\d*)$/ and $1 >= 60 and 240 >= $1; sub redim { # Resolution prévue a 80dpi : 1/80=0.0125 my $ref=shift; return sprintf "%.0f", 0.0125*$ref*$resol; } sub fhstylesheet { return sprintf ' body { background-image: url(nph-bg.cgi/%x%x.png?resol=%d); background-repeat: no-repeat; margin-top: 0em; margin-left: 0em; } ',time,$$,$resol; } sub storetofile { my ($name,$val)=@_; open FH,">".$name or die "Can't open $name for writting"; print FH $val; close FH; } sub readfromfile { my ($name,$default)=@_; $_=`cat $name`; chomp; return $1 if /^(\d+\.?\d*)$/; return $default if defined $default; return 0; } if (defined param('desired') and param('desired') =~ /^(\d+\.?\d*)$/ and $1 >= 14 and 98 >= $1) { storetofile('desired',$1); } $desired=readfromfile('desired',24); if ((defined param('plus.x') and (param('plus.x') > 0 )) or (defined param('moins.x')) and (param('moins.x') > 0)) { if (defined param('plus.x')) { $desired=$desired+3; $desired=98 if $desired > 98; } else { $desired=$desired-3; $desired=14 if $desired < 14; } storetofile('desired',$desired); $q->delete('desired'); param('desired',$desired); } if (defined param('speed') and param('speed') =~ /^(\d+\.?\d*)$/) { storetofile('speed',$1); } $speed=readfromfile('speed',12_000); if ((defined param('quick.x') and (param('quick.x') > 0)) or (defined param('slow.x')) and (param('slow.x') > 0)) { if (defined param('quick.x')) { $speed=$speed+500; $speed=20_000 if $speed > 20_000; } else { $speed=$speed-500; $speed=0 if $speed < 0; } storetofile('speed',$speed); $q->delete('speed'); param('speed',$speed); } print join("",header(-Refresh=>'120; URL='.script_name()."?resol=$resol"), start_html(-title=>$TITLE, -style=>fhstylesheet(), -bgcolor=>'#C0C0C0'), table({-border=>0,-cellspacing=>0,-cellpadding=>0, -width=>redim(442),-height=>redim(333)}, start_form(),hidden('resol'), TR(td({-width=>redim(134),-height=>redim(150)}," "), td({-width=>redim(25),-height=>redim(150), -valign=>"bottom"}, image_button(-src=>"plus.png",-name=>"plus")), td({-width=>redim(158),-height=>redim(150)}," "), td({-valign=>"bottom",-align=>"left"}, textfield(-name=>"speed", -size=>6, -default=>$speed))), TR(td({-valign=>"top",-align=>"right"}, textfield(-name=>"desired", -size=>6, -default=>$desired)), td({-valign=>"top",-height=>redim(15)}, image_button(-src=>"moins.png",-name=>"moins")), td(" "), td(image_button(-src=>"plus.png",-name=>"quick"))), TR(td({-valign=>"bottom"}, a({-href=>"javascript:close()"},"[ Fermer ]")), td(" "), td(" "), td({-valign=>"top"}, image_button(-src=>"moins.png",-name=>"slow"))), end_form), end_html);