367 lines
16 KiB
PHP
367 lines
16 KiB
PHP
<?php
|
|
|
|
//
|
|
// Functions to process custom forms
|
|
//
|
|
|
|
// BuildForm - create the form
|
|
function BuildForm($form_num,$action="process") {
|
|
global $school_num, $school_record, $webdir, $phpdir, $authCode, $FormTarget;
|
|
|
|
$returnText = "";
|
|
|
|
//
|
|
// Setup form mode based on user type and action
|
|
//
|
|
$mode = "process";
|
|
$border = "";
|
|
|
|
$userType = $_SESSION['UserInfo']['type'];
|
|
if ($userType == 'Admin' || $userType == 'SuperUser') {
|
|
$mode = "edit";
|
|
$border = "div-border";
|
|
}
|
|
if ($_GET['mode'] == 'process') {
|
|
$mode = "process";
|
|
$border = "";
|
|
}
|
|
|
|
|
|
// Get the form definition
|
|
$query = "SELECT * FROM custom_form WHERE school_num = $school_num AND record_num = $form_num";
|
|
$results = db_query($query);
|
|
if (db_num_rows($results) == 0) return(0);
|
|
$form = db_fetch_assoc($results);
|
|
|
|
$form_width = intval($form['form_width']);
|
|
$returnText .= "<form method='post' name='custom-form' id='custom-form'>\n";
|
|
$returnText .= "<table width='$form_width' border='0' cellpadding='0' cellspacing='0'>\n<tr>\n<td>\n";
|
|
|
|
if ($mode == "edit") {
|
|
$returnText .= "<a href='#' class='add-field btn btn--primary'> " . getLanguageText('TEXT-ADD-FIELD') . " </a>\n";
|
|
}
|
|
|
|
// Show form header
|
|
if (strlen($form['form_title'])) {
|
|
$form_title = nl2br($form['form_title']);
|
|
$returnText .= "<div class='custom-form-header'>$form_title</div>\n";
|
|
}
|
|
|
|
// Show form description
|
|
if (strlen($form['form_description'])) {
|
|
$form_description = nl2br($form['form_description']);
|
|
$returnText .= "<div class='custom-form-description'>$form_description</div>\n";
|
|
}
|
|
|
|
|
|
// Get form fields
|
|
$query = "SELECT * FROM custom_form_field WHERE school_num = $school_num AND form_num = $form_num ORDER BY sequence";
|
|
$fields = db_query($query);
|
|
|
|
if (db_num_rows($fields)) {
|
|
if ($mode == "edit") $returnText .= "<ul id='dynamic-form-list' class='dynamic-form-list'>\n";
|
|
$count = 0;
|
|
while ($field = db_fetch_assoc($fields)) {
|
|
extract($field);
|
|
$field_num = $record_num;
|
|
|
|
// Format field tooltip
|
|
$title = "";
|
|
if ($field_type != 'Form-Description' && strlen($field_tooltip) || $field_required == 'Y') {
|
|
$field_title = "$field_prompt:<br>";
|
|
$field_tooltip = str_replace('"',""",$field_tooltip);
|
|
if ($field_required == 'Y') {
|
|
if (strlen($field_tooltip)) $field_tooltip .= "<br>\n - ";
|
|
$field_tooltip .= "<span class='required-tip'>" . getLanguageText('TEXT-REQUIRED') . "</span>";
|
|
}
|
|
$title = "title=\"$field_title$field_tooltip\"";
|
|
}
|
|
|
|
// Clear the required_flag
|
|
$required_flag = "";
|
|
|
|
if ($mode == "edit") $returnText .= "<li id='row_$record_num'>\n";
|
|
|
|
$field_name = preg_replace("/[^a-z_-]/",'',strtolower(str_replace(' ','_',$field_prompt)));
|
|
$field_prompt = "<span id='field_prompt_$record_num'>$field_prompt</span>";
|
|
|
|
switch ($field_type) {
|
|
case 'Text':
|
|
default:
|
|
$classes = "form-field text-field";
|
|
if ($field_required == 'Y') {
|
|
$classes .= " text-required";
|
|
$required_flag = "<span class='required-field'>*</span>";
|
|
}
|
|
|
|
$returnText .= "<div id='div$count' class='dynamic-form-div $border text-field-div' $title>";
|
|
if ($mode == 'edit') {
|
|
$returnText .= "<img src='images/icons/delete16.png' class='delete-field' rnum='$record_num' align='right'>";
|
|
$returnText .= "<img src='images/icons/edit16.png' class='edit-text-field' rnum='$record_num' align='right'>";
|
|
}
|
|
$returnText .= "<label for='$field_name' class='dynamic-form-label'>$field_prompt:</label><br>\n";
|
|
$returnText .= "<input type='text' name='$field_name' id='$field_name' size='$field_size' class='$classes'>$required_flag\n";
|
|
$returnText .= "</div>\n";
|
|
break;
|
|
|
|
|
|
case 'Date':
|
|
$classes = "form-field date-field";
|
|
if ($field_required == 'Y') {
|
|
$classes .= " text-required";
|
|
$required_flag = "<span class='required-field'>*</span>";
|
|
}
|
|
|
|
$returnText .= "<div id='div$count' class='dynamic-form-div $border text-field-div' $title>";
|
|
if ($mode == 'edit') $returnText .= "<img src='images/icons/delete16.png' class='delete-field' rnum='$record_num' align='right'>";
|
|
$returnText .= "<label for='$field_name' class='dynamic-form-label'>$field_prompt:</label><br>\n";
|
|
$returnText .= "<input type='text' name='$field_name' id='$field_name' size='12' class='$classes'>$required_flag\n";
|
|
$returnText .= "</div>\n";
|
|
break;
|
|
|
|
|
|
case 'Date-Picker':
|
|
$classes = "form-field date-monthyear-field";
|
|
if ($field_required == 'Y') {
|
|
$classes .= " text-required";
|
|
$required_flag = "<span class='required-field'>*</span>";
|
|
}
|
|
|
|
$returnText .= "<div id='div$count' class='dynamic-form-div $border text-field-div' $title>";
|
|
if ($mode == 'edit') $returnText .= "<img src='images/icons/delete16.png' class='delete-field' rnum='$record_num' align='right'>";
|
|
$returnText .= "<label for='$field_name' class='dynamic-form-label'>$field_prompt:</label><br>\n";
|
|
$returnText .= "<input type='text' name='$field_name' id='$field_name' size='12' class='$classes'>$required_flag\n";
|
|
$returnText .= "</div>\n";
|
|
break;
|
|
|
|
|
|
case 'Datetime':
|
|
$classes = "form-field datetime-field";
|
|
if ($field_required == 'Y') {
|
|
$classes .= " text-required";
|
|
$required_flag = "<span class='required-field'>*</span>";
|
|
}
|
|
|
|
$returnText .= "<div id='div$count' class='dynamic-form-div $border text-field-div' $title>";
|
|
if ($mode == 'edit') $returnText .= "<img src='images/icons/delete16.png' class='delete-field' rnum='$record_num' align='right'>";
|
|
$returnText .= "<label for='$field_name' class='dynamic-form-label'>$field_prompt:</label><br>\n";
|
|
$returnText .= "<input type='text' name='$field_name' id='$field_name' size='12' class='$classes'>$required_flag\n";
|
|
$returnText .= "</div>\n";
|
|
break;
|
|
|
|
|
|
case 'Textarea':
|
|
$classes = "form-field textarea-field";
|
|
|
|
$returnText .= "<div id='div$count' class='dynamic-form-div $border textrea-field-div' $title>";
|
|
if ($mode == 'edit') $returnText .= "<img src='images/icons/delete16.png' class='delete-field' rnum='$record_num' align='right'>";
|
|
$returnText .= "<label for='$field_name'>$field_prompt:</label><br>\n";
|
|
$returnText .= "<textarea name='$field_name' id='$field_name' rows='3' cols='$field_size' class='$classes'></textarea>\n";
|
|
$returnText .= "</div>\n";
|
|
break;
|
|
|
|
|
|
case 'Radio':
|
|
case 'RadioYN':
|
|
$classes = "form-field radio-field";
|
|
|
|
// Setup options for radio buttons
|
|
if ($field_type == 'RadioYN') $options = array('Yes','No');
|
|
else {
|
|
$options = array();
|
|
$query = "SELECT option_text FROM custom_form_field_option " .
|
|
"WHERE school_num = $school_num AND form_num = $form_num AND field_num = $field_num ORDER BY sequence";
|
|
$results = db_query($query);
|
|
while ($row = db_fetch_assoc($results)) {
|
|
$options[] = $row['option_text'];
|
|
}
|
|
}
|
|
|
|
$returnText .= "<div id='div$count' class='dynamic-form-div $border radio-field-div' $title>";
|
|
if ($mode == 'edit') $returnText .= "<img src='images/icons/delete16.png' class='delete-field' rnum='$record_num' align='right'>";
|
|
$returnText .= "<label>$field_prompt:</label><br>\n";
|
|
|
|
for ($i = 0; $i < count($options); $i++) {
|
|
$field_option = $options[$i];
|
|
|
|
// Format the prompt attribute
|
|
$attr = str_replace('"',""",$field_prompt);
|
|
$field_id = $field_name . "_" . str_replace(' ','_',$field_option);
|
|
|
|
$checked = "";
|
|
if ($field_default == $field_option) $checked = "checked='checked'";
|
|
|
|
$returnText .= " <input type='radio' name='$field_name' id='$field_id' value='$field_option' class='$classes' $checked>";
|
|
$returnText .= " <label for='$field_id'>$field_option</label> ";
|
|
}
|
|
|
|
$returnText .= "</div>\n";
|
|
break;
|
|
|
|
|
|
case 'Checkbox':
|
|
$classes = "form-field checkbox-field";
|
|
|
|
$returnText .= "<div id='div$count' class='dynamic-form-div $border checkbox-field-div' $title>";
|
|
if ($mode == 'edit') $returnText .= "<img src='images/icons/delete16.png' class='delete-field' rnum='$record_num' align='right'>";
|
|
$returnText .= "<input type='checkbox' name='$field_name' id='$field_name' class='$classes'>";
|
|
$returnText .= " <label for='$field_name'>$field_prompt</label>";
|
|
$returnText .= "</div>\n";
|
|
break;
|
|
|
|
|
|
case 'Select':
|
|
$classes = "form-field select-field";
|
|
|
|
// Get options for select box
|
|
$options = array();
|
|
$query = "SELECT option_text FROM custom_form_field_option " .
|
|
"WHERE school_num = $school_num AND form_num = $form_num AND field_num = $field_num ORDER BY sequence";
|
|
$results = db_query($query);
|
|
while ($row = db_fetch_assoc($results)) {
|
|
$options[] = $row['option_text'];
|
|
}
|
|
|
|
$returnText .= "<div id='div$count' class='dynamic-form-div $border select-field-div' $title>";
|
|
if ($mode == 'edit') $returnText .= "<img src='images/icons/delete16.png' class='delete-field' rnum='$record_num' align='right'>";
|
|
$returnText .= "<label for='$field_name'>$field_prompt:</label><br>\n";
|
|
$returnText .= "<select name='$field_name' id='$field_name' class='$classes'>\n";
|
|
|
|
if ($field_required != 'Y') {
|
|
$returnText .= " <option value=''></option>\n";
|
|
}
|
|
|
|
for ($i = 0; $i < count($options); $i++) {
|
|
$option = $options[$i];
|
|
$returnText .= " <option value='$option'>$option</option>\n";
|
|
}
|
|
|
|
$returnText .= "</select>\n";
|
|
$returnText .= "</div>\n";
|
|
break;
|
|
|
|
|
|
case 'Select-Range':
|
|
$classes = "form-field select-field";
|
|
|
|
// Get options for select box
|
|
$options = array();
|
|
if ($number1 < $number2) {
|
|
for ($i = $number1; $i <= $number2; $i++) $options[] = $i;
|
|
}
|
|
else {
|
|
for ($i = $number1; $i >= $number2; $i--) $options[] = $i;
|
|
}
|
|
|
|
$returnText .= "<div id='div$count' class='dynamic-form-div $border select-field-div' $title>";
|
|
if ($mode == 'edit') $returnText .= "<img src='images/icons/delete16.png' class='delete-field' rnum='$record_num' align='right'>";
|
|
$returnText .= "<label for='$field_name'>$field_prompt:</label><br>\n";
|
|
$returnText .= "<select name='$field_name' id='$field_name' class='$classes'>\n";
|
|
|
|
if ($field_required != 'Y') {
|
|
$returnText .= " <option value=''></option>\n";
|
|
}
|
|
|
|
for ($i = 0; $i < count($options); $i++) {
|
|
$option = $options[$i];
|
|
$returnText .= " <option value='$option'>$option</option>\n";
|
|
}
|
|
|
|
$returnText .= "</select>\n";
|
|
$returnText .= "</div>\n";
|
|
break;
|
|
|
|
|
|
case 'Form-Spacer':
|
|
$returnText .= "<div id='div$count' class='dynamic-form-div $border spacer-div'>";
|
|
if ($mode == "edit") {
|
|
$returnText .= "<img src='images/icons/delete16.png' class='delete-field' rnum='$record_num' align='right'>";
|
|
$returnText .= getLanguageText('TEXT-FORM-SPACER');
|
|
}
|
|
$returnText .= "</div>\n";
|
|
break;
|
|
|
|
|
|
case 'Form-Title':
|
|
$returnText .= "<div id='div$count' class='dynamic-form-div $border title-div'>";
|
|
if ($mode == 'edit') $returnText .= "<img src='images/icons/delete16.png' class='delete-field' rnum='$record_num' align='right'>";
|
|
$returnText .= "<h1>$field_prompt</h1>\n";
|
|
$returnText .= "</div>\n";
|
|
break;
|
|
|
|
|
|
case 'Form-Description':
|
|
$returnText .= "<div id='div$count' class='dynamic-form-div $border description-div'>";
|
|
if ($mode == 'edit') $returnText .= "<img src='images/icons/delete16.png' class='delete-field' rnum='$record_num' align='right'>";
|
|
$returnText .= "<p>$field_tooltip</p>\n";
|
|
$returnText .= "</div>\n";
|
|
break;
|
|
|
|
|
|
case 'Form-Start-Fieldset':
|
|
if ($mode == "edit") {
|
|
$returnText .= "<div id='div$count' class='dynamic-form-div $border fieldset-div'>";
|
|
$returnText .= "<img src='images/icons/delete16.png' class='delete-field' rnum='$record_num' align='right'>";
|
|
$returnText .= "<img src='images/icons/edit16.png' class='edit-fieldset' rnum='$record_num' align='right'>";
|
|
$returnText .= getLanguageText('TEXT-START-FORM-FIELDSET') . ": <b><span id='fieldset_title_$record_num'>$field_prompt</span></b>";
|
|
$returnText .= "</div>\n";
|
|
}
|
|
|
|
if ($mode == "process") {
|
|
$returnText .= "<fieldset class='dynamic-form-fieldset'>";
|
|
$returnText .= "<legend>$field_prompt:</legend>\n";
|
|
}
|
|
break;
|
|
|
|
|
|
case 'Form-End-Fieldset':
|
|
if ($mode == "edit") {
|
|
$parent_title = db_getVal("SELECT field_prompt FROM custom_form_field WHERE school_num = $school_num AND record_num = $child_of_num");
|
|
$returnText .= "<div id='div$count' class='dynamic-form-div $border parent-$child_of_num fieldset-div' rnum='$record_num'>";
|
|
$returnText .= getLanguageText('TEXT-END-FORM-FIELDSET') . ": <b>$parent_title</b>";
|
|
$returnText .= "</div>\n";
|
|
}
|
|
|
|
if ($mode == "process") {
|
|
$returnText .= "</fieldset>";
|
|
}
|
|
break;
|
|
|
|
}
|
|
if ($mode == "edit") $returnText .= "</li>\n";
|
|
$count++;
|
|
}
|
|
$returnText .= "</ul>\n";
|
|
}
|
|
|
|
|
|
// Display form submit button
|
|
$returnText .= "<center>\n";
|
|
$returnText .= "<br>\n";
|
|
$returnText .= "<input type='submit' class='formButton' id='submit-form-btn' value='" . getLanguageText('TEXT-SAVE') . "'>\n";
|
|
$returnText .= "</center>\n";
|
|
|
|
// Show form footer
|
|
$form_footer = "";
|
|
if (strlen($form['form_footer'])) {
|
|
$form_footer = nl2br($form['form_footer']);
|
|
$returnText .= "<div class='custom-form-footer'>$form_footer</div>\n";
|
|
}
|
|
|
|
|
|
if ($mode == "edit") {
|
|
$returnText .= "<a href='#' class='add-field btn btn--primary'> " . getLanguageText('TEXT-ADD-FIELD') . " </a>\n";
|
|
}
|
|
|
|
|
|
$returnText .= "</td>\n</tr>\n</table>\n";
|
|
$returnText .= "</form>\n";
|
|
|
|
include "$webdir/include/jquery.dynamic-forms.php";
|
|
|
|
return($returnText);
|
|
}
|
|
|
|
|
|
?>
|