Hallo,
gibt es irgendeine Möglichkeit die Methode canEditPost() in der Thread.class.php zu manipulieren? Ich wüsste nicht, wie ich da über ein Event hinkommen sollte. Scheinbar sind dort keine Events vorgesehen?
Gruß
JAY
Hallo,
gibt es irgendeine Möglichkeit die Methode canEditPost() in der Thread.class.php zu manipulieren? Ich wüsste nicht, wie ich da über ein Event hinkommen sollte. Scheinbar sind dort keine Events vorgesehen?
Gruß
JAY
Was hast du denn genau vor?
Hi SoftCreatR
Ich möchte im Grunde in einem Plugin eine neue Bedingung hinzufügen, welche false returnen könnte und der Benutzer den jeweiligen Beitrag somit nicht editieren darf. Somit möchte ich die bestehende Logik erweitern.
Hättest du da einen Vorschlag?
Gruß
JAY
Ich hole noch einmal etwas weiter aus:
Was will ich tun?
Ich möchte Benutzern das Bearbeiten eines (eigenen) Beitrages bei gewissen Bedingungen verbieten. Dabei spielt es eigentlich keine Rolle, welche Bedingung dies ist.
Da im Template threadPostList.tpl in Zeile 195 bereits folgendes abgefragt wird um den "Editieren" Button anzuzeigen / nicht anzuzeigen...
und es an der Stelle kein passendes Event gibt um ggf. über einen TemplateListener eigene Klassen ins Spiel zu bringen, dachte ich irgendwie, dass ich die canEditPost()-Methode manipulieren kann. Dann müsste ich im Template nichts ändern (was aufgrund von fehlenden Events so oder so nicht möglich ist).
Was im Grunde passieren soll, ist folgendes. Ich bin mir unsicher, ob es überhaupt eine Möglichkeit gibt, dies irgendwie zu realisieren.
public function canEditPost(Post $post) {
//own condition
if ($foo == 'bar') return false;
//own condition end
if ($post->threadID != $this->threadID) return false;
// get board
$board = $this->getBoard();
// check permissions
$isModerator = $board->getModeratorPermission('canEditPost') || $board->getModeratorPermission('canDeletePost');
$isAuthor = $post->userID && $post->userID == WCF::getUser()->userID;
$canEditPost = $board->getModeratorPermission('canEditPost') || $isAuthor && $board->getPermission('canEditOwnPost');
$canDeletePost = $board->getModeratorPermission('canDeletePost') || $isAuthor && $board->getPermission('canDeleteOwnPost');
if ((!$canEditPost && !$canDeletePost) || (!$isModerator && ($board->isClosed || $this->isClosed || $post->isClosed || $post->isDeleted))) {
return false;
}
// check post edit timeout
if (!$isModerator && WCF::getSession()->getPermission('user.board.postEditTimeout') != -1 && TIME_NOW - $post->time > WCF::getSession()->getPermission('user.board.postEditTimeout') * 60) {
return false;
}
return false;
}
Display More
Damit würde ich bezwecken, dass der "Editieren" Button in Abhängigkeit einer eigenen Bedingung nicht verfügbar wäre.
Im schlimmsten Fall: Den Button per Javascript ausblenden (also einfach ein Event im Header nehmen) und zusätzlich noch PostAction::validateUpdate erweitern, falls jmd. den Button per CSS wieder einblendet.
Im schlimmsten Fall: Den Button per Javascript ausblenden (also einfach ein Event im Header nehmen) und zusätzlich noch PostAction::validateUpdate erweitern, falls jmd. den Button per CSS wieder einblendet.
Danke Christopher Walz für den Tipp. Das wäre tatsächlich die letzte Option gewesen.
@WoltLab Team:
Wäre es nicht möglich, dass man dort ein Event bekommt? Kann sicherlich häufiger vorkommen, dass Plugins dort was ändern wollen. Dadurch würde man sich unnötige und aus meiner Sicht unsaubere JS Arbeit sparen und das validate in der Action würde auch bereits funktionieren.
Grüße
Kann man hier seitens dem Team noch auf Antwort hoffen? Wäre für die Planung bei mir interessant.
Gruß
Wenn es deiner Planung hilft: Aktuell ist das nicht wirklich anders zu lösen, als wie von Christopher Walz vorgeschlagen. PHP-seitig hast du derzeit keine Möglichkeit.
Wenn es deiner Planung hilft: Aktuell ist das nicht wirklich anders zu lösen, als wie von Christopher Walz vorgeschlagen. PHP-seitig hast du derzeit keine Möglichkeit.
Danke für deine Antwort. Das hilft definitiv, allerdings versuche ich js in solchen Fällen echt nur zu nehmen, wenn es gar nicht mehr anders geht. Deshalb hoffe ich noch auf ein Event, ansonsten wird mir wohl nichts übrig bleiben..
Da das Ganze eh Javascript-abhängig ist, sehe ich da kein großes Problem.
Don’t have an account yet? Register yourself now and be a part of our community!