#!/usr/local/bin/perl

=pod

=cut

$SITE::about_html = '<address>宿題調査者 (制作: 若葉; 2001-03-07)</address>';

$SITE::basepath = '../pl/';
require $SITE::basepath.'site.pl';



package hw;

%homeworks = (
    genbun	=> '国語: <span class="when">4/12(木)提出</span> 『新体系 現代文の演習 グレード2』 P48〜P63',
    kobun	=> '国語: <span class="when">4/12(木)提出</span> 『練成 古文』 P32〜P47',
    kanbun	=> '国語: <span class="when">4/12(木)提出</span> 『新演習 漢文アチーブ2』 P12〜P25',
    suugaku	=> '数学: <span class="when">4/12(木)提出</span> 『数学演習問題 &lt;第4集&gt;』',
    forest	=> '英語: <span class="when">--提出無し--</span> 『Forest 文法テキスト』発展問題(特別授業範囲)復習',
    sougoueigo	=> '英語: <span class="when">4/12(木)提出</span> 『総合英語』問題集 一冊',
    homereader	=> '英語: <span class="when">--提出なし--</span> 『The Lory that was Greece』 Chapter 1,2 (pp.1〜19)',
    worldhist	=> '世界史: <span class="when">(最初の授業)</span> 『物語 世界史への旅』を読み、20テーマ中2テーマについて、それぞれレポート用紙2枚以上に考察をまとめる。',
    jphist	=> '日本史: <span class="when">4/9(月)提出</span> 教科書の重点をノートの見開き左頁に書く。 (A: 『現代の日本史』P66〜P77; B: 『新日本史B』P6〜P35)',
    chiri	=> '地理: <span class="when">(最初の授業)</span> 教科書の重点をノートの見開き左頁に書く。 (A: 第1編第1章, 第2章; B: 第1章第1節, 第2節)',
    butsuri	=> '物理: <span class="when">(最初の授業)</span> 課題プリント(ノートに切り貼り)',
    kagaku	=> '化学(全員): <span class="when">3/23(金)提出</span> プリント1枚',
    kagakus	=> '化学(選択者: 理系, 理数科): <span class="when">(最初の授業)</span> プリント No.1〜4',
    seibutsu	=> '生物(普通科): <span class="when">--提出なし--</span> 教科書P7〜39を読む。',
    read	=> '読書: <span class="when">4/9(月)提出</span> メッセイジ・カード 1枚以上',
  );


sub error {
  my $eid = shift; my $emsg;
  $emsg = ($eid eq 'nouser' ? '利用者名が不正です。':
           $eid eq 'add'    ? '利用者を追加出来ませんでした。既に登録されているか、利用者名が不正です。':
                              '');
  
  &SITE::error($emsg);
}


sub showlist {
  my ($ruri, $uid) = @_;
  open F, $SITE::basepath.'homework-check.dat';
    my @F = <F>;
  close F; my %data;
  for (@F) {
    if (/^$ruri;(.+)\n/) {
      %data = split /:/, $1;
      last;
    }
  }
  print "content-type: text/html; charset=euc-jp\n\n";
  print <<EOH;
<html lang="ja">
<head>
<title>宿題調査者</title>
<meta name="ROBOTS" content="NOINDEX, NOFOLLOW, NOCACHE" />
<link rel="stylesheet" href="../default" />
<style type="text/css">
li.end	{color: gray}
.when	{color: blue}
li.end .when	{color: gray}
li.end input	{color: gray}
</style>
<body>
<h1>宿題調査者</h1>
<form method="post" action="check-main" accept-charset="us-ascii">
<h2>${uid}の宿題終了状況</h2>
<ul>
EOH
  my $nokori;
  for (keys %homeworks) {
    if ($data{$_} eq 'on') {
      print '<li class="end"><input type="checkbox" name="'.$_.'" checked /> '.$homeworks{$_}."</li>\n";
    } else {
      $nokori++;
      print '<li><input type="checkbox" name="'.$_.'" /> '.$homeworks{$_}."</li>\n";
    }
  }
  print <<EOH;
</ul>
<p>あと $nokori個!</p>
<p>
<input type="submit" value="修正を保存" />
<input type="hidden" name="mode" value="list" />
<input type="hidden" name="modify" value="yes" />
<input type="hidden" name="userid" value="${uid}" />
<a href="check">入り口</a>
</p>
${SITE::about_html}
</body></html>
EOH
}

sub change {
  my ($ruri, %item) = @_;
  for ('code', 'mode', 'userid', 'modify') {$item{$_} = ''}
  $item = join ':', %item;
  open F, $SITE::basepath.'homework-check.dat';
    my @F = <F>;
  close F; my $flag;
  for $i (0...$#F) {
    if ($F[$i] =~ /^($ruri);.+\n/) {
      $F[$i] = $ruri.';'.$item."\n";
      $flag = 1; last;
    }
  }
  unless ($flag == 1) {push @F, $ruri.';'.$item."\n"}
  open F, '> '.$SITE::basepath.'homework-check.dat';
    $" = ''; print F @F;
  close F; my $flag;
}

package main;
## -- Add New User.
if ($OPT{mode} eq 'add') {
  &hw::error(add) unless ($OPT{userid} && &SITE::RURI::adduser($SITE::uid, $OPT{userid}));
  jcode::convert(\$OPT{userid}, 'jis', 'euc');
  $OPT{userid} =~ s/([^A-Za-z0-9_@.-])/sprintf('%%%02X', ord($1))/eg;
  &SITE::log('homework-list-make');
  print "Location: ?userid=$OPT{userid}\n\n";

## -- Show User's List.
} else {
  &hw::error(nouser) if (!$OPT{userid} || (&SITE::RURI::RURI2Name($SITE::uid) ne $OPT{userid}));
  &hw::change($SITE::uid, %OPT) if $OPT{modify} eq 'yes';
  &hw::showlist($SITE::uid, $OPT{userid});
  &SITE::log('homework-list-show');
}

