Midnight Modding Posted June 25, 2023 Posted June 25, 2023 (edited) When using $rootsPerPage for a Tree, it's still showing every root on the same page in acp. It shows the pagination correctly (ie, I have 88 rows, set it to 10, it shows there are 9 pages), but then every page simply lists all 88 roots. For this app, no subcategories are even allowed and it could have a lot of roots, so I figured I should have it broken into pages, especially since I don't see much reason for anyone to reorder them, anyway. I can't remember if I confirmed it working in the past or maybe it has just always been this way. I see the line in Tree.php that gets the rows and it sure seems like it's correct... Edited June 25, 2023 by Midnight Modding
Daniel F Posted June 26, 2023 Posted June 26, 2023 Have you also defined the getTotalRoots callback function? In the tree.php: /** * @brief If using $rootsPerPage, a callback function that returns the total number of roots */ public $getTotalRoots = NULL;
Midnight Modding Posted June 26, 2023 Author Posted June 26, 2023 9 hours ago, Daniel F said: Have you also defined the getTotalRoots callback function? In the tree.php: /** * @brief If using $rootsPerPage, a callback function that returns the total number of roots */ public $getTotalRoots = NULL; yes. I see what the problem is. Quote $rows = $getRootsFunction( $this->rootsPerPage ? array( ( $page - 1 ) * $this->rootsPerPage, $this->rootsPerPage ) : NULL ); I don't see a code button in the editor, but anyway, in that line there from Tree.php, it's passing that array or null to $this->getRoots(), but getRoots() does not even use any parameters. So I did my own _getRoots() method and changed the following line: Quote foreach( $nodeClass::roots( NULL ) as $node ) to: Quote foreach( $nodeClass::roots( NULL, NULL, array(), $extra ) as $node ) where $extra is the passed array from above. SO now it works.
Recommended Posts