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)); }
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); }
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)); } } } }