「サブプラグイン」の版間の差分
Mitsuhiro Yoshida (トーク | 投稿記録) 編集の要約なし |
Mitsuhiro Yoshida (トーク | 投稿記録) 編集の要約なし |
||
5行目: | 5行目: | ||
{{Moodle 2.6}} | {{Moodle 2.6}} | ||
サブブラグインは以下のプラグインタイプでサポートされます: | |||
* 活動モジュール | * 活動モジュール | ||
* | * HTMLエディタ (2.4以降) | ||
* ローカルプラグイン (2.6以降) | * ローカルプラグイン (2.6以降) | ||
* 管理ツール (2.6以降) | * 管理ツール (2.6以降) | ||
2023年6月16日 (金) 15:01時点における版
作成中です - Mitsuhiro Yoshida (トーク)
サブプラグインタイプを定義する Defining sub-plugin type
Moodle 2.6
サブブラグインは以下のプラグインタイプでサポートされます:
- 活動モジュール
- HTMLエディタ (2.4以降)
- ローカルプラグイン (2.6以降)
- 管理ツール (2.6以降)
db/subplugins.json
Starting with Moodle 3.8, the subplugins should be defined in the db/subplugins.json file. For example, from mod/workshop/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"
}
}
If you have a plugin supporting multiple versions, then you should create the db/subplugins.json file, as well as a db/subplugins.php variant which contains the following: 複数のバージョンをサポートするプラグインがある場合、db/subplugins.jsonファイルおよび以下の内容を含むdb/subplugins.phpバリアントを作成する必要があります:
<?php
$subplugins = (array) json_decode(file_get_contents(__DIR__ . "/subplugins.json"))->plugintypes;
db/subplugins.php
Each activity module can define a set of sub-plugin types (not to be confused with the subplugins themselves) in db/subplugins.php. それぞれの活動モジュールではdb/subplugins.phpでサブプラグインのセット「タイプ」(サブプラグインそのものと混同しないでください) を定義できます。 The file must contain an array called $subplugins, with the plugin type as the key for the directory containing the plugins. For example, from mod/workshop/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 The plugins themselves can be found in mod/workshop/form, mod/workshop/allocation and mod/workshop/eval, respectively. Each of these directories can contain a number of plugins, each within it's own subdirectory.プラグイン自体はそれぞれmod/workshop/form, mod/workshop/allocation, mod/workshop/evalに存在できます。 これらのディレクトリではサブディレクトリ内にいくつものプラグインを含めます。
言語ストリング
You also need to add an entry in the module's language strings to identify the subplugin(s). Again, using an example from Workshop in mod/workshop/lang/en/workshop.php one can find:
$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';
命名規則および推奨事項 Naming rules and recommendations
- sub-plugin type names must use only letters [a-z]+
- sub-plugin types must be globally unique - they must not collide with any other plugin type, core subsystem or any other sub-plugin type
- sub-plugin type names must be short because there are limits on database table name lengths
plugininfoクラス
Moodle 2.6
Developers should always define a plugininfo class that describes the properties of subplugins.
In Moodle 2.5 the class was named plugininfo_plugintype and was expected to be in plugindir/adminlib.php file.
Since Moodle 2.6 the class has to be called \plugintype_pluginname\plugininfo\subtypename and is expected to be in plugindir/classes/plugininfo/subtypename.php file.
Here is an example of the class for a plugin called mod_feed and subtype called feedview (doc comments omitted for brevity):
namespace mod_feed\plugininfo;
class feedview extends \core\plugininfo\base {
}
アンインストールサポート Uninstallation support
Moodle 2.6
Since Moodle 2.6 sub-plugin types may define custom uninstallation method. It is useful if you need to cleanup up some db tables or settings when uninstalling individual sub-plugins.
管理ページ Management page
Moodle includes only basic listing of installed sub-plugins and support for sub-plugin uninstallation.
サブプラグインを書く Writing a sub-plugin
A lot of the basic structure of a sub-plugin is the same as any other plugin. It can have a version.php (don't forget the object is $plugin not $mod), a lang directory, and can have a db directory with install.xml and all the others files can can go in there.
As a minimum, you will need the version.php file and a language file with 'pluginname' defined.
However the details of what APIs the sub-plugin has to provide depends on the type of sub-plugin it is. For example, and quiz report has to follow the rules for quiz reports that the quiz module sets, and a workshop allocation has to follow the rules set by the workshop module. When you create a new type of sub-plugin, you should document the expected API.
設定ページ Settings pages
A subplugin can include a settings.php page but it will not be included automatically. It is the responsibility of the parent module's settings.php file to include the subplugin's settings pages. See lib/editor/tinymce/ for a real example.
サブプラグインの配布 Distribution of sub-plugins
Basic set of sub-plugins is usually distributed with each add-on. It is also possible to submit add-on sub-plugins separately.