J'ai ajouté une nouvelle petite fonctionnalité à mon instance GestSup : lors de l'ajout d'un ticket je peux choisir la société et cela vient limiter le nombre de demandeurs affichés. Pour cela j'ai modifié le fichier ticket.php à partir de la ligne <!-- START sender part -->.
Code : Tout sélectionner
<!-- START sender part -->
<div class="form-group" >
<label class="col-sm-2 control-label no-padding-right" for="company">
Société:
</label>
<div class="col-sm-9">
<!-- If company is changed, overriding the select "user" value to '0' to avoid minor display bug-->
<select id="company" name="company" onchange="loadVal(); $('#user').find('option').attr('selected', 'selected').val(0); submit();">
<option value="0"></option>
<?php
// display company list
$query = $db->query("SELECT * FROM `tcompany` ORDER BY name ASC");
while ($row = $query->fetch()) {echo "<option value=\"$row[id]\">$row[name]</option>";}
?>
<?php
// add selected company at the end of the <select> if it was previously selected on a new ticket.
if($_POST['company'] != '') {
$fwCompany = $_POST['company'];
$query = $db->query("SELECT * FROM `tcompany` WHERE id=$fwCompany");
$row=$query->fetch();
$query->closeCursor();
echo "<option selected value=\"$fwCompany\">$row[name]</option>";
}
// add selected company at the end of the <select> if it was previously selected on an existing ticket.
if ($u_group=='') {
if ($_POST['user']) {
$query = $db->query("SELECT * FROM `tusers` WHERE id LIKE '$_POST[user]'");
} else {
$query = $db->query("SELECT * FROM `tusers` WHERE id LIKE '$globalrow[user]'");
}
$row=$query->fetch();
$query->closeCursor();
if ($row['company']!=0) {
$query=$db->query("SELECT * FROM tcompany WHERE id='$row[company]'");
$g_company_name=$query->fetch();
$query->closeCursor();
echo "<option selected value=\"$g_company_name[id]\">$g_company_name[name]</option>";
}
}
?>
</select>
</div></div>
<div class="form-group <?php if(($rright['ticket_user_disp']==0 && $_GET['action']!='new') || ($rright['ticket_new_user_disp']==0 && $_GET['action']=='new')) echo 'hide';?>" >
<label class="col-sm-2 control-label no-padding-right" for="user">
<?php if (($_POST['user']==0) && ($globalrow['user']==0) && ($u_group=='')) echo '<i title="selectionner un demandeur." class="icon-warning-sign red bigger-130"></i> '; ?>
Demandeur:
</label>
<div class="col-sm-9">
<select id="user" name="user" onchange="loadVal(); submit();" <?php if(($rright['ticket_user']==0 && $_GET['action']!='new') || ($rright['ticket_new_user']==0 && $_GET['action']=='new')) echo ' disabled="disabled" ';?> >
<?php
//diplay user list
if($_POST['company'] != '') {
// If a company has been selected (so, posted from <select> "company"), display only users belonging to that company
$query = $db->query("SELECT * FROM `tusers` WHERE disable='0' AND company=$fwCompany ORDER BY lastname ASC, firstname ASC");
} else {
$query = $db->query("SELECT * FROM `tusers` WHERE disable='0' ORDER BY lastname ASC, firstname ASC");
}
while ($row = $query->fetch()) {echo "<option value=\"$row[id]\">$row[lastname] $row[firstname]</option>";}
//group
$query = $db->query("SELECT * FROM `tgroups` WHERE disable='0' and type='0' ORDER BY name");
while ($row = $query->fetch()) {echo "<option value=\"G_$row[id]\">[G] $row[name]</option>";}
//selection
if (($globalrow['u_group']==0 && $u_group=='') || $_POST['user']!='')
{
if ($_POST['user']) {$user=$_POST['user'];} elseif ($globalrow['user']!=''){$user=$globalrow['user'];} else {$user=0;}
$query=$db->query("SELECT * FROM tusers WHERE id LIKE '$user'");
$row=$query->fetch();
$query->closeCursor();
echo "<option selected value=\"$user\">$row[lastname] $row[firstname]</option>";
} else {
if (($globalrow['u_group']!=$u_group) && $u_group!=''){$group=$u_group;}else {$group=$globalrow['u_group'];}
$query=$db->query("SELECT * FROM `tgroups` WHERE id=$group");
$row=$query->fetch();
$query->closeCursor();
echo "<option selected value=\"G_$u_group\">[G] $row[name]</option>";
}
if ($_POST['user']=='0') echo "<option selected value=\"0\">Aucun</option>";
?>
</select>
<?php if(($rright['ticket_user']==0 && $_GET['action']!='new') || ($rright['ticket_new_user']==0 && $_GET['action']=='new')) echo ' <input type="hidden" name="user" value='.$globalrow['user'].' /> '; //send data in disabled case?>
<!-- START sender actions part -->
<?php
if ($rright['ticket_user_actions']!=0)
{
echo'<input type="hidden" name="action" value="">';
echo'<input type="hidden" name="edituser" value="">';
echo ' <i class="icon-plus-sign green bigger-130" title="Ajouter un utilisateur" onclick="loadVal(); document.forms[\'myform\'].action.value=\'adduser\';document.forms[\'myform\'].submit();"></i> ';
if ($u_group!=0)
{
echo "<i class=\"icon-pencil orange bigger-130\" title=\"Modifier le groupe\" value=\"useredit\" onClick=\"parent.location='./index.php?page=ticket&id=$_GET[id]&userid=$_GET[userid]&action=edituser&edituser=$u_group'\" \" /></i> ";
}
else
{
if ($_POST['user']) $selecteduser=$_POST['user']; else $selecteduser=$globalrow['user'];
echo '<i class="icon-pencil orange bigger-130" title="Modifier un utilisateur" onclick="loadVal(); document.forms[\'myform\'].action.value=\'edituser\';document.forms[\'myform\'].edituser.value=\''.$selecteduser.'\';document.forms[\'myform\'].submit();"></i> ';
}
}
?>
<!-- END sender actions part -->
- Création du bloc du formulaire Société avec la même présentation que le reste.
- Lorsque l'on change la société, le demandeur éventuellement sélectionné est outrepassé à l'aide de javascript pour sélectionner "Aucun" de nouveau (sans ça l'utilisateur restait sur le précédent sélectionné).
- Reprise de la société sélectionnée lors de la validation du formulaire d'un nouveau ticket par changement de société dans le select Société.
- Reprise de la société sélectionnée lors de l'ouverture d'un ticket existant.
- Conditionnement des demandeurs affichés par la sélection d'une société.