目次
n日表示機能の追加。
2.1系への採用を目指して、tDiary に数日ずつ読み進めるモードを加える改造パッチを作ってました。
zunda さんの改造がベースになっています。
が、急な海外出張でろくにwebも見られない状況になってまして、その間にたださんによって2.1.1として実装されたようです (^^;
今後は私から何か追加するにしてもそちらがベースになりますので、2.1.1をご利用下さい。
更新履歴
- 2005.6 : 本家にn日機能が追加
- 2005.5.2 : それなりに動くバージョンが出来たので途中経過としてアップ。
- 2005.4.29 : tdiary/ および skel/以下をあちこち改造。MonthモードおよびDayモードの前後リンク改造。
- 2005.4.27 : Wikiページ作成
- 2005.4.25b : @diaries を独立したクラスに
- 2005.4.25a : CVS 版の更新を反映(Changelog, tdiary.rb)
- 2005.4.23a : 00default.rb の anchor() まわりでenbugしてたのを直しました。
- 2005.4.22a : とりあえず公開
更新対象ファイル
- index.rb, tdiary.rb, plugin/00default.rb, plugin/*/00default.rb を変更
- skel/*ndays.rhtml を追加, その他skel/i.*.rhtmlも変更
- tdiary/ 以下のpstoreio.rb およびdefaultio.rb を変更
改造内容
n日表示機能追加:
- URL に days=5 などを追加することで、指定された日数をまとめて表示
- date= の指定なし → 最新から表示
- date=yyyy → その年の最初(days<0 なら最後)から
- date=yyyymm → その月の最初(days<0 なら最後)から
- 「n日分前へ」「n日分後へ」のリンクを表示
- 負の数を指定すると新しいものを上から表示 (ex. /?date=20050420;days=-5 → 20, 19, 18, 17, 16日の順に表示)
- モバイル時も n 日まとめ表示可能に(「最新」画面に「まとめ読み」リンクが追加される)。最近の高性能な携帯端末向け。
その他の機能追加:
途中で見つけた細かなバグの修正:
- plugin/*/00default.rb で閉じてないH3タグがある
- dayモードで、月またぎする場合に前後へのリンクが存在しない日になる場合がある
- latest_month に visible な日記が無い場合、refererの追記がおかしくなる(作業中)
でも確実にそれ以上にenbugしてる(汗
known bugs:
- html_anchor.rb, number_anchor.rb, sn.rb など anchor() を再定義するプラグインでは細かいところが変になるかも(未検証)
- navi_user.rb は使えません。っつーかその機能も搭載しちゃってます(汗
- 一時的にrefererの追加が不完全になってます。あと不要なコードやデバッグ用のコードが多数残留、モバイルモードが色々と未検証。(2005.5.2 0230)
ダウンロード
下記にあります。現時点ではまだ実用になりません。開発の方向性を確かめる目的で、試験用の環境にてお使い下さい。
http://ks.nwr.jp/pub/devel/
- CVS版への差分になってます。
- バグが(いっぱい)残ってます。
- 制限も多いです。プラグインの使用は必要最低限にして下さい。
プログラム上での主な変更:
- TDiaryBase に対象の日記を探す collect_diaries() を追加
- @mode=='ndays' を追加 (class TDiaryNDays)
- URLに days= があると優先的に ndays モードに
- @diaries をHashのスーパークラスに (class Diaries)、いくつかメソッドを追加
- plugin/00default.rbにて anchor() と別に anchor_ndays() を作成。
- このためanchor()を再定義する一部プラグインとの互換性が無くなっている。そのうちフォロー予定。
- plugin/00default.rb の calc_links() の機能をtdiary.rb本体に
- 前後のリンク作成に必要な情報はtdiary.rb側で生成するように変更中。
- day モードでの月またぎ時の問題解消、負荷の軽減、融通性の向上が主目的。
- skel/ にndaysモード用のrhtmlを追加。
- skel/i.*.rhtml にて、FORM を表示するルーチンを day/month/latest から diary に移動(モバイルでもまとめ表示できるようにするため)
- @diaries を作成する前に skel/*rhtml からパラメータを渡せるように変更
- latest_limit の代わりに pagesize_default, pagesize_mobile_default などを追加
細かいことはprogram-changes.txt;に随時書いて行きます。
変更の特徴:
将来の検索機能の追加を想定しています。
- collect_diaries() に対象のdiaryを @diaries に入れて返す機能をまとめてある。
- この際、検索範囲の日付を引数で限定できる。
if diary and diary.visible? で判定しているあたりに何らかのフィルタを仕掛ければ検索機能いっちょあがり…かも?
今後の予定
- ごりごり作業中:
- month モードでも表示日数を制限できるようにする (特にモバイル時に有効?)
- collect_diaries() の負荷軽減、および referer 追記の正常化
- なるべく早期にやりたいもの:
- 負荷軽減&余計なコードの除去
- 影響の出そうなプラグインへの対策
- 仕様検討中:
- dayモードで当該日が無い場合の処理(勝手に近くの日を探すようにしちゃったけど、まずいかなぁ?)
- dayモードに 7〜10日ぐらいすっ飛ばすリンクの追加。モバイル端末には有効だが、処理が重くなるのがネック…?
- 迷い中:
- モバイル時の長年日記機能のサポート
- まとめ表示のかわりに[前年][翌年]リンクを追加?(でもモバイルでそんなことわざわざやる人って居るかなぁ)
- 手は出さない:
- 出張帰り機能の実装
- 検索フィルタの追加
- anchorフィルタの検討
Links
Comments
- こちらにどうぞ。
- 前から欲しかった機能です。期待しています。設置者よりも閲覧者が欲しい機能なので,できれば本家に取り込んでいただいて,閲覧者が必要な時にn日表示モードに移行できると嬉しいだろうなと思います。
- 応援ありがとうございます。仕事の都合で完成が遅れそうですが、根気よく開発を続けますのでよろしくお願いします。
- 結局ほったらかしになってしまってすみません。先に本家にn日機能が実装されました(^^;