sad_djeridi_ais
I'm new here

Alle Pageref Kinderknoten vom #global.node.parent

Hallo zusammen,

ich möchte die Metadaten Rechte von geschwichter Knoten auslesen.

Wen ich z.B. auf einem Menupunkt der Eben 0 clicke und der User keine lese Rechte auf die Startseite des Menupunktes hat,

dann soll er die Knoten, die auf der selben Ebene sind, prüfen. Wenn er dann auf einer der Geschwichter Lese Rechte hat, dann soll er auf seine Seite springen und anzeige.

Soweit bin ich:

$-- hier leist er die Rechte des Folders aus.

$CMS_SET(set_permissions, #global.node.parent.getMetaFormData.get(lang, "md_groups").get.getAllowed("access").toString(";"))$


<?php
$-- hier soll er die geschwichter des Folders auslesen und die uid auslesen

in dem Children Array sind am anfang immer 2 String Objekt drin die ich weg haben möchte. Kann man dem sagen, dass er nur die pageref kinder auslesen soll?

Sonst sind auch noch die geschwichter des #global.node.parent drin. Kann man die nur durch #global.node.parent.parent.children auslesen?

--$

$CMS_FOR(for_child,#global.node.parent.parent.Children())$
echo '$CMS_VALUE(for_child.getClass)$';
echo '<br>';

  $--im 2 D Array muss die url und das Recht der SEITE stehen --$
  $children[] = array("url" => "$CMS_REF(pageref:(for_child.uid))$", "groups" => "$CMS_VALUE(for_child.getMetaFormData.get(lang, "md_groups").get.getAllowed("access").toString(";"))$");
$CMS_END_FOR$

im for_child.uid ist die uid vom Folder gespeichert. Kann man nicht die uid von der Seite die drunter liegt auslesen?

Hier ist dann die Prüfung

<?php


if(!$_Application->ppc->set_permission_module('fsPagePermission')->setPagePermission("$CMS_VALUE(set_permissions)$")->checkPagePermission()){
   $url = $_Application->ppc->set_permission_module('fsSiblingPagePermission')->

               setPagePermission("$CMS_VALUE(set_permissions)$")->setChildrenMeta($children)->checkPagePermission();
   if($url != false){
    $_Application->prc->set_redirect_module('fsPageStdRedirect')->setUrl($url)->redirect();
   }
   else{
    $_Application->prc->set_redirect_module('fsPageStdRedirect')->setUrl("$CMS_REF(pageref:"homepage")$")->redirect();
   }
}

?>

Ist der Ansatz so richtig oder kann man es besser machen?

Ich hoffe ihr versteht mich.

Viele Grüße,

Aissam

0 Kudos
4 Replies
marza
I'm new here

Hallo Aissam,

nach Rücksprache unter Kollegen sind wir zum Schluß gekommen, dass Du den richtigen Ansatz gewählt hast. Uns fällt auch keine bessere Lösung ein.

Grüße Marian

0 Kudos

Hallo Marian,

und was ist mit den zwischen Fragen Smiley Happy Könnt ihr die mir beantworten

Sind 2 und fett makiert.

Viele Grüße,

Aissam

0 Kudos

Hallo Aissam,

zu Zwischenfrage 1)

Im ODFS an entsprechender Stelle zum Thema #global.node (seitenbezogene #global-Aufrufe) findest Du einen Verweis auf die Java-Klasse PageRef. Alle dort aufgeführten offentlichen Methoden stehen Dir zur Auswahl. Manche Getter-Methoden lassen sich ohne den Präfix "get" aufrufe:

#global.node.getParent() -> #global.node.parent

Ob Dein Aufruf funktioniert, kann ich leider nicht sagen, da ich das Projekt und dessen Struktur nicht kenne. Theoretisch sollte es möglich sein. Im Zweifelsfall immer die Methoden aus dem JavaDoc verwenden, damit bist Du auf der sicheren Seite.

Da Du die gefragte Struktur ($CMS_FOR(for_child,#global.node.parent.parent.children)$) bereits im nächsten Absatz verwendest, verstehe ich die Frage nicht so ganz. Anscheinend hat das ja funktioniert.

Oder meintest Du, wie man die Liste der Kinder filtert? Dazu gibt es natürlich eine auch Methode:

http://www.e-spirit.com/odfs52/access/de/espirit/firstspirit/access/store/StoreElement.html#getChild...

Vermutlich kannst Du die nur über ein Script richtig nutzen.

Ein Kollege gab mir gerade diesen Tipp, um z.B. nur Kinder vom Typ Section zu bekommen:

$CMS_FOR(for_section,#global.page.children(class("de.espirit.firstspirit.access.store.pagestore.Section"),true))$

Zu Zwischenfrage 2)

Wenn das "child" ein Object vom Typ StoreElement ist (was für eine PageRef stimmt), dann ist die Antwort ja, falls es weitere Kinder gibt bzw. das hängt wieder von Deinem Projekt ab, was ich nicht kenne. Also das ist das was ich unter "Kann man nicht die uid von der Seite die drunter liegt auslesen" verstanden habe.

Grüße Marian

0 Kudos

Hallo Marian,

danke für deine Antwort.

das mit der drunter liegende Seite habe ich mit findStartNode gelöst Smiley Happy

Den Rest habe ich auch so gelöst.

Viele Grüße,

Aissam

0 Kudos