自作プラグイン/newtpl

2025-01-15 (水) 00:07:55

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

newtpl.jpg

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

newtpl.inc.php
製作者kanateko
ライセンスGPLv3
バージョン1.3.1
動作確認PukiWiki 1.5.4 - 1.5.4
最終更新2025-01-14

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

従来のテンプレートプラグインは手軽な反面、テンプレートを読み込んだ後にどこを編集したらいいのかという点に悩まされるユーザーが多そうだと感じたため、より直感的に使えそうな本プラグインを開発した。

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

ダウンロード

最新: GitHub

日付バージョン備考
2025-01-141.3.1
  • 入力サジェストに指定したページの添付ファイル一覧を追加 (file、filepath)
  • 設定取得時の正規表現を修正
2025-01-121.3.0
  • 入力サジェスト機能を追加
  • 全般設定の書式を追加
  • 全般設定として親ページの指定を追加
  • ページ名の自動入力に関連する問題を修正
2024-02-061.2.1
  • クエリのpageで事前にページ名を指定する機能を追加
  • nullとfilledに空白や改行の置き換えを追加
2023-08-311.2.0
  • filledオプションを追加
2023-08-241.1.4
  • 0が未記入扱いになる問題を修正
  • パスワード入力欄が表示されない問題を修正
2022-11-161.1.3
  • fileのオプションにアップロードページの指定を追加
2022-11-041.1.2
  • 文字数カウントがマルチバイト文字に対応していなかった問題を修正
2022-10-281.1.1
  • 編集制限時は管理者パスワードを要求するのではなく、ログインを促すように変更
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.css'プラグイン用CSSのパス
ROOTstring':config/plugin/newtpl/'テンプレート設定の親ページ
ADMINONLYboolfalseフォームで管理者パスワードを要求する。
RESTRICTboolfalse設定ページを凍結していないと使えないようにする
AVAILABLE_FORMATstring'image/jpeg,image/png,image/gif,image/webp'添付可能なファイルのmime-type (カンマ区切り)
MAX_FILESIZEint1024添付可能なファイルの最大サイズ (キロバイト)
ENABLE_UPLOADTObooltruefileのアップロードページ指定オプションの有効/無効
UPLOADTO_EXCEPTIONstring'/^(FrontPage|MenuBar)$/'fileのアップロードページに指定不可能なページ (正規表現)
ENABLE_AUTOCOMPLETEbooltrue入力サジェスト (autoComplete.js) の有効/無効

使用方法

「新規」ボタンを置き換えている場合はページ名入力欄の下に利用可能なテンプレートが表示される。
任意のページにブロック型 (#newtpl) で記述することでもリストを表示可能。
使用したいテンプレート名のリンクをクリックするとフォームが表示される。

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

設定ページの使い方

テンプレート設定ページ (デフォルトは: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と書くと入力内容に置換される
linklink=trueで入力内容と同じ名前のページ名が存在する場合にリンク化する
suggest入力サジェストを有効にする。詳細は下記参照。

suggestについて

設定されている入力候補の中で、ユーザーの入力に当てはまるものをリスト化して表示する。
ユーザーが候補をクリックすると、自動で入力欄が補完される。
suggestでは以下の設定方法が利用できる。

  • 例1:suggest = りんご|バナナ|みかん|いちご|スイカ
    • 手動で入力候補を設定する。
  • 例2:suggest = all
    • 全ページ名を取得して入力候補に設定する。
  • 例3:suggest = tag:自作^プラグイン
    • 要tagプラグイン。指定したタグに当てはまるページを取得して入力候補に設定する。
  • 例4:suggest = root:自作プラグイン
    • 指定したページ以下の階層化されたページを取得して入力候補に設定する。
  • 例5:suggest = regexp:[^:]+
    • 正規表現に当てはまるページを取得して入力候補に設定する。
  • 例6:suggest = file:自作プラグイン/gallery
    • 指定したページに添付された全ファイルの名前を取得して入力候補に設定する。
  • 例7:suggest = filepath:自作プラグイン/gallery
    • 指定したページに添付された全ファイルの名前 (ページ名を含む) を取得して入力候補に設定する。

number, range

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

オプション
default初期入力値
min最小数
max最大数
step数値の変動間隔
desc項目の補足説明
null未記入の場合に実際のページに表示する内容
filled入力内容がある場合に実際のページに表示する内容。%sと書くと入力内容に置換される

radio, checkbox, select

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

オプション
default初期選択
option選択肢。それぞれをバーティカルバーで区切って記述する (option = aaa|bbb|ccc)
desc項目の補足説明
null未記入の場合に実際のページに表示する内容
filled入力内容がある場合に実際のページに表示する内容。%sと書くと入力内容に置換される
linklink=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ファイルの添付ページ。作成するページとは別のページにアップロードしたい場合に使用する
fullpathuploadtoと併用。fullpath=trueでファイル名の前にページ名がつく

全般設定

参考::config/plugin/newtpl/プロフィール
v1.3.0から、以下の書式 (定義リスト形式) で全般的な設定を指定できるようになった。

:<設定名>|<値>

現在利用可能な全般設定は以下の通り。

root

ページ作成時の親ページを指定する。
例えば、:root|プラグインと指定した場合、そのテンプレートを使用して作成したページの名前は「プラグイン/hoge」になる。

ページテンプレート

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