管理画面での設定変更時のエラー

trac管理画面で
リポジトリの追加を行ったところ
trac全体がweb上で表示されなくなった

■原因
リポジトリの追加際に指定するディレクトリを
「/var/web/hogehoge」
と指定するところを
「//var/web/hogehoge」
とスラッシュを1つ多く入力してしまったためエラーが起きてしまっていた

■解決方法
サーバに接続し直接trac.dbを編集した
repositoryテーブルに設定が書いてある。

>> sqlite3 trac.db
sqlite>>UPDATE repository set value = '/var/web/hogehoge' where name = 'dir';

/1つでサイトがまったく見れなくなる
これはバグではないだろうか。。。

複数の外部 JavaScript に分かれた複数の関数を window.onload で実行

A.js
var hoge = window.onload;
window.onload = function() {
if(hoge != null) hoge();
alert("ここでなにかする");
}
B.js
var hage = window.onload;
window.onload = function() {
if(hage != null) hage();
alert("さらになにかする");
}
この方法だと window.onload の退避先がグローバル変数になってしまっているので、名前が被らないように注意する必要があります。

【PHP】改行コードの前にを挿入する関数nl2br()

テキストエリアから取得した文章内の改行コードをeregi_replaceを使って置換していたら
nl2br()を使えばいいんじゃないといわれた。

<?php
$str = "1行目\n2行目";
print nl2br($str);
?>

これで\nとか改行コードを変換してくれると教えられたけど落とし穴が…

nl2brはあくまで改行コードの前に
を挿入してるだけで置換しているわけじゃないので、
上のPGだと nl2br($str);で出力されるのは
1行目
\n2行目
となってしまう。

あとの処理で\nをどうしても消したかったので、
おとなしく置換で対応しました

【JavaScript】$Aを Prototype.jsを使わずに実装

Prototype.jsを使って実装していたものを使わないでくれといわれた時の実装例、


Prototype.jsを使用した実装

// アウトライン対策 for IE
if (Prototype.Browser.IE == true) {
	var list = $A($('checkItemList').getElementsByTagName('LI'));
	list.each(function(node) {
		node.getElementsByTagName('A')[0].onfocus = function() {
			this.blur();
		}
	});
}

Prototype.jsを使用しない実装

// アウトライン対策 for IE
if (/MSIE./i.test(navigator.userAgent)) {
	var el = document.getElementById("checkItemList").getElementsByTagName('A');
	for (var i = 0; i < el.length; i++) { 
		el[i].onfocus = function() {
			this.blur();
		}
	}
}

【JavaScript】documentの参照メモ

<dl class="maintenance" id="setFuc1">
<dt><img src="image/txt_maintenance.gif" alt="ほげ"></dt>  
<dd>ほげほげ</dd>
<dd class="btnDetail"><a href="/hogehoge/index.asp" class="swap" id="dAnc2"><img src="image/btn_detail_0.gif" alt="もげ"></a></dd>
</dl>

タグのid="dAnc2"内にあるimageのsrcを取りたいとき

var el = document.getElementById(setFuc);
el.link = document.getElementsByTagName('a')[dAnc].href;
el.onmouseover = function() {
	this.getElementsByTagName('img')[1].src = "image/btn_detail_1.gif";
	alert(el.link);
}