Task-Center: übertragene Aufgabe lässt sich nicht bearbeiten (seit Update auf 2.11.3)
Hallo!
Seit dem Update auf 2.11.3 lassen sich bei mir Aufgaben nicht mehr vom zugeordneten Bearbeiter ("Übertragen an") öffnen; klickt dieser auf das Stiftsymbol erscheint die Meldung "Ein Fehler ist aufgetreten!". (Zum Admin gemacht, kann dieser die Aufgabe bearbeiten.)
Die Änderungen am Task-Center mit dem Update in "system/modules/tasks/ModuleTasks.php" (s.a. https://github.com/contao/core/commi...47b8848f4f688b)
verstehe ich so, dass nur noch Admins bzw. der Ersteller eines Tasks diesen ändern können.
Ich habe versucht in ModuleTasks.php die Zeile 305 ("if (!$this->User->isAdmin && $objTask->createdBy != $this->User->id)") entsprechend zu ergänzen, dass auch die zugeordneten Bearbeiter keine Fehlermeldung erhalten. Die ist mir aber nicht gelungen, da sich mir nicht erschließt über welches "assignedTo"-Objekt ich die ID des zugeordneten Benutzers erhalte.
Ehe ich die neuen Zeile auskommentiere (und die Sicherheitslücke wieder öffne), wollte ich nachfragen, ob es dafür eine elegantere Lösung gibt.
Gruß
McS
Task-Center Bugfix für 2.11
Hallo.
So gehts bei mir:
Zeile 294 tauschen mit:
PHP-Code:
$objTask = $this->Database->prepare("SELECT t.*,s.assignedTo, (SELECT name FROM tl_user u WHERE u.id=t.createdBy) AS creator FROM tl_task t INNER JOIN tl_task_status s ON t.id=s.pid WHERE t.id=?")
(alles in einer Zeile!)
Bitte dazu Beitrag #8 beachten!
Zeile 305 tauschen mit:
PHP-Code:
if (!$this->User->isAdmin && $objTask->createdBy != $this->User->id && $objTask->assignedTo != $this->User->id)
(alles in einer Zeile!)
getestet mit 2.11.4
Task-Center Bugfix für 2.11 , Verbesserung
Mit der 2.11.5 kommt der Patch übrigens mit.
Sogar noch verbessert, mein SQL war etwas zu lasch, ich hatte nicht bedacht, das man ja beim Ticket auch den Bearbeiter bearbeiten kann :-)
Hier die verbesserte Lösung von Leo:
PHP-Code:
$objTask = $this->Database->prepare("SELECT *, t.id AS id, (SELECT name FROM tl_user u WHERE u.id=t.createdBy) AS creator FROM tl_task t LEFT JOIN tl_task_status s ON t.id=s.pid AND s.tstamp=(SELECT MAX(tstamp) FROM tl_task_status ts WHERE ts.pid=t.id) WHERE t.id=?")
(die 3 Zeilen hier müssen wieder eine im Script ergeben)