トップ 差分 一覧 ソース 検索 ヘルプ RSS ログイン

FreeStyleWiki

FreeStyleWikiを入れてちょっといじくったので、メモる。

インストール

今回はFreeStyle Wiki 3.6.4を入れてみました。

wiki3_6_4.zipを展開、さらに修正パッチのfswiki-patch-20110813.zipとfswiki-pache-20110823.zipを適用。あとはディレクトリを作ったり設定を書いたりして、うまく動くようにする。

UTF-8化

まずはファイル自体の文字コードをEUC-JPからUTF-8にする。なんだか妖しいスクリプトがあったので、これを使うことにします。

#!/bin/sh

WIKIDIR=$1
TARGETS="backup config data lib plugin theme tmpl setup.dat setup.sh wiki.cgi"

convert_to_utf8() {
	FILE=$1
	echo Converting ${FILE}...
	mv ${FILE} ${FILE}.old
	iconv -f EUC-JP -t UTF-8 -o ${FILE} ${FILE}.old
	rm ${FILE}.old
}

if [ "${WIKIDIR}" != "" ]; then
	cd ${WIKIDIR} || exit
fi

for F in `find ${TARGETS} -type f -not \( -name "*.gif" -or -name "*.jpg" -or -name "*.png" \)`; do
	convert_to_utf8 "${F}"
done

次にコードをちょっといじる。ほんとにこれ全部必要なのか知りませんけど…。

diff -ur wiki.org/lib/CGI2.pm wiki/lib/CGI2.pm
--- wiki.org/lib/CGI2.pm	2011-10-05 05:19:11.341863952 +0900
+++ wiki/lib/CGI2.pm	2011-10-05 06:31:17.197907910 +0900
@@ -1,6 +1,6 @@
 ###############################################################################
 #
-# パラメータを常にEUC変換するCGIクラス
+# パラメータを常にUTF-8変換するCGIクラス
 #
 ###############################################################################
 package CGI2;
@@ -80,7 +80,7 @@
 	my $name  = shift;
 	my $value = shift;
 	
-	# 必ずEUCへの変換を行う
+	# 必ずUTF-8への変換を行う
 	if(Util::handyphone()){
 		if(defined($name)) {
 			#my @array = map {&Jcode::convert(\$_, "euc")} $self->CGI::param($name,$value);
@@ -88,7 +88,7 @@
 			my @values = $self->CGI::param($name,$value);
 			my @array = ();
 			foreach my $value (@values){
-				&Jcode::convert(\$value,"euc");
+				&Jcode::convert(\$value,"utf8");
 				push(@array,$value);
 			}
 			if($#array==0){
@@ -99,7 +99,7 @@
 				return undef;
 			}
 		} else {
-			return map { &Jcode::convert(\$_, "euc") } $self->CGI::param();
+			return map { &Jcode::convert(\$_, "utf8") } $self->CGI::param();
 		}
 	} else {
 		if(defined($name)) {
diff -ur wiki.org/lib/Util.pm wiki/lib/Util.pm
--- wiki.org/lib/Util.pm	2011-10-05 05:19:11.341863952 +0900
+++ wiki/lib/Util.pm	2011-10-05 06:33:35.913908973 +0900
@@ -35,7 +35,7 @@
 #===============================================================================
 sub url_encode {
 	my $retstr = shift;
-	$retstr = Jcode->new($retstr)->euc;
+	# $retstr = Jcode->new($retstr)->euc;
 	
 	$retstr =~ s/([^ 0-9A-Za-z])/sprintf("%%%.2X", ord($1))/eg;
 	$retstr =~ tr/ /+/;
@@ -100,7 +100,7 @@
 #===============================================================================
 sub escapeHTML {
 	my($retstr) = shift;
-	$retstr = Jcode->new($retstr)->euc;
+	# $retstr = Jcode->new($retstr)->euc;
 
 	my %table = (
 		'&' => '&',
diff -ur wiki.org/lib/Wiki/InterWiki.pm wiki/lib/Wiki/InterWiki.pm
--- wiki.org/lib/Wiki/InterWiki.pm	2011-10-05 05:19:11.341863952 +0900
+++ wiki/lib/Wiki/InterWiki.pm	2011-10-05 06:44:37.153922712 +0900
@@ -103,7 +103,7 @@
 	    || $source =~ /\[([^\[]+?)\|((\/|\.\/|\.\.\/)+[a-zA-Z0-9\.,%~^_+\-%\/\?\(\)!\$&=:;\*#\@']*)\]/) {
 		my $label = $1;
 		my $url   = $2;
-		my $enc   = "euc";
+		my $enc   = "utf8";
 		$self->add_inter_wiki($url,$label,$enc);
 	}
 	# 任意のURLリンク
diff -ur wiki.org/plugin/core/Source.pm wiki/plugin/core/Source.pm
--- wiki.org/plugin/core/Source.pm	2011-10-05 05:19:11.345863843 +0900
+++ wiki/plugin/core/Source.pm	2011-10-05 06:35:39.765910510 +0900
@@ -43,7 +43,7 @@
 		print "Content-Type: text/plain;charset=Shift_JIS\n\n";
 		&Jcode::convert(\$source,"sjis");
 	} else {
-		print "Content-Type: text/plain;charset=EUC-JP\n";
+		print "Content-Type: text/plain;charset=UTF-8\n";
 		if($ENV{"HTTP_USER_AGENT"} =~ /MSIE/){
 			print Util::make_content_disposition("source.txt", "attachment");
 		} else {
diff -ur wiki.org/plugin/google/Google.pm wiki/plugin/google/Google.pm
--- wiki.org/plugin/google/Google.pm	2011-10-05 05:19:11.345863843 +0900
+++ wiki/plugin/google/Google.pm	2011-10-05 06:36:57.341912847 +0900
@@ -125,7 +125,7 @@
 <!-- Google  -->
 <div class="plugin_google" align="$align">
 <form method=GET action="http://www.google.co.jp/search" $target>
-<a href="http://www.google.co.jp/"><IMG SRC="http://www.google.com/logos/Logo_${logo}.gif" border="0" ALT="Google" align="absmiddle"></a> <INPUT type=submit name=btnG VALUE="検索"><input type=hidden name=hl value="ja"><input type=hidden name=ie value="EUC-JP"><br>
+<a href="http://www.google.co.jp/"><IMG SRC="http://www.google.com/logos/Logo_${logo}.gif" border="0" ALT="Google" align="absmiddle"></a> <INPUT type=submit name=btnG VALUE="検索"><input type=hidden name=hl value="ja"><input type=hidden name=ie value="utf-8"><br>
 <INPUT TYPE=text name=q size=${size} maxlength=255 value="">${siteoption}
 </form>
 </div>
@@ -156,7 +156,7 @@
 <td  style="border: none" align=center>
 <INPUT TYPE=text name=q size=${size} maxlength=255 value="">
 <input type=hidden name=hl value="ja">
-<input type=hidden name=ie value="EUC-JP">
+<input type=hidden name=ie value="UTF-8">
 <INPUT type=submit name=btnG VALUE="Google検索">${siteoption}
 </td></tr></TABLE>
 </FORM>
diff -ur wiki.org/plugin/rss/RSSMaker.pm wiki/plugin/rss/RSSMaker.pm
--- wiki.org/plugin/rss/RSSMaker.pm	2011-10-05 05:19:11.349863764 +0900
+++ wiki/plugin/rss/RSSMaker.pm	2011-10-05 06:34:28.749910428 +0900
@@ -92,7 +92,7 @@
 	
 	# RSSをファイルに書き出す
 #	print "Content-Type: text/xml\n\n";
-	print RSS "<?xml version=\"1.0\" encoding=\"EUC-JP\"?>\n";
+	print RSS "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
 	print RSS "<!DOCTYPE rss PUBLIC \"-//Netscape Communications//DTD RSS 0.91//EN\"\n";
 	print RSS "            \"http://my.netscape.com/publish/formats/rss-0.91.dtd\">\n";
 	print RSS "<rss version=\"0.91\">\n";
diff -ur wiki.org/plugin/rss/RSSMaker10.pm wiki/plugin/rss/RSSMaker10.pm
--- wiki.org/plugin/rss/RSSMaker10.pm	2011-10-05 05:19:11.349863764 +0900
+++ wiki/plugin/rss/RSSMaker10.pm	2011-10-05 06:35:03.045914274 +0900
@@ -212,7 +212,8 @@
 	# RSSをファイルに書き出す
 	open(RSS,">$file") or die "RSSファイルの作成に失敗しました。";
 	binmode(RSS);
-	print RSS jcode($xml, 'euc')->utf8;
+	# print RSS jcode($xml, 'euc')->utf8;
+	print RSS $xml;
 	close(RSS);
 }
 
diff -ur wiki.org/tmpl/site/default/default.tmpl wiki/tmpl/site/default/default.tmpl
--- wiki.org/tmpl/site/default/default.tmpl	2011-10-05 05:19:11.349863764 +0900
+++ wiki/tmpl/site/default/default.tmpl	2011-10-05 06:37:46.785913786 +0900
@@ -9,7 +9,7 @@
       <meta name="ROBOTS" content="NOARCHIVE">
     <!--/TMPL_UNLESS-->
     
-    <meta http-equiv="Content-Type" content="text/html; charset=EUC-JP">
+    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
     <meta http-equiv="Content-Style-Type" content="text/css">
     
     <!--TMPL_VAR NAME="HEAD_INFO"-->
diff -ur wiki.org/wiki.cgi wiki/wiki.cgi
--- wiki.org/wiki.cgi	2011-10-05 05:19:11.353863716 +0900
+++ wiki/wiki.cgi	2011-10-05 06:46:02.229928367 +0900
@@ -18,6 +18,7 @@
 #==============================================================================
 # モジュールのインクルード
 #==============================================================================
+use utf8;
 use Cwd;
 use lib './lib';
 # ModPerl::Registry(Prefork)では@INCが初期化されている場合がある
@@ -294,7 +295,7 @@
 	if($is_handyphone){
 		print "Content-Type: text/html;charset=Shift_JIS\n";
 	} else {
-		print "Content-Type: text/html;charset=EUC-JP\n";
+		print "Content-Type: text/html;charset=UTF-8\n";
 	}
 	print "Pragma: no-cache\n";
 	print "Cache-Control: no-cache\n\n";

PDFまわりはあんまり使うつもりがないのでいじってないです。スマソ…。

前にやったときはすでにWikiで作ったページがいくらかあったので、それらの変換も(rubyで)やったのですが、今回はすでにUTF-8化されたところからお引っ越しだったので、そこらへんは…。

hogehoge.htmlのようなURLでアクセスできるようにする

ページへのリンクをstaticなURLにするプラグインを参照。