WebSVN(http://www.websvn.info/)を使いやすいようにカスタマイズする。 使っているWebSVNのバージョンは2.3.2 (2010/12/10)。
■ ShiftJIS (SJIS) や JIS, EUCに対応させる
include/command.php 26行目あたり
// command.php
//
// External command handling
function detectCharacterEncoding($str) {
// $list = array(/*'ASCII',*/ 'UTF-8', 'ISO-8859-1');
$list = array('UTF-8', 'SJIS', 'JIS', 'EUC-JP', 'ISO-8859-1');
if (function_exists('mb_detect_encoding')) {
// @see http://de3.php.net/manual/en/function.mb-detect-encoding.php#81936
// why appending an 'a' and specifying an encoding list is necessary
return mb_detect_encoding($str.'a', $list);
} else if (function_exists('iconv')) {
foreach ($list as $item) {
$encstr = iconv($item, $item.'//TRANSLIT//IGNORE', $str);
if (md5($encstr) == md5($str)) return $item;
}
}
return null;
}
■ ユーザ名消去
ファイルリストやログ表示で「修正者」の所に表示されるユーザ名を消去、または適当な文字列に差し替える。
include/svnlook.php 283行目と402行目あたり
case 'AUTHOR':
if ($debugxml) print 'Author: '.$data."\n";
if ($data === false || $data === '') return;
if (function_exists('mb_detect_encoding') && function_exists('mb_convert_encoding'))
$data = mb_convert_encoding($data, 'UTF-8', mb_detect_encoding($data));
// $curList->curEntry->author .= $data;
$curList->curEntry->author = 'user';
break;
■ 拡張子 cgi を perl 構文として着色する
include/setup.php 283行目と402行目あたり
'.cc' => 'cpp',
'.cgi' => 'perl',
'.cpp' => 'cpp',
'matlab' => array('m'),
'perl' => array('pl', 'pm', 'cgi'),
'php' => array('php', 'php3', 'php4', 'php5', 'phps', 'phtml'),
■ ダウンロードの有効化
ダウンロード機能を強制的に有効化する
include/configclass.php 230行目あたり
// Local configuration options must start off unset
var $allowDownload = true;
var $minDownloadLevel = 0;
var $allowedExceptions = array();
var $disallowedExceptions = array();
この変更で、function isDownloadAllowed($path) が true を返すようになり、listing.php の150行目あたりの if ($rep->isDownloadAllowed($path.$file)) を通過できるようになる。 (解決方法として、もしかして間違ってるかも…)
■ 更新日時を○○日○○時間前から、20XX-XX-XX 00:00:00 形式へ変更
リポジトリ一覧での表示変更
index.php 75行目あたり
if (isset($log->entries[0])) {
$head = $log->entries[0];
$listing[$i]['revision'] = $head->rev;
$listing[$i]['date'] = $head->date;
// $listing[$i]['age'] = datetimeFormatDuration(time() - strtotime($head->date));
$listing[$i]['age'] = $head->date;
$listing[$i]['author'] = $head->author;
} else {
ファイル一覧での表示変更
listing.php 146行目あたり
// $listing[$index]['age'] = $entry->age;
$listing[$index]['age'] = $entry->date;
$listing[$index]['date'] = $entry->date;