dataentry
は、前に記述された dataentry
を上書きします。
なので、- 一ページ上に多くの dataentry ブロックが表示されていても - 最後の値のみ SQLite のデータベースに格納され、例えば datatable
による出力として取得できます。この拡張は二年以上更新されていません。もはや維持管理や対応がされておらず、互換性に問題がある可能性があります。
この拡張機能は 'plugin' または 'template' 名前空間にないため、無視されます。
類似 datatemplate, dtable, fields, json, jsoneditor, pagemod, semanticdata, strata, struct
タグ data, database, listing, sqlite, tables, tags
必要とされるプラグイン datagraph, dataloop, datapopup, datasearchform, datatemplate, orgchart, podcast
このプラグインは Dokuwiki の任意のページに構造化データを追加できるようにします。 このデータを付加的な名前付き属性と考えて下さい。 この属性は照会・集約することができます。 このプラグインは、ここでリポジトリプラグインがやっていることに似ていますが、内部は非常に異なっています。
sqlite プラグインを更新し、SQLiteバージョンのアップグレードについての指示に従ってください。
2010年3月22日以来、データプラグインはsqlite プラグインを 使用することになりました。このため、データベースファイルの場所と構造が変更されました。 古いデータベースを保持したままデータプラグインを更新するには、 次の手順を実行する必要があります:
data/cache/dataplugin.sqlite
ファイルを data/meta/data.sqlite
へ移動CREATE TABLE opts (opt,val); CREATE UNIQUE INDEX idx_opt ON opts(opt); INSERT INTO opts VALUES ('dbversion', 1);
この手順の前にデータのプラグインをアップグレードした場合、空の data.sqlite
が作成されます。既存の data/meta/data.sqlite
の上に data/cache/dataplugin.sqlite
をコピーする必要があります。
このプラグインは複数の部品でできており、それぞれがよく似た構文を持っています。 構文は様々なキーと値のペアを持ったブロックを定義します。 キーと値のペアはプラグインの部品の動作を設定しています。 以下の部品が用意されています:
この部品は、ページに構造化データを追加するために使用します。 入力したデータはすべて該当のページに関連付けらます。 なので、1ページ上で一回しか使用できません。 1) 例から始めましょう。
---- dataentry projects ---- type : web development volume : 1 Mrd # いくら払うか? employees : Joe, Jane, Jim customer_page : customers:microsoft deadline_dt : 2009-08-17 server_pages : servers:devel01, extern:microsoft website_url : http://www.microsoft.com task_tags : programming, coding, design, html ----
ハイフンと dataentry
という単語でブロックが定義されています。
dataentry
キーワードの後ろに単語(ページクラス)を追加することもできます。
それらは最終的なHTML出力にCSSクラスとして追加され、後に %class%
として照会されます。
別種類の入力は後で表示するとか特定の種類のページの集合に制限するとかの出力方式に使えます。
ブロックにコメントを追加するためには #
文字を使います。それは無視され表示されませんが保存はされます。データとして #
が必要な時はバックスラッシュで回避して下さい(\#
)。バックスラッシュが必要な時も同じです (\\
)。
ブロックの中は 項目名 とその 値 があります。項目名にはいくつかルールがあります:
s
文字は、カンマ区切りの複数値が設定できます( employees 行のように)。 これは与えられた項目名から最後の s
文字を消すことになります。thickness_ : 1cm
). s
to your column name…name : John
→ name: Johnnames: John, Jack
→ name: John, Jackname_tag : John, Jack
→ name: [[John, Jack]]name_tags: John, Jack
→ name: [[John]], [[Jack]]thickness : 1cm
→ thicknes: 1cmthickness_: 1cm
→ thickness: 1cmthicknesss: 1cm, 2inch
→ thickness: 1cm, 2inchdt
– YYYY-MM-DD フォームの日付。単純なテキストとして形式化され、入力が正しい形式かチェックされます。page
– 入力は Wikiのページ名として扱われ、出力はリンク化されます。title
– page に似ていますが、パイプで区切られた表示タイトルが追加されます。nspage
– page に似ていますが、項目名はリンクの名前空間として扱われます。url
– 値は外部リンクとして扱われます。tag
– 値は、項目名と同じ名前のページにリンクされます。値そのものは Data Table の制御フィルタとなります。 (change target by a type alias)mail
– 値は、有効なメールアドレスを含むかをチェックされ、他のテキストは名前として使用し、メールアドレスにリンクされます。img<num>
– 値は、画像のURLまたはローカルメディアIDと見なされます。<num>オプションは、イメージのサイズを変更するピクセル単位(デフォルト40)です。wiki
– 値を wikitext として扱います。(性能に影響があるので、この型は慎重に使用して下さい。)pageid
– 値はデータ入力ページヘのリンクの標題です。hidden
– the input will not be shown in the data entry or the entry editors
は一番最後に追加します( server_pages
行のように)。値の中で、地域依存リンクの作成に便利な二つのプレースホルダーが使えます。
値用変数 | 意味 |
---|---|
%lang% | デフォルトのwikiの言語の言語コード。例:en |
%trans% | 現在のページの地域の言語コード。 Translation プラグイン必須。 de:test:page というページリンクの場合 de が置換えられる。デフォルト言語に戻る。Translation プラグインなしの場合は空。 |
Wiki 内の様々なページに添付された構造化データを集計するために、この構文が使用されます。 あなたが必要なデータを含んだ設定可能なテーブルとして表示します。テーブルはソートや抽出ができます。ページングも対応しています。dataentry 同様に、datatable キーワードの後ろに単語(ページクラス)を追加することができます。その単語は最終的なHTML出力にCSSクラスとして追加されます。再び例から始めましょう:
---- datatable ---- cols : %pageid%, employees, deadline_dt, volume headers : Details, Assigned Employees, Deadline, $$$ max : 10 filter : type=web development sort : ^volume ----
上記の設定は、すべてのWeb開発プロジェクト、プロジェクトに割り当てられた従業員、期限、量を持つテーブルが表示されます。テーブルは、量でソートされ、上から10プロジェクトが表示されます。
dataentry と同様に、型を列名の後ろに付けることで列の値を整形できます。
上記の deadline_dt
列のように。
コロンの前のキーワードは設定オプションで、コロンの後の値は実際の設定値です。 耐障害性を口上させるため、多くの場合複数のオプション名が可能です。利用可能なオプションのリストは、次のとおりです:
オプション(s) | 必須? | 説明 |
---|---|---|
cols select | yes | 表示する属性。Data Entry で使用した同じ 項目名 を使います。 |
head header headers | no | 指定した場合、項目名の代わりにテーブルヘッダーで使用されます。 |
max limit | no | 表示行数。該当行が多すぎる場合、テーブルを参照し易くします。指定のない場合、該当行が全て表示されます。 |
sort order | no | どのカラムでテーブルをソートするかを指定。逆ソートの場合、^ を前に付加する。 |
filter where filterand and | no | カラムの値で抽出する。複数指定可能。複数 filter は AND演算されます。 |
filteror or | no | filter に似ているが、複数指定は OR演算されます。 |
dynfilters | no | 1 を設定すると、動的にテーブルをフィルタリングするための入力フィールドの行を有効にする。 |
summarize | no | 1 を設定すると、カラムの合計を計算します。 |
align | no | カラムの配置リスト。left (l )、center (c )、 right (r ) |
rownumbers | no | 1 を設定すると、行数を表示します。 |
widths | no | 特別な列幅。例: 50px, 20em, -, 10% 。ダッシュ - で列を飛ばします。 |
抽出には、複数の比較が可能です:
比較 | 意味 |
---|---|
= | 完全一致 |
!= or <> | 完全一致でない |
< | 未満 |
<= | 以下 |
> | より大きい |
>= | 以上 |
~ | ワイルドカードマッチ。ワイルドカードとして * を使用します。 Apple* は Apple Pie と Apple Computer に一致します。例)dessert~ *Pie 。 大文字小文字は区別しません。 |
*~ | ワイルドカードマッチ。検索語を含むモノを探します。例)dessert*~ Pi は Apple Pie に一致。 |
!~ | 負のワイルドカードマッチ。一致しないすべてのものを選択します。 |
抽出では、現在ログイン中のユーザや現在の日付に相当する特殊な単語が使用できます。例:filter: username=%user%
抽出用変数 | 意味 |
---|---|
%user% | 現在ログイン中のユーザに一致 |
%now% | 現在の日付との比較 |
%lang% | デフォルトのwikiの言語の言語コード。例:en |
%trans% | 現在のページの地域の言語コード。 Translation プラグイン必須。 de:test:page というページリンクの場合 de が置換えられる。デフォルト言語に戻る。Translation プラグインなしの場合は空。 |
この構文は、現在のページのすべてのキャッシュを無効にします!
フィールド名として使用可能ないくつかの変数があります:
フィールド名用変数 | 意味 |
---|---|
%pageid% | ページ名 全て |
%title% | ページの「タイトル」。このページの最初の見出しです。 |
%class% | data entry のクラス |
datalist
は、上記の datatable
と同じように動作し、同じパラメータを受付けます。
テーブルを表示する代わりに、順不同のリストが表示されます。
行は一つのリスト項目となり、選択されたカラムは標準ではスペースで結合されます。
sepbyheaders
が設定されていない場合、header
パラメータは無視されます。
ページ区切りは使用されません。
オプション | 必須? | 説明 |
---|---|---|
sepbyheaders | no | 1 を設定すると、値の間の区切りとしてヘッダーを使用します。引用符で囲めば、ヘッダー内にスペースを追加できます。例:" - " |
---- datalist ---- cols : %pageid%, volume max : 10 filter : type=web development sort : ^volume ----
このモードでは、構造化データの一部を共有し現在のページと似ているページの一覧を表示できます。
類似比較のために使用するカラムは cols
オプションで指定する必要があります。
追加のフィルタおよびソートオプションも設定できます。
次に例を示します:
---- datarelated ---- cols : task_tags, type title : Similar projects max : 5 sort : ^volume ----
この設定では task_tags
と type
カラムの値が似ているページを探します。
最大 5ページで、volume でソートされます。
使用可能なオプションは datatable を参照して下さい。
このモードはページのキャッシュを無効にしないので、リストは最新でない可能性があります。
この構文は、指定した項目名の値をタグクラウドとして表示します。
それぞれの値は(target
オプションで特に設定しない限り)現在のページにリンクバックします。
同じページ上に Data Table も作成する必要があります。
このテーブルは選択したタグに合わせた内容によって抽出されます。
例:
---- datacloud ---- field: employees min: 2 limit: 20 ----
上のコードは、少なくとも二つのプロジェクトに割り当てられた従業員のクラウドを表示します。 最大20人の忙しい従業員が表示されます。
クラウドで利用可能はオプションは以下のとおりです:
オプション(s) | 必須? | 説明 |
---|---|---|
field select col | yes | クラウドに使用する属性は? |
limit max | no | 表示タグの最大数。定義されない場合、すべて表示します。 |
min | no | タグに要求される最小カウント数。定義されない場合、すべて表示します。 |
page target | no | 操作する Data Table を持っているページ。定義されない場合、現在のページが設定されます。 |
datatable 構文で説明した抽出条件も指定できます。
入力と出力 BOX の位置決めと様式設定は簡単な CSS で行います。 構文キーワードの後に追加された全ては、DIV の追加クラス名として割り当てられます。 また、入力ボックス項目のクラスとして使用されるフィールドキーとなります。
ページの先頭に指定された、次の “dataentry” ボックスを想定しましょう。
---- dataentry character24 ---- name : Jack Bauer agency_nspage : CTU status_tags : alive, active, disowned, furtive .... more info ----
<dokuwiki>/conf/userstyle.css
の CSS によってこのボックスの様式設定ができます2)。
次がその例です:
div.character24 { /* コンテナボックス用のコード。位置、配置、枠線はここです。 */ float: right; width: 33%; } div.character24 dl > dt { /* 条件定義の様式設定 */ font-variant: small-caps; } div.character24 dl > dt + dd { /* 定義値の様式設定 */ font-family: sans-serif; } div.character24 dl dd.name{ /* 他よりも名前は大きくなる */ font-size: 120%; }
Type aliases は、(page
のような組み込みタイプ又はタイプなしのような)ベースタイプと必要に応じて接頭語・接尾語・カンマ区切りの有効値で定義された特注のデータタイプです。Type aliases は、管理者メニューの独自のページで管理され、データベースに記録されています。記録された Type aliases は、組み込みタイプ同様に、dataentry datalist datatable 内で使用できます。
Google Maps を開く map
という新しいタイプを例にします:
map を Interwiki に定義します:
map http://maps.google.com/maps?q={NAME}
次に「管理」→ 「Data Plugin: Field Aliases」 (do=admin&page=data_aliases
) で定義します:
Type Alias | 型 | 接頭語 | 接尾語 | 有効値 |
---|---|---|---|---|
map | wiki | [[map> | ]] |
これで以下のように使用可能です:
---- dataentry ---- Address_map : 51.103028,-1.780611 ----
有効なアドレスを入力することもできます:例) Bahnhofsstraße 5, Regensburg, Deutschland
Tag links use default the column name as target page. You can change it by a type alias. Give as Prefix the url of the page that has your datatable. Clicking on taglink will filter that table by the tagvalue.
Type Alias | 型 | 接頭語 | 接尾語 | 有効値 |
---|---|---|---|---|
newtag | tag | namespace:pagewithdatatable |
which you could use now as:
---- dataentry ---- Address_newtag : cheese ----
Clicking on this cheese
tag will refer to namespace:pagewithdatatable
and filter on cheese
.
iCal のように vCard プラグインのために設定します。
データプラグインは、データ入力のためにカスタムエディタを提供する最初のプラグインです。
DokuWiki では、データ入力には自分自身の編集ボタンがあります。このボタンを押すと、編集フォームが表示されます。edit_content_only
の設定オプションに応じて、Data Entry の内容の編集またはさらに構造の編集が可能です。例:フィールドの名前・種類の変更またはフィールドの追加・削除。現在の bureaucracyプラグインバージョンでは、ページのフィールドと日付型を編集可能な JavaScript magic も可能です。
edit_content_only
設定オプションが有効になっている場合、親切な入力欄を使います:
有効値
欄の値を埋めて表示されるドロップダウンリストdt
型の入力欄用の日付入力カレンダー要件:日付入力カレンダーとページ提案には、JavaScript magic を提供する bureaucracyプラグインが必要です。
ページ提案は、page
型の Type aliases の場合に有効になります。
二個目の aliase は、画像内でもしめされているように plugin:
名前空間内のページだけ表示されます。
Type Alias | 型 | 接頭語 | 接尾語 | 有効値 |
---|---|---|---|---|
pagesuggest | page | |||
pagesuggestplugin | page | plugin: |
左:日付入力カレンダー入力欄と単独選択欄と複数選択欄のあるカスタムエディタ。右:ページ提案。
カスタム入力エディタが使用する構造化データプラグインの親切な入力欄は、bureaucracyプラグインの入力フォームの入力欄にも利用できます。 有効な値の選択・日付入力カレンダー・ページ提案が該当します。 他の type も可能ですが、単純なテキスト入力欄となります。
構造化データプラグインの入力欄を利用した、Bureaucracy プラグインフォームの入力欄の定義例です:
dataplugin Tag _fixedtag dataplugin Multitags _fixedtags dataplugin "Date of happening" _dt dataplugin "Plugin Page" _pagesuggestplugin
最後の行は、前のセクションの type alias を使用し、最初の2行は type alias を組み合わせています:
Type Alias | 型 | 接頭語 | 接尾語 | 有効値 |
---|---|---|---|---|
fixedtag | tag | Book, Notebook, Reader |
左の画像は Bureaucracy プラグインフォーム内の日付入力カレンダーで、右の画像は有効値を定義した type alias で作成した単独選択欄と複数選択欄です。
translation プラグインを使用する場合、異なる言語で同じデータ項目を使用したいこともあります。 プラグインは項目名を翻訳できますが、値は翻訳されません。
項目名を翻訳するには、conf/lang/<langcode>/data-plugin.php
ファイルを作成します。
ファイルには、配列のキーがフィールド名、値が翻訳の $lang
という名前の PHP 配列があります:
<?php $lang['somekey'] = 'My name for the key'; $lang['otherkey'] = 'My name for the other key';
フィールド名は型なしで設定します。
deadline_dt
ではなく deadline
です。
いくつかの使用事例です:
datatable
と個々のサーバーページのソース内にある dataentry
を探して下さい。
SQLiteデータベースにコピーされるデータは、dataentryボックスを含むページが変更されるたびに自動的に更新される はず です。
If you deleted or renamed pages outside the wiki, the database will still contain data about now non-existing pages. These can be cleaned using the Data Plugin: Clean up database
entry in the Admin menu.
しかし、必ずしも 100% 信頼できない状態ようなバグがあるかもしれません。 壊れている可能性や最近の修正実績を知るために、open bugs 章や 変更履歴 章を見て下さい。
データベース全体を削除した場合、データベースを再作成するために全ての入力ページを再描画する必要があります。これを自動的に行う方法はありません。
ページを外部から変更した場合やデータベースを初期化した場合、データベースを再作成するやり方です:
もちろん、SQLiteのコマンドライン·クライアントを使ってデータベースファイルを直接オープンし 、SQLクエリを介して操作することもできます。
まだ質問があれば、フォーラムを検索し、前に質問されていない場合は質問して下さい。 Github の問題追跡にバグ報告を書いて下さい。
バグと機能要望は Github の問題追跡に提出してください。 パッチは diff ユニファイド形式かgitパッチで開発部門に送ってください。 github 上でフォークし、merge resuest を送ってくれるとなお良いです。
dataentry
は、前に記述された dataentry
を上書きします。
なので、- 一ページ上に多くの dataentry ブロックが表示されていても - 最後の値のみ SQLite のデータベースに格納され、例えば datatable
による出力として取得できます。