#author("2021-07-05T15:14:27+09:00","","")
#author("2021-07-05T22:38:54+09:00","","")
** accordion.inc.php [#yfb9b0c7]
|RIGHT:100|LEFT:360|c
|~サマリ|見出し版の折りたたみプラグイン|
|~リビジョン|1.3|
|~対応バージョン|1.5.x|
|~投稿者|[[K]]|
|~投稿日|&new{2020-12-05 (土) 15:06:10};|
**概要 [#h746ca22]
WIKIWIKIにあるような見出し版折りたたみ(アコーディオン)プラグイン

[[自作プラグイン/region.inc.php]]を基にして作りました。

**pukiwiki.ini.phpで、 [#ne3669e9]

define('PKWKEXP_DISABLE_MULTILINE_PLUGIN_HACK', 1); // 1 = Disabled

を

define('PKWKEXP_DISABLE_MULTILINE_PLUGIN_HACK', 0); // 1 = Disabled

に変更する。

**記載方法 [#f3469999]
#accordion(あいうえお,*,close){{

test

}}


#accordion(あいうえお,**,open){{

test

}}




**ダウンロード [#jc7bdd76]
七海改修版(正規版のバグとか適当に修正してある。):
-https://nanami.cute.bz/lifestrategy/?plugin=attach&pcmd=open&file=accordion.inc.php&refer=FrontPage

2021/7/5:ごめんなさい。ボタンの+-のとこミスってました。修正しました。
-https://nanami.cute.bz/download/accordion.zip

#br

正規作者版:
-http://pkom-files.22web.org/download.php?file=plugin/PukiWiki/accordion.inc.php

上記のURLからダウンロードしてPukiWikiのplugin/に入れてください。
**コード [#yd2c7cc8]
以下のコードをコピーしてaccordion.inc.phpという名前で保存し、PukiWikiのplugin/へ入れてください。
-accordion.inc.php

 <?php
 // $Id: accordion.inc.php,v 1.3 2020/12/01 23:20:41 K Exp $
 
 /** 
 * @link http&#58;//pkom.ml/?%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3/accordion.inc.php
 * @author K
 * @license http&#58;//www.gnu.org/licenses/gpl.ja.html GPL
 */
 
 // region.inc.php(author:xxxxx) https&#58;//pukiwiki.osdn.jp/?%E8%87%AA%E4%BD%9C%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3/region.inc.php
 
 function plugin_accordion_convert()
 {
 	static $builder = 0;
 	if( $builder==0 ) $builder = new AccordionPluginHTMLBuilder();
 
 	$builder->setDefaultSettings();
 
 	if (func_num_args() >= 3){
 		$args = func_get_args();
 		$builder->setDescription( array_shift($args) );
 		$builder->setHeading( array_shift($args) );
 		foreach( $args as $value ){
 			if( preg_match("/^open/i", $value) ){
 				$builder->setOpened();
 			}elseif( preg_match("/^close/i", $value) ){
 				$builder->setClosed();
 			}
 		}
 	}
     $args = func_get_args();
     $contents1 = $args[func_num_args()-1];
     $contents1 = preg_replace("/\r\n|\r/", "\n", $contents1);
     $contents1 = explode("\n",$contents1);
 
 return $builder->build()
 .convert_html($contents1)
 .<<<EOD
 </td></tr></table>
 EOD;
 }
 
 class AccordionPluginHTMLBuilder
 {
 	var $description;
 	var $heading;
 	var $isopened;
 	var $scriptVarName;
 	var $callcount;
 
 	function AccordionPluginHTMLBuilder() {
 		$this->callcount = 0;
 		$this->setDefaultSettings();
 	}
 	function setDefaultSettings(){
 		$this->description = "...";
         $this->heading = "h2";
 		$this->isopened = false;
 	}
 	function setClosed(){ $this->isopened = false; }
 	function setOpened(){ $this->isopened = true; }
 	function setDescription($description){
 		$this->description = convert_html($description);
 		$this->description = preg_replace( "/^<p>/i", "", $this->description);
 		$this->description = preg_replace( "/<\/p>$/i", "", $this->description);
 	}
     function setHeading($heading){
         if ($heading == "1"){$this->heading = "h2";}
         else if ($heading == "2"){$this->heading = "h3";}
         else if ($heading == "3"){$this->heading = "h4";}
         else if ($heading == "4"){$this->heading = "h5";}
     }
 	function build(){
 		$this->callcount++;
 		$html = array();
 		array_push( $html, $this->buildButtonHtml() );
 		array_push( $html, $this->buildContentHtml() );
 		return join($html);
 	}
 
 	function buildButtonHtml(){
 		$button = ($this->isopened) ? "-" : "+";
         //white style
         //cursor:pointer;font-family: "MS Pゴシック", "MS PGothic", "ヒラギノ角ゴ Pro W3","Hiragino Kaku Gothic Pro", Osaka, arial, verdana, sans-serif;padding:1px 4px;border:gray 1px solid;border-radius:3px;background-color:white;color:gray
 
         //black style
         //cursor:pointer;font-family: "MS Pゴシック", "MS PGothic", "ヒラギノ角ゴ Pro W3","Hiragino Kaku Gothic Pro", Osaka, arial, verdana, sans-serif;padding:1px 4px;border:black 1px solid;border-radius:3px;background-color:black;color:white
 
         //default style
         //cursor:pointer;font-family: "MS Pゴシック", "MS PGothic", "ヒラギノ角ゴ Pro W3","Hiragino Kaku Gothic Pro", Osaka, arial, verdana, sans-serif;padding:1px 4px;border:gray 1px solid;color:gray;
 		return <<<EOD
 
     <{$this->heading}><span id=acd_button$this->callcount style='cursor:pointer;font-family: "MS Pゴシック", "MS PGothic", "ヒラギノ角ゴ Pro W3","Hiragino Kaku Gothic Pro", Osaka, arial, verdana, sans-serif;padding:1px 4px;border:gray 1px solid;color:gray;'
 	onclick="
 	if(document.getElementById('acd_content$this->callcount').style.display!='inline'){
 		document.getElementById('acd_content$this->callcount').style.display='inline';
 		document.getElementById('acd_button$this->callcount').innerHTML='-';
 	}else{
 		document.getElementById('acd_content$this->callcount').style.display='none';
 		document.getElementById('acd_button$this->callcount').innerHTML='+';
 	}
 	">$button</span>&nbsp;$this->description</{$this->heading}>
     <table><tr>
 EOD;
 	}
 	function buildContentHtml(){
 		$contentstyle = ($this->isopened) ? "display:block;" : "display:none;";
 		return <<<EOD
 <td id=acd_content$this->callcount style="{$contentstyle}">
 EOD;
 	}
 
 }// end class RegionPluginHTMLBuilder
 
 ?>
**ライセンス [#d3402fb8]
-GPLv3
**コメント [#tf9f2eb1]
- display:blockとdisplay:inlineの箇所をどちらかに統一した方が良い。 -- [[七海]] &new{2021-07-05 (月) 05:47:20};
- +-のところと、*のとこが文字比較になってなかったので修正しました。すみません。 -- [[七海]] &new{2021-07-05 (月) 22:38:54};

#comment


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Site admin: PukiWiki Development Team

PukiWiki 1.5.4+ © 2001-2022 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u12. HTML convert time: 0.044 sec.

OSDN