ラウンジ(兼FAQ掲示板)

A-Nicky のカレンダー表示
過去ログ NO.1125143134
□ lemon [2005年08月22日16時49分]
初めまして、lemonと申します。
A-Nickyのカレンダー表示について質問させて下さい。
 
トップページのカレンダー表記を
日曜日始まりではなく、月曜日が左端に来るような
設定にすることは出来ますでしょうか?
cgiの中身を見てそれらしき場所を探してみたのですが
見つけることが出来ませんでした。
もし方法があるのであれば、お教え願います。
 
設置したcgiのurlとpassが必要であれば、
追記致します。
□ NXer [2005年08月22日21時56分]

はじめまして、lemonさん。NXerです。

>月曜日が左端に

ローカルサーバで試してみました。そちらでも
週末が暦の週末になると思います。変更A-Nicky
で書き込みテストをした最初のメモです。

------------------------------曜日day 日付date
1 曜日の配列の順を変更
2 最初の週で曜日に対応する日付が無い日の処理
3 月曜日と日曜日の文字色の変更
-----------------------------------

上の3点のそれぞれの
>それらしき場所を
行番号で示し、変更元と変更後のスクリプトを併記します。
行番号は当方のいろんな編集コメントが加わっていますので
前後を探してください。ラウンジでは、HTML文書になるため
そのままをコピーペーストすると、空白に全角が入り
エラーになる恐れがあります。見やすくするためインデント
していますが、崩れるかもしれません。要点を朱書して
何をしているのか、を見失なわなければ、多分成功すると思います。
願望100%ですが。

以上です。
********************スクリプト******
#印はすえぽんさんの元スクリプト

# 曜日配列順変更 Sunday rightmost 
136 #@wday = ('Sun','Mon','Tue','Wed','Thu','Fri','Sat');
137 @wday = ('Mon','Tue','Wed','Thu','Fri','Sat','Sun');

◇◇ 以下の説明のために配列順番号をメモします。◇◇
('Mon','Tue','Wed','Thu','Fri','Sat','Sun')
----0-----1----2-----3------4----5------6つまり日曜日は[6]
と考えます。さて、[5]は土曜日ですね。月曜日は[1]では
なくて[0]です。月曜からはじめますからこれも使います。

289 foreach (@wday) {
290 #■$wday[6] sunday 配列順変、目的は6日曜日の色指定
291 if ($_ eq $wday[6]) { $_ = "<font color=$sun_col>$_</font>"; }
292 if ($_ eq $wday[5]) { $_ = "<font color=$sat_col>$_</font>"; }

298 #■ $i=0; 左へ1曜日分ずらす、ずらした分は空白を304で表示しない
299 $i = -1;
300 if ($obj_wday) {
301 print "<tr bgcolor=$cell_col>\n";
302 while ($obj_wday --) {
303 if ($i !=-1){
304 print "<td><br></td>";}
305 $i ++;
306 }
307 }

月曜日が左へ1こま移動、その分日付も左は移動。299で初期値をー1にします。
303 で 最初は何もしないで直ちに305 1日加算。次からたとえば
9月は月~水のところに、304で空白のセルを作成。

310 while ($in{'mon'} - 1 == $obj_mon) {
311 #■ $i == 0 rightmost sunday to rightmost monday 変更
312 if ($i == 0) {
313 print "<tr bgcolor=$cell_col>";
314 $obj_date = "<tt>$obj_day</font></tt>";}
315 elsif ($i == 5) { $obj_date = "<tt><font color=$sat_col>$obj_day</font><316 /tt>"; }
317 #■ $i == 6 rightmost sunday to leftmost monday 変更
318 elsif ($i == 6) { $obj_date = "<tt><font color=$sun_col>$obj_day</font><319 /tt>";
320 }
321 else { $obj_date = "<tt>$obj_day</tt>"; }

312 で月曜日を左端にして初めの表列trタグなどで書き出します。
314 は通常の日付表示
315 は土曜日でそのまま。
318 は日曜日の処理、上の土曜日と同じスクリプト形式。

なお、315-316 318-319は実際は連続する1行です。
ファイル名は、そのつどa-nicky1.cgiなどとします。
初期設定中のスクリプト名も変更して、まず曜日の順の変更だけ
を試すなどするほうが、ミスは少ないかも知れません。

スクリプトの意味はperlという言語のため、解説は割愛します。
コロン(;)や elsif (elseifではない) if文中では ==で
=を2度使います。そちらのcgi歴が不明のため、当方のミスしやす
いこと(苦笑)を付記しました。失礼します。

□ lemon [2005年08月22日23時35分]
NXerさん、ご返答どうもありがとうございます。
教えて頂いた通りに直しましたところ、成功致しました!
丁寧に解説して頂き、本当にどうもありがとうございました。

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

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