<?php /** * copyright (C) 2008-2019 GWE Systems Ltd - All rights reserved */ // Check to ensure this file is included in Joomla! defined('_JEXEC') or die(); use Joomla\String\StringHelper; /** * HTML View class for the component frontend * * @static */ include_once(JPATH_SITE."/modules/mod_jevents_legend/tmpl/default/legend.php"); class FlatModLegendView extends DefaultModLegendView{ var $_modid = null; var $_params = null; function getViewName(){ return "flat"; } function displayCalendarLegend($style="list"){ // do not display normal legend if dynamic legend is visible on this page $registry = JRegistry::getInstance("jevents"); if ($registry->get("jevents.dynamiclegend",0)) { return; } // since this is meant to be a comprehensive legend look for catids from menu first: $cfg = JEVConfig::getInstance(); $Itemid = $this->myItemid; $user = JFactory::getUser(); $db = JFactory::getDbo(); // Parameters - This module should only be displayed alongside a com_jevents calendar component!!! $cfg = JEVConfig::getInstance(); $option = JRequest::getCmd('option'); if ($this->disable && $option!=JEV_COM_COMPONENT) return; $catidList = ""; include_once(JPATH_ADMINISTRATOR."/components/".JEV_COM_COMPONENT."/libraries/colorMap.php"); $menu = JFactory::getApplication()->getMenu(); $active = $menu->getActive(); if ((!is_null($active) && $active->component==JEV_COM_COMPONENT) || !isset($Itemid)){ $params = JComponentHelper::getParams(JEV_COM_COMPONENT); } else { // If accessing this function from outside the component then I must load suitable parameters $params = $menu->getParams($Itemid); } $params = JComponentHelper::getParams(JEV_COM_COMPONENT); $c=0; $catids = array(); // New system $newcats = $params->get("catidnew", false); if ($newcats && is_array($newcats)) { foreach ($newcats as $newcat) { if (!in_array($newcat, $catids)) { $catids[] = $newcat; $catidList .= (JString::strlen($catidList) > 0 ? "," : "") . $newcat; } } } else { while ($nextCatId = $params->get("catid$c", null)) { if (!in_array($nextCatId, $catids)) { $catids[] = $nextCatId; $catidList .= (JString::strlen($catidList) > 0 ? "," : "") . $nextCatId; } $c++; } } if ($catidList == "" && $params->get("catid0", "xxx") == "xxx") { modJeventsLegendHelper::getAllCats($this->_params,$catids,$catidList); } $separator = $params->get("catseparator","|"); $catidsOut = str_replace(",",$separator,$catidList); // I should only show legend for items that **can** be shown in calendar so must filter based on GET/POST $catidsIn = JRequest::getVar('catids', "NONE" ); if ($catidsIn!="NONE" && $catidsIn!="0") $catidsGP = explode($separator,$catidsIn); else $catidsGP = array(); JArrayHelper::toInteger($catidsGP); $catidsGPList = implode(",",$catidsGP); // This produces a full tree of categories $allrows = $this->getCategoryHierarchy($catidList, $catidsGPList); // This is the full set of top level catids $availableCatsIds=""; foreach ($allrows as $row){ $availableCatsIds.=(JString::strlen($availableCatsIds)>0?$separator:"").$row->id; } $allcats = new catLegend("0", JText::_('JEV_LEGEND_ALL_CATEGORIES'),"#d3d3d3",JText::_('JEV_LEGEND_ALL_CATEGORIES_DESC')); $allcats->activeBranch = true; array_push($allrows,$allcats); if (count($allrows)==0) return ""; else { if ($Itemid<999999) $itm = "&Itemid=$Itemid"; $task = JRequest::getVar( 'jevcmd', $cfg->get('com_startview')); list($year,$month,$day) = JEVHelper::getYMD(); $tsk=""; if ($task=="month.calendar" || $task=="year.listeventsevents" || $task=="week.listevents" || $task=="year.listevents" || $task=="day.listevents"|| $task=="cat.listevents"){ $tsk="&task=$task&year=$year&month=$month&day=$day"; } else { $tsk="&task=$this->myTask&year=$year&month=$month&day=$day"; } switch ($style) { case 'list': $content = '<div class="event_legend_container">'; $content .= '<table border="0" cellpadding="0" cellspacing="5" width="100%">'; foreach ($allrows as $row) { if (isset($row->activeBranch)){ $content .= $this->listKids($row, $itm, $tsk, $availableCatsIds); } } $content .= "</table>\n"; $content .= "</div>"; break; case 'block': default: $content = '<div class="event_legend_container">'; foreach ($allrows as $row) { if (isset($row->activeBranch)){ $content .= $this->blockKids($row, $itm, $tsk, $availableCatsIds); } } // stop floating legend items $content .= '<br style="clear:both" />'."</div>\n"; } // only if called from module if (isset($this->_params)) { if ($this->_params->get('show_admin', 0) && isset($year) && isset($month) && isset($day) && isset($Itemid)) { // This is only displayed when JEvents is the component so I can get the component view $component = JComponentHelper::getComponent(JEV_COM_COMPONENT); $registry = JRegistry::getInstance("jevents"); $controller =& $registry->get("jevents.controller",null); if (!$controller) return $content; $view = $controller->view; //include_once(JPATH_SITE."/components/$option/events.html.php"); ob_start(); if (method_exists($view,"_viewNavAdminPanel")){ echo $view->_viewNavAdminPanel(); } $content .= ob_get_contents(); ob_end_clean(); } } return $content; } } function listKids($row, $itm, $tsk,$availableCatsIds, $activeParent = false, $activeSubCat=0){ $catclass=""; if ($row->parent_id>0) $catclass = "childcat"; if ($row->parent_id>0 && isset($row->activeBranch)) $catclass = "activechildcat"; if ($row->parent_id>0 && $activeParent) $catclass = "activechildcat"; if ($row->parent_id>0 && $activeSubCat>0 && $row->id!=$activeSubCat && !isset($row->activeNode)) $catclass = "childcat"; $cat = $row->id>0 ? "&catids=$row->id" : ""; $content = "<tr class='".$catclass."'><td style='border:solid 1px #000000;height:5px;width:5px;background-color:".$row->color."'></td>\n" ."<td class='legend' >" ."<a style='text-decoration:none' href='".JRoute::_("index.php?option=".JEV_COM_COMPONENT."$cat$itm$tsk")."' title='".JEventsHTML::special($row->name)."'>" .JEventsHTML::special($row->name)."</a></td></tr>\n"; if (isset($row->activeBranch) && isset($row->subcats)){ $activeSubCat = 0; foreach ($row->subcats as $subcatid => $subcat){ if (isset($subcat->activeBranch)){ $activeSubCat = $subcatid; } } foreach ($row->subcats as $subcatid => $subcat){ $content .= $this->listKids($subcat, $itm, $tsk,$availableCatsIds, isset($row->activeNode),$activeSubCat); } } return $content; } function blockKids($row, $itm, $tsk, $availableCatsIds, $activeParent = false, $activeSubCat=0){ $catclass=""; if ($row->parent_id>0) $catclass = "childcat"; if ($row->parent_id>0 && isset($row->activeBranch)) $catclass = "activechildcat"; if ($row->parent_id>0 && $activeParent) $catclass = "activechildcat"; if ($row->parent_id>0 && $activeSubCat>0 && $row->id!=$activeSubCat && !isset($row->activeNode)) $catclass = "childcat"; $cat = $row->id>0 ? "&catids=$row->id" : ""; $content = '<div class="event_legend_item '.$catclass.'" style="border-color:'.$row->color.'">'; $content .= '<div class="event_legend_name" style="border-color:'.$row->color.'">' . '<a href="'.JRoute::_("index.php?option=".JEV_COM_COMPONENT."$cat$itm$tsk").'" title="'.JEventsHTML::special($row->name).'">' . JEventsHTML::special($row->name).'</a>'; $content .= '</div>'."\n"; if (JString::strlen($row->description)>0) { $content .='<div class="event_legend_desc" style="border-color:'.$row->color.'">'.$row->description.'</div>'; } $content .= '</div>'."\n"; if (isset($row->activeBranch) && isset($row->subcats)){ $activeSubCat = 0; foreach ($row->subcats as $subcatid => $subcat){ if (isset($subcat->activeBranch)){ $activeSubCat = $subcatid; } } foreach ($row->subcats as $subcatid => $subcat){ $content .= $this->blockKids($subcat, $itm, $tsk,$availableCatsIds, isset($row->activeNode), $activeSubCat); } } return $content; } }