diff --git a/class2.php b/class2.php index 082cccf9a..d4eccfc91 100644 --- a/class2.php +++ b/class2.php @@ -9,9 +9,9 @@ * General purpose file * * $Source: /cvs_backup/e107_0.8/class2.php,v $ -* $Revision: 1.128 $ -* $Date: 2009-08-16 16:30:56 $ -* $Author: secretr $ +* $Revision: 1.129 $ +* $Date: 2009-08-16 23:58:30 $ +* $Author: e107coders $ * */ // @@ -885,7 +885,7 @@ if (!class_exists('e107table')) public $eMenuCount = 0; public $eMenuArea; - public $eMenuTotal = 0; + public $eMenuTotal = array(); public $eSetStyle; function tablerender($caption, $text, $mode = 'default', $return = false) @@ -917,7 +917,7 @@ if (!class_exists('e107table')) $this->eMenuCount++; } ob_start(); - tablestyle($caption, $text, $mode, array('menuArea'=>$this->eMenuArea,'menuCount'=>$this->eMenuCount,'menuTotal'=>$this->eMenuTotal,'setStyle'=>$this->eSetStyle)); + tablestyle($caption, $text, $mode, array('menuArea'=>$this->eMenuArea,'menuCount'=>$this->eMenuCount,'menuTotal'=>$this->eMenuTotal[$this->eMenuArea],'setStyle'=>$this->eSetStyle)); $ret=ob_get_contents(); ob_end_clean(); @@ -930,7 +930,7 @@ if (!class_exists('e107table')) { $this->eMenuCount++; } - tablestyle($caption, $text, $mode, array('menuArea'=>$this->eMenuArea,'menuCount'=>$this->eMenuCount,'menuTotal'=>$this->eMenuTotal,'setStyle'=>$this->eSetStyle)); + tablestyle($caption, $text, $mode, array('menuArea'=>$this->eMenuArea,'menuCount'=>$this->eMenuCount,'menuTotal'=>$this->eMenuTotal[$this->eMenuArea],'setStyle'=>$this->eSetStyle)); return ''; } } @@ -1488,7 +1488,7 @@ function save_prefs($table = 'core', $uid = USERID, $row_val = '') // Create the data to be stored if($sql->db_Select_gen("REPLACE INTO `#core` (e107_name,e107_value) values ('SitePrefs', '".$eArrayStorage->WriteArray($_pref)."') ")) { - ecache::clear_sys('SitePrefs'); + ecache::clear_sys('Config_core'); return true; } else @@ -1504,7 +1504,7 @@ function save_prefs($table = 'core', $uid = USERID, $row_val = '') if($sql->db_Select_gen("REPLACE INTO `#core` (e107_name,e107_value) values ('IconPool', '".$eArrayStorage->WriteArray($_iconpool)."') ")) { - ecache::clear_sys('IconPool'); + ecache::clear_sys('Config_ipool'); return true; } else diff --git a/e107_admin/sql/core_sql.php b/e107_admin/sql/core_sql.php index 493f5dbfe..a3ce0f34a 100644 --- a/e107_admin/sql/core_sql.php +++ b/e107_admin/sql/core_sql.php @@ -11,8 +11,8 @@ | GNU General Public License (http://gnu.org). | | $Source: /cvs_backup/e107_0.8/e107_admin/sql/core_sql.php,v $ -| $Revision: 1.19 $ -| $Date: 2009-07-09 02:47:12 $ +| $Revision: 1.20 $ +| $Date: 2009-08-16 23:58:31 $ | $Author: e107coders $ +----------------------------------------------------------------------------+ */ @@ -293,6 +293,7 @@ CREATE TABLE menus ( menu_pages text NOT NULL, menu_path varchar(100) NOT NULL default '', menu_layout varchar(100) NOT NULL default '', + menu_parms text NOT NULL, PRIMARY KEY (menu_id) ) TYPE=MyISAM; # -------------------------------------------------------- diff --git a/e107_files/shortcode/menu.php b/e107_files/shortcode/menu.php index 7015f5075..71f3c03ce 100644 --- a/e107_files/shortcode/menu.php +++ b/e107_files/shortcode/menu.php @@ -1,9 +1,9 @@ render($parm); + return e107::getMenu()->renderArea($parm); } diff --git a/e107_files/shortcode/plugin.php b/e107_files/shortcode/plugin.php new file mode 100644 index 000000000..efd24442d --- /dev/null +++ b/e107_files/shortcode/plugin.php @@ -0,0 +1,18 @@ + toDB(dirname($menu)); + $name = $tp -> toDB(basename($menu)); + + if($path == '.') + { + $path = $menu; + } + return e107::getMenu()->renderMenu($path,$name); +} diff --git a/e107_handlers/menu_class.php b/e107_handlers/menu_class.php index ac4f17c45..cadadeeab 100644 --- a/e107_handlers/menu_class.php +++ b/e107_handlers/menu_class.php @@ -1,4 +1,5 @@ retrieve_sys("menus_".USERCLASS_LIST."_".md5(e_LANGUAGE.$menu_layout_field)); - $menu_data = e107::getArrayStorage()->ReadArray($menu_data); - $eMenuList = array(); - $eMenuActive = array(); - $eMenuArea = array(); - - if(!is_array($menu_data)) + $menu_layout_field = THEME_LAYOUT != e107 :: getPref('sitetheme_deflayout') ? THEME_LAYOUT : ""; + $menu_data = e107 :: getCache()->retrieve_sys("menus_".USERCLASS_LIST."_".md5(e_LANGUAGE.$menu_layout_field)); + $menu_data = e107 :: getArrayStorage()->ReadArray($menu_data); + + $eMenuArea = array(); + // $eMenuList = array(); + // $eMenuActive = array(); // DEPRECATED + + if (!is_array($menu_data)) { - $menu_qry = 'SELECT * FROM #menus WHERE menu_location > 0 AND menu_class IN ('.USERCLASS_LIST.') AND menu_layout = "'.$menu_layout_field.'" ORDER BY menu_location,menu_order'; - if (e107::getDb()->db_Select_gen($menu_qry)) + if (e107 :: getDb()->db_Select_gen($menu_qry)) { - while ($row = e107::getDb()->db_Fetch()) + while ($row = e107 :: getDb()->db_Fetch()) { - $eMenuList[$row['menu_location']][] = $row; - $eMenuArea[$row['menu_location']][$row['menu_name']] = 1; - $eMenuActive[$row['menu_name']] = $row['menu_name']; + $eMenuArea[$row['menu_location']][] = $row; } } + $menu_data['menu_area'] = $eMenuArea; - $menu_data['menu_list'] = $eMenuList; - $menu_data['menu_active'] = $eMenuActive; - $menu_data = e107::getArrayStorage()->WriteArray($menu_data, false); - e107::getCache()->set_sys('menus_'.USERCLASS_LIST.'_'.md5(e_LANGUAGE), $menu_data); - - unset($menu_data,$menu_layout_field,$menu_qry); + + $menuData = e107 :: getArrayStorage()->WriteArray($menu_data,false); + e107 :: getCache()->set_sys('menus_'.USERCLASS_LIST.'_'.md5(e_LANGUAGE.$menu_layout_field),$menuData); } else { $eMenuArea = $menu_data['menu_area']; - $eMenuList = $menu_data['menu_list']; - $eMenuActive = $menu_data['menu_active']; - unset($menu_data); } - - $this->eMenuActive = $eMenuActive; - $this->eMenuArea = $eMenuArea; - $this->eMenuList = $eMenuList; + $total = array(); + foreach ($eMenuArea as $area => $val) + { + foreach ($val as $row) + { + if ($this->isVisible($row)) + { + $path = str_replace("/","",$row['menu_path']); + if (!isset ($total[$area])) + { + $total[$area] = 0; + } + $this->eMenuActive[$area][] = $row; + $total[$area]++; + } + } + } + e107 :: getRender()->eMenuTotal = $total; } - - function render($parm = '') + + + private function isVisible($row) { - - global $sql, $ns, $tp, $sc_style; + $show_menu = TRUE; + + if ($row['menu_pages']) + { + list($listtype,$listpages) = explode("-",$row['menu_pages'],2); + $pagelist = explode("|",$listpages); + $check_url = e_SELF.(e_QUERY ? "?".e_QUERY : ''); + + switch ($listtype) + { + case '1' : //show menu + + $show_menu = false; + foreach ($pagelist as $p) + { + if (substr($p,- 1) === '!') + { + $p = substr($p,0,- 1); + $show_menu = TRUE; + break 2; + } + elseif (strpos($check_url,$p) !== FALSE) + { + $show_menu = TRUE; + break 2; + } + } + break; + case '2' : //hide menu + + $show_menu = TRUE; + foreach ($pagelist as $p) + { + if (substr($p,- 1) == '!') + { + $p = substr($p,0,- 1); + if (substr($check_url,strlen($p) * - 1) == $p) + { + $show_menu = FALSE; + break 2; + } + } + elseif (strpos($check_url,$p) !== FALSE) + { + $show_menu = FALSE; + break 2; + } + } + break; + } //end switch + + } //endif menu_pages + + return $show_menu; + } + + + public function renderArea($parm = '') + { + global $sql,$ns,$tp,$sc_style; global $error_handler; - $e107 = e107::getInstance(); - - $eMenuList = $this->eMenuList; - + $e107 = e107 :: getInstance(); $tmp = explode(':',$parm); - - $buffer_output = true; // Default - return all output. - if (isset($tmp[1]) && $tmp[1] == 'echo') { $buffer_output = false; } - - if (!array_key_exists($tmp[0], $eMenuList)) { return; } - + $buffer_output = true; // Default - return all output. + + if (isset ($tmp[1]) && $tmp[1] == 'echo') + { + $buffer_output = false; + } + if (!array_key_exists($tmp[0],$this->eMenuActive)) + { + return; + } if ($buffer_output) { ob_start(); } - - e107::getRender()->eMenuArea = $tmp[0]; - - - foreach($eMenuList[$tmp[0]] as $row) + e107 :: getRender()->eMenuArea = $tmp[0]; + foreach ($this->eMenuActive[$tmp[0]] as $row) { - $pkey = str_replace("/","",$row['menu_path']); - $show_menu[$pkey] = $row['menu_name']; - - if($row['menu_pages']) - { - list($listtype, $listpages) = explode('-', $row['menu_pages'], 2); - $pagelist = explode('|',$listpages); - $check_url = e_SELF.(e_QUERY ? '?'.e_QUERY : ''); - - if($listtype == '1') //show menu - { - //$show_menu[$pkey] = FALSE; - unset($show_menu[$pkey]); - foreach($pagelist as $p) - { - if(substr($p, -1) == '!') - { - $p = substr($p, 0, -1); - if(substr($check_url, strlen($p)*-1) == $p) - { - // $show_menu[$pkey] = TRUE; - $show_menu[$pkey] = $row['menu_name']; - } - } - else - { - if(strpos($check_url,$p) !== FALSE) - { - // $show_menu[$pkey] = TRUE; - $show_menu[$pkey] = $row['menu_name']; - } - } - } - } - elseif($listtype == '2') //hide menu - { - // $show_menu[$pkey] = TRUE; - $show_menu[$pkey] = $row['menu_name']; - foreach($pagelist as $p) { - if(substr($p, -1) == '!') - { - $p = substr($p, 0, -1); - if(substr($check_url, strlen($p)*-1) == $p) - { - // $show_menu[$pkey] = FALSE; - unset($show_menu[$pkey]); - } - } - else - { - if(strpos($check_url, $p) !== FALSE) - { - // $show_menu[$pkey] = FALSE; - unset($show_menu[$pkey]); - } - } - } - } - } - } - - e107::getRender()->eMenuTotal = count($show_menu); - - foreach($show_menu as $mpath=>$mname) - { - // $mname = $row['menu_name']; - if($error_handler->debug == true) - { - echo "\n\n"; - } - $sql->db_Mark_Time($mname); - if(is_numeric($mpath)) - { - $sql -> db_Select("page", "*", "page_id='".$mpath."' "); - $page = $sql -> db_Fetch(); - $caption = $e107->tp->toHTML($page['page_title'], TRUE, 'parse_sc, constants'); - $text = $e107->tp->toHTML($page['page_text'], TRUE, 'parse_sc, constants'); - e107::getRender()->tablerender($caption, $text); - } - else - { - if (is_readable(e_PLUGIN.$mpath."/languages/".e_LANGUAGE.".php")) - { - include_once(e_PLUGIN.$mpath."/languages/".e_LANGUAGE.".php"); - } - elseif (is_readable(e_PLUGIN.$mpath."/languages/".e_LANGUAGE."/".e_LANGUAGE.".php")) - { - include_once(e_PLUGIN.$mpath."/languages/".e_LANGUAGE."/".e_LANGUAGE.".php"); - } - elseif (is_readable(e_PLUGIN.$mpath."/languages/English.php")) - { - include_once(e_PLUGIN.$mpath."/languages/English.php"); - } - elseif (is_readable(e_PLUGIN.$mpath."/languages/English/English.php")) - { - include_once(e_PLUGIN.$mpath."/languages/English/English.php"); - } - - if(file_exists(e_PLUGIN.$mpath."/".$mname.".php")) - { - include_once(e_PLUGIN.$mpath."/".$mname.".php"); - } - } - $sql->db_Mark_Time("(After ".$mname.")"); - if ($error_handler->debug == true) - { - echo "\n\n"; - } - unset($caption,$text); // clear variables for proceeding menus. - } - - - e107::getRender()->eMenuCount = 0; - e107::getRender()->eMenuArea = null; - - + $this->renderMenu($row['menu_path'],$row['menu_name'],$row['menu_parms']); + } + e107 :: getRender()->eMenuCount = 0; + e107 :: getRender()->eMenuArea = null; if ($buffer_output) { $ret = ob_get_contents(); @@ -227,4 +181,60 @@ class e_menu return $ret; } } -} \ No newline at end of file + + + public function renderMenu($mpath,$mname,$parm = '') + { + global $sql; // required at the moment. + global $ns,$tp,$sc_style; + $e107 = e107 :: getInstance(); + + if ($error_handler->debug == true) + { + echo "\n\n"; + } + + e107 :: getDB()->db_Mark_Time($mname); + + if (is_numeric($mpath)) + { + $sql->db_Select("page","*","page_id='".$mpath."' "); + $page = $sql->db_Fetch(); + $caption = $e107->tp->toHTML($page['page_title'],true,'parse_sc, constants'); + $text = $e107->tp->toHTML($page['page_text'],true,'parse_sc, constants'); + e107 :: getRender()->tablerender($caption,$text); + } + else + { + if (is_readable(e_PLUGIN.$mpath."/languages/".e_LANGUAGE.".php")) + { + include_once (e_PLUGIN.$mpath."/languages/".e_LANGUAGE.".php"); + } + elseif (is_readable(e_PLUGIN.$mpath."/languages/".e_LANGUAGE."/".e_LANGUAGE.".php")) + { + include_once (e_PLUGIN.$mpath."/languages/".e_LANGUAGE."/".e_LANGUAGE.".php"); + } + elseif (is_readable(e_PLUGIN.$mpath."/languages/English.php")) + { + include_once (e_PLUGIN.$mpath."/languages/English.php"); + } + elseif (is_readable(e_PLUGIN.$mpath."/languages/English/English.php")) + { + include_once (e_PLUGIN.$mpath."/languages/English/English.php"); + } + if (file_exists(e_PLUGIN.$mpath."/".$mname.".php")) + { + include_once (e_PLUGIN.$mpath."/".$mname.".php"); + } + } + + e107 :: getDB()->db_Mark_Time("(After ".$mname.")"); + if ($error_handler->debug == true) + { + echo "\n\n"; + } + + } + + +} diff --git a/e107_handlers/menumanager_class.php b/e107_handlers/menumanager_class.php index bc731fa82..4f0ecb472 100644 --- a/e107_handlers/menumanager_class.php +++ b/e107_handlers/menumanager_class.php @@ -10,9 +10,9 @@ | GNU General Public License (http://gnu.org). | | $Source: /cvs_backup/e107_0.8/e107_handlers/menumanager_class.php,v $ -| $Revision: 1.1 $ -| $Date: 2009-08-16 16:30:56 $ -| $Author: secretr $ +| $Revision: 1.2 $ +| $Date: 2009-08-16 23:58:31 $ +| $Author: e107coders $ +----------------------------------------------------------------------------+ */ if (!defined('e107_INIT')) { exit; } @@ -213,7 +213,7 @@ class e_menuManager { } $file = urldecode($_GET['path']).".php"; - $newurl = e_PLUGIN_ABS.$file; + $newurl = e_PLUGIN_ABS.$file."?id=".$_GET['id']; /* @@ -1053,7 +1053,7 @@ class e_menuManager { if($conf) { - $text .= ' + $text .= ' '.ADMIN_CONFIGURE_ICON.' '; } diff --git a/e107_plugins/siteinfo_menu/sitebutton_menu.php b/e107_plugins/siteinfo_menu/sitebutton_menu.php index 4bd5cbfe6..077f0418e 100644 --- a/e107_plugins/siteinfo_menu/sitebutton_menu.php +++ b/e107_plugins/siteinfo_menu/sitebutton_menu.php @@ -11,12 +11,12 @@ | GNU General Public License (http://gnu.org). | | $Source: /cvs_backup/e107_0.8/e107_plugins/siteinfo_menu/sitebutton_menu.php,v $ -| $Revision: 1.1 $ -| $Date: 2007-03-23 22:42:40 $ -| $Author: lisa_ $ +| $Revision: 1.2 $ +| $Date: 2009-08-16 23:58:31 $ +| $Author: e107coders $ +----------------------------------------------------------------------------+ */ if (!defined('e107_INIT')) { exit; } - -$ns->tablerender(SITEBUTTON_MENU_L1, "
", 'sitebutton'); +echo "parm=".$parm; //FIXME - just for testing only. +$ns->tablerender(SITEBUTTON_MENU_L1, "", 'sitebutton'); ?> \ No newline at end of file diff --git a/e107_themes/_blank/_blank_config.php b/e107_themes/_blank/_blank_config.php index cbd7e9bc4..6e60ca083 100644 --- a/e107_themes/_blank/_blank_config.php +++ b/e107_themes/_blank/_blank_config.php @@ -1,57 +1,65 @@ add('sitetheme_pref', $theme_pref); + print_a($pref->get('sitetheme_pref')); + var_dump($pref->add('sitetheme_pref', $theme_pref)->save(FALSE)); + // save_prefs($pref['sitetheme_pref']); + } + + function config() + { + $var[0]['caption'] = "Sample configuration field"; + $var[0]['html'] = ""; + + $var[1]['caption'] = "Another Example"; + $var[1]['html'] = ""; + var_dump(e107::getThemePref()); + return $var; + } + + function help() + { + return " +