dolibarr  19.0.0-dev
recruitmentjobposition_card.php
Go to the documentation of this file.
1 <?php
2 /* Copyright (C) 2017 Laurent Destailleur <eldy@users.sourceforge.net>
3  *
4  * This program is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation; either version 3 of the License, or
7  * (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program. If not, see <https://www.gnu.org/licenses/>.
16  */
17 
24 // Load Dolibarr environment
25 require_once '../main.inc.php';
26 require_once DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php';
27 require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php';
28 require_once DOL_DOCUMENT_ROOT.'/core/class/html.formprojet.class.php';
29 require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php';
30 require_once DOL_DOCUMENT_ROOT.'/recruitment/class/recruitmentjobposition.class.php';
31 require_once DOL_DOCUMENT_ROOT.'/recruitment/lib/recruitment_recruitmentjobposition.lib.php';
32 
33 // Load translation files required by the page
34 $langs->loadLangs(array("recruitment", "other"));
35 
36 // Get parameters
37 $id = GETPOST('id', 'int');
38 $ref = GETPOST('ref', 'alpha');
39 $action = GETPOST('action', 'aZ09');
40 $confirm = GETPOST('confirm', 'alpha');
41 $cancel = GETPOST('cancel', 'aZ09');
42 $contextpage = GETPOST('contextpage', 'aZ') ?GETPOST('contextpage', 'aZ') : 'recruitmentjobpositioncard'; // To manage different context of search
43 $backtopage = GETPOST('backtopage', 'alpha');
44 $backtopageforcancel = GETPOST('backtopageforcancel', 'alpha');
45 $lineid = GETPOST('lineid', 'int');
46 
47 // Initialize technical objects
48 $object = new RecruitmentJobPosition($db);
49 $extrafields = new ExtraFields($db);
50 $diroutputmassaction = $conf->recruitment->dir_output.'/temp/massgeneration/'.$user->id;
51 $hookmanager->initHooks(array('recruitmentjobpositioncard', 'globalcard')); // Note that conf->hooks_modules contains array
52 
53 // Fetch optionals attributes and labels
54 $extrafields->fetch_name_optionals_label($object->table_element);
55 
56 $search_array_options = $extrafields->getOptionalsFromPost($object->table_element, '', 'search_');
57 
58 // Initialize array of search criterias
59 $search_all = GETPOST("search_all", 'alpha');
60 $search = array();
61 foreach ($object->fields as $key => $val) {
62  if (GETPOST('search_'.$key, 'alpha')) {
63  $search[$key] = GETPOST('search_'.$key, 'alpha');
64  }
65 }
66 
67 if (empty($action) && empty($id) && empty($ref)) {
68  $action = 'create';
69 }
70 
71 // Load object
72 include DOL_DOCUMENT_ROOT.'/core/actions_fetchobject.inc.php'; // Must be include, not include_once.
73 
74 
75 $permissiontoread = $user->hasRight('recruitment', 'recruitmentjobposition', 'read');
76 $permissiontoadd = $user->hasRight('recruitment', 'recruitmentjobposition', 'write'); // Used by the include of actions_addupdatedelete.inc.php and actions_lineupdown.inc.php
77 $permissiontodelete = $user->hasRight('recruitment', 'recruitmentjobposition', 'delete') || ($permissiontoadd && isset($object->status) && $object->status == $object::STATUS_DRAFT);
78 $permissionnote = $user->hasRight('recruitment', 'recruitmentjobposition', 'write'); // Used by the include of actions_setnotes.inc.php
79 $permissiondellink = $user->hasRight('recruitment', 'recruitmentjobposition', 'write'); // Used by the include of actions_dellink.inc.php
80 $upload_dir = $conf->recruitment->multidir_output[isset($object->entity) ? $object->entity : 1];
81 
82 $usercanclose = $permissiontoadd;
83 
84 // Security check - Protection if external user
85 //if ($user->socid > 0) accessforbidden();
86 //if ($user->socid > 0) $socid = $user->socid;
87 $isdraft = (($object->status == $object::STATUS_DRAFT) ? 1 : 0);
88 $result = restrictedArea($user, 'recruitment', $object->id, 'recruitment_recruitmentjobposition', 'recruitmentjobposition', '', 'rowid', $isdraft);
89 
90 
91 /*
92  * Actions
93  */
94 
95 $parameters = array();
96 $reshook = $hookmanager->executeHooks('doActions', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks
97 if ($reshook < 0) {
98  setEventMessages($hookmanager->error, $hookmanager->errors, 'errors');
99 }
100 
101 if (empty($reshook)) {
102  $error = 0;
103 
104  $backurlforlist = dol_buildpath('/recruitment/recruitmentjobposition_list.php', 1);
105 
106  if (empty($backtopage) || ($cancel && empty($id))) {
107  if (empty($backtopage) || ($cancel && strpos($backtopage, '__ID__'))) {
108  if (empty($id) && (($action != 'add' && $action != 'create') || $cancel)) {
109  $backtopage = $backurlforlist;
110  } else {
111  $backtopage = dol_buildpath('/recruitment/recruitmentjobposition_card.php', 1).'?id='.((!empty($id) && $id > 0) ? $id : '__ID__');
112  }
113  }
114  }
115  $triggermodname = 'RECRUITMENT_RECRUITMENTJOBPOSITION_MODIFY'; // Name of trigger action code to execute when we modify record
116 
117  // Actions cancel, add, update, update_extras, confirm_validate, confirm_delete, confirm_deleteline, confirm_clone, confirm_close, confirm_setdraft, confirm_reopen
118  include DOL_DOCUMENT_ROOT.'/core/actions_addupdatedelete.inc.php';
119 
120  // Actions when linking object each other
121  include DOL_DOCUMENT_ROOT.'/core/actions_dellink.inc.php';
122 
123  // Actions when printing a doc from card
124  include DOL_DOCUMENT_ROOT.'/core/actions_printing.inc.php';
125 
126  // Action to move up and down lines of object
127  //include DOL_DOCUMENT_ROOT.'/core/actions_lineupdown.inc.php';
128 
129  // Action to build doc
130  include DOL_DOCUMENT_ROOT.'/core/actions_builddoc.inc.php';
131 
132  if ($action == 'set_thirdparty' && $permissiontoadd) {
133  $object->setValueFrom('fk_soc', GETPOST('fk_soc', 'int'), '', '', 'date', '', $user, $triggermodname);
134  }
135  if ($action == 'classin' && $permissiontoadd) {
136  $object->setProject(GETPOST('projectid', 'int'));
137  }
138  if ($action == 'confirm_closeas' && $usercanclose && !GETPOST('cancel', 'alpha')) {
139  if (!(GETPOST('status', 'int') > 0)) {
140  setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("CloseAs")), null, 'errors');
141  $action = 'closeas';
142  } else {
143  // prevent browser refresh from closing proposal several times
144  if ($object->status == $object::STATUS_VALIDATED) {
145  $db->begin();
146 
147  $result = $object->cloture($user, GETPOST('status', 'int'), GETPOST('note_private', 'restricthtml'));
148  if ($result < 0) {
149  setEventMessages($object->error, $object->errors, 'errors');
150  $error++;
151  }
152 
153  if (!$error) {
154  $db->commit();
155  } else {
156  $db->rollback();
157  }
158  }
159  }
160  }
161 
162  // Actions to send emails
163  $triggersendname = 'RECRUITMENTJOBPOSITION_SENTBYMAIL';
164  $autocopy = 'MAIN_MAIL_AUTOCOPY_RECRUITMENTJOBPOSITION_TO';
165  $trackid = 'recruitmentjobposition'.$object->id;
166  include DOL_DOCUMENT_ROOT.'/core/actions_sendmails.inc.php';
167 }
168 
169 
170 
171 
172 /*
173  * View
174  */
175 
176 $form = new Form($db);
177 $formfile = new FormFile($db);
178 $formproject = new FormProjets($db);
179 
180 $title = $object->ref." - ".$langs->trans('Card');
181 $help_url = '';
182 llxHeader('', $title, $help_url);
183 
184 // Part to create
185 if ($action == 'create') {
186  print load_fiche_titre($langs->trans("NewPositionToBeFilled"), '', 'object_'.$object->picto);
187 
188  print '<form method="POST" action="'.$_SERVER["PHP_SELF"].'">';
189  print '<input type="hidden" name="token" value="'.newToken().'">';
190  print '<input type="hidden" name="action" value="add">';
191  if ($backtopage) {
192  print '<input type="hidden" name="backtopage" value="'.$backtopage.'">';
193  }
194  if ($backtopageforcancel) {
195  print '<input type="hidden" name="backtopageforcancel" value="'.$backtopageforcancel.'">';
196  }
197 
198  // Set some default values
199  if (!GETPOSTISSET('fk_user_recruiter')) {
200  $_POST['fk_user_recruiter'] = $user->id;
201  }
202 
203  print dol_get_fiche_head(array(), '');
204 
205  print '<table class="border centpercent tableforfieldcreate">'."\n";
206 
207  // Common attributes
208  include DOL_DOCUMENT_ROOT.'/core/tpl/commonfields_add.tpl.php';
209 
210  // Other attributes
211  include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_add.tpl.php';
212 
213  print '</table>'."\n";
214 
215  print dol_get_fiche_end();
216 
217  print $form->buttonsSaveCancel("Create");
218 
219  print '</form>';
220 
221  //dol_set_focus('input[name="ref"]');
222 }
223 
224 // Part to edit record
225 if (($id || $ref) && $action == 'edit') {
226  print load_fiche_titre($langs->trans("PositionToBeFilled"), '', 'object_'.$object->picto);
227 
228  print '<form method="POST" action="'.$_SERVER["PHP_SELF"].'">';
229  print '<input type="hidden" name="token" value="'.newToken().'">';
230  print '<input type="hidden" name="action" value="update">';
231  print '<input type="hidden" name="id" value="'.$object->id.'">';
232  if ($backtopage) {
233  print '<input type="hidden" name="backtopage" value="'.$backtopage.'">';
234  }
235  if ($backtopageforcancel) {
236  print '<input type="hidden" name="backtopageforcancel" value="'.$backtopageforcancel.'">';
237  }
238 
239  print dol_get_fiche_head();
240 
241  print '<table class="border centpercent tableforfieldedit">'."\n";
242 
243  // Common attributes
244  include DOL_DOCUMENT_ROOT.'/core/tpl/commonfields_edit.tpl.php';
245 
246  // Other attributes
247  include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_edit.tpl.php';
248 
249  print '</table>';
250 
251  print dol_get_fiche_end();
252 
253  print $form->buttonsSaveCancel();
254 
255  print '</form>';
256 }
257 
258 // Part to show record
259 if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'create'))) {
260  $head = recruitmentjobpositionPrepareHead($object);
261  print dol_get_fiche_head($head, 'card', $langs->trans("RecruitmentJobPosition"), -1, $object->picto);
262 
263  $formconfirm = '';
264 
265  // Confirmation to delete
266  if ($action == 'delete') {
267  $formconfirm = $form->formconfirm($_SERVER["PHP_SELF"].'?id='.$object->id, $langs->trans('DeleteRecruitmentJobPosition'), $langs->trans('ConfirmDeleteObject'), 'confirm_delete', '', 0, 1);
268  }
269  // Confirmation to delete line
270  if ($action == 'deleteline') {
271  $formconfirm = $form->formconfirm($_SERVER["PHP_SELF"].'?id='.$object->id.'&lineid='.$lineid, $langs->trans('DeleteLine'), $langs->trans('ConfirmDeleteLine'), 'confirm_deleteline', '', 0, 1);
272  }
273  // Clone confirmation
274  if ($action == 'clone') {
275  // Create an array for form
276  $formquestion = array();
277  $formconfirm = $form->formconfirm($_SERVER["PHP_SELF"].'?id='.$object->id, $langs->trans('ToClone'), $langs->trans('ConfirmCloneAsk', $object->ref), 'confirm_clone', $formquestion, 'yes', 1);
278  }
279  if ($action == 'closeas') {
280  $text = "";
281  //Form to close proposal (signed or not)
282  $formquestion = array(
283  array('type' => 'select', 'name' => 'status', 'label' => '<span class="fieldrequired">'.$langs->trans("CloseAs").'</span>', 'values' => array(3=>$object->LibStatut($object::STATUS_RECRUITED), 9=>$object->LibStatut($object::STATUS_CANCELED))),
284  array('type' => 'text', 'name' => 'note_private', 'label' => $langs->trans("Note"), 'value' => '') // Field to complete private note (not replace)
285  );
286 
287  /*if (isModEnabled('notification'))
288  {
289  require_once DOL_DOCUMENT_ROOT.'/core/class/notify.class.php';
290  $notify = new Notify($db);
291  $formquestion = array_merge($formquestion, array(
292  array('type' => 'onecolumn', 'value' => $notify->confirmMessage('RECRUITMENTJOBPOSITION_CLOSE_SIGNED', $object->socid, $object)),
293  ));
294  }*/
295 
296  $formconfirm = $form->formconfirm($_SERVER["PHP_SELF"].'?id='.$object->id, $langs->trans('Close'), $text, 'confirm_closeas', $formquestion, '', 1, 250);
297  }
298 
299  // Call Hook formConfirm
300  $parameters = array('formConfirm' => $formconfirm, 'lineid' => $lineid);
301  $reshook = $hookmanager->executeHooks('formConfirm', $parameters, $object, $action); // Note that $action and $object may have been modified by hook
302  if (empty($reshook)) {
303  $formconfirm .= $hookmanager->resPrint;
304  } elseif ($reshook > 0) {
305  $formconfirm = $hookmanager->resPrint;
306  }
307 
308  // Print form confirm
309  print $formconfirm;
310 
311 
312  // Object card
313  // ------------------------------------------------------------
314  $linkback = '<a href="'.dol_buildpath('/recruitment/recruitmentjobposition_list.php', 1).'?restore_lastsearch_values=1'.(!empty($socid) ? '&socid='.$socid : '').'">'.$langs->trans("BackToList").'</a>';
315 
316  $morehtmlref = '<div class="refidno">';
317  /*
318  // Ref customer
319  $morehtmlref.=$form->editfieldkey("RefCustomer", 'ref_client', $object->ref_client, $object, 0, 'string', '', 0, 1);
320  $morehtmlref.=$form->editfieldval("RefCustomer", 'ref_client', $object->ref_client, $object, 0, 'string', '', null, null, '', 1);
321  // Thirdparty
322  $morehtmlref.='<br>'.$langs->trans('ThirdParty') . ' : ' . (is_object($object->thirdparty) ? $object->thirdparty->getNomUrl(1) : '');
323  */
324  // Project
325  if (isModEnabled('project')) {
326  $langs->load("projects");
327  $morehtmlref .= $langs->trans('Project').' ';
328  if ($permissiontoadd) {
329  if ($action != 'classify') {
330  $morehtmlref .= '<a class="editfielda" href="'.$_SERVER['PHP_SELF'].'?action=classify&token='.newToken().'&id='.$object->id.'">'.img_edit($langs->transnoentitiesnoconv('SetProject')).'</a>';
331  }
332  $morehtmlref .= ' : ';
333  if ($action == 'classify') {
334  //$morehtmlref.=$form->form_project($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->socid, $object->fk_project, 'projectid', 0, 0, 1, 1);
335  $morehtmlref .= '<form method="post" action="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'">';
336  $morehtmlref .= '<input type="hidden" name="action" value="classin">';
337  $morehtmlref .= '<input type="hidden" name="token" value="'.newToken().'">';
338  $morehtmlref .= $formproject->select_projects($object->socid, $object->fk_project, 'projectid', $maxlength, 0, 1, 0, 1, 0, 0, '', 1);
339  $morehtmlref .= '<input type="submit" class="button valignmiddle" value="'.$langs->trans("Modify").'">';
340  $morehtmlref .= '</form>';
341  } else {
342  $morehtmlref .= $form->form_project($_SERVER['PHP_SELF'].'?id='.$object->id, !empty($object->socid) ? $object->socid : 0, $object->fk_project, 'none', 0, 0, 0, 1, '', 'maxwidth300');
343  }
344  } else {
345  if (!empty($object->fk_project)) {
346  $proj = new Project($db);
347  $proj->fetch($object->fk_project);
348  $morehtmlref .= ': '.$proj->getNomUrl();
349  } else {
350  $morehtmlref .= '';
351  }
352  }
353  }
354  $morehtmlref .= '</div>';
355 
356 
357  dol_banner_tab($object, 'ref', $linkback, 1, 'ref', 'ref', $morehtmlref);
358 
359 
360  print '<div class="fichecenter">';
361  print '<div class="fichehalfleft">';
362  print '<div class="underbanner clearboth"></div>';
363  print '<table class="border centpercent tableforfield">'."\n";
364 
365  // Common attributes
366  $keyforbreak = 'description'; // We change column just after this field
367  unset($object->fields['fk_project']); // Hide field already shown in banner
368  //unset($object->fields['fk_soc']); // Hide field already shown in banner
369  include DOL_DOCUMENT_ROOT.'/core/tpl/commonfields_view.tpl.php';
370 
371  // Other attributes. Fields from hook formObjectOptions and Extrafields.
372  include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_view.tpl.php';
373 
374  print '</table>';
375  print '</div>';
376  print '</div>';
377 
378  print '<div class="clearboth"></div>';
379 
380  print dol_get_fiche_end();
381 
382 
383  // Buttons for actions
384 
385  if ($action != 'presend' && $action != 'editline') {
386  print '<div class="tabsAction">'."\n";
387  $parameters = array();
388  $reshook = $hookmanager->executeHooks('addMoreActionsButtons', $parameters, $object, $action); // Note that $action and $object may have been modified by hook
389  if ($reshook < 0) {
390  setEventMessages($hookmanager->error, $hookmanager->errors, 'errors');
391  }
392 
393  if (empty($reshook)) {
394  // Send
395  if (empty($user->socid)) {
396  print dolGetButtonAction('', $langs->trans('SendMail'), 'default', $_SERVER["PHP_SELF"].'?id='.$object->id.'&action=presend&mode=init&token='.newToken().'#formmailbeforetitle');
397  }
398 
399  // Back to draft
400  if ($object->status == $object::STATUS_VALIDATED) {
401  if ($permissiontoadd) {
402  print dolGetButtonAction('', $langs->trans('SetToDraft'), 'default', $_SERVER["PHP_SELF"].'?id='.$object->id.'&action=confirm_setdraft&confirm=yes&token='.newToken(), '', $permissiontoadd);
403  }
404  }
405 
406  // Modify
407  print dolGetButtonAction('', $langs->trans('Modify'), 'default', $_SERVER["PHP_SELF"].'?id='.$object->id.'&action=edit&token='.newToken(), '', $permissiontoadd);
408 
409  // Validate
410  if ($object->status == $object::STATUS_DRAFT) {
411  if ($permissiontoadd) {
412  if (empty($object->table_element_line) || (is_array($object->lines) && count($object->lines) > 0)) {
413  print dolGetButtonAction('', $langs->trans('Validate'), 'default', $_SERVER['PHP_SELF'].'?id='.$object->id.'&action=confirm_validate&confirm=yes&token='.newToken(), '', $permissiontoadd);
414  } else {
415  $langs->load("errors");
416  print dolGetButtonAction($langs->trans("ErrorAddAtLeastOneLineFirst"), $langs->trans("Validate"), 'default', '#', '', 0);
417  }
418  }
419  }
420 
421  // Close as recruited/canceled
422  if ($object->status == $object::STATUS_VALIDATED) {
423  if ($usercanclose) {
424  print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action=closeas&token='.newToken().(empty($conf->global->MAIN_JUMP_TAG) ? '' : '#close').'"';
425  print '>'.$langs->trans('Close').'</a>';
426  } else {
427  print '<a class="butActionRefused classfortooltip" href="#" title="'.dol_escape_htmltag($langs->trans("NotEnoughPermissions")).'">'.$langs->trans('Close').'</a>';
428  }
429  }
430 
431  // Clone
432  if ($permissiontoadd) {
433  print dolGetButtonAction($langs->trans("ToClone"), '', 'default', $_SERVER['PHP_SELF'].'?id='.$object->id.(!empty($object->socid) ? '&socid='.$object->socid : "").'&action=clone&object=recruitmentjobposition', 'clone', $permissiontoadd);
434  }
435 
436  /*
437  if ($permissiontoadd) {
438  if ($object->status == $object::STATUS_ENABLED) {
439  print dolGetButtonAction('', $langs->trans('Disable'), 'default', $_SERVER['PHP_SELF'].'?id='.$object->id.'&action=disable&token='.newToken(), '', $permissiontoadd);
440  } else {
441  print dolGetButtonAction('', $langs->trans('Enable'), 'default', $_SERVER['PHP_SELF'].'?id='.$object->id.'&action=enable&token='.newToken(), '', $permissiontoadd);
442  }
443  }
444  }*/
445  if ($permissiontoadd) {
446  if ($object->status == $object::STATUS_CANCELED) {
447  print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action=confirm_reopen&confirm=yes">'.$langs->trans("Re-Open").'</a>'."\n";
448  }
449  }
450 
451  // Delete
452  $params = array();
453  print dolGetButtonAction($langs->trans("Delete"), '', 'delete', $_SERVER["PHP_SELF"].'?id='.$object->id.'&action=delete&token='.newToken(), 'delete', $permissiontodelete, $params);
454  }
455  print '</div>'."\n";
456  }
457 
458 
459  // Select mail models is same action as presend
460  if (GETPOST('modelselected')) {
461  $action = 'presend';
462  }
463 
464  if ($action != 'presend') {
465  print '<div class="fichecenter"><div class="fichehalfleft">';
466  print '<a name="builddoc"></a>'; // ancre
467 
468  $includedocgeneration = 1;
469 
470  // Documents
471  if ($includedocgeneration) {
472  $objref = dol_sanitizeFileName($object->ref);
473  $relativepath = $objref.'/'.$objref.'.pdf';
474  $filedir = $conf->recruitment->dir_output.'/'.$object->element.'/'.$objref;
475  $urlsource = $_SERVER["PHP_SELF"]."?id=".$object->id;
476  $genallowed = $user->hasRight('recruitment', 'recruitmentjobposition', 'read'); // If you can read, you can build the PDF to read content
477  $delallowed = $user->hasRight('recruitment', 'recruitmentjobposition', 'write'); // If you can create/edit, you can remove a file on card
478  print $formfile->showdocuments('recruitment:RecruitmentJobPosition', $object->element.'/'.$objref, $filedir, $urlsource, $genallowed, $delallowed, $object->model_pdf, 1, 0, 0, 28, 0, '', '', '', $langs->defaultlang);
479  }
480 
481  // Show links to link elements
482  $linktoelem = $form->showLinkToObjectBlock($object, null, array('recruitmentjobposition'));
483  $somethingshown = $form->showLinkedObjectBlock($object, $linktoelem);
484 
485  // Show link to public job page
486  if ($object->status != RecruitmentJobPosition::STATUS_DRAFT) {
487  print '<br><!-- Link to go on public job page -->'."\n";
488  // Load translation files required by the page
489  $langs->loadLangs(array('recruitment'));
490 
491  $out = img_picto('', 'globe').' <span class="opacitymedium">'.$langs->trans("PublicUrl").'</span><br>';
492 
493  $url = getPublicJobPositionUrl(0, $object->ref);
494  $out .= '<div class="urllink"><input type="text" id="recruitmentjobpositionurl" class="quatrevingtpercent" value="'.$url.'">';
495  $out .= '<a href="'.$url.'" target="_blank" rel="noopener noreferrer">'.img_picto('', 'globe').'</a></div>';
496  $out .= ajax_autoselect("recruitmentjobpositionurl", 0);
497 
498  print $out;
499  }
500 
501  print '</div><div class="fichehalfright">';
502 
503  $MAXEVENT = 10;
504 
505  $morehtmlcenter = dolGetButtonTitle($langs->trans('SeeAll'), '', 'fa fa-bars imgforviewmode', DOL_URL_ROOT.'/recruitment/recruitmentjobposition_agenda.php?id='.$object->id);
506 
507  // List of actions on element
508  include_once DOL_DOCUMENT_ROOT.'/core/class/html.formactions.class.php';
509  $formactions = new FormActions($db);
510  $somethingshown = $formactions->showactions($object, $object->element.'@recruitment', (is_object($object->thirdparty) ? $object->thirdparty->id : 0), 1, '', $MAXEVENT, '', $morehtmlcenter);
511 
512  print '</div></div>';
513  }
514 
515  //Select mail models is same action as presend
516  if (GETPOST('modelselected')) {
517  $action = 'presend';
518  }
519 
520  // Presend form
521  $modelmail = 'recruitmentjobposition';
522  $defaulttopic = 'InformationMessage';
523  $diroutput = $conf->recruitment->dir_output;
524  $trackid = 'recruitmentjobposition'.$object->id;
525 
526  include DOL_DOCUMENT_ROOT.'/core/tpl/card_presend.tpl.php';
527 }
528 
529 // End of page
530 llxFooter();
531 $db->close();
if(GETPOST('button_removefilter_x', 'alpha')||GETPOST('button_removefilter.x', 'alpha')||GETPOST('button_removefilter', 'alpha')) if(GETPOST('button_search_x', 'alpha')||GETPOST('button_search.x', 'alpha')||GETPOST('button_search', 'alpha')) if($action=="save" &&empty($cancel)) $help_url
View.
Definition: agenda.php:118
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 to manage projects.
Class for RecruitmentJobPosition.
if($cancel &&! $id) if($action=='add' &&! $cancel) if($action=='delete') if($id) $form
Actions.
Definition: card.php:143
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.
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.
img_picto($titlealt, $picto, $moreatt='', $pictoisfullpath=false, $srconly=0, $notitle=0, $alt='', $morecss='', $marginleftonlyshort=2)
Show picto whatever it's its name (generic function)
ajax_autoselect($htmlname, $addlink='', $textonlink='Link')
Make content of an input box selected when we click into input field.
newToken()
Return the value of token currently saved into session with name 'newtoken'.
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.
GETPOSTISSET($paramname)
Return true if we are in a context of submitting the parameter $paramname from a POST of a form.
isModEnabled($module)
Is Dolibarr module enabled.
img_edit($titlealt='default', $float=0, $other='')
Show logo editer/modifier fiche.
$formconfirm
if ($action == 'delbookkeepingyear') {
getPublicJobPositionUrl($mode, $ref='', $localorexternal=0)
Return string with full Url.
recruitmentjobpositionPrepareHead($object)
Prepare array of tabs for RecruitmentJobPosition.
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.