menu_item_edit.php 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584
  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) 2008-2024
  17. the Initial Developer. All Rights Reserved.
  18. Contributor(s):
  19. Mark J Crane <[email protected]>
  20. */
  21. //includes files
  22. require_once dirname(__DIR__, 2) . "/resources/require.php";
  23. require_once "resources/check_auth.php";
  24. //check permissions
  25. if (permission_exists('menu_add') || permission_exists('menu_edit')) {
  26. //access granted
  27. }
  28. else {
  29. echo "access denied";
  30. return;
  31. }
  32. //add multi-lingual support
  33. $language = new text;
  34. $text = $language->get();
  35. //connect to the database
  36. $database = new database;
  37. //define the variables
  38. $menu_uuid = null;
  39. $menu_item_uuid = null;
  40. $menu_item_title = '';
  41. $menu_item_link = '';
  42. $menu_item_category = '';
  43. $menu_item_icon = '';
  44. $menu_item_description = '';
  45. $menu_item_protected = '';
  46. $menu_item_parent_uuid = null;
  47. $menu_item_order = null;
  48. //get the menu_uuid
  49. if (!empty($_REQUEST)) {
  50. $menu_uuid = $_REQUEST["id"];
  51. $menu_item_uuid = $_REQUEST['menu_item_uuid'] ?? null;
  52. $group_uuid_name = $_REQUEST['group_uuid_name'] ?? null;
  53. $menu_item_group_uuid = $_REQUEST['menu_item_group_uuid'] ?? null;
  54. }
  55. //set the action
  56. $action = '';
  57. if (!empty($_REQUEST["a"])) {
  58. $action = $_REQUEST["a"];
  59. }
  60. //delete the group from the menu item
  61. if ($action == "delete" && permission_exists("menu_delete") && is_uuid($menu_item_group_uuid)) {
  62. //delete the group from the users
  63. $array['menu_item_groups'][0]['menu_item_group_uuid'] = $menu_item_group_uuid;
  64. $database->app_name = 'menu';
  65. $database->app_uuid = 'f4b3b3d2-6287-489c-2a00-64529e46f2d7';
  66. $database->delete($array);
  67. unset($array);
  68. //redirect the browser
  69. message::add($text['message-delete']);
  70. header("Location: menu_item_edit.php?id=".urlencode($menu_uuid)."&menu_item_uuid=".urlencode($menu_item_uuid)."&menu_uuid=".urlencode($menu_uuid));
  71. return;
  72. }
  73. //action add or update
  74. if (!empty($_REQUEST["menu_item_uuid"]) && is_uuid($_REQUEST["menu_item_uuid"])) {
  75. $action = "update";
  76. $menu_item_uuid = $_REQUEST["menu_item_uuid"];
  77. }
  78. else {
  79. $action = "add";
  80. }
  81. //get the HTTP POST variables and set them as PHP variables
  82. if (!empty($_POST)) {
  83. $menu_uuid = $_POST["menu_uuid"] ?? '';
  84. $menu_item_uuid = $_POST["menu_item_uuid"] ?? '';
  85. $menu_item_title = $_POST["menu_item_title"] ?? '';
  86. $menu_item_link = $_POST["menu_item_link"] ?? '';
  87. $menu_item_category = $_POST["menu_item_category"] ?? '';
  88. $menu_item_icon = $_POST["menu_item_icon"] ?? '';
  89. $menu_item_description = $_POST["menu_item_description"] ?? '';
  90. $menu_item_protected = $_POST["menu_item_protected"] ?? '';
  91. $menu_item_parent_uuid = $_POST["menu_item_parent_uuid"] ?? null;
  92. $menu_item_order = $_POST["menu_item_order"] ?? '';
  93. }
  94. //sanitize the menu link
  95. $menu_item_link = preg_replace('#[^a-zA-Z0-9_:\-\.\&\=\?\/]#', '', $menu_item_link);
  96. //when a HTTP POST is available then process it
  97. if (!empty($_POST) && empty($_POST["persistformvar"])) {
  98. if ($action == "update") {
  99. $menu_item_uuid = $_POST["menu_item_uuid"];
  100. }
  101. //validate the token
  102. $token = new token;
  103. if (!$token->validate($_SERVER['PHP_SELF'])) {
  104. message::add($text['message-invalid_token'],'negative');
  105. header('Location: menu.php');
  106. exit;
  107. }
  108. //check for all required data
  109. $msg = '';
  110. if (empty($menu_item_title)) { $msg .= $text['message-required'].$text['label-title']."<br>\n"; }
  111. if (empty($menu_item_category)) { $msg .= $text['message-required'].$text['label-category']."<br>\n"; }
  112. //if (empty($menu_item_link)) { $msg .= $text['message-required'].$text['label-link']."<br>\n"; }
  113. if (!empty($msg) && empty($_POST["persistformvar"])) {
  114. require_once "resources/header.php";
  115. require_once "resources/persist_form_var.php";
  116. echo "<div align='center'>\n";
  117. echo "<table><tr><td>\n";
  118. echo $msg."<br />";
  119. echo "</td></tr></table>\n";
  120. persistformvar($_POST);
  121. echo "</div>\n";
  122. require_once "resources/footer.php";
  123. return;
  124. }
  125. //add or update the database
  126. if (empty($_POST["persistformvar"])) {
  127. //get the language from the menu
  128. $sql = "select menu_language from v_menus ";
  129. $sql .= "where menu_uuid = :menu_uuid ";
  130. $parameters['menu_uuid'] = $menu_uuid;
  131. $menu_language = $database->select($sql, $parameters, 'column');
  132. unset($sql, $parameters);
  133. //get the highest menu item order
  134. if (!is_uuid($menu_item_parent_uuid)) {
  135. $sql = "select menu_item_order from v_menu_items ";
  136. $sql .= "where menu_uuid = :menu_uuid ";
  137. $sql .= "and menu_item_parent_uuid is null ";
  138. $sql .= "order by menu_item_order desc ";
  139. $sql .= "limit 1 ";
  140. $parameters['menu_uuid'] = $menu_uuid;
  141. $highest_menu_item_order = $database->select($sql, $parameters, 'column');
  142. unset($sql, $parameters);
  143. }
  144. //add a menu item
  145. if ($action == "add" && permission_exists('menu_add')) {
  146. $menu_item_uuid = uuid();
  147. $array['menu_items'][0]['menu_uuid'] = $menu_uuid;
  148. $array['menu_items'][0]['menu_item_title'] = $menu_item_title;
  149. $array['menu_items'][0]['menu_item_link'] = $menu_item_link;
  150. $array['menu_items'][0]['menu_item_category'] = $menu_item_category;
  151. $array['menu_items'][0]['menu_item_icon'] = $menu_item_icon;
  152. $array['menu_items'][0]['menu_item_description'] = $menu_item_description;
  153. $array['menu_items'][0]['menu_item_protected'] = $menu_item_protected;
  154. $array['menu_items'][0]['menu_item_uuid'] = $menu_item_uuid;
  155. if (!is_uuid($menu_item_parent_uuid)) {
  156. $array['menu_items'][0]['menu_item_parent_uuid'] = null;
  157. $array['menu_items'][0]['menu_item_order'] = ($highest_menu_item_order + 1);
  158. }
  159. else {
  160. $array['menu_items'][0]['menu_item_parent_uuid'] = $menu_item_parent_uuid;
  161. }
  162. $array['menu_items'][0]['menu_item_add_user'] = $_SESSION["username"];
  163. $array['menu_items'][0]['menu_item_add_date'] = 'now()';
  164. $database->app_name = 'menu';
  165. $database->app_uuid = 'f4b3b3d2-6287-489c-2a00-64529e46f2d7';
  166. $database->save($array);
  167. unset($array);
  168. }
  169. //update the menu item
  170. if ($action == "update" && permission_exists('menu_edit')) {
  171. $array['menu_items'][0]['menu_uuid'] = $menu_uuid;
  172. $array['menu_items'][0]['menu_item_title'] = $menu_item_title;
  173. $array['menu_items'][0]['menu_item_link'] = $menu_item_link;
  174. $array['menu_items'][0]['menu_item_category'] = $menu_item_category;
  175. $array['menu_items'][0]['menu_item_icon'] = $menu_item_icon;
  176. $array['menu_items'][0]['menu_item_description'] = $menu_item_description;
  177. $array['menu_items'][0]['menu_item_protected'] = $menu_item_protected;
  178. $array['menu_items'][0]['menu_item_uuid'] = $menu_item_uuid;
  179. if (!is_uuid($menu_item_parent_uuid)) {
  180. $array['menu_items'][0]['menu_item_parent_uuid'] = null;
  181. $array['menu_items'][0]['menu_item_order'] = is_numeric($menu_item_order) ? $menu_item_order : ($highest_menu_item_order + 1);
  182. }
  183. else {
  184. $array['menu_items'][0]['menu_item_parent_uuid'] = $menu_item_parent_uuid;
  185. }
  186. $array['menu_items'][0]['menu_item_add_user'] = $_SESSION["username"];
  187. $array['menu_items'][0]['menu_item_add_date'] = 'now()';
  188. $database->app_name = 'menu';
  189. $database->app_uuid = 'f4b3b3d2-6287-489c-2a00-64529e46f2d7';
  190. $database->save($array);
  191. unset($array);
  192. }
  193. //update child menu items to protected true or false
  194. $sql = "update v_menu_items ";
  195. $sql .= "set menu_item_protected = :menu_item_protected ";
  196. $sql .= "where menu_item_parent_uuid = :menu_item_parent_uuid ";
  197. $parameters['menu_item_parent_uuid'] = $menu_item_uuid;
  198. $parameters['menu_item_protected'] = $menu_item_protected;
  199. $database->execute($sql, $parameters);
  200. unset($parameters);
  201. //add a group to the menu
  202. if (!empty($group_uuid_name) && permission_exists('menu_add')) {
  203. $group_data = explode('|', $group_uuid_name);
  204. $group_uuid = $group_data[0];
  205. $group_name = $group_data[1];
  206. //add the group to the menu
  207. if (is_uuid($menu_item_uuid)) {
  208. $menu_item_group_uuid = uuid();
  209. $array['menu_item_groups'][0]['menu_item_group_uuid'] = $menu_item_group_uuid;
  210. $array['menu_item_groups'][0]['menu_uuid'] = $menu_uuid;
  211. $array['menu_item_groups'][0]['menu_item_uuid'] = $menu_item_uuid;
  212. $array['menu_item_groups'][0]['group_name'] = $group_name;
  213. $array['menu_item_groups'][0]['group_uuid'] = $group_uuid;
  214. $database->app_name = 'menu';
  215. $database->app_uuid = 'f4b3b3d2-6287-489c-2a00-64529e46f2d7';
  216. $database->save($array);
  217. unset($array);
  218. }
  219. }
  220. //add the menu item label
  221. if (!empty($menu_item_title) && permission_exists('menu_add')) {
  222. $sql = "select count(*) from v_menu_languages ";
  223. $sql .= "where menu_item_uuid = :menu_item_uuid ";
  224. $sql .= "and menu_language = :menu_language ";
  225. $parameters['menu_item_uuid'] = $menu_item_uuid;
  226. $parameters['menu_language'] = $menu_language;
  227. $num_rows = $database->select($sql, $parameters, 'column');
  228. if ($num_rows == 0) {
  229. $array['menu_languages'][0]['menu_language_uuid'] = uuid();
  230. $array['menu_languages'][0]['menu_uuid'] = $menu_uuid;
  231. $array['menu_languages'][0]['menu_item_uuid'] = $menu_item_uuid;
  232. $array['menu_languages'][0]['menu_language'] = $menu_language;
  233. $array['menu_languages'][0]['menu_item_title'] = $menu_item_title;
  234. $database->app_name = 'menu';
  235. $database->app_uuid = 'f4b3b3d2-6287-489c-2a00-64529e46f2d7';
  236. $database->save($array);
  237. unset($array);
  238. }
  239. else {
  240. $sql = "update v_menu_languages set ";
  241. $sql .= "menu_item_title = :menu_item_title ";
  242. $sql .= "where menu_uuid = :menu_uuid ";
  243. $sql .= "and menu_item_uuid = :menu_item_uuid ";
  244. $sql .= "and menu_language = :menu_language ";
  245. $parameters['menu_item_title'] = $menu_item_title;
  246. $parameters['menu_uuid'] = $menu_uuid;
  247. $parameters['menu_item_uuid'] = $menu_item_uuid;
  248. $parameters['menu_language'] = $menu_language;
  249. $database->execute($sql, $parameters);
  250. }
  251. unset($sql, $parameters, $num_rows);
  252. }
  253. //set response message
  254. if ($action == "add") {
  255. message::add($text['message-add']);
  256. }
  257. if ($action == "update") {
  258. message::add($text['message-update']);
  259. }
  260. //redirect the user
  261. if (!empty($_REQUEST['submit']) && $_REQUEST['submit'] == $text['button-add']) {
  262. header("Location: menu_item_edit.php?id=".urlencode($menu_uuid)."&menu_item_uuid=".urlencode($menu_item_uuid)."&menu_uuid=".urlencode($menu_uuid));
  263. }
  264. else {
  265. header("Location: menu_edit.php?id=".urlencode($menu_uuid));
  266. }
  267. return;
  268. }
  269. }
  270. //pre-populate the form
  271. if (!empty($_GET["menu_item_uuid"]) && empty($_POST["persistformvar"])) {
  272. $menu_item_uuid = $_GET["menu_item_uuid"];
  273. $sql = "select * from v_menu_items ";
  274. $sql .= "where menu_uuid = :menu_uuid ";
  275. $sql .= "and menu_item_uuid = :menu_item_uuid ";
  276. $parameters['menu_uuid'] = $menu_uuid;
  277. $parameters['menu_item_uuid'] = $menu_item_uuid;
  278. $row = $database->select($sql, $parameters, 'row');
  279. if (is_array($row) && sizeof($row) != 0) {
  280. $menu_item_title = $row["menu_item_title"];
  281. $menu_item_link = $row["menu_item_link"];
  282. $menu_item_category = $row["menu_item_category"];
  283. $menu_item_icon = $row["menu_item_icon"];
  284. $menu_item_description = $row["menu_item_description"];
  285. $menu_item_protected = $row["menu_item_protected"];
  286. $menu_item_parent_uuid = $row["menu_item_parent_uuid"];
  287. $menu_item_order = $row["menu_item_order"];
  288. $menu_item_add_user = $row["menu_item_add_user"];
  289. $menu_item_add_date = $row["menu_item_add_date"];
  290. //$menu_item_del_user = $row["menu_item_del_user"];
  291. //$menu_item_del_date = $row["menu_item_del_date"];
  292. $menu_item_mod_user = $row["menu_item_mod_user"];
  293. $menu_item_mod_date = $row["menu_item_mod_date"];
  294. }
  295. unset($sql, $parameters, $row);
  296. }
  297. //get the the menu item parents
  298. $sql = "select * from v_menu_items ";
  299. $sql .= "where menu_uuid = :menu_uuid ";
  300. $sql .= "and menu_item_parent_uuid is null ";
  301. $sql .= "order by menu_item_order asc ";
  302. $parameters['menu_uuid'] = $menu_uuid;
  303. $menu_item_parents = $database->select($sql, $parameters, 'all');
  304. unset($sql, $parameters);
  305. //get the assigned groups
  306. $sql = "select ";
  307. $sql .= " mig.*, g.group_name, g.domain_uuid as group_domain_uuid ";
  308. $sql .= "from ";
  309. $sql .= " v_menu_item_groups as mig, ";
  310. $sql .= " v_groups as g ";
  311. $sql .= "where ";
  312. $sql .= " mig.group_uuid = g.group_uuid ";
  313. $sql .= " and mig.menu_uuid = :menu_uuid ";
  314. $sql .= " and mig.menu_item_uuid = :menu_item_uuid ";
  315. $sql .= "order by ";
  316. $sql .= " g.domain_uuid desc, ";
  317. $sql .= " g.group_name asc ";
  318. $parameters['menu_uuid'] = $menu_uuid;
  319. $parameters['menu_item_uuid'] = $menu_item_uuid;
  320. $menu_item_groups = $database->select($sql, $parameters, 'all');
  321. unset($sql, $parameters);
  322. //set the assigned_groups array
  323. $assigned_groups = array();
  324. if (!empty($menu_item_groups) && sizeof($menu_item_groups) != 0) {
  325. foreach ($menu_item_groups as $field) {
  326. if (!empty($field['group_name'])) {
  327. if (is_uuid($field['group_uuid'])) {
  328. $assigned_groups[] = $field['group_uuid'];
  329. }
  330. }
  331. }
  332. }
  333. //get the groups
  334. $sql = "select * from v_groups ";
  335. $sql .= "where (domain_uuid is null or domain_uuid = :domain_uuid) ";
  336. if (!empty($assigned_groups) && is_array($assigned_groups) && sizeof($assigned_groups) != 0) {
  337. $sql .= "and group_uuid not in ('".implode("','",$assigned_groups)."') ";
  338. }
  339. $sql .= "order by domain_uuid desc, group_name asc ";
  340. $parameters['domain_uuid'] = $_SESSION['domain_uuid'];
  341. $groups = $database->select($sql, $parameters, 'all');
  342. unset($sql, $sql_where, $parameters);
  343. //create token
  344. $object = new token;
  345. $token = $object->create($_SERVER['PHP_SELF']);
  346. //include the header
  347. $document['title'] = $text['title-menu_item'];
  348. require_once "resources/header.php";
  349. echo "<form name='frm' id='frm' method='post'>\n";
  350. echo "<div class='action_bar' id='action_bar'>\n";
  351. echo " <div class='heading'><b>".$text['header-menu_item']."</b></div>\n";
  352. echo " <div class='actions'>\n";
  353. echo button::create(['type'=>'button','label'=>$text['button-back'],'icon'=>$_SESSION['theme']['button_icon_back'],'id'=>'btn_back','style'=>'margin-right: 15px;','link'=>'menu_edit.php?id='.urlencode($menu_uuid)]);
  354. echo button::create(['type'=>'submit','label'=>$text['button-save'],'icon'=>$_SESSION['theme']['button_icon_save'],'id'=>'btn_save']);
  355. echo " </div>\n";
  356. echo " <div style='clear: both;'></div>\n";
  357. echo "</div>\n";
  358. echo "<div class='card'>\n";
  359. echo "<table width='100%' cellpadding='0' cellspacing='0'>\n";
  360. echo " <tr>";
  361. echo " <td width='30%' class='vncellreq'>".$text['label-title']."</td>";
  362. echo " <td width='70%' class='vtable'><input type='text' class='formfld' name='menu_item_title' value='".escape($menu_item_title)."'></td>";
  363. echo " </tr>";
  364. echo " <tr>";
  365. echo " <td class='vncell'>".$text['label-link']."</td>";
  366. echo " <td class='vtable'><input type='text' class='formfld' name='menu_item_link' value='".escape($menu_item_link)."'></td>";
  367. echo " </tr>";
  368. echo " <tr>";
  369. echo " <td class='vncell'>".$text['label-category']."</td>";
  370. echo " <td class='vtable'>";
  371. echo " <select name=\"menu_item_category\" class='formfld'>\n";
  372. if ($menu_item_category == "internal") { echo "<option value=\"internal\" selected>".$text['option-internal']."</option>\n"; } else { echo "<option value=\"internal\">".$text['option-internal']."</option>\n"; }
  373. if ($menu_item_category == "external") { echo "<option value=\"external\" selected>".$text['option-external']."</option>\n"; } else { echo "<option value=\"external\">".$text['option-external']."</option>\n"; }
  374. if ($menu_item_category == "email") { echo "<option value=\"email\" selected>".$text['option-email']."</option>\n"; } else { echo "<option value=\"email\">".$text['option-email']."</option>\n"; }
  375. echo " </select>";
  376. echo " </td>";
  377. echo " </tr>";
  378. echo " <tr>";
  379. echo " <td class='vncell'>".$text['label-icon']."</td>";
  380. echo " <td class='vtable' style='vertical-align: bottom;'>";
  381. if (file_exists($_SERVER["PROJECT_ROOT"].'/resources/fontawesome/fa_icons.php')) {
  382. include $_SERVER["PROJECT_ROOT"].'/resources/fontawesome/fa_icons.php';
  383. }
  384. if (!empty($font_awesome_icons) && is_array($font_awesome_icons)) {
  385. echo "<table cellpadding='0' cellspacing='0' border='0'>\n";
  386. echo " <tr>\n";
  387. echo " <td>\n";
  388. echo " <select class='formfld' name='menu_item_icon' id='selected_icon' onchange=\"$('#icons').slideUp(200); $('#icon_search').fadeOut(200, function() { $('#grid_icon').fadeIn(); });\">\n";
  389. echo " <option value=''></option>\n";
  390. foreach ($font_awesome_icons as $icon) {
  391. $selected = $menu_item_icon == implode(' ', $icon['classes']) ? "selected" : null;
  392. echo " <option value='".escape(implode(' ', $icon['classes']))."' ".$selected.">".escape($icon['label'])."</option>\n";
  393. }
  394. echo " </select>\n";
  395. echo " </td>\n";
  396. echo " <td style='padding: 0 0 0 5px;'>\n";
  397. 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>";
  398. 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";
  399. echo " </td>\n";
  400. echo " </tr>\n";
  401. echo "</table>\n";
  402. echo "<div id='icons' style='clear: both; display: none; margin-top: 8px; padding-top: 10px; color: #000; max-height: 400px; overflow: auto;'></div>";
  403. echo "<script>\n";
  404. //load icons by search
  405. echo "function load_icons(search) {\n";
  406. echo " xhttp = new XMLHttpRequest();\n";
  407. echo " xhttp.open('GET', '".PROJECT_PATH."/resources/fontawesome/fa_icons.php?output=icons' + (search ? '&search=' + search : ''), false);\n";
  408. echo " xhttp.send();\n";
  409. echo " document.getElementById('icons').innerHTML = xhttp.responseText;\n";
  410. echo "}\n";
  411. //delay kepress action for 1/2 second
  412. echo "var keypress_timer;\n";
  413. echo "function delay_submit(search) {\n";
  414. echo " clearTimeout(keypress_timer);\n";
  415. echo " keypress_timer = setTimeout(function(){\n";
  416. echo " load_icons(search);\n";
  417. echo " }, 500);\n";
  418. echo "}\n";
  419. echo "</script>\n";
  420. }
  421. else {
  422. echo " <input type='text' class='formfld' name='menu_item_icon' value='".escape($menu_item_icon)."'>";
  423. }
  424. echo " </td>";
  425. echo " </tr>";
  426. echo " <tr>";
  427. echo " <td class='vncell'>".$text['label-parent_menu']."</td>";
  428. echo " <td class='vtable'>";
  429. echo " <select name=\"menu_item_parent_uuid\" class='formfld'>\n";
  430. echo " <option value=\"\"></option>\n";
  431. foreach ($menu_item_parents as $field) {
  432. if ($field['menu_item_uuid'] == $menu_item_parent_uuid) {
  433. echo " <option value='".escape($field['menu_item_uuid'])."' selected>".escape($field['menu_item_title'])."</option>\n";
  434. }
  435. else {
  436. echo " <option value='".escape($field['menu_item_uuid'])."'>".escape($field['menu_item_title'])."</option>\n";
  437. }
  438. }
  439. echo " </select>";
  440. echo " </td>";
  441. echo " </tr>";
  442. echo " <tr>";
  443. echo " <td class='vncell' valign='top'>".$text['label-groups']."</td>";
  444. echo " <td class='vtable'>";
  445. if (!empty($menu_item_groups) && sizeof($menu_item_groups) != 0) {
  446. echo "<table cellpadding='0' cellspacing='0' border='0'>\n";
  447. foreach($menu_item_groups as $field) {
  448. if (!empty($field['group_name'])) {
  449. echo "<tr>\n";
  450. echo " <td class='vtable' style='white-space: nowrap; padding-right: 30px;' nowrap='nowrap'>";
  451. echo $field['group_name'].((!empty($field['group_domain_uuid'])) ? "@".$_SESSION['domains'][$field['group_domain_uuid']]['domain_name'] : null);
  452. echo " </td>\n";
  453. if (permission_exists('group_member_delete') || if_group("superadmin")) {
  454. echo " <td class='list_control_icons' style='width: 25px;'>";
  455. echo "<a href='menu_item_edit.php?id=".escape($field['menu_uuid'])."&menu_item_group_uuid=".escape($field['menu_item_group_uuid'])."&menu_item_uuid=".escape($menu_item_uuid)."&a=delete' alt='".$text['button-delete']."' onclick=\"return confirm('".$text['confirm-delete']."')\">".$v_link_label_delete."</a>";
  456. echo " </td>";
  457. }
  458. echo "</tr>\n";
  459. }
  460. }
  461. echo "</table>\n";
  462. echo "<br />\n";
  463. }
  464. if (!empty($groups)) {
  465. echo "<select name='group_uuid_name' class='formfld' style='width: auto; margin-right: 3px;'>\n";
  466. echo " <option value=''></option>\n";
  467. foreach($groups as $row) {
  468. if ($row['group_level'] <= $_SESSION['user']['group_level']) {
  469. if (!is_array($assigned_groups) || !in_array($row["group_uuid"], $assigned_groups)) {
  470. echo " <option value='".$row['group_uuid']."|".$row['group_name']."'>".$row['group_name'].((!empty($row['domain_uuid'])) ? "@".$_SESSION['domains'][$row['domain_uuid']]['domain_name'] : null)."</option>\n";
  471. }
  472. }
  473. }
  474. echo "</select>";
  475. echo button::create(['type'=>'submit','label'=>$text['button-add'],'icon'=>$_SESSION['theme']['button_icon_add'],'collapse'=>'never']);
  476. }
  477. echo " </td>";
  478. echo " </tr>";
  479. echo "<tr>\n";
  480. echo "<td class='vncell' valign='top' align='left' nowrap>\n";
  481. echo " ".$text['label-protected']."\n";
  482. echo "</td>\n";
  483. echo "<td class='vtable' align='left'>\n";
  484. echo " <select class='formfld' name='menu_item_protected'>\n";
  485. if ($menu_item_protected == "false") {
  486. echo " <option value='false' selected='selected' >".$text['label-false']."</option>\n";
  487. }
  488. else {
  489. echo " <option value='false'>".$text['label-false']."</option>\n";
  490. }
  491. if ($menu_item_protected == "true") {
  492. echo " <option value='true' selected='selected' >".$text['label-true']."</option>\n";
  493. }
  494. else {
  495. echo " <option value='true'>".$text['label-true']."</option>\n";
  496. }
  497. echo " </select><br />\n";
  498. echo $text['description-protected']."<br />\n";
  499. echo "\n";
  500. echo "</td>\n";
  501. echo "</tr>\n";
  502. if (!empty($action) && $action == "update") {
  503. if (empty($menu_item_parent_uuid)) {
  504. echo " <tr>";
  505. echo " <td class='vncell'>".$text['label-menu_order']."</td>";
  506. echo " <td class='vtable'><input type='text' class='formfld' name='menu_item_order' value='".escape($menu_item_order)."'></td>";
  507. echo " </tr>";
  508. }
  509. }
  510. echo " <tr>";
  511. echo " <td class='vncell'>".$text['label-description']."</td>";
  512. echo " <td class='vtable'><input type='text' class='formfld' name='menu_item_description' value='".escape($menu_item_description)."'></td>";
  513. echo " </tr>";
  514. echo "</table>";
  515. echo "</div>";
  516. echo "<br><br>";
  517. if (permission_exists('menu_add') || permission_exists('menu_edit')) {
  518. if ($action == "update") {
  519. echo "<input type='hidden' name='menu_item_uuid' value='".escape($menu_item_uuid)."'>";
  520. }
  521. echo "<input type='hidden' name='menu_uuid' value='".escape($menu_uuid)."'>";
  522. echo "<input type='hidden' name='menu_item_uuid' value='".escape($menu_item_uuid)."'>";
  523. echo "<input type='hidden' name='".$token['name']."' value='".$token['hash']."'>\n";
  524. }
  525. echo "</form>";
  526. //include the footer
  527. require_once "resources/footer.php";
  528. ?>