달력 Calendaring Class

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

캘린더 클래스 사용하기 Using the Calendaring Class

클래스 초기화 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/06/03/',
        7  => 'http://example.com/news/article/2006/06/07/',
        13 => 'http://example.com/news/article/2006/06/13/',
        26 => 'http://example.com/news/article/2006/06/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 Options Description
template None None
A string or array containing your calendar template.
See the template section below.
local_time time() None A Unix timestamp corresponding to the current time.
start_day sunday Any week day (sunday, monday, tuesday, etc.) Sets the day of the week the calendar should start on.
month_type long long, short
Determines what version of the month name to use in the header.
long = January, short = Jan.
day_type abr long, short, abr
Determines what version of the weekday names to use in
the column headers. long = Sunday, short = Sun, abr = Su.
show_next_prev FALSE TRUE/FALSE (boolean)
Determines whether to display links allowing you to toggle
to next/previous months. See information on this feature below.
next_prev_url controller/method A URL Sets the basepath used in the next/previous calendar links.
show_other_days FALSE TRUE/FALSE (boolean)
Determines whether to display days of other months that share the
first or last week of the calendar month.

캘린더 템플릿 생성 Creating a Calendar Template

캘린더 템플릿을 통해서 디자인을 원하는 형태로 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_start_today}<td>{/cal_cell_start_today}
        {cal_cell_start_other}<td class="other-month">{/cal_cell_start_other}

        {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_other}{day}{cal_cel_other}

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

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

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

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

배열 방법을 사용하면, key => value 방식으로 전달합니다. 당신이 원하는 만큼 많거나 적은 값을 전달합니다. 생략된 키는 이 캘린더 클래스에서 상속된 값을 사용합니다.

예제:

$prefs['template'] = array(
        'table_open'           => '<table class="calendar">',
        'cal_cell_start'       => '<td class="day">',
        'cal_cell_start_today' => '<td class="today">'
);

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

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

클래스 레퍼런스 Class Reference

class CI_Calendar
initialize([$config = array()])
인수:
  • $config (array) – Configuration parameters
반환값:

CI_Calendar instance (method chaining)

반환형:

CI_Calendar

캘린더 설정을 초기화합니다. 표시 설정 등 입력값으로 연관배열을 받습니다.

generate([$year = ''[, $month = ''[, $data = array()]]])
인수:
  • $year (int) – Year
  • $month (int) – Month
  • $data (array) – Data to be shown in the calendar cells
반환값:

HTML-formatted calendar

반환형:

문자열

캘린더를 생성합니다.

get_month_name($month)
인수:
  • $month (int) – Month
반환값:

Month name

반환형:

문자열

제공된 숫자형 달에 기반한 문자형 달 이름을 생성합니다.

get_day_names($day_type = '')
인수:
  • $day_type (string) – ‘long’, ‘short’, or ‘abr’
반환값:

Array of day names

반환형:

array

제공된 옵션(long, short, abr) 등에 따라 날 이름 (Sunday, Monday, etc.)의 배열을 반환합니다. 만약 $day_type 이 제공되지 않으면, 또는 유효하지 않은 값이면, 단축형 값을 반환합니다.

adjust_date($month, $year)
인수:
  • $month (int) – Month
  • $year (int) – Year
반환값:

An associative array containing month and year

반환형:

array

이 함수는 유효한 월/년을 가지고 있는지 확인합니다. 예를 들면, 달의 값에 13을 입력하면, 년(year) 의 값이 1 증가하고, 월은 1월이 됩니다:

print_r($this->calendar->adjust_date(13, 2014));

outputs:

Array
(
        [month] => '01'
        [year] => '2015'
)
get_total_days($month, $year)
인수:
  • $month (int) – Month
  • $year (int) – Year
반환값:

Count of days in the specified month

반환형:

int

주어진 월에 총 일 수를 반환합니다:

echo $this->calendar->get_total_days(2, 2012);
// 29

Note

This method is an alias for 날짜(Date Helper) function days_in_month().

default_template()
반환값:An array of template values
반환형:배열(array)

기본 템플릿을 세팅합니다. 이 함수는 당신의 고유 템플릿을 생성하지 않을 때 사용됩니다.

parse_template()
반환값:CI_Calendar instance (method chaining)
반환형:CI_Calendar

{pseudo-variables} 템플릿 내에서 변수를 표시하는데 사용됩니다.