返信画面の改造

「Wing Multi BBS Professional (WMBP)」の返信画面を次のように改造しました。

  1. 記事の下に表示されるツリーを、記事の上に移動する
  2. 表示している記事をツリー内でハイライトする
  3. 元記事を引用しない

記事の下に表示されるツリーを、記事の上に移動する

WMBP では返信画面で記事と入力フォームの間にツリーが表示されるようになっています。

ツリーが記事と入力フォームの間に表示されると、記事を参照しながら返事を書くのが大変です。特にツリーが巨大な場合、入力フォームと記事をスクロールしないといけなくなります。

記事・ツリー・入力フォームがどの順番で表示されるかは、スキンファイル(res.html)内の記述に関係なく、スクリプト(res.pm)に左右されます。

「res.pm」の以下の記述が記事ツリーの描画をつかさどる部分です。

  1. main::browse($self->{"moji_code"},$self->{"gzip"});
  2. print $skin->replace("header",\%skin);
  3. Normalstyle::normalstyle(
  4. $self->{"script_name"},
  5. $self->{"bbsname"},
  6. $skin,
  7. 0,
  8. $self->{"no"},
  9. $self->{"oyano"},
  10. $self->{"bbsname_dir"},
  11. $self->{"html_url"},
  12. $self->{"upload_dir"},
  13. $self->{"log_dir"},
  14. $self->{"newday"},
  15. $self->{"line"}
  16. );
  17. if ($self->{"bbs_mode"} == 0){
  18. require "$self->{'lib_dir'}/treeset.pl";
  19. require "$self->{'lib_dir'}/paging.pl";
  20. Treeset::new(
  21. $self->{"script_name"},
  22. $self->{"bbsname"},
  23. $skin,
  24. $self->{"oyano"},
  25. $self->{"line"},
  26. 0,
  27. $self->{"bbsname_dir"},
  28. $self->{"log_dir"},
  29. $self->{"tree_file"},
  30. $self->{"newday"},
  31. $self->{"no"},
  32. $self->{"treestyle1"},
  33. $self->{"treestyle2"},
  34. $self->{"treestyle3"},
  35. $self->{"treestyle4"}
  36. )->oyatree(\($self->{"kidokustyle"},$self->{"midokustyle"},%k_no));
  37. }
  38. }

これを以下の記述のように赤部分(記事)青部分(ツリー)入れ替えてやると、ツリーの下に記事が表示されるようになります。

  1. main::browse($self->{"moji_code"},$self->{"gzip"});
  2. print $skin->replace("header",\%skin);
  3. if ($self->{"bbs_mode"} == 0){
  4. require "$self->{'lib_dir'}/treeset.pl";
  5. require "$self->{'lib_dir'}/paging.pl";
  6. Treeset::new(
  7. $self->{"script_name"},
  8. $self->{"bbsname"},
  9. $skin,
  10. $self->{"oyano"},
  11. $self->{"line"},
  12. 0,
  13. $self->{"bbsname_dir"},
  14. $self->{"log_dir"},
  15. $self->{"tree_file"},
  16. $self->{"newday"},
  17. $self->{"no"},
  18. $self->{"treestyle1"},
  19. $self->{"treestyle2"},
  20. $self->{"treestyle3"},
  21. $self->{"treestyle4"}
  22. )->oyatree(\($self->{"kidokustyle"},$self->{"midokustyle"},%k_no));
  23. }
  24. Normalstyle::normalstyle(
  25. $self->{"script_name"},
  26. $self->{"bbsname"},
  27. $skin,
  28. 0,
  29. $self->{"no"},
  30. $self->{"oyano"},
  31. $self->{"bbsname_dir"},
  32. $self->{"html_url"},
  33. $self->{"upload_dir"},
  34. $self->{"log_dir"},
  35. $self->{"newday"},
  36. $self->{"line"}
  37. );
  38. }

表示している記事をツリー内でハイライトする

記事の題名の横にはツリー内で「<< TARGET」と表示され、今読んでいる記事がツリーのどこに位置しているか分かるようになっています。これはスキンファイル内の %%target%% で指定されています。

一応、初期設定では茶色の斜体文字で表示されていますが、いまいち分かりにくいので、少し改造をほどこし題名を黄色でハイライトするようにしてみました。

「treeset.pl」内の以下のスクリプトで、スキンファイルに %%target%% と記述した時に挿入される文字列を決めます。

  1. "target" => $self->{"target"} eq $no ? "&lt;&lt;TARGET" : "",

上の赤字部分を自分の好きな文字列に変更します(下の例では「current」)
これで %%target%% と書かれると「current」という文字列が挿入されるようになります。

  1. "target" => $self->{"target"} eq $no ? "current" : "",

次はスキンファイル「res.html」を変更します。

<!--toptreestyle--><!--treestyle--> 以下に書かれている %%subject%% を次のようにします。

  1. <span id="%%target%%">%%subject%%</span>

最後にスタイルシートで <span id="current"></span> の表示方法を指定します。

  1. <style type="text/css">
  2. <!--
  3. #current { background-color: #ffff00; } // 背景=黄色
  4. -->
  5. </style>

これで題名が黄色にハイライトされます。<span id="current"></span> で囲む部分を拡大する事で投稿者名や投稿日時もハイライト出来ます。

元記事を引用しない

入力フォームの中に元記事が入っていると、全部引用して最後に自分のコメントだけを入れる人がいます。
それを避けるために最初から入力フォームに元記事を入れないようにしてみました。

  1. <textarea name="comment" wrap="off" rows=7 cols=70>%%comment%%</textarea>

次のように書き換えます( %%comment%% を削除)。

  1. <textarea name="comment" wrap="virtual" rows="7" cols="70"></textarea>

サイト作成のヒント集に戻る