OSDN Git Service

applied 3.2 modification
[nucleus-jp/nucleus-jp-ancient.git] / utf8 / nucleus / documentation / devdocs / plugins.html
index a9aff73..33611d2 100755 (executable)
@@ -1,7 +1,9 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
-<html xml:lang="jp" xmlns="http://www.w3.org/1999/xhtml">\r
+<html xmlns="http://www.w3.org/1999/xhtml" lang="ja-JP" xml:lang="ja-JP">\r
 <head>\r
-       <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">\r
+       <!-- $Id: plugins.html,v 1.6 2005-03-19 08:39:53 kimitake Exp $ -->\r
+       <!-- $NucleusJP: plugins.html,v 1.5 2005/03/19 08:34:53 kimitake Exp $ -->\r
+       <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
        <title>Nucleus - プラグイン API</title>\r
        <link rel="stylesheet" type="text/css" href="styles/manual.css" />\r
        <style type="text/css">\r
 <p class="heading">&nbsp;</p>\r
 <div class="heading">\r
 プラグイン API\r
-<i>2004年7月27日</i>\r
+<i>2005年3月5日</i>\r
 </div>\r
 \r
 <div class="note-trans"><strong>訳者注:</strong> \r
        <ul>\r
                <li>このドキュメントの原文は以下のURLにあります。<br />\r
                 <a href="http://nucleuscms.org/documentation/devdocs/plugins.html">http://nucleuscms.org/documentation/devdocs/plugins.html</a></li>\r
-           <li>誤訳にお気づきの方は<a href="http://nucleus.fel-is.info/bb/viewforum.php?f=7">こちら</a>へご連絡いただけると助かります。</li>\r
+           <li>誤訳にお気づきの方は<a href="http://japan.nucleuscms.org/bb/viewforum.php?f=7">こちら</a>へご連絡いただけると助かります。</li>\r
        </ul>\r
 </div>\r
 \r
 <div class="note"><strong>注:</strong> \r
        <ul>\r
                <li>このドキュメントは基本的なプラグインの書き方についての情報を提供しています。さらに質問がある方は <a href="http://forum.nucleuscms.org/viewforum.php?f=10">Plugin\r
-         Development Forum</a> (<a href="http://nucleus.fel-is.info/bb/viewforum.php?f=5">日本語フォーラム</a>)をご覧ください。</li>\r
+         Development Forum</a> (<a href="http://japan.nucleuscms.org/bb/viewforum.php?f=5">日本語フォーラム</a>)をご覧ください。</li>\r
                <li>Nucleusバージョン1.5以降に導入されたメソッドとイベントには、導入時のバージョン情報を付記しています。それらの機能を利用するときは、<code>getMinNucleusVersion</code> を適切に設定するのを忘れないでください。</li>\r
        </ul>\r
 </div>\r
@@ -60,7 +62,7 @@
 このドキュメントはNucleusプラグインの作り方についての解説です。 \r
 </p>\r
 \r
-<h1><a name="toc"></a>目次</h1>\r
+<h1><a name="toc"></a><a name="top"></a>目次</h1>\r
 \r
 <ul>\r
        <li><a href="#introduction">イントロダクション</a></li>\r
@@ -73,8 +75,9 @@
        <li><a href="#options">オプションを保存する</a></li>\r
        <li><a href="#tables">データベース・テーブル</a></li>\r
        <li><a href="#admin">プラグイン管理エリアの提供</a></li>\r
-<!--   <li><a href="#admin">Providing an admin area</a></li> \r
-       <li><a href="#parser">Using the <code>PARSER</code> class</a></li>\r
+       <li><a href="#help">ヘルプページの提供</a></li>\r
+       <li><a href="#dependency">プラグイン依存チェック</a></li>\r
+<!--   <li><a href="#parser">Using the <code>PARSER</code> class</a></li>\r
        <li><a href="#"></a></li>\r
        <li><a href="#"></a></li>\r
        <li><a href="#"></a></li>\r
@@ -157,7 +160,7 @@ class NP_HelloWorld extends NucleusPlugin {
          <pre class="example"><code>&lt;%plugin(HelloWorld)%&gt;</code></pre>\r
        注意:カッコ内の名称 (HelloWorld) は大文字小文字を識別します!</li>\r
        <li>さて、編集したスキンから生成されるページを見てみましょう。プラグイン変数を追加した場所に &quot;Hello\r
-  World                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       &quot; と見えますね?</li>\r
+  World&quot; と見えますね?</li>\r
 </ol>\r
 \r
 <p>ここまではそれほど難しくなかったと思います。さらに読み進めて理解してください。</p>\r
@@ -198,11 +201,11 @@ class NP_HelloWorld extends NucleusPlugin {
        </tr>\r
        <tr>\r
                <td><code>getMinNucleusVersion()</code></td>\r
-               <td>(v2.0b) 最低必要なNucleusのバージョンを返します。デフォルトは <code>155</code> (v1.55)を返します。後に導入されたプラグイン関連機能を利用している場合は、このファンクションを実装するようお願いします(例: v2.0 => 200)。ただし、Nucleus v1.55 はこのファンクションを使用しないため、新機能を利用したプラグインが(対応する前のシステムに)インストールされる可能性が残っています。</td>\r
+               <td>(v2.0b) 最低必要なNucleusのバージョンを返します。デフォルトは <code>155</code> (v1.55)を返します。後に導入されたプラグイン関連機能を利用している場合は、このファンクションを実装するようお願いします(例: v2.0 => 200)。ただし、Nucleus v1.55 はこのファンクションを使用しないため、新機能を利用したプラグインが(対応する前のシステムに)インストールされる可能性が残っています。</td>\r
        </tr>\r
        <tr>\r
                <td><code>getMinNucleusPatchLevel()</code></td>\r
-               <td>(v3.1) Returns the minimum required Nucleus patch level that needs to be present when running the minimal required Nucleus version (<code>getMinNucleusVersion</code>). By default, this returns <code>0</code>. This function is generally used when new plugin features are available only as patches to the latest released Nucleus version.</td>\r
+               <td>(v3.1) 最低限必要なNucleusのバージョン(<code>getMinNucleusVersion</code>)での、最低限必要なパッチレベルを返します。デフォルトは <code>0</code> を返します。このファンクションは主に新しいプラグインの機能がNucleusの最新版のパッチによって可能になる場合に用いられます。</td>\r
        </tr>\r
        <tr>\r
                <td><code>init()</code></td>\r
@@ -253,6 +256,10 @@ class NP_HelloWorld extends NucleusPlugin {
                <td><code>hasAdminArea()</code></td>\r
                <td>プラグインが独自の管理エリアをもつ場合 1 を、そうでない場合 0 を返します。デフォルトでは <code>0</code> を返します。</td>\r
        </tr>\r
+       <tr>\r
+               <td><code>getPluginDep()</code></td>\r
+               <td>(v3.2) プラグイン名の配列を返します。Nucleusはこれらのプラグインが前もってインストールされてない場合、プラグインのインストールを拒否します。デフォルトでは空の配列が返されます。<a href="#dependency">プラグイン依存に関する詳細情報はこちら</a></td>\r
+       </tr>\r
 </table>\r
 \r
 <p>実装可能なメソッドの次は、<code>NucleusPlugin</code> クラスが提供する、再実装<strong>すべきでない</strong>幾つかの特殊メソッドです。これらはプラグイン内で、<code>$this-&gt;functionName()</code>シンタックスを利用して呼び出します。</p>\r
@@ -267,37 +274,41 @@ class NP_HelloWorld extends NucleusPlugin {
        </tr>\r
        <tr>\r
                <td>\r
-                             <code>createOption(...)</code>\r
+                       <code>createOption(...)</code>\r
                        <br /><code>createBlogOption(...)</code>(v2.2)\r
                        <br /><code>createCategoryOption(...)</code>(v2.2)\r
                        <br /><code>createMemberOption(...)</code>(v2.2)\r
+                       <br /><code>createItemOption(...)</code>(v3.2)\r
                </td>\r
                <td><a href="#options" title="More info on options">新しいオプションを生成します。</a></td>              \r
        </tr>\r
        <tr>\r
                <td>\r
-                             <code>deleteOption(...)</code>\r
+                       <code>deleteOption(...)</code>\r
                        <br /><code>deleteBlogOption(...)</code>(v2.2)\r
                        <br /><code>deleteCategoryOption(...)</code>(v2.2)\r
                        <br /><code>deleteMemberOption(...)</code>(v2.2)\r
+                       <br /><code>deleteItemOption(...)</code>(v3.2)\r
                </td>\r
                <td><a href="#options" title="More info on options">オプションを削除します。</a></td>               \r
        </tr>\r
        <tr>\r
                <td>\r
-                             <code>setOption(...)</code>\r
+                       <code>setOption(...)</code>\r
                        <br /><code>setBlogOption(...)</code>(v2.2)\r
                        <br /><code>setCategoryOption(...)</code>(v2.2)\r
                        <br /><code>setMemberOption(...)</code>(v2.2)                         \r
+                       <br /><code>setItemOption(...)</code>(v3.2)\r
                </td>\r
                <td><a href="#options" title="More info on options">オプションに値をセットします。</a></td>              \r
        </tr>\r
        <tr>\r
                <td>\r
-                             <code>getOption(...)</code>\r
+                       <code>getOption(...)</code>\r
                        <br /><code>getBlogOption(...)</code>(v2.2)\r
                        <br /><code>getCategoryOption(...)</code>(v2.2)\r
                        <br /><code>getMemberOption(...)</code>(v2.2)                          \r
+                       <br /><code>getItemOption(...)</code>(v3.2)\r
                </td>\r
                <td><a href="#options" title="More info on options">オプションの値を取得します。</a></td>         \r
        </tr>\r
@@ -306,10 +317,20 @@ class NP_HelloWorld extends NucleusPlugin {
                        <code>getAllBlogOptions(...)</code>(v2.2)\r
                        <br /><code>getAllCategoryOptions(...)</code>(v2.2)\r
                        <br /><code>getAllMemberOptions(...)</code>(v2.2)                              \r
+                       <br /><code>getAllItemOptions(...)</code>(v3.2)\r
                </td>\r
                <td><a href="#options" title="More info on options">与えられたオプションにより、すべての値(コンテクストごとの一つの値)の連想配列を返します。</a></td>            \r
        </tr>   \r
        <tr>\r
+               <td>\r
+                       <code>getBlogOptionTop(...)</code>(v3.2)\r
+                       <br /><code>getMemberOptionTop(...)</code>(v3.2)\r
+                       <br /><code>getCategoryOptionTop(...)</code>(v3.2)\r
+         <br /><code>getItemOptionTop(...)</code>(v3.2)\r
+               </td>\r
+               <td><a href="#options" title="More info on options">与えられたオプションにより、すべての値のうちの最初の値を返します。</a></td>\r
+       </tr>\r
+       <tr>\r
                <td><code>getID()</code></td>\r
                <td>このプラグインのIDを返します(このIDはNucleus内部で利用されるものです)。</td>               \r
        </tr>\r
@@ -500,7 +521,7 @@ by ref</var>のように示されます。</p>
                        <dd>パースする<code>SKIN</code>オブジェクト</dd>\r
                        <dt class="ro">type</dt>\r
                        <dd>スキンタイプ('index', 'item', 'archive', 'archivelist', 'member', 'error', 'search',\r
-                 'imagepopup', 'fileparser'のいずれか)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       </dd>\r
+                 'imagepopup', 'fileparser'のいずれか)</dd>\r
                </dl></td>              \r
        </tr>\r
        <tr>\r
@@ -622,7 +643,7 @@ by ref</var>のように示されます。</p>
                        <dd><code>BLOG</code> オブジェクト</dd>\r
                        <dt class="ro">type</dt>\r
                        <dd>呼び出されたスキン変数 ('blog', 'otherblog', 'archive', 'archivelist', 'item', 'searchresults',\r
-                 'othersearchresults', 'categorylist', 'otherarchive', 'otherarchivelist')                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       </dd>\r
+                 'othersearchresults', 'categorylist', 'otherarchive', 'otherarchivelist')</dd>\r
                </dl></td>              \r
        </tr>\r
        <tr>\r
@@ -730,28 +751,48 @@ by ref</var>のように示されます。</p>
        <tr>\r
                <td>PrePluginOptionsEdit</td>\r
                <td>\r
-                       (v2.0b) 'プラグインオプションの編集'フォームが生成される前<br />\r
-                       (v2.2) パラメータ追加</td>\r
+                       (v2.0b) 'プラグインオプションの編集'フォームが生成される前\r
+                       <br />(v2.2) パラメータ追加\r
+                       <br />(v3.2) 各オプションにパラメータ追加\r
+               </td>\r
                <td><dl>\r
                        <dt class="ro">context</dt>\r
-                       <dd>(v2.2) <code>global</code>, <code>blog</code>, <code>member</code>, <code>category</code>のいずれか</dd>\r
+                       <dd>(v2.2) <code>global</code>, <code>blog</code>, <code>member</code>, <code>item</code>, <code>category</code>のいずれか</dd>\r
                        <dt class="ref">options</dt>\r
-                       <dd>次のインデックスをもつ連想配列: <code>name</code>, <code>value</code>, <code>oid</code>, <code>description</code>, <code>type</code>, <code>typeinfo</code>, <code>contextid</code> 。追加オプションをここに加えることも可能(それらで何かの処理をするときはPostPluginOptionsUpdateの記述も必要)                         </dd>\r
+                       <dd>次のインデックスをもつ連想配列: <code>name</code>, <code>value</code>, <code>oid</code>, <code>description</code>, <code>type</code>, <code>typeinfo</code>, <code>contextid</code>, <code>extra</code> 。追加オプションをここに加えることも可能(それらで何かの処理をするときはPostPluginOptionsUpdateの記述も必要)<br />\r
+                       <code>extra</code>フィールドを用いて、オプションに追加HTML(たとえばフォームのコントロール)を追加できます。もしそうする場合、 <code>extra</code> に追加する前に <code>pid</code> と <code>getID()</code> を比較し、さらに <code>name</code> をチェックすべきです。</dd>\r
                        <dt class="ro">plugid</dt>\r
                        <dd>プラグイン ID (これが気になるなら、<code>GetID()</code>を見ると理解できる)(コンテクストがglobalのときのみ存在)</dd>\r
                        <dt class="ro">contextid</dt>\r
-                       <dd>コンテクスト ID (blogid, memberid, catid コンテクストによる)</dd>\r
-                       \r
+                       <dd>コンテクスト ID (blogid, memberid, catid, itemid コンテクストによる)</dd>\r
                </dl></td>              \r
        </tr>   \r
        <tr>\r
+               <td>PrePluginOptionsUpdate</td>\r
+               <td>\r
+                       (v3.2) プラグインオプションが更新される前。(このイベントを使ってオプションの新しい値を評価したり変更したりできます)\r
+               </td>\r
+               <td><dl>\r
+                       <dt class="ro">context</dt>\r
+                       <dd>(v2.2) <code>global</code>, <code>member</code>, <code>blog</code>, <code>item</code>, <code>category</code>のいずれか</dd>\r
+                       <dt class="ro">plugid</dt>\r
+                       <dd>プラグイン ID (これが気になるなら、<code>GetID()</code>を見ると理解できる)</dd>\r
+                       <dt class="ro">optionname</dt>\r
+                       <dd>オプション名</dd>\r
+                       <dt class="ro">contextid</dt>\r
+                       <dd>コンテクスト ID (blogid, memberid, catid, itemid コンテクストによる)</dd>\r
+                       <dt class="ref">value</dt>\r
+                       <dd>そのオプションの新しい値</dd>\r
+               </dl></td>\r
+       </tr>\r
+       <tr>\r
                <td>PostPluginOptionsUpdate</td>\r
                <td>\r
                        (v2.0b) プラグインオプションの更新後<br />\r
                (v2.2) コンテクストによって異なるパラメータ</td>\r
                <td><dl>\r
                        <dt class="ro">context</dt>\r
-                       <dd>(v2.2) <code>global</code>, <code>member</code>, <code>blog</code> or <code>category</code></dd>\r
+                       <dd>(v2.2) <code>global</code>, <code>member</code>, <code>blog</code>, <code>item</code>, <code>category</code>のいずれか</dd>\r
                        <dt class="ro">plugid</dt>\r
                        <dd>プラグイン ID (これが気になるなら、<code>GetID()</code>を見ると理解できる)(globalコンテクスト)</dd>\r
                        <dt class="ro">blogid</dt>\r
@@ -764,6 +805,10 @@ by ref</var>のように示されます。</p>
                        <dd>(v2.2) MEMBER オブジェクト (member コンテクスト)</dd>                   \r
                        <dt class="ro">catid</dt>\r
                        <dd>(v2.2) category ID (category コンテクスト)</dd>                       \r
+                       <dt class="ro">itemid</dt>\r
+                       <dd>(v2.2) item ID (item コンテクスト)</dd>\r
+                       <dt class="ref obj">member</dt>\r
+                       <dd>(v2.2) ITEM オブジェクト (item コンテクスト)</dd>\r
                </dl></td>              \r
                \r
        </tr>   \r
@@ -1291,13 +1336,53 @@ by ref</var>のように示されます。</p>
                        <dd>XHTMLコードのヘッド領域に埋め込まれる追加情報。ここに追加したいものを入れてください。</dd>\r
                </dl></td>\r
        </tr>\r
-<!--   <tr>\r
+       <tr>\r
+               <td>FormExtra</td>\r
+               <td>(v3.2) このイベントは、プラグインがコメント、メンバー間メール、認証フォームのいずれかのフォーム内に追加フィールドを挿入するときに使います。フォーム処理の際に発生する <code>ValidateForm</code> イベントに対応します。</td>\r
+               <td><dl>\r
+                       <dt class="ro">type</dt>\r
+                       <dd>イベントを発生させるフォームタイプ\r
+                               <ul>\r
+                                       <li><code>activation</code></li>\r
+                                       <li><code>additemform</code> (注:これは管理画面のアイテム追加フォームではない)</li>\r
+                                       <li><code>commentform-loggedin</code></li>\r
+                                       <li><code>commentform-notloggedin</code></li>\r
+                                       <li><code>membermailform-loggedin</code></li>\r
+                                       <li><code>membermailform-notloggedin</code></li>\r
+                               </ul>\r
+                       </dd>\r
+                       <dt class="ro obj">member</dt>\r
+                       <dd><code>type</code> が <code>activation</code>のとき、このフィールドは認証メンバーの詳細情報を含みます</dd>\r
+               </dl></td>\r
+       </tr>\r
+       <tr>\r
+               <td>ValidateForm</td>\r
+               <td>(v3.2) コメント、メンバー間メール、アカウント認証のいずれかが処理されるときに呼ばれます。プラグインはこれで各データの評価を実行でき、もし不具合があれば処理を中断できます。<code>FormExtra</code> と共に使うとフォームにフィールドを追加できます。</td>\r
+               <td><dl>\r
+                       <dt class="ro">type</dt>\r
+                       <dd>処理されるフォームタイプ\r
+                               <ul>\r
+                                       <li><code>membermail</code></li>\r
+                                       <li><code>comment</code></li>\r
+                                       <li><code>activation</code></li>\r
+                               </ul>\r
+                       </dd>\r
+                       <dt class="ref">error</dt>\r
+                       <dd>フォーム処理をストップするときに、<code>error</code> フィールドに空でないエラーメッセージを記入します。このエラーメッセージはユーザー側に表示されます。</dd>\r
+                       <dt class="ref">comment</dt>\r
+                       <dd>コメントフォームのとき、コメントデータに関する連想配列を含みます。</dd>\r
+                       <dt class="ro obj">member</dt>\r
+                       <dd>認証フォームのとき、認証中のメンバー情報を含みます。</dd>\r
+               </dl></td>\r
+       </tr>\r
+<!--\r
+       <tr>\r
                <td></td>\r
                <td></td>\r
                <td><dl>\r
                        <dt></dt>\r
                        <dd></dd>\r
-               </dl></td>              \r
+               </dl></td>\r
        </tr>\r
        <tr>\r
                <td></td>\r
@@ -1305,7 +1390,7 @@ by ref</var>のように示されます。</p>
                <td><dl>\r
                        <dt></dt>\r
                        <dd></dd>\r
-               </dl></td>              \r
+               </dl></td>\r
        </tr>\r
        <tr>\r
                <td></td>\r
@@ -1313,7 +1398,7 @@ by ref</var>のように示されます。</p>
                <td><dl>\r
                        <dt></dt>\r
                        <dd></dd>\r
-               </dl></td>              \r
+               </dl></td>\r
        </tr>\r
        <tr>\r
                <td></td>\r
@@ -1321,15 +1406,39 @@ by ref</var>のように示されます。</p>
                <td><dl>\r
                        <dt></dt>\r
                        <dd></dd>\r
-               </dl></td>              \r
-       </tr>   \r
+               </dl></td>\r
+       </tr>\r
        <tr>\r
                <td></td>\r
                <td></td>\r
                <td><dl>\r
                        <dt></dt>\r
                        <dd></dd>\r
-               </dl></td>              \r
+               </dl></td>\r
+       </tr>\r
+       <tr>\r
+               <td></td>\r
+               <td></td>\r
+               <td><dl>\r
+                       <dt></dt>\r
+                       <dd></dd>\r
+               </dl></td>\r
+       </tr>\r
+       <tr>\r
+               <td></td>\r
+               <td></td>\r
+               <td><dl>\r
+                       <dt></dt>\r
+                       <dd></dd>\r
+               </dl></td>\r
+       </tr>\r
+       <tr>\r
+               <td></td>\r
+               <td></td>\r
+               <td><dl>\r
+                       <dt></dt>\r
+                       <dd></dd>\r
+               </dl></td>\r
        </tr> -->\r
 </table>\r
 \r
@@ -1346,6 +1455,7 @@ by ref</var>のように示されます。</p>
        <li><strong>blogオプション</strong>:blog設定ページで編集可能</li>\r
        <li><strong>カテゴリーオプション</strong>:blog設定ページ(のカテゴリー編集ページ)で編集可能</li>    \r
        <li><strong>メンバーオプション</strong>:メンバー編集ページで編集可能</li>\r
+       <li><strong>アイテムオプション</strong>:アイテムの追加、およびアイテムの編集ページで編集可能</li>\r
 </ol>\r
 \r
 <h2>オプションの種類</h2>\r
@@ -1365,6 +1475,30 @@ by ref</var>のように示されます。</p>
        <dd>ドロップダウンメニュー。次のような形式の追加情報が必要です: Option 1|value1|Option 2|value2|Option 3|value3 </dd>\r
 </dl>\r
 \r
+<h2>オプション・メタ</h2>\r
+\r
+<p>Nucleus v3.2よりオプション・メタデータを用いて、オプションタイプを正しい値を受け取れるように制限できるようになりました。このメタデータは <code>$typeExtras</code>フィールドにセミコロン区切りのリストで保存されます。注:selectオプションでは、selectリストは<code>$typeExtras</code>のなかで一番最初でなければいけません。</p>\r
+\r
+<table><tr>\r
+       <th>キー</th>\r
+       <th>説明</th>\r
+</tr><tr>\r
+       <td><code>datatype</code></td>\r
+       <td>Nucleus本体に、どのデータ型を使いたいかという追加情報を与えます。現在は '<code>numerical</code>' のみ利用できます。 '<code>numerical</code>' を指定することでNucleusは数値情報のみを受け付けます(クライアントサイド・サーバサイド両方でチェック) ('<code>select</code>' と '<code>text</code>'のオプションタイプで利用できます)</td>\r
+</tr><tr>\r
+       <td><code>access</code></td>\r
+       <td>'<code>readonly</code>'にセットすることで、オプションを編集不可能にします('<code>text</code>' と '<code>textarea</code>'のオプションタイプで利用できます)<br />\r
+       '<code>hidden</code>'を使うと、利用者側にそのオプションの存在を完全に隠蔽します('<code>text</code>'のオプションタイプで利用できます)</td>\r
+</tr></table>\r
+\r
+<p>設定例</p>\r
+<pre class="example"><code>// 数値のみを受け付けるテキストオプションを作成\r
+$this->createBlogOption('FooBar', 'foobar', 'text', '0', 'datatype=numerical');\r
+// 数値のみを受け付けるセレクトオプションを作成\r
+$this->createItemOption('FooBar', 'foobar', 'select', '0', '0|0|1|1|2|2;datatype=numerical');\r
+// 編集不可能なテキストエリアオプションを作成\r
+$this->createOption('FooBar', 'foobar', 'textarea', 'This textarea is readonly', 'access=readonly');\r
+</code></pre>\r
 \r
 <h2>制限</h2>\r
 \r
@@ -1372,6 +1506,7 @@ by ref</var>のように示されます。</p>
        <li>オプション名は最大20文字です。</li>\r
        <li>オプションの説明文は最大255文字です。</li>\r
        <li>オプションの値は制限ありません(v2.2より前のバージョンでは128文字の制限がありました)</li>\r
+       <li>'=', '|', ';' のキャラクターはセレクトオプション用のセレクトリストやオプション・メタデータ中で使用することはできません。</li>\r
 </ol>\r
 \r
 <h2>メソッド</h2>\r
@@ -1412,6 +1547,10 @@ by ref</var>のように示されます。</p>
 \r
 <p><strong>メンバー</strong>のコンテクストで新しいオプションを生成します(<code>createOption</code>を参照)。</p>\r
 \r
+<h3>[v3.2] createItemOption($name, $desc, $type, $defValue = '', $typeExtras = '')</h3>\r
+\r
+<p><strong>アイテム</strong>のコンテクストで新しいオプションを生成します(<code>createOption</code>を参照)。</p>\r
+\r
 <h3>setOption($name, $value)</h3>\r
 \r
 <p>すでにデータベースに存在するオプションの値を変更します。</p>\r
@@ -1439,6 +1578,10 @@ by ref</var>のように示されます。</p>
 \r
 <p>メンバーオプションの値を変更します。<code>memberid</code>属性はどのメンバーでそのオプションが有効かを示します(その他のオプション:<code>setOption</code>を参照)。</p>\r
 \r
+<h3>[v3.2] setItemOption($itemid, $name, $value)</h3>\r
+\r
+<p>アイテムオプションの値を変更します。<code>itemid</code>属性はどのアイテムでそのオプションが有効かを示します(その他のオプション:<code>setOption</code>を参照)。</p>\r
+\r
 <h3>getOption($name)</h3>\r
 \r
 <p>データベース内のオプションの値を返します。</p>\r
@@ -1462,7 +1605,11 @@ by ref</var>のように示されます。</p>
 \r
 <h3>[v2.2] getMemberOption($memberid, $name)</h3>\r
 \r
-<p>メンバーオプションの値を返します。<code>memberid</code>属性は値がリスエストされたカテゴリーを示します(その他のオプション:<code>getOption</code>を参照)。</p>\r
+<p>メンバーオプションの値を返します。<code>memberid</code>属性は値がリスエストされたメンバーを示します(その他のオプション:<code>getOption</code>を参照)。</p>\r
+\r
+<h3>[v3.2] getItemOption($itemid, $name)</h3>\r
+\r
+<p>アイテムオプションの値を返します。<code>itemid</code>属性は値がリスエストされたアイテムを示します(その他のオプション:<code>getOption</code>を参照)。</p>\r
 \r
 <h3>deleteOption($name)</h3>\r
 \r
@@ -1488,6 +1635,10 @@ by ref</var>のように示されます。</p>
 \r
 <p>メンバーオプションを削除します(<code>deleteOption</code>を参照)。</p>\r
 \r
+<h3>[v3.2] deleteItemOption($name)</h3>\r
+\r
+<p>アイテムオプションを削除します(<code>deleteOption</code>を参照)。</p>\r
+\r
 <h3>[v2.2] getAllBlogOptions($name)</h3>\r
 \r
 <p>与えられたblogオプションの全ての値を返します。結果は存在するblogidごとの連想配列です。</p>\r
@@ -1500,6 +1651,42 @@ by ref</var>のように示されます。</p>
 \r
 <p>与えられたメンバーオプションの全ての値を返します。結果は存在するmemberidごとの連想配列です。</p>\r
 \r
+<h3>[v3.2] getAllItemOptions($name)</h3>\r
+\r
+<p>与えられたアイテムオプションの全ての値を返します。結果は存在するitemidごとの連想配列です。</p>\r
+\r
+<h3>[v3.2] getBlogOptionTop($name, $amount = 10, $sort = 'desc')</h3>\r
+\r
+<p>与えられたオプションの最初の値を返します。結果は配列で、各要素がそれぞれのblogid ('id') の値 ('value') を持つ配列になっています。</p>\r
+\r
+<table><tr>\r
+       <th>パラメータ</th>\r
+       <th>値</th>\r
+</tr><tr>\r
+       <td>$name</td>\r
+       <td>オプション名</td>\r
+</tr><tr>\r
+       <td>$amount</td>\r
+       <td>必要なオプション数</td>\r
+</tr><tr>\r
+       <td>$sort</td>\r
+       <td>昇順 ('asc') か降順 ('desc') で並べ替え</td>\r
+</tr></table>\r
+\r
+<h3>[v3.2] getMemberOptionTop($name, $amount = 10, $sort = 'desc')</h3>\r
+\r
+<p>与えられたオプションの最初の値を返します。結果は配列で、各要素がそれぞれのメンバーID ('id') の値 ('value') を持つ配列になっています(パラメータは<code>getBlogOptionTop</code>を参照)。</p>\r
+\r
+<h3>[v3.2] getCategoryOptionTop($name, $amount = 10, $sort = 'desc')</h3>\r
+\r
+<p>与えられたオプションの最初の値を返します。結果は配列で、各要素がそれぞれのカテゴリーID ('id') の値 ('value') を持つ配列になっています(パラメータは<code>getBlogOptionTop</code>を参照)。</p>\r
+\r
+\r
+<h3>[v3.2] getItemOptionTop($name, $amount = 10, $sort = 'desc')</h3>\r
+\r
+<p>与えられたオプションの最初の値を返します。結果は配列で、各要素がそれぞれのアイテムID ('id') の値 ('value') を持つ配列になっています(パラメータは<code>getBlogOptionTop</code>を参照)。</p>\r
+\r
+\r
 <div class="note">\r
 <b>注:</b> プラグインクラス内のコンストラクタから、これらのファンクションを呼ぶことはできません。プラグインがロードされた後にこれらを実行したいときは、かわりに<code>init()</code>メソッド内に置きます。</div>\r
 \r
@@ -1539,9 +1726,10 @@ class NP_HelloWorld extends NucleusPlugin {
 <p>いくつかの注意点</p>\r
 <ul>\r
        <li><code>nucleus_plug_<em>plugname</em></code> のように、他のプラグインと競合しないテーブル名を考えてください。カスタムプレフィックスに対応するため、テーブル名を\r
-  <code>sql_table('plug_plugname')</code> で生成してください。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       </li>\r
+       <code>sql_table('plug_plugname')</code> で生成してください。\r
+       </li>\r
        <li>自分自身でデータベース接続をする必要はありません。PHPコマンド <code>mysql_query()</code> を使ってSQL命令を実行できます。</li>\r
-       <li>自分でデータベース接続をする場合、後でNucleusデータベースへの接続を復元するようにしてください。自前処理の後で <code>sql_connect()</code>  を呼ぶことで可能です。頻繁な再接続を避けるために、コンストラクタでそれを行うのも良いです。<code>$this- &gt;db</code>のリンクIDを保持でき、各クエリにそれを渡すことができます(訳者注:理解不足。別接続のリンクを同時に持てるということ?)。</li>\r
+       <li>自分でデータベース接続をする場合、後でNucleusデータベースへの接続を復元するようにしてください。自前処理の後で <code>sql_connect()</code>  を呼ぶことで可能です。頻繁な再接続を避けるために、コンストラクタでそれを行うのも良いです。<code>$this- &gt;db</code>のリンクIDを保持でき、各クエリにそれを渡すことができます。</li>\r
        <li>バックアップ機能を使う時は、独自テーブルもバックアップに含めるよう、<code>getTableList()</code> を再定義してください。</li>\r
 </ul>\r
 \r
@@ -1566,7 +1754,7 @@ class NP_HelloWorld extends NucleusPlugin {
 \r
        include($strRel . 'config.php');\r
        if (!$member->isLoggedIn())\r
-               doError('You\'re not logged in.');\r
+               doError('You¥'re not logged in.');\r
 \r
        include($DIR_LIBS . 'PLUGINADMIN.php');\r
 \r
@@ -1616,6 +1804,76 @@ class NP_HelloWorld extends NucleusPlugin {
 \r
 <p><code>PluginAdmin</code> クラスは助けになります。これを一度生成すれば、<code>$oPluginAdmin->plugin</code> でプラグインのインスタンスにアクセスできます。</p>\r
 \r
+<h1>プラグイン用ヘルプページ <a name="help" href="#top" class="toplink"><img src="../icon-up.gif" width="15" height="15" alt="back to top" /></a></h1>\r
+\r
+<p>Nucleus v3.2から、プラグインの機能の概要、利用できるスキン・テンプレート変数、さらに詳細な情報のありかなどを示すヘルプページを提供可能になりました。</p>\r
+\r
+<p>ヘルプページは管理画面のプラグイン一覧からアクセス可能になります。</p>\r
+\r
+<h2>基本</h2>\r
+<p>ヘルプページを提供するために、次のステップが必要です。</p>\r
+<ol>\r
+<li>プラグインディレクトリに、プラグイン名をつけたサブディレクトリを作成します。ディレクトリ名は小文字であることに注意します。<a href="#admin">管理エリア</a>を作るときと同様です。</li>\r
+<li>そのディレクトリの中に help.html を作り、プラグインについての文章を記述します。次の雛型からはじめると良いでしょう。\r
+<pre><code>&lt;h3&gt;プラグインの概要&lt;/h3&gt;\r
+\r
+&lt;p&gt;このプラグインはヘルプページがいかに機能するかを示すためだけのものです&lt;/p&gt;\r
+\r
+&lt;h3&gt;インストール&lt;/h3&gt;\r
+\r
+&lt;p&gt;これを読めてるならインストールは正しく出来てます :-)&lt;/p&gt;\r
+\r
+&lt;h3&gt;スキン変数&lt;/h3&gt;\r
+\r
+&lt;p&gt;このプラグインはただのテストケースなのでスキン・テンプレート変数はありませんが、書くとすれば。\r
+\r
+&lt;ul&gt;&lt;li&gt;&lt;b&gt;&lt;%HelpPageTestCase1%&gt;&lt;/b&gt;: なにかをする&lt;/li&gt;\r
+&lt;li&gt;&lt;b&gt;&lt;%HelpPageTestCase1(foobar)%&gt;&lt;/b&gt;: 別のなにかをする&lt;/li&gt;&lt;/ul&gt;&lt;/p&gt;\r
+\r
+&lt;h3&gt;サポートとバグ報告&lt;/h3&gt;\r
+\r
+&lt;p&gt;さらなるサポートやバグ報告のために、次のフォーラムのスレッドを利用してください。\r
+&lt;a href="http://forum.nucleuscms.org/viewtopic.php?t=&lt;トピックID&gt;"&gt;\r
+http://forum.nucleuscms.org/viewtopic.php?t=&lt;トピックID&gt;&lt;/a&gt;&lt;/p&gt;\r
+\r
+&lt;h3&gt;バージョン履歴&lt;/h3&gt;\r
+\r
+&lt;ul&gt;&lt;li&gt;Version 0.1: 最初のテストケースバージョン&lt;/li&gt;\r
+&lt;li&gt;Version 0.0: その前のバージョン ;-)&lt;/li&gt;&lt;/ul&gt;</code></pre>\r
+</li>\r
+<li>supportsFeature('HelpPage') で0より大きい数字を返すように設定します。\r
+<pre><code>function supportsFeature($what) {\r
+       switch($what) {\r
+       case 'HelpPage':\r
+               return 1;\r
+         default:\r
+               return 0;\r
+       }\r
+  }</code></pre>\r
+</li>\r
+</ol>\r
+\r
+<h1>プラグイン依存チェック <a name="dependency" href="#top" class="toplink"><img src="../icon-up.gif" width="15" height="15" alt="back to top" /></a></h1>\r
+\r
+<p>v3.2から、他のプラグインとの依存関係を宣言する新しいプラグインインターフェイスが追加されました。他のプラグインの機能を必要とするプラグインに利用できます。特に依存関係が成立しなくて正しく機能しない状態を検知するときに便利です。</p>\r
+\r
+<h2>この機能を利用するプラグインの書き方</h2>\r
+\r
+<p>現実世界での例からはじめましょう。</p>\r
+\r
+<p>NP_PageLinkList は NP_BlogWithOffset の機能を利用するため、利用者には NP_BlogWithOffset のインストール後に NP_PageLinkList をインストールさせたいとします。NucleusはこのAPIによって、インストール前に依存関係を検知させる方法をプラグインに提供します。</p>\r
+\r
+<p>このケースでは、NP_PageLinkList 側に NP_BlogWithOffset が必要だということを認識させるコードを埋め込みます。プラグインがインストールされる際に、Nucleusコアは <code>getPluginDep()</code> というファンクションを呼び出します。このファンクションは必要なプラグインのリストを返し、コアはインストール済みのプラグインをチェックして、もし依存関係に欠如があればインストールを拒否します。</p>\r
+\r
+<p>必要なことは NP_PageLinkList にこのファンクションを追加する、ただそれだけです。</p>\r
+\r
+<pre><code>function getPluginDep() {\r
+        return array('NP_BlogWithOffset');\r
+}</code></pre>\r
+\r
+<p>このプラグイン依存チェックは、他のプラグインが依存しているプラグインがアンインストールされることも防ぎます。</p>\r
 \r
 </body>\r
 </html>\r
+\r
+\r