自作プラグイン/newtpl
フォーム形式のテンプレートプラグイン
newtpl.inc.php | |
---|---|
製作者 | kanateko |
ライセンス | GPLv3 |
バージョン | 1.2.0 |
動作確認 | PukiWiki 1.5.4 - 1.5.4 |
最終更新 | 2023-08-31 |
新規ページを作成する際にフォーム形式のテンプレートを利用できるようにするプラグイン。
newpageプラグインとtrackerプラグインをかけ合わせたようなもの。
従来のテンプレートプラグインは手軽な反面、テンプレートを読み込んだ後にどこを編集したらいいのかという点に悩まされるユーザーが多そうだと感じたため、より直感的に使えそうな本プラグインを開発した。
- フォームを入力することで簡単にテンプレートを用いたページの作成ができる。
- 入力項目はカスタマイズ可能。
- text, textarea, number, range, radio, checkbox, select, file, hiddenが使える。
- それぞれの形式でさらに細かい設定ができる。
- 必須項目を指定可能。
- 未記入時の出力も設定可能。
- 入力項目はカスタマイズ可能。
- 管理者のみ、凍結必須といった設定を切り替えられる。
ダウンロード
最新: GitHub
日付 | バージョン | 備考 |
---|---|---|
2023-08-31 | 1.2.0 |
|
2023-08-24 | 1.1.4 |
|
2022-11-16 | 1.1.3 |
|
2022-11-04 | 1.1.2 |
|
2022-10-28 | 1.1.1 |
|
2022-10-27 | 1.1.0 |
|
2022-10-12 | 1.0.5 |
|
2022-10-11 | 1.0.0 |
|
セットアップ
- GitHubからダウンロードした「plugin-newtpl」フォルダの中身 (plugin, skin) をPukiWikiのディレクトリに放り込む。
- (任意) 「新規」ボタンをこのプラグインに置き換えるため、PukiWikiディレクトリのlibにある「html.php」の以下の部分を変更する。
- $_LINK['new'] = "$script?plugin=newpage&refer=$r_page";
+ $_LINK['new'] = "$script?plugin=newtpl&refer=$r_page";
プラグイン設定
定数 (PLUGIN_NEWTPL_~) | 型 | 初期値 | 説明 |
---|---|---|---|
CSS | string | SKIN_DIR . 'css/newtpl.css' | プラグイン用CSSのパス |
ROOT | string | ':config/plugin/newtpl/' | テンプレート設定の親ページ |
ADMINONLY | bool | false | フォームで管理者パスワードを要求する。 |
RESTRICT | bool | false | 設定ページを凍結していないと使えないようにする |
AVAILABLE_FORMAT | string | 'image/jpeg,image/png,image/gif,image/webp' | 添付可能なファイルのmime-type (カンマ区切り) |
MAX_FILESIZE | int | 1024 | 添付可能なファイルの最大サイズ (キロバイト) |
ENABLE_UPLOADTO | bool | true | fileのアップロードページ指定オプションの有効/無効 |
UPLOADTO_EXCEPTION | string | '/^(FrontPage|MenuBar)$/' | fileのアップロードページに指定不可能なページ (正規表現) |
使用方法
「新規」ボタンを置き換えている場合はページ名入力欄の下に利用可能なテンプレートが表示される。
任意のページにブロック型 (#newtpl
) で記述することでもリストを表示可能。
使用したいテンプレート名のリンクをクリックするとフォームが表示される。
設定ページの使い方
テンプレート設定ページ (デフォルトは:config/plugin/newtpl
) 以下に「テンプレート名」および「テンプレート名/page」の2つのページを作成する。
作成例は練習用Wikiのデモを参照。
項目指定
参考::config/plugin/newtpl/プロフィール
「:config/plugin/newtpl/テンプレート名」ページにはフォームの各項目の設定を記述する。大まかな記述方法は
- <項目名> -- type = <形式> -- name = <固有のname属性> -- <オプション> = <値>
このような形になる。
項目名の後にアスタリスク (*)を付けると必須項目に設定できる。
例えば上で書いたデモの設定の一部を抜粋すると
-名前* --name=name --type=text --placeholder=鈴木太郎 --max=20 --link=true -年齢 --name=age --type=number --null=非公開
このようになっている。
現在利用可能な形式とそれぞれで使えるオプションは以下の通り。
text, textarea
改行なしと改行ありのテキスト入力。オプションは共通。
オプション | |
---|---|
placeholder | プレースホルダー |
default | 初期入力値 |
max | 最大文字数 |
desc | 項目の補足説明 |
null | 未記入の場合に実際のページに表示する内容 |
filled | 入力内容がある場合に実際のページに表示する内容。%sと書くと入力内容に置換される |
link | link=true で入力内容と同じ名前のページ名が存在する場合にリンク化する |
number, range
数字の入力とスライダー。オプションは共通。
オプション | |
---|---|
default | 初期入力値 |
min | 最小数 |
max | 最大数 |
step | 数値の変動間隔 |
desc | 項目の補足説明 |
null | 未記入の場合に実際のページに表示する内容 |
filled | 入力内容がある場合に実際のページに表示する内容。%sと書くと入力内容に置換される |
radio, checkbox, select
択一の選択、複数選択、プルダウン式の選択項目。オプションは一部を除いて共通
オプション | |
---|---|
default | 初期選択 |
option | 選択肢。それぞれをバーティカルバーで区切って記述する (option = aaa|bbb|ccc) |
desc | 項目の補足説明 |
null | 未記入の場合に実際のページに表示する内容 |
filled | 入力内容がある場合に実際のページに表示する内容。%sと書くと入力内容に置換される |
link | link=true で入力内容と同じ名前のページ名が存在する場合にリンク化する |
- checkbox専用のオプション
- separator:複数選択された場合に、ページに表示される各選択肢の区切りを指定する。
\sで空白、\nで改行になる。指定しない場合は","で区切られる。
例えばseparator = \s・\s
を指定した状態で、フォームの選択肢A、B、Cをチェックしてページを作成した場合、実際の表示は「A ・ B ・ C」になる。separatorを指定しなかった場合は「A,B,C」になる。
hidden
フォームに表示せず設定した値を送信する。
オプション | |
---|---|
value | 送信する値 |
file
ファイル添付。1項目に付き1つのみ添付可能。
ファイル形式や最大サイズはプラグイン内の設定でのみ変更可能。
uploadto
を指定しない場合は新規作成したページに添付される。
ページにはファイル名が表示される。 (fullpath=true
を指定した場合は「ページ名/ファイル名」)
オプション | |
---|---|
desc | 項目の補足説明 |
null | 未記入の場合に実際のページに表示する内容 |
filled | 入力内容がある場合に実際のページに表示する内容。%sと書くと入力内容に置換される |
uploadto | ファイルの添付ページ。作成するページとは別のページにアップロードしたい場合に使用する |
fullpath | uploadto と併用。fullpath=true でファイル名の前にページ名がつく |
ページテンプレート
参考::config/plugin/newtpl/プロフィール/page
「:config/plugin/newtpl/テンプレート名/page」ページにはテンプレートと置き換える項目の位置を書く。
置き換えたい場所は{{{name属性}}}
このように設定ページに記述したname属性を3重の波括弧で囲っておく。
また、設定ページに記述したname属性以外にも以下のものが使用可能。
- {{{title:name属性}}}
- 指定したname属性の項目名
- {{{_page}}}
- ページ名
- {{{_pagelink}}}
- リンク化したページ名
- {{{_base}}}
- ベースネーム
- {{{_tpl}}}
- 設定ページ名
- {{{_tpllink}}}
- リンク化した設定ページ名
- {{{_date}}}
- ページの作成日時 (Y-m-d (w) H:i:s)
使用例
練習用Wikiにデモを置いているのでそちらを参照。
追加したい機能
- プレビュー機能を入れたいが、そうなるとファイル添付との兼ね合いから非同期バリデーション+プレビューと言う形での実装にせざるを得ず、
面倒くさそう時間がかかりそうなので後回しに。
備考
- 未だにこういったプラグインの設定ページはどういった書き方にするのが最も使いやすいか模索中で、似たようなプラグインでも書き方が違ったりするので注意。
コメント
コメントはありません。 コメント/自作プラグイン/newtpl