Оглавление

Вывод HTML-кода для отображения календаря и событий

К этому моменту мы располагаем настроенной базой данных, сохраненными тестовыми событиями и методами, позволяющими загрузить даты событий и организовать их в виде легкодоступного массива. Теперь можно свести все воедино и закончить построение календаря.

 
Присвоим используемому для этих целей методу имя  buildCalendar(). Метод будет генерировать календарь, имеющий следующие атрибуты:
■   заголовок, который будет отображать используемый месяц и год;
■   сокращенные обозначения дней недели, необходимые для придания календарю присущего ему вида;
■   пронумерованные ячейки, содержащие события, если они существуют для данной даты.
Прежде всего объявим метод  buildCalendar() в классе Calendar и создадим заголовок в элементе H2. Кроме того, создадим массив сокращенных обозначений дней недели и организуем по ним цикл, генерирующий неупорядоченный список. Для этого используем дополнительный код, выделенный в приведенном ниже листинге желтым фоном.

 

<?php 
 
class Calendar extends DB_Connect 
{ 
 
 
    private $_useDate; 
 
    private $_m; 
 
    private $_y; 
 
    private $_daysInMonth; 
 
    private $_startDay; 
 
    public function __construct($dbo=NULL, $useDate=NULL) {...} 
 
    private function _loadEventData($id=NULL) {...} 
 
    private function _createEventObj() {...} 
 
    /**                                                                        
     * Возвращает HTML-разметку для отображения календаря и событии            
     *                                                                         
     * На основании информации, хранящейся в свойствах класса,                 
     * загружаются события для данного месяца, генерируется                    
     * календарь и возвращается актуальная разметка.                           
     *                                                                         
     * @return string:   HTML-разметка календаря                               
     */                                                                        
    public function buildCalendar()                                            
    {                                                                          
        /*                                                                     
         * Определить месяц календаря и создать массив сокращенных обозначений 
         * дней недели, которые будут использованы в заголовках столбцов       
         */                                                                    
        $cal_month = date('F Y', strtotime($this->_useDate));                  
        $weekdays = array('Sun', 'Mon', 'Tue',                                 
                'Wed', 'Thu', 'Fri', 'Sat');                                   
                                                                               
        /*                                                                     
         * Добавить заголовок в HTML-разметку календаря                        
         */                                                                    
        $html = "\n\t<h2>$cal_month</h2>";                                     
        for ( $d=0, $labels=NULL; $d<7; ++$d )                                 
        {                                                                      
            $labels .= "\n\t\t<li>" . $weekdays[$d] . "</li>";                 
        }                                                                      
        $html .= "\n\t<ul class="weekdays">"                                 
            . $labels . "\n\t</ul>";                                           
                                                                               
        /*                                                                     
         * Возвратить HTML-разметку для вывода                                 
         */                                                                    
        return $html;                                                          
    }                                                                          
} 
 
?> 

Комментарии принадлежат их авторам. Мы не несем ответственности за их содержание.
Отправитель Нити