Menuverwaltung -> Nested Lists & unbestimmte Tiefe

Das Forum soll der Ablage von Lösungen für immer wieder auftauchende Problemstellungen dienen. // This forum contains solutions to problems that frequently occur.
Antworten
Coach83
Beiträge: 271
Registriert: 13.05.2010, 17:33:12
Kontaktdaten:

Menuverwaltung -> Nested Lists & unbestimmte Tiefe

Beitrag von Coach83 » 22.10.2014, 11:32:37

Hallo zusammen,

ich baue mir gerade in einer ini-Datei ein Menü zusammen - das ich anschließend beim Setup dann in der DB speichern will.
Der Aufbau meiner Datei sieht so aus:
[Backend]
home = "Startseite"
messaging = "Nachrichten"
polls = "Abstimmungen"

amgt = "Artikelverwaltung"
amgt.articles = "Artikel"
amgt.keywords = "Schlüsselwörter"
amgt.categories = "Kategorien"
amgt.settings = "Einstellungen"

tmgt = "Mannschaftsverwaltung"
tmgt.teammember = "Spieler"
tmgt.team = "Mannschaften"
tmgt.teamcategory = "Mannschaftskategorien"
tmgt.training = "Trainingszeiten"
tmgt.places = "Trainingsorte"
tmgt.plans = "Trainingspläne"

administration = "Administration"
administration.stats = "Statistiken"
administration.load = "Auslastung"
administration.visitors = "Besucher"
administration.logs = "Logdateien"
administration.menu = "Menüverwaltung"

support = "Support & FAQ"
support.requests = "Anfragen"
support.faq.questions = "Häufig gestellte Fragen"
support.faq.cats = "FAQ Kategorien"

fmgt = "Forenverwaltung"
fmgt.topics = "Themen"
fmgt.boards = "Boards"
fmgt.mods = "Moderatoren"
fmgt.comments = "Kommentare"
fmgt.settings = "Einstellungen"

media = "Medien"
media.upload = "Upload"
media.fotos = "Fotos"
media.videos = "Videos"
media.music = "Musik"
media.docs = "Dokumente"
media.settings = "Einstellungen"
Bin bisher auf diesem Stand:

Code: Alles auswählen

foreach ($menuList->getSectionNames() as $name) { 
    $menuManager->createRootNode($name);
        }
Damit werden mir die root_nodes erstellt (einfach den maximalen rgt und lft erhöhen). wie durchlaufe ich jetzt diese ini-Datei und was tue ich, wenn die Struktur mehrere Ebenen hat?

Benutzeravatar
dr.e.
Administrator
Beiträge: 4527
Registriert: 04.11.2007, 16:13:53

Re: Menuverwaltung -> Nested Lists & unbestimmte Tiefe

Beitrag von dr.e. » 22.10.2014, 13:15:09

Hallo Coach,

das Interface Configuration hat folgende Methoden, die dir dabei helfen können:
  • getValue(): liest einen konkreten Wert aus.
  • getSection(): liefert dir eine (Sub-)Sektion zurück.
Um die verschiedenen Ebenen zu durchlaufen kannst du diese in einer rekursiven Abfrage oder in einem konkreten Zugriff einsetzen. Den Wert Videos kannst du beispielsweise per

Code: Alles auswählen

$menuList->getSection('media')->getValue('upload') 
auslesen. Die Definition von
media = "Medien"
media.upload = "Upload"
überscheibt sich gegenseitig. Hier kannst du entweder eine weitere Sektion (wie auch [Backend]) oder in der Subsektion ein

Code: Alles auswählen

media.name = "Medien"
oder ähnliches definieren.

Hoffe das hilft dir weiter.
Viele Grüße,
Christian

Coach83
Beiträge: 271
Registriert: 13.05.2010, 17:33:12
Kontaktdaten:

Re: Menuverwaltung -> Nested Lists & unbestimmte Tiefe

Beitrag von Coach83 » 23.10.2014, 07:52:37

Guten Morgen,

ich hab jetzt ein Array, das folgendermaßen aussieht:

Code: Alles auswählen

array(11) {
  ["Home"]=>
  array(1) {
    ["home"]=>
    string(10) "Startseite"
  }
  ["messaging"]=>
  array(1) {
    ["home"]=>
    string(11) "Nachrichten"
  }
  ["polls"]=>
  array(1) {
    ["home"]=>
    string(12) "Abstimmungen"
  }
  ["amgt"]=>
  array(6) {
    ["home"]=>
    string(17) "Artikelverwaltung"
    ["articles.articles"]=>
    string(7) "Artikel"
    ["articles.keywords"]=>
    string(17) "Schlüsselwörter"
    ["articles.categories"]=>
    string(10) "Kategorien"
    ["settings"]=>
    string(13) "Einstellungen"
    ["articles"]=>
    array(3) {
      ["articles"]=>
      string(7) "Artikel"
      ["keywords"]=>
      string(17) "Schlüsselwörter"
      ["categories"]=>
      string(10) "Kategorien"
    }
  }
  ["tmgt"]=>
  array(7) {
    ["home"]=>
    string(21) "Mannschaftsverwaltung"
    ["teammember"]=>
    string(7) "Spieler"
    ["team"]=>
    string(12) "Mannschaften"
    ["teamcategory"]=>
    string(21) "Mannschaftskategorien"
    ["training"]=>
    string(15) "Trainingszeiten"
    ["places"]=>
    string(13) "Trainingsorte"
    ["plans"]=>
    string(15) "Trainingspläne"
  }
  ["administration"]=>
  array(7) {
    ["home"]=>
    string(14) "Administration"
    ["stats"]=>
    string(11) "Statistiken"
    ["load"]=>
    string(10) "Auslastung"
    ["visitors"]=>
    string(8) "Besucher"
    ["google"]=>
    string(16) "Google Analytics"
    ["logs"]=>
    string(10) "Logdateien"
    ["menu"]=>
    string(15) "Menüverwaltung"
  }
  ["bmgt"]=>
  array(8) {
    ["home"]=>
    string(9) "Wettbüro"
    ["match.create"]=>
    string(15) "Wette erstellen"
    ["match.all"]=>
    string(11) "Alle Wetten"
    ["match.running"]=>
    string(15) "Laufende Wetten"
    ["match.ended"]=>
    string(15) "Beendete Wetten"
    ["ranking"]=>
    string(12) "Auswertungen"
    ["settings"]=>
    string(13) "Einstellungen"
    ["match"]=>
    array(4) {
      ["create"]=>
      string(15) "Wette erstellen"
      ["all"]=>
      string(11) "Alle Wetten"
      ["running"]=>
      string(15) "Laufende Wetten"
      ["ended"]=>
      string(15) "Beendete Wetten"
    }
  }
  ["support"]=>
  array(5) {
    ["home"]=>
    string(13) "Support & FAQ"
    ["requests"]=>
    string(8) "Anfragen"
    ["questions"]=>
    string(24) "Häufig gestellte Fragen"
    ["faq.cats"]=>
    string(14) "FAQ Kategorien"
    ["faq"]=>
    array(1) {
      ["cats"]=>
      string(14) "FAQ Kategorien"
    }
  }
  ["fmgt"]=>
  array(6) {
    ["home"]=>
    string(15) "Forenverwaltung"
    ["topics"]=>
    string(6) "Themen"
    ["boards"]=>
    string(6) "Boards"
    ["mods"]=>
    string(11) "Moderatoren"
    ["comments"]=>
    string(10) "Kommentare"
    ["settings"]=>
    string(13) "Einstellungen"
  }
  ["media"]=>
  array(7) {
    ["home"]=>
    string(6) "Medien"
    ["upload"]=>
    string(6) "Upload"
    ["fotos"]=>
    string(5) "Fotos"
    ["videos"]=>
    string(6) "Videos"
    ["music"]=>
    string(5) "Musik"
    ["docs"]=>
    string(9) "Dokumente"
    ["settings"]=>
    string(13) "Einstellungen"
  }
  ["umgt"]=>
  array(4) {
    ["home"]=>
    string(18) "Benutzerverwaltung"
    ["users"]=>
    string(8) "Benutzer"
    ["roles"]=>
    string(6) "Rollen"
    ["groups"]=>
    string(7) "Gruppen"
  }
}
Wie kann ich da jetzt z.B. beim Eintrag bmgt die Einträge aussortieren, die nochmals eine Unterkategorie haben?

Benutzeravatar
dr.e.
Administrator
Beiträge: 4527
Registriert: 04.11.2007, 16:13:53

Re: Menuverwaltung -> Nested Lists & unbestimmte Tiefe

Beitrag von dr.e. » 23.10.2014, 14:41:54

Nutzt du den ConfigurationManager des APF dazu oder eine eigene Implementierung? Mit dem APF könntest du über die Sections laufen und prüfen, ob diese weitere Unter-Sektionen haben. Ganz klar, was du erreichen möchtest ist mir allerdings nicht. :roll:
Viele Grüße,
Christian

Coach83
Beiträge: 271
Registriert: 13.05.2010, 17:33:12
Kontaktdaten:

Re: Menuverwaltung -> Nested Lists & unbestimmte Tiefe

Beitrag von Coach83 » 24.10.2014, 06:37:22

Genau diese Prüfung benötige ich - ich will meine menu.ini durchlaufen und, sofern Kinder existieren, beim Parent eine CSS-Klasse hinzufügen. Ansonsten gehts weiter abwärts und die Kinder werden aufgelistet.

Benutzeravatar
dr.e.
Administrator
Beiträge: 4527
Registriert: 04.11.2007, 16:13:53

Re: Menuverwaltung -> Nested Lists & unbestimmte Tiefe

Beitrag von dr.e. » 24.10.2014, 14:07:31

Das Detail-Problem habe ich jetzt verstanden. Auch wenn ich mich vielleich blöd anstelle: mir erschließt sich nur noch nicht wo genau dein Einstiegspunkt in die INI ist (Dürften es auch mehrere INIs sein?) und was am Ende generiert wird. Magst du dazu ein paar Zeilen Code posten?
Viele Grüße,
Christian

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste