//##########################################################################
//################ IMPOSTAZIONI BASE GALLERIA ##############################
//##########################################################################
//controllo inizializzazione
$CONF[menu_init] = "NO";
//configurazione di base non cambiare per tutte le pagine
$CONF_MENU[menu_pagina_vis] = "SI"; //decide se mettere o no la pagina nel menu
$CONF_MENU[menu_ref] = "root"; //se il riferimento non c'e' sono nella root
$CONF_MENU[menu_gruppo] = "main"; //definisce il gruppo da associare di default
$CONF_MENU[menu_sep] = "SI"; //definisco che di default c'e' sempre il separatore
$CONF_MENU[menu_ordine] = "AUTO"; //ordine automatico con un numero incrementato a 100 + 100
//tipo personalizzato
//$CONF_MENU[menu_src] = ""; //forzo il contenuto del menu
//$CONF_MENU[menu_src_s] = ""; //forzo il contenuto del menu quando la pagina e' selezionata
$CONF[menu_riferimento] = "default"; //ALL per tutti i riferimenti
//$CONF[menu_riferimento] = "root";
$CONF[menu_livello] = "0"; //ALL per tutti i livelli
//$CONF[menu_lev] = "0"; //imposta il livello a 0 nelle pagine iniziali
$CONF[menu_vis] = "SI";
$CONF[menu_tipo] = "TXT"; // TXT o IMG o PER
$CONF[menu_link_sempre] = "NO"; // Se SI mette sempre i link anche se siamo nella pagina
$CONF[menu_gruppo_vis] = "ALL"; //definisce il gruppo da visualizzare se ALL viualizza tutti
// per tipo testo
$CONF[menu_txt_sep_sx] = "";
$CONF[menu_txt_sep_dx] = "";
$CONF[menu_txt_sep] = " | ";
$CONF[menu_txt_sel_sx] = "";
$CONF[menu_txt_sel_dx] = "";
//per tipo immagine
$CONF[menu_img_path] = "menu/"; //imposta il livello a 0 nelle pagine iniziali
$CONF[menu_img_link] = "PAGINA";
$CONF[menu_img_sel] = "_s";
$CONF[menu_img_ext] = ".gif";
$CONF[menu_img_sep_sx] = ""; //imposta il livello a 0 nelle pagine iniziali
$CONF[menu_img_sep_dx] = ""; //imposta il livello a 0 nelle pagine iniziali
$CONF[menu_img_sep] = ""; //imposta il livello a 0 nelle pagine iniziali
//d($GLOBALS);
function menu_init($mode=NULL) {
global $CONF, $MENU, $CONF_MENU, $DATI;
//mi fermo se ho gia inizializzato
if($CONF["menu_init"] == "SI" and $mode != "FORCE") return 0;
//sistemo i link e le lingue non definite
if($CONF["INDI"] == "SI") main_link_globale_indi();
else main_link_globale();
//INIZIALIZZO E AGGIORNO I DATI DI BASE IN TUTTE LE PAGINE DEFINITE
// IMPOSTO ANCHE L' ORDINE
$ordine = 0;
reset($MENU);
while(list($k, $v)=each($MENU)) {
reset($v);
while(list($k1, $v1)=each($v)) {
//applico CONF_MENU a tutte le pagine
$MENU["$k"]["$k1"] = array_merge($CONF_MENU, $MENU["$k"]["$k1"]);
//ordine
if($MENU["$k"]["$k1"][menu_ordine] == "AUTO") {
$ordine = $ordine + 100;
$MENU["$k"]["$k1"][menu_ordine] = $ordine;
}
}
}
//faccio il merge con i dati aggiornati
$DATI = array_merge($CONF, $DATI);
$CONF["menu_init"] = "SI";
//ritorno superglobal
$GLOBALS["MENU"] = $MENU;
$GLOBALS["DATI"] = $DATI;
$GLOBALS["CONF"] = $CONF;
}
//sottoversioni
//funzione per creare il menu, nella configurazione delle pagine imposto i vari parametri
function menu($PARAM=NULL,$livello=NULL,$riferimento=NULL) {
//inizializzo
menu_init();
global $MENU,$DATI,$CONF;
//creo struttura multilivello
//se CONFIGURAZIONE viene passata come parametro, sovrascrive tutte le impostazioni precedenti
//la configurazione iniziale viene ereditata prima di tutto da CONF, sovrascritta da DATI e sovrascritta da CONFIGURAZIONE
if(is_array($PARAM)) $CONFIGURAZIONE = $PARAM;
else {
if($PARAM != NULL) $CONFIGURAZIONE["menu_tipo"] = $PARAM;
if($livello != NULL) $CONFIGURAZIONE["menu_livello"] = $livello;
if($riferimento != NULL) $CONFIGURAZIONE["menu_riferimento"] = $riferimento;
}
$CONFIGURAZIONE = array_merge($CONF, $DATI,$CONFIGURAZIONE);
//print $CONFIGURAZIONE["menu_riferimento"];
// da rivedere ???
//if($CONFIGURAZIONE["menu_livello"] != "0") {
// if ($riferimento == NULL) $CONFIGURAZIONE["menu_riferimento"] = $DATI[pagina];
// else $CONFIGURAZIONE["menu_riferimento"] = $riferimento;
//}
//annullo tutto se decido di non visualizzare il menu
if($CONFIGURAZIONE["menu_vis"] == "NO") return "";
$pagina = $CONFIGURAZIONE["pagina"];
$lang = $CONFIGURAZIONE["lang"];
//imposto riferimento di ROOT
$ref_start = $CONFIGURAZIONE["menu_riferimento"];
$ref_lev = $CONFIGURAZIONE["menu_livello"];
$livello_ref_start = menu_livello($ref_start);
if($CONFIGURAZIONE["menu_riferimento"] == "default") $riferimento_pagina = menu_riferimento($CONFIGURAZIONE["menu_livello"]);
else $riferimento_pagina = menu_riferimento($CONFIGURAZIONE["menu_livello"],$CONFIGURAZIONE["menu_riferimento"]);
reset($MENU);
while(list($k, $pg)=each($MENU)) {
while(list($k, $menu)=each($pg)) {
//trovo livello pagina corrente
$livello_pagina = menu_livello($menu["pagina"]);
//controllo ALL ???
if($CONFIGURAZIONE["menu_riferimento"] == "ALL") $menu["menu_ref"] = $riferimento_pagina;
if($CONFIGURAZIONE["menu_livello"] == "ALL") {
if($CONFIGURAZIONE["menu_riferimento"] != "ALL") {
//print $livello_pagina;
$menu["menu_ref"] = menu_riferimento($livello_ref_start+1,$menu["pagina"]);
$riferimento_pagina = $ref_start;
//print "-$livello_ref_start-$menu[menu_ref]";
//if($menu["menu_ref"] == $riferimento_pagina) print "#$menu[pagina]#";
}
$livello_pagina = $CONFIGURAZIONE["menu_livello"];
}
if($menu[menu_pagina_vis] == "SI" and $livello_pagina == $CONFIGURAZIONE["menu_livello"] and $menu[lang] == $lang and $menu["menu_ref"] == $riferimento_pagina and ($menu["menu_gruppo"] == $CONFIGURAZIONE["menu_gruppo_vis"] or $CONFIGURAZIONE["menu_gruppo_vis"] == "ALL")) {
$riferimento0 = $pagina;
$riferimento1 = $MENU[$riferimento0][$lang][menu_ref];
$riferimento2 = $MENU[$riferimento1][$lang][menu_ref];
$riferimento3 = $MENU[$riferimento1][$lang][menu_ref];
//trovo sottolivello ??? da fare con array
if($menu["pagina"] == $riferimento0 or $menu["pagina"] == $riferimento1 or $menu["pagina"] == $riferimento2 or $menu["pagina"] == $riferimento3) $dove_sono = 1;
else $dove_sono = 0;
//MULTILIVELLO
if($dove_sono and $CONFIGURAZIONE["menu_multi"] == "SI" or $CONFIGURAZIONE["menu_multi_all"]) $multi = "#MMUL#";
else $multi = "";
if($CONFIGURAZIONE["menu_multi_all"]) $multi = "#MMUL-$menu[pagina]#";
//SEPARATORE SI NO
if($menu["menu_sep"] == "SI") {
$sep_sx = "<1>";
$sep_dx = "<2>";
} else {
$sep_sx = "";
$sep_dx = "";
}
//DA CAMBIARE MENU PERSONALIZZATO
if($menu["menu_src"] != "") {
//controllo presenza di testo, senno' metto nome pagina
//creo il codice
//controllo inizio fine
if($dove_sono and $CONFIGURAZIONE["menu_link_sempre"] != "SI") $out .= $sep_sx.$menu["menu_src_s"].$multi.$sep_dx;
else $out .= $sep_sx.$menu["menu_src"].$multi.$sep_dx;
} else {
// ######### MENU TESTUALE
if($CONFIGURAZIONE["menu_tipo"] == "TXT") {
//controllo presenza di testo, senno' metto nome pagina
if ($menu["menu_txt"] != "") $txt = $menu["menu_txt"];
else $txt = $menu["nome"];
//creo il codice
if($dove_sono and $CONFIGURAZIONE["menu_link_sempre"] != "SI") $out .= $sep_sx.$CONFIGURAZIONE[menu_txt_sel_sx].$txt.$CONFIGURAZIONE[menu_txt_sel_dx].$multi.$sep_dx;
else $out .= $sep_sx.''.$txt.''.$multi.$sep_dx;
}
// ######### MENU IMMAGINE
if($CONFIGURAZIONE["menu_tipo"] == "IMG") {
//controllo presenza alt, senno' metto nome pagina
if ($menu["menu_txt"] != "") $alt = $menu["menu_txt"];
else $alt = $menu["nome"];
$alt = encode($alt);
//creo il nome immagine
if($dove_sono) $sel = $CONFIGURAZIONE["menu_img_sel"];
else $sel = "";
$path_img = $CONFIGURAZIONE["dir_pic"].$CONFIGURAZIONE["menu_img_path"].$menu["lang"].'/'.$menu["pagina"].$sel.$CONFIGURAZIONE["menu_img_ext"];
$size = @getimagesize($path_img);
$img = '
';
//creo il codice
if($dove_sono and $CONFIGURAZIONE[menu_link_sempre] != "SI") $out .= $sep_sx.$img.$multi.$sep_dx;
else $out .= $sep_sx.''.$img.''.$multi.$sep_dx;
}
}
}
}
}
if($CONFIGURAZIONE["menu_tipo"] == "TXT") {
$out = str_replace("<2><1>",$CONFIGURAZIONE[menu_txt_sep],$out);
$out = str_replace("<1>",$CONFIGURAZIONE[menu_txt_sep_sx],$out);
$out = str_replace("<2>",$CONFIGURAZIONE[menu_txt_sep_dx],$out);
}
if($CONFIGURAZIONE["menu_tipo"] == "IMG") {
$out = str_replace("<2><1>",$CONFIGURAZIONE[menu_img_sep],$out);
$out = str_replace("<1>",$CONFIGURAZIONE[menu_img_sep_sx],$out);
$out = str_replace("<2>",$CONFIGURAZIONE[menu_img_sep_dx],$out);
}
return encode($out);
}
function menu_livello($pagina=NULL,$lang=NULL) {
menu_init();
global $MENU,$DATI;
if($lang == NULL) $lang = $DATI["lang"];
if($pagina == NULL) $pagina = $DATI["pagina"];
//print $lang.$pagina;
$riferimento0 = $MENU[$pagina][$lang][menu_ref];
$riferimento1 = $MENU[$riferimento0][$lang][menu_ref];
$riferimento2 = $MENU[$riferimento1][$lang][menu_ref];
//trovo livello della pagina
if ($riferimento0 == "root") $livello = 0;
if ($riferimento1 == "root") $livello = 1;
if ($riferimento2 == "root") $livello = 2;
return $livello;
}
//funzione trova riferimento in base al livello e alla pagina di partenza
function menu_riferimento($livello=NULL,$pagina=NULL,$lang=NULL) {
menu_init();
global $MENU,$DATI;
if($lang == NULL) $lang = $DATI["lang"];
if($pagina == NULL) $pagina = $DATI["pagina"];
if($livello == NULL) $livello = menu_livello($pagina,$lang);
//$livello_corrente = menu_livello($DATI["pagina"],$DATI["lang"]);
//$lev = $livello_corrente-$livello;
//print "|$lev|";
//if($lev == "0") return $MENU[$pagina][$lang][menu_ref];
//creo i riferimenti in ordine inverso
$riferimento0 = $pagina;
$riferimento1 = $MENU[$riferimento0][$lang][menu_ref];
$riferimento2 = $MENU[$riferimento1][$lang][menu_ref];
$riferimento3 = $MENU[$riferimento2][$lang][menu_ref];
if ($riferimento0 != "root" and $riferimento0 != "") $REF[0] = $riferimento0;
//else $REF[0] = "root";
if ($riferimento1 != "root" and $riferimento1 != "") $REF[1] = $riferimento1;
//else $REF[1] = "root";
if ($riferimento2 != "root" and $riferimento2 != "") $REF[2] = $riferimento2;
//else $REF[2] = "root";
if ($riferimento3 != "root" and $riferimento3 != "") $REF[3] = $riferimento3;
//else $REF[3] = "root";
//aggiungo root
$REF[] = "root";
$REF = array_reverse($REF);
//d($REF);
return $REF[$livello];
}
// MENU MULTILIVELLO
function menu_multi($M){
global $MENU,$DATI;
if($lang == NULL) $lang = $DATI["lang"];
if($pagina == NULL) $pagina = $DATI["pagina"];
$M[0] = array_merge($M[A],$M[0]);
$M[1] = array_merge($M[A],$M[1]);
$M[2] = array_merge($M[A],$M[2]);
//$M[0][menu_multi] = "SI";
if($M[0][menu_livello] == "") $M[0][menu_livello] = "0";
//$M[1][menu_multi] = "SI";
if($M[1][menu_livello] == "") $M[1][menu_livello] = "1";
//$M[2][menu_multi] = "SI";
if($M[2][menu_livello] == "") $M[2][menu_livello] = "2";
//monto il menu
//forzo l' opzione multi
$m1 = menu($M[0]);
$m2 = menu($M[1]);
$m3 = menu($M[2]);
//creo il menu
$m = str_replace("#MMUL#",$m2,$m1);
$m = str_replace("#MMUL#",$m3,$m);
$m = str_replace("#MMUL#","",$m);
return $m;
}
function menu_multi_all($M){
global $MENU,$DATI;
if($lang == NULL) $lang = $DATI["lang"];
if($pagina == NULL) $pagina = $DATI["pagina"];
$M[0] = array_merge($M[A],$M[0]);
$M[1] = array_merge($M[A],$M[1]);
$M[2] = array_merge($M[A],$M[2]);
$M[0][menu_multi_all] = "SI";
if($M[0][menu_livello] == "") $M[0][menu_livello] = "0";
$M[1][menu_multi_all] = "SI";
if($M[1][menu_livello] == "") $M[1][menu_livello] = "1";
$M[2][menu_multi_all] = "SI";
if($M[2][menu_livello] == "") $M[2][menu_livello] = "2";
//monto il menu
//root
$m0 = menu($M[0]);
//print_r($m0);
//mi creo tutti i menu di tutti i riferimenti di livello 1
//copio conf
$M_TMP = $M[1];
$MENU_TMP = $MENU;
reset($MENU_TMP);
while(list($k, $v)=each($MENU_TMP)) {
$lev = menu_livello($k);
if($lev == "0") {
$M_TMP[menu_riferimento] = "$k";
$M_TMP[menu_livello] = "1";
$m_tmp = menu($M_TMP);
$m0 = str_replace("#MMUL-$k#",$m_tmp,$m0);
}
}
$M_TMP = $M[2];
$MENU_TMP = $MENU;
reset($MENU_TMP);
while(list($k, $v)=each($MENU_TMP)) {
$lev = menu_livello($k);
if($lev == "1") {
$M_TMP[menu_riferimento] = "$k";
$M_TMP[menu_livello] = "2";
$m_tmp = menu($M_TMP);
$m0 = str_replace("#MMUL-$k#",$m_tmp,$m0);
}
}
$M_TMP = $M[2];
$MENU_TMP = $MENU;
while(list($k, $v)=each($MENU_TMP)) {
$lev = menu_livello($k);
if($lev == "2") {
$m0 = str_replace("#MMUL-$k#","",$m0);
}
}
return $m0;
}
?>