ラウンジ(兼FAQ掲示板)

電光の表示順について
過去ログ NO.1069671582
□ さと [2003年11月22日00時39分]
電光!を使わせていただこうとDLの後いろいろ試しています。
電光!本来の使用法からは外れた使い方かも知れませんが、管理(設置)者からの案内表示専用として使用したく、メールボタン・ホームボタン・投稿者名は非表示にしました。ここまでは問題なかったのですが、つまずきました。

電光!では新着順の表示がデフォルトですね。

● このデフォルトを投稿順にしたいのですが、いかんせん自力では厳しいようです。

過去記事など探したつもりですが、もし既出でしたらご容赦ください。
よろしくおねがいいたします。
□ NXer [2003年11月22日19時27分]
はじめまして。NXerです。

>デフォルトを投稿順に、、、

○表示順のデフォルト値は、revinf=0(465行)です。
投稿順にするには、表示順のデフォルト値をrevinf=1とすることを考えて
みました。現在のスクリプトに最小限の変更を加えて次のとおりです。
-------------------------------------------------------提(愚)案
465 home = mail = revinf = st_val = re = re_sw = no = 0;

465 home = mail = st_val = re = re_sw = no = 0;
466 revinf=1;
---------------------------------------------------------------

当方は、perl, javascriptをかじった程度です。これを機会に
表示順のサブルーチンがどのようになっているのか、知ることが
できれば、幸いです。以下の考え方は、的外れであったり、細部
で間違いがあったりするかもしれませんので、その点、よろしく
お願いします。なお、行番号は運用中のv5.10のもの。コメント
を加えたりしてかなりずれているかもしれません。その付近をご覧下さい。

変数を初期化する465行目のrevinfが表示順逆転(reverse)
用フラッグです。電光!のスクリプト465行付近にあります。 
-----------------------------------------------------------
465 home = mail = revinf = st_val = re = re_sw = no = 0;
------------------------------------------------------
表示順逆転の初期値は、revinf=0、つまり新着順です。

686-688にて記事の表示順を選択します。マウスクリックで601行が
呼び出されて、revinfは0と1、偽と真の切り替えがあります。いわゆ
るトグルスイッチになっています。489行で真偽を判断します。

489 if (revinf) msg = "$old_head" + (eval(no)+1) + ":" + c[1]$time_
490 print;
491 else msg = "$new_head" + (eval(no)+1) + ":" + c[1]$time_print;
no++;
   }

686 BUF+='<td><a href="" onMouseover="st(7);return true;" onMouseout="st()" onCl  ick="rv(); return false;"><img src="$img_dir$rvrs0" name=rvrs $img_size bord  er=0 alt="【記事の表\示順】\\n記事の表\示順を逆転します"></a></td>';$re_str$up_str
------------------------------------------------------------
マウスのクリックが無い時は初期設定値revinf=0 偽で491行のelse文実行、
つまりNEW-1と表示されます。revinfの601行のトグルスイッチ切り替えはあり
ません。しかし、電光!の切り替えアイコンにてマウスをクリックすると601の
トグルスイッチで切りかわります。つまりrevinf=0がelse文にてrevinf=1。こ
れで489行の(revinf)は真と判定されてOLD-1となる、と考えてみました。
-------------------------------真偽切り替え関数
601 function rv() {
if (id1) clearTimeout(id1);
if (id2) clearTimeout(id2);
if (revinf) {
revinf = 0;
document.rvrs.src = rvrs0.src;
}
else {
revinf = 1;
document.rvrs.src = rvrs1.src;
}
str.reverse();
no = 0;
denkoh();
}
---------------------------------
以上、スクリプトの解説でした。

△考えられる他の変更が、下のように、あるかもしれません。
(ここの画像は無理に変えなくてもいいのかも知れません。)
601行
if (revinf) {
revinf = 0;   
document.rvrs.src = rvrs0.src;
     ○→ document.rvrs.src = rvrs1.src;
}
else {
revinf = 1; 
document.rvrs.src = rvrs1.src;
     ○→document.rvrs.src = rvrs0.src;

---------------------------------

◆こうなってほしいスクリプトの展開!

さて、表示順デフォルト値 revinf=1とした時の、perlの実行状況を
追跡してみます。
まず481行のif(revinf)が初期値1のため、真であり、次の{ }内を実行。
つまり初期表示が登録順(OLD-)になります(ことを祈ります)。
次に電光!画面で切り替えをします。これで601が働いてif (revinf) {
つまり、初期値1が真だから、revinf=0となります。この状態でまたクリックす
ると(revinf)は偽のため、else文になり、revinf=1、、、、となってくれま
すように。

たしかに
>自力では厳しい、、、
ですね。ご協力よろしく。

もっと合理的(エレガント)な方法があると思います。残念ですが、
当方はこの程度の知識しか持ち合わせていません。いろいろ分りましたら
どうぞご教示のほどお願いいたします。
□ さと [2003年11月24日11時10分]
NXer様へ
詳細にわたる解説ありがとうございました。大変感謝しております。
なんとなくプログラムを眺めて、ここをこう変えたら・・という見当はあくまでも想像の範囲内でつくのですが。
peal/jsなどその存在は知っていても、積極的に踏み込んだことはことはありませんでした。
泥縄ですがNXer様のレスを参考にさせていただき、再度トライしてみます。

ありがとうございました。

suepon.com | CGI作成/CGI制作 | JavaScript | ドメイン検索 | バナー自動作成 | Google ダンスツール | 松浦亜弥 | H.P.memo | パソコン | ネイル

Copyright (C) 2002 - 2008 suepon , All rights reserved. Powered by CGI Script Market.