Skip to content

Commit

Permalink
Enhance eventtype filtering in eventlistings with a drop-down
Browse files Browse the repository at this point in the history
This incorporates the simple change in civicrm#68 and adds selection based on
names of event types.
  • Loading branch information
thoni56 committed Jan 4, 2024
1 parent f065bd0 commit bf77a86
Show file tree
Hide file tree
Showing 2 changed files with 89 additions and 6 deletions.
84 changes: 84 additions & 0 deletions site/elements/civieventtypes.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
<?php
/*
+--------------------------------------------------------------------+
| CiviCRM version 5 |
+--------------------------------------------------------------------+
| This file is a part of CiviCRM. |
| |
| CiviCRM is free software; you can copy, modify, and distribute it |
| under the terms of the GNU Affero General Public License |
| Version 3, 19 November 2007 and the CiviCRM Licensing Exception. |
| |
| CiviCRM is distributed in the hope that it will be useful, but |
| WITHOUT ANY WARRANTY; without even the implied warranty of |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
| See the GNU Affero General Public License for more details. |
| |
| You should have received a copy of the GNU Affero General Public |
| License and the CiviCRM Licensing Exception along |
| with this program; if not, contact CiviCRM LLC |
| at info[AT]civicrm[DOT]org. If you have questions about the |
| GNU Affero General Public License or the licensing of CiviCRM, |
| see the CiviCRM license FAQ at http://civicrm.org/licensing |
+--------------------------------------------------------------------+
*/

// Retrieve list of CiviCRM events
// Active, current or future

// Check to ensure this file is included in Joomla!
defined('_JEXEC') or die('Restricted access');
class JFormFieldCiviEventTypes extends JFormField
{

/**
* Element name
*
* @access protected
* @var string
*/
var $type = 'CiviEventTypes';

protected function getInput()
{
$value = $this->value;
$name = $this->name;

// Initiate CiviCRM
define('CIVICRM_SETTINGS_PATH', JPATH_ROOT . '/' . 'administrator/components/com_civicrm/civicrm.settings.php');
require_once CIVICRM_SETTINGS_PATH;

require_once 'CRM/Core/ClassLoader.php';
CRM_Core_ClassLoader::singleton()->register();

require_once 'CRM/Core/Config.php';
$config = CRM_Core_Config::singleton();

$groupIdForEventTypes = $this->getGroupIdForEventTypes();

$eventTypeResults = \Civi\Api4\OptionValue::get(TRUE)
->addWhere('option_group_id', '=', $groupIdForEventTypes)
->execute();
$eventTypes = iterator_to_array($eventTypeResults);

$options = array();
$options[] = JHTML::_('select.option', '', ''); // Add an empty first option
foreach ($eventTypes as $eventType) {
$options[] = JHTML::_('select.option', $eventType['value'], $eventType['label']);
}

return JHTML::_('select.genericlist', $options, $name, NULL, 'value', 'text', $value);
}

private function getGroupIdForEventTypes()
{
$groupIdResults = \Civi\Api4\OptionGroup::get(TRUE)
->addSelect('id')
->addWhere('name', '=', 'event_type')
->execute();
$groupIdForEventTypes = current(iterator_to_array($groupIdResults))['id'];

return $groupIdForEventTypes;
}
}

11 changes: 5 additions & 6 deletions site/views/Events/tmpl/eventlisting.xml
Original file line number Diff line number Diff line change
Expand Up @@ -16,16 +16,15 @@
<description>List of all active, current, public events.</description>
<name>Event Listing</name>

<fields name="request">
<fields name="request" addfieldpath="/administrator/components/com_civicrm/civicrm/joomla/site/elements">
<fieldset name="request">
<field name="spacer"
type="spacer"
class="text"
label="The event listing page has no parameter options to configure."
<field name="type"
type="civieventtypes"
label="Filter on event type (leave empty for no filtering)"
/>
<field name="task"
type="hidden"
default="civicrm/event/ical"
default="civicrm/event/list"
required="true"
/>
<field name="reset"
Expand Down

0 comments on commit bf77a86

Please sign in to comment.