dolibarr  17.0.4
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
29 require '../main.inc.php';
30 require_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php';
31 require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php';
32 require_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 
51 if ($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);
61 if ($result <= 0) {
62  dol_print_error($db, $object->error); exit;
63 }
64 
65 $type = $object->type;
66 if (is_numeric($type)) {
67  $type = Categorie::$MAP_ID_TO_CODE[$type]; // For backward compatibility
68 }
69 
70 $extrafields = new ExtraFields($db);
71 $extrafields->fetch_name_optionals_label($object->table_element);
72 
73 // Initialize technical object to manage hooks. Note that conf->hooks_modules contains array array
74 $hookmanager->initHooks(array('categorycard'));
75 
76 $error = 0;
77 
78 
79 /*
80  * Actions
81  */
82 
83 if ($cancel) {
84  if ($backtopage) {
85  header("Location: ".$backtopage);
86  exit;
87  } else {
88  header('Location: '.DOL_URL_ROOT.'/categories/viewcat.php?id='.$object->id.'&type='.$type);
89  exit;
90  }
91 }
92 
93 // Action mise a jour d'une categorie
94 if ($action == 'update' && $user->rights->categorie->creer) {
95  $object->oldcopy = dol_clone($object);
96  $object->label = $label;
97  $object->description = dol_htmlcleanlastbr($description);
98  $object->color = $color;
99  $object->socid = ($socid > 0 ? $socid : 0);
100  $object->visible = $visible;
101  $object->fk_parent = $parent != -1 ? $parent : 0;
102 
103  if (empty($object->label)) {
104  $error++;
105  $action = 'edit';
106  setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentities("Label")), null, 'errors');
107  }
108  if (!$error && empty($object->error)) {
109  $ret = $extrafields->setOptionalsFromPost(null, $object, '@GETPOSTISSET');
110  if ($ret < 0) {
111  $error++;
112  }
113 
114  if (!$error && $object->update($user) > 0) {
115  if ($backtopage) {
116  header("Location: ".$backtopage);
117  exit;
118  } else {
119  header('Location: '.DOL_URL_ROOT.'/categories/viewcat.php?id='.$object->id.'&type='.$type);
120  exit;
121  }
122  } else {
123  setEventMessages($object->error, $object->errors, 'errors');
124  }
125  } else {
126  setEventMessages($object->error, $object->errors, 'errors');
127  }
128 }
129 
130 
131 
132 /*
133  * View
134  */
135 
136 $form = new Form($db);
137 $formother = new FormOther($db);
138 
139 llxHeader("", "", $langs->trans("Categories"));
140 
141 print load_fiche_titre($langs->trans("ModifCat"));
142 
143 $object->fetch($id);
144 
145 
146 print "\n";
147 print '<form method="post" action="'.$_SERVER['PHP_SELF'].'">';
148 print '<input type="hidden" name="token" value="'.newToken().'">';
149 print '<input type="hidden" name="action" value="update">';
150 print '<input type="hidden" name="id" value="'.$object->id.'">';
151 print '<input type="hidden" name="type" value="'.$type.'">';
152 print '<input type="hidden" name="backtopage" value="'.$backtopage.'">';
153 
154 print dol_get_fiche_head('');
155 
156 print '<table class="border centpercent">';
157 
158 // Ref
159 print '<tr><td class="titlefieldcreate fieldrequired">';
160 print $langs->trans("Ref").'</td>';
161 print '<td><input type="text" size="25" id="label" name ="label" value="'.$object->label.'" />';
162 print '</tr>';
163 
164 // Description
165 print '<tr>';
166 print '<td>'.$langs->trans("Description").'</td>';
167 print '<td>';
168 require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php';
169 $doleditor = new DolEditor('description', $object->description, '', 200, 'dolibarr_notes', '', false, true, $conf->fckeditor->enabled, ROWS_6, '90%');
170 $doleditor->Create();
171 print '</td></tr>';
172 
173 // Color
174 print '<tr>';
175 print '<td>'.$langs->trans("Color").'</td>';
176 print '<td>';
177 print $formother->selectColor($object->color, 'color');
178 print '</td></tr>';
179 
180 // Parent category
181 print '<tr><td>'.$langs->trans("In").'</td><td>';
182 print img_picto('', 'category', 'class="pictofixedwidth"');
183 print $form->select_all_categories($type, $object->fk_parent, 'parent', 64, $object->id);
184 print ajax_combobox('parent');
185 print '</td></tr>';
186 
187 $parameters = array();
188 $reshook = $hookmanager->executeHooks('formObjectOptions', $parameters, $object, $action); // Note that $action and $object may have been modified by hook
189 print $hookmanager->resPrint;
190 if (empty($reshook)) {
191  print $object->showOptionals($extrafields, 'edit', $parameters);
192 }
193 
194 print '</table>';
195 
196 
197 print dol_get_fiche_end();
198 
199 
200 print '<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>';
201 
202 print '</form>';
203 
204 // End of page
205 llxFooter();
206 $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:449
if(!defined('NOREQUIRESOC')) if(!defined('NOREQUIRETRAN')) if(!defined('NOTOKENRENEWAL')) if(!defined('NOREQUIREMENU')) if(!defined('NOREQUIREHTML')) if(!defined('NOREQUIREAJAX')) llxHeader()
Empty header.
Definition: wrapper.php:56
llxFooter()
Empty footer.
Definition: wrapper.php:70
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.
if($cancel &&! $id) if($action=='add' &&! $cancel) if($action=='delete') if($id) $form
Actions.
Definition: card.php:143
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='')
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.
setEventMessages($mesg, $mesgs, $style='mesgs', $messagekey='')
Set event messages in dol_events session object.
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.
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.