Bonjour,
Je suis en train de "détourner" un système de ticket, afin de l'utiliser pour du coaching individualisé, je dois donc créer autant de département que de coachs. Via le lien de menu, je peux choisir le "département" par défaut et le groupe d'utilisateur pour lequel ce lien de menu va s'afficher.
Le problème est que le formulaire de soumission d'un ticket affiche bien le département par défaut choisi dans les paramètres du menu, mais propose aussi les autres via la flèche traditionnelle, il faudrait pouvoir rendre cette liste "figée" sur le département par défaut, afin que la question soit envoyée uniquement au coach choisi...et je n'y arrive pas.. un petit coup de pouce serait le bienvenue... Merci d'avance à ceux qui prendront le temps de me guider, mes compétences sont limitées
Ci dessous le bout code qui appelle la liste déroulante en font office :
// department
$label = $this->form->getLabel('department_id');
$input = $this->form->getInput('department_id');
$this->field->showField($label, $input);
Et ci dessous la page qui semble être appelée pour l'affichage des départements :
<?php
/**
* @package RSTickets! Pro
* @copyright (C) 2010-2014 www.rsjoomla.com
* @license GPL, http://www.gnu.org/licenses/gpl-2.0.html
*/
defined('JPATH_PLATFORM') or die;
require_once JPATH_ADMINISTRATOR.'/components/com_rsticketspro/helpers/rsticketspro.php';
JFormHelper::loadFieldClass('list');
class JFormFieldDepartments extends JFormFieldList
{
protected $type = 'Departments';
protected function getOptions() {
// Initialize variables.
$options = array();
if (isset($this->element['please']) && $this->element['please'] == 'true') {
$options[] = JHtml::_('select.option', '', JText::_('RST_PLEASE_SELECT_DEPARTMENT'));
}
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select($db->qn('id'))
->select($db->qn('name'))
->from('#__rsticketspro_departments');
if (isset($this->element['published']) && $this->element['published'] == 'true') {
$query->where($db->qn('published').'='.$db->q(1));
}
$query->order($db->qn('ordering').' '.$db->escape('asc'));
$db->setQuery($query);
$results = $db->loadObjectList();
$is_staff = RSTicketsProHelper::isStaff();
$force_departments = RSTicketsProHelper::getConfig('staff_force_departments');
$departments = RSTicketsProHelper::getCurrentDepartments();
$view = JFactory::getApplication()->input->get('view');
foreach ($results as $result) {
if ($is_staff && $force_departments && $view != 'staff' && !in_array($result->id, $departments))
continue;
$tmp = JHtml::_('select.option', $result->id, JText::_($result->name));
// Add the option object to the result set.
$options[] = $tmp;
}
reset($options);
return $options;
}
protected function getInput() {
$html = array();
$attr = '';
// Initialize some field attributes.
$attr .= $this->element['class'] ? ' class="' . (string) $this->element['class'] . '"' : '';
// To avoid user's confusion, readonly="true" should imply disabled="true".
if ((string) $this->element['readonly'] == 'true' || (string) $this->element['disabled'] == 'true')
{
$attr .= ' disabled="disabled"';
}
$attr .= $this->element['size'] ? ' size="' . (int) $this->element['size'] . '"' : '';
$attr .= $this->multiple ? ' multiple="multiple"' : '';
$attr .= $this->required ? ' required="required" aria-required="true"' : '';
// Initialize JavaScript field attributes.
$attr .= $this->element['onchange'] ? ' onchange="' . (string) $this->element['onchange'] . '"' : '';
// Get the field options.
$options = (array) $this->getOptions();
// Create a read-only list (no name) with a hidden input to store the value.
if ((string) $this->element['readonly'] == 'true')
{
$html[] = JHtml::_('select.genericlist', $options, '', trim($attr), 'value', 'text', $this->value, $this->id);
$html[] = '<input type="hidden" name="' . $this->name . '" value="' . $this->value . '"/>';
}
// Create a regular list.
else
{
$value = is_array($this->value) ? $this->value : explode(',', $this->value);
$html[] = JHtml::_('select.genericlist', $options, $this->name, trim($attr), 'value', 'text', $value, $this->id);
}
return implode($html);
}
}