記事No | : 8091 |
投稿日 | : 2010/10/30(Sat) 12:38:56 |
タイトル | : Web patioの改造について。管理者のスレッド操作。 |
ID情報 | : Qnight99 |
投稿者 | : Qnight |
URL | : http://ceresemph.hp.infoseek.co.jp/ |
こんにちは。
KENT WEBさんの素敵なCGI(主に掲示板)を利用させていただいている者です。
こちらで配布されている『Web Patio』という名前のスレッド式掲示板について質問します。
現在とある理由でPerlを解読しようとしていますが、もともとあまりプログラムに造詣が深くなく、非常に四苦八苦しています。まだほとんど理解出来ていなく、なんとなく少々分かった程度で、例えばプログラムのそこがどういう動きをしているのかと問われれば言葉に詰まって曖昧にしか答えられないレベルです……(未熟者
それを踏まえた上でおこがましいようですが、その『Web patio』の改造について質問致します。
例えば、『掲示板の管理者が、建てられた既存のスレッドの中から、ピックアップしたいスレッドを自由にいつでもインデックスページの上に持って来ることができる(トップへソートできる)』というような操作・機能を追加するにはどこをどういう風に改造すればいいのでしょうか。
admin.cgi や regist.cgi が味噌ではないかと思い睨めっこをしている最中です。
よろしければその改造の一例を教えていただければ嬉しいです。
それから、記事を投稿する際に「トップへソート」するチェックボックスが有りますよね? チェックされた状態で投稿するとスレッドがインデックスページの一番上にソートされるのですが、その動作を行っている処理の部分はどのファイルのどの部分なのでしょうか…?
CGIやPerlに詳しい方、Web Patioの改造に造詣が深い方、お力添えを頂きたいです。
記事No | : 8092 |
投稿日 | : 2010/10/30(Sat) 16:56:28 |
タイトル | : Re: Web patioの改造について。管理者のスレッド操作。 |
ID情報 | : liberty8 |
投稿者 | : KK |
URL | : http://www11.atpages.jp/atgamewikibbs/Patio.html |
admin.cgi 233行目辺りに以下を追加
---
# スレッドをトップにソート
} elsif ($in{'action'} eq 'sort' && $in{'no'} ne '' && !$in{'past'}) {
my %no = map { $_ => undef } split "\0",$in{'no'};
open IN,'+<',$log or &error("Open Error: $log");
eval { flock IN,2 };
my($top,@top1,@top2,@index) = scalar <IN>;
(split('<>',(chomp,$_)[1],7))[6] == 2 ?
push @top1,"$_\n" : exists($no{(split('<>',$_,2))[0]}) ?
push @top2,"$_\n" : push @index,"$_\n" while <IN>;
seek IN,0,0;
print IN $top,@top1,@top2,@index;
truncate IN, tell IN;
close IN;
---
admin.cgi 418行目辺りに以下を追加
---
<option value="sort">トップにソ\ート
---
管理者メッセージの制御を忘れていたので修正しました。 17:42
記事No | : 8093 |
投稿日 | : 2010/10/31(Sun) 09:36:10 |
タイトル | : Re^2: Web patioの改造について。管理者のスレッド操作。 |
ID情報 | : Qnight99 |
投稿者 | : メロン飛沫 |
> admin.cgi 233行目辺りに以下を追加
> ---
>
> # スレッドをトップにソート
> } elsif ($in{'action'} eq 'sort' && $in{'no'} ne '' && !$in{'past'}) {
>
> my %no = map { $_ => undef } split "\0",$in{'no'};
> open IN,'+<',$log or &error("Open Error: $log");
> eval { flock IN,2 };
> my($top,@top1,@top2,@index) = scalar <IN>;
> (split('<>',(chomp,$_)[1],7))[6] == 2 ?
> push @top1,"$_\n" : exists($no{(split('<>',$_,2))[0]}) ?
> push @top2,"$_\n" : push @index,"$_\n" while <IN>;
> seek IN,0,0;
> print IN $top,@top1,@top2,@index;
> truncate IN, tell IN;
> close IN;
>
> ---
> admin.cgi 418行目辺りに以下を追加
> ---
> <option value="sort">トップにソ\ート
>
> ---
> 管理者メッセージの制御を忘れていたので修正しました。 17:42
※ハンドルが違いますが質問主です。
ご丁寧なご回答、本当にありがとうございます!
そこまで書いてくださるとは感動です。本当に助かりました。
変更するのはadmin.cgiだけで良かったんですね……あまり知識は無いですが、書いてくださったプログラムを元に、改造を頑張ってみます。
まだまだ未熟者ですのでまた質問するかもしれませんが、そのときはよろしくお願いしますm()m
早速なのですが、スレッドをトップへソートする際に、投稿欄の近くに“トップへソート”と書いてある「チェックボックス」が有りますよね?
あそこにチェックを入れている状態だとスレッドがトップへソートされるのですが、「チェックボックス」にチェックが入れてあるという認識はプログラムのどの部分から来ているのでしょうか…?
こちらの日本語が分かり辛ければどうぞ突っ込んでください;
記事No | : 8094 |
投稿日 | : 2010/10/31(Sun) 10:52:19 |
タイトル | : Re^3: Web patioの改造について。管理者のスレッド操作。 |
ID情報 | : liberty8 |
投稿者 | : KK |
URL | : http://www11.atpages.jp/atgamewikibbs/Patio.html |
「Perl フォームデコード」と「Perl 制御構文」で検索してみて下さい。
ここでは詳細は教えようが無いですし、これはPerlの構文のことであってWeb Patioとは無関係ですので。
とりあえず、init.cgiの435-580行目辺りとregist.cgiの300行目辺りに注目してください。詳細は自分で学んで理解してください。
KENTさんのスクリプトは古いもので推奨されていない書き方が多い為、
私的にあまり参考にはしないほうが宜しいかと思います。
(初心者がPerlに興味を持ってもらう「までの」ものだと思ってください)
記事No | : 8109 |
投稿日 | : 2010/11/05(Fri) 17:57:19 |
タイトル | : Re^4: Web patioの改造について。管理者のスレッド操作。 |
ID情報 | : Qnight99 |
投稿者 | : メロン飛沫 |
返事が遅くなり申し訳ありません。
またもご回答していただきありがとうございますm()m
了解しました。
一つ前のレスにてご教示を下さった管理者側からのスレッド操作に関してまた質問致します。
掲示板のインデックスページのスレッド名左側に表示されるフォルダの画像をスレッド操作完了と同時に別の物に替えるように(別の物を表示)したいと思います(スレッドロックや管理者メッセージのように、です)。
管理者側からスレッドをトップへソートした際に、インデックスページから見た、該当するスレッドのスレッド名左側のフォルダ画像を指定した物に変更するようにするには、プログラムをどのように変更すれば良いでしょうか。
うむ。日本語が分かり辛いとは思いますが、よろしければ。
> 「Perl フォームデコード」と「Perl 制御構文」で検索してみて下さい。
> ここでは詳細は教えようが無いですし、これはPerlの構文のことであってWeb Patioとは無関係ですので。
> とりあえず、init.cgiの435-580行目辺りとregist.cgiの300行目辺りに注目してください。詳細は自分で学んで理解してください。
>
> KENTさんのスクリプトは古いもので推奨されていない書き方が多い為、
> 私的にあまり参考にはしないほうが宜しいかと思います。
> (初心者がPerlに興味を持ってもらう「までの」ものだと思ってください)
記事No | : 8122 |
投稿日 | : 2010/11/08(Mon) 15:51:16 |
タイトル | : Re^5: Web patioの改造について。管理者のスレッド操作。 |
ID情報 | : liberty8 |
投稿者 | : KK |
URL | : http://www11.atpages.jp/atgamewikibbs/Patio.html |
私は「スレッドを一時的にトップにソートする」と解釈したのですが。。。
もしそうだとして、何故アイコンをわざわざ変更する必要があるのでしょう?
又、スレッドを半永久的にトップに保持する場合多くの変更が必要になり、説明があっても初心者には困難です。
記事No | : 8155 |
投稿日 | : 2010/11/21(Sun) 18:44:09 |
タイトル | : Re^6: Web patioの改造について。管理者のスレッド操作。 |
ID情報 | : Qnight99 |
投稿者 | : Qnight |
URL | : http://ceresemph.hp.infoseek.co.jp/ |
返信が遅れました。申し訳ありません。
再びご回答くださりありがとうございました。確かに、そうですね。精進します。
最初に教えて頂いた方法を用いて、admin.cgiを変更してアップロードし、管理側で操作してみました。
と、それについてはとりあえず置いておいて、実は一つ別に困ったことがありまして、各メンテナンス操作の「選択」ボタンを押すと何故か再びパスワード認証画面に戻されてしまうのです。何回かやると偶にメンテナンス画面に行くことができるのです。
ソースは全然何も変更していない状態でもなってしまうのです。
何かの不具合なのでしょうか…?
> 私は「スレッドを一時的にトップにソートする」と解釈したのですが。。。
> もしそうだとして、何故アイコンをわざわざ変更する必要があるのでしょう?
> 又、スレッドを半永久的にトップに保持する場合多くの変更が必要になり、説明があっても初心者には困難です。
記事No | : 8158 |
投稿日 | : 2010/11/22(Mon) 23:03:40 |
タイトル | : Re^7: Web patioの改造について。管理者のスレッド操作。 |
ID情報 | : liberty8 |
投稿者 | : KK |
URL | : http://www11.atpages.jp/atgamewikibbs/Patio.html |
Web Patioではありませんが、うちの「Cozy Chat」でOpera(1100_1104)を使って入室しようすると、入室画面に戻されてしまう現象を確認しています。それと同じことでしょう。
ローカルサーバーで動作さてみたところ確認できませんでした。
それにFirefox,IEでは発生しないのでOperaにjs(広告)関連のバグがあるのかもしれません。
とOpera前提で話を進めてますが、Qnightさんが使用しているウェブブラウザはOperaでしょうか。
他のウェブブラウザを使用していて、このような現象が発生する場合サーバー側(広告等)の問題とも考えられます。
とりあえず、Opera Softwareに「Webサイトの問題」として報告しておきました。
記事No | : 8159 |
投稿日 | : 2010/11/23(Tue) 11:41:02 |
タイトル | : Re^8: Web patioの改造について。管理者のスレッド操作。 |
ID情報 | : Qnight99 |
投稿者 | : メロン飛沫 |
名前がちょくちょく替わりますが前レスのQnightです。
お答えいただきありがとうございます。
残念ながらOperaではなくIEを使用しております。ですので、おっしゃるようにサーバ側に何らかの問題が発生したのかもしれません。しばらく時間を置いてからトライしてみようかと思います。
他のPCや接続環境でも同一の現象が起こるのかチェックしてみます。
> Web Patioではありませんが、うちの「Cozy Chat」でOpera(1100_1104)を使って入室しようすると、入室画面に戻されてしまう現象を確認しています。それと同じことでしょう。
> ローカルサーバーで動作さてみたところ確認できませんでした。
> それにFirefox,IEでは発生しないのでOperaにjs(広告)関連のバグがあるのかもしれません。
>
> とOpera前提で話を進めてますが、Qnightさんが使用しているウェブブラウザはOperaでしょうか。
> 他のウェブブラウザを使用していて、このような現象が発生する場合サーバー側(広告等)の問題とも考えられます。
>
> とりあえず、Opera Softwareに「Webサイトの問題」として報告しておきました。