dolibarr 19.0.3
job_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/job.class.php';
36require_once DOL_DOCUMENT_ROOT . '/hrm/lib/hrm_job.lib.php';
37require_once DOL_DOCUMENT_ROOT . '/hrm/class/skillrank.class.php';
38
39// Load translation files required by the page
40$langs->loadLangs(array('hrm', 'other', 'products')); // why products?
41
42// Get parameters
43$id = GETPOST('id', 'int');
44$ref = GETPOST('ref', 'alpha');
45$action = GETPOST('action', 'aZ09');
46$confirm = GETPOST('confirm', 'alpha');
47$cancel = GETPOST('cancel', 'aZ09');
48$contextpage = GETPOST('contextpage', 'aZ') ? GETPOST('contextpage', 'aZ') : 'jobcard'; // To manage different context of search
49$backtopage = GETPOST('backtopage', 'alpha');
50$backtopageforcancel = GETPOST('backtopageforcancel', 'alpha');
51$lineid = GETPOST('lineid', 'int');
52
53// Initialize technical objects
54$object = new Job($db);
55$extrafields = new ExtraFields($db);
56$diroutputmassaction = $conf->hrm->dir_output . '/temp/massgeneration/' . $user->id;
57$hookmanager->initHooks(array('jobcard', 'globalcard')); // Note that conf->hooks_modules contains array
58
59// Fetch optionals attributes and labels
60$extrafields->fetch_name_optionals_label($object->table_element);
61
62$search_array_options = $extrafields->getOptionalsFromPost($object->table_element, '', 'search_');
63
64// Initialize array of search criterias
65$search_all = GETPOST("search_all", 'alpha');
66$search = array();
67foreach ($object->fields as $key => $val) {
68 if (GETPOST('search_' . $key, 'alpha')) {
69 $search[$key] = GETPOST('search_' . $key, 'alpha');
70 }
71}
72
73if (empty($action) && empty($id) && empty($ref)) {
74 $action = 'view';
75}
76
77// Load object
78include DOL_DOCUMENT_ROOT . '/core/actions_fetchobject.inc.php'; // Must be include, not include_once.
79
80// Permissions
81$permissiontoread = $user->rights->hrm->all->read;
82$permissiontoadd = $user->rights->hrm->all->write; // Used by the include of actions_addupdatedelete.inc.php and actions_lineupdown.inc.php
83$permissiontodelete = $user->rights->hrm->all->delete;
84$upload_dir = $conf->hrm->multidir_output[isset($object->entity) ? $object->entity : 1] . '/job';
85
86// Security check (enable the most restrictive one)
87//if ($user->socid > 0) accessforbidden();
88//if ($user->socid > 0) $socid = $user->socid;
89//$isdraft = (($object->status == $object::STATUS_DRAFT) ? 1 : 0);
90//restrictedArea($user, $object->element, $object->id, $object->table_element, '', 'fk_soc', 'rowid', $isdraft);
91if (empty($conf->hrm->enabled)) {
93}
94if (!$permissiontoread || ($action === 'create' && !$permissiontoadd)) {
96}
97
98
99/*
100 * Actions
101 */
102
103$parameters = array();
104$reshook = $hookmanager->executeHooks('doActions', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks
105if ($reshook < 0) {
106 setEventMessages($hookmanager->error, $hookmanager->errors, 'errors');
107}
108
109if (empty($reshook)) {
110 $error = 0;
111
112 $backurlforlist = dol_buildpath('/hrm/job_list.php', 1);
113
114 if (empty($backtopage) || ($cancel && empty($id))) {
115 if (empty($backtopage) || ($cancel && strpos($backtopage, '__ID__'))) {
116 if (empty($id) && (($action != 'add' && $action != 'create') || $cancel)) {
117 $backtopage = $backurlforlist;
118 } else {
119 $backtopage = dol_buildpath('/hrm/job_card.php', 1) . '?id=' . ($id > 0 ? $id : '__ID__');
120 }
121 }
122 }
123
124 $triggermodname = 'HRM_JOB_MODIFY'; // Name of trigger action code to execute when we modify record
125
126
127 // Actions cancel, add, update, update_extras, confirm_validate, confirm_delete, confirm_deleteline, confirm_clone, confirm_close, confirm_setdraft, confirm_reopen
128 if ($action != 'confirm_clone') {
129 include DOL_DOCUMENT_ROOT . '/core/actions_addupdatedelete.inc.php';
130 }
131
132 // Actions when linking object each other
133 include DOL_DOCUMENT_ROOT . '/core/actions_dellink.inc.php';
134
135 // Actions when printing a doc from card
136 include DOL_DOCUMENT_ROOT . '/core/actions_printing.inc.php';
137
138 // Action to move up and down lines of object
139 //include DOL_DOCUMENT_ROOT.'/core/actions_lineupdown.inc.php';
140
141 // Action to build doc
142 include DOL_DOCUMENT_ROOT . '/core/actions_builddoc.inc.php';
143
144 if ($action == 'set_thirdparty' && $permissiontoadd) {
145 $object->setValueFrom('fk_soc', GETPOST('fk_soc', 'int'), '', '', 'date', '', $user, $triggermodname);
146 }
147 if ($action == 'classin' && $permissiontoadd) {
148 $object->setProject(GETPOST('projectid', 'int'));
149 }
150
151 // Actions to send emails
152 $triggersendname = 'HRM_JOB_SENTBYMAIL';
153 $autocopy = 'MAIN_MAIL_AUTOCOPY_JOB_TO';
154 $trackid = 'job' . $object->id;
155 include DOL_DOCUMENT_ROOT . '/core/actions_sendmails.inc.php';
156
157 if ($action == 'confirm_clone' && $confirm != 'yes') {
158 $action = '';
159 }
160
161 if ($action == 'confirm_clone' && $confirm == 'yes' && ($user->hasRight('salaries', 'write'))) {
162 $db->begin();
163
164 $originalId = $id;
165
166 $object->fetch($id);
167 $skillRequire = $object->getSkillRankForJob($originalId);
168 if ($object->id > 0) {
169 $object->id = $object->ref = null;
170
171 if (GETPOST('clone_label', 'alphanohtml')) {
172 $object->label = GETPOST('clone_label', 'alphanohtml');
173 } else {
174 $object->label = $langs->trans("CopyOf").' '.$object->label;
175 }
176 if (GETPOST('clone_skills_required')) {
177 $cloneSkillRequired = GETPOST('clone_skills_required');
178 }
179
180 $id = $object->create($user);
181 if ($id > 0) {
182 if (!empty($cloneSkillRequired)) {
183 $i = 0;
184 while ($i < count($skillRequire)) {
185 $skillrank = new SkillRank($db);
186 $skillrank->createFromClone($user, $skillRequire[$i]->rowid, $id);
187 $i++;
188 }
189 }
190 $db->commit();
191 $db->close();
192
193 header("Location: ".$_SERVER["PHP_SELF"]."?id=".$id);
194 exit;
195 } else {
196 $id = $originalId;
197 $db->rollback();
198
199 setEventMessages($object->error, $object->errors, 'errors');
200 }
201 } else {
202 $db->rollback();
203 dol_print_error($db, $object->error);
204 }
205 }
206}
207
208
209/*
210 * View
211 *
212 * Put here all code to build page
213 */
214
215$form = new Form($db);
216$formfile = new FormFile($db);
217$formproject = new FormProjets($db);
218
219$title = $langs->trans("Job");
220$help_url = '';
221llxHeader('', $title, $help_url);
222
223// Example : Adding jquery code
224// print '<script type="text/javascript" language="javascript">
225// jQuery(document).ready(function() {
226// function init_myfunc()
227// {
228// jQuery("#myid").removeAttr(\'disabled\');
229// jQuery("#myid").attr(\'disabled\',\'disabled\');
230// }
231// init_myfunc();
232// jQuery("#mybutton").click(function() {
233// init_myfunc();
234// });
235// });
236// </script>';
237
238
239// Part to create
240if ($action == 'create') {
241 print load_fiche_titre($langs->trans("NewJobProfile", $langs->transnoentities('Job')), '', 'object_' . $object->picto);
242
243 print '<form method="POST" action="' . $_SERVER["PHP_SELF"] . '">';
244 print '<input type="hidden" name="token" value="' . newToken() . '">';
245 print '<input type="hidden" name="action" value="add">';
246 if ($backtopage) {
247 print '<input type="hidden" name="backtopage" value="' . $backtopage . '">';
248 }
249 if ($backtopageforcancel) {
250 print '<input type="hidden" name="backtopageforcancel" value="' . $backtopageforcancel . '">';
251 }
252
253 print dol_get_fiche_head(array(), '');
254
255 print '<table class="border centpercent tableforfieldcreate">' . "\n";
256
257 // Common attributes
258 include DOL_DOCUMENT_ROOT . '/core/tpl/commonfields_add.tpl.php';
259
260 // Other attributes
261 include DOL_DOCUMENT_ROOT . '/core/tpl/extrafields_add.tpl.php';
262
263 print '</table>' . "\n";
264
265 print dol_get_fiche_end();
266
267 print '<div class="center">';
268 print '<input type="submit" class="button" name="add" value="' . dol_escape_htmltag($langs->trans("Create")) . '">';
269 print '&nbsp; ';
270 print '<input type="' . ($backtopage ? "submit" : "button") . '" class="button button-cancel" name="cancel" value="' . dol_escape_htmltag($langs->trans("Cancel")) . '"' . ($backtopage ? '' : ' onclick="history.go(-1)"') . '>'; // Cancel for create does not post form if we don't know the backtopage
271 print '</div>';
272
273 print '</form>';
274
275 //dol_set_focus('input[name="ref"]');
276}
277
278// Part to edit record
279if (($id || $ref) && $action == 'edit') {
280 print load_fiche_titre($langs->trans("JobProfile"), '', 'object_' . $object->picto);
281
282 print '<form method="POST" action="' . $_SERVER["PHP_SELF"] . '">';
283 print '<input type="hidden" name="token" value="' . newToken() . '">';
284 print '<input type="hidden" name="action" value="update">';
285 print '<input type="hidden" name="id" value="' . $object->id . '">';
286 if ($backtopage) {
287 print '<input type="hidden" name="backtopage" value="' . $backtopage . '">';
288 }
289 if ($backtopageforcancel) {
290 print '<input type="hidden" name="backtopageforcancel" value="' . $backtopageforcancel . '">';
291 }
292
293 print dol_get_fiche_head();
294
295 print '<table class="border centpercent tableforfieldedit">' . "\n";
296
297 // Common attributes
298 include DOL_DOCUMENT_ROOT . '/core/tpl/commonfields_edit.tpl.php';
299
300 // Other attributes
301 include DOL_DOCUMENT_ROOT . '/core/tpl/extrafields_edit.tpl.php';
302
303 print '</table>';
304
305 print dol_get_fiche_end();
306
307 print '<div class="center"><input type="submit" class="button button-save" name="save" value="' . $langs->trans("Save") . '">';
308 print ' &nbsp; <input type="submit" class="button button-cancel" name="cancel" value="' . $langs->trans("Cancel") . '">';
309 print '</div>';
310
311 print '</form>';
312}
313
314// Part to show record
315if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'create'))) {
316 $res = $object->fetch_optionals();
317
318 $head = jobPrepareHead($object);
319 $picto = 'company.png';
320 print dol_get_fiche_head($head, 'job_card', $langs->trans("Workstation"), -1, $object->picto);
321
322 $formconfirm = '';
323
324 // Confirmation to delete
325 if ($action == 'delete') {
326 $formconfirm = $form->formconfirm($_SERVER["PHP_SELF"] . '?id=' . $object->id, $langs->trans('DeleteJob'), $langs->trans('ConfirmDeleteObject'), 'confirm_delete', '', 0, 1);
327 }
328 // Confirmation to delete line
329 if ($action == 'deleteline') {
330 $formconfirm = $form->formconfirm($_SERVER["PHP_SELF"] . '?id=' . $object->id . '&lineid=' . $lineid, $langs->trans('DeleteLine'), $langs->trans('ConfirmDeleteLine'), 'confirm_deleteline', '', 0, 1);
331 }
332 // Clone confirmation
333 if ($action == 'clone') {
334 // Create an array for form
335 $formquestion = array(
336 array('type' => 'text', 'name' => 'clone_label', 'label' => $langs->trans("Label"), 'value' => $langs->trans("CopyOf").' '.$object->label),
337 array('type' => 'checkbox', 'name' => 'clone_skills_required', 'label' => $langs->trans("RequiredSkills"), 'value' => '',),
338
339 );
340 $formconfirm = $form->formconfirm($_SERVER["PHP_SELF"].'?id='.$object->id, $langs->trans('ToClone'), $langs->trans('ConfirmCloneAsk', $object->label), 'confirm_clone', $formquestion, 'yes', 1, 280);
341 }
342
343 // Confirmation of action xxxx
344 if ($action == 'xxx') {
345 $formquestion = array();
346 /*
347 $forcecombo=0;
348 if ($conf->browser->name == 'ie') $forcecombo = 1; // There is a bug in IE10 that make combo inside popup crazy
349 $formquestion = array(
350 // 'text' => $langs->trans("ConfirmClone"),
351 // array('type' => 'checkbox', 'name' => 'clone_content', 'label' => $langs->trans("CloneMainAttributes"), 'value' => 1),
352 // array('type' => 'checkbox', 'name' => 'update_prices', 'label' => $langs->trans("PuttingPricesUpToDate"), 'value' => 1),
353 // array('type' => 'other', 'name' => 'idwarehouse', 'label' => $langs->trans("SelectWarehouseForStockDecrease"), 'value' => $formproduct->selectWarehouses(GETPOST('idwarehouse')?GETPOST('idwarehouse'):'ifone', 'idwarehouse', '', 1, 0, 0, '', 0, $forcecombo))
354 );
355 */
356 $formconfirm = $form->formconfirm($_SERVER["PHP_SELF"] . '?id=' . $object->id, $langs->trans('XXX'), $text, 'confirm_xxx', $formquestion, 0, 1, 220);
357 }
358
359 // Call Hook formConfirm
360 $parameters = array('formConfirm' => $formconfirm, 'lineid' => $lineid);
361 $reshook = $hookmanager->executeHooks('formConfirm', $parameters, $object, $action); // Note that $action and $object may have been modified by hook
362 if (empty($reshook)) {
363 $formconfirm .= $hookmanager->resPrint;
364 } elseif ($reshook > 0) {
365 $formconfirm = $hookmanager->resPrint;
366 }
367
368 // Print form confirm
369 print $formconfirm;
370
371
372 // Object card
373 // ------------------------------------------------------------
374 $linkback = '<a href="' . dol_buildpath('/hrm/job_list.php', 1) . '?restore_lastsearch_values=1' . (!empty($socid) ? '&socid=' . $socid : '') . '">' . $langs->trans("BackToList") . '</a>';
375
376 $morehtmlref = '<div class="refid">';
377 $morehtmlref.= $object->label;
378 $morehtmlref .= '</div>';
379
380
381 dol_banner_tab($object, 'id', $linkback, 1, 'rowid', 'rowid', $morehtmlref);
382
383
384 print '<div class="fichecenter">';
385 print '<div class="fichehalfleft">';
386 print '<div class="underbanner clearboth"></div>';
387 print '<table class="border centpercent tableforfield">'."\n";
388
389 // Common attributes
390 //$keyforbreak='fieldkeytoswitchonsecondcolumn'; // We change column just before this field
391 //unset($object->fields['fk_project']); // Hide field already shown in banner
392 //unset($object->fields['fk_soc']); // Hide field already shown in banner
393 $object->fields['label']['visible']=0; // Already in banner
394 include DOL_DOCUMENT_ROOT . '/core/tpl/commonfields_view.tpl.php';
395
396 // Other attributes. Fields from hook formObjectOptions and Extrafields.
397 include DOL_DOCUMENT_ROOT . '/core/tpl/extrafields_view.tpl.php';
398
399 print '</table>';
400 print '</div>';
401 print '</div>';
402
403 print '<div class="clearboth"></div>';
404
405 print dol_get_fiche_end();
406
407
408 /*
409 * Lines
410 */
411
412 if (!empty($object->table_element_line)) {
413 // Show object lines
414 $result = $object->getLinesArray();
415
416 print ' <form name="addproduct" id="addproduct" action="' . $_SERVER["PHP_SELF"] . '?id=' . $object->id . (($action != 'editline') ? '' : '#line_' . GETPOST('lineid', 'int')) . '" method="POST">
417 <input type="hidden" name="token" value="' . newToken() . '">
418 <input type="hidden" name="action" value="' . (($action != 'editline') ? 'addline' : 'updateline') . '">
419 <input type="hidden" name="mode" value="">
420 <input type="hidden" name="page_y" value="">
421 <input type="hidden" name="id" value="' . $object->id . '">
422 ';
423
424 if (!empty($conf->use_javascript_ajax) && $object->status == 0) {
425 include DOL_DOCUMENT_ROOT . '/core/tpl/ajaxrow.tpl.php';
426 }
427
428 print '<div class="div-table-responsive-no-min">';
429 if (!empty($object->lines) || ($object->status == $object::STATUS_DRAFT && $permissiontoadd && $action != 'selectlines' && $action != 'editline')) {
430 print '<table id="tablelines" class="noborder noshadow" width="100%">';
431 }
432
433 if (!empty($object->lines)) {
434 $object->printObjectLines($action, $mysoc, null, GETPOST('lineid', 'int'), 1);
435 }
436
437 // Form to add new line
438 if ($object->status == 0 && $permissiontoadd && $action != 'selectlines') {
439 if ($action != 'editline') {
440 // Add products/services form
441
442 $parameters = array();
443 $reshook = $hookmanager->executeHooks('formAddObjectLine', $parameters, $object, $action); // Note that $action and $object may have been modified by hook
444 if ($reshook < 0) {
445 setEventMessages($hookmanager->error, $hookmanager->errors, 'errors');
446 }
447 if (empty($reshook)) {
448 $object->formAddObjectLine(1, $mysoc, $soc);
449 }
450 }
451 }
452
453 if (!empty($object->lines) || ($object->status == $object::STATUS_DRAFT && $permissiontoadd && $action != 'selectlines' && $action != 'editline')) {
454 print '</table>';
455 }
456 print '</div>';
457
458 print "</form>\n";
459 }
460
461
462 // Buttons for actions
463
464 if ($action != 'presend' && $action != 'editline') {
465 print '<div class="tabsAction">' . "\n";
466 $parameters = array();
467 $reshook = $hookmanager->executeHooks('addMoreActionsButtons', $parameters, $object, $action); // Note that $action and $object may have been modified by hook
468 if ($reshook < 0) {
469 setEventMessages($hookmanager->error, $hookmanager->errors, 'errors');
470 }
471
472 if (empty($reshook)) {
473 // Back to draft
474 if ($object->status == $object::STATUS_VALIDATED) {
475 print dolGetButtonAction($langs->trans('SetToDraft'), '', 'default', $_SERVER["PHP_SELF"] . '?id=' . $object->id . '&action=confirm_setdraft&confirm=yes&token=' . newToken(), '', $permissiontoadd);
476 }
477
478 print dolGetButtonAction($langs->trans('Modify'), '', 'default', $_SERVER["PHP_SELF"] . '?id=' . $object->id . '&action=edit&token=' . newToken(), '', $permissiontoadd);
479
480 print dolGetButtonAction($langs->trans('ToClone'), '', 'default', $_SERVER["PHP_SELF"] . '?id=' . $object->id . '&action=clone&token=' . newToken(), '', $permissiontoadd);
481
482 // Delete (need delete permission, or if draft, just need create/modify permission)
483 print dolGetButtonAction($langs->trans('Delete'), '', 'delete', $_SERVER['PHP_SELF'] . '?id=' . $object->id . '&action=delete&token=' . newToken(), '', $permissiontodelete);
484 }
485 print '</div>' . "\n";
486 }
487
488
489 // Select mail models is same action as presend
490 if (GETPOST('modelselected')) {
491 $action = 'presend';
492 }
493
494 if ($action != 'presend') {
495 print '<div class="fichecenter"><div class="fichehalfleft">';
496 print '<a name="builddoc"></a>'; // ancre
497
498 $includedocgeneration = 0;
499
500 // Documents
501 if ($includedocgeneration) {
502 $objref = dol_sanitizeFileName($object->ref);
503 $relativepath = $objref . '/' . $objref . '.pdf';
504 $filedir = $conf->hrm->dir_output . '/' . $object->element . '/' . $objref;
505 $urlsource = $_SERVER["PHP_SELF"] . "?id=" . $object->id;
506 $genallowed = $user->rights->hrm->job->read; // If you can read, you can build the PDF to read content
507 $delallowed = $user->rights->hrm->job->write; // If you can create/edit, you can remove a file on card
508 print $formfile->showdocuments('hrm:Job', $object->element . '/' . $objref, $filedir, $urlsource, $genallowed, $delallowed, $object->model_pdf, 1, 0, 0, 28, 0, '', '', '', $langs->defaultlang);
509 }
510
511 // Show links to link elements
512 $linktoelem = $form->showLinkToObjectBlock($object, null, array('job'));
513 $somethingshown = $form->showLinkedObjectBlock($object, $linktoelem);
514
515
516 print '</div><div class="fichehalfright">';
517
518 $MAXEVENT = 10;
519
520 $morehtmlcenter = dolGetButtonTitle($langs->trans('SeeAll'), '', 'fa fa-bars imgforviewmode', DOL_URL_ROOT.'/hrm/job_agenda.php?id='.$object->id);
521
522 // List of actions on element
523 include_once DOL_DOCUMENT_ROOT . '/core/class/html.formactions.class.php';
524 $formactions = new FormActions($db);
525 $somethingshown = $formactions->showactions($object, $object->element . '@' . $object->module, (is_object($object->thirdparty) ? $object->thirdparty->id : 0), 1, '', $MAXEVENT, '', $morehtmlcenter);
526
527 print '</div></div>';
528 }
529
530 // Presend form
531 $modelmail = 'job';
532 $defaulttopic = 'InformationMessage';
533 $diroutput = $conf->hrm->dir_output;
534 $trackid = 'job' . $object->id;
535
536 include DOL_DOCUMENT_ROOT . '/core/tpl/card_presend.tpl.php';
537}
538
539// End of page
540llxFooter();
541$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:55
llxFooter()
Empty footer.
Definition wrapper.php:69
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 SkillRank.
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.
dol_sanitizeFileName($str, $newstr='_', $unaccent=1)
Clean a string to use it as a file name.
dol_escape_htmltag($stringtoescape, $keepb=0, $keepn=0, $noescapetags='', $escapeonlyhtmltags=0, $cleanalsojavascript=0)
Returns text escaped for inclusion in HTML alt or title or value tags, or into values of HTML input f...
jobPrepareHead($object)
Prepare array of tabs for Job.
publicphonebutton2 phonegreen basiclayout basiclayout TotalHT VATCode TotalVAT TotalLT1 TotalLT2 TotalTTC TotalHT clearboth nowraponall right right takeposterminal SELECT e rowid
Definition invoice.php:1907
accessforbidden($message='', $printheader=1, $printfooter=1, $showonlymessage=0, $params=null)
Show a message to say access is forbidden and stop program.