Call stack
# Function Location
1 () JROOT/administrator/components/com_jevents/views/icalevent/tmpl/edit.php:24
2 version_compare() JROOT/administrator/components/com_jevents/views/icalevent/tmpl/edit.php:24
3 include_once() JROOT/components/com_jevents/views/icalevent/tmpl/edit.php:33
4 include() JROOT/libraries/src/MVC/View/HtmlView.php:701
5 Joomla\CMS\MVC\View\HtmlView->loadTemplate() JROOT/libraries/src/MVC/View/HtmlView.php:230
6 Joomla\CMS\MVC\View\HtmlView->display() JROOT/administrator/components/com_jevents/views/abstract/abstract.php:143
7 JEventsAbstractView->displaytemplate() JROOT/components/com_jevents/views/icalevent/view.html.php:194
8 ICalEventViewIcalevent->edit() JROOT/administrator/components/com_jevents/views/abstract/abstract.php:92
9 JEventsAbstractView->display() JROOT/administrator/components/com_jevents/controllers/icalevent.php:511
10 AdminIcaleventController->edit() JROOT/components/com_jevents/controllers/icalevent.php:178
11 ICalEventController->edit() JROOT/libraries/src/MVC/Controller/BaseController.php:702
12 Joomla\CMS\MVC\Controller\BaseController->execute() JROOT/components/com_jevents/jevents.php:339
13 require_once() JROOT/libraries/src/Component/ComponentHelper.php:402
14 Joomla\CMS\Component\ComponentHelper::executeComponent() JROOT/libraries/src/Component/ComponentHelper.php:377
15 Joomla\CMS\Component\ComponentHelper::renderComponent() JROOT/libraries/src/Application/SiteApplication.php:194
16 Joomla\CMS\Application\SiteApplication->dispatch() JROOT/libraries/src/Application/SiteApplication.php:233
17 Joomla\CMS\Application\SiteApplication->doExecute() JROOT/libraries/src/Application/CMSApplication.php:225
18 Joomla\CMS\Application\CMSApplication->execute() JROOT/index.php:49
<?php
/**
* JEvents Component for Joomla! 3.x
*
* @version $Id: edit.php 3543 2012-04-20 08:17:42Z geraint edwards $
* @package JEvents
* @copyright Copyright (C) 2008-2022 GWESystems Ltd
* @license GNU/GPLv2, see http://www.gnu.org/licenses/gpl-2.0.html
* @link http://www.jevents.net
*/
defined('_JEXEC') or die('Restricted access');
use Joomla\CMS\Language\Associations;
use Joomla\CMS\Language\Text;
use Joomla\CMS\Factory;
use Joomla\CMS\Uri\Uri;
use Joomla\CMS\Router\Route;
use Joomla\CMS\HTML\HTMLHelper;
use Joomla\CMS\Session\Session;
use Joomla\CMS\Component\ComponentHelper;
$app = Factory::getApplication();
$params = ComponentHelper::getParams(JEV_COM_COMPONENT);
if ($app->isClient('administrator') || $params->get("newfrontendediting", 1) || version_compare(JVERSION, '4.0' , 'lt '))
{
$editPage = $this->loadTemplate('uikit');
//$editPage = str_replace("hasPopover", "hasYsPopover", $editPage);
echo $editPage;
return;
}
if (defined("EDITING_JEVENT"))
return;
define("EDITING_JEVENT", 1);
// needed for sortable category IDs
HTMLHelper::script('media/com_jevents/js/Sortable.js', array('version' => JeventsHelper::JEvents_Version(false), 'relative' => false));
$input = $app->input;
// get configuration object
$cfg = JEVConfig::getInstance();
$assoc = false && Associations::isEnabled() && Factory::getApplication()->isClient('administrator');
// Load Bootstrap
JevHtmlBootstrap::framework();
HTMLHelper::_('behavior.keepalive');
//HTMLHelper::_('behavior.calendar');
//HTMLHelper::_('behavior.formvalidation');
if ($params->get("bootstrapchosen", 1))
{
$jversion = new Joomla\CMS\Version;
if (!$jversion->isCompatible('4.0'))
{
HTMLHelper::_('formbehavior.chosen', '#jevents select:not(.notchosen)');
}
// Use this as a basis for setting the primary category
/*
$script = <<< SCRIPT
window.setTimeout(function() {
jQuery("#catid").chosen().change(
function() {
if (jQuery("#catid_chzn li.search-choice")) {
jQuery("#catid_chzn li.search-choice").on('mousedown', function() {
alert(this);
return true;
});
}
}
);
}, 1000);
SCRIPT;
Factory::getDocument()->addScriptDeclaration($script);
*/
}
JevHtmlBootstrap::loadCss();
// use Route to preseve language selection
$action = Factory::getApplication()->isClient('administrator') ? "index.php" : Route::_("index.php?option=" . JEV_COM_COMPONENT . "&Itemid=" . JEVHelper::getItemid());
$user = Factory::getUser();
$accesslevels = $user->getAuthorisedViewLevels();
$accesslevels = "jeval" . implode(" jeval", array_unique($accesslevels));
?>
<div id="jevents" <?php
echo (!Factory::getApplication()->isClient('administrator') && $params->get("darktemplate", 0)) ? "class='jeventsdark $accesslevels'" : "class='$accesslevels' ";
?> >
<div id="jevents_body">
<form action="<?php echo $action; ?>" method="post" name="adminForm" enctype='multipart/form-data'
id="adminForm" class="form-horizontal jevbootstrap">
<?php
ob_start();
// these are needed for front end admin
ob_start();
?>
<div class="jev_edit_event_notice">
<?php
if ($this->editCopy)
{
$repeatStyle = "";
echo "<h3>" . Text::_('YOU_ARE_EDITING_A_COPY_ON_AN_ICAL_EVENT') . "</h3>";
}
else if ($this->repeatId == 0)
{
$repeatStyle = "";
// Don't show warning for new events
if ($this->ev_id > 0)
{
if ($this->row->_freq === "none")
{
echo Text::_('YOU_ARE_EDITING_AN_ICAL_EVENT_WITH_NO_REPEATS');
}
else
{
echo Text::_('YOU_ARE_EDITING_AN_ICAL_EVENT');
}
}
}
else
{
$repeatStyle = "style='display:none;'";
?>
<h3><?php echo Text::_('YOU_ARE_EDITING_AN_ICAL_REPEAT'); ?></h3>
<input type="hidden" name="cid[]" value="<?php echo $this->rp_id; ?>"/>
<?php
}
?>
</div>
<?php
if ($params->get("checkconflicts", 0))
{
?>
<div id='jevoverlapwarning'>
<div><?php echo Text::_("JEV_OVERLAPPING_EVENTS_WARNING"); ?></div>
<?php
// event deletors get the right to override this
if (JEVHelper::isEventPublisher(true) && Text::_("JEV_OVERLAPPING_EVENTS_OVERRIDE") != "JEV_OVERLAPPING_EVENTS_OVERRIDE")
{
?>
<div>
<strong>
<label><?php echo Text::_("JEV_OVERLAPPING_EVENTS_OVERRIDE"); ?>
<!-- not checked by default !!! //-->
<input type="checkbox" name="overlapoverride" value="1"/>
</label>
</strong>
</div>
<?php
}
?>
<div id="jevoverlaps"></div>
</div>
<?php
}
$native = true;
if ($this->row->icsid() > 0)
{
$thisCal = $this->dataModel->queryModel->getIcalByIcsid($this->row->icsid());
if (isset($thisCal) && $thisCal->icaltype == 0)
{
// note that icaltype = 0 for imported from URL, 1 for imported from file, 2 for created natively
echo Text::_("JEV_IMPORT_WARNING");
$native = false;
}
else if (isset($thisCal) && $thisCal->icaltype == 1)
{
// note that icaltype = 0 for imported from URL, 1 for imported from file, 2 for created natively
echo Text::_("JEV_IMPORT_WARNING2");
$native = false;
}
}
$this->searchtags[] = "{{MESSAGE}}";
$output = ob_get_clean();
$this->replacetags[] = $output;
echo $output;
$this->blanktags[] = "";
ob_start();
if (isset($this->row->_uid))
{
?>
<input type="hidden" name="uid" value="<?php echo $this->row->_uid; ?>"/>
<?php
}
// need rp_id for front end editing cancel to work note that evid is the repeat id for viewing detail
// I need $year,$month,$day So that I can return to an appropriate date after saving an event (the repetition ids have all changed so I can't go back there!!)
list($year, $month, $day) = JEVHelper::getYMD();
?>
<input type="hidden" name="jevtype" value="icaldb"/>
<input type="hidden" name="boxchecked" id="boxchecked" value="0"/>
<input type="hidden" name="updaterepeats" value="0"/>
<input type="hidden" name="task" value="<?php echo $input->getCmd("task", "icalevent.edit"); ?>"/>
<input type="hidden" name="option" value="<?php echo JEV_COM_COMPONENT; ?>"/>
<input type="hidden" name="rp_id" value="<?php echo isset($this->rp_id) ? $this->rp_id : -1; ?>"/>
<input type="hidden" name="year" value="<?php echo $year; ?>"/>
<input type="hidden" name="month" value="<?php echo $month; ?>"/>
<input type="hidden" name="day" value="<?php echo $day; ?>"/>
<input type="hidden" name="evid" id="evid" value="<?php echo $this->ev_id; ?>"/>
<input type="hidden" name="valid_dates" id="valid_dates" value="1"/>
<?php if ($app->isClient('site')) { ?>
<input type="hidden" name="Itemid" id="Itemid" value="<?php echo JEVHelper::getItemid(); ?>"/>
<?php } ?>
<?php
if ($this->editCopy)
{
?>
<input type="hidden" name="old_evid" id="old_evid" value="<?php echo $this->old_ev_id; ?>"/>
<?php
}
ob_start();
if (!empty($this->requiredtags))
{
foreach ($this->requiredtags as $tag)
{
echo "JevStdRequiredFields.fields.push({'name':'" . $tag['id'] . "', 'default' :'" . $tag['default_value'] . "' ,'reqmsg':'" . $tag['alert_message'] . "'});\n";
}
}
?>
Joomla.submitbutton = function (pressbutton) {
if (pressbutton.substr(0, 6) == 'cancel' || !(pressbutton == 'icalevent.save' || pressbutton == 'icalrepeat.save' || pressbutton == 'icalevent.savenew' || pressbutton == 'icalrepeat.savenew' || pressbutton == 'icalevent.apply' || pressbutton == 'icalrepeat.apply')) {
if (document.adminForm['catid']) {
// restore catid to input value
document.adminForm['catid'].value = 0;
document.adminForm['catid'].disabled = true;
}
Joomla.submitform(pressbutton);
return;
}
var form = document.adminForm;
var editorElement = jevjq('#jevcontent');
if (editorElement.length) {
<?php
if (version_compare(JVERSION, '4.0', 'lt'))
{
$editorcontent = $this->editor->save('jevcontent');
echo $editorcontent . "\n";
// Tiny MCE has changed what onSave method does so we need to use onGetContent
$getContent = $this->editor->getContent('jevcontent');
if ($getContent){
?>
// tinyMCE chooses a random editor so we have to specify the one we want
if (typeof tinyMCE != 'undefined') {
try {
tinyMCE.EditorManager.setActive(tinyMCE.get("jevcontent"));
}
catch (e) {
}
}
<?php
echo "var getContent =" . $getContent . "\n";
?>
try {
jevjq('#jevcontent').html(getContent);
}
catch (e) {
}
<?php
}
}
?>
}
try {
if (!JevStdRequiredFields.verify(document.adminForm)) {
return;
}
if (!JevrRequiredFields.verify(document.adminForm)) {
return;
}
}
catch (e) {
var x = e;
}
// do field validation
if (form.catid && form.catid.value == 0 && form.catid.options && form.catid.options.length) {
alert('<?php echo Text::_('JEV_SELECT_CATEGORY', true); ?>');
}
else if (form.ics_id.value == "0") {
alert("<?php echo html_entity_decode(Text::_('JEV_MISSING_ICAL_SELECTION', true)); ?>");
}
else if (form.valid_dates.value == "0") {
alert("<?php echo Text::_("JEV_INVALID_DATES", true); ?>");
}
else {
if (editorElement.length) {
<?php
// in case editor is toggled off - needed for TinyMCE
if (version_compare(JVERSION, '4.0', 'lt'))
{
echo $this->editor->save('jevcontent');
}
?>
}
<?php
// Do we have to check for conflicting events i.e. overlapping times etc. BUT ONLY FOR EVENTS INITIALLY
$params = ComponentHelper::getParams(JEV_COM_COMPONENT);
if ( $params->get("checkconflicts", 0) )
{
$checkURL = Uri::root() . "components/com_jevents/libraries/checkconflict.php";
$urlitemid = JEVHelper::getItemid() > 0 ? "&Itemid=" . JEVHelper::getItemid() : "";
$ttitemid = JEVHelper::getItemid() > 0 ? "&ttItemid=" . JEVHelper::getItemid() : "";
$checkURL = Route::_("index.php?option=com_jevents&ttoption=com_jevents&typeaheadtask=gwejson&file=checkconflict&token=" . Session::getFormToken() . $urlitemid . $ttitemid, false);
?>
// reformat start and end dates to Y-m-d format
reformatStartEndDates();
checkConflict('<?php echo $checkURL; ?>', pressbutton, '<?php echo Session::getFormToken(); ?>', '<?php echo Factory::getApplication()->isClient('administrator') ? 'administrator' : 'site'; ?>', <?php echo $this->repeatId; ?>
;
<?php
}
else
{
?>
// reformat start and end dates to Y-m-d format
reformatStartEndDates();
submit2(pressbutton);
<?php
}
?>
}
};
function submit2(pressbutton) {
// sets the date for the page after save
resetYMD();
Joomla.submitform(pressbutton);
}
//-->
<?php
$script = ob_get_clean();
if (version_compare(JVERSION,'4.0.0',">="))
{
Factory::getDocument()->addScriptDeclaration($script);
}
else
{
?>
<script>
<?php echo $script; ?>
</script>
<?php
}
$this->searchtags[] = "{{HIDDENINFO}}";
$output = ob_get_clean();
$this->replacetags[] = $output;
echo $output;
$this->blanktags[] = "";
?>
<div class="adminform">
<?php
if (!$cfg->get('com_single_pane_edit', 0))
{
?>
<ul class="nav nav-tabs" id="myEditTabs">
<li class="active"><a data-toggle="tab"
href="#common"><?php echo Text::_("JEV_TAB_COMMON"); ?></a></li>
<?php
if (!$cfg->get('com_single_pane_edit', 0) && !$cfg->get('timebeforedescription', 0))
{
?>
<li><a data-toggle="tab" href="#calendar"><?php echo Text::_("JEV_TAB_CALENDAR"); ?></a>
</li>
<?php
}
if (!$cfg->get('com_single_pane_edit', 0))
{
if (count($this->extraTabs) > 0)
{
foreach ($this->extraTabs as $extraTab)
{
if (trim($extraTab['content']) == "")
{
continue;
}
if (strpos($extraTab['title'], " ") === false && Text::_($extraTab['title']) != $extraTab['title'])
{
$extraTab['title'] = Text::_($extraTab['title']);
}
?>
<li <?php JEventsHelper::showOnRel($this->form, 'catid'); ?>><a data-toggle="tab"
href="#<?php echo $extraTab['paneid'] ?>"><?php echo $extraTab['title']; ?></a>
</li>
<?php
}
}
}
if ($assoc)
{
?>
<li><a data-toggle="tab"
href="#associations"><?php echo Text::_('COM_JEVENTS_ITEM_ASSOCIATIONS_FIELDSET_LABEL', true); ?></a>
</li>
<?php
}
?>
</ul>
<?php
// Tabs
echo HTMLHelper::_('bootstrap.startPane', 'myEditTabs', array('active' => 'common'));
echo HTMLHelper::_('bootstrap.addPanel', 'myEditTabs', "common");
}
?>
<div class="row jevtitle" <?php JEventsHelper::showOnRel($this->form, 'title'); ?>>
<div class="span2">
<?php echo $this->form->getLabel("title"); ?>
</div>
<div class="span10">
<?php echo str_replace("/>", " data-placeholder='xx' />", $this->form->getInput("title")); ?>
</div>
</div>
<?php
if ($this->form->getInput("priority"))
{
?>
<div class="row jevpriority" <?php JEventsHelper::showOnRel($this->form, 'priority'); ?>>
<div class="span2">
<?php echo $this->form->getLabel("priority"); ?>
</div>
<div class="span10">
<?php echo $this->form->getInput("priority"); ?>
</div>
</div>
<?php
}
?>
<?php
if ($this->form->getInput("creator"))
{
?>
<div class="row jevcreator" <?php JEventsHelper::showOnRel($this->form, 'creator'); ?>>
<div class="span2">
<?php echo $this->form->getLabel("creator"); ?>
</div>
<div class="span10">
<?php echo $this->form->getInput("creator"); ?>
</div>
</div>
<?php
}
// This could be hidden!
if ($this->form->getLabel("ics_id"))
{
?>
<div class="row jevcalendar" <?php JEventsHelper::showOnRel($this->form, 'ics_id'); ?>>
<div class="span2">
<?php echo $this->form->getLabel("ics_id"); ?>
</div>
<div class="span10">
<?php echo $this->form->getInput("ics_id"); ?>
</div>
</div>
<?php
}
else
{
echo $this->form->getInput("ics_id");
}
if ($this->form->getInput("lockevent"))
{
?>
<div class="row jevlockevent" <?php JEventsHelper::showOnRel($this->form, 'lockevent'); ?>>
<div class="span2">
<?php echo $this->form->getLabel("lockevent"); ?>
</div>
<div class="span10 radio btn-group">
<?php echo $this->form->getInput("lockevent"); ?>
</div>
</div>
<?php
}
if ($this->form->getLabel("catid"))
{
?>
<div class="row jevcategory" <?php JEventsHelper::showOnRel($this->form, 'catid'); ?>>
<?php
if ($this->form->getLabel("catid"))
{
?>
<div class="span2">
<?php
echo $this->form->getLabel("catid");
?>
</div>
<div class="span10 jevcategory">
<?php echo $this->form->getInput("catid"); ?>
</div>
<?php
}
?>
</div>
<?php
}
/*
if ($this->form->getLabel("primarycatid"))
{
?>
<div class="row jevprimarycategory" <?php JEventsHelper::showOnRel($this->form, 'primarycatid'); ?>>
<?php
if ($this->form->getLabel("primarycatid"))
{
?>
<div class="span2">
<?php
echo $this->form->getLabel("primarycatid");
?>
</div>
<div class="span10 jevprimarycategory">
<?php echo $this->form->getInput("primarycatid"); ?>
</div>
<?php
}
?>
</div>
<?php
}
*/
if ($this->repeatId === 0 && $this->form->getLabel("access"))
{
?>
<div class="row jevaccess" <?php JEventsHelper::showOnRel($this->form, 'access'); ?>>
<?php
if ($this->form->getLabel("access"))
{
?>
<div class="span2">
<?php
echo $this->form->getLabel("access");
?>
</div>
<div class="span10 accesslevel ">
<?php echo $this->form->getInput("access"); ?>
</div>
<?php
}
?>
</div>
<?php
}
if ($this->repeatId !== 0)
{
//Do Nothing, repeats do not yet have states
}
else if ($this->form->getLabel("state"))
{
?>
<div class="row jevpublished" <?php JEventsHelper::showOnRel($this->form, 'state'); ?>>
<div class="span2">
<?php echo $this->form->getLabel("state"); ?>
</div>
<div class="span10">
<?php echo $this->form->getInput("state"); ?>
</div>
</div>
<?php
}
else
{
// hidden field!
echo $this->form->getInput("state");
}
if ($this->form->getInput("color"))
{
?>
<div class="row jevcolour" <?php JEventsHelper::showOnRel($this->form, 'color'); ?>>
<div class="span2">
<?php echo $this->form->getLabel("color"); ?>
</div>
<div class="span10">
<?php echo $this->form->getInput("color"); ?>
</div>
</div>
<?php
}
if ($cfg->get('timebeforedescription', 0))
{
ob_start();
echo $this->loadTemplate("datetime");
$this->searchtags[] = "{{CALTAB}}";
$output = ob_get_clean();
$this->replacetags[] = $output;
echo $output;
$this->blanktags[] = "";
}
?>
<div class="row jev_description" <?php JEventsHelper::showOnRel($this->form, 'jevcontent'); ?>>
<div class="span2">
<?php echo $this->form->getLabel("jevcontent"); ?>
</div>
<div class="span10" id='jeveditor'>
<?php
// There is a TinyMCE issue in Joomla 3.6 where it loads the javascript twice if we do this
//echo $this->form->getInput("jevcontent");
// so instead we use the value we already have in the replacetags
$index = array_search("{{DESCRIPTION}}", $this->searchtags);
if ($index !== false)
{
echo $this->replacetags[$index];
}
?>
</div>
</div>
<div class="row jeveditlocation" id="jeveditlocation" <?php JEventsHelper::showOnRel($this->form, 'location'); ?>>
<div class="span2">
<?php echo $this->form->getLabel("location"); ?>
</div>
<div class="span10">
<?php echo $this->form->getInput("location"); ?>
</div>
</div>
<div class="row jev_contact" <?php JEventsHelper::showOnRel($this->form, 'contact_info'); ?>>
<div class="span2">
<?php echo $this->form->getLabel("contact_info"); ?>
</div>
<div class="span10">
<?php echo $this->form->getInput("contact_info"); ?>
</div>
</div>
<div class="row jev_extrainfo" <?php JEventsHelper::showOnRel($this->form, 'extra_info'); ?>>
<div class="span2">
<?php echo $this->form->getLabel("extra_info"); ?>
</div>
<div class="span10">
<?php echo $this->form->getInput("extra_info"); ?>
</div>
</div>
<?php
foreach ($this->customfields as $key => $val)
{
// skip custom fields that are already displayed on other tabs
if (isset($val["group"]) && $val["group"] != "default")
{
continue;
}
?>
<div class="row jevplugin_<?php echo $key; ?>" <?php echo (isset($this->customfields[$key]["showon"]) && !empty($this->customfields[$key]["showon"])) ? $this->customfields[$key]["showon"] : JEventsHelper::showOnRel($this->form, 'customfields'); ?>>
<div class="span2">
<label><?php echo $this->customfields[$key]["label"]; ?></label>
</div>
<div class="span10">
<?php echo $this->customfields[$key]["input"]; ?>
</div>
</div>
<?php
}
/*
if ($cfg->get('joomlatags', 1))
{
?>
<div class="row jev_joomlatags" <?php JEventsHelper::showOnRel($this->form, 'tags'); ?>>
<div class="span2">
<?php echo $this->form->getLabel("tags"); ?>
</div>
<div class="span10">
<?php echo $this->form->getInput("tags"); ?>
</div>
</div>
<?php
}
*/
if (!$cfg->get('com_single_pane_edit', 0) && !$cfg->get('timebeforedescription', 0))
{
echo HTMLHelper::_('bootstrap.endPanel');
echo HTMLHelper::_('bootstrap.addPanel', "myEditTabs", "calendar");
}
if (!$cfg->get('timebeforedescription', 0))
{
ob_start();
echo $this->loadTemplate("datetime");
$this->searchtags[] = "{{CALTAB}}";
$output = ob_get_clean();
$this->replacetags[] = $output;
echo $output;
$this->blanktags[] = "";
}
if (count($this->extraTabs) > 0)
{
foreach ($this->extraTabs as $extraTab)
{
if (trim($extraTab['content']) == "")
{
continue;
}
if (!$cfg->get('com_single_pane_edit', 0))
{
echo HTMLHelper::_('bootstrap.endPanel');
echo HTMLHelper::_('bootstrap.addPanel', "myEditTabs", $extraTab['paneid']);
}
ob_start();
JEventsHelper::showOnRel($this->form, 'jevcontent');
$showon = ob_get_clean();
echo "<div class='jevextrablock' " . $showon . ">";
echo $extraTab['content'];
echo "</div>";
}
}
if (!$cfg->get('com_single_pane_edit', 0))
{
echo HTMLHelper::_('bootstrap.endPanel');
if ($assoc)
{
echo HTMLHelper::_('bootstrap.addPanel', "myEditTabs", "associations");
echo $this->loadTemplate('associations');
echo HTMLHelper::_('bootstrap.endPanel');
}
echo HTMLHelper::_('bootstrap.endPane', 'myEditTabs');
}
?>
</div>
<?php
$output = ob_get_clean();
$app = Factory::getApplication();
if (($app->isClient('administrator') && $cfg->get('ignorelayout', 0)) || !$this->loadEditFromTemplate('icalevent.edit_page', $this->row, 0, $this->searchtags, $this->replacetags, $this->blanktags))
{
echo $output;
} // if (!$this->loadedFromTemplate('icalevent.edit_page', $this->row, 0)){
?>
</form>
</div>
</div>
<?php
$app = Factory::getApplication();
if ($app->isClient('site'))
{
if ($params->get('com_edit_toolbar', 0) == 1 || $params->get('com_edit_toolbar', 0) == 2)
{
//Load the toolbar at the bottom!
$bar = JToolBar::getInstance('toolbar');
$barhtml = $bar->render();
echo $barhtml;
}
}
Unlike many Joomla calendars we do not charge to download JEvents - please show your support for this project by becoming a member of the JEvents Club Club members get access to early releases, exclusive member support forums, and Silver and Gold members can use many exciting JEvents addons
Your membership will ensure that JEvents continues to be the best events calendar for Joomla.
GWE Systems Ltd, the company behind JEvents, is excited to announce the preview release of EasyLayouts - the tool that makes it easy to create layouts for your Joomla content and custom fields.
See our blog post for an exciting special offer to our Gold Members