คู่มือการใช้งาน CodeIgniter เวอร์ชั่น 1.7.2


Calendaring Class

Calendar class ทำให้คุณสามารถสร้างปฎิทินแบบไดนามิค ปฎิทินของคุณสามารถจัดรูปแบบได้ โดยการใช้แม่แบบปฎิทิน โดยคุณสามารถควบคุมมันได้ 100% ในทุกๆการออกแบบ ยิ่งไปกว่านั้นคุณสามารถส่งข้อมูลไปยังช่องปฎิทินได้อีกด้วย

เริ่มต้นใช้คลาส

เหมือนคลาสอื่นๆของ CodeIgniter คลาส Calendar นั้นเริ่มต้นได้ในตัวบควมคุม(controller) โดยใช้ฟังก์ชัน $this->load->library $this->load->library('calendar');

เมื่อโหลดแล้วคุณสามารถใช้ออบเจ็คปฎิทินได้โดยการใช้ $this->calendar

แสดงปฎิทิน

ตัวอย่างง่ายๆในการโชว์ปฎิทิน

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

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

โค้ดด้านบนจะสร้างปฎิทินจากเดือน/ปีปัจจุบันโดยขึ้นอยู่กับเวลาทางเซิร์ฟเวอร์ของคุณ ในการโชว์ปฎิทินจากเดือนและปีที่กำหนดจะต้องส่งข้อมูลผ่านฟังก์ชันสร้างอันนี้

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

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

โค้ดด้านบนจะสร้างปฎิทินที่โชว์เดือนมิถุนายนในปี ค.ศ. 2006 โดยพารามิเตอร์ตัวแรกคือปี ส่วนตัวที่สองคือเดือน

ส่งข้อมูลไปยังช่องปฎิทิน

ในการเพิ่มข้อมูลไปยังช่องปฎิทินของคุณนั้นเกี่ยวข้องกับการสร้างอาเรย์ซึ่งคีย์จะเป็นวันที่ซึ่งคุณต้องการให้มีค่าอยู่ภายในนั้น ซึ่งอาเรย์จะถูกส่งไปยังพารามิเตอร์ที่สามของฟังก์ชันสร้างปฎิทิน ลองพิจารณาตัวอย่างนี้ครับ$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 ที่ใส่ไว้

ข้อสังเกตุ: โดยปกติแล้วมันจะคิดว่าอาเรย์ของคุณใส่ลิงค์เอาไว้ ในส่วนด้านล่างที่อธิบายแม่แบบปฎิทิน คุณจะเห็นว่ามันปรับแต่งข้อมูลที่ถูกส่งในแจ่ละช่องอย่างไร ดังนั้นคุณสามารถส่งข้อมูลได้หลายแบบแล้วแต่คุณต้องการ

สิทธิในการตั้งค่าแสดงผล

มีสิทธิ 7 อย่างที่คุณสามารถตั้งค่าเพื่อควบคุมลักษณะของปฎิทินได้ สิทธิต่างๆจะถูกตั้งค่าในอาเรย์ของสิทธิซึ่งอยู่พารามิเตอร์ที่สองของฟังก์ชัน load และนี้คือตัวอย่าง

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

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

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

โค้ดด้านบนจะให้วันเริ่มต้นคือวันเสาร์ใช้คำว่า "long" เพื่อให้ชื่อเดือนเป็นแบบยาว และคำว่า "short" เพื่อให้ชื่อวันเป็นแบบสั้น ข้อมูลเพิ่มเติมเกี่ยวกับสิทธิอยู่ด้านล่างนี้แล้ว

สิทธิ ค่าปกติ  ทางเลือก คำอธิบาย
template ไม่มี ไม่มี สตริงจะเก็บค่าแม่แบบปฎิทินของคุณ ดูหมวดแม่แบบด้านล่าง
local_time time() ไม่มี Unix timestamp ซึ่งสัมพันธ์กับเวลาปัจจุบัน
start_day sunday วันใดๆของสัปดาห์ (sunday, monday, tuesday, etc.) ตั้งค่าวันของสัปดาห์ที่จะเป็นเริ่มต้นของปฎิทิน
month_type long long, short กำหนดเวอร์ชั่นของชื่อเดือนที่ใช้บนส่วนหัว long = January, short = Jan.
day_type abr long, short, abr กำหนดเวอร์ชั่นของชื่อวันในสัปดาห์ที่ใช้บนช่องหัวแถว long = Sunday, short = Sun, abr = Su.
show_next_prev FALSE TRUE/FALSE (boolean) กำหนดว่าจะโชว์ลิงค์ไปเดือนก่อน/ถัดไป ดูข้อมูลเพิ่มเติมด้านล่าง
next_prev_url None URL ตั้งค่า basepath ที่จะใช้ในปฎิทิน ลิงค์ถัดไป/ก่อน

แสดงลิงค์เดือน ถัดไป/ก่อนหน้า

เพื่อให้ปฎิทินของคุณสามารถไปยังเดือนถัดไปหรือก่อนหน้าได้จากลิงค์ ถัดไป/ก่อนหน้า(next/previous) คุณจะต้องสร้างโค้ดปฎิทินขึ้นคล้ายตัวอย่างต่อไปนี้

$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% แต่ละส่วนประกอบของปฎิทินจะถูกวางเป็นคู่กับตัวแปรเทียบ ที่จะโชว์ดังต่อไปนี้

$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();