CodeIgniter User Guide Version 2.1.0


캘린더Calendaring Class

캘린더 클래스를 이용하여 동적으로 캘린더를 만들 수 있습니다. 캘린더는 캘린더 템플릿을 통해서 형태가 결정되며 , 100% 커스터마이징이 가능합니다. 게다가, 켈린더 셀(cells)에 데이터를 전달하여 사용할 수 있습니다.

클래스 초기화Initializing the Class

CodeIgniter의 다른 대부분의 클래스들 처럼 캘린더 클래스또한 컨트롤러에서 초기화 하며,$this->load->library 함수를 사용합니다:

$this->load->library('calendar');

일단 로드된후에는 $this->calendar 코드로 캘린더 객체를 사용할 수 있습니다.

캘린더 표시 (Displaying a Calendar)

다음과 같은 코드를 이용하여 캘린더를 표시할 수 있습니다.:

$this->load->library('calendar');

echo $this->calendar->generate();

서버 시간을 기준으로 한 캘린더 대신 특정 월의 캘린더를 만들고 싶다면 다음과같이 년,월을 캘린더 생성함수에 넘겨줍니다.:

$this->load->library('calendar');

echo $this->calendar->generate(2006, 6);

위의 코드를 이용하면 2006년 6월의 캘린더가 생성됩니다..첫 파라미터는 년을 두번째파라미터는 월을 나타냅니다..

캘린더 셀로 데이터 전달 (Passing Data to your Calendar Cells)

캘린더 셀로 데이터를 전달하려면 아래의 예제처럼 연상배열을 만들어서 캘린더 생성함수의 세번째 파라미터로 넘겨줍니다. 연상배열의 키는 날짜를 나타내고, 값은 데이터를 나타냅니다.:

$this->load->library('calendar');

$data = array(
               3  => 'http://example.com/news/article/2006/03/',
               7  => 'http://example.com/news/article/2006/07/',
               13 => 'http://example.com/news/article/2006/13/',
               26 => 'http://example.com/news/article/2006/26/'
             );

echo $this->calendar->generate(2006, 6, $data);

위 예제에서는 3, 7, 13, 26 일이 설정된 URL 을 카리키는 링크가 될것입니다.

Note: 기본(default)적으로 당신이 만든 배열은 링크가 포함되어있다고 가정합니다.아래 템플릿 항목을 보시면 당신은 전달된데이터가 어떻게 사용되는지, 어떻게 커스터마이징할지, 어떻게 다른 타입의 정보를 전달해서 사용할지 알수 있을겁니다.

표시 설정 (Setting Display Preferences)

캘린더 표시 설정을 위해서 7가지 변수를 설정할 수 있습니다. 로드함수의두번째 파라미터로 설정배열을 넘겨주어 설정을 적용시킵니다.예제입니다:

$prefs = array (
               'start_day'    => 'saturday',
               'month_type'   => 'long',
               'day_type'     => 'short'
             );

$this->load->library('calendar', $prefs);

echo $this->calendar->generate();

위코드에서는 캘린더가 토요일부터 시작하며,긴(long)월 이름,짧은(short) 날짜이름을 사용하도록 세팅합니다.더 많은 정보는 아래테이블을 참조하세요

Preference Default Value Options Description
templateNoneNoneA string containing your calendar template. See the template section below.
local_timetime()NoneA Unix timestamp corresponding to the current time.
start_daysundayAny week day (sunday, monday, tuesday, etc.)Sets the day of the week the calendar should start on.
month_typelonglong, shortDetermines what version of the month name to use in the header. long = January, short = Jan.
day_typeabrlong, short, abrDetermines what version of the weekday names to use in the column headers. long = Sunday, short = Sun, abr = Su.
show_next_prevFALSETRUE/FALSE (boolean)Determines whether to display links allowing you to toggle to next/previous months. See information on this feature below.
next_prev_urlNoneA URLSets the basepath used in the next/previous calendar links.

이전달,다음달 링크 만들기 Showing Next/Previous Month Links

이전달 다음달 링크를 만들어 동적으로 달을 이동하도록하고싶다면 다음코드가 필요합니다.

$prefs = array (
               'show_next_prev'  => TRUE,
               'next_prev_url'   => 'http://example.com/index.php/calendar/show/'
             );

$this->load->library('calendar', $prefs);

echo $this->calendar->generate($this->uri->segment(3), $this->uri->segment(4));

위코드를 통해서 몇몇가지를 알 수 있으실 겁니다.:

캘린더 템플릿 만들기

캘린더 템플릿을 통해서 디자인을 원하는 형태로 100% 수정 가능합니다.

캘린더의 각 부분은 아래와같이 각각 한쌍의 축약코드변수(pseudo-variables) 안에 삽입됩니다.:

$prefs['template'] = '

   {table_open}<table border="0" cellpadding="0" cellspacing="0">{/table_open}

   {heading_row_start}<tr>{/heading_row_start}

   {heading_previous_cell}<th><a href="{previous_url}">&lt;&lt;</a></th>{/heading_previous_cell}
   {heading_title_cell}<th colspan="{colspan}">{heading}</th>{/heading_title_cell}
   {heading_next_cell}<th><a href="{next_url}">&gt;&gt;</a></th>{/heading_next_cell}

   {heading_row_end}</tr>{/heading_row_end}

   {week_row_start}<tr>{/week_row_start}
   {week_day_cell}<td>{week_day}</td>{/week_day_cell}
   {week_row_end}</tr>{/week_row_end}

   {cal_row_start}<tr>{/cal_row_start}
   {cal_cell_start}<td>{/cal_cell_start}

   {cal_cell_content}<a href="{content}">{day}</a>{/cal_cell_content}
   {cal_cell_content_today}<div class="highlight"><a href="{content}">{day}</a></div>{/cal_cell_content_today}

   {cal_cell_no_content}{day}{/cal_cell_no_content}
   {cal_cell_no_content_today}<div class="highlight">{day}</div>{/cal_cell_no_content_today}

   {cal_cell_blank}&nbsp;{/cal_cell_blank}

   {cal_cell_end}</td>{/cal_cell_end}
   {cal_row_end}</tr>{/cal_row_end}

   {table_close}</table>{/table_close}
';

$this->load->library('calendar', $prefs);

echo $this->calendar->generate();