function functions_form($item) { global $user; global $DB; global $website; global $layout; $navibars = new navibars(); $naviforms = new naviforms(); if (empty($item->id)) { $navibars->title(t(244, 'Menus') . ' / ' . t(38, 'Create')); } else { $navibars->title(t(244, 'Menus') . ' / ' . t(170, 'Edit') . ' [' . $item->id . ']'); } if (empty($item->id)) { $navibars->add_actions(array('<a href="#" onclick="navigate_tabform_submit(1);"><img height="16" align="absmiddle" width="16" src="img/icons/silk/accept.png"> ' . t(34, 'Save') . '</a>')); } else { $navibars->add_actions(array('<a href="#" onclick="navigate_tabform_submit(1);"><img height="16" align="absmiddle" width="16" src="img/icons/silk/accept.png"> ' . t(34, 'Save') . '</a>', '<a href="#" onclick="navigate_delete_dialog();"><img height="16" align="absmiddle" width="16" src="img/icons/silk/cancel.png"> ' . t(35, 'Delete') . '</a>')); $layout->add_script(' function navigate_delete_dialog() { navigate_confirmation_dialog( function() { window.location.href = "?fid=menus&act=delete&id=' . $item->id . '"; }, null, null, "' . t(35, 'Delete') . '" ); } '); } $navibars->add_actions(array(!empty($item->id) ? '<a href="?fid=menus&act=2"><img height="16" align="absmiddle" width="16" src="img/icons/silk/add.png"> ' . t(38, 'Create') . '</a>' : '', '<a href="?fid=menus&act=0"><img height="16" align="absmiddle" width="16" src="img/icons/silk/application_view_list.png"> ' . t(39, 'List') . '</a>', 'search_form')); $navibars->form(); $navibars->add_tab(t(43, "Main")); $navibars->add_tab_content($naviforms->hidden('form-sent', 'true')); $navibars->add_tab_content($naviforms->hidden('id', $item->id)); $navibars->add_tab_content_row(array('<label>ID</label>', '<span>' . (!empty($item->id) ? $item->id : t(52, '(new)')) . '</span>')); $navibars->add_tab_content_row(array('<label>' . t(237, 'Code') . '</label>', $naviforms->textfield('codename', $item->codename))); $navibars->add_tab_content_row(array('<label>' . t(242, 'Icon') . '</label>', $naviforms->textfield('icon', $item->icon), '<img src="' . NAVIGATE_URL . '/' . $item->icon . '" align="absmiddle" />')); $navibars->add_tab_content_row(array('<label>#' . t(67, 'Title') . ' (lid)</label>', $naviforms->textfield('lid', $item->lid), empty($item->lid) ? '' : '<em>' . $item->lid . ': <strong>' . t($item->lid, $item->lid) . '</strong></em>')); $navibars->add_tab_content_row(array('<label>' . t(245, 'Notes') . '</label>', $naviforms->textarea('notes', $item->notes))); $navibars->add_tab_content_row(array('<label>' . t(65, 'Enabled') . '</label>', $naviforms->checkbox('enabled', $item->enabled))); $navibars->add_tab(t(200, "Options")); $functions = nv_function::load_all_functions(); $func_cats = array_unique($DB->result('category')); sort($func_cats); $sortable_assigned = array(); $sortable_unassigned = array(); $sortable_assigned[] = '<ul id="sortable_assigned" class="connectedSortable">'; $sortable_unassigned[] = '<ul id="sortable_unassigned" class="connectedSortable">'; if (empty($item->functions)) { $item->functions = array(); } // already included menus on the profile foreach ($item->functions as $f) { foreach ($functions as $function) { if ($function->id == $f) { if ($function->enabled == '1') { $sortable_assigned[] = '<li class="ui-state-highlight" value="' . $function->id . '" category="' . $function->category . '"><img src="' . NAVIGATE_URL . '/' . $function->icon . '" align="absmiddle" /> ' . t($function->lid, $function->lid) . '</li>'; } else { $sortable_assigned[] = '<li class="ui-state-highlight ui-state-disabled" value="' . $function->id . '" category="' . $function->category . '"><img src="' . NAVIGATE_URL . '/' . $function->icon . '" align="absmiddle" /> ' . t($function->lid, $function->lid) . '</li>'; } } } } // the other menus not included on the profile foreach ($functions as $function) { if (!in_array($function->id, $item->functions)) { if ($function->enabled == '1') { $sortable_unassigned[] = '<li class="ui-state-default" value="' . $function->id . '" category="' . $function->category . '"><img src="' . NAVIGATE_URL . '/' . $function->icon . '" align="absmiddle" /> ' . t($function->lid, $function->lid) . '</li>'; } else { $sortable_unassigned[] = '<li class="ui-state-default ui-state-disabled" value="' . $function->id . '" category="' . $function->category . '"><img src="' . NAVIGATE_URL . '/' . $function->icon . '" align="absmiddle" /> ' . t($function->lid, $function->lid) . '</li>'; } } } $sortable_assigned[] = '</ul>'; $sortable_unassigned[] = '</ul>'; //$navibars->add_tab_content('<pre>'.print_r($item->menus, true).'</pre>'); // margin-top: 12px; margin-left: 5px; float: left; // position: absolute; margin-left: 483px; margin-top: -9px; width: 291px; height: 20px; $navibars->add_tab_content_row(array('<label>' . t(78, 'Category') . '</label>', $naviforms->selectfield('menus_functions_category_select', $func_cats, $func_cats, 'web', "navigate_menus_change_functions_category();", false))); $navibars->add_tab_content($naviforms->hidden("menu-functions", implode('#', $item->functions))); $navibars->add_tab_content_row(array('<label>' . t(240, 'Functions') . '</label>', implode("\n", $sortable_assigned), implode("\n", $sortable_unassigned))); $layout->add_script(' $("#menus_functions_category_select").css({ "width": "300px", "margin-left": "303px" }); $("#sortable_assigned").sortable({ connectWith: ".connectedSortable", receive: function(event, ui) { $(ui.item).addClass("ui-state-highlight"); $(ui.item).removeClass("ui-state-default"); }, update: function() { $("#menu-functions").val(""); $("#sortable_assigned li").each(function() { $("#menu-functions").val($("#menu-functions").val() + $(this).attr("value") + "#"); }); } }).disableSelection(); $("#sortable_unassigned").sortable({ connectWith: ".connectedSortable", receive: function(event, ui) { $(ui.item).addClass("ui-state-default"); $(ui.item).removeClass("ui-state-highlight"); } }).disableSelection(); function navigate_menus_change_functions_category() { var cat = $("#menus_functions_category_select").val(); $("#sortable_unassigned li").each(function() { if($(this).attr("category")==cat) $(this).show(); else $(this).hide(); }); } navigate_menus_change_functions_category(); '); return $navibars->generate(); }
function run() { global $user; global $layout; global $DB; $out = ''; $item = new nv_function(); switch ($_REQUEST['act']) { case 1: // json data retrieval & operations switch ($_REQUEST['oper']) { case 'del': // remove rows $ids = $_REQUEST['ids']; foreach ($ids as $id) { $item->load($id); $item->delete(); } echo json_encode(true); break; default: // list or search $page = intval($_REQUEST['page']); $max = intval($_REQUEST['rows']); $offset = ($page - 1) * $max; $orderby = $_REQUEST['sidx'] . ' ' . $_REQUEST['sord']; $where = " 1=1 "; if ($_REQUEST['_search'] == 'true' || isset($_REQUEST['quicksearch'])) { if (isset($_REQUEST['quicksearch'])) { $where .= $item->quicksearch($_REQUEST['quicksearch']); } else { if (isset($_REQUEST['filters'])) { $where .= navitable::jqgridsearch($_REQUEST['filters']); } else { // single search $where .= ' AND ' . navitable::jqgridcompare($_REQUEST['searchField'], $_REQUEST['searchOper'], $_REQUEST['searchString']); } } } $DB->queryLimit('id,lid,category,codename,icon,enabled', 'nv_functions', $where, $orderby, $offset, $max); $dataset = $DB->result(); $total = $DB->foundRows(); //echo $DB->get_last_error(); $out = array(); for ($i = 0; $i < count($dataset); $i++) { $out[$i] = array(0 => $dataset[$i]['id'], 1 => $dataset[$i]['category'], 2 => $dataset[$i]['codename'], 3 => '<img src="' . NAVIGATE_URL . '/' . $dataset[$i]['icon'] . '" />', 4 => '[' . $dataset[$i]['lid'] . '] ' . t($dataset[$i]['lid'], $dataset[$i]['lid']), 5 => $dataset[$i]['enabled'] == 1 ? '<img src="img/icons/silk/accept.png" />' : '<img src="img/icons/silk/cancel.png" />'); } navitable::jqgridJson($out, $page, $offset, $max, $total); break; } session_write_close(); exit; break; case 2: // edit/new form if (!empty($_REQUEST['id'])) { $item->load(intval($_REQUEST['id'])); } if (isset($_REQUEST['form-sent'])) { $item->load_from_post(); try { $item->save(); $layout->navigate_notification(t(53, "Data saved successfully."), false, false, 'fa fa-check'); } catch (Exception $e) { $layout->navigate_notification($e->getMessage(), true, true); } } $out = functions_form($item); break; case 4: // remove if (!empty($_REQUEST['id'])) { $item->load(intval($_REQUEST['id'])); if ($item->delete() > 0) { $layout->navigate_notification(t(55, 'Item removed successfully.'), false); $out = functions_list(); } else { $layout->navigate_notification(t(56, 'Unexpected error.'), false); $out = functions_form($item); } } break; case 0: // list / search result // list / search result default: $out = functions_list(); break; } return $out; }