diff options
author | ivan <ivan> | 2009-10-12 01:45:12 +0000 |
---|---|---|
committer | ivan <ivan> | 2009-10-12 01:45:12 +0000 |
commit | 0b94e40c533288be69a4fe60da36a385d31eff7f (patch) | |
tree | 8284d3c555e7b0cdfd731c567059f7f60319e3c0 /httemplate/elements/city.html | |
parent | 990e040448691dd4bd26c871274c65204cb7707b (diff) |
UI for per-city taxes (setup and assigning to customers/package locations), RT#5852
Diffstat (limited to 'httemplate/elements/city.html')
-rw-r--r-- | httemplate/elements/city.html | 142 |
1 files changed, 142 insertions, 0 deletions
diff --git a/httemplate/elements/city.html b/httemplate/elements/city.html new file mode 100644 index 000000000..1659ebf47 --- /dev/null +++ b/httemplate/elements/city.html @@ -0,0 +1,142 @@ +<%doc> + +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' ], + ); + +</%doc> + +<% include('/elements/xmlhttp.html', + 'url' => $p.'misc/cities.cgi', + 'subs' => [ $pre. 'get_cities' ], + ) +%> + +<SCRIPT TYPE="text/javascript"> + + function opt(what,value,text) { + var optionName = new Option(text, value, false, false); + var length = what.length; + what.options[length] = optionName; + } + + var saved_<%$pre%>city= ''; + + function <% $pre %>county_changed(what, callback) { + + 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; + + // add the new cities + var citiesArray = eval('(' + cities + ')' ); + + for ( var s = 0; s < citiesArray.length; s++ ) { + var cityLabel = citiesArray[s]; + if ( cityLabel == "" ) + cityLabel = '(n/a)'; + opt(what.form.<% $pre %>city_select, citiesArray[s], cityLabel); + } + + if ( citiesArray.length > 1 || citiesArray[0].length ) { + // turn off the text city, turn on the select + saved_<%$pre%>city = what.form.<%$ pre %>city.value; + what.form.<% $pre %>city.style.display = 'none'; + what.form.<% $pre %>city_select.style.display = ''; + } else { + // turn on the text city, turn off the select + what.form.<%$ pre %>city.value = saved_<%$pre%>city; + what.form.<% $pre %>city.style.display = ''; + what.form.<% $pre %>city_select.style.display = 'none'; + } + + //run the callback + if ( callback != null ) + callback(); + } + + // go get the new cities + <% $pre %>get_cities( county, state, country, <% $pre %>update_cities ); + + } + + function <%$pre%>city_select_changed(what) { + what.form.<%$pre%>city.value = what.options[what.selectedIndex].value; + } + +</SCRIPT> + +<INPUT TYPE = "text" + NAME = "<%$pre%>city" + ID = "<%$pre%>city" + VALUE = "<% $opt{'city'} |h %>" + onChange = "<% $opt{'onchange'} %>" + <% $opt{'disabled'} %> + <% $text_style %> +> + +<SELECT NAME = "<%$pre%>city_select" + ID = "<%$pre%>city_select" + onChange = "<%$pre%>city_select_changed(this); <% $opt{'onchange'} %>" + <% $opt{'disabled'} %> + <% $select_style %> +> + +% foreach my $city ( @cities ) { + + <OPTION VALUE="<% $city |h %>" + <% $city eq $opt{'city'} ? 'SELECTED' : '' %> + ><% $city eq $opt{'empty_data_value'} ? $opt{'empty_data_label'} : $city %> + +% } + +</SELECT> + +%# VALUE = "<% $curr_value |h %>" +<%init> + +my %opt = @_; + +my $pre = $opt{'prefix'}; + +my $text_style = $opt{'style'} ? [ @{ $opt{'style'} } ] : []; +my $select_style = $opt{'style'} ? [ @{ $opt{'style'} } ] : []; + +my @cities = cities( $opt{'county'}, $opt{'state'}, $opt{'country'} ); +if ( scalar(@cities) > 1 || $cities[0] ) { + push @$text_style, 'display:none'; +} else { + push @$select_style, 'display:none'; +} + +$text_style = + scalar(@$text_style) + ? 'STYLE="'. join(';', @$text_style). '"' + : ''; + +$select_style = + scalar(@$select_style) + ? 'STYLE="'. join(';', @$select_style). '"' + : ''; + +</%init> |