dolibarr 21.0.0-beta
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
259 if ($mode == 'dashboard') {
260 dolibarr_set_const($db, "MAIN_MOTD", dol_htmlcleanlastbr(GETPOST("main_motd", 'restricthtml')), 'chaine', 0, '', $conf->entity);
261 }
262
263 if ($mode == 'other') {
264 dolibarr_set_const($db, "MAIN_LANG_DEFAULT", GETPOST("MAIN_LANG_DEFAULT", 'aZ09'), 'chaine', 0, '', $conf->entity);
265 dolibarr_set_const($db, "MAIN_IHM_PARAMS_REV", getDolGlobalInt('MAIN_IHM_PARAMS_REV') + 1, 'chaine', 0, '', $conf->entity);
266
267 dolibarr_set_const($db, "MAIN_SIZE_LISTE_LIMIT", GETPOSTINT("MAIN_SIZE_LISTE_LIMIT"), 'chaine', 0, '', $conf->entity);
268 dolibarr_set_const($db, "MAIN_SIZE_SHORTLIST_LIMIT", GETPOSTINT("MAIN_SIZE_SHORTLIST_LIMIT"), 'chaine', 0, '', $conf->entity);
269
270 if (GETPOSTISSET("MAIN_CHECKBOX_LEFT_COLUMN")) {
271 dolibarr_set_const($db, "MAIN_CHECKBOX_LEFT_COLUMN", GETPOSTINT("MAIN_CHECKBOX_LEFT_COLUMN"), 'chaine', 0, '', $conf->entity);
272 }
273
274 //dolibarr_set_const($db, "MAIN_DISABLE_JAVASCRIPT", GETPOST("MAIN_DISABLE_JAVASCRIPT", 'aZ09'), 'chaine', 0, '', $conf->entity);
275 //dolibarr_set_const($db, "MAIN_BUTTON_HIDE_UNAUTHORIZED", GETPOST("MAIN_BUTTON_HIDE_UNAUTHORIZED", 'aZ09'), 'chaine', 0, '', $conf->entity);
276 //dolibarr_set_const($db, "MAIN_MENU_HIDE_UNAUTHORIZED", GETPOST("MAIN_MENU_HIDE_UNAUTHORIZED", 'aZ09'), 'chaine', 0, '', $conf->entity);
277 dolibarr_set_const($db, "MAIN_START_WEEK", GETPOSTINT("MAIN_START_WEEK"), 'chaine', 0, '', $conf->entity);
278
279 dolibarr_set_const($db, "MAIN_DEFAULT_WORKING_DAYS", GETPOST("MAIN_DEFAULT_WORKING_DAYS", 'alphanohtml'), 'chaine', 0, '', $conf->entity);
280 dolibarr_set_const($db, "MAIN_DEFAULT_WORKING_HOURS", GETPOST("MAIN_DEFAULT_WORKING_HOURS", 'alphanohtml'), 'chaine', 0, '', $conf->entity);
281
282 dolibarr_set_const($db, "MAIN_BUGTRACK_ENABLELINK", GETPOST("MAIN_BUGTRACK_ENABLELINK", 'alpha'), 'chaine', 0, '', $conf->entity);
283
284 dolibarr_set_const($db, "MAIN_FIRSTNAME_NAME_POSITION", GETPOST("MAIN_FIRSTNAME_NAME_POSITION", 'aZ09'), 'chaine', 0, '', $conf->entity);
285 }
286
287 if ($mode == 'login') {
288 dolibarr_set_const($db, "MAIN_HOME", dol_htmlcleanlastbr(GETPOST("main_home", 'restricthtml')), 'chaine', 0, '', $conf->entity);
289 //dolibarr_set_const($db, "MAIN_HELP_DISABLELINK", GETPOST("MAIN_HELP_DISABLELINK", 'aZ09'), 'chaine', 0, '', 0); // Param for all entities
290
291 $varforimage = 'imagebackground';
292 $dirforimage = $conf->mycompany->dir_output . '/logos/';
293 if ($_FILES[$varforimage]["tmp_name"]) {
294 $reg = array();
295 if (preg_match('/([^\\/:]+)$/i', $_FILES[$varforimage]["name"], $reg)) {
296 $original_file = $reg[1];
297
298 $isimage = image_format_supported($original_file);
299 if ($isimage >= 0) {
300 dol_syslog("Move file " . $_FILES[$varforimage]["tmp_name"] . " to " . $dirforimage . $original_file);
301 if (!is_dir($dirforimage)) {
302 dol_mkdir($dirforimage);
303 }
304 $result = dol_move_uploaded_file($_FILES[$varforimage]["tmp_name"], $dirforimage . $original_file, 1, 0, $_FILES[$varforimage]['error']);
305 if ($result > 0) {
306 dolibarr_set_const($db, "MAIN_LOGIN_BACKGROUND", $original_file, 'chaine', 0, '', $conf->entity);
307 } elseif (preg_match('/^ErrorFileIsInfectedWithAVirus/', $result)) {
308 $error++;
309 $langs->load("errors");
310 $tmparray = explode(':', $result);
311 setEventMessages($langs->trans('ErrorFileIsInfectedWithAVirus', $tmparray[1]), null, 'errors');
312 } else {
313 $error++;
314 setEventMessages($langs->trans("ErrorFailedToSaveFile"), null, 'errors');
315 }
316 } else {
317 $error++;
318 $langs->load("errors");
319 setEventMessages($langs->trans("ErrorBadImageFormat"), null, 'errors');
320 }
321 }
322 }
323 }
324
325 if ($mode == 'css') {
326 //file_put_contents(DOL_DATA_ROOT.'/admin/customcss.css', $data);
327 //dol_chmod(DOL_DATA_ROOT.'/admin/customcss.css');
328 dolibarr_set_const($db, "MAIN_IHM_CUSTOM_CSS", GETPOST('MAIN_IHM_CUSTOM_CSS', 'restricthtml'), 'chaine', 0, '', $conf->entity);
329 }
330
331 $_SESSION["mainmenu"] = ""; // The menu manager may have changed
332
333 if (GETPOST('dol_resetcache')) {
334 dolibarr_set_const($db, "MAIN_IHM_PARAMS_REV", getDolGlobalInt('MAIN_IHM_PARAMS_REV') + 1, 'chaine', 0, '', $conf->entity);
335 }
336
337 header("Location: ".$_SERVER["PHP_SELF"]."?mainmenu=home&leftmenu=setup&mode=".$mode.(GETPOSTISSET('page_y') ? '&page_y='.GETPOSTINT('page_y') : ''));
338 exit;
339}
340
341
342/*
343 * View
344 */
345
346$wikihelp = 'EN:First_setup|FR:Premiers_param&eacute;trages|ES:Primeras_configuraciones';
347
349 '',
350 $langs->trans("Setup"),
351 $wikihelp,
352 '',
353 0,
354 0,
355 array(
356 '/includes/ace/src/ace.js',
357 '/includes/ace/src/ext-statusbar.js',
358 '/includes/ace/src/ext-language_tools.js',
359 ),
360 array(),
361 '',
362 'mod-admin page-ihm'
363);
364
365$form = new Form($db);
366$formother = new FormOther($db);
367$formadmin = new FormAdmin($db);
368
369print load_fiche_titre($langs->trans("GUISetup"), '', 'title_setup');
370
371print '<span class="opacitymedium">'.$langs->trans("DisplayDesc")."</span><br>\n";
372print "<br>\n";
373
374//WYSIWYG Editor
375require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php';
376
377print '<form enctype="multipart/form-data" method="POST" action="'.$_SERVER["PHP_SELF"].'">';
378print '<input type="hidden" name="token" value="'.newToken().'">';
379print '<input type="hidden" name="action" value="update">';
380print '<input type="hidden" name="page_y" value="">';
381print '<input type="hidden" id="mode" name="mode" value="'.dol_escape_htmltag($mode).'">';
382print '<input type="hidden" name="dol_resetcache" value="1">';
383
384$head = ihm_prepare_head();
385
386print dol_get_fiche_head($head, $mode, '', -1, '');
387
388print '<br>';
389
390clearstatcache();
391
392if ($mode == 'other') {
393 print '<div class="div-table-responsive-no-min">';
394 print '<table summary="edit" class="noborder centpercent editmode tableforfield">';
395
396 print '<tr class="liste_titre"><td class="titlefieldmiddle">';
397 print $langs->trans("Language");
398 print '</td><td class="titlefieldmiddle">';
399 print '</td></tr>';
400
401 // Default language
402 print '<tr class="oddeven"><td>'.$langs->trans("DefaultLanguage").'</td><td>';
403 print img_picto('', 'language', 'class="pictofixedwidth"');
404 print $formadmin->select_language(getDolGlobalString('MAIN_LANG_DEFAULT'), 'MAIN_LANG_DEFAULT', 1, array(), '', 0, 0, 'minwidth300', 2);
405 //print '<input class="button button-save smallpaddingimp" type="submit" name="submit" value="'.$langs->trans("Save").'">';
406 print '</td>';
407 print '</tr>';
408
409 // Multilingual GUI
410 print '<tr class="oddeven"><td>' . $langs->trans("EnableMultilangInterface") . '</td><td>';
411 print ajax_constantonoff("MAIN_MULTILANGS", array(), $conf->entity, 0, 0, 1, 0, 0, 0, '', 'language');
412 print '</td>';
413 print '</tr>';
414
415 print '</table>' . "\n";
416 print '</div>';
417
418 print '<div class="center">';
419 print '<input class="button button-save reposition" type="submit" name="submit" value="' . $langs->trans("Save") . '">';
420 print '<input class="button button-cancel reposition" type="submit" name="cancel" value="' . $langs->trans("Cancel") . '">';
421 print '</div>';
422
423 print '<br>';
424 print '<br>';
425
426 // Other
427 print '<div class="div-table-responsive-no-min">';
428 print '<table summary="otherparameters" class="noborder centpercent editmode tableforfield">';
429
430 print '<tr class="liste_titre"><td class="titlefieldmiddle">';
431 print $langs->trans("Miscellaneous");
432 print '</td>';
433 print '<td class="titlefieldmiddle"></td>';
434 print '</tr>';
435
436 if (!empty($conf->use_javascript_ajax)) {
437 // Show Quick Add link
438 print '<tr class="oddeven"><td>' . $langs->trans("ShowQuickAddLink") . '</td><td>';
439 print ajax_constantonoff("MAIN_USE_TOP_MENU_QUICKADD_DROPDOWN", array(), $conf->entity, 0, 0, 1, 0, 0, 0, '', 'other');
440 print '</td>';
441 print '</tr>';
442 }
443
444 // Hide wiki link on login page
445 $pictohelp = '<span class="fa fa-question-circle"></span>';
446 print '<tr class="oddeven"><td>' . str_replace('{picto}', $pictohelp, $langs->trans("DisableLinkToHelp", '{picto}')) . '</td><td>';
447 print ajax_constantonoff("MAIN_HELP_DISABLELINK", array(), $conf->entity, 0, 0, 1, 0, 0, 0, '', 'other');
448 //print $form->selectyesno('MAIN_HELP_DISABLELINK', isset($conf->global->MAIN_HELP_DISABLELINK) ? $conf->global->MAIN_HELP_DISABLELINK : 0, 1);
449 print '</td>';
450 print '</tr>';
451
452 // Max size of lists
453 print '<tr class="oddeven"><td>' . $langs->trans("DefaultMaxSizeList") . '</td><td><input class="flat width50" name="MAIN_SIZE_LISTE_LIMIT" value="';
454 if (getDolGlobalInt('MAIN_SIZE_LISTE_LIMIT') > 0) {
455 print getDolGlobalString('MAIN_SIZE_LISTE_LIMIT');
456 }
457 print '">';
458 if (getDolGlobalInt('MAIN_SIZE_LISTE_LIMIT') <= 0) {
459 print ' &nbsp; <span class="opacitymedium">('.$langs->trans("Automatic").')</span>';
460 }
461 print '</td>';
462 print '</tr>';
463
464 // Max size of short lists on customer card
465 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>';
466 print '</tr>';
467
468 // Display checkboxes and fields menu left / right
469 print '<tr class="oddeven"><td>' . $langs->trans("MAIN_CHECKBOX_LEFT_COLUMN") . '</td><td>';
470 print ajax_constantonoff("MAIN_CHECKBOX_LEFT_COLUMN", array(), $conf->entity, 0, 0, 1, 0, 0, 1, '', 'other');
471 print '</td>';
472 print '</tr>';
473
474 // First day for weeks
475 print '<tr class="oddeven"><td>' . $langs->trans("WeekStartOnDay") . '</td><td>';
476 print $formother->select_dayofweek(getDolGlobalString('MAIN_START_WEEK', '1'), 'MAIN_START_WEEK', 0);
477 print '</td>';
478 print '</tr>';
479
480 // DefaultWorkingDays
481 print '<tr class="oddeven"><td>' . $langs->trans("DefaultWorkingDays") . '</td><td>';
482 print '<input type="text" name="MAIN_DEFAULT_WORKING_DAYS" size="5" value="' . getDolGlobalString('MAIN_DEFAULT_WORKING_DAYS', '1-5') . '">';
483 print '</td>';
484 print '</tr>';
485
486 // DefaultWorkingHours
487 print '<tr class="oddeven"><td>' . $langs->trans("DefaultWorkingHours") . '</td><td>';
488 print '<input type="text" name="MAIN_DEFAULT_WORKING_HOURS" size="5" value="' . getDolGlobalString('MAIN_DEFAULT_WORKING_HOURS', '9-18') . '">';
489 print '</td>';
490 print '</tr>';
491
492 // Firstname/Name
493 print '<tr class="oddeven"><td>' . $langs->trans("FirstnameNamePosition") . '</td><td>';
494 $array = array(0 => $langs->trans("Firstname") . ' ' . $langs->trans("Lastname"), 1 => $langs->trans("Lastname") . ' ' . $langs->trans("Firstname"));
495 print $form->selectarray('MAIN_FIRSTNAME_NAME_POSITION', $array, getDolGlobalInt('MAIN_FIRSTNAME_NAME_POSITION', 0));
496 print '</td>';
497 print '</tr>';
498
499 // Hide unauthorized menus
500 print '<tr class="oddeven"><td>' . $langs->trans("HideUnauthorizedMenu") . '</td><td>';
501 //print $form->selectyesno('MAIN_MENU_HIDE_UNAUTHORIZED', isset($conf->global->MAIN_MENU_HIDE_UNAUTHORIZED) ? $conf->global->MAIN_MENU_HIDE_UNAUTHORIZED : 0, 1);
502 print ajax_constantonoff("MAIN_MENU_HIDE_UNAUTHORIZED", array(), $conf->entity, 0, 0, 1, 0, 0, 0, '', 'other');
503 print '</td>';
504 print '</tr>';
505
506 // Hide unauthorized button
507 print '<tr class="oddeven"><td>' . $langs->trans("ButtonHideUnauthorized") . '</td><td>';
508 //print $form->selectyesno('MAIN_BUTTON_HIDE_UNAUTHORIZED', isset($conf->global->MAIN_BUTTON_HIDE_UNAUTHORIZED) ? $conf->global->MAIN_BUTTON_HIDE_UNAUTHORIZED : 0, 1);
509 print ajax_constantonoff("MAIN_BUTTON_HIDE_UNAUTHORIZED", array(), $conf->entity, 0, 0, 1, 0, 0, 0, '', 'other');
510 print '</td>';
511 print '</tr>';
512
513 // Hide version link
514 /*
515
516 print '<tr><td>'.$langs->trans("HideVersionLink").'</td><td>';
517 print $form->selectyesno('MAIN_HIDE_VERSION',$conf->global->MAIN_HIDE_VERSION,1);
518 print '</td>';
519 print '</tr>';
520 */
521
522
523 // Show search area in top menu
524 print '<tr class="oddeven"><td>' . $langs->trans("ShowSearchAreaInTopMenu") . '</td><td>';
525 print ajax_constantonoff("MAIN_USE_TOP_MENU_SEARCH_DROPDOWN", array(), $conf->entity, 0, 0, 1, 0, 0, 0, '', 'other');
526 print '</td>';
527 print '</tr>';
528
529 // Show bugtrack link
530 print '<tr class="oddeven"><td>';
531 print $form->textwithpicto($langs->trans("ShowBugTrackLink", $langs->transnoentitiesnoconv("FindBug")), $langs->trans("ShowBugTrackLinkDesc"));
532 print '</td><td>';
533 print '<input type="text" name="MAIN_BUGTRACK_ENABLELINK" value="' . getDolGlobalString('MAIN_BUGTRACK_ENABLELINK') . '">';
534 print '</td>';
535 print '</tr>';
536
537 // Disable javascript and ajax
538 print '<tr class="oddeven"><td>' . $form->textwithpicto($langs->trans("DisableJavascript"), $langs->trans("DisableJavascriptNote")) . '</td><td>';
539 print ajax_constantonoff("MAIN_DISABLE_JAVASCRIPT", array(), $conf->entity, 0, 0, 1, 0, 0, 0, '', 'other');
540 print '</td>';
541 print '</tr>';
542
543 print '</table>' . "\n";
544 print '</div>';
545}
546
547
548if ($mode == 'template') {
549 // Themes and themes options
550 showSkins(null, 1);
551}
552
553
554if ($mode == 'dashboard') {
555 print '<div class="div-table-responsive-no-min">';
556 print '<table summary="blockdashboard" class="noborder centpercent editmode tableforfield">';
557
558 // Message of the day on home page
559 $substitutionarray = getCommonSubstitutionArray($langs, 0, array('object', 'objectamount'));
560 complete_substitutions_array($substitutionarray, $langs);
561
562 print '<tr class="oddeven width25p"><td>';
563 $texthelp = $langs->trans("FollowingConstantsWillBeSubstituted") . '<br>';
564 foreach ($substitutionarray as $key => $val) {
565 $texthelp .= $key . '<br>';
566 }
567 print $form->textwithpicto($langs->trans("MessageOfDay"), $texthelp, 1, 'help', '', 0, 2, 'tooltipmessageofday');
568
569 print '</td><td>';
570
571 $doleditor = new DolEditor('main_motd', getDolGlobalString('MAIN_MOTD'), '', 142, 'dolibarr_notes', 'In', false, true, true, ROWS_4, '90%');
572 $doleditor->Create();
573
574 print '</td></tr>'."\n";
575
576 print '</table>';
577 print '</div>';
578
579 print '<br>';
580
581 print '<div class="div-table-responsive-no-min">';
582 print '<table summary="blockdashboard" class="noborder centpercent editmode tableforfield">';
583
584 print '<tr class="liste_titre"><td class="titlefieldmiddle">';
585 print $langs->trans("DashboardDisableBlocks");
586 print '</td><td class="titlefieldmiddle">';
587 print '</td></tr>';
588
589 print '<tr class="oddeven"><td>' . $langs->trans('DashboardDisableGlobal') . '</td><td>';
590 print ajax_constantonoff("MAIN_DISABLE_GLOBAL_WORKBOARD", array(), $conf->entity, 0, 0, 1, 0, 0, 0, '_red', 'dashboard');
591 print '</td>';
592 print '</tr>';
593
594 if (!getDolGlobalString('MAIN_DISABLE_GLOBAL_WORKBOARD')) {
595 // Block meteo
596 print '<tr class="oddeven"><td>' . $langs->trans('MAIN_DISABLE_METEO') . '</td><td>';
597 print ajax_constantonoff("MAIN_DISABLE_METEO", array(), $conf->entity, 0, 0, 1, 0, 0, 0, '_red', 'dashboard');
598 print '</td>';
599 print '</tr>';
600
601 // Block agenda
602 print '<tr class="oddeven"><td>' . $langs->trans('DashboardDisableBlockAgenda') . '</td><td>';
603 print ajax_constantonoff("MAIN_DISABLE_BLOCK_AGENDA", array(), $conf->entity, 0, 0, 1, 0, 0, 0, '_red', 'dashboard');
604 print '</td>';
605 print '</tr>';
606
607 // Block agenda
608 print '<tr class="oddeven"><td>' . $langs->trans('DashboardDisableBlockProject') . '</td><td>';
609 print ajax_constantonoff("MAIN_DISABLE_BLOCK_PROJECT", array(), $conf->entity, 0, 0, 1, 0, 0, 0, '_red', 'dashboard');
610 print '</td>';
611 print '</tr>';
612
613 // Block customer
614 print '<tr class="oddeven"><td>' . $langs->trans('DashboardDisableBlockCustomer') . '</td><td>';
615 print ajax_constantonoff("MAIN_DISABLE_BLOCK_CUSTOMER", array(), $conf->entity, 0, 0, 1, 0, 0, 0, '_red', 'dashboard');
616 print '</td>';
617 print '</tr>';
618
619 // Block supplier
620 print '<tr class="oddeven"><td>' . $langs->trans('DashboardDisableBlockSupplier') . '</td><td>';
621 print ajax_constantonoff("MAIN_DISABLE_BLOCK_SUPPLIER", array(), $conf->entity, 0, 0, 1, 0, 0, 0, '_red', 'dashboard');
622 print '</td>';
623 print '</tr>';
624
625 // Block contract
626 print '<tr class="oddeven"><td>' . $langs->trans('DashboardDisableBlockContract') . '</td><td>';
627 print ajax_constantonoff("MAIN_DISABLE_BLOCK_CONTRACT", array(), $conf->entity, 0, 0, 1, 0, 0, 0, '_red', 'dashboard');
628 print '</td>';
629 print '</tr>';
630
631 // Block ticket
632 print '<tr class="oddeven"><td>' . $langs->trans('DashboardDisableBlockTicket') . '</td><td>';
633 print ajax_constantonoff("MAIN_DISABLE_BLOCK_TICKET", array(), $conf->entity, 0, 0, 1, 0, 0, 0, '_red', 'dashboard');
634 print '</td>';
635 print '</tr>';
636
637 // Block bank
638 print '<tr class="oddeven"><td>' . $langs->trans('DashboardDisableBlockBank') . '</td><td>';
639 print ajax_constantonoff("MAIN_DISABLE_BLOCK_BANK", array(), $conf->entity, 0, 0, 1, 0, 0, 0, '_red', 'dashboard');
640 print '</td>';
641 print '</tr>';
642
643 // Block adherent
644 print '<tr class="oddeven"><td>' . $langs->trans('DashboardDisableBlockAdherent') . '</td><td>';
645 print ajax_constantonoff("MAIN_DISABLE_BLOCK_ADHERENT", array(), $conf->entity, 0, 0, 1, 0, 0, 0, '_red', 'dashboard');
646 print '</td>';
647 print '</tr>';
648
649 // Block expense report
650 print '<tr class="oddeven"><td>' . $langs->trans('DashboardDisableBlockExpenseReport') . '</td><td>';
651 print ajax_constantonoff("MAIN_DISABLE_BLOCK_EXPENSEREPORT", array(), $conf->entity, 0, 0, 1, 0, 0, 0, '_red', 'dashboard');
652 print '</td>';
653 print '</tr>';
654
655 // Block holiday
656 print '<tr class="oddeven"><td>' . $langs->trans('DashboardDisableBlockHoliday') . '</td><td>';
657 print ajax_constantonoff("MAIN_DISABLE_BLOCK_HOLIDAY", array(), $conf->entity, 0, 0, 1, 0, 0, 0, '_red', 'dashboard');
658 print '</td>';
659 print '</tr>';
660 }
661
662 print '</table>' . "\n";
663 print '</div>';
664}
665
666
667if ($mode == 'login') {
668 // Other
669 print '<div class="div-table-responsive-no-min">';
670 print '<table summary="edit" class="noborder centpercent editmode tableforfield">';
671
672 print '<tr class="liste_titre"><td class="titlefieldmax45">';
673 print $langs->trans("Parameter");
674 print '</td><td>';
675 print $langs->trans("Value");
676 print '</td></tr>';
677
678 // Hide helpcenter link on login page
679 /*
680 print '<tr class="oddeven"><td>' . $langs->trans("DisableLinkToHelpCenter") . '</td><td>';
681 print ajax_constantonoff("MAIN_HELPCENTER_DISABLELINK", array(), $conf->entity, 0, 0, 0, 0, 0, 0, '', 'login');
682 print '</td>';
683 print '</tr>';
684 */
685
686 // Message on login page
687 $substitutionarray = getCommonSubstitutionArray($langs, 0, array('object', 'objectamount', 'user'));
688 complete_substitutions_array($substitutionarray, $langs);
689 print '<tr class="oddeven"><td>';
690 $texthelp = $langs->trans("FollowingConstantsWillBeSubstituted") . '<br>';
691 foreach ($substitutionarray as $key => $val) {
692 $texthelp .= $key . '<br>';
693 }
694 print $form->textwithpicto($langs->trans("MessageLogin"), $texthelp, 1, 'help', '', 0, 2, 'tooltipmessagelogin');
695 print '</td><td>';
696 $doleditor = new DolEditor('main_home', (isset($conf->global->MAIN_HOME) ? $conf->global->MAIN_HOME : ''), '', 142, 'dolibarr_notes', 'In', false, true, true, ROWS_4, '90%');
697 $doleditor->Create();
698 print '</td></tr>' . "\n";
699
700 // Background
701 print '<tr class="oddeven"><td><label for="imagebackground">' . $langs->trans("BackgroundImageLogin") . ' (png,jpg)</label></td><td>';
702 print '<div class="centpercent inline-block">';
703 $disabled = '';
704 if (getDolGlobalString('ADD_UNSPLASH_LOGIN_BACKGROUND')) {
705 $disabled = ' disabled="disabled"';
706 }
707 $maxfilesizearray = getMaxFileSizeArray();
708 $maxmin = $maxfilesizearray['maxmin'];
709 if ($maxmin > 0) {
710 print '<input type="hidden" name="MAX_FILE_SIZE" value="'.($maxmin * 1024).'">'; // MAX_FILE_SIZE must precede the field type=file
711 }
712 print '<input type="file" class="flat maxwidthinputfileonsmartphone" name="imagebackground" id="imagebackground"' . $disabled . '>';
713 if ($disabled) {
714 print '(' . $langs->trans("DisabledByOptionADD_UNSPLASH_LOGIN_BACKGROUND") . ') ';
715 }
716 if (getDolGlobalString('MAIN_LOGIN_BACKGROUND')) {
717 print '<a class="reposition" href="' . $_SERVER["PHP_SELF"] . '?action=removebackgroundlogin&token='.newToken().'&mode=login">' . img_delete($langs->trans("Delete")) . '</a>';
718 if (file_exists($conf->mycompany->dir_output . '/logos/' . getDolGlobalString('MAIN_LOGIN_BACKGROUND'))) {
719 print ' &nbsp; ';
720 print '<img class="marginleftonly boxshadow valignmiddle" width="100" src="' . DOL_URL_ROOT . '/viewimage.php?modulepart=mycompany&amp;file=' . urlencode('logos/' . getDolGlobalString('MAIN_LOGIN_BACKGROUND')) . '">';
721 }
722 } else {
723 print '<img class="marginleftonly valignmiddle" width="100" src="' . DOL_URL_ROOT . '/public/theme/common/nophoto.png">';
724 }
725 print '</div>';
726 print '</td></tr>';
727
728 print '</table>' . "\n";
729 print '</div>';
730}
731
732if ($mode == 'css') {
733 print '<div class="div-table-responsive-no-min">';
734 print '<table summary="edit" class="noborder centpercent editmode tableforfield">';
735
736 print '<tr class="liste_titre">';
737 print '<td colspan="2">';
738
739 //$customcssValue = file_get_contents(DOL_DATA_ROOT.'/admin/customcss.css');
740 $customcssValue = getDolGlobalString('MAIN_IHM_CUSTOM_CSS');
741
742 $doleditor = new DolEditor('MAIN_IHM_CUSTOM_CSS', $customcssValue, '80%', 400, 'Basic', 'In', true, false, 'ace', 10, '90%');
743 $doleditor->Create(0, '', true, 'css', 'css');
744 print '</td></tr>'."\n";
745
746 print '</table>'."\n";
747 print '</div>';
748}
749
750
751print '<div class="center">';
752print '<input class="button button-save reposition buttonforacesave" type="submit" name="submit" value="' . $langs->trans("Save") . '">';
753print '<input class="button button-cancel reposition" type="submit" name="cancel" value="' . $langs->trans("Cancel") . '">';
754print '</div>';
755
756print '</form>';
757
758
759// End of page
760llxFooter();
761$db->close();
if( $user->socid > 0) if(! $user->hasRight('accounting', 'chartofaccount')) $object
Definition card.php:66
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.
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:71
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.
llxFooter()
Footer empty.
Definition document.php:107
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, $varfiles='addedfile', $upload_dir='')
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_delete($titlealt='default', $other='class="pictodelete"', $morecss='')
Show delete logo.
img_picto($titlealt, $picto, $moreatt='', $pictoisfullpath=0, $srconly=0, $notitle=0, $alt='', $morecss='', $marginleftonlyshort=2)
Show picto whatever it's its name (generic function)
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)
Show tabs of a record.
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.
getCommonSubstitutionArray($outputlangs, $onlykey=0, $exclude=null, $object=null, $include=null)
Return array of possible common substitutions.
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.