Menüpunkte unterscheiden -> User eingelogged oder nicht

  • Nils123 Nils123
    Padawan
    0 x
    57 Beiträge
    0 Hilfreiche Beiträge
    16. 09. 2009, 12:03

    Hallo Leute,

    ich hätte gerne andere CSS-Klassen für Zugriffsberechtigte Seiten. Das kriege ich auch mit USR hin. Allerdings hätte ich gerne, dass unterschieden wird ob der user eingelogged ist, also sowas wie "USR = Geschützter Bereich kein link hinterlegt oder Loginseite" und "ACTIFUSR = Geschützter Bereich, Link zur Zielseite".

    Das ganze müsste auch noch Usergruppenabhängig sein. Ist soetwas mit meinem TS möglich?

    Gruß
    Nils

    [TS]lib.subMenu = HMENU
    lib.subMenu {
    entryLevel = 1

    1 = TMENU
    1 {
    showAccessRestrictedPages = none
    noBlur = 1
    expAll = 0
    wrap (
    <div id="subMenuWrap">
    <div id="subMenu">
    <ul>
    |
    </ul>
    </div>
    </div>

    )
    NO.wrapItemAndSub = <li class="subMenu_NO">|</li>
    NO.ATagTitle.field = title
    NO.stdWrap.cObject = TEXT
    NO.stdWrap.cObject.field = title

    ACT = 1
    ACT.wrapItemAndSub = <li class="subMenu_ACT">|</li>

    ACTIFSUB= 1
    ACTIFSUB.wrapItemAndSub = <li class="subMenu_ACTIFSUB">|</li>
    ACT.stdWrap.cObject = TEXT
    ACT.stdWrap.cObject.field = title
    ACTIFSUB.stdWrap.cObject = TEXT
    ACTIFSUB.stdWrap.cObject.field = title

    USR = 1
    USR.wrapItemAndSub = <li class="subMenu_USR">|</li>

    }
    2 = TMENU
    2 {
    showAccessRestrictedPages = none
    noBlur = 1
    expAll = 0
    wrap (
    <ul>
    |
    </ul>
    )
    NO.wrapItemAndSub = <li class="subMenu_NO">|</li>
    NO.ATagTitle.field = title

    NO.stdWrap.cObject = TEXT
    NO.stdWrap.cObject.field = title
    ACT = 1
    ACT.wrapItemAndSub = <li class="subMenu_ACT">|</li>

    ACTIFSUB= 1
    ACTIFSUB.wrapItemAndSub = <li class="subMenu_ACTIFSUB">|</li>
    ACT.stdWrap.cObject = TEXT
    ACT.stdWrap.cObject.field = title
    ACTIFSUB.stdWrap.cObject = TEXT
    ACTIFSUB.stdWrap.cObject.field = title

    USR = 1
    USR.wrapItemAndSub = <li class="subMenu_USR">|</li>

    }
    3 = TMENU
    3 {
    showAccessRestrictedPages = none
    noBlur = 1
    expAll = 0
    wrap (
    <ul>
    |
    </ul>
    )
    NO.wrapItemAndSub = <li class="subMenu_NO">|</li>
    NO.ATagTitle.field = title
    NO.stdWrap.cObject = TEXT
    NO.stdWrap.cObject.field = title

    ACT = 1
    ACT.wrapItemAndSub = <li class="subMenu_ACT">|</li>

    ACTIFSUB= 1
    ACTIFSUB.wrapItemAndSub = <li class="subMenu_ACTIFSUB">|</li>
    ACT.stdWrap.cObject = TEXT
    ACT.stdWrap.cObject.field = title
    ACTIFSUB.stdWrap.cObject = TEXT
    ACTIFSUB.stdWrap.cObject.field = title

    USR = 1
    USR.wrapItemAndSub = <li class="subMenu_USR">|</li>

    }
    4 = TMENU
    4 {
    noBlur = 1
    expAll = 0
    wrap (
    <ul>
    |
    </ul>
    )
    NO.wrapItemAndSub = <li class="subMenu_NO">|</li>
    NO.ATagTitle.field = title
    NO.stdWrap.cObject = TEXT
    NO.stdWrap.cObject.field = title

    ACT = 1
    ACT.wrapItemAndSub = <li class="subMenu_ACT">|</li>

    ACTIFSUB= 1
    ACTIFSUB.wrapItemAndSub = <li class="subMenu_ACTIFSUB">|</li>
    ACT.stdWrap.cObject = TEXT
    ACT.stdWrap.cObject.field = title
    ACTIFSUB.stdWrap.cObject = TEXT
    ACTIFSUB.stdWrap.cObject.field = title

    USR = 1
    USR.wrapItemAndSub = <li class="subMenu_USR">|</li>

    }

    }

    page.10.marks.SUBMENU < lib.subMenu[/TS]


  • 1
  • meckpo meckpo
    R2-D2
    0 x
    127 Beiträge
    0 Hilfreiche Beiträge
    16. 09. 2009, 12:35

    Hallo,

    da machst du in deinem TS eine Condition in der du das Menü abweichend definierst:
    [TS][usergroup = *]
    # hier die abweichenden Definitionen für eingeloggte Nutzer machen
    [global][/TS][/TS]

  • Nils123 Nils123
    Padawan
    0 x
    57 Beiträge
    0 Hilfreiche Beiträge
    16. 09. 2009, 13:09

    Hallo,

    nehme an das * ersetzte ich durch die id?

    Aber dann habe ich immer noch nicht das ganze Problem gelöst.
    Denn in meinem normalen Menü wird ja unterschieden ob ein Menüpunkt aktiv (li.subMenu_ACT) oder nichtaktiv ist (li.subMenu_NO) oder ob er geöffnet ist, da sich eine weitere Menüebene darunter befindet (li.subMenu_ACTIFSUB).

    Wenn ich jetzt USR in das TS einbaue, werden mir die Menüpunkte mit Zugriffssteuerung auch schön mit (li.subMenu_USR) gerendert, das reicht aber nicht. Denn ich muss auch diese menüpunkte unterscheiden können, ob sie gerade Aktiv oder normal sind oder ob sie eine weitere Menüebene beherbergen, dann währen sie wenn sie angeklickt sind, sagen wir "Offen".

    Mein Ziel ist es, das die Menüpunkte die eine Zugriffsberechtigung erfordern sich genauso verhalten wie die anderen auch, nur das sie z.B. ein kleines Schloss hinter dem Namen haben. Wenn man berechtigt ist ist das Schloss auf, wenn nicht ist es zu und die Schrift ist grau.

    Hilfe!?!

    Gruß
    Nils

  • meckpo meckpo
    R2-D2
    0 x
    127 Beiträge
    0 Hilfreiche Beiträge
    17. 09. 2009, 08:58

    Hallo,

    nee - * heißt eingeloggt egal welche Usergruppe, also etwa so:

    [TS]

    [usergroup = *]
    lib.subMenu.1.USR.wrapItemAndSub = <li class="subMenu_USR_mit_offenem_Schloss">|</li>
    [global][/TS]
    Und das gleiche dann natürlich für 2-4 auch noch da rein schreiben. Das kommt dann unterhalb von deiner vorhandenen Definition von lib.subMenu ins TS

  • Nils123 Nils123
    Padawan
    0 x
    57 Beiträge
    0 Hilfreiche Beiträge
    17. 09. 2009, 09:12

    Hallo,

    okay, das habe ich verstanden und funktioniert auch.
    In meinem Fall unterscheide ich ja zwischen 2 Usergruppen, heißt ich setzte die Condition 2mal.
    1mal mit [b]usergroup = ID_Gruppe_1[/b] und einmal [b]usergroup = ID_Gruppe_2[/b].

    Jetzt gib es aber auch die Kombination, das User in beiden Gruppen sind und somit über die Kombination der Rechte verfügen. Ist es auch möglich eine zusätzliche Condition zu schreiben, in der sowas steht wie
    [b]usergroup = ID_Gruppe_1 & ID_Gruppe_2[/b]

    ???

    Gruß
    Nils

  • karlchen karlchen
    Jedi-General
    0 x
    1433 Beiträge
    30 Hilfreiche Beiträge
    17. 09. 2009, 09:25

    conditions kann man ab TYPO3 4 so verbinden

    [TS]//UND Verknüpfung

    [usergroup = id] && [usergroup = id]
    ...
    [global]

    // ODER Verknüpfung

    #
    [usergroup = id] || [usergroup = id]
    ...

    [global]

    [/TS]

  • Nils123 Nils123
    Padawan
    0 x
    57 Beiträge
    0 Hilfreiche Beiträge
    17. 09. 2009, 09:51

    Hallo,

    Danke für die kleine Conditions Schulung ;-).

    Aber ich bekomme keine saubere Trennung hin. Ich habe mal ein Screenshot von dem Bereich gemacht.

    Geschützte Bereiche sind die, die im Menü mit Schloss versehen sind.
    Hier ist ein User eingelogged, der mit seiner Usergruppe nur Zugriff zum "Design Catalog" hat. Deshalb sollte der Menüpunkt jetzt eigentlich normal schwarz sein.
    Im normalen Contentbereich (hier habe ich die Links einfach per wysiwyg als Contentelement eingefügt) funktioniert die Unterscheidung automatisch ohne zutun. Wenn der User keine Berechtigung für die Zielseite hat, werden einfach die a-tags weggelassen.

    Das funktioniert aber im Menü nicht. Hier macht er a-tags, bloß die sind leer, also ohne link. Wenn diese leeren a-tags nicht gerendert würden, könnte ich ja schon per css unterscheiden und alles wäre gut.

    Gibt es eine Möglichkeit diese leeren a-tags im Menü nicht zu rendern?
    Ja mit [b]USR.doNotLinkIt = 1[/b], weiß ich. Aber dann hapert es wieder an der genauen Trennung der Usergruppen.

    [img]http://www.imos-cms.de/fileadmin/images/forum_login.jpg[/img]

  • 1