WebSurfer's Home

トップ > Blog 1   |   ログイン
APMLフィルター

カレンダーの表示

by WebSurfer 2010年5月23日 21:56
修正前のウィジェットのカレンダー

ウィジェットのカレンダーは、デフォルトでは左の写真のように、(1) 月曜日から始まる、(2) 曜日が二文字になる、(3) タイトルが "5月 2010" のようになります。

日本人にはあまりなじみのない表示で、イマイチ気に入らないので、修正してみました。

修正した結果がウィジェット(左サイドのパネル)の中に表示されているカレンダーです。

上記 (1) および (2) の原因は、\widgets\Calendar\widget.ascx で PostCalendar(Calendar コントロールを継承したカスタムコントロール)の FirstDayOfWeek, DayNameFormat プロパティがそれぞれ Monday, FirstTwoLetters となっているからです。

それを直接書き換えて、Sunday, FirstLetter とすれば (1), (2) の問題は解決します。 でも、国際化対応を考えて(笑)、ブラウザの言語設定が ja-JP または ja の時のみ対応するようにしました。

具体的には、\widgets\Calendar\widget.ascx.cs の LoadWidget メソッドに以下のコードを追加しました。

System.Globalization.CultureInfo ci = System.Threading.Thread.CurrentThread.CurrentUICulture; if (ci.Name == "ja-JP" || ci.Name == "ja") { this.PostCalendar1.DayNameFormat = DayNameFormat.FirstLetter; this.PostCalendar1.FirstDayOfWeek = FirstDayOfWeek.Sunday; }

そうすると、カレンダーの表示幅が狭くなってしまうので、\widgets\Calendar\widget.ascx で PostCalendar.Width プロパティを設定して調整しました。

上記 (3) の原因は、\App_Code\Controls\PostCalendar.cs でタイトル行をレンダリングする時 VisibleDate.ToString("MMMM yyyy") としているからです。

その部分を以下のように変更しました。

//writer.Write("</td><td style=\"text-align:center;width:100px\">" + // VisibleDate.ToString("MMMM yyyy") + // "</td><td align=\"right\">"); // 上記のコードを以下のように変更 System.Globalization.CultureInfo ci = System.Threading.Thread.CurrentThread.CurrentUICulture; if (ci.Name == "ja-JP" || ci.Name == "ja") { writer.Write("</td><td style=\"text-align:center;width:100px\">" + VisibleDate.ToString("yyyy年M月") + "</td><td align=\"right\">"); } else { writer.Write("</td><td style=\"text-align:center;width:100px\">" + VisibleDate.ToString("MMMM yyyy") + "</td><td align=\"right\">"); }

ウィジェットのカレンダーの中にある "View posts in large calendar" というリンクをクリックすると大きなカレンダーが表示されるのですが、 それには上記 (1), (2), (3) の問題はありません。

何故なら、FirstDayOfWeek, DayNameFormat プロパティはデフォルトになっており、 タイトル行は Calendar コントロール自体ものを表示(ShowTitle プロパティを true に設定)しているからです。

ウィジェットのカレンダーの方で、わざわざデフォルトを変更しているのは何か理由があって、それをいじると予期せぬ副作用があるかもしれませんので、しばらく注意して様子を見たいと思っています。

Tags:

BlogEngine.NET

About this blog

2010年5月にこのブログを立ち上げました。主に ASP.NET Web アプリ関係の記事です。

Calendar

<<  2024年3月  >>
252627282912
3456789
10111213141516
17181920212223
24252627282930
31123456

View posts in large calendar