WebSurfer's Home

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

SyntaxHighlighter

by WebSurfer 2010年5月29日 17:07

SyntaxHighlighter 2.0 Extension For BlogEngine.NET を導入してみました。前のエントリのコード表示と比べて、かなり見栄えがよくなったと思いますが、いかがでしょうか?

private void RemoveSetting(string settingName)
{
  foreach (ManagedExtension x in ExtensionManager.Extensions)
  {
    if (x.Name == extensionName)
    {
      // x.Initialized(settingName) ではコンパイルエラー。以下に変更
      if (x.Initialized(ExtensionManager.GetSettings(extensionName, settingName)))
      {
        foreach (ExtensionSettings y in x.Settings)
        {
          if (y.Name == settingName)
          {
            x.Settings.Remove(y);
            break;
          }
        }
        ExtensionManager.SaveToStorage(x);
      }
      break;
    }
  }
}

このソースコードは CodePlex のサイト から入手できます。

SyntaxHighlighter の 本家のサイト からダウンロードできるのは JavaScript と CSS のみですが、CodePlex からダウンロードできるものは、それらに加えて、BlogEmgine.NET に統合して操作するためのコード(Admin.aspx, Admin.aspx.cs, SyntaxHighlighter.cs)が含まれています。

ただし、Admin.aspx.cs にバグがあって、修正しないとエラーで動きません。上記の 8 行目(ハイライトした行)のように修正すれば OK です。

このコードは、JavaScript や CSS を追加したり削除したりした場合、それをコントロールパネルに反映させるためのものです。

例えば、不要な JavaScript を scripts フォルダから削除した場合、コントロールパネルの Brushes の一覧から当該アイテムを削除するには、[Update Brush List] ボタンをクリックしますが、そのときに RemoveSetting メソッドを使うようです。

BlogEngine と SyntaxHighlighter をキーワードにググってみても、上記の問題が報告されているページは見あたらなかったのが不思議です。

Initialized メソッドは、ManagedExtension クラスの中で以下のように定義されていて、引数が String のオーバーロードもないので、上記のように直さないとコンパイラも通らないのですが。

public bool Initialized(ExtensionSettings xs)
{
  if (xs != null)
  {
    foreach (ExtensionSettings setItem in _settings)
    {
      if (setItem.Name == xs.Name)
      {
          if (setItem.Parameters.Count == xs.Parameters.Count)
          {
            return true;
          }
      }
    }
  }
  return false;
}

---------------------------------------------------

2010/5/31 追記

IE8 以外のブラウザでどう見えるか試してみましたが、Firefox 3.6.3, Safari 4.0.5 では表示が乱れ、クリップボードで取得したコードをメモ帳にペーストすると改行がうまくいきません。IE6, Opera 10.53 も若干問題ありでした。IE7 は試せる環境がないので分かりません。どうも、問題ないのは IE8 のみのようです。

Tags:

BlogEngine.NET

コメント

2010年5月29日 20:37   #

mamiko

小難しくて、お友達になれそうもないなー。

mamiko 日本

2010年5月30日 23:13   #

websurfer

mamiko さん>

いまさらお友達になってもらえなくてもいいです。(笑)

websurfer 日本

About this blog

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

Calendar

<<  2024年4月  >>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

View posts in large calendar