diff --git a/usr/local/www/pkg_edit.php b/usr/local/www/pkg_edit.php index cd9af8a125..728573271e 100755 --- a/usr/local/www/pkg_edit.php +++ b/usr/local/www/pkg_edit.php @@ -241,9 +241,9 @@ if ($_POST) { pfSenseHeader("pkg.php?xml=" . $xml); } exit; - } - else + } else { $get_from_post = true; + } } if($pkg['title'] <> "") { @@ -269,51 +269,51 @@ function enablechange() { @@ -332,8 +332,8 @@ foreach ($pkg['fields']['field'] as $field) { "") { - $tab_array = array(); - foreach($pkg['tabs']['tab'] as $tab) { + $tab_array = array(); + foreach($pkg['tabs']['tab'] as $tab) { if($tab['tab_level']) $tab_level = $tab['tab_level']; else @@ -363,7 +363,7 @@ if ($pkg['tabs'] <> "") { $active, $url ); - } + } ksort($tab_array); foreach($tab_array as $tab) { @@ -374,138 +374,231 @@ if ($pkg['tabs'] <> "") { } ?>
- "") $savevalue = $pkg['savetext']; - foreach ($pkg['fields']['field'] as $pkga) { + "") $savevalue = $pkg['savetext']; + /* If a package's XML has configured, then setup + * the table rows for the fields that have set. + * 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"; + } + + foreach ($pkg['fields']['field'] as $pkga) { if ($pkga['type'] == "sorting") continue; if ($pkga['type'] == "listtopic") { - echo ""; - echo "\n"; + if(isset($pkga['advancedfield']) && $adv_enabled) { + $advanced .= ""; + $advanced .= "\n"; + } else { + echo ""; + echo "\n"; + } continue; - } + } -?> + if(!$pkga['combinefieldsend']) { + if(isset($pkga['advancedfield']) && $adv_enabled) + $advanced .= ""; + else + echo ""; + } - "; ?> + $size = ""; - "; + $advanced .= fixup_string($pkga['fielddescr']); + $advanced .= ""; + } else { + echo ""; + } + } - $size = ""; - - if(!$pkga['dontdisplayname']) { - unset($req); - if (isset($pkga['required'])) - $req = 'req'; - echo ""; - } - - if(!$pkga['dontcombinecells']) - echo "
 
". gettext("Advanced features") . "
 
" . $pkga['name'] . "
 
" . $pkga['name'] . "
 
" . $pkga['name'] . "
"; + echo fixup_string($pkga['fielddescr']); + echo ""; - echo fixup_string($pkga['fielddescr']); - echo ""; + if(!$pkga['dontcombinecells']) + if(isset($pkga['advancedfield']) && $adv_enabled) + $advanced .= ""; + else + echo ""; // if user is editing a record, load in the data. $fieldname = $pkga['fieldname']; if ($get_from_post) { $value = $_POST[$fieldname]; if (is_array($value)) $value = implode(',', $value); - } - else { + } else { if (isset($id) && $a_pkg[$id]) $value = $a_pkg[$id][$fieldname]; else $value = $pkga['default_value']; } - if($pkga['type'] == "input") { + if($pkga['type'] == "input") { if($pkga['size']) $size = " size='" . $pkga['size'] . "' "; - echo "\n"; - echo "
" . fixup_string($pkga['description']) . "\n"; - } else if($pkga['type'] == "password") { + 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'] . "' "; - 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"; + $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']}\"" : ''); - print("\n"; + foreach ($pkga['options']['option'] as $opt) { + $selected = ''; + if (in_array($opt['value'], $items)) $selected = 'selected="selected"'; + $advanced .= "\t\n"; + } + $advanced .= "\n
\n" . fixup_string($pkga['description']) . "\n"; + $advanced .= "\n"; + } else { + echo "\n
\n" . fixup_string($pkga['description']) . "\n"; + } - print("\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']}\"" : ''); + } 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']}\"" : ''); - print("\n"; + $advanced .= "\n"; + } else { + echo "\n
\n" . fixup_string($pkga['description']) . "\n"); - } else if($pkga['type'] == "vpn_selection") { - echo "\n"; - echo "
" . fixup_string($pkga['description']) . "\n"; - } else if($pkga['type'] == "checkbox") { + 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();"'; - 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); - echo "\n"; - echo "
" . fixup_string($pkga['description']) . "\n"; - } else if($pkga['type'] == "interfaces_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'] == "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']; @@ -513,7 +606,13 @@ if ($pkg['tabs'] <> "") { $fieldname .= '[]'; $multiple = 'multiple'; } - print("\n"; + } else { + echo "\n
" . fixup_string($pkga['description']) . "\n"); - } else if($pkga['type'] == "radio") { - echo ""; - } else if($pkga['type'] == "rowhelper") { + 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") { ?>