Manual:Forms/ja

そのままのMediaWikiは様々なページのメンテナンスと管理機能のためにuses フォームベースのデータエントリを使います. MediaWikiの記事自身フリーフォームのwikitextを使って作られます. MediaWikiの他の多くの機能と同じように、利用可能なカスタマイゼーションの実現方法は無数にあります. 実現方法には既存の拡張機能、フォームのデフォルトの一式のためのテクニック、カスタムのフォームを作ってインストールするためのテクニックが含まれます.

組み込みのフォームをカスタマイズする
次の記事を参照して下さるようお願いします:


 * 一般:
 * Manual:Interface/ja、Manual:System message/ja - MediaWikiによって使われる組み込みのフォーム上に表示されるテキストをカスタマイズする/ローカライズするう方法を説明しています
 * ユーザ認証フォーム:
 * UserCreateFormフック - このフックにattachされた関数は新しいユーザを作るための標準的なフォームのための置き換えを定義できます.
 * UserLoginFormフック - このフックにattachされたフックは標準的なログインフォームのための置き換えを定義できます

構造化されたデータを持つ記事を作る/編集する
記事の中には構造化されたデータとフリーなフォーマットテキストのミックスを含むものがあります. 例えば、通常は、マーケティングコンタクト(マーケティング担当者)、もしくはバグのレポートの説明を含む記事は完全な記事を作るために常に回答されなければならない質問の一式を持ちます.

この場合、プリロードされたwikitextを持つフォームもしくは記事はより適切なものになるでしょう.

MediaWikiはこの種の状況を取り扱うために3つの戦略を持ちます:

ユーザはテンプレートパラメータをwikitext内のある種のフォームとして入力します. このアプローチの利点は、わずかな数の拡張機能の手助けによって、基本的なwikitextとテンプレートの知識を持つエンドユーザによって簡単に実装できることです. 不利な点はwikitextのフォームは不注意なユーザによって上書きされてしまう可能性があることです. このアプローチに関する詳細な情報は、Manual:Creating pages with preloaded text/jaを参照して下さるようお願いします. 詳細な情報に関しては埋め込みフォームを持つ記事を参照して下さい.
 * プリロードされるテキストを含むページを作る: 通常は フリーフォームのテキストは空白のパラメータの値を持つテンプレートを含みます.
 * 特別ページの拡張機能: 特別ページはPHPコードによって生成されたページ内容を持つ"バーチャルな"MediaWikiの記事です. 構造化された入力のための1つの方法は記事を作るもしくは編集するフォームを生成する拡張機能をインストールすることです. 現在利用できる拡張機能の一覧はCategory:Special page extensions/jaで見つかります.
 * 独自のフォームを書くこともできます. 独自の拡張機能を書くためにはPHPコーディングスキルが必要でオブジェクト指向のデザインの知識で負担が減り、データベースの知識も手助けになります. MediaWikiの記事を作り編集するコードを使う方法の知識も必要になります. さらに詳しい情報に関しては、Manual:Special pages/jaと下記の埋め込みフォームを持つ記事の考察を参照して下さるようお願いします.
 * 埋め込みフォームを持つ記事: フォー宜ーｓのデータエントリの別のアプローチはデータエントリフォームを定義することを目的とする単独の目的を持つ記事を作ることです. これは決め打ちされた特別ページの決めうちとして見ることができます. 特別なフォームを越えるこのアプローチの主要な利点は通常のMediaWikiの編集プロセスの一部としてデータエントリフォームを作ることをユーザに任せるインフラストラクチャを簡単にまとめることができることです.
 * 編集アクションをインターセプトする: 4番目のアプローチはMediaWikiの編集プロセスのすべてもしくは一部を引き受けることです. MediaWikiがページをロードするとき、MediaWikiはアクションクエリパラメータをチェックしその値に基づいた1つもしくは複数のフック関数を呼び出します. 関数をこれらのフックの1つにattachすることでページの編集プロセス全体を作り直すことができます. 詳細な情報に関しては、ページアクションをインターセプトするを参照して下さい.

埋め込みフォームを持つ特別ページ
数百の拡張機能は特別ページベースのフォームを作るためのフレームワークを提供します. これらは次のようなものを含みます:
 * Extension:Semantic Forms - フォームを使って記事の追加と編集をするための特別ページを提供します. 拡張機能はこのようなフォームをデザインして保存するためのフレームワークも含みます.
 * Extension:StructuredInputは作りたいそれぞれのタイプの記事のための特別ページを提供します. それぞれの特別ページに関連したフォームはフォームを生成するHTMLコードを返す関数に保存されます.

スクラッチから独自の特別ページを書くもしくは代替的なフレームワークを開発したいのであれば、Manual:Special pages/jaを参照して下さるようお願いします.

埋め込みフォームを持つ記事
埋め込みページ作成フォームを作る作業には2つのデザインのステップが含まれます:


 * 1) 記事にフォームを埋め込む
 * 2) ページをプログラムで編集する

セキュリティ上の理由からMediaWikiはwikitextに直接埋め込むある種のHTMLを制限します. 導入したばかりのMediaWikiではデータエントリフォームをwikitextに直接作ることはできません. しかしながら、HTMLの再導入のコントロールを可能にする様々な拡張機能が存在します.

Extension:Simple Formsはこれらの両方のステップに対してサポートを提供します. HTMLフォームはパーサ関数を利用してページに埋め込みされます. フォームによって集められたデータは記事に挿入する内容と場所を定義するクエリパラメータを設定するJavaScriptに渡されます. 拡張機能はこれらのパラメータを解釈し記事を適切に編集するプロセスを考慮します. ページ生成プロセスをより制御したいもしくは埋め込みフォームを持つ記事作成に関してベターなアイディアがあれば、Extension:HTMLetsを使うことを考えるとよいでしょう. この拡張機能によってHTMLフォームを含むファイルを定義できるようになります. これらのファイルはMediaWikiインストレーションのサブディレクトリに保存され(ランダムな編集もしくは直接のサーバアクセスを防止するためにパーミッションを適切に設定する)、 タグを使ってwikitextに挿入できます. nameは です.

一旦フォームファイルを定義すると、記事を作るためにそれによって集められたデータを使うことが必要になります. クエリパラメータを含むURLを生成するフォームを持つことでこれを行うことができます. MediaWikiはページをロードするとき、it checks the actionクエリパラメータをチェックしそれらの値に基づいた1つもしくは複数のフック関数を呼び出します.

これらのアクションの大半はhave set meaningsなので、標準的なアクションを使いたくなく、むしろ独自の"autocreate"もしくは"autoedit"アクションを作りたくなることがあります. これを行うために、関数をUnknownActionフックに追加して下さい.

プログラムでページの内容を作るもしくは変更するための詳細な情報に関しては、下記を参照して下さい:
 * EditPage.php
 * Manual:Edit token/ja

編集プロセスを引き継ぐ
特別ページもしくは記事に埋め込まれたフォームのどちらかの代替方法はページの編集プロセスを引き継ぐことです. カスタムの関数を編集プロセスの間に起動するフックを1つか複数に追加することでこれを実現できます.


 * AlternateEdit - はaction=editのときに呼び出されます. これはMediaWikiインストレーションにeditアクションへの代替的なリスポンスをeditアクションに提供する機会を提供します.

フォームベースの編集のためのこのアプローチを使う拡張機能の例に関しては、User:Barrylb/Custom article editing form with fieldsをご覧下さい. これによって拡張機能の作成者はシンプルな編集ボックスの代替物を定義できるようになります.
 * EditPage::showEditForm:initial - MediaWikiのテキストを入力するために使われるテキストウィンドウが表示されるときに呼び出されます.

このフックを使う拡張機能の一覧に関しては、Category:EditPage::showEditForm:initial extensionsを参照して下さい.

構造化データをEメールする
ウェブサイト上のフォームは構造化データを集めEメールもしくは別の通知システムを通して配布するために使うこともできます. いくつかの拡張機能はこのフォームの使う方を円滑するために設計されました. 一般的には拡張機能によってメールメッセージとsenderリストをカスタマイズできるようになります:


 * Extension:EmailForm、Extension:FormHandler send form by Email - は記事テキストに埋め込み可能なwikiタグを提供します. タグはフォームを使ってデータを集め、Eメールを通してそれを予め定義された受取人の一覧に送ります.
 * Extension:FormProcとExtension:FormTools - MediaWikiの記事に埋め込まれるPHPコードを使うEメールの内容を定義するためのフレームワーク(注: PHPコードの埋め込みは潜在的なセキュリティリスクを含みます - Extension:Runphp/Extension:Runphp pageを参照して下さるようお願いします)
 * Extension:FormMailer - Eメールメッセージを予め定義された一覧に送ります. Eメールメッセージの内容は、Extension:Simple Formsによって作られたフォームを含め、どんなフォームにもなることができます.

特別な目的を持つEメールを送信する拡張機能も利用できます. それらは小さなデザインの作業を必要としますが、カスタマイゼーションの実現性に対してより制限されています:


 * Extension:Mailman - 記事内でシンプルなフォームを埋め込む. このフォームはMailmanによって管理されたリストを行動するためのシンプルなフォームを生成します.

関連項目

 * Enhancing User Input
 * WYSIWYG editor