記事No | : 14927 |
投稿日 | : 2016/06/24(Fri) 09:18:35 |
タイトル | : Web PatioにBBCodeを使いたい |
ID情報 | : rick7634 |
投稿者 | : RICK#7634 |
URL | : http://bbs.dojin-rpg-cheat.com/bbs/patio.cgi |
Web PatioでBB Codeを使いたいと思いスレを立てさせていただきました。
使いたいBBCodeは以下にあるもの全てです。
https://ja.wikipedia.org/wiki/BB%E3%82%B3%E3%83%BC%E3%83%89
Forum Patioを使えば使用可能なようですが
デザインがしっくり来ないのと原因不明のバグがあるため
こちらを選択することにしました。
どなたかよろしくお願いします。
記事No | : 14928 |
投稿日 | : 2016/06/25(Sat) 23:54:20 |
タイトル | : Re: Web PatioにBBCodeを使いたい |
ID情報 | : hirayama |
投稿者 | : hirayama |
手順としては、
sub bbtrans {
my $str = $_[0];
$str =~ s/\[b\](.*?)\[\/b\]/<span style="font-weight:bold">$1<\/span>/ig;
$str =~ s/\[i\](.*?)\[\/i\]/<span style="font-style:italic">$1<\/span>/ig;
以下使用したいBBコードの変換を列記
・
・
return $str;
}
のようなBBコード変換関数を追加し、
sub read_log 内の親記事、レス記事の
$com = &autolink($com) if ($cf{autolink});
をそれぞれコメントアウトして
$com = bbtrans($com);
を追加すればいいと思います。
記事No | : 14937 |
投稿日 | : 2016/06/29(Wed) 03:21:29 |
タイトル | : Re^2: Web PatioにBBCodeを使いたい |
ID情報 | : rick7634 |
投稿者 | : RICK |
URL | : http://bbs.dojin-rpg-cheat.com/bbs/patio.cgi |
>>hirayamaさん
>>てけてんさん
参考になる意見ありがとうございました。
結局のところhirayamaさんの例を参考に以下のようにいたしました。
【init.cgi】("1;"の直前に追加)
#-----------------------------------------------------------
# bbcode→html変換
#-----------------------------------------------------------
sub bbcode2html {
# BBCode を変換
my $str = $_[0];
$str =~ s/\[b\](.*?)\[\/b\]/<b>$1<\/b>/ig;
$str =~ s/\[i\](.*?)\[\/i\]/<i>$1<\/i>/ig;
$str =~ s/\[u\](.*?)\[\/u\]/<u>$1<\/u>/ig;
$str =~ s/\[d\](.*?)\[\/d\]/<s>$1<\/s>/ig;
$str =~ s/\[s\](.*?)\[\/s\]/<s>$1<\/s>/ig;
$str =~ s/\[color=([A-Z]+|#[0-9A-F]{6})\](.*?)\[\/color\]/<font color="\L$1\E">$2<\/font>/ig;
$str =~ s/\[size=([\+\-]?[1-7])\](.*?)\[\/size\]/<font size="$1">$2<\/font>/ig;
$str =~ s/\[hr(.*?)\]/<hr$1>/ig;
$str =~ s/\[url=((https?|ftp):\/\/[\w\!\#\$\%\&\'\(\)\*\+\,\-\.\/\:\;\=\?\@\~]*)\](.*?)\[\/url\]/\t<a href="$1" target="_blank" rel="nofollow">$3<\/a>/ig;
$str =~ s/<([1-3])>/"\$ex[$1]"/ieeg;
$str =~ s/\[list\](.*?)\[\/list\]/<ul>$1<\/ul>/ig;
$str =~ s/\[list=(1|A)\](.*?)\[\/list\]/<ol type="$1">$2<\/ol>/ig;
$str =~ s/\[\*\]/<li>/ig;
$str =~ s/\[quote\](.*?)\[\/quote\]/<blockquote>$1<\/blockquote>/ig;
$str =~ s/\[code\](.*?)\[\/code\]/<code>$1<\/code>/ig;
$str =~ tr/\0//d;
return $str;
}
【patio.cgi】(forum patioを参考に)
<置換前>
$com = &autolink($com) if ($cf{autolink});
<置換後>
if($com =~ /\[(.*?)\]/){
$com = bbcode2html($com) ;
} else{
$com = &autolink($com) ;
}
<補足>
[url]と自動リンクの件についてテストした所、
両方共うまくいきました。
記事No | : 14929 |
投稿日 | : 2016/06/26(Sun) 08:14:06 |
タイトル | : Re: Web PatioにBBCodeを使いたい |
ID情報 | : teketen |
投稿者 | : てけてん |
すでに、hirayamaさんが回答されていますが、折角なので。
WebPatio v5.11での改造です。
BBコードをタグ変換するのに、Parse::BBCodeモジュールを使用しています。
http://search.cpan.org/~tinita/Parse-BBCode-0.15/
よりダウンロードし、圧縮ファイル.tar.gzが解凍できるソフトで解凍して下さい。
解凍したら、フォルダの中に、libフォルダがあると思いますので、その中に格納されているParseフォルダ(中身の入ったまま)をpatioのlibディレクトリ(フォルダ)の中にアップロードして下さい。
.tar.gzの解凍方法については、自分で調べてください。
※※改造は、自己責任でお願いします。
また、正常に動作しない場合は、もとに戻してください。
以下の改造をしても動作しない場合でも、これ以上のサポートは行いません。
ご了承ください。
それでもよろしければ、改造してみて下さい。
-----------------------------------------------------------
■BBコードの仕様■
使用できるBBコードは、
b,i,u,img,url,email,size,color,list,*,quote,code,:-),:smile:
です。
・emailは、[email=example@example.com]リンクする文字[/email]が使用できます。
・:-)と:smile:は、[b]:-)[/b]のように、[b]と[/b]で挟む必要があります。
(Parse::BBCodeモジュールの仕様です)
但し、[b]こんにちは:-)〜[/b]のようにスマイル以外の文字を記述すると変換されません。
それ以外に記述された:-)と:smile:は、普通の文字として表示されます。
例:
BBコードでは、
「こんにちは〜[b]:smile:[/b] お元気ですか:-)」
タグに変換されると
「こんにちは〜<b><img src="アイコンのurl" alt=":smile:"></b> お元気ですか:-)」
になります。
他は、
https://ja.wikipedia.org/wiki/BB%E3%82%B3%E3%83%BC%E3%83%89
の記述と同じです。
・改造による仕様として、BBコードを記述したコメントでは、init.cgiの設定で
# URLの自動リンク (0=no 1=yes)
$cf{autolink} = 1;
にしていても、URLを記述しても自動リンクになりません([url][/url]を使用した時に面倒になるので、他のBBコードを記述しても無効にしました)。
リンクをさせたい場合は、[url][/url]を使用して下さい。
BBコードの記述のないコメントは、自動リンクになります(もちろん、0を指定している場合は、自動リンクにはなりません)。
この仕様が嫌な場合は、ご自分で改造して下さい。
私は、これ以上の対応はしません。
・ログファイルには、BBコードのまま保存されます。
観覧時に、タグに変換されます。
-----------------------------------------------------------
■patioの改造■
patioのinit.cgiをテキストエディタで開いてください。
一番最後の行に、
1;
がありますので、その前の行に
#-----------------------------------------------------------
# bbcode→html変換 改造の為に追加 ■■
#-----------------------------------------------------------
sub bb2html {
my $com = shift;
require Parse::BBCode;
my $p = Parse::BBCode->new({
tags => {
Parse::BBCode::HTML->defaults,
},
escapes => {
Parse::BBCode::HTML->default_escapes,
},
smileys => {
base_url => "$cf{iconurl}/",
icons => { qw/ :-) sml_sml.gif :smile: sml_big.gif / },
format => '<img src="%s" alt="%s">',
},
});
my $com = $p->render($com);
undef $p;
$com =~ s/<br>|&lt;br&gt;/<br>/ig;
return($com,1);
}
を挿入します。
この記述の中に、BBコードのスマイル( :-) と :smile: )を記述した時に変換されるアイコンの指定が
icons => { qw/ :-) sml_sml.gif :smile: sml_big.gif / },
この部分となります。
:-)をsml_sml.gifに、:smile:をsml_big.gifに指定しているので、別のアイコンにしたい場合は、sml_sml.gifとsml_big.gifを好きなアイコンに変更して下さい。
アイコン名のみ記述し、アイコンはinit.cgiの設定で
# アイコンディレクトリ【URLパス】
$cf{iconurl} = './icon';
で指定したディレクトリに入れてください。
次に、patio.cgiをテキストエディタで開いてください。
#-----------------------------------------------------------
# 記事閲覧
#-----------------------------------------------------------
という部分を探してください。
その記述の中に
$com = &autolink($com) if ($cf{autolink});
という部分が、親記事とレス記事の部分にありますので(レス記事は273行目付近と親記事は218行目付近、この2か所)、
my $al = 0; # 改造による追加 ■■
($com,$al) = bb2html($com) if($com =~ /\[(.*?)\]/); # 改造による追加 ■■
$com = &autolink($com) if ($cf{autolink} and $al == 0); # 改造による修正 ■■
に変更して下さい。
以上です。