* Copyright (C) 2006-2016 Laurent Destailleur * Copyright (C) 2005-2012 Regis Houssin * Copyright (C) 2007 Patrick Raguin * Copyright (C) 2020 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 . */ /** * \file htdocs/categories/edit.php * \ingroup category * \brief Page d'edition de categorie produit */ // Load Dolibarr environment require '../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php'; // Load translation files required by the page $langs->load("categories"); $id = GETPOSTINT('id'); $ref = GETPOST('ref', 'alphanohtml'); $action = (GETPOST('action', 'aZ09') ? GETPOST('action', 'aZ09') : 'edit'); $confirm = GETPOST('confirm'); $cancel = GETPOST('cancel', 'alpha'); $backtopage = GETPOST('backtopage', 'alpha'); $socid = GETPOSTINT('socid'); $label = (string) GETPOST('label', 'alphanohtml'); $description = (string) GETPOST('description', 'restricthtml'); $color = preg_replace('/^#/', '', preg_replace('/[^0-9a-f#]/i', '', (string) GETPOST('color', 'alphanohtml'))); $position = GETPOSTINT('position'); $visible = GETPOSTINT('visible'); $parent = GETPOSTINT('parent'); if ($id == "") { dol_print_error(null, 'Missing parameter id'); exit(); } // Initialize a technical object to manage hooks. Note that conf->hooks_modules contains array array $hookmanager->initHooks(array('categorycard')); // Security check $result = restrictedArea($user, 'categorie', $id, '&category'); $object = new Categorie($db); $result = $object->fetch($id, $label); if ($result <= 0) { dol_print_error($db, $object->error); exit; } $type = $object->type; if (is_numeric($type)) { $type = Categorie::$MAP_ID_TO_CODE[$type]; // For backward compatibility } $extrafields = new ExtraFields($db); $extrafields->fetch_name_optionals_label($object->table_element); $error = 0; /* * Actions */ $parameters = array('id' => $id, 'ref' => $ref, 'cancel'=> $cancel, 'backtopage' => $backtopage, 'socid' => $socid, 'label' => $label, 'description' => $description, 'color' => $color, 'position' => $position, 'visible' => $visible, 'parent' => $parent); // Note that $action and $object may be modified by some hooks $reshook = $hookmanager->executeHooks('doActions', $parameters, $object, $action); if ($reshook < 0) { setEventMessages($hookmanager->error, $hookmanager->errors, 'errors'); } if (empty($reshook)) { if ($cancel) { if ($backtopage) { header("Location: ".$backtopage); exit; } else { header('Location: '.DOL_URL_ROOT.'/categories/viewcat.php?id='.$object->id.'&type='.$type); exit; } } // Action mise a jour d'une categorie if ($action == 'update' && $user->hasRight('categorie', 'creer')) { $object->oldcopy = dol_clone($object, 2); $object->label = $label; $object->description = dol_htmlcleanlastbr($description); $object->color = $color; $object->position = $position; $object->socid = ($socid > 0 ? $socid : 0); $object->visible = $visible; $object->fk_parent = $parent != -1 ? $parent : 0; if (empty($object->label)) { $error++; $action = 'edit'; setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentities("Label")), null, 'errors'); } if (!$error && empty($object->error)) { $ret = $extrafields->setOptionalsFromPost(null, $object, '@GETPOSTISSET'); if ($ret < 0) { $error++; } if (!$error && $object->update($user) > 0) { if ($backtopage) { header("Location: ".$backtopage); exit; } else { header('Location: '.DOL_URL_ROOT.'/categories/viewcat.php?id='.$object->id.'&type='.$type); exit; } } else { setEventMessages($object->error, $object->errors, 'errors'); } } else { setEventMessages($object->error, $object->errors, 'errors'); } } } /* * View */ $form = new Form($db); $formother = new FormOther($db); llxHeader("", "", $langs->trans("Categories")); print load_fiche_titre($langs->trans("ModifCat")); $object->fetch($id); print "\n"; print '
'; print ''; print ''; print ''; print ''; print ''; print dol_get_fiche_head(''); print '
'; // You can use div-table-responsive-no-min if you don't need reserved height for your table print ''; // Ref print ''; print ''; // Description print ''; print ''; print ''; // Color print ''; print ''; print ''; // Position print ''; print ''; // Parent category print ''; $parameters = array(); $reshook = $hookmanager->executeHooks('formObjectOptions', $parameters, $object, $action); // Note that $action and $object may have been modified by hook print $hookmanager->resPrint; if (empty($reshook)) { print $object->showOptionals($extrafields, 'edit', $parameters); } print '
'; print $langs->trans("Ref").''; print '
'.$langs->trans("Description").''; require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php'; $doleditor = new DolEditor('description', $object->description, '', 200, 'dolibarr_notes', '', false, true, isModEnabled('fckeditor'), ROWS_6, '90%'); $doleditor->Create(); print '
'.$langs->trans("Color").''; print $formother->selectColor($object->color, 'color'); print '
'; print $langs->trans("Position").''; print '
'.$langs->trans("In").''; print img_picto('', 'category', 'class="pictofixedwidth"'); print $form->select_all_categories($type, $object->fk_parent, 'parent', 64, $object->id, 0, 0, 'widthcentpercentminusx maxwidth500'); print ajax_combobox('parent'); print '
'; print '
'; print dol_get_fiche_end(); print '
 
'; print '
'; // End of page llxFooter(); $db->close();