table_edit.inc.php†
サマリ | 編集可能テーブル |
リビジョン | 1.18 |
対応バージョン | 1.4.5_1, 1.4.6, 1.4.7, 1.5.4 |
投稿者 | qinf |
投稿日 | |
http://wiki.trick-with.net/TableEdit.html みたいな表の編集が楽にできるプラグイン
設置方法†
- table_edit.inc.phpをpluginディレクトリに入れる
- pngファイルをimageディレクトリに入れる
使用方法†
あらかじめ「ほげふが」という表専用ページを作っておきます。
このとき、少なくとも表のヘッダは作成しておいてください。
#table_edit(ほげふが)
とすることで使用できます。
- 設置数の初期設定は4つです。お好みに応じて設定し直して下さい。
#table_edit(表ページの名前 [, ソート文字列])
ソート文字列は次のように指定します。
[ソートしたい列の番号1][追加指定記号1] : [ソートしたい列の番号2][追加指定記号2] ...
- ソートしたい列の番号: 「編集」を押したときの、1から始まる数値
- 追加指定記号: n, r, s
- n: 数字順に並び換えます
- s: 辞書順に並び換えます
- r: ソートの順序を逆にします
- nとsは同時に指定できません
- nとsを省略したときにはs(辞書順)として扱います
例を下にいくつか挙げておきます。
- ソートを行わない
#table_edit(ほげふが)
- 2列目でソート
#table_edit(ほげふが, 2)
- 2列目で数値順ソート
#table_edit(ほげふが, 2n)
- 2列目で数値順ソート('2n'のときと逆の順序)
#table_edit(ほげふが, 2nr)
- 1列目で数値順ソートし、数値が同じ場合はさらに3列目でソート(主キーが1列目で、副キーが3列目)
#table_edit(ほげふが, 2n:3)
また、次の点に注意してください。
- 行方向でのソート機能はありません
- ソートを使用した場合は、書式指定行による効果が意図した結果にならない可能性があります
- ソート文字列の指定を省略した場合や、read.inc.phpの代わりに使用する場合にはPLUGIN_TABLE_EDIT_DEFAULT_SORT_STRINGに指定されている文字列が使用されます
プラグイン内設定†
- PLUGIN_TABLE_EDIT_MAX : 設置数の上限(初期値: 4)
- PLUGIN_TABLE_EDIT_FIELD_WIDTH : 編集画面の編集フィールドサイズ指定(初期値: 100)
- PLUGIN_TABLE_EDIT_FORCE_TIME_UPDATE : 編集時に常に日付を更新するかどうか(初期値: false)
- PLUGIN_TABLE_EDIT_DEFAULT_SORT_STRING : デフォルトのソート方法(初期値: '')
- PLUGIN_TABLE_EDIT_USE_MULTIROW : 複数行編集を可能にするかどうか(初期値: false)
- PLUGIN_TABLE_EDIT_IMAGE_BASEURL : 画像のあるURLの位置。空文字列なら自動推測する (初期値: '')
- PLUGIN_TABLE_EDIT_FORM_SELECTION_MAX_ITEM : 既知の項目を選択可能にするときの最大項目数。これを越えると従来通りのテキストボックスが表示される (初期値:0)
- PLUGIN_TABLE_EDIT_FORM_SELECTION_RADIO : 既知の項目を選択時の表示。trueならラジオボタン、falseならプルダウンメニュー (初期値: true)
ダウンロード†
ダウンロード -> http://muffin.cias.osakafu-u.ac.jp/wiki/?plugin=attach&refer=FrontPage&pcmd=open&file=table_edit-1.18.zip
(現在、attachプラグインによるXSSのためファイルを添付できないので、1.2以降のファイルはpukiwiki本家ではなく外部に置かれています)
ダウンロード PHP8対応版 (by umorigu)†
github.com:umorigu/pukiwiki.table_edit_plugin
- オリジナルのv1.16版を改変
- UTF-8変換
- PHP8対応 (PHP8.1で動作確認)
- PukiWiki 1.5.4対応 (1.5.3以下では動作しない)
オリジナルのダウンロードサイトにアクセスできなくなっているため、以前ダウンロードした v1.16 を PHP8対応したものをGitHubにアップロードしました。
オリジナルからの変化点は github.com:umorigu/pukiwiki.table_edit_plugin/pull/2 で確認できます。
制限 / バグ†
- HTTPのGETメソッドを使用しているので文字数制限がある (2000byte程度)
- ひとつの項目(セル)に ' と " を混在させている場合、編集画面でその項目の文字列が正しく表示/更新されません
- 複数行編集 (PLUGIN_TABLE_EDIT_USE_MULTIROW) を可能にしているならこの問題はなくなるかも
- これはpukiwikiの制約ではなく、エスケープシーケンスを理解しないブラウザ(もしくはHTML自体)の制限によるものです
ライセンス†
PukiWikiと同じライセンスです(内部にPukiwikiソースを使用しているため)。
TODO†
- 書式指定行を有効にする
- 現状では2行目あたりにおいてください
- 対応はやや面倒
read.inc.phpの代わりに使用する†
注意: この方法は次のような問題が生じるかもしれません。
- セキュリティ上の問題などの重大な問題が発生する可能性があります。
- read.inc.phpの完全な互換がないかもしれません。
read.inc.phpはplugin=やcmd=が指定されていない場合に内部で暗黙に呼び出されるプラグインです。
このプラグインが呼び出されるときに、代わりにtable_edit.inc.phpが呼び出されるようにすることで、
通常のページの表が編集可能になり、表専用ページが不要になります。
方法1†
方法2 (バージョン1.18以前まで可能)†
プラグインの置き換えは、具体的には次のような手順で行います。
- table_edit.inc.phpを次のように修正する(左の数値は1.16での行番号)。
24 //define('PLUGIN_TABLE_EDIT_PLUGIN_NAME', 'read');
25 define('PLUGIN_TABLE_EDIT_PLUGIN_NAME', 'table_edit');
を
24 define('PLUGIN_TABLE_EDIT_PLUGIN_NAME', 'read');
25 //define('PLUGIN_TABLE_EDIT_PLUGIN_NAME', 'table_edit');
にする。
553 //function plugin_read_action()
554 function plugin_table_edit_action()
を
553 function plugin_read_action()
554 //function plugin_table_edit_action()
にする。
- 元に戻すことができるようにread.inc.phpをリネーム(例: read.inc.php.org)する
- table_edit.inc.phpをread.inc.phpにリネームする
その後、てきとうなページに表を作成してみて、
表の右の列に「追加」や「削除」が追加されているか確認してください。
- read.inc.phpとして使用した場合、従来の#table_editの書式は使用できません。
更新履歴†
- 1.18: table_edit-1.18.inc.php
- 既知の項目をメニューから選択可能にした (PLUGIN_TABLE_EDIT_FORM_SELECTION_MAX_ITEM)
- 新規項目追加には、「新しい項目を追加...」を選択する必要がある(安全側に倒すため)
- PLUGIN_TABLE_EDIT_FORM_SELECTION_RADIOをfalseにするとプルダウンメニューになる。ただし、新規項目追加が直感的にわかりづらくなるだろう
- 1.17: table_edit-1.17.inc.php
- 編集行を複数行にすることができるようにした (PLUGIN_TABLE_EDIT_USE_MULTIROW)
- &br; と 改行を相互変換しているだけ
- 複数行かどうかは項目別に指定できない
- 行数によって自動的に伸長 (ただし制限なし)
- エラーメッセージの#include()を#table_edit()にした
- アイコンの使用を可能にした (PLUGIN_TABLE_EDIT_IMAGE_BASEURL)
- アイコンを使用したくない場合はPLUGIN_TABLE_EDIT_IMAGE_BASEURL自体を (空文字列ではなく) 未定義にする
- /wiki/image/直下に置いている場合は自動でアイコン画像を探索
- てきとうにパスを推測しているので見つからない場合があるかも
- もしアイコン画像が見つからないなら、PLUGIN_TABLE_EDIT_IMAGE_BASEURLでimgのある場所のベースURLを指定する
- 1.16: table_edit-1.16.inc.php
- 追加時に「タイムスタンプを変更しない」を追加
- read.inc.php時に、空白を含むページだと項目編集後のジャンプが上手く動作しないバグを修正
- 1.15: table_edit-1.15.inc.php
- 1.14での「read.inc.php時にPKWK_READONLYのチェック」は行わないのが正しいので修正(元に戻す)
- (指定が面倒な)ソート機能
- 1.14: table_edit-1.14.inc.php
- カラム数の異なる行を含むテーブルが処理できないバグを修正
- pukiwiki標準のように、カラム数の異なる行から別のテーブルとみなす(手作業で修正してください)
- 「タイムスタンプを変更しない」チェックボックス
- #table_edit(...)で使用する場合は親ページは変更したことにはならない
- デフォルトはタイムスタンプ変更あり(従来と挙動が反対だが)
- PLUGIN_TABLE_EDIT_FORCE_TIME_UPDATEによってタイムスタンプの変更を強制することが可能
- read.inc.php時にPKWK_READONLYのチェックをしていないバグを修正
- いくつかの未使用globalを削除
- 1.13: table_edit-1.13.inc.php
- 1.12: table_edit-1.12.inc.php
- $lastmodによるHTTPヘッダLast-Modifiedの処理がされていない不具合を修正
- オリジナルのread.inc.phpを参考に処理部を修正
- 1.11: table_edit-1.11.inc.php
- CSVテーブルに対応
- $referer=1とすることによる外部リンク元が記録されない不具合を修正
- 凍結時にも編集等のリンクが表示されている不具合を修正
- セル内で " が使用できない不具合を修正
- ただし ' と " とを混在できない(制限 / バグの項を参照)
- 1.10: table_edit-1.10.inc.php
- 閲覧認証(check_readable)の扱いに関するバグを修正
- 1.9: table_edit-1.9.inc.php
- 編集認証(check_editable)の扱いに関するバグを修正
- 存在しないページを指定したときにeditプラグインに飛ばすように修正
- PKWK_READONLYに対する扱いに関するバグを修正
- 1.8: table_edit-1.8.inc.php
- 1.7: table_edit-1.7.inc.php
- 内部処理の大幅な変更
- #contentsがテーブルページ内で機能しないバグを修正
- ソート(ユニークなキーのみ可能)が機能するよう修正
- 表のキャプションを廃止
- 1.6: table_edit-1.6.inc.php
- 複数の表に対応できるように変更
- それによって、表のキャプション文字列が意味がなくなった(次の版で廃止予定)
- 多少の変更で、table_editがreadの代りになるように変更
- 通常のページの表が編集可能になり、表専用ページが不要になる
- 具体的には21行目と22行目のコメントアウトを入れ換え、521行目と522行目のコメントアウトを入れ換える
- 警告: readの完全互換ではないため、表示等に不具合が生じる可能性がある
- 1.5: table_edit-1.5.inc.php
- 表専用ページで、表の前後に文章などを入れることができるように修正
- 表のCaptionを追加
- Usageが正しく表示されないバグを修正
- 1.4: table_edit-1.4.inc.php
- フッタで'add'を表示せずに'edit'となるバグを修正
- 追加時に'delete'ボタンが出るバグを修正
- 表示されている文字のカスタマイズをプラグイン内設定に追加(汎用的なものはグローバルから取って来るほうがよい?)
- 削除時の確認用の'delete'チェックボックスを追加
- 編集時に'copy'チェックボックスを追加(編集結果を新しい行として追加できる)
- 1.3: table_edit-1.3.inc.php
- 編集画面の編集フィールドサイズ指定
- 編集画面に削除ボタンを追加
- 隠しでソート機能(今のところユニークなキーのみ可能)
- 1.2: table_edit-1.2.inc.php
- 行編集後にテーブルページに飛ばされてしまうバグを修正
- 1.1:
table_edit-1.1.inc.php
- 1.0:
table_edit.inc.php
コメント†
- ダウンロードが出来ませんがサーバー上の問題ですか? -- GIN
- まだできませんね。2次配布先はどこかありませんか。 --
- 1.1ならこのサイトにあるみたいですが --
- ダウンロードできないんですがなんとかなりませんか --
- 最新版がないのですが --
- このプラグインもPHP5.4(以降)対応版があるといいのですが… --
- 表のヘッダーが
| > |ヘッダー1 |h
|ヘッダー2A|ヘッダー2B|h
となっている場合、行編集ページでは一番上のヘッダー行の各内容が参考に表示されるようになっていますが、これを一番下のヘッダー行の内容を表示するように変更できますか?編集の際は一番下のヘッダー行の内容が表示された方が分かり易いです。
あと行の追加の際には表の一番下に追加されますが、これをある行のすぐ下に追加できるように変更できますか? --
- Pukiwikiと同じライセンスと言うことで再配布に問題は無いと思うので、誰かどこかに再配布してくれないかなぁ
- v1.16版が手元にありましたのでPHP8対応にしてgithub.com:umorigu/pukiwiki.table_edit_pluginに公開しました。 -- umorigu
- 直接このプラグインを使用した訳ではないのですが、似たような目的のプラグインで「table_edit2.inc.php」があるようです。表専用ページを作らなくて良いのでこっちにした記憶があります。 -- ぬぺぺ
- table_edit2.inc.php: http://taru.s223.xrea.com/index.php?PukiWiki%2Fmake%2Ftable_edit2.inc.php
- ↑のPHP7対応版: https://github.com/osyoyu/table_edit2
- ちなみにPHP8はそのままではダメっぽいです -- ぬぺぺ