WackoWiki: AhA/DifferentHomepageForRegisteredAndAnonymousVisitors ...

Home Page | Изменения | Новые Комменты | Пользователи | Каталог | Регистрация | Вход:  Пароль:  

Unterschiedliche Startseite f�r unregistrierte Besucher und angemeldete Benutzer

Оглавление документа

1. Idee

Unregistrierte Besucher und angemeldete Benutzer meines Wikis sollen auf Startseiten mit grunds�tzlich unterschiedlichem Inhalt gef�hrt werden.

2. Umsetzung

2.1. Ben�tigte Ressourcen

Zwei modifizierte Versionen der Action “include”:

  1. includestartseite -> [Die bereits vorhandene Action “include” wurde lediglich so abge�ndert, dass der Hinweis “Du bist nicht berechtigt, diese Seite zu lesen” nicht angezeigt wird]
  2. includeup -> [Die bereits vorhandene Action “include” wurde so abge�ndert, dass automatisch der Inhalt der pers�nlichen Startseite eines angemeldeten Benutzers angezeigt wird -> deshalb der Name: includeup = includeu(ser)p(age)]
  3. user -> [Diese kleine Action erm�glicht es, dass angemeldete Benutzer auf der Startseite mit ihrem Benutzernamen begr�sst werden k�nnen]

Drei Wiki-Seiten:

  1. Die (bereits vorhandene) Startseite des Wikis
  2. Eine Seite mit dem Inhalt f�r unregistrierte Besucher des Wikis, wir k�nnen sie zum Beispiel **Visitors" nennen
  3. Eine Seite mit dem Inhalt f�r angemeldete Benutzer des Wikis, wir k�nnen sie zum Beispiel **Members" nennen

2.2. Seitenanpassungen

2.2.1. Seite “Startseite”

Die (bereits vorhandene) Startseite des Wikis erh�lt folgenden Inhalt:
Kopiervorlage

{{includestartseite page="Members" nomark="1"}}
{{includestartseite page="Visitors" nomark="1"}}

Hier als Screenshot:


Berechtigungen:
Lesen:
* (alle)
Schreiben:
admins (nur Administratoren)
Kommentare:
nach Bedarf


2.2.2. Seite “Visitors”

Die neu erstellte Seite Visitors f�llen wir mit allgemeinen Informationen zu Inhalt, Sinn und Zweck unseres Wikis.


Entscheidend ist die Vergabe der Berechtigungen:
Lesen:
* (alle ...)
!$ (... ausser den Registrierten)
admins (... leseberechtigt soll sicher auch der Administrator sein)
Schreiben: admins (nur Administratoren)
Kommentare: nach Bedarf


Hier ein Screenshot (im Beispiel heisst die Seite “UnRegistrierte" und nicht “Visitors”)

2.2.3. Seite “Members”

Auf dieser Seite bauen wir eine namentliche Begr�ssung des angemeldeten Benutzers ein (Action {{user}}). Vielleicht f�gen wir noch die wichtigsten Links hinzu. Am Ende bauen wir die Action {{includeup}} ein, nun erscheint der Inhalt der pers�nlichen Startseite des Ben�tzers.


Beispielinhalt (Kopiervorlage)


====Hallo {{user}}, willkommen im �Beispielwiki�-Benutzerbereich==

======N�tzliche Seiten:====
* Meine Startseite: {{user}}
* ((MeineSeiten Alle meine bisher erstellten Seiten))
* ((LetzteAenderungen Letzte �nderungen))
----
======Aktuelle Version meiner Startseite [Benutzername: {{user}}]==
{{includeup}}


Hier erneut als Screenshot:


Berechtigungen:
Lesen:
$ (nur angemeldete Benutzer)
Schreiben:
admins (nur Administratoren)
Kommentare:
nach Bedarf


Auch hier zum Schluss ein Screenshot (die Seite heisst “Registrierte” und nicht “Members”):


�ber Feedback freue ich mich! Danke

3. Code der zus�tzlich ben�tigten Actions

3.1. Action: includestartseite

{{includestartseite}}


/actions/includestartseite.php

<?php
$vars
[0] = $this->UnwrapLink($vars[0]);

if (
$_SESSION["linktracking"] && $track)
        
$this->TrackLinkTo($vars[0]);

if (
in_array($vars[0],$this->context)) return;
if (
$vars[0] == $this->tag) return;

if (!
$this->HasAccess("read",$vars[0])){
  if (
$nowarning!=1) echo "";
}else{
  if (!
$inc_page = $this->LoadPage($vars[0], $_GET["time"])){
    echo
"<em> ".$this->GetResourceValue("SourcePageDoesntExist")."(".$this->Link("/".$vars[0]).")</em>";
  }else{
    if (
$inc_page["body_r"]) $strings = $inc_page["body_r"];
    else
$strings = $this->Format($inc_page["body"], "wacko");
    
$strings = preg_replace("/\�\�toc[^\�]*\�\�/i","",$strings);
    
$strings = preg_replace("/\�\�tableofcontents[^\�]*\�\�/i","",$strings);
    
$strings = preg_replace("/\�\�p[^\�]*\�\�/i","",$strings);
    
$strings = preg_replace("/\�\�showparagraphs[^\�]*\�\�/i","",$strings);
    
$strings = preg_replace("/\�\�redirect[^\�]*\�\�/i","",$strings);
    
$strings = preg_replace("/.*\�\�a name=\"?$first_anchor\"?\�\�(.*)\�\�a name=\"?$last_anchor\"?\�\�.*$/is","\$1",$strings);

    if ((
$nomark!=1) && ($nomark!=2 || $this->HasAccess("write", $vars[0])))
      print
"<div class=\"include\">"."<div class=\"name\">".$this->Link("/".$vars[0])."  :: ".
                          
"<a href=\"".$this->Href("edit", $vars[0])."\">".$this->GetResourceValue("EditIcon")."</a></div>";
    
    
$this->context[++$this->current_context] = $vars[0];
    print
$this->Format($strings, "post_wacko");
    
$this->current_context--;
    
    if ((
$nomark!=1) && ($nomark!=2 || $this->HasAccess("write", $vars[0])))
      print
"<div class=\"name\">".$this->Link("/".$vars[0])."  :: ".
                          
"<a href=\"".$this->Href("edit", $vars[0])."\">".$this->GetResourceValue("EditIcon")."</a></div></div>";
  };
}

?>

3.2. Action: includeup

{{includeup}}


/actions/includeup.php

<?php

$vars
[0] = $this->GetUserName();
$nomark=1;

if (
$_SESSION["linktracking"] && $track)
        
$this->TrackLinkTo($vars[0]);

if (
in_array($vars[0],$this->context)) return;
if (
$vars[0] == $this->tag) return;

if (!
$this->HasAccess("read",$vars[0])){
  if (
$nowarning!=1) echo $this->GetResourceValue("NoAccessToSourcePage");
}else{
  if (!
$inc_page = $this->LoadPage($vars[0], $_GET["time"])){
    echo
"<em>Du hast deine Startseite noch nicht eingerichtet. Klicke auf das Fragezeichen neben deinem Benutzernamen, um dies nachzuholen: </em><strong>".$this->Link("/".$vars[0])."</strong>";
  }else{
    if (
$inc_page["body_r"]) $strings = $inc_page["body_r"];
    else
$strings = $this->Format($inc_page["body"], "wacko");
    
$strings = preg_replace("/\�\�toc[^\�]*\�\�/i","",$strings);
    
$strings = preg_replace("/\�\�tableofcontents[^\�]*\�\�/i","",$strings);
    
$strings = preg_replace("/\�\�p[^\�]*\�\�/i","",$strings);
    
$strings = preg_replace("/\�\�showparagraphs[^\�]*\�\�/i","",$strings);
    
$strings = preg_replace("/\�\�redirect[^\�]*\�\�/i","",$strings);
    
$strings = preg_replace("/.*\�\�a name=\"?$first_anchor\"?\�\�(.*)\�\�a name=\"?$last_anchor\"?\�\�.*$/is","\$1",$strings);

    if ((
$nomark!=1) && ($nomark!=2 || $this->HasAccess("write", $vars[0])))
      print
"<div class=\"include\">"."<div class=\"name\">".$this->Link("/".$vars[0])."  :: ".
                          
"<a href=\"".$this->Href("edit", $vars[0])."\">".$this->GetResourceValue("EditIcon")."</a></div>";
    
    
$this->context[++$this->current_context] = $vars[0];
    print
$this->Format($strings, "post_wacko");
    
$this->current_context--;
    
    if ((
$nomark!=1) && ($nomark!=2 || $this->HasAccess("write", $vars[0])))
      print
"<div class=\"name\">".$this->Link("/".$vars[0])."  :: ".
                          
"<a href=\"".$this->Href("edit", $vars[0])."\">".$this->GetResourceValue("EditIcon")."</a></div></div>";
  };
}

?>

3.3. Action: user

{{user}}


/actions/user.php

<?php

if ($this->GetUser()) { echo $this->Link($this->GetUserName());}

?>


 
Файлов нет. [Показать файлы/форму]
Комментариев нет. [Показать комментарии/форму]
Donate
Время работы: 0.437 s
Использовано памяти: 1.303 Mb