外部から持ってきたPukiWikiプラグインのメモ(アルファベット順)
#author("2021-08-15T11:11:30+00:00","","")
#contentsx();

*blockdiv [#jc7d96bb]
*外部から取り込んだプラグイン [#r1f92961]
名前のアルファベット順

div化。主にfloatで回り込ませるための仕掛け
** calc [#s252a442]

[[pukiwiki:自作プラグイン/blockdiv.inc.php]]
計算式を評価してその値を表す数字に置き換えるプラグイン

%%margin-rightを入れるように直したいところ%% なおした
[[PukiWiki/1.4/自作プラグイン/calcプラグイン - PukiWiki-Dev>pukiwiki.dev:PukiWiki/1.4/自作プラグイン/calcプラグイン]]
** contentsx [#adde3069]

%%あ、20.0emとかハネちゃうのね……%% これもなおした
*calc [#p5dd5ac0]
見出しをもとに目次を作る標準機能(contents)の機能拡張版

計算式の結果を値として返す
[[Plugin/contentsx.inc.php - Sonots' PukiWiki プラグイン>http://pukiwiki.sonots.com/?Plugin%2Fcontentsx.inc.php]]

[[pukiwiki.dev:PukiWiki/1.4/自作プラグイン/calcプラグイン]]
** description / keywords [#s1193425]

使用例
ページ概要およびキーワードに関するmetaタグを生成するプラグイン

 &calc(1 + 2 + 3);            // ⇒ 6
 &calc(12345 * 1.05);         // ⇒ 12962
 &calc(12345 * 1.05,2);       // ⇒ 12962.25
 &calc(12345 * 1.05,2,comma); // ⇒ 12,962.25
[[自作プラグイン/description.inc.php - PukiWiki-official>pukiwiki:自作プラグイン/description.inc.php]]&br();[[自作プラグイン/keywords.inc.php - PukiWiki-official>pukiwiki:自作プラグイン/keywords.inc.php]]

*region [#r11eeacf]
ただ、有効性はもうあまりないかも

折り畳み
** htmlinsert [#s68d426b]

[[pukiwiki:自作プラグイン/region.inc.php]]
ファイル(および :HTML/ の接頭辞がつくページ)の内容をそのまま呼び出し箇所に埋め込むプラグイン

生成するHTMLがあまりよろしくない……。どうしようかこれ
[[Plugin/htmlinsert.inc.php - Sonots' PukiWiki プラグイン>http://pukiwiki.sonots.com/?Plugin%2Fhtmlinsert.inc.php]]

[[PukiWikiで折りたたみメニュー>http://d.hatena.ne.jp/nrglog/20070824/p1]]
** lightbox [#z3ba61ef]
[[Lightbox2>http://lokeshdhakar.com/projects/lightbox2/]]を使えるようにするプラグイン。jQueryのロードがあわせて必要

こちらを参考にしましょう
プラグインとしては以下の形式でHTMLを出力させる。あとはLightbox2におまかせ

[[折りたたみMENU - WIKIWIKI.jp Sample Wiki*>http://wikiwiki.jp/sample/?%C0%DE%A4%EA%A4%BF%A4%BF%A4%DFMENU]]
 <a href="fullsize.png" data-lightbox="title" title="title">
   <img src="thumbnail.png" width="180" height="180" />
 </a>

** null [#j0f53502]

囲んだ範囲(複数行可)を非表示にするプラグイン。実質的にコメントアウトとして機能する

[[自作プラグイン/null.inc.php - PukiWiki-official>pukiwiki:自作プラグイン/null.inc.php]]

** recaptcha3 [#v014306b]

[[Google reCAPTCHA v3>https://www.google.com/recaptcha/]] を利用したスパム防止プラグイン

[[自作プラグイン/recaptcha3.inc.php - PukiWiki-official>pukiwiki:自作プラグイン/recaptcha3.inc.php]]

配布元に明記されていない注意事項
-ローカルマシンに置いて動作確認する場合は、[[適用ドメインにlocalhostを加えておくこと>https://developers.google.com/recaptcha/docs/faq#im-getting-an-error-localhost-is-not-in-the-list-of-supported-domains.-what-should-i-do]](用が済んだら消すべき)
-cURLを使ってHTTPリクエストを飛ばすため、php-curlが利用できる状態であること

** secedit [#v478d6b8]

見出しおよびその下位にある内容について部分的に編集ができるようにするプラグイン

[[見出し編集を可能にするPukiWikiプラグイン &quot;secedit.inc.php&quot;>http://twinlook.net/wiki/index.php?Wiki_memo%2Fsecedit.inc.php]](ミラー)&br();※配布されていたファイルはWaybackMachine経由で取得が可能(2021/8/8現在)

配布元に明記されていない注意事項
-PHP7では、[[新しいオブジェクトを参照渡しで代入できない>https://www.php.net/manual/ja/migration70.incompatible.php#migration70.incompatible.other.new-by-ref]]ようになった変更により、以下のようなコードから & を除く修正が必要(3か所該当)
 	$obj    = & new $action();

* 改造もしくは自作したプラグイン [#lab7b8d8]
** countdownex [#b83c6952]

現在時刻とリアルタイムで比較した残り日数(もしくは時間)を算出して表示するプラグイン

オンラインゲームの時限イベントに対する活用を意図して、開始時刻と終了時刻の2つをもらい、開始時刻よりも前であれば残り時間としては表示させない&br();もとにしたものは [[自作プラグイン/countdown.inc.php - PukiWiki-official>pukiwiki:自作プラグイン/countdown.inc.php]] だけど、ほぼ原形を残していないので自作扱いで掲載

 &countdownex(開始時刻,終了時刻);

※時刻は [ YYYY/mm/dd HH24:MM ]で指定(PHPが解釈できればよい)

-開始時刻前: 「開始まであと○日」と表示
-期間中: 24時間未満切り捨てで「あと○日」と表示
--終了時刻まで24時間を切ると、1時間未満切り捨てで「''あと○時間''」表示に切り替え(強調もする)
--終了時刻まで1時間を切ると、1分未満切り捨てで「''あと○分''」表示に切り替え(強調もする)
-終了時刻後: 「終了しました」と表示

#fold{{{
plugin/countdownex.inc.php
 <?php
 function plugin_countdownex_inline() {
     $SECONDS_OF_MINUTE = 60;
     $SECONDS_OF_HOUR = 60 * $SECONDS_OF_MINUTE;
     $SECONDS_OF_DAY = 24 * $SECONDS_OF_HOUR;
     $PRESET_TZ = date_default_timezone_get();
 
     list($start_str, $end_str) = func_get_args();
 
     date_default_timezone_set('Asia/Tokyo');
     $now = time();
     $start = strtotime($start_str);
     $end = strtotime($end_str);
     date_default_timezone_set($PRESET_TZ);
 
     if ($now < $start) {
         // 開始前
         $rest = $start - $now;
         $format = '開始まで<br/>あと%1$d日';
         return sprintf($format, ceil($rest / $SECONDS_OF_DAY));
     } else if ($now >= $end) {
         // 終了後
         return '終了しました';
     } else {
         // 期間中
         $rest = $end - $now;
         if ($rest >= $SECONDS_OF_DAY) {
             // 終了時刻まで24時間以上
             $format = 'あと%1$d日';
             return sprintf($format, $rest / $SECONDS_OF_DAY);
         } else if ($rest >= $SECONDS_OF_HOUR) {
             // 終了時刻まで1時間以上
             $format = '<strong class="countdownex">あと%1$d時間</strong>';
             return sprintf($format, $rest / $SECONDS_OF_HOUR);
         } else {
             // 終了時刻まで1時間未満
             $format = '<strong class="countdownex">あと%1$d分</strong>';
             return sprintf($format, $rest / $SECONDS_OF_MINUTE);
         }
     }
 }
}}}

** fletbox [#h62c42cb]
div を横方向に複数個並べることを実現するプラグイン

[[縦方向の高さを意識しなければならないfloatはもはや不便>https://ics.media/entry/13117/]] なので [[flexbox>https://developer.mozilla.org/ja/docs/Web/CSS/CSS_Flexible_Box_Layout/Basic_Concepts_of_Flexbox]] に基づいて記述したHTMLを生成する&br();もとにしたものは [[自作プラグイン/blockdiv.inc.php - PukiWiki-official>pukiwiki:自作プラグイン/blockdiv.inc.php]] だけど、機能がほぼ異なるので自作扱いで掲載

 #flexbox(start);
 AAA
 #flexbox(continue,marginleft:0.5em);
 BBB
 #flexbox(end);

このプラグイン呼び出しを含んだ記述で以下のHTMLを出力する

 <div class="flexbox" style="display: flex; align-items: flex-start;">
   <div>
     AAA
   </div>
   <div style="margin-left: 0.5em;">
     BBB
   </div>
 </div>

#fold{{{
plugin/flexbox.inc.php
 <?php
 function plugin_flexbox_convert() {
     # 初期設定値
     $params = array(
         'start' => false,
         'continue' => false,
         'end' => false,
         'display' => 'flex',
         'alignitems' => 'flex-start',
         'marginleft' => '0.5em'
     );
 
     # 引数解析
     $args = func_get_args();
     foreach ($args as $value) {
         if (preg_match("/^ *([a-zA-Z0-9_]+) *$/i", $value, $matches)) {
             $params[strtolower($matches[1])] = true;
         } else if (preg_match("/^ *([a-zA-Z0-9_]+):([a-zA-Z0-9\.%_# ]+)$/i", $value, $matches)) {
             $params[strtolower($matches[1])] = $matches[2];
         }
     }
 
     # HTML生成
     if ($params['start']) {
         return '<div class="flexbox" style="display: flex; '
             . 'align-items: ' . $params['alignitems'] . ';">'
             . '<div>';
     } else if ($params['continue']) {
         if ($params['marginleft'] == '') {
             return '</div><div>';
         } else {
             return '</div><div style="margin-left: ' . $params['marginleft'] . ';">';
         }
     } else if ($params['end']) {
         return '</div></div>';
     }
 }
 ?>
}}}


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS