Du bist nicht angemeldet. Der Zugriff auf einige Boards wurde daher deaktiviert.

#1 22. Dezember 2010 21:43

nockenfell
Moderator
Ort: Lenzburg, Schweiz
Registriert: 09. November 2010
Beiträge: 2.815
Webseite

Geschützte Seiten mit AdvancedContent und FrontEndUsers erstellen

Update 2.6.2011

Dieser Hack ist nicht mehr nötig. Seit Version 0.8 handelt AdvancedContent die Anzeige im Menü selber.

Update Ende

Dieses Tutorial ist schon im .org Forum von mir geschrieben worden und wird nun hier weitergepflegt.

Mit AdvancedContent kann man sehr einfach Seiten für bestimmte Benutzergruppen freigeben bzw. sperren.

Dazu müssen folgende Module installiert sein:
AdvancedContent
FrontEndUsers

(CustomContent das bisher jeweils für zugriffsgeschützte Seiten benutzt wurde, ist hier nicht nötig)

AdvancedContent

Um eine Seite vor Zugriff schützen zu können, muss als Inhaltstyp "AdvancedContent" gewählt sein. Ansonsten funktioniert der hier beschriebene Zugriffschutz nicht.
Um AdvancedContent als Standard-Inhalt zu definieren, muss die Datei ./admin/addcontent.php bearbeitet werden:
http://forum.cmsmadesimple.org/index.ph … #msg193390

Folgende Einstellungen müssen oder können dazu eingestellt werden:

Im Reiter Optionen gibt es ziemlich weit unten folgende Optionen:

Frontend access
Hier wird die FrontEndUser-Gruppe gewählt, welche Zugriff auf die Seite hat

Redirect Page if no access
Hier kann eine Seite definiert werden, auf welche weitergeleitet wird, wenn kein Zugriff auf die Seite erlaubt ist. Mit Vorteil wird dazu entweder auf die Loginseite oder auf eine im Menü nicht sichtbare Seite verwiesen, welche die Fehlermeldung "Kein Zugriff" enthaltet.

Show login form
Anstelle des Inhalts kann auch im Haupt-Inhaltselement das Login-Formular angezeigt werden. Diese Variante ist allerdings nicht unbedingt vorteilhaft, da so der Titel der geschützten Seite angezeigt wird.

AdvancedContent Einstellungen

Template anpassen

Damit die Inhalte auf der Seite nicht angezeigt werden, müssen alle {content} Tags durch

Ab Version 0.6.2 bzw 0.7.1 muss der {content} Tag nicht mehr ersetzt werden. Das Template muss somit nicht speziell angepasst werden.

Menü anpassen

Damit ist jedoch erst die Hälfte der Miete gemacht. Die geschützen Seiten werden weiterhin im Menü angezeigt. Damit geschütze Seiten nur im Menü angezeigt werden, wenn ein Benutzer eingeloggt ist, welcher auch die Berechtigung für diese Seite hat, muss man folgenden UDT (Benutzerdefinierten Tag) "feuShowMenu" erstellen:

// UDT feuShowMenu written by Nockenfell 12.2010

// Funktionen

if(!function_exists('btGetFeuGroups')) {
    function btGetFeuGroups() { 
        $feusers = cms_utils::get_module('FrontEndUsers');
    $user_id = $feusers->LoggedInId();
    
        // Alle Gruppen einlesen zu welchen der eingeloggte Benutzer gehört
        $groups = $feusers->GetMemberGroupsArray($user_id);

        $gns = array();
        if($groups !== false ) {
            foreach( $groups as $gid ) {
                $gns[] = $gid['groupid'];
            }
        }
        return $gns;
    }
}


if(!function_exists('btGetFeuAccess')) {
    function btGetFeuAccess($id) {
        $gns = btGetFeuGroups();
        $btFeuAccess = cms_utils::get_app_data('btFeuAccess');
        $feuAccess = $btFeuAccess[$id];
        if ($feuAccess != "" and $feuAccess != -1) {
            // Prüfen der Berechtigung
            $feuArray= explode(';',$feuAccess);
            $retval = false;
            foreach ($feuArray as $feu) {
                if (in_array($feu,$gns)) $retval = true;
            }
            return $retval;
        }
        return true;
    }
}

if(!function_exists('btMenuHasChildren')) {
    function btMenuHasChildren($currentnode,$nodelist) {
        // Children suchen
        foreach ($nodelist as $node) {
            if ($node->depth == $currentnode->depth+1 and $currentnode->hierarchy == substr($node->hierarchy,0,strlen($currentnode->hierarchy))) {
                return true;
            }
        }
        return false;
    }
}

if(!function_exists('btMenuHasParent')) {
    function btMenuHasParent($currentnode,$nodelist) {
        // Parent suchen
        foreach ($nodelist as $node) {$pos = strpos($meinString, $findMich);
            if ($node->depth == $currentnode->depth-1 and strpos($currentnode->hierarchy, $node->hierarchy) !== FALSE) {
                return true;
            }
        }
        return false;
    }
}

if (!isset($params['nodelist'])) {
    echo "UDT-feuShowMenu - Nodeliste des Menüs fehlt!";
    return;
}

// Seiten mit feu_access Eintrag auslesen
$sql = "select content_id, prop_name, content from ".cms_db_prefix()."content_props where prop_name = 'feu_access'";
$db = cmsms()->db;
$dbresult = $db->Execute($sql);
$btFeuAccess = Array();
while ($dbresult && $row = $dbresult->FetchRow())
        $btFeuAccess[$row['content_id']] = $row['content'];
cms_utils::set_app_data('btFeuAccess',$btFeuAccess);


$nodelist = $params['nodelist'];

// Schreiben welche Seiten sichtbar sind
$modnodelist = array();
foreach($nodelist as $node) {
    $node->hasAccess = btGetFeuAccess($node->id);
    $modnodelist[] = $node;
}

// geschütze Seiten aus dem Array löschen
foreach ($modnodelist as $key=>$node) {
    // geschütze Seiten löschen
    if ($node->hasAccess == false or $node->hasAccess == "") {
        if (false !== ($key = array_search($node,$modnodelist))) {
            unset($modnodelist[$key]);
        }
    }
}

// nicht mehr referenzierte Seiten aus dem Array löschen
foreach ($modnodelist as $key=>$node) {
    // interne Links zu geschütze Seiten löschen
    if ($node->type == "pagelink") {
        foreach ($nodelist as $plnode) {
            if ($plnode->url == $node->url and $plnode->id != $node->id) {
                if (!btGetFeuAccess($plnode->id)) {
                    if (false !== ($key = array_search($node,$modnodelist))) {
                        unset($modnodelist[$key]);
                    }
                }
            }
        }
    }
    // Sectionheader ohne Children löschen
    else if ($node->type == "sectionheader") {
        if (!btMenuHasChildren($node,$modnodelist)){
            if (false !== ($key = array_search($node,$modnodelist))) {
                unset($modnodelist[$key]);
            }
        }
    }
    // Childern ohne Parent löschen
    else if ($node->depth > 1) {
        if (!btMenuHasParent($node,$modnodelist)){
            if (false !== ($key = array_search($node,$modnodelist))) {
                unset($modnodelist[$key]);
            }
        }
    }
}

// $node->prevdepth und $node->haschildren neu setzen
$prevdepth = 1;
foreach ($modnodelist as $node) {
    $node->prevdepth = $prevdepth;
    $prevdepth = $node->depth;
    $node->haschildren = btMenuHasChildren($node,$modnodelist);
}

// Nummerierung Array zurücksetzen
$modnodelist = array_values($modnodelist);


// Assign des Rückgabewertes
if(isset($params['assign'])) 
    $smarty->assign(trim($params['assign']), $modnodelist );
else
    return $modnodelist;

Nun kann das Menü-Template angepasst werden. Da das Menü-Template angepasst werden muss, muss ein eigenes Menü-Template erstellt werden, falls ein Standardtemplate verwendet wird. Dazu kann man einfach das bisher verwendete Standardtemplate kopiert werden.

{* CSS classes used in this template:
#menuwrapper - The id for the <div> that the menu is wrapped in. Sets the width, background etc. for the menu.
#primary-nav - The id for the <ul>
.menuparent - The class for each <li> that has children.
.menuactive - The class for each <li> that is active or is a parent (on any level) of a child that is active. *}
{if $count > 0}
{feuShowMenu nodelist=$nodelist assign='feuNodeList'}
<div id="menuwrapper">
<ul id="primary-nav">
{foreach from=$feuNodeList item=node} 

Im vorher angezeigten Code wird nur der erste Teil des Menü's angezeigt.  Dies damit der Kontext des folgenden Code's verstanden wird (die Platzierung der einzelnen Elemente)

Folgender Code wird nach dem {if $count > 0} eingefügt:

{feuShowMenu nodelist=$nodelist assign='feuNodeList'}

Damit wird die NodeList des Menüs neu geschrieben mit berücksichtigung welche Seiten sichtbar sind und welche nicht. Nun muss die foreach Schleife noch angepasst werden:

{foreach from=$feuNodeList item=node}

($nodelist durch $feuNodeList ersetzen)

Viel Spass beim ausprobieren.

Beitrag geändert von nockenfell (02. Juni 2011 14:03)


[dieser Beitrag wurde mit 100% recycled bits geschrieben]
Mein Blog  /   Diverse Links rund um CMS Made Simple
Module: btAdminer, ToolBox

Offline

#2 22. Dezember 2010 22:44

NaN
Moderator
Ort: Halle (Saale)
Registriert: 09. November 2010
Beiträge: 4.177

Re: Geschützte Seiten mit AdvancedContent und FrontEndUsers erstellen

Als Ergänzung möchte ich noch hinzufügen, dass {AdvancedContent} im Template nicht mehr nötig ist.
Man kann ab Version 0.6.2 bzw. 0.7.1 ruhig den regulären {content}-Tag verwenden.

Offline

#3 23. Dezember 2010 07:26

nockenfell
Moderator
Ort: Lenzburg, Schweiz
Registriert: 09. November 2010
Beiträge: 2.815
Webseite

Re: Geschützte Seiten mit AdvancedContent und FrontEndUsers erstellen

Danke für die Rückmeldung. Hatte sowas im Hinterkopf, war aber nicht mehr sicher.


[dieser Beitrag wurde mit 100% recycled bits geschrieben]
Mein Blog  /   Diverse Links rund um CMS Made Simple
Module: btAdminer, ToolBox

Offline

#4 23. Dezember 2010 09:46

nockenfell
Moderator
Ort: Lenzburg, Schweiz
Registriert: 09. November 2010
Beiträge: 2.815
Webseite

Re: Geschützte Seiten mit AdvancedContent und FrontEndUsers erstellen

Das ganze könnte noch mit dem Menu-Caching verbunden werden:
http://www.cmsmadesimple.de/forum/viewtopic.php?id=151

Wenn ich mal Zeit habe, schreibe ich eine angepasste Version hierzu.


[dieser Beitrag wurde mit 100% recycled bits geschrieben]
Mein Blog  /   Diverse Links rund um CMS Made Simple
Module: btAdminer, ToolBox

Offline

#5 23. Dezember 2010 09:54

Tobias_Gl
probiert CMS/ms aus
Ort: Siegen
Registriert: 09. November 2010
Beiträge: 69
Webseite

Re: Geschützte Seiten mit AdvancedContent und FrontEndUsers erstellen

Vielen Dank für die Mühe die du dir gemacht hast.
Ich würde das alles sehr gerne auf einer Webseite von mir einsetzten. Dort werden Daten / Sitzungsprotokolle / Ausarbeitungen etc. immer wieder hochgeladen und ausgeben. Derzeit habe ich es ganz primitiv mit einem .htaccess Passwort und einen php-script zur automatischen Datenauslese vom FTP realisiert (es sollte innerhalb weniger Stunden laufen ...)
Nun könnte ich es ja ohne weiteres umstellen und mittels dieser Anweisung einen separaten Download Bereich einrichten smile

Offline

#6 23. Dezember 2010 19:23

cyberman
Moderator
Ort: Dohna / Sachsen
Registriert: 13. September 2010
Beiträge: 6.879
Webseite

Re: Geschützte Seiten mit AdvancedContent und FrontEndUsers erstellen

Danke für die Fortsetzung deiner Arbeit hier.

nockenfell schrieb:

muss man folgenden UDT (Benutzerdefinierten Tag) "feuShowMenu" erstellen:

Hierbei beim Produktiveinsatz auch immer an die Performance denken wink

http://www.cmsmadesimple.de/cmsms-suppo … ndeln.html


1. Wie bekomme ich hier schnelle Hilfe?
2. HowTo: Fehlersuche bei CMS/ms
---
„First they ignore you, then they laugh at you, then they fight you, then you win.“ Mahatma Ghandi

Offline

#7 23. Dezember 2010 21:09

nockenfell
Moderator
Ort: Lenzburg, Schweiz
Registriert: 09. November 2010
Beiträge: 2.815
Webseite

Re: Geschützte Seiten mit AdvancedContent und FrontEndUsers erstellen

cyberman schrieb:

Danke für die Fortsetzung deiner Arbeit hier.

Bitte gern geschehen big_smile Wo man Support bekommt und gibt, postet man auch seine Arbeiten.

nockenfell schrieb:

muss man folgenden UDT (Benutzerdefinierten Tag) "feuShowMenu" erstellen:

Hierbei beim Produktiveinsatz auch immer an die Performance denken wink

Ein Plugin wäre auch kein Problem. Sollte sich jeder bauen können, der sich ein Plugin mal angesehen hat. Ich wäre eher den Weg mit dem Caching gegangen. Dabei kommt es weniger auf die Zeit zum aufbauen an sondern viel mehr auf den schlauen Aufbau des Cachings. Mal sehen, wenn ich dazu komme, werde ich mir ein paar Gedanken anstellen wie ich das Caching aufbauen könnte.


[dieser Beitrag wurde mit 100% recycled bits geschrieben]
Mein Blog  /   Diverse Links rund um CMS Made Simple
Module: btAdminer, ToolBox

Offline

#8 25. Dezember 2010 20:06

WhitePaw
Gast

Re: Geschützte Seiten mit AdvancedContent und FrontEndUsers erstellen

Klasse funktioniert schon fast. Was mach ich denn damit normale Abschnittsüberschriften nicht auch weggelassen werden? roll

Edit: Ah ok die Abschnittsüberschrift verschwindet mit diesem Zusatz nur, wenn der Abschnittsüberschrift keine weiteren Seiteninhalte zugeteilt wurden. big_smile

Edit Edit: So ganz zufrieden bin ich trotzdem noch nicht. Vielleicht sollte im ersten Beitrag auch noch erwähnt werden, dass das Menü für den footer (minimal_menu.tpl) auch noch geändert werden sollte.

Beitrag geändert von WhitePaw (25. Dezember 2010 21:41)

#9 26. Dezember 2010 11:27

nockenfell
Moderator
Ort: Lenzburg, Schweiz
Registriert: 09. November 2010
Beiträge: 2.815
Webseite

Re: Geschützte Seiten mit AdvancedContent und FrontEndUsers erstellen

WhitePaw schrieb:

Edit Edit: So ganz zufrieden bin ich trotzdem noch nicht. Vielleicht sollte im ersten Beitrag auch noch erwähnt werden, dass das Menü für den footer (minimal_menu.tpl) auch noch geändert werden sollte.

Wenn mehr als ein Menü auf der Webseite verwendet wird (wie z.B. auf im Demotemplate) müssen natürlich beide Menü-Templates angepasst werden.

Ich Moment überlege ich mir jedoch, ob ich nicht ein Fork des MenüManagers mache. Damit liesse sich Zeit sparen und ein Caching könnte schlau implementiert werden. Aber kommt Zeit, kommt Rat. Erst Arbeit, dann Familie, dann Hobby zum Weiterentwickeln.


[dieser Beitrag wurde mit 100% recycled bits geschrieben]
Mein Blog  /   Diverse Links rund um CMS Made Simple
Module: btAdminer, ToolBox

Offline

#10 26. Dezember 2010 13:31

cyberman
Moderator
Ort: Dohna / Sachsen
Registriert: 13. September 2010
Beiträge: 6.879
Webseite

Re: Geschützte Seiten mit AdvancedContent und FrontEndUsers erstellen

Wenn du so viel Lust am Basteln hast, funktioniert das denn auch zusammen mit dem InlineEdit-Modul?

http://www.homepage-community.de/open_s … 680.0.html

Würde mir ganz gut für das deutsche Wiki in den Kram passen smile ...


1. Wie bekomme ich hier schnelle Hilfe?
2. HowTo: Fehlersuche bei CMS/ms
---
„First they ignore you, then they laugh at you, then they fight you, then you win.“ Mahatma Ghandi

Offline

#11 26. Dezember 2010 20:31

nockenfell
Moderator
Ort: Lenzburg, Schweiz
Registriert: 09. November 2010
Beiträge: 2.815
Webseite

Re: Geschützte Seiten mit AdvancedContent und FrontEndUsers erstellen

cyberman schrieb:

Wenn du so viel Lust am Basteln hast, funktioniert das denn auch zusammen mit dem InlineEdit-Modul?

http://www.homepage-community.de/open_s … 680.0.html

Würde mir ganz gut für das deutsche Wiki in den Kram passen smile ...

Was meinst du mit zusammen mit dem InlineEdit-Modul funktionieren? Ich könnte eine zusätzliche Abfrage rein bringen, ob der User im Backend angemeldet ist und dann alle Seiten bringen. Allerdings müsste ich dann die ganze Backend-User Permission Geschichte nachbauen. Das wäre am Anfang ein wenig zu viel des guten, denke ich.


[dieser Beitrag wurde mit 100% recycled bits geschrieben]
Mein Blog  /   Diverse Links rund um CMS Made Simple
Module: btAdminer, ToolBox

Offline

#12 26. Dezember 2010 20:33

nockenfell
Moderator
Ort: Lenzburg, Schweiz
Registriert: 09. November 2010
Beiträge: 2.815
Webseite

Re: Geschützte Seiten mit AdvancedContent und FrontEndUsers erstellen

Nachtrag:
Interessant wäre wohl zum touchInlineEdit Modul, wenn ich neue Seiten erstellen könnte. Aber das ist eine andere Geschichte. Lässt sich wohl nicht so einfach umsetzen, da jedes Menü wieder anders aufgebaut ist und ich nicht einfach per jQuery oder sonst was, etwas einblenden könnte.


[dieser Beitrag wurde mit 100% recycled bits geschrieben]
Mein Blog  /   Diverse Links rund um CMS Made Simple
Module: btAdminer, ToolBox

Offline

#13 26. Dezember 2010 21:30

cyberman
Moderator
Ort: Dohna / Sachsen
Registriert: 13. September 2010
Beiträge: 6.879
Webseite

Re: Geschützte Seiten mit AdvancedContent und FrontEndUsers erstellen

nockenfell schrieb:

Was meinst du mit zusammen mit dem InlineEdit-Modul funktionieren? Ich könnte eine zusätzliche Abfrage rein bringen, ob der User im Backend angemeldet ist und dann alle Seiten bringen. Allerdings müsste ich dann die ganze Backend-User Permission Geschichte nachbauen. Das wäre am Anfang ein wenig zu viel des guten, denke ich.

Ich wollte in der Combo AdvancedContent/FEU/InlineEdit eine Wiki-Frontendbearbeitung auf CMSms-Basis erstellen.

Aber hat sich damit wohl erledigt - egal, wie man es verwendet, hab ich damit noch keine Versionskontrolle.


1. Wie bekomme ich hier schnelle Hilfe?
2. HowTo: Fehlersuche bei CMS/ms
---
„First they ignore you, then they laugh at you, then they fight you, then you win.“ Mahatma Ghandi

Offline

#14 26. Dezember 2010 22:11

nockenfell
Moderator
Ort: Lenzburg, Schweiz
Registriert: 09. November 2010
Beiträge: 2.815
Webseite

Re: Geschützte Seiten mit AdvancedContent und FrontEndUsers erstellen

cyberman schrieb:

Aber hat sich damit wohl erledigt - egal, wie man es verwendet, hab ich damit noch keine Versionskontrolle.

Das ganze müsstest du noch um das Achive Modul ergänzen. Dann hättest du eine History.


[dieser Beitrag wurde mit 100% recycled bits geschrieben]
Mein Blog  /   Diverse Links rund um CMS Made Simple
Module: btAdminer, ToolBox

Offline

#15 28. März 2011 16:16

NaN
Moderator
Ort: Halle (Saale)
Registriert: 09. November 2010
Beiträge: 4.177

Re: Geschützte Seiten mit AdvancedContent und FrontEndUsers erstellen

NaN schrieb:

Als Ergänzung möchte ich noch hinzufügen, dass {AdvancedContent} im Template nicht mehr nötig ist.
Man kann ab Version 0.6.2 bzw. 0.7.1 ruhig den regulären {content}-Tag verwenden.

Das stimmt wie sich herausgestellt hat leider nur bedingt.
Sobald man Parameter des AdvancedContent Moduls für den Hauptinhaltsblock verwendet, kann es zu unerwünschten Fehlermeldungen kommen, wenn ein Modul im Inhalt ausgegeben werden soll.
In diesen Fällen sollte man doch {AdvancedContent} verwenden oder diese Lösung verwenden: http://www.cmsmadesimple.de/forum/viewt … 5476#p5476 .

Offline

#16 28. März 2011 16:24

NaN
Moderator
Ort: Halle (Saale)
Registriert: 09. November 2010
Beiträge: 4.177

Re: Geschützte Seiten mit AdvancedContent und FrontEndUsers erstellen

In der kommenden Version 0.8 (evtl. auch 0.6.5) werden Menülinks zu Seiten für registrierte User automatisch ausgeblendet, wenn man nicht eingeloggt ist. Das betrifft aber nur die Anzeige im Menü. Aktiv sind die Seiten dann immer noch und können auch weiterhin über die URL erreicht werden. Dazu hat man aber immer noch die Möglichkeit, nicht eingeloggte User auf eine andere Seite umzuleiten. (Anderenfalls erhält man eine leere Seite)

Ich habe schon darüber nachgedacht, die Seiten für nicht eingeloggte User auf inaktiv zu setzen, aber das würde die Umleitungs-Option überflüssig machen. Außerdem sieht es nicht gut aus, wenn man eingeloggt ist und nicht merkt, dass man aufgrund von Inaktivität automatisch ausgeloggt wurde, und die Seite neu laden will und plötzlich eine 404 Seite erhält. Daher bleibt es dabei, die Seiten leiglich auszublenden.
(Nur für den Fall, dass jemand fragen sollte wink )

Offline

#17 08. April 2011 16:08

kampkrusty
Server-Pate
Registriert: 03. April 2011
Beiträge: 263

Re: Geschützte Seiten mit AdvancedContent und FrontEndUsers erstellen

Typische Anfängerfrage: Was ist denn der Unterschied zur Kombination FEU/CustomContent?

Noch 2 Fragen. Wie löst man das Logout Problem? Um sich auszuloggen muss der User bei mir bis jetzt immer wieder auf die LogIn Seite zurückkehren.
Wann kommt die Version 0.8? Ich habe bisher das Problem das eingeloggte User die untergeordneten Seiten nicht im Menü sehen.


ff-jena-mitte.de

Offline

#18 08. April 2011 17:20

NaN
Moderator
Ort: Halle (Saale)
Registriert: 09. November 2010
Beiträge: 4.177

Re: Geschützte Seiten mit AdvancedContent und FrontEndUsers erstellen

kampkrusty schrieb:

Typische Anfängerfrage: Was ist denn der Unterschied zur Kombination FEU/CustomContent?

Ein paar Beispiele...

{$ccuser->Funktion()} funktioniert nicht im Inhalt, weil der Tiny das immer in {$ccuser-&gt; ...} ändert. Man muss das Ganze also im Template machen. Wenn man das ganze im Template macht, braucht man a) ein extra Template (unter Umständen sogar für jede Benutzergruppe eines) und b) dürfen alle Seiten, die dieses Template verwenden, nicht zwischengespeichert werden. Wenn man das vergisst (und das passiert häufig), funktionieren weder FrontEndUsers noch CustomContent.

Mit AdvancedContent hat man ein Formular und kann sehr bequem im Backend beim Bearbeiten einer Seite aus einer Liste von FrontEndUsers-Gruppen für jede Seite angeben, welche Gruppen auf diese Seite zugreifen dürfen und welche nicht. Man kann außerdem eine Seite angeben, auf die umgeleitet werden soll, wenn man beim Zugriff auf die Seite nicht eingeloggt ist.

Auch das könnte man zwar im Template mit dem Plugin {redirect_page} lösen, aber es würde für alle Seiten, die dieses Template nutzen, immer die gleiche Seite sein. Man könnte zwar einen extra Inhaltsblock nutzen, in dem die Editoren die Seite selbst eingeben können, aber dazu müssen sie das Alias der Seite kennen. Außerdem könnte hier der Fehler gemacht werden, wieder eine Seite anzugeben, die nicht öffentlich ist, womit man eine endlos-Weiterleitung hätte...

Man kann also bei AdvancedContent ein und dasselbe Template verwenden, aber den Zugriff für jede Seite einer anderen Benutzergruppe erlauben und jede Seite individuell umleiten lassen, wenn man nicht eingeloggt ist. Und außerdem kann man keine Umleitungsfehler machen.

AdvancedContent regelt weiterhin die Sache mit dem Zwischenspeichern und dem Durchsuchen einer Seite automatisch. Sobald eine Benutzergruppe für eine Seite ausgewählt wurde, ist sie weder zwischenspeicherbar noch kann sie durchsucht werden.

Kurz: Natürlich kann man all das auch nur mit FrontEndUsers / CustomContent / Plugins etc. lösen, aber AdvancedContent ist da meiner Meinung nach etwas eleganter bzw. flexibler.

kampkrusty schrieb:

Wie löst man das Logout Problem?

Leider nicht mit AdvancedContent.
Wo soll denn der Logout-Button hin?

Folgende Idee hätte ich dazu (hab ich noch nicht getestet):
Erstelle im Template einen einfachen Inhaltsblock mit folgenden Parametern:

{content block="logout_form" oneline=true label="Logout Formular" feu_access="1,2,3,4 ... die IDs der FEU-Benutzergruppen" feu_action=false}

Füge dort als Inhalt

ein.
D.h. dieser Inhaltsblock wird nur angemeldeten Benutzern angezeigt. Und denen wird dann das Logout-Formular (mit Logout-Button) angezeigt.
Wenn man nicht eingeloggt ist, wird er garnicht erst angezeigt (bzw. ist einfach leer).
Sag mal Bescheid, ob's funktioniert.
Allerdings düfen dann vermutlich alle Seiten nicht zwischengespeichert werden.
Dann kannst Du genausogut auch FEU und CustomContent verwenden.

kampkrusty schrieb:

Wann kommt die Version 0.8?

Kann ich leider nicht genau sagen.

kampkrusty schrieb:

Ich habe bisher das Problem das eingeloggte User die untergeordneten Seiten nicht im Menü sehen.

Erklär das mal bitte etwas genauer.
Welche Version?
Und wie sieht das Szenario aus?

Offline

#19 08. April 2011 18:30

kampkrusty
Server-Pate
Registriert: 03. April 2011
Beiträge: 263

Re: Geschützte Seiten mit AdvancedContent und FrontEndUsers erstellen

Ok, danke für die schnelle Antwort.

Ich bin als Anfänger gerade dabei mich einzuarbeiten. Ich erstelle mit Hilfe von von CMSms meine erste Website für meine Kumpels und mich. Ich stehe noch ziemlich am Anfang und erstelle gerade das Gerüst. Es ist vom Aufbau recht simpel. Es gibt den öffentlichen Teil und es gibt einen Mitglieder Teil. Also eine Benutzergruppe.

Aufbau:

Home
Menüpunkt 1
Menüpunkt 2
Intern
->Menüpunkt 3 (übergeordnete Seite "Intern")
->Menüpunkt 4 (übergeordnete Seite "Intern")

NaN schrieb:

Erklär das mal bitte etwas genauer.
Welche Version?
Und wie sieht das Szenario aus?

Wenn ich nun eingeloggt bin sehe ich MP 3 und 4 nicht.
CMS-Version 1.9.4.1
AdvancedContent 0.7.2
Template: GalaPurity (wenn du ein besser geeigneteres weißt darfst du es mir gerne verraten wink)

NaN schrieb:

Wo soll denn der Logout-Button hin?

Das ist mir relativ egal. Gut sichtbar soll er sein. In der Menüleiste ist wohl der beste Platz.
Deinen Vorschlag werde ich ausprobieren, auch wenn mir noch nicht ganz klar ist wo ich die Code einfügen muss. smile

Noch ein Problem: Wenn ich auf die Seite "Intern" komme und nicht angemeldet bin werde ich auf die LogIn Seite geleitet. Dort melde ich mich an und bleibe dort stehen. Wie kann ich sicher stellen das man nach erfolgreicher Anmeldung wieder zurück auf "Intern" geleitet werde?

Mein bisheriges Wissen habe ich aus diesem Tutorial und aus diesem Forum.

Vielen Dank schon mal!


ff-jena-mitte.de

Offline

#20 25. April 2011 22:27

NaN
Moderator
Ort: Halle (Saale)
Registriert: 09. November 2010
Beiträge: 4.177

Re: Geschützte Seiten mit AdvancedContent und FrontEndUsers erstellen

Die erste Test-Version von AC 0.8 kann vorab schonmal hier geladen werden:
http://dl.dropbox.com/u/2876578/CMSms/M … t-0.8a.tgz

Diese Version funktioniert aber nicht mit der letzten GBFilePicker Version.
Wer GBFilePicker verwendet, sollte auch diese Version probieren:
http://dl.dropbox.com/u/2876578/CMSms/M … 1.3.1a.tgz

Wie löst man das Logout Problem? Um sich auszuloggen muss der User bei mir bis jetzt immer wieder auf die LogIn Seite zurückkehren.

Gut sichtbar soll er sein. In der Menüleiste ist wohl der beste Platz.

So kompliziert wie ich anfangs dachte ist die Lösung eigentlich garnicht.
Wenn das Logout-Template nur den Logout-Button enthält, dann sollte man im Seiten- oder sogar im Menü-Template mit

den Logout-Button anzeigen können.
Ist man nicht eingeloggt, wird dort garnichts angezeigt.
(Ich hatte gedacht, da würde dann das Login-Formular erscheinen. Dem ist aber nicht so.)
D.h. sobald man eingeloggt ist, wird auf jeder Seite auch der Logout-Button angezeigt.
Und da man hier nicht von Template-Variablen abhängig ist, könnten die Seiten trotzdem zwischengespeichert werden.

Um diesen Logout-Button ins Menü zu bekommen braucht man z.B. nur folgendes Logout-Template:

<li><a href="{$url_logout}" title="{$mod->Lang('info_logout')}"><span>{$mod->Lang('logout')}</span></a></li>

Und im Menü-Template muss man dann einfach vor dem letzten schließenden </ul>

aufrufen.
(Hab's gerade mit dem Seiten-Template NCleanBlue und dem Menütemplate cssmenu_ulshadow.tpl probiert, deshalb diese <span>-Elemente im Logout-Template um den Link.)

Das Problem mit den Unterpunkten konnte ich leider nicht reproduzieren.

Offline

#21 25. April 2011 21:22

NaN
Moderator
Ort: Halle (Saale)
Registriert: 09. November 2010
Beiträge: 4.177

Re: Geschützte Seiten mit AdvancedContent und FrontEndUsers erstellen

Kleines Update: http://dl.dropbox.com/u/2876578/CMSms/M … t-0.8b.tgz
Man kann jetzt auch Menü-Punkte ausblenden lassen, wenn man eingeloggt ist.
(Nützlich z.B. für Login- oder Registrierungs-Seiten)

Offline

#22 26. April 2011 22:11

nockenfell
Moderator
Ort: Lenzburg, Schweiz
Registriert: 09. November 2010
Beiträge: 2.815
Webseite

Re: Geschützte Seiten mit AdvancedContent und FrontEndUsers erstellen

NaN schrieb:

Kleines Update: http://dl.dropbox.com/u/2876578/CMSms/M … t-0.8b.tgz
Man kann jetzt auch Menü-Punkte ausblenden lassen, wenn man eingeloggt ist.
(Nützlich z.B. für Login- oder Registrierungs-Seiten)

Bin's gerade fleissig am testen. Gebe dir morgen ein Feedback zu dieser Funktion. Wie hast du die Umsetzung im Menümanager gemacht?


[dieser Beitrag wurde mit 100% recycled bits geschrieben]
Mein Blog  /   Diverse Links rund um CMS Made Simple
Module: btAdminer, ToolBox

Offline

#23 26. April 2011 22:24

NaN
Moderator
Ort: Halle (Saale)
Registriert: 09. November 2010
Beiträge: 4.177

Re: Geschützte Seiten mit AdvancedContent und FrontEndUsers erstellen

Hab die Funktion ShowInMenu() aus dem ContentBase-Objekt (von dem ja alle Inhalte abgeleitet werden) im Modul-Inhaltstypen überschrieben. Die Sichtbarkeit der Seite hängt nun vom Login-Status ab.

Offline

#24 26. April 2011 05:24

nockenfell
Moderator
Ort: Lenzburg, Schweiz
Registriert: 09. November 2010
Beiträge: 2.815
Webseite

Re: Geschützte Seiten mit AdvancedContent und FrontEndUsers erstellen

Funktioniert tadellos mit dem ausblenden im Menü wenn eingeloggt.


[dieser Beitrag wurde mit 100% recycled bits geschrieben]
Mein Blog  /   Diverse Links rund um CMS Made Simple
Module: btAdminer, ToolBox

Offline

#25 27. April 2011 23:28

NaN
Moderator
Ort: Halle (Saale)
Registriert: 09. November 2010
Beiträge: 4.177

Re: Geschützte Seiten mit AdvancedContent und FrontEndUsers erstellen

Danke fürs Testen smile

Update die dritte: http://dl.dropbox.com/u/2876578/CMSms/M … .8c.tar.gz
Habe versucht, die Datenbankabfragen bei "vom übergeordneten Element übernehmen" zu reduzieren.
Jetzt wird nicht mehr immer die gesamte Hierarchie durchgegangen und der Wert aus der DB geladen, sondern die Ergebnisse werden in einem Array zwischengespeichert.

Offline