Xoopsの最近のブログ記事

eclipse の設定(Preferences)Web HTML 検証(Validate) の項を開く。
要素属性ドキュメント・タイプコメントCDATAセクション処理命令エンティティテキスト領域の各項目の設定を任意に変更する。
エラー」や「警告」のチェックをルーズにしないと「問題」が山積みになって大変。

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;">

1010-15a.jpg
ちょっと黄色っぽくしてみた。

副作用:ログインだけでなく redirect_header() を使ったリダイレクト全てに適用されます。

XOOPS Cube Legacy 2.1.5 RC

2.1.5 RCを新規にフルインストールすると管理画面で css が読み込まれないのか表示がおかしくなってしまう。
2.1.4にオーバーライトすればいいのだろうか?
直そうとしたけどどこをいぢればいいいか解らんのでやめた。

xoops 最近のログイン

xoops カスタムブロックネタが続きます。
今日は最近誰がログインしたかを表示するネタ。
暇なサイトをやっていると「今誰がログインしてるか?」なんて見ても仕方ない(誰も来てない)ので「最近誰が来たか」の足跡をチェックしてみました。件数は 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日本語サイトの フォーラム一覧 - トピック一覧 > 質問箱 > データベースの文字化けにて解決策を得る。

連絡先

nakanohito