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