/** * Renders the program summary template * * @param bean $model a SummaryPageModel bean * @return void */ private function renderSummaryPageModel($model) { global $logger; $logger->debug(get_class($this) . "::renderSummaryPageModel({$model})"); $tmpl = $this->createPatTemplate(); $tmpl->readTemplatesFromInput('genre_summary.pat.tpl'); $i = 0; foreach ($model->getList() as $cat) { $tmpl->addVars('genre', BeanUtil::beanToArray($cat, true)); // scalars only $tmpl->addVar('genre', 'iter', $i); $tmpl->addVar('genre', 'index', $i + 1); // publication state $pubwidget = $this->getPubControls($cat->getPubState()); $logger->debug("Publication state of category " . $cat->getName() . ": " . $cat->getPubState()); $tmpl->addVars('genre', $pubwidget); // number of events $events = $cat->getEvents(); $logger->debug("Number of events" . count($events)); $tmpl->addVar('genre', 'program', count($events)); $tmpl->parseTemplate('genre', 'a'); $i++; } $tmpl->displayParsedTemplate('genre_summary'); }
/** * The default render method. Displays the editor tabs * @param bean $model The summary model */ public function render($model) { global $logger; $logger->debug(get_class($this) . '::render()'); $notice = $model->getList(); $tmpl = $this->createPatTemplate(); $tmpl->readTemplatesFromInput('announcement.pat.tpl'); $tmpl->displayParsedTemplate('announcement_open'); // Render the Tabs $tabs = new mosTabs(0); //1 = use cookies to remember selected tab $tabs->startPane("links"); foreach ($notice as $note) { $logger->debug("Notice published: " . $note->getPublished()); $tabs->startTab($note->getScope(), $note->getScope() . "_tab"); echo "<div style='padding: 20px;'>"; echo $this->getPublished($note->getScope(), $note->getPublished()); $conf = $this->getEditorConfig(Editor::SMALL, $note->getScope(), $note->getContent()); echo $this->setEditor($conf); echo "<input type='hidden' name='" . $note->getScope() . "_oid' value='" . $note->getOid() . "'/>"; echo "</div>"; $tabs->endTab(); } $tabs->endPane(); $tmpl->displayParsedTemplate('announcement_close'); }
/** * Renders the person summary template * * @param bean $model a SummaryPageModel bean * @return void */ private function renderSummaryPageModel($model) { global $logger; $logger->debug(get_class($this) . "::renderSummaryPageModel({$model})"); $list = $model->getList(); $tmpl = $this->createPatTemplate(); //in the MasterPage class $tmpl->readTemplatesFromInput('person_summary.pat.tpl'); $tmpl->addVar('person_summary', 'total', count($list)); // Add the objects to the nested templates for ($i = 0; $i < count($list); $i++) { $person = $list[$i]; $logger->debug("Class of person [Person]: " . get_class($person)); $tmpl->addVar('person', 'iter', $i); $tmpl->addVar('person', 'index', $i + 1); $tmpl->addVars('person', BeanUtil::beanToArray($person, true)); // scalars only // Set the publication value $pubwidget = array(); if ($person->getPubState() == PublicationState::PUBLISHED) { $pubwidget['pubimg'] = 'publish_g.png'; $pubwidget['pubalt'] = PublicationState::PUBLISHED; $pubwidget['pubtask'] = 'unpublish'; $pubwidget['pubtoggle'] = PublicationState::UNPUBLISHED; } else { if ($person->getPubState() == PublicationState::UNPUBLISHED) { $pubwidget['pubimg'] = 'publish_x.png'; $pubwidget['pubalt'] = PublicationState::UNPUBLISHED; $pubwidget['pubtask'] = 'publish'; $pubwidget['pubtoggle'] = PublicationState::PUBLISHED; } } $tmpl->addVars('person', $pubwidget); $tmpl->parseTemplate('person', "a"); } $tmpl->displayParsedTemplate('person_summary'); }
/** * Renders the program summary template * * @param bean $model a SummaryPageModel bean * @return void */ private function renderSummaryPageModel($model) { global $logger; $logger->debug(get_class($this) . "::renderSummaryPageModel({$model})"); $list = $model->getList(); usort($list, array('ProgramPage', 'sort_by_title')); $tmpl = $this->createPatTemplate(); //in the MasterPage class $tmpl->readTemplatesFromInput('program_summary.pat.tpl'); $tmpl->addVar('program_summary', 'total', count($list)); // Add the objects to the nested templates for ($i = 0; $i < count($list); $i++) { $prgm = $list[$i]; $logger->debug("Class of program [Program]: " . get_class($prgm)); $tmpl->addVar('program', 'iter', $i); $tmpl->addVar('program', 'index', $i + 1); $tmpl->addVars('program', BeanUtil::beanToArray($prgm, true)); // scalars only $programType = $prgm->getPrimaryGenre(); if (isset($programType)) { $tmpl->addVar('program', 'programtype', $programType->getName()); } $pubwidget = array(); if ($prgm->getPubState() == PublicationState::PUBLISHED) { $pubwidget['pubimg'] = 'publish_g.png'; $pubwidget['pubalt'] = PublicationState::PUBLISHED; $pubwidget['pubtask'] = 'unpublish'; $pubwidget['pubtoggle'] = PublicationState::UNPUBLISHED; } else { if ($prgm->getPubState() == PublicationState::UNPUBLISHED) { $pubwidget['pubimg'] = 'publish_x.png'; $pubwidget['pubalt'] = PublicationState::UNPUBLISHED; $pubwidget['pubtask'] = 'publish'; $pubwidget['pubtoggle'] = PublicationState::PUBLISHED; } } $tmpl->addVars('program', $pubwidget); $cats = $prgm->getCategories(); $ecount = isset($cats['Series']) ? count($cats['Series']) : 0; $tmpl->addVar('program', 'series', $ecount); $ecount = isset($cats['Genre']) ? count($cats['Genre']) : 0; $tmpl->addVar('program', 'genre', $ecount); $ecount = isset($cats['Audience']) ? count($cats['Audience']) : 0; $tmpl->addVar('program', 'audience', $ecount); $exhibitions = $prgm->getExhibitions(); $ecount = count($exhibitions); $courses = $prgm->getCourses(); $ccount = count($courses); $activities = $prgm->getChildren(); $pcount = count($activities); if (!empty($activities)) { $startTime = 0; $endTime = 0; foreach ($activities as $activity) { $schedule = $activity->getSchedule(); $startTime = empty($startTime) ? $schedule->getStartTime() : min($startTime, $schedule->getStartTime()); $endTime = empty($schedule->endTime) ? max($endTime, $schedule->getStartTime()) : max($endTime, $schedule->getEndTime()); } $tmpl->addVar('program', 'starttime', $startTime); $tmpl->addVar('program', 'endtime', $endTime); } $tmpl->addVar('program', 'exhibition', $ecount); $tmpl->addVar('program', 'course', $ccount); $tmpl->addVar('program', 'performance', $pcount); $tmpl->parseTemplate('program', "a"); } $tmpl->displayParsedTemplate('program_summary'); }
/** * Renders the exhibition summary template * * @param bean $model a SummaryPageModel bean * @return void */ private function renderSummaryPageModel($model) { global $logger; $logger->debug(get_class($this) . "::renderSummaryPageModel({$model})"); $list = $model->getList(); $tmpl = $this->createPatTemplate(); //in the MasterPage class $tmpl->readTemplatesFromInput('exhibition_summary.pat.tpl'); $tmpl->addVar('exhibition_summary', 'total', count($list)); // Add the objects to the nested templates for ($i = 0; $i < count($list); $i++) { $exbt = $list[$i]; $logger->debug("Class of exhibition [Exhibition]: " . get_class($exbt)); $tmpl->addVar('exhibition', 'iter', $i); $tmpl->addVar('exhibition', 'index', $i + 1); $tmpl->addVars('exhibition', BeanUtil::beanToArray($exbt, true)); // scalars only // set the schedule values $tmpl->addVar('exhibition', 'start_display', $this->formatDate($exbt->getSchedule()->getStartTime(), 'fulldate')); if ($exbt->getSchedule() && $exbt->getSchedule()->getEndTime() > 0) { $tmpl->addVar('exhibition', 'end_display', $this->formatDate($exbt->getSchedule()->getEndTime(), 'fulldate')); } else { $tmpl->addVar('exhibition', 'end_display', 'Ongoing'); } $first = $i == 0 ? "yes" : "no"; $last = $i == count($list) - 1 ? "yes" : "no"; $tmpl->addVar('move_up', 'FIRST', $first); $tmpl->addVar('move_down', 'LAST', $last); $pubwidget = array(); if ($exbt->getPubState() == PublicationState::PUBLISHED) { $pubwidget['pubimg'] = 'publish_g.png'; $pubwidget['pubalt'] = PublicationState::PUBLISHED; $pubwidget['pubtask'] = 'unpublish'; $pubwidget['pubtoggle'] = PublicationState::UNPUBLISHED; } else { if ($exbt->getPubState() == PublicationState::UNPUBLISHED) { $pubwidget['pubimg'] = 'publish_x.png'; $pubwidget['pubalt'] = PublicationState::UNPUBLISHED; $pubwidget['pubtask'] = 'publish'; $pubwidget['pubtoggle'] = PublicationState::PUBLISHED; } } $tmpl->addVars('exhibition', $pubwidget); $eventwidget = array(); if ($exbt->getEventStatus() == EventStatus::ACTIVE) { $eventwidget['statusimg'] = 'publish_g.png'; $eventwidget['statusalt'] = EventStatus::ACTIVE; $eventwidget['statustoggle'] = EventStatus::SOLDOUT; } else { if ($exbt->getEventStatus() == EventStatus::SOLDOUT) { $eventwidget['statusimg'] = 'publish_y.png'; $eventwidget['statusalt'] = EventStatus::SOLDOUT; $eventwidget['statustoggle'] = EventStatus::CANCELLED; } else { if ($exbt->getEventStatus() == EventStatus::CANCELLED) { $eventwidget['statusimg'] = 'publish_x.png'; $eventwidget['statusalt'] = EventStatus::CANCELLED; $eventwidget['statustoggle'] = EventStatus::ACTIVE; } } } $tmpl->addVars('exhibition', $eventwidget); $programs = $exbt->getPrograms(); $ecount = count($programs); $courses = $exbt->getCourses(); $ccount = count($courses); $tmpl->addVar('exhibition', 'program', $ecount); $tmpl->addVar('exhibition', 'course', $ccount); $rv = $exbt->getVenues(); $vcount = isset($rv) ? count($rv) : 0; $tmpl->addVar('exhibition', 'venue', $vcount); $tmpl->parseTemplate('exhibition', "a"); } $tmpl->displayParsedTemplate('exhibition_summary'); }
/** * Displays the series summary * @param bean $model The series summary model */ public function summary($model) { global $logger, $mainframe; $logger->debug(get_class($this) . "::summary({$model})"); $tmpl = $this->createPatTemplate(FRONT_TEMPLATE_DIR); $tmpl->readTemplatesFromInput('series_summary.pat.tpl'); // page title + description $pg_title = "Series"; if ($model->getSeries()) { $pg_title = $model->getSeries()->getName(); $tmpl->addVar('series', 'description', $model->getSeries()->getDescription()); } $mainframe->setPageTitle("Program Series | " . $pg_title); $tmpl->addVar('intro', 'title', $pg_title); // announcment if ($model->getAnnouncement() != null) { $tmpl->addVar('intro', 'announcement', $model->getAnnouncement()); } $eventList = $model->getList(); usort($eventList, array('FrontSeriesPage', 'sort_by_date')); foreach ($eventList as $event) { // simple attributes $tmpl->addVars('program', BeanUtil::beanToArray($event, true)); // scalars only // primary genre $pg = $event->getPrimaryGenre(); if ($pg != null) { $tmpl->addVar('program', 'genre', $pg->getName()); } // activity level items $acts = $event->getChildren(); $next_act = $this->getNextActivity($acts); $time_display = ""; if ($next_act != null) { $schedule = $next_act->getSchedule(); if ($schedule != null) { // $time_display = strftime("%A, %B %d, %I:%M %p ",$schedule->getStartTime()); $time_display = date("l, F j, g:i a", $schedule->getStartTime()); } if ($next_act->getActivityStatus() != null) { // get the ticket code $tc = null; if ($next_act->getTicketCode() != null) { $tc = $next_act->getTicketCode(); } else { $tc = $event->getTicketUrl(); } $ticket = $this->getStatusImage($next_act->getActivityStatus()->getValue(), $tc); } } $tmpl->addVar('program', 'time', $time_display); $tmpl->addVar('program', 'status_img', $ticket); // audience $tmpl->clearTemplate('show_audience'); $tmpl->clearTemplate('audience'); $family = false; $cats = $event->getCategories(); if (isset($cats[Category::AUDIENCE])) { foreach ($cats[Category::AUDIENCE] as $aud) { if ($aud->getFamily()) { $family = true; } $tmpl->addVar('audience', 'name', $aud->getName()); $tmpl->parseTemplate('audience', 'a'); $tmpl->setAttribute("show_audience", "visibility", "visible"); } } $tmpl->addVar('program', 'family', $family); // image if ($event->getGallery() != null) { $images = $event->getGallery()->getImages(); $logger->debug('Number of images [1]: ' . count($images)); $img = $images[0]; $logger->debug('Class of img [Image]: ' . get_class($img)); $tmpl->addVar('program', 'imageurl', $img->getUrl()); $tmpl->addVar('program', 'imagecredit', $img->getAuthor()); } $tmpl->parseTemplate('program', "a"); } $tmpl->displayParsedTemplate('series'); // set the request for css ids and classes $_REQUEST['cce_scope'] = "programs"; // css file name / body id $_REQUEST['cce_page'] = ""; // body class $_REQUEST['cce_cols'] = "3"; // canvas div id $_REQUEST['cce_subtype'] = "general"; // canvas div class }
/** * Renders the summary of given exhibitions (current or upcoming) * @param bean $model The exhibition summary model */ private function summary($model) { global $logger, $mainframe; $logger->debug(get_class($this) . '::summary()'); $list = $model->getList(); $tmpl = $this->createPatTemplate(FRONT_TEMPLATE_DIR); $tmpl->readTemplatesFromInput('exhibition_summary.pat.tpl'); $mainframe->setPageTitle($model->getViewType() . " Exhibitions"); $tmpl->addVar('intro', 'view_type', $model->getViewType()); if ($model->getAnnouncement() != null) { $tmpl->addVar('intro', 'announcement', $model->getAnnouncement()); } // Add the objects to the nested templates for ($i = 0; $i < count($list); $i++) { $event = $list[$i]; // simple attributes $tmpl->addVars('exhibition', BeanUtil::beanToArray($event, true)); // scalars only // Event Status & Tickets $tmpl->addVar('exhibition', 'status', $event->getEventStatus()); if ($event->getTicketUrl() != null) { $tmpl->addVar('ticket_link', 'ticketurl', $this->getTicketUrl($event->getTicketUrl())); } // schedule $time_display = ""; if ($event->getScheduleNote()) { $time_display = $event->getScheduleNote(); } elseif ($event->getSchedule() != null) { $st = $event->getSchedule()->getStartTime(); $et = $event->getSchedule()->getEndTime(); $time_display = $this->formatDate($st, 'tiny'); if ($et > $st) { $time_display .= " - " . $this->formatDate($et, 'tiny'); $time_display .= date(", Y", $et); } } $tmpl->addVar('exhibition', 'time_display', $time_display); // image if ($event->getGallery() != null) { $images = $event->getGallery()->getImages(); $logger->debug('Number of images [1]: ' . count($images)); $img = $images[0]; $logger->debug('Class of img [Image]: ' . get_class($img)); $tmpl->addVar('exhibition', 'imageurl', $img->getUrl()); $tmpl->addVar('exhibition', 'imagecredit', $img->getAuthor()); } // venues $logger->debug("Number of venues for event ID " . $event->getOid() . ": " . count($event->getVenues())); if ($event->getVenues() != null) { $tmpl->clearTemplate('venues'); $logger->debug("type of venue collection [array]: " . gettype($event->getVenues())); foreach ($event->getVenues() as $venue) { $logger->debug("Venue is of class [Venue]: " . get_class($venue)); $vlink = $this->getVenueTitleLink($venue); $tmpl->addVar('venues', 'venue_link', $vlink); $tmpl->parseTemplate('venues', "a"); } } // related $tmpl->clearTemplate('show_related'); $tmpl->setAttribute("show_related", "visibility", "hidden"); $tmpl->clearTemplate('related'); if ($event->getPrograms() != null) { $res = $event->getPrograms(); if (count($res) > 0) { foreach ($res as $prg) { // only show published programs if ($prg->getPubState() == 'Published') { if (count($prg->getChildren()) > 0) { $next = $this->getNextActivity($prg->getChildren()); if ($next) { $tmpl->addVar('related', 'oid', $prg->getOid()); $tmpl->addVar('related', 'title', $prg->getTitle()); $schedule = $next->getSchedule(); $startTime = "(" . $this->formatDate($schedule->getStartTime()) . ")"; $tmpl->addVar('related', 'startTime', $startTime); $tmpl->parseTemplate('related', "a"); $tmpl->setAttribute("show_related", "visibility", "visible"); } } } } } } // audience $tmpl->clearTemplate('show_audience'); $tmpl->setAttribute("show_audience", "visibility", "hidden"); $tmpl->clearTemplate('audience'); $family = false; $cats = $event->getCategories(); if (isset($cats[Category::AUDIENCE])) { foreach ($cats[Category::AUDIENCE] as $aud) { if ($aud->getFamily()) { $family = true; } $tmpl->addVar('audience', 'name', $aud->getName()); $tmpl->parseTemplate('audience', 'a'); $tmpl->setAttribute("show_audience", "visibility", "visible"); } } $tmpl->addVar('exhibition', 'family', $family); $tmpl->parseTemplate('exhibition', "a"); } $tmpl->displayParsedTemplate('exbt_summary'); }
/** * Displays the what's on overview (list of published genres) * @param bean $model The course summary model */ public function overview($model) { global $logger, $mainframe; $logger->debug(get_class($this) . "::overview({$model})"); $tmpl = $this->createPatTemplate(FRONT_TEMPLATE_DIR); $tmpl->readTemplatesFromInput('course_overview.pat.tpl'); // page title $pg_title = "Learning For Life Overview"; $mainframe->setPageTitle($pg_title); $tmpl->addVar('intro', 'title', $pg_title); if ($model->getAnnouncement() != null) { $tmpl->addVar('intro', 'announcement', $model->getAnnouncement()); } $eventList = $model->getList(); // TODO: sort by primary genre\ $pgs = array(); foreach ($eventList as $event) { $pgs[] = $event->getPrimaryGenre(); } array_multisort($pgs, $eventList); // a temporary place to hold a comparison operator for group headings $prev_category_name = ""; $first = true; foreach ($eventList as $event) { // check group order for series and audience groupings $tmpl->setAttribute('group', 'visibility', 'hidden'); $sort_name = $event->getPrimaryGenre()->getName(); if ($sort_name != $prev_category_name) { $tmpl->addVar('group', 'group_heading', $sort_name); $tmpl->setAttribute('group', 'visibility', 'visible'); $prev_category_name = $sort_name; $first = true; } // simple attributes $tmpl->addVars('course', BeanUtil::beanToArray($event, true)); // scalars only $first_class = $first ? ' first' : ''; $tmpl->addVar('course', 'first_class', $first_class); $first = false; // detail link $dlink = $this->cceventSefUrl("index.php?option=com_ccevents&scope=crse&task=summary&filter=Genre&fid=" . $event->getPrimaryGenre()->getOid(), $event->getOid()); $tmpl->addVar('course', 'detail_link', $dlink); // venue $venues = $event->getVenues(); $dv = isset($venues[0]) ? $venues[0] : null; if ($dv != null) { $dv_link = $this->getVenueTitleLink($dv); // in the MasterPage $tmpl->addVar('course', 'venue', $dv_link); } // date description (Use scheduleNote or next activity time $date_desc = ''; if ($event->getScheduleNote() != null) { $date_desc = $event->getScheduleNote(); } else { $next = $this->getNextActivity($event->getChildren()); if ($next != null && $next->getSchedule() != null) { $date_desc = $this->formatDate($next->getSchedule()->getStartTime()); // in the master page class } } $tmpl->addVar('course', 'date_desc', $date_desc); // sessions if ($event->getChildren() != null) { $sessions = count($event->getChildren()); $ss = ' session'; if ($sessions > 1) { $ss = ' sessions'; } $tmpl->addVar('course', 'sessions', $sessions . $ss); } $tmpl->parseTemplate('course', "a"); } $tmpl->displayParsedTemplate('course_overview'); // set the request for css ids and classes $_REQUEST['cce_cols'] = "2"; // canvas div id $_REQUEST['cce_subtype'] = "general"; // canvas div class $_REQUEST['ccmenu'] = isset($_REQUEST['ccmenu']) ? $_REQUEST['ccmenu'] : ''; // menu }
/** * Displays the what's on overview (list of published genres) * @param bean $model The program summary model */ public function overview($model) { global $logger, $mainframe; $logger->debug(get_class($this) . "::summary({$model})"); $list = $model->getList(); $tmpl = $this->createPatTemplate(FRONT_TEMPLATE_DIR); $tmpl->readTemplatesFromInput('program_overview.pat.tpl'); // page title $pg_title = PRGM_OVERVIEW_TITLE; $mainframe->setPageTitle($pg_title); $tmpl->addVar('intro', 'title', $pg_title); // announcement if ($model->getAnnouncement() != null) { $tmpl->addVar('intro', 'announcement', $model->getAnnouncement()); } // order the genres alphabetically $name = array(); foreach ($list as $key => $row) { $name[$key] = $row->getName(); } array_multisort($name, SORT_ASC, $list); // load the genre information foreach ($list as $genre) { if ($genre->getName() != '') { // protects against empty categories // simple attributes $tmpl->addVars('genre', BeanUtil::beanToArray($genre, true)); // scalars only // image $photo_url = $genre->getImage() != '' ? $genre->getImage() : DEFAULT_GENRE_IMAGE_URL; $tmpl->addVar('genre', 'photo_url', $photo_url); // link $link_url = "index.php?option=com_ccevents&scope=prgm&task=summary&filter=Genre&fid=" . $genre->getOid() . "&ccmenu=" . $_REQUEST['ccmenu']; $tmpl->addVar('genre', 'link_url', $this->cceventSefUrl($link_url)); $tmpl->parseTemplate('genre', "a"); } } $tmpl->displayParsedTemplate('program_overview'); // set the request for css ids and classes $_REQUEST['cce_scope'] = "whats_on"; // css file name / body id $_REQUEST['cce_page'] = "whats_on_at_the_skirball"; // body class $_REQUEST['cce_cols'] = "2"; // canvas div id $_REQUEST['cce_subtype'] = "overview"; // canvas div class $_REQUEST['ccmenu'] = isset($_REQUEST['ccmenu']) ? $_REQUEST['ccmenu'] : ''; // menu }
/** * Renders the flat text view. * @param bean $model The calendar summary model */ public function text($model) { global $logger; $logger->debug(get_class($this) . '::text()'); $this->setRequestFlags('text'); $list = $model->getList(); $selected = $model->getSelected(); $selectedTime = CalendarForm::getMonthStart($selected); $tmpl = $this->createPatTemplate(FRONT_TEMPLATE_DIR); $tmpl->readTemplatesFromInput('calendar_text.pat.tpl'); $tmpl->addVar('calendar', 'cal_type', 'text'); $this->renderControls($tmpl, $model); $logger->debug("Nuumber of events in the page:" . count($model->getList())); // render the list $days = $this->formatEntries($list); foreach ($days as $entry) { $start = $entry["start"]; $tmpl->addVar('day', 'day_num', date('j', $start)); $tmpl->addVar('day', 'day_name', date('l', $start)); $tmpl->clearTemplate('event'); foreach ($entry["schedules"] as $sched) { // load the event info $tmpl->addVars('event', BeanUtil::beanToArray($sched, true)); // scalars only // Format the start time $st = date("g:i a", $sched->getStartTime()); $tmpl->addVar('event', 'formatted_time', $st); // figure out the proper url if ($sched->getScope() == Event::EXHIBITION) { $tmpl->addVar('event', 'url', 'index.php?option=com_ccevents&scope=exbt&task=detail&oid=' . $sched->getOid()); } elseif ($sched->getScope() == Event::PROGRAM) { $tmpl->addVar('event', 'url', 'index.php?option=com_ccevents&scope=prgm&task=detail&oid=' . $sched->getOid()); } elseif ($sched->getScope() == Event::COURSE) { $tmpl->addVar('event', 'url', 'index.php?option=com_ccevents&scope=crse&task=summary&filter=Genre&fid=' . $sched->getFid()); } $tmpl->parseTemplate('event', 'a'); } $tmpl->parseTemplate('day', 'a'); } $cal_link = $this->cceventSefUrl('index.php?option=com_ccevents&scope=cldr&task=month&month=' . $selected->getMonth() . '&year=' . $selected->getYear()); $tmpl->addVar('calendar', 'cal_view_link', $cal_link); $tmpl->displayParsedTemplate('calendar'); }