dolibarr  20.0.0-beta
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 = GETPOSTINT('id');
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 = GETPOSTINT('socid');
45 $label = (string) GETPOST('label', 'alphanohtml');
46 $description = (string) GETPOST('description', 'restricthtml');
47 $color = preg_replace('/^#/', '', preg_replace('/[^0-9a-f#]/i', '', (string) GETPOST('color', 'alphanohtml')));
48 $position = GETPOSTINT('position');
49 $visible = GETPOSTINT('visible');
50 $parent = GETPOSTINT('parent');
51 
52 if ($id == "") {
53  dol_print_error(null, 'Missing parameter id');
54  exit();
55 }
56 
57 // Security check
58 $result = restrictedArea($user, 'categorie', $id, '&category');
59 
60 $object = new Categorie($db);
61 $result = $object->fetch($id, $label);
62 if ($result <= 0) {
63  dol_print_error($db, $object->error);
64  exit;
65 }
66 
67 $type = $object->type;
68 if (is_numeric($type)) {
69  $type = Categorie::$MAP_ID_TO_CODE[$type]; // For backward compatibility
70 }
71 
72 $extrafields = new ExtraFields($db);
73 $extrafields->fetch_name_optionals_label($object->table_element);
74 
75 // Initialize technical object to manage hooks. Note that conf->hooks_modules contains array array
76 $hookmanager->initHooks(array('categorycard'));
77 
78 $error = 0;
79 
80 
81 /*
82  * Actions
83  */
84 $parameters = array('id' => $id, 'ref' => $ref, 'cancel'=> $cancel, 'backtopage' => $backtopage, 'socid' => $socid, 'label' => $label, 'description' => $description, 'color' => $color, 'position' => $position, 'visible' => $visible, 'parent' => $parent);
85 // Note that $action and $object may be modified by some hooks
86 $reshook = $hookmanager->executeHooks('doActions', $parameters, $object, $action);
87 if ($reshook < 0) {
88  setEventMessages($hookmanager->error, $hookmanager->errors, 'errors');
89 }
90 
91 if (empty($reshook)) {
92  if ($cancel) {
93  if ($backtopage) {
94  header("Location: ".$backtopage);
95  exit;
96  } else {
97  header('Location: '.DOL_URL_ROOT.'/categories/viewcat.php?id='.$object->id.'&type='.$type);
98  exit;
99  }
100  }
101 
102  // Action mise a jour d'une categorie
103  if ($action == 'update' && $user->hasRight('categorie', 'creer')) {
104  $object->oldcopy = dol_clone($object, 2);
105 
106  $object->label = $label;
107  $object->description = dol_htmlcleanlastbr($description);
108  $object->color = $color;
109  $object->position = $position;
110  $object->socid = ($socid > 0 ? $socid : 0);
111  $object->visible = $visible;
112  $object->fk_parent = $parent != -1 ? $parent : 0;
113 
114  if (empty($object->label)) {
115  $error++;
116  $action = 'edit';
117  setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentities("Label")), null, 'errors');
118  }
119  if (!$error && empty($object->error)) {
120  $ret = $extrafields->setOptionalsFromPost(null, $object, '@GETPOSTISSET');
121  if ($ret < 0) {
122  $error++;
123  }
124 
125  if (!$error && $object->update($user) > 0) {
126  if ($backtopage) {
127  header("Location: ".$backtopage);
128  exit;
129  } else {
130  header('Location: '.DOL_URL_ROOT.'/categories/viewcat.php?id='.$object->id.'&type='.$type);
131  exit;
132  }
133  } else {
134  setEventMessages($object->error, $object->errors, 'errors');
135  }
136  } else {
137  setEventMessages($object->error, $object->errors, 'errors');
138  }
139  }
140 }
141 
142 
143 /*
144  * View
145  */
146 
147 $form = new Form($db);
148 $formother = new FormOther($db);
149 
150 llxHeader("", "", $langs->trans("Categories"));
151 
152 print load_fiche_titre($langs->trans("ModifCat"));
153 
154 $object->fetch($id);
155 
156 
157 print "\n";
158 print '<form method="post" action="'.$_SERVER['PHP_SELF'].'">';
159 print '<input type="hidden" name="token" value="'.newToken().'">';
160 print '<input type="hidden" name="action" value="update">';
161 print '<input type="hidden" name="id" value="'.$object->id.'">';
162 print '<input type="hidden" name="type" value="'.$type.'">';
163 print '<input type="hidden" name="backtopage" value="'.$backtopage.'">';
164 
165 print dol_get_fiche_head('');
166 
167 print '<div class="div-table-responsive-no-min">'; // You can use div-table-responsive-no-min if you don't need reserved height for your table
168 print '<table class="border centpercent">';
169 
170 // Ref
171 print '<tr><td class="titlefieldcreate fieldrequired">';
172 print $langs->trans("Ref").'</td>';
173 print '<td><input type="text" size="25" id="label" name ="label" value="'.$object->label.'" />';
174 print '</tr>';
175 
176 // Description
177 print '<tr>';
178 print '<td>'.$langs->trans("Description").'</td>';
179 print '<td>';
180 require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php';
181 $doleditor = new DolEditor('description', $object->description, '', 200, 'dolibarr_notes', '', false, true, isModEnabled('fckeditor'), ROWS_6, '90%');
182 $doleditor->Create();
183 print '</td></tr>';
184 
185 // Color
186 print '<tr>';
187 print '<td>'.$langs->trans("Color").'</td>';
188 print '<td>';
189 print $formother->selectColor($object->color, 'color');
190 print '</td></tr>';
191 
192 // Position
193 print '<tr><td>';
194 print $langs->trans("Position").'</td>';
195 print '<td><input type="text" class="width50" id="position" name ="position" value="'.$object->position.'" />';
196 print '</tr>';
197 
198 // Parent category
199 print '<tr><td>'.$langs->trans("In").'</td><td>';
200 print img_picto('', 'category', 'class="pictofixedwidth"');
201 print $form->select_all_categories($type, $object->fk_parent, 'parent', 64, $object->id, 0, 0, 'widthcentpercentminusx maxwidth500');
202 print ajax_combobox('parent');
203 print '</td></tr>';
204 
205 $parameters = array();
206 $reshook = $hookmanager->executeHooks('formObjectOptions', $parameters, $object, $action); // Note that $action and $object may have been modified by hook
207 print $hookmanager->resPrint;
208 if (empty($reshook)) {
209  print $object->showOptionals($extrafields, 'edit', $parameters);
210 }
211 
212 print '</table>';
213 print '</div>';
214 
215 print dol_get_fiche_end();
216 
217 
218 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>';
219 
220 print '</form>';
221 
222 // End of page
223 llxFooter();
224 $db->close();
if($user->socid > 0) if(! $user->hasRight('accounting', 'chartofaccount')) $object
Definition: card.php:58
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:456
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.
Class permettant la generation de composants html autre Only common components are here.
load_fiche_titre($title, $morehtmlright='', $picto='generic', $pictoisfullpath=0, $id='', $morecssontable='', $morehtmlcenter='')
Load a title with picto.
img_picto($titlealt, $picto, $moreatt='', $pictoisfullpath=0, $srconly=0, $notitle=0, $alt='', $morecss='', $marginleftonlyshort=2)
Show picto whatever it's its name (generic function)
GETPOSTINT($paramname, $method=0)
Return the value of a $_GET or $_POST supervariable, converted into integer.
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_get_fiche_end($notab=0)
Return tab footer of a card.
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.
dol_print_error($db=null, $error='', $errors=null)
Displays error message system with all the information to facilitate the diagnosis and the escalation...
isModEnabled($module)
Is Dolibarr module enabled.
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.