Counter: 77671, today: 2, yesterday: 0

内容

1.目的

部署のメンバーが今どこで何しているのか把握するために使用します。
電話対応、取次ぎがスムーズになるかと思われます。
(入力するのだけは面倒。社内の勤務システムと連動できればさらに便利になりますね。。)

2.ツールのURL

http://hinata.la.coocan.jp/tool/zaseki_koushin.cgi
(適当に更新していただいてまったく問題ありません。むしろたくさんいじってみて下さい。)

3.機能の概要

3-1.出勤状況を座席表に反映させ表示する。
  「向きを逆にする」をクリックすると逆向きの座席表になる。
3-2.出勤状況は更新ページから更新できる。
  「出勤状況を更新する」をクリックすると更新用ページが表示され、情報を更新できる。
  (個別更新、チーム一括更新ができる。)
3-3.ロケーション(休務)ごとに並べえる。
  「ロケーション(休務)ごとに表示する」をクリックすると
3-4.取次ぎ方法を表示する。
  座席表の各座席にマウスをポイントすると、取り次ぎ方法が表示される。
  別ロケーションの場合はその電話番号が出力される。

4.使用イメージ

4-1.出勤状況の更新
  朝のミーティングの前などに各チームにて「出勤状況更新ページ」
  から情報を更新する。
4-2.出勤状況の確認
  電話がかかってきた時など、その人がどこにいるのか確認するためには
  座席表(もしくは逆向きの座席表)を表示する。
  
 ※ 日中情報が更新されることもあるためすでに表示している場合は
   「最新の情報を表示する」をクリックした方が無難です。
 ※ その情報がいつの情報であるか、最終更新日時も座席表に表示されている。

4-3.ロケーションごとに表示
  「ロケーション(休務)ごとに表示する」のページは、
  まとめて報告したい時(朝のミーティングなど)にはこのページを確認すると便利かと。

 ※ こツールの例では、大手町を本拠地としていてよく新宿ロケーションに出かけることがある、という設定です。

5.ディレクトリ構成

zaseki_asami.cgi
zaseki_gyaku.cgi
zaseki_hyouji.cgi
zaseki_koushin.cgi
zaseki_data/poptxt.js   ←ポップアップを出力するためのJavascript
           /zaseki1.txt ←出勤状況のデータたち
            zaseki2.txt
            zaseki3.txt
            zaseki4.txt
            zaseki5.txt
           /tmp/        ←情報の更新時に一時的に使用するディレクトリ

※poptxt.jsのソースはHIMAJIN様のページから頂きました。
 誠にありがとうございます。

6.ソースイメージ

6-1.zaseki_koushin.cgi

#!/usr/bin/perl

sub printradio{
    my $checked ="";
    if ($_[0] eq $_[1]){$checked="checked";}
    print <<EOL;
    <input type="radio" name="locate$_[2]_$_[3]" value="$_[0]" $checked>$_[0]
EOL
}
sub printform{
    my $color ="white";
    if($_[5]%2==1){$color="#CCFFFF";}
    print <<EOL;
        <tr bgcolor="$color"><td width="120"> $_[1]</td>
        <td>
EOL
    &printradio("大手町",$_[2],$_[4],$_[0]);
    &printradio("新宿",$_[2],$_[4],$_[0]);
    &printradio("年休",$_[2],$_[4],$_[0]);
    &printradio("週休",$_[2],$_[4],$_[0]);
    &printradio("長期出張",$_[2],$_[4],$_[0]);
    &printradio("深夜勤務",$_[2],$_[4],$_[0]);
    &printradio("研修",$_[2],$_[4],$_[0]);
    &printradio("その他",$_[2],$_[4],$_[0]);
    print "</td>";
    print <<EOL;
    <td> <input type=\"text\" name="bikou$_[4]_$_[0]" size="30" maxlength="40" value="$_[3]"></td>
    <td> <input type="submit" value="個別更新" name="submit$_[4]_$_[0]"> </td>
    </tr>
EOL
}
sub team{
    my $color="";
    my $bikou="";
    my $koushin="";
    my $count=0;
    my $teamname="";
    open(F,$_[0]);
    while(<F>){
        if($_=~/teamname=([\S\s]+),[0-9\-\/\s]+/){
            $teamname=$1;
            print <<EOL;
            ■$teamname
            <table><tr><td></td><td><center>出勤状況</td><td><center>備考</td><td></td></tr>
EOL
        }
        if($_=~/([0-9]*),([0-9\-]*),(\S*),(\S*),([\S\s]*),[0-9\s\/:]*/){
            if($4 eq ""){next;}
            &printform("$1","$3","$4","$5",$_[1],$count);
            $count++;
        next;
        }
        if($_=~/([0-9]*),(\S*),(\S*),([\S\s]*),[0-9\s\/:]*/){
            if($3 eq ""){next;}
            &printform("$1","$2","$3","$4",$_[1],$count);
            $count++;
        }
    }
    print <<EOL;
    <tr><td></td><td></td><td></td><td> <input type="submit" value="このチームをすべて更新" name="submit$_[1]_all"></td></tr>
    </table>
    <hr>
EOL
    close(F);
}


print <<"EOL";
Content-type: text/html

<HTML>
    <HEAD>
        <meta http-equiv="Content-Type" content="text/html; charset=EUC-JP">
        <TITLE>出勤状況更新ページ</TITLE>
    </HEAD>
<BODY>
<form method="POST" action="zaseki_hyouji.cgi">
[<a href="./zaseki_hyouji.cgi">情報を更新せずに座席表を表示する</a>]
<hr>
EOL

$shimacnt=0;
@files = glob ("zaseki_data/*.txt");
foreach $i (@files){
    $shimacnt++;
    &team("$i","$shimacnt");
}

print <<"EOL";
[<a href="./zaseki_hyouji.cgi">情報を更新せずに座席表を表示する</a>]
    </BODY>
</HTML>
EOL

6-2.zaseki_hyouji.cgi

#!/usr/bin/perl

sub decode {
    local($args, $n_read, *terms, $tag, $value);

    $ENV{'REQUEST_METHOD'} eq "POST" ?
    ($n_read = sysread(STDIN, $args, $ENV{'CONTENT_LENGTH'})):
    ($args = $ENV{'QUERY_STRING'});

    @terms = split('&', $args);

    foreach (@terms) {
        ($tag, $value) = split(/=/, $_, 2);
        $value =~ s/\+/ /g;
        $value =~ s/%([0-9A-Fa-f][0-9A-Fa-f])/pack("c", hex($1))/ge;
        $tags{$tag} = $value;       # tags is global
    }
}

sub kobetsu_koushin{
    my $updated_line="";
    my $locate="locate${_[0]}_${_[1]}";
    my $bikou="bikou${_[0]}_${_[1]}";
    $tags{$bikou}=~s/,/、/g;
    my $team=${_[0]};
    my $naisen=${_[1]};
    ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime(time);
    my $yyyymmddHHMM = sprintf("%04d/%02d/%02d %02d:%02d", $year + 1900, $mon +1, $mday, $hour, $min);
    open(OLD,"zaseki_data/zaseki$team.txt");
    while(<OLD>){
        if($_=~/$naisen,([0-9\-]*),(\S*),\S*,[\S\s]*,[0-9\s\/:]*/){
            $updated_line="$naisen,$1,$2,$tags{$locate},$tags{$bikou},$yyyymmddHHMM\n";
            last;
        }
        if($_=~/$naisen,(\S*),\S*,[\S\s]*,[0-9\s\/:]*/){
            $updated_line="$naisen,$1,$tags{$locate},$tags{$bikou},$yyyymmddHHMM\n";
            last;
        }
    }

    close(OLD);

    open(TMP,">zaseki_data/tmp/zaseki${team}_tmp.txt");
    open(OLD,"zaseki_data/zaseki$team.txt");
    while(<OLD>){
        if($_=~/$naisen/){print TMP $updated_line;}else{print TMP $_;}
    }
    close(OLD);
    close(TMP);
    open(TMP,"zaseki_data/tmp/zaseki${team}_tmp.txt");
    open(NEW,">zaseki_data/zaseki$team.txt");
    while(<TMP>){
        print NEW $_;
    }
    close(NEW);
    close(TMP);
}
sub button_check{
    my $button="";
    $button="submit$_[1]_all";
    if($tags{$button} ne ""){return $button;}
    open(F,$_[0]);
    while(<F>){
        if($_=~/^([0-9]{4})/){
            $button="submit$_[1]_$1";
            if($tags{$button} ne ""){return $button;}
        }
    }
}

sub which_button{
    my $button="";
    my $shimacnt=0;
    @files = glob ("zaseki_data/*.txt");
    foreach $i (@files){
        $shimacnt++;
        $button=&button_check("$i","$shimacnt");
        if($button ne ""){return $button;}
    }
    return $button;
}

sub data_koushin{
    my $submitted_button= &which_button();
    $submitted_button =~s/submit//g;
    @list = split( /_/ , $submitted_button );
    my $team=$list[0];
    my $naisen=$list[1];
    if($naisen eq "all"){
        open(TEAM,"zaseki_data/zaseki$team.txt");
        while(<TEAM>){
            if($_=~/^([0-9]{4})/){
                &kobetsu_koushin("$team","$1");
            }
        }
        close(TEAM);
    }else{
        &kobetsu_koushin("$team","$naisen");
    }
}
sub desidecolor{
    if($_[0] eq "年休")    {return "gray";}
    if($_[0] eq "週休")    {return "gray";}
    if($_[0] eq "研修")    {return "gray";}
    if($_[0] eq "長期出張"){return "gray";}
    if($_[0] eq "その他")  {return "gray";}
    if($_[0] eq "深夜勤務"){return "#9999CC";}
    if($_[0] eq "大手町")  {return "#99CCCC";}
    if($_[0] eq "新宿")    {return "#99CC99";}
}
sub setmsg{
    my $naisen=$_[0];
    my $name=$_[1];
    my $locate=$_[2];
    if($locate eq "大手町" || $locate eq "深夜勤務"){
        if($naisen eq "0000"){return "";}
        else{
            return "'■取次ぎ方法1 パーク保留<br> 1-1.「パーク保留」ボタンを押す。<br>"
                    . " 1-2.表示されたパーク番号を$nameさんに伝える。<br>"
                    . " 1-3.$nameさんはその番号を入力して発信する。<br>"
                    . "■取次ぎ方法2 転送<br> 2-1.「転送/音声メール」ボタンを押す。<br>"
                    . " 2-2.<font size=4><b>$naisen</b></font>を入力し「決定/発信」ボタンを押す。<br>"
                    . " 2-3.$nameさんが出たら切る。<br>"
                    . "   (転送をやめたい場合は「取消」ボタンを押す。)'";
        }
    }elsif($locate eq "新宿"){
        return "'■新宿電話番号<br>"
            . " 03-xxxx-xxxx'";
    }else{
        return "";
    }
}
sub shima{
    my $count=0;
    my $color="";
    my $koushin="";
    my $msg="";

    open(F,$_[0]);
    while(<F>){
        if($_=~/teamname=([\S\s]+),([0-9\-\/\s]+)/){
            print "■$1 ( $2)";
        }
        if($_=~/([0-9]*),([0-9\-]*),(\S*),(\S*),([\S\s]*),([0-9\s\/:]*)/){
            $color = &desidecolor("$4");
            if($3 ne ""){
                $koushin="最終更新 $6";
            }else{
                $koushin=" ";
                $msg="";
            }
            $msg=&setmsg("$1","$3","$4");
            print <<"EOL";
            <table border=1 align="left">
            <tr>
            <td bgcolor ="$color" width="140" onMouseover="opentext($msg)" onMouseout="opentext('')">
            <font size = "1">$1 $2</font><br>
            <b>$3 </b><br>
            $4 <br>
            <font size = 2>$5 </font>
            <div align="right"><font size = 1>$koushin</font></div></td>
            </tr>
            </table>
EOL
        $koushin="";
        next;
        }
        if($_=~/([0-9]*),(\S*),(\S*),([\S\s]*),([0-9\s\/:]*)/){
            $color = &desidecolor("$3");
            if($2 ne ""){
                $koushin="最終更新 $5";
            }else{
                $koushin=" ";
            }
            $msg=&setmsg("$1","$2","$3");
            if($count==0){print "<table border=1><tr>\n";}
            print <<"EOL";
            <td bgcolor ="$color" width="140" onMouseover="opentext($msg)" onMouseout="opentext('')"><font size = "1">$1 </font><br>
            <b>$2 </b><br>
            $3 <br>
            <font size = 2>$4 </font><br>
            <div align="right"><font size = 1>$koushin</font></div></td>
EOL
            if($count==4){print "</tr><tr>";}
            if($count==9){print "</tr></table> <br>";}
            $count++;
            $koushin="";
        }
    }

    close(F);
}


print <<"EOL";
Content-type: text/html

<HTML>
    <HEAD>
        <meta http-equiv="Content-Type" content="text/html; charset=EUC-JP">
        <TITLE>座席表 (山向き)</TITLE>
        <script type="text/javascript" src="zaseki_data/poptxt.js">
        </script>
    </HEAD>
<BODY>
[<a href="./zaseki_hyouji.cgi">最新の情報を表示する</a>] [<a href="./zaseki_koushin.cgi">出勤状況を更新する</a>] [<a href="./zaseki_gyaku.cgi">向きを逆にする</a>] [<a href="./zaseki_asami.cgi">ロケーション(休務)ごとに表示する</a>]
<hr>
<table>
    <tr>
        <td><table><tr><td bgcolor="#99CCCC" height="20" width="30"></td></tr></table></td>
        <td>・・・大手町</td>
        <td width="20"></td>
        <td><table><tr><td bgcolor="#99CC99" height="20" width="30"></td></tr></table></td>
        <td>・・・新宿</td>
        <td width="20"></td>
        <td><table><tr><td bgcolor="#9999CC" height="20" width="30"></td></tr></table></td>
        <td>・・・深夜勤務</td>
        <td width="20"></td>
        <td><table><tr><td bgcolor="gray" height="20" width="30"></td></tr></table></td>
        <td>・・・年休,週休,長期出張,研修,その他</td>
    </tr>
</table>
<br>
EOL

if ($ENV{'REQUEST_METHOD'} eq "POST") {
    &decode();
    &data_koushin();
}
@files = glob ("zaseki_data/*.txt");
foreach $i (@files){
    &shima("$i");
}



print <<"EOL";
<hr>
[<a href="./zaseki_hyouji.cgi">最新の情報を表示する</a>] [<a href="./zaseki_koushin.cgi">出勤状況を更新する</a>] [<a href="./zaseki_gyaku.cgi">向きを逆にする</a>] [<a href="./zaseki_asami.cgi">ロケーション(休務)ごとに表示する</a>]

    </BODY>
</HTML>
EOL

6-3.zaseki_gyaku.cgi

#!/usr/bin/perl

sub desidecolor{
    if($_[0] eq "年休")    {return "gray";}
    if($_[0] eq "週休")    {return "gray";}
    if($_[0] eq "研修")    {return "gray";}
    if($_[0] eq "長期出張"){return "gray";}
    if($_[0] eq "その他")  {return "gray";}
    if($_[0] eq "深夜勤務"){return "#9999CC";}
    if($_[0] eq "大手町")  {return "#99CCCC";}
    if($_[0] eq "新宿")    {return "#99CC99";}
}
sub setmsg{
    my $naisen=$_[0];
    my $name=$_[1];
    my $locate=$_[2];
    if($locate eq "大手町" || $locate eq "深夜勤務"){
        if($naisen eq "0000"){return "";}
        else{
            return "'■取次ぎ方法1 パーク保留<br> 1-1.「パーク保留」ボタンを押す。<br>"
                    . " 1-2.表示されたパーク番号を$nameさんに伝える。<br>"
                    . " 1-3.$nameさんはその番号を入力して発信する。<br>"
                    . "■取次ぎ方法2 転送<br> 2-1.「転送/音声メール」ボタンを押す。<br>"
                    . " 2-2.<font size=4><b>$naisen</b></font>を入力し「決定/発信」ボタンを押す。<br>"
                    . " 2-3.$nameさんが出たら切る。<br>"
                    . "   (転送をやめたい場合は「取消」ボタンを押す。)'";
        }
    }elsif($locate eq "新宿"){
        return "'■新宿電話番号<br>"
            . " 03-xxxx-xxxx'";
    }else{
        return "";
    }
}
sub shima{
    my $linecnt=0;
    my $color="";
    my $koushin="";
    my $index=0;
    my @line;
    open(F,$_[0]);
    while(<F>){
        if($_=~/teamname=([\S\s]+),([0-9\-\/\s]+)/){
            print "■$1 ( $2)";
        }
        if($_=~/([0-9]*),([0-9\-]*),(\S*),(\S*),([\S\s]*),([0-9\s\/:]*)/){
            $line[$linecnt]=$_;
            $linecnt++;
            next;
        }
        if($_=~/([0-9]*),(\S*),(\S*),([\S\s]*),([0-9\s\/:]*)/){
            $line[$linecnt]=$_;
            $linecnt++;
        }
    }
    close(F);
    for ($index=$linecnt;$index>=0;$index--){
        if($line[$index]=~/([0-9]*),([0-9\-]*),(\S*),(\S*),([\S\s]*),([0-9\s\/:]*)/){
            $color = &desidecolor("$4");
            if($3 ne ""){
                $koushin="最終更新 $6";
            }else{
                $koushin=" ";
            }
            $msg=&setmsg("$1","$3","$4");
            print <<"EOL";
            <table border=1>
            <tr>
            <td bgcolor ="$color" width="140" onMouseover="opentext($msg)" onMouseout="opentext('')"><font size = "1">$1 $2</font><br>
            <b>$3 </b><br>
            $4 <br>
            <font size = 2>$5 </font>
            <div align="right"><font size = 1>$koushin</font></div></td>
            </tr>
            </table>
            <table>
            <tr>
            <td width="140"><font size = "1"> </font><br>
            <b> </b><br>
             <br>
            <font size = 2> </font>
            <div align="right"><font size = 1> </font></div></td>
            </tr>
            </table>
EOL
        $koushin="";
        next;
        }
        if($line[$index]=~/([0-9]*),(\S*),(\S*),([\S\s]*),([0-9\s\/:]*)/){
            $color = &desidecolor("$3");
            if($2 ne ""){
                $koushin="最終更新 $5";
            }else{
                $koushin=" ";
            }
            $msg=&setmsg("$1","$2","$3");
            if($index==10){print "<table border=1  align=\"left\"><tr>\n";}
            print <<"EOL";
            <td bgcolor ="$color" width="140" onMouseover="opentext($msg)" onMouseout="opentext('')"><font size = "1">$1 </font><br>
            <b>$2 </b><br>
            $3 <br>
            <font size = 2>$4 </font><br>
            <div align="right"><font size = 1>$koushin</font></div></td>
EOL
            if($index==6){print "</tr><tr>";}
            if($index==1){print "</tr></table>";}
            $koushin="";
        }
    }
    print "<br>";
}


print <<"EOL";
Content-type: text/html

<HTML>
    <HEAD>
        <meta http-equiv="Content-Type" content="text/html; charset=EUC-JP">
        <TITLE>座席表 (海向き)</TITLE>
        <script type="text/javascript" src="zaseki_data/poptxt.js">
        </script>
    </HEAD>
<BODY>
EOL

print <<EOL;
[<a href="./zaseki_gyaku.cgi">最新の情報を表示する</a>] [<a href="./zaseki_koushin.cgi">出勤状況を更新する</a>] [<a href="./zaseki_hyouji.cgi">向きを逆にする</a>] [<a href="./zaseki_asami.cgi">ロケーション(休務)ごとに表示する</a>]
<hr>
<table>
    <tr>
        <td><table><tr><td bgcolor="#99CCCC" height="20" width="30"></td></tr></table></td>
        <td>・・・大手町</td>
        <td width="20"></td>
        <td><table><tr><td bgcolor="#99CC99" height="20" width="30"></td></tr></table></td>
        <td>・・・新宿</td>
        <td width="20"></td>
        <td><table><tr><td bgcolor="#9999CC" height="20" width="30"></td></tr></table></td>
        <td>・・・深夜勤務</td>
        <td width="20"></td>
        <td><table><tr><td bgcolor="gray" height="20" width="30"></td></tr></table></td>
        <td>・・・年休,週休,長期出張,研修,その他</td>
    </tr>
</table>
EOL

@files = glob ("zaseki_data/*.txt");
$count=@files;
$ind;
for ($ind=$count;$ind>=0;$ind--){
    &shima("$files[$ind]");
}

print <<"EOL";
<hr>
[<a href="./zaseki_gyaku.cgi">最新の情報を表示する</a>] [<a href="./zaseki_koushin.cgi">出勤状況を更新する</a>] [<a href="./zaseki_hyouji.cgi">向きを逆にする</a>] [<a href="./zaseki_asami.cgi">ロケーション(休務)ごとに表示する</a>]
    </BODY>
</HTML>
EOL

6-4.zaseki_asami.cgi

#!/usr/bin/perl

$globalcnt=0;
@locations=("新宿","深夜勤務","年休","週休","研修","長期出張","その他","大手町");

sub desidecolor{
    if($_[0] eq "年休")    {return "gray";}
    if($_[0] eq "週休")    {return "gray";}
    if($_[0] eq "研修")    {return "gray";}
    if($_[0] eq "長期出張"){return "gray";}
    if($_[0] eq "その他")  {return "gray";}
    if($_[0] eq "深夜勤務"){return "#9999CC";}
    if($_[0] eq "大手町")  {return "#99CCCC";}
    if($_[0] eq "新宿")    {return "#99CC99";}
}
sub shima{
    my $count=0;
    my $color="";
    my $koushin="";
    my $msg="";
    my $teamname="";

    my $color=&desidecolor("$_[1]");
    open(F,$_[0]);
    while(<F>){
        if($_=~/teamname=([\S\s]+),[0-9\-\/\s]+/){
            $teamname=$1;
        }
        if($_=~/([0-9]*),([0-9\-]*),(\S*),(\S*),([\S\s]*),([0-9\s\/:]*)/){
            if($4 eq $_[1]){
                $count++;
            }
        next;
        }
        if($_=~/([0-9]*),(\S*),(\S*),([\S\s]*),([0-9\s\/:]*)/){
            if($3 eq $_[1]){
                $count++;
            }
        }
    }
    $globalcnt=$globalcnt+$count;
    $teamname="<td width=150 rowspan=$count>$teamname</td>";
    open(F,$_[0]);
    while(<F>){
        if($_=~/([0-9]*),([0-9\-]*),(\S*),(\S*),([\S\s]*),([0-9\s\/:]*)/){
            if($4 eq $_[1]){
                print <<EOL;
                <tr bgcolor="$color">
                    $teamname
                    <td width=120>$3</td>
                    <td width=200>$5 </td>
                    <td><font size=2>最終更新 $6</font></td>
                </tr>
EOL
            $teamname="";
            }
        next;
        }
        if($_=~/([0-9]*),(\S*),(\S*),([\S\s]*),([0-9\s\/:]*)/){
            if($3 eq $_[1]){
                print <<EOL;
                <tr bgcolor="$color">
                    $teamname
                    <td width=120>$2</td>
                    <td width=200>$4 </td>
                    <td><font size=2>最終更新 $5</font></td>
                </tr>
EOL
            $teamname="";
            }
        }
    }
    close(F);
}


print <<"EOL";
Content-type: text/html

<HTML>
    <HEAD>
        <meta http-equiv="Content-Type" content="text/html; charset=EUC-JP">
        <TITLE>朝ミ確認用</TITLE>
        <script type="text/javascript" src="zaseki_data/poptxt.js">
        </script>
    </HEAD>
<BODY>
[<a href="./zaseki_asami.cgi">最新の情報を表示する</a>] [<a href="./zaseki_hyouji.cgi">座席表を表示する</a>] [<a href="./zaseki_koushin.cgi">出勤状況を更新する</a>]
<hr>
<br>
EOL
foreach $locate(@locations){
    $globalcnt=0;
    print "■$locate<br><table border=1>";
    @files = glob ("zaseki_data/*.txt");
    foreach $team (@files){
        &shima("$team","$locate");
    }
    print "</table>";
    if($globalcnt==0){
        print "なし<br> <br>";
    }else{print " <br>";}
}

print <<"EOL";
<hr>
[<a href="./zaseki_asami.cgi">最新の情報を表示する</a>] [<a href="./zaseki_hyouji.cgi">座席表を表示する</a>] [<a href="./zaseki_koushin.cgi">出勤状況を更新する</a>]

    </BODY>
</HTML>
EOL

7.改版履歴

090414(初版)

filezaseki_koushin.cgi_090414.txt
filezaseki_hyouji.cgi_090414.txt
filezaseki_gyaku.cgi_090414.txt
filezaseki_asami.cgi_090414.txt
filezaseki1.txt
filezaseki2.txt
filezaseki3.txt
filezaseki4.txt
filezaseki5.txt

※poptxt.jsはHIMAJIN様のページから拝借いたしました。
 再配布になってしまうため、ここにはアップしません。
 ↑のリンクの「すぐに使えるJavaScript」→「ポップアップテキスト」です。

作った頃のメモ→メモメモ/2009-04-09メモメモ/2009-04-12メモメモ/2009-04-13

バグ管理簿





トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS