トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS

blosxom

wikieditish plug-in

http://www.blosxom.com/plugins/edit/wikieditish.htm

 Wiki ライクにブラウザからエントリの編集を行うためのプラグインです。 決して Wiki 表記でエントリが記述できるわけではありませんが、編集のほかに新規投稿も可能ですので、テキストファイルを作ってアップするという作業が面倒な方には重宝するかもしれません。

 Ellinikonblue.com Weblog では、本家 Wikieditish プラグイン ではなくblog.bulknews.net で公開されているものを使用しています。この wikieditish プラグイン では、上記のようにブラウザからエントリを編集できるだけでなく、ライト(トラック)バック ping も送信できるように改良が施されています *1

 個人的に情報を収集してみた結果ですが、 blosxom でライトバック ping を送信する方法はおそらくこの blog.bulknews.netwikieditish プラグイン を使用する方法がもっとも一般的だと思われますので、ライトバック ping を送信する機能もほしい方はこちらをご使用ください。

 wikieditish プラグイン の導入に際しては、本体ファイルの編集の他に、専用の フレーバー を用意する必要があります。 しかしながら、 blog.bulknews.net で配布されている wikieditish プラグイン 用の フレーバー は、同梱されている bookmarklet プラグインの他に interpolate_fancy プラグインのインストールが前提となっているため、これらのプラグインを使用しないのであれば、スクラッチから フレーバー を作成する必要があります。

プラグイン本体の編集

 blog.bulknews.net からダウンロードできる wikieditish + bookmarklet プラグイン の zip ファイルを解凍すると、flavours と plugins という二つのフォルダがあり、この plugins のフォルダに wikieditish プラグイン ファイル本体があります。 この zip ファイルには先述したように bookmarklet プラグインも同梱されていますが、wikieditish プラグイン のみ単独で使用します *2

 まず最初に wikieditish プラグイン ファイル本体の以下の部分を編集します。

:(略)
# --- Configurable variables -----

# Should I attempt to preserve the last modified date/time when
# editing an existing file?  (May not work on your operating system.)
# 0 = no (default), 1 = yes
$preserve_lastmodified = 0;

# Should editing this blog require a password?
# 0 = no, 1 = yes (default)
$require_password = 0;

# What is the password for editing this blog?
my $password = 'shibuya-pm';

# Should editing this blog be restricted to a particular set of IPs?
# 0 = no (default), 1 = yes
$restrict_by_ip = 0;

# To what IPs should editing this blog be restricted?
@ips = qw/ 127.0.0.1 /;

# What file extension should I use for edited pages? 
# (Not sure why you'd change this, but just in case...)
my $file_extension = $blosxom::file_extension;

# --------------------------------
:(略)
$preserve_lastmodified
 すでに存在するエントリを編集する際、そのタイムスタンプを維持するかどうかを設定します。初期設定は 0 (維持しない)で、entries_index プラグインなどを導入していれば、これは初期設定のままで問題ありません。
$require_password
 エントリを編集する際、パスワードを要求するかどうかを設定します。blog.bulknews.net からダウンロードできる wikieditish + bookmarklet プラグイン では、初期設定は 0 (必要としない)。通常、1 (必要とする)で使用することの方が多いと思います。
$password
 上記 $require_password で 1 (パスワードを必要とする)に設定にした場合のパスワードを設定します。
$restrict_by_ip
 エントリを編集する端末を IP アドレスで制限するため、編集を禁止するアドレスを設定するかどうかを設定します。初期設定は 0 (設定しない)。エントリを編集する端末を限定しないのであれば、初期設定のままでも問題ないと思います。
@ips
 上記 $restrict_by_ip で 1 (編集する端末を IP アドレスで制限する)に設定した場合に編集を禁止するアドレスを設定します。
$file_extension
 編集するエントリのファイル本体の拡張子を指定します。これは通常 .txt で blosxom の設定のときに指定しているはずですので、$blosxom::file_extension のままにしてください。

 wikieditish プラグイン には日本語文字コードに依存した(プログラム)コードがあり、日本語文字コードを UTF-8 で運用する場合は問題ありませんが、その他の文字コードで運用している場合は編集が必要です。

 191 行目以降の以下の部分で utf-8 となっている部分を利用する文字コードに応じて編集してください。

my $req = HTTP::Request::Common::POST(
  $ping_url, [
    blog_name => $blosxom::blog_title,
    url => $url,
    charset => 'utf-8',
    title => $$title_ref,
    excerpt => $excerpt,
  ]);

wikieditish プラグイン 用の フレーバー 作成

content_type.wikieditish の例

 デフォルトの フレーバー content_type.html のコピーでかまいません。

head.wikieditish の例

 基本的には、デフォルトの フレーバー である head.html のコピーでもかまいませんが、画面が wikieditish の編集画面に遷移したときに、ウェブブラウザのタイトルからそれがわかるようにしておく程度の修正をしておいた方がいいでしょう。

 最低限の記述の例を以下に示します。

<html>
<head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8" />

  <title>POST to $blog_title</title>
</head>

<body>
<h1><a href="$url">$blog_title</a></h1>
$blog_description

date.wikieditish, story.wikieditish の例

 実際にエントリを編集するためのフォームは foot.wikieditish の方に記述するので、date.wikieditish, story.wikieditsh とも最低限の フレーバー でよい場合は、空(ファイルサイズが 0 )のファイルを作成するだけでかまいません。

foot.wikieditish の例

 wikieditish プラグインフレーバー は、この foot.wikieditish が肝で、ここで編集画面部分の構成を記述します *3

 以下に最低限、入力すべき項目のタイトルと、その入力エリアを記載したファイルの例を示します。

<a name="wikieditish"></a>
<h3>Edit this blog...</h3>

wikieditish message:$wikieditish::response<br />

<form method="POST" action="$url/$path_info#wikieditish">
Title:
  <input type="text" name="title"
   size="48" value="$wikieditish::title" id="title" />
<br />

Contents:<br />
  <textarea name="body"
   rows="16" cols="64" id="body">$wikieditish::body</textarea>
<br />

Excerpt:<br />
  <textarea name="excerpt"
   rows="4" cols="64" id="excerpt">$foreshortened::body</textarea>
<br />

Ping:<br />
  <textarea name="ping_url"
   rows="4" cols="64" id="ping_url"></textarea>
<br />

Password:<br />
  <input type="password" name="password"
   size="16" value="$wikieditish::password" id="password" />

<input type="hidden" name="plugin" value="wikieditish" />
<input type="hidden" name="timestamp" value="$wikieditish::timestamp" />
<input type="submit" value="Save" />

</form>

</body>
</html>

アップロード

 最後にここまでで用意したファイルをアップロードします。

 wikieditish プラグイン 本体は、プラグインインストールディレクトリにアップロードしてください。

 wikieditish プラグインフレーバー である以下のファイルはデータ保存ディレクトリのトップ(つまり他の フレーバー も保存してあるディレクトリ)にアップロードしてください。

  • content_type.wikieditish
  • head.wikieditish
  • date.wikieditish
  • story.wikieditish
  • foot.wikieditish

 次にアップロードするすべてのファイルのファイルの属性を確認してください。プラグイン本体は 755 (所有者読み書き・実行可、グループ読み込み・実行可、その他読み込み・実行可)、フレーバーは 644 (所有者読み書き可、グループ読み込み可、その他読み込み可)で問題ないと思いますが、環境に応じて属性は変更してください。

 以上で導入作業は完了です。

実際に起動させてみる

 各エントリの拡張子を .wikieidtish とした URL にアクセスすると、 wikieditish プラグインフレーバー から生成された各エントリ用の編集画面に移行します。

 実際に編集を行ってみてその結果が反映されるならば、導入は成功です。

 また上記の フレーバー の例ですと、Excerpt の項で、本文の要約を、Ping の項目で相手先のライト(トラック)バック URL を入力すると、Excerpt に記載した内容で、Ping に記載した相手先にライト(トラック)バック ping を送信することができます。相手先に迷惑がかからない程度に試してみてください。

問題点

 この wikieditish プラグイン を使用する上で、新規作成/更新作業をパスワードで制限する場合、最大の問題点は、プラグイン本体コードに平文でパスワードが記載されていること です。

 wikieditish プラグイン の使用の有無にかかわらず、プラグインインストールディレクトリは直接、読み取られないよう何らかの対策が必要だと思います。

 blosxom/Tips のページEllinikonblue.com Weblog で講じている対策をご紹介しましたので、プラグインインストールディレクトリを保護する際にご参考にしてください。

bookmarklet プラグイン

 そもそも bookmarklet とは、この blosxom 用のプラグインに対する固有名詞ではなく、一般的に 「ブラウザのブックマークに登録して使う javascript のスクリプト」 を指します *4

 先述したように、 blog.bulknews.net で配布されている wikieditish プラグイン 用の フレーバー は、同梱されている bookmarklet プラグインの他に interpolate_fancy プラグイン のインストールが前提となっているため、Ellinikonblue.com Weblog では、この フレーバー を改変して使用しています。

 この bookmarklet プラグインは、「今、閲覧している (blog) サイトの HTML リストから、ライト(トラック)バック ping 送信先 URL を探し出し、任意に指定したエントリを自分の blosxom サイトに新規登録もしくは編集する画面に移行する」までの作業を半自動化するプラグインです。

 Ellinikonblue.com Weblog では、単にすでに登録されたエントリの誤字・脱字の修正程度の作業を、ブラウザから行うためだけに、この wikieditish プラグイン を使用しているため、このような運用形態では bookmarklet プラグインが必要にはなりません。

 今後、bookmarklet プラグインが必要になるような運用形態に移行しない限り、導入等のドキュメントを整備することはないと思います。ご容赦ください。

wikieditish プラグイン 用の フレーバー へのリンク

 wikieditish プラグイン を利用している blosxom サイトでは、よく各エントリの .wikieditish へのリンクが用意してあることがありますが、こうしてしまうと検索エンジンなどにこの wikieditish の編集画面がクロールされててしまいます。

 基本的にこの編集画面はまがりなりにも管理ツールの画面ですから、広く一般的に公開する性質の画面ではありません。そこで Ellinikonblue.com Weblog では以下の対策を施しています。

  1. 各エントリからの .wikieiditish へのリンクは用意しない
  2. wikieditish プラグイン 用の フレーバー のひとつである head.wikieditish に「ロボットよけ」のコードを埋め込む
  3. 編集画面への移行は、各エントリ個々の .html や .writeback などの閲覧画面に移行してから、bookmarklet を使用して移行する

 「ロボットよけ」に関しては、上記で紹介した wikieditish プラグイン 用の フレーバー のひとつ head.wikieditish を以下のようにします。

<html>
<head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8" />

  <meta name="robots" content="noindex,nofollow" />
  <meta name="googlebot" content="noindex,nofollow,noarchive" />

  <title>POST to $blog_title</title>
</head>

<body>
<h1><a href="$url">$blog_title</a></h1>
$blog_description

 meta タグで、名前が robots とか googlebot になっている行がいわゆる「ロボットよけ」コードです。この対策に関しましては hail2u.net 「 wikieditish flavour 」 を参考にしました。

 各エントリからの .wikieditish へのリンクを用意しないのですが、いちいち各エントリの URL の拡張子を .wikieditish に変更するのは面倒ですので、編集画面へ移行するための bookmarklet を用意しました。この bookmarklet は、Ellinikonblue.com Weblog の編集画面の 「このエントリを編集する (Ellinikonblue.com Weblog)」となっているリンクを 参考にするか、Hajime ONLINE「今見ているエントリを編集する Bookmarklet:blosxom 編」 を参考にしてください。javascript をご存知でなくとも、基準となる URL 部分を変更すれば使えます。

 上記で作成した bookmarklet は foot.wikieditish などにリンクとして埋め込んでおき、一度だけ .wikieditish の URL を直接叩いて、ブラウザのブックマークに登録するようにすればいいでしょう。使用する環境、ブラウザが変わっても .wikieditish への手動移行は一度だけで済ませることができるようになります。



*1 Perl モジュールである LWP::UserAgent 及び HTTP::Request::Common がインストールされている必要があります
*2 Ellinikonblue.com Weblog では問題は生じていません
*3 ですから story.wikieditish には何も書かなくても良いのです
*4 参考: JavaScript::Bookmarklet http://bookmarklet.daa.jp/

© 2004-2010 Ellinikonblue.com All Rights Reserved.