* Copyright (C) 2014 Juanjo Menent * Copyright (C) 2021 Frédéric France * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * * Show extrafields. It also show fields from hook formObjectOptions. Need to have following variables defined: * $object (invoice, order, ...) * $action * $conf * $langs * * $parameters * $cols */ // Protection to avoid direct call of template if (empty($object) || !is_object($object)) { print "Error, template page can't be called as URL"; exit; } if (!is_object($form)) { $form = new Form($db); } ?> fk_soc)) { $parameters['socid'] = $object->fk_soc; } $reshook = $hookmanager->executeHooks('formObjectOptions', $parameters, $object, $action); print $hookmanager->resPrint; if ($reshook < 0) { setEventMessages($hookmanager->error, $hookmanager->errors, 'errors'); } //var_dump($extrafields->attributes[$object->table_element]); if (empty($reshook) && isset($extrafields->attributes[$object->table_element]['label']) && is_array($extrafields->attributes[$object->table_element]['label'])) { $lastseparatorkeyfound = ''; $extrafields_collapse_num = ''; $extrafields_collapse_num_old = ''; $i = 0; foreach ($extrafields->attributes[$object->table_element]['label'] as $tmpkeyextra => $tmplabelextra) { $i++; // Discard if extrafield is a hidden field on form $enabled = 1; if ($enabled && isset($extrafields->attributes[$object->table_element]['enabled'][$tmpkeyextra])) { $enabled = dol_eval($extrafields->attributes[$object->table_element]['enabled'][$tmpkeyextra], 1); } if ($enabled && isset($extrafields->attributes[$object->table_element]['list'][$tmpkeyextra])) { $enabled = dol_eval($extrafields->attributes[$object->table_element]['list'][$tmpkeyextra], 1); } $perms = 1; if ($perms && isset($extrafields->attributes[$object->table_element]['perms'][$tmpkeyextra])) { $perms = dol_eval($extrafields->attributes[$object->table_element]['perms'][$tmpkeyextra], 1); } //print $tmpkeyextra.'-'.$enabled.'-'.$perms.'
'."\n"; 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 (empty($perms)) { continue; // 0 = Not visible } // Load language if required if (!empty($extrafields->attributes[$object->table_element]['langfile'][$tmpkeyextra])) { $langs->load($extrafields->attributes[$object->table_element]['langfile'][$tmpkeyextra]); } if ($action == 'edit_extras') { $value = (GETPOSTISSET("options_" . $tmpkeyextra) ? GETPOST("options_" . $tmpkeyextra) : (isset($object->array_options["options_" . $tmpkeyextra]) ? $object->array_options["options_" . $tmpkeyextra] : '')); } else { $value = (isset($object->array_options["options_" . $tmpkeyextra]) ? $object->array_options["options_" . $tmpkeyextra] : ''); //var_dump($tmpkeyextra.' - '.$value); } // Print line tr of extra field if ($extrafields->attributes[$object->table_element]['type'][$tmpkeyextra] == 'separate') { $extrafields_collapse_num = $tmpkeyextra; print $extrafields->showSeparator($tmpkeyextra, $object); $lastseparatorkeyfound = $tmpkeyextra; } elseif ($tmpkeyextra == 'discount_start_minute' || $tmpkeyextra == 'discount_to_hour' || $tmpkeyextra == 'discount_to_minute') { } else { $collapse_group = $extrafields_collapse_num . (!empty($object->id) ? '_' . $object->id : ''); print 'expand_display) && empty($extrafields->expand_display[$collapse_group])) { print ' style="display: none;"'; } print '>'; $extrafields_collapse_num_old = $extrafields_collapse_num; print ''; print ''; print ''; print ''; //TODO Improve element and rights detection //var_dump($user->rights); $permok = false; $keyforperm = $object->element; if ($object->element == 'fichinter') { $keyforperm = 'ficheinter'; } if (isset($user->rights->$keyforperm)) { $permok = !empty($user->rights->$keyforperm->creer) || !empty($user->rights->$keyforperm->create) || !empty($user->rights->$keyforperm->write); } if ($object->element == 'order_supplier') { if (empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) { $permok = $user->rights->fournisseur->commande->creer; } else { $permok = $user->rights->supplier_order->creer; } } if ($object->element == 'invoice_supplier') { if (empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) { $permok = $user->rights->fournisseur->facture->creer; } else { $permok = $user->rights->supplier_invoice->creer; } } if ($object->element == 'shipping') { $permok = $user->rights->expedition->creer; } if ($object->element == 'delivery') { $permok = $user->rights->expedition->delivery->creer; } if ($object->element == 'productlot') { $permok = $user->rights->stock->creer; } if ($object->element == 'facturerec') { $permok = $user->rights->facture->creer; } if ($object->element == 'mo') { $permok = $user->rights->mrp->write; } if ($object->element == 'contact') { $permok = $user->rights->societe->contact->creer; } if ($object->element == 'salary') { $permok = $user->rights->salaries->read; } $isdraft = ((isset($object->statut) && $object->statut == 0) || (isset($object->status) && $object->status == 0)); if ( ($isdraft || !empty($extrafields->attributes[$object->table_element]['alwayseditable'][$tmpkeyextra])) && $permok && $enabled != 5 && ($action != 'edit_extras' || GETPOST('attribute') != $tmpkeyextra) && empty($extrafields->attributes[$object->table_element]['computed'][$tmpkeyextra]) ) { $fieldid = empty($forcefieldid) ? 'id' : $forcefieldid; $valueid = empty($forceobjectid) ? $object->id : $forceobjectid; if ($object->table_element == 'societe') { $fieldid = 'socid'; } print ''; } print '
'; if (!empty($extrafields->attributes[$object->table_element]['help'][$tmpkeyextra])) { // You can also use 'TranslationString:keyfortooltiponlick' for a tooltip on click. $tmptooltip = explode(':', $extrafields->attributes[$object->table_element]['help'][$tmpkeyextra]); print $form->textwithpicto($langs->trans($tmplabelextra), $langs->trans($tmptooltip[0]), 1, 'help', '', 0, 3, (empty($tmptooltip[1]) ? '' : 'extra_' . $tmpkeyextra . '_' . $tmptooltip[1])); } else { print $langs->trans($tmplabelextra); } print '' . img_edit() . '
'; print ''; $html_id = !empty($object->id) ? $object->element . '_extras_' . $tmpkeyextra . '_' . $object->id : ''; print ''; // Convert date into timestamp format if (in_array($extrafields->attributes[$object->table_element]['type'][$tmpkeyextra], array('date'))) { $datenotinstring = empty($object->array_options['options_' . $tmpkeyextra]) ? '' : $object->array_options['options_' . $tmpkeyextra]; // print 'X'.$object->array_options['options_' . $tmpkeyextra].'-'.$datenotinstring.'x'; if (!empty($object->array_options['options_' . $tmpkeyextra]) && !is_numeric($object->array_options['options_' . $tmpkeyextra])) { // For backward compatibility $datenotinstring = $db->jdate($datenotinstring); } //print 'x'.$object->array_options['options_' . $tmpkeyextra].'-'.$datenotinstring.' - '.dol_print_date($datenotinstring, 'dayhour'); $value = GETPOSTISSET("options_" . $tmpkeyextra) ? dol_mktime(12, 0, 0, GETPOST("options_" . $tmpkeyextra . "month", 'int'), GETPOST("options_" . $tmpkeyextra . "day", 'int'), GETPOST("options_" . $tmpkeyextra . "year", 'int')) : $datenotinstring; } if (in_array($extrafields->attributes[$object->table_element]['type'][$tmpkeyextra], array('datetime'))) { $datenotinstring = empty($object->array_options['options_' . $tmpkeyextra]) ? '' : $object->array_options['options_' . $tmpkeyextra]; // print 'X'.$object->array_options['options_' . $tmpkeyextra].'-'.$datenotinstring.'x'; if (!empty($object->array_options['options_' . $tmpkeyextra]) && !is_numeric($object->array_options['options_' . $tmpkeyextra])) { // For backward compatibility $datenotinstring = $db->jdate($datenotinstring); } //print 'x'.$object->array_options['options_' . $tmpkeyextra].'-'.$datenotinstring.' - '.dol_print_date($datenotinstring, 'dayhour'); $value = GETPOSTISSET("options_" . $tmpkeyextra) ? dol_mktime(GETPOST("options_" . $tmpkeyextra . "hour", 'int'), GETPOST("options_" . $tmpkeyextra . "min", 'int'), GETPOST("options_" . $tmpkeyextra . "sec", 'int'), GETPOST("options_" . $tmpkeyextra . "month", 'int'), GETPOST("options_" . $tmpkeyextra . "day", 'int'), GETPOST("options_" . $tmpkeyextra . "year", 'int'), 'tzuserrel') : $datenotinstring; } //TODO Improve element and rights detection if ($action == 'edit_extras' && $permok && GETPOST('attribute', 'restricthtml') == $tmpkeyextra) { $fieldid = 'id'; if ($object->table_element == 'societe') { $fieldid = 'socid'; } print '
'; print ''; print ''; print ''; print ''; print $extrafields->showInputField($tmpkeyextra, $value, '', '', '', 0, $object->id, $object->table_element); print ''; print '
'; } else { //var_dump($tmpkeyextra.'-'.$value.'-'.$object->table_element); if ($tmpkeyextra == 'discount_start_hour') { print $extrafields->showOutputField($tmpkeyextra, $value, '', $object->table_element) . ' : ' . $extrafields->showOutputField('discount_start_minute', $object->array_options["options_discount_start_minute"], '', $object->table_element) . ' - ' . $extrafields->showOutputField('discount_to_hour', $object->array_options["options_discount_to_hour"], '', $object->table_element) . ' : ' . $extrafields->showOutputField('discount_to_minute', $object->array_options["options_discount_to_minute"], '', $object->table_element) ; } else { print $extrafields->showOutputField($tmpkeyextra, $value, '', $object->table_element); } } print ''; print '' . "\n"; } } // Add code to manage list depending on others // TODO Test/enhance this with a more generic solution if (!empty($conf->use_javascript_ajax)) { print "\n"; print ' ' . "\n"; } } ?>