#author("2025-11-11T20:07:41+09:00","default:kanateko","kanateko")
#author("2025-11-16T20:02:25+09:00;2025-11-11T20:07:41+09:00","default:kanateko","kanateko")
&tag(プラグイン,自作,追加,未公開);

#ref(smart_table.webp,center,wrap,500x)

#contentsx

*表組み編集支援プラグイン [#summary]

#infobox(plugin,except=ライセンス){{
name = smart_table
ver = 1.1.0
pukiwiki = 1.5.4
update = 2025-11-11
}}

表組み (テーブル) の編集を手軽に行えるようにし、さらにソートや検索、ページネーションといった機能も追加するプラグイン。各機能はオプションで有効/無効を切り替え可能。

以前からソースでの表組み編集は、編集初心者にとって大きな障壁となっていると感じており、もっと手軽に編集に参加して貰える方法はないかと模索していた。PukiWiki公式サイトでは[[table_edit>pukiwiki:自作プラグイン/table_edit.inc.php]]というプラグインも公開されてはいるが、如何せん設計が古かったため導入は見送り、新たにプラグインを作成することにした。

*プラグインの仕様 [#specification]
-マルチライン引数でテーブルを渡すと、ページ表示時にテーブルの上に編集ボタンと検索バー、ヘッダー行にソートボタンを表示する。
--各機能はオプションで有効/無効を切り替え可能。
---`noedit`、`nosearch`、`nosort` でそれぞれ無効化できる。
-`pagination`オプションを指定すると、ページング機能を有効化できる。
--`pagination=10|20|30|all` のように1ページ毎の表示数の選択肢を設定することもできる。
---デフォルトは`10|25|50|100|all`
-`class=` オプションで追加のクラスを指定可能。
-マルチラインでテーブルを渡さなかった場合、編集ボタンの代わりに新規作成ボタンを表示する。
--新規作成ボタンから編集モードに入った場合、テンプレート用のテーブルが表示される。

**編集モード [#edit]
-ページに表示された編集ボタン、もしくは新規作成ボタンを押すと編集モードに入る。
--ページの編集権限がない場合は利用できない。
-編集モードでは各セルを直接編集し、プレビューまたは保存ができる。
-セルの選択時、対象のセルや対応する列/行に対して様々な操作を行うことができる。
--行/列の移動と削除
--行/列の追加
--ヘッダー行/スタイル行の切り替え
--右/上のセルと結合/分離
--文字の左/中央/右揃え
--文字サイズ/文字色/背景色の切り替え
-複数セルを選択してフォーマットの追加/変更、セルの結合/分離、内容の消去、コピー&ペーストが可能。(PC向け)
--##Shift##あるいは##Ctrl##を押しながらクリックで複数選択になる。
--複数セルを選択して##Del##でセルの内容が全て消去される。
--複数セルを選択してコピーした場合、クリップボードにTSV形式で書き込まれる。
--ペーストする内容がTSV形式に当てはまる場合、レイアウトを維持してテーブルに反映することができる。
---維持しない場合、あるいはTSV形式でない場合は、選択中のセル全てにクリップボードの内容がペーストされる。
-各種の変更の履歴は戻る/進むボタンで操作可能
-CSVファイルを取り込んでテーブルとして表示したり、現在のテーブルをCSVファイルとして出力可能。

*ダウンロード [#download]
//最新: [[GitHub>https://github.com/kanateko/pukiwiki-plugin]]

#box(caution,width=400px){{{
このプラグインは現在公開されていません。
}}}

|~日付|~バージョン|~備考|h
|CENTER:120|CENTER:60|590|c
|2025-11-11|1.1.0|#ul(複数セルを選択しての消去・コピー・ペースト機能を追加)|
|2025-11-07|1.0.0|#ul(初版作成)|

//*セットアップ [#setup]
//+ダウンロードした「smart_table.inc.php」をpluginフォルダ内に配置する。

//*プラグイン設定 [#setting]


*使用方法 [#usage]
 #table_edit([オプション]){{
 #smart_table([オプション]){{
 |~ヘッダーA|~ヘッダーB|h
 |スタイルA |スタイルB |c
 |セルA-1   |セルB-1   |
 |セルA-2   |セルB-2   |
 ⋮
 }}

#box(solid){{
&size(18){''オプション''};

:noedit|
編集機能を無効化する。
:nosort|
ソート機能を無効化する。
:nosearch|
検索機能を無効化する。
:pagination|
ページネーション機能を有効化する。
`pagination = 10|25|50|100|all` のように1ページの表示数の選択肢を設定することもできる。
:stretch|
テーブルを全幅表示する
:class = クラス名1 クラス名2|
追加のクラスを指定する。
複数クラスを指定する場合は半角スペースを挟む。
}}


*使用例 [#example]
試しに使ってみたい場合は[[練習用Wiki>https://jpngamerswiki.com/_sandbox/?smart_table]]でどうぞ。

*備考 [#notes]

*コメント [#comment]
#mcomment