WebSurfer's Home

トップ > Blog 1   |   Login
Filter by APML

BE-Cumulus

by WebSurfer 2. July 2010 23:58
3D Tag Cloud パラメータ設定画面

3D タグクラウドを表示する tagcloud.swf のパラメータを、コードに埋め込むのではなく、Web からアクセスして変更し、それを保存し、次回の表示に反映できるようにしました。

まず、保存先がどこにあるか探してみましたが、ポストデータのストアを DB に設定していると、パラメータの保存先も DB になり、SQL Server の場合 be_DataStoreSettings という名前のテーブルにあることが分かりました。

そこからコードにどのような変更・追加が必要になるかを調査してみました。

テーブルのスキーマの変更から始まって、それを SELECT, DELETE, UPDATE, INSERT するために、かなりのコードの変更が必要になると思っていましたが、意外と簡単でした。

たぶん、Widget を変更したり、追加したりすることをあらかじめ想定して、パラメータの DB への保存方法や、DB からの取得方法を考えて BlogEngine は作られているのだと思います。

widgets\Tag cloud フォルダにある widget.ascx, edit.ascx およびそのコードビハインドに手を加えるだけで、結構簡単にできました。

詳しくはまた後日報告します。

Tags: , ,

BlogEngine.NET

WP-Cumulus(3)

by WebSurfer 19. June 2010 15:35

Widget の Tagcloud の中にタグが 3D 空間で回転する WordPress のプラグイン WP-Cumulus を実装しました。

結局、日本語に対応していない Ver. 1.23 の tagcloud.swf を使うのはやめて、WP-Cumulus 作者が試験のために作った Unicode Support 版(詳しくは先のエントリ WP-Cumulus(2) を参照)を使いました。

サイズ、色その他のパラメーター設定は \widgets\Tag cloud\widget.ascx.cs の中にハードコーディングしました。本当はコントロールパネルのようなものを作るといいのですが、とっても面倒だったのでとりあえず今回はやめました。(笑)

その内容は以下の通りで、private const string LINK2 を追加して LoadWidge メソッドの中を書き換えています。これに加えて、widget.ascx に div タグの追加が必要です(id="wpcumulusflashcontent" としています)。

private const string LINK2 = "<a href='{0}' style='{1}'>{2}</a> ";

public override void LoadWidget()
{
  string root = BlogEngine.Core.Utils.AbsoluteWebRoot.ToString();
  StringBuilder sb = new StringBuilder();
  sb.Append("<tags>");

  foreach (string key in WeightedList.Keys)
  {
    string path = "?tag=/" + Utils.RemoveIllegalCharacters(key);
    HtmlGenericControl li = new HtmlGenericControl("li");
    li.InnerHtml = string.Format(LINK, Utils.RelativeWebRoot + path, WeightedList[key], "Tag: " + key, key);
    ulTags.Controls.Add(li);

    string size = "10";
    switch (WeightedList[key])
    {
      case "biggest":
        size = "13";
        break;
      case "big":
        size = "12";
        break;
      case "medium":
        size = "11";
        break;
      case "small":
        size = "10";
        break;
      case "smallest":
        size = "9";
        break;
      default:
        size = "10";
        break;
    }
    sb.Append(String.Format(LINK2, root + path, size, key));
  }

  sb.Append("</tags>");
  string tagcloud = sb.ToString();
  String csname = "WpCumulusScript";
  Type cstype = this.GetType();
  ClientScriptManager cs = Page.ClientScript;

  if (!cs.IsClientScriptBlockRegistered(cstype, csname))
  {
    StringBuilder cstext = new StringBuilder();
    cstext.AppendLine("var flashobject = new SWFObject(\"/BlogEngine/tagcloudUnicode.swf\", \"tagcloud\", \"180\", \"170\", \"10\", \"#ffffff\");");
    cstext.AppendLine("flashobject.addParam(\"wmode\", \"transparent\");");
    cstext.AppendLine("flashobject.addVariable(\"tcolor\", \"0x333333\");");
    cstext.AppendLine("flashobject.addVariable(\"tcolor2\", \"0x333333\");");
    cstext.AppendLine("flashobject.addVariable(\"hicolor\", \"0xff0000\");");
    cstext.AppendLine("flashobject.addVariable(\"tspeed\", \"100\");");
    cstext.AppendLine("flashobject.addVariable(\"tagcloud\", \"" + tagcloud + "\");");
    cstext.AppendLine("flashobject.write(\"wpcumulusflashcontent\");");
    cs.RegisterStartupScript(cstype, csname, cstext.ToString(), true);
  }
}

一応動いていますが、使っている tagcloud.swf(上記コードではオリジナル版を区別するために名前を tagcloudUnicode.swf に変えています)は作者によると "highly experimental swf version" だそうですので予期せぬ問題が出るかもしれません。しばらく様子を見ていきたいと思っています。

***************** 2010/6/23 追記 *****************

3D タグクラウド追加後、スクリプトエラーのため (1) コメントが書き込めない、(2) AMPL フィルターが起動できないという問題が IE で発生しました(この後のエントリ reCaptcha が動かなくなりました で書いたのとは別のスクリプトエラーです)。

そのスクリプトエラーを避けるため、Tag cloud 起動用のスクリプトをページの終わりに埋め込むのはやめて(上記のコードがそうなっています)、Tag cloud をレンダリングする HTML コードの中に埋め込むように変更しました。2010/6/23 現在、コードは上記とは異なりますのでご注意ください。詳しい話は後日別途ポストします。

Tags: , ,

BlogEngine.NET

WP-Cumulus(2)

by WebSurfer 19. June 2010 00:03

先のエントリを書いた後、WP-Cumulus 作者の ブログ で、Unicode Support 版と称して、Flash 10 を使用すれば、デバイスフォント使用(らしい)でも埋め込みと同様に動きがスムースで、かすみ効果もあるというデモを見つけました。

その tagcloud.swf をダウンロードして自分でも試してみたところ、確かにそのとおりでした。

Flash Player(Ver. 10 以上)がインストールされてないか JavaScript が無効になっています。

先のエントリでは Ver. 1.23 の tagcloud.swf を使って作業を進めるようなことを書きましたが、考えが変わりました。

作者によると、"highly experimental swf version" とか "I wouldn't recommend using this version in a production website, other than as a test (similar to this post). " とのことで、Ver. 2.0 開発のための試験バージョンのようです。

でも、日本語が使えて、しかもサイズが数 kB と小さく(Ver. 1.23 で 34kB)、動きや表現が埋め込み版と同様というのは大きな魅力です。それを知ってしまった以上、ラテン文字のみの Ver. 1.23 にはもう戻れません。(笑)

作者のブログの記事によると "There is no new version of WP-Cumulus yet, this will be part of version 2.0 if it works reliably." とのことです。それまで待てないし、一応自分なりに問題なさそうなのは確認したので、Unicode Support 版で実装してみることにしました。

もし何か問題があっても、自分のブログの中だけなので大丈夫でしょう、たぶん。(汗)

Tags: , ,

BlogEngine.NET

About this blog

2010年5月にこのブログを立ち上げました。その後 ブログ2 を追加し、ここは ASP.NET 関係のトピックス、ブログ2はそれ以外のトピックスに分けました。

Calendar

<<  February 2020  >>
MoTuWeThFrSaSu
272829303112
3456789
10111213141516
17181920212223
2425262728291
2345678

View posts in large calendar