eclipse の設定(Preferences)で Web HTML 検証(Validate) の項を開く。
要素、属性、ドキュメント・タイプ、コメント、CDATAセクション、処理命令、エンティティ、テキスト領域の各項目の設定を任意に変更する。
「エラー」や「警告」のチェックをルーズにしないと「問題」が山積みになって大変。
Xoopsの最近のブログ記事
i色気のない Xoops のログイン画面をちょとだけ色っぽく(?)してみようと思った。
XOOPS_URL/modules/legacytemplates/legacy_redirect.html の8行目の <div ... > の style を変える。
オリジナル:
<div style="text-align:center; background-color: #EBEBEB; border-top: 1px solid #FFFFFF; border-left: 1px solid #FFFFFF; border-right: 1px solid #AAAAAA; border-bottom: 1px solid #AAAAAA; font-weight : bold;">
変更後:
<div style="text-align:center; background-color: #ffffcc; border-top: 1px solid #FFFFFF; border-left: 1px solid #FFFFFF; border-right: 1px solid #AAAAAA; border-bottom: 1px solid #AAAAAA; font-weight : bold;">

ちょっと黄色っぽくしてみた。
副作用:ログインだけでなく redirect_header() を使ったリダイレクト全てに適用されます。
2.1.5 RCを新規にフルインストールすると管理画面で css が読み込まれないのか表示がおかしくなってしまう。
2.1.4にオーバーライトすればいいのだろうか?
直そうとしたけどどこをいぢればいいいか解らんのでやめた。
今日は最近誰がログインしたかを表示するネタ。
暇なサイトをやっていると「今誰がログインしてるか?」なんて見ても仕方ない(誰も来てない)ので「最近誰が来たか」の足跡をチェックしてみました。件数は LIMIT の値を勝手に変えてください。
--- こっから
// 最近のログイン
$xoopsDB =& Database::getInstance();
$tbl = $xoopsDB->prefix('users');
$sql = "SELECT uname, name, last_login FROM $tbl ORDER BY last_login DESC LIMIT 10;";
$cls = array("class='even'", "class='odd'");
if ($res = $xoopsDB->query($sql)) {
$n = -1;
while ($row = $xoopsDB->fetchArray($res)) {
$uname= $row['uname'];
$name = $row['name'];
$last = date('y-m-d H:i',$row['last_login']);
$c = $cls[($n=!$n)];
$tr[] = "<tr $c><td>$uname<td>$last";
}
}
echo "<table style='border:1px solid #777'>";
foreach($tr as $r) echo $r;
echo "</table>";
--- ここまで
Xoops の持っているデバッグ機能を管理画面外から切り替えるブロック。
Smarty に渡された変数や、MySQL が実行した(そして失敗した)SQL文が見られるのは 意外と便利。
でもいちいち管理画面で切り替えるのは面倒。
だからブロックで任意のモジュール画面に表示させる。
---- ここから
// Switch Debug mode ver 1.4 (c) 2005-2008 by Tensu.
include_once(XOOPS_ROOT_PATH.'/mainfile.php');
global $xoopsDB,$xoopsConfig;
if (isset($_GET['deb-sw'])) {
$deb_sw = $_GET['deb-sw'];
if ($deb_sw != $xoopsConfig['debug_mode']) {
$xoopsConfig['debug_mode'] = $deb_sw;
if (is_object($xoopsDB)) {
$xoopsDB->queryF("UPDATE ".$xoopsDB->prefix('config')
." SET conf_value='$deb_sw'"
." WHERE conf_name='debug_mode' LIMIT 1;");
}
$url = htmlspecialchars($_SERVER['HTTP_REFERER']);
redirect_header($url, 0, 'Switched Debug mode.');
}
}
$sel=array(0=>'',1=>'',2=>'',3=>'');
$sel[$xoopsConfig['debug_mode']] = "selected";
echo <<<END
<form method='GET'>
<select name='deb-sw' onchange='submit();' style='margin:0px; width:90%;'>
<option value='0' $sel[0]> Off
<option value='1' $sel[1]> PHP Debug
<option value='2' $sel[2]> MySql / Blocks
<option value='3' $sel[3]> Smarty
</select>
</form>
END;
// Don't remove this comment.
---- ここまで
Xoops のカスタムブロック用に、任意長のパスワードを作って表示するコードを書いてみた。
強制メンバー登録(?)時に便利かもしれない。
---- ここから ----
// Password Block ver 1.2 (c) 2008 by Tensu
$str = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
$num = isset($_GET['num'])?intval($_GET['num']):8;
$len = strlen($str) -1;
$pass='';
for($i=0; $i<$num; $i++)
$nbsp; $pass .=substr($str,rand(0,$len),1);
$m = 'margin:0px';
$f = 'font-size:9pt';
$w = 'width:100%';
$p = 'padding:0px';
$p2= 'padding-left:2px';
echo <<<L1
<form>
<table style='$m;$p;$w;'>
<tr>
<td>
<select name='num' onchange='submit();' style="$m;$f;">
L1;
for ($i=4; $i<=20; $i++) {
echo "<option value='$i'";
if ($i==$num) echo " selected";
echo "> $i";
}
echo <<<L2
</select>
<td>
<input type='text' name='pass' size='16' value='$pass' onclick='submit();' style='$m;$f;$p2;'>
<td>
<button type='submit'>?</button>
</table>
</form>
L2;
//このコメント取ると動かない!
---- ここまで
ローカルサーバにXOOPS2.0.16をインストールしたらデータベースで文字化け発生。
XOOPS Cube日本語サイトの フォーラム一覧 - トピック一覧 > 質問箱 > データベースの文字化けにて解決策を得る。