WebSurfer's Home

トップ > Blog 1   |   Login
Filter by APML

SyntaxHighlighter

by WebSurfer 29. May 2010 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

Comments

29. May 2010 20:37   #

mamiko

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

mamiko Japan

30. May 2010 23:13   #

websurfer

mamiko さん>

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

websurfer Japan

About this blog

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

Calendar

<<  July 2020  >>
MoTuWeThFrSaSu
293012345
6789101112
13141516171819
20212223242526
272829303112
3456789

View posts in large calendar