Bei der concrete5 Version 8.4.x kann das Flag "ignore page permissions" (Seitenberechtigungen ignorieren), wenn es einmal gesetzt ist, nicht mehr zurückgesetzt werden.

Ursache

Im PageList Controller ('controller.php' unter 'concrete5/blocks/page_list') wurde vergessen das Flag zurückzusetzen, wenn es nicht mehr selektiert ist.


Abhilfe

Um update-sicher zu sein leitet man am besten den Controller ab (beschrieben unter 'Eigene Controller Ableitung' ) und behebt den Fehler in der controller.php, die dann unter '/application/blocks/page_list' steht. Dazu müssen an den Stellen, dort wo die Flags abgespeichert und gelesen werden die vergessene Variable 'ignorePermissions' eingefügt werden (in der Funktion save($args)).

'ignorePermissions' => 0,
$args['ignorePermissions'] = ($args['ignorePermissions']) ? '1' : '0';

Die entsprechenden Zeilen sind einfach zu finden, indem man sich beispielsweise am Flag 'enableExternalFiltering' orientiert.


Ausblick

Der Fehler fiel mir auf, weil ich vor hatte die PageList so zu erweitern, damit ich mehr als nur einen PageType filtern konnte. Aus irgend einen Grund - den ich bis jetzt nicht weiter erfolgt hatte - konnte ich keine neue Flag Variable einfügen, deshalb missbrauchte ich die Variable 'ignorePermissions' dafür.

Ich kommentierte den Aufruf '$this->list->ignorePermissions()' aus und setzte dafür die Kennungs-Namen der beiden Seiten ein, die ich filtern wollte. Dabei wird die Filterung nicht über die ID vorgenommen, sondern über den TypeHandle. Falls ein PageType über die singuläre Auswahl gewählt wurde, wird diese in diesem Fall ignoriert:
($this ist die Controller-Klasse, $this->list ist ein Objekt vom Typ PageList, die im Controller angelegt wird, 'kn_veranstaltung' und 'aktuelle_meldung' sind die Kennungen der Seiten, die ich filtern möchte)

if (isset($this->ignorePermissions) && $this->ignorePermissions) {
$this->list->filterByPageTypeHandle(['kn_veranstaltung', 'aktuelle_meldung']);

}