2005
Oct
15th
サイドバーのカレンダー部分を Ajax 化しました。月を表示しているところの左右の <- や -> をクリックすると、カレンダー部分だけが切り替わります。これで実用上見る人に取って便利かどうかというとアレなんですが。
実際にやったこと。
- modules/calendar を編集
1. 変数 move のチェックとそれに伴う div の出力の制御
最初の
2. タイトル部分の変更
3. 月移動用のリンクを作成
4. 変数 move のチェックとそれに伴う /div の出力の制御
最後に
- modules に calendar.js というDTMLドキュメントを追加
内容はcalendar.jsを見れば大体わかるかと思いますが、 set_calendar() 関数の変数 path は
- modules/calendar を編集
1. 変数 move のチェックとそれに伴う div の出力の制御
最初の
<dtml-unless> .... </dtml-unless>の後に
<dtml-unless move> <div id="calendar"> </dtml-unless> <script type="text/javascript" src="<dtml-var blogurl>/modules/calendar.js"></script>を挿入。
2. タイトル部分の変更
<div class="sideboxtitle"><dtml-var "getMonthName(calendar_month)"> <dtml-var calendar_year></div>を単に calendar と表示するだけの
<div class="sideboxtitle">calendar</div>と変更。
3. 月移動用のリンクを作成
<div align="center" class="calendar"> <div align="center">を
<div align="center" class="calendar"> <table width="100%"> <tr> <td width="10%" align="right"> <a href="javascript:go_prev(<dtml-var calendar_year>,<dtml-var calendar_month>);"><-</a> </td> <td width="80%" align="center"> <a href="<dtml-var blogurl>/monthlist_html?year=<dtml-var calendar_year>&month=<dtml-var calendar_month>"><dtml-var "getMonthName(calendar_month)"> <dtml-var calendar_year></a> </td> <td width="10%" align="left"> <a href="javascript:go_next(<dtml-var calendar_year>,<dtml-var calendar_month>);">-></a> </td> </tr> </table> <div align="center">に変更。
4. 変数 move のチェックとそれに伴う /div の出力の制御
最後に
<dtml-unless move> </div> </dtml-unless>を追加。
- modules に calendar.js というDTMLドキュメントを追加
内容はcalendar.jsを見れば大体わかるかと思いますが、 set_calendar() 関数の変数 path は
var path = "<dtml-var blogurl>/modules/calendar?calendar_year="+y+"&calendar_month="+m+"&move=1";としています。
Posted by setomits at 12:14 |
Comments: 7
なるほど。ということで、カレンダーの始まる table の height を(なんとなく) 140px にしてみました。
> カレンダーもjavascriptで作ればいいじゃん。
それはそれでひとつの手段だけど、元々 calendar module があって、そちらにはあまり手を入れずに済んだので、やっぱこれでよかったかな。今の状態なら、JavaScriptをオフにしている人にもカレンダー表示まではされるけど、そこもJavaScriptにしちゃうと表示されないし。まあ、別にイラネって言われたらそれまでではありますが....。
いいたかったのは、以下のとおり。
------
そんなことができるんだ。知らなかった。
13へぇ~。
スクロールしないと見られない領域の一部更新には便利でしょう。
ただ、来年1月になったら、今年12月のカレンダーは見られないですよね。
そっちの対応のほうが優先順位が上では?
最初のコメントの方は削除しておきました。
で、年をまたげないのはバグでした。
calendar.js(JavaScript) 内の関数である、go_prev(), go_next() にて、それぞれ12月の場合と1月の場合は他の月とは違う処理をしていたのですが、ここでありもしない変数を触って
としていたのでした。
てことで、どちらも cur_y を y と修正しました。
Takuくんからリクエストがあった、Takuくんのための機能だからね。
これは便利ですよ。
毎日来ない人間にとっては。
RSSでチェックしてないし。
少なくとも僕にとってはありがたい機能です。
39でした。