예제 #1
0
파일: main.handler.php 프로젝트: rigidus/ea
 function view()
 {
     if (!self::$menu) {
         self::loadSiteMenu();
     }
     $menu_name = params::get('menu');
     if (!isset(self::$menu[$menu_name])) {
         return false;
     }
     $menu_id = self::$menu_id[$menu_name];
     /*
     	Menu conf
     */
     if (!self::$menu_conf) {
         self::$menu_conf = conf::parse('menus');
     }
     $menu = self::$menu[$menu_name][0];
     if (self::$menu_conf) {
         /*
         	Menu pages
         */
         $menu_conf_pages_in = conf::get('menus', 'in', $menu_id);
         $menu_conf_pages_out = conf::get('menus', 'out', $menu_id);
         if (!conf::testPages($menu_conf_pages_out)) {
             if (in_array(PAGE_ID, $menu_conf_pages_out)) {
                 return true;
             }
         } else {
             if (!conf::testPages($menu_conf_pages_in)) {
                 if (!in_array(PAGE_ID, $menu_conf_pages_in)) {
                     return true;
                 }
             }
         }
         /*
         	Menu events
         */
         if (conf::get('menus', 'events', $menu_id)) {
             foreach (conf::get('menus', 'events', $menu_id) as $v) {
                 $arr = explode('::', trim($v));
                 if (events::targetDetect($arr[0], $arr[1], $arr[2])) {
                     /*
                     	:TODO: добавить передачу в params события, его названия и его значения
                     */
                     if ($arr[3] == 'replace') {
                         $menu_id = $arr[4];
                         $menu_name = self::$menu_by_id[$menu_id];
                         $menu = self::$menu[$menu_name][0];
                     } else {
                         if ($arr[3] == 'hide') {
                             return true;
                         }
                     }
                 }
             }
         }
     }
     // $points_conf = conf::parse('points');
     $points = '';
     $i = 0;
     foreach ($menu as $k => $v) {
         $i++;
         /*
         	Points conf
         
         $conf_index = $menu_id.'.'.$v['point_id'];
         
         if ($points_conf)
         {
         	$points_conf_pages = conf::get('points', 'pages', $conf_index);
         
         	if ($points_conf_pages && $points_conf_pages[0] != 0)
         	{
         		if (!in_array(PAGE_ID, $points_conf_pages)) continue;
         	}
         }
         */
         $v = self::getPointLink($v, $menu_name);
         $v['index'] = $i;
         /*
         	Check parents
         */
         if (strstr($v['menu_tmpl_link'], '{POINTS}')) {
             if (isset(self::$menu[$menu_name][$v['point_id']])) {
                 $parent_points = '';
                 foreach (self::$menu[$menu_name][$v['point_id']] as $d => $f) {
                     $f = self::getPointLink($f, $menu_name);
                     $parent_points .= s::parseVars($f['menu_tmpl_link'], $f);
                 }
                 $v['menu_tmpl_link'] = str_replace('{POINTS}', $parent_points, $v['menu_tmpl_link']);
             }
         }
         $points .= s::parseVars($v['menu_tmpl_link'], $v);
         $menu_tmpl = $v['menu_tmpl'];
     }
     buffer::set(str_replace('{POINTS}', $points, $menu_tmpl));
 }
예제 #2
0
파일: main.module.php 프로젝트: rigidus/ea
 function edit()
 {
     events::observe('save', 'menus', '_save');
     events::observer();
     admin::components('tabs', 'validator');
     appPages::getPagesSelect(ADMIN_SITE_ID);
     appMenus::getMenus(ADMIN_SITE_ID);
     $menu_id = admin::get('id');
     $pages_in = conf::getPagesIn('menus', $menu_id);
     $pages_out = conf::getPagesOut('menus', $menu_id);
     if (conf::testPages($pages_in) && conf::testPages($pages_out)) {
         f::set('allPages', 1);
         f::set('allPagesOut', 0);
     } else {
         if (conf::testPages($pages_in) && !conf::testPages($pages_out)) {
             f::set('allPages', 0);
             f::set('allPagesOut', 1);
             f::set('pages', $pages_out);
         } else {
             if (!conf::testPages($pages_in) && !conf::testPages($pages_out)) {
                 f::set('allPages', 0);
                 f::set('allPagesOut', 0);
                 f::set('pages', $pages_in);
             } else {
                 if (!conf::testPages($pages_in) && conf::testPages($pages_out)) {
                     f::set('allPages', 0);
                     f::set('allPagesOut', 0);
                     f::set('pages', $pages_in);
                 }
             }
         }
     }
     db::table('menus');
     db::where('menu_id', $menu_id);
     $row = db::assoc();
     f::set($row);
 }
예제 #3
0
파일: main.handler.php 프로젝트: rigidus/ea
 function view()
 {
     /*
     	Block conf
     */
     $block_conf = conf::parse('blocks');
     $blocks = array();
     db::table('blocks');
     db::where('block_pub', 1);
     db::where('site_id', SITE_ID);
     $res = db::select('block_id', 'block_name', 'block_code', 'block_title');
     while ($row = mysql_fetch_assoc($res)) {
         $blocks[$row['block_id']] = $row;
     }
     foreach ($blocks as $k => $row) {
         if ($block_conf) {
             /*
             	Block pages
             */
             $block_conf_pages_in = conf::get('blocks', 'in', $k);
             $block_conf_pages_out = conf::get('blocks', 'out', $k);
             if (!conf::testPages($block_conf_pages_out)) {
                 if (in_array(PAGE_ID, $block_conf_pages_out)) {
                     $row['block_code'] = false;
                     continue;
                 }
             } else {
                 if (!conf::testPages($block_conf_pages_in)) {
                     if (!in_array(PAGE_ID, $block_conf_pages_in)) {
                         $row['block_code'] = false;
                         continue;
                     }
                 }
             }
             /*
             	Block events
             */
             if (conf::get('blocks', 'events', $k)) {
                 foreach (conf::get('blocks', 'events', $k) as $v) {
                     $arr = explode('::', trim($v));
                     if (events::targetDetect($arr[0], $arr[1], $arr[2])) {
                         if ($arr[3] == 'replace') {
                             if (isset($blocks[$arr[4]])) {
                                 $row['block_code'] = $blocks[$arr[4]]['block_code'];
                             }
                         } else {
                             if ($arr[3] == 'handler') {
                                 load::handler($arr[4], $arr[5], $arr[6]);
                             } else {
                                 if ($arr[3] == 'hide') {
                                     $row['block_code'] = false;
                                 }
                             }
                         }
                     } else {
                         if ($arr[3] == 'show') {
                             $row['block_code'] = false;
                         }
                     }
                 }
             }
             /*
             	Block handlers
             */
             if (conf::get('blocks', 'methods', $k)) {
                 foreach (conf::get('blocks', 'methods', $k) as $v) {
                     $arr = explode('::', trim($v));
                     if (count($arr) == 3) {
                         load::handler($arr[0], $arr[1], $arr[2]);
                     }
                 }
             }
             if ($row['block_code'] !== false) {
                 s::set($row['block_name'], $row['block_code']);
             } else {
                 s::set($row['block_name'], '');
             }
             /*
             	Block JIP
             */
             if ($row['block_code'] !== false) {
                 if (!empty($row['block_title'])) {
                     $name = $row['block_title'];
                 } else {
                     $name = $row['block_name'];
                 }
                 s::roll('legenda_jip_blocks', array('path' => 'http://' . SITE . SYS_DIR . 'blocks/main/edit/' . $row['block_id'] . '/', 'name' => $name));
             }
         }
     }
 }