X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=httemplate%2Felements%2Fselect-phonenum.html;h=dd1b847361887b3631b5c499802bb758ee746994;hp=986329043fe9af41b79d994dd055179b8ad1e0e1;hb=a983ba996fbd3d432443eff8afc4b09bb48ec443;hpb=fda372ea3d82601724eb4fd064ba95fbfdd68bdb diff --git a/httemplate/elements/select-phonenum.html b/httemplate/elements/select-phonenum.html index 986329043..dd1b84736 100644 --- a/httemplate/elements/select-phonenum.html +++ b/httemplate/elements/select-phonenum.html @@ -1,3 +1,34 @@ +<%doc> +Selector for DID phone number. + +Options: + +- prefix: prefix for all the object IDs, field names, javascript functions, +etc. for including multiple DID selectors on a single page. + +- empty: text to display when no number is selected ("empty_label") + +- bulknum: allow bulk selection of up to this many numbers (self-service +only? wtf?) + +- svcpart: svcpart (required) + +- tollfree: pass "tollfree" to misc/phonenums.cgi, instead of passing an +exchange/region/anything else. + +- region: corresponds to the inverse of "get_dids_npa_select". The selector +creates an on-change handler telling the previous selector in the hierarchy +to update the list of phone numbers. If 'region' is true, it will look for +a previous selector named "region", and prefix the query it sends to +phonenums.cgi with '_REGION', which results in get_dids() being called +with a 'region' parameter instead of 'ratecenter' and 'state'. + + +Internally, this will set up an exchange_changed or region_changed function +to refresh the phone number list. The function will fetch misc/phonenums.cgi, +passing the exchange (or region) and + + <% include('/elements/xmlhttp.html', 'url' => $p.'misc/phonenums.cgi', 'subs' => [ $opt{'prefix'}. 'get_phonenums' ], @@ -12,29 +43,32 @@ 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'; var phonenumwait = document.getElementById('<% $opt{'prefix'} %>phonenumwait'); - phonenumwait.style.display = ''; + phonenumwait.style.display = 'inline'; 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) { + var reply = JSON.parse(phonenums); // blank the current phonenum for ( var i = what.form.<% $opt{'prefix'} %>phonenum.length; i >= 0; i-- ) what.form.<% $opt{'prefix'} %>phonenum.options[i] = null; % if ($opt{empty}) { - opt(what.form.<% $opt{'prefix'} %>phonenum, '', '<% $opt{empty} %>'); + if ( what.form.<% $opt{'prefix'} %>phonenum.type != 'select-multiple' ){ + opt(what.form.<% $opt{'prefix'} %>phonenum, '', '<% $opt{empty} %>'); + } % } // add the new phonenums - var phonenumArray = eval('(' + phonenums + ')' ); + var phonenumArray = reply.phonenums; for ( var s = 0; s < phonenumArray.length; s++ ) { var phonenumLabel = phonenumArray[s]; if ( phonenumLabel == "" ) @@ -52,7 +86,12 @@ what.form.<% $opt{'prefix'} %>phonenum.style.display = ''; } else { var phonenumerror = document.getElementById('<% $opt{'prefix'} %>phonenumerror'); - phonenumerror.style.display = ''; + phonenumerror.style.display = 'inline'; + if ( reply.error ) { + phonenumerror.textContent = reply.error; + } else { + phonenumerror.textContent = 'Select a different <% $opt{'region'} ? 'region' : 'city/exchange' %>'; + } } //run the callback @@ -82,18 +121,60 @@ } // 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 ); } +% if ( $opt{'tollfree'} ) { + function <% $opt{'prefix'} %>update_phonenums(phonenums) { + // lame hack so I can copy the code from above + what = document.getElementById('<% $opt{prefix} %>phonenum'); + + // blank the current phonenum + for ( var i = what.form.<% $opt{'prefix'} %>phonenum.length; i >= 0; i-- ) + what.form.<% $opt{'prefix'} %>phonenum.options[i] = null; + +% if ($opt{empty}) { + opt(what.form.<% $opt{'prefix'} %>phonenum, '', '<% $opt{empty} %>'); +% } + + // add the new phonenums + var phonenumArray = eval('(' + phonenums + ')' ); + for ( var s = 0; s < phonenumArray.length; s++ ) { + var phonenumLabel = phonenumArray[s]; + if ( phonenumLabel == "" ) + phonenumLabel = '(n/a)'; + opt(what.form.<% $opt{'prefix'} %>phonenum, phonenumArray[s], phonenumLabel); + } + + what.form.<% $opt{'prefix'} %>phonenum.disabled = ''; + + if ( phonenumArray.length >= 1 ) { + what.form.<% $opt{'prefix'} %>phonenum.disabled = ''; + what.form.<% $opt{'prefix'} %>phonenum.style.display = ''; + } + + } + <% $opt{'prefix'} %>get_phonenums( 'tollfree', <% $opt{'svcpart'} %>, <% $opt{'prefix'} %>update_phonenums ); +% } + +% unless ( $opt{'tollfree'} ) { - - - + ID = "<% $opt{'prefix'} %>phonenum" + NAME = "<% $opt{'prefix'} %>phonenum" + <% $opt{'disabled'} %> +%# notonChange="<% $opt{'prefix'} %>phonenum_changed(this); <% $opt{'onchange'} %>" +> +% unless ( $opt{multiple} ) { + +% } <%init> @@ -102,4 +183,6 @@ my %opt = @_; $opt{disabled} = 'disabled' unless exists $opt{disabled}; +my $previous = $opt{'region'} ? 'region' : 'exchange'; +