[pmwiki-users-de] CondAuth und if auth

Sebastian Schneider sesc at unibw.de
Mi Jun 17 03:01:01 CDT 2009


So, ich habe die Tipps von Michael und Oliver mal vereint:

Markup('[[|tt','<[[|',
  "/(?>\\[\\[([^|\\]]+)\\|\\s*)\\*\\s*(.*?)\\s*\\]\\]($SuffixPattern)/e",
  "makeLockedLink(\$pagename,PSS('$1'),PSS('$2'),'$4')");

function makeLockedLink($pagename, $target, $txt, $suffix) {
  $txt = trim( $txt );
  $page = MakePageName( $pagename, trim( $target ) );

  if ( $txt == '' )
    $txt = (preg_match('/[.\/]/',$target)) ? $page : $target;
  elseif ( $txt == "+" )
    $txt = PageVar($page,'$Title');

  if ( CondAuth( $page, 'read' ) )
    return Keep( MakeLink($pagename, $page, $txt, $suffix), 'L' );
  else
    return Keep( MakeLink($pagename, $page, $txt, "&nbsp;<img
src='$GLOBALS[PubDirUrl]/icons/lock.png'/>".$suffix), 'L' );
}

Jetzt klappt es auch mit CondAuth (es hatte sich ein Leerfeld nach dem
$target eingeschlichen), und es funktionieren jetzt auch Verweise zu
Seiten der gleichen Gruppe, ohne dass der Gruppenname angegeben werden muss.

Als nächstes schaue ich mal, ob ich den * noch loswerden kann.

Danke schonmal an alle,

Sebastian

Sebastian Schneider schrieb:
> Hallo Oliver,
>
> Es hat wohl wirklich was mit dem $target zu tun. Eigentlich hole ich es
> mir aus dem Markup-Aufruf mittels regulären Ausdrucks. Wenn ich es mir
> ausgebe, dann stimmt das auch.
>
> Ich habe jetzt aber mal das $target hart reinprogrammiert für eine
> geschützte Seite und siehe da: Es geht!
>
> Es scheint, als müsse ich meinen regulären Ausdruck nochmal genauer
> analysieren.
>
> Danke schonmal,
>
> Sebastian
>
>
>
> Oliver Betz schrieb:
>   
>> Sebastian Schneider schrieb:
>>
>>   
>>     
>>> Ich schreibe gerade ein "Rezept", welches -ähnlich wie das
>>> ExternalLinks-Rezept hinter einem Link ein kleines Schloss-Symbol
>>> anzeigt, wenn die Seite zum Lesen durch ein Passwort geschützt ist.
>>>
>>> Dazu habe ich folgende Methode:
>>>
>>> function makeLockedLink($pagename, $target, $txt, $suffix) {
>>>   global $PubDirUrl;
>>>
>>>   if ( CondAuth( $target, 'read' )  )
>>>     return MakeLink($pagename, $target, $txt,$suffix);
>>>   else
>>>     return MakeLink($pagename, $target, $txt,"&nbsp;<img src=".$PubDirUrl."/icons/lock.png>".$suffix);
>>>
>>> }
>>>
>>> Das Problem bei obiger Methode ist, dass CondAuth immer true
>>> zurückliefert, unabhängig davon ob ich das Passwort auf der betreffenden
>>> Seite bereits eingegeben habe.
>>>     
>>>       
>> vielleicht stimmt der Seitenname in $target nicht?
>>
>> Bei mir funktioniert CondAuth wie erwartet, aber ich rufe es mit einem
>> festen Seitennamen auf: "if (! CondAuth('Main.HomePage', 'read'))", um
>> für Besucher eine "Nicht-Wiki-Darstellung" zu erhalten - die
>> Besucherseiten haben kein Lesepasswort.
>>
>> Woher kommt $target?
>>
>> Vielleicht brauchst Du ResolvePageName()?
>>
>> Servus
>>
>> Oliver
>>
>>
>> _______________________________________________
>> pmwiki-users-de mailing list
>> pmwiki-users-de at pmichaud.com
>> http://www.pmichaud.com/mailman/listinfo/pmwiki-users-de
>>   
>>     
>
>
>
> _______________________________________________
> pmwiki-users-de mailing list
> pmwiki-users-de at pmichaud.com
> http://www.pmichaud.com/mailman/listinfo/pmwiki-users-de
>