dolibarr 19.0.3
edit.php
Go to the documentation of this file.
1<?php
2/* Copyright (C) 2005 Matthieu Valleton <mv@seeschloss.org>
3 * Copyright (C) 2006-2016 Laurent Destailleur <eldy@users.sourceforge.net>
4 * Copyright (C) 2005-2012 Regis Houssin <regis.houssin@inodbox.com>
5 * Copyright (C) 2007 Patrick Raguin <patrick.raguin@gmail.com>
6 * Copyright (C) 2020 Frédéric France <frederic.france@netlogic.fr>
7 *
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation; either version 3 of the License, or
11 * (at your option) any later version.
12 *
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
17 *
18 * You should have received a copy of the GNU General Public License
19 * along with this program. If not, see <https://www.gnu.org/licenses/>.
20 */
21
28// Load Dolibarr environment
29require '../main.inc.php';
30require_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php';
31require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php';
32require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php';
33
34// Load translation files required by the page
35$langs->load("categories");
36
37$id = GETPOST('id', 'int');
38$ref = GETPOST('ref', 'alphanohtml');
39$action = (GETPOST('action', 'aZ09') ? GETPOST('action', 'aZ09') : 'edit');
40$confirm = GETPOST('confirm');
41$cancel = GETPOST('cancel', 'alpha');
42$backtopage = GETPOST('backtopage', 'alpha');
43
44$socid = (int) GETPOST('socid', 'int');
45$label = (string) GETPOST('label', 'alphanohtml');
46$description = (string) GETPOST('description', 'restricthtml');
47$color = preg_replace('/[^0-9a-f#]/i', '', (string) GETPOST('color', 'alphanohtml'));
48$visible = (int) GETPOST('visible', 'int');
49$parent = (int) GETPOST('parent', 'int');
50
51if ($id == "") {
52 dol_print_error('', 'Missing parameter id');
53 exit();
54}
55
56// Security check
57$result = restrictedArea($user, 'categorie', $id, '&category');
58
59$object = new Categorie($db);
60$result = $object->fetch($id, $label);
61if ($result <= 0) {
62 dol_print_error($db, $object->error);
63 exit;
64}
65
66$type = $object->type;
67if (is_numeric($type)) {
68 $type = Categorie::$MAP_ID_TO_CODE[$type]; // For backward compatibility
69}
70
71$extrafields = new ExtraFields($db);
72$extrafields->fetch_name_optionals_label($object->table_element);
73
74// Initialize technical object to manage hooks. Note that conf->hooks_modules contains array array
75$hookmanager->initHooks(array('categorycard'));
76
77$error = 0;
78
79
80/*
81 * Actions
82 */
83$parameters = array('id' => $id, 'ref' => $ref, 'cancel'=> $cancel, 'backtopage' => $backtopage, 'socid' => $socid, 'label' => $label, 'description' => $description, 'color' => $color, 'visible' => $visible, 'parent' => $parent);
84// Note that $action and $object may be modified by some hooks
85$reshook = $hookmanager->executeHooks('doActions', $parameters, $object, $action);
86if ($reshook < 0) {
87 setEventMessages($hookmanager->error, $hookmanager->errors, 'errors');
88}
89
90if (empty($reshook)) {
91 if ($cancel) {
92 if ($backtopage) {
93 header("Location: ".$backtopage);
94 exit;
95 } else {
96 header('Location: '.DOL_URL_ROOT.'/categories/viewcat.php?id='.$object->id.'&type='.$type);
97 exit;
98 }
99 }
100
101 // Action mise a jour d'une categorie
102 if ($action == 'update' && $user->hasRight('categorie', 'creer')) {
103 $object->oldcopy = dol_clone($object, 2);
104
105 $object->label = $label;
106 $object->description = dol_htmlcleanlastbr($description);
107 $object->color = $color;
108 $object->socid = ($socid > 0 ? $socid : 0);
109 $object->visible = $visible;
110 $object->fk_parent = $parent != -1 ? $parent : 0;
111
112 if (empty($object->label)) {
113 $error++;
114 $action = 'edit';
115 setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentities("Label")), null, 'errors');
116 }
117 if (!$error && empty($object->error)) {
118 $ret = $extrafields->setOptionalsFromPost(null, $object, '@GETPOSTISSET');
119 if ($ret < 0) {
120 $error++;
121 }
122
123 if (!$error && $object->update($user) > 0) {
124 if ($backtopage) {
125 header("Location: ".$backtopage);
126 exit;
127 } else {
128 header('Location: '.DOL_URL_ROOT.'/categories/viewcat.php?id='.$object->id.'&type='.$type);
129 exit;
130 }
131 } else {
132 setEventMessages($object->error, $object->errors, 'errors');
133 }
134 } else {
135 setEventMessages($object->error, $object->errors, 'errors');
136 }
137 }
138}
139
140
141/*
142 * View
143 */
144
145$form = new Form($db);
146$formother = new FormOther($db);
147
148llxHeader("", "", $langs->trans("Categories"));
149
150print load_fiche_titre($langs->trans("ModifCat"));
151
152$object->fetch($id);
153
154
155print "\n";
156print '<form method="post" action="'.$_SERVER['PHP_SELF'].'">';
157print '<input type="hidden" name="token" value="'.newToken().'">';
158print '<input type="hidden" name="action" value="update">';
159print '<input type="hidden" name="id" value="'.$object->id.'">';
160print '<input type="hidden" name="type" value="'.$type.'">';
161print '<input type="hidden" name="backtopage" value="'.$backtopage.'">';
162
163print dol_get_fiche_head('');
164
165print '<table class="border centpercent">';
166
167// Ref
168print '<tr><td class="titlefieldcreate fieldrequired">';
169print $langs->trans("Ref").'</td>';
170print '<td><input type="text" size="25" id="label" name ="label" value="'.$object->label.'" />';
171print '</tr>';
172
173// Description
174print '<tr>';
175print '<td>'.$langs->trans("Description").'</td>';
176print '<td>';
177require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php';
178$doleditor = new DolEditor('description', $object->description, '', 200, 'dolibarr_notes', '', false, true, isModEnabled('fckeditor'), ROWS_6, '90%');
179$doleditor->Create();
180print '</td></tr>';
181
182// Color
183print '<tr>';
184print '<td>'.$langs->trans("Color").'</td>';
185print '<td>';
186print $formother->selectColor($object->color, 'color');
187print '</td></tr>';
188
189// Parent category
190print '<tr><td>'.$langs->trans("In").'</td><td>';
191print img_picto('', 'category', 'class="pictofixedwidth"');
192print $form->select_all_categories($type, $object->fk_parent, 'parent', 64, $object->id);
193print ajax_combobox('parent');
194print '</td></tr>';
195
196$parameters = array();
197$reshook = $hookmanager->executeHooks('formObjectOptions', $parameters, $object, $action); // Note that $action and $object may have been modified by hook
198print $hookmanager->resPrint;
199if (empty($reshook)) {
200 print $object->showOptionals($extrafields, 'edit', $parameters);
201}
202
203print '</table>';
204
205
206print dol_get_fiche_end();
207
208
209print '<div class="center"><input type="submit" class="button" name"submit" value="'.$langs->trans("Modify").'"> &nbsp; <input type="submit" class="button button-cancel" name="cancel" value="'.$langs->trans("Cancel").'"></div>';
210
211print '</form>';
212
213// End of page
214llxFooter();
215$db->close();
ajax_combobox($htmlname, $events=array(), $minLengthToAutocomplete=0, $forcefocus=0, $widthTypeOfAutocomplete='resolve', $idforemptyvalue='-1', $morecss='')
Convert a html select field into an ajax combobox.
Definition ajax.lib.php:455
if(!defined('NOREQUIRESOC')) if(!defined( 'NOREQUIRETRAN')) if(!defined('NOTOKENRENEWAL')) if(!defined( 'NOREQUIREMENU')) if(!defined('NOREQUIREHTML')) if(!defined( 'NOREQUIREAJAX')) llxHeader()
Empty header.
Definition wrapper.php:55
llxFooter()
Empty footer.
Definition wrapper.php:69
Class to manage categories.
Class to manage a WYSIWYG editor.
Class to manage standard extra fields.
Class to manage generation of HTML components Only common components must be here.
Classe permettant la generation de composants html autre Only common components are here.
load_fiche_titre($titre, $morehtmlright='', $picto='generic', $pictoisfullpath=0, $id='', $morecssontable='', $morehtmlcenter='')
Load a title with picto.
dol_get_fiche_head($links=array(), $active='', $title='', $notab=0, $picto='', $pictoisfullpath=0, $morehtmlright='', $morecss='', $limittoshow=0, $moretabssuffix='', $dragdropfile=0)
Show tabs of a record.
dol_print_error($db='', $error='', $errors=null)
Displays error message system with all the information to facilitate the diagnosis and the escalation...
dol_get_fiche_end($notab=0)
Return tab footer of a card.
img_picto($titlealt, $picto, $moreatt='', $pictoisfullpath=false, $srconly=0, $notitle=0, $alt='', $morecss='', $marginleftonlyshort=2)
Show picto whatever it's its name (generic function)
dol_clone($object, $native=0)
Create a clone of instance of object (new instance with same value for each properties) With native =...
dol_htmlcleanlastbr($stringtodecode)
This function remove all ending and br at end.
GETPOST($paramname, $check='alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0)
Return value of a param into GET or POST supervariable.
setEventMessages($mesg, $mesgs, $style='mesgs', $messagekey='', $noduplicate=0)
Set event messages in dol_events session object.
restrictedArea(User $user, $features, $object=0, $tableandshare='', $feature2='', $dbt_keyfield='fk_soc', $dbt_select='rowid', $isdraft=0, $mode=0)
Check permissions of a user to show a page and an object.