Files
HotLunches/include/jquery.dynamic-forms.php
T
2026-10-19 15:22:52 -07:00

549 lines
24 KiB
PHP

<script>
$(document).ready(function() {
var authCode = '<?php echo($authCode) ?>';
var recordNotFound = "<?php displayLanguageText('RECORD-NOT-FOUND-MSG'); ?>";
<?php if ($mode == "process") { ?>
$("#custom-form input:text").first().focus();
<?php } ?>
$(".dynamic-form-div").tooltip({
position: { my: "left+400 top-5", at: "left top", collision: "flipfit" },
show: { effect: "fade", delay: 200 },
hide: false,
content: function() { return $(this).prop('title'); }
});
$("#add-field-dialog").dialog({
autoOpen: false,
minWidth: 550,
modal: true,
position: { my: 'center', at: 'center' }
});
$("#text-field-dialog").dialog({
autoOpen: false,
minWidth: 500,
modal: true,
position: { my: 'center', at: 'center' }
});
$("#date-field-dialog").dialog({
autoOpen: false,
minWidth: 500,
modal: true,
position: { my: 'center', at: 'center' }
});
$("#fieldset-dialog").dialog({
autoOpen: false,
minWidth: 400,
modal: true,
position: { my: 'center', at: 'center' }
});
//
// Form processing
//
$("#submit-form-btn").click(function(e) {
e.preventDefault();
var errorFlag = false;
// Validate text fields
$(".text-required").each(function() {
var data = $(this).val();
var firstField = false;
$(this).parent().removeClass("form-field-div-error");
if (data.length == 0) {
errorFlag = true;
$(this).parent().addClass("form-field-div-error");
if (!firstField) firstField = $(this);
}
});
if (errorFlag) {
var msg = "Data is missing from form";
alert(msg);
firstField.focus();
return(false);
}
});
$("#dynamic-form-list").sortable({
stop: function(event,ui) {
var data = "&table=custom_form_field&school_num=<?php echo($school_num) ?>&auth=<?php echo($authCode) ?>";
$("#dynamic-form-list li").each(function(i, el) {
var p = $(el).attr('id');
data += "&row_ids[]="+p;
});
$.ajax({
url: "ajax.SequenceRecords.php",
data: data
});
}
});
$(document).on('click','.add-field',function(e) {
e.preventDefault();
$("#add-field-dialog").dialog("open");
});
//
// Form spacer processing
//
$("#add-spacer").click(function(e) {
e.preventDefault();
var data = "table_name=custom_form_field&auth=<?php echo($authCode) ?>" +
"&record_num=0" +
"&sequence_flag=Y" +
"&form_num=<?php echo($form_num) ?>" +
"&field_type=Form-Spacer";
$.getJSON("ajax.DataRecord.Update.php", data,
function(results) {
var count = $("#num_elements").val();
var rnum = results.record_num;
var newSpacer = "<li id='row_"+rnum+"'><div id='div"+count+"' class='dynamic-form-div div-border spacer-div'><?php displayLanguageText('TEXT-FORM-SPACER'); ?></div></li>";
$("#dynamic-form-list").append(newSpacer);
// Increment count of the number of elements
$("#num_elements").val(parseInt(count) + 1);
count = $("#num_elements").val();
$("#add-field-dialog").dialog("close");
}
);
});
//
// Text field processing
//
$("#add-text-field").click(function(e) {
e.preventDefault();
$("#add-field-dialog").dialog("close");
$("#field_num").val(0);
$("#text_field_title").val('');
$("#text_field_tooltip").val('');
$("#text_field_default").val('');
$("#text_field_size").val('20');
$("#text_field_required").val('N');
$("#text_field_readonly").val('N');
$("#text_field_data_source").val('');
$("#text-field-dialog").dialog("open");
});
$(document).on('click','.edit-text-field',function(e){
e.preventDefault();
var field_num = $(this).attr('rnum');
$.getJSON("ajax.DataRecord.Fetch.php",
{
table_name: "custom_form_field",
record_num: field_num,
auth: authCode
},
function(results) {
// Check for errors
if (results.ajax_return_code == 0) {
alert(recordNotFound);
return;
}
// Initialize form
$("#field_num").val(field_num);
$("#text_field_title").val(results.field_prompt);
$("#text_field_tooltip").val(results.field_tooltip);
$("#text_field_default").val(results.field_default);
$("#text_field_size").val(results.field_size);
$("#text_field_required").val(results.field_required);
$("#text_field_readonly").val(results.field_readonly);
$("#text_field_data_source").val(results.field_data_source);
$("#text-field-dialog").dialog("open");
}
);
});
$("#save-text-field").click(function(e) {
e.preventDefault();
var field_num = $("#field_num").val();
var field_prompt = $("#text_field_title").val();
var field_size = $("#text_field_size").val();
var field_default = $("#text_field_default").val();
var field_tooltip = $("#text_field_tooltip").val();
var field_required = $("#text_field_required").val();
var field_readonly = $("#text_field_readonly").val();
var field_data_source = $("#text_field_data_source").val();
// Insert start fieldset entry
var data = "table_name=custom_form_field&auth=<?php echo($authCode) ?>" +
"&record_num=" + field_num +
"&sequence_flag=Y" +
"&form_num=<?php echo($form_num) ?>" +
"&field_type=Text" +
"&field_prompt=" + field_prompt +
"&field_default=" + field_default +
"&field_tooltip=" + field_tooltip +
"&field_size=" + field_size +
"&field_required=" + field_required +
"&field_readonly=" + field_readonly +
"&field_data_source=" + field_data_source;
$.getJSON("ajax.DataRecord.Update.php", data,
function(results) {
if (field_num == 0) {
var count = $("#num_elements").val();
var rnum = results.record_num;
var title = '';
var fname = field_prompt.replace(/[^a-z_]/,'');
var classes = "form-field text-field";
var required_flag = "";
if (field_tooltip.length || field_required == 'Y') {
title += field_prompt + ":<br>";
title += field_tooltip;
if (field_required == 'Y') {
classes += " text-required";
required_flag = "<span class='required-field'>*</span>";
}
}
var textField = "<li id='row_"+rnum+"'><div id='div"+count+"' class='dynamic-form-div div-border text-field-div' title='"+title+"'>" +
"<img src='images/icons/delete16.png' class='delete-field' rnum='"+rnum+"' align='right'>" +
"<label for='"+fname+"' class='dynamic-form-label'>"+field_prompt+":</label><br>" +
"<input type='text' name='"+fname+"' id='"+fname+"' size='"+field_size+"' class='"+classes+"'>"+required_flag +
"</div></li>";
$("#dynamic-form-list").append(textField);
// Increment count of the number of elements
$("#num_elements").val(parseInt(count) + 1);
count = $("#num_elements").val();
}
$("#text-field-dialog").dialog("close");
}
);
});
//
// Date field processing
//
$("#add-date-field").click(function(e) {
e.preventDefault();
$("#add-field-dialog").dialog("close");
addDateField('Date-Picker');
});
$("#add-datetime-field").click(function(e) {
e.preventDefault();
$("#add-field-dialog").dialog("close");
addDateField('Datetime');
});
function addDateField(field_type) {
$("#field_num").val(0);
$("#date_field_title").val('');
$("#date_field_tooltip").val('');
$("#date_field_default").val('');
$("#date_field_required").val('N');
$("#date_field_min_year").val('<?php echo(date("Y",time()) - 20) ?>');
$("#date_field_max_year").val('<?php echo(date("Y",time()) + 20) ?>');
$("#date_field_type").val(field_type);
$("#date-field-dialog").dialog("open");
}
$(document).on('click','.edit-date-field',function(e){
e.preventDefault();
var field_num = $(this).attr('rnum');
$("#field_num").val(field_num);
$("#date-field-dialog").dialog("open");
});
$("#save-date-field").click(function(e) {
e.preventDefault();
var field_num = $("#field_num").val();
var field_prompt = $("#date_field_title").val();
var field_tooltip = $("#date_field_tooltip").val();
var field_default = $("#date_field_default").val();
var field_required = $("#date_field_required").val();
var number1 = $("#date_field_min_year").val();
var number2 = $("#date_field_max_year").val();
var date_field_type = $("#date_field_type").val();
// Insert start fieldset entry
var data = "table_name=custom_form_field&auth=<?php echo($authCode) ?>" +
"&record_num=" + field_num +
"&sequence_flag=Y" +
"&form_num=<?php echo($form_num) ?>" +
"&field_type=" + date_field_type +
"&field_prompt=" + field_prompt +
"&field_default=" + field_default +
"&field_tooltip=" + field_tooltip +
"&field_required=" + field_required +
"&number1=" + number1 +
"&number2=" + number2;
$.getJSON("ajax.DataRecord.Update.php", data,
function(results) {
if (field_num == 0) {
var count = $("#num_elements").val();
var rnum = results.record_num;
var title = '';
var fname = field_prompt.replace(/[^a-z_]/,'');
var required_flag = "";
switch (date_field_type) {
case 'Date':
var classes = "form-field date-field";
break;
case 'Date-Picker':
var classes = "form-field date-monthyear-field";
break;
case 'Datetime':
var classes = "form-field datetime-field";
break;
}
if (field_tooltip.length || field_required == 'Y') {
title += field_prompt + ":<br>";
title += field_tooltip;
if (field_required == 'Y') {
classes += " text-required";
required_flag = "<span class='required-field'>*</span>";
}
}
var dateField = "<li id='row_"+rnum+"'><div id='div"+count+"' class='dynamic-form-div div-border date-field-div' title='"+title+"'>" +
"<img src='images/icons/delete16.png' class='delete-field' rnum='"+rnum+"' align='right'>" +
"<label for='"+fname+"' class='dynamic-form-label'>"+field_prompt+":</label><br>" +
"<input type='text' name='"+fname+"' id='"+fname+"' size='12' class='"+classes+"'>"+required_flag +
"</div></li>";
$("#dynamic-form-list").append(dateField);
// Increment count of the number of elements
$("#num_elements").val(parseInt(count) + 1);
count = $("#num_elements").val();
}
$("#date-field-dialog").dialog("close");
}
);
});
//
// Fieldset processing
//
$("#add-fieldset").click(function(e) {
e.preventDefault();
$("#add-field-dialog").dialog("close");
$("#field_num").val(0);
$("#fieldset_title").val('');
$("#fieldset-dialog").dialog("open");
});
$(document).on('click','.edit-fieldset',function(e){
e.preventDefault();
var field_num = $(this).attr('rnum');
var fieldset_title = $("#fieldset_title_"+field_num).html();
$("#field_num").val(field_num);
$("#fieldset_title").val(fieldset_title);
$("#fieldset-dialog").dialog("open");
});
$("#save-fieldset").click(function(e) {
e.preventDefault();
var field_num = $("#field_num").val();
var fieldset_title = $("#fieldset_title").val();
// Insert start fieldset entry
var data = "table_name=custom_form_field&auth=<?php echo($authCode) ?>" +
"&record_num=" + field_num +
"&sequence_flag=Y" +
"&form_num=<?php echo($form_num) ?>" +
"&field_prompt=" + fieldset_title +
"&field_type=Form-Start-Fieldset";
$.getJSON("ajax.DataRecord.Update.php", data,
function(results) {
if (field_num == 0) {
var count = $("#num_elements").val();
var rnum = results.record_num;
var startFieldset = "<li id='row_"+rnum+"'><div id='div"+count+"' class='dynamic-form-div div-border fieldset-div'>" +
"<img src='images/icons/delete16.png' class='delete-field' rnum='"+rnum+"' align='right'>" +
"<img src='images/icons/edit16.png' class='edit-fieldset' rnum='"+rnum+"' align='right'>" +
"<?php displayLanguageText('TEXT-START-FORM-FIELDSET'); ?>: <b>" + fieldset_title + "</b></div></li>";
$("#dynamic-form-list").append(startFieldset);
// Increment count of the number of elements
$("#num_elements").val(parseInt(count) + 1);
count = $("#num_elements").val();
// Insert end fieldset entry
var data = "table_name=custom_form_field&auth=<?php echo($authCode) ?>" +
"&record_num=0" +
"&child_of_num=" + rnum +
"&sequence_flag=Y" +
"&form_num=<?php echo($form_num) ?>" +
"&field_type=Form-End-Fieldset";
$.getJSON("ajax.DataRecord.Update.php", data,
function(results) {
var count = $("#num_elements").val();
var cnum = results.record_num;
var endFieldset = "<li id='row_"+cnum+"'><div id='div"+count+"' class='dynamic-form-div div-border parent-"+rnum+" fieldset-div' rnum='"+cnum+"'>" +
"<?php displayLanguageText('TEXT-END-FORM-FIELDSET'); ?></div></li>";
$("#dynamic-form-list").append(endFieldset);
// Increment count of the number of elements
$("#num_elements").val(parseInt(count) + 1);
count = $("#num_elements").val();
$("#fieldset-dialog").dialog("close");
}
);
}
else {
$("#fieldset_title_"+field_num).html(fieldset_title);
$("#fieldset-dialog").dialog("close");
}
}
);
});
$(document).on('click','.delete-field',function(e){
e.preventDefault();
var field_num = $(this).attr('rnum');
var ans = confirm("<?php displayLanguageText('TEXT-CONFIRM-DELETE'); ?>");
if (ans) {
// Delete entry
$.ajax({
type: 'GET',
url: "ajax.DataRecord.Delete.php",
data: { table_name: "custom_form_field", record_num: field_num, auth: '<?php echo($authCode) ?>' }
}).done(function(data) {
$("#row_"+field_num).remove();
$(".parent-"+field_num).each(function(i) {
var rnum = $(this).attr('rnum');
$.ajax({
type: 'GET',
url: "ajax.DataRecord.Delete.php",
data: { table_name: "custom_form_field", record_num: rnum, auth: '<?php echo($authCode) ?>' }
}).done(function(data) {
$("#row_"+rnum).remove();
});
});
});
}
});
$("#add-textarea-field, #add-select-field, #add-radio-field, #add-checkbox-field").click(function(e) {
e.preventDefault();
alert("Coming Soon");
});
$("#add-title, #add-text").click(function(e) {
e.preventDefault();
alert("Coming Soon");
});
});
</script>
<div id='add-field-dialog' title="<?php displayLanguageText('TEXT-ADD-FIELD'); ?>">
<table width='100%'>
<tr>
<td width='50%' align='center' valign='top'>
<p><button id='add-text-field' class='add-field-button'> <?php displayLanguageText('TEXT-ADD-TEXT-FIELD'); ?> </button></p>
<p><button id='add-textarea-field' class='add-field-button'> <?php displayLanguageText('TEXT-ADD-TEXTAREA-FIELD'); ?> </button></p>
<p><button id='add-date-field' class='add-field-button'> <?php displayLanguageText('TEXT-ADD-DATE-FIELD'); ?> </button></p>
<p><button id='add-datetime-field' class='add-field-button'> <?php displayLanguageText('TEXT-ADD-DATETIME-FIELD'); ?> </button></p>
<p><button id='add-select-field' class='add-field-button'> <?php displayLanguageText('TEXT-ADD-SELECT-LIST-FIELD'); ?> </button></p>
<p><button id='add-radio-field' class='add-field-button'> <?php displayLanguageText('TEXT-ADD-RADIO-BUTTON-FIELD'); ?> </button></p>
<p><button id='add-checkbox-field' class='add-field-button'> <?php displayLanguageText('TEXT-ADD-CHECKBOX-FIELD'); ?> </button></p>
</td>
<td width='50%' align='center' valign='top'>
<p><button id='add-title' class='add-field-button'> <?php displayLanguageText('TEXT-ADD-TITLE'); ?> </button></p>
<p><button id='add-text' class='add-field-button'> <?php displayLanguageText('TEXT-ADD-TEXT'); ?> </button></p>
<p><button id='add-spacer' class='add-field-button'> <?php displayLanguageText('TEXT-ADD-SPACER'); ?> </button></p>
<p><button id='add-fieldset' class='add-field-button'> <?php displayLanguageText('TEXT-ADD-FIELDSET'); ?> </button></p>
</td>
</tr>
</table>
</div>
<div id='date-field-dialog' title="<?php displayLanguageText('TEXT-ADD-DATE-FIELD'); ?>">
<p class='ltext'><label for='date_field_title'><?php displayLanguageText('TEXT-FIELD-PROMPT'); ?>:<br>
<input type='text' name='date_field_title' id='date_field_title' size='40'></p>
<p class='ltext'><label for='date_field_tooltip'><?php displayLanguageText('TEXT-FIELD-TOOLTIP'); ?>:<br>
<textarea name='date_field_tooltip' id='date_field_tooltip' cols='60' rows='3'></textarea></p>
<p class='ltext'><label for='date_field_default'><?php displayLanguageText('TEXT-DEFAULT'); ?>:<br>
<input type='text' name='date_field_default' id='date_field_default' size='20'></p>
<p class='ltext'><label for='date_field_min_year'><?php displayLanguageText('TEXT-MIN-YEAR'); ?>:<br>
<input type='text' name='date_field_min_year' id='date_field_min_year' size='10'></p>
<p class='ltext'><label for='date_field_max_year'><?php displayLanguageText('TEXT-MAX-YEAR'); ?>:<br>
<input type='text' name='date_field_max_year' id='date_field_max_year' size='10'></p>
<p class='ltext'><label for='date_field_required'><?php displayLanguageText('TEXT-REQUIRED'); ?>:<br>
<select name='date_field_required' id='date_field_required'>
<option value='Y'><?php displayLanguageText('TEXT-YES'); ?></option>
<option value='N'><?php displayLanguageText('TEXT-NO'); ?></option>
</select></p>
<p><button id='save-date-field'> <?php displayLanguageText('TEXT-SAVE'); ?> </button></p>
<input type='hidden' name='date_field_type' id='date_field_type'>
</div>
<div id='text-field-dialog' title="<?php displayLanguageText('TEXT-ADD-TEXT-FIELD'); ?>">
<p class='ltext'><label for='text_field_title'><?php displayLanguageText('TEXT-FIELD-PROMPT'); ?>:<br>
<input type='text' name='text_field_title' id='text_field_title' size='40'></p>
<p class='ltext'><label for='text_field_size'><?php displayLanguageText('TEXT-FIELD-SIZE'); ?>:<br>
<input type='text' name='text_field_size' id='text_field_size' size='10'></p>
<p class='ltext'><label for='text_field_default'><?php displayLanguageText('TEXT-DEFAULT'); ?>:<br>
<input type='text' name='text_field_default' id='text_field_default' size='60'></p>
<p class='ltext'><label for='text_field_tooltip'><?php displayLanguageText('TEXT-FIELD-TOOLTIP'); ?>:<br>
<textarea name='text_field_tooltip' id='text_field_tooltip' cols='60' rows='3'></textarea></p>
<p class='ltext'><label for='text_field_required'><?php displayLanguageText('TEXT-REQUIRED'); ?>:<br>
<select name='text_field_required' id='text_field_required'>
<option value='Y'><?php displayLanguageText('TEXT-YES'); ?></option>
<option value='N'><?php displayLanguageText('TEXT-NO'); ?></option>
</select></p>
<p class='ltext'><label for='text_field_readonly'><?php displayLanguageText('TEXT-READONLY'); ?>:<br>
<select name='text_field_readonly' id='text_field_readonly'>
<option value='Y'><?php displayLanguageText('TEXT-YES'); ?></option>
<option value='N'><?php displayLanguageText('TEXT-NO'); ?></option>
</select></p>
<p class='ltext'><label for='text_field_data_source'><?php displayLanguageText('TEXT-FIELD-DATA-SOURCE'); ?>:<br>
<select name='text_field_data_source' id='text_field_data_source'>
<option value=''></option>
<option value='userid'><?php displayLanguageText('TEXT-USER-ID'); ?></option>
<option value='name'><?php displayLanguageText('TEXT-NAME'); ?></option>
<option value='student_number'><?php displayLanguageText('TEXT-STUDENT-NUMBER'); ?></option>
</select></p>
<p><button id='save-text-field'> <?php displayLanguageText('TEXT-SAVE'); ?> </button></p>
</div>
<div id='fieldset-dialog' title="<?php displayLanguageText('TEXT-ADD-FIELDSET'); ?>">
<p><label for='fieldset_title'><?php displayLanguageText('TEXT-FIELDSET-TITLE'); ?>:<br>
<input type='text' name='fieldset_title' id='fieldset_title' size='40'></p>
<p><button id='save-fieldset'> <?php displayLanguageText('TEXT-SAVE'); ?> </button></p>
</div>
<input type='hidden' name='form_num' id='form_num' value='<?php echo($form_num) ?>'>
<input type='hidden' name='field_num' id='field_num' value='0'>
<input type='hidden' name='num_elements' id='num_elements' value='<?php echo($count) ?>'>