Extension:HTMLets/ja

MediaWiki extensions manual
HTMLets
Release status: stable
Implementation Tag
Description ファイルからHTMLスニペットを埋め込むことができる
Author(s) Daniel Kinzler (Duesentriebトーク)
Latest version continuous updates
MediaWiki 1.9 以降
Database changes No
License GPL-2.0 以降
Download
README
$wgHTMLetsDirectory
<htmlet>
Quarterly downloads 14 (Ranked 126th)
Translate the HTMLets extension if it is available at translatewiki.net

HTMLets拡張機能は(インラインの)スタティックなHTMLスニペットをwikiページにインクルードする方法を提供します。スニペットはウェブサーバ上の特別なディレクトリのファイルに設定されます。これは任意で潜在的に有害なコードを挿入することをユーザに許可することなく、特別なJavaScriptコード、<iframe>、HTMLフォームを挿入するシンプルな方法に対する要求を解決します。

インストール

edit
  • Download and move the extracted HTMLets folder to your extensions/ directory.
    Developers and code contributors should install the extension from Git instead, using:cd extensions/
    git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/HTMLets
  • Add the following code at the bottom of your LocalSettings.php file:
    require_once "$IP/extensions/HTMLets/HTMLets.php";
    $wgHTMLetsDirectory = "$IP/htmlets";
    
  •   Done – Navigate to Special:Version on your wiki to verify that the extension is successfully installed.

使用

edit

HTMLスニペットをインクルードすることは特別なタグである、<htmlet>を使用することで行われます。例えば、wikiページで次のコードを設置する場合です:

<htmlet>foobar</htmlet>

これはhtmletディレクトリからfoobar.htmlファイルの内容をインクルードします。スニペットが頻繁に変更して、これらの変更をすぐにwikiページ上で反映させたい場合、そのページに対してHTMLetsにパーサーキャッシュを無効にするように伝えることができます:

<htmlet nocache="yes">foobar</htmlet>

htmletディレクトリは$wgHTMLetsDirectoryを使用して構成することができます; デフォルトの値は"$IP/htmlets"で、すなわち、MediaWikiのインストレーションrootのhtmletsディレクトリです。$wgHTMLetsDirectoryはウェブサーバ上の場所を参照することもできます。例えばhttp://localhost/htmlets/に設定できます。- note that the .htmlで終わることが必須でクエリ文字列がhtmletの名前で許可されていないからです。。

パーサー問題とハック

edit

現在、mediawikiのパーサーはパーサーフックの出力をそのままにしてしまいます(bugzilla:8997)。このことはスニペットのファイルからのHTMLは特定の状況で一部が表示されない(mangeled)可能性があります(例えば、インデントもしくは空白の行が含まれない)。

リビジョン19966に関して、HTMLetsは"hack modes"によってこの問題に対処します。提供されるhackは<htmlet>タグに対してhack属性を使用することで制御でき、$wgHTMLetsHack設定をLocalSettings.phpで使用することで、グローバルなデフォルトの値を設定できます。次の値が定義されています(最初はhack属性で使用するための名前で、2番目はLocalSettings.phpで使用するための定数名です):

  • "bypass" (HTMLETS_BYPASS_HACK): は安全に動作します; スニペットファイルからBase64でエンコードされたHTMLバージョンを出力して、ParserAfterTidyフックでそれをデコードすることで動作します。これはデフォルトの設定です。
  • "strip" (HTMLETS_STRIP_HACK): は表示をめちゃくちゃにするきっかけになるものをストリップまたはエンコードします。これは<pre> でフォーマットされたテキストを壊し特別な状況の下でJavaScriptコードに干渉もする可能性があります。
  • "none" (HTMLETS_NO_HACK): スニペットファイルの内容の処理をパーサーに任せます。完全な世界では、これは正しいでしょう。表示されない要素(mangeling)に注意しないとすぐに予期せぬ結果になります。既知のトリガーは空白の行、と空白で始まる行、"#", "*", ";",もしくは":"です、行においてコロン(":")の前にある空白も問題です。ここで説明したものはHTMLETS_STRIP_HACKによって対処できます。別のトリガーがあるかもしれませんし、パーサーの振る舞いが変わることがあります。

関連項目

edit