Skip to content

Commit

Permalink
fix(form): multiple selection of validators
Browse files Browse the repository at this point in the history
Signed-off-by: Thierry Bugier <tbugier@teclib.com>
  • Loading branch information
btry committed Apr 14, 2020
1 parent 4969884 commit e7e1642
Showing 1 changed file with 39 additions and 15 deletions.
54 changes: 39 additions & 15 deletions inc/form.class.php
Original file line number Diff line number Diff line change
Expand Up @@ -370,6 +370,8 @@ public static function getSpecificValueToDisplay($field, $values, array $options
* @return NULL Nothing, just display the form
*/
public function showForm($ID, $options = []) {
global $DB;

$this->initForm($ID, $options);
$this->showFormHeader($options);

Expand Down Expand Up @@ -494,14 +496,25 @@ public function showForm($ID, $options = []) {
"$userTable.id" => new QuerySubquery($subQuery)
];
$formValidator = new PluginFormcreatorForm_Validator();
$validatorUsers = $formValidator->getValidatorsForForm($this, User::class);
$validatorUser = array_shift($validatorUsers);
$selectedValidatorUsers = [];
foreach ($formValidator->getValidatorsForForm($this, User::class) as $user) {
$selectedValidatorUsers[$user->getID()] = $user->getID();
}
$users = $DB->request([
'SELECT' => ['id', 'name'],
'FROM' => User::getTable(),
'WHERE' => $usersCondition,
]);
$validatorUsers = [];
foreach($users as $user) {
$validatorUsers[$user['id']] = $user['name'];
}
echo '<div id="validators_users">';
Dropdown::show(
User::class, [
'name' => '_validator_users',
'value' => $validatorUser ? $validatorUser->getID() : 0,
'condition' => $usersCondition,
Dropdown::showFromArray(
'_validator_users',
$validatorUsers, [
'multiple' => true,
'values' => $selectedValidatorUsers
]
);
echo '</div>';
Expand Down Expand Up @@ -551,18 +564,29 @@ public function showForm($ID, $options = []) {
$groupsCondition = [
"$groupTable.id" => new QuerySubquery($subQuery),
];
$groups = $DB->request([
'SELECT' => ['id' ,'name'],
'FROM' => Group::getTable(),
'WHERE' => $groupsCondition,
]);
$formValidator = new PluginFormcreatorForm_Validator();
$validatorgroups = $formValidator->getValidatorsForForm($this, Group::class);
$validatorgroup = array_shift($validatorgroups);
$selectecValidatorGroups = [];
foreach($formValidator->getValidatorsForForm($this, Group::class) as $group) {
$selectecValidatorGroups[$group->getID()] = $group->getID();
}
$validatorGroups = [];
foreach($groups as $group) {
$validatorGroups[$group['id']] = $group['name'];
}
echo '<div id="validators_groups" style="width: 100%">';
Dropdown::show(
Group::class, [
'name' => '_validator_groups',
'value' => $validatorgroup ? $validatorgroup->getID() : 0,
'condition' => $groupsCondition
Dropdown::showFromArray(
'_validator_groups',
$validatorGroups,
[
'multiple' => true,
'values' => $selectecValidatorGroups
]
);

echo '</div>';

$script = '$(document).ready(function() {plugin_formcreator_changeValidators(' . $this->fields["validation_required"] . ');});';
Expand Down

0 comments on commit e7e1642

Please sign in to comment.