<?php /** * Menus * * @package MyAAC * @author Slawkens <slawkens@gmail.com> * @copyright 2019 MyAAC * @link https://my-aac.org */ defined('MYAAC') or die('Direct access not allowed!'); $title = 'Menus'; if (!hasFlag(FLAG_CONTENT_MENUS) && !superAdmin()) { echo 'Access denied.'; return; } if (isset($_REQUEST['template'])) { $template = $_REQUEST['template']; if (isset($_REQUEST['menu'])) { $post_menu = $_REQUEST['menu']; $post_menu_link = $_REQUEST['menu_link']; $post_menu_blank = $_REQUEST['menu_blank']; $post_menu_color = $_REQUEST['menu_color']; if (count($post_menu) != count($post_menu_link)) { echo 'Menu count is not equal menu links. Something went wrong when sending form.'; return; } $db->query('DELETE FROM `' . TABLE_PREFIX . 'menu` WHERE `template` = ' . $db->quote($template)); foreach ($post_menu as $category => $menus) { foreach ($menus as $i => $menu) { if (empty($menu)) // don't save empty menu item continue; try { $db->insert(TABLE_PREFIX . 'menu', array('template' => $template, 'name' => $menu, 'link' => $post_menu_link[$category][$i], 'blank' => $post_menu_blank[$category][$i] == 'on' ? 1 : 0, 'color' => str_replace('#', '', $post_menu_color[$category][$i]), 'category' => $category, 'ordering' => $i)); } catch (PDOException $error) { warning('Error while adding menu item (' . $menu . '): ' . $error->getMessage()); } } } $cache = Cache::getInstance(); if ($cache->enabled()) { $cache->delete('template_menus'); } success('Saved at ' . date('H:i')); } $file = TEMPLATES . $template . '/config.php'; if (file_exists($file)) { require_once $file; } else { echo 'Cannot find template config.php file.'; return; } if (!isset($config['menu_categories'])) { echo "No menu categories set in template config.php.<br/>This template doesn't support dynamic menus."; return; } echo 'Hint: You can drag menu items.<br/> Hint: Add links to external sites using: <b>http://</b> or <b>https://</b> prefix.<br/> Not all templates support blank and colorful links.<br/><br/> <div class="row">'; $menus = array(); $menus_db = $db->query('SELECT `name`, `link`, `blank`, `color`, `category`, `ordering` FROM `' . TABLE_PREFIX . 'menu` WHERE `enabled` = 1 AND `template` = ' . $db->quote($template) . ' ORDER BY `ordering` ASC;')->fetchAll(); foreach ($menus_db as $menu) { $menus[$menu['category']][] = array('name' => $menu['name'], 'link' => $menu['link'], 'blank' => $menu['blank'], 'color' => $menu['color'], 'ordering' => $menu['ordering']); } $last_id = array(); echo '<form method="post" id="menus-form" action="?p=menus">'; echo '<input type="hidden" name="template" value="' . $template . '"/>'; foreach ($config['menu_categories'] as $id => $cat) { echo ' <div class="col-md-12 col-lg-6"> <div class="box box-danger"> <div class="box-header with-border"> <h3 class="box-title">' . $cat['name'] . ' <img class="add-button" id="add-button-' . $id . '" src="' . BASE_URL . 'images/plus.png" width="16" height="16"/></h3> </div> <div class="box-body">'; echo '<ul class="sortable" id="sortable-' . $id . '">'; if (isset($menus[$id])) { $i = 0; foreach ($menus[$id] as $menu) { echo '<li class="ui-state-default" id="list-' . $id . '-' . $i . '"><label>Name:</label><input type="text" name="menu[' . $id . '][]" value="' . $menu['name'] . '"/> <label>Link:</label><input type="text" name="menu_link[' . $id . '][]" value="' . $menu['link'] . '"/> <input type="hidden" name="menu_blank[' . $id . '][]" value="0" /> <label><input class="blank-checkbox" type="checkbox" ' . ($menu['blank'] == 1 ? 'checked' : '') . '/><span title="Open in New Window">Open in New Window</span></label> <input class="color-picker" type="text" name="menu_color[' . $id . '][]" value="#' . $menu['color'] . '" /> <a class="remove-button" id="remove-button-' . $id . '-' . $i . '"><img src="' . BASE_URL . 'images/del.png"/></a></li>'; $i++; $last_id[$id] = $i; } } echo '</ul>'; echo ' </div> </div> </div> '; } echo ' </div><div class="row"><div class="col-md-6">'; echo '<input type="submit" class="btn btn-info" value="Save">'; echo '<input type="button" class="btn btn-default pull-right" value="Cancel" onclick="window.location = \'' . ADMIN_URL . '?p=menus&template=' . $template . '\';">'; echo '</div></div>'; echo '</form>'; $twig->display('admin.menus.js.html.twig', array( 'menus' => $menus, 'last_id' => $last_id )); ?> <?php } else { $templates = $db->query('SELECT `template` FROM `' . TABLE_PREFIX . 'menu` GROUP BY `template`;')->fetchAll(); foreach ($templates as $key => $value) { $file = TEMPLATES . $value['template'] . '/config.php'; if (!file_exists($file)) { unset($templates[$key]); } } $twig->display('admin.menus.form.html.twig', array( 'templates' => $templates )); }