カテゴリ:プラグイン 自作 追加

newtpl.jpg

フォーム形式のテンプレートプラグイン

newtpl.inc.php
製作者kanateko
ライセンスGPLv3
バージョン1.1.0
動作確認PukiWiki 1.5.4 - 1.5.4
最終更新2022-10-27

新規ページを作成する際にフォーム形式のテンプレートを利用できるようにするプラグイン。
newpageプラグインとtrackerプラグインをかけ合わせたようなもの。

  • フォームを入力することで簡単にテンプレートを用いたページの作成ができる。
    • 入力項目はカスタマイズ可能。
      • text, textarea, number, range, radio, checkbox, select, file, hiddenが使える。
      • それぞれの形式でさらに細かい設定ができる。
      • 必須項目を指定可能。
      • 未記入時の出力も設定可能。
  • 管理者のみ、凍結必須といった設定を切り替えられる。

ダウンロード

最新: GitHub

日付バージョン備考
2022-10-271.1.0
  • ファイル添付機能を追加
  • 設定ページの凍結の要/不要を切り替える機能を追加
  • 細かいバグを修正
2022-10-121.0.5
  • ページ名の相対指定に対応
  • rangeのスライダーに数値の表記を追加
2022-10-111.0.0
  • 初版作成

セットアップ

  1. GitHubからダウンロードした「plugin-newtpl」フォルダの中身 (plugin, skin) をPukiWikiのディレクトリに放り込む。
  2. (任意) 「新規」ボタンをこのプラグインに置き換えるため、PukiWikiディレクトリのlibにある「html.php」の以下の部分を変更する。
-	$_LINK['new']      = "$script?plugin=newpage&refer=$r_page";
+	$_LINK['new']      = "$script?plugin=newtpl&refer=$r_page";

プラグイン設定

定数 (PLUGIN_NEWTPL_~)初期値説明
CSSstringSKIN_DIR . 'css/newtpl.min.css'プラグイン用CSSのパス
ROOTstring':config/plugin/newtpl/'テンプレート設定の親ページ
ADMINONLYboolfalse必ず管理者パスワードを要求する。なお、falseでもpukiwiki.iniで編集制限を設定している場合はパスワードを要求するようになっている
RESTRICTboolfalse設定ページを凍結していないと使えないようにする
AVAILABLE_FORMATstring'image/jpeg,image/png,image/gif,image/webp'添付可能なファイルのmime-type (カンマ区切り)
MAX_FILESIZEint1024添付可能なファイルの最大サイズ (キロバイト)

使用方法

template_list.jpg
新規ボタンを押した時の画面

「新規」ボタンを置き換えている場合はページ名入力欄の下に利用可能なテンプレートが表示される。
任意のページにブロック型 (#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未記入の場合に実際のページに表示する内容
linklink=trueで入力内容と同じ名前のページ名が存在する場合にリンク化する

number, range

数字の入力とスライダー。オプションは共通。

オプション
default初期入力値
min最小数
max最大数
step数値の変動間隔
desc項目の補足説明
null未記入の場合に実際のページに表示する内容

radio, checkbox, select

択一の選択、複数選択、プルダウン式の選択項目。オプションは共通

オプション
default初期選択
option選択肢。それぞれをバーティカルバーで区切って記述する (option = aaa|bbb|ccc)
desc項目の補足説明
null未記入の場合に実際のページに表示する内容
linklink=trueで入力内容と同じ名前のページ名が存在する場合にリンク化する

file

ファイル添付。1項目に付き1つのみ添付可能。
ファイル形式や最大サイズはプラグイン内の設定でのみ変更可能。

オプション
desc項目の補足説明
null未記入の場合に実際のページに表示する内容

ページテンプレート

参考::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