dolibarr 22.0.5
ihm.php
Go to the documentation of this file.
1<?php
2/* Copyright (C) 2001-2005 Rodolphe Quiedeville <rodolphe@quiedeville.org>
3 * Copyright (C) 2004-2015 Laurent Destailleur <eldy@users.sourceforge.net>
4 * Copyright (C) 2005-2017 Regis Houssin <regis.houssin@inodbox.com>
5 * Copyright (C) 2016 Juanjo Menent <jmenent@2byte.es>
6 * Copyright (C) 2018 Ferran Marcet <fmarcet@2byte.es>
7 * Copyright (C) 2021 Alexandre Spangaro <aspangaro@open-dsi.fr>
8 * Copyright (C) 2021-2023 Anthony Berton <anthony.berton@bb2a.fr>
9 * Copyright (C) 2023 Eric Seigne <eric.seigne@cap-rel.fr>
10 * Copyright (C) 2024 MDW <mdeweerd@users.noreply.github.com>
11 * Copyright (C) 2024 Frédéric France <frederic.france@free.fr>
12 *
13 * This program is free software; you can redistribute it and/or modify
14 * it under the terms of the GNU General Public License as published by
15 * the Free Software Foundation; either version 3 of the License, or
16 * (at your option) any later version.
17 *
18 * This program is distributed in the hope that it will be useful,
19 * but WITHOUT ANY WARRANTY; without even the implied warranty of
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 * GNU General Public License for more details.
22 *
23 * You should have received a copy of the GNU General Public License
24 * along with this program. If not, see <https://www.gnu.org/licenses/>.
25 */
26
32// Load Dolibarr environment
33require '../main.inc.php';
34require_once DOL_DOCUMENT_ROOT.'/core/lib/usergroups.lib.php';
35require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php';
36require_once DOL_DOCUMENT_ROOT.'/core/lib/images.lib.php';
37require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
38require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php';
39require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php';
40require_once DOL_DOCUMENT_ROOT.'/core/class/html.formadmin.class.php';
41
51// Load translation files required by the page
52$langs->loadLangs(array('admin', 'languages', 'other', 'companies', 'products', 'members', 'projects', 'hrm', 'agenda'));
53
54if (!$user->admin) {
56}
57
58$action = GETPOST('action', 'aZ09');
59$contextpage = GETPOST('contextpage', 'aZ') ? GETPOST('contextpage', 'aZ') : 'adminihm'; // To manage different context of search
60
61$mode = GETPOST('mode', 'aZ09') ? GETPOST('mode', 'aZ09') : 'other'; // 'template', 'dashboard', 'login', 'other'
62
63if (!defined("MAIN_MOTD")) {
64 define("MAIN_MOTD", "");
65}
66
67/*
68 * Action
69 */
70
71$parameters = array();
72$reshook = $hookmanager->executeHooks('doActions', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks
73if ($reshook < 0) {
74 setEventMessages($hookmanager->error, $hookmanager->errors, 'errors');
75}
76
77if (GETPOST('cancel', 'alpha')) {
78 $action = '';
79}
80
81// Convert action set_XXX and del_XXX to set var (this is used when no javascript on for ajax_constantonoff)
82$regs = array();
83if (preg_match('/^(set|del)_([A-Z_]+)$/', $action, $regs)) {
84 if ($regs[1] == 'set') {
85 dolibarr_set_const($db, $regs[2], 1, 'chaine', 0, '', $conf->entity);
86 } else {
87 dolibarr_del_const($db, $regs[2], $conf->entity);
88 }
89}
90
91if ($action == 'removebackgroundlogin' && getDolGlobalString('MAIN_LOGIN_BACKGROUND')) {
92 dolibarr_set_const($db, "MAIN_IHM_PARAMS_REV", getDolGlobalInt('MAIN_IHM_PARAMS_REV') + 1, 'chaine', 0, '', $conf->entity);
93 require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
94
95 $logofile = $conf->mycompany->dir_output.'/logos/' . getDolGlobalString('MAIN_LOGIN_BACKGROUND');
96 dol_delete_file($logofile);
97 dolibarr_del_const($db, "MAIN_LOGIN_BACKGROUND", $conf->entity);
98 $mysoc->logo = '';
99
100 /*$logosmallfile=$conf->mycompany->dir_output.'/logos/thumbs/'.$mysoc->logo_small;
101 dol_delete_file($logosmallfile);
102 dolibarr_del_const($db, "MAIN_INFO_SOCIETE_LOGO_SMALL",$conf->entity);
103 $mysoc->logo_small='';
104
105 $logominifile=$conf->mycompany->dir_output.'/logos/thumbs/'.$mysoc->logo_mini;
106 dol_delete_file($logominifile);
107 dolibarr_del_const($db, "MAIN_INFO_SOCIETE_LOGO_MINI",$conf->entity);
108 $mysoc->logo_mini='';*/
109}
110
111if ($action == 'update') {
112 $error = 0;
113
114 if ($mode == 'template') {
115 //dolibarr_del_const($db, "MAIN_THEME", 0); // To be sure we don't have this constant set for all entities
116
117 dolibarr_set_const($db, "MAIN_THEME", GETPOST("main_theme", 'aZ09'), 'chaine', 0, '', $conf->entity);
118 dolibarr_set_const($db, "MAIN_IHM_PARAMS_REV", getDolGlobalInt('MAIN_IHM_PARAMS_REV') + 1, 'chaine', 0, '', $conf->entity);
119
120 if (GETPOSTISSET('THEME_ELDY_USECOMOACTROW')) {
121 dolibarr_set_const($db, "THEME_ELDY_USECOMOACTROW", GETPOST('THEME_ELDY_USECOMOACTROW'), 'chaine', 0, '', $conf->entity);
122 }
123
124 if (GETPOSTISSET('THEME_DARKMODEENABLED')) {
125 $val = GETPOST('THEME_DARKMODEENABLED');
126 if (!$val) {
127 dolibarr_del_const($db, "THEME_DARKMODEENABLED", $conf->entity);
128 }
129 if ($val) {
130 dolibarr_set_const($db, "THEME_DARKMODEENABLED", $val, 'chaine', 0, '', $conf->entity);
131 }
132 }
133
134 if (GETPOSTISSET('THEME_TOPMENU_DISABLE_IMAGE')) {
135 $val = GETPOST('THEME_TOPMENU_DISABLE_IMAGE');
136 if (!$val) {
137 dolibarr_del_const($db, 'THEME_TOPMENU_DISABLE_IMAGE', $conf->entity);
138 } else {
139 dolibarr_set_const($db, 'THEME_TOPMENU_DISABLE_IMAGE', GETPOST('THEME_TOPMENU_DISABLE_IMAGE'), 'chaine', 0, '', $conf->entity);
140 }
141 }
142
143 if (GETPOSTISSET('THEME_ELDY_BORDER_RADIUS')) {
144 $val = GETPOST('THEME_ELDY_BORDER_RADIUS');
145 dolibarr_set_const($db, 'THEME_ELDY_BORDER_RADIUS', GETPOSTINT('THEME_ELDY_BORDER_RADIUS'), 'chaine', 0, '', $conf->entity);
146 }
147
148 $val = (implode(',', (colorStringToArray(GETPOST('THEME_ELDY_BACKBODY'), array()))));
149 if ($val == '') {
150 dolibarr_del_const($db, 'THEME_ELDY_BACKBODY', $conf->entity);
151 } else {
152 dolibarr_set_const($db, 'THEME_ELDY_BACKBODY', $val, 'chaine', 0, '', $conf->entity);
153 }
154
155 $val = (implode(',', (colorStringToArray(GETPOST('THEME_ELDY_TOPMENU_BACK1'), array()))));
156 if ($val == '') {
157 dolibarr_del_const($db, 'THEME_ELDY_TOPMENU_BACK1', $conf->entity);
158 } else {
159 dolibarr_set_const($db, 'THEME_ELDY_TOPMENU_BACK1', $val, 'chaine', 0, '', $conf->entity);
160 }
161
162 $val = (implode(',', (colorStringToArray(GETPOST('THEME_ELDY_VERMENU_BACK1'), array()))));
163 if ($val == '') {
164 dolibarr_del_const($db, 'THEME_ELDY_VERMENU_BACK1', $conf->entity);
165 } else {
166 dolibarr_set_const($db, 'THEME_ELDY_VERMENU_BACK1', $val, 'chaine', 0, '', $conf->entity);
167 }
168
169 $val = (implode(',', (colorStringToArray(GETPOST('THEME_ELDY_TEXTTITLENOTAB'), array()))));
170 if ($val == '') {
171 dolibarr_del_const($db, 'THEME_ELDY_TEXTTITLENOTAB', $conf->entity);
172 } else {
173 dolibarr_set_const($db, 'THEME_ELDY_TEXTTITLENOTAB', $val, 'chaine', 0, '', $conf->entity);
174 }
175
176 $val = (implode(',', (colorStringToArray(GETPOST('THEME_ELDY_BACKTITLE1'), array()))));
177 if ($val == '') {
178 dolibarr_del_const($db, 'THEME_ELDY_BACKTITLE1', $conf->entity);
179 } else {
180 dolibarr_set_const($db, 'THEME_ELDY_BACKTITLE1', $val, 'chaine', 0, '', $conf->entity);
181 }
182
183 $val = (implode(',', (colorStringToArray(GETPOST('THEME_ELDY_TEXTTITLE'), array()))));
184 if ($val == '') {
185 dolibarr_del_const($db, 'THEME_ELDY_TEXTTITLE', $conf->entity);
186 } else {
187 dolibarr_set_const($db, 'THEME_ELDY_TEXTTITLE', $val, 'chaine', 0, '', $conf->entity);
188 }
189
190 $val = (implode(',', (colorStringToArray(GETPOST('THEME_ELDY_TEXTTITLELINK'), array()))));
191 if ($val == '') {
192 dolibarr_del_const($db, 'THEME_ELDY_TEXTTITLELINK', $conf->entity);
193 } else {
194 dolibarr_set_const($db, 'THEME_ELDY_TEXTTITLELINK', $val, 'chaine', 0, '', $conf->entity);
195 }
196
197 $val = (implode(',', (colorStringToArray(GETPOST('THEME_ELDY_LINEIMPAIR1'), array()))));
198 if ($val == '') {
199 dolibarr_del_const($db, 'THEME_ELDY_LINEIMPAIR1', $conf->entity);
200 } else {
201 dolibarr_set_const($db, 'THEME_ELDY_LINEIMPAIR1', $val, 'chaine', 0, '', $conf->entity);
202 }
203 $val = (implode(',', (colorStringToArray(GETPOST('THEME_ELDY_LINEIMPAIR1'), array()))));
204 if ($val == '') {
205 dolibarr_del_const($db, 'THEME_ELDY_LINEIMPAIR2', $conf->entity);
206 } else {
207 dolibarr_set_const($db, 'THEME_ELDY_LINEIMPAIR2', $val, 'chaine', 0, '', $conf->entity);
208 }
209
210 $val = (implode(',', (colorStringToArray(GETPOST('THEME_ELDY_LINEPAIR1'), array()))));
211 if ($val == '') {
212 dolibarr_del_const($db, 'THEME_ELDY_LINEPAIR1', $conf->entity);
213 } else {
214 dolibarr_set_const($db, 'THEME_ELDY_LINEPAIR1', $val, 'chaine', 0, '', $conf->entity);
215 }
216 $val = (implode(',', (colorStringToArray(GETPOST('THEME_ELDY_LINEPAIR1'), array()))));
217 if ($val == '') {
218 dolibarr_del_const($db, 'THEME_ELDY_LINEPAIR2', $conf->entity);
219 } else {
220 dolibarr_set_const($db, 'THEME_ELDY_LINEPAIR2', $val, 'chaine', 0, '', $conf->entity);
221 }
222
223 $val = (implode(',', (colorStringToArray(GETPOST('THEME_ELDY_TEXTLINK'), array()))));
224 if ($val == '') {
225 dolibarr_del_const($db, 'THEME_ELDY_TEXTLINK', $conf->entity);
226 } else {
227 dolibarr_set_const($db, 'THEME_ELDY_TEXTLINK', $val, 'chaine', 0, '', $conf->entity);
228 }
229
230 $val = (implode(',', (colorStringToArray(GETPOST('THEME_ELDY_USE_HOVER'), array()))));
231 if ($val == '') {
232 dolibarr_del_const($db, 'THEME_ELDY_USE_HOVER', $conf->entity);
233 } else {
234 dolibarr_set_const($db, "THEME_ELDY_USE_HOVER", $val, 'chaine', 0, '', $conf->entity);
235 }
236
237 $val = (implode(',', (colorStringToArray(GETPOST('THEME_ELDY_USE_CHECKED'), array()))));
238 if ($val == '') {
239 dolibarr_del_const($db, 'THEME_ELDY_USE_CHECKED', $conf->entity);
240 } else {
241 dolibarr_set_const($db, "THEME_ELDY_USE_CHECKED", $val, 'chaine', 0, '', $conf->entity);
242 }
243
244 $val = (implode(',', (colorStringToArray(GETPOST('THEME_ELDY_BTNACTION'), array()))));
245 if ($val == '') {
246 dolibarr_del_const($db, 'THEME_ELDY_BTNACTION', $conf->entity);
247 } else {
248 dolibarr_set_const($db, 'THEME_ELDY_BTNACTION', $val, 'chaine', 0, '', $conf->entity);
249 }
250
251 $val = (implode(',', (colorStringToArray(GETPOST('THEME_ELDY_TEXTBTNACTION'), array()))));
252 if ($val == '') {
253 dolibarr_del_const($db, 'THEME_ELDY_TEXTBTNACTION', $conf->entity);
254 } else {
255 dolibarr_set_const($db, 'THEME_ELDY_TEXTBTNACTION', $val, 'chaine', 0, '', $conf->entity);
256 }
257
258 setEventMessages($langs->trans("SetupSaved"), null);
259 }
260
261 if ($mode == 'dashboard') {
262 dolibarr_set_const($db, "MAIN_MOTD", dol_htmlcleanlastbr(GETPOST("main_motd", 'restricthtml')), 'chaine', 0, '', $conf->entity);
263
264 setEventMessages($langs->trans("SetupSaved"), null);
265 }
266
267 if ($mode == 'other') {
268 dolibarr_set_const($db, "MAIN_LANG_DEFAULT", GETPOST("MAIN_LANG_DEFAULT", 'aZ09'), 'chaine', 0, '', $conf->entity);
269 dolibarr_set_const($db, "MAIN_IHM_PARAMS_REV", getDolGlobalInt('MAIN_IHM_PARAMS_REV') + 1, 'chaine', 0, '', $conf->entity);
270
271 dolibarr_set_const($db, "MAIN_SIZE_LISTE_LIMIT", GETPOSTINT("MAIN_SIZE_LISTE_LIMIT"), 'chaine', 0, '', $conf->entity);
272 dolibarr_set_const($db, "MAIN_SIZE_SHORTLIST_LIMIT", GETPOSTINT("MAIN_SIZE_SHORTLIST_LIMIT"), 'chaine', 0, '', $conf->entity);
273
274 if (GETPOSTISSET("MAIN_CHECKBOX_LEFT_COLUMN")) {
275 dolibarr_set_const($db, "MAIN_CHECKBOX_LEFT_COLUMN", GETPOSTINT("MAIN_CHECKBOX_LEFT_COLUMN"), 'chaine', 0, '', $conf->entity);
276 }
277
278 //dolibarr_set_const($db, "MAIN_DISABLE_JAVASCRIPT", GETPOST("MAIN_DISABLE_JAVASCRIPT", 'aZ09'), 'chaine', 0, '', $conf->entity);
279 //dolibarr_set_const($db, "MAIN_BUTTON_HIDE_UNAUTHORIZED", GETPOST("MAIN_BUTTON_HIDE_UNAUTHORIZED", 'aZ09'), 'chaine', 0, '', $conf->entity);
280 //dolibarr_set_const($db, "MAIN_MENU_HIDE_UNAUTHORIZED", GETPOST("MAIN_MENU_HIDE_UNAUTHORIZED", 'aZ09'), 'chaine', 0, '', $conf->entity);
281 dolibarr_set_const($db, "MAIN_START_WEEK", GETPOSTINT("MAIN_START_WEEK"), 'chaine', 0, '', $conf->entity);
282
283 dolibarr_set_const($db, "MAIN_DEFAULT_WORKING_DAYS", GETPOST("MAIN_DEFAULT_WORKING_DAYS", 'alphanohtml'), 'chaine', 0, '', $conf->entity);
284 dolibarr_set_const($db, "MAIN_DEFAULT_WORKING_HOURS", GETPOST("MAIN_DEFAULT_WORKING_HOURS", 'alphanohtml'), 'chaine', 0, '', $conf->entity);
285
286 dolibarr_set_const($db, "MAIN_BUGTRACK_ENABLELINK", GETPOST("MAIN_BUGTRACK_ENABLELINK", 'alpha'), 'chaine', 0, '', $conf->entity);
287
288 dolibarr_set_const($db, "MAIN_FIRSTNAME_NAME_POSITION", GETPOST("MAIN_FIRSTNAME_NAME_POSITION", 'aZ09'), 'chaine', 0, '', $conf->entity);
289
290
291 setEventMessages($langs->trans("SetupSaved"), null);
292 }
293
294 if ($mode == 'login') {
295 dolibarr_set_const($db, "MAIN_HOME", dol_htmlcleanlastbr(GETPOST("main_home", 'restricthtml')), 'chaine', 0, '', $conf->entity);
296 //dolibarr_set_const($db, "MAIN_HELP_DISABLELINK", GETPOST("MAIN_HELP_DISABLELINK", 'aZ09'), 'chaine', 0, '', 0); // Param for all entities
297
298 $varforimage = 'imagebackground';
299 $dirforimage = $conf->mycompany->dir_output . '/logos/';
300 if ($_FILES[$varforimage]["tmp_name"]) {
301 $reg = array();
302 if (preg_match('/([^\\/:]+)$/i', $_FILES[$varforimage]["name"], $reg)) {
303 $original_file = $reg[1];
304
305 $isimage = image_format_supported($original_file);
306 if ($isimage >= 0) {
307 dol_syslog("Move file " . $_FILES[$varforimage]["tmp_name"] . " to " . $dirforimage . $original_file);
308 if (!is_dir($dirforimage)) {
309 dol_mkdir($dirforimage);
310 }
311 $result = dol_move_uploaded_file($_FILES[$varforimage]["tmp_name"], $dirforimage . $original_file, 1, 0, $_FILES[$varforimage]['error']);
312 if ($result > 0) {
313 dolibarr_set_const($db, "MAIN_LOGIN_BACKGROUND", $original_file, 'chaine', 0, '', $conf->entity);
314 } elseif (preg_match('/^ErrorFileIsInfectedWithAVirus/', $result)) {
315 $error++;
316 $langs->load("errors");
317 $tmparray = explode(':', $result);
318 setEventMessages($langs->trans('ErrorFileIsInfectedWithAVirus', $tmparray[1]), null, 'errors');
319 } else {
320 $error++;
321 setEventMessages($langs->trans("ErrorFailedToSaveFile"), null, 'errors');
322 }
323 } else {
324 $error++;
325 $langs->load("errors");
326 setEventMessages($langs->trans("ErrorBadImageFormat"), null, 'errors');
327 }
328 }
329 }
330
331 if (!$error) {
332 setEventMessages($langs->trans("SetupSaved"), null);
333 }
334 }
335
336 if ($mode == 'css') {
337 //file_put_contents(DOL_DATA_ROOT.'/admin/customcss.css', $data);
338 //dol_chmod(DOL_DATA_ROOT.'/admin/customcss.css');
339 $csscontent = GETPOST('MAIN_IHM_CUSTOM_CSS', 'restricthtml');
340 $csscontent = dol_string_nohtmltag($csscontent, 2);
341
342 dolibarr_set_const($db, "MAIN_IHM_CUSTOM_CSS", $csscontent, 'chaine', 0, '', $conf->entity);
343
344 setEventMessages($langs->trans("SetupSaved"), null);
345 }
346
347 $_SESSION["mainmenu"] = ""; // The menu manager may have changed
348
349 if (GETPOST('dol_resetcache')) {
350 dolibarr_set_const($db, "MAIN_IHM_PARAMS_REV", getDolGlobalInt('MAIN_IHM_PARAMS_REV') + 1, 'chaine', 0, '', $conf->entity);
351 }
352
353 header("Location: ".$_SERVER["PHP_SELF"]."?mainmenu=home&leftmenu=setup&mode=".$mode.(GETPOSTISSET('page_y') ? '&page_y='.GETPOSTINT('page_y') : ''));
354 exit;
355}
356
357
358/*
359 * View
360 */
361
362$wikihelp = 'EN:First_setup|FR:Premiers_param&eacute;trages|ES:Primeras_configuraciones';
363
365 '',
366 $langs->trans("Setup"),
367 $wikihelp,
368 '',
369 0,
370 0,
371 array(
372 '/includes/ace/src/ace.js',
373 '/includes/ace/src/ext-statusbar.js',
374 '/includes/ace/src/ext-language_tools.js',
375 ),
376 array(),
377 '',
378 'mod-admin page-ihm'
379);
380
381$form = new Form($db);
382$formother = new FormOther($db);
383$formadmin = new FormAdmin($db);
384
385print load_fiche_titre($langs->trans("GUISetup"), '', 'title_setup');
386
387print '<span class="opacitymedium">'.$langs->trans("DisplayDesc")."</span><br>\n";
388print "<br>\n";
389
390//WYSIWYG Editor
391require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php';
392
393print '<form enctype="multipart/form-data" method="POST" action="'.$_SERVER["PHP_SELF"].'">';
394print '<input type="hidden" name="token" value="'.newToken().'">';
395print '<input type="hidden" name="action" value="update">';
396print '<input type="hidden" name="page_y" value="">';
397print '<input type="hidden" id="mode" name="mode" value="'.dol_escape_htmltag($mode).'">';
398print '<input type="hidden" name="dol_resetcache" value="1">';
399
400$head = ihm_prepare_head();
401
402print dol_get_fiche_head($head, $mode, '', -1, '');
403
404print '<br>';
405
406clearstatcache();
407
408if ($mode == 'other') {
409 print '<div class="div-table-responsive-no-min">';
410 print '<table summary="edit" class="noborder centpercent editmode tableforfield">';
411
412 print '<tr class="liste_titre"><td class="titlefieldmiddle">';
413 print $langs->trans("Language");
414 print '</td><td>';
415 print '</td></tr>';
416
417 // Default language
418 print '<tr class="oddeven"><td>'.$langs->trans("DefaultLanguage").'</td><td>';
419 print img_picto('', 'language', 'class="pictofixedwidth"');
420 print $formadmin->select_language(getDolGlobalString('MAIN_LANG_DEFAULT'), 'MAIN_LANG_DEFAULT', 1, array(), '', 0, 0, 'minwidth300', 2);
421 //print '<input class="button button-save smallpaddingimp" type="submit" name="submit" value="'.$langs->trans("Save").'">';
422 print '</td>';
423 print '</tr>';
424
425 // Multilingual GUI
426 print '<tr class="oddeven"><td>' . $langs->trans("EnableMultilangInterface") . '</td><td>';
427 print ajax_constantonoff("MAIN_MULTILANGS", array(), $conf->entity, 0, 0, 1, 0, 0, 0, '', 'language');
428 print '</td>';
429 print '</tr>';
430
431 print '</table>' . "\n";
432 print '</div>';
433
434 print '<div class="center">';
435 print '<input class="button button-save reposition" type="submit" name="submit" value="' . $langs->trans("Save") . '">';
436 print '<input class="button button-cancel reposition" type="submit" name="cancel" value="' . $langs->trans("Cancel") . '">';
437 print '</div>';
438
439 print '<br>';
440 print '<br>';
441
442 // Other
443 print '<div class="div-table-responsive-no-min">';
444 print '<table summary="otherparameters" class="noborder centpercent editmode tableforfield">';
445
446 print '<tr class="liste_titre"><td class="titlefieldmiddle">';
447 print $langs->trans("Miscellaneous");
448 print '</td>';
449 print '<td></td>';
450 print '</tr>';
451
452 if (!empty($conf->use_javascript_ajax)) {
453 // Show Quick Add link
454 print '<tr class="oddeven"><td>' . $langs->trans("ShowQuickAddLink") . '</td><td>';
455 print ajax_constantonoff("MAIN_USE_TOP_MENU_QUICKADD_DROPDOWN", array(), $conf->entity, 0, 0, 1, 0, 0, 0, '', 'other');
456 print '</td>';
457 print '</tr>';
458 }
459
460 // Hide wiki link on login page
461 $pictohelp = '<span class="fa fa-question-circle"></span>';
462 print '<tr class="oddeven"><td>' . str_replace('{picto}', $pictohelp, $langs->trans("DisableLinkToHelp", '{picto}')) . '</td><td>';
463 print ajax_constantonoff("MAIN_HELP_DISABLELINK", array(), $conf->entity, 0, 0, 1, 0, 0, 0, '', 'other');
464 //print $form->selectyesno('MAIN_HELP_DISABLELINK', isset($conf->global->MAIN_HELP_DISABLELINK) ? $conf->global->MAIN_HELP_DISABLELINK : 0, 1);
465 print '</td>';
466 print '</tr>';
467
468 // Max size of lists
469 print '<tr class="oddeven"><td>' . $langs->trans("DefaultMaxSizeList") . '</td><td><input class="flat width50" name="MAIN_SIZE_LISTE_LIMIT" value="';
470 if (getDolGlobalInt('MAIN_SIZE_LISTE_LIMIT') > 0) {
471 print getDolGlobalString('MAIN_SIZE_LISTE_LIMIT');
472 }
473 print '">';
474 if (getDolGlobalInt('MAIN_SIZE_LISTE_LIMIT') <= 0) {
475 print ' &nbsp; <span class="opacitymedium">('.$langs->trans("Automatic").')</span>';
476 }
477 print '</td>';
478 print '</tr>';
479
480 // Max size of short lists on customer card
481 print '<tr class="oddeven"><td>' . $langs->trans("DefaultMaxSizeShortList") . '</td><td><input class="flat width50" name="MAIN_SIZE_SHORTLIST_LIMIT" value="' . getDolGlobalString('MAIN_SIZE_SHORTLIST_LIMIT') . '"></td>';
482 print '</tr>';
483
484 // Display checkboxes and fields menu left / right
485 print '<tr class="oddeven"><td>' . $langs->trans("MAIN_CHECKBOX_LEFT_COLUMN") . '</td><td>';
486 print ajax_constantonoff("MAIN_CHECKBOX_LEFT_COLUMN", array(), $conf->entity, 0, 0, 1, 0, 0, 1, '', 'other');
487 print '</td>';
488 print '</tr>';
489
490 // First day for weeks
491 print '<tr class="oddeven"><td>' . $langs->trans("WeekStartOnDay") . '</td><td>';
492 print $formother->select_dayofweek(getDolGlobalString('MAIN_START_WEEK', '1'), 'MAIN_START_WEEK', 0);
493 print '</td>';
494 print '</tr>';
495
496 // DefaultWorkingDays
497 print '<tr class="oddeven"><td>' . $langs->trans("DefaultWorkingDays") . '</td><td>';
498 print '<input type="text" name="MAIN_DEFAULT_WORKING_DAYS" size="5" value="' . getDolGlobalString('MAIN_DEFAULT_WORKING_DAYS', '1-5') . '">';
499 print '</td>';
500 print '</tr>';
501
502 // DefaultWorkingHours
503 print '<tr class="oddeven"><td>' . $langs->trans("DefaultWorkingHours") . '</td><td>';
504 print '<input type="text" name="MAIN_DEFAULT_WORKING_HOURS" size="5" value="' . getDolGlobalString('MAIN_DEFAULT_WORKING_HOURS', '9-18') . '">';
505 print '</td>';
506 print '</tr>';
507
508 // Firstname/Name
509 print '<tr class="oddeven"><td>' . $langs->trans("FirstnameNamePosition") . '</td><td>';
510 $array = array(0 => $langs->trans("Firstname") . ' ' . $langs->trans("Lastname"), 1 => $langs->trans("Lastname") . ' ' . $langs->trans("Firstname"));
511 print $form->selectarray('MAIN_FIRSTNAME_NAME_POSITION', $array, getDolGlobalInt('MAIN_FIRSTNAME_NAME_POSITION', 0));
512 print '</td>';
513 print '</tr>';
514
515 // Hide unauthorized menus
516 print '<tr class="oddeven"><td>' . $langs->trans("HideUnauthorizedMenu") . '</td><td>';
517 //print $form->selectyesno('MAIN_MENU_HIDE_UNAUTHORIZED', isset($conf->global->MAIN_MENU_HIDE_UNAUTHORIZED) ? $conf->global->MAIN_MENU_HIDE_UNAUTHORIZED : 0, 1);
518 print ajax_constantonoff("MAIN_MENU_HIDE_UNAUTHORIZED", array(), $conf->entity, 0, 0, 1, 0, 0, 0, '', 'other');
519 print '</td>';
520 print '</tr>';
521
522 // Hide unauthorized button
523 print '<tr class="oddeven"><td>' . $langs->trans("ButtonHideUnauthorized") . '</td><td>';
524 //print $form->selectyesno('MAIN_BUTTON_HIDE_UNAUTHORIZED', isset($conf->global->MAIN_BUTTON_HIDE_UNAUTHORIZED) ? $conf->global->MAIN_BUTTON_HIDE_UNAUTHORIZED : 0, 1);
525 print ajax_constantonoff("MAIN_BUTTON_HIDE_UNAUTHORIZED", array(), $conf->entity, 0, 0, 1, 0, 0, 0, '', 'other');
526 print '</td>';
527 print '</tr>';
528
529 // Hide version link
530 /*
531
532 print '<tr><td>'.$langs->trans("HideVersionLink").'</td><td>';
533 print $form->selectyesno('MAIN_HIDE_VERSION',$conf->global->MAIN_HIDE_VERSION,1);
534 print '</td>';
535 print '</tr>';
536 */
537
538
539 // Show search area in top menu
540 print '<tr class="oddeven"><td>' . $langs->trans("ShowSearchAreaInTopMenu") . '</td><td>';
541 print ajax_constantonoff("MAIN_USE_TOP_MENU_SEARCH_DROPDOWN", array(), $conf->entity, 0, 0, 1, 0, 0, 0, '', 'other');
542 print '</td>';
543 print '</tr>';
544
545 // Show bugtrack link
546 print '<tr class="oddeven"><td>';
547 print $form->textwithpicto($langs->trans("ShowBugTrackLink", $langs->transnoentitiesnoconv("FindBug")), $langs->trans("ShowBugTrackLinkDesc"));
548 print '</td><td>';
549 print '<input type="text" name="MAIN_BUGTRACK_ENABLELINK" value="' . getDolGlobalString('MAIN_BUGTRACK_ENABLELINK') . '">';
550 print '</td>';
551 print '</tr>';
552
553 // Disable javascript and ajax
554 print '<tr class="oddeven"><td>' . $form->textwithpicto($langs->trans("DisableJavascript"), $langs->trans("DisableJavascriptNote")) . '</td><td>';
555 print ajax_constantonoff("MAIN_DISABLE_JAVASCRIPT", array(), $conf->entity, 0, 0, 1, 0, 0, 0, '', 'other');
556 print '</td>';
557 print '</tr>';
558
559 print '</table>' . "\n";
560 print '</div>';
561}
562
563
564if ($mode == 'template') {
565 // Themes and themes options
566 showSkins(null, 1);
567}
568
569
570if ($mode == 'dashboard') {
571 print '<div class="div-table-responsive-no-min">';
572 print '<table summary="blockdashboard" class="noborder centpercent editmode tableforfield">';
573
574 // Message of the day on home page
575 $substitutionarray = getCommonSubstitutionArray($langs, 0, array('object', 'objectamount'));
576 complete_substitutions_array($substitutionarray, $langs);
577
578 print '<tr class="oddeven width25p"><td>';
579 $texthelp = $langs->trans("FollowingConstantsWillBeSubstituted") . '<br>';
580 foreach ($substitutionarray as $key => $val) {
581 $texthelp .= $key . '<br>';
582 }
583 print $form->textwithpicto($langs->trans("MessageOfDay"), $texthelp, 1, 'help', '', 0, 2, 'tooltipmessageofday');
584
585 print '</td><td>';
586
587 $doleditor = new DolEditor('main_motd', getDolGlobalString('MAIN_MOTD'), '', 142, 'dolibarr_notes', 'In', false, true, true, ROWS_4, '90%');
588 $doleditor->Create();
589
590 print '</td></tr>'."\n";
591
592 print '</table>';
593 print '</div>';
594
595 print '<br>';
596
597 print '<div class="div-table-responsive-no-min">';
598 print '<table summary="blockdashboard" class="noborder centpercent editmode tableforfield">';
599
600 print '<tr class="liste_titre"><td class="titlefieldmiddle">';
601 print $langs->trans("DashboardDisableBlocks");
602 print '</td><td class="titlefieldmiddle">';
603 print '</td></tr>';
604
605 print '<tr class="oddeven"><td>' . $langs->trans('DashboardDisableGlobal') . '</td><td>';
606 print ajax_constantonoff("MAIN_DISABLE_GLOBAL_WORKBOARD", array(), $conf->entity, 0, 0, 1, 0, 0, 0, '_red', 'dashboard');
607 print '</td>';
608 print '</tr>';
609
610 if (!getDolGlobalString('MAIN_DISABLE_GLOBAL_WORKBOARD')) {
611 // Block meteo
612 print '<tr class="oddeven"><td>' . $langs->trans('MAIN_DISABLE_METEO') . '</td><td>';
613 print ajax_constantonoff("MAIN_DISABLE_METEO", array(), $conf->entity, 0, 0, 0, 0, 0, 0, '_red', 'dashboard');
614 print '</td>';
615 print '</tr>';
616
617 // Block agenda
618 print '<tr class="oddeven"><td>' . $langs->trans('DashboardDisableBlockAgenda') . '</td><td>';
619 print ajax_constantonoff("MAIN_DISABLE_BLOCK_AGENDA", array(), $conf->entity, 0, 0, 0, 0, 0, 0, '_red', 'dashboard');
620 print '</td>';
621 print '</tr>';
622
623 // Block agenda
624 print '<tr class="oddeven"><td>' . $langs->trans('DashboardDisableBlockProject') . '</td><td>';
625 print ajax_constantonoff("MAIN_DISABLE_BLOCK_PROJECT", array(), $conf->entity, 0, 0, 0, 0, 0, 0, '_red', 'dashboard');
626 print '</td>';
627 print '</tr>';
628
629 // Block customer
630 print '<tr class="oddeven"><td>' . $langs->trans('DashboardDisableBlockCustomer') . '</td><td>';
631 print ajax_constantonoff("MAIN_DISABLE_BLOCK_CUSTOMER", array(), $conf->entity, 0, 0, 0, 0, 0, 0, '_red', 'dashboard');
632 print '</td>';
633 print '</tr>';
634
635 // Block supplier
636 print '<tr class="oddeven"><td>' . $langs->trans('DashboardDisableBlockSupplier') . '</td><td>';
637 print ajax_constantonoff("MAIN_DISABLE_BLOCK_SUPPLIER", array(), $conf->entity, 0, 0, 0, 0, 0, 0, '_red', 'dashboard');
638 print '</td>';
639 print '</tr>';
640
641 // Block contract
642 print '<tr class="oddeven"><td>' . $langs->trans('DashboardDisableBlockContract') . '</td><td>';
643 print ajax_constantonoff("MAIN_DISABLE_BLOCK_CONTRACT", array(), $conf->entity, 0, 0, 0, 0, 0, 0, '_red', 'dashboard');
644 print '</td>';
645 print '</tr>';
646
647 // Block ticket
648 print '<tr class="oddeven"><td>' . $langs->trans('DashboardDisableBlockTicket') . '</td><td>';
649 print ajax_constantonoff("MAIN_DISABLE_BLOCK_TICKET", array(), $conf->entity, 0, 0, 0, 0, 0, 0, '_red', 'dashboard');
650 print '</td>';
651 print '</tr>';
652
653 // Block bank
654 print '<tr class="oddeven"><td>' . $langs->trans('DashboardDisableBlockBank') . '</td><td>';
655 print ajax_constantonoff("MAIN_DISABLE_BLOCK_BANK", array(), $conf->entity, 0, 0, 0, 0, 0, 0, '_red', 'dashboard');
656 print '</td>';
657 print '</tr>';
658
659 // Block adherent
660 print '<tr class="oddeven"><td>' . $langs->trans('DashboardDisableBlockAdherent') . '</td><td>';
661 print ajax_constantonoff("MAIN_DISABLE_BLOCK_ADHERENT", array(), $conf->entity, 0, 0, 0, 0, 0, 0, '_red', 'dashboard');
662 print '</td>';
663 print '</tr>';
664
665 // Block expense report
666 print '<tr class="oddeven"><td>' . $langs->trans('DashboardDisableBlockExpenseReport') . '</td><td>';
667 print ajax_constantonoff("MAIN_DISABLE_BLOCK_EXPENSEREPORT", array(), $conf->entity, 0, 0, 0, 0, 0, 0, '_red', 'dashboard');
668 print '</td>';
669 print '</tr>';
670
671 // Block holiday
672 print '<tr class="oddeven"><td>' . $langs->trans('DashboardDisableBlockHoliday') . '</td><td>';
673 print ajax_constantonoff("MAIN_DISABLE_BLOCK_HOLIDAY", array(), $conf->entity, 0, 0, 0, 0, 0, 0, '_red', 'dashboard');
674 print '</td>';
675 print '</tr>';
676 }
677
678 print '</table>' . "\n";
679 print '</div>';
680}
681
682
683if ($mode == 'login') {
684 // Other
685 print '<div class="div-table-responsive-no-min">';
686 print '<table summary="edit" class="noborder centpercent editmode tableforfield">';
687
688 print '<tr class="liste_titre"><td class="titlefieldmax45">';
689 print $langs->trans("Parameter");
690 print '</td><td>';
691 print $langs->trans("Value");
692 print '</td></tr>';
693
694 // Hide helpcenter link on login page
695 /*
696 print '<tr class="oddeven"><td>' . $langs->trans("DisableLinkToHelpCenter") . '</td><td>';
697 print ajax_constantonoff("MAIN_HELPCENTER_DISABLELINK", array(), $conf->entity, 0, 0, 0, 0, 0, 0, '', 'login');
698 print '</td>';
699 print '</tr>';
700 */
701
702 // Message on login page
703 $substitutionarray = getCommonSubstitutionArray($langs, 0, array('object', 'objectamount', 'user'));
704 complete_substitutions_array($substitutionarray, $langs);
705 print '<tr class="oddeven"><td>';
706 $texthelp = $langs->trans("FollowingConstantsWillBeSubstituted") . '<br>';
707 foreach ($substitutionarray as $key => $val) {
708 $texthelp .= $key . '<br>';
709 }
710 print $form->textwithpicto($langs->trans("MessageLogin"), $texthelp, 1, 'help', '', 0, 2, 'tooltipmessagelogin');
711 print '</td><td>';
712 $doleditor = new DolEditor('main_home', (isset($conf->global->MAIN_HOME) ? $conf->global->MAIN_HOME : ''), '', 142, 'dolibarr_notes', 'In', false, true, true, ROWS_4, '90%');
713 $doleditor->Create();
714 print '</td></tr>' . "\n";
715
716 // Background
717 print '<tr class="oddeven"><td><label for="imagebackground">' . $langs->trans("BackgroundImageLogin") . ' (png,jpg)</label></td><td>';
718 print '<div class="centpercent inline-block">';
719 $disabled = '';
720 if (getDolGlobalString('ADD_UNSPLASH_LOGIN_BACKGROUND')) {
721 $disabled = ' disabled="disabled"';
722 }
723 $maxfilesizearray = getMaxFileSizeArray();
724 $maxmin = $maxfilesizearray['maxmin'];
725 if ($maxmin > 0) {
726 print '<input type="hidden" name="MAX_FILE_SIZE" value="'.($maxmin * 1024).'">'; // MAX_FILE_SIZE must precede the field type=file
727 }
728 print '<input type="file" class="flat maxwidthinputfileonsmartphone" name="imagebackground" id="imagebackground"' . $disabled . '>';
729 if ($disabled) {
730 print '(' . $langs->trans("DisabledByOptionADD_UNSPLASH_LOGIN_BACKGROUND") . ') ';
731 }
732 if (getDolGlobalString('MAIN_LOGIN_BACKGROUND')) {
733 print '<a class="reposition" href="' . $_SERVER["PHP_SELF"] . '?action=removebackgroundlogin&token='.newToken().'&mode=login">' . img_delete($langs->trans("Delete")) . '</a>';
734 if (file_exists($conf->mycompany->dir_output . '/logos/' . getDolGlobalString('MAIN_LOGIN_BACKGROUND'))) {
735 print ' &nbsp; ';
736 print '<img class="marginleftonly boxshadow valignmiddle" width="100" src="' . DOL_URL_ROOT . '/viewimage.php?modulepart=mycompany&amp;file=' . urlencode('logos/' . getDolGlobalString('MAIN_LOGIN_BACKGROUND')) . '">';
737 }
738 } else {
739 print '<img class="marginleftonly valignmiddle" width="100" src="' . DOL_URL_ROOT . '/public/theme/common/nophoto.png">';
740 }
741 print '</div>';
742 print '</td></tr>';
743
744 print '</table>' . "\n";
745 print '</div>';
746}
747
748if ($mode == 'css') {
749 print '<div class="div-table-responsive-no-min">';
750 print '<table summary="edit" class="noborder centpercent editmode tableforfield">';
751
752 print '<tr class="liste_titre">';
753 print '<td colspan="2">';
754
755 //$customcssValue = file_get_contents(DOL_DATA_ROOT.'/admin/customcss.css');
756 $customcssValue = getDolGlobalString('MAIN_IHM_CUSTOM_CSS');
757
758 $doleditor = new DolEditor('MAIN_IHM_CUSTOM_CSS', $customcssValue, '80%', 400, 'Basic', 'In', true, false, 'ace', 10, '90%');
759 $doleditor->Create(0, '', true, 'css', 'css');
760 print '</td></tr>'."\n";
761
762 print '</table>'."\n";
763 print '</div>';
764}
765
766
767print '<div class="center">';
768print '<input class="button button-save reposition buttonforacesave" type="submit" name="submit" value="' . $langs->trans("Save") . '">';
769print '<input class="button button-cancel reposition" type="submit" name="cancel" value="' . $langs->trans("Cancel") . '">';
770print '</div>';
771
772print '</form>';
773
774
775// End of page
776llxFooter();
777$db->close();
if( $user->socid > 0) if(! $user->hasRight('accounting', 'chartofaccount')) $object
Definition card.php:67
dolibarr_set_const($db, $name, $value, $type='chaine', $visible=0, $note='', $entity=1)
Insert a parameter (key,value) into database (delete old key then insert it again).
dolibarr_del_const($db, $name, $entity=1)
Delete a constant.
ihm_prepare_head()
Prepare array with list of tabs.
llxFooter($comment='', $zone='private', $disabledoutputofmessages=0)
Empty footer.
Definition wrapper.php:91
if(!defined('NOREQUIRESOC')) if(!defined( 'NOREQUIRETRAN')) if(!defined('NOTOKENRENEWAL')) if(!defined( 'NOREQUIREMENU')) if(!defined('NOREQUIREHTML')) if(!defined( 'NOREQUIREAJAX')) llxHeader($head='', $title='', $help_url='', $target='', $disablejs=0, $disablehead=0, $arrayofjs='', $arrayofcss='', $morequerystring='', $morecssonbody='', $replacemainareaby='', $disablenofollow=0, $disablenoindex=0)
Empty header.
Definition wrapper.php:73
Class to manage a WYSIWYG editor.
Class to generate html code for admin pages.
Class to manage generation of HTML components Only common components must be here.
Class permettant la generation de composants html autre Only common components are here.
dol_delete_file($file, $disableglob=0, $nophperrors=0, $nohook=0, $object=null, $allowdotdot=false, $indexdatabase=1, $nolog=0)
Remove a file or several files with a mask.
dol_move_uploaded_file($src_file, $dest_file, $allowoverwrite, $disablevirusscan=0, $uploaderrorcode=0, $nohook=0, $keyforsourcefile='addedfile', $upload_dir='', $mode=0)
Check validity of a file upload from an GUI page, and move it to its final destination.
colorStringToArray($stringcolor, $colorifnotfound=array(88, 88, 88))
Convert a string RGB value ('FFFFFF', '255,255,255') into an array RGB array(255,255,...
load_fiche_titre($title, $morehtmlright='', $picto='generic', $pictoisfullpath=0, $id='', $morecssontable='', $morehtmlcenter='')
Load a title with picto.
setEventMessages($mesg, $mesgs, $style='mesgs', $messagekey='', $noduplicate=0, $attop=0)
Set event messages in dol_events session object.
img_picto($titlealt, $picto, $moreatt='', $pictoisfullpath=0, $srconly=0, $notitle=0, $alt='', $morecss='', $marginleftonlyshort=2, $allowothertags=array())
Show picto whatever it's its name (generic function)
img_delete($titlealt='default', $other='class="pictodelete"', $morecss='')
Show delete logo.
GETPOSTINT($paramname, $method=0)
Return the value of a $_GET or $_POST supervariable, converted into integer.
dol_get_fiche_head($links=array(), $active='', $title='', $notab=0, $picto='', $pictoisfullpath=0, $morehtmlright='', $morecss='', $limittoshow=0, $moretabssuffix='', $dragdropfile=0, $morecssdiv='')
Show tabs of a record.
dol_string_nohtmltag($stringtoclean, $removelinefeed=1, $pagecodeto='UTF-8', $strip_tags=0, $removedoublespaces=1)
Clean a string from all HTML tags and entities.
getDolGlobalInt($key, $default=0)
Return a Dolibarr global constant int value.
dol_htmlcleanlastbr($stringtodecode)
This function remove all ending and br at end.
complete_substitutions_array(&$substitutionarray, $outputlangs, $object=null, $parameters=null, $callfunc="completesubstitutionarray")
Complete the $substitutionarray with more entries coming from external module that had set the "subst...
GETPOST($paramname, $check='alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0)
Return value of a param into GET or POST supervariable.
getDolGlobalString($key, $default='')
Return a Dolibarr global constant string value.
dol_syslog($message, $level=LOG_INFO, $ident=0, $suffixinfilename='', $restricttologhandler='', $logcontext=null)
Write log message into outputs.
dol_mkdir($dir, $dataroot='', $newmask='')
Creation of a directory (this can create recursive subdir)
image_format_supported($file, $acceptsvg=0)
Return if a filename is file name of a supported image format.
global $conf
The following vars must be defined: $type2label $form $conf, $lang, The following vars may also be de...
Definition member.php:79
getMaxFileSizeArray()
Return the max allowed for file upload.
accessforbidden($message='', $printheader=1, $printfooter=1, $showonlymessage=0, $params=null)
Show a message to say access is forbidden and stop program.
showSkins($fuser, $edit=0, $foruserprofile=false)
Show list of themes.