Added "interface_selection" type to enable interface selection in tinydns server

This is usefull in multiwan setup and to check if a server behind pfsense is still running.
So that tinydns can change the corresponding records
This commit is contained in:
whizkidzz 2012-04-06 18:31:41 +02:00
parent bba2d76bcb
commit 05d908db3a
2 changed files with 43 additions and 11 deletions

View File

@ -24,27 +24,30 @@ var temp_streaming_text = "";
var addRowTo = (function() {
return (function (tableId, objectSize) {
var d, tbody, tr, td, bgc, i, ii, j;
var d, tbody, tr, td, bgc, i, ii, j, size;
d = document;
tbody = d.getElementById(tableId).getElementsByTagName("tbody").item(0);
tr = d.createElement("tr");
totalrows++;
if (!objectSize)
objectSize = rowsize[i];
size = objectSize;
for (i = 0; i < field_counter_js; i++) {
if (!objectSize)
size = rowsize[i];
td = d.createElement("td");
if(typeof(rowtype[i]) == 'function') {
td.innerHTML="<INPUT type='hidden' value='" + totalrows +"' name='" + rowname[i] + "_row-" + totalrows + "'></input>" + rowtype[i](rowname[i], objectSize, totalrows) + " ";
td.innerHTML="<INPUT type='hidden' value='" + totalrows +"' name='" + rowname[i] + "_row-" + totalrows + "'></input>" + rowtype[i](rowname[i], size, totalrows) + " ";
} else if(rowtype[i] == 'textbox') {
td.innerHTML="<INPUT type='hidden' value='" + totalrows +"' name='" + rowname[i] + "_row-" + totalrows + "'></input><input " + rowhelper_onChange + " size='" + rowsize[i] + "' name='" + rowname[i] + totalrows + "' id='" + rowname[i] + totalrows + "'></input> ";
} else if(rowtype[i] == 'select') {
td.innerHTML="<INPUT type='hidden' value='" + totalrows +"' name='" + rowname[i] + "_row-" + totalrows + "'></input><select " + rowhelper_onChange + " name='" + rowname[i] + totalrows + "' id='" + rowname[i] + totalrows + "'>" + newrow[i] + "</select> ";
} else if(rowtype[i] == 'interfaces_selection') {
td.innerHTML="<INPUT type='hidden' value='" + totalrows +"' name='" + rowname[i] + "_row-" + totalrows + "'></input><select " + rowhelper_onChange + " name='" + rowname[i] + totalrows + "' id='" + rowname[i] + totalrows + "'>" + newrow[i] + "</select> ";
} else if(rowtype[i] == 'select_source') {
td.innerHTML="<INPUT type='hidden' value='" + totalrows +"' name='" + rowname[i] + "_row-" + totalrows + "'></input><select " + rowhelper_onChange + " name='" + rowname[i] + totalrows + "' id='" + rowname[i] + totalrows + "'>" + newrow[i] + "</select> ";
} else if(rowtype[i] == 'checkbox') {
td.innerHTML="<INPUT type='hidden' value='" + totalrows +"' name='" + rowname[i] + "_row-" + totalrows + "'></input><input " + rowhelper_onChange + " type='checkbox'name='" + rowname[i] + totalrows + "' id='" + rowname[i] + totalrows + "'></input> ";
} else if(rowtype[i] == 'input') {
td.innerHTML="<INPUT type='hidden' value='" + totalrows +"' name='" + rowname[i] + "_row-" + totalrows + "'></input><input " + rowhelper_onChange + " class='formfld unknown' size='" + objectSize + "' name='" + rowname[i] + totalrows + "' id='" + rowname[i] + totalrows + "'></input> ";
td.innerHTML="<INPUT type='hidden' value='" + totalrows +"' name='" + rowname[i] + "_row-" + totalrows + "'></input><input " + rowhelper_onChange + " class='formfld unknown' size='" + size + "' name='" + rowname[i] + totalrows + "' id='" + rowname[i] + totalrows + "'></input> ";
} else if(rowtype[i] == 'password') {
td.innerHTML="<INPUT type='hidden' value='" + totalrows +"' name='" + rowname[i] + "_row-" + totalrows + "'></input><input " + rowhelper_onChange + " class='formfld pwd' type='password' name='" + rowname[i] + totalrows + "' id='" + rowname[i] + totalrows + "'></input> ";
}

View File

@ -503,7 +503,7 @@ if ($pkg['tabs'] <> "") {
} else if($pkga['type'] == "select") {
$fieldname = $pkga['fieldname'];
if (isset($pkga['multiple'])) {
$multiple = 'multiple="multiple"';
$multiple = 'multiple="multiple"';
$items = explode(',', $value);
$fieldname .= "[]";
} else {
@ -653,6 +653,10 @@ if ($pkg['tabs'] <> "") {
else
$values = explode(',', $value);
$ifaces["lo0"] = "loopback";
if(isset($pkga['advancedfield']) && $adv_enabled)
$advanced .="<option><name></name><value></value></option>/n";
else
echo "<option><name></name><value></value></option>/n";
foreach($ifaces as $ifname => $iface) {
$selected = (in_array($ifname, $values) ? 'selected' : '');
if(isset($pkga['advancedfield']) && $adv_enabled)
@ -681,6 +685,7 @@ if ($pkg['tabs'] <> "") {
foreach($pkga['rowhelper']['rowhelperfield'] as $rowhelper) {
echo "rowname[" . $fieldcounter . "] = \"" . $rowhelper['fieldname'] . "\";\n";
echo "rowtype[" . $fieldcounter . "] = \"" . $rowhelper['type'] . "\";\n";
echo "rowsize[" . $fieldcounter . "] = \"" . $rowhelper['size'] . "\";\n";
$fieldcounter++;
}
?>
@ -747,9 +752,9 @@ if ($pkg['tabs'] <> "") {
if($trc == 0) {
/*
* no records loaded.
* just show a generic line non-populated with saved data
*/
foreach($pkga['rowhelper']['rowhelperfield'] as $rowhelper) {
* just show a generic line non-populated with saved data
*/
foreach($pkga['rowhelper']['rowhelperfield'] as $rowhelper) {
if($rowhelper['value'] <> "") $value = $rowhelper['value'];
$fieldname = $rowhelper['fieldname'];
$options = "";
@ -892,10 +897,34 @@ function display_row($trc, $value, $fieldname, $type, $rowhelper, $size) {
foreach($rowhelper['options']['option'] as $rowopt) {
$selected = "";
if($rowopt['value'] == $value) $selected = " SELECTED";
$text .= "<option value='" . $rowopt['value'] . "'" . $selected . ">" . $rowopt['name'] . "</option>";
$text .= "<option value='" . $rowopt['value'] . ">" . $rowopt['name'] . "</option>";
echo "<option value='" . $rowopt['value'] . "'" . $selected . ">" . $rowopt['name'] . "</option>\n";
}
echo "</select>\n";
} else if($type == "interfaces_selection") {
$size = ($size ? "size=\"{$size}\"" : '');
$multiple = '';
if (isset($rowhelper['multiple'])) {
$fieldname .= '[]';
$multiple = 'multiple';
}
echo "<select id='" . $fieldname . $trc . "' name='" . $fieldname . $trc . "' $size $multiple>\n";
$ifaces = get_configured_interface_with_descr();
$additional_ifaces = $rowhelper['add_to_interfaces_selection'];
if (!empty($additional_ifaces))
$ifaces = array_merge($ifaces, explode(',', $additional_ifaces));
if(is_array($value))
$values = $value;
else
$values = explode(',', $value);
$ifaces["lo0"] = "loopback";
echo "<option><name></name><value></value></option>/n";
foreach($ifaces as $ifname => $iface) {
$selected = (in_array($ifname, $values) ? 'selected' : '');
$text .="<option value=\\\"$ifname\\\">$iface</option>";
echo "<option value=\"$ifname\" $selected>$iface</option>\n";
}
echo "</select>\n";
} else if($type == "select_source") {
echo "<select id='" . $fieldname . $trc . "' name='" . $fieldname . $trc . "'>\n";
$source_url = $rowhelper['source'];
@ -914,7 +943,7 @@ function display_row($trc, $value, $fieldname, $type, $rowhelper, $size) {
}
if($source_value == $value)
$selected = " SELECTED";
$text .= "<option value='" . $source_value . "'" . $selected . ">" . $source_name . "</option>";
$text .= "<option value='" . $source_value . "'" . ">" . $source_name . "</option>";
echo "<option value='" . $source_value . "'" . $selected . ">" . $source_name . "</option>\n";
}
echo "</select>\n";