config = &$config;
$this->remember_params();
$this->build_menu();
}
/**
* Build up the menu array
*
*/
function build_menu(){
$menu = array();
$menu['Forsiden']['url'] = "index.php";
$menu['Forsiden']['no'] = "Forsiden";
$menu['Forsiden']['en'] = "Front page";
$menu['Forsiden']['heading']['no'] = "Velkommen til Granevang.net!";
$menu['Forsiden']['heading']['en'] = "Welcome to Granevang.net!";
$menu['Roar']['url'] = "Roar.php";
$menu['Roar']['heading']['no'] = "Roar";
$menu['Roar']['heading']['en'] = "Roar";
$menu['Merethe']['sub_menu']['Foto_merethe']['no'] = "Foto";
$menu['Merethe']['sub_menu']['Foto_merethe']['en'] = "Photos";
$menu['Merethe']['sub_menu']['Miniatyrer_merethe']['no'] = "Miniatyrer";
$menu['Merethe']['sub_menu']['Miniatyrer_merethe']['en'] = "Miniatures";
$menu['Merethe']['sub_menu']['Malerier_merethe']['no'] = "Malerier";
$menu['Merethe']['sub_menu']['Malerier_merethe']['en'] = "Paintings";
$menu['Merethe']['sub_menu']['Kode_merethe']['header']['no'] = "Kodeeksempler";
$menu['Merethe']['sub_menu']['Kode_merethe']['header']['en'] = "Code examples";
$menu['Merethe']['sub_menu']['Kode_merethe']['no'] = "Kode";
$menu['Merethe']['sub_menu']['Kode_merethe']['en'] = "Code";
$menu['Merethe']['url'] = "CV_merethe.php";
$menu['Merethe']['heading']['no'] = "Merethes CV";
$menu['Merethe']['heading']['en'] = "Merethe's CV";
$menu['Azrael']['url'] = "Azrael.php";
$menu['Azrael']['sub_menu']['Azrael_bilder']['no'] = "Bilder";
$menu['Azrael']['sub_menu']['Azrael_bilder']['en'] = "Pictures";
$menu['Raistlin']['url'] = "Raistlin.php";
$menu['Raistlin']['sub_menu']['Raistlin_bilder']['no'] = "Bilder";
$menu['Raistlin']['sub_menu']['Raistlin_bilder']['en'] = "Pictures";
$menu['Falke']['no'] = "Falkøye";
$menu['Falke']['sub_menu']['Falke_bilder']['no'] = "Bilder";
$menu['Falke']['sub_menu']['Falke_bilder']['en'] = "Pictures";
$menu['Bryllup']['no'] = "Bryllup";
$menu['Bryllup']['en'] = "Wedding";
$menu['Bryllup']['heading']['no'] = "Vårt bryllup";
$menu['Bryllup']['heading']['en'] = "Our wedding";
$menu['Vinter']['no'] = "
Vinter";
$menu['Vinter']['en'] = "
Winter";
$menu['Vinter']['url'] = $this->url;
$menu['Vinter']['param']['design'] = "Vinter";
$menu['Vinter']['param']['design'] = "Vinter";
$menu['Vaar']['no'] = "Vår";
$menu['Vaar']['en'] = "Spring";
$menu['Vaar']['url'] = $this->url;
$menu['Vaar']['param']['design'] = "Vaar";
if($this->lang != "en"){
$menu['English']['no'] = "English";
$menu['English']['url'] = $this->url;
$menu['English']['param']['language'] = "en";
}
if($this->lang != "no"){
$menu['Norsk']['no'] = "Norsk";
$menu['Norsk']['url'] = $this->url;
$menu['Norsk']['param']['language'] = "no";
}
$menu['Utskrift']['img'] = "printer.png";
$menu['Utskrift']['no'] = "Utskriftsvennlig";
$menu['Utskrift']['en'] = "Printer friendly";
$menu['Utskrift']['url'] = $this->url;
$menu['Utskrift']['param']['type'] = "print";
$this->menu = $menu;
}
/**
* Take care of parameters that should be remember through pages
*
*/
function remember_params(){
$this->url = "http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
$this->lang = $this->config->get_lang();
if($this->lang == ""){
$this->lang = "no";
}
//take care of old parameters
$remember_params = array('design', 'language'); //these parameters should be remembered
$pattern = '/[\?|&]([^=]*)=([^&]*)/';
preg_match_all($pattern, $this->url, $matches);
for($i=0; $iparam[$name] = $value;
}
}
}
/**
* Return the page heading
*
* @return String
*/
function get_heading(){
$heading = $this->selected;
$data = $this->get_menu_data($this->selected);
if($data['heading'][$this->lang] != ""){
$heading = $data['heading'][$this->lang];
}
else if($data[$this->lang] != ""){
$heading = $data[$this->lang];
}
return $heading;
}
/**
* Set the selected menu
*
* @param String $menu
*/
function set_selected($menu){
$this->selected = $menu;
}
/**
* Get the link for a menu item
*
* @param String $menu
* @param int $level
* @return String link
*/
function get_menu_link($menu, $level=0){
$url = $this->get_menu_url($menu);
$menu_name = $this->get_menu_name($menu);
$link = "";
if($this->selected == $menu){
$link .= "";
}
//Add indent
for($i=0; $i<$level; $i++){
$link .= " ";
}
if($level > 0){
$link .= "|dot ";
}
$link .= "$menu_name";
if($this->selected == $menu){
$link .= "";
}
return $link;
}
/**
* Get the menu
*
* @return String
*/
function get_menu(){
$html = "";
if(!is_array($this->menu)){
return $html;
}
foreach($this->menu as $menu => $menu_data){
//Try to get the menu name from the selected language
//If it is not defined, use the menu index as name
$html .= $this->get_menu_link($menu);
$html .= "
";
//Display the sub menu
$sub_menu = $menu_data['sub_menu'];
$show_sub_menu = false;
$sub_menu_txt = "";
if(is_array($sub_menu)){
if($this->selected == $menu){
$show_sub_menu = true;
}
foreach($sub_menu as $sub_menu_id => $data){
$sub_menu_txt .= $this->get_menu_link($sub_menu_id, 1)."
";
if($this->selected == $sub_menu_id){
$show_sub_menu = true;
}
}
}
if($show_sub_menu){
$html .= $sub_menu_txt;
}
}
return $html;
}
/**
* Get an array of data data for a menu item
*
* @param String $menu
* @param array $menu_arr
* @return array
*/
function get_menu_data($menu, $menu_arr = "not set"){
if($menu_arr == "not set"){
$menu_arr = $this->menu;
}
//call this function recursively if the array is deeper
$menu_data = $menu_arr[$menu];
if(is_array($menu_data)){
return $menu_data;
}
if(is_array($menu_arr)){
//array is deeper
foreach($menu_arr as $menu_data_arr){
$ret = $this->get_menu_data($menu, $menu_data_arr);
if($ret){
return $ret;
}
}
}
return false;
}
/**
* Get the url for a menu item
*
* @param String $menu
* @return String
*/
function get_menu_url($menu){
$menu_data = $this->get_menu_data($menu);
$menu_name = $menu_data['url'];
if($menu_name == ""){
$menu_name = $menu.".php";
}
$url = $menu_name;
//insert remembered parameters
foreach($this->param as $name => $value){
//don't overwrite with old configs when a new is set
if(is_array($menu_data['param'])){
if($menu_data['param'][$name] == ""){
$menu_data['param'][$name] = $value;
}
else{
//Just remember the old one
}
}
else{
//if no param is set. just remember old ones
$menu_data['param'][$name] = $value;
}
}
//Insert parameters
if(is_array($menu_data['param'])){
foreach($menu_data['param'] as $name => $value){
//remove the old parameter
$url = preg_replace('/&'.$name.'=[^&]*&?/', '', $url);
$url = preg_replace('/\?'.$name.'=[^&]*&?/', '?', $url);
//add new parameter
$extra_url = "";
if(strstr($url, '?')){
$extra_url .= "&";
}
else{
$extra_url .= "?";
}
$extra_url .= "$name=$value";
$url .= $extra_url;
}
}
$url = str_replace('?&', '?', $url);
return $url;
}
/**
* Get the name of a menu item
*
* @param String $menu
* @return String
*/
function get_menu_name($menu){
$menu_data = $this->get_menu_data($menu);
$menu_name = $menu_data[$this->lang];
//if we have an image, return that instead
if($menu_data['img'] != ""){
$menu_name = "
";
}
if($menu_name == ""){
$menu_name = $menu;
}
return $menu_name;
}
/**
* Replace links in the content with links that includes remembered variables
*
* @param String $content
* @return String replaced content
*/
function replace_links($content){
//Get links
$pattern = '//';
preg_match_all($pattern, $content, $matches);
for($i=0; $ireplace_link($link, $content);
}
return $content;
}
/**
* Replace a given link with a link that includes remembered variables
*
* @param String $link
* @param String $content
* @return String replaced content
*/
function replace_link($link, $content){
//Split up the link into parameters
$param = array();
$pattern = '/[\?|&]([^=]*)=([^&]*)/';
preg_match_all($pattern, $link, $matches);
for($i=0; $iparam);
//TODO: what if one param has the same name as a remembered value?
//Build up the new link
$end_link = $link_base;
foreach($param as $name => $value){
if(strstr($end_link, '?') === false){
$end_link .= "?";
}
else{
$end_link .= "&";
}
$end_link .= "$name=$value";
}
//Replace the link in the content
$content = str_replace($link, $end_link, $content);
return $content;
}
}
?>