#!/usr/local/bin/perl use DOWP::DowpDoc; print "Content-type: text/html\n\n"; &GetRequest; &check_PrintHtmlFile; ############# フレームワーク開始 Ver.1.01 ################# sub check_PrintHtmlFile{ my $dowpObj = DowpDoc->new(); #元となるHTMLファイルを読み込む my $res = $dowpObj->LoadFile("check.html"); if ($res eq "") { my $varsObj = $dowpObj->GetRootPart->Vars; #ルートパートのDOWP変数の変更はここで記述します &check_PrintPart($dowpObj->GetRootPart); }else{ #エラー print "<html>$res</html>"; } } sub check_PrintPart($){ my $parentPart = shift; my ($dowpNum,$partObj,%partAttr); for($dowpNum=1;$dowpNum<=$parentPart->Parts->Count;$dowpNum++){ $partObj = $parentPart->Parts->GetPart($dowpNum); if ($partObj->PartType == 2){ &check_Print($partObj->GetText); }elsif($partObj->PartType == 1){ %partAttr = (); #DUMMY if (0){ #これはDOWPソースコードウィザードで作成されるダミー行です。 #CHECK }elsif($partObj->Key eq "CHECK"){ $N = "" . $partObj->GetAttr('NAME'); #フォーム名 $V = "" . $Request{$N}; #フォームの要素の値 $X1= "checked_" . $V; $X2= "selected_" . $V; $partObj->Vars->Reset(); $partObj->Vars->GetVar($X1)->Replace('" checked dummy="yes '); $partObj->Vars->GetVar($X2)->Replace('" selected dummy="yes '); &check_PrintPart($partObj); #DEFAULT }else{ &check_PrintPart($partObj); } } } } sub check_Print($){ print $_[0]; } # フォームのデータを%Requestに受け取る sub GetRequest { my ($qs, $key, $val); binmode(STDIN); if(!($qs = $ENV{'QUERY_STRING'})){ read(STDIN,$qs,$ENV{'CONTENT_LENGTH'}); } $qs =~ s/[\n\r]+$//; $qs =~ s/&amp;/&/g; foreach (split(/&/, $qs)) { ($key, $val) = split(/=/, $_, 2); $val =~ tr/+/ /; $val =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack('H2', $1)/eg; $Request{$key} = $val; } } ################# フレームワーク終了 ######################