ページ

ラベル BlogX の投稿を表示しています。 すべての投稿を表示
ラベル BlogX の投稿を表示しています。 すべての投稿を表示

2003年7月8日火曜日

BlogXをInline Comment(勝手に命名)表示にする


このblogではコメントも一緒に表示してますが、とりあえず、そうするために改造した部分を上げておきます。ほんとはもうちょっとちゃんとまとめたいんだけど、あまり時間がないのでとりあえず



EntryView.ascx.csの188行目に



if (entryComments.Count > 0) {
    bool obfuscateEmail = SiteConfig.GetSiteConfig().ObfuscateEmail;
    HtmlGenericControl commentsView = new HtmlGenericControl("div");
    commentsView.Attributes["class"] = "commentview";
    foreach (Comment c in entryComments)
    {
        SingleCommentView view = (SingleCommentView)LoadControl("SingleCommentView.ascx");
        view.Comment = c;
        view.ObfuscateEmail = obfuscateEmail;
        commentsView.Controls.Add(view);
    }
    entryFooter.Controls.Add(commentsView);
}



と追加するだけです。
これだけだとコメントを追加するページでコメントが二重に表示されるのでCommentView.aspx.csの147行目からを



//foreach (Comment c in extra.GetCommentsFor(entryId))
//{
//    SingleCommentView view = (SingleCommentView)LoadControl("SingleCommentView.ascx");
//    view.Comment = c;
//    view.ObfuscateEmail = obfuscateEmail;
//    root.Controls.Add(view);
//}



のようにコメントアウト。
BlogXは結構きれいにascxとかにまとめられているので、これだけで出来ちゃいます。

2003年7月5日土曜日

BLOGROLLって何?


右側に出てるBLOGROLLってなんだろう?



ググってみると、どうやらリンク先のblogが更新されたかどうかわかるようになっているリンク、といったものみたい。けど、今のBlogXのこの部分の実装ってどうみても単にリンクをはってるだけにしか見えない。まだ未実装なのかな?
とりあえず、MVPな人のblogを入れてみた。



しかし、デフォルトでDon Box大先生のblogが入ってるのはどうしてなんだろう(^^

WinBlogXも日本語OKにしてみた


WinBlogX(BlogXに書き込んだり設定を変えたりするためのWindowsクライアント)は日本語がダメダメ。なので、ちょっといじってみた。




  • Edit Server Filesダイアログの右側のテキストボックスが化けるのは単に英語のフォントになってるから。MS UI GothicあたりにしておけばOK。


  • BlogEditorのHTML表示は、WinBlogXControlsのほうのHtmlEditorクラスのフォント。HtmlEditor.csをデザインで開いて、「HTML」タブをクリックして下の白いところ(HTMLを表示するところ)のフォントをMS
    UI Gothicあたりに しておけばOK。


  • メインの画面(SimpleBrowser.cs)とBlogEditorダイアログのHTML表示が化けるのは同じ原因。WinBlogXControlsのほうのHtml\HtmlControl.csの642行目くらいの
    IntPtr hglobal = Marshal.StringToHGlobalUni(content);

    をコメントアウトして変わりに
    IntPtr hglobal = Marshal.AllocHGlobal(content.Length
    * 2 + 2);
    Marshal.Copy(new Byte[] { 0xff, 0xfe }, 0, hglobal, 2);
    char[] buf = new char[content.Length];
    content.CopyTo(0, buf, 0, content.Length);
    Marshal.Copy(buf, 0, new IntPtr(hglobal.ToInt64() + 2), content.Length);


    としてやる。
    簡単に言うと、これは文字列からIStream*を作って、そいつをIEのIPersistStreamInitに流し込むんだけど、日本語が含まれているときはちゃんとBOMをつけてやらないとダメってこと。



一応これで日本語もOKみたい。けど、ちょっと使い難いとこもあるなぁ。

BlogXを動かしてみました

河端さんに影響されて(^^)BlogXを動かしてみました。

CSSやらHTMLやらを自分好みに修正して、あとコードもちょっと修正しました。とりあえずはこんなもんでいいでしょう。