달력에 공휴일표시 질문입니다..[착한아이님 달력스킨 수정중] > 그누4 질문답변

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기
기존 게시물은 열람만 가능합니다.

달력에 공휴일표시 질문입니다..[착한아이님 달력스킨 수정중] 정보

달력에 공휴일표시 질문입니다..[착한아이님 달력스킨 수정중]

본문

눈이 돌아갈 정도로 뒤져봐도 달력에 공휴일 표시하는 팁이나 질답을 찾을 수가 없네요...ㅜㅜ
착한아이님의 달력스킨을 받아서 조금 수정해서 사용하려하는데
공휴일표시가 않되어 있어서 골머리를 썩고 있답니다...ㅠㅠ
 
원래 그누4에 회원가입시 들어있는 카렌다를 보고 이것저것 뜯어 붙혀봤는데도 제머리가 커지기만 하지 해결될 기미가 않보이네요...
 
수정중인 소스는 아래와 같습니다.
 
----------------------------------------------------------------------------------------
 
<?
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
$cellh  = 21;
$cellw  = 21;
?>
<style type="text/css">
td.title    {text-align: center; padding:8px 2px 2px 2px; font-weight:bold;}
td.invalid  {
 text-align: center; padding-top: 2pt; height:<?=$cellh?>; width:<?=$cellh?>;
 background-image: url(<?=$g4[path]?>/img/mini2.gif);
}
td.valid    {
 text-align: center; padding-top: 4pt; height:<?=$cellh?>; width:<?=$cellh?>;
 background-image: url(<?=$g4[path]?>/img/mini2.gif);
}
td.today    {
 text-align: center; padding-top: 4pt; height:<?=$cellh?>; width:<?=$cellh?>;font-weight:bold;
 background-image: url(<?=$g4[path]?>/img/mini3.gif);
}
.border1 { border:1px solid #dddddd; }
.bd_line2 {
      border-bottom:1px solid #fff;
   border-top:1px solid #ddd;
   }
p.title     {font-size: 12px; font-weight:bold}
p.sunday    {text-align: center; font-size: 12px; color: #E80000;}
p.saturday  {text-align: center; font-size: 12px; color: #3366cc;}
p.weekday   {text-align: center; font-size: 12px;}
a:link.writeday, a:visited.writeday  {text-align: center; font-size: 8pt; color: #fd7100; font-weight:bold;}
</style>
<?
function SkipOffset($no)
{
  for ($i = 1; $i <= $no; $i++) {
    echo " <TD class=invalid><p></p></TD> \n";
  }
}
//---- 오늘 날짜
$thisyear  = date('Y');  // 2000
$thismonth = date('n');  // 1, 2, 3, ..., 12
$thisday   = date('j');  // 1, 2, 3, ..., 31
//------ $year, $month 값이 없으면 현재 날짜
if (!$year) { $year = $thisyear; }
if (!$month) { $month = $thismonth; }
//------ 날짜의 범위 체크
if (($year > 9999) or ($year < 0)){
 alert("연도는 0~9999년만 가능합니다.");
}
if (($month > 12) or ($month < 0)){
 alert("달은 1~12만 가능합니다.");
}
$maxdate = date(t, mktime(0, 0, 0, $month, 1, $year));   // the final date of $month
$prevmonth = $month - 1;
$nextmonth = $month + 1;
$prevyear = $year;
$nextyear = $year;
if ($month == 1) {
  $prevmonth = 12;
  $prevyear = $year - 1;
} elseif ($month == 12) {
  $nextmonth = 1;
  $nextyear = $year + 1;
}
$ti_link = "";
if($bo_table) {
 $sql = "select count(wr_id) as blog_count, conv(substring(wr_datetime, 9, 2), 10, 10) as blog_day
      from g4_write_$bo_table
   where wr_datetime>='$year-$month-01' and wr_datetime<='$year-$month-31 9'
   group by left(wr_datetime, 10) ";
 $result = sql_query($sql);
 $write_blog = array_fill(1,$maxdate,-1);
 for ($i = 0; $row = mysql_fetch_array($result); $i++) {
  $write_blog[$row[blog_day]] = $row[blog_count];
 }
 mysql_free_result($result);
 $ti_link = "board.php";
}
?>
<div class="border1" style="background-color:#F7F7F7;">
<TABLE width=<?=$cellw*7?> cellSpacing=0 cellPadding=5 border=0>
<TR>
 <TD width=100% colspan=7 class=title>
  <a href="<?=$ti_link?>?bo_table=<?=$bo_table?>&year=<?=$prevyear?>&month=<?=$prevmonth?>">
  <img src='<?=$g4[path]?>/img/prev.gif' border=0 align=absmiddle width=12 height=12></a> 
     <?=$year?> 年 <?=$month?> 月 
  <a href="<?=$ti_link?>?bo_table=<?=$bo_table?>&year=<?=$nextyear?>&month=<?=$nextmonth?>">
  <img src='<?=$g4[path]?>/img/next.gif' border=0 align=absmiddle width=12 height=12></a>
<br>
 <div style="width:140px;height:1px"><hr class="bd_line2"></hr></div>
 </TD>
</TR>
<TR>
 <td class="sunday"><p class=sunday>日</p></td>
 <td class="weekday"><p class=weekday>月</p></td>
 <td class="weekday"><p class=weekday>火</p></td>
 <td class="weekday"><p class=weekday>水</p></td>
 <td class="weekday"><p class=weekday>木</p></td>
 <td class="weekday"><p class=weekday>金</p></td>
 <td class="saturday"><p class=saturday>土</p></td>
</TR>
<TR>
<?
$date = 1;
while ($date <= $maxdate) {
  if ($date == '1') {
    $offset = date('w', mktime(0, 0, 0, $month, $date, $year));  // 0: sunday, 1: monday, ..., 6: saturday
    SkipOffset($offset);
  }
  if ( $date == $thisday  &&  $year == $thisyear &&  $month == $thismonth) {
    $cstyle = 'today';
  } else {
    $cstyle = 'valid';
  }
  switch ($offset) {            // 요일에 따라 날짜의 색깔 결정
    case 0: $dstyle = 'sunday';
            break;
    case 6: $dstyle = 'saturday';
            break;
    default: $dstyle = 'weekday';
  }
  $date_array = array(sprintf('%04d', $year), sprintf('%02d', $month), sprintf('%02d', $date));
  $date_stext = implode("-", $date_array);
  if($bo_table && $write_blog[$date] > 0) {
   $date_link = "<p><a href='board.php?bo_table=$bo_table&sfl=wr_datetime&sop=and&stx=$date_stext' class=writeday>{$date}</a></p>";
  } else {
 $date_link = "<p class=$dstyle>{$date}</p>";
  }
  echo " <TD class=$cstyle>{$date_link}</TD> \n";
  $date++;
  $offset++;
  if ($offset == 7) {
    echo "</TR> \n";
    if ($date <= $maxdate) {
      echo "<TR> \n";
    }
    $offset = 0;
  }
} // end of while
if ($offset != 0) {
  SkipOffset((7-$offset));
  echo "</TR> \n";
}
?>
<TR><TD height="5px"></TD></TR>
</TABLE>
</div>
 
----------------------------------------------------------------------------------------
 
공휴일을 텍스트파일로 만들어서 불러오는 식을 하려했지만, 전혀 원리를 모르니 그건 포기...
소스내에 공휴일 날짜를 넣어 해당일자의 글자색깔만 바뀌게 하는 것만이라도 하고 싶네요..ㅠㅠ
 
도무지 어디부터 풀어야 할지 몰라서... 혹시 아시는 분께 도움을 요청합니다.
 
음.... 착한아이님을 잡으러 가야되나...?....ㅡ.,ㅡ;;;
 
  • 복사

댓글 전체

공휴일을 텍스트파일로 만들어서 불러오는 식을 하려했지만
---> bbs/calendar 안에 공휴일 포함해서 2005년 2006년 일정이 기본으로 텍스트 파일로 들어있습니다.

아마 내년 되기 전에 관리자님께서 2007년꺼 넣어 주시겠죠...
아닌가...!!! 에궁.... ㅡ,ㅡa
먼저 파일을 불러올때 상단에 php 부분에 아래를 넣어 주세요
(아래는 그누보드에서 일정파일을 불러온 방식입니다.)

$f = @file("$g4[path]/bbs/calendar/$year.txt");
if ($f) {
while ($line = each($f)) {
$tmp = explode("|", $line[value]);
        $nal[$tmp[0]] = $tmp;
    }
}



참고로 아래의 배열 변수처럼 불러옵니다.
$nal[$tmp[0]]  --> 날짜
$nal[$tmp[1]]  --> 날짜에 해당하는 내용
$nal[$tmp[2]]  --> 내용중 *가 있으면 공휴일
마지막 구분은 네모



일단 불러만 오면 여러가지 방법으로 표현은 자유롭게 하실수 있을겁니다.



전 요일에 따라 날짜 색깔 결정의 스위치문 다음에 아래처럼 넣어 놨습니다.
$tmp = sprintf("%02d",$month)."-".sprintf("%02d",$date);
if ($nal[$tmp]) { if (trim($nal[$tmp][2]) == "*") { $dstyle = "sunday"; } }//공휴일
오옷! 감사합니다.
역시 그부분을 추측해 봤는데, 말씀하신 배열변수를 어떻게 써야 될지 몰라서 포기했던 것이었슴다...ㅠㅠ
원본 카렌다 소스에는 $yyyy.txt 로 되어있는데, 그걸 $year로 바꾼다는 건 꿈에도 몰랐으니...ㅠㅠ;;

덕분에 잘 해결 봤습니다. 감사합니다.
역시!!! 착! 한! 아! 이! 님이셔~

 - 요즘 잘 않보이신가 싶었는데, 그런게 아니었군요~?!  제가 너무 관심이 없었나보넹...ㅡ.,ㅡ;;;
 - 맨날 눈팅만 하다 장님될뻔했음...ㅎ
© SIRSOFT
현재 페이지 제일 처음으로