* @copyright: Copyright (c) 2010, Bunzia Alexander * @version: 1.0 * @license: http://www.gnu.org/copyleft/gpl.html GNU/GPL * @package: HiLo CMS */ class admin_category{ private $error = false; private $act = 'index'; private $JsHttpRequest = false; public function __construct(){ global $MAIN_PAGE; define('M_PATH',MAIN_SOURCE_PATH.'/modules/'.$MAIN_PAGE -> dirname() ); define('M_URL',MAIN_SOURCE_URL.'/modules/'.$MAIN_PAGE -> dirname() ); define('A_CHARSET', $MAIN_PAGE -> charset() ); include_once(M_PATH.'/inc/url.php'); //include_once(MAIN_SOURCE_PATH.'/inc/class.ns_tree.php'); include_once(M_PATH.'/inc/class.category.php'); include_once(M_PATH.'/inc/class.modules.php'); include_once(MAIN_SOURCE_PATH.'/modules/admin/lang/'.MAIN_LANG.'/lang.php'); include_once(MAIN_SOURCE_PATH.'/inc/class.html.php'); include(MAIN_SOURCE_PATH.'/ext/ajax/JsHttpRequest.php'); $this -> JsHttpRequest = new JsHttpRequest( A_CHARSET ); $this -> act = !empty($_REQUEST['act']) ? $_REQUEST['act'] : $this -> act; $GLOBALS['_RESULT']['id_request'] = $_REQUEST['id_request']; } public function get(){ //sleep(2); $func = $this -> act; if ( !method_exists($this ,$func) ){ sys_error(ERROR_404); } return $this -> $func(); } // главная, формирует список категорий private function index(){ $t = new PHPTAL( M_PATH.'/tmpl/control_category/main.html' ); $c = new ns_tree_q( MAIN_CATEGORY_TBL,'c'); $c -> where_more('c_level',0); $c -> order_left('ASC'); $c -> get('c.*',false); $blogs= array(); while( $row = $c -> row() ){ if ( $row['c_level']>1 ){ $row['c_name']='---'.$row['c_name']; } $blogs[]=($row); } $t -> rows = $blogs; $t -> ADMIN_URL = sys_url(URL_ADMIN); upload_img::include_files(); return $t -> execute(); } /* AJAX */ // перезагружаем таблицу со списком шаблонов private function ajax_reload(){ sys_block_disable(); // макрос таблицы $t = new PHPTAL( M_PATH.'/tmpl/control_category/inc/row.html' ); // выполнять макрос $t -> execute = true; // выбираем $c = new ns_tree_q( MAIN_CATEGORY_TBL,'c'); $c -> where_more('c_level',0); $c -> order_left('ASC'); $c -> get('c.*',false); $blogs= array(); while( $row = $c -> row() ){ if ( $row['c_level']>1 ){ $row['c_name']='---'.$row['c_name']; } $blogs[]=($row); } $t -> rows = $blogs; $GLOBALS['_RESULT']['content'] = $t -> execute(); exit(); } // удаляем модуль $_REQUEST['id'] private function ajax_delete(){ sys_block_disable(); $m = category::load_id($_REQUEST['id'],MAIN_CATEGORY_TBL,'c'); if ( false===$m ){ die( A_EMPTY_ID ); } $m -> delete(); exit(); } // форма редактирвоания странички $_REQUEST['id'] private function ajax_edit(){ sys_block_disable(); //include_once(M_PATH.'/inc/class.modules.php'); $row = array(); // получаем из базы страницу $_REQUEST['id'] if ( !empty($_REQUEST['id']) ){ $c = new category_q( MAIN_CATEGORY_TBL,'c'); $c -> where_id($_REQUEST['id']); if ( !$c -> get('*, c.c_image as upl_img',false) ){ die( $c -> get_error() ); } $row = $c -> row(); } // формируем списки категорий $s = new select_box(); $s -> empty_record(true,1,M_ADMIN_IN_ROOT); $s -> selected_id( $row['c_parent_id'] ); $c = new category_q( MAIN_CATEGORY_TBL,'c'); $c -> where_level(1); $c -> order_left('ASC'); $c -> get('c.c_id,c.c_name',false); while( $c_row = $c -> row() ){ $s -> set($c_row['c_id'],$c_row['c_name']); } $row['cid_list'] = $s -> get(); // формируем страницу $t = new PHPTAL( M_PATH.'/tmpl/control_category/edit.html' ); $t -> row = ($row ); $GLOBALS['_RESULT']['content'] = $t -> execute(); $GLOBALS['_RESULT']['title'] = M_ADMIN_CATEGORY_TITLE; exit(); } // сохранение формы редактирования странички $_REQUEST['id'] private function ajax_save(){ sys_block_disable(); // загружаем или создаём объкт для работы с таблицей категорий $p = category::load_id($_POST['id'],MAIN_CATEGORY_TBL,'c'); if ( false===$p ){ $p = category::create(MAIN_CATEGORY_TBL,'c' ); $p -> set('c_alias',$_POST['c_name']); } // заносим обновлённые поля $p -> set('c_name',$_POST['c_name']); $p -> set('c_parent_id',$_POST['c_parent_id']); $p -> set('c_image',$_POST['c_image']); $p -> set('c_desc',$_POST['c_desc']); // обвноялем или добавляем новую запись if ( empty($_POST['id']) ){ $id = $p -> insert(); }else{ $id = $p -> update(); } if ( false===$id ){ echo $p -> error(); exit(); } $GLOBALS['_RESULT']['msg'] = 'Изменения сохранены'; exit(); } private function ajax_up(){ sys_block_disable(); // получим данные id на который кликнули $m = new category_q( MAIN_CATEGORY_TBL,'c'); //$m = new menu_q('n'); $m -> where_id($_REQUEST['id']); $m -> get('c_left,c_right,c_level'); list($c_left,$c_right,$c_level) = $m -> row(); // получим данные id который находится выше $m = new category_q( MAIN_CATEGORY_TBL,'c'); //$m = new menu_q('n'); // $m -> set_debug(1); $m -> where_less('c_left',$c_left); $m -> where_less('c_right',$c_right); $m -> where_level($c_level); $m -> set_page(1); $m -> set_count_rows(1); $m -> order_left('DESC'); $m -> get('c_id'); list($c_id) = $m -> row(); // поменяем местами $menu = category::create(MAIN_CATEGORY_TBL,'c'); $menu-> order_tree($c_id,$_REQUEST['id']); exit(); } private function ajax_down(){ // получим данные id на который кликнули $m = new category_q( MAIN_CATEGORY_TBL,'c'); //$m = new menu_q('n'); $m -> where_id($_REQUEST['id']); $m -> get('c_left,c_right,c_level'); list($c_left,$c_right,$c_level) = $m -> row(); // получим данные id который находится ниже $m = new category_q( MAIN_CATEGORY_TBL,'c'); //$m = new menu_q('n'); //$m -> set_debug(1); $m -> where_more('c_left',$c_left); $m -> where_more('c_right',$c_right); $m ->where_level($c_level); $m -> set_page(1); $m -> set_count_rows(1); $m -> order_left('ASC'); $m -> get('c_id'); list($c_id) = $m -> row(); // поменяем местами $menu = category::create(MAIN_CATEGORY_TBL,'c'); $menu-> order_tree($_REQUEST['id'],$c_id); exit(); } } ?>