#!/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 "$res";
}
}
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/&/&/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;
}
}
################# フレームワーク終了 ######################