X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=httemplate%2Felements%2Fselect-phonenum.html;h=dd1b847361887b3631b5c499802bb758ee746994;hp=d555bf4b65f792a2ab06923fc6ce49a3e2f3320a;hb=9d5f61a78f7cddeb65f6943f3e58326f47cc0c0b;hpb=fb4ab1073f0d15d660c6cdc4e07afebf68ef3924 diff --git a/httemplate/elements/select-phonenum.html b/httemplate/elements/select-phonenum.html index d555bf4b6..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,19 +43,20 @@ 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; @@ -36,7 +68,7 @@ % } // 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 == "" ) @@ -54,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 @@ -84,7 +121,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 +163,7 @@ % unless ( $opt{'tollfree'} ) { - + % }