Panel sorting pages error with layout:table

I can sort pages by dragging when I have layout:list but breaks when I go to layout:table, getting a Page Not Found Error …?

Here is the blueprint:
listed:
type: pages
sortable: true
status: listed
layout: table

Which Kirby version do you use?

5.2.1

To add, this is a set of Child Pages.

I cannot reproduce this in a fresh 5.2.1 Starterkit.

What I did to test: In photography.yml, changed the layout of the listed section to table, no other changes.

Logged into the Panel, and started to drag around the pages without issues.

Same for me with that test. I’ve compared file and folder names and it doesn’t add up.

Will look at more, but have managed a workaround to reveal another field with

info: “{{ page.custom-field }}”

:grinning_face:

Maybe post the complete blueprint and the blueprint of the child pages for testing.

Are you using any plugins/custom code that might interfere?

Am using Git Content Git Content | Kirby CMS Plugins but I’m not sure how this would interfere. Nor SEO plugin

Here is the parent blueprint:

title: Monitoring All

tabs:
  Monitoring stations:
    icon: pin
    sections:
      drafts:
        type: pages
        status: draft
        template: monitoringstation
        layout: table
        limit: 40
        sortable: true
        columns:
          riverstream:
            label: River/Stream
            value: "{{ page.station_riverstream }}"
            type: text
          context:
            label: Context
            value: "{{ page.station_context }}"
            type: text
          id:
            label: ID
            value: "{{ page.station_id }}"
            type: text
          owner:
            label: Owner/Operator
            value: "{{ page.station_owner }}"
            type: text

      listed:
        type: pages
        status: listed
        template: monitoringstation
        layout: table
        limit: 40
        sortable: true
        info: "{{ page.station_riverstream }}"
        columns:
          riverstream:
            label: River/Stream
            value: "{{ page.station_riverstream }}"
            type: text
          context:
            label: Context
            value: "{{ page.station_context }}"
            type: text
          id:
            label: ID
            value: "{{ page.station_id }}"
            type: text
          owner:
            label: Owner/Operator
            value: "{{ page.station_owner }}"
            type: text

      unlisted:
        type: pages
        status: unlisted
        template: monitoringstation
        layout: table
        limit: 40
        sortable: true
        columns:
          riverstream:
            label: River/Stream
            value: "{{ page.station_riverstream }}"
            type: text
          context:
            label: Context
            value: "{{ page.station_context }}"
            type: text
          id:
            label: ID
            value: "{{ page.station_id }}"
            type: text
          owner:
            label: Owner/Operator
            value: "{{ page.station_owner }}"
            type: text

  grid:
    icon: grid
    label: Grid
    fields:
      layout:
        label: Layouts
        type: layout
        layouts:
          - "1/1"
          - "1/2, 1/2"
          - "4/12, 1/12, 7/12"
          - "1/3, 1/3, 1/3"
          - "1/4, 1/4, 1/4, 1/4"
          - "6/12, 4/12, 2/12"
          - "7/12, 3/12, 2/12"
          - "3/12, 2/12, 7/12"
          - "5/12, 7/12"
          - "7/12, 5/12"
        fieldsets:
          - heading
          - text
          - quote
          - list
          - image
          - gallery
          - video
          - code
          - markdown
        settings:
          fields:
            anchor:
              label: Anchor ID
              type: text
              width: 1/2
            layoutclass:
              type: text
              width: 1/2
            layoutstyle:
              type: select
              options:
                lyt-no-padding: No Padding
                lyt-padding: Padding
                lyt-padding-bottom: Padding bottom only
                lyt-padding-top: Padding top only

  content:
    icon: text
    columns:
      - width: 2/3
        fields:
          Title:
            type: text
            label: Title

          SubTitle:
            type: text
            label: Sub Title

          latestsummary:
            type: writer
            label: Summary
            toolbar:
              inline: false
              marks:
                - bold
                - link
                - italic
                - underline
                - strike
                - code
                - email
                - sub
                - sup
                - clear
            nodes:
              - heading
              - paragraph
              - bulletList
              - orderedList
              - quote

          line:
            type: line

          tags:
            type: tags
            label: Tags
            options:
              - Prepare
              - Other

      - width: 1/3
        sections:
          images:
            type: fields
            fields:
              coverImage:
                type: files
                label: Cover Image
                multiple: false
                layout: cards

  monitoring:
    icon: pin
    label: Monitoring
    fields:
      monitoring_context:
        label: Monitoring context type
        type: checkboxes
        options:
          monitoringlocal: Local
          monitoringupstream: Upstream
          monitoringdownstream: Downstream

  seo: seo/site

And here is the child blueprint

title: Monitoring Station

tabs:
  station_config:
    label: Station Configuration
    columns:
      info:
        width: 1/2
        fields:
          updateblocks:
            type: blocks
            label: About this station
            fieldsets:
              text:
                label: Text
                type: group
                fieldsets:
                  - heading
                  - text
              media:
                label: Media
                type: group
                fieldsets:
                  - image
                  - video

      config:
        width: 1/2
        fields:
          station_name:
            label: Station Name
            type: text

          station_id:
            label: Station ID
            type: text

          station_riverstream:
            label: River, Stream, Ground (garden)
            type: radio
            options:
              cherwell: Cherwell
              evenlode: Evenlode
              thames: Thames
              seacourt: Seacourt
              weirsmill: Wiers Mill
              hinksey: Hinksey
              redbridge: Redbridge
              ground: Ground

          station_type:
            label: Station type
            type: radio
            options:
              river: River
              lake: Lake
              groundwater: Groundwater
              groundwater_flood: Groundwater Flood

          station_data_type:
            label: Data type
            type: radio
            options:
              gaugeboard_manual: Gaugeboard Manual
              telemetered_live: Telemetered Live

          station_status:
            label: Station Status
            type: radio
            options:
              gb_not_installed: GB Not Installed
              sensor_not_installed: Sensor Not Installed
              gb_installed_but_not_surveyed_in: GB Installed But Not Surveyed In
              not_confirmed: Not Confirmed
              working: Working

          station_context:
            label: Station Context
            type: radio
            options:
              local: Local
              upstream: Upstream
              downstream: Downstream

          station_owner:
            label: Station Owner (Operator)
            type: radio
            options:
              SOFLAG: SOFLAG
              houseowner: Houseowner
              EA: EA

          easting:
            label: Easting
            type: number

          northing:
            label: Northing
            type: number

          longitude:
            label: Longitude
            type: number
            step: 0.000000000001

          latitude:
            label: Latitude
            type: number
            step: 0.000000000001

          datum:
            label: Datum
            type: number
            step: 0.01

          datum_accuracy:
            label: Datum Accuracy
            type: radio
            options:
              good: Good
              poor: Poor

          station_ea_wiskiID:
            label: Station EA wiskiID
            type: text

          station_ea_api:
            label: Station EA API Link
            type: text
            help: https://environment.data.gov.uk/flood-monitoring/id/stations/{!!wiskiID!!}/readings?

          station_csv:
            label: Station CSV Link
            type: text
            help: CSV Link

          gov_link:
            label: .GOV link
            type: text
            help: This is the official Check for Flooding Link

  data:
    label: Data
    columns:
      main:
        fields:
          datalog:
            label: Data Log
            type: structure
            sortBy: station_reading_timestamp
            fields:
              station_reading_value:
                label: Reading Value
                type: number
                step: 0.001

              station_reading_comment:
                label: Reading Comment
                type: text

              station_reading_timestamp:
                label: Date and Time
                type: date
                display: DD.MM.YYYY
                time: true
                default: now

  seo:
    label: SEO
    extends: seo/site

Sorry, the indentation of the above is a complete mess, I cannot copy&paste this for testing

Oh my it is. What has got on there. OK.

Edited :up_arrow:

I can reproduce the issue with your blueprint. I’m going to check what’s going on here.

This issue is coming from here: You defined id column for station_id and this conflicts with page.id.

id:
  label: ID
  value: "{{ page.station_id }}"
  type: text

Use station_id column key instead of id:

station_id:
  label: ID
  value: "{{ page.station_id }}"
  type: text

interesting. Let me see if I can update all my station_id definition to station_ref or something…

Solution: Updated all station_id definition to station_ref

Massive thanks for all your help! :grinning_face: