From: Chuck Scott Date: Thu, 28 Dec 2017 21:49:09 +0000 (-0500) Subject: Editing of custom fields, and picklist options all now working. X-Git-Tag: v1.0.0^2~20 X-Git-Url: http://cvs2.gaslightmedia.com/gitweb/index.cgi?a=commitdiff_plain;h=8ce2e862b20ea089400ac396f761f48f72d8800d;p=WP-Plugins%2Fglm-member-db-customfields.git Editing of custom fields, and picklist options all now working. --- diff --git a/classes/data/dataCustomFieldsOption.php b/classes/data/dataCustomFieldsOption.php index 95dd95a..323ac38 100644 --- a/classes/data/dataCustomFieldsOption.php +++ b/classes/data/dataCustomFieldsOption.php @@ -126,7 +126,7 @@ class GlmDataFieldsCustomFieldsOption extends GlmDataAbstract 'field_id' => array ( 'field' => 'field_id', 'type' => 'integer', - 'use' => 'a' + 'use' => 'lgnie' ), // Option Text - Displayed text for option diff --git a/models/admin/ajax/customFieldOptions.php b/models/admin/ajax/customFieldOptions.php index 3f5fff5..70cdee8 100644 --- a/models/admin/ajax/customFieldOptions.php +++ b/models/admin/ajax/customFieldOptions.php @@ -78,22 +78,48 @@ class GlmMembersAdmin_ajax_customFieldOptions extends GlmDataFieldsCustomFieldsO { switch($_REQUEST['option']) { - + case 'addNewOption': - + $fieldOption = $this->insertEntry(); if (!is_array($fieldOption) || !$fieldOption['status']) { echo "0"; } else { - // Produce HTML for the new field + // Produce HTML for the new option $viewFile = 'admin/ajax/newFieldOption.html'; $fieldOption['fieldData']['fid'] = $_REQUEST['fid']; - $newFieldHtml = $this->generateHTML($fieldOption, $viewFile); - echo $newFieldHtml; - + $newOptionHtml = $this->generateHTML($fieldOption, $viewFile); + echo $newOptionHtml; + + } + + break; + + case 'updateOption': + + $optionId = ($_REQUEST['option_id'] -0); + + if ($optionId > 0) { + + + $res = $this->updateEntry($optionId); + + if ($res) { + + $fieldOption = $this->editEntry($optionId); + + // Produce HTML for the new field + $viewFile = 'admin/ajax/newFieldOption.html'; + $fieldOption['fieldData']['fid'] = $_REQUEST['fid']; + + $optionHtml = $this->generateHTML($fieldOption, $viewFile); + echo $optionHtml; + + } + } break; @@ -101,10 +127,10 @@ class GlmMembersAdmin_ajax_customFieldOptions extends GlmDataFieldsCustomFieldsO case 'deleteOption': $fieldId = false; - + if (isset($_REQUEST['id'])) { $fieldId = $_REQUEST['id'] - 0; - + if ($fieldId <= 0) { echo false; wp_die(); diff --git a/models/admin/ajax/customFields.php b/models/admin/ajax/customFields.php index 2049723..9a2dee7 100644 --- a/models/admin/ajax/customFields.php +++ b/models/admin/ajax/customFields.php @@ -91,7 +91,6 @@ class GlmMembersAdmin_ajax_customFields extends GlmDataFieldsCustomFields // Add description for the selected field type $customField['fieldData']['field_type_descr'] = $this->config['custom_field_type'][$customField['fieldData']['field_type']]; -trigger_error('**** 11111 *****'.print_r($res,1),E_USER_NOTICE); // Produce HTML for the new field $viewFile = 'admin/ajax/newField.html'; @@ -103,25 +102,23 @@ trigger_error('**** 11111 *****'.print_r($res,1),E_USER_NOTICE); case 'updateField': - $fieldId = ($_REQUEST['fieldId'] -0); - if ($fieldId > 0) { - $res = $this->updateEntry($fieldId); + $fieldId = ($_REQUEST['fieldId'] -0); - if ($res) { + if ($fieldId > 0) { -trigger_error('**** 22222 *****'.$_REQUEST['fieldId'].":".print_r($res,1),E_USER_NOTICE); + $res = $this->updateEntry($fieldId); - $customField = $this->editEntry($fieldId); -trigger_error('**** 33333 *****'.$_REQUEST['fieldId']." - ".print_r($customField,1),E_USER_NOTICE); + if ($res) { - // Produce HTML for the new field - $viewFile = 'admin/ajax/newField.html'; - $newFieldHtml = $this->generateHTML($customField, $viewFile); - echo $newFieldHtml; + $customField = $this->editEntry($fieldId); - } + // Produce HTML for the new field + $viewFile = 'admin/ajax/newField.html'; + $newFieldHtml = $this->generateHTML($customField, $viewFile); + echo $newFieldHtml; } + } break; diff --git a/views/admin/ajax/newField.html b/views/admin/ajax/newField.html index f7e12d3..4ba440c 100644 --- a/views/admin/ajax/newField.html +++ b/views/admin/ajax/newField.html @@ -37,6 +37,6 @@ {/if} -   +   diff --git a/views/admin/ajax/newFieldOption.html b/views/admin/ajax/newFieldOption.html index f1618da..bb5f4ba 100644 --- a/views/admin/ajax/newFieldOption.html +++ b/views/admin/ajax/newFieldOption.html @@ -1,13 +1,20 @@ {* A line describing the new picklist option. *} -"> - {$fieldData.option_value} - {$fieldData.option_text} - ${$fieldData.option_cost} - {$fieldData.option_default.name} +"> + {$fieldData.option_value} + {$fieldData.option_text} + ${$fieldData.option_cost|number_format:2} + {$fieldData.option_default.name} -
Delete
-
Edit
+
Delete
+
Edit
diff --git a/views/admin/customFields/index.html b/views/admin/customFields/index.html index 6a4532f..a73fb26 100644 --- a/views/admin/customFields/index.html +++ b/views/admin/customFields/index.html @@ -1,4 +1,4 @@ - + {* New/Edit field form *}
@@ -52,33 +52,33 @@
-{* New Picklist Option form *} -
+{* Picklist Option form *} +
- + - - + + - +
Option Name: - +
(For reference - keep short)
Displayed Text:
Selected by DedaultSelected by Default
Cost:$$

* Required

-
Cancel
-
Add new Picklist Option
- +
Cancel
+
(name supplied by code below)
+
{* Fields Table *} @@ -121,7 +121,7 @@ {if $t.field_type=='picklist'} - +
@@ -133,14 +133,21 @@ {if $t.options} {foreach $t.options as $option} - - - - - + + + + + {/foreach} @@ -149,7 +156,7 @@ {/if} - + {/foreach} {/if} @@ -252,8 +259,8 @@ jQuery(document).ready(function($) { $('body').on('click', '.DeleteFieldButton_{$fid}', deleteFieldButton_{$fid}); $('body').off('click', '.AddOptionButton_{$fid}', addOptionButton_{$fid}); $('body').on('click', '.AddOptionButton_{$fid}', addOptionButton_{$fid}); - $('body').off('click', '#NewOptionCancel_{$fid}', NewOptionCancel_{$fid}); - $('body').on('click', '#NewOptionCancel_{$fid}', NewOptionCancel_{$fid}); + $('body').off('click', '#EditOptionCancel_{$fid}', editOptionCancel_{$fid}); + $('body').on('click', '#EditOptionCancel_{$fid}', editOptionCancel_{$fid}); // Otherwise this is a field update } else { @@ -265,8 +272,8 @@ jQuery(document).ready(function($) { // Update the displayed values $('#DisplayFieldName_' + fieldId).html(formData.field_name); $('#DisplayFieldTypeDescr_' + fieldId).html($('#FieldType_{$fid} :selected').text()); - $('#DisplayFieldPriority_' + fieldId).html((formData.priority_display ? 'Yes':'No')); - $('#DisplayFieldRequired_' + fieldId).html((formData.required ? 'Yes':'No')); + $('#DisplayFieldPriority_' + fieldId).html(formData.priority_display ? 'Yes':'No'); + $('#DisplayFieldRequired_' + fieldId).html(formData.required ? 'Yes':'No'); $('#DisplayFieldPrompt_' + fieldId).html(formData.field_prompt); // Update hidden values used for editing @@ -361,15 +368,15 @@ jQuery(document).ready(function($) { * New Picklist Option Dialog */ // Setup - $("#NewOptionDialog_{$fid}").dialog({ + $("#EditOptionDialog_{$fid}").dialog({ autoOpen: false, minWidth: 600, dialogClass: "glm-dialog-no-close" }); // Cancel - $('body').on('click', '#NewOptionCancel_{$fid}', NewOptionCancel_{$fid}); - function NewOptionCancel_{$fid}(e) { - $("#NewOptionDialog_{$fid}").dialog("close"); + $('body').on('click', '#EditOptionCancel_{$fid}', editOptionCancel_{$fid}); + function editOptionCancel_{$fid}(e) { + $("#EditOptionDialog_{$fid}").dialog("close"); }; /* @@ -378,32 +385,40 @@ jQuery(document).ready(function($) { $('body').on('click', '.AddOptionButton_{$fid}', addOptionButton_{$fid}); function addOptionButton_{$fid}(e) { var fieldId_{$fid} = $(this).attr('data-fieldId'); - - $("#NewOptionDialog_{$fid}").dialog("open"); - $('#NewOptionValue_{$fid}').val(''); - $('#NewOptionText_{$fid}').val(''); - $('#NewOptionDefault_{$fid}').removeAttr('checked'); - $('#NewOptionCost_{$fid}').val('0.00'); - - $('#NewOptionSubmit_{$fid}').data('data-fieldId', $(this).attr('data-fieldId')); + + $('#EditOptionSubmit_{$fid}').data('data-optionId', ''); + $("#EditOptionDialog_{$fid}").dialog("open"); + $('#EditOptionValue_{$fid}').val(''); + $('#EditOptionText_{$fid}').val(''); + $('#EditOptionDefault_{$fid}').removeAttr('checked'); + $('#EditOptionCost_{$fid}').val('0.00'); + + $('#EditOptionSubmit_{$fid}').html('New Custom Field'); + $('#EditOptionSubmit_{$fid}').data('data-fieldId', $(this).attr('data-fieldId')); }; /* - * Add New Option Submit + * Option Submit */ - $('#NewOptionSubmit_{$fid}').click( function(e) { + $('#EditOptionSubmit_{$fid}').click( function(e) { - // Collect the new field data + var optionSubmitOption = 'addNewOption'; + if ($('#EditOptionSubmit_{$fid}').data('data-optionId') != '') { + optionSubmitOption = 'updateOption'; + } + + // Collect the option field data var formData = { 'action': 'glm_members_admin_ajax', 'glm_action': 'customFieldOptions', - 'option': 'addNewOption', - 'field_id': $('#NewOptionSubmit_{$fid}').data('data-fieldId'), - 'option_value': $('#NewOptionValue_{$fid}').val(), - 'option_text': $('#NewOptionText_{$fid}').val(), - 'option_cost': $('#NewOptionCost_{$fid}').val(), - 'option_default': $('#NewOptionDefault_{$fid}').is(':checked'), - 'fid': '{$fid}' + 'option': optionSubmitOption, + 'fid': '{$fid}', + 'field_id': $('#EditOptionSubmit_{$fid}').data('data-fieldId'), + 'option_id': $('#EditOptionSubmit_{$fid}').data('data-optionId'), + 'option_value': $('#EditOptionValue_{$fid}').val(), + 'option_text': $('#EditOptionText_{$fid}').val(), + 'option_cost': $('#EditOptionCost_{$fid}').val(), + 'option_default': $('#EditOptionDefault_{$fid}').is(':checked') }; // Submit new field data - expect field new ID back @@ -415,27 +430,79 @@ jQuery(document).ready(function($) { dataType: 'text' }) .done( function(optionHtml) { + if (optionHtml == '') { - flashElement('FieldDialogError_{$fid}'); + flashElement('EditOptionDialogError_{$fid}'); } else { - var fieldId_{$fid} = $('#NewOptionSubmit_{$fid}').data('data-fieldId'); - $('#PicklistOptions_'+fieldId_{$fid}).append(optionHtml); - - $("#NewOptionDialog_{$fid}").dialog("close"); - - // Need to rebind delete option buttons - $('body').off('click', '.DeleteOptionButton_{$fid}', DeleteOptionButton_{$fid}); - $('body').on('click', '.DeleteOptionButton_{$fid}', DeleteOptionButton_{$fid}); + + // If this is a new option + if (optionSubmitOption == 'addNewOption') { + + var fieldId_{$fid} = $('#EditOptionSubmit_{$fid}').data('data-fieldId'); + $('#PicklistOptions_'+fieldId_{$fid}).append(optionHtml); + + $("#EditOptionDialog_{$fid}").dialog("close"); + + // Need to rebind delete option buttons + $('body').off('click', '.DeleteOptionButton_{$fid}', deleteOptionButton_{$fid}); + $('body').on('click', '.DeleteOptionButton_{$fid}', deleteOptionButton_{$fid}); + + // Otherwise this is an option update + } else { + + var optionId = formData.option_id; + var optionDefault = (formData.option_default == true ? 'Yes':'No'); + + // Update the displayed values + $('#EditOptionValue_' + optionId).html(formData.option_value); + $('#EditOptionText_' + optionId).html(formData.option_text); + $('#EditOptionCost_' + optionId).html('$'+Number(formData.option_cost).toFixed(2)); + $('#EditOptionDefault_' + optionId).html(formData.option_default ? 'Yes':'No'); + + // Update hidden values used for editing + $('#EditOptionButton_' + optionId).attr('data-optionValue', formData.option_value); + $('#EditOptionButton_' + optionId).attr('data-optionText', formData.option_text); + $('#EditOptionButton_' + optionId).attr('data-optionCost', formData.option_cost); + $('#EditOptionButton_' + optionId).attr('data-default', (formData.default ? 1 : 0)); + + + } + $("#EditOptionDialog_{$fid}").dialog("close"); } }); }); + /* + * Edit field + */ + $('body').on('click', '.EditOptionButton_{$fid}', editOptionButton_{$fid}); + function editOptionButton_{$fid}(e) { + + var fieldId = $(this).attr('data-fieldId'); + var optionId = $(this).attr('data-optionId'); + var optionValue = $(this).attr('data-optionValue'); + var optionText = $(this).attr('data-optionText'); + var optionCost = $(this).attr('data-optionCost'); + var optionDefault = ($(this).attr('data-default') == 1); + + $('#EditOptionSubmit_{$fid}').data('data-optionId', optionId); + $('#EditOptionSubmit_{$fid}').data('data-fieldId', fieldId); + $('#EditOptionValue_{$fid}').val(optionValue); + $('#EditOptionText_{$fid}').val(optionText); + $('#EditOptionCost_{$fid}').val(optionCost); + $('#EditOptionDefault_{$fid}').prop('checked', optionDefault); + + $('#EditOptionSubmit_{$fid}').html('Update Custom Field Option'); + $("#EditOptionDialog_{$fid}").dialog("open"); + } + + // Delete - $('body').on('click', '.DeleteOptionButton_{$fid}', DeleteOptionButton_{$fid}); - function DeleteOptionButton_{$fid}(e) { + $('body').on('click', '.DeleteOptionButton_{$fid}', deleteOptionButton_{$fid}); + function deleteOptionButton_{$fid}(e) { - var optionDeleteId_{$fid} = $(this).attr('data-fieldOptionId'); + var optionDeleteId_{$fid} = $(this).attr('data-optionId'); // Delete the selected option and remove it from the display var formData = { @@ -453,7 +520,7 @@ jQuery(document).ready(function($) { dataType: 'text' }) .done( function(deleted) { - $('#FieldOptionRow_' + optionDeleteId_{$fid}).remove(); + $('#OptionRow_' + optionDeleteId_{$fid}).remove(); }); }; diff --git a/views/front/customFields/displayForm.html b/views/front/customFields/displayForm.html index 37d9939..69cdd29 100644 --- a/views/front/customFields/displayForm.html +++ b/views/front/customFields/displayForm.html @@ -31,7 +31,7 @@ {foreach $field.options as $option} {/foreach}
Option Name Option Text
{$option.option_value}{$option.option_text}${$option.option_cost|number_format:2}{$option.option_default.name}
{$option.option_value}{$option.option_text}${$option.option_cost|number_format:2}{$option.option_default.name} -
Delete
-
Edit
+
Delete
+
Edit