2
0
forked from Wavyzz/dolibarr

FIX DO not erase variable $key and $label during output of extrafields

Conflicts:
	htdocs/core/tpl/extrafields_view.tpl.php
This commit is contained in:
Laurent Destailleur
2020-07-27 14:04:41 +02:00
parent 19b550009b
commit 6d8060bc50

View File

@@ -54,50 +54,48 @@ if (empty($reshook) && is_array($extrafields->attributes[$object->table_element]
$extrafields_collapse_num = ''; $extrafields_collapse_num = '';
$extrafields_collapse_num_old = ''; $extrafields_collapse_num_old = '';
$i = 0; $i = 0;
foreach ($extrafields->attributes[$object->table_element]['label'] as $key => $label) foreach ($extrafields->attributes[$object->table_element]['label'] as $tmpkeyextra => $tmplabelextra)
{ {
$i++; $i++;
// Discard if extrafield is a hidden field on form // Discard if extrafield is a hidden field on form
$enabled = 1; $enabled = 1;
if ($enabled && isset($extrafields->attributes[$object->table_element]['enabled'][$key])) if ($enabled && isset($extrafields->attributes[$object->table_element]['enabled'][$tmpkeyextra]))
{ {
$enabled = dol_eval($extrafields->attributes[$object->table_element]['enabled'][$key], 1); $enabled = dol_eval($extrafields->attributes[$object->table_element]['enabled'][$tmpkeyextra], 1);
} }
if ($enabled && isset($extrafields->attributes[$object->table_element]['list'][$key])) if ($enabled && isset($extrafields->attributes[$object->table_element]['list'][$tmpkeyextra]))
{ {
$enabled = dol_eval($extrafields->attributes[$object->table_element]['list'][$key], 1); $enabled = dol_eval($extrafields->attributes[$object->table_element]['list'][$tmpkeyextra], 1);
} }
$perms = 1; $perms = 1;
if ($perms && isset($extrafields->attributes[$object->table_element]['perms'][$key])) if ($perms && isset($extrafields->attributes[$object->table_element]['perms'][$tmpkeyextra]))
{ {
$perms = dol_eval($extrafields->attributes[$object->table_element]['perms'][$key], 1); $perms = dol_eval($extrafields->attributes[$object->table_element]['perms'][$tmpkeyextra], 1);
} }
//print $key.'-'.$enabled.'-'.$perms.'-'.$label.$_POST["options_" . $key].'<br>'."\n"; //print $tmpkeyextra.'-'.$enabled.'-'.$perms.'-'.$tmplabelextra.$_POST["options_" . $tmpkeyextra].'<br>'."\n";
if (empty($enabled)) continue; // 0 = Never visible field if (empty($enabled)) continue; // 0 = Never visible field
if (abs($enabled) != 1 && abs($enabled) != 3 && abs($enabled) != 5 && abs($enabled) != 4) continue; // <> -1 and <> 1 and <> 3 = not visible on forms, only on list <> 4 = not visible at the creation if (abs($enabled) != 1 && abs($enabled) != 3 && abs($enabled) != 5 && abs($enabled) != 4) continue; // <> -1 and <> 1 and <> 3 = not visible on forms, only on list <> 4 = not visible at the creation
if (empty($perms)) continue; // 0 = Not visible if (empty($perms)) continue; // 0 = Not visible
// Load language if required // Load language if required
if (!empty($extrafields->attributes[$object->table_element]['langfile'][$key])) $langs->load($extrafields->attributes[$object->table_element]['langfile'][$key]); if (!empty($extrafields->attributes[$object->table_element]['langfile'][$tmpkeyextra])) $langs->load($extrafields->attributes[$object->table_element]['langfile'][$tmpkeyextra]);
if ($action == 'edit_extras') if ($action == 'edit_extras')
{ {
$value = (isset($_POST["options_".$key]) ? $_POST["options_".$key] : $object->array_options["options_".$key]); $value = (isset($_POST["options_".$tmpkeyextra]) ? $_POST["options_".$tmpkeyextra] : $object->array_options["options_".$tmpkeyextra]);
} } else {
else $value = $object->array_options["options_".$tmpkeyextra];
{ //var_dump($tmpkeyextra.' - '.$value);
$value = $object->array_options["options_".$key];
//var_dump($key.' - '.$value);
} }
// Print line tr of extra field // Print line tr of extra field
if ($extrafields->attributes[$object->table_element]['type'][$key] == 'separate') if ($extrafields->attributes[$object->table_element]['type'][$tmpkeyextra] == 'separate')
{ {
$extrafields_collapse_num = ''; $extrafields_collapse_num = '';
$extrafield_param = $extrafields->attributes[$object->table_element]['param'][$key]; $extrafield_param = $extrafields->attributes[$object->table_element]['param'][$tmpkeyextra];
if (!empty($extrafield_param) && is_array($extrafield_param)) { if (!empty($extrafield_param) && is_array($extrafield_param)) {
$extrafield_param_list = array_keys($extrafield_param['options']); $extrafield_param_list = array_keys($extrafield_param['options']);
@@ -105,17 +103,15 @@ if (empty($reshook) && is_array($extrafields->attributes[$object->table_element]
$extrafield_collapse_display_value = intval($extrafield_param_list[0]); $extrafield_collapse_display_value = intval($extrafield_param_list[0]);
if ($extrafield_collapse_display_value == 1 || $extrafield_collapse_display_value == 2) { if ($extrafield_collapse_display_value == 1 || $extrafield_collapse_display_value == 2) {
$extrafields_collapse_num = $extrafields->attributes[$object->table_element]['pos'][$key]; $extrafields_collapse_num = $extrafields->attributes[$object->table_element]['pos'][$tmpkeyextra];
} }
} }
} }
print $extrafields->showSeparator($key, $object); print $extrafields->showSeparator($tmpkeyextra, $object);
$lastseparatorkeyfound = $key; $lastseparatorkeyfound = $tmpkeyextra;
} } else {
else
{
print '<tr class="trextrafields_collapse'.$extrafields_collapse_num; print '<tr class="trextrafields_collapse'.$extrafields_collapse_num;
/*if ($extrafields_collapse_num && $extrafields_collapse_num_old && $extrafields_collapse_num != $extrafields_collapse_num_old) { /*if ($extrafields_collapse_num && $extrafields_collapse_num_old && $extrafields_collapse_num != $extrafields_collapse_num_old) {
print ' trextrafields_collapse_new'; print ' trextrafields_collapse_new';
@@ -130,10 +126,10 @@ if (empty($reshook) && is_array($extrafields->attributes[$object->table_element]
print '<tr>'; print '<tr>';
print '<td class="'; print '<td class="';
if ((!empty($action) && ($action == 'create' || $action == 'edit')) && !empty($extrafields->attributes[$object->table_element]['required'][$key])) print ' fieldrequired'; if ((!empty($action) && ($action == 'create' || $action == 'edit')) && !empty($extrafields->attributes[$object->table_element]['required'][$tmpkeyextra])) print ' fieldrequired';
print '">'; print '">';
if (!empty($extrafields->attributes[$object->table_element]['help'][$key])) print $form->textwithpicto($langs->trans($label), $langs->trans($extrafields->attributes[$object->table_element]['help'][$key])); if (!empty($extrafields->attributes[$object->table_element]['help'][$tmpkeyextra])) print $form->textwithpicto($langs->trans($tmplabelextra), $langs->trans($extrafields->attributes[$object->table_element]['help'][$tmpkeyextra]));
else print $langs->trans($label); else print $langs->trans($tmplabelextra);
print '</td>'; print '</td>';
//TODO Improve element and rights detection //TODO Improve element and rights detection
@@ -151,54 +147,52 @@ if (empty($reshook) && is_array($extrafields->attributes[$object->table_element]
if ($object->element == 'mo') $permok = $user->rights->mrp->write; if ($object->element == 'mo') $permok = $user->rights->mrp->write;
$isdraft = ((isset($object->statut) && $object->statut == 0) || (isset($object->status) && $object->status == 0)); $isdraft = ((isset($object->statut) && $object->statut == 0) || (isset($object->status) && $object->status == 0));
if (($isdraft || !empty($extrafields->attributes[$object->table_element]['alwayseditable'][$key])) if (($isdraft || !empty($extrafields->attributes[$object->table_element]['alwayseditable'][$tmpkeyextra]))
&& $permok && $enabled != 5 && ($action != 'edit_extras' || GETPOST('attribute') != $key) && $permok && $enabled != 5 && ($action != 'edit_extras' || GETPOST('attribute') != $tmpkeyextra)
&& empty($extrafields->attributes[$object->table_element]['computed'][$key])) && empty($extrafields->attributes[$object->table_element]['computed'][$tmpkeyextra]))
{ {
$fieldid = 'id'; $fieldid = 'id';
if ($object->table_element == 'societe') $fieldid = 'socid'; if ($object->table_element == 'societe') $fieldid = 'socid';
print '<td class="right"><a class="reposition editfielda" href="'.$_SERVER['PHP_SELF'].'?'.$fieldid.'='.$object->id.'&action=edit_extras&attribute='.$key.'&ignorecollapsesetup=1">'.img_edit().'</a></td>'; print '<td class="right"><a class="reposition editfielda" href="'.$_SERVER['PHP_SELF'].'?'.$fieldid.'='.$object->id.'&action=edit_extras&attribute='.$tmpkeyextra.'&ignorecollapsesetup=1">'.img_edit().'</a></td>';
} }
print '</tr></table>'; print '</tr></table>';
print '</td>'; print '</td>';
$html_id = !empty($object->id) ? $object->element.'_extras_'.$key.'_'.$object->id : ''; $html_id = !empty($object->id) ? $object->element.'_extras_'.$tmpkeyextra.'_'.$object->id : '';
print '<td id="'.$html_id.'" class="'.$object->element.'_extras_'.$key.' wordbreak"'.($cols ? ' colspan="'.$cols.'"' : '').'>'; print '<td id="'.$html_id.'" class="'.$object->element.'_extras_'.$tmpkeyextra.' wordbreak"'.($cols ? ' colspan="'.$cols.'"' : '').'>';
// Convert date into timestamp format // Convert date into timestamp format
if (in_array($extrafields->attributes[$object->table_element]['type'][$key], array('date', 'datetime'))) if (in_array($extrafields->attributes[$object->table_element]['type'][$tmpkeyextra], array('date', 'datetime')))
{ {
$datenotinstring = $object->array_options['options_'.$key]; $datenotinstring = $object->array_options['options_'.$tmpkeyextra];
// print 'X'.$object->array_options['options_' . $key].'-'.$datenotinstring.'x'; // print 'X'.$object->array_options['options_' . $tmpkeyextra].'-'.$datenotinstring.'x';
if (!is_numeric($object->array_options['options_'.$key])) // For backward compatibility if (!is_numeric($object->array_options['options_'.$tmpkeyextra])) // For backward compatibility
{ {
$datenotinstring = $db->jdate($datenotinstring); $datenotinstring = $db->jdate($datenotinstring);
} }
//print 'x'.$object->array_options['options_' . $key].'-'.$datenotinstring.' - '.dol_print_date($datenotinstring, 'dayhour'); //print 'x'.$object->array_options['options_' . $tmpkeyextra].'-'.$datenotinstring.' - '.dol_print_date($datenotinstring, 'dayhour');
$value = isset($_POST["options_".$key]) ? dol_mktime($_POST["options_".$key."hour"], $_POST["options_".$key."min"], 0, $_POST["options_".$key."month"], $_POST["options_".$key."day"], $_POST["options_".$key."year"]) : $datenotinstring; $value = isset($_POST["options_".$tmpkeyextra]) ? dol_mktime($_POST["options_".$tmpkeyextra."hour"], $_POST["options_".$tmpkeyextra."min"], 0, $_POST["options_".$tmpkeyextra."month"], $_POST["options_".$tmpkeyextra."day"], $_POST["options_".$tmpkeyextra."year"]) : $datenotinstring;
} }
//TODO Improve element and rights detection //TODO Improve element and rights detection
if ($action == 'edit_extras' && $permok && GETPOST('attribute', 'none') == $key) if ($action == 'edit_extras' && $permok && GETPOST('attribute', 'none') == $tmpkeyextra)
{ {
$fieldid = 'id'; $fieldid = 'id';
if ($object->table_element == 'societe') $fieldid = 'socid'; if ($object->table_element == 'societe') $fieldid = 'socid';
print '<form enctype="multipart/form-data" action="'.$_SERVER["PHP_SELF"].'" method="post" name="formextra">'; print '<form enctype="multipart/form-data" action="'.$_SERVER["PHP_SELF"].'" method="post" name="formextra">';
print '<input type="hidden" name="action" value="update_extras">'; print '<input type="hidden" name="action" value="update_extras">';
print '<input type="hidden" name="attribute" value="'.$key.'">'; print '<input type="hidden" name="attribute" value="'.$tmpkeyextra.'">';
print '<input type="hidden" name="token" value="'.newToken().'">'; print '<input type="hidden" name="token" value="'.newToken().'">';
print '<input type="hidden" name="'.$fieldid.'" value="'.$object->id.'">'; print '<input type="hidden" name="'.$fieldid.'" value="'.$object->id.'">';
print $extrafields->showInputField($key, $value, '', '', '', 0, $object->id, $object->table_element); print $extrafields->showInputField($tmpkeyextra, $value, '', '', '', 0, $object->id, $object->table_element);
print '<input type="submit" class="button" value="'.dol_escape_htmltag($langs->trans('Modify')).'">'; print '<input type="submit" class="button" value="'.dol_escape_htmltag($langs->trans('Modify')).'">';
print '</form>'; print '</form>';
} } else {
else //var_dump($tmpkeyextra.'-'.$value.'-'.$object->table_element);
{ print $extrafields->showOutputField($tmpkeyextra, $value, '', $object->table_element);
//var_dump($key.'-'.$value.'-'.$object->table_element);
print $extrafields->showOutputField($key, $value, '', $object->table_element);
} }
print '</td>'; print '</td>';