自作プラグイン/newtpl

2023-08-31 (木) 11:42:06

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

newtpl.jpg

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

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-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のアップロードページに指定不可能なページ (正規表現)

使用方法

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

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/プロフィール/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