usergroups.lib.php 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785
  1. <?php
  2. /* Copyright (C) 2006-2012 Laurent Destailleur <eldy@users.sourceforge.net>
  3. * Copyright (C) 2010-2012 Regis Houssin <regis.houssin@capnetworks.com>
  4. * Copyright (C) 2015 Alexandre Spangaro <aspangaro.dolibarr@gmail.com>
  5. *
  6. * This program is free software; you can redistribute it and/or modify
  7. * it under the terms of the GNU General Public License as published by
  8. * the Free Software Foundation; either version 3 of the License, or
  9. * (at your option) any later version.
  10. *
  11. * This program is distributed in the hope that it will be useful,
  12. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  14. * GNU General Public License for more details.
  15. *
  16. * You should have received a copy of the GNU General Public License
  17. * along with this program. If not, see <http://www.gnu.org/licenses/>.
  18. * or see http://www.gnu.org/
  19. */
  20. /**
  21. * \file htdocs/core/lib/usergroups.lib.php
  22. * \brief Ensemble de fonctions de base pour la gestion des utilisaterus et groupes
  23. */
  24. /**
  25. * Prepare array with list of tabs
  26. *
  27. * @param Object $object Object related to tabs
  28. * @return array Array of tabs to show
  29. */
  30. function user_prepare_head($object)
  31. {
  32. global $langs, $conf, $user, $db;
  33. $langs->load("users");
  34. $canreadperms=true;
  35. if (! empty($conf->global->MAIN_USE_ADVANCED_PERMS))
  36. {
  37. $canreadperms=($user->admin || ($user->id != $object->id && $user->rights->user->user_advance->readperms) || ($user->id == $object->id && $user->rights->user->self_advance->readperms));
  38. }
  39. $h = 0;
  40. $head = array();
  41. $head[$h][0] = DOL_URL_ROOT.'/user/card.php?id='.$object->id;
  42. $head[$h][1] = $langs->trans("UserCard");
  43. $head[$h][2] = 'user';
  44. $h++;
  45. if (! empty($conf->ldap->enabled) && ! empty($conf->global->LDAP_SYNCHRO_ACTIVE))
  46. {
  47. $langs->load("ldap");
  48. $head[$h][0] = DOL_URL_ROOT.'/user/ldap.php?id='.$object->id;
  49. $head[$h][1] = $langs->trans("LDAPCard");
  50. $head[$h][2] = 'ldap';
  51. $h++;
  52. }
  53. $head[$h][0] = DOL_URL_ROOT.'/user/param_ihm.php?id='.$object->id;
  54. $head[$h][1] = $langs->trans("UserGUISetup");
  55. $head[$h][2] = 'guisetup';
  56. $h++;
  57. if ($canreadperms)
  58. {
  59. $head[$h][0] = DOL_URL_ROOT.'/user/perms.php?id='.$object->id;
  60. $head[$h][1] = $langs->trans("UserRights"). ' <span class="badge">'.($object->nb_rights).'</span>';
  61. $head[$h][2] = 'rights';
  62. $h++;
  63. }
  64. if (! empty($conf->agenda->enabled))
  65. {
  66. if (empty($conf->global->AGENDA_EXT_NB)) $conf->global->AGENDA_EXT_NB=5;
  67. $MAXAGENDA=$conf->global->AGENDA_EXT_NB;
  68. $i=1;
  69. $nbagenda = 0;
  70. while ($i <= $MAXAGENDA)
  71. {
  72. $key=$i;
  73. $name='AGENDA_EXT_NAME_'.$object->id.'_'.$key;
  74. $src='AGENDA_EXT_SRC_'.$object->id.'_'.$key;
  75. $offsettz='AGENDA_EXT_OFFSETTZ_'.$object->id.'_'.$key;
  76. $color='AGENDA_EXT_COLOR_'.$object->id.'_'.$key;
  77. $i++;
  78. if (! empty($object->conf->$name)) $nbagenda++;
  79. }
  80. $head[$h][0] = DOL_URL_ROOT.'/user/agenda_extsites.php?id='.$object->id;
  81. $head[$h][1] = $langs->trans("ExtSites").($nbagenda ? ' <span class="badge">'.$nbagenda.'</span>' : '');
  82. $head[$h][2] = 'extsites';
  83. $h++;
  84. }
  85. if (! empty($conf->clicktodial->enabled))
  86. {
  87. $head[$h][0] = DOL_URL_ROOT.'/user/clicktodial.php?id='.$object->id;
  88. $head[$h][1] = $langs->trans("ClickToDial");
  89. $head[$h][2] = 'clicktodial';
  90. $h++;
  91. }
  92. // Notifications
  93. if ($user->societe_id == 0 && ! empty($conf->notification->enabled))
  94. {
  95. $nbNote = 0;
  96. $sql = "SELECT COUNT(n.rowid) as nb";
  97. $sql.= " FROM ".MAIN_DB_PREFIX."notify_def as n";
  98. $sql.= " WHERE fk_user = ".$object->id;
  99. $resql=$db->query($sql);
  100. if ($resql)
  101. {
  102. $num = $db->num_rows($resql);
  103. $i = 0;
  104. while ($i < $num)
  105. {
  106. $obj = $db->fetch_object($resql);
  107. $nbNote=$obj->nb;
  108. $i++;
  109. }
  110. }
  111. else {
  112. dol_print_error($db);
  113. }
  114. $head[$h][0] = DOL_URL_ROOT.'/user/notify/card.php?id='.$object->id;
  115. $head[$h][1] = $langs->trans("Notifications");
  116. if ($nbNote > 0) $head[$h][1].= ' <span class="badge">'.$nbNote.'</span>';
  117. $head[$h][2] = 'notify';
  118. $h++;
  119. }
  120. // Show more tabs from modules
  121. // Entries must be declared in modules descriptor with line
  122. // $this->tabs = array('entity:+tabname:Title:@mymodule:/mymodule/mypage.php?id=__ID__'); to add new tab
  123. // $this->tabs = array('entity:-tabname); to remove a tab
  124. complete_head_from_modules($conf,$langs,$object,$head,$h,'user');
  125. if ((! empty($conf->salaries->enabled) && ! empty($user->rights->salaries->read))
  126. || (! empty($conf->hrm->enabled) && ! empty($user->rights->hrm->employee->read)))
  127. {
  128. // Bank
  129. $head[$h][0] = DOL_URL_ROOT.'/user/bank.php?id='.$object->id;
  130. $head[$h][1] = $langs->trans("HRAndBank");
  131. $head[$h][2] = 'bank';
  132. $h++;
  133. }
  134. // Such info on users is visible only by internal user
  135. if (empty($user->societe_id))
  136. {
  137. // Notes
  138. $nbNote = 0;
  139. if(!empty($object->note)) $nbNote++;
  140. $head[$h][0] = DOL_URL_ROOT.'/user/note.php?id='.$object->id;
  141. $head[$h][1] = $langs->trans("Note");
  142. if ($nbNote > 0) $head[$h][1].= ' <span class="badge">'.$nbNote.'</span>';
  143. $head[$h][2] = 'note';
  144. $h++;
  145. // Attached files
  146. require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
  147. require_once DOL_DOCUMENT_ROOT.'/core/class/link.class.php';
  148. $upload_dir = $conf->user->dir_output . "/" . $object->id;
  149. $nbFiles = count(dol_dir_list($upload_dir,'files',0,'','(\.meta|_preview.*\.png)$'));
  150. $nbLinks=Link::count($db, $object->element, $object->id);
  151. $head[$h][0] = DOL_URL_ROOT.'/user/document.php?userid='.$object->id;
  152. $head[$h][1] = $langs->trans("Documents");
  153. if (($nbFiles+$nbLinks) > 0) $head[$h][1].= ' <span class="badge">'.($nbFiles+$nbLinks).'</span>';
  154. $head[$h][2] = 'document';
  155. $h++;
  156. $head[$h][0] = DOL_URL_ROOT.'/user/info.php?id='.$object->id;
  157. $head[$h][1] = $langs->trans("Info");
  158. $head[$h][2] = 'info';
  159. $h++;
  160. }
  161. complete_head_from_modules($conf,$langs,$object,$head,$h,'user','remove');
  162. return $head;
  163. }
  164. /**
  165. * Prepare array with list of tabs
  166. *
  167. * @param Group $object Object group
  168. * @return array Array of tabs
  169. */
  170. function group_prepare_head($object)
  171. {
  172. global $langs, $conf, $user;
  173. $canreadperms=true;
  174. if (! empty($conf->global->MAIN_USE_ADVANCED_PERMS))
  175. {
  176. $canreadperms=($user->admin || $user->rights->user->group_advance->readperms);
  177. }
  178. $h = 0;
  179. $head = array();
  180. $head[$h][0] = DOL_URL_ROOT.'/user/group/card.php?id='.$object->id;
  181. $head[$h][1] = $langs->trans("GroupCard");
  182. $head[$h][2] = 'group';
  183. $h++;
  184. if (! empty($conf->ldap->enabled) && ! empty($conf->global->LDAP_SYNCHRO_ACTIVE))
  185. {
  186. $langs->load("ldap");
  187. $head[$h][0] = DOL_URL_ROOT.'/user/group/ldap.php?id='.$object->id;
  188. $head[$h][1] = $langs->trans("LDAPCard");
  189. $head[$h][2] = 'ldap';
  190. $h++;
  191. }
  192. if ($canreadperms)
  193. {
  194. $head[$h][0] = DOL_URL_ROOT.'/user/group/perms.php?id='.$object->id;
  195. $head[$h][1] = $langs->trans("GroupRights");
  196. $head[$h][2] = 'rights';
  197. $h++;
  198. }
  199. // Show more tabs from modules
  200. // Entries must be declared in modules descriptor with line
  201. // $this->tabs = array('entity:+tabname:Title:@mymodule:/mymodule/mypage.php?id=__ID__'); to add new tab
  202. // $this->tabs = array('entity:-tabname); to remove a tab
  203. complete_head_from_modules($conf,$langs,$object,$head,$h,'group');
  204. complete_head_from_modules($conf,$langs,$object,$head,$h,'group','remove');
  205. return $head;
  206. }
  207. /**
  208. * Prepare array with list of tabs
  209. *
  210. * @return array Array of tabs to show
  211. */
  212. function user_admin_prepare_head()
  213. {
  214. global $langs, $conf, $user;
  215. $langs->load("users");
  216. $h=0;
  217. $head[$h][0] = DOL_URL_ROOT.'/admin/user.php';
  218. $head[$h][1] = $langs->trans("Parameters");
  219. $head[$h][2] = 'card';
  220. $h++;
  221. $head[$h][0] = DOL_URL_ROOT.'/admin/usergroup.php';
  222. $head[$h][1] = $langs->trans("Group");
  223. $head[$h][2] = 'usergroupcard';
  224. $h++;
  225. $head[$h][0] = DOL_URL_ROOT.'/user/admin/user_extrafields.php';
  226. $head[$h][1] = $langs->trans("ExtraFields");
  227. $head[$h][2] = 'attributes';
  228. $h++;
  229. $head[$h][0] = DOL_URL_ROOT.'/user/admin/group_extrafields.php';
  230. $head[$h][1] = $langs->trans("ExtraFields")." ".$langs->trans("Groups");
  231. $head[$h][2] = 'attributes_group';
  232. $h++;
  233. // Show more tabs from modules
  234. // Entries must be declared in modules descriptor with line
  235. // $this->tabs = array('entity:+tabname:Title:@mymodule:/mymodule/mypage.php?id=__ID__'); to add new tab
  236. // $this->tabs = array('entity:-tabname); to remove a tab
  237. complete_head_from_modules($conf,$langs,null,$head,$h,'useradmin');
  238. complete_head_from_modules($conf,$langs,null,$head,$h,'useradmin','remove');
  239. return $head;
  240. }
  241. /**
  242. * Prepare array with list of tabs
  243. *
  244. * @param Object $object Object related to tabs
  245. * @param array $aEntities Entities array
  246. * @return array Array of tabs
  247. */
  248. function entity_prepare_head($object, $aEntities)
  249. {
  250. global $mc;
  251. $head = array();
  252. foreach($aEntities as $entity)
  253. {
  254. $mc->getInfo($entity);
  255. $head[$entity][0] = $_SERVER['PHP_SELF'].'?id='.$object->id.'&amp;entity='.$entity;
  256. $head[$entity][1] = $mc->label;
  257. $head[$entity][2] = $entity;
  258. }
  259. return $head;
  260. }
  261. /**
  262. * Show list of themes. Show all thumbs of themes
  263. *
  264. * @param User|null $fuser User concerned or null for global theme
  265. * @param int $edit 1 to add edit form
  266. * @param boolean $foruserprofile Show for user profile view
  267. * @return void
  268. */
  269. function show_theme($fuser,$edit=0,$foruserprofile=false)
  270. {
  271. global $conf,$langs,$db,$form;
  272. global $bc;
  273. require_once DOL_DOCUMENT_ROOT . '/core/class/html.formother.class.php';
  274. $formother = new FormOther($db);
  275. $dirthemes=array('/theme');
  276. if (! empty($conf->modules_parts['theme'])) // Using this feature slow down application
  277. {
  278. foreach($conf->modules_parts['theme'] as $reldir)
  279. {
  280. $dirthemes=array_merge($dirthemes,(array) ($reldir.'theme'));
  281. }
  282. }
  283. $dirthemes=array_unique($dirthemes);
  284. // Now dir_themes=array('/themes') or dir_themes=array('/theme','/mymodule/theme')
  285. $selected_theme='';
  286. if (empty($foruserprofile)) $selected_theme=$conf->global->MAIN_THEME;
  287. else $selected_theme=((is_object($fuser) && ! empty($fuser->conf->MAIN_THEME))?$fuser->conf->MAIN_THEME:'');
  288. $hoverdisabled='';
  289. if (empty($foruserprofile)) $hoverdisabled=(isset($conf->global->THEME_ELDY_USE_HOVER) && $conf->global->THEME_ELDY_USE_HOVER == '0');
  290. else $hoverdisabled=(is_object($fuser)?(empty($fuser->conf->THEME_ELDY_USE_HOVER) || $fuser->conf->THEME_ELDY_USE_HOVER == '0'):'');
  291. $colspan=2;
  292. if ($foruserprofile) $colspan=4;
  293. $thumbsbyrow=6;
  294. print '<table class="noborder" width="100%">';
  295. // Title
  296. if ($foruserprofile)
  297. {
  298. print '<tr class="liste_titre"><th class="titlefield">'.$langs->trans("Parameter").'</th><th>'.$langs->trans("DefaultValue").'</th>';
  299. print '<th colspan="2">&nbsp;</th>';
  300. print '</tr>';
  301. print '<tr>';
  302. print '<td>'.$langs->trans("DefaultSkin").'</td>';
  303. print '<td>'.$conf->global->MAIN_THEME.'</td>';
  304. print '<td align="left" class="nowrap" width="20%"><input id="check_MAIN_THEME" name="check_MAIN_THEME"'.($edit?'':' disabled').' type="checkbox" '.($selected_theme?" checked":"").'> '.$langs->trans("UsePersonalValue").'</td>';
  305. print '<td>&nbsp;</td>';
  306. print '</tr>';
  307. }
  308. else
  309. {
  310. print '<tr class="liste_titre"><th class="titlefield">'.$langs->trans("DefaultSkin").'</th>';
  311. print '<th align="right">';
  312. $url='https://www.dolistore.com/lang-en/4-skins';
  313. if (preg_match('/fr/i',$langs->defaultlang)) $url='https://www.dolistore.com/fr/4-themes';
  314. //if (preg_match('/es/i',$langs->defaultlang)) $url='http://www.dolistore.com/lang-es/4-themes';
  315. print '<a href="'.$url.'" target="_blank">';
  316. print $langs->trans('DownloadMoreSkins');
  317. print '</a>';
  318. print '</th></tr>';
  319. print '<tr>';
  320. print '<td>'.$langs->trans("ThemeDir").'</td>';
  321. print '<td>';
  322. foreach($dirthemes as $dirtheme)
  323. {
  324. echo '"'.$dirtheme.'" ';
  325. }
  326. print '</td>';
  327. print '</tr>';
  328. }
  329. print '<tr><td colspan="'.$colspan.'">';
  330. print '<table class="nobordernopadding" width="100%"><tr><td><div align="center">';
  331. $i=0;
  332. foreach($dirthemes as $dir)
  333. {
  334. //print $dirroot.$dir;exit;
  335. $dirtheme=dol_buildpath($dir,0); // This include loop on $conf->file->dol_document_root
  336. $urltheme=dol_buildpath($dir,1);
  337. if (is_dir($dirtheme))
  338. {
  339. $handle=opendir($dirtheme);
  340. if (is_resource($handle))
  341. {
  342. while (($subdir = readdir($handle))!==false)
  343. {
  344. if (is_dir($dirtheme."/".$subdir) && substr($subdir, 0, 1) <> '.'
  345. && substr($subdir, 0, 3) <> 'CVS' && ! preg_match('/common|phones/i',$subdir))
  346. {
  347. // Disable not stable themes (dir ends with _exp or _dev)
  348. if ($conf->global->MAIN_FEATURES_LEVEL < 2 && preg_match('/_dev$/i',$subdir)) continue;
  349. if ($conf->global->MAIN_FEATURES_LEVEL < 1 && preg_match('/_exp$/i',$subdir)) continue;
  350. print '<div class="inline-block" style="margin-top: 10px; margin-bottom: 10px; margin-right: 20px; margin-left: 20px;">';
  351. $file=$dirtheme."/".$subdir."/thumb.png";
  352. $url=$urltheme."/".$subdir."/thumb.png";
  353. if (! file_exists($file)) $url=DOL_URL_ROOT.'/public/theme/common/nophoto.png';
  354. print '<a href="'.$_SERVER["PHP_SELF"].($edit?'?action=edit&theme=':'?theme=').$subdir.(GETPOST('optioncss','alpha',1)?'&optioncss='.GETPOST('optioncss','alpha',1):'').($fuser?'&id='.$fuser->id:'').'" style="font-weight: normal;" alt="'.$langs->trans("Preview").'">';
  355. if ($subdir == $conf->global->MAIN_THEME) $title=$langs->trans("ThemeCurrentlyActive");
  356. else $title=$langs->trans("ShowPreview");
  357. print '<img src="'.$url.'" border="0" width="80" height="60" alt="'.$title.'" title="'.$title.'" style="margin-bottom: 5px;">';
  358. print '</a><br>';
  359. if ($subdir == $selected_theme)
  360. {
  361. print '<input '.($edit?'':'disabled').' type="radio" class="themethumbs" style="border: 0px;" checked name="main_theme" value="'.$subdir.'"> <b>'.$subdir.'</b>';
  362. }
  363. else
  364. {
  365. print '<input '.($edit?'':'disabled').' type="radio" class="themethumbs" style="border: 0px;" name="main_theme" value="'.$subdir.'"> '.$subdir;
  366. }
  367. print '</div>';
  368. $i++;
  369. }
  370. }
  371. }
  372. }
  373. }
  374. print '</div></td></tr></table>';
  375. print '</td></tr>';
  376. // TopMenuDisableImages
  377. if ($foruserprofile)
  378. {
  379. /*
  380. print '<tr class="oddeven">';
  381. print '<td>'.$langs->trans("TopMenuDisableImages").'</td>';
  382. print '<td>'.($conf->global->THEME_TOPMENU_DISABLE_IMAGE?$conf->global->THEME_TOPMENU_DISABLE_IMAGE:$langs->trans("Default")).'</td>';
  383. print '<td align="left" class="nowrap" width="20%"><input '.$bc[$var].' name="check_THEME_TOPMENU_DISABLE_IMAGE" id="check_THEME_TOPMENU_DISABLE_IMAGE" type="checkbox" '.(! empty($object->conf->THEME_ELDY_TOPMENU_BACK1)?" checked":"");
  384. print (empty($dolibarr_main_demo) && $edit)?'':' disabled="disabled"'; // Disabled for demo
  385. print '> '.$langs->trans("UsePersonalValue").'</td>';
  386. print '<td>';
  387. if ($edit)
  388. {
  389. print $formother->selectColor(colorArrayToHex(colorStringToArray($conf->global->THEME_TOPMENU_DISABLE_IMAGE,array()),''),'THEME_TOPMENU_DISABLE_IMAGE','formcolor',1).' ';
  390. }
  391. else
  392. {
  393. $color = colorArrayToHex(colorStringToArray($conf->global->THEME_TOPMENU_DISABLE_IMAGE,array()),'');
  394. if ($color) print '<input type="text" class="colorthumb" disabled style="padding: 1px; margin-top: 0; margin-bottom: 0; background-color: #'.$color.'" value="'.$color.'">';
  395. else print '';
  396. }
  397. if ($edit) print '<br>('.$langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis").')';
  398. print '</td>';*/
  399. }
  400. else
  401. {
  402. $default=$langs->trans('No');
  403. print '<tr class="oddeven">';
  404. print '<td>'.$langs->trans("TopMenuDisableImages").'</td>';
  405. print '<td colspan="'.($colspan-1).'">';
  406. if ($edit)
  407. {
  408. print $form->selectyesno('THEME_TOPMENU_DISABLE_IMAGE', $conf->global->THEME_TOPMENU_DISABLE_IMAGE, 1);
  409. }
  410. else
  411. {
  412. print yn($conf->global->THEME_TOPMENU_DISABLE_IMAGE);
  413. }
  414. print ' &nbsp; ('.$langs->trans("Default").': <strong>'.$default.'</strong>) ';
  415. print $form->textwithpicto('', $langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis"));
  416. print '</td>';
  417. }
  418. // Background color THEME_ELDY_BACKBODY
  419. if ($foruserprofile)
  420. {
  421. /*
  422. print '<tr class="oddeven">';
  423. print '<td>'.$langs->trans("TopMenuBackgroundColor").'</td>';
  424. print '<td>'.($conf->global->THEME_ELDY_TOPMENU_BACK1?$conf->global->THEME_ELDY_TOPMENU_BACK1:$langs->trans("Default")).'</td>';
  425. print '<td align="left" class="nowrap" width="20%"><input '.$bc[$var].' name="check_THEME_ELDY_TOPMENU_BACK1" id="check_THEME_ELDY_TOPMENU_BACK1" type="checkbox" '.(! empty($object->conf->THEME_ELDY_TOPMENU_BACK1)?" checked":"");
  426. print (empty($dolibarr_main_demo) && $edit)?'':' disabled="disabled"'; // Disabled for demo
  427. print '> '.$langs->trans("UsePersonalValue").'</td>';
  428. print '<td>';
  429. if ($edit)
  430. {
  431. print $formother->selectColor(colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_TOPMENU_BACK1,array()),''),'THEME_ELDY_TOPMENU_BACK1','formcolor',1).' ';
  432. }
  433. else
  434. {
  435. $color = colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_TOPMENU_BACK1,array()),'');
  436. if ($color) print '<input type="text" class="colorthumb" disabled style="padding: 1px; margin-top: 0; margin-bottom: 0; background-color: #'.$color.'" value="'.$color.'">';
  437. else print '';
  438. }
  439. if ($edit) print '<br>('.$langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis").')';
  440. print '</td>';*/
  441. }
  442. else
  443. {
  444. print '<tr class="oddeven">';
  445. print '<td>'.$langs->trans("BackgroundColor").'</td>';
  446. print '<td colspan="'.($colspan-1).'">';
  447. //var_dump($conf->global->THEME_ELDY_BACKBODY);
  448. if ($edit)
  449. {
  450. print $formother->selectColor(colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_BACKBODY,array()),''),'THEME_ELDY_BACKBODY','formcolor',1).' ';
  451. }
  452. else
  453. {
  454. $color = colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_BACKBODY,array()),'');
  455. if ($color) print '<input type="text" class="colorthumb" disabled="disabled" style="padding: 1px; margin-top: 0; margin-bottom: 0; background-color: #'.$color.'" value="'.$color.'">';
  456. else print $langs->trans("Default");
  457. }
  458. print ' &nbsp; ('.$langs->trans("Default").': <strong>ffffff</strong>) ';
  459. print $form->textwithpicto('', $langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis"));
  460. print '</td>';
  461. }
  462. // TopMenuBackgroundColor
  463. if ($foruserprofile)
  464. {
  465. /*
  466. print '<tr class="oddeven">';
  467. print '<td>'.$langs->trans("TopMenuBackgroundColor").'</td>';
  468. print '<td>'.($conf->global->THEME_ELDY_TOPMENU_BACK1?$conf->global->THEME_ELDY_TOPMENU_BACK1:$langs->trans("Default")).'</td>';
  469. print '<td align="left" class="nowrap" width="20%"><input '.$bc[$var].' name="check_THEME_ELDY_TOPMENU_BACK1" id="check_THEME_ELDY_TOPMENU_BACK1" type="checkbox" '.(! empty($object->conf->THEME_ELDY_TOPMENU_BACK1)?" checked":"");
  470. print (empty($dolibarr_main_demo) && $edit)?'':' disabled="disabled"'; // Disabled for demo
  471. print '> '.$langs->trans("UsePersonalValue").'</td>';
  472. print '<td>';
  473. if ($edit)
  474. {
  475. print $formother->selectColor(colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_TOPMENU_BACK1,array()),''),'THEME_ELDY_TOPMENU_BACK1','formcolor',1).' ';
  476. }
  477. else
  478. {
  479. $color = colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_TOPMENU_BACK1,array()),'');
  480. if ($color) print '<input type="text" class="colorthumb" disabled style="padding: 1px; margin-top: 0; margin-bottom: 0; background-color: #'.$color.'" value="'.$color.'">';
  481. else print '';
  482. }
  483. if ($edit) print '<br>('.$langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis").')';
  484. print '</td>';*/
  485. }
  486. else
  487. {
  488. $default='5a6482';
  489. if ($conf->theme == 'md') $default='5a3278';
  490. print '<tr class="oddeven">';
  491. print '<td>'.$langs->trans("TopMenuBackgroundColor").'</td>';
  492. print '<td colspan="'.($colspan-1).'">';
  493. if ($edit)
  494. {
  495. print $formother->selectColor(colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_TOPMENU_BACK1,array()),''),'THEME_ELDY_TOPMENU_BACK1','formcolor',1).' ';
  496. }
  497. else
  498. {
  499. $color = colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_TOPMENU_BACK1,array()),'');
  500. if ($color) print '<input type="text" class="colorthumb" disabled="disabled" style="padding: 1px; margin-top: 0; margin-bottom: 0; background-color: #'.$color.'" value="'.$color.'">';
  501. else print $langs->trans("Default");
  502. }
  503. print ' &nbsp; ('.$langs->trans("Default").': <strong>'.$default.'</strong>) ';
  504. print $form->textwithpicto('', $langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis"));
  505. print '</td>';
  506. }
  507. // BackgroundTableTitleColor
  508. if ($foruserprofile)
  509. {
  510. }
  511. else
  512. {
  513. print '<tr class="oddeven">';
  514. print '<td>'.$langs->trans("BackgroundTableTitleColor").'</td>';
  515. print '<td colspan="'.($colspan-1).'">';
  516. if ($edit)
  517. {
  518. print $formother->selectColor(colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_BACKTITLE1,array()),''),'THEME_ELDY_BACKTITLE1','formcolor',1).' ';
  519. }
  520. else
  521. {
  522. print $formother->showColor($conf->global->THEME_ELDY_BACKTITLE1, $langs->trans("Default"));
  523. }
  524. print ' &nbsp; ('.$langs->trans("Default").': <strong>f0f0f0</strong>) '; // $colorbacktitle1 in CSS
  525. print $form->textwithpicto('', $langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis"));
  526. print '</td>';
  527. print '</tr>';
  528. }
  529. // BackgroundTableLineOddColor
  530. if ($foruserprofile)
  531. {
  532. }
  533. else
  534. {
  535. $default='ffffff';
  536. if ($conf->theme == 'md') $default='ffffff';
  537. print '<tr class="oddeven">';
  538. print '<td>'.$langs->trans("BackgroundTableLineOddColor").'</td>';
  539. print '<td colspan="'.($colspan-1).'">';
  540. if ($edit)
  541. {
  542. print $formother->selectColor(colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_LINEIMPAIR1,array()),''),'THEME_ELDY_LINEIMPAIR1','formcolor',1).' ';
  543. }
  544. else
  545. {
  546. $color = colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_LINEIMPAIR1,array()),'');
  547. if ($color) print '<input type="text" class="colorthumb" disabled="disabled" style="padding: 1px; margin-top: 0; margin-bottom: 0; background-color: #'.$color.'" value="'.$color.'">';
  548. else print $langs->trans("Default");
  549. }
  550. print ' &nbsp; ('.$langs->trans("Default").': <strong>'.$default.'</strong>) ';
  551. print $form->textwithpicto('', $langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis"));
  552. print '</td>';
  553. }
  554. // BackgroundTableLineEvenColor
  555. if ($foruserprofile)
  556. {
  557. }
  558. else
  559. {
  560. $default='f8f8f8';
  561. if ($conf->theme == 'md') $default='f8f8f8';
  562. print '<tr class="oddeven">';
  563. print '<td>'.$langs->trans("BackgroundTableLineEvenColor").'</td>';
  564. print '<td colspan="'.($colspan-1).'">';
  565. if ($edit)
  566. {
  567. print $formother->selectColor(colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_LINEPAIR1,array()),''),'THEME_ELDY_LINEPAIR1','formcolor',1).' ';
  568. }
  569. else
  570. {
  571. $color = colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_LINEPAIR1,array()),'');
  572. if ($color) print '<input type="text" class="colorthumb" disabled="disabled" style="padding: 1px; margin-top: 0; margin-bottom: 0; background-color: #'.$color.'" value="'.$color.'">';
  573. else print $langs->trans("Default");
  574. }
  575. print ' &nbsp; ('.$langs->trans("Default").': <strong>'.$default.'</strong>) ';
  576. print $form->textwithpicto('', $langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis"));
  577. print '</td>';
  578. }
  579. // TextTitleColor
  580. if ($foruserprofile)
  581. {
  582. }
  583. else
  584. {
  585. print '<tr class="oddeven">';
  586. print '<td>'.$langs->trans("TextTitleColor").'</td>';
  587. print '<td colspan="'.($colspan-1).'">';
  588. if ($edit)
  589. {
  590. print $formother->selectColor(colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_TEXTTITLENOTAB,array()),''),'THEME_ELDY_TEXTTITLENOTAB','formcolor',1).' ';
  591. }
  592. else
  593. {
  594. print $formother->showColor($conf->global->THEME_ELDY_TEXTTITLENOTAB, $langs->trans("Default"));
  595. }
  596. print ' &nbsp; ('.$langs->trans("Default").': <strong><span style="color: #3c3c14">3c3c14</span></strong>) ';
  597. print $form->textwithpicto('', $langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis"));
  598. print '</td>';
  599. print '</tr>';
  600. }
  601. // Text LinkColor
  602. if ($foruserprofile)
  603. {
  604. /*
  605. print '<tr class="oddeven">';
  606. print '<td>'.$langs->trans("TopMenuBackgroundColor").'</td>';
  607. print '<td>'.($conf->global->THEME_ELDY_TOPMENU_BACK1?$conf->global->THEME_ELDY_TOPMENU_BACK1:$langs->trans("Default")).'</td>';
  608. print '<td align="left" class="nowrap" width="20%"><input '.$bc[$var].' name="check_THEME_ELDY_TOPMENU_BACK1" id="check_THEME_ELDY_TOPMENU_BACK1" type="checkbox" '.(! empty($object->conf->THEME_ELDY_TOPMENU_BACK1)?" checked":"");
  609. print (empty($dolibarr_main_demo) && $edit)?'':' disabled="disabled"'; // Disabled for demo
  610. print '> '.$langs->trans("UsePersonalValue").'</td>';
  611. print '<td>';
  612. if ($edit)
  613. {
  614. print $formother->selectColor(colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_TOPMENU_BACK1,array()),''),'THEME_ELDY_TOPMENU_BACK1','formcolor',1).' ';
  615. }
  616. else
  617. {
  618. $color = colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_TOPMENU_BACK1,array()),'');
  619. if ($color) print '<input type="text" class="colorthumb" disabled style="padding: 1px; margin-top: 0; margin-bottom: 0; background-color: #'.$color.'" value="'.$color.'">';
  620. else print '';
  621. }
  622. if ($edit) print '<br>('.$langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis").')';
  623. print '</td>';*/
  624. }
  625. else
  626. {
  627. print '<tr class="oddeven">';
  628. print '<td>'.$langs->trans("LinkColor").'</td>';
  629. print '<td colspan="'.($colspan-1).'">';
  630. if ($edit)
  631. {
  632. print $formother->selectColor(colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_TEXTLINK,array()),''),'THEME_ELDY_TEXTLINK','formcolor',1).' ';
  633. }
  634. else
  635. {
  636. $color = colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_TEXTLINK,array()),'');
  637. if ($color) print '<input type="text" class="colorthumb" disabled="disabled" style="padding: 1px; margin-top: 0; margin-bottom: 0; background-color: #'.$color.'" value="'.$color.'">';
  638. else
  639. {
  640. //print '<input type="text" class="colorthumb" disabled="disabled" style="padding: 1px; margin-top: 0; margin-bottom: 0; background-color: #'.$defaultcolor.'" value="'.$langs->trans("Default").'">';
  641. //print '<span style="color: #000078">'.$langs->trans("Default").'</span>';
  642. print $langs->trans("Default");
  643. }
  644. }
  645. print ' &nbsp; ('.$langs->trans("Default").': <strong><span style="color: #000078">000078</span></strong>) ';
  646. print $form->textwithpicto('', $langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis"));
  647. print '</td>';
  648. }
  649. // Use Hover
  650. if ($foruserprofile)
  651. {
  652. /* Must first change option to choose color of highlight instead of yes or no.
  653. print '<tr class="oddeven">';
  654. print '<td>'.$langs->trans("HighlightLinesOnMouseHover").'</td>';
  655. print '<td><input '.$bc[$var].' name="check_THEME_ELDY_USE_HOVER" disabled="disabled" type="checkbox" '.($conf->global->THEME_ELDY_USE_HOVER?" checked":"").'></td>';
  656. print '<td align="left" class="nowrap" width="20%"><input '.$bc[$var].' name="check_MAIN_THEME"'.($edit?'':' disabled').' type="checkbox" '.($selected_theme?" checked":"").'> '.$langs->trans("UsePersonalValue").'</td>';
  657. print '<td><input '.$bc[$var].' name="check_THEME_ELDY_USE_HOVER"'.($edit?'':' disabled="disabled"').' type="checkbox" '.($hoverdisabled?"":" checked").'>';
  658. print ' &nbsp; ('.$langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis").')';
  659. print '</td>';
  660. print '</tr>';
  661. */
  662. }
  663. else
  664. {
  665. print '<tr class="oddeven">';
  666. print '<td>'.$langs->trans("HighlightLinesColor").'</td>';
  667. print '<td colspan="'.($colspan-1).'">';
  668. //print '<input '.$bc[$var].' name="check_THEME_ELDY_USE_HOVER"'.($edit?'':' disabled').' type="checkbox" '.($hoverdisabled?"":" checked").'>';
  669. //print ' &nbsp; ('.$langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis").')';
  670. if ($edit)
  671. {
  672. if ($conf->global->THEME_ELDY_USE_HOVER == '1') $color='edf4fb';
  673. else $color = colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_USE_HOVER,array()),'');
  674. print $formother->selectColor($color,'THEME_ELDY_USE_HOVER','formcolor',1).' ';
  675. }
  676. else
  677. {
  678. if ($conf->global->THEME_ELDY_USE_HOVER == '1') $color='edf4fb';
  679. else $color = colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_USE_HOVER,array()),'');
  680. if ($color)
  681. {
  682. if ($color != 'edf4fb') print '<input type="text" class="colorthumb" disabled="disabled" style="padding: 1px; margin-top: 0; margin-bottom: 0; background-color: #'.$color.'" value="'.$color.'">';
  683. else print $langs->trans("Default");
  684. }
  685. else print $langs->trans("None");
  686. }
  687. print ' &nbsp; ('.$langs->trans("Default").': <strong>edf4fb</strong>) ';
  688. print $form->textwithpicto('', $langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis"));
  689. print '</td>';
  690. print '</tr>';
  691. }
  692. print '</table>';
  693. }