dolibarr 18.0.6
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
26require '../main.inc.php';
27require_once DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php';
28require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php';
29require_once DOL_DOCUMENT_ROOT.'/core/class/html.formprojet.class.php';
30require_once DOL_DOCUMENT_ROOT.'/bookcal/class/availabilities.class.php';
31require_once DOL_DOCUMENT_ROOT.'/bookcal/lib/bookcal_availabilities.lib.php';
32
33// Load translation files required by the page
34$langs->loadLangs(array("agenda", "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();
63foreach ($object->fields as $key => $val) {
64 if (GETPOST('search_'.$key, 'alpha')) {
65 $search[$key] = GETPOST('search_'.$key, 'alpha');
66 }
67}
68
69if (empty($action) && empty($id) && empty($ref)) {
70 $action = 'view';
71}
72
73// Load object
74include 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;
79if ($enablepermissioncheck) {
80 $permissiontoread = $user->hasRight('bookcal', 'availabilities', 'read');
81 $permissiontoadd = $user->hasRight('bookcal', 'availabilities', 'write'); // Used by the include of actions_addupdatedelete.inc.php and actions_lineupdown.inc.php
82 $permissiontodelete = $user->hasRight('bookcal', 'availabilities', 'delete') || ($permissiontoadd && isset($object->status) && $object->status == $object::STATUS_DRAFT);
83 $permissionnote = $user->hasRight('bookcal', 'availabilities', 'write'); // Used by the include of actions_setnotes.inc.php
84 $permissiondellink = $user->hasRight('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);
100if (!isModEnabled('bookcal')) accessforbidden();
101if (!$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
110if ($reshook < 0) {
111 setEventMessages($hookmanager->error, $hookmanager->errors, 'errors');
112}
113
114if (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 = '';
175llxHeader('', $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
194if ($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
237if (($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
271if ($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 (isModEnabled('project')) {
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
575llxFooter();
576$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
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.
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.
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.
accessforbidden($message='', $printheader=1, $printfooter=1, $showonlymessage=0, $params=null)
Show a message to say access is forbidden and stop program.