RT# 75817 - updated UI to be more intuitive
[freeside.git] / httemplate / misc / phonenums.cgi
index 784a190..aae04f5 100644 (file)
@@ -1,4 +1,4 @@
-<% objToJson(\@phonenums) %>
+<% encode_json({ error => $error, phonenums => \@phonenums}) %>\
 <%init>
 
 my( $exchangestring, $svcpart ) = $cgi->param('arg');
@@ -7,6 +7,7 @@ my $part_svc = qsearchs('part_svc', { 'svcpart'=>$svcpart } );
 die "unknown svcpart $svcpart" unless $part_svc;
 
 my @phonenums = ();
+my $error;
 
 if ( $exchangestring ) {
 
@@ -21,21 +22,26 @@ if ( $exchangestring ) {
   my %opts = ();
   if ( $exchangestring eq 'tollfree' ) {
       $opts{'tollfree'} = 1;
-  }
-  elsif ( $exchangestring =~ /^([\w\s]+), ([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";
+        or die "unparseable exchange: $exchangestring";
       my( $areacode, $exchange ) = ( $1, $2 );
       $opts{'areacode'} = $areacode;
       $opts{'exchange'} = $exchange;
   }
 
-  my $something = $export->get_dids(%opts);
-  @phonenums = @{ $something };
+  local $@;
+  local $SIG{__DIE__};
+  my $something = eval { $export->get_dids(%opts) };
+  $error = $@;
+
+  @phonenums = @{ $something } if $something;
 
 }