{strip}{* 必要な要素を準備する間ソースを綺麗にするため一行にまとめる *}
{* カレンダー作成 ****************************************************
* iframで呼び出しているページのURLで表示タイプを切り替える *
* 直下のvalue=" " の文字で調整すること *
**********************************************************************
* 表示タイプをURLで判断するためのキーワード設定 *******************
* ユニークキーになる単語をURLから選択して記述すること *}
{assign var="SmallType" value="unknown"}
{assign var="BigType" value="campus"}
{assign var="TallType" value="news-test"}
{assign var="MiddleType" value="middle"}
{*********************************************************************
* カレンダー めくり移動用
* 月めくり機能のターゲットを確定し、ターゲット月とその前月を宣言
* * GETされた年月を基にして押されたスイッチ(next/back :GET[MonthChangeButton])で表示する月を求める
* 12月から1月へ等の移動は年の増減も加えて処理する
* GETデータが存在しなければ現在の年月を反映する
* ※(戻るBackで遷移した場合のエラーを防ぐためPOSTでなくGETを採用)
* TargetYear: ターゲット年
* TargetMonth: ターゲット月
* BefoerMonth: ターゲットの前月
* MonthChangeButton: 移動ボタンを押した場合のGET名
**********************************************************************}
{* GETで取得できる場合は反映、そうでなければ現在の年月を変数に割り当て *}
{if isset($smarty.get.TargetYear)}
{assign var="TargetYear" value=$smarty.get.TargetYear}
{else}
{assign var="TargetYear" value=$smarty.now|date_format:"%Y"}
{/if}
{if isset($smarty.get.TargetMonth)}
{assign var="TargetMonth" value=$smarty.get.TargetMonth}
{else}
{assign var="TargetMonth" value=$smarty.now|date_format:"%m"}
{/if}
{* 移動ボタンで遷移の場合、年月を増減して変数に代入 *}
{if isset($smarty.get.MonthChangeButton)}
{assign var="MonthChangeButton" value=$smarty.get.MonthChangeButton}
{if $smarty.get.MonthChangeButton eq 'next'}
{if $TargetMonth+1 === 13}
{assign var="TargetMonth" value="1"}
{assign var="TargetYear" value=$TargetYear+1}
{else}
{assign var="TargetMonth" value=$TargetMonth+1}
{/if}
{elseif $smarty.get.MonthChangeButton eq 'back'}
{if $TargetMonth-1 === 0}
{assign var="TargetMonth" value="12"}
{assign var="TargetYear" value=$TargetYear-1}
{else}
{assign var="TargetMonth" value=$TargetMonth-1}
{/if}
{/if}
{/if}
{*********************************************************************
* ターゲットの年月からその月の初日(1日)の曜日を求める
* ユリウス変換 ツェラーの公式
* Week01point: ターゲット月の1日の曜日
* PHPが使用可能なら命令文で1行
**********************************************************************}
{* 1月、2月は 前年の 13月、14月として計算する *}
{if $TargetMonth < 3}
{assign var="JuliusYear" value=$TargetYear-1}
{assign var="JuliusMonth" value=$TargetMonth+12}
{else}
{assign var="JuliusYear" value=$TargetYear}
{assign var="JuliusMonth" value=$TargetMonth}
{/if}
{* ツェラーの公式
* 年を4で割ったA(以降、小数点切り捨て)
* 年を100で割ったB
* 年を400で割ったC
* 月を13掛けたD1
* D1+8のD2
* D2を5で割ったD3
* D3+1のE(ここで足す1は「1日」の意味)
* 年+A+C+D‐B=E
* Eを7で割った数値が曜日の指針になる
* 1:日曜 2:月曜 3:火曜・・・ *}
{assign var="AAA" value=$JuliusYear/4|floor}
{assign var="BBB" value=$JuliusYear/100|floor}
{assign var="CCC" value=$JuliusYear/400|floor}
{assign var="DD1" value=$JuliusMonth*13}
{assign var="DD2" value=$DD1+8}
{assign var="DD3" value=$DD2/5|floor}
{assign var="DDD" value=$DD3+1}
{assign var="EEE" value=$JuliusYear+$AAA+$CCC+$DDD-$BBB}
{assign var="Week01point" value=$EEE%7|floor}
{* 初期化 変更不可! **************}
{assign var="EventFlag" value="NG"}
{assign var="TargetDay" value=1}
{assign var="TargetWeek" value=1}
{assign var="NextMonthDay" value=1}
{**** 今日の日付8桁 **************************************************}
{assign var="Today8form" value=$smarty.now|date_format:"%Y%m%d"}
{**** 月日の2桁の準備 ************************************************}
{assign var="TargetMonth2form" value=$TargetMonth|string_format:"%02d"}
{assign var="TargetDay2form" value=$TargetDay|string_format:"%02d"}
{**** ターゲット月の月末日を確定する *********************************
* TargetMonthLastDay: ターゲット月の最終日
* BeforeMonthLastDay: ターゲット前月の最終日
* 途中、小の月の条件式で9月部分がうまく認識されなかったのでeq 9 となっている
***** 2月の閏年計算 **************************************************}
{if $TargetMonth2form eq 02}
{if $TargetYear%4 eq 0}
{if $TargetYear%100 eq 0}
{if $TargetYear%400 eq 0}
{assign var="TargetMonthLastDay" value="29"}
{assign var="BeforeMonthLastDay" value="31"}
{else}
{assign var="TargetMonthLastDay" value="28"}
{assign var="BeforeMonthLastDay" value="31"}
{/if}
{else}
{assign var="TargetMonthLastDay" value="29"}
{assign var="BeforeMonthLastDay" value="31"}
{/if}
{else}
{assign var="TargetMonthLastDay" value="28"}
{assign var="BeforeMonthLastDay" value="31"}
{/if}
{**** 2月以外の小の月 ************************************************}
{elseif $TargetMonth2form eq 04 or $TargetMonth2form eq 06 or $TargetMonth eq 9 or $TargetMonth2form eq 11}
{assign var="TargetMonthLastDay" value="30"}
{assign var="BeforeMonthLastDay" value="31"}
{**** 3月 ************************************************************}
{elseif $TargetMonth2form eq 03}
{if $TargetYear%4 eq 0}
{if $TargetYear%100 eq 0}
{if $TargetYear%400 eq 0}
{assign var="BeforeMonthLastDay" value="29"}
{assign var="TargetMonthLastDay" value="31"}
{else}
{assign var="BeforeMonthLastDay" value="28"}
{assign var="TargetMonthLastDay" value="31"}
{/if}
{else}
{assign var="BeforeMonthLastDay" value="29"}
{assign var="TargetMonthLastDay" value="31"}
{/if}
{else}
{assign var="BeforeMonthLastDay" value="28"}
{assign var="TargetMonthLastDay" value="31"}
{/if}
{**** 1/8月 **********************************************************}
{elseif $TargetMonth2form eq 01 or $TargetMonth eq 8}
{assign var="BeforeMonthLastDay" value="31"}
{assign var="TargetMonthLastDay" value="31"}
{**** 他の大の月 *****************************************************}
{else}
{assign var="BeforeMonthLastDay" value="30"}
{assign var="TargetMonthLastDay" value="31"}
{/if}
{**********************************************************************
* 配列を一気に作成できないので48回分のループ用配列を作成する
* PHP使用不可のため繰り返し処理のforやwhileが使えないための苦肉策
***********************************************************************}
{assign var=myArray value=","|explode:""}
{capture name="garage"}{$myArray|@array_pop}{/capture}
{capture name="garage"}{$myArray|@array_push:"1"}{/capture}
{capture name="garage"}{$myArray|@array_push:"2"}{/capture}
{capture name="garage"}{$myArray|@array_push:"3"}{/capture}
{capture name="garage"}{$myArray|@array_push:"4"}{/capture}
{capture name="garage"}{$myArray|@array_push:"5"}{/capture}
{capture name="garage"}{$myArray|@array_push:"6"}{/capture}
{capture name="garage"}{$myArray|@array_push:"7"}{/capture}
{capture name="garage"}{$myArray|@array_push:"8"}{/capture}
{capture name="garage"}{$myArray|@array_push:"9"}{/capture}
{capture name="garage"}{$myArray|@array_push:"10"}{/capture}
{capture name="garage"}{$myArray|@array_push:"11"}{/capture}
{capture name="garage"}{$myArray|@array_push:"12"}{/capture}
{capture name="garage"}{$myArray|@array_push:"13"}{/capture}
{capture name="garage"}{$myArray|@array_push:"14"}{/capture}
{capture name="garage"}{$myArray|@array_push:"15"}{/capture}
{capture name="garage"}{$myArray|@array_push:"16"}{/capture}
{capture name="garage"}{$myArray|@array_push:"17"}{/capture}
{capture name="garage"}{$myArray|@array_push:"18"}{/capture}
{capture name="garage"}{$myArray|@array_push:"19"}{/capture}
{capture name="garage"}{$myArray|@array_push:"20"}{/capture}
{capture name="garage"}{$myArray|@array_push:"21"}{/capture}
{capture name="garage"}{$myArray|@array_push:"22"}{/capture}
{capture name="garage"}{$myArray|@array_push:"23"}{/capture}
{capture name="garage"}{$myArray|@array_push:"24"}{/capture}
{capture name="garage"}{$myArray|@array_push:"25"}{/capture}
{capture name="garage"}{$myArray|@array_push:"26"}{/capture}
{capture name="garage"}{$myArray|@array_push:"27"}{/capture}
{capture name="garage"}{$myArray|@array_push:"28"}{/capture}
{capture name="garage"}{$myArray|@array_push:"29"}{/capture}
{capture name="garage"}{$myArray|@array_push:"30"}{/capture}
{capture name="garage"}{$myArray|@array_push:"31"}{/capture}
{capture name="garage"}{$myArray|@array_push:"32"}{/capture}
{capture name="garage"}{$myArray|@array_push:"33"}{/capture}
{capture name="garage"}{$myArray|@array_push:"34"}{/capture}
{capture name="garage"}{$myArray|@array_push:"35"}{/capture}
{capture name="garage"}{$myArray|@array_push:"36"}{/capture}
{capture name="garage"}{$myArray|@array_push:"37"}{/capture}
{capture name="garage"}{$myArray|@array_push:"38"}{/capture}
{capture name="garage"}{$myArray|@array_push:"39"}{/capture}
{capture name="garage"}{$myArray|@array_push:"40"}{/capture}
{capture name="garage"}{$myArray|@array_push:"41"}{/capture}
{capture name="garage"}{$myArray|@array_push:"42"}{/capture}
{capture name="garage"}{$myArray|@array_push:"43"}{/capture}
{capture name="garage"}{$myArray|@array_push:"44"}{/capture}
{capture name="garage"}{$myArray|@array_push:"45"}{/capture}
{capture name="garage"}{$myArray|@array_push:"46"}{/capture}
{capture name="garage"}{$myArray|@array_push:"47"}{/capture}
{capture name="garage"}{$myArray|@array_push:"48"}{/capture}
{*************************************************************************************
イベント貯蔵用配列をリセット
***************************************************************************************}
{assign var=myEvent value=","|explode:""}
{capture name="EventBox"}{$myEvent|@array_pop}{/capture}
{*************************************************************************************
カレンダーテーブル作成用の変数の初期化および設定
***************************************************************************************
* カレンダー本体の大きさを決める縦横幅
* フォント調整なしだと180px:120pxまでくらいが(FontSize:10px時における)小型化の限度?
* 以降、開いているページによって形状・仕様変更がされる。iframeで参照するページのアドレスによって条件分岐
* サイズ調整をしていく中でSmallがMiddleより大きくなってしまったところは察してください *}
{if isset($smarty.get.PageFlag)}
{assign var="PageFlag" value=$smarty.get.PageFlag}
{else}
{assign var="PageFlag" value="unknown"}
{/if}
{if $smarty.server.HTTP_REFERER|mb_strpos:$BigType !== FALSE}
{assign var="PageFlag" value=$BigType}
{elseif $smarty.server.HTTP_REFERER|mb_strpos:$TallType !== FALSE}
{assign var="PageFlag" value=$TallType}
{elseif $smarty.server.HTTP_REFERER|mb_strpos:$MiddleType !== FALSE}
{assign var="PageFlag" value=$MiddleType}
{elseif $smarty.server.HTTP_REFERER|mb_strpos:$SmallType !== FALSE}
{assign var="PageFlag" value=$SmallType}
{/if}
{if $PageFlag eq $BigType}
{assign var="CalenderSizeTop" value='width:918px; height:60px; margin-top:0px;'}
{assign var="CalenderSizeBody" value='width:918px; height:760px;'}
{elseif $PageFlag eq $TallType}
{assign var="CalenderSizeTop" value='width:275px; font-size:14px; margin-left:2px;'}
{assign var="CalenderSizeBody" value='width:275px; height:150px;'}
{elseif $PageFlag eq $SmallType}
{assign var="CalenderSizeTop" value='width:336px; height:20px; font-size:10pt; margin-left:2px;'}
{assign var="CalenderSizeBody" value='width:336px; height:150px;'}
{elseif $PageFlag eq $MiddleType}
{assign var="CalenderSizeTop" value='width:300px; height:20px; font-size:10pt;'}
{assign var="CalenderSizeBody" value='width:300px; height:150px;'}
{else}
{assign var="CalenderSizeTop" value='width:180px; height:20px;'}
{assign var="CalenderSizeBody" value='width:180px; height:100px;'}
{/if}
{* 日付の入るTD枠の縦横幅 *}
{if $PageFlag eq $BigType}
{assign var="DayWakuFormat" value='
{***** 定型トップここまで ********************************************}
|