dolibarr  17.0.4
availabilities_card.php
Go to the documentation of this file.
1 <?php
2 /* Copyright (C) 2017 Laurent Destailleur <eldy@users.sourceforge.net>
3  * Copyright (C) 2022 Alice Adminson <aadminson@example.com>
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License as published by
7  * the Free Software Foundation; either version 3 of the License, or
8  * (at your option) any later version.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License
16  * along with this program. If not, see <https://www.gnu.org/licenses/>.
17  */
18 
25 // Load Dolibarr environment
26 require '../main.inc.php';
27 require_once DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php';
28 require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php';
29 require_once DOL_DOCUMENT_ROOT.'/core/class/html.formprojet.class.php';
30 dol_include_once('/bookcal/class/availabilities.class.php');
31 dol_include_once('/bookcal/lib/bookcal_availabilities.lib.php');
32 
33 // Load translation files required by the page
34 $langs->loadLangs(array("bookcal@bookcal", "other"));
35 
36 // Get parameters
37 $id = GETPOST('id', 'int');
38 $ref = GETPOST('ref', 'alpha');
39 $lineid = GETPOST('lineid', 'int');
40 
41 $action = GETPOST('action', 'aZ09');
42 $confirm = GETPOST('confirm', 'alpha');
43 $cancel = GETPOST('cancel', 'aZ09');
44 $contextpage = GETPOST('contextpage', 'aZ') ? GETPOST('contextpage', 'aZ') : str_replace('_', '', basename(dirname(__FILE__)).basename(__FILE__, '.php')); // To manage different context of search
45 $backtopage = GETPOST('backtopage', 'alpha');
46 $backtopageforcancel = GETPOST('backtopageforcancel', 'alpha');
47 $dol_openinpopup = GETPOST('dol_openinpopup', 'aZ09');
48 
49 // Initialize technical objects
50 $object = new Availabilities($db);
51 $extrafields = new ExtraFields($db);
52 $diroutputmassaction = $conf->bookcal->dir_output.'/temp/massgeneration/'.$user->id;
53 $hookmanager->initHooks(array('availabilitiescard', 'globalcard')); // Note that conf->hooks_modules contains array
54 
55 // Fetch optionals attributes and labels
56 $extrafields->fetch_name_optionals_label($object->table_element);
57 
58 $search_array_options = $extrafields->getOptionalsFromPost($object->table_element, '', 'search_');
59 
60 // Initialize array of search criterias
61 $search_all = GETPOST("search_all", 'alpha');
62 $search = array();
63 foreach ($object->fields as $key => $val) {
64  if (GETPOST('search_'.$key, 'alpha')) {
65  $search[$key] = GETPOST('search_'.$key, 'alpha');
66  }
67 }
68 
69 if (empty($action) && empty($id) && empty($ref)) {
70  $action = 'view';
71 }
72 
73 // Load object
74 include DOL_DOCUMENT_ROOT.'/core/actions_fetchobject.inc.php'; // Must be include, not include_once.
75 
76 // There is several ways to check permission.
77 // Set $enablepermissioncheck to 1 to enable a minimum low level of checks
78 $enablepermissioncheck = 0;
79 if ($enablepermissioncheck) {
80  $permissiontoread = $user->rights->bookcal->availabilities->read;
81  $permissiontoadd = $user->rights->bookcal->availabilities->write; // Used by the include of actions_addupdatedelete.inc.php and actions_lineupdown.inc.php
82  $permissiontodelete = $user->rights->bookcal->availabilities->delete || ($permissiontoadd && isset($object->status) && $object->status == $object::STATUS_DRAFT);
83  $permissionnote = $user->rights->bookcal->availabilities->write; // Used by the include of actions_setnotes.inc.php
84  $permissiondellink = $user->rights->bookcal->availabilities->write; // Used by the include of actions_dellink.inc.php
85 } else {
86  $permissiontoread = 1;
87  $permissiontoadd = 1; // Used by the include of actions_addupdatedelete.inc.php and actions_lineupdown.inc.php
88  $permissiontodelete = 1;
89  $permissionnote = 1;
90  $permissiondellink = 1;
91 }
92 
93 $upload_dir = $conf->bookcal->multidir_output[isset($object->entity) ? $object->entity : 1].'/availabilities';
94 
95 // Security check (enable the most restrictive one)
96 //if ($user->socid > 0) accessforbidden();
97 //if ($user->socid > 0) $socid = $user->socid;
98 //$isdraft = (isset($object->status) && ($object->status == $object::STATUS_DRAFT) ? 1 : 0);
99 //restrictedArea($user, $object->element, $object->id, $object->table_element, '', 'fk_soc', 'rowid', $isdraft);
100 if (empty($conf->bookcal->enabled)) accessforbidden();
101 if (!$permissiontoread) accessforbidden();
102 
103 
104 /*
105  * Actions
106  */
107 
108 $parameters = array();
109 $reshook = $hookmanager->executeHooks('doActions', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks
110 if ($reshook < 0) {
111  setEventMessages($hookmanager->error, $hookmanager->errors, 'errors');
112 }
113 
114 if (empty($reshook)) {
115  $error = 0;
116 
117  $backurlforlist = dol_buildpath('/bookcal/availabilities_list.php', 1);
118 
119  if (empty($backtopage) || ($cancel && empty($id))) {
120  if (empty($backtopage) || ($cancel && strpos($backtopage, '__ID__'))) {
121  if (empty($id) && (($action != 'add' && $action != 'create') || $cancel)) {
122  $backtopage = $backurlforlist;
123  } else {
124  $backtopage = dol_buildpath('/bookcal/availabilities_card.php', 1).'?id='.((!empty($id) && $id > 0) ? $id : '__ID__');
125  }
126  }
127  }
128 
129  $triggermodname = 'BOOKCAL_AVAILABILITIES_MODIFY'; // Name of trigger action code to execute when we modify record
130 
131  // Actions cancel, add, update, update_extras, confirm_validate, confirm_delete, confirm_deleteline, confirm_clone, confirm_close, confirm_setdraft, confirm_reopen
132  include DOL_DOCUMENT_ROOT.'/core/actions_addupdatedelete.inc.php';
133 
134  // Actions when linking object each other
135  include DOL_DOCUMENT_ROOT.'/core/actions_dellink.inc.php';
136 
137  // Actions when printing a doc from card
138  include DOL_DOCUMENT_ROOT.'/core/actions_printing.inc.php';
139 
140  // Action to move up and down lines of object
141  //include DOL_DOCUMENT_ROOT.'/core/actions_lineupdown.inc.php';
142 
143  // Action to build doc
144  include DOL_DOCUMENT_ROOT.'/core/actions_builddoc.inc.php';
145 
146  if ($action == 'set_thirdparty' && $permissiontoadd) {
147  $object->setValueFrom('fk_soc', GETPOST('fk_soc', 'int'), '', '', 'date', '', $user, $triggermodname);
148  }
149  if ($action == 'classin' && $permissiontoadd) {
150  $object->setProject(GETPOST('projectid', 'int'));
151  }
152 
153  // Actions to send emails
154  $triggersendname = 'BOOKCAL_AVAILABILITIES_SENTBYMAIL';
155  $autocopy = 'MAIN_MAIL_AUTOCOPY_AVAILABILITIES_TO';
156  $trackid = 'availabilities'.$object->id;
157  include DOL_DOCUMENT_ROOT.'/core/actions_sendmails.inc.php';
158 }
159 
160 
161 
162 
163 /*
164  * View
165  *
166  * Put here all code to build page
167  */
168 
169 $form = new Form($db);
170 $formfile = new FormFile($db);
171 $formproject = new FormProjets($db);
172 
173 $title = $langs->trans("Availabilities");
174 $help_url = '';
175 llxHeader('', $title, $help_url);
176 
177 // Example : Adding jquery code
178 // print '<script type="text/javascript">
179 // jQuery(document).ready(function() {
180 // function init_myfunc()
181 // {
182 // jQuery("#myid").removeAttr(\'disabled\');
183 // jQuery("#myid").attr(\'disabled\',\'disabled\');
184 // }
185 // init_myfunc();
186 // jQuery("#mybutton").click(function() {
187 // init_myfunc();
188 // });
189 // });
190 // </script>';
191 
192 
193 // Part to create
194 if ($action == 'create') {
195  if (empty($permissiontoadd)) {
196  accessforbidden($langs->trans('NotEnoughPermissions'), 0, 1);
197  exit;
198  }
199 
200  print load_fiche_titre($langs->trans("NewObject", $langs->transnoentitiesnoconv("Availabilities")), '', 'object_'.$object->picto);
201 
202  print '<form method="POST" action="'.$_SERVER["PHP_SELF"].'">';
203  print '<input type="hidden" name="token" value="'.newToken().'">';
204  print '<input type="hidden" name="action" value="add">';
205  if ($backtopage) {
206  print '<input type="hidden" name="backtopage" value="'.$backtopage.'">';
207  }
208  if ($backtopageforcancel) {
209  print '<input type="hidden" name="backtopageforcancel" value="'.$backtopageforcancel.'">';
210  }
211 
212  print dol_get_fiche_head(array(), '');
213 
214  // Set some default values
215  //if (! GETPOSTISSET('fieldname')) $_POST['fieldname'] = 'myvalue';
216 
217  print '<table class="border centpercent tableforfieldcreate">'."\n";
218 
219  // Common attributes
220  include DOL_DOCUMENT_ROOT.'/core/tpl/commonfields_add.tpl.php';
221 
222  // Other attributes
223  include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_add.tpl.php';
224 
225  print '</table>'."\n";
226 
227  print dol_get_fiche_end();
228 
229  print $form->buttonsSaveCancel("Create");
230 
231  print '</form>';
232 
233  //dol_set_focus('input[name="ref"]');
234 }
235 
236 // Part to edit record
237 if (($id || $ref) && $action == 'edit') {
238  print load_fiche_titre($langs->trans("Availabilities"), '', 'object_'.$object->picto);
239 
240  print '<form method="POST" action="'.$_SERVER["PHP_SELF"].'">';
241  print '<input type="hidden" name="token" value="'.newToken().'">';
242  print '<input type="hidden" name="action" value="update">';
243  print '<input type="hidden" name="id" value="'.$object->id.'">';
244  if ($backtopage) {
245  print '<input type="hidden" name="backtopage" value="'.$backtopage.'">';
246  }
247  if ($backtopageforcancel) {
248  print '<input type="hidden" name="backtopageforcancel" value="'.$backtopageforcancel.'">';
249  }
250 
251  print dol_get_fiche_head();
252 
253  print '<table class="border centpercent tableforfieldedit">'."\n";
254 
255  // Common attributes
256  include DOL_DOCUMENT_ROOT.'/core/tpl/commonfields_edit.tpl.php';
257 
258  // Other attributes
259  include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_edit.tpl.php';
260 
261  print '</table>';
262 
263  print dol_get_fiche_end();
264 
265  print $form->buttonsSaveCancel();
266 
267  print '</form>';
268 }
269 
270 // Part to show record
271 if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'create'))) {
272  $res = $object->fetch_optionals();
273 
274  $head = availabilitiesPrepareHead($object);
275  print dol_get_fiche_head($head, 'card', $langs->trans("Availabilities"), -1, $object->picto);
276 
277  $formconfirm = '';
278 
279  // Confirmation to delete
280  if ($action == 'delete') {
281  $formconfirm = $form->formconfirm($_SERVER["PHP_SELF"].'?id='.$object->id, $langs->trans('DeleteAvailabilities'), $langs->trans('ConfirmDeleteObject'), 'confirm_delete', '', 0, 1);
282  }
283  // Confirmation to delete line
284  if ($action == 'deleteline') {
285  $formconfirm = $form->formconfirm($_SERVER["PHP_SELF"].'?id='.$object->id.'&lineid='.$lineid, $langs->trans('DeleteLine'), $langs->trans('ConfirmDeleteLine'), 'confirm_deleteline', '', 0, 1);
286  }
287 
288  // Clone confirmation
289  if ($action == 'clone') {
290  // Create an array for form
291  $formquestion = array();
292  $formconfirm = $form->formconfirm($_SERVER["PHP_SELF"].'?id='.$object->id, $langs->trans('ToClone'), $langs->trans('ConfirmCloneAsk', $object->ref), 'confirm_clone', $formquestion, 'yes', 1);
293  }
294 
295  if ($action == 'generate') {
296  print '<i> Link : </i> <strong> '. DOL_DOCUMENT_ROOT.'/public/bookcal/booking.php?id='.$object->id . '</strong>' ;
297  }
298 
299  // Confirmation of action xxxx (You can use it for xxx = 'close', xxx = 'reopen', ...)
300  if ($action == 'xxx') {
301  $text = $langs->trans('ConfirmActionAvailabilities', $object->ref);
302  /*if (! empty($conf->notification->enabled))
303  {
304  require_once DOL_DOCUMENT_ROOT . '/core/class/notify.class.php';
305  $notify = new Notify($db);
306  $text .= '<br>';
307  $text .= $notify->confirmMessage('AVAILABILITIES_CLOSE', $object->socid, $object);
308  }*/
309 
310  $formquestion = array();
311  /*
312  $forcecombo=0;
313  if ($conf->browser->name == 'ie') $forcecombo = 1; // There is a bug in IE10 that make combo inside popup crazy
314  $formquestion = array(
315  // 'text' => $langs->trans("ConfirmClone"),
316  // array('type' => 'checkbox', 'name' => 'clone_content', 'label' => $langs->trans("CloneMainAttributes"), 'value' => 1),
317  // array('type' => 'checkbox', 'name' => 'update_prices', 'label' => $langs->trans("PuttingPricesUpToDate"), 'value' => 1),
318  // array('type' => 'other', 'name' => 'idwarehouse', 'label' => $langs->trans("SelectWarehouseForStockDecrease"), 'value' => $formproduct->selectWarehouses(GETPOST('idwarehouse')?GETPOST('idwarehouse'):'ifone', 'idwarehouse', '', 1, 0, 0, '', 0, $forcecombo))
319  );
320  */
321  $formconfirm = $form->formconfirm($_SERVER["PHP_SELF"].'?id='.$object->id, $langs->trans('XXX'), $text, 'confirm_xxx', $formquestion, 0, 1, 220);
322  }
323 
324  // Call Hook formConfirm
325  $parameters = array('formConfirm' => $formconfirm, 'lineid' => $lineid);
326  $reshook = $hookmanager->executeHooks('formConfirm', $parameters, $object, $action); // Note that $action and $object may have been modified by hook
327  if (empty($reshook)) {
328  $formconfirm .= $hookmanager->resPrint;
329  } elseif ($reshook > 0) {
330  $formconfirm = $hookmanager->resPrint;
331  }
332 
333  // Print form confirm
334  print $formconfirm;
335 
336 
337  // Object card
338  // ------------------------------------------------------------
339  $linkback = '<a href="'.dol_buildpath('/bookcal/availabilities_list.php', 1).'?restore_lastsearch_values=1'.(!empty($socid) ? '&socid='.$socid : '').'">'.$langs->trans("BackToList").'</a>';
340 
341  $morehtmlref = '<div class="refidno">';
342  /*
343  // Ref customer
344  $morehtmlref.=$form->editfieldkey("RefCustomer", 'ref_client', $object->ref_client, $object, 0, 'string', '', 0, 1);
345  $morehtmlref.=$form->editfieldval("RefCustomer", 'ref_client', $object->ref_client, $object, 0, 'string', '', null, null, '', 1);
346  // Thirdparty
347  $morehtmlref.='<br>'.$langs->trans('ThirdParty') . ' : ' . (is_object($object->thirdparty) ? $object->thirdparty->getNomUrl(1) : '');
348  // Project
349  if (! empty($conf->project->enabled)) {
350  $langs->load("projects");
351  $morehtmlref .= '<br>'.$langs->trans('Project') . ' ';
352  if ($permissiontoadd) {
353  //if ($action != 'classify') $morehtmlref.='<a class="editfielda" href="' . $_SERVER['PHP_SELF'] . '?action=classify&token='.newToken().'&id=' . $object->id . '">' . img_edit($langs->transnoentitiesnoconv('SetProject')) . '</a> ';
354  $morehtmlref .= ' : ';
355  if ($action == 'classify') {
356  //$morehtmlref .= $form->form_project($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->socid, $object->fk_project, 'projectid', 0, 0, 0, 1, '', 'maxwidth300');
357  $morehtmlref .= '<form method="post" action="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'">';
358  $morehtmlref .= '<input type="hidden" name="action" value="classin">';
359  $morehtmlref .= '<input type="hidden" name="token" value="'.newToken().'">';
360  $morehtmlref .= $formproject->select_projects($object->socid, $object->fk_project, 'projectid', $maxlength, 0, 1, 0, 1, 0, 0, '', 1);
361  $morehtmlref .= '<input type="submit" class="button valignmiddle" value="'.$langs->trans("Modify").'">';
362  $morehtmlref .= '</form>';
363  } else {
364  $morehtmlref.=$form->form_project($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->socid, $object->fk_project, 'none', 0, 0, 0, 1, '', 'maxwidth300');
365  }
366  } else {
367  if (! empty($object->fk_project)) {
368  $proj = new Project($db);
369  $proj->fetch($object->fk_project);
370  $morehtmlref .= ': '.$proj->getNomUrl();
371  } else {
372  $morehtmlref .= '';
373  }
374  }
375  }*/
376  $morehtmlref .= '</div>';
377 
378 
379  dol_banner_tab($object, 'ref', $linkback, 1, 'ref', 'ref', $morehtmlref);
380 
381 
382  print '<div class="fichecenter">';
383  print '<div class="fichehalfleft">';
384  print '<div class="underbanner clearboth"></div>';
385  print '<table class="border centpercent tableforfield">'."\n";
386 
387  // Common attributes
388  //$keyforbreak='fieldkeytoswitchonsecondcolumn'; // We change column just before this field
389  //unset($object->fields['fk_project']); // Hide field already shown in banner
390  //unset($object->fields['fk_soc']); // Hide field already shown in banner
391  include DOL_DOCUMENT_ROOT.'/core/tpl/commonfields_view.tpl.php';
392 
393  // Other attributes. Fields from hook formObjectOptions and Extrafields.
394  include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_view.tpl.php';
395 
396  print '</table>';
397  print '</div>';
398  print '</div>';
399 
400  print '<div class="clearboth"></div>';
401 
402  print dol_get_fiche_end();
403 
404 
405  /*
406  * Lines
407  */
408 
409  if (!empty($object->table_element_line)) {
410  // Show object lines
411  $result = $object->getLinesArray();
412 
413  print ' <form name="addproduct" id="addproduct" action="'.$_SERVER["PHP_SELF"].'?id='.$object->id.(($action != 'editline') ? '' : '#line_'.GETPOST('lineid', 'int')).'" method="POST">
414  <input type="hidden" name="token" value="' . newToken().'">
415  <input type="hidden" name="action" value="' . (($action != 'editline') ? 'addline' : 'updateline').'">
416  <input type="hidden" name="mode" value="">
417  <input type="hidden" name="page_y" value="">
418  <input type="hidden" name="id" value="' . $object->id.'">
419  ';
420 
421  if (!empty($conf->use_javascript_ajax) && $object->status == 0) {
422  include DOL_DOCUMENT_ROOT.'/core/tpl/ajaxrow.tpl.php';
423  }
424 
425  print '<div class="div-table-responsive-no-min">';
426  if (!empty($object->lines) || ($object->status == $object::STATUS_DRAFT && $permissiontoadd && $action != 'selectlines' && $action != 'editline')) {
427  print '<table id="tablelines" class="noborder noshadow" width="100%">';
428  }
429 
430  if (!empty($object->lines)) {
431  $object->printObjectLines($action, $mysoc, null, GETPOST('lineid', 'int'), 1);
432  }
433 
434  // Form to add new line
435  if ($object->status == 0 && $permissiontoadd && $action != 'selectlines') {
436  if ($action != 'editline') {
437  // Add products/services form
438 
439  $parameters = array();
440  $reshook = $hookmanager->executeHooks('formAddObjectLine', $parameters, $object, $action); // Note that $action and $object may have been modified by hook
441  if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'errors');
442  if (empty($reshook))
443  $object->formAddObjectLine(1, $mysoc, $soc);
444  }
445  }
446 
447  if (!empty($object->lines) || ($object->status == $object::STATUS_DRAFT && $permissiontoadd && $action != 'selectlines' && $action != 'editline')) {
448  print '</table>';
449  }
450  print '</div>';
451 
452  print "</form>\n";
453  }
454 
455 
456  // Buttons for actions
457 
458  if ($action != 'presend' && $action != 'editline') {
459  print '<div class="tabsAction">'."\n";
460  $parameters = array();
461  $reshook = $hookmanager->executeHooks('addMoreActionsButtons', $parameters, $object, $action); // Note that $action and $object may have been modified by hook
462  if ($reshook < 0) {
463  setEventMessages($hookmanager->error, $hookmanager->errors, 'errors');
464  }
465 
466  if (empty($reshook)) {
467  // Send
468  if (empty($user->socid)) {
469  print dolGetButtonAction($langs->trans('SendMail'), '', 'default', $_SERVER["PHP_SELF"].'?id='.$object->id.'&action=presend&mode=init&token='.newToken().'#formmailbeforetitle');
470  }
471 
472  // Back to draft
473  if ($object->status == $object::STATUS_VALIDATED) {
474  print dolGetButtonAction($langs->trans('SetToDraft'), '', 'default', $_SERVER["PHP_SELF"].'?id='.$object->id.'&action=confirm_setdraft&confirm=yes&token='.newToken(), '', $permissiontoadd);
475  }
476 
477  print dolGetButtonAction($langs->trans('Modify'), '', 'default', $_SERVER["PHP_SELF"].'?id='.$object->id.'&action=edit&token='.newToken(), '', $permissiontoadd);
478 
479  // Validate
480  if ($object->status == $object::STATUS_DRAFT) {
481  if (empty($object->table_element_line) || (is_array($object->lines) && count($object->lines) > 0)) {
482  print dolGetButtonAction($langs->trans('Validate'), '', 'default', $_SERVER['PHP_SELF'].'?id='.$object->id.'&action=confirm_validate&confirm=yes&token='.newToken(), '', $permissiontoadd);
483  } else {
484  $langs->load("errors");
485  print dolGetButtonAction($langs->trans("ErrorAddAtLeastOneLineFirst"), $langs->trans("Validate"), 'default', '#', '', 0);
486  }
487  }
488 
489  // Clone
490  print dolGetButtonAction($langs->trans('ToClone'), '', 'default', $_SERVER['PHP_SELF'].'?id='.$object->id.(!empty($object->socid)?'&socid='.$object->socid:'').'&action=clone&token='.newToken(), '', $permissiontoadd);
491 
492  // Generate link
493  print dolGetButtonAction($langs->trans('generateLink'), '', 'default', $_SERVER['PHP_SELF'].'?id='.$object->id.'&action=generate', '', $permissiontoadd);
494 
495  /*
496  if ($permissiontoadd) {
497  if ($object->status == $object::STATUS_ENABLED) {
498  print dolGetButtonAction($langs->trans('Disable'), '', 'default', $_SERVER['PHP_SELF'].'?id='.$object->id.'&action=disable&token='.newToken(), '', $permissiontoadd);
499  } else {
500  print dolGetButtonAction($langs->trans('Enable'), '', 'default', $_SERVER['PHP_SELF'].'?id='.$object->id.'&action=enable&token='.newToken(), '', $permissiontoadd);
501  }
502  }
503  if ($permissiontoadd) {
504  if ($object->status == $object::STATUS_VALIDATED) {
505  print dolGetButtonAction($langs->trans('Cancel'), '', 'default', $_SERVER['PHP_SELF'].'?id='.$object->id.'&action=close&token='.newToken(), '', $permissiontoadd);
506  } else {
507  print dolGetButtonAction($langs->trans('Re-Open'), '', 'default', $_SERVER['PHP_SELF'].'?id='.$object->id.'&action=reopen&token='.newToken(), '', $permissiontoadd);
508  }
509  }
510  */
511 
512  // Delete (need delete permission, or if draft, just need create/modify permission)
513  print dolGetButtonAction($langs->trans('Delete'), '', 'delete', $_SERVER['PHP_SELF'].'?id='.$object->id.'&action=delete&token='.newToken(), '', $permissiontodelete || ($object->status == $object::STATUS_DRAFT && $permissiontoadd));
514  }
515  print '</div>'."\n";
516  }
517 
518 
519  // Select mail models is same action as presend
520  if (GETPOST('modelselected')) {
521  $action = 'presend';
522  }
523 
524  if ($action != 'presend') {
525  print '<div class="fichecenter"><div class="fichehalfleft">';
526  print '<a name="builddoc"></a>'; // ancre
527 
528  $includedocgeneration = 0;
529 
530  // Documents
531  if ($includedocgeneration) {
532  $objref = dol_sanitizeFileName($object->ref);
533  $relativepath = $objref.'/'.$objref.'.pdf';
534  $filedir = $conf->bookcal->dir_output.'/'.$object->element.'/'.$objref;
535  $urlsource = $_SERVER["PHP_SELF"]."?id=".$object->id;
536  $genallowed = $permissiontoread; // If you can read, you can build the PDF to read content
537  $delallowed = $permissiontoadd; // If you can create/edit, you can remove a file on card
538  print $formfile->showdocuments('bookcal:Availabilities', $object->element.'/'.$objref, $filedir, $urlsource, $genallowed, $delallowed, $object->model_pdf, 1, 0, 0, 28, 0, '', '', '', $langs->defaultlang);
539  }
540 
541  // Show links to link elements
542  $linktoelem = $form->showLinkToObjectBlock($object, null, array('availabilities'));
543  $somethingshown = $form->showLinkedObjectBlock($object, $linktoelem);
544 
545 
546  print '</div><div class="fichehalfright">';
547 
548  $MAXEVENT = 10;
549 
550  $morehtmlcenter = dolGetButtonTitle($langs->trans('SeeAll'), '', 'fa fa-bars imgforviewmode', dol_buildpath('/bookcal/availabilities_agenda.php', 1).'?id='.$object->id);
551 
552  // List of actions on element
553  include_once DOL_DOCUMENT_ROOT.'/core/class/html.formactions.class.php';
554  $formactions = new FormActions($db);
555  $somethingshown = $formactions->showactions($object, $object->element.'@'.$object->module, (is_object($object->thirdparty) ? $object->thirdparty->id : 0), 1, '', $MAXEVENT, '', $morehtmlcenter);
556 
557  print '</div></div>';
558  }
559 
560  //Select mail models is same action as presend
561  if (GETPOST('modelselected')) {
562  $action = 'presend';
563  }
564 
565  // Presend form
566  $modelmail = 'availabilities';
567  $defaulttopic = 'InformationMessage';
568  $diroutput = $conf->bookcal->dir_output;
569  $trackid = 'availabilities'.$object->id;
570 
571  include DOL_DOCUMENT_ROOT.'/core/tpl/card_presend.tpl.php';
572 }
573 
574 // End of page
575 llxFooter();
576 $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
availabilitiesPrepareHead($object)
Prepare array of tabs for Availabilities.
Class for Availabilities.
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.
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='')
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.
setEventMessages($mesg, $mesgs, $style='mesgs', $messagekey='')
Set event messages in dol_events session object.
if(!function_exists('dol_getprefix')) dol_include_once($relpath, $classname='')
Make an include_once using default root and alternate root if it fails.
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.
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.
$formconfirm
if ($action == 'delbookkeepingyear') {
accessforbidden($message='', $printheader=1, $printfooter=1, $showonlymessage=0, $params=null)
Show a message to say access is forbidden and stop program.