サブプラグイン
サブプラグインタイプを定義する
Moodle 2.6
サブブラグインは以下のプラグインタイプでサポートされます:
- 活動モジュール
- HTMLエディタ (2.4以降)
- ローカルプラグイン (2.6以降)
- 管理ツール (2.6以降)
db/subplugins.json
Moodle 3.8以降、サブプラグインはdb/subplugins.jsonファイルに定義する必要があります。例えばmod/workshop/db/subplugins.jsonでは次のようになります:
{
"plugintypes": {
"workshopform": "mod/workshop/form",
"workshopallocation": "mod/workshop/allocation",
"workshopeval": "mod/workshop/eval"
}
}
複数のバージョンをサポートするプラグインがある場合、あなたはdb/subplugins.jsonファイルおよび以下の内容を含むdb/subplugins.phpバリアントを作成する必要があります:
<?php
$subplugins = (array) json_decode(file_get_contents(__DIR__ . "/subplugins.json"))->plugintypes;
db/subplugins.php
それぞれの活動モジュールではdb/subplugins.phpでサブプラグインのセット「タイプ」(サブプラグインそのものと混同しないでください) を定義できます。 このファイルには$subpluginsという配列が必要であり、プラグインタイプをキーとしてプラグインを含むディレクトリを指定してください。例えばmod/workshop/db/subplugins.phpでは以下のようになります:
$subplugins = array(
'workshopform' => 'mod/workshop/form',
'workshopallocation' => 'mod/workshop/allocation',
'workshopeval' => 'mod/workshop/eval',
);
これは次の3つのプラグインタイプを定義しています: workshopform, workshopallocation, workshopeval プラグイン自体はそれぞれmod/workshop/form, mod/workshop/allocation, mod/workshop/evalに存在できます。 これらのディレクトリではサブディレクトリ内にいくつものプラグインを含めます。
言語ストリング
あなたはモジュールの言語文字列にサブプラグインを識別するためのエントリを追加する必要もあります。mod/workshop/lang/en/workshop.phpにあるワークショップモジュールを例にした場合、以下のようになります:
$string['subplugintype_workshopallocation'] = 'Submissions allocation method';
$string['subplugintype_workshopallocation_plural'] = 'Submissions allocation methods';
$string['subplugintype_workshopeval'] = 'Grading evaluation method';
$string['subplugintype_workshopeval_plural'] = 'Grading evaluation methods';
$string['subplugintype_workshopform'] = 'Grading strategy';
$string['subplugintype_workshopform_plural'] = 'Grading strategies';
命名規則および推奨事項
- サブプラグイン名には半角英字および記号 ([a-z]+) のみ使用してください
- サブプラグインタイプはグローバルに一意である必要があります - 他のプラグインタイプ、コアサブシステムまたは他のサブプラグインタイプと衝突しないようにしてください。
- データベースのテーブル名の長さには制限があるため、サブプラグインのタイプ名は短くしてください。
plugininfoクラス
Moodle 2.6
開発者は常にサブプラグインの属性を記述するpluginfoクラスを定義すべきです。
Moodle 2.5ではこのクラスはplugininfo_plugintypeという名称でplugindir/adminlib.phpファイルでの記述が求められました。
Moodle 2.6以降、クラスは\plugintype_pluginname\plugininfo\subtypenameと呼ばれます。また、plugindir/classes/plugininfo/subtypename.phpファイル内に記述する必要があります。
以下、mod_feedというプラグインおよびfeedviewというサブタイプのクラスの例です (簡潔にするためdocのコメントは省略しています):
namespace mod_feed\plugininfo;
class feedview extends \core\plugininfo\base {
}
アンインストールサポート
Moodle 2.6
Moodle 2.6以降、サブプラグインタイプではカスタムアンインストール方法を定義できます。あなたが個々のサブプラグインをアンインストールする際、いくつかのデータベーステーブルまたは設定をクリーンアップする必要がある場合、これは便利です。
管理ページ
Moodleにはインストール済みサブプラグインの基本的なリストおよびサブプラグインのアンインストールサポートのみ含まれます。
サブプラグインを書く
サブプラグインの基本的な構造の多くは他のプラグインと同じです。version.php (オブジェクトは$modではなく$pluginであることを忘れないでください)、langディレクトリ、そしてinstall.xmlおよび他のすべてのファイルを含むdbディレクトリを持つことができます。
最低限、あなたはversion.phpファイルおよび「pluginname」が定義された言語ファイルが必要です。
しかし、サブプラグインが提供しなければならないAPIの詳細はサブプラグインのタイプに依存します。例えば小テストレポートは小テストモジュールが設定する小テストレポートのルールに従わなければならず、ワークショップの割り当てはワークショップモジュールが設定するルールに従わなければなりません。あなたが新しいタイプのサブプラグインを作成する場合、期待されるAPIを文書化する必要があります。
設定ページ
サブプラグインはsettings.phpページをインクルードできますが、自動的にインクルードされることはありません。サブプラグインの設定ページをインクルードするのは親モジュールのsettings.phpファイルの責任です。実際の例はlib/editor/tinymce/をご覧ください。
サブプラグインの配布
通常サブプラグインの基本セットはそれぞれのアドオンに同梱されて配布されます。またアドオンのサブプラグインを個別に提出できます。