Horizontale Navigation?!!

SkyBlader
Beiträge: 303
Registriert: Do 18. Mär 2004, 16:23
Wohnort: Ratingen / NRW
Kontaktdaten:

Beitrag von SkyBlader » Sa 8. Jan 2005, 21:19

alos, dieses modul werd ich nicht weiterentwickeln, vlt findet sich jemand anderes der den das reinschreibt ..

ich nehms auf jedenfall für mein multinav modul auf ... das ich aber nun endlcih mal testen und releasen muß /blush .. hatte das violl vergessen


gruß

stefan
Contenido 4.4.4/4.4.5 - Contenido 4.5.x

Module:sn_multinav für 4.5.x

i-fekt
Beiträge: 1520
Registriert: Mo 3. Jan 2005, 02:15
Wohnort: Chemnitz
Kontaktdaten:

Beitrag von i-fekt » Sa 8. Jan 2005, 21:27

Ist das echt so viel Aufwand? Du kennst dich in deinem Modul sehr gut aus und das ist doch bestimmt nicht so viel Aufwand?

Was soll ich bloss tun? Bitte bitte bitte :roll:

SkyBlader
Beiträge: 303
Registriert: Do 18. Mär 2004, 16:23
Wohnort: Ratingen / NRW
Kontaktdaten:

Beitrag von SkyBlader » So 9. Jan 2005, 12:06

ich setz mich am dienstag mal dran, heut und morgen hab ich keine zeit für
Contenido 4.4.4/4.4.5 - Contenido 4.5.x

Module:sn_multinav für 4.5.x

Zeitgeist
Beiträge: 205
Registriert: Fr 5. Sep 2003, 09:47
Wohnort: Hamburg
Kontaktdaten:

Beitrag von Zeitgeist » Mo 10. Jan 2005, 11:40

juchuuu...Morgen ist Dienstag :) ;)
Rechtschreibfehler sind nicht als "Fehler" sondern als Hommage an Pisa zu verstehen ;)
Keine Einträge im Errorlog :)
Contenido 4.4.4 - Firefox -

SkyBlader
Beiträge: 303
Registriert: Do 18. Mär 2004, 16:23
Wohnort: Ratingen / NRW
Kontaktdaten:

Beitrag von SkyBlader » Di 11. Jan 2005, 17:02

Sodele,

hab dat mal gecodet und das Modul mal reingehängt, Contenido/PHp meldet soweit mal kein Fehler, hab nur die reine Funktionaöität nicht getestet.

Im ModulConfig Bereich gibt es zwei Neue Eingabefelder, wobei für das Eingabe Fehld der ITEMS-Anzahl, Nach denen die Zeichenkette eingefügt werden soll, nicht auf gültigkeit gebrüft wird, wobei es beim Nichtsetzen oder einer enthaltenen Zeichen natürlcih in der Ausgabe rein gar nichts passiert ( bzw. sollte es dies. ). Es sei nochmal darauf hingewiesen, das dies nur ne fast&done&dirty Lösung ist, und daher auf entsprechende Überprüfungen verzichtet wurde. Im MultiNav werd ich wohl das ganze als EingabeMatrix implementieren, aber wohl auch erst in der übernächsten Version, da ich v1 davon nun möglichst bald releasen möchte.

So, nun zur NavMod:

Nenn es einfach mal SN_NavMod v0.6 alpha

HINWEIS: Ungetestet, daher verwendung auf eigene Gefahr !

History

Code: Alles auswählen

/***********************************************
* CONTENIDO MODUL
*
* Modulname    :	SN_NavMod
* Modulversion :	0.6 alpha 
* Author       :	Stefan Bürk
* Kontakt      :	Email: webmaster@skyblader.org
* Copyright    :	SkyBlader Networxx, Stefan Bürk
* C-Version    :	4.4
* Created      :	09-03-2004
* Modified     :	21-10-2004
*
* Beschreibung :
*
* Navigationsstruktur für Untermenüs mit 1 Navigationsebene,
* Ausgabe ist im Output Modul über Variabeln steuerbar.
* 
************************************************/

11.01.2005
==========

IN	Ausgabefeld ohne Überprüfung auf Gültigkeit für

	 " Hinzufügen einer Zeichenkette nach N-Navigationsitems " - Anzahl

	und für

	 " Hinzufügen einer Zeichenkette nach N-Navigationsitems " - Anzufügende Zeichenkette


OUT	Hinzufügen der Funktionalität zur Outputgenerierung für

	 " Hinzufügen einer Zeichenkette nach N-Navigationsitems "

21.10.2004
==========

IN	Entfernen der Defaultwerte, da diese immer eingetragen wurden wenn 
	Feld leerwar und zur Konfiguration gesprungen wurde

	Bei Auswahl von "-- kein --" anderen Wert nehmen, da der Wert "0" 
	in der DB auch eine Kategorie bezeichnet ---> "0" => "--kein--"

	Hinzufügen von Beschriftungsvariabeln, um ein Umstellen auf das
	Modul-Sprachsteuerungsfeature von 4.5.x / 4.6  vorzubereiten.

OUT	Überprüfungen eingebaut, um bei angabe von "-- kein --" auch wirklich
	keine Ausgabe zu generieren.

	Mehrfachunterstützung durch anpassungen im Code hergestellt.

21.09.2004
==========

OUT	Implementierung von zwei Funktionen, um für den Highlight Teil die
	Überprüfung, ob ein Entry hervorgehoben werden darf, auch bei Kinder
	ebene innerhalb des Kategoriebaumes sicherzustellen.

	Desweiteren wurde die im Inputteil als Konfigurierbar bereitgestellten
	Variabeln für die CSS-Klassenauswahl für Link und LinkHervorgehoben
	in der Routine nun berücksichtig.

IN	Auswahlschalter für HighlightingsÜberprüfung unter Berücksichtigung 
	von CHILD-Ids implementiert => cfg_check_parequal

IN	Konfiguration zur Konfigurierung für die CSS-Klasse für NavLink und 
	NavLink Hervorgehoben (Aktuelle Category)




20.09.2004
==========

IN	Implementierung von weiteren Konfigurationsmöglichkeiten für

	- VorLink
	- NachLink
	- LinkTrennzeichen
	- Anfang
	- Ende

	bei einem Aufbau der Linksammlungen für das dynamische Menü im
	folgenden Format:

	ANFANG + [ VorLink + {LINK} + NachLink ] + LinkTrennzeichen + [ VorLink + {LINK} + NachLink ] ..... + Ende

OUT	Anpassen der Ausgabeerstellungsroutingen, um die neue Konfigurierbarkeit in den
	Routinen zu berücksichtigen.



17.09.2004
==========

OUT	Erweiterung um weitere Konfigurationsvariablen für die Ausgabensteuerung,
	um eine weitere modularisierung zu bewerkstelligen.

	Dazu wurden unter anderem auch drei kleine Bugs entfernt, die vorher nicht
	aufgefallen sind, und erst durch die modularisierung zum tragen kamen.

30.06.2004
==========


out	Manuelle sortierung der CatIds auf Grund der PREID, da dies durch
	eine SQL Anweisung nicht zu bewerkstelligen ist.
	
	--> siehe http://www.contenido.de/forum/viewtopic.php?t=4576
	
in	Font und Select auf BackEnd CSS Klassen vom umgestellt.


19.03.2004
==========

out	DB-Abfrage 2 ( $sql ) lesbar für Otto-Normal-Verbraucher formatiert

17.03.2004
==========

out	Securitychecks implementiert um Injections zu unterbinden
	-	lokale Modul-Variablen initalizieren um Injects zu unterbinden
	-	Parametervariabeln gegen SQL-Injection-Versuche untersuchen
INPUT

Code: Alles auswählen

/***********************************************
* INPUT
************************************************/

// selected category
$selected 				= "CMS_VALUE[3200]";
$selected_var			= "CMS_VAR[3200]";
$selected_desc			= "Wähle die Kategorie aus:";

$selected2				= "CMS_VALUE[3201]";
$selected2_var			= "CMS_VAR[3201]";
$selected2_desc			= "Wähle die Home-Kategorie aus:";

// cfg_prelink
$cfg_prelink			= "CMS_VALUE[3202]";
$cfg_prelink_var		= "CMS_VAR[3202]";
$cfg_prelink_desc		= "Füge vor jedem Link hinzu:";

$cfg_postlink			= "CMS_VALUE[3203]";
$cfg_postlink_var		= "CMS_VAR[3203]";
$cfg_postlink_desc		= "Füge nach jedem Link hinzu:";

$cfg_linkdiv			= "CMS_VALUE[3204]";
$cfg_linkdiv_var		= "CMS_VAR[3204]";
$cfg_linkdiv_desc		= "Verwende als Trennung folgendes:";

$cfg_pre_str			= "CMS_VALUE[3205]";
$cfg_pre_str_var		= "CMS_VAR[3205]";
$cfg_pre_str_desc		= "Füge einmal am Anfang der Navigationsausgabe an:";

$cfg_post_str			= "CMS_VALUE[3206]";
$cfg_post_str_var		= "CMS_VAR[3206]";
$cfg_post_str_desc		= "Füge einmal am Ende der Navigationsausgabe an:";

$cfg_check_parequal		= "CMS_VALUE[3207]";
$cfg_check_parequal_var = "CMS_VAR[3207]";
$cfg_check_parequal_desc= "Auf Kategoriehighlight prüfen:";

$cfg_css_link			= "CMS_VALUE[3208]";
$cfg_css_link_var		= "CMS_VAR[3208]";
$cfg_css_link_desc		= "CSS-Klasse für normalen Navigationslink:";

$cfg_css_linkhl			= "CMS_VALUE[3209]";
$cfg_css_linkhl_var		= "CMS_VAR[3209]";
$cfg_css_linkhl_desc	= "CSS-Klasse für hervorgehobenen Navigationslink:";

$cfg_addstrafternumitems_num		= "CMS_VALUE[3210]";
$cfg_addstrafternumitems_num_var	= "CMS_VAR[3210]";
$cfg_addstrafternumitems_num_desc	= "Hinzufügen nach N-Navigationselementen - Anzahl:";

$cfg_addstrafternumitems_str		= "CMS_VALUE[3211]";
$cfg_addstrafternumitems_str_var	= "CMS_VAR[3211]";
$cfg_addstrafternumitems_str_desc	= "Hinzufügen nach N-Navigationselementen - Zeichenkette:";

echo "<table cellspacing=\"0\" cellpadding=\"10\" border=\"0\">
        <tr valign=\"top\">
          <td class=\"text_medium\">".$selected_desc."</td>
          <td class=\"text_medium\">
            <select class=\"text_medium\" name=\"".$selected_var."\">";
            if($selected!="--kein--" && $selected!=""){
             echo"<option value=\"--kein--\">--- kein ---</option>";

            }else{
            echo"<option selected=\"selected\" value=\"--kein--\">--- kein ---</option>";
            }

            // fetch all categorys
            $query = "	SELECT 
            			A.idcat, 
            			A.level, 
            			C.name 
            	
            		FROM  ".$cfg["tab"]["cat_tree"]." AS A, 
            		      ".$cfg["tab"]["cat"].     " AS B,  
            		      ".$cfg["tab"]["cat_lang"]." AS C 
            		      
            		WHERE 
            		 	A.idcat=B.idcat 
                     		AND B.idcat=C.idcat 
                     		AND C.idlang='$lang' 
                     		AND B.idclient='$client' 
                     		AND C.visible=1 ORDER BY A.idtree";
                     		
            // execute query
            $db->query($query);

            // loop result and build the options
            while ($db->next_record()) {

              // indent spacer
              $spaces = "|";

              // how many levels
              $levels = $db->f("level");

              for ($i = 0; $i < $levels; $i ++) {
                // add 2 spaces for every level
                $spaces = $spaces . "--";

              } // end for
              
              $spaces .= ">";


              if ($selected == $db->f("idcat")) {
                // selected category
                echo "<option selected=\"selected\" value=\"". $db->f("idcat") ."\">". $spaces . $db->f("name") ."</option>";

              } else {
                // category
                echo "<option value=\"". $db->f("idcat") ."\">". $spaces . $db->f("name") ."</option>";

              } // end if

            } // end while

echo "      </select>";

echo "    </td>
        </tr>
        <tr valign=\"top\">        
          <td class=\"text_medium\">".$selected2_desc."</td>
          <td class=\"text_medium\">
	
            <select class=\"text_medium\" name=\"".$selected2_var."\">";
            if($selected2!="--kein--" && $selected2!=""){
             echo"<option value=\"--kein--\">--- kein ---</option>";

            }else{
            echo"<option selected=\"selected\" value=\"--kein--\">--- kein ---</option>";
            }

            // fetch all categorys
            $query = "	SELECT 
            			A.idcat, 
            			A.level, 
            			C.name 
            	
            		FROM  ".$cfg["tab"]["cat_tree"]." AS A, 
            		      ".$cfg["tab"]["cat"].     " AS B,  
            		      ".$cfg["tab"]["cat_lang"]." AS C 
            		      
            		WHERE 
            		 	A.idcat=B.idcat 
                     		AND B.idcat=C.idcat 
                     		AND C.idlang='$lang' 
                     		AND B.idclient='$client' 
                     		AND C.visible=1 ORDER BY A.idtree";
                     		
            // execute query
            $db->query($query);

            // loop result and build the options
            while ($db->next_record()) {

              // indent spacer
              $spaces = "|";

              // how many levels
              $levels = $db->f("level");

              for ($i = 0; $i < $levels; $i ++) {
                // add 2 spaces for every level
                $spaces = $spaces . "--";

              } // end for
              
              $spaces .= ">";


              if ($selected2 == $db->f("idcat")) {
                // selected category
                echo "<option selected=\"selected\" value=\"". $db->f("idcat") ."\">". $spaces . $db->f("name") ."</option>";

              } else {
                // category
                echo "<option value=\"". $db->f("idcat") ."\">". $spaces . $db->f("name") ."</option>";

              } // end if

            } // end while

echo "      </select>";
echo "    </td>
        </tr>";

// *********************************************************************************************************
// *** cfg_prelink
// *********************************************************************************************************
echo "  <tr valign=\"top\">        
          <td class=\"text_medium\">".$cfg_prelink_desc."</td>
          <td class=\"text_medium\">";

echo "      <input class=\"text_medium\" name=\"".$cfg_prelink_var."\" value=\"".$cfg_prelink."\">";

echo "    </td>
        </tr>";
// *********************************************************************************************************
// *** end cfg_prelink
// *********************************************************************************************************
// *********************************************************************************************************
// *** cfg_postlink
// *********************************************************************************************************
echo "  <tr valign=\"top\">        
          <td class=\"text_medium\">".$cfg_postlink_desc."</td>
          <td class=\"text_medium\">";

echo "      <input class=\"text_medium\" name=\"".$cfg_postlink_var."\" value=\"".$cfg_postlink."\">";

echo "    </td>
        </tr>";
// *********************************************************************************************************
// *** end cfg_postlink
// *********************************************************************************************************
// *********************************************************************************************************
// *** cfg_linkdiv
// *********************************************************************************************************
echo "  <tr valign=\"top\">        
          <td class=\"text_medium\">".$cfg_linkdiv_desc."</td>
          <td class=\"text_medium\">";

echo "      <input class=\"text_medium\" name=\"".$cfg_linkdiv_var."\" value=\"".$cfg_linkdiv."\">";

echo "    </td>
        </tr>";
// *********************************************************************************************************
// *** end cfg_linkdiv
// *********************************************************************************************************
// *********************************************************************************************************
// *** cfg_pre_str
// *********************************************************************************************************
echo "  <tr valign=\"top\">        
          <td class=\"text_medium\">".$cfg_pre_str_desc."</td>
          <td class=\"text_medium\">";

echo "      <input class=\"text_medium\" name=\"".$cfg_pre_str_var."\" value=\"".$cfg_pre_str."\">";

echo "    </td>
        </tr>";
// *********************************************************************************************************
// *** end cfg_pre_str
// *********************************************************************************************************
// *********************************************************************************************************
// *** cfg_post_str
// *********************************************************************************************************
echo "  <tr valign=\"top\">        
          <td class=\"text_medium\">".$cfg_post_str_desc."</td>
          <td class=\"text_medium\">";

echo "      <input class=\"text_medium\" name=\"".$cfg_post_str_var."\" value=\"".$cfg_post_str."\">";

echo "    </td>
        </tr>";
// *********************************************************************************************************
// *** end cfg_post_str
// *********************************************************************************************************
// *********************************************************************************************************
// *** cfg_check_parequal
// *********************************************************************************************************
echo "  <tr valign=\"top\">        
          <td class=\"text_medium\">".$cfg_check_parequal_desc."</td>
          <td class=\"text_medium\">";

echo "      <input class=\"text_medium\" type=\"checkbox\" name=\"".$cfg_check_parequal_var."\" value=\"0\"";
if ( $cfg_check_parequal == 1 )
{
	echo " checked=checked";
}

echo ">";
echo "    </td>
        </tr>";
// *********************************************************************************************************
// *** end cfg_check_parequal
// *********************************************************************************************************
// *********************************************************************************************************
// *** cfg_css_link
// *********************************************************************************************************
echo "  <tr valign=\"top\">        
          <td class=\"text_medium\">".$cfg_css_link_desc."</td>
          <td class=\"text_medium\">";

echo "      <input class=\"text_medium\" type=\"text\" name=\"".$cfg_css_link_var."\" value=\"".$cfg_css_link."\">";

echo "    </td>
        </tr>";
// *********************************************************************************************************
// *** end cfg_css_link
// *********************************************************************************************************
// *********************************************************************************************************
// *** cfg_css_linkhl
// *********************************************************************************************************
echo "  <tr valign=\"top\">        
          <td class=\"text_medium\">".$cfg_css_linkhl_desc."</td>
          <td class=\"text_medium\">";

echo "      <input class=\"text_medium\" type=\"text\" name=\"".$cfg_css_linkhl_var."\" value=\"".$cfg_css_linkhl."\">";

echo "    </td>
        </tr>";
// *********************************************************************************************************
// *** end cfg_css_linkhl
// *********************************************************************************************************



// *********************************************************************************************************
// *** cfg_addstrafternumitems_num
// *********************************************************************************************************
/*
$cfg_addstrafternumitems_num		= "CMS_VALUE[3210]";
$cfg_addstrafternumitems_num_var	= "CMS_VAR[3210]";
$cfg_addstrafternumitems_num_desc	= "Hinzufügen nach N-Navigationselementen - Anzahl:";
*/
echo "  <tr valign=\"top\">        
          <td class=\"text_medium\">".$cfg_addstrafternumitems_num_desc."</td>
          <td class=\"text_medium\">";

echo "      <input class=\"text_medium\" type=\"text\" name=\"".$cfg_addstrafternumitems_num_var."\" value=\"".$cfg_addstrafternumitems_num."\">";

echo "    </td>
        </tr>";
// *********************************************************************************************************
// *** end cfg_css_linkhl
// *********************************************************************************************************



// *********************************************************************************************************
// *** cfg_css_linkhl
// *********************************************************************************************************
/*
$cfg_addstrafternumitems_str		= "CMS_VALUE[3211]";
$cfg_addstrafternumitems_str_var	= "CMS_VAR[3211]";
$cfg_addstrafternumitems_str_desc	= "Hinzufügen nach N-Navigationselementen - Zeichenkette:";
*/
echo "  <tr valign=\"top\">        
          <td class=\"text_medium\">".$cfg_addstrafternumitems_str_desc."</td>
          <td class=\"text_medium\">";

echo "      <input class=\"text_medium\" type=\"text\" name=\"".$cfg_addstrafternumitems_str_var."\" value=\"".$cfg_addstrafternumitems_str."\">";

echo "    </td>
        </tr>";
// *********************************************************************************************************
// *** end cfg_css_linkhl
// *********************************************************************************************************




echo "</table>";
OUTPUT

Code: Alles auswählen

<?php

/***********************************************
* OUTPUT
************************************************/

include_once($cfg["path"]["contenido"].$cfg["path"]["includes"]."functions.con.php");

// ****************************************************************************************************
// SECURITY-CHECKS
// ****************************************************************************************************

// SQL-Injection Überprüfungen und Work-Arounds

// lokale Variabeln initialisieren um Injections zu unterbinden
$db2       = "";
$catStart  = "";
$catPrev   = "";
$sTmpStr   = "";
$db2_sql   = "";
$catIds    = "";
$key       = "";
$val       = "";
$sql       = "";

// ****************************************************************************************************

// erstelle eine zweite DB-Klasseninstanz, da wir hier
// mit zwei Abfragen udn Resultsets arbeiten müssen
$db2 = new DB_Contenido;

/*
$eckkla_auf   = '::&nbsp;';
$eckkla_zu    = '';
$eckkla_trenn = '<br>';

$strBEGIN = '';
$strEND   = '';
*/

// Hole aus der Artikeldefinition die Ausgewählte Einstellungen
$catStart 						= "CMS_VALUE[3200]";
$catPrev  						= "CMS_VALUE[3201]";
$eckkla_auf   					= "CMS_VALUE[3202]";
$eckkla_zu    					= "CMS_VALUE[3203]";
$eckkla_trenn 					= "CMS_VALUE[3204]";
$strBEGIN 						= "CMS_VALUE[3205]";
$strEND   						= "CMS_VALUE[3206]";
$cfg_chkchildid 				= "CMS_VALUE[3207]";
$cfg_css_link   				= "CMS_VALUE[3208]";
$cfg_css_linkhl 				= "CMS_VALUE[3209]";
$cfg_addstrafternumitems_num 	= "CMS_VALUE[3210]";
$cfg_addstrafternumitems_str 	= "CMS_VALUE[3211]";


// * get catPrec Category and output CatName as [ BackTo ]  nav item


if ($catStart != "" && $catStart != "--kein--" ) {
  $sTmpStr = "";

        // Datenbankabfrage ( SQL QUERY ) aufbauen
        $sql = "	SELECT
              			CAT.idcat AS idcat,
              			name
           			FROM
              			".$cfg["tab"]["cat"]." AS CAT,
              			".$cfg["tab"]["cat_lang"]." AS CATLANG
              
                  	WHERE	CAT.idcat = ".$catPrev."
                     		AND CAT.idcat = CATLANG.idcat
                     		AND CATLANG.idlang = '$lang'
                     		AND CATLANG.visible = '1'";
                     
        // Datenbankabfrage durchführen
        $db->query($sql);


        // die einzelnen Recordsets der Datenbankabfrage durchgehen
        while ( $db->next_record() ) {

	   // überprüfung, ob schon ein Eintrag in der Ausgabevariabel ist
           if ( strlen($sTmpStr) == 0 ) {
               // ... Nein, dann die Formatierung für den ersten Eintrag verwenden
               // und den Eintrag der Ausgabevariabel hinzufügen
               $sTmpStr = $sTmpStr . $strBEGIN .  $eckkla_auf . '<a class="'.$cfg_css_link.'" href="front_content.php?idcat='.$db->f("idcat").'">'.$db->f("name").'</a>' . $eckkla_zu;
           }
           else
           {
               // ... Ja, dann die Formatierung für die weiteren Einträge verwenden und
               // den Eintrag der Ausgabevariabel hinzufügen
               $sTmpStr = $sTmpStr . $eckkla_trenn . $eckkla_auf . '<a class="'.$cfg_css_link.'" href="front_content.php?idcat='.$db->f("idcat").'">'.$db->f("name").'</a>' . $eckkla_zu;          
           }  // end if

        } // end while
	
                        
	$db2_sql = "	SELECT
				*
			FROM ". $cfg["tab"]["cat"] ." AS A
		
			WHERE
			
			  A.parentid = ". $catStart . "

                                                ORDER BY A.preid

                                                 ";

	// Abfrage ausführen
	$db2->query($db2_sql);

  	// Ermittlung aller Kategorie IDs der ausgesuchten
  	// Navigationsebene und speicherug in einem Array
	while ( $db2->next_record() ) {
       		// $catIds[] = $db2->f("idcat");
		$test_1[$db2->f("preid")] = $db2->f("idcat");
	}
	
/*
PREID => IDCAT  ( $test_1 )
Array ( 
	[0] 	=> 50 

	[26] 	=> 27 
	[27] 	=> 28 
	[28] 	=> 29 
	[29] 	=> 30 
	[30] 	=> 31 
	[31] 	=> 32 
	[32] 	=> 33 
	[33] 	=> 38 
	[34] 	=> 35 
	[35] 	=> 36 
	[36] 	=> 37 
	[38] 	=> 34 
	[50] 	=> 26 
)
------------------------------------ 
*/

// ---------------------------------------------
// sort ids
$ar_anz = count($test_1);
$lpre = 0;
$test_3 = "";
$ires = "";

for ( $sli = 1 ; $sli <= $ar_anz ; $sli++ )
{
	$ires  		= $test_1[$lpre];	
	$test_3[] 	= $test_1[$lpre];	
	$lpre  		= $ires;
}


// print_r($test_3); echo '<br><br>';
$catIds = $test_3;
// ---------------------------------------------

  // Überprüfung ob $catIds wirklich ein Array ist
  if ( is_array($catIds) ) {

    // die einzelnen IDs durchgegen
    $cntAddStrAfterNItems = 1;
    foreach($catIds as $key=>$val) {

       
        // Datenbankabfrage ( SQL QUERY ) aufbauen
        $sql = 	"	SELECT
              			CAT.idcat AS idcat,
              			name
           			FROM
              			".$cfg["tab"]["cat"]." AS CAT,
              			".$cfg["tab"]["cat_lang"]." AS CATLANG
              
                  	WHERE	CAT.idcat = ".$val."
                     		AND CAT.idcat = CATLANG.idcat
                     		AND CATLANG.idlang = '$lang'
                     		AND CATLANG.visible = '1'";

        // Datenbankabfrage durchführen
        $db->query($sql);


        // die einzelnen Recordsets der Datenbankabfrage durchgehen
        
        while ( $db->next_record() ) {
        	
        
	if ( $cfg_chkchildid && sn_check_if_child ( $idcat, $catStart ))
	{ 
        	// überprüfung, ob schon ein Eintrag in der Ausgabevariabel ist
           	if ( strlen($sTmpStr) == 0 ) {
               		// ... Nein, dann die Formatierung für den ersten Eintrag verwenden
               		// und den Eintrag der Ausgabevariabel hinzufügen
               		$sTmpStr = $sTmpStr . $strBEGIN .  $eckkla_auf . '<a class="'.$cfg_css_linkhl.'" href="front_content.php?idcat='.$db->f("idcat").'">'.$db->f("name").'</a>' . $eckkla_zu;
           	}
           	else
           	{
               		// ... Ja, dann die Formatierung für die weiteren Einträge verwenden und
               		// den Eintrag der Ausgabevariabel hinzufügen
               		$sTmpStr = $sTmpStr . $eckkla_trenn . $eckkla_auf . '<a class="'.$cfg_css_linkhl.'" href="front_content.php?idcat='.$db->f("idcat").'">'.$db->f("name").'</a>' . $eckkla_zu;          
           	}  // end if
	}
	else
	{ 
        	// überprüfung, ob schon ein Eintrag in der Ausgabevariabel ist
           	if ( strlen($sTmpStr) == 0 ) {
               		// ... Nein, dann die Formatierung für den ersten Eintrag verwenden
               		// und den Eintrag der Ausgabevariabel hinzufügen
               		$sTmpStr = $sTmpStr . $strBEGIN .  $eckkla_auf . '<a class="'.$cfg_css_link.'" href="front_content.php?idcat='.$db->f("idcat").'">'.$db->f("name").'</a>' . $eckkla_zu;
           	}
           	else
           	{
               		// ... Ja, dann die Formatierung für die weiteren Einträge verwenden und
               		// den Eintrag der Ausgabevariabel hinzufügen
               		$sTmpStr = $sTmpStr . $eckkla_trenn . $eckkla_auf . '<a class="'.$cfg_css_link.'" href="front_content.php?idcat='.$db->f("idcat").'">'.$db->f("name").'</a>' . $eckkla_zu;          
           	}  // end if
	}
	


        } // end while
        
    // Wenn N-Item ausgegeben wurden ...
    if ( $cntAddStrAfterNItems == $cfg_addstrafternumitems_num )
    {
    	     // Zeichenkette einfügen und Counter zurücksetzen
    		 $sTmpStr = $sTmpStr . $cfg_addstrafternumitems_str;
    	     $cntAddStrAfterNItems = 1;
    }
    else 
    {
    	// ansonsten Counter einfach um 1 erhöhen
		$cntAddStrAfterNItems = $cntAddStrAfterNItems + 1;
    } // end if
    
    }  // end foreach

    // END Zeichen $strEND anfügen
    $sTmpStr = $sTmpStr . $strEND;

    // Ausgabevariabel schreiben, da nun alle Einträge behandelt wurden.
    echo $sTmpStr;
  } // end if (is_array)


}


if ( $sn_navmod != "multiuse" ) {
$sn_navmod = "multiuse";


function sn_check_if_child ( $l_idcat, $l_paridcat )
{
	$bResult = false;
	$l_int   = $l_idcat;

	while ( $l_int != 0 && $l_int != $l_paridcat )
	{
		$l_int = get_parentid_from_idcat ( $l_int );

		if ( $l_int == $l_paridcat )
		{
			$bResult = true;
		} // end if
	} // end while
	
	return $bResult;
} // check_if_child

function get_parentid_from_idcat ( $l_idcat )
{
	$ldb = new DB_Contenido;
	$lsql= "SELECT * 
		FROM 	".$cfg["tab"]["cat"]." AS CAT,
              		".$cfg["tab"]["cat_lang"]." AS CATLANG
              
                WHERE	CAT.idcat = ".$l_idcat."
                     	AND CAT.idcat = CATLANG.idcat
                     	AND CATLANG.idlang = '$lang'
                     	AND CATLANG.visible = '1'";

	$ldb->query($lsql);

	while ( $ldb->next_record() )
	{
		$l_parid = $ldb->f("parentid");
	}

	return $l_parid;

} // end function get_parentid_from_idcat

} // end MULTIUSE Funktions
?> 
@craxx einfach mal probieren, oder warten bis der Test-Begeisterte Zeitgeist dies getan hat *g*.

So, definit Last Change am SN_NavMod ..... , alles andere wird nur noch ins MultiNav fließen

so long Stefan
Contenido 4.4.4/4.4.5 - Contenido 4.5.x

Module:sn_multinav für 4.5.x

i-fekt
Beiträge: 1520
Registriert: Mo 3. Jan 2005, 02:15
Wohnort: Chemnitz
Kontaktdaten:

Beitrag von i-fekt » Di 11. Jan 2005, 17:27

Hey damn, das Teil rockt!!! :D

Suuuuuuuuuuper SkyBlader, vielen Dank. :)

Ich teste es noch mal und berichte dann hier, das werden sehr viele andere sicher auch brauchen.

SkyBlader
Beiträge: 303
Registriert: Do 18. Mär 2004, 16:23
Wohnort: Ratingen / NRW
Kontaktdaten:

Beitrag von SkyBlader » Di 11. Jan 2005, 20:57

mhh, ganz so kann ich mir zwar noch kein anwendungszwekck für denken, aber für eine dynamische steuerung mit entsprechenden zeichenketten ( nach 3 | dann nach 5 | dann nach 2 ) zum beispiel viel eher ...

aber naja, viel spaß damit
Contenido 4.4.4/4.4.5 - Contenido 4.5.x

Module:sn_multinav für 4.5.x

i-fekt
Beiträge: 1520
Registriert: Mo 3. Jan 2005, 02:15
Wohnort: Chemnitz
Kontaktdaten:

Beitrag von i-fekt » Do 27. Jan 2005, 01:12

Das Modul ist zwar geil, leider gibt es aber in dieser 0.6 alpha einen Eintrag im Errorlog wie bei den vorigen Versionen.
An was lag das, wie kann man diesen fixen?

SkyBlader
Beiträge: 303
Registriert: Do 18. Mär 2004, 16:23
Wohnort: Ratingen / NRW
Kontaktdaten:

Beitrag von SkyBlader » Do 27. Jan 2005, 09:13

naja, der errorlog eintrag sagt hauptsächich aus, das in irgendeinem fall ein query erzeugt wird und ausgeführt wird, das dann einen Fehler enthält weil eine Variabel nicht geüllt wird.

Für die Funktionalität ist dat wurscht, da in diesem Fall kein Handlungsbedarf besteht.

Für den Admin ist das natürlich Nervig, versteh ich auch .. nur ich hab ehrlich nicht die Zeit die entsprechenden Überprüfung noch in dieses Modul einfließen zu lassen ... zumindestens jetzt.

Eigentlich sollte dieses Modul ja nach der v0.5 alpha nicht mehr weiterentwickelt werden, zumindestens von meiner Seite .... vlt findet sich ja ein neuer Maintainer für dieses Modul ... ansonsten kann ich dich leider nur vertrösten bis ich wieder die Zeit für dieses Modul habe bzw. die Tests und weiterausbau meines MultiNavs entdlich abgeschlossen sind ... nur leider ist das so komplex, das da sehr viele Fälle getestet/entbugget werden muß.

So long

Stefan
Contenido 4.4.4/4.4.5 - Contenido 4.5.x

Module:sn_multinav für 4.5.x

i-fekt
Beiträge: 1520
Registriert: Mo 3. Jan 2005, 02:15
Wohnort: Chemnitz
Kontaktdaten:

Beitrag von i-fekt » Do 27. Jan 2005, 09:29

Ich würde mich als Tester für dein Modul anbieten.

SkyBlader
Beiträge: 303
Registriert: Do 18. Mär 2004, 16:23
Wohnort: Ratingen / NRW
Kontaktdaten:

Beitrag von SkyBlader » Do 27. Jan 2005, 09:33

ok, hab mir dat ganze doch mal fix angeschaut.


hier also die v0.7 alpha ;)

CHANGELOG

Code: Alles auswählen

/***********************************************
* CONTENIDO MODUL
*
* Modulname    :	SN_NavMod
* Modulversion :	0.7 alpha 
* Author       :	Stefan Bürk
* Kontakt      :	Email: webmaster@skyblader.org
* Copyright    :	SkyBlader Networxx, Stefan Bürk
* C-Version    :	4.4
* Created      :	09-03-2004
* Modified     :	27-01-2005
*
* Beschreibung :
*
* Navigationsstruktur für Untermenüs mit 1 Navigationsebene,
* Ausgabe ist im Output Modul über Variabeln steuerbar.
* 
************************************************/

27.01.2005
==========

OUT	Zusätliche Überprüfung von $catPrev auf LEERSTRING und --kein-- hinzugefügt und
	ausführung der HTLM-Output Generierung nur in dem Fall das $catPrev weder Leer noch
	--KEIN-- enthält ==> ErrorLog Eintrag sollte dadurhc nicht mehr erscheinen.

11.01.2005
==========

IN	Ausgabefeld ohne Überprüfung auf Gültigkeit für

	 " Hinzufügen einer Zeichenkette nach N-Navigationsitems " - Anzahl

	und für

	 " Hinzufügen einer Zeichenkette nach N-Navigationsitems " - Anzufügende Zeichenkette


OUT	Hinzufügen der Funktionalität zur Outputgenerierung für

	 " Hinzufügen einer Zeichenkette nach N-Navigationsitems "

21.10.2004
==========

IN	Entfernen der Defaultwerte, da diese immer eingetragen wurden wenn 
	Feld leerwar und zur Konfiguration gesprungen wurde

	Bei Auswahl von "-- kein --" anderen Wert nehmen, da der Wert "0" 
	in der DB auch eine Kategorie bezeichnet ---> "0" => "--kein--"

	Hinzufügen von Beschriftungsvariabeln, um ein Umstellen auf das
	Modul-Sprachsteuerungsfeature von 4.5.x / 4.6  vorzubereiten.

OUT	Überprüfungen eingebaut, um bei angabe von "-- kein --" auch wirklich
	keine Ausgabe zu generieren.

	Mehrfachunterstützung durch anpassungen im Code hergestellt.

21.09.2004
==========

OUT	Implementierung von zwei Funktionen, um für den Highlight Teil die
	Überprüfung, ob ein Entry hervorgehoben werden darf, auch bei Kinder
	ebene innerhalb des Kategoriebaumes sicherzustellen.

	Desweiteren wurde die im Inputteil als Konfigurierbar bereitgestellten
	Variabeln für die CSS-Klassenauswahl für Link und LinkHervorgehoben
	in der Routine nun berücksichtig.

IN	Auswahlschalter für HighlightingsÜberprüfung unter Berücksichtigung 
	von CHILD-Ids implementiert => cfg_check_parequal

IN	Konfiguration zur Konfigurierung für die CSS-Klasse für NavLink und 
	NavLink Hervorgehoben (Aktuelle Category)




20.09.2004
==========

IN	Implementierung von weiteren Konfigurationsmöglichkeiten für

	- VorLink
	- NachLink
	- LinkTrennzeichen
	- Anfang
	- Ende

	bei einem Aufbau der Linksammlungen für das dynamische Menü im
	folgenden Format:

	ANFANG + [ VorLink + {LINK} + NachLink ] + LinkTrennzeichen + [ VorLink + {LINK} + NachLink ] ..... + Ende

OUT	Anpassen der Ausgabeerstellungsroutingen, um die neue Konfigurierbarkeit in den
	Routinen zu berücksichtigen.



17.09.2004
==========

OUT	Erweiterung um weitere Konfigurationsvariablen für die Ausgabensteuerung,
	um eine weitere modularisierung zu bewerkstelligen.

	Dazu wurden unter anderem auch drei kleine Bugs entfernt, die vorher nicht
	aufgefallen sind, und erst durch die modularisierung zum tragen kamen.

30.06.2004
==========


out	Manuelle sortierung der CatIds auf Grund der PREID, da dies durch
	eine SQL Anweisung nicht zu bewerkstelligen ist.
	
	--> siehe http://www.contenido.de/forum/viewtopic.php?t=4576
	
in	Font und Select auf BackEnd CSS Klassen vom umgestellt.


19.03.2004
==========

out	DB-Abfrage 2 ( $sql ) lesbar für Otto-Normal-Verbraucher formatiert

17.03.2004
==========

out	Securitychecks implementiert um Injections zu unterbinden
	-	lokale Modul-Variablen initalizieren um Injects zu unterbinden
	-	Parametervariabeln gegen SQL-Injection-Versuche untersuchen
SN_NAVMOD - INPUT

Code: Alles auswählen

/***********************************************
* INPUT
************************************************/

// selected category
$selected 				= "CMS_VALUE[3200]";
$selected_var			= "CMS_VAR[3200]";
$selected_desc			= "Wähle die Kategorie aus:";

$selected2				= "CMS_VALUE[3201]";
$selected2_var			= "CMS_VAR[3201]";
$selected2_desc			= "Wähle die Home-Kategorie aus:";

// cfg_prelink
$cfg_prelink			= "CMS_VALUE[3202]";
$cfg_prelink_var		= "CMS_VAR[3202]";
$cfg_prelink_desc		= "Füge vor jedem Link hinzu:";

$cfg_postlink			= "CMS_VALUE[3203]";
$cfg_postlink_var		= "CMS_VAR[3203]";
$cfg_postlink_desc		= "Füge nach jedem Link hinzu:";

$cfg_linkdiv			= "CMS_VALUE[3204]";
$cfg_linkdiv_var		= "CMS_VAR[3204]";
$cfg_linkdiv_desc		= "Verwende als Trennung folgendes:";

$cfg_pre_str			= "CMS_VALUE[3205]";
$cfg_pre_str_var		= "CMS_VAR[3205]";
$cfg_pre_str_desc		= "Füge einmal am Anfang der Navigationsausgabe an:";

$cfg_post_str			= "CMS_VALUE[3206]";
$cfg_post_str_var		= "CMS_VAR[3206]";
$cfg_post_str_desc		= "Füge einmal am Ende der Navigationsausgabe an:";

$cfg_check_parequal		= "CMS_VALUE[3207]";
$cfg_check_parequal_var = "CMS_VAR[3207]";
$cfg_check_parequal_desc= "Auf Kategoriehighlight prüfen:";

$cfg_css_link			= "CMS_VALUE[3208]";
$cfg_css_link_var		= "CMS_VAR[3208]";
$cfg_css_link_desc		= "CSS-Klasse für normalen Navigationslink:";

$cfg_css_linkhl			= "CMS_VALUE[3209]";
$cfg_css_linkhl_var		= "CMS_VAR[3209]";
$cfg_css_linkhl_desc	= "CSS-Klasse für hervorgehobenen Navigationslink:";

$cfg_addstrafternumitems_num		= "CMS_VALUE[3210]";
$cfg_addstrafternumitems_num_var	= "CMS_VAR[3210]";
$cfg_addstrafternumitems_num_desc	= "Hinzufügen nach N-Navigationselementen - Anzahl:";

$cfg_addstrafternumitems_str		= "CMS_VALUE[3211]";
$cfg_addstrafternumitems_str_var	= "CMS_VAR[3211]";
$cfg_addstrafternumitems_str_desc	= "Hinzufügen nach N-Navigationselementen - Zeichenkette:";

echo "<table cellspacing=\"0\" cellpadding=\"10\" border=\"0\">
        <tr valign=\"top\">
          <td class=\"text_medium\">".$selected_desc."</td>
          <td class=\"text_medium\">
            <select class=\"text_medium\" name=\"".$selected_var."\">";
            if($selected!="--kein--" && $selected!=""){
             echo"<option value=\"--kein--\">--- kein ---</option>";

            }else{
            echo"<option selected=\"selected\" value=\"--kein--\">--- kein ---</option>";
            }

            // fetch all categorys
            $query = "	SELECT 
            			A.idcat, 
            			A.level, 
            			C.name 
            	
            		FROM  ".$cfg["tab"]["cat_tree"]." AS A, 
            		      ".$cfg["tab"]["cat"].     " AS B,  
            		      ".$cfg["tab"]["cat_lang"]." AS C 
            		      
            		WHERE 
            		 	A.idcat=B.idcat 
                     		AND B.idcat=C.idcat 
                     		AND C.idlang='$lang' 
                     		AND B.idclient='$client' 
                     		AND C.visible=1 ORDER BY A.idtree";
                     		
            // execute query
            $db->query($query);

            // loop result and build the options
            while ($db->next_record()) {

              // indent spacer
              $spaces = "|";

              // how many levels
              $levels = $db->f("level");

              for ($i = 0; $i < $levels; $i ++) {
                // add 2 spaces for every level
                $spaces = $spaces . "--";

              } // end for
              
              $spaces .= ">";


              if ($selected == $db->f("idcat")) {
                // selected category
                echo "<option selected=\"selected\" value=\"". $db->f("idcat") ."\">". $spaces . $db->f("name") ."</option>";

              } else {
                // category
                echo "<option value=\"". $db->f("idcat") ."\">". $spaces . $db->f("name") ."</option>";

              } // end if

            } // end while

echo "      </select>";

echo "    </td>
        </tr>
        <tr valign=\"top\">        
          <td class=\"text_medium\">".$selected2_desc."</td>
          <td class=\"text_medium\">
	
            <select class=\"text_medium\" name=\"".$selected2_var."\">";
            if($selected2!="--kein--" && $selected2!=""){
             echo"<option value=\"--kein--\">--- kein ---</option>";

            }else{
            echo"<option selected=\"selected\" value=\"--kein--\">--- kein ---</option>";
            }

            // fetch all categorys
            $query = "	SELECT 
            			A.idcat, 
            			A.level, 
            			C.name 
            	
            		FROM  ".$cfg["tab"]["cat_tree"]." AS A, 
            		      ".$cfg["tab"]["cat"].     " AS B,  
            		      ".$cfg["tab"]["cat_lang"]." AS C 
            		      
            		WHERE 
            		 	A.idcat=B.idcat 
                     		AND B.idcat=C.idcat 
                     		AND C.idlang='$lang' 
                     		AND B.idclient='$client' 
                     		AND C.visible=1 ORDER BY A.idtree";
                     		
            // execute query
            $db->query($query);

            // loop result and build the options
            while ($db->next_record()) {

              // indent spacer
              $spaces = "|";

              // how many levels
              $levels = $db->f("level");

              for ($i = 0; $i < $levels; $i ++) {
                // add 2 spaces for every level
                $spaces = $spaces . "--";

              } // end for
              
              $spaces .= ">";


              if ($selected2 == $db->f("idcat")) {
                // selected category
                echo "<option selected=\"selected\" value=\"". $db->f("idcat") ."\">". $spaces . $db->f("name") ."</option>";

              } else {
                // category
                echo "<option value=\"". $db->f("idcat") ."\">". $spaces . $db->f("name") ."</option>";

              } // end if

            } // end while

echo "      </select>";
echo "    </td>
        </tr>";

// *********************************************************************************************************
// *** cfg_prelink
// *********************************************************************************************************
echo "  <tr valign=\"top\">        
          <td class=\"text_medium\">".$cfg_prelink_desc."</td>
          <td class=\"text_medium\">";

echo "      <input class=\"text_medium\" name=\"".$cfg_prelink_var."\" value=\"".$cfg_prelink."\">";

echo "    </td>
        </tr>";
// *********************************************************************************************************
// *** end cfg_prelink
// *********************************************************************************************************
// *********************************************************************************************************
// *** cfg_postlink
// *********************************************************************************************************
echo "  <tr valign=\"top\">        
          <td class=\"text_medium\">".$cfg_postlink_desc."</td>
          <td class=\"text_medium\">";

echo "      <input class=\"text_medium\" name=\"".$cfg_postlink_var."\" value=\"".$cfg_postlink."\">";

echo "    </td>
        </tr>";
// *********************************************************************************************************
// *** end cfg_postlink
// *********************************************************************************************************
// *********************************************************************************************************
// *** cfg_linkdiv
// *********************************************************************************************************
echo "  <tr valign=\"top\">        
          <td class=\"text_medium\">".$cfg_linkdiv_desc."</td>
          <td class=\"text_medium\">";

echo "      <input class=\"text_medium\" name=\"".$cfg_linkdiv_var."\" value=\"".$cfg_linkdiv."\">";

echo "    </td>
        </tr>";
// *********************************************************************************************************
// *** end cfg_linkdiv
// *********************************************************************************************************
// *********************************************************************************************************
// *** cfg_pre_str
// *********************************************************************************************************
echo "  <tr valign=\"top\">        
          <td class=\"text_medium\">".$cfg_pre_str_desc."</td>
          <td class=\"text_medium\">";

echo "      <input class=\"text_medium\" name=\"".$cfg_pre_str_var."\" value=\"".$cfg_pre_str."\">";

echo "    </td>
        </tr>";
// *********************************************************************************************************
// *** end cfg_pre_str
// *********************************************************************************************************
// *********************************************************************************************************
// *** cfg_post_str
// *********************************************************************************************************
echo "  <tr valign=\"top\">        
          <td class=\"text_medium\">".$cfg_post_str_desc."</td>
          <td class=\"text_medium\">";

echo "      <input class=\"text_medium\" name=\"".$cfg_post_str_var."\" value=\"".$cfg_post_str."\">";

echo "    </td>
        </tr>";
// *********************************************************************************************************
// *** end cfg_post_str
// *********************************************************************************************************
// *********************************************************************************************************
// *** cfg_check_parequal
// *********************************************************************************************************
echo "  <tr valign=\"top\">        
          <td class=\"text_medium\">".$cfg_check_parequal_desc."</td>
          <td class=\"text_medium\">";

echo "      <input class=\"text_medium\" type=\"checkbox\" name=\"".$cfg_check_parequal_var."\" value=\"0\"";
if ( $cfg_check_parequal == 1 )
{
	echo " checked=checked";
}

echo ">";
echo "    </td>
        </tr>";
// *********************************************************************************************************
// *** end cfg_check_parequal
// *********************************************************************************************************
// *********************************************************************************************************
// *** cfg_css_link
// *********************************************************************************************************
echo "  <tr valign=\"top\">        
          <td class=\"text_medium\">".$cfg_css_link_desc."</td>
          <td class=\"text_medium\">";

echo "      <input class=\"text_medium\" type=\"text\" name=\"".$cfg_css_link_var."\" value=\"".$cfg_css_link."\">";

echo "    </td>
        </tr>";
// *********************************************************************************************************
// *** end cfg_css_link
// *********************************************************************************************************
// *********************************************************************************************************
// *** cfg_css_linkhl
// *********************************************************************************************************
echo "  <tr valign=\"top\">        
          <td class=\"text_medium\">".$cfg_css_linkhl_desc."</td>
          <td class=\"text_medium\">";

echo "      <input class=\"text_medium\" type=\"text\" name=\"".$cfg_css_linkhl_var."\" value=\"".$cfg_css_linkhl."\">";

echo "    </td>
        </tr>";
// *********************************************************************************************************
// *** end cfg_css_linkhl
// *********************************************************************************************************



// *********************************************************************************************************
// *** cfg_addstrafternumitems_num
// *********************************************************************************************************
/*
$cfg_addstrafternumitems_num		= "CMS_VALUE[3210]";
$cfg_addstrafternumitems_num_var	= "CMS_VAR[3210]";
$cfg_addstrafternumitems_num_desc	= "Hinzufügen nach N-Navigationselementen - Anzahl:";
*/
echo "  <tr valign=\"top\">        
          <td class=\"text_medium\">".$cfg_addstrafternumitems_num_desc."</td>
          <td class=\"text_medium\">";

echo "      <input class=\"text_medium\" type=\"text\" name=\"".$cfg_addstrafternumitems_num_var."\" value=\"".$cfg_addstrafternumitems_num."\">";

echo "    </td>
        </tr>";
// *********************************************************************************************************
// *** end cfg_css_linkhl
// *********************************************************************************************************



// *********************************************************************************************************
// *** cfg_css_linkhl
// *********************************************************************************************************
/*
$cfg_addstrafternumitems_str		= "CMS_VALUE[3211]";
$cfg_addstrafternumitems_str_var	= "CMS_VAR[3211]";
$cfg_addstrafternumitems_str_desc	= "Hinzufügen nach N-Navigationselementen - Zeichenkette:";
*/
echo "  <tr valign=\"top\">        
          <td class=\"text_medium\">".$cfg_addstrafternumitems_str_desc."</td>
          <td class=\"text_medium\">";

echo "      <input class=\"text_medium\" type=\"text\" name=\"".$cfg_addstrafternumitems_str_var."\" value=\"".$cfg_addstrafternumitems_str."\">";

echo "    </td>
        </tr>";
// *********************************************************************************************************
// *** end cfg_css_linkhl
// *********************************************************************************************************




echo "</table>";
SN_NAVMOD - OUTPUT

Code: Alles auswählen

<?php

/***********************************************
* OUTPUT
************************************************/

include_once($cfg["path"]["contenido"].$cfg["path"]["includes"]."functions.con.php");

// ****************************************************************************************************
// SECURITY-CHECKS
// ****************************************************************************************************

// SQL-Injection Überprüfungen und Work-Arounds

// lokale Variabeln initialisieren um Injections zu unterbinden
$db2       = "";
$catStart  = "";
$catPrev   = "";
$sTmpStr   = "";
$db2_sql   = "";
$catIds    = "";
$key       = "";
$val       = "";
$sql       = "";

// ****************************************************************************************************

// erstelle eine zweite DB-Klasseninstanz, da wir hier
// mit zwei Abfragen udn Resultsets arbeiten müssen
$db2 = new DB_Contenido;

/*
$eckkla_auf   = '::&nbsp;';
$eckkla_zu    = '';
$eckkla_trenn = '<br>';

$strBEGIN = '';
$strEND   = '';
*/

// Hole aus der Artikeldefinition die Ausgewählte Einstellungen
$catStart 						= "CMS_VALUE[3200]";
$catPrev  						= "CMS_VALUE[3201]";
$eckkla_auf   					= "CMS_VALUE[3202]";
$eckkla_zu    					= "CMS_VALUE[3203]";
$eckkla_trenn 					= "CMS_VALUE[3204]";
$strBEGIN 						= "CMS_VALUE[3205]";
$strEND   						= "CMS_VALUE[3206]";
$cfg_chkchildid 				= "CMS_VALUE[3207]";
$cfg_css_link   				= "CMS_VALUE[3208]";
$cfg_css_linkhl 				= "CMS_VALUE[3209]";
$cfg_addstrafternumitems_num 	= "CMS_VALUE[3210]";
$cfg_addstrafternumitems_str 	= "CMS_VALUE[3211]";


// * get catPrec Category and output CatName as [ BackTo ]  nav item


if ($catStart != "" && $catStart != "--kein--" ) {
  $sTmpStr = "";

  		if ( $catPrev != "" && $catPrev != "--kein--" ) {
        // Datenbankabfrage ( SQL QUERY ) aufbauen
        $sql = "	SELECT
              			CAT.idcat AS idcat,
              			name
           			FROM
              			".$cfg["tab"]["cat"]." AS CAT,
              			".$cfg["tab"]["cat_lang"]." AS CATLANG
              
                  	WHERE	CAT.idcat = ".$catPrev."
                     		AND CAT.idcat = CATLANG.idcat
                     		AND CATLANG.idlang = '$lang'
                     		AND CATLANG.visible = '1'";
                     
        // Datenbankabfrage durchführen
        $db->query($sql);


        // die einzelnen Recordsets der Datenbankabfrage durchgehen
        while ( $db->next_record() ) {

	   // überprüfung, ob schon ein Eintrag in der Ausgabevariabel ist
           if ( strlen($sTmpStr) == 0 ) {
               // ... Nein, dann die Formatierung für den ersten Eintrag verwenden
               // und den Eintrag der Ausgabevariabel hinzufügen
               $sTmpStr = $sTmpStr . $strBEGIN .  $eckkla_auf . '<a class="'.$cfg_css_link.'" href="front_content.php?idcat='.$db->f("idcat").'">'.$db->f("name").'</a>' . $eckkla_zu;
           }
           else
           {
               // ... Ja, dann die Formatierung für die weiteren Einträge verwenden und
               // den Eintrag der Ausgabevariabel hinzufügen
               $sTmpStr = $sTmpStr . $eckkla_trenn . $eckkla_auf . '<a class="'.$cfg_css_link.'" href="front_content.php?idcat='.$db->f("idcat").'">'.$db->f("name").'</a>' . $eckkla_zu;          
           }  // end if

        } // end while
        
  		} // end $catPrev überprüfung
	
                        
	$db2_sql = "	SELECT
				*
			FROM ". $cfg["tab"]["cat"] ." AS A
		
			WHERE
			
			  A.parentid = ". $catStart . "

                                                ORDER BY A.preid

                                                 ";

	// Abfrage ausführen
	$db2->query($db2_sql);

  	// Ermittlung aller Kategorie IDs der ausgesuchten
  	// Navigationsebene und speicherug in einem Array
	while ( $db2->next_record() ) {
       		// $catIds[] = $db2->f("idcat");
		$test_1[$db2->f("preid")] = $db2->f("idcat");
	}
	
/*
PREID => IDCAT  ( $test_1 )
Array ( 
	[0] 	=> 50 

	[26] 	=> 27 
	[27] 	=> 28 
	[28] 	=> 29 
	[29] 	=> 30 
	[30] 	=> 31 
	[31] 	=> 32 
	[32] 	=> 33 
	[33] 	=> 38 
	[34] 	=> 35 
	[35] 	=> 36 
	[36] 	=> 37 
	[38] 	=> 34 
	[50] 	=> 26 
)
------------------------------------ 
*/

// ---------------------------------------------
// sort ids
$ar_anz = count($test_1);
$lpre = 0;
$test_3 = "";
$ires = "";

for ( $sli = 1 ; $sli <= $ar_anz ; $sli++ )
{
	$ires  		= $test_1[$lpre];	
	$test_3[] 	= $test_1[$lpre];	
	$lpre  		= $ires;
}


// print_r($test_3); echo '<br><br>';
$catIds = $test_3;
// ---------------------------------------------

  // Überprüfung ob $catIds wirklich ein Array ist
  if ( is_array($catIds) ) {

    // die einzelnen IDs durchgegen
    $cntAddStrAfterNItems = 1;
    foreach($catIds as $key=>$val) {

       
        // Datenbankabfrage ( SQL QUERY ) aufbauen
        $sql = 	"	SELECT
              			CAT.idcat AS idcat,
              			name
           			FROM
              			".$cfg["tab"]["cat"]." AS CAT,
              			".$cfg["tab"]["cat_lang"]." AS CATLANG
              
                  	WHERE	CAT.idcat = ".$val."
                     		AND CAT.idcat = CATLANG.idcat
                     		AND CATLANG.idlang = '$lang'
                     		AND CATLANG.visible = '1'";

        // Datenbankabfrage durchführen
        $db->query($sql);


        // die einzelnen Recordsets der Datenbankabfrage durchgehen
        
        while ( $db->next_record() ) {
        	
        
	if ( $cfg_chkchildid && sn_check_if_child ( $idcat, $catStart ))
	{ 
        	// überprüfung, ob schon ein Eintrag in der Ausgabevariabel ist
           	if ( strlen($sTmpStr) == 0 ) {
               		// ... Nein, dann die Formatierung für den ersten Eintrag verwenden
               		// und den Eintrag der Ausgabevariabel hinzufügen
               		$sTmpStr = $sTmpStr . $strBEGIN .  $eckkla_auf . '<a class="'.$cfg_css_linkhl.'" href="front_content.php?idcat='.$db->f("idcat").'">'.$db->f("name").'</a>' . $eckkla_zu;
           	}
           	else
           	{
               		// ... Ja, dann die Formatierung für die weiteren Einträge verwenden und
               		// den Eintrag der Ausgabevariabel hinzufügen
               		$sTmpStr = $sTmpStr . $eckkla_trenn . $eckkla_auf . '<a class="'.$cfg_css_linkhl.'" href="front_content.php?idcat='.$db->f("idcat").'">'.$db->f("name").'</a>' . $eckkla_zu;          
           	}  // end if
	}
	else
	{ 
        	// überprüfung, ob schon ein Eintrag in der Ausgabevariabel ist
           	if ( strlen($sTmpStr) == 0 ) {
               		// ... Nein, dann die Formatierung für den ersten Eintrag verwenden
               		// und den Eintrag der Ausgabevariabel hinzufügen
               		$sTmpStr = $sTmpStr . $strBEGIN .  $eckkla_auf . '<a class="'.$cfg_css_link.'" href="front_content.php?idcat='.$db->f("idcat").'">'.$db->f("name").'</a>' . $eckkla_zu;
           	}
           	else
           	{
               		// ... Ja, dann die Formatierung für die weiteren Einträge verwenden und
               		// den Eintrag der Ausgabevariabel hinzufügen
               		$sTmpStr = $sTmpStr . $eckkla_trenn . $eckkla_auf . '<a class="'.$cfg_css_link.'" href="front_content.php?idcat='.$db->f("idcat").'">'.$db->f("name").'</a>' . $eckkla_zu;          
           	}  // end if
	}
	


        } // end while
        
    // Wenn N-Item ausgegeben wurden ...
    if ( $cntAddStrAfterNItems == $cfg_addstrafternumitems_num )
    {
    	     // Zeichenkette einfügen und Counter zurücksetzen
    		 $sTmpStr = $sTmpStr . $cfg_addstrafternumitems_str;
    	     $cntAddStrAfterNItems = 1;
    }
    else 
    {
    	// ansonsten Counter einfach um 1 erhöhen
		$cntAddStrAfterNItems = $cntAddStrAfterNItems + 1;
    } // end if
    
    }  // end foreach

    // END Zeichen $strEND anfügen
    $sTmpStr = $sTmpStr . $strEND;

    // Ausgabevariabel schreiben, da nun alle Einträge behandelt wurden.
    echo $sTmpStr;
  } // end if (is_array)


}


if ( $sn_navmod != "multiuse" ) {
$sn_navmod = "multiuse";


function sn_check_if_child ( $l_idcat, $l_paridcat )
{
	$bResult = false;
	$l_int   = $l_idcat;

	while ( $l_int != 0 && $l_int != $l_paridcat )
	{
		$l_int = get_parentid_from_idcat ( $l_int );

		if ( $l_int == $l_paridcat )
		{
			$bResult = true;
		} // end if
	} // end while
	
	return $bResult;
} // check_if_child

function get_parentid_from_idcat ( $l_idcat )
{
	$ldb = new DB_Contenido;
	$lsql= "SELECT * 
		FROM 	".$cfg["tab"]["cat"]." AS CAT,
              		".$cfg["tab"]["cat_lang"]." AS CATLANG
              
                WHERE	CAT.idcat = ".$l_idcat."
                     	AND CAT.idcat = CATLANG.idcat
                     	AND CATLANG.idlang = '$lang'
                     	AND CATLANG.visible = '1'";

	$ldb->query($lsql);

	while ( $ldb->next_record() )
	{
		$l_parid = $ldb->f("parentid");
	}

	return $l_parid;

} // end function get_parentid_from_idcat

} // end MULTIUSE Funktions
?> 
Mit dem Hinzufügen einer Überprüfung der $catPrev einstellung (siehe CHANGELOG) sollte das Problem mit dem ErrorLog gelöst sein.

Und zwar sollte der eintrag nur dann Erscheinen, wenn catPrev ( Zurück Kategorie ) nicht gesetzt bzw auf --KEIN-- gestellt war.

Ergo sollte folgendende Threads damit erledigt sein:

http://contenido.org/forum/viewtopic.ph ... highlight=
http://contenido.org/forum/viewtopic.ph ... highlight=


Mal ne Anmerkung Craxx .. ich find dat schon ein wenig komisch das du zu einem Problem an mindestens 3 Threads das Problem verschieden Darstellst, obwohl es immer nur um das Modul hier geht. Naja, jedem das seine. Nur in Zukunft folgednes .. Supp zu meinen Modulen immer nur im jeweiligen thread.

So long

Stefan

So long

Stefan
Contenido 4.4.4/4.4.5 - Contenido 4.5.x

Module:sn_multinav für 4.5.x

i-fekt
Beiträge: 1520
Registriert: Mo 3. Jan 2005, 02:15
Wohnort: Chemnitz
Kontaktdaten:

Beitrag von i-fekt » Do 27. Jan 2005, 10:51

Ich habe das erst nach und nach gemerkt was los war u dass es alles im Grunde um ein Modul ging. ;) Da waren die Threads schon erstellt.

SkyBlader
Beiträge: 303
Registriert: Do 18. Mär 2004, 16:23
Wohnort: Ratingen / NRW
Kontaktdaten:

Beitrag von SkyBlader » Do 27. Jan 2005, 11:46

interessant wäre ob das prob nu behohen ist .... hab kein entsprechendes TestFeld atm zur hand ...
Contenido 4.4.4/4.4.5 - Contenido 4.5.x

Module:sn_multinav für 4.5.x

i-fekt
Beiträge: 1520
Registriert: Mo 3. Jan 2005, 02:15
Wohnort: Chemnitz
Kontaktdaten:

Beitrag von i-fekt » Do 27. Jan 2005, 12:01

Teste es in der Mittagspause mal.

Zeitgeist
Beiträge: 205
Registriert: Fr 5. Sep 2003, 09:47
Wohnort: Hamburg
Kontaktdaten:

Beitrag von Zeitgeist » Do 27. Jan 2005, 12:10

grml..funkt wie gewohnt gut und zuverlässig ;)

Habs bisher im kleinsten Modus eingebunden aber bisher keine Probs

wie immer "stolz" auf Dich ;)

Gruß
TimeSpirit


PS: grml grml...ich setz das ja mit dem "IFrame" Modul ein, wenn ich doch nur das Template ändern könnte ohne in alle Unterseiten rein zu müssen und die anzupassen....jedesmal 15 Seiten/configs zu ändern...da müsste es mal "Globale" Möglichkeiten geben...

www.Tropenhaus-Hamburg.de -> Lebendtiere
Rechtschreibfehler sind nicht als "Fehler" sondern als Hommage an Pisa zu verstehen ;)
Keine Einträge im Errorlog :)
Contenido 4.4.4 - Firefox -

Gesperrt