usergroups.lib.php 31 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786
  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(empty($conf->global->MAIN_FORCETHEMEDIR)?'/theme':$conf->global->MAIN_FORCETHEMEDIR.'/theme');
  276. $dirthemes=array('/theme');
  277. if (! empty($conf->modules_parts['theme'])) // Using this feature slow down application
  278. {
  279. foreach($conf->modules_parts['theme'] as $reldir)
  280. {
  281. $dirthemes=array_merge($dirthemes,(array) ($reldir.'theme'));
  282. }
  283. }
  284. $dirthemes=array_unique($dirthemes);
  285. // Now dir_themes=array('/themes') or dir_themes=array('/theme','/mymodule/theme')
  286. $selected_theme='';
  287. if (empty($foruserprofile)) $selected_theme=$conf->global->MAIN_THEME;
  288. else $selected_theme=((is_object($fuser) && ! empty($fuser->conf->MAIN_THEME))?$fuser->conf->MAIN_THEME:'');
  289. $hoverdisabled='';
  290. if (empty($foruserprofile)) $hoverdisabled=(isset($conf->global->THEME_ELDY_USE_HOVER) && $conf->global->THEME_ELDY_USE_HOVER == '0');
  291. else $hoverdisabled=(is_object($fuser)?(empty($fuser->conf->THEME_ELDY_USE_HOVER) || $fuser->conf->THEME_ELDY_USE_HOVER == '0'):'');
  292. $colspan=2;
  293. if ($foruserprofile) $colspan=4;
  294. $thumbsbyrow=6;
  295. print '<table class="noborder" width="100%">';
  296. // Title
  297. if ($foruserprofile)
  298. {
  299. print '<tr class="liste_titre"><th class="titlefield">'.$langs->trans("Parameter").'</th><th>'.$langs->trans("DefaultValue").'</th>';
  300. print '<th colspan="2">&nbsp;</th>';
  301. print '</tr>';
  302. print '<tr>';
  303. print '<td>'.$langs->trans("DefaultSkin").'</td>';
  304. print '<td>'.$conf->global->MAIN_THEME.'</td>';
  305. 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>';
  306. print '<td>&nbsp;</td>';
  307. print '</tr>';
  308. }
  309. else
  310. {
  311. print '<tr class="liste_titre"><th class="titlefield">'.$langs->trans("DefaultSkin").'</th>';
  312. print '<th align="right">';
  313. $url='https://www.dolistore.com/lang-en/4-skins';
  314. if (preg_match('/fr/i',$langs->defaultlang)) $url='https://www.dolistore.com/fr/4-themes';
  315. //if (preg_match('/es/i',$langs->defaultlang)) $url='http://www.dolistore.com/lang-es/4-themes';
  316. print '<a href="'.$url.'" target="_blank">';
  317. print $langs->trans('DownloadMoreSkins');
  318. print '</a>';
  319. print '</th></tr>';
  320. print '<tr>';
  321. print '<td>'.$langs->trans("ThemeDir").'</td>';
  322. print '<td>';
  323. foreach($dirthemes as $dirtheme)
  324. {
  325. echo '"'.$dirtheme.'" ';
  326. }
  327. print '</td>';
  328. print '</tr>';
  329. }
  330. print '<tr><td colspan="'.$colspan.'">';
  331. print '<table class="nobordernopadding" width="100%"><tr><td><div align="center">';
  332. $i=0;
  333. foreach($dirthemes as $dir)
  334. {
  335. //print $dirroot.$dir;exit;
  336. $dirtheme=dol_buildpath($dir,0); // This include loop on $conf->file->dol_document_root
  337. $urltheme=dol_buildpath($dir,1);
  338. if (is_dir($dirtheme))
  339. {
  340. $handle=opendir($dirtheme);
  341. if (is_resource($handle))
  342. {
  343. while (($subdir = readdir($handle))!==false)
  344. {
  345. if (is_dir($dirtheme."/".$subdir) && substr($subdir, 0, 1) <> '.'
  346. && substr($subdir, 0, 3) <> 'CVS' && ! preg_match('/common|phones/i',$subdir))
  347. {
  348. // Disable not stable themes (dir ends with _exp or _dev)
  349. if ($conf->global->MAIN_FEATURES_LEVEL < 2 && preg_match('/_dev$/i',$subdir)) continue;
  350. if ($conf->global->MAIN_FEATURES_LEVEL < 1 && preg_match('/_exp$/i',$subdir)) continue;
  351. print '<div class="inline-block" style="margin-top: 10px; margin-bottom: 10px; margin-right: 20px; margin-left: 20px;">';
  352. $file=$dirtheme."/".$subdir."/thumb.png";
  353. $url=$urltheme."/".$subdir."/thumb.png";
  354. if (! file_exists($file)) $url=DOL_URL_ROOT.'/public/theme/common/nophoto.png';
  355. 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").'">';
  356. if ($subdir == $conf->global->MAIN_THEME) $title=$langs->trans("ThemeCurrentlyActive");
  357. else $title=$langs->trans("ShowPreview");
  358. print '<img src="'.$url.'" border="0" width="80" height="60" alt="'.$title.'" title="'.$title.'" style="margin-bottom: 5px;">';
  359. print '</a><br>';
  360. if ($subdir == $selected_theme)
  361. {
  362. print '<input '.($edit?'':'disabled').' type="radio" class="themethumbs" style="border: 0px;" checked name="main_theme" value="'.$subdir.'"> <b>'.$subdir.'</b>';
  363. }
  364. else
  365. {
  366. print '<input '.($edit?'':'disabled').' type="radio" class="themethumbs" style="border: 0px;" name="main_theme" value="'.$subdir.'"> '.$subdir;
  367. }
  368. print '</div>';
  369. $i++;
  370. }
  371. }
  372. }
  373. }
  374. }
  375. print '</div></td></tr></table>';
  376. print '</td></tr>';
  377. // TopMenuDisableImages
  378. if ($foruserprofile)
  379. {
  380. /*
  381. print '<tr class="oddeven">';
  382. print '<td>'.$langs->trans("TopMenuDisableImages").'</td>';
  383. print '<td>'.($conf->global->THEME_TOPMENU_DISABLE_IMAGE?$conf->global->THEME_TOPMENU_DISABLE_IMAGE:$langs->trans("Default")).'</td>';
  384. 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":"");
  385. print (empty($dolibarr_main_demo) && $edit)?'':' disabled="disabled"'; // Disabled for demo
  386. print '> '.$langs->trans("UsePersonalValue").'</td>';
  387. print '<td>';
  388. if ($edit)
  389. {
  390. print $formother->selectColor(colorArrayToHex(colorStringToArray($conf->global->THEME_TOPMENU_DISABLE_IMAGE,array()),''),'THEME_TOPMENU_DISABLE_IMAGE','formcolor',1).' ';
  391. }
  392. else
  393. {
  394. $color = colorArrayToHex(colorStringToArray($conf->global->THEME_TOPMENU_DISABLE_IMAGE,array()),'');
  395. if ($color) print '<input type="text" class="colorthumb" disabled style="padding: 1px; margin-top: 0; margin-bottom: 0; background-color: #'.$color.'" value="'.$color.'">';
  396. else print '';
  397. }
  398. if ($edit) print '<br>('.$langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis").')';
  399. print '</td>';*/
  400. }
  401. else
  402. {
  403. $default=$langs->trans('No');
  404. print '<tr class="oddeven">';
  405. print '<td>'.$langs->trans("TopMenuDisableImages").'</td>';
  406. print '<td colspan="'.($colspan-1).'">';
  407. if ($edit)
  408. {
  409. print $form->selectyesno('THEME_TOPMENU_DISABLE_IMAGE', $conf->global->THEME_TOPMENU_DISABLE_IMAGE, 1);
  410. }
  411. else
  412. {
  413. print yn($conf->global->THEME_TOPMENU_DISABLE_IMAGE);
  414. }
  415. print ' &nbsp; ('.$langs->trans("Default").': <strong>'.$default.'</strong>) ';
  416. print $form->textwithpicto('', $langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis"));
  417. print '</td>';
  418. }
  419. // Background color THEME_ELDY_BACKBODY
  420. if ($foruserprofile)
  421. {
  422. /*
  423. print '<tr class="oddeven">';
  424. print '<td>'.$langs->trans("TopMenuBackgroundColor").'</td>';
  425. print '<td>'.($conf->global->THEME_ELDY_TOPMENU_BACK1?$conf->global->THEME_ELDY_TOPMENU_BACK1:$langs->trans("Default")).'</td>';
  426. 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":"");
  427. print (empty($dolibarr_main_demo) && $edit)?'':' disabled="disabled"'; // Disabled for demo
  428. print '> '.$langs->trans("UsePersonalValue").'</td>';
  429. print '<td>';
  430. if ($edit)
  431. {
  432. print $formother->selectColor(colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_TOPMENU_BACK1,array()),''),'THEME_ELDY_TOPMENU_BACK1','formcolor',1).' ';
  433. }
  434. else
  435. {
  436. $color = colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_TOPMENU_BACK1,array()),'');
  437. if ($color) print '<input type="text" class="colorthumb" disabled style="padding: 1px; margin-top: 0; margin-bottom: 0; background-color: #'.$color.'" value="'.$color.'">';
  438. else print '';
  439. }
  440. if ($edit) print '<br>('.$langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis").')';
  441. print '</td>';*/
  442. }
  443. else
  444. {
  445. print '<tr class="oddeven">';
  446. print '<td>'.$langs->trans("BackgroundColor").'</td>';
  447. print '<td colspan="'.($colspan-1).'">';
  448. //var_dump($conf->global->THEME_ELDY_BACKBODY);
  449. if ($edit)
  450. {
  451. print $formother->selectColor(colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_BACKBODY,array()),''),'THEME_ELDY_BACKBODY','formcolor',1).' ';
  452. }
  453. else
  454. {
  455. $color = colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_BACKBODY,array()),'');
  456. if ($color) print '<input type="text" class="colorthumb" disabled="disabled" style="padding: 1px; margin-top: 0; margin-bottom: 0; background-color: #'.$color.'" value="'.$color.'">';
  457. else print $langs->trans("Default");
  458. }
  459. print ' &nbsp; ('.$langs->trans("Default").': <strong>ffffff</strong>) ';
  460. print $form->textwithpicto('', $langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis"));
  461. print '</td>';
  462. }
  463. // TopMenuBackgroundColor
  464. if ($foruserprofile)
  465. {
  466. /*
  467. print '<tr class="oddeven">';
  468. print '<td>'.$langs->trans("TopMenuBackgroundColor").'</td>';
  469. print '<td>'.($conf->global->THEME_ELDY_TOPMENU_BACK1?$conf->global->THEME_ELDY_TOPMENU_BACK1:$langs->trans("Default")).'</td>';
  470. 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":"");
  471. print (empty($dolibarr_main_demo) && $edit)?'':' disabled="disabled"'; // Disabled for demo
  472. print '> '.$langs->trans("UsePersonalValue").'</td>';
  473. print '<td>';
  474. if ($edit)
  475. {
  476. print $formother->selectColor(colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_TOPMENU_BACK1,array()),''),'THEME_ELDY_TOPMENU_BACK1','formcolor',1).' ';
  477. }
  478. else
  479. {
  480. $color = colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_TOPMENU_BACK1,array()),'');
  481. if ($color) print '<input type="text" class="colorthumb" disabled style="padding: 1px; margin-top: 0; margin-bottom: 0; background-color: #'.$color.'" value="'.$color.'">';
  482. else print '';
  483. }
  484. if ($edit) print '<br>('.$langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis").')';
  485. print '</td>';*/
  486. }
  487. else
  488. {
  489. $default='5a6482';
  490. if ($conf->theme == 'md') $default='5a3278';
  491. print '<tr class="oddeven">';
  492. print '<td>'.$langs->trans("TopMenuBackgroundColor").'</td>';
  493. print '<td colspan="'.($colspan-1).'">';
  494. if ($edit)
  495. {
  496. print $formother->selectColor(colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_TOPMENU_BACK1,array()),''),'THEME_ELDY_TOPMENU_BACK1','formcolor',1).' ';
  497. }
  498. else
  499. {
  500. $color = colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_TOPMENU_BACK1,array()),'');
  501. if ($color) print '<input type="text" class="colorthumb" disabled="disabled" style="padding: 1px; margin-top: 0; margin-bottom: 0; background-color: #'.$color.'" value="'.$color.'">';
  502. else print $langs->trans("Default");
  503. }
  504. print ' &nbsp; ('.$langs->trans("Default").': <strong>'.$default.'</strong>) ';
  505. print $form->textwithpicto('', $langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis"));
  506. print '</td>';
  507. }
  508. // BackgroundTableTitleColor
  509. if ($foruserprofile)
  510. {
  511. }
  512. else
  513. {
  514. print '<tr class="oddeven">';
  515. print '<td>'.$langs->trans("BackgroundTableTitleColor").'</td>';
  516. print '<td colspan="'.($colspan-1).'">';
  517. if ($edit)
  518. {
  519. print $formother->selectColor(colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_BACKTITLE1,array()),''),'THEME_ELDY_BACKTITLE1','formcolor',1).' ';
  520. }
  521. else
  522. {
  523. print $formother->showColor($conf->global->THEME_ELDY_BACKTITLE1, $langs->trans("Default"));
  524. }
  525. print ' &nbsp; ('.$langs->trans("Default").': <strong>f0f0f0</strong>) '; // $colorbacktitle1 in CSS
  526. print $form->textwithpicto('', $langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis"));
  527. print '</td>';
  528. print '</tr>';
  529. }
  530. // BackgroundTableLineOddColor
  531. if ($foruserprofile)
  532. {
  533. }
  534. else
  535. {
  536. $default='ffffff';
  537. if ($conf->theme == 'md') $default='ffffff';
  538. print '<tr class="oddeven">';
  539. print '<td>'.$langs->trans("BackgroundTableLineOddColor").'</td>';
  540. print '<td colspan="'.($colspan-1).'">';
  541. if ($edit)
  542. {
  543. print $formother->selectColor(colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_LINEIMPAIR1,array()),''),'THEME_ELDY_LINEIMPAIR1','formcolor',1).' ';
  544. }
  545. else
  546. {
  547. $color = colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_LINEIMPAIR1,array()),'');
  548. if ($color) print '<input type="text" class="colorthumb" disabled="disabled" style="padding: 1px; margin-top: 0; margin-bottom: 0; background-color: #'.$color.'" value="'.$color.'">';
  549. else print $langs->trans("Default");
  550. }
  551. print ' &nbsp; ('.$langs->trans("Default").': <strong>'.$default.'</strong>) ';
  552. print $form->textwithpicto('', $langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis"));
  553. print '</td>';
  554. }
  555. // BackgroundTableLineEvenColor
  556. if ($foruserprofile)
  557. {
  558. }
  559. else
  560. {
  561. $default='f8f8f8';
  562. if ($conf->theme == 'md') $default='f8f8f8';
  563. print '<tr class="oddeven">';
  564. print '<td>'.$langs->trans("BackgroundTableLineEvenColor").'</td>';
  565. print '<td colspan="'.($colspan-1).'">';
  566. if ($edit)
  567. {
  568. print $formother->selectColor(colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_LINEPAIR1,array()),''),'THEME_ELDY_LINEPAIR1','formcolor',1).' ';
  569. }
  570. else
  571. {
  572. $color = colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_LINEPAIR1,array()),'');
  573. if ($color) print '<input type="text" class="colorthumb" disabled="disabled" style="padding: 1px; margin-top: 0; margin-bottom: 0; background-color: #'.$color.'" value="'.$color.'">';
  574. else print $langs->trans("Default");
  575. }
  576. print ' &nbsp; ('.$langs->trans("Default").': <strong>'.$default.'</strong>) ';
  577. print $form->textwithpicto('', $langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis"));
  578. print '</td>';
  579. }
  580. // TextTitleColor
  581. if ($foruserprofile)
  582. {
  583. }
  584. else
  585. {
  586. print '<tr class="oddeven">';
  587. print '<td>'.$langs->trans("TextTitleColor").'</td>';
  588. print '<td colspan="'.($colspan-1).'">';
  589. if ($edit)
  590. {
  591. print $formother->selectColor(colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_TEXTTITLENOTAB,array()),''),'THEME_ELDY_TEXTTITLENOTAB','formcolor',1).' ';
  592. }
  593. else
  594. {
  595. print $formother->showColor($conf->global->THEME_ELDY_TEXTTITLENOTAB, $langs->trans("Default"));
  596. }
  597. print ' &nbsp; ('.$langs->trans("Default").': <strong><span style="color: #3c3c14">3c3c14</span></strong>) ';
  598. print $form->textwithpicto('', $langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis"));
  599. print '</td>';
  600. print '</tr>';
  601. }
  602. // Text LinkColor
  603. if ($foruserprofile)
  604. {
  605. /*
  606. print '<tr class="oddeven">';
  607. print '<td>'.$langs->trans("TopMenuBackgroundColor").'</td>';
  608. print '<td>'.($conf->global->THEME_ELDY_TOPMENU_BACK1?$conf->global->THEME_ELDY_TOPMENU_BACK1:$langs->trans("Default")).'</td>';
  609. 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":"");
  610. print (empty($dolibarr_main_demo) && $edit)?'':' disabled="disabled"'; // Disabled for demo
  611. print '> '.$langs->trans("UsePersonalValue").'</td>';
  612. print '<td>';
  613. if ($edit)
  614. {
  615. print $formother->selectColor(colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_TOPMENU_BACK1,array()),''),'THEME_ELDY_TOPMENU_BACK1','formcolor',1).' ';
  616. }
  617. else
  618. {
  619. $color = colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_TOPMENU_BACK1,array()),'');
  620. if ($color) print '<input type="text" class="colorthumb" disabled style="padding: 1px; margin-top: 0; margin-bottom: 0; background-color: #'.$color.'" value="'.$color.'">';
  621. else print '';
  622. }
  623. if ($edit) print '<br>('.$langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis").')';
  624. print '</td>';*/
  625. }
  626. else
  627. {
  628. print '<tr class="oddeven">';
  629. print '<td>'.$langs->trans("LinkColor").'</td>';
  630. print '<td colspan="'.($colspan-1).'">';
  631. if ($edit)
  632. {
  633. print $formother->selectColor(colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_TEXTLINK,array()),''),'THEME_ELDY_TEXTLINK','formcolor',1).' ';
  634. }
  635. else
  636. {
  637. $color = colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_TEXTLINK,array()),'');
  638. if ($color) print '<input type="text" class="colorthumb" disabled="disabled" style="padding: 1px; margin-top: 0; margin-bottom: 0; background-color: #'.$color.'" value="'.$color.'">';
  639. else
  640. {
  641. //print '<input type="text" class="colorthumb" disabled="disabled" style="padding: 1px; margin-top: 0; margin-bottom: 0; background-color: #'.$defaultcolor.'" value="'.$langs->trans("Default").'">';
  642. //print '<span style="color: #000078">'.$langs->trans("Default").'</span>';
  643. print $langs->trans("Default");
  644. }
  645. }
  646. print ' &nbsp; ('.$langs->trans("Default").': <strong><span style="color: #000078">000078</span></strong>) ';
  647. print $form->textwithpicto('', $langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis"));
  648. print '</td>';
  649. }
  650. // Use Hover
  651. if ($foruserprofile)
  652. {
  653. /* Must first change option to choose color of highlight instead of yes or no.
  654. print '<tr class="oddeven">';
  655. print '<td>'.$langs->trans("HighlightLinesOnMouseHover").'</td>';
  656. print '<td><input '.$bc[$var].' name="check_THEME_ELDY_USE_HOVER" disabled="disabled" type="checkbox" '.($conf->global->THEME_ELDY_USE_HOVER?" checked":"").'></td>';
  657. 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>';
  658. print '<td><input '.$bc[$var].' name="check_THEME_ELDY_USE_HOVER"'.($edit?'':' disabled="disabled"').' type="checkbox" '.($hoverdisabled?"":" checked").'>';
  659. print ' &nbsp; ('.$langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis").')';
  660. print '</td>';
  661. print '</tr>';
  662. */
  663. }
  664. else
  665. {
  666. print '<tr class="oddeven">';
  667. print '<td>'.$langs->trans("HighlightLinesColor").'</td>';
  668. print '<td colspan="'.($colspan-1).'">';
  669. //print '<input '.$bc[$var].' name="check_THEME_ELDY_USE_HOVER"'.($edit?'':' disabled').' type="checkbox" '.($hoverdisabled?"":" checked").'>';
  670. //print ' &nbsp; ('.$langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis").')';
  671. if ($edit)
  672. {
  673. if ($conf->global->THEME_ELDY_USE_HOVER == '1') $color='edf4fb';
  674. else $color = colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_USE_HOVER,array()),'');
  675. print $formother->selectColor($color,'THEME_ELDY_USE_HOVER','formcolor',1).' ';
  676. }
  677. else
  678. {
  679. if ($conf->global->THEME_ELDY_USE_HOVER == '1') $color='edf4fb';
  680. else $color = colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_USE_HOVER,array()),'');
  681. if ($color)
  682. {
  683. 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.'">';
  684. else print $langs->trans("Default");
  685. }
  686. else print $langs->trans("None");
  687. }
  688. print ' &nbsp; ('.$langs->trans("Default").': <strong>edf4fb</strong>) ';
  689. print $form->textwithpicto('', $langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis"));
  690. print '</td>';
  691. print '</tr>';
  692. }
  693. print '</table>';
  694. }