public function showForm($datas)
{
if (!isset($datas['id']) || !$this->getFromDB($datas['id'])) {
Html::displayNotFoundError();
}
$form = new PluginFormcreatorForm();
$form->getFromDB($this->fields['plugin_formcreator_forms_id']);
echo '<form name="formcreator_form' . $form->getID() . '" method="post" role="form" enctype="multipart/form-data"
action="' . $GLOBALS['CFG_GLPI']['root_doc'] . '/plugins/formcreator/front/formanswer.form.php"
class="formcreator_form form_horizontal">';
echo '<h1 class="form-title">' . $form->fields['name'] . '</h1>';
// Form Header
if (!empty($form->fields['content'])) {
echo '<div class="form_header">';
echo html_entity_decode($form->fields['content']);
echo '</div>';
}
if ($this->fields['status'] == 'refused') {
echo '<div class="refused_header">';
echo '<div>' . nl2br($this->fields['comment']) . '</div>';
echo '</div>';
} elseif ($this->fields['status'] == 'accepted') {
echo '<div class="accepted_header">';
echo '<div>';
if (!empty($this->fields['comment'])) {
echo nl2br($this->fields['comment']);
} elseif ($form->fields['validation_required']) {
echo __('Form accepted by validator.', 'formcreator');
} else {
echo __('Form successfully saved.', 'formcreator');
}
echo '</div>';
echo '</div>';
}
// Get and display sections of the form
$question = new PluginFormcreatorQuestion();
$questions = array();
$section_class = new PluginFormcreatorSection();
$find_sections = $section_class->find('plugin_formcreator_forms_id = ' . $form->getID(), '`order` ASC');
echo '<div class="form_section">';
foreach ($find_sections as $section_line) {
echo '<h2>' . $section_line['name'] . '</h2>';
// Display all fields of the section
$questions = $question->find('plugin_formcreator_sections_id = ' . $section_line['id'], '`order` ASC');
foreach ($questions as $question_line) {
$answer = new PluginFormcreatorAnswer();
$found = $answer->find('plugin_formcreator_formanwers_id = "' . $this->getID() . '"
AND plugin_formcreator_question_id = "' . $question_line['id'] . '"');
$found = array_shift($found);
// if (in_array($question_line['fieldtype'], array('checkboxes', 'multiselect'))) {
// $found['answer'] = json_decode($found['answer']);
// }
$canEdit = $this->fields['status'] == 'refused' && $_SESSION['glpiID'] == $this->fields['requester_id'];
if ($canEdit || $question_line['fieldtype'] != "description" && $question_line['fieldtype'] != "hidden") {
PluginFormcreatorFields::showField($question_line, $found['answer'], $canEdit);
}
}
}
echo '<script type="text/javascript">formcreatorShowFields();</script>';
// Display submit button
if ($this->fields['status'] == 'refused' && $_SESSION['glpiID'] == $this->fields['requester_id']) {
echo '<div class="form-group line' . (count($questions) + 1) % 2 . '">';
echo '<div class="center">';
echo '<input type="submit" name="save_formanswer" class="submit_button" value="' . __('Save') . '" />';
echo '</div>';
echo '</div>';
// Display validation form
} elseif ($this->fields['status'] == 'waiting' && $_SESSION['glpiID'] == $this->fields['validator_id']) {
if (Session::haveRight('ticketvalidation', TicketValidation::VALIDATEINCIDENT) || Session::haveRight('ticketvalidation', TicketValidation::VALIDATEREQUEST)) {
echo '<div class="form-group required line' . (count($questions) + 1) % 2 . '">';
echo '<label for="comment">' . __('Comment', 'formcreator') . ' <span class="red">*</span></label>';
echo '<textarea class="form-control"
rows="5"
name="comment"
id="comment">' . $this->fields['comment'] . '</textarea>';
echo '<div class="help-block">' . __('Required if refused', 'formcreator') . '</div>';
echo '</div>';
echo '<div class="form-group line' . count($questions) % 2 . '">';
echo '<div class="center" style="float: left; width: 50%;">';
echo '<input type="submit" name="refuse_formanswer" class="submit_button"
value="' . __('Refuse', 'formcreator') . '" onclick="return checkComment(this);" />';
echo '</div>';
echo '<div class="center">';
echo '<input type="submit" name="accept_formanswer" class="submit_button" value="' . __('Accept', 'formcreator') . '" />';
echo '</div>';
echo '</div>';
}
}
echo '<input type="hidden" name="formcreator_form" value="' . $form->getID() . '">';
echo '<input type="hidden" name="id" value="' . $this->getID() . '">';
echo '<input type="hidden" name="_glpi_csrf_token" value="' . Session::getNewCSRFToken() . '">';
echo '</div>';
echo '</form>';
echo '<script type="text/javascript">
function checkComment(field) {
if (document.getElementById("comment").value == "") {
alert("' . __('Refused comment is required!', 'formcreator') . '");
return false;
}
}
</script>';
}