<?php define('_PARAEDIT_VERSION', 1.0); /* * パラグラフ指å‘化プラグイン - paraedit 1.0 PukiWikiã§ãƒ‘ラグラフå˜ä½ã®ç·¨é›†ã‚’ã§ãるよã†ã«ã™ã‚‹ãƒ—ラグインã§ã™ã€‚ *********************************************************** taru : paraedit0.7a 変更点ã«ã¤ã„㦠1. PHP5.2.0よりæ£è¦è¡¨ç¾é–¢æ•°ã¸ã®åˆ¶é™ã¨ã—ã¦php.iniã« pcre.backtrack_limitã¨pcre.recursion_limitã®è¨å®šãŒ è¿½åŠ ã•ã‚Œã¦ã„ã¾ã™ã€‚  ã“ã®å‹•ä½œå¤‰æ›´ã«ã‚ˆã‚Šã€paraedit 0.6ã®ä»•æ§˜ã§ã¯ãƒšãƒ¼ã‚¸ 内ã®æ–‡å—æ•°ãŒåˆ¶é™å€¤ã¸ãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆã«å½±éŸ¿ã—ã¦ã—ã¾ã„〠制é™å€¤ã‚’超ãˆã‚‹æ–‡å—ã‚’åŠ ãˆãŸå ´åˆã€ç©ºãƒ‡ãƒ¼ã‚¿ã‚’è¿”ã—㦠ã—ã¾ã†äº‹ãŒã‚ã‹ã‚Šã¾ã—ãŸã€‚  調ã¹ã¦ã¿ã‚‹ã¨å•é¡Œã«ãªã£ã¦ã„る部分ã®paraedit 0.6 ã®å‡¦ç†ã¯ã€ç„¡é§„ã£ã½ã„ãŸã‚ã€ç›´æŽ¥ãƒšãƒ¼ã‚¸ãƒ‡ãƒ¼ã‚¿æ¸¡ã™å‡¦ç† ã«å¤‰æ›´ã—ã¦ã¿ã¾ã—ãŸã€‚ ※php.iniを変更ã§ãる管ç†è€…ã§ã‚ã‚Œã°ã€è¨å®šå€¤ã‚’調整 ã™ã‚‹ã“ã¨ã§ã€å•é¡Œã®ç¾è±¡ã‚’回é¿ã™ã‚‹ã“ã¨ãŒå‡ºæ¥ã‚‹ã‹ã‚‚ ã—ã‚Œã¾ã›ã‚“。 2. 「テã‚スト整形ã®ãƒ«ãƒ¼ãƒ«ã€ã®ãƒªãƒ³ã‚¯å‡¦ç†ã‚’変更 taru : paraedit0.8 変更点ã«ã¤ã„㦠v0.9 split() ã‚’ explode() ã«æ›¸ãæ›ãˆã€fatal errorを回é¿ã—ãŸç‰© ã¯ã„ãµã‚“:v1.0 PHP8対応 2021-12-20 1. function plugin_paraedit_init()ã§å‚ç…§ã—ã¦ã„ã‚‹init.php ãŒPukiWiki 1.4.7ã§ã¯libフォルダã«æ ¼ç´ã•ã‚Œã¦ã„ã‚‹ã‹ã‚‰ pukiwiki.phpã®å®šç¾©ã‚’コピペã—ã¦ã¿ãŸã€‚ 但ã—ã€å¿…è¦ãªã®ã‹ä¸æ˜Ž 2. UTF-8環境ã§EUC-JPã«ã¦æ›¸ã‹ã‚ŒãŸãƒ—ãƒã‚°ãƒ©ãƒ ã‚’ãã®ã¾ã¾ä½¿ã† 人ãŒå¤šã„よã†ãªã®ã§UTF-8Nã§ä¿å˜ã—ãªãŠã—ã¾ã™ã€‚ 対象環境: PukiWiki-1.5.x UTF-8N PHP5.2.0ä»¥é™ http://taru.s223.xrea.com/ *********************************************************** ** Copyright tmk http://linux.s33.xrea.com:8080/SxWiki/ ** Licence GPL2 (GNU General Public License version 2) */ // 編集リンクã®æ–‡å—列・スタイルを指定 // %s ã« URL ãŒå…¥ã‚‹ // * æ–‡å—ãƒãƒ¼ã‚¸ãƒ§ãƒ³ ([edit]) define('_EDIT_LINK', '<span style="float:right; font-size: small; font-weight: lighter; padding: 0px 0px 0px 1em; ">[<a href="%s">edit</a>]</span>'); // * ç”»åƒãƒãƒ¼ã‚¸ãƒ§ãƒ³ //define('_EDIT_LINK', '<span style="float:right; font-size: small; font-weight: lighter; padding: 0px 0px 0px 1em; "><a href="%s"><img src="' . IMAGE_DIR . 'paraedit.png" style="width:9px;height:9px;" /></a></span>'); // 編集リンクã®æŒ¿å…¥ç®‡æ‰€ã‚’指定 // <h2>header</h2> ã®æ™‚ã€$1:<h2>, $2:header, $3:</h2> ã¨ãªã‚‹ã®ã§ $link を好ããªå ´æ‰€ã«ç§»å‹• // (例) //  define(_PARAEDIT_LINK_POS, '$1$2$link$3'); // </h2>ã®å‰ define('_PARAEDIT_LINK_POS', '$1$2$link$3'); // </h2>ã®å‰ // define(_PARAEDIT_LINK_POS, '$link$1$2$3'); // <h2>ã®å‰ // define(_PARAEDIT_LINK_POS, '$1$2$3$link'); // </h2>ã®å¾Œã‚ // 改行ã®ä»£æ›¿æ–‡å—列 // <input type=hidden value=XXXXX> ã§æ”¹è¡Œ(CR,LFãªã©)ã®å¤‰ã‚ã‚Šã«ä½¿ç”¨ã™ã‚‹æ–‡å—列 define('_PARAEDIT_SEPARATE_STR', '_PaRaeDiT_'); function plugin_paraedit_init() { // init // プãƒã‚°ãƒ©ãƒ ファイルèªã¿è¾¼ã¿ require_once(LIB_DIR . 'init.php'); // Kã•ã‚“より } function plugin_paraedit_convert() { // HTML ã«ã‚³ãƒ³ãƒãƒ¼ãƒˆæ™‚ã«å‘¼ã³å‡ºã•ã‚Œã‚‹- return 'ParaEdit version '. _PARAEDIT_VERSION . "\n"; } function plugin_paraedit_action() { // GET POST 時ã«å‘¼ã³å‡ºã•ã‚Œã‚‹ global $get, $post, $vars; global $_title_edit; // $LANG.lng ã§å®šç¾©æ¸ˆ $script = get_script_uri(); // 編集ä¸å¯èƒ½ãªãƒšãƒ¼ã‚¸ã‚’編集ã—よã†ã¨ã—ãŸã¨ã if (S_VERSION < 1.4) { if (is_freeze($vars['page']) || !is_editable($vars['page']) || $vars["page"] == "") { $wikiname = rawurlencode($vars['page']); header("Location: " . $script . "?cmd=edit&page=$wikiname"); die(); } } else { // check_editable($page, BASICèªè¨¼è¡¨ç¤º, NGç”»é¢ã«é·ç§») check_editable($vars['page'], true, true); } // pukiwiki.php ã‹ã‚‰æ‹å€Ÿ $postdata = @join("",get_source($get['page'])); if($postdata == "") { $postdata = auto_template($get['page']); //# should be test } $postdata = htmlsc($postdata); // #$page = str_replace('$1',make_search($get['page']), $_title_edit); $page = $_title_edit; // edit_form() 㧠$postdata = $vars[refer] . $postdata; ã¨ãªã‚‹ãŸã‚å°ç´°å·¥ $refer = $vars['refer']; $vars['refer'] = ''; $textdata = '___paraedit_taxtarea___'; if (S_VERSION < 1.4) { $body = edit_form($textdata, $get['page']); // v 1.3.5 } else { $body = edit_form($get['page'], $textdata); // v 1.4 } $vars['refer'] = $refer; // <textarea name="msg" ...> å‰å¾Œã§åˆ†å‰² $lines = array(); $textareas = array(); // 0: whole, 1: before msg, 2: textarea tag, 3: msg 4: after msg preg_match("/^(.*?)(<textarea .*?>)(___paraedit_taxtarea___)(<\/textarea>.*)$/is", $body, $textareas); // 改行コードを \n ã«çµ±ä¸€ // $vars['msg'] = preg_replace("/((\x0D\x0A)|(\x0D)|(\x0A))/", "\n", $vars["msg"]); $vars["msg"] = str_replace("\r", "\n", str_replace("\r\n", "\n", $vars["msg"])); // $vars[msg] を分割 $msg_before; $msg_now; $msg_after; // 編集行ã¨ãã®å‰å¾Œ $part = $vars['parnum']; $index_num = 0; $is_first_line = 1; foreach (explode ("\n", $postdata) as $line) { if (preg_match("/^\*{1,3}/", $line)) { $index_num++; } if (!$is_first_line) { $line = "\n$line"; } else { $is_first_line = 0; } if ($index_num < $part) { $msg_before .= $line; } else if ($index_num == $part) { $msg_now .= $line; } else if ($index_num > $part) { $msg_after .= $line; } } // 微調整 (silly!) $msg_before = preg_replace("/^\n/", "", $msg_before); if ($msg_before) { $msg_before .= "\n"; } // 改行コードを書æ›ãˆ $msg_before = preg_replace("/\n/", _PARAEDIT_SEPARATE_STR, $msg_before); $msg_after = preg_replace("/\n/", _PARAEDIT_SEPARATE_STR, $msg_after); // çµåˆ $body = $textareas[1] . '<input type="hidden" name="msg_before" value="' . $msg_before . '" />' . "\n" . '<input type="hidden" name="msg_after" value="' . $msg_after . '" />' . "\n" . $textareas[2] . $msg_now . $textareas[4]; // ヘルプ表示 : リンク書ãæ›ãˆ $body = preg_replace("/cmd=edit(&help=true)/", "plugin=paraedit&parnum=$vars[parnum]$1&refer=" . rawurlencode($vars['page']), $body); return array("msg" => $page, "body" => $body); } function _plugin_paraedit_mkeditlink($body) { // [edit]リンクã®ä½œæˆ global $get, $post, $vars; $lines = explode("\n", $body); $script = get_script_uri(); $para_num = 1; $lines2 = array(); foreach ($lines as $line) { // #if (preg_match("/<\/h\d>$/", $line)) { if (preg_match("/<h\d .*? paraedit_flag=on/", $line)) { #$link = "$script?plugin=paraedit&parnum=$para_num&page=" . rawurlencode($vars[page]); // v 1.3.5 $line = preg_replace("/ paraedit_flag=on/", "", $line); $link = "$script?plugin=paraedit&parnum=$para_num&page=" . rawurlencode($vars['page']) . '&refer=' . rawurlencode($vars['page']); // v 1.4 $link = sprintf(_EDIT_LINK, $link); $replaced = _PARAEDIT_LINK_POS; eval(" \$replaced = \"$replaced\"; "); $line = preg_replace("/(<h\d.*?>)(.*)(<\/h\d>)/", $replaced, $line); $para_num++; } array_push($lines2, $line); } $body = @join("\n", $lines2); return $body; } function _plugin_paraedit_parse_postmsg($msg_before, $msg_now, $msg_after) { // pukiwiki.php ã‹ã‚‰å‘¼ã³å‡ºã—〠// $post["msg_*"] を整形・çµåˆã—㦠$post["msg"] を返㙠if ($msg_before == "" && $msg_after == "") { return $msg_now; } // 改行代替文å—列を \n ã«å¤‰æ› $msg_before = str_replace(_PARAEDIT_SEPARATE_STR, "\n", $msg_before); $msg_now = str_replace(_PARAEDIT_SEPARATE_STR, "\n", $msg_now); $msg_after = str_replace(_PARAEDIT_SEPARATE_STR, "\n", $msg_after); // æ•´å½¢ //$msg_before .= (preg_match("/\n$/", $msg_before)) ? "" : "\n"; //$msg_now .= (preg_match("/\n$/", $msg_now) ) ? "" : "\n"; // çµåˆ return $msg_before . $msg_now . $msg_after; } ?>