Skip to content

Commit 87cc394

Browse files
committed
fix(formanswer): show/hide questions in various cases
Signed-off-by: Thierry Bugier <tbugier@teclib.com>
1 parent 0c75a69 commit 87cc394

File tree

5 files changed

+25
-14
lines changed

5 files changed

+25
-14
lines changed

inc/fields.class.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -326,7 +326,7 @@ public static function updateVisibility($input) {
326326
$fields[$id] = PluginFormcreatorFields::getFieldInstance(
327327
$question->fields['fieldtype'],
328328
$question
329-
);
329+
);
330330
$fields[$id]->parseAnswerValues($input);
331331
}
332332

inc/fields/textfield.class.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,9 @@ public static function getJSFields() {
181181

182182
public function parseAnswerValues($input) {
183183
$key = 'formcreator_field_' . $this->fields['id'];
184+
if (!isset($input[$key])) {
185+
return false;
186+
}
184187
if (!is_string($input[$key])) {
185188
return false;
186189
}

inc/form.class.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -920,7 +920,7 @@ public function displayUserForm() {
920920

921921
// Display form
922922
$formName = 'formcreator_form' . $this->getID();
923-
echo "<form name='" . $formName . "' method='post' role='form' enctype='multipart/form-data'
923+
echo "<form name='form' method='post' role='form' enctype='multipart/form-data'
924924
action='". $CFG_GLPI['root_doc'] . "/plugins/formcreator/front/form.form.php'
925925
class='formcreator_form form_horizontal'>";
926926
echo "<h1 class='form-title'>";
@@ -966,7 +966,7 @@ class='formcreator_form form_horizontal'>";
966966
}
967967
}
968968
echo Html::scriptBlock('$(function() {
969-
formcreatorShowFields($("form[name=\'' . $formName . '\']"));
969+
formcreatorShowFields($("form[name=\'form\']"));
970970
})');
971971

972972
// Show validator selector

inc/formanswer.class.php

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -537,7 +537,18 @@ public function showForm($ID, $options = []) {
537537
$questions = $DB->request($request);
538538
$last_section = '';
539539
$questionsCount = $questions->count();
540+
$fields = [];
540541
while ($question_line = $questions->next()) {
542+
$question = new PluginFormcreatorQuestion();
543+
$question->getFromDB($question_line['id']);
544+
$fields[$question_line['id']] = PluginFormcreatorFields::getFieldInstance(
545+
$question_line['fieldtype'],
546+
$question
547+
);
548+
$fields[$question_line['id']]->deserializeValue($question_line['answer']);
549+
}
550+
$questions->rewind();
551+
while ($question_line = $questions->current()) {
541552
// Get and display current section if needed
542553
if ($last_section != $question_line['section_name']) {
543554
echo '<h2>'.$question_line['section_name'].'</h2>';
@@ -548,19 +559,14 @@ public function showForm($ID, $options = []) {
548559
|| ($question_line['fieldtype'] != "description"
549560
&& $question_line['fieldtype'] != "hidden")
550561
) {
551-
$question = new PluginFormcreatorQuestion();
552-
$question->getFromDB($question_line['id']);
553-
$field = PluginFormcreatorFields::getFieldInstance(
554-
$question_line['fieldtype'],
555-
$question
556-
);
557-
$field->deserializeValue($question_line['answer']);
558-
$field->show($canEdit);
562+
// if (PluginFormcreatorFields::isVisible($question_line['id'], $fields)) {
563+
// }
564+
$fields[$question_line['id']]->show($canEdit);
559565
}
566+
$questions->next();
560567
}
561-
$formName = 'formcreator_form' . $formId;
562568
echo Html::scriptBlock('$(function() {
563-
formcreatorShowFields($("form[name=\'' . $formName . '\']"));
569+
formcreatorShowFields($("form[name=\'form\']"));
564570
})');
565571

566572
//add requester info
@@ -599,6 +605,8 @@ public function showForm($ID, $options = []) {
599605
echo '<input type="submit" name="accept_formanswer" class="submit_button" value="' . __('Accept', 'formcreator') . '" />';
600606
echo '</div>';
601607
echo '</div>';
608+
$options['canedit'] = true;
609+
$options['candel'] = false;
602610
}
603611
}
604612

js/scripts.js.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -583,7 +583,7 @@ function deleteTarget(items_id, token, target_id) {
583583

584584
function formcreatorShowFields(form) {
585585
$.ajax({
586-
url: '../ajax/showfields.php',
586+
url: rootDoc + '/plugins/formcreator/ajax/showfields.php',
587587
type: "POST",
588588
data: form.serializeArray()
589589
}).done(function(response){

0 commit comments

Comments
 (0)