dolibarr 18.0.6
position_card.php
Go to the documentation of this file.
1<?php
2/* Copyright (C) 2017 Laurent Destailleur <eldy@users.sourceforge.net>
3 * Copyright (C) 2021 Gauthier VERDOL <gauthier.verdol@atm-consulting.fr>
4 * Copyright (C) 2021 Greg Rastklan <greg.rastklan@atm-consulting.fr>
5 * Copyright (C) 2021 Jean-Pascal BOUDET <jean-pascal.boudet@atm-consulting.fr>
6 * Copyright (C) 2021 Grégory BLEMAND <gregory.blemand@atm-consulting.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
29// Load Dolibarr environment
30require '../main.inc.php';
31
32require_once DOL_DOCUMENT_ROOT . '/core/class/html.formcompany.class.php';
33require_once DOL_DOCUMENT_ROOT . '/core/class/html.formfile.class.php';
34require_once DOL_DOCUMENT_ROOT . '/core/class/html.formprojet.class.php';
35require_once DOL_DOCUMENT_ROOT . '/hrm/class/position.class.php';
36require_once DOL_DOCUMENT_ROOT . '/hrm/class/job.class.php';
37require_once DOL_DOCUMENT_ROOT . '/hrm/lib/hrm_position.lib.php';
38//dol_include_once('/hrm/position.php');
39
40// Get Parameters
41$action = GETPOST('action', 'aZ09') ? GETPOST('action', 'aZ09') : 'view'; // The action 'add', 'create', 'edit', 'update', 'view', ...
42$backtopage = GETPOST('backtopage', 'alpha');
43$backtopageforcancel = GETPOST('backtopageforcancel', 'alpha');
44$id = GETPOST('id', 'int');
45
46// Initialize technical objects
47$form = new Form($db);
48$object = new Position($db);
49$res = $object->fetch($id);
50if ($res < 0) {
51 dol_print_error($db, $object->error);
52}
53
54// Permissions
55$permissiontoread = $user->rights->hrm->all->read;
56$permissiontoadd = $user->rights->hrm->all->write; // Used by the include of actions_addupdatedelete.inc.php and actions_lineupdown.inc.php
57$permissiontodelete = $user->rights->hrm->all->delete;
58$permissiondellink = $user->rights->hrm->all->write; // Used by the include of actions_dellink.inc.php
59$upload_dir = $conf->hrm->multidir_output[isset($object->entity) ? $object->entity : 1] . '/position';
60
61// Security check (enable the most restrictive one)
62//if ($user->socid > 0) accessforbidden();
63//if ($user->socid > 0) $socid = $user->socid;
64//$isdraft = (($object->status == $object::STATUS_DRAFT) ? 1 : 0);
65//restrictedArea($user, $object->element, $object->id, $object->table_element, '', 'fk_soc', 'rowid', $isdraft);
66if (empty($conf->hrm->enabled)) accessforbidden();
67if (!$permissiontoread || ($action === 'create' && !$permissiontoadd)) accessforbidden();
68
69$langs->loadLangs(array("hrm", "other"));
70
71
72
73// Get parameters
74$id = GETPOST('id', 'int');
75$fk_job = GETPOST('fk_job', 'int');
76
77$ref = GETPOST('ref', 'alpha');
78$action = GETPOST('action', 'aZ09');
79$confirm = GETPOST('confirm', 'alpha');
80$cancel = GETPOST('cancel', 'aZ09');
81$contextpage = GETPOST('contextpage', 'aZ') ? GETPOST('contextpage', 'aZ') : 'positioncard'; // To manage different context of search
82$backtopage = GETPOST('backtopage', 'alpha');
83$backtopageforcancel = GETPOST('backtopageforcancel', 'alpha');
84// $lineid = GETPOST('lineid', 'int');
85
86// Initialize technical objects
87//$object = new Position($db);
88//$res = $object->fetch($id);
89/*if ($res < 0) {
90 dol_print_error($db, &$object->error);
91}*/
92
93$extrafields = new ExtraFields($db);
94
95$diroutputmassaction = $conf->hrm->dir_output . '/temp/massgeneration/' . $user->id;
96$hookmanager->initHooks(array('positioncard', 'globalcard')); // Note that conf->hooks_modules contains array
97
98// Fetch optionals attributes and labels
99$extrafields->fetch_name_optionals_label($object->table_element);
100
101$search_array_options = $extrafields->getOptionalsFromPost($object->table_element, '', 'search_');
102
103// Initialize array of search criterias
104$search_all = GETPOST("search_all", 'alpha');
105$search = array();
106foreach ($object->fields as $key => $val) {
107 if (GETPOST('search_' . $key, 'alpha')) {
108 $search[$key] = GETPOST('search_' . $key, 'alpha');
109 }
110}
111
112if (empty($action) && empty($id) && empty($ref)) {
113 $action = 'view';
114}
115
116// Load object
117include DOL_DOCUMENT_ROOT . '/core/actions_fetchobject.inc.php'; // Must be include, not include_once.
118
119
120/*
121 * Actions
122 */
123
124$parameters = array();
125$reshook = $hookmanager->executeHooks('doActions', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks
126if ($reshook < 0) {
127 setEventMessages($hookmanager->error, $hookmanager->errors, 'errors');
128}
129
130if (empty($reshook)) {
131 $error = 0;
132
133 $backurlforlist = dol_buildpath('/hrm/position_list.php', 1);
134
135 if (empty($backtopage) || ($cancel && empty($fk_job))) {
136 if (empty($backtopage) || ($cancel && strpos($backtopage, '__ID__'))) {
137 if (empty($id) && (($action != 'add' && $action != 'create') || $cancel)) {
138 $backtopage = $backurlforlist;
139 } else {
140 $backtopage = dol_buildpath('/hrm/position_card.php', 1) . '?id=' . ($id > 0 ? $id : '__ID__');
141 }
142 }
143 }
144
145 $triggermodname = 'HRM_POSITION_MODIFY'; // Name of trigger action code to execute when we modify record
146
147 // Actions cancel, add, update, update_extras, confirm_validate, confirm_delete, confirm_deleteline, confirm_clone, confirm_close, confirm_setdraft, confirm_reopen
148 include DOL_DOCUMENT_ROOT . '/core/actions_addupdatedelete.inc.php';
149
150 // Actions when linking object each other
151 include DOL_DOCUMENT_ROOT . '/core/actions_dellink.inc.php';
152
153 // Actions when printing a doc from card
154 include DOL_DOCUMENT_ROOT . '/core/actions_printing.inc.php';
155
156 // Action to move up and down lines of object
157 //include DOL_DOCUMENT_ROOT.'/core/actions_lineupdown.inc.php';
158
159 // Action to build doc
160 include DOL_DOCUMENT_ROOT . '/core/actions_builddoc.inc.php';
161
162 if ($action == 'set_thirdparty' && $permissiontoadd) {
163 $object->setValueFrom('fk_soc', GETPOST('fk_soc', 'int'), '', '', 'date', '', $user, $triggermodname);
164 }
165 if ($action == 'classin' && $permissiontoadd) {
166 $object->setProject(GETPOST('projectid', 'int'));
167 }
168
169 // Actions to send emails
170 $triggersendname = 'HRM_POSITION_SENTBYMAIL';
171 $autocopy = 'MAIN_MAIL_AUTOCOPY_POSITION_TO';
172 $trackid = 'position' . $object->id;
173 include DOL_DOCUMENT_ROOT . '/core/actions_sendmails.inc.php';
174}
175
176
177/*
178 * View
179 */
180
181displayPositionCard($object);
182
183
184
191function displayPositionCard(&$object)
192{
193 global $user, $langs, $db, $conf, $extrafields, $hookmanager, $action, $permissiontoadd, $permissiontodelete;
194
195 $id = $object->id;
196
197 /*
198 * View
199 *
200 * Put here all code to build page
201 */
202
203 $form = new Form($db);
204 $formfile = new FormFile($db);
205 $formproject = new FormProjets($db);
206
207 $backtopage = GETPOST('backtopage', 'alpha');
208 $backtopageforcancel = GETPOST('backtopageforcancel', 'alpha');
209
210 $title = $langs->trans("Position");
211 $help_url = '';
212 llxHeader('', $title, $help_url);
213
214
215 // Part to edit record
216 if (($id || $ref) && $action == 'edit') {
217 print load_fiche_titre($langs->trans("Position"), '', 'object_' . $object->picto);
218
219 print '<form method="POST" action="' . $_SERVER["PHP_SELF"] . '?id=' . $object->id . '">';
220 print '<input type="hidden" name="token" value="' . newToken() . '">';
221 print '<input type="hidden" name="action" value="update">';
222 print '<input type="hidden" name="id" value="' . $object->id . '">';
223
224 if ($backtopage) {
225 print '<input type="hidden" name="backtopage" value="' . $backtopage . '">';
226 }
227 if ($backtopageforcancel) {
228 print '<input type="hidden" name="backtopageforcancel" value="' . $backtopageforcancel . '">';
229 }
230
231 print dol_get_fiche_head();
232
233 print '<table class="border centpercent tableforfieldedit">' . "\n";
234
235 // Common attributes
236 include DOL_DOCUMENT_ROOT . '/core/tpl/commonfields_edit.tpl.php';
237
238 // Other attributes
239 include DOL_DOCUMENT_ROOT . '/core/tpl/extrafields_edit.tpl.php';
240
241 print '</table>';
242
243 print dol_get_fiche_end();
244
245 print '<div class="center"><input type="submit" class="button button-save" name="save" value="' . $langs->trans("Save") . '">';
246 print ' &nbsp; <input type="submit" class="button button-cancel" name="cancel" value="' . $langs->trans("Cancel") . '">';
247 print '</div>';
248
249 print '</form>';
250 }
251
252
253 // Part to show record
254 if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'create'))) {
255 $res = $object->fetch_optionals();
256
257
258 $head = positionCardPrepareHead($object);
259 print dol_get_fiche_head($head, 'position', $langs->trans("Workstation"), -1, $object->picto);
260
261 $formconfirm = '';
262
263 // Confirmation to delete
264 if ($action == 'delete') {
265 $formconfirm = $form->formconfirm($_SERVER["PHP_SELF"] . '?id=' . $object->id, $langs->trans('DeletePosition'), $langs->trans('ConfirmDeleteObject'), 'confirm_delete', '', 0, 1);
266 }
267
268 // Call Hook formConfirm
269 $parameters = array('formConfirm' => $formconfirm/*, 'lineid' => $lineid*/);
270 $reshook = $hookmanager->executeHooks('formConfirm', $parameters, $object, $action); // Note that $action and $object may have been modified by hook
271 if (empty($reshook)) {
272 $formconfirm .= $hookmanager->resPrint;
273 } elseif ($reshook > 0) {
274 $formconfirm = $hookmanager->resPrint;
275 }
276
277 // Print form confirm
278 print $formconfirm;
279
280
281 // Object card
282 // ------------------------------------------------------------
283 $linkback = '<a href="'.DOL_URL_ROOT.'/hrm/position_list.php">'.$langs->trans("BackToList").'</a>';
284
285 $morehtmlref = '<div class="refidno">';
286 $u_position = new User(($db));
287 $u_position->fetch($object->fk_user);
288 $morehtmlref .= ($u_position->id > 0 ? $u_position->getNomUrl(1) : $langs->trans('Employee').' : ');
289 $job = new Job($db);
290 $job->fetch($object->fk_job);
291 $morehtmlref .= '<br>'.$langs->trans('JobProfile').' : '.$job->getNomUrl(1);
292 $morehtmlref .= '</div>';
293
294 dol_banner_tab($object, 'id', $linkback, 1, 'rowid', 'rowid', $morehtmlref);
295
296
297 print '<div class="fichecenter">';
298 print '<div class="fichehalfleft">';
299 print '<div class="underbanner clearboth"></div>';
300 print '<table class="border centpercent tableforfield">' . "\n";
301
302 // Common attributes
303 //$keyforbreak='fieldkeytoswitchonsecondcolumn'; // We change column just before this field
304 //unset($object->fields['fk_project']); // Hide field already shown in banner
305 //unset($object->fields['fk_soc']); // Hide field already shown in banner
306 $object->fields['fk_user']['visible']=0; // Already in banner
307 $object->fields['fk_job']['visible']=0; // Already in banner
308 include DOL_DOCUMENT_ROOT . '/core/tpl/commonfields_view.tpl.php';
309
310 // Other attributes. Fields from hook formObjectOptions and Extrafields.
311 include DOL_DOCUMENT_ROOT . '/core/tpl/extrafields_view.tpl.php';
312
313 print '</table>';
314 print '</div>';
315 print '</div>';
316
317 print '<div class="clearboth"></div>';
318
319 print dol_get_fiche_end();
320
321 /*
322 * Action bar
323 */
324 print '<div class="tabsAction">';
325
326 $parameters = array();
327 $reshook = $hookmanager->executeHooks('addMoreActionsButtons', $parameters, $object, $action); // Note that $action and $object may have been modified by hook
328
329
330 print dolGetButtonAction($langs->trans('Modify'), '', 'default', $_SERVER["PHP_SELF"] . '?id=' . $object->id . '&action=edit&token=' . newToken(), '', $permissiontoadd);
331
332 // Delete (need delete permission, or if draft, just need create/modify permission)
333 print dolGetButtonAction($langs->trans('Delete'), '', 'delete', $_SERVER['PHP_SELF'] . '?id=' . $object->id . '&action=delete&token=' . newToken(), '', $permissiontodelete);
334 }
335}
336
337//if ($action != 'presend') {
338// $formfile = new FormFile($db);
339// print '<div class="fichecenter"><div class="fichehalfleft">';
340//
341// if (empty($conf->global->SOCIETE_DISABLE_BUILDDOC)) {
342// print '<a name="builddoc"></a>'; // ancre
343//
344// /*
345// * Generated documents
346// */
347// $filedir = $conf->societe->multidir_output[$object->entity].'/'.$object->id;
348// $urlsource = $_SERVER["PHP_SELF"]."?socid=".$object->id;
349// $genallowed = $user->hasRight('societe', 'lire');
350// $delallowed = $user->hasRight('societe', 'creer');
351//
352// print $formfile->showdocuments('company', $object->id, $filedir, $urlsource, $genallowed, $delallowed, $object->model_pdf, 0, 0, 0, 28, 0, 'entity='.$object->entity, 0, '', $object->default_lang);
353// }
354//
355//
356// print '</div><div class="fichehalfright">';
357//
358// $MAXEVENT = 10;
359//
360// $morehtmlright = dolGetButtonTitle($langs->trans('SeeAll'), '', 'fa fa-bars imgforviewmode', DOL_URL_ROOT.'/societe/agenda.php?socid='.$object->id);
361//
362// // List of actions on element
363// include_once DOL_DOCUMENT_ROOT.'/core/class/html.formactions.class.php';
364// $formactions = new FormActions($db);
365// $somethingshown = $formactions->showactions($object, '', $object->id, 1, '', $MAXEVENT, '', $morehtmlright); // Show all action for thirdparty
366//
367// print '</div></div>';
368//}
369
370
371print '</table>' . "\n";
372print '</div>' . "\n";
373
374print '</form>' . "\n";
375
376
377if ($action !== 'edit' && $action !== 'create') {
378 print '<div class="fichecenter"><div class="fichehalfleft">';
379
380 // Show links to link elements
381 $linktoelem = $form->showLinkToObjectBlock($object, null, array('position'));
382 $somethingshown = $form->showLinkedObjectBlock($object, $linktoelem);
383
384
385 print '</div><div class="fichehalfright">';
386
387 $MAXEVENT = 10;
388
389 $morehtmlcenter = dolGetButtonTitle($langs->trans('SeeAll'), '', 'fa fa-bars imgforviewmode', DOL_URL_ROOT.'/hrm/position_agenda.php?id='.$object->id);
390
391 // List of actions on element
392 include_once DOL_DOCUMENT_ROOT . '/core/class/html.formactions.class.php';
393 $formactions = new FormActions($db);
394 $somethingshown = $formactions->showactions($object, $object->element . '@' . $object->module, (is_object($object->thirdparty) ? $object->thirdparty->id : 0), 1, '', $MAXEVENT, '', $morehtmlcenter);
395
396 print '</div></div>';
397}
398
399
400// End of page
401llxFooter();
402$db->close();
if(preg_match('/set_([a-z0-9_\-]+)/i', $action, $reg)) if(preg_match('/del_([a-z0-9_\-]+)/i', $action, $reg)) if($action=='set') elseif( $action=='specimen') elseif($action=='setmodel') elseif( $action=='del') elseif($action=='setdoc') $formactions
View.
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 standard extra fields.
Class to manage building of HTML components.
Class to offer components to list and upload files.
Class to manage generation of HTML components Only common components must be here.
Class to manage building of HTML components.
Class for Job.
Definition job.class.php:37
Class for Position.
Class to manage Dolibarr users.
dol_banner_tab($object, $paramid, $morehtml='', $shownav=1, $fieldid='rowid', $fieldref='ref', $morehtmlref='', $moreparam='', $nodbprefix=0, $morehtmlleft='', $morehtmlstatus='', $onlybanner=0, $morehtmlright='')
Show tab footer of a card.
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...
dolGetButtonTitle($label, $helpText='', $iconClass='fa fa-file', $url='', $id='', $status=1, $params=array())
Function dolGetButtonTitle : this kind of buttons are used in title in list.
dol_get_fiche_end($notab=0)
Return tab footer of a card.
dolGetButtonAction($label, $text='', $actionType='default', $url='', $id='', $userRight=1, $params=array())
Function dolGetButtonAction.
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_buildpath($path, $type=0, $returnemptyifnotfound=0)
Return path of url or filesystem.
positionCardPrepareHead($object)
Prepare array of tabs for positions.
displayPositionCard(&$object)
Show the card of a position.
accessforbidden($message='', $printheader=1, $printfooter=1, $showonlymessage=0, $params=null)
Show a message to say access is forbidden and stop program.