Content Elemente mit Zugriffsschutz anders layouten [Gelöst]

  • aemka aemka
    Jedi-Meister
    0 x
    388 Beiträge
    0 Hilfreiche Beiträge
    23. 07. 2009, 22:19

    Hi,

    gibt es eine (einfache) Möglichkeit, Content-Elemente, die mit einem Zugriffsschutz versehen wurden, also erst nach Frontend-Login sichtbar werden mit einem Extra-Div zur optischen Hervorhebung zu versehen?

    Matthias


  • 1
  • sunixzs sunixzs
    R2-D2
    0 x
    122 Beiträge
    2 Hilfreiche Beiträge
    24. 07. 2009, 10:40

    Hallo aemka,

    eine Möglichkeit wäre, dass der Redakteur dem Content-Element einen Rahmen gibt. Bei jedem Content-Element in "Allgemein -> Rahmen" zu finden. Diese Rahmen kann man per CSS formatieren.

    Evtl. liese sich da auch was über Conditions machen?

    [TS][usergroup = *]
    # Bei eingeloggtem Benutzer Header aendern...
    lib.stdheader.stdWrap.dataWrap = <div class="meinSpeziellerHeader header-n{cObjarentRecordNumber}">|</div>
    [global][/TS]

    Den Wrap für Content-Elemente habe ich gerade nicht parat. Das müsste aber dann ähnlich sein (vllt. so?):

    [TS][usergroup = *]
    tt_content.stdWrap.dataWrap = <div class="meinSpeziellerContent">|</div>
    [global][/TS]

    Schönen Gruß

    PS: Poste bitte mal, wenn Du die Lösung hast.

    EDIT: Achso, du willst nur Rahmen/DIVs bei Elementen, welche vor dem Login nicht sichtbar waren. Bei meinen Conditions würde das ja nur für alle Elemente gelten. Hm, man könnte im TS bestimmt abfragen, ob ein Feld in der Tabelle tt_content besetzt ist:

    [TS]page.10 = TEMPLATE
    page.10 {
    template = FILE
    template.file = fileadmin/html/index.html
    workOnSubpart = DOCUMENT
    subparts {
    CONTENT < styles.content.get
    CONTENT.renderObj.stdWrap.innerWrap.cObject = CASE
    CONTENT.renderObj.stdWrap.innerWrap.cObject {
    key.field = fe_group
    0=TEXT
    0.value = |
    1=TEXT
    1.value = <div class="group1">|</div>
    2=TEXT
    2.value = <div class="group2">|</div>
    }
    }
    }
    [/TS]

    Das Problem hier bei wäre, dass es ja mehrere Gruppen geben kann, die kommasepariert im Feld fe_group gespeichert werden. ("1", "2", "1,2", "2,1", ...).

    Achso, das ist alles nicht getestet. Ich möchte nur Lösungsansätze bringen.

  • aemka aemka
    Jedi-Meister
    0 x
    388 Beiträge
    0 Hilfreiche Beiträge
    24. 07. 2009, 11:40

    Tausend Dank - ich habe echt selten mal so fundierte Antworten hier erhalten. Ich werde letzteres mal einsetzen. Es wird auch nur 1 FE-Usergruppe geben. Daher sollte das eigentlich funktionieren.

    Ich werde mal posten, wie es aussieht.

  • aemka aemka
    Jedi-Meister
    0 x
    388 Beiträge
    0 Hilfreiche Beiträge
    21. 08. 2009, 00:22

    Hi nochmal nun wollte ich das mal testen. Allerdings nutze ich in dem Projekt Templavoila und frage mich wo ich nun ansetzen. Für die Spalte wo das passieren soll, sieht das in TV aktuell so aus - (wo) kann ich denn hier mit meinem CONTENT.renderObj... angreifen?

    [HTML]...
    <field_colright type="array">
    <tx_templavoila type="array">
    <title>Rechte Spalte</title>
    <sample_data type="array">
    <numIndex index="0"></numIndex>
    </sample_data>
    <eType>ce</eType>
    <TypoScript><![CDATA[
    10= RECORDS
    10.source.current=1
    10.tables = tt_content
    10.wrap = <!--TYPO3SEARCH_begin--> | <!--TYPO3SEARCH_end-->
    ]]></TypoScript>
    <oldStyleColumnNumber type="integer">1</oldStyleColumnNumber>
    </tx_templavoila>
    ...
    </field_colright>
    ...
    [/HTML]

    Bzw. ich frage mich - wer rendert bei Templavoila eigentlich? styles.content.get? Ich hatte mir daher das im TS schon mal überlegt, was aber keinen Einfluss hat:

    [TS]styles.content.get.renderObj.stdWrap.innerWrap.cObject = CASE
    styles.content.get.renderObj.stdWrap.innerWrap.cObject {
    key.field = fe_group
    0=TEXT
    0.value = |
    1=TEXT
    1.value = <div class="intern">|</div>
    }
    [/TS]

    Hat noch jemand Ideen?

  • aemka aemka
    Jedi-Meister
    0 x
    388 Beiträge
    0 Hilfreiche Beiträge
    21. 08. 2009, 00:27

    Ok, ich habe eine Lösung. In TV ändert man gar nichts, sondern bereits auf tt_content Ebene:

    [TS]tt_content.stdWrap.innerWrap.cObject = CASE
    tt_content.stdWrap.innerWrap.cObject {
    key.field = fe_group
    0 = TEXT
    0.value = |
    1 = TEXT
    1.value = <div class="intern">|</div>
    }[/TS]

  • 1