X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=httemplate%2Felements%2Fcity.html;h=4e9a6094013a669067b1e651c106cf4c3e5a827c;hb=e215fc213a1eb9a3365cecf5ce82f1a58f154cd6;hp=956d353bd5a6b237434afc9a701f227be6f3af19;hpb=7f89738f0f4740efaca00b06034e3a7d86c49ea5;p=freeside.git
diff --git a/httemplate/elements/city.html b/httemplate/elements/city.html
index 956d353bd..4e9a60940 100644
--- a/httemplate/elements/city.html
+++ b/httemplate/elements/city.html
@@ -2,24 +2,35 @@
Example:
- include( '/elements/city.html',
- #recommended
- country => $current_country,
- state => $current_state,
- county => $current_county,
- city => $current_city,
-
- #optional
- prefix => $optional_unique_prefix,
- onchange => $javascript,
- disabled => 0, #bool
-# disable_empty => 1, #defaults to 1, disable the empty option
-# empty_label => 'all', #label for empty option
- style => [ 'attribute:value', 'another:value' ],
- );
+ <& /elements/city.html,
+ #recommended
+ country => $current_country,
+ state => $current_state,
+ county => $current_county,
+ city => $current_city,
+
+ #optional
+ prefix => $optional_unique_prefix,
+ onchange => $javascript,
+ disabled => 0, #bool
+ style => [ 'attribute:value', 'another:value' ],
+ disable_empty => 1, #defaults to 1, set to 0 to disable the empty option
+ empty_label => 'all', #label for empty option
+ disable_text => 1, # disable the text input (just show the select)
+ #doesn't work as an option yet, set when conf tax_district_method
+ #disable_select => 1, # disable the selector (just show a text input)
+ &>
%doc>
+% if ( $disable_select ) {
+
+% }
+% else {
+
+
<% include('/elements/xmlhttp.html',
'url' => $p.'misc/cities.cgi',
'subs' => [ $pre. 'get_cities' ],
@@ -38,16 +49,22 @@ Example:
function <% $pre %>county_changed(what, callback) {
+ what.form.<% $pre %>city_select.disabled = 'disabled';
+
county = what.options[what.selectedIndex].value;
state = what.form.<% $pre %>state.options[what.form.<% $pre %>state.selectedIndex].value;
country = what.form.<% $pre %>country.options[what.form.<% $pre %>country.selectedIndex].value;
function <% $pre %>update_cities(cities) {
-
+
// blank the current city list
for ( var i = what.form.<% $pre %>city_select.length; i >= 0; i-- )
what.form.<% $pre %>city_select.options[i] = null;
+% unless ( $opt{disable_empty} ) {
+ opt( what.form.<% $pre %>city_select, '', <% $opt{empty_label} |js_string %> );
+% }
+
// add the new cities
var citiesArray = eval('(' + cities + ')' );
@@ -58,7 +75,7 @@ Example:
opt(what.form.<% $pre %>city_select, citiesArray[s], cityLabel);
}
- if ( citiesArray.length > 1 || citiesArray[0].length ) {
+ if ( citiesArray.length > 1 || (citiesArray[0] && citiesArray[0].length) ){
// turn off the text city, turn on the select
saved_<%$pre%>city = what.form.<%$ pre %>city.value;
<%$pre%>city_select_changed(what.form.<% $pre %>city_select);
@@ -71,6 +88,8 @@ Example:
what.form.<% $pre %>city_select.style.display = 'none';
}
+ what.form.<% $pre %>city_select.disabled = '';
+
//run the callback
if ( callback != null )
callback();
@@ -87,45 +106,73 @@ Example:
-
<% $text_style %>
+% }
>
-
+% }
-%# VALUE = "<% $curr_value |h %>"
<%init>
my %opt = @_;
my $pre = $opt{'prefix'};
+my $conf = new FS::Conf;
+# Using tax_district_method implies that there's not a preloaded city/county
+# tax district table.
+my $disable_select = 1 if $conf->config('tax_district_method');
+
+$opt{'disable_empty'} = 1 unless exists($opt{'disable_empty'});
+
+if ($conf->exists('cust_main-no_city_in_address')) {
+ $opt{'disable_text'} = 1;
+ $disable_select = 1;
+}
+
my $text_style = $opt{'style'} ? [ @{ $opt{'style'} } ] : [];
my $select_style = $opt{'style'} ? [ @{ $opt{'style'} } ] : [];
+push @$text_style, @{ $opt{'text_style'} } if $opt{'text_style'};
+push @$select_style, @{ $opt{'select_style'} } if $opt{'select_style'};
+
my @cities = cities( $opt{'county'}, $opt{'state'}, $opt{'country'} );
my $saved_city = '';
-if ( scalar(@cities) > 1 || $cities[0] ) {
+if ( scalar(@cities) > 1 || $cities[0] and !$disable_select ) {
push @$text_style, 'display:none';
} else {
push @$select_style, 'display:none';