カスタマイズ
カスタマイズ : bulletin_cal.phpのカスタマイズ
- 投稿者 :
- hi-debow
- 投稿日時 :
- 2008-01-12 [ 464 ヒット - 0 コメント ]

どもhi-debowです。
今日はbulletinモジュールのカレンダーブロックを表示させてみました。
このブロックは左ブロックや右ブロック等の横幅が狭い場所へ表示させると、必ずと言って良いほどはみ出してしまいデザインを崩してしまいます。
そこで狭い場所への表示でもはみ出さないようにするカスタマイズをしてみました。
このカスタマイズによる変化は、固定幅から可変幅への変更と文字サイズが小さくなるよう変更しています。
これで約170px以上の幅まではみ出さないと思います。
また、このカレンダーブロックはテンプレートを持っておらず、直接phpファイルをカスタマイズする事になります。
xoops_trust_path/modules/bulletin/class/ 以下のbulletin_cal.phpファイルへ下記の内容をコピペして下さい。もちろんオリジナルファイルのバックアップをお忘れなく。
bulletinのバージョンはbulletinHD-2.1です。
<?php
class Bulletin_Cal
{
var $year;
var $month;
var $day;
var $weekday;
var $lang_week = array('Sun','Mon','Tue','Wed','The','Fri','Sat');
var $link = array();
var $title = '';
var $timestamp;
var $lang_p_mon = '<';
var $lang_n_mon = '>';
var $startday;
var $endday;
var $query = 'today';
function setDate($today="", $startday=0, $endday=0)
{
if(preg_match('/([0-9]{4})-([0-9]{2})/', $today, $todayarr)){
$year = $todayarr[1];
$month = $todayarr[2];
}else{
$year = date('Y');
$month = date('m');
}
if(!checkdate($month,1,$year)){
$year = date('Y');
$month = date('m');
}
//if( !empty($startday) && $year*100+$month < intval(date('Ym',$startday))){
// $year = date('Y', $startday);
// $month = date('m', $startday);
//}
//if( !empty($endday) && $year*100+$month > intval(date('Ym',$endday))){
// $year = date('Y', $endday);
// $month = date('m', $endday);
//}
if( !empty($endday) && date('Ym') > intval(date('Ym',$endday))){
$endday = time();
}
$weekday = intval(date('w', mktime(0,0,0,$month,1,$year)));
$this->year = intval( $year );
$this->month = intval( $month );
$this->weekday = intval( $weekday );
$this->startday = intval( $startday );
$this->endday = intval( $endday );
$this->timestamp = mktime(0,0,0,$month,1,$year);
}
function setWeekName($week="")
{
if( is_array($week) && count($week)==7){
$this->lang_week = $week;
return true;
}
return false;
}
function setLink($day, $url)
{
$day = intval($day);
$this->link[$day] = $url;
}
function setTitle($title = 'Y-m')
{
$this->title = date($title, $this->timestamp);
}
function setQueryStr($query = 'today')
{
$this->query = $query;
}
function getCalendar()
{
$w = $this->weekday;
$m = $this->month;
$y = $this->year;
$d = $this->day;
$ret = array();
for($i=0; $i<7; $i++){
$ret[0][$i]['label'] = $this->lang_week[$i];
$ret[0][$i]['link'] = '';
}
for($i=0; $i<$w; $i++){
$ret[1][$i]['label'] = '';
$ret[1][$i]['link'] = '';
}
$i = 1;
$l = 1;
while(checkdate($m,$i,$y)){
if( isset($this->link[$i]) ){
$ret[$l][$w]['link'] = $this->link[$i];
}else{
$ret[$l][$w]['link'] = '';
}
if($w == 0){
$ret[$l][$w]['label'] = $i;
}elseif($w == 1){
$ret[$l][$w]['label'] = $i;
}elseif($w == 2){
$ret[$l][$w]['label'] = $i;
}elseif($w == 3){
$ret[$l][$w]['label'] = $i;
}elseif($w == 4){
$ret[$l][$w]['label'] = $i;
}elseif($w == 5){
$ret[$l][$w]['label'] = $i;
}elseif($w == 6){
$ret[$l][$w]['label'] = $i;
}
if($w == 6){
$l++;
}
$i++;
$w++;
$w = $w % 7;
}
if($w > 0){
while($w < 7){
$ret[$l][$w]['label'] = '';
$ret[$l][$w]['link'] = '';
$w++;
}
}
return $ret;
}
function getThemeCalendar()
{
$w = $this->weekday;
$m = $this->month;
$y = $this->year;
$ret = '<table class="outer">';
$ret .= $this->getTitleBar();
foreach( $this->getCalendar() as $line => $weeks ){
$ret .= '<tr style="text-align: center; font-weight: nomal;">';
foreach($weeks as $weekday){
$style = ( $line > 0 ) ? 'even' : 'head';
//$style = ( $style == 'even' && !empty($weekday['link']) ) ? 'odd' : $style;
$text = empty($weekday['label']) ? ' ' : $weekday['label'] ;
$text = empty($weekday['link']) ? $text : '<a href="'.$weekday['link'].'" style="font-weight: bold;">'.$text.'</a>';
$ret .= '<td class="'.$style.'" style="font-size: 90%; padding: 1%;">'.$text.'</td>';
}
$ret .= '</tr>';
}
$ret .= '</tr></table>';
return $ret;
}
function getTitleBar()
{
$w = $this->weekday;
$m = $this->month;
$y = $this->year;
if( !empty($this->title)){
$p_month = date("Y-m", mktime(0,0,0,$m,0,$y));
$n_month = date("Y-m", mktime(0,0,0,$m+1,1,$y));
$ret = '<tr>';
$ret .= '<th style="text-align: center; padding: 1%; font-weight: normal;" colspan="7">';
if( empty($this->startday) || $y*100+$m-1 >= intval(date('Ym',$this->startday))){
$ret .= '<a href="?'.$this->query.'='.$p_month.'">'.$this->lang_p_mon.'</a>';
}
$ret .= ' ';
$ret .= $this->title;
$ret .= ' ';
if( empty($this->endday) || $y*100+$m+1 <= intval( date('Ym',$this->endday) ) ){
$ret .= '<a href="?'.$this->query.'='.$n_month.'">'.$this->lang_n_mon.'</a>';
}
$ret .= '</th></tr>';
}
return $ret;
}
}
?>
アーカイブ
RSS

