Skip to content

Implement contents action buttons: Rename, Change state, Tags, Properties #108

@nils-pzr

Description

@nils-pzr

Feature Request: Implement Missing Bulk-Action Flows in @plone/contents

Problem

In @plone/contents, the action toolbar already renders four buttons:

  • Rename
  • Change state / Workflow
  • Tags
  • Properties

These buttons are defined in:

components/ContentsActions.tsx

However, their handlers in:

routes/contents.tsx:95-99

are currently only no-op placeholders:

() => Promise.resolve()

As a result, clicking these buttons does nothing.

Upload and Delete are already implemented via UploadModal / DeleteModal. These four actions are the remaining gap.


Goal

Implement real flows for each button following the existing UploadModal / DeleteModal pattern:

  • package-local RAC modal
  • route / action
  • wiring between route, table, and action toolbar

This should follow the existing implementation plan:

IMPLEMENTATION_PLAN.md
Phase 2.7 / P1 #5–8

Tasks

  • Rename
    Implement a modal for editing id / title.

    Target path:

    components/RenameModal/*

    Requirements:

    • Support single-item semantics
    • Support multi-item semantics
  • Change state / Workflow
    Implement a workflow modal.

    Target path:

    components/WorkflowModal/*

    Requirements:

    • Discover available transitions
    • Apply selected transitions
    • Support recursive workflow changes
    • Handle mixed selections
  • Tags
    Implement a tags modal.

    Target path:

    components/TagsModal/*

    Requirements:

    • Add tags for one or more items
    • Remove tags for one or more items
  • Properties
    Implement a properties modal.

    Target path:

    components/PropertiesModal/*

    Requirements:

    • Edit effective
    • Edit expires
    • Edit rights
    • Edit creators
    • Edit exclude-from-nav
    • Handle mixed-value state for multi-selection
  • Wire handlers in routes/contents.tsx

    Replace the current placeholder handlers in:

    routes/contents.tsx:95-99
  • Pass handlers through the component chain:

    ContentsTable → ContentsActions
  • On completion:

    • Refresh table data
    • Show consistent success toasts
    • Show consistent error toasts

References

  • Buttons / UI:

    components/ContentsActions.tsx
  • Placeholder handlers:

    routes/contents.tsx:95-99
  • Implementation plan:

    IMPLEMENTATION_PLAN.md
    Phase 2.7, P1 #5–8
  • Behavior reference:

    Volto ContentsRenameModal
    Volto ContentsWorkflowModal
    Volto ContentsTagsModal
    Volto ContentsPropertiesModal

Metadata

Metadata

Assignees

Labels

No labels
No labels
No fields configured for Feature.

Projects

Status
In Progress
Status
In review

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions