Webアプリを創る

ASP.NET で CKEditor を導入

2010年9月8日

CKEditor については、個人的には FCKEditor の時代に mojoPortal で使っていたこともあり結構気に入っていました。CKEditor になってからは日本語の入力でトラブルが発生するので使うのを止めていましたが、現時点では改善され使用上の問題はなくなっているので、CKEditor の組み込みに挑戦してみました。設定は簡単で動作も良好だったので、インストールの手順を紹介しておきます。TinyMCE と比較して、以下の点が優れていると思うので、今後は CKEditor をできるだけ使おうと思っています。

  • TinyMCE では行の先頭にある全角の空白が削除されてしまう。
  • テーブルの列幅をマウスで変更できる(Ver 3.4からで設定が必要)。

なお、CKEditor は、以前の FCKEditor とは異なり TinyMCE と同様に Javascript だけで作成されているため、ASP.NETのページでも、PHPのページでもインストールの方法は基本的に同じです。

1.CKEditor の取得等

(1) CKEditor のダウンロードのページから、CKEditor の zip 版 をダウンロードします。

(2) ダウンロードした zip ファイルを解凍します。

(3) Visual Studio または Visual Web Developer Express を起動します。

(4) 新規でWeb アプリケーションかWeb サイトを作成します。既存のがあればそれを利用することもできます。

(5) (2) で解凍したファイルの ckeditor フォルダー以下を作成した Web アプリケーションのルートフimageォルダーにコピーします。フォルダー名やフォルダーの位置は変更しても支障はありませんが、その場合は、以下を適宜読み替えてください。ソリューション エクスプローラで、「すべてのファイルを表示」ボタンをクリックすると左の図のように表示されると思います。なお、左の図では、php 等ASP.NET では、不要なファイルは削除しています。もし、必要であれば、ckeditor フォルダーを選択し、右クリックして、「プロジェクトに含める」をクリックして、公開に必要なファイルをプロジェクトに含めるため出力ディレクトリにコピーをする設定にします。
 

 
 
 
 
 
 
 
 
 
2.インストール

最初は、基本の設定をして、CKEditor を動作させてみます。head 要素に、以下の赤字の部分を追加します。上の一行は、TinyMCE の Javascript ファイルである tiny_mce.js を使用するという宣言をします。

<head runat=”server”>
<title>CKEditor の導入</title>
<script type="text/javascript" src="./ckeditor/ckeditor.js"></script>
</head>

head 要素の設定が終わったら、TinyMCE を実際に動作させるテキストボックスを作成してやります。ツールボックスで TextBox を選択して適当な場所にドラッグ・ドロップし、プロパティで TextMode を MultiLine に変更します。ソースモードでは、以下のような一行が追加されます。

<asp:TextBox ID="TextBox1" runat="server" TextMode="MultiLine">
</asp:TextBox>

その行より下に以下の CKEditor の初期化スクリプトを追加します。

<script type="text/javascript">
    CKEDITOR.replace("TextBox1");
</script>

以上で、Web アプリケーションを開始すると、以下の図のように、テキストボックスに CKEditor のパネルが表示されれば CKEditor 設定は成功です。CKEditor では設定なしで、すべてのツールバーが表示されます。

image

3.HttpRequestValidationException への対応

画面に送信ボタンを追加すれば、TinyMCE で編集した結果は、TextBox1.Text で簡単に取得できるのですが、実際に実行してみると以下の図のように、「説明: 要求の検証により、危険性のあるクライアント入力値が検出されました。要求の処理は中止されました。この値は、クロス サイト スクリプト攻撃などのアプリケーションのセキュリティ問題を引き起こす可能性があります。ページ ディレクティブか、 構成セクションの validateRequest=false を設定することによって要求の検証を無効にできます。しかしこの場合、アプリケーションですべての入力を明示的に確認することをお勧めします。 」というエラーが発生します。
image

この解決策は、以下の二通りの方法があるので、好みの方法を選択してください。

(1) 要求の検証を無効にする

エラーの説明にあるように、ディレクティブに ValidateRequest=”false” を追加します。具体的には、aspx ファイルの先頭にある

<%@ Page Language=”C#” AutoEventWireup=”true” CodeFile=”Default.aspx.cs” Inherits=”_Default” %>

を以下のように変更します。

<%@ Page Language=”C#” AutoEventWireup=”true” CodeFile=”Default.aspx.cs” Inherits=”_Default” ValidateRequest=”false” %>

ASP.NET 4.0 では、さらに Web.config ファイルの system.web セクションに以下の一行を追加します。

<system.web>

<httpRuntime requestValidationMode=”2.0″ />
</system.web>

(2) HTML エンコードしたものを送信する

出力を HTML エンコードして出力するためには、CKEditor の初期化スクリプトで以下のように、htmlEncodeOutput を true に変更します。なお、config.js ファイルを使った方法でも変更できます。

<script type="text/javascript">
    CKEDITOR.replace("MainContent_TextBox1",
    {
        htmlEncodeOutput: true
    });
</script>

サーバー側で以下のように、HtmlDecode すると元のHTMLソースに戻すことができるので、そのデータを使って保存等の処理をします。なお、テキストボックスにデータを代入する場合にはエンコードせずに代入ます。

protected void Button1_Click(object sender, EventArgs e)
{
    string s = HttpUtility.HtmlDecode(TextBox1.Text);
    ………
}

5.設定の変更

ここでは、簡単に CKEditor の設定の変更をメモしておきます。詳しくは、英文ですが本家の CKEditor 3.x – Developer’s Guide を参考にしてください。設定の変更については、については、CKEditor の初期化スクリプトで設定する方法と config.js ファイルで設定する方法の二通りがあり、両者を併用することも可能です。

(1) 初期化スクリプトで設定

初期化スクリプトで設定する例です。以下は、HTMLエンコードして出力する、テーブルの列幅をマウスで変更できるようにする、ツールバーでフォームを表示しないようにする設定をおこなっています。
<script type="text/javascript">
    CKEDITOR.replace("MainContent_TextBox1",
    {
        htmlEncodeOutput: true,       //HTMLエンコードして出力する
        extraPlugins: ‘tableresize’,  //テーブルの列幅をマウスで変更できるようにする
        toolbar:                      //ツールバー
        [
            ['Source', '-', 'Save', 'NewPage', 'Preview', '-', 'Templates'],
            ['Cut', 'Copy', 'Paste', 'PasteText', 'PasteFromWord', '-', 'Print', 'SpellChecker', 'Scayt'],
            ['Undo', 'Redo', '-', 'Find', 'Replace', '-', 'SelectAll', 'RemoveFormat'],
            ['BidiLtr', 'BidiRtl'],
            ‘/’,
            ['Bold', 'Italic', 'Underline', 'Strike', '-', 'Subscript', 'Superscript'],
            ['NumberedList', 'BulletedList', '-', 'Outdent', 'Indent', 'Blockquote', 'CreateDiv'],
            ['JustifyLeft', 'JustifyCenter', 'JustifyRight', 'JustifyBlock'],
            ['Link', 'Unlink', 'Anchor'],
            ['Image', 'Flash', 'Table', 'HorizontalRule', 'Smiley', 'SpecialChar', 'PageBreak'],
            ‘/’,
            ['Styles', 'Format', 'Font', 'FontSize'],
            ['TextColor', 'BGColor'],
            ['Maximize', 'ShowBlocks', '-', 'About']
        ]
    });
</script>

(2) config.js で設定

(1) と同じ内容をconfig.js で設定する例です。config.js については、既定の設定ファイルなので、config.js に設定内容を書き込むだけで設定することができます。config.js とは別の名前を使うこともできますが、その場合は初期化スクリプトに、customConfig : ‘スクリプトのurl’ の項目を追加する必要があります。

config.htmlEncodeOutput = true;       //HTMLエンコードして出力する
config.extraPlugins = ‘tableresize’;     //テーブルの列幅をマウスで変更できるようにする
config.toolbar = ‘MyToolbar’;             //ツールバー
config.toolbar_MyToolbar =
[
     ['Source', '-', 'Save', 'NewPage', 'Preview', '-', 'Templates'],
     ['Cut', 'Copy', 'Paste', 'PasteText', 'PasteFromWord', '-', 'Print', 'SpellChecker', 'Scayt'],
     ['Undo', 'Redo', '-', 'Find', 'Replace', '-', 'SelectAll', 'RemoveFormat'],
     ['BidiLtr', 'BidiRtl'],
     ‘/’,
     ['Bold', 'Italic', 'Underline', 'Strike', '-', 'Subscript', 'Superscript'],
     ['NumberedList', 'BulletedList', '-', 'Outdent', 'Indent', 'Blockquote', 'CreateDiv'],
     ['JustifyLeft', 'JustifyCenter', 'JustifyRight', 'JustifyBlock'],
     ['Link', 'Unlink', 'Anchor'],
     ['Image', 'Flash', 'Table', 'HorizontalRule', 'Smiley', 'SpecialChar', 'PageBreak'],
     ‘/’,
     ['Styles', 'Format', 'Font', 'FontSize'],
     ['TextColor', 'BGColor'],
     ['Maximize', 'ShowBlocks', '-', 'About']
];

6. 編集領域の CSS の設定

編集領域については ckeditor フォルダにある contents.css がデフォルトの CSS ファイルになっているので、contents.css に記述すれば CSS を設定ができます。また、config.contentsCss で Url を設定することにより、任意の css ファイルを設定することができます。

Umbraco 4.5.2 が公開されています

2010年8月28日

ASP.NET のオープンソースのCMSである Umbraco の バージョン 4.5.2 が公開され、CodePlex のページからダウンロードできるようになっています。先月に公開された 4.5.1 のバグフィックス版で、50 のバグが解消されたそうです。4.5 と 4.5.1 では、Web Platform Installer に対応していなかったのですが、今回のバージョンでは、Web Platform Installer(Web PI) に対応するそうです。Web PI の対応版は既に完成しているのですが、Microsoft Web Application Gallery への登録にもうし少し時間がかかるそうです(2010/9/8確認 Web PI で4.5.2 がインストールできるようになっています)。今すぐに Web PI で Umbraco 4.5.2 をインストールしたい場合は、Umbraco の公式ブログの Umbraco Web Platform Installer Feed with Umbraco 4.5.2 に設定方法が記載されています。これで、Umbraco 4.5 も本格的に活用できるようになると思います。

4.5 が 6月末に公開されてから、1ヶ月おきにバグフィックス版である 4.5.1 と 4.5.2 が公開されたことについては、Umbraco の公式ブログ4.5.2 Beta の公開の記事の中の「回顧 4.5 の公開が早すぎでは?」というところで触れられています。Umbraco も、利用者が多くなり、サードパーティのモジュールも増加しているため、テストにかかる時間が膨大になってきたということが原因で、ソフトウェアの成長過程での悩みというところだと思います。

mojoPortal が 2.3.5.1 にバージョンアップ

2010年8月15日

mojoPortal が 2.3.5.1 にバージョンアップしています。バージョンアップの概要については以下のようなものです。

jQuery UI スキンの追加

jQuery UI で作成されたスキンが追加されています。
image

機能設定をグループ化

機能の設定画面で、設定項目が多くなってきたので、設定をグループ化してグループ毎に表示されるようになっています。
image

ブログの改善

ブログのサイドバーに HTML コンテンツを入力できるようになっています。

ロールによって追加可能な機能を制限

ロールによって追加可能な機能が制限できるようになっています。「管理メニュー > 高度なツール > 機能のインストール/設定」の画面で各機能の「Permissions」をクリックすると設定することができます。

その他

TinyMCE が 3.3.7 から 3.3.8 に、CKEditor が 3.3.1 から 3.3.2 にバージョンアップされています。CKeditor も日本語で問題なく動作するようになっていました。FireFox の場合には、TinyMCE を使うと先頭のスペースが削除されてしまうという問題があるので、これからは、CKEditor も使おうと思っています。最近、気がついたのですが、FireFox の場合には、TinyMCE でも CKEditor でも Excel の表をコピーすると以下の図のようにきれいにコピーができるようになっています。
image

Orchard CMS 0.5 が公開されています

2010年8月7日

Microsoft のチームが開発している  Orchard のバージョン 0.5 が公開され、CodePlexダウンロードのページからダウンロードできるようになっています。Orchard 0.5 はベーター版で、モジュール開発者を主なターゲットとしているそうです。動作環境は、ASP.NET 4.0、ASP.NET MVC 2.0 です。データベースについては、MS SQL Server の他に最近ベータ版が公開された SQL Server Compact 4.0 に対応しています。SQL Server Compact 4.0 を使えば、データベースのインストールや設定の作業がないので、インストールが非常に簡単になります。

Microsoft が自ら CMS を開発することについては、他の CMS を潰してしまうのではないかという否定的な意見もあります。駆逐されてしまう CMS がないとはいえませんが、Umbraco のように特徴のある CMS は今後も生き残ると思うし、Orchard が New BSD Licence で公開されていることから、Orchard を土台にすることによりレベルの高い独自の CMS を容易に作れるようになると思います。

Orchard 0.5 は、Web Platform Installer (Web PI) を使ってインストールすることができます。まだベータ版なので、デフォルトでは Web PI の画面には表示されず、URL を追加してやる必要があります(操作のマニュアル(英語))。バイナリーファイルを使ったインストールも、IIS、.NET 4.0、MVC 2.0 がインストールできていれば、簡単にできます。少ししか触っていませんがベータ版になってかなり使える状態になっていると思うので興味のある方は実際に使ってみてください。

image

Umbraco 4.5.1 にバージョンアップしました

2010年8月6日

Umbraco 4.5.1 が公開されたので、このサイトも 4.0.4.2 から 4.5.1 にバージョンアップの作業をしました。アップグレードの作業は xslt を 4.5.x 用のものに書き換えたので少し時間がかかりましたが、レスポンスがよくなったので満足しています。

個人用のメモなのですが、アップグレードの手順及び注意点を、Umbraco 4.0.x から 4.5.x へのアップグレードにメモしておきました。アップグレード作業で、このサイトの内容を見直していると、不十分な点がかなりあることに気づきました。とりあえず、SQL Server Express を独立したメニューにして構成をわかりやすくしてみました。個々の内容については、これから少しづつ改善していこうと思っています。