XOOPSコードの[code][/code]は、プログラム(スクリプト)コードなどを入力したまま表示するものですが、標準では
そこで、それを解決して、さらに見やすく便利にしてみました。
とこんな感じです。
以下の Function を追加
function h_xoops_make_copy_button(arg)
{
if(navigator.userAgent.indexOf('MSIE') >=0 && navigator.userAgent.indexOf('Windows')>=0){
document.write ("<input class=\"copyButton\" type=\"button\" value=\"COPY\" onclick=\"h_xoops_doCopy('" + arg + "')\"><br />");
}
}
function h_xoops_doCopy(arg)
{
var doc = document.body.createTextRange();
doc.moveToElementText(document.all(arg));
doc.execCommand("copy");
alert('クリップボードにコピーしました。');
}
変更箇所が多いので、diff 形式です。
ついでにURLリンクのマークアップにWiki書式の
[[表示名:URL]] [[表示名>URL]]
も使用できるようにしてあります。
さらに、ついでに [c(olor)] [s(ize)] [f(ont)] [e(mail)] の ( ) の中は省略できるようにしてあります。
*** /xoops206j/class/module.textsanitizer.php Fri Aug 15 11:53:02 2003
--- /xoops/class/module.textsanitizer.php Wed Mar 17 23:04:15 2004
***************
*** 129,137 ****
**/
function &makeClickable(&$text)
{
! $patterns = array("/(^|[^]_a-z0-9-=\"'\/])([a-z]+?):\/\/([^, \r\n\"\(\)'<>]+)/i", "/(^|[^]_a-z0-9-=\"'\/])www\.([a-z0-9\-]+)\.([^, \r\n\"\(\)'<>]+)/i", "/(^|[^]_a-z0-9-=\"'\/])ftp\.([a-z0-9\-]+)\.([^, \r\n\"\(\)'<>]+)/i", "/(^|[^]_a-z0-9-=\"'\/:\.])([a-z0-9\-_\.]+?)@([^, \r\n\"\(\)'<>\[\]]+)/i");
! $replacements = array("\\1<a href=\"\\2://\\3\" target=\"_blank\">\\2://\\3</a>", "\\1<a href=\"http://www.\\2.\\3\" target=\"_blank\">www.\\2.\\3</a>", "\\1<a href=\"ftp://ftp.\\2.\\3\" target=\"_blank\">ftp.\\2.\\3</a>", "\\1<a href=\"mailto:\\2@\\3\">\\2@\\3</a>");
! return preg_replace($patterns, $replacements, $text);
}
/**
--- 129,160 ----
**/
function &makeClickable(&$text)
{
! $patterns = array(
! "/(^|[^\]_a-z0-9-=\"'\/])(\[\[((?:(?!\]\]).)+)(>|>|:))((?:https?|ftp|news):\/\/[!~*'();\/?:\@&=+\$,%#\w.-]+)(\]\])/i",
! "/(^|[^]_a-z0-9-=\"'\/])([a-z]+?):\/\/([^, \r\n\"\(\)'<>]+)/i",
! "/(^|[^]_a-z0-9-=\"'\/])www\.([a-z0-9\-]+)\.([^, \r\n\"\(\)'<>]+)/i",
! "/(^|[^]_a-z0-9-=\"'\/])ftp\.([a-z0-9\-]+)\.([^, \r\n\"\(\)'<>]+)/i",
! "/(^|[^]_a-z0-9-=\"'\/:\.])([a-z0-9\-_\.]+?)@([^, \r\n\"\(\)'<>\[\]]+)/i"
! );
! $replacements = array(
! "\\1<a href='\\5' target='_blank'>\\3</a>",
! "\\1<a href=\"\\2://\\3\" target=\"_blank\">\\2://\\3</a>",
! "\\1<a href=\"http://www.\\2.\\3\" target=\"_blank\">www.\\2.\\3</a>",
! "\\1<a href=\"ftp://ftp.\\2.\\3\" target=\"_blank\">ftp.\\2.\\3</a>",
! "\\1<a href=\"mailto:\\2@\\3\">\\2@\\3</a>"
! );
! $texts = preg_split("/\[code].*\[\/code\]/sU",$text);
! preg_match_all("/\[code].*\[\/code\]/sU",$text,$match,PREG_PATTERN_ORDER);
! $match[0][] = "";
! $ret = "";
! $i=0;
! foreach($texts as $block)
! {
! $ret .= preg_replace($patterns, $replacements, $block).$match[0][$i];
! $i++;
! }
! return $ret;
! //return preg_replace($patterns, $replacements, $text);
}
/**
***************
*** 147,153 ****
$patterns = array();
$replacements = array();
$patterns[] = "/\[code](.*)\[\/code\]/esU";
! $replacements[] = "'<div class=\"xoopsCode\"><code><pre>'.wordwrap(MyTextSanitizer::htmlSpecialChars('\\1'), 100).'</pre></code></div>'";
// RMV: added new markup for intrasite url (allows easier site moves)
// TODO: automatically convert other URLs to this format if XOOPS_URL matches??
$patterns[] = "/\[siteurl=(['\"]?)([^\"'<>]*)\\1](.*)\[\/siteurl\]/sU";
--- 170,177 ----
$patterns = array();
$replacements = array();
$patterns[] = "/\[code](.*)\[\/code\]/esU";
! //$replacements[] = "'<div class=\"xoopsCode\"><code><pre>'.wordwrap(MyTextSanitizer::htmlSpecialChars('\\1'), 100).'</pre></code></div>'";
! $replacements[] = "'<div class=\"xoopsCode\"><code><pre>'.trim(MyTextSanitizer::htmlSpecialChars('\\1',true),'\r\n').'</pre></code></div>'";
// RMV: added new markup for intrasite url (allows easier site moves)
// TODO: automatically convert other URLs to this format if XOOPS_URL matches??
$patterns[] = "/\[siteurl=(['\"]?)([^\"'<>]*)\\1](.*)\[\/siteurl\]/sU";
***************
*** 158,170 ****
$replacements[] = '<a href="\\2" target="_blank">\\3</a>';
$patterns[] = "/\[url=(['\"]?)([^\"'<>]*)\\1](.*)\[\/url\]/sU";
$replacements[] = '<a href="http://\\2" target="_blank">\\3</a>';
! $patterns[] = "/\[color=(['\"]?)([a-zA-Z0-9]*)\\1](.*)\[\/color\]/sU";
$replacements[] = '<span style="color: #\\2;">\\3</span>';
! $patterns[] = "/\[size=(['\"]?)([a-z0-9-]*)\\1](.*)\[\/size\]/sU";
$replacements[] = '<span style="font-size: \\2;">\\3</span>';
! $patterns[] = "/\[font=(['\"]?)([^;<>\*\(\)\"']*)\\1](.*)\[\/font\]/sU";
$replacements[] = '<span style="font-family: \\2;">\\3</span>';
! $patterns[] = "/\[email]([^;<>\*\(\)\"']*)\[\/email\]/sU";
$replacements[] = '<a href="mailto:\\1">\\1</a>';
$patterns[] = "/\[b](.*)\[\/b\]/sU";
$replacements[] = '<b>\\1</b>';
--- 182,194 ----
$replacements[] = '<a href="\\2" target="_blank">\\3</a>';
$patterns[] = "/\[url=(['\"]?)([^\"'<>]*)\\1](.*)\[\/url\]/sU";
$replacements[] = '<a href="http://\\2" target="_blank">\\3</a>';
! $patterns[] = "/\[c(?:olor)?=(['\"]?)([a-zA-Z0-9]*)\\1](.*)\[\/c(?:olor)?\]/sU";
$replacements[] = '<span style="color: #\\2;">\\3</span>';
! $patterns[] = "/\[s(?:ize)?=(['\"]?)([a-z0-9-]*)\\1](.*)\[\/s(?:ize)?\]/sU";
$replacements[] = '<span style="font-size: \\2;">\\3</span>';
! $patterns[] = "/\[f(?:ont)?=(['\"]?)([^;<>\*\(\)\"']*)\\1](.*)\[\/f(?:ont)?\]/sU";
$replacements[] = '<span style="font-family: \\2;">\\3</span>';
! $patterns[] = "/\[e(?mail)?]([^;<>\*\(\)\"']*)\[\/e(?:mail)?\]/sU";
$replacements[] = '<a href="mailto:\\1">\\1</a>';
$patterns[] = "/\[b](.*)\[\/b\]/sU";
$replacements[] = '<b>\\1</b>';
***************
*** 186,196 ****
$replacements[] = '<a href="'.XOOPS_URL.'/image.php?id=\\4" target="_blank">\\4</a>';
$replacements[] = '<a href="'.XOOPS_URL.'/image.php?id=\\2" target="_blank">\\3</a>';
} else {
! $replacements[] = '<img src="\\3" align="\\2" alt="" />';
$replacements[] = '<img src="\\1" alt="" />';
$replacements[] = '<img src="'.XOOPS_URL.'/image.php?id=\\4" align="\\2" alt="\\4" />';
$replacements[] = '<img src="'.XOOPS_URL.'/image.php?id=\\2" alt="\\3" />';
}
$patterns[] = "/\[quote]/sU";
$replacements[] = _QUOTEC.'<div class="xoopsQuote"><blockquote>';
//$replacements[] = 'Quote: <div class="xoopsQuote"><blockquote>';
--- 210,223 ----
$replacements[] = '<a href="'.XOOPS_URL.'/image.php?id=\\4" target="_blank">\\4</a>';
$replacements[] = '<a href="'.XOOPS_URL.'/image.php?id=\\2" target="_blank">\\3</a>';
} else {
! //$replacements[] = '<img src="\\3" align="\\2" alt="" />';
! $replacements[] = '<img src="\\3" style="float:\\2;" alt="" />';
$replacements[] = '<img src="\\1" alt="" />';
$replacements[] = '<img src="'.XOOPS_URL.'/image.php?id=\\4" align="\\2" alt="\\4" />';
$replacements[] = '<img src="'.XOOPS_URL.'/image.php?id=\\2" alt="\\3" />';
}
+ $patterns[] = "/\[clear]/i";
+ $replacements[] = '<div style="clear:both;"></div>';
$patterns[] = "/\[quote]/sU";
$replacements[] = _QUOTEC.'<div class="xoopsQuote"><blockquote>';
//$replacements[] = 'Quote: <div class="xoopsQuote"><blockquote>';
***************
*** 212,218 ****
*/
function &nl2Br($text)
{
! return preg_replace("/(\015\012)|(\015)|(\012)/","<br />",$text);
}
/**
--- 239,275 ----
*/
function &nl2Br($text)
{
! static $count = 0;
! $match = array();
! $texts = preg_split("/<div class=\"xoopsCode\"><code><pre>.*<\/pre><\/code><\/div>/sU",$text);
! if (preg_match_all("/<div class=\"xoopsCode\"><code><pre>.*<\/pre><\/code><\/div>/sU",$text,$match,PREG_PATTERN_ORDER))
! $count ++;
!
! $match[0][] = "";
! $ret = "";
! $i=0;
! foreach($texts as $block)
! {
! $match[0][$i] = preg_replace("/(\015\012)|(\015)|(\012)/","\n",$match[0][$i]);
! $c_line = count(explode("\n",$match[0][$i])) * 14 + 32; //Set 'line-height:14px;' on css.
! if (!empty($match[0][$i]))
! {
! if ($c_line < 420)
! $match[0][$i] = str_replace("<div class=\"xoopsCode\">","<div class=\"xoopsCode\" style=\"height:".$c_line."px;\">",$match[0][$i]);
! else
! $match[0][$i] = str_replace("<div class=\"xoopsCode\">","<div class=\"xoopsCode\" style=\"height:420px;\">",$match[0][$i]);
!
! $j_script = "<script type=\"text/javascript\"><!--\nh_xoops_make_copy_button('code_area".$count."_".$i."');\n--></script>";
! $bef = array("<pre>","</div>");
! $aft = array("<pre id=\"code_area".$count."_".$i."\">", "</div>".$j_script);
! $match[0][$i] = str_replace($bef,$aft,$match[0][$i]);
! }
! else
! $match[0][$i] = "";
! $ret .= preg_replace("/(\015\012)|(\015)|(\012)/","<br />\n",$block).$match[0][$i];
! $i++;
! }
! return $ret;
}
/**
***************
*** 250,257 ****
*
* @return string
*/
! function &htmlSpecialChars($text)
{
//return preg_replace("/&/i", '&', htmlspecialchars($text, ENT_QUOTES));
return preg_replace(array("/&/i", "/ /i"), array('&', '&nbsp;'), htmlspecialchars($text, ENT_QUOTES));
}
--- 307,316 ----
*
* @return string
*/
! function &htmlSpecialChars($text,$strip=false)
{
+ //if ($strip) $text = stripslashes($text);
+ if ($strip) $text = str_replace("\'","'",$text);
//return preg_replace("/&/i", '&', htmlspecialchars($text, ENT_QUOTES));
return preg_replace(array("/&/i", "/ /i"), array('&', '&nbsp;'), htmlspecialchars($text, ENT_QUOTES));
}
/* COPY button for Code area */
input.copyButton {
border: 1px solid #5E5D63;
color: #000000;
font-family: verdana, tahoma, arial, helvetica, sans-serif;
font-size: 10px;
text-align:center;
background-color:EEF8FD;
}
/* Code and Quote Definition */
div.xoopsCode {
font-size:12px;
line-height:14px;
border: blue 1px dotted;
color:#000;
background-color:#FFFFDD;
padding:10px 0px 0px 10px;
margin: 5px 0px 0px 0px;
width: 650px;
overflow: auto;
}
| Page name: | XOOPS/[code]を見やすく便利に [ Sended pings(0) ] | |
| Author: | nao-pon | - 2005/08/21 21:33:09 JST(1063d) |
| Last edit: | nao-pon | - 2005/08/21 21:33:09 JST(1063d) |
| Editers: | 登録ユーザー | |
| Back Link: | コメント(53d) nao-pon(103d) XOOPS(771d) nao-pon(1018d) 日本語(1974d) | |
ログイン
アクティブメニュー
"ぽちっ"としてね☆
最新のページ
ブックマーク
新着トラックバック
サイト内 Wiki
☆ 検索 ☆
オンライン状況
サイト情報
現在ページのQRコード
参照元情報