summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorStephen Beaver <sbeaver@netgate.com>2015-11-30 11:51:23 -0500
committerStephen Beaver <sbeaver@netgate.com>2015-11-30 11:52:04 -0500
commit424213ea26ea300eee05254884a383b36ffe69c5 (patch)
tree08988ca23c9ef976ceb940ddebef0aacb1a1b79f /src
parent2920eb5d983b955dc1933b61d7cd3d16458eba8a (diff)
downloadpfsense-424213ea26ea300eee05254884a383b36ffe69c5.zip
pfsense-424213ea26ea300eee05254884a383b36ffe69c5.tar.gz
Fixed #5542
by converting GET logic with jQuery to update hte selectors dynamically.
Diffstat (limited to 'src')
-rw-r--r--src/usr/local/www/interfaces_ppps_edit.php187
1 files changed, 99 insertions, 88 deletions
diff --git a/src/usr/local/www/interfaces_ppps_edit.php b/src/usr/local/www/interfaces_ppps_edit.php
index d18e338..54cbba6 100644
--- a/src/usr/local/www/interfaces_ppps_edit.php
+++ b/src/usr/local/www/interfaces_ppps_edit.php
@@ -95,12 +95,6 @@ if (is_array($config['vlans']['vlan']) && count($config['vlans']['vlan'])) {
if($_GET && $_GET['type'])
$pconfig['type'] = $_GET['type'];
-if($_GET && $_GET['country'])
- $pconfig['country'] = $_GET['country'];
-
-if($_GET && $_GET['provider'])
- $pconfig['provider'] = $_GET['provider'];
-
if (is_numericint($_GET['id']))
$id = $_GET['id'];
@@ -214,7 +208,6 @@ if (isset($id) && $a_ppps[$id]) {
}
if ($_POST) {
-
unset($input_errors);
$pconfig = $_POST;
@@ -319,19 +312,6 @@ if ($_POST) {
}
}
-/*
- foreach ($a_ppps as $ppp) {
- if (isset($id) && ($a_ppps[$id]) && ($a_ppps[$id] === $ppp)) {
- continue;
- }
-
- if ($ppp['serialport'] == $_POST['serialport']) {
- $input_errors[] = "Serial port is in use";
- break;
- }
- }
-*/
-
if (!$input_errors) {
$ppp = array();
$ppp['ptpid'] = $_POST['ptpid'];
@@ -473,6 +453,8 @@ $serviceproviders_attr = xml2array($serviceproviders_contents,1,"attr");
$serviceproviders = &$serviceproviders_attr['serviceproviders']['country'];
+//print_r($serviceproviders);
+
function build_country_list() {
global $serviceproviders;
@@ -488,61 +470,6 @@ function build_country_list() {
return($list);
}
-function build_provider_list($country) {
- global $serviceproviders;
-
- $list = array();
-
- foreach($serviceproviders as $sp) {
- if($sp['attr']['code'] == strtolower($country)) {
- if(is_array($sp['provider'][0])) {
- foreach($sp['provider'] as $provider) {
- array_push($list, $provider['name']['value']);
- }
- }
- }
- }
-
- return array_combine($list, $list);
-}
-
-function build_plans_list($country, $provider) {
- global $serviceproviders;
-
- $list = array();
-
- foreach($serviceproviders as $sprecord) {
- if($sprecord['attr']['code'] == strtolower($country)) {
- foreach($sprecord['provider'] as $sp) {
- if(strtolower($sp['name']['value']) == strtolower($provider)) {
- if(array_key_exists('gsm', $sp)) {
-
- if(array_key_exists('attr',$sp['gsm']['apn'])) {
- $name = ($sp['gsm']['apn']['name'] ? $sp['gsm']['apn']['name'] : $sp['name']['value']);
- echo $name . ":" . $sp['gsm']['apn']['attr']['value'];
- } else {
- foreach($sp['gsm']['apn'] as $apn_info) {
- $name = ($apn_info['name']['value'] ? $apn_info['name']['value'] : $apn_info['gsm']['apn']['name']);
-
- $key = $apn_info['attr']['value'];
- $list[$key] = $name . ($key ? ' ':'') . '- ' . $key;
- }
- }
- }
-
- if(array_key_exists('cdma',$sp)) {
- $name = $sp['cdma']['name']['value'] ? $sp['cdma']['name']['value']:$sp['name']['value'];
- $key = 'CDMA';
- $list[$key] = $name . ' - ' . $key;
- }
- }
- }
- }
- }
-
- return($list);
-}
-
$port_count = 0;
$serport_count = 0;
@@ -648,14 +575,14 @@ $section->addInput(new Form_Select(
'provider',
'Provider',
$pconfig['provider'],
- build_provider_list($pconfig['country'])
+ []
));
$section->addInput(new Form_Select(
'providerplan',
'Plan',
$pconfig['providerplan'],
- build_plans_list($pconfig['country'], $pconfig['provider'])
+ []
))->setHelp('Select to fill in data for your service provider.');
$section->addInput(new Form_Input(
@@ -688,7 +615,7 @@ if($pconfig['type'] == 'pptp' || $pconfig['type'] == 'l2tp') {
$group->add(new Form_Input(
'gateway' . $j,
null,
- 'password',
+ 'text',
$pconfig['gateway'][$j]
))->setHelp('IP or Hostname');
@@ -951,21 +878,21 @@ foreach($linklist['list'] as $ifnm =>$nm) {
$group->add(new Form_Input(
'mtu' . $j,
null,
- 'password',
+ 'text',
$pconfig['mtu'][$j]
))->setHelp('MTU');
$group->add(new Form_Input(
'mru' . $j,
null,
- 'password',
+ 'text',
$pconfig['mru'][$j]
))->setHelp('MRU');
$group->add(new Form_Input(
'mrru' . $j,
null,
- 'password',
+ 'text',
$pconfig['mrru'][$j]
))->setHelp('MRRU');
@@ -1066,8 +993,8 @@ events.push(function(){
hideClass('linkparam', true);
hideInput('linkparamhelp', true);
- var selected = $('.interfaces').val();
- var length = selected.length;
+ var selected = $('#interfaces').val();
+ var length = $("#interfaces :selected").length;
for(var i=0; i<length; i++) {
hideClass('localip' + selected[i], false);
@@ -1075,10 +1002,81 @@ events.push(function(){
if(!showadvanced) {
hideClass('linkparam' + selected[i], false);
hideInput('linkparamhelp', false);
- }
+ }
}
}
+ function hideProviders(hide) {
+ hideInput('country', hide);
+ hideInput('provider', hide);
+ hideInput('providerplan', hide);
+ }
+
+ function providers_list() {
+ $('#provider option').remove();
+ $('#providerplan option').remove();
+ $('#provider').append(new Option('', ''));
+ $.ajax("getserviceproviders.php",{
+ type: 'POST',
+ data: {country : $('#country').val()},
+ success: function(responseText) {
+ var responseTextArr = responseText.split("\n");
+ var value, i;
+ responseTextArr.sort();
+ for (i = 0; i < responseTextArr.length; i += 1) {
+ value = responseTextArr[i];
+ if (/\S/.test(value)) {
+ $('#provider').append(new Option(value, value));
+ }
+ }
+ }
+ });
+ }
+
+ function providerplan_list() {
+ $('#providerplan option').remove();
+ $('#providerplan').append( new Option('','') );
+ $.ajax("getserviceproviders.php",{
+ type: 'POST',
+ data: {country : $('#country').val(), provider : $('#provider').val()},
+ success: function(responseText) {
+ var responseTextArr = responseText.split("\n");
+ var value, providerplan, i;
+ responseTextArr.sort();
+ for (i = 0; i < responseTextArr.length; i += 1) {
+ value = responseTextArr[i];
+ if (/\S/.test(value)) {
+ providerplan = value.split(":");
+ $('#providerplan').append(new Option(providerplan[0] + " - " + providerplan[1],
+ providerplan[1]));
+ }
+ }
+ }
+ });
+ }
+
+ function prefill_provider() {
+ $.ajax("getserviceproviders.php",{
+ type: "POST",
+ data: {country : $('#country').val(), provider : $('#provider').val(), plan : $('#providerplan').val()},
+ success: function(responseXML) {
+ var xmldoc = responseXML;
+ var provider = xmldoc.getElementsByTagName('connection')[0];
+ $('#username').val('');
+ $('#password').val('');
+ if(provider.getElementsByTagName('apn')[0].firstChild.data == "CDMA") {
+ $('#phone').val('#777');
+ $('#apn').val('');
+ } else {
+ $('#phone').val('*99#');
+ $('#apn').val(provider.getElementsByTagName('apn')[0].firstChild.data);
+ }
+ $('#username').val(provider.getElementsByTagName('username')[0].firstChild.data);
+ $('#password').val(provider.getElementsByTagName('password')[0].firstChild.data);
+ }
+ });
+ }
+
// Make the ‘btnadvanced’ button a plain button, not a submit button
$("#btnadvanced").prop('type','button');
@@ -1094,25 +1092,38 @@ events.push(function(){
// Multiselect boxes must be handled by class
$('.interfaces').on('change', function() {
hideInterfaces();
- });
+ });
- // When type, country or provider are changed, reload the page and build the new selector arrays
+ // When type, country, provider or plan are changed, reload the page and build the new selector arrays
$('#type').on('change', function() {
window.location = 'interfaces_ppps_edit.php?id=' + $('#id').val() + '&type=' + this.value;
});
$('#country').on('change', function() {
- window.location = 'interfaces_ppps_edit.php?id=' + $('#id').val() + '&country=' + this.value + '&type=' + $('#type').val();
+ providers_list();
+ hideInput('provider', false);
});
$('#provider').on('change', function() {
- window.location = 'interfaces_ppps_edit.php?id=' + $('#id').val() + '&provider=' + this.value + '&type=' + $('#type').val() + '&country=' + $('#country').val();
+ providerplan_list();
+ hideInput('providerplan', false);
+ });
+
+ $('#providerplan').on('change', function() {
+ prefill_provider();
});
// Set element visibility on initial page load
setAdvVisible();
hideClass('linkparam', true);
+
+ hideProviders($('#type').val() != "ppp");
+ if ($('provider').size() == 0)
+ hideInput('provider', true);
+
+ if ($('providerplan').size() == 0)
+ hideInput('providerplan', true);
});
//]]>
OpenPOWER on IntegriCloud