invoice_sections_with_taxes per-agent, RT#79636
[freeside.git] / httemplate / elements / select-country.html
index c4368c2..c981479 100644 (file)
@@ -2,7 +2,7 @@
 
 Example:
 
-  include( '/elements/select-country.html',
+  <& /elements/select-country.html,
     #recommended
     country    => $current_country,
 
@@ -13,10 +13,16 @@ Example:
     disable_empty => 1, #defaults to 1, disable the empty option
     empty_label   => 'all', #label for empty option
     disable_stateupdate => 0, #bool - disabled update of the select-state.html
-    
-  );
+    style         => [ 'attribute:value', 'another:value' ],
+
+    state_disable_empty => 1, #defaults to 1, disable the state empty option
+    state_empty_label   => 'all', #label for state empty option
+  &>
 
 </%doc>
+% #maybe this makes more sense in select-state.html?
+% # (county update is in select-county... and we wouldn't have to pass "state_"
+% #  options)
 % unless ( $opt{'disable_stateupdate'} ) {
 
   <% include('/elements/xmlhttp.html',
@@ -34,6 +40,8 @@ Example:
     }
   
     function <% $pre %>country_changed(what, callback) {
+
+      what.form.<% $pre %>state.disabled = 'disabled';
   
       country = what.options[what.selectedIndex].value;
   
@@ -45,16 +53,25 @@ Example:
   
         // add the new states
         var statesArray = eval('(' + states + ')' );
+%       unless ( $opt{'disable_empty'} ) {
+          statesArray.unshift('', '');
+%       }
+
         for ( var s = 0; s < statesArray.length; s=s+2 ) {
             var stateLabel = statesArray[s+1];
             if ( stateLabel == "" )
-                stateLabel = '(n/a)';
+                stateLabel = <% $opt{state_empty_label} || '(n/a)' |js_string %>;
             opt(what.form.<% $pre %>state, statesArray[s], stateLabel);
         }
+
+        what.form.<% $pre %>state.disabled = '';
   
         //run the callback
-        if ( callback != null ) 
+        if ( callback != null ) {
           callback();
+        } else {
+          <% $pre %>state_changed(what.form.<% $pre %>state);
+        }
       }
   
       // go get the new states
@@ -70,6 +87,7 @@ Example:
         ID       = "<% $pre %>country"
         onChange = "<% $onchange %>"
         <% $opt{'disabled'} %>
+        <% $style %>
 >
 
 % unless ( $opt{'disable_empty'} ) {
@@ -80,7 +98,7 @@ Example:
 
   <OPTION VALUE="<% $country |h %>"
           <% $country eq $opt{'country'} ? ' SELECTED' : '' %>
-  ><% code2country($country). " ($country)" %>
+  ><% FS::geocode_Mixin->code2country($country). " ($country)" %>
 
 % } 
 
@@ -101,12 +119,18 @@ my $onchange =
   ( $opt{'disable_stateupdate'} ? '' : $pre.'country_changed(this); ' ).
   $opt{'onchange'};
 
+$opt{'style'} ||= [];
+my $style =
+  scalar(@{$opt{style}})
+    ? 'STYLE="'. join(';', @{$opt{style}}). '"'
+    : '';
+
 my $conf = new FS::Conf;
 my $default = $conf->config('countrydefault') || 'US';
 
 my @all_countries = ( 
                       sort {    ($b eq $default) <=> ($a eq $default)
-                             or code2country($a) cmp code2country($b)
+                             or FS::geocode_Mixin->code2country($a) cmp FS::geocode_Mixin->code2country($b)
                            }
                       map  { $_->country } 
                            qsearch({