【Dokuwiki】struct プラグインを使ってデータ入力の定型化と簡便化

Dokuwikiの利点は、導入の簡便さとWikiシステムの検索性と入力の自由度が高い事ですが、業務で使う書類は定型的な入力も多く毎回編集画面で記述するのも手間がかかります。
それに、Wikiシステムは入力の自由度が高すぎるために、複数の人間が入力すると表現のゆらぎが出て検索にも影響が出てくる場合があります。
そこで、定型的な入力作業にstruct プラグインを使うと、省力化と併せて表現も統一できて便利になったので使い方をご紹介します。
Struct プラグイン
struct プラグインはDokuwikiをSQLiteと接続して、スキーマに沿った入力フォームが作成できるプラグインです。
データベースを使わず手軽に導入できる点がDokuwikiのメリットですが、全体の構成には影響せず特定の名前空間にだけデータベースを使って入力されたデータを保存する事ができます。
入力フォーム

導入手順
sqlite プラグインが必要になるため、拡張機能管理から「sqlite plugin」「struct plugin」の両方をインストールします。
インストール後は、追加プラグインからstruct プラグインの設定を進めます。

Structスキーマ編集
スキーマは、エクセルで言う列名と入力されるデータ形式の設定です。
チェックボックスやドロップダウンリストも使えるので、事前に設定する事で入力されるデータ形式を統一する事ができます。
データ型の指定一覧

「Save」をクリックすると次のフィールドを入力できるようになるので、必要なフィールド名・型を設定してスキーマを作成します。
Structスキーマ割り当て
作成したスキーマを、どの名前空間に適応するかの設定をします。

今回のサンプルでは「test:*」で設定したため、名前空間「:test」だけに適応されます。
下位の名前空間にもフォームを適応したい場合は「名前空間:**」を入力します。
動作確認
入力フォーム(最初のスクリーンショットと同じです)

保存後

入力した内容がフィールド名と合わせて保存されます。
メディアファイルの入力
メディアファイルの保存では、データベースには名前空間に保存されたメディアファイルへのパスが保存されます。

写真の場合はアップロード後に写真をクリックすると挿入できます。

スキーマの設定でmime typeを変更すると動画も保存できます(Dokuwikiの設定上で保存できるファイルタイプは制限があります)。
movは無理でしたが、mp4は保存できました。
スキーマの編集でmime typeを変更(直接入力)

保存後

備考
デフォルトでは「struct.sqlite3」ファイルが作成されてデータベースに設定されます。
データベースの保存先
「dokuwiki/data/meta」フォルダに作成されます。

データベースを変更する場合は、ファイルを作成後にsqlite プラグインのSQLite接続から設定します。

その他のメリット
struct プラグインで入力の定型化と省力化だけでなく、SQLiteを使うため外部システムからも連携しやすくなります。
定型文書の入力、検索はDokuwikiに任せて集計や加工は別システムなど、Dokuwiki単独では難しい操作が行いやすくなります。
Dokuwikiで作った日報システム
注意点
チェックボックスを作る場合、「複数入力?」にチェックを入れないと最初の1項目しか表示されません。
Struct プラグインで入力されたフォームはDokuwikiの検索対象にならないため、Dokuwikiで検索したい場合は編集フォームに入力する必要があります。
データベース操作での検索との兼ね合いについては、運用に合わせて設定してください。
また、「ckgedit」「discussion」がコンフリクトを起こすプラグインになっているため、入力にckgeditを使っている場合はどちらかの選択になります。
ディスカッション
コメント一覧
まだ、コメントがありません