Navigation

PmWiki (deutsch) für die Liste aller Seiten


Englisch:  Home Page
 twitter Twitter Feed
 ko-fi Support me on Kofi
 Series Index: A to Z|By Country|By Platform
 News Feed & Site Updates: 2019 Nov|Dec
2020 Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec
2021 Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec
2022 Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec
2023 Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec
2024 Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec
2025 Jan


BL Calendar (click image to open in new tab)
January 2025
Archive 2020|2021|2022|2023|2024|2025

Jump To
CurrentUpcomingCompleted
ShortsCancelledNot Made


 Currently Airing  (A-Z order)

Click here to expand or collapse...
Thailand Every You, Every Me (Youtube release)

 Upcoming BL Series  (Start date)

Click here to expand or collapse...
Thailand Top Form (Thu 20 Mar 2025)

 Completed Series 

Click here to expand or collapse...
Philippines Art Of Love (OFFLINE)
Philippines Beautiful Scars (Episode 4 finale OFFLINE)
Thailand Boyband (No International release)
Myanmar Healing Thingyan (OFFLINE)
Hong Kong Hehe & He (Season 3 - on hiatus)
Thailand If I Love A Boy (OFFLINE)
Philippines Indigo (OFFLINE)
Philippines Jack And Jill (OFFLINE)
Philippines Lakan (OFFLINE)
Thailand Make A Wish [Thailand] (No International release)
Thailand Missing Piece (OFFLINE)
Myanmar My
Thailand My Secret Love (OFFLINE)
Philippines Quaranthings (OFFLINE)
Thailand Roommate (Season 1 OFFLINE)
Japan Sugar Dog Life (No International release)
Thailand Venus In The Sky (Youtube release)

 One-Off BL shorts 

Click here to expand or collapse...

 Cancelled BLs (Uncompleted) 

Click here to expand or collapse...
Philippines Destined/Fated (OFFLINE)
Philippines Infinity (OFFLINE)
Philippines Kiss The Night (OFFLINE)
Philippines Overlooked Love (OFFLINE)
Thailand The Whisperer (EP10 Finale never released)
Philippines Unexpected (OFFLINE)

 Abandoned - Not Made 

Click here to expand or collapse...

Cambodia= Cambodia China= China Hong Kong= Hong Kong India= India
Japan= Japan Laos= Laos Myanmar= Myanmar The Philippines= Philippines
South Korea= South Korea Taiwan= Taiwan Thailand= Thailand Vietnam= Vietnam


edit SideBar

Eigene Aktionen


für die Liste aller Seiten

Administratoren (Fortgeschritten), Entwickler

Mit Kochbuchrezepten ist es möglich, eigene Seitenaktionen für PmWiki zu definieren. Der korrespondierende Kode wird ausgeführt, wenn ein Parameter wie in dem folgenden Beispiel angegeben wird:

[[MyGroup/MyPage?action=myaction]]

Mit einer solchen Aktion kann man die Anzeige und Behandlung der aktuellen Seite ändern - wie in den Standardaktionen edit oder print. Oder man kann viele Wikiseiten auf einmal manipulieren oder globale Aufgabe durchführen wie das Ändern der gespeicherten Textauszeichnungen aller Seiten in dieser Gruppe (Wehe!) oder Daten sammeln aus allen Seiten im Wiki. Abhängig von seinem Kode kann es sogar egal sein, welchem Seiten-URL man die Aktion anfügt wie bei der Standardaktion phpinfo.

Während ein Eigene Auszeichnungen vornehmlich bedeutungsvolle Textersetzungen an der aktuellen Seite vornehmen soll, wird eine Seitenaktion von einem URL-Parameter ausgelöst und kann deshalb in Verweisen als Aufruf von PHP-Funktionen eingesetzt werden, mit Wirkung auf die aktuelle Seite oder auf das ganze Wiki, wie in diesem Beispiel:

[[{*$FullName}?action=myaction| führe meine Aktion aus]]

führe meine Aktion aus

Auf jeden Fall müssen Sie sich klar darüber sein, wenn Sie PmWikis eingebaute Funtionen für angepasste Aktionen (Benutzeraktionen) nutzen wollen, dass Kochbuchrezepte in die config.php eingefügt werden, welche früh während der Seitenbearbeitung aufgerufen wird. Das bedeutet, dass zu jenem Zeitpunkt viele Variablen der internen Funktionen (z. B. in pmwiki.php) noch gar nicht sauber initialisiert sind. Dadurch können sich diese Funktionen unerwartet verhalten, wenn sie direkt in den eingefügten Rezeptdateien aufgerufen werden. Erinnern Sie sich, dass auch Funktionen, die für angepasste Textauszeichnungen (Custom markups) benutzt werden, immer erst später in dem Prozess aufgerufen werden — Markup() berücksichtigt das. Analog können Sie einen Aktionsbehandler (action handler) nutzen, der PmWiki veranlasst, seinen Aktionskode zur rechten Zeit auszuführen, wenn alle internen Arbeiten erledigt sind.

Das folgende Beispiel zeigt, wie Sie eine Benutzeraktion myaction aufsetzen können für den URL .../MyGroup/MyPage?action=myaction. Das folgende unsinnige, aber instruktive, Beispiel wird dem Text einer anderen Seite MyGroup.MyOtherPage ein 'x' voranstellen. Dann wird die Seite MyGroup.MyPage, die in dem URL steht, angezeigt.

$HandleActions['myaction'] = 'HandleMyAction';  # Wenn der URL 'action=myaction' enthält, 
                                                # rufe HandleMyAction zur rechen Zeit auf
$HandleAuth['myaction'] = 'admin';              # Autorisierungsebene $auth für HandleMyAction

function HandleMyAction($pagename, $auth) {     # Parameter (Signatur) der Handler-Funktion, die PmWiki erwartet
  global $Author;                               # aktuellen Benutzernamen behalten, z. B. für Seitenverlauf
  $old = RetrieveAuthPage('MyGroup.MyOtherPage', $auth);   # Alle Informationen der Seite MyGroup.MyOtherPage holen
  $new = $old;                                  # die Seiteninformationen, die unverändert bleiben, 
                                                # kopieren (z. B. Seitenverlauf)
  $new['text'] = "x".$old['text'];              # ... etwas am alten Text manipulieren
  $Author='myactionbot';                        # Autorname, der im Seitenverlauf für diese Manipulation 
                                                # eingetragen werden soll
  $pn='MyGroup.MyOtherPage';                    # nötig, weil UpdatePage nur mit Variablen (by reference) 
                                                # als Parameter aufgerufen werden darf
  UpdatePage($pn,$old,$new);                    # ändere die aktuelle Wikiseite
  HandleBrowse($pagename);                      # zeige die in dem URL angegebene Seite (z. B. MyGroup.MyPage) an
}

Anmerkungen:

  • Mit 'admin' als Autorisierungsebene wird die Aktion den Benutzer auffordern, ein Admin-Passwort einzugeben, es sei denn, es ist von einem früheren Login schon im Cookie vorhanden. Mit 'read' kann RetrieveAuthPage() nur auf Seiten zugreifen, die der aktuelle Benutzer lesen darf.
  • Aus bestimmten Gründen muss UpdatePage() mit Variablen (by reference) aufgerufen werden, deshalb würde UpdatePage('MyGroup.MyOtherPage',$old,$new), in einen PHP-Fehler münden.
  • Während sich diese Aktion hier auf andere Seiten (MyOtherPage) auswirkt, würde man sein Skript eher nach UpdatePage() beenden, vielleicht nachdem man eine schlichte Statusmeldung ausgegeben hat, anstatt eine Wikiseite mit HandleBrowse() anzuzeigen.
  • Wenn eine UpdatePage-Aktion die Bearbeitung von Formularfeldern einschließt, bereinigt man die Eingabe, bevor man sie einsetzt, um $new['text'] aufzubauen. Zum Beispiel
    $new['text'] = str_replace("\r",'',stripmagic($_POST['text']));.
  • Es gibt eine Liste mit Verfügbare Aktionen (Standardaktionen, Diagnoseaktionen, Skriptaktionen, Kochbuchaktionen)

Kategorie: PmWiki Developer
  für die Liste aller Seiten


Übersetzung von PmWiki.CustomActions,   Originalseite auf PmWikiDe.CustomActions   —   Backlinks

Zuletzt geändert:   PmWikiDe.CustomActionsam 20.08.2022
 PmWiki.CustomActionsam 19.08.2022