mirror of
https://github.com/pfsense/pfsense.git
synced 2025-10-26 11:38:35 +00:00
Partially converted
Requires revised save logic using an array rather than multiple POST fields Also like to look at possibility of changing allowDuplication() method to add buttons horizontally.
This commit is contained in:
parent
eda83714a5
commit
4b94f9ec0b
26
clean.sh
26
clean.sh
@ -1,15 +1,15 @@
|
||||
#!/bin/sh
|
||||
|
||||
sed -i -e 's/> </></g' $1 ;
|
||||
sed -i -e 's/ / /g' $1 ;
|
||||
sed -i -e 's/\s+$//g' $1 ;
|
||||
sed -i -e 's/ width="17" height="17" border="0"//g' $1 ;
|
||||
sed -i -e 's/<td [^>]+listhdrr[^>]+>/<th>/g' $1 ;
|
||||
sed -i -e 's/<body[^>]*>//g' $1 ;
|
||||
sed -i -e 's/<\(table\|td\|span\|div\)[^>]\+>/<\1>/g' $1 ;
|
||||
sed -i -e 's/<?php include("fbegin.inc"); ?>//g' $1 ;
|
||||
sed -i -e 's/<?php include("fend.inc"); ?>/<?php include("foot.inc"); ?>/g' $1 ;
|
||||
sed -i -e 's/<?php echo /<?=/g' $1 ;
|
||||
sed -i -e 's/;\s*?>/?>/g' $1 ;
|
||||
sed -i -e 's/<?\s*=\s*/<?=/g' $1 ;
|
||||
sed -i -e 's/ <> / != /g' $1 ;
|
||||
sed -i '' 's/> </></g' $1 ;
|
||||
sed -i '' 's/ / /g' $1 ;
|
||||
sed -i '' 's/\s+$//g' $1 ;
|
||||
sed -i '' 's/ width="17" height="17" border="0"//g' $1 ;
|
||||
sed -i '' 's/<td [^>]+listhdrr[^>]+>/<th>/g' $1 ;
|
||||
sed -i '' 's/<body[^>]*>//g' $1 ;
|
||||
sed -i '' 's/<\(table\|td\|span\|div\)[^>]\+>/<\1>/g' $1 ;
|
||||
sed -i '' 's/<?php include("fbegin.inc"); ?>//g' $1 ;
|
||||
sed -i '' 's/<?php include("fend.inc"); ?>/<?php include("foot.inc"); ?>/g' $1 ;
|
||||
sed -i '' 's/<?php echo /<?=/g' $1 ;
|
||||
sed -i '' 's/;\s*?>/?>/g' $1 ;
|
||||
sed -i '' 's/<?\s*=\s*/<?=/g' $1 ;
|
||||
sed -i '' 's/ <> / != /g' $1 ;
|
||||
|
||||
@ -44,6 +44,8 @@ $shortcut_section = "interfaces";
|
||||
|
||||
require("guiconfig.inc");
|
||||
|
||||
print('POST: '); print_r($_POST); print('<br />');
|
||||
|
||||
if (!is_array($config['qinqs']['qinqentry']))
|
||||
$config['qinqs']['qinqentry'] = array();
|
||||
|
||||
@ -53,8 +55,8 @@ $portlist = get_interface_list();
|
||||
|
||||
/* add LAGG interfaces */
|
||||
if (is_array($config['laggs']['lagg']) && count($config['laggs']['lagg'])) {
|
||||
foreach ($config['laggs']['lagg'] as $lagg)
|
||||
$portlist[$lagg['laggif']] = $lagg;
|
||||
foreach ($config['laggs']['lagg'] as $lagg)
|
||||
$portlist[$lagg['laggif']] = $lagg;
|
||||
}
|
||||
|
||||
if (count($portlist) < 1) {
|
||||
@ -64,6 +66,7 @@ if (count($portlist) < 1) {
|
||||
|
||||
if (is_numericint($_GET['id']))
|
||||
$id = $_GET['id'];
|
||||
|
||||
if (isset($_POST['id']) && is_numericint($_POST['id']))
|
||||
$id = $_POST['id'];
|
||||
|
||||
@ -81,7 +84,6 @@ if (isset($id) && $a_qinqs[$id]) {
|
||||
}
|
||||
|
||||
if ($_POST) {
|
||||
|
||||
unset($input_errors);
|
||||
$pconfig = $_POST;
|
||||
|
||||
@ -120,7 +122,7 @@ if ($_POST) {
|
||||
$isfirst = 0;
|
||||
/* item is a normal qinqentry type */
|
||||
for($x=0; $x<9999; $x++) {
|
||||
if($_POST["members{$x}"] <> "") {
|
||||
if($_POST["members{$x}"] != "") {
|
||||
$member = explode("-", $_POST["members{$x}"]);
|
||||
if (count($member) > 1) {
|
||||
if (preg_match("/([^0-9])+/", $member[0], $match) ||
|
||||
@ -214,207 +216,107 @@ if ($_POST) {
|
||||
}
|
||||
}
|
||||
|
||||
function build_parent_list() {
|
||||
global $portlist;
|
||||
|
||||
$list = array();
|
||||
|
||||
foreach ($portlist as $ifn => $ifinfo) {
|
||||
if (is_jumbo_capable($ifn))
|
||||
$list[$ifn] = $ifn . ' (' . $ifinfo['mac'] . ')';
|
||||
}
|
||||
|
||||
return($list);
|
||||
}
|
||||
|
||||
include("head.inc");
|
||||
|
||||
?>
|
||||
|
||||
<body link="#0000CC" vlink="#0000CC" alink="#0000CC" onload="<?= $jsevents["body"]["onload"] ?>">
|
||||
<?php include("fbegin.inc"); ?>
|
||||
require('classes/Form.class.php');
|
||||
|
||||
<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);
|
||||
$form = new Form(new Form_Button(
|
||||
'Submit',
|
||||
gettext("Save")
|
||||
));
|
||||
|
||||
for (i = 0; i < 9999; i++) {
|
||||
rowname[i] = 'members';
|
||||
rowtype[i] = 'select';
|
||||
newrow[i] = '';
|
||||
rowsize[i] = '30';
|
||||
$section = new Form_Section('Interface QinQ Edit');
|
||||
|
||||
$section->addInput(new Form_Select(
|
||||
'filterdescriptions',
|
||||
'Parent interface',
|
||||
$pconfig['if'],
|
||||
build_parent_list()
|
||||
))->setHelp('Only QinQ capable interfaces will be shown.');
|
||||
|
||||
$section->addInput(new Form_Input(
|
||||
'tag',
|
||||
'First level tag',
|
||||
'number',
|
||||
$pconfig['tag'],
|
||||
['max' => '4094', 'min' => '1']
|
||||
))->setHelp('This is the first level VLAN tag. On top of this are stacked the member VLANs defined below.');
|
||||
|
||||
$section->addInput(new Form_Checkbox(
|
||||
'autogroup',
|
||||
'Option(s)',
|
||||
'Adds interface to QinQ interface groups',
|
||||
$pconfig['autogroup']
|
||||
))->setHelp('Allows rules to be written more easily');
|
||||
|
||||
$section->addInput(new Form_Input(
|
||||
'descr',
|
||||
'Description',
|
||||
'text',
|
||||
$pconfig['descr']
|
||||
))->setHelp('You may enter a description here for your reference (not parsed).');
|
||||
|
||||
$section->addInput(new Form_StaticText(
|
||||
'Member(s)',
|
||||
'You can specify ranges in the inputs below. Enter a range (2-3) or individual numbers.' . '<br />' .
|
||||
'Click "Duplicate" as many times as needed to add new inputs'
|
||||
));
|
||||
|
||||
$counter = 0;
|
||||
$members = $pconfig['members'];
|
||||
|
||||
// DEBUG
|
||||
//$members = "666 55555";
|
||||
//$members = "";
|
||||
|
||||
if ($members != "")
|
||||
$item = explode(" ", $members);
|
||||
else
|
||||
$item = array('');
|
||||
|
||||
foreach($item as $ww) {
|
||||
$member = $item[$counter];
|
||||
|
||||
$group = new Form_Group($counter == 0 ? 'Tag(s)':'');
|
||||
|
||||
$group->add(new Form_Input(
|
||||
'members',
|
||||
null,
|
||||
'text',
|
||||
$ww
|
||||
));
|
||||
|
||||
$counter++;
|
||||
|
||||
$group->enableDuplication();
|
||||
$section->add($group);
|
||||
}
|
||||
|
||||
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");
|
||||
td.innerHTML="<input type='hidden' value='" + totalrows +"' name='" + rowname[i] + "_row-" + totalrows + "' /><input size='" + rowsize[i] + "' class='formfld unknown' name='" + rowname[i] + totalrows + "' /> ";
|
||||
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 (isset($id) && $a_qinqs[$id]) {
|
||||
$section->addInput(new Form_Input(
|
||||
'id',
|
||||
null,
|
||||
'hidden',
|
||||
$id
|
||||
));
|
||||
}
|
||||
|
||||
$form->add($section);
|
||||
|
||||
rowname[0] = <?=gettext("members");?>;
|
||||
rowtype[0] = "textbox";
|
||||
rowsize[0] = "30";
|
||||
print($form);
|
||||
|
||||
rowname[2] = <?=gettext("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_qinq_edit.php" method="post" name="iform" id="iform">
|
||||
<table width="100%" border="0" cellpadding="6" cellspacing="0" summary="interfaces qinq edit">
|
||||
<tr>
|
||||
<td colspan="2" valign="top" class="listtopic"><?=gettext("Interface QinQ Edit");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="22%" valign="top" class="vncellreq"><?=gettext("Parent interface");?></td>
|
||||
<td width="78%" class="vtable">
|
||||
<select name="if" id="if" class="formselect">
|
||||
<?php
|
||||
foreach ($portlist as $ifn => $ifinfo) {
|
||||
if (is_jumbo_capable($ifn)) {
|
||||
echo "<option value=\"{$ifn}\"";
|
||||
if ($ifn == $pconfig['if'])
|
||||
echo " selected=\"selected\"";
|
||||
echo ">";
|
||||
echo htmlspecialchars($ifn . " (" . $ifinfo['mac'] . ")");
|
||||
echo "</option>";
|
||||
}
|
||||
}
|
||||
?>
|
||||
</select>
|
||||
<br />
|
||||
<span class="vexpl"><?=gettext("Only QinQ capable interfaces will be shown.");?></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="22%" valign="top" class="vncellreq"><?=gettext("First level tag");?></td>
|
||||
<td width="78%" class="vtable">
|
||||
<input name="tag" type="text" class="formfld unknown" id="tag" size="10" value="<?=htmlspecialchars($pconfig['tag']);?>" />
|
||||
<br />
|
||||
<span class="vexpl">
|
||||
<?=gettext("This is the first level VLAN tag. On top of this are stacked the member VLANs defined below.");?>
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="22%" valign="top" class="vncell"><?=gettext("Options");?></td>
|
||||
<td width="78%" class="vtable">
|
||||
<?php /* ?>
|
||||
<br />
|
||||
<input type="checkbox" value="yes" name="autoassign" id="autoassign" <?php if ($pconfig['autoassign']) echo "checked=\"checked\""; ?> />
|
||||
<span class="vexpl"> Auto assign interface so it can be configured with ip etc...</span>
|
||||
<br />
|
||||
<input type="checkbox" value="yes" name="autoenable" id="autoenable" <?php if ($pconfig['autoenable']) echo "checked=\"checked\""; ?> />
|
||||
<span class="vexpl"> Auto enable interface so it can be used on filter rules.</span>
|
||||
<br />
|
||||
<input type="checkbox" value="yes" name="autoadjustmtu" id="autoadjustmtu" <?php if ($pconfig['autoadjustmtu']) echo "checked=\"checked\""; ?> />
|
||||
<span class="vexpl"> Allows to keep clients mtu unchanged(1500). <br />NOTE: if you are using jumbo frames this option is not needed and may produce incorrect results!</span>
|
||||
<?php */ ?>
|
||||
<br />
|
||||
<input name="autogroup" type="checkbox" value="yes" id="autogroup" <?php if ($pconfig['autogroup']) echo "checked=\"checked\""; ?> />
|
||||
<span class="vexpl"><?=gettext("Adds interface to QinQ interface groups so you can write filter rules easily.");?></span>
|
||||
</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">
|
||||
<span class="vexpl">
|
||||
<?=gettext("You can specify ranges in the input below. The format is pretty simple i.e 9-100 or 10.20...");?>
|
||||
</span>
|
||||
<br />
|
||||
<table id="maintable" summary="main table">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><div id="onecolumn"><?=gettext("Tag");?></div></td>
|
||||
</tr>
|
||||
|
||||
<?php
|
||||
$counter = 0;
|
||||
$members = $pconfig['members'];
|
||||
if ($members <> "") {
|
||||
$item = explode(" ", $members);
|
||||
foreach($item as $ww) {
|
||||
$member = $item[$counter];
|
||||
?>
|
||||
<tr>
|
||||
<td class="vtable">
|
||||
<input name="members<?php echo $counter; ?>" class="formselect" id="members<?php echo $counter; ?>" value="<?php echo $member;?>" />
|
||||
</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>
|
||||
</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_qinq.php"><input id="cancelbutton" name="cancelbutton" type="button" class="formbtn" value="<?=gettext("Cancel");?>" /></a>
|
||||
<?php if (isset($id) && $a_qinqs[$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>
|
||||
|
||||
<?php include("fend.inc"); ?>
|
||||
</body>
|
||||
</html>
|
||||
include("foot.inc");
|
||||
|
||||
Loading…
Reference in New Issue
Block a user