diff options
Diffstat (limited to 'src/usr/local/www/interfaces_groups_edit.php')
-rw-r--r-- | src/usr/local/www/interfaces_groups_edit.php | 263 |
1 files changed, 71 insertions, 192 deletions
diff --git a/src/usr/local/www/interfaces_groups_edit.php b/src/usr/local/www/interfaces_groups_edit.php index 22b8567..f9fc399 100644 --- a/src/usr/local/www/interfaces_groups_edit.php +++ b/src/usr/local/www/interfaces_groups_edit.php @@ -66,11 +66,10 @@ if (isset($id) && $a_ifgroups[$id]) { $pconfig['descr'] = html_entity_decode($a_ifgroups[$id]['descr']); } -$iflist = get_configured_interface_with_descr(); -$iflist_disabled = get_configured_interface_with_descr(false, true); +$interface_list = get_configured_interface_with_descr(); +$interface_list_disabled = get_configured_interface_with_descr(false, true); if ($_POST) { - unset($input_errors); $pconfig = $_POST; @@ -103,11 +102,14 @@ if ($_POST) { } } + $members = isset($_POST['members']) ? join(' ', $_POST['members']) : ""; + if (!$input_errors) { $ifgroupentry = array(); $ifgroupentry['members'] = $members; $ifgroupentry['descr'] = $_POST['descr']; + // Edit group name if (isset($id) && $a_ifgroups[$id] && $_POST['ifname'] != $a_ifgroups[$id]['ifname']) { if (!empty($config['filter']) && is_array($config['filter']['rule'])) { foreach ($config['filter']['rule'] as $ridx => $rule) { @@ -148,6 +150,8 @@ if ($_POST) { } $ifgroupentry['ifname'] = $_POST['ifname']; $a_ifgroups[$id] = $ifgroupentry; + + // Edit old group } else if (isset($id) && $a_ifgroups[$id]) { $omembers = explode(" ", $a_ifgroups[$id]['members']); $nmembers = explode(" ", $members); @@ -162,13 +166,14 @@ if ($_POST) { } $ifgroupentry['ifname'] = $_POST['ifname']; $a_ifgroups[$id] = $ifgroupentry; + + // Create new group } else { $ifgroupentry['ifname'] = $_POST['ifname']; $a_ifgroups[] = $ifgroupentry; } write_config(); - interface_group_setup($ifgroupentry); header("Location: interfaces_groups.php"); @@ -181,198 +186,72 @@ if ($_POST) { include("head.inc"); -?> - -<body link="#0000CC" vlink="#0000CC" alink="#0000CC" onload="<?= $jsevents["body"]["onload"] ?>"> -<?php include("fbegin.inc"); ?> - -<script type="text/javascript"> -//<![CDATA[ -// Global Variables -var rowname = new Array(9999); -var rowtype = new Array(9999); -var newrow = new Array(9999); -var rowsize = new Array(9999); - -for (i = 0; i < 9999; i++) { - rowname[i] = ''; - rowtype[i] = 'select'; - newrow[i] = ''; - rowsize[i] = '30'; -} - -var field_counter_js = 0; -var loaded = 0; -var is_streaming_progress_bar = 0; -var temp_streaming_text = ""; - -var addRowTo = (function() { - return (function (tableId) { - var d, tbody, tr, td, bgc, i, ii, j; - d = document; - tbody = d.getElementById(tableId).getElementsByTagName("tbody").item(0); - tr = d.createElement("tr"); - for (i = 0; i < field_counter_js; i++) { - td = d.createElement("td"); - <?php - $innerHTML="\"<input type='hidden' value='\" + totalrows +\"' name='\" + rowname[i] + \"_row-\" + totalrows + \"' /><select size='1' name='\" + rowname[i] + totalrows + \"'>\" +\""; - - foreach ($iflist as $ifnam => $ifdescr) { - $innerHTML .= "<option value='{$ifnam}'>{$ifdescr}<\/option>"; - } - $innerHTML .= "<\/select>\";"; - ?> - td.innerHTML=<?=$innerHTML;?> - tr.appendChild(td); - } - td = d.createElement("td"); - td.rowSpan = "1"; - - td.innerHTML = '<a onclick="removeRow(this);return false;" href="#"><img border="0" src="/themes/' + theme + '/images/icons/icon_x.gif" alt="remove" /><\/a>'; - tr.appendChild(td); - tbody.appendChild(tr); - totalrows++; - }); -})(); - -function removeRow(el) { - var cel; - while (el && el.nodeName.toLowerCase() != "tr") { - el = el.parentNode; - } - - if (el && el.parentNode) { - cel = el.getElementsByTagName("td").item(0); - el.parentNode.removeChild(el); - } +if ($input_errors) { + print_input_errors($input_errors); } - rowname[0] = "members"; - rowtype[0] = "textbox"; - rowsize[0] = "30"; - - rowname[2] = "detail"; - rowtype[2] = "textbox"; - rowsize[2] = "50"; -//]]> -</script> -<input type='hidden' name='members_type' value='textbox' class="formfld unknown" /> - -<?php if ($input_errors) print_input_errors($input_errors); ?> -<div id="inputerrors"></div> - -<form action="interfaces_groups_edit.php" method="post" name="iform" id="iform"> -<table width="100%" border="0" cellpadding="6" cellspacing="0" summary="interfaces groups edit"> - <tr> - <td colspan="2" valign="top" class="listtopic"><?=gettext("Interface Groups Edit");?></td> - </tr> - <tr> - <td valign="top" class="vncellreq"><?=gettext("Group Name");?></td> - <td class="vtable"> - <input class="formfld unknown" name="ifname" id="ifname" maxlength="15" value="<?=htmlspecialchars($pconfig['ifname']);?>" /> - <br /> - <?=gettext("No numbers or spaces are allowed. Only characters in a-zA-Z");?> - </td> - </tr> - <tr> - <td width="22%" valign="top" class="vncell"><?=gettext("Description");?></td> - <td width="78%" class="vtable"> - <input name="descr" type="text" class="formfld unknown" id="descr" size="40" value="<?=htmlspecialchars($pconfig['descr']);?>" /> - <br /> - <span class="vexpl"> - <?=gettext("You may enter a description here for your reference (not parsed).");?> - </span> - </td> - </tr> - <tr> - <td width="22%" valign="top" class="vncellreq"><div id="membersnetworkport"><?=gettext("Member (s)");?></div></td> - <td width="78%" class="vtable"> - <table id="maintable" summary="main table"> - <tbody> - <tr> - <td> - <div id="onecolumn"><?=gettext("Interface");?></div> - </td> - </tr> -<?php - $counter = 0; - $members = $pconfig['members']; - if ($members <> "") { - $item = explode(" ", $members); - foreach ($item as $ww) { - $members = $item[$counter]; - $tracker = $counter; ?> - <tr> - <td class="vtable"> - <select name="members<?php echo $tracker; ?>" class="formselect" id="members<?php echo $tracker; ?>"> +<div id="inputerrors"></div> <?php - $found = false; - foreach ($iflist as $ifnam => $ifdescr) { - echo "<option value=\"{$ifnam}\""; - if ($ifnam == $members) { - $found = true; - echo " selected=\"selected\""; - } - echo ">{$ifdescr}</option>"; - } +$tab_array = array(); +$tab_array[0] = array(gettext("Interface assignments"), false, "interfaces_assign.php"); +$tab_array[1] = array(gettext("Interface Groups"), true, "interfaces_groups.php"); +$tab_array[2] = array(gettext("Wireless"), false, "interfaces_wireless.php"); +$tab_array[3] = array(gettext("VLANs"), false, "interfaces_vlan.php"); +$tab_array[4] = array(gettext("QinQs"), false, "interfaces_qinq.php"); +$tab_array[5] = array(gettext("PPPs"), false, "interfaces_ppps.php"); +$tab_array[7] = array(gettext("GRE"), false, "interfaces_gre.php"); +$tab_array[8] = array(gettext("GIF"), false, "interfaces_gif.php"); +$tab_array[9] = array(gettext("Bridges"), false, "interfaces_bridge.php"); +$tab_array[10] = array(gettext("LAGG"), false, "interfaces_lagg.php"); +display_top_tabs($tab_array); + +require_once('classes/Form.class.php'); +$form = new Form; +$section = new Form_Section('Interface Group Edit'); + +$section->addInput(new Form_Input( + 'ifname', + 'Group Name', + 'text', + $pconfig['ifname'], + ['placeholder' => 'Group Name'] +))->setWidth(6)->setHelp('No numbers or spaces are allowed. '. + 'Only characters in a-zA-Z'); + +$section->addInput(new Form_Input( + 'descr', + 'Group Description', + 'text', + $pconfig['descr'], + ['placeholder' => 'Group Description'] +))->setWidth(6)->setHelp('You may enter a group decsription '. + 'here for your reference (not parsed)'); + +$section->addInput(new Form_Select( + 'members[]', + 'Group Members', + explode(' ', $pconfig['members']), + $interface_list, + true +))->setWidth(6)->setHelp('NOTE: Rules for WAN type '. + 'interfaces in groups do not contain the reply-to mechanism upon which '. + 'Multi-WAN typically relies. '. + '<a href="https://doc.pfsense.org/index.php/ifgroups">More Information</a>'); - if ($found === false) { - foreach ($iflist_disabled as $ifnam => $ifdescr) { - if ($ifnam == $members) { - echo "<option value=\"{$ifnam}\" selected=\"selected\">{$ifdescr}</option>"; - } - } - } -?> - </select> - </td> - <td> - <a onclick="removeRow(this); return false;" href="#"><img border="0" src="/themes/<?echo $g['theme'];?>/images/icons/icon_x.gif" alt="remove" /></a> - </td> - </tr> -<?php - $counter++; - } // end foreach - } // end if -?> - </tbody> - </table> - <a onclick="javascript:addRowTo('maintable'); return false;" href="#"> - <img border="0" src="/themes/<?= $g['theme']; ?>/images/icons/icon_plus.gif" alt="" title="<?=gettext("add another entry");?>" /> - </a> - <br /><br /> - <strong><?php echo gettext("NOTE:");?></strong> - <?php echo gettext("Rules for WAN type interfaces in groups do not contain the reply-to mechanism upon which Multi-WAN typically relies.");?> - <a href="https://doc.pfsense.org/index.php/Interface_Groups"><?PHP echo gettext("More Information");?></a> - </td> - </tr> - <tr> - <td width="22%" valign="top"> </td> - <td width="78%"> - <input id="submit" name="submit" type="submit" class="formbtn" value="<?=gettext("Save");?>" /> - <a href="interfaces_groups.php"><input id="cancelbutton" name="cancelbutton" type="button" class="formbtn" value="<?=gettext("Cancel");?>" /></a> - <?php if (isset($id) && $a_ifgroups[$id]): ?> - <input name="id" type="hidden" value="<?=htmlspecialchars($id);?>" /> - <?php endif; ?> - </td> - </tr> -</table> -</form> - -<script type="text/javascript"> -//<![CDATA[ - field_counter_js = 1; - rows = 1; - totalrows = <?php echo $counter; ?>; - loaded = <?php echo $counter; ?>; -//]]> -</script> +if (isset($id) && $a_ifgroups[$id]) { + $form->addGlobal(new Form_Input( + 'id', + 'id', + 'hidden', + $id + )); +} -<?php - unset($iflist); - unset($iflist_disabled); - include("fend.inc"); +$form->add($section); +print $form; + +unset($interface_list); +unset($interface_list_disabled); +include("fend.inc"); ?> -</body> -</html> |