Current Path :
/
home
/
develito
/
www
/
modules
/
mod_jevents_cal
/
tmpl
/
default
/
Or
Select Your Path :
Upload File :
New :
File
Dir
/home/develito/www/modules/mod_jevents_cal/tmpl/default/calendar.php
<?php /** * copyright (C) 2008-2025 GWESystems Ltd - All rights reserved */ // Check to ensure this file is included in Joomla! defined('_JEXEC') or die(); use Joomla\CMS\Language\Text; use Joomla\CMS\Filesystem\File; use Joomla\CMS\Factory; use Joomla\CMS\Uri\Uri; use Joomla\CMS\Router\Route; /** * HTML View class for the component frontend * * @static */ #[\AllowDynamicProperties] class DefaultModCalView { var $_modid = null; /* parameters form module or component */ var $displayLastMonth = null; var $disp_lastMonthDays = null; var $disp_lastMonth = null; var $displayNextMonth = null; var $disp_nextMonthDays = null; var $disp_nextMonth = null; var $linkCloaking = null; /* component only parameter */ var $com_starday = null; /* module only parameters */ var $inc_ec_css = null; var $minical_showlink = null; var $minical_prevyear = null; var $minical_prevmonth = null; var $minical_actmonth = null; var $minical_actyear = null; var $minical_nextmonth = null; var $minical_nextyear = null; /* class variables */ var $catidsOut = null; var $modcatids = null; var $catidList = ""; var $aid = null; var $lang = null; var $myItemid = 0; var $cat = ""; /* modules parameter object */ var $modparams = null; // data model for module var $datamodel = null; // flag to say if we want to load tooltips protected $hasTooltips = false; public function __construct($params, $modid) { if (File::exists(JPATH_SITE . "/components/com_jevents/assets/css/jevcustom.css")) { $document = Factory::getDocument(); JEVHelper::stylesheet('jevcustom.css', 'components/' . JEV_COM_COMPONENT . '/assets/css/'); } $this->_modid = $modid; $user = Factory::getUser(); $cfg = JEVConfig::getInstance(); $jev_component_name = JEV_COM_COMPONENT; $db = Factory::getDbo(); $this->datamodel = new JEventsDataModel(); // component config object $jevents_config = JEVConfig::getInstance(); $this->modparams = &$params; $this->aid = isset($user->aid) ? $user->aid : 0; $tmplang = Factory::getLanguage(); // get params exclusive to module $this->inc_ec_css = $this->modparams->get('inc_ec_css', 1); $this->minical_showlink = $this->modparams->get('minical_showlink', 1); $this->minical_prevyear = $this->modparams->get('minical_prevyear', 1); $this->minical_prevmonth = $this->modparams->get('minical_prevmonth', 1); $this->minical_actmonth = $this->modparams->get('minical_actmonth', 1); $this->minical_actmonth = $this->modparams->get('minical_actmonth', 1); $this->minical_actyear = $this->modparams->get('minical_actyear', 1); $this->minical_nextmonth = $this->modparams->get('minical_nextmonth', 1); $this->minical_nextyear = $this->modparams->get('minical_nextyear', 1); // get params exclusive to component $this->com_starday = intval($jevents_config->get('com_starday', 1)); // make config object (module or component) current if (intval($this->modparams->get('modcal_useLocalParam', 0)) == 1) { $myparam = &$this->modparams; } else { $myparam = &$jevents_config; } // get com_event config parameters for this module $this->displayLastMonth = $myparam->get('modcal_DispLastMonth', 'NO'); $this->disp_lastMonthDays = $myparam->get('modcal_DispLastMonthDays', 0); $this->linkCloaking = $myparam->get('modcal_LinkCloaking', 0); $t_datenow = JEVHelper::getNow(); $this->timeWithOffset = $t_datenow->toUnix(true); switch ($this->displayLastMonth) { case 'YES_stop': $this->disp_lastMonth = 1; break; case 'YES_stop_events': $this->disp_lastMonth = 2; break; case 'ALWAYS': $this->disp_lastMonthDays = 0; $this->disp_lastMonth = 1; break; case 'ALWAYS_events': $this->disp_lastMonthDays = 0; $this->disp_lastMonth = 2; break; case 'NO': default: $this->disp_lastMonthDays = 0; $this->disp_lastMonth = 0; break; } $this->displayNextMonth = $myparam->get('modcal_DispNextMonth', 'NO'); $this->disp_nextMonthDays = $myparam->get('modcal_DispNextMonthDays', 0); switch ($this->displayNextMonth) { case 'YES_stop': $this->disp_nextMonth = 1; break; case 'YES_stop_events': $this->disp_nextMonth = 2; break; case 'ALWAYS': $this->disp_nextMonthDays = 0; $this->disp_nextMonth = 1; break; case 'ALWAYS_events': $this->disp_nextMonthDays = 0; $this->disp_nextMonth = 2; break; case 'NO': default: $this->disp_nextMonthDays = 0; $this->disp_nextMonth = 0; break; } // find appropriate Itemid and setup catids for datamodel $this->myItemid = $this->datamodel->setupModuleCatids($this->modparams); $this->cat = $this->datamodel->getCatidsOutLink(true); $this->linkpref = 'index.php?option=' . $jev_component_name . '&Itemid=' . $this->myItemid . $this->cat . '&task='; } public function getCal($modid = 0) { // capture module id so that we can use it for ajax type navigation if ($modid != 0) { $this->_modid = $modid; } $user = Factory::getUser(); $db = Factory::getDbo(); // this will get the viewname based on which classes have been implemented $viewname = $this->getTheme(); $cfg = JEVConfig::getInstance(); $compname = JEV_COM_COMPONENT; $viewpath = "components/" . JEV_COM_COMPONENT . "/views/" . $viewname . "/assets/css/"; // get array $day_name = JEVHelper::getWeekdayLetter(null, 1); $day_name[0] = '<span class="sunday">' . $day_name[0] . '</span>'; $day_name[6] = '<span class="saturday">' . $day_name[6] . '</span>'; $content = '<div style="margin:0px;padding:0px;border-width:0px;">'; if ($this->inc_ec_css) { JEVHelper::componentStylesheet($this, "modstyle.css"); } $thisDayOfMonth = date("j", $this->timeWithOffset); $daysLeftInMonth = date("t", $this->timeWithOffset) - date("j", $this->timeWithOffset) + 1; // calculate month offset from first of month $first_of_current_month = JevDate::strtotime(date('Y-m-01', $this->timeWithOffset)); $mod = ""; if (isset($this->_modid) && $this->_modid > 0) { $mod = 'id="modid_' . $this->_modid . '" '; $content .= "<span id='testspan" . $this->_modid . "' style='display:none'></span>\n"; } if ($this->disp_lastMonth && (!$this->disp_lastMonthDays || $thisDayOfMonth <= $this->disp_lastMonthDays)) $content .= $this->_displayCalendarMod(JevDate::strtotime("-1 month", $first_of_current_month), $this->com_starday, Text::_('JEV_LAST_MONTH'), $day_name, $this->disp_lastMonth == 2, $this->timeWithOffset); $content .= $this->_displayCalendarMod($this->timeWithOffset, $this->com_starday, Text::_('JEV_THIS_MONTH'), $day_name, false, $this->timeWithOffset); if ($this->disp_nextMonth && (!$this->disp_nextMonthDays || $daysLeftInMonth <= $this->disp_nextMonthDays)) $content .= $this->_displayCalendarMod(JevDate::strtotime("+1 month", $first_of_current_month), $this->com_starday, Text::_('JEV_NEXT_MONTH'), $day_name, $this->disp_nextMonth == 2, $this->timeWithOffset); $content .= '</div>'; return $content; } public function getTheme() { $modtheme = $this->modparams->get("com_calViewName", "flat"); if ($modtheme == "" || $modtheme == "global") { $modtheme = JEV_CommonFunctions::getJEventsViewName(); } return $modtheme; } public function _displayCalendarMod($time, $startday, $linkString, &$day_name, $monthMustHaveEvent = false, $basedate = false) { $db = Factory::getDbo(); $cfg = JEVConfig::getInstance(); $option = JEV_COM_COMPONENT; $app = Factory::getApplication(); $input = $app->input; if (!$basedate) $basedate = $time; $base_year = date("Y", $basedate); $base_month = date("m", $basedate); $basefirst_of_month = JevDate::mktime(0, 0, 0, $base_month, 1, $base_year); $base_prev_month = $base_month - 1; $base_next_month = $base_month + 1; $base_next_month_year = $base_year; $base_prev_month_year = $base_year; if ($base_prev_month == 0) { $base_prev_month = 12; $base_prev_month_year -= 1; } if ($base_next_month == 13) { $base_next_month = 1; $base_next_month_year += 1; } $requestYear = $input->getInt("year", 0); $requestMonth = $input->getInt("month", 0); // special case when site link set the dates for the mini-calendar in the URL but not in the ajax request if ($requestMonth && $requestYear && $input->getString("task", "") != "modcal.ajax" && $this->modparams->get("minical_usedate", 0)) { $requestDay = $input->getInt("day", 1); $requestTime = JevDate::mktime(0, 0, 0, $requestMonth, $requestDay, $requestYear); if ($time - $basedate > 100000) $requestTime = JevDate::strtotime("+1 month", $requestTime); else if ($time - $basedate < -100000) $requestTime = JevDate::strtotime("-1 month", $requestTime); $cal_day = date("d", $requestTime); $cal_year = date("Y", $requestTime); $cal_month = date("m", $requestTime); $base_year = $requestYear; $base_month = $requestMonth; $basefirst_of_month = JevDate::mktime(0, 0, 0, $requestMonth, $requestDay, $requestYear); } else { $cal_year = date("Y", $time); $cal_month = date("m", $time); $cal_day = date("d", $time); } $reg = Factory::getConfig(); $reg->set("jev.modparams", $this->modparams); if ($this->modparams->get("showtooltips", 0)) { $data = $this->datamodel->getCalendarData($cal_year, $cal_month, 1, false, false); $this->hasTooltips = true; } else { $data = $this->datamodel->getCalendarData($cal_year, $cal_month, 1, true, $this->modparams->get("noeventcheck", 0)); } $reg->set("jev.modparams", false); $width = $this->modparams->get("mod_cal_width", "140px"); $height = $this->modparams->get("mod_cal_height", ""); $month_name = JEVHelper::getMonthName($cal_month); $first_of_month = JevDate::mktime(0, 0, 0, $cal_month, 1, $cal_year); $today = JevDate::mktime(0, 0, 0); $content = ''; $scriptlinks = []; if ($this->minical_showlink) { $content .= "\n" . '<table style="width:' . $width . ';" cellpadding="0" cellspacing="0" align="center" class="mod_events_monthyear" >' . "\n" . '<tr >' . "\n"; if ($this->minical_showlink == 1) { if ($this->minical_prevyear) { $content .= $this->monthYearNavigation($basefirst_of_month, "-1 year", '«', Text::_('JEV_CLICK_TOSWITCH_PY')); } if ($this->minical_prevmonth) { $linkprevious = htmlentities(Uri::base() . "index.php?option=$option&task=modcal.ajax&day=1&month=$base_prev_month&year=$base_prev_month_year&modid=$this->_modid&tmpl=component" . $this->cat); $scriptlinks['linkprevious'] = $linkprevious; $content .= $this->monthYearNavigation($basefirst_of_month, "-1 month", '<', Text::_('JEV_CLICK_TOSWITCH_PM')); } else { $scriptlinks['linkprevious'] = ""; } if ($this->minical_actmonth == 1) { // combination of actual month and year: view month $seflinkActMonth = Route::_($this->linkpref . 'month.calendar&month=' . $cal_month . '&year=' . $cal_year); $content .= '<td align="center">'; $content .= $this->htmlLinkCloaking($seflinkActMonth, $month_name, array('class' => "mod_events_link", 'title' => Text::_('JEV_CLICK_TOSWITCH_MON'))) . " "; if ($this->minical_actyear < 1) $content .= '</td>'; } elseif ($this->minical_actmonth == 2) { $content .= '<td align="center">'; $content .= $month_name . "\n"; if ($this->minical_actyear < 1) $content .= '</td>'; } if ($this->minical_actyear == 1) { // combination of actual month and year: view year $seflinkActYear = Route::_($this->linkpref . 'year.listevents' . '&month=' . $cal_month . '&year=' . $cal_year); if ($this->minical_actmonth < 1) $content .= '<td align="center">'; $content .= $this->htmlLinkCloaking($seflinkActYear, $cal_year, array('class' => "mod_events_link", 'title' => Text::_('JEV_CLICK_TOSWITCH_YEAR'))) . " "; $content .= '</td>'; } elseif ($this->minical_actyear == 2) { if ($this->minical_actmonth < 1) $content .= '<td align="center">'; $content .= $cal_year . "\n"; $content .= '</td>'; } if ($this->minical_nextmonth) { $linknext = htmlentities(Uri::base() . "index.php?option=$option&task=modcal.ajax&day=1&month=$base_next_month&year=$base_next_month_year&modid=$this->_modid&tmpl=component" . $this->cat); $scriptlinks['linknext'] = $linknext; $content .= $this->monthYearNavigation($basefirst_of_month, "+1 month", '>', Text::_('JEV_CLICK_TOSWITCH_NM')); } else { $scriptlinks['linknext'] = ""; } if ($this->minical_nextyear) { $content .= $this->monthYearNavigation($basefirst_of_month, "+1 year", '»', Text::_('JEV_CLICK_TOSWITCH_NY')); } // combination of actual month and year: view year & month [ mic: not used here ] // $seflinkActYM = Route::_( $link . 'month.calendar' . '&month=' . $cal_month // . '&year=' . $cal_year ); } else { // show only text $content .= '<td>'; $content .= $month_name . ' ' . $cal_year; $content .= '</td>'; } $content .= "</tr>\n" . "</table>\n"; } $lf = "\n"; $content .= '<table style="width:' . $width . ';height:' . $height . ';" align="center" class="mod_events_table" cellspacing="0" cellpadding="2" >' . $lf . '<tr class="mod_events_dayname">' . $lf; // Days name rows for ($i = 0; $i < 7; $i++) { $content .= "<td class=\"mod_events_td_dayname\">" . $day_name[($i + $startday) % 7] . "</td>" . $lf; } $content .= '</tr>' . $lf; $datacount = count($data["dates"]); $dn = 0; for ($w = 0; $w < 6 && $dn < $datacount; $w++) { $content .= "<tr>\n"; for ($d = 0; $d < 7 && $dn < $datacount; $d++) { $currentDay = $data["dates"][$dn]; switch ($currentDay["monthType"]) { case "prior": case "following": $content .= '<td class="mod_events_td_dayoutofmonth">' . $currentDay["d"] . "</td>\n"; break; case "current": if ($currentDay["events"] || $this->modparams->get("noeventcheck", 0)) { $class = ($currentDay["cellDate"] == $today) ? "mod_events_td_todaywithevents" : "mod_events_td_daywithevents"; } else { $class = ($currentDay["cellDate"] == $today) ? "mod_events_td_todaynoevents" : "mod_events_td_daynoevents"; } $content .= "<td class='" . $class . "'>\n"; $tooltip = $this->getTooltip($currentDay, array('class' => "mod_events_daylink")); if ($tooltip) { $content .= $tooltip; } else { if ($this->modparams->get("emptydaylinks", 1) || $currentDay["events"] || $this->modparams->get("noeventcheck", 0)) { $content .= $this->htmlLinkCloaking($currentDay["link"], $currentDay['d'], array('class' => "mod_events_daylink", 'title' => Text::_('JEV_CLICK_TOSWITCH_DAY'))); } else { $content .= $currentDay['d']; } } $content .= "</td>\n"; break; } $dn++; } $content .= "</tr>\n"; } $content .= '</table>' . $lf; if ($input->getCmd('jevtask', '') === 'modcal.ajax') { if (count($scriptlinks)){ $content .= "<script style='text/javascript'>xyz=1;" . json_encode($scriptlinks) . "zyx=1;</script>"; } } else { $content .= "<script style='text/javascript'>xyz=1;"; foreach ($scriptlinks as $k => $v) { $content .= "$k = '$v';\n"; } $content .= "zyx=1;</script>"; } return $content; } public function monthYearNavigation($cal_today, $adj, $symbol, $label, $action = "month.calendar") { $cfg = JEVConfig::getInstance(); $jev_component_name = JEV_COM_COMPONENT; $adjDate = JevDate::strtotime($adj, $cal_today); list($year, $month) = explode(":", JevDate::strftime("%Y:%m", $adjDate)); $link = Route::_($this->linkpref . $action . "&day=1&month=$month&year=$year" . $this->cat); $content = ""; if (isset($this->_modid) && $this->_modid > 0) { $this->_navigationJS($this->_modid); $link = htmlentities(Uri::base() . "index.php?option=$jev_component_name&task=modcal.ajax&day=1&month=$month&year=$year&modid=$this->_modid&tmpl=component" . $this->cat); $content = '<td>'; $content .= '<div class="mod_events_link" onmousedown="callNavigation(\'' . $link . '\');" ontouchstart="callNavigation(\'' . $link . '\');">' . $symbol . "</div>\n"; $content .= '</td>'; } return $content; } public function _navigationJS($modid) { JEVHelper::script("modules/mod_jevents_cal/tmpl/default/assets/js/calnav.js"); $specificScript = <<< SCRIPT function setupSpecificNavigation() { setupMiniCalTouchInteractions(".mod_events_table,.jevcalendar ", true); } SCRIPT; Factory::getDocument()->addScriptDeclaration($specificScript); } /** * Cloaks html link whith javascript * * @param string The cloaking URL * @param string The link text * * @return string HTML */ protected function htmlLinkCloaking($url = '', $text = '', $attribs = array()) { $link = Route::_($url); if ($this->linkCloaking) { $attribs['onclick'] = 'window.location.href=\'' . $link . '\';return false;'; $href = '"#"'; } else { $href = '"' . $link . '"'; } $attrstr = ''; foreach ($attribs as $key => $value) { $attrstr .= ' ' . $key . ' = "' . $value . '"'; } return '<a href=' . $href . $attrstr . '>' . $text . '</a>'; } // function getCal protected function getTooltip($currentDay, $linkattr) { return ""; } // function getSpecificCal public function getAjaxCal($modid, $month, $year) { //TODO check usage of this function and us // capture module id so that we can use it for ajax type navigation $this->_modid = $modid != 0 ? $modid : 0; $user = Factory::getUser(); $db = Factory::getDbo(); static $isloaded_css = false; // this will get the viewname based on which classes have been implemented $cfg = JEVConfig::getInstance(); $viewname = ucfirst($cfg->get('com_calViewName', "default")); $cfg = JEVConfig::getInstance(); // get array $day_name = JEVHelper::getWeekdayLetter(null, 1); $day_name[0] = '<span class="sunday">' . $day_name[0] . '</span>'; $day_name[6] = '<span class="saturday">' . $day_name[6] . '</span>'; $content = ""; $mod = ""; if (isset($this->_modid) && $this->_modid > 0) { $mod = 'id="modid_' . $this->_modid . '" '; $content .= "<span id='testspan" . $this->_modid . "' style='display:none'></span>\n"; } $temptime = JevDate::mktime(12, 0, 0, $month, 15, $year); //$content .= $this->_displayCalendarMod($temptime,$this->com_starday, Text::_('JEV_THIS_MONTH'),$day_name, false); $thisDayOfMonth = date("j", $temptime); $daysLeftInMonth = date("t", $temptime) - date("j", $temptime) + 1; // calculate month offset from first of month $first_of_current_month = JevDate::strtotime(date('Y-m-01', $temptime)); $base_year = date("Y", $temptime); $base_month = date("m", $temptime); $basefirst_of_month = JevDate::mktime(0, 0, 0, $base_month, 1, $base_year); if ($this->disp_lastMonth && (!$this->disp_lastMonthDays || $thisDayOfMonth <= $this->disp_lastMonthDays)) $content .= $this->_displayCalendarMod(JevDate::strtotime("-1 month", $first_of_current_month), $this->com_starday, Text::_('JEV_LAST_MONTH'), $day_name, $this->disp_lastMonth == 2, $first_of_current_month); $content .= $this->_displayCalendarMod($temptime, $this->com_starday, Text::_('JEV_THIS_MONTH'), $day_name, false, $first_of_current_month); if ($this->disp_nextMonth && (!$this->disp_nextMonthDays || $daysLeftInMonth <= $this->disp_nextMonthDays)) $content .= $this->_displayCalendarMod(JevDate::strtotime("+1 month", $first_of_current_month), $this->com_starday, Text::_('JEV_NEXT_MONTH'), $day_name, $this->disp_nextMonth == 2, $first_of_current_month); return $content; } protected function getTooltipReference(&$currentDay, $linkattr) { return ""; } }