<tr>
<th class="{if $account.fieldRequired.billing_city} glm-required{/if}">Billing City</th>
<td class="{if $account.fieldFail.billing_city} glm-form-bad-input{/if}" data-tabid="glm-billing-city">
- <select name="billing_city"{if $account.fieldRequired.billing_city} required{/if}>
+ <select id="billingCity" name="billing_city"{if $account.fieldRequired.billing_city} required{/if}>
<option value=""></option>
{foreach $cities as $city}
<option value="{$city.name}"{if $city.name == $account.fieldData.billing_city} selected{/if}>{$city.name}</option>
{/foreach}
</select>
+ <!-- Add new city dialog -->
+ <div id="newBillingCityButton" class="newCityButton button button-secondary">Add a new City</div>
+ <div id="newBillingCityDialog" class="glm-dialog-box" title="Enter a New City">
+ <table class="glm-admin-table">
+ <tr>
+ <th class="glm-required">City Name</th>
+ <td id="newBillingCityNameTD" class="newCityNameTD">
+ <input id="newBillingCityName" type="text" name="newBillingCityName" class="newCityName glm-form-text-input">
+ <div id="newBillingCityNameRequired" class="newCityNameRequired"></div>
+ </td>
+ </tr>
+ </table>
+ <p><span class="glm-required">*</span> Required</p>
+ <a id="newBillingCityCancel" class="newCityCancel button button-primary glm-right">Cancel</a>
+ <input id="newBillingCitySubmit" type="submit" value="Add new City" class="newCitySubmit">
+ </div>
+ <!-- City Selection -->
+ <input id="billingCityName" type="hidden" name="newBillingCityName" value=""><!-- this field is only used if adding a new city to pass the new name -->
+
{if $account.fieldFail.billing_city}<p>{$account.fieldFail.billing_city}</p>{/if}<br>
+
</td>
</tr>
$('input[name=billing_country]').prop('disabled', true);
$('input[name=billing_phone]').prop('disabled', true);
$('input[name=billing_fax]').prop('disabled', true);
- console.log( 'billing form disabled' );
+ // Disable click event for add city
+ $('#newBillingCityButton').off('click');
}
// Enable the billing form
function enableBillingForm()
$('input[name=billing_country]').prop('disabled', false);
$('input[name=billing_phone]').prop('disabled', false);
$('input[name=billing_fax]').prop('disabled', false);
+ // Add a new city button action - pop-up dialog
+ $('#newBillingCityButton').click( function() {
+ $("#newBillingCityDialog").dialog("open");
+ });
+
}
+
+
+ /*
+ * New Billing City Dialog
+ */
+
+ // Setup dialog box for adding a new city
+ $("#newBillingCityDialog").dialog({
+ autoOpen: false,
+ minWidth: 400,
+ dialogClass: "glm-dialog-no-close"
+ });
+ $('#newBillingCityCancel').click( function() {
+ // Clear new city name from form
+ $('#newBillingCityName').val('');
+ $('#newBillingCityNameTD').removeClass('glm-form-bad-input');
+ $('#newBillingCityNameRequired').text('');
+
+ $("#newBillingCityDialog").dialog("close");
+ });
+
+ // Submit new city
+ var newBillingCityAdded = false;
+ $('#newBillingCitySubmit').click( function() {
+
+ // Get new city name
+ var newBillingCityName = $('#newBillingCityName').val();
+ newBillingCityName = newBillingCityName.replace(/"/g, '');
+
+ // If no name is supplied, notify used it's required
+ if (newBillingCityName == '') {
+ $('#newBillingCityNameTD').addClass('glm-form-bad-input');
+ $('#newBillingCityNameRequired').text('A city name is required!');
+ return false;
+ }
+
+ // If the city name is already in the list then don't add it!
+ var nameFoundInBillingCity = false;
+ $('#billingCity option').each(function(){
+ console.log( 'newBillingCityName', newBillingCityName );
+ console.log( 'this.value', this.value );
+ console.log( 'matches: ', newBillingCityName == this.value );
+ if ( newBillingCityName == this.value ) {
+ // found the city in list already
+ // Set the select to that value
+ $('#billingCity').val(newBillingCityName);
+
+ // Reset add city form and close
+ $('#newBillingCityName').val('');
+ $('#newBillingCityNameTD').addClass('glm-form-bad-input');
+ $('#newBillingCityNameRequired').text('Already added');
+ nameFoundInBillingCity = true;
+ return false;
+ }
+ });
+
+ if ( nameFoundInBillingCity ) {
+ return false;
+ }
+
+
+ // Add new city name to the hidden field that will pass the new name to PHP.
+ $('#billingCityName').val(newBillingCityName);
+
+ // Add new city name to picklist and for storing - Only one permitted per submission
+ if (newBillingCityAdded) {
+
+ // New city already added, so just update the name and select that one
+ $('#billingCity option[value=' + newBillingCityAdded + ']').val(newBillingCityName);
+ $('#billingCity option:selected').text(newBillingCityName);
+
+ } else {
+
+ // Add the new city name to the city picklist
+ $('#billingCity').append('<option value="' + newBillingCityName + '">' + newBillingCityName + '</option>');
+ $('#billingCity').val(newBillingCityName);
+ $('#newBillingCityNameTD').append('<input type="hidden" name="newBillingCity" value="' + newBillingCityName + '">');
+ newBillingCityAdded = newBillingCityName;
+
+ }
+
+ // Clear new city name from form
+ $('#newBillingCityName').val('');
+ $('#newBillingCityNameTD').removeClass('glm-form-bad-input');
+ $('#newBillingCityNameRequired').text('');
+
+ $('#newBillingCityDialog').dialog('close');
+
+ });
});
</script>