diff options
| author | Ivan Kohler <ivan@freeside.biz> | 2012-12-14 19:32:46 -0800 | 
|---|---|---|
| committer | Ivan Kohler <ivan@freeside.biz> | 2012-12-14 19:32:46 -0800 | 
| commit | 5555faae43590400dbb726e8d89cfcc5d70bba2b (patch) | |
| tree | 1b1f7ae002bfc3d8ddc85d0bb7cd64a7dcd7b59d /httemplate | |
| parent | 8350bd8c54302669ded9e20285b53a1cca996473 (diff) | |
DID selection for fibernetics, RT#19883
Diffstat (limited to 'httemplate')
| -rw-r--r-- | httemplate/elements/select-did.html | 69 | ||||
| -rw-r--r-- | httemplate/elements/select-phonenum.html | 10 | ||||
| -rw-r--r-- | httemplate/elements/select-region.html | 88 | ||||
| -rw-r--r-- | httemplate/misc/phonenums.cgi | 10 | ||||
| -rw-r--r-- | httemplate/misc/regions.cgi | 26 | 
5 files changed, 177 insertions, 26 deletions
diff --git a/httemplate/elements/select-did.html b/httemplate/elements/select-did.html index a69450c2a..6e205d8ff 100644 --- a/httemplate/elements/select-did.html +++ b/httemplate/elements/select-did.html @@ -16,8 +16,10 @@ Example:  %   if ( $export->option('restrict_selection') eq 'non-tollfree'  %		    || !$export->option('restrict_selection') ) {      <TABLE> -        <TR> + +%       if ( $export->get_dids_npa_select ) { +          <TD VALIGN="top">            <% include('/elements/select-state.html',                         'prefix'        => 'phonenum_', #$field.'_', @@ -29,40 +31,73 @@ Example:            %>            <BR><FONT SIZE="-1">State</FONT>          </TD> + +          <TD VALIGN="top"> +            <% include('/elements/select-areacode.html', +                         'state_prefix' => 'phonenum_', #$field.'_', +                         'svcpart'      => $svcpart, +                         'empty'        => 'Select area code', +                      ) +            %> +            <BR><FONT SIZE="-1">Area code</FONT> +          </TD> + +          <TD VALIGN="top"> +            <% include('/elements/select-exchange.html', +                         'svcpart' => $svcpart, +                         'empty'   => 'Select exchange', +                      ) +            %> +            <BR><FONT SIZE="-1">City / Exchange</FONT> +          </TD> + +%       } else { +          <TD VALIGN="top"> -          <% include('/elements/select-areacode.html', -                       'state_prefix' => 'phonenum_', #$field.'_', -                       'svcpart'      => $svcpart, -                       'empty'        => 'Select area code', -                    ) -          %> -          <BR><FONT SIZE="-1">Area code</FONT> -        </TD> -        <TD VALIGN="top"> -          <% include('/elements/select-exchange.html', -                       'svcpart' => $svcpart, -                       'empty'   => 'Select exchange', +          <% include('/elements/select.html', +                       'field'    => 'phonenum_state', +                       'id'       => 'phonenum_state', +                       'options'  => [ '', @{ $export->get_dids } ], +                       'labels'   => { '' => 'Select province' }, +                       'onchange' => 'phonenum_state_changed(this);',                      )            %> -          <BR><FONT SIZE="-1">City / Exchange</FONT> +          <BR><FONT SIZE="-1">Province</FONT>          </TD> + +          <TD VALIGN="top"> +            <% include('/elements/select-region.html', +                         'state_prefix'  => 'phonenum_', #$field.'_', +                         'svcpart'       => $svcpart, +                         'empty'         => 'Select region', +                      ) +            %> +            <BR><FONT SIZE="-1">Region</FONT> +          </TD> + +%       } +          <TD VALIGN="top">            <% include('/elements/select-phonenum.html',                         'svcpart'  => $svcpart,                         'empty'    => 'Select phone number',  		       'bulknum'  => $bulknum,                         'multiple' => $multiple, +                       'region'   => ! $export->get_dids_npa_select,                      )            %>            <BR><FONT SIZE="-1">Phone number</FONT>          </TD> -      </TR> +      </TR>      </TABLE>  % }  -%   if ( $export->option('restrict_selection') eq 'tollfree' -%		    || !$export->option('restrict_selection') ) { +%   if (     ( $export->option('restrict_selection') eq 'tollfree' +%                || !$export->option('restrict_selection') +%            ) +%        and $export->get_dids_can_tollfree +%      ) {  	    <font size="-1">Toll-free</font>  	    <% include('/elements/select-phonenum.html',                         'svcpart' => $svcpart, diff --git a/httemplate/elements/select-phonenum.html b/httemplate/elements/select-phonenum.html index d555bf4b6..18abe3dea 100644 --- a/httemplate/elements/select-phonenum.html +++ b/httemplate/elements/select-phonenum.html @@ -12,7 +12,7 @@      what.options[length] = optionName;    } -  function <% $opt{'prefix'} %>exchange_changed(what, callback) { +  function <% $opt{'prefix'} %><% $previous %>_changed(what, callback) {      what.form.<% $opt{'prefix'} %>phonenum.disabled = 'disabled';      what.form.<% $opt{'prefix'} %>phonenum.style.display = 'none'; @@ -21,7 +21,7 @@      var phonenumerror = document.getElementById('<% $opt{'prefix'} %>phonenumerror');      phonenumerror.style.display = 'none'; -    exchange = what.options[what.selectedIndex].value; +    var thing = "<% $previous eq 'region' ? '_REGION ' : '' %>" + what.options[what.selectedIndex].value;      function <% $opt{'prefix'} %>update_phonenums(phonenums) { @@ -84,7 +84,7 @@      }      // go get the new phonenums -    <% $opt{'prefix'} %>get_phonenums( exchange, <% $opt{'svcpart'} %>, <% $opt{'prefix'} %>update_phonenums ); +    <% $opt{'prefix'} %>get_phonenums( thing, <% $opt{'svcpart'} %>, <% $opt{'prefix'} %>update_phonenums );    } @@ -126,7 +126,7 @@  % unless ( $opt{'tollfree'} ) {  <DIV ID="phonenumwait" STYLE="display:none"><IMG SRC="<%$fsurl%>images/wait-orange.gif"> <B>Finding phone numbers</B></DIV> -<DIV ID="phonenumerror" STYLE="display:none"><IMG SRC="<%$fsurl%>images/cross.png"> <B>Select a different city/exchange</B></DIV> +<DIV ID="phonenumerror" STYLE="display:none"><IMG SRC="<%$fsurl%>images/cross.png"> <B>Select a different <% $opt{'region'} ? 'region' : 'city/exchange' %></B></DIV>  % }  <SELECT <% $opt{multiple} ? 'MULTIPLE SIZE=25' : '' %> @@ -146,4 +146,6 @@ my %opt = @_;  $opt{disabled} = 'disabled' unless exists $opt{disabled}; +my $previous = $opt{'region'} ? 'region' : 'exchange'; +  </%init> diff --git a/httemplate/elements/select-region.html b/httemplate/elements/select-region.html new file mode 100644 index 000000000..9823290db --- /dev/null +++ b/httemplate/elements/select-region.html @@ -0,0 +1,88 @@ +<% include('/elements/xmlhttp.html', +              'url'  => $p.'misc/regions.cgi', +              'subs' => [ $opt{'prefix'}. 'get_regions' ], +          ) +%> + +<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; +  } + +  function <% $opt{'state_prefix'} %>state_changed(what, callback) { + +    what.form.<% $opt{'prefix'} %>region.disabled = 'disabled'; +    what.form.<% $opt{'prefix'} %>region.style.display = 'none'; +    var regionwait = document.getElementById('<% $opt{'prefix'} %>regionwait'); +    regionwait.style.display = ''; +    var regionerror = document.getElementById('<% $opt{'prefix'} %>regionerror'); +    regionerror.style.display = 'none'; + +    what.form.<% $opt{'prefix'} %>phonenum.disabled = 'disabled'; + +    state = what.options[what.selectedIndex].value; + +    function <% $opt{'prefix'} %>update_regions(regions) { + +      // blank the current region +      for ( var i = what.form.<% $opt{'prefix'} %>region.length; i >= 0; i-- ) +          what.form.<% $opt{'prefix'} %>region.options[i] = null; +      // blank the current phonenum too +      for ( var i = what.form.<% $opt{'prefix'} %>phonenum.length; i >= 0; i-- ) +          what.form.<% $opt{'prefix'} %>phonenum.options[i] = null; +      if ( what.form.<% $opt{'prefix'} %>phonenum.type != 'select-multiple' ) { +        opt(what.form.<% $opt{'prefix'} %>phonenum, '', 'Select phone number'); +      } + +%     if ($opt{empty}) { +        opt(what.form.<% $opt{'prefix'} %>region, '', '<% $opt{empty} %>'); +%     } + +      // add the new regions +      var regionArray = eval('(' + regions + ')' ); +      for ( var s = 0; s < regionArray.length; s++ ) { +          var regionLabel = regionArray[s]; +          if ( regionLabel == "" ) +              regionLabel = '(n/a)'; +          opt(what.form.<% $opt{'prefix'} %>region, regionArray[s], regionLabel); +      } + +      regionwait.style.display = 'none'; +      if ( regionArray.length >= 1 ) { +        what.form.<% $opt{'prefix'} %>region.disabled = ''; +        what.form.<% $opt{'prefix'} %>region.style.display = ''; +      } else { +        var regionerror = document.getElementById('<% $opt{'prefix'} %>regionerror'); +        regionerror.style.display = ''; +      } + +      //run the callback +      if ( callback != null )  +        callback(); +    } + +    // go get the new regions +    <% $opt{'prefix'} %>get_regions( state, <% $opt{'svcpart'} %>, <% $opt{'prefix'} %>update_regions ); + +  } + +</SCRIPT> + +<DIV ID="<% $opt{'prefix'} %>regionwait" STYLE="display:none"><IMG SRC="<%$fsurl%>images/wait-orange.gif"> <B>Finding regions</B></DIV> + +<DIV ID="<% $opt{'prefix'} %>regionerror" STYLE="display:none"><IMG SRC="<%$fsurl%>images/cross.png"> <B>Select a different state</B></DIV> + +<SELECT NAME="<% $opt{'prefix'} %>region" onChange="<% $opt{'prefix'} %>region_changed(this); <% $opt{'onchange'} %>" <% $opt{'disabled'} %>> +  <OPTION VALUE="">Select region</OPTION> +</SELECT> + +<%init> + +my %opt = @_; + +$opt{disabled} = 'disabled' unless exists $opt{disabled}; + +</%init> diff --git a/httemplate/misc/phonenums.cgi b/httemplate/misc/phonenums.cgi index fd5de2ae6..5084628eb 100644 --- a/httemplate/misc/phonenums.cgi +++ b/httemplate/misc/phonenums.cgi @@ -21,13 +21,13 @@ if ( $exchangestring ) {    my %opts = ();    if ( $exchangestring eq 'tollfree' ) {        $opts{'tollfree'} = 1; -  } -  #elsif ( $exchangestring =~ /^([\w\s\:\,\(\)\-]+), ([A-Z][A-Z])$/ ) { -  elsif ( $exchangestring =~ /^(.+), ([A-Z][A-Z])$/ ) { +  } elsif ( $exchangestring =~ /^_REGION (.*)$/ ) { +      $opts{'region'} = $1; +  #} elsif ( $exchangestring =~ /^([\w\s\:\,\(\)\-]+), ([A-Z][A-Z])$/ ) { +  } elsif ( $exchangestring =~ /^(.+), ([A-Z][A-Z])$/ ) {        $opts{'ratecenter'} = $1;        $opts{'state'} = $2; -  } -  else { +  } else {        $exchangestring =~ /\((\d{3})-(\d{3})-XXXX\)\s*$/i          or die "unparsable exchange: $exchangestring";        my( $areacode, $exchange ) = ( $1, $2 ); diff --git a/httemplate/misc/regions.cgi b/httemplate/misc/regions.cgi new file mode 100644 index 000000000..2450ea31a --- /dev/null +++ b/httemplate/misc/regions.cgi @@ -0,0 +1,26 @@ +<% objToJson(\@regions) %> +<%init> + +my( $state, $svcpart ) = $cgi->param('arg'); + +my $part_svc = qsearchs('part_svc', { 'svcpart'=>$svcpart } ); +die "unknown svcpart $svcpart" unless $part_svc; + +my @regions = (); +if ( $state ) { + +  my @exports = $part_svc->part_export_did; +  if ( scalar(@exports) > 1 ) { +    die "more than one DID-providing export attached to svcpart $svcpart"; +  } elsif ( ! @exports ) { +    die "no DID providing export attached to svcpart $svcpart"; +  } +  my $export = $exports[0]; + +  my $something = $export->get_dids('state'=>$state); + +  @regions = @{ $something }; + +} + +</%init>  | 
