Ich hab Redaxo 4.1.0 mit Simple User Addon Version 1.1
Mein Navigationstemplate ist ein bisschen abgewandeltes 3 Ebenen / Liste nur mit a-Tags von Thomas Blum.
Ich hab nun versucht in dieses Navigationstemplate einzubauen, dass geprüft wird, ob ein Menüpunkt für den angemeldeten Nutzer überhaupt erreichbar ist oder nicht.
Hier mal das abgewandelte Nav-Template ohne irgendwelche Rechte-Modifikationen:
- Code: Alles auswählen
<?php
$path = explode( '|', $this->getValue("path").$this->getValue("article_id"));
$path1 = $path[1];
$path2 = $path[2];
$path3 = $path[3];
$level1_navigation = "";
$level2_navigation = "";
$level3_navigation = "";
foreach (OOCategory::getRootCategories() as $lev1):
if($lev1->isOnline()):
$level1_navigation .= '<a class="menu" href="'.$lev1->getUrl().'">[ '.$lev1->getName().' ]</a>'."\n"; // momentan außer Funktion
if ($lev1->getId() == $path1) :
$lev1Size = sizeof($lev1->getChildren());
if($lev1Size != "0"):
foreach ($lev1->getChildren() as $lev2):
if ($lev2->isOnline()):
$level2_navigation .= '<a class="submenu" href="'.$lev2->getUrl().'">[ '.$lev2->getName().' ]</a> '."\n";
endif;
// ANFANG EBENE 3
$lev2Size = sizeof($lev2->getChildren());
if($lev2Size != "0" && in_array($lev2->getId(), $path)):
foreach ($lev2->getChildren() as $lev3):
if ($lev3->isOnline()):
$level3_navigation .= '<a class="submenu" href="'.$lev3->getUrl().'">[ '.$lev3->getName().' ]</a><br />'."\n";
endif;
endforeach;
endif;
// ENDE EBENE 3
endforeach;
endif;
endif;
endif;
endforeach;
?>
Und hier mein Versuch Gruppenrechte zu berücksichtigen:
- Code: Alles auswählen
<?php
$path = explode( '|', $this->getValue("path").$this->getValue("article_id"));
$path1 = $path[1];
$path2 = $path[2];
$path3 = $path[3];
$level1_navigation = "";
$level2_navigation = "";
$level3_navigation = "";
if (!function_exists('zugriffGruppeOk')){
function zugriffGruppeOk($nav){
// Zugriffsberechtigungen fuer Simple User 1.1 pruefen
if(OOAddon::isAvailable('simple_user'))
{
// auf User-Gruppen pruefen
$arrArticleGroupId = explode("|",$nav->getValue("art_type_group_id"));
if($arrArticleGroupId[1]!="")
{
$arrUserGroupId = explode("|+|",$_SESSION['USR_GROUP']);
if($_SESSION['USR_GROUP'] != "")
{
$chkSimpleUsrGrp = false;
foreach($arrUserGroupId as $usrGroupId)
{
if(in_array($usrGroupId,$arrArticleGroupId))
{
$chkSimpleUsrGrp = true;
}
}
}
}
else
{
$chkSimpleUsrGrp = true;
}
}
else
{
$chkSimpleUsrGrp = true;
}
return $chkSimpleUsrGrp;
}
}
foreach (OOCategory::getRootCategories() as $lev1):
if($lev1->isOnline() && zugriffGruppeOk($lev1)):
$level1_navigation .= '<a class="menu" href="'.$lev1->getUrl().'">[ '.$lev1->getName().' ]</a>'."\n"; // momentan außer Funktion
if ($lev1->getId() == $path1) :
$lev1Size = sizeof($lev1->getChildren());
if($lev1Size != "0"):
foreach ($lev1->getChildren() as $lev2):
if ($lev2->isOnline() && zugriffGruppeOk($lev2)):
$level2_navigation .= '<a class="submenu" href="'.$lev2->getUrl().'">[ '.$lev2->getName().' ]</a> '."\n";
endif;
// ANFANG EBENE 3
$lev2Size = sizeof($lev2->getChildren());
if($lev2Size != "0" && in_array($lev2->getId(), $path)):
foreach ($lev2->getChildren() as $lev3):
if ($lev3->isOnline() && zugriffGruppeOk($lev3)):
$level3_navigation .= '<a class="submenu" href="'.$lev3->getUrl().'">[ '.$lev3->getName().' ]</a><br />'."\n";
endif;
endforeach;
endif;
// ENDE EBENE 3
endforeach;
endif;
endif;
endif;
endforeach;
?>
Das funktioniert nur leider nicht so wie ich das eigentlich haben will...
Es richtet sich so nur nach dem Rootartikel: ist der Zugriff darauf berechtigt, wird der Menüpunkt angezeigt. Ist er es nicht, werden auch alle unterliegenden Berechtigungen angezeigt - das heißt es ist momentan total Egal, wie die Berechtigung für den Artikel selbst gesetzt ist.
Für meinen Versuch hab ich mir die Universelle <ul>Navigation (YAML) von raybeam zu hilfe genommen
Kann mir jemand sagen, was ich ändern muss, damit das klappt? (Damit nur die Menüpunkte angezeigt werden, auf die man gerade auch die Berechtigung hat?)

