- List Pagination Error. Why any update or cancel form return to List cause to first page?
Hi @tommyctwu
When navigating using the page numbers on a list, the page number is now stored in the page URL instead of in the session. (Release Note 33: October CMS 3.2 - Page Finder Release - October CMS)
Take a look at the Redirect article here: Redirects - October CMS - 3.x
Inside forms if you want to redirect to the previous page (and keep the list pages numbers),
add the data-browser-redirect-back
attribute to the Save and Close (Save and Back) button.
Adding the attribute will give the previous URL redirection priority.
<button
type="button"
data-request="onSave"
data-request-data="close:1"
data-browser-redirect-back
data-hotkey="ctrl+enter, cmd+enter"
data-load-indicator="Saving Person..."
class="btn btn-default">
Save and Back
</button>
Also, the Cancel button.
<span class="btn-text">
or
<a
href="<?= Backend::url('october/test/people') ?>"
data-browser-redirect-back>
Cancel
</a>
</span>
Thanks Samuel, It helps a lot.
Hi @daftspunky,
I have orders and products with pivot data. When I update order I can add products (pivot) and there is pagination there. When I click second page in products relation pivot the page property is added to browser link. Now when I add product, the relation manager list is refreshed and is showing empty, because of page property in browser link. I donāt have access to relation manager buttons to add ādata-browser-redirect-backā.
Is there a way to fix this?
Iām not sure that the data-redirect-browser-back attribute will help here. Can you reproduce it using the Test plugin? GitHub - octobercms/test-plugin: Playground for October CMS
I installed Test Plugin. Please go to Users ā Update User ā Tab Pivot Data
I donāt know how, but this list by default use rolePage
in link, not default page
, so the issue is not visible here.
But I see another issue here. Standard, Pivot Data, Pivot Model lists uses the same rolePage
in link. Most lists will use the same name, so if you go to page 2 on first list, refresh page, then on all three list you are on 2 page. The solution here is to use customPageName
for each list. Maybe this is worth mentioned on update guide: Release Note 33: October CMS 3.2 - Page Finder Release - October CMS
My initial issue can be fixed with this.
Second issue is that for manage
property you cannot right now use customPageName
, it is using default page
.
Update: plugins/october/test/controllers/users/config_relation.yaml
roles_pivot:
label: Role
view:
list: $/october/test/models/userrolepivot/columns_basic.yaml
toolbarButtons: add|remove|create
filter: $/october/test/models/role/scopes.yaml
showSearch: true
recordsPerPage: 1
customPageName: rolesViewPage
manage:
list: $/october/test/models/role/columns.yaml
filter: $/october/test/models/role/scopes.yaml
showCheckboxes: true
recordsPerPage: 1
customPageName: rolesManagePage
pivot:
form: $/october/test/models/userrolepivot/fields_basic.yaml
In case of Pivot Data and Pivot Model they both use the same page
name on manage
list view so when you go to Pivot Data ā Add Role ā Go to 2 page, close modal, go to Pivot Model, add Role. You are here on 2 page, because both list uses the same page name.
Solution will be to make customPageName
available in manage
mode.
Also nice improvement will be that when customPageName
is not set by developer to use by default: {relationName}Page.
Now that I think more, those issues relates to only relation lists.
I imagine situation where user A will send link to backend area with page=2
in link. Now when user B opens it and go to second tab, where is second list with only 1 record. This list will be empty.
EDIT:
I also noticed right now that when you specify customPageName
it is not used unless it is present in link. I have specified for products list relation (view mode):
customPageName: productsViewPage
Now in the browser link I add ?page=2
, refresh page and my products list is empty (it is probably using page
instead of my specified productsViewPage
name.
Hi @Renatio
Thanks for this! We have fixed the āpageā bug where the page number leaks to lists without any page value specified, which had a fallback to the ?page
query value. This fixes some of the issues described.
Regarding the manage
page name, the intended behavior was to not include the selected page number in the URL, which means the page number is reset every time the manage screen is open.
However, we can do both.
-
By default, the
manage
mode hascustomPageName
set tofalse
which means the page number is not stored in the URL and paging is reset every time. -
A developer can specify a
customPageName
formanage
mode to persist the selection in the URL -
By default, the
view
mode hascustomPageName
to āmodelPageā syntax (eg:camel_case(class_basename($this->relationModel).'Page')
Try this again in v3.2.18 when it is released.