From e3ae8cecc89b29b107e5795c17c449e52f6de6ff Mon Sep 17 00:00:00 2001 From: Awilum Date: Tue, 2 Oct 2012 21:25:22 +0300 Subject: [PATCH] Improved Menu Plugin #11 --- plugins/box/menu/languages/en.lang.php | 4 +- plugins/box/menu/languages/ru.lang.php | 6 +- plugins/box/menu/menu.admin.php | 105 +++++++++++++----- plugins/box/menu/menu.plugin.php | 10 +- plugins/box/menu/views/backend/add.view.php | 39 +++++-- plugins/box/menu/views/backend/edit.view.php | 40 +++++-- plugins/box/menu/views/backend/index.view.php | 29 ++++- 7 files changed, 181 insertions(+), 52 deletions(-) diff --git a/plugins/box/menu/languages/en.lang.php b/plugins/box/menu/languages/en.lang.php index 92397ec..f39768b 100644 --- a/plugins/box/menu/languages/en.lang.php +++ b/plugins/box/menu/languages/en.lang.php @@ -15,10 +15,12 @@ 'Item order' => 'Item order', 'Item target' => 'Item target', 'Item link' => 'Item link', + 'Item category' => 'Item category', 'Save' => 'Save', 'Edit item' => 'Edit item', 'Delete item :name' => 'Delete item :name', - 'Add page' => 'Add page', 'Select page' => 'Select page', + 'Category' => 'Category', + 'Select category' => 'Select category', ) ); \ No newline at end of file diff --git a/plugins/box/menu/languages/ru.lang.php b/plugins/box/menu/languages/ru.lang.php index 565651f..d38d1c4 100644 --- a/plugins/box/menu/languages/ru.lang.php +++ b/plugins/box/menu/languages/ru.lang.php @@ -15,10 +15,12 @@ 'Item order' => 'Порядок', 'Item target' => 'Цель', 'Item link' => 'Ссылка', + 'Item category' => 'Категория', 'Save' => 'Сохранить', 'Edit item' => 'Редактирование пункта меню', - 'Delete item :name' => 'Удалить пункт меню :name', - 'Add page' => 'Добавить страницу', + 'Delete item :name' => 'Удалить пункт меню :name', 'Select page' => 'Выбрать страницу', + 'Category' => 'Категория', + 'Select category' => 'Выбрать категорию', ) ); \ No newline at end of file diff --git a/plugins/box/menu/menu.admin.php b/plugins/box/menu/menu.admin.php index efa28b4..0898ec6 100644 --- a/plugins/box/menu/menu.admin.php +++ b/plugins/box/menu/menu.admin.php @@ -3,26 +3,45 @@ // Add plugin navigation link Navigation::add(__('Menu', 'menu'), 'content', 'menu', 3); - Action::add('admin_header', 'menuAdminHeaders'); + Action::add('admin_header', 'MenuAdmin::headers'); - function menuAdminHeaders() { - echo (" - - "); - } class MenuAdmin extends Backend { + + + /** + * Menu table + * + * @var object + */ + public static $menu = null; + + + /** + * Headers + */ + public static function headers() { + echo (" + + "); + } + public static function main() { // Get menu table - $menu = new Table('menu'); + MenuAdmin::$menu = new Table('menu'); // Get pages table $pages = new Table('pages'); @@ -50,12 +69,13 @@ case "edit": // Select item - $item = $menu->select('[id="'.Request::get('item_id').'"]', null); + $item = MenuAdmin::$menu->select('[id="'.Request::get('item_id').'"]', null); - $menu_item_name = $item['name']; - $menu_item_link = $item['link']; - $menu_item_target = $item['target']; - $menu_item_order = $item['order']; + $menu_item_name = $item['name']; + $menu_item_link = $item['link']; + $menu_item_category = $item['category']; + $menu_item_target = $item['target']; + $menu_item_order = $item['order']; $errors = array(); @@ -68,6 +88,7 @@ if (Request::post('menu_item_name')) $menu_item_name = Request::post('menu_item_name'); else $menu_item_name = $item['name']; if (Request::post('menu_item_link')) $menu_item_link = Request::post('menu_item_link'); else $menu_item_link = $item['link']; + if (Request::post('menu_item_category')) $menu_item_category = Request::post('menu_item_category'); else $menu_item_category = $item['category']; if (Request::post('menu_item_target')) $menu_item_target = Request::post('menu_item_target'); else $menu_item_target = $item['target']; if (Request::post('menu_item_order')) $menu_item_order = Request::post('menu_item_order'); else $menu_item_order = $item['order']; @@ -76,10 +97,11 @@ // Update menu item if (count($errors) == 0) { - $menu->update(Request::get('item_id'), array('name' => Request::post('menu_item_name'), - 'link' => Request::post('menu_item_link'), - 'target' => Request::post('menu_item_target'), - 'order' => Request::post('menu_item_order'))); + MenuAdmin::$menu->update(Request::get('item_id'), array('name' => Request::post('menu_item_name'), + 'link' => Request::post('menu_item_link'), + 'category' => Security::safeName(Request::post('menu_item_category'), '-', true), + 'target' => Request::post('menu_item_target'), + 'order' => Request::post('menu_item_order'))); Request::redirect('index.php?id=menu'); } @@ -92,11 +114,13 @@ View::factory('box/menu/views/backend/edit') ->assign('menu_item_name', $menu_item_name) ->assign('menu_item_link', $menu_item_link) + ->assign('menu_item_category', $menu_item_category) ->assign('menu_item_target', $menu_item_target) ->assign('menu_item_order', $menu_item_order) ->assign('menu_item_target_array', $menu_item_target_array) ->assign('menu_item_order_array', $menu_item_order_array) ->assign('errors', $errors) + ->assign('categories', MenuAdmin::getCategories()) ->assign('pages_list', $pages->select('[slug!="error404" and parent=""]')) ->assign('components_list', MenuAdmin::getComponents()) ->display(); @@ -110,6 +134,7 @@ $menu_item_name = ''; $menu_item_link = ''; + $menu_item_category = ''; $menu_item_target = ''; $menu_item_order = ''; $errors = array(); @@ -123,6 +148,7 @@ if (Request::post('menu_item_name')) $menu_item_name = Request::post('menu_item_name'); else $menu_item_name = ''; if (Request::post('menu_item_link')) $menu_item_link = Request::post('menu_item_link'); else $menu_item_link = ''; + if (Request::post('menu_item_category')) $menu_item_category = Request::post('menu_item_category'); else $menu_item_category = ''; if (Request::post('menu_item_target')) $menu_item_target = Request::post('menu_item_target'); else $menu_item_target = ''; if (Request::post('menu_item_order')) $menu_item_order = Request::post('menu_item_order'); else $menu_item_order = ''; @@ -131,10 +157,11 @@ // Insert new menu item if (count($errors) == 0) { - $menu->insert(array('name' => Request::post('menu_item_name'), - 'link' => Request::post('menu_item_link'), - 'target' => Request::post('menu_item_target'), - 'order' => Request::post('menu_item_order'))); + MenuAdmin::$menu->insert(array('name' => Request::post('menu_item_name'), + 'link' => Request::post('menu_item_link'), + 'category' => Security::safeName(Request::post('menu_item_category'), '-', true), + 'target' => Request::post('menu_item_target'), + 'order' => Request::post('menu_item_order'))); Request::redirect('index.php?id=menu'); } @@ -142,16 +169,18 @@ } else { die('csrf detected!'); } } - + // Display view View::factory('box/menu/views/backend/add') ->assign('menu_item_name', $menu_item_name) ->assign('menu_item_link', $menu_item_link) + ->assign('menu_item_category', $menu_item_category) ->assign('menu_item_target', $menu_item_target) ->assign('menu_item_order', $menu_item_order) ->assign('menu_item_target_array', $menu_item_target_array) ->assign('menu_item_order_array', $menu_item_order_array) ->assign('errors', $errors) + ->assign('categories', MenuAdmin::getCategories()) ->assign('pages_list', $pages->select('[slug!="error404" and parent=""]')) ->assign('components_list', MenuAdmin::getComponents()) ->display(); @@ -163,18 +192,36 @@ // Delete menu item if (Request::get('delete_item')) { - $menu->delete((int)Request::get('delete_item')); + MenuAdmin::$menu->delete((int)Request::get('delete_item')); } // Display view View::factory('box/menu/views/backend/index') - ->assign('items', $menu->select(null, 'all', null, array('id', 'name', 'link', 'target', 'order'), 'order', 'ASC')) + ->assign('categories', MenuAdmin::getCategories()) + ->assign('menu', MenuAdmin::$menu) ->display(); } } + + /** + * Get categories + */ + public static function getCategories() { + + $categories = array(); + + $_categories = MenuAdmin::$menu->select(null, 'all', null, array('category')); + + foreach($_categories as $category) { + $categories[] = $category['category']; + } + + return array_unique($categories); + } + /** * Get components diff --git a/plugins/box/menu/menu.plugin.php b/plugins/box/menu/menu.plugin.php index 83b72d6..335bb18 100644 --- a/plugins/box/menu/menu.plugin.php +++ b/plugins/box/menu/menu.plugin.php @@ -33,14 +33,20 @@ class Menu { - public static function get() { + + /** + * Get menu + * + * @param string $category Category name + */ + public static function get($category = '') { // Get menu table $menu = new Table('menu'); // Display view View::factory('box/menu/views/frontend/index') - ->assign('items', $menu->select(null, 'all', null, array('id', 'name', 'link', 'target', 'order'), 'order', 'ASC')) + ->assign('items', $menu->select('[category="'.$category.'"]', 'all', null, array('id', 'name', 'link', 'target', 'order', 'category'), 'order', 'ASC')) ->assign('uri', Uri::segments()) ->assign('defpage', Option::get('defaultpage')) ->display(); diff --git a/plugins/box/menu/views/backend/add.view.php b/plugins/box/menu/views/backend/add.view.php index fdd499b..51bc05a 100644 --- a/plugins/box/menu/views/backend/add.view.php +++ b/plugins/box/menu/views/backend/add.view.php @@ -7,18 +7,25 @@ -

+ / +

+ 'span6'.$error_class)); + echo Form::input('menu_item_name', $menu_item_name, array('class' => 'span3'.$error_class)); if (isset($errors['menu_item_name_empty'])) echo Html::nbsp(4).''.$errors['menu_item_name_empty'].''; echo ( Form::label('menu_item_link', __('Item link', 'menu')). - Form::input('menu_item_link', $menu_item_link, array('class' => 'span6')) + Form::input('menu_item_link', $menu_item_link, array('class' => 'span3')) + ); + + echo ( + Form::label('menu_item_category', __('Item category', 'menu')). + Form::input('menu_item_category', $menu_item_category, array('class' => 'span3')) ); ?> @@ -26,13 +33,13 @@ echo ( Html::br(). Form::label('menu_item_target', __('Item target', 'menu')). - Form::select('menu_item_target', $menu_item_target_array, $menu_item_target) + Form::select('menu_item_target', $menu_item_target_array, $menu_item_target, array('class' => 'span3')) ); echo ( Html::br(). Form::label('menu_item_order', __('Item order', 'menu')). - Form::select('menu_item_order', $menu_item_order_array, $menu_item_order) + Form::select('menu_item_order', $menu_item_order_array, $menu_item_order, array('class' => 'span3')) ); echo ( @@ -42,7 +49,7 @@ ); ?> -