From 55c846c4457765f5058de4265a2074dad103aef2 Mon Sep 17 00:00:00 2001 From: Marcello Coutinho Date: Thu, 31 May 2012 18:49:05 -0300 Subject: [PATCH] new pkg_edit.php code with revised functions, no 0-99 loop on row_helper, movable rows, tootip with domtt. new field types button, info as well combinefileds working and colspan2 on nodisplaname option. jquery code improved too. tested on squid, dansguardian, sshdcond , filer , pfblocker package. --- usr/local/www/pkg_edit.php | 1153 ++++++++++++++++++------------------ 1 file changed, 561 insertions(+), 592 deletions(-) diff --git a/usr/local/www/pkg_edit.php b/usr/local/www/pkg_edit.php index 024f160693..22003abdd5 100755 --- a/usr/local/www/pkg_edit.php +++ b/usr/local/www/pkg_edit.php @@ -2,7 +2,7 @@ /* $Id$ */ /* pkg_edit.php - Copyright (C) 2004-2010 Scott Ullrich + Copyright (C) 2004-2012 Scott Ullrich All rights reserved. Redistribution and use in source and binary forms, with or without @@ -54,6 +54,14 @@ function gentitle_pkg($pgname) { return $pfSense_config['system']['hostname'] . "." . $pfSense_config['system']['domain'] . " - " . $pgname; } +function domTT_title($title_msg){ + if (!empty($title_msg)){ + $title_msg=preg_replace("/\s+/"," ",$title_msg); + $title_msg=preg_replace("/'/","\'",$title_msg); + return "onmouseout=\"this.style.color = ''; domTT_mouseout(this, event);\" onmouseover=\"domTT_activate(this, event, 'content', '{$title_msg}', 'trail', true, 'delay', 0, 'fade', 'both', 'fadeMax', 93, 'styleClass', 'niceTitle');\""; + } +} + $xml = htmlspecialchars($_GET['xml']); if($_POST['xml']) $xml = htmlspecialchars($_POST['xml']); @@ -170,44 +178,35 @@ if ($_POST) { if (!$input_errors) { $pkgarr = array(); foreach ($pkg['fields']['field'] as $fields) { - if($fields['type'] == "sorting") - continue; - if($fields['type'] == "listtopic") - continue; - if($fields['type'] == "rowhelper") { - // save rowhelper items. - for($x=0; $x<99; $x++) { // XXX: this really should be passed from the form. - // XXX: this really is not helping embedded platforms. - foreach($fields['rowhelper']['rowhelperfield'] as $rowhelperfield) { - if($firstfield == "") { - $firstfield = $rowhelperfield['fieldname']; - } else { - if($firstfield == $rowhelperfield['fieldname']) $rows++; - } - $fieldname = str_replace("\\", "", $rowhelperfield['fieldname']); - $comd = "\$value = \$_POST['" . $fieldname . $x . "'];"; - eval($comd); - if($value <> "") { - $comd = "\$pkgarr['row'][" . $x . "]['" . $fieldname . "'] = \"" . $value . "\";"; - //echo($comd . "
"); - eval($comd); + switch($fields['type']){ + case "sorting": + case "listtopic": + continue; + break; + case "rowhelper": + // save rowhelper items. + #$rowhelpername=($fields['fieldname'] ? $fields['fieldname'] : "row"); + $rowhelpername="row"; + foreach($fields['rowhelper']['rowhelperfield'] as $rowhelperfield) + foreach($_POST as $key => $value){ + if (preg_match("/^{$rowhelperfield['fieldname']}(\d+)$/",$key,$matches)) + $pkgarr[$rowhelpername][$matches[1]][$rowhelperfield['fieldname']]=$value; } + break; + default: + $fieldname = $fields['fieldname']; + if ($fieldname == "interface_array") { + $fieldvalue = $_POST[$fieldname]; + } elseif (is_array($_POST[$fieldname])) { + $fieldvalue = implode(',', $_POST[$fieldname]); + } else { + $fieldvalue = trim($_POST[$fieldname]); + if ($fields['encoding'] == 'base64') + $fieldvalue = base64_encode($fieldvalue); } + if($fieldname) + $pkgarr[$fieldname] = $fieldvalue; } - } else { - $fieldname = $fields['fieldname']; - if ($fieldname == "interface_array") { - $fieldvalue = $_POST[$fieldname]; - } elseif (is_array($_POST[$fieldname])) { - $fieldvalue = implode(',', $_POST[$fieldname]); - } else { - $fieldvalue = trim($_POST[$fieldname]); - if ($fields['encoding'] == 'base64') - $fieldvalue = base64_encode($fieldvalue); - } - if($fieldname) - $pkgarr[$fieldname] = $fieldvalue; - } } if (isset($id) && $a_pkg[$id]) @@ -269,84 +268,96 @@ if ($pkg['custom_php_after_head_command']) "") { ?> - - + + + + + @@ -398,8 +409,9 @@ if ($pkg['tabs'] <> "") { echo ''; } } + ?> -
+"; - $i++; - } - ?> + #print advanced settings if any after reading all fields + if (isset($advanced) && $adv_filed_count > 0) + echo $advanced; + + ?> - - - - - - +
"") { * These fields will be placed below other fields in a seprate area titled 'Advanced Features'. * These advanced fields are not normally configured and generally left to default to 'default settings'. */ - if ($pkg['advanced_options'] == "enabled") { - $adv_enabled = true; - $advanced .= ""; - $advanced .= "\n"; - } + if ($pkg['advanced_options'] == "enabled") { + $adv_filed_count = 0; + $advanced = ""; + $advanced .= "\n"; + } foreach ($pkg['fields']['field'] as $pkga) { if ($pkga['type'] == "sorting") continue; if ($pkga['type'] == "listtopic") { - if(isset($pkga['advancedfield']) && $adv_enabled) { - $advanced .= ""; - $advanced .= "\n"; - } else { - echo ""; - echo "\n"; - } - continue; - } - - if(!$pkga['combinefieldsend']) { - if(isset($pkga['advancedfield']) && $adv_enabled) - $advanced .= ""; + $input = ""; + $input .= "\n"; + if(isset($pkga['advancedfield']) && isset($adv_filed_count)) { + $advanced .= $input; + $adv_filed_count++; + } else - echo ""; + echo $input; + continue; } - + + if($pkga['combinefields']=="begin"){ + $input=""; + if(isset($pkga['advancedfield']) && isset($adv_filed_count)) + $advanced .= $input; + else + echo $input; + } + $size = ""; - - if(!$pkga['dontdisplayname']) { + if (isset($pkga['dontdisplayname'])){ + $input=""; + if(!isset($pkga['combinefields'])) + $input .= ""; + if(isset($pkga['usecolspan2'])) + $colspan="colspan='2'"; + else + $input .= ""; + if(isset($pkga['advancedfield']) && isset($adv_filed_count)) { + $advanced .= $input; + $adv_filed_count++; + } + else + echo $input; + } + else if (!isset($pkga['placeonbottom'])){ unset($req); if (isset($pkga['required'])) $req = 'req'; - if(isset($pkga['advancedfield']) && $adv_enabled) { - $advanced .= ""; - } else { - echo ""; - } + $input= ""; + if(isset($pkga['advancedfield']) && isset($adv_filed_count)) { + $advanced .= $input; + $adv_filed_count++; + } + else + echo $input; } - - if(!$pkga['dontcombinecells']) - if(isset($pkga['advancedfield']) && $adv_enabled) - $advanced .= ""; + } + else{ + $input= ""; + if($pkga['usecolspan2']) + $input.= "
"; + } + if(isset($pkga['advancedfield']) && isset($adv_filed_count)) + $advanced .= "{$input}\n"; + else + echo "{$input}\n"; + #increment counter + $i++; + } - $rowcounter++; - echo "\n"; - echo "\n"; - } - ?> - - -
 
". gettext("Advanced features") . "
 
". gettext("Advanced features") . "
 
" . $pkga['name'] . "
 
" . $pkga['name'] . "
 
{$pkga['name']}
 "; - $advanced .= fixup_string($pkga['fielddescr']); - $advanced .= ""; - echo fixup_string($pkga['fielddescr']); - echo ""; + $input .= fixup_string($pkga['fielddescr']); + $input .= ""; + if($pkga['combinefields']=="begin"){ + $input=""; + if(isset($pkga['advancedfield']) && isset($adv_filed_count)) + $advanced .= $input; else - echo "
"; + echo $input; + } + + $class=(isset($pkga['combinefields']) ? '' : 'class="vtable"'); + if (!isset($pkga['placeonbottom'])){ + $input=""; + if(isset($pkga['advancedfield']) && isset($adv_filed_count)){ + $advanced .= $input; + $adv_filed_count++; + } + else + echo $input; + } + // if user is editing a record, load in the data. $fieldname = $pkga['fieldname']; if ($get_from_post) { @@ -470,238 +511,247 @@ if ($pkg['tabs'] <> "") { else $value = $pkga['default_value']; } - - if($pkga['type'] == "input") { - if($pkga['size']) $size = " size='" . $pkga['size'] . "' "; - if(isset($pkga['advancedfield']) && $adv_enabled) { - $js_array[] = $pkga['fieldname']; - $advanced .= display_advanced_field($pkga['fieldname']); - $advanced .= "\n"; - $advanced .= "
" . fixup_string($pkga['description']) . "\n"; - $advanced .= "\n"; - } else { - echo "\n"; - echo "
" . fixup_string($pkga['description']) . "\n"; - } - } else if($pkga['type'] == "password") { - if($pkga['size']) $size = " size='" . $pkga['size'] . "' "; - if(isset($pkga['advancedfield']) && $adv_enabled) { - $js_array[] = $pkga['fieldname']; - $advanced .= display_advanced_field($pkga['fieldname']); - $advanced .= "\n"; - $advanced .= "
" . fixup_string($pkga['description']) . "\n"; - $advanced .= "\n"; - } else { - echo "\n"; - echo "
" . fixup_string($pkga['description']) . "\n"; - } - } else if($pkga['type'] == "select") { - $fieldname = $pkga['fieldname']; - if (isset($pkga['multiple'])) { - $multiple = 'multiple="multiple"'; - $items = explode(',', $value); - $fieldname .= "[]"; - } else { - $multiple = ''; - $items = array($value); - } - $size = (isset($pkga['size']) ? "size=\"{$pkga['size']}\"" : ''); - $onchange = (isset($pkga['onchange']) ? "onchange=\"{$pkga['onchange']}\"" : ''); - - if(isset($pkga['advancedfield']) && $adv_enabled) { - $js_array[] = $pkga['fieldname']; - $advanced .= display_advanced_field($pkga['fieldname']); - $advanced .= "\n
\n" . fixup_string($pkga['description']) . "\n"; - $advanced .= "\n"; - } else { - echo "\n
\n" . fixup_string($pkga['description']) . "\n"; - } - - } else if($pkga['type'] == "select_source") { - $fieldname = $pkga['fieldname']; - if (isset($pkga['multiple'])) { - $multiple = 'multiple="multiple"'; - $items = explode(',', $value); - $fieldname .= "[]"; - } else { - $multiple = ''; - $items = array($value); - } - $size = (isset($pkga['size']) ? "size=\"{$pkga['size']}\"" : ''); - $onchange = (isset($pkga['onchange']) ? "onchange=\"{$pkga['onchange']}\"" : ''); - - if(isset($pkga['advancedfield']) && $adv_enabled) { - $js_array[] = $pkga['fieldname']; - $advanced .= display_advanced_field($pkga['fieldname']); - $advanced .= "\n"; - } - $source_url = $pkga['source']; - eval("\$pkg_source_txt = &$source_url;"); - foreach ($pkg_source_txt as $opt) { - $selected = ''; - if($pkga['source_name']) { - $source_name = $opt[$pkga['source_name']]; - } else { - $source_name = $opt[$pkga['name']]; - } - if($pkga['source_value']) { - $source_value = $opt[$pkga['source_value']]; - } else { - $source_value = $opt[$pkga['value']]; - } - if (in_array($source_value, $items)) $selected = 'selected="selected"'; - if(isset($pkga['advancedfield']) && $adv_enabled) - $advanced .= "\t\n"; - else - echo "\t\n"; - } - - if(isset($pkga['advancedfield']) && $adv_enabled) - $advanced .= "\n
\n" . fixup_string($pkga['description']) . "\n"; - else - echo "\n
\n" . fixup_string($pkga['description']) . "\n"; - } else if($pkga['type'] == "vpn_selection") { - if(isset($pkga['advancedfield']) && $adv_enabled) { - $js_array[] = $pkga['fieldname']; - $advanced .= display_advanced_field($pkga['fieldname']); - $advanced .= "\n"; - $advanced .= "
" . fixup_string($pkga['description']) . "\n"; - $advanced .= "\n"; - } else { - echo "\n"; - echo "
" . fixup_string($pkga['description']) . "\n"; - } - } else if($pkga['type'] == "checkbox") { - $checkboxchecked = ""; - if($value == "on") $checkboxchecked = " CHECKED"; - if (isset($pkga['enablefields']) || isset($pkga['checkenablefields'])) - $onclick = ' onclick="javascript:enablechange();"'; - if(isset($pkga['advancedfield']) && $adv_enabled) { - $js_array[] = $pkga['fieldname']; - $advanced .= display_advanced_field($pkga['fieldname']); - $advanced .= "\n"; - $advanced .= "
" . fixup_string($pkga['description']) . "\n"; - $advanced .= "\n"; - } else { - echo "\n"; - echo "
" . fixup_string($pkga['description']) . "\n"; - } - } else if($pkga['type'] == "textarea") { - if($pkga['rows']) $rows = " rows='" . $pkga['rows'] . "' "; - if($pkga['cols']) $cols = " cols='" . $pkga['cols'] . "' "; - if($pkga['wrap'] == "off") { $wrap = 'wrap="off" style="white-space:nowrap;"'; } else { $wrap = ''; } - if (($pkga['encoding'] == 'base64') && !$get_from_post && !empty($value)) $value = base64_decode($value); - if(isset($pkga['advancedfield']) && $adv_enabled) { - $js_array[] = $pkga['fieldname']; - $advanced .= display_advanced_field($pkga['fieldname']); - $advanced .= "\n"; - $advanced .= "
" . fixup_string($pkga['description']) . "\n"; - $advanced .= "\n"; - } else { - echo "\n"; - echo "
" . fixup_string($pkga['description']) . "\n"; - } - } else if($pkga['type'] == "interfaces_selection") { - $size = ($pkga['size'] ? "size=\"{$pkga['size']}\"" : ''); - $multiple = ''; - $fieldname = $pkga['fieldname']; - if (isset($pkga['multiple'])) { - $fieldname .= '[]'; - $multiple = 'multiple'; - } - if(isset($pkga['advancedfield']) && $adv_enabled) { - $js_array[] = $pkga['fieldname']; - $advanced .= display_advanced_field($pkga['fieldname']); - $advanced .= "\n"; - } - $ifaces = get_configured_interface_with_descr(); - $additional_ifaces = $pkga['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"; - foreach($ifaces as $ifname => $iface) { - $selected = (in_array($ifname, $values) ? 'selected' : ''); - if(isset($pkga['advancedfield']) && $adv_enabled) - $advanced .= "\n"; + switch($pkga['type']){ + case "input": + $size = ($pkga['size'] ? " size='{$pkga['size']}' " : ""); + $input = "\n"; + $input .= "
" . fixup_string($pkga['description']) . "\n"; + if(isset($pkga['advancedfield']) && isset($adv_filed_count)) { + $js_array[] = $pkga['fieldname']; + $advanced .= display_advanced_field($pkga['fieldname']).$input ."\n"; + } else - echo "\n"; - } - if(isset($pkga['advancedfield']) && $adv_enabled) { - $advanced .= "\n
" . fixup_string($pkga['description']) . "\n"; - $advanced .= "\n"; - } else { - echo "\n
" . fixup_string($pkga['description']) . "\n"; - } - } else if($pkga['type'] == "radio") { - if(isset($pkga['advancedfield']) && $adv_enabled) - $advanced .= ""; - else - echo ""; - } else if($pkga['type'] == "rowhelper") { - ?> - - - - " . fixup_string($rowhelper['fielddescr']) . "\n"; + $size = ($pkga['size'] ? " size='{$pkga['size']}' " : ""); + $onchange = (isset($pkga['onchange']) ? "onchange=\"{$pkga['onchange']}\"" : ''); + $input = "\n
\n" . fixup_string($pkga['description']) . "\n"; + if(isset($pkga['advancedfield']) && isset($adv_filed_count)) { + $js_array[] = $pkga['fieldname']; + $advanced .= display_advanced_field($pkga['fieldname']).$input; + $advanced .= "\n"; + } + else + echo $input; + break; + + case "select_source": + $fieldname = $pkga['fieldname']; + if (isset($pkga['multiple'])) { + $multiple = 'multiple="multiple"'; + $items = explode(',', $value); + $fieldname .= "[]"; + } else { + $multiple = ''; + $items = array($value); } - echo "
"; + $size = (isset($pkga['size']) ? "size=\"{$pkga['size']}\"" : ''); + $onchange = (isset($pkga['onchange']) ? "onchange=\"{$pkga['onchange']}\"" : ''); + $input = ""; - // XXX: traverse saved fields, add back needed rows. - echo ""; + if(isset($pkga['advancedfield']) && isset($adv_filed_count)) { + $js_array[] = $pkga['fieldname']; + $advanced .= display_advanced_field($pkga['fieldname']) .$input; + $advanced .= "\n"; + } else { + echo $input; + } + $source_url = $pkga['source']; + eval("\$pkg_source_txt = &$source_url;"); + foreach ($pkg_source_txt as $opt) { + $source_name =($pkga['source_name']? $opt[$pkga['source_name']] : $opt[$pkga['name']]); + $source_value =($pkga['source_value'] ? $opt[$pkga['source_value']] : $opt[$pkga['value']]); + $selected = (in_array($source_value, $items)? 'selected="selected"' : '' ); + $input = "\t\n"; + $input .= "\n
\n" . fixup_string($pkga['description']) . "\n"; + if(isset($pkga['advancedfield']) && isset($adv_filed_count)) + $advanced .= $input; + else + echo $input; + } + break; + + case "vpn_selection" : + $input = "\n"; + $input .= "
" . fixup_string($pkga['description']) . "\n"; - echo "
\n"; - $rowcounter = 0; - $trc = 0; - if(isset($a_pkg[$id]['row'])) { - foreach($a_pkg[$id]['row'] as $row) { - /* - * loop through saved data for record if it exists, populating rowhelper - */ + if(isset($pkga['advancedfield']) && isset($adv_filed_count)) { + $js_array[] = $pkga['fieldname']; + $advanced .= display_advanced_field($pkga['fieldname']).$input; + $advanced .= "\n"; + } + else + echo $input; + break; + + case "checkbox": + $checkboxchecked =($value == "on" ? " CHECKED" : ""); + if (isset($pkga['enablefields']) || isset($pkga['checkenablefields'])) + $onclick = ' onclick="javascript:enablechange();"'; + $input = "\n"; + $input .= "
" . fixup_string($pkga['description']) . "\n"; + + if(isset($pkga['advancedfield']) && isset($adv_filed_count)) { + $js_array[] = $pkga['fieldname']; + $advanced .= display_advanced_field($pkga['fieldname']).$input; + $advanced .= "\n"; + } + else + echo $input; + break; + + case "textarea": + if($pkga['rows']) + $rows = " rows='{$pkga['rows']}' "; + if($pkga['cols']) + $cols = " cols='{$pkga['cols']}' "; + if (($pkga['encoding'] == 'base64') && !$get_from_post && !empty($value)) + $value = base64_decode($value); + $wrap =($pkga['wrap'] == "off" ? 'wrap="off" style="white-space:nowrap;"' : ''); + $input = "\n"; + $input .= "
" . fixup_string($pkga['description']) . "\n"; + if(isset($pkga['advancedfield']) && isset($adv_filed_count)) { + $js_array[] = $pkga['fieldname']; + $advanced .= display_advanced_field($pkga['fieldname']).$input; + $advanced .= "\n"; + } + else + echo $input; + break; + + case "interfaces_selection": + $size = ($pkga['size'] ? "size=\"{$pkga['size']}\"" : ''); + $multiple = ''; + $fieldname = $pkga['fieldname']; + if (isset($pkga['multiple'])) { + $fieldname .= '[]'; + $multiple = 'multiple'; + } + $input = "\n
" . fixup_string($pkga['description']) . "\n"; + if(isset($pkga['advancedfield']) && isset($adv_filed_count)) + $advanced .= $input."\n"; + else + echo $input; + break; + + case "radio": + $input = ""; + if(isset($pkga['advancedfield']) && isset($adv_filed_count)) + $advanced .= $input; + else + echo $input; + break; + + case "button": + $input = "\n"; + if(isset($pkga['placeonbottom'])) + $pkg_buttons .= $input; + else + echo $input ."\n
" . fixup_string($pkga['description']) . "\n";; + break; + + case "rowhelper": + #$rowhelpername=($fields['fieldname'] ? $fields['fieldname'] : "row"); + $rowhelpername="row"; + ?> + +
+ '> + " . fixup_string($rowhelper['fielddescr']) . "\n"; + } + + $rowcounter = 0; + $trc = 0; + + //Use assigned $a_pkg or create an empty array to enter loop + if(isset($a_pkg[$id][$rowhelpername])) + $saved_rows=$a_pkg[$id][$rowhelpername]; + else + $saved_rows[]=array(); + + foreach($saved_rows as $row) { + echo "\n\n"; foreach($pkga['rowhelper']['rowhelperfield'] as $rowhelper) { unset($value); if($rowhelper['value'] <> "") $value = $rowhelper['value']; @@ -712,6 +762,7 @@ if ($pkg['tabs'] <> "") { } $options = ""; $type = $rowhelper['type']; + $description = $rowhelper['description']; $fieldname = $rowhelper['fieldname']; if($type == "option") $options = &$rowhelper['options']['option']; @@ -722,124 +773,86 @@ if ($pkg['tabs'] <> "") { else $size = "8"; display_row($rowcounter, $value, $fieldname, $type, $rowhelper, $size); - // javascript helpers for row_helper_dynamic.js - echo "\n"; - echo "\n"; + $text = ""; $trc++; - } - + } $rowcounter++; echo "\n"; echo "\n"; - } - } - if($trc == 0) { - /* - * no records loaded. - * 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 = ""; - $type = $rowhelper['type']; - $fieldname = $rowhelper['fieldname']; - if($type == "option") $options = &$rowhelper['options']['option']; - if($rowhelper['size'] <> "") - $size = $rowhelper['size']; - else if ($pkga['size']) - $size = $pkga['size']; - else - $size = 8; - display_row($rowcounter, $value, $fieldname, $type, $rowhelper, $size); - // javascript helpers for row_helper_dynamic.js - echo "\n"; - echo "\n"; - $text = ""; - $trc++; - } + } + ?> + +
"; - echo ""; + #echo ""; + echo ""; echo "
+ + +
+
+ + + "; + if ($pkga['combinefields']=="end") + $input.="
"; - echo ""; - echo "
- - -
- -
- -
- - - - -
 
  -" . gettext("Note") . ": {$pkg['note']}

"; -//if (isset($id) && $a_pkg[$id]) // We'll always have a valid ID in our hands - echo ""; -?> - - - " onclick="history.back()"> - +
+ " . gettext("Note") . ": {$pkg['note']}

"; + } + //if (isset($id) && $a_pkg[$id]) // We'll always have a valid ID in our hands + echo ""; + echo "\n{$pkg_buttons}\n"; + if (!$only_edit){ + echo ""; + } + ?> +
  - - - " onclick="history.back()"> - -
@@ -853,9 +866,8 @@ if($pkg['note'] != "") echo "\n"; @@ -873,34 +885,34 @@ if($pkg['note'] != "") function display_row($trc, $value, $fieldname, $type, $rowhelper, $size) { global $text, $config; echo "\n"; - if($type == "input") { - echo "\n"; - } else if($type == "checkbox") { - if($value) - echo "\n"; - else - echo "\n"; - } else if($type == "password") { - echo "\n"; - } else if($type == "textarea") { - echo "\n"; - } else if($type == "select") { - echo "\n"; - } else if($type == "interfaces_selection") { + switch($type){ + case "input": + echo "\n"; + break; + case "checkbox": + echo "\n"; + break; + case "password": + echo "\n"; + break; + case "textarea": + echo "\n"; + case "select": + echo "\n"; + break; + case "interfaces_selection": $size = ($size ? "size=\"{$size}\"" : ''); $multiple = ''; if (isset($rowhelper['multiple'])) { $fieldname .= '[]'; $multiple = 'multiple'; } - echo "\n"; $ifaces = get_configured_interface_with_descr(); $additional_ifaces = $rowhelper['add_to_interfaces_selection']; if (!empty($additional_ifaces)) @@ -912,34 +924,24 @@ function display_row($trc, $value, $fieldname, $type, $rowhelper, $size) { $ifaces["lo0"] = "loopback"; echo "/n"; foreach($ifaces as $ifname => $iface) { - $selected = (in_array($ifname, $values) ? 'selected' : ''); $text .=""; - echo "\n"; - } + echo "\n"; + } echo "\n"; - } else if($type == "select_source") { - echo "\n"; + $source_url = $rowhelper['source']; + eval("\$pkg_source_txt = &$source_url;"); + foreach($pkg_source_txt as $opt) { + $source_name = ($rowhelper['source_name'] ? $opt[$rowhelper['source_name']] : $opt[$rowhelper['name']]); + $source_value = ($rowhelper['source_value'] ? $opt[$rowhelper['source_value']] : $opt[$rowhelper['value']]); + $text .= ""; + echo "\n"; + } + echo "\n"; + break; } - echo "\n"; - } } function fixup_string($string) { @@ -977,75 +979,42 @@ function parse_package_templates() { $rows = 0; if($pkg['templates']['template'] <> "") foreach($pkg['templates']['template'] as $pkg_template_row) { - $filename = $pkg_template_row['filename']; - $template_text = $pkg_template_row['templatecontents']; - $firstfield = ""; - /* calculate total row helpers count */ - foreach ($pkg['fields']['field'] as $fields) { - if($fields['type'] == "rowhelper") { - // save rowhelper items. - $row_helper_total_rows = 0; - for($x=0; $x<99; $x++) { // XXX: this really should be passed from the form. - foreach($fields['rowhelper']['rowhelperfield'] as $rowhelperfield) { - if($firstfield == "") { - $firstfield = $rowhelperfield['fieldname']; - } else { - if($firstfield == $rowhelperfield['fieldname']) $rows++; - } - $comd = "\$value = \$_POST['" . $rowhelperfield['fieldname'] . $x . "'];"; - $value = ""; - eval($comd); - if($value <> "") { - //$template_text = str_replace($fieldname . "_fieldvalue", $fieldvalue, $template_text); - } else { - $row_helper_total_rows = $rows; - break; - } - } + $filename = $pkg_template_row['filename']; + $template_text = $pkg_template_row['templatecontents']; + $firstfield = ""; + /* calculate total row helpers count and */ + /* change fields defined as fieldname_fieldvalue to their value */ + foreach ($pkg['fields']['field'] as $fields) { + switch($fields['type']){ + case "rowhelper": + // save rowhelper items. + $row_helper_total_rows = 0; + $row_helper_data = ""; + foreach($fields['rowhelper']['rowhelperfield'] as $rowhelperfield) + foreach($_POST as $key => $value){ + if (preg_match("/^{$rowhelperfield['fieldname']}(\d+)$/",$key,$matches)){ + $row_helper_total_rows++; + $row_helper_data .= $value; + $sep = ""; + ereg($rowhelperfield['fieldname'] . "_fieldvalue\[(.*)\]", $template_text, $sep); + foreach ($sep as $se) $seperator = $se; + if($seperator <> "") { + $row_helper_data = ereg_replace(" ", $seperator, $row_helper_data); + $template_text = ereg_replace("\[{$seperator}\]", "", $template_text); + } + $template_text = str_replace($rowhelperfield['fieldname'] . "_fieldvalue", $row_helper_data, $template_text); + } + } + break; + default: + $fieldname = $fields['fieldname']; + $fieldvalue = $_POST[$fieldname]; + $template_text = str_replace($fieldname . "_fieldvalue", $fieldvalue, $template_text); } } - } - /* replace $domain_total_rows with total rows */ $template_text = str_replace("$domain_total_rows", $row_helper_total_rows, $template_text); - - /* change fields defined as fieldname_fieldvalue to their value */ - foreach ($pkg['fields']['field'] as $fields) { - if($fields['type'] == "rowhelper") { - // save rowhelper items. - for($x=0; $x<99; $x++) { // XXX: this really should be passed from the form. - $row_helper_data = ""; - $isfirst = 0; - foreach($fields['rowhelper']['rowhelperfield'] as $rowhelperfield) { - if($firstfield == "") { - $firstfield = $rowhelperfield['fieldname']; - } else { - if($firstfield == $rowhelperfield['fieldname']) $rows++; - } - $comd = "\$value = \$_POST['" . $rowhelperfield['fieldname'] . $x . "'];"; - eval($comd); - if($value <> "") { - if($isfirst == 1) $row_helper_data .= " " ; - $row_helper_data .= $value; - $isfirst = 1; - } - $sep = ""; - ereg($rowhelperfield['fieldname'] . "_fieldvalue\[(.*)\]", $template_text, $sep); - foreach ($sep as $se) $seperator = $se; - if($seperator <> "") { - $row_helper_data = ereg_replace(" ", $seperator, $row_helper_data); - $template_text = ereg_replace("\[" . $seperator . "\]", "", $template_text); - } - $template_text = str_replace($rowhelperfield['fieldname'] . "_fieldvalue", $row_helper_data, $template_text); - } - } - } else { - $fieldname = $fields['fieldname']; - $fieldvalue = $_POST[$fieldname]; - $template_text = str_replace($fieldname . "_fieldvalue", $fieldvalue, $template_text); - } - } - + /* replace cr's */ $template_text = str_replace("\\n", "\n", $template_text); @@ -1058,9 +1027,9 @@ function parse_package_templates() { /* Return html div fields */ function display_advanced_field($fieldname) { - $div = "
\n"; - $div .= " - " . gettext("Show advanced option") ."
\n"; - $div .= "