dashboard_edit.php 47 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057
  1. <?php
  2. /*
  3. FusionPBX
  4. Version: MPL 1.1
  5. The contents of this file are subject to the Mozilla Public License Version
  6. 1.1 (the "License"); you may not use this file except in compliance with
  7. the License. You may obtain a copy of the License at
  8. http://www.mozilla.org/MPL/
  9. Software distributed under the License is distributed on an "AS IS" basis,
  10. WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
  11. for the specific language governing rights and limitations under the
  12. License.
  13. The Original Code is FusionPBX
  14. The Initial Developer of the Original Code is
  15. Mark J Crane <[email protected]>
  16. Portions created by the Initial Developer are Copyright (C) 2021-2024
  17. the Initial Developer. All Rights Reserved.
  18. */
  19. //includes files
  20. require_once dirname(__DIR__, 2) . "/resources/require.php";
  21. require_once "resources/check_auth.php";
  22. //check permissions
  23. if (permission_exists('dashboard_add') || permission_exists('dashboard_edit')) {
  24. //access granted
  25. }
  26. else {
  27. echo "access denied";
  28. exit;
  29. }
  30. //initialize the database
  31. $database = new database;
  32. //add multi-lingual support
  33. $language = new text;
  34. $text = $language->get();
  35. //set the defaults
  36. $dashboard_name = '';
  37. $dashboard_path = '/core/dashboard/resources/dashboard/icon.php';
  38. //$dashboard_path = '';
  39. $dashboard_icon = '';
  40. $dashboard_url = '';
  41. $dashboard_target = 'self';
  42. $dashboard_width = '';
  43. $dashboard_height = '';
  44. $dashboard_content = '';
  45. $dashboard_content_text_align = '';
  46. $dashboard_content_details = '';
  47. $dashboard_heading_text_color = '';
  48. $dashboard_heading_background_color = '';
  49. $dashboard_number_text_color = '';
  50. $dashboard_groups = [];
  51. $dashboard_column_span = '';
  52. $dashboard_row_span = '';
  53. $dashboard_details_state = '';
  54. $dashboard_parent_uuid = '';
  55. $dashboard_order = '';
  56. $dashboard_enabled = $row["dashboard_enabled"] ?? 'true';
  57. $dashboard_description = '';
  58. $dashboard_uuid = '';
  59. //action add or update
  60. if (!empty($_REQUEST["id"]) && is_uuid($_REQUEST["id"])) {
  61. $action = "update";
  62. $dashboard_uuid = $_REQUEST["id"];
  63. $id = $_REQUEST["id"];
  64. }
  65. else {
  66. $action = "add";
  67. }
  68. //get http post variables and set them to php variables
  69. if (!empty($_POST)) {
  70. $dashboard_name = $_POST["dashboard_name"] ?? '';
  71. $dashboard_path = $_POST["dashboard_path"] ?? '';
  72. $dashboard_icon = $_POST["dashboard_icon"] ?? '';
  73. $dashboard_url = $_POST["dashboard_url"] ?? '';
  74. $dashboard_target = $_POST["dashboard_target"] ?? 'self';
  75. $dashboard_width = $_POST["dashboard_width"] ?? '';
  76. $dashboard_height = $_POST["dashboard_height"] ?? '';
  77. $dashboard_content = $_POST["dashboard_content"] ?? '';
  78. $dashboard_content_text_align = $_POST["dashboard_content_text_align"] ?? '';
  79. $dashboard_content_details = $_POST["dashboard_content_details"] ?? '';
  80. $dashboard_groups = $_POST["dashboard_groups"] ?? '';
  81. $dashboard_chart_type = $_POST["dashboard_chart_type"] ?? '';
  82. $dashboard_heading_text_color = $_POST["dashboard_heading_text_color"] ?? '';
  83. $dashboard_heading_text_color_hover = $_POST["dashboard_heading_text_color_hover"] ?? '';
  84. $dashboard_heading_background_color = $_POST["dashboard_heading_background_color"] ?? '';
  85. $dashboard_heading_background_color_hover = $_POST["dashboard_heading_background_color_hover"] ?? '';
  86. $dashboard_number_text_color = $_POST["dashboard_number_text_color"] ?? '';
  87. $dashboard_number_text_color_hover = $_POST["dashboard_number_text_color_hover"] ?? '';
  88. $dashboard_background_color = $_POST["dashboard_background_color"] ?? '';
  89. $dashboard_background_color_hover = $_POST["dashboard_background_color_hover"] ?? '';
  90. $dashboard_detail_background_color = $_POST["dashboard_detail_background_color"] ?? '';
  91. $dashboard_column_span = $_POST["dashboard_column_span"] ?? '';
  92. $dashboard_row_span = $_POST["dashboard_row_span"] ?? '';
  93. $dashboard_details_state = $_POST["dashboard_details_state"] ?? '';
  94. $dashboard_parent_uuid = $_POST["dashboard_parent_uuid"] ?? '';
  95. $dashboard_order = $_POST["dashboard_order"] ?? '';
  96. $dashboard_enabled = $_POST["dashboard_enabled"] ?? 'false';
  97. $dashboard_description = $_POST["dashboard_description"] ?? '';
  98. }
  99. //delete the group from the sub table
  100. if (isset($_REQUEST["a"]) && $_REQUEST["a"] == "delete" && permission_exists("dashboard_group_delete") && is_uuid($_GET["dashboard_group_uuid"]) && is_uuid($_GET["dashboard_uuid"])) {
  101. //get the uuid
  102. $dashboard_group_uuid = $_GET["dashboard_group_uuid"];
  103. $dashboard_uuid = $_GET["dashboard_uuid"];
  104. //delete the group from the users
  105. $array['dashboard_groups'][0]['dashboard_group_uuid'] = $dashboard_group_uuid;
  106. $database->app_name = 'dashboard';
  107. $database->app_uuid = '55533bef-4f04-434a-92af-999c1e9927f7';
  108. $database->delete($array);
  109. unset($array);
  110. //redirect the user
  111. message::add($text['message-delete']);
  112. header("Location: dashboard_edit.php?id=".urlencode($dashboard_uuid));
  113. return;
  114. }
  115. //process the user data and save it to the database
  116. if (count($_POST) > 0 && empty($_POST["persistformvar"])) {
  117. //validate the token
  118. $token = new token;
  119. if (!$token->validate($_SERVER['PHP_SELF'])) {
  120. message::add($text['message-invalid_token'],'negative');
  121. header('Location: dashboard.php');
  122. exit;
  123. }
  124. //process the http post data by submitted action
  125. if (!empty($_POST['action'])) {
  126. //prepare the array(s)
  127. //send the array to the database class
  128. switch ($_POST['action']) {
  129. case 'copy':
  130. if (permission_exists('dashboard_add')) {
  131. $database->copy($array);
  132. }
  133. break;
  134. case 'delete':
  135. if (permission_exists('dashboard_delete')) {
  136. $database->delete($array);
  137. }
  138. break;
  139. case 'toggle':
  140. if (permission_exists('dashboard_update')) {
  141. $database->toggle($array);
  142. }
  143. break;
  144. }
  145. //redirect the user
  146. if (in_array($_POST['action'], array('copy', 'delete', 'toggle'))) {
  147. header('Location: dashboard_edit.php?id='.$id);
  148. exit;
  149. }
  150. }
  151. //check for all required data
  152. $msg = '';
  153. //if (empty($dashboard_name)) { $msg .= $text['message-required']." ".$text['label-dashboard_name']."<br>\n"; }
  154. //if (empty($dashboard_path)) { $msg .= $text['message-required']." ".$text['label-dashboard_path']."<br>\n"; }
  155. //if (empty($dashboard_groups)) { $msg .= $text['message-required']." ".$text['label-dashboard_groups']."<br>\n"; }
  156. //if (empty($dashboard_order)) { $msg .= $text['message-required']." ".$text['label-dashboard_order']."<br>\n"; }
  157. //if (empty($dashboard_enabled)) { $msg .= $text['message-required']." ".$text['label-dashboard_enabled']."<br>\n"; }
  158. //if (empty($dashboard_description)) { $msg .= $text['message-required']." ".$text['label-dashboard_description']."<br>\n"; }
  159. if (!empty($msg) && empty($_POST["persistformvar"])) {
  160. require_once "resources/header.php";
  161. require_once "resources/persist_form_var.php";
  162. echo "<div align='center'>\n";
  163. echo "<table><tr><td>\n";
  164. echo $msg."<br />";
  165. echo "</td></tr></table>\n";
  166. persistformvar($_POST);
  167. echo "</div>\n";
  168. require_once "resources/footer.php";
  169. return;
  170. }
  171. //add the dashboard_uuid
  172. if (!is_uuid($_POST["dashboard_uuid"])) {
  173. $dashboard_uuid = uuid();
  174. }
  175. //remove empty values and convert to json
  176. if (!empty($dashboard_background_color)) {
  177. if (is_array($dashboard_background_color)) {
  178. $dashboard_background_color = array_filter($dashboard_background_color);
  179. if (count($dashboard_background_color) > 0) {
  180. $dashboard_background_color = json_encode($dashboard_background_color);
  181. }
  182. else {
  183. $dashboard_background_color = '';
  184. }
  185. }
  186. }
  187. if (!empty($dashboard_background_color_hover)) {
  188. if (is_array($dashboard_background_color_hover)) {
  189. $dashboard_background_color_hover = array_filter($dashboard_background_color_hover);
  190. if (count($dashboard_background_color_hover) > 0) {
  191. $dashboard_background_color_hover = json_encode($dashboard_background_color_hover);
  192. }
  193. else {
  194. $dashboard_background_color_hover = '';
  195. }
  196. }
  197. }
  198. if (!empty($dashboard_detail_background_color)) {
  199. if (is_array($dashboard_detail_background_color)) {
  200. $dashboard_detail_background_color = array_filter($dashboard_detail_background_color);
  201. if (count($dashboard_detail_background_color) > 0) {
  202. $dashboard_detail_background_color = json_encode($dashboard_detail_background_color);
  203. }
  204. else {
  205. $dashboard_detail_background_color = '';
  206. }
  207. }
  208. }
  209. //prepare the array
  210. $array['dashboard'][0]['dashboard_uuid'] = $dashboard_uuid;
  211. $array['dashboard'][0]['dashboard_name'] = $dashboard_name;
  212. $array['dashboard'][0]['dashboard_path'] = $dashboard_path;
  213. $array['dashboard'][0]['dashboard_icon'] = $dashboard_icon;
  214. $array['dashboard'][0]['dashboard_url'] = $dashboard_url;
  215. $array['dashboard'][0]['dashboard_width'] = $dashboard_width;
  216. $array['dashboard'][0]['dashboard_height'] = $dashboard_height;
  217. $array['dashboard'][0]['dashboard_target'] = $dashboard_target;
  218. $array['dashboard'][0]['dashboard_content'] = $dashboard_content;
  219. $array['dashboard'][0]['dashboard_content_text_align'] = $dashboard_content_text_align;
  220. $array['dashboard'][0]['dashboard_content_details'] = $dashboard_content_details;
  221. $array['dashboard'][0]['dashboard_chart_type'] = $dashboard_chart_type;
  222. $array['dashboard'][0]['dashboard_heading_text_color'] = $dashboard_heading_text_color;
  223. $array['dashboard'][0]['dashboard_heading_text_color_hover'] = $dashboard_heading_text_color_hover;
  224. $array['dashboard'][0]['dashboard_heading_background_color'] = $dashboard_heading_background_color;
  225. $array['dashboard'][0]['dashboard_heading_background_color_hover'] = $dashboard_heading_background_color_hover;
  226. $array['dashboard'][0]['dashboard_number_text_color'] = $dashboard_number_text_color;
  227. $array['dashboard'][0]['dashboard_number_text_color_hover'] = $dashboard_number_text_color_hover;
  228. $array['dashboard'][0]['dashboard_background_color'] = $dashboard_background_color;
  229. $array['dashboard'][0]['dashboard_background_color_hover'] = $dashboard_background_color_hover;
  230. $array['dashboard'][0]['dashboard_detail_background_color'] = $dashboard_detail_background_color;
  231. $array['dashboard'][0]['dashboard_column_span'] = $dashboard_column_span;
  232. $array['dashboard'][0]['dashboard_row_span'] = $dashboard_row_span;
  233. $array['dashboard'][0]['dashboard_details_state'] = $dashboard_details_state;
  234. $array['dashboard'][0]['dashboard_parent_uuid'] = $dashboard_parent_uuid;
  235. $array['dashboard'][0]['dashboard_order'] = $dashboard_order;
  236. $array['dashboard'][0]['dashboard_enabled'] = $dashboard_enabled;
  237. $array['dashboard'][0]['dashboard_description'] = $dashboard_description;
  238. $y = 0;
  239. if (is_array($dashboard_groups)) {
  240. foreach ($dashboard_groups as $row) {
  241. if (isset($row['group_uuid'])) {
  242. $array['dashboard'][0]['dashboard_groups'][$y]['dashboard_group_uuid'] = uuid();
  243. $array['dashboard'][0]['dashboard_groups'][$y]['group_uuid'] = $row["group_uuid"];
  244. $y++;
  245. }
  246. }
  247. }
  248. //save the data
  249. $database->app_name = 'dashboard';
  250. $database->app_uuid = '55533bef-4f04-434a-92af-999c1e9927f7';
  251. $result = $database->save($array);
  252. //view_array($result);
  253. //redirect the user
  254. if (isset($action)) {
  255. if ($action == "add") {
  256. $_SESSION["message"] = $text['message-add'];
  257. }
  258. if ($action == "update") {
  259. $_SESSION["message"] = $text['message-update'];
  260. }
  261. //header('Location: dashboard.php');
  262. header('Location: dashboard_edit.php?id='.urlencode($dashboard_uuid));
  263. return;
  264. }
  265. }
  266. //pre-populate the form
  267. if (empty($_POST["persistformvar"])) {
  268. $sql = "select ";
  269. $sql .= " dashboard_uuid, ";
  270. $sql .= " dashboard_name, ";
  271. $sql .= " dashboard_path, ";
  272. $sql .= " dashboard_icon, ";
  273. $sql .= " dashboard_url, ";
  274. $sql .= " dashboard_width, ";
  275. $sql .= " dashboard_height, ";
  276. $sql .= " dashboard_target, ";
  277. $sql .= " dashboard_content, ";
  278. $sql .= " dashboard_content_text_align, ";
  279. $sql .= " dashboard_content_details, ";
  280. $sql .= " dashboard_chart_type, ";
  281. $sql .= " dashboard_heading_text_color, ";
  282. $sql .= " dashboard_heading_text_color_hover, ";
  283. $sql .= " dashboard_heading_background_color, ";
  284. $sql .= " dashboard_heading_background_color_hover, ";
  285. $sql .= " dashboard_number_text_color, ";
  286. $sql .= " dashboard_number_text_color_hover, ";
  287. $sql .= " dashboard_background_color, ";
  288. $sql .= " dashboard_background_color_hover, ";
  289. $sql .= " dashboard_detail_background_color, ";
  290. $sql .= " dashboard_column_span, ";
  291. $sql .= " dashboard_row_span, ";
  292. $sql .= " dashboard_details_state, ";
  293. $sql .= " dashboard_parent_uuid, ";
  294. $sql .= " dashboard_order, ";
  295. $sql .= " dashboard_enabled, ";
  296. $sql .= " dashboard_description ";
  297. $sql .= "from v_dashboard ";
  298. $sql .= "where dashboard_uuid = :dashboard_uuid ";
  299. $parameters['dashboard_uuid'] = $dashboard_uuid;
  300. $row = $database->select($sql, $parameters, 'row');
  301. if (is_array($row) && @sizeof($row) != 0) {
  302. $dashboard_name = $row["dashboard_name"];
  303. $dashboard_path = $row["dashboard_path"];
  304. $dashboard_icon = $row["dashboard_icon"];
  305. $dashboard_url = $row["dashboard_url"];
  306. $dashboard_width = $row["dashboard_width"];
  307. $dashboard_height = $row["dashboard_height"];
  308. $dashboard_target = $row["dashboard_target"];
  309. $dashboard_content = $row["dashboard_content"];
  310. $dashboard_content_text_align = $row["dashboard_content_text_align"];
  311. $dashboard_content_details = $row["dashboard_content_details"];
  312. $dashboard_chart_type = $row["dashboard_chart_type"];
  313. $dashboard_heading_text_color = $row["dashboard_heading_text_color"];
  314. $dashboard_heading_text_color_hover = $row["dashboard_heading_text_color_hover"];
  315. $dashboard_heading_background_color = $row["dashboard_heading_background_color"];
  316. $dashboard_heading_background_color_hover = $row["dashboard_heading_background_color_hover"];
  317. $dashboard_number_text_color = $row["dashboard_number_text_color"];
  318. $dashboard_number_text_color_hover = $row["dashboard_number_text_color_hover"];
  319. $dashboard_background_color = $row["dashboard_background_color"];
  320. $dashboard_background_color_hover = $row["dashboard_background_color_hover"];
  321. $dashboard_detail_background_color = $row["dashboard_detail_background_color"];
  322. $dashboard_column_span = $row["dashboard_column_span"];
  323. $dashboard_row_span = $row["dashboard_row_span"];
  324. $dashboard_details_state = $row["dashboard_details_state"];
  325. $dashboard_parent_uuid = $row["dashboard_parent_uuid"];
  326. $dashboard_order = $row["dashboard_order"];
  327. $dashboard_enabled = $row["dashboard_enabled"] ?? 'false';
  328. $dashboard_description = $row["dashboard_description"];
  329. }
  330. unset($sql, $parameters, $row);
  331. }
  332. //get the child data
  333. if (!empty($dashboard_uuid) && is_uuid($dashboard_uuid)) {
  334. $sql = "select ";
  335. $sql .= " dashboard_group_uuid, ";
  336. $sql .= " group_uuid ";
  337. $sql .= "from v_dashboard_groups ";
  338. $sql .= "where dashboard_uuid = :dashboard_uuid ";
  339. $parameters['dashboard_uuid'] = $dashboard_uuid;
  340. $dashboard_groups = $database->select($sql, $parameters, 'all');
  341. unset ($sql, $parameters);
  342. }
  343. //add the $dashboard_group_uuid
  344. if (empty($dashboard_group_uuid) || !empty($dashboard_group_uuid) && !is_uuid($dashboard_group_uuid)) {
  345. $dashboard_group_uuid = uuid();
  346. }
  347. //convert the json to an array
  348. if (!empty($dashboard_background_color) && is_json($dashboard_background_color)) {
  349. $dashboard_background_color = json_decode($dashboard_background_color, true);
  350. }
  351. if (!empty($dashboard_background_color_hover) && is_json($dashboard_background_color_hover)) {
  352. $dashboard_background_color_hover = json_decode($dashboard_background_color_hover, true);
  353. }
  354. if (!empty($dashboard_detail_background_color) && is_json($dashboard_detail_background_color)) {
  355. $dashboard_detail_background_color = json_decode($dashboard_detail_background_color, true);
  356. }
  357. //add a default value to $dashboard_details_state
  358. if (!isset($dashboard_details_state)) {
  359. $dashboard_details_state = "expanded";
  360. }
  361. //add a default value to $dashboard_row_span
  362. if (empty($dashboard_row_span)) {
  363. $dashboard_row_span = 2;
  364. }
  365. //add an empty row
  366. $x = is_array($dashboard_groups) ? count($dashboard_groups) : 0;
  367. $dashboard_groups[$x]['dashboard_uuid'] = $dashboard_uuid;
  368. $dashboard_groups[$x]['dashboard_group_uuid'] = uuid();
  369. $dashboard_groups[$x]['group_uuid'] = '';
  370. //create token
  371. $object = new token;
  372. $token = $object->create($_SERVER['PHP_SELF']);
  373. //show the header
  374. $document['title'] = $text['title-dashboard'];
  375. require_once "resources/header.php";
  376. //get the child groups
  377. $sql = "SELECT * FROM v_dashboard_groups as x, v_groups as g ";
  378. $sql .= "WHERE x.dashboard_uuid = :dashboard_uuid ";
  379. $sql .= "AND x.group_uuid = g.group_uuid ";
  380. $parameters['dashboard_uuid'] = $dashboard_uuid ?? '';
  381. $dashboard_groups = $database->select($sql, $parameters, 'all');
  382. unset ($sql, $parameters);
  383. //get the groups
  384. $sql = "SELECT group_uuid, group_name FROM v_groups ";
  385. $sql .= "WHERE (domain_uuid = :domain_uuid or domain_uuid is null)";
  386. $sql .= "ORDER by group_name asc ";
  387. $parameters['domain_uuid'] = $_SESSION['domain_uuid'];
  388. $groups = $database->execute($sql, $parameters, 'all');
  389. unset ($sql, $parameters);
  390. //get the dashboards
  391. $sql = "SELECT dashboard_uuid, dashboard_name FROM v_dashboard ";
  392. $sql .= "WHERE dashboard_parent_uuid is null ";
  393. $sql .= "ORDER by dashboard_order, dashboard_name asc ";
  394. $parameters = null;
  395. $dashboard_parents = $database->execute($sql, $parameters, 'all');
  396. unset ($sql, $parameters);
  397. //set the assigned_groups array
  398. if (is_array($dashboard_groups) && sizeof($dashboard_groups) != 0) {
  399. $assigned_groups = array();
  400. foreach ($dashboard_groups as $field) {
  401. if (!empty($field['group_name'])) {
  402. if (is_uuid($field['group_uuid'])) {
  403. $assigned_groups[] = $field['group_uuid'];
  404. }
  405. }
  406. }
  407. }
  408. //build the $dashboard_tools array
  409. $i = 0;
  410. foreach(glob($_SERVER["DOCUMENT_ROOT"].'/*/*/resources/dashboard/*.php') as $value) {
  411. //skip adding config.php to the array
  412. if (basename($value) === 'config.php') {
  413. continue;
  414. }
  415. //ensure the slashes are consistent
  416. $value = str_replace('\\', '/', $value);
  417. //prepare the key
  418. $key_replace[] = $_SERVER["DOCUMENT_ROOT"].'/core/';
  419. $key_replace[] = $_SERVER["DOCUMENT_ROOT"].'/app/';
  420. $key_replace[] = 'resources/dashboard/';
  421. $key_replace[] = '.php';
  422. $key = str_replace($key_replace, '', $value);
  423. //prepare the value
  424. $value_replace[] = $_SERVER["DOCUMENT_ROOT"].'/';
  425. $value = str_replace($value_replace, '', $value);
  426. //build the array
  427. $dashboard_tools[$key] = $value;
  428. $i++;
  429. }
  430. //adjust form by type entered
  431. echo "<script>\n";
  432. echo " function adjust_form() {\n";
  433. echo " if ($('#dashboard_path').val() == 'core/dashboard/resources/dashboard/icon.php') {\n";
  434. echo " $('.type_content').hide();\n";
  435. echo " $('.type_icon').show();\n";
  436. echo " }\n";
  437. echo " else if ($('#dashboard_path').val() == 'core/dashboard/resources/dashboard/content.php') {\n";
  438. echo " $('.type_icon').hide();\n";
  439. echo " $('.type_content').show();\n";
  440. echo " }\n";
  441. echo " else {\n";
  442. echo " $('.type_icon, .type_content').hide();\n";
  443. echo " $('.type_chart').show();\n";
  444. echo " }\n";
  445. echo " }\n";
  446. echo "</script>\n";
  447. //show the content
  448. echo "<form name='frm' id='frm' method='post'>\n";
  449. echo "<input class='formfld' type='hidden' name='dashboard_uuid' value='".escape($dashboard_uuid)."'>\n";
  450. echo "<div class='action_bar' id='action_bar'>\n";
  451. echo " <div class='heading'><b>".$text['title-dashboard']."</b></div>\n";
  452. echo " <div class='actions'>\n";
  453. echo button::create(['type'=>'button','label'=>$text['button-back'],'icon'=>$_SESSION['theme']['button_icon_back'],'id'=>'btn_back','collapse'=>'hide-xs','style'=>'margin-right: 15px;','link'=>'dashboard.php']);
  454. if ($action == 'update') {
  455. if (permission_exists('dashboard_group_add')) {
  456. echo button::create(['type'=>'button','label'=>$text['button-copy'],'icon'=>$_SESSION['theme']['button_icon_copy'],'id'=>'btn_copy','name'=>'btn_copy','style'=>'display: none;','onclick'=>"modal_open('modal-copy','btn_copy');"]);
  457. }
  458. if (permission_exists('dashboard_group_delete')) {
  459. echo button::create(['type'=>'button','label'=>$text['button-delete'],'icon'=>$_SESSION['theme']['button_icon_delete'],'id'=>'btn_delete','name'=>'btn_delete','style'=>'display: none; margin-right: 15px;','onclick'=>"modal_open('modal-delete','btn_delete');"]);
  460. }
  461. }
  462. echo button::create(['type'=>'submit','label'=>$text['button-save'],'icon'=>$_SESSION['theme']['button_icon_save'],'id'=>'btn_save','collapse'=>'hide-xs']);
  463. echo " </div>\n";
  464. echo " <div style='clear: both;'></div>\n";
  465. echo "</div>\n";
  466. //echo $text['title_description-dashboard']."\n";
  467. echo "<br /><br />\n";
  468. if (!empty($action) && $action == 'update') {
  469. if (permission_exists('dashboard_add')) {
  470. echo modal::create(['id'=>'modal-copy','type'=>'copy','actions'=>button::create(['type'=>'submit','label'=>$text['button-continue'],'icon'=>'check','id'=>'btn_copy','style'=>'float: right; margin-left: 15px;','collapse'=>'never','name'=>'action','value'=>'copy','onclick'=>"modal_close();"])]);
  471. }
  472. if (permission_exists('dashboard_delete')) {
  473. echo modal::create(['id'=>'modal-delete','type'=>'delete','actions'=>button::create(['type'=>'submit','label'=>$text['button-continue'],'icon'=>'check','id'=>'btn_delete','style'=>'float: right; margin-left: 15px;','collapse'=>'never','name'=>'action','value'=>'delete','onclick'=>"modal_close();"])]);
  474. }
  475. }
  476. echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
  477. echo "<tr>\n";
  478. echo "<td width='30%' class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
  479. echo $text['label-dashboard_name'] ?? '';
  480. echo "\n";
  481. echo "</td>\n";
  482. echo "<td width='70%' class='vtable' style='position: relative;' align='left'>\n";
  483. echo " <input class='formfld' type='text' name='dashboard_name' maxlength='255' value='".escape($dashboard_name)."'>\n";
  484. echo "<br />\n";
  485. echo $text['description-dashboard_name']."\n";
  486. echo "</td>\n";
  487. echo "</tr>\n";
  488. echo "<tr>\n";
  489. echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
  490. echo " ".$text['label-dashboard_path']."\n";
  491. echo "</td>\n";
  492. echo "<td class='vtable' style='position: relative;' align='left'>\n";
  493. echo " <select name='dashboard_path' class='formfld' id='dashboard_path' onchange=\"adjust_form();\">\n";
  494. echo " <option value=''></option>\n";
  495. foreach($dashboard_tools as $key => $value) {
  496. echo " <option value='$value' ".($value == $dashboard_path ? "selected='selected'" : null).">".$key."</option>\n";
  497. }
  498. echo " </select>\n";
  499. echo "<br />\n";
  500. echo $text['description-dashboard_path']."\n";
  501. echo "</td>\n";
  502. echo "</tr>\n";
  503. if (
  504. $action == "add" ||
  505. $dashboard_path == "core/dashboard/resources/dashboard/icon.php"
  506. ) {
  507. echo " <tr class='type_icon' ".($dashboard_path != 'core/dashboard/resources/dashboard/icon.php' ? "style='display: none;'" : null).">";
  508. echo " <td class='vncell'>".$text['label-icon']."</td>";
  509. echo " <td class='vtable' style='vertical-align: bottom;'>";
  510. if (file_exists($_SERVER["PROJECT_ROOT"].'/resources/fontawesome/fa_icons.php')) {
  511. include $_SERVER["PROJECT_ROOT"].'/resources/fontawesome/fa_icons.php';
  512. }
  513. if (!empty($font_awesome_icons) && is_array($font_awesome_icons)) {
  514. echo "<table cellpadding='0' cellspacing='0' border='0'>\n";
  515. echo " <tr>\n";
  516. echo " <td>\n";
  517. echo " <select class='formfld' name='dashboard_icon' id='selected_icon' onchange=\"$('#icons').slideUp(200); $('#icon_search').fadeOut(200, function() { $('#grid_icon').fadeIn(); });\">\n";
  518. echo " <option value=''></option>\n";
  519. foreach ($font_awesome_icons as $icon) {
  520. $selected = $dashboard_icon == implode(' ', $icon['classes']) ? "selected" : null;
  521. echo " <option value='".escape(implode(' ', $icon['classes']))."' ".$selected.">".escape($icon['label'])."</option>\n";
  522. }
  523. echo " </select>\n";
  524. echo " </td>\n";
  525. echo " <td style='padding: 0 0 0 5px;'>\n";
  526. echo " <button id='grid_icon' type='button' class='btn btn-default list_control_icon' style='font-size: 15px; padding-top: 1px; padding-left: 3px;' onclick=\"load_icons(); $(this).fadeOut(200, function() { $('#icons').fadeIn(200); $('#icon_search').fadeIn(200).focus(); });\"><span class='fa-solid fa-th'></span></button>";
  527. echo " <input id='icon_search' type='text' class='formfld' style='display: none;' onkeyup=\"if (this.value.length >= 3) { delay_submit(this.value); } else if (this.value == '') { load_icons(); } else { $('#icons').html(''); }\" placeholder=\"".$text['label-search']."\">\n";
  528. echo " </td>\n";
  529. echo " </tr>\n";
  530. echo "</table>\n";
  531. echo "<div id='icons' style='clear: both; display: none; margin-top: 8px; padding-top: 10px; color: #000; max-height: 400px; overflow: auto;'></div>";
  532. echo "<script>\n";
  533. //load icons by search
  534. echo "function load_icons(search) {\n";
  535. echo " xhttp = new XMLHttpRequest();\n";
  536. echo " xhttp.open('GET', '".PROJECT_PATH."/resources/fontawesome/fa_icons.php?output=icons' + (search ? '&search=' + search : ''), false);\n";
  537. echo " xhttp.send();\n";
  538. echo " document.getElementById('icons').innerHTML = xhttp.responseText;\n";
  539. echo "}\n";
  540. //delay kepress for 1/2 second
  541. echo "var keypress_timer;\n";
  542. echo "function delay_submit(search) {\n";
  543. echo " clearTimeout(keypress_timer);\n";
  544. echo " keypress_timer = setTimeout(function(){\n";
  545. echo " load_icons(search);\n";
  546. echo " }, 500);\n";
  547. echo "}\n";
  548. echo "</script>\n";
  549. }
  550. else {
  551. echo " <input type='text' class='formfld' name='dashboard_icon' value='".escape($dashboard_icon)."'>";
  552. }
  553. echo " </td>";
  554. echo " </tr>";
  555. echo "<tr class='type_icon' ".($dashboard_path != 'core/dashboard/resources/dashboard/icon.php' ? "style='display: none;'" : null).">\n";
  556. echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
  557. echo " ".$text['label-link']."\n";
  558. echo "</td>\n";
  559. echo "<td class='vtable' align='left'>\n";
  560. echo " <input class='formfld' type='text' name='dashboard_url' maxlength='255' value='".escape($dashboard_url)."'>\n";
  561. echo "<br />\n";
  562. echo $text['description-dashboard_url'] ?? '';
  563. echo "\n";
  564. echo "</td>\n";
  565. echo "</tr>\n";
  566. echo "<tr class='type_icon' ".($dashboard_path != 'core/dashboard/resources/dashboard/icon.php' ? "style='display: none;'" : null).">\n";
  567. echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
  568. echo " ".$text['label-width']."\n";
  569. echo "</td>\n";
  570. echo "<td class='vtable' align='left'>\n";
  571. echo " <input class='formfld' type='text' name='dashboard_width' maxlength='255' value='".escape($dashboard_width)."'>\n";
  572. echo "<br />\n";
  573. echo $text['description-dashboard_width'] ?? '';
  574. echo "\n";
  575. echo "</td>\n";
  576. echo "</tr>\n";
  577. echo "<tr class='type_icon' ".($dashboard_path != 'core/dashboard/resources/dashboard/icon.php' ? "style='display: none;'" : null).">\n";
  578. echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
  579. echo " ".$text['label-height']."\n";
  580. echo "</td>\n";
  581. echo "<td class='vtable' align='left'>\n";
  582. echo " <input class='formfld' type='text' name='dashboard_height' maxlength='255' value='".escape($dashboard_height)."'>\n";
  583. echo "<br />\n";
  584. echo $text['description-dashboard_height'] ?? '';
  585. echo "\n";
  586. echo "</td>\n";
  587. echo "</tr>\n";
  588. echo "<tr class='type_icon' ".($dashboard_path != 'core/dashboard/resources/dashboard/icon.php' ? "class='type_icon' style='display: none;'" : null).">\n";
  589. echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
  590. echo $text['label-target']."\n";
  591. echo "</td>\n";
  592. echo "<td class='vtable' align='left'>\n";
  593. echo " <select name='dashboard_target' class='formfld'>\n";
  594. echo " <option value='self'>".$text['label-current_window']."</option>\n";
  595. echo " <option value='new' ".(!empty($dashboard_target) && $dashboard_target == 'new' ? "selected='selected'" : null).">".$text['label-new_window']."</option>\n";
  596. echo " </select>\n";
  597. echo "<br />\n";
  598. echo $text['description-dashboard_target']."\n";
  599. echo "</td>\n";
  600. echo "</tr>\n";
  601. }
  602. if (
  603. $action == "add" ||
  604. $dashboard_path == "core/dashboard/resources/dashboard/content.php"
  605. ) {
  606. echo "<tr class='type_content' ".($dashboard_path != 'core/dashboard/resources/dashboard/content.php' ? "style='display: none;'" : null).">\n";
  607. echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
  608. echo " ".$text['label-content']."\n";
  609. echo "</td>\n";
  610. echo "<td class='vtable' align='left'>\n";
  611. echo " <textarea class='formfld' style='height: 100px;' name='dashboard_content'>".$dashboard_content."</textarea>\n";
  612. echo "<br />\n";
  613. echo $text['description-dashboard_content']."\n";
  614. echo "</td>\n";
  615. echo "</tr>\n";
  616. echo "<tr class='type_content' ".($dashboard_path != 'core/dashboard/resources/dashboard/content.php' ? "style='display: none;'" : null).">\n";
  617. echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
  618. echo " ".$text['label-dashboard_content_text_align']."\n";
  619. echo "</td>\n";
  620. echo "<td class='vtable' align='left'>\n";
  621. echo " <select name='dashboard_content_text_align' class='formfld'>\n";
  622. echo " <option value='left' ".(!empty($dashboard_content_text_align) && $dashboard_content_text_align == 'left' ? "selected='selected'" : null).">".$text['label-left']."</option>\n";
  623. echo " <option value='right' ".(!empty($dashboard_content_text_align) && $dashboard_content_text_align == 'right' ? "selected='selected'" : null).">".$text['label-right']."</option>\n";
  624. echo " <option value='center' ".(!empty($dashboard_content_text_align) && $dashboard_content_text_align == 'center' ? "selected='selected'" : null).">".$text['label-center']."</option>\n";
  625. echo " </select>\n"; echo "<br />\n";
  626. echo $text['description-dashboard_content_text_align']."\n";
  627. echo "</td>\n";
  628. echo "</tr>\n";
  629. }
  630. if (
  631. $action == "add" ||
  632. $dashboard_path == "core/dashboard/resources/dashboard/content.php" ||
  633. $dashboard_path == "core/dashboard/resources/dashboard/icon.php"
  634. ) {
  635. echo "<tr class='type_icon type_content' ".($dashboard_path != 'core/dashboard/resources/dashboard/content.php' && $dashboard_path != 'core/dashboard/resources/dashboard/icon.php' ? "style='display: none;'" : null).">\n";
  636. echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
  637. echo " ".$text['label-details']."\n";
  638. echo "</td>\n";
  639. echo "<td class='vtable' align='left'>\n";
  640. echo " <textarea class='formfld' style='height: 100px;' name='dashboard_content_details'>".$dashboard_content_details."</textarea>\n";
  641. echo "<br />\n";
  642. echo $text['description-dashboard_content_details']."\n";
  643. echo "</td>\n";
  644. echo "</tr>\n";
  645. }
  646. echo "<tr>\n";
  647. echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
  648. echo " ".$text['label-dashboard_groups']."\n";
  649. echo "</td>\n";
  650. echo "<td class='vtable' style='position: relative;' align='left'>\n";
  651. if (is_array($dashboard_groups) && sizeof($dashboard_groups) != 0) {
  652. echo "<table cellpadding='0' cellspacing='0' border='0'>\n";
  653. foreach($dashboard_groups as $field) {
  654. if (!empty($field['group_name'])) {
  655. echo "<tr>\n";
  656. echo " <td class='vtable' style='white-space: nowrap; padding-right: 30px;' nowrap='nowrap'>\n";
  657. echo $field['group_name'].((!empty($field['group_domain_uuid'])) ? "@".$_SESSION['domains'][$field['group_domain_uuid']]['domain_name'] : null);
  658. echo " </td>\n";
  659. if (permission_exists('dashboard_group_delete') || if_group("superadmin")) {
  660. echo " <td class='list_control_icons' style='width: 25px;'>\n";
  661. echo "<a href='dashboard_edit.php?id=".escape($field['dashboard_group_uuid'])."&dashboard_group_uuid=".escape($field['dashboard_group_uuid'])."&dashboard_uuid=".escape($dashboard_uuid)."&a=delete' alt='".$text['button-delete']."' onclick=\"return confirm('".$text['confirm-delete']."')\">".$v_link_label_delete."</a>\n";
  662. echo " </td>\n";
  663. }
  664. echo "</tr>\n";
  665. }
  666. }
  667. echo "</table>\n";
  668. }
  669. if (!empty($groups) && is_array($groups)) {
  670. if (!empty($dashboard_groups)) { echo "<br />\n"; }
  671. echo "<select name='dashboard_groups[0][group_uuid]' class='formfld' style='width: auto; margin-right: 3px;'>\n";
  672. echo " <option value=''></option>\n";
  673. foreach ($groups as $row) {
  674. if ((!empty($field['group_level']) && $field['group_level'] <= $_SESSION['user']['group_level']) || empty($field['group_level'])) {
  675. if (empty($assigned_groups) || !in_array($row["group_uuid"], $assigned_groups)) {
  676. echo " <option value='".$row['group_uuid']."'>".$row['group_name'].(!empty($row['domain_uuid']) ? "@".$_SESSION['domains'][$row['domain_uuid']]['domain_name'] : null)."</option>\n";
  677. }
  678. }
  679. }
  680. echo "</select>\n";
  681. echo button::create(['type'=>'submit','label'=>$text['button-add'],'icon'=>$_SESSION['theme']['button_icon_add']]);
  682. }
  683. echo "<br />\n";
  684. echo $text['description-dashboard_groups']."\n";
  685. echo "</td>\n";
  686. echo "</tr>\n";
  687. if (
  688. $action == "add" ||
  689. $dashboard_path == "app/voicemails/resources/dashboard/voicemails.php" ||
  690. $dashboard_path == "app/xml_cdr/resources/dashboard/missed_calls.php" ||
  691. $dashboard_path == "app/xml_cdr/resources/dashboard/recent_calls.php" ||
  692. $dashboard_path == "app/system/resources/dashboard/system_status.php" ||
  693. $dashboard_path == "app/system/resources/dashboard/system_cpu_status.php" ||
  694. $dashboard_path == "app/system/resources/dashboard/system_counts.php" ||
  695. $dashboard_path == "app/switch/resources/dashboard/switch_status.php" ||
  696. $dashboard_path == "app/domain_limits/resources/dashboard/domain_limits.php" ||
  697. $dashboard_path == "app/call_forward/resources/dashboard/call_forward.php" ||
  698. $dashboard_path == "app/ring_groups/resources/dashboard/ring_group_forward.php" ||
  699. $dashboard_path == "app/extensions/resources/dashboard/caller_id.php" ||
  700. $dashboard_path == "app/maintenance/resources/dashboard/maintenance.php"
  701. ) {
  702. echo "<tr class='type_chart' ".($action == "add" ? "style='display: none;'" : null).">\n";
  703. echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
  704. echo $text['label-dashboard_chart_type']."\n";
  705. echo "</td>\n";
  706. echo "<td class='vtable' style='position: relative;' align='left'>\n";
  707. echo " <select name='dashboard_chart_type' class='formfld'>\n";
  708. echo " <option value='doughnut'>".$text['label-doughnut']."</option>\n";
  709. echo " <option value='number' ".(!empty($dashboard_chart_type) && $dashboard_chart_type == "number" ? "selected='selected'" : null).">".$text['label-number']."</option>\n";
  710. echo " </select>\n";
  711. echo "<br />\n";
  712. echo $text['description-dashboard_chart_type']."\n";
  713. echo "</td>\n";
  714. echo "</tr>\n";
  715. }
  716. echo "<tr>\n";
  717. echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
  718. echo $text['label-dashboard_heading_text_color']."\n";
  719. echo "</td>\n";
  720. echo "<td class='vtable' style='position: relative;' align='left'>\n";
  721. echo " <input type='text' class='formfld colorpicker' name='dashboard_heading_text_color' value='".escape($dashboard_heading_text_color)."'>\n";
  722. echo "<br />\n";
  723. echo $text['description-dashboard_heading_text_color']."\n";
  724. echo "</td>\n";
  725. echo "</tr>\n";
  726. if ($action == "add" || $dashboard_path == "core/dashboard/resources/dashboard/icon.php") {
  727. echo "<tr class='type_icon' ".($dashboard_path != 'core/dashboard/resources/dashboard/icon.php' ? "style='display: none;'" : null).">\n";
  728. echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
  729. echo $text['label-dashboard_heading_text_color_hover']."\n";
  730. echo "</td>\n";
  731. echo "<td class='vtable' style='position: relative;' align='left'>\n";
  732. echo " <input type='text' class='formfld colorpicker' name='dashboard_heading_text_color_hover' value='".escape($dashboard_heading_text_color_hover)."'>\n";
  733. echo "<br />\n";
  734. echo $text['description-dashboard_heading_text_color_hover']."\n";
  735. echo "</td>\n";
  736. echo "</tr>\n";
  737. }
  738. echo "<tr>\n";
  739. echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
  740. echo $text['label-dashboard_heading_background_color']."\n";
  741. echo "</td>\n";
  742. echo "<td class='vtable' style='position: relative;' align='left'>\n";
  743. echo " <input type='text' class='formfld colorpicker' name='dashboard_heading_background_color' value='".escape($dashboard_heading_background_color)."'>\n";
  744. echo "<br />\n";
  745. echo $text['description-dashboard_heading_background_color']."\n";
  746. echo "</td>\n";
  747. echo "</tr>\n";
  748. if ($action == "add" || $dashboard_path == "core/dashboard/resources/dashboard/icon.php") {
  749. echo "<tr class='type_icon' ".($dashboard_path != 'core/dashboard/resources/dashboard/icon.php' ? "style='display: none;'" : null).">\n";
  750. echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
  751. echo $text['label-dashboard_heading_background_color_hover']."\n";
  752. echo "</td>\n";
  753. echo "<td class='vtable' style='position: relative;' align='left'>\n";
  754. echo " <input type='text' class='formfld colorpicker' name='dashboard_heading_background_color_hover' value='".escape($dashboard_heading_background_color_hover)."'>\n";
  755. echo "<br />\n";
  756. echo $text['description-dashboard_heading_background_color_hover']."\n";
  757. echo "</td>\n";
  758. echo "</tr>\n";
  759. }
  760. echo "<tr>\n";
  761. echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
  762. echo $text['label-dashboard_number_text_color']."\n";
  763. echo "</td>\n";
  764. echo "<td class='vtable' style='position: relative;' align='left'>\n";
  765. echo " <input type='text' class='formfld colorpicker' name='dashboard_number_text_color' value='".escape($dashboard_number_text_color)."'>\n";
  766. echo "<br />\n";
  767. echo $text['description-dashboard_number_text_color']."\n";
  768. echo "</td>\n";
  769. echo "</tr>\n";
  770. if ($action == "add" || $dashboard_path == "core/dashboard/resources/dashboard/icon.php") {
  771. echo "<tr class='type_icon' ".($dashboard_path != 'core/dashboard/resources/dashboard/icon.php' ? "style='display: none;'" : null).">\n";
  772. echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
  773. echo $text['label-dashboard_number_text_color_hover']."\n";
  774. echo "</td>\n";
  775. echo "<td class='vtable' style='position: relative;' align='left'>\n";
  776. echo " <input type='text' class='formfld colorpicker' name='dashboard_number_text_color_hover' value='".escape($dashboard_number_text_color_hover)."'>\n";
  777. echo "<br />\n";
  778. echo $text['description-dashboard_number_text_color_hover']."\n";
  779. echo "</td>\n";
  780. echo "</tr>\n";
  781. }
  782. echo "<tr>\n";
  783. echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
  784. echo $text['label-dashboard_background_color']."\n";
  785. echo "</td>\n";
  786. echo "<td class='vtable' style='position: relative;' align='left'>\n";
  787. if (!empty($dashboard_background_color) && is_array($dashboard_background_color)) {
  788. foreach($dashboard_background_color as $background_color) {
  789. echo " <input type='text' class='formfld colorpicker' name='dashboard_background_color[]' value='".escape($background_color)."'><br />\n";
  790. }
  791. }
  792. if (empty($dashboard_background_color) || (is_array($dashboard_background_color) && count($dashboard_background_color) < 2)) {
  793. echo " <input type='text' class='formfld colorpicker' name='dashboard_background_color[]' value='' onclick=\"document.getElementById('second_input').style.display = 'block';\">\n";
  794. if (empty($dashboard_background_color)) {
  795. echo " <input id='second_input' style='display: none;' type='text' class='formfld colorpicker' name='dashboard_background_color[]'>\n";
  796. }
  797. echo "<br />\n";
  798. }
  799. echo $text['description-dashboard_background_color']."\n";
  800. echo "</td>\n";
  801. echo "</tr>\n";
  802. if ($action == "add" || $dashboard_path == "core/dashboard/resources/dashboard/icon.php") {
  803. echo "<tr class='type_icon' ".($dashboard_path != 'core/dashboard/resources/dashboard/icon.php' ? "style='display: none;'" : null).">\n";
  804. echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
  805. echo $text['label-dashboard_background_color_hover']."\n";
  806. echo "</td>\n";
  807. echo "<td class='vtable' style='position: relative;' align='left'>\n";
  808. if (!empty($dashboard_background_color_hover) && is_array($dashboard_background_color_hover)) {
  809. foreach($dashboard_background_color_hover as $background_color) {
  810. echo " <input type='text' class='formfld colorpicker' name='dashboard_background_color_hover[]' value='".escape($background_color)."'><br />\n";
  811. }
  812. }
  813. if (empty($dashboard_background_color_hover) || (is_array($dashboard_background_color_hover) && count($dashboard_background_color_hover) < 2)) {
  814. echo " <input type='text' class='formfld colorpicker' name='dashboard_background_color_hover[]' value='' onclick=\"document.getElementById('second_input').style.display = 'block';\">\n";
  815. if (empty($dashboard_background_color_hover)) {
  816. echo " <input id='second_input' style='display: none;' type='text' class='formfld colorpicker' name='dashboard_background_color_hover[]'>\n";
  817. }
  818. echo "<br />\n";
  819. }
  820. echo $text['description-dashboard_background_color_hover']."\n";
  821. echo "</td>\n";
  822. echo "</tr>\n";
  823. }
  824. echo "<tr>\n";
  825. echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
  826. echo $text['label-dashboard_detail_background_color']."\n";
  827. echo "</td>\n";
  828. echo "<td class='vtable' style='position: relative;' align='left'>\n";
  829. if (!empty($dashboard_detail_background_color) && is_array($dashboard_detail_background_color)) {
  830. foreach($dashboard_detail_background_color as $detail_background_color) {
  831. echo " <input type='text' class='formfld colorpicker' name='dashboard_detail_background_color[]' value='".escape($detail_background_color)."'><br />\n";
  832. }
  833. }
  834. if (empty($dashboard_detail_background_color) || (is_array($dashboard_detail_background_color) && count($dashboard_detail_background_color) < 2)) {
  835. echo " <input type='text' class='formfld colorpicker' name='dashboard_detail_background_color[]' value='' onclick=\"document.getElementById('detail_second_input').style.display = 'block';\">\n";
  836. if (empty($dashboard_detail_background_color)) {
  837. echo " <input id='detail_second_input' style='display: none;' type='text' class='formfld colorpicker' name='dashboard_detail_background_color[]'>\n";
  838. }
  839. echo "<br />\n";
  840. }
  841. echo $text['description-dashboard_detail_background_color']."\n";
  842. echo "</td>\n";
  843. echo "</tr>\n";
  844. echo "<tr>\n";
  845. echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
  846. echo " ".$text['label-dashboard_column_span']."\n";
  847. echo "</td>\n";
  848. echo "<td class='vtable' style='position: relative;' align='left'>\n";
  849. echo " <select name='dashboard_column_span' class='formfld'>\n";
  850. $i=1;
  851. while ($i <= 3) {
  852. $selected = ($i == $dashboard_column_span) ? "selected" : null;
  853. echo " <option value='$i' ".$selected.">$i</option>\n";
  854. $i++;
  855. }
  856. echo " </select>\n";
  857. echo "<br />\n";
  858. echo $text['description-dashboard_column_span']."\n";
  859. echo "</td>\n";
  860. echo "</tr>\n";
  861. echo "<tr>\n";
  862. echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
  863. echo " ".$text['label-dashboard_row_span']."\n";
  864. echo "</td>\n";
  865. echo "<td class='vtable' style='position: relative;' align='left'>\n";
  866. echo " <select name='dashboard_row_span' class='formfld'>\n";
  867. $i=1;
  868. while ($i <= 3) {
  869. $selected = ($i == $dashboard_row_span) ? "selected" : null;
  870. echo " <option value='$i' ".$selected.">$i</option>\n";
  871. $i++;
  872. }
  873. echo " </select>\n";
  874. echo "<br />\n";
  875. echo $text['description-dashboard_row_span']."\n";
  876. echo "</td>\n";
  877. echo "</tr>\n";
  878. echo "<tr>\n";
  879. echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
  880. echo " ".$text['label-dashboard_details_state']."\n";
  881. echo "</td>\n";
  882. echo "<td class='vtable' style='position: relative;' align='left'>\n";
  883. echo " <select name='dashboard_details_state' class='formfld'>\n";
  884. echo " <option value='expanded'>".$text['option-expanded']."</option>\n";
  885. echo " <option value='contracted' ".($dashboard_details_state == "contracted" ? "selected='selected'" : null).">".$text['option-contracted']."</option>\n";
  886. echo " <option value='hidden' ".($dashboard_details_state == "hidden" ? "selected='selected'" : null).">".$text['option-hidden']."</option>\n";
  887. echo " <option value='disabled' ".($dashboard_details_state == "disabled" || empty($dashboard_details_state) ? "selected='selected'" : null).">".$text['label-disabled']."</option>\n";
  888. echo " </select>\n";
  889. echo "<br />\n";
  890. echo $text['description-dashboard_details_state']."\n";
  891. echo "</td>\n";
  892. echo "</tr>\n";
  893. if (permission_exists('dashboard_parent_uuid')) {
  894. echo " <tr>";
  895. echo " <td class='vncell'>".$text['label-dashboard_parent_uuid']."</td>";
  896. echo " <td class='vtable'>";
  897. echo " <select name=\"dashboard_parent_uuid\" class='formfld'>\n";
  898. echo " <option value=\"\"></option>\n";
  899. foreach ($dashboard_parents as $field) {
  900. if ($field['dashboard_uuid'] == $dashboard_parent_uuid) {
  901. echo " <option value='".escape($field['dashboard_uuid'])."' selected>".escape($field['dashboard_name'])."</option>\n";
  902. }
  903. else {
  904. echo " <option value='".escape($field['dashboard_uuid'])."'>".escape($field['dashboard_name'])."</option>\n";
  905. }
  906. }
  907. echo " </select>";
  908. echo "<br />\n";
  909. echo $text['description-dashboard_parent_uuid']."\n";
  910. echo " </td>";
  911. echo " </tr>";
  912. }
  913. echo "<tr>\n";
  914. echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
  915. echo " ".$text['label-dashboard_order']."\n";
  916. echo "</td>\n";
  917. echo "<td class='vtable' style='position: relative;' align='left'>\n";
  918. echo " <select name='dashboard_order' class='formfld'>\n";
  919. $i=0;
  920. while ($i<=999) {
  921. $selected = ($i == $dashboard_order) ? "selected" : null;
  922. if (strlen($i) == 1) {
  923. echo " <option value='00$i' ".$selected.">00$i</option>\n";
  924. }
  925. if (strlen($i) == 2) {
  926. echo " <option value='0$i' ".$selected.">0$i</option>\n";
  927. }
  928. if (strlen($i) == 3) {
  929. echo " <option value='$i' ".$selected.">$i</option>\n";
  930. }
  931. $i++;
  932. }
  933. echo " </select>\n";
  934. echo "<br />\n";
  935. echo $text['description-dashboard_order']."\n";
  936. echo "</td>\n";
  937. echo "</tr>\n";
  938. echo "<tr>\n";
  939. echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
  940. echo " ".$text['label-dashboard_enabled']."\n";
  941. echo "</td>\n";
  942. echo "<td class='vtable' style='position: relative;' align='left'>\n";
  943. if (substr($_SESSION['theme']['input_toggle_style']['text'], 0, 6) == 'switch') {
  944. echo " <label class='switch'>\n";
  945. echo " <input type='checkbox' id='dashboard_enabled' name='dashboard_enabled' value='true' ".($dashboard_enabled == 'true' ? "checked='checked'" : null).">\n";
  946. echo " <span class='slider'></span>\n";
  947. echo " </label>\n";
  948. }
  949. else {
  950. echo " <select class='formfld' id='dashboard_enabled' name='dashboard_enabled'>\n";
  951. echo " <option value='false'>".$text['option-false']."</option>\n";
  952. echo " <option value='true' ".($dashboard_enabled == 'true' ? "selected='selected'" : null).">".$text['option-true']."</option>\n";
  953. echo " </select>\n";
  954. }
  955. echo "<br />\n";
  956. echo $text['description-dashboard_enabled']."\n";
  957. echo "</td>\n";
  958. echo "</tr>\n";
  959. echo "<tr>\n";
  960. echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
  961. echo " ".$text['label-dashboard_description']."\n";
  962. echo "</td>\n";
  963. echo "<td class='vtable' style='position: relative;' align='left'>\n";
  964. echo " <input class='formfld' type='text' name='dashboard_description' maxlength='255' value='".escape($dashboard_description)."'>\n";
  965. echo "<br />\n";
  966. echo $text['description-dashboard_description']."\n";
  967. echo "</td>\n";
  968. echo "</tr>\n";
  969. echo "</table>";
  970. echo "<br /><br />";
  971. echo "<input type='hidden' name='".$token['name']."' value='".$token['hash']."'>\n";
  972. echo "</form>";
  973. //include the footer
  974. require_once "resources/footer.php";
  975. ?>