Jump to content

Recommended Posts

Posted

New Drafts System and Item Permissions

PAGEGRID 2.3 is officially here, and it is a major release focused entirely on improving team and client workflows. With drafts, unpublished items, and item-level permissions, you get safer ways to experiment, more control over what goes live, and fine-grained access control for every block.

Drafts: Redesign Without Risk

Drafts let you change layout and content without affecting the live site. Create a draft, experiment freely, and publish when ready — or discard to revert. No risk of breaking anything your visitors see.

pg-create-draft-1.jpg

How it works

Creating a draft is one click from the gear menu in the top navigation bar. PAGEGRID clones your current content into a draft and switches the editor to draft mode. An orange status indicator shows you're in draft mode, with quick access to publish or discard.

Drafts are only for PageGrid fields. Non-PageGrid fields (e.g. page title, custom fields) are not editable in draft mode and remain unchanged on the live page.

pg-draft-menu.jpg

Use cases

  • Safe collaboration: Iterate on layout and content updates with a client in draft mode, publishing only when everyone is happy.

  • Staging updates: Build a campaign page or seasonal homepage update over a few days without taking down the active live version.

Read the full draft documentation
 

Unpublished Items

Instead of starting a full draft just to update one section, unpublished items let you hide and rework single blocks in-context. This pairs perfectly with drafts: use drafts for page-wide overhauls, and unpublished items to temporarily disable a single block while you tweak its copy or layout. 

pg-hidden-items-2.png

How it works

Click the pen icon to edit an item, go to the settings tab, and check the Unpublished status checkbox. Save the item to unpublish it. To make it live again, simply edit the item and click Publish.
 

Item Permissions: Fine-Grained Control for Every Block

Until now, PAGEGRID's permission system was global (using native ProccessWire permissions). You could define what each role could do, but those rules applied globally or per template. With item-level permissions (items are pages) you can lock down individual blocks, giving different teams different levels of control on the same page.

By restricting structural capabilities to specific containers, you can hand over a site knowing the core design system and layout are completely protected, while still giving editors the exact level of freedom they need to manage their content.

pg-item-permissions.png

How it works

Each container block now has a Manage Access option in its settings tab. Enable it and you can choose which roles get access to:

  • Adding new child items
  • Dragging items within the block
  • Resizing items
  • Reordering children
  • Moving items to a different parent block
  • Using specific symbols
  • Creating specific child templates

Item permissions always override global and template permissions. Once you enable it for a block, only explicitly granted roles get through. Everyone else keeps their existing permissions everywhere else.

Use cases

  • Protecting sections: Lock down sensitive, custom-styled sections so clients can't accidentally move or resize elements.

  • Controlled editing: Let a client add defined block items or symbols and reorder them inside a specific layout group without giving them structural design control over the rest of the page.

Read the full permissions documentation
 

Try it today

PAGEGRID 2.3 is ready for your projects. Here is how to get started with the new workflow features:

  • PAGEGRID Cloud: The update is already live on all Cloud sites. Just log in and you'll find drafts, unpublished status, and item permissions ready to use.

  • Self-Hosted: Update the PAGEGRID modules to version 2.3 through your ProcessWire admin or pull the latest release from the repository.

Once you have given the new features a spin, let me know what you think!

  • Like 5
Posted

If you need to use permission checks in code just use ProcessWire's standard permission API. The module automatically respects per-item permissions via hook:

// Check if user can drag an item page
$user->hasPermission('pagegrid-drag', $item);

// Check if user can resize an item page
$user->hasPermission('pagegrid-resize', $item);

// Check if user can add children to a container page
$user->hasPermission('page-add', $container);

// Check if user can sort children of a container page
$user->hasPermission('page-sort', $container);

// Check if user can move a child item page
$user->hasPermission('page-move', $item);

// Built-in ProcessWire methods that call hasPermission internally also respect item permissions:
$container->addable();  // respects item permissions for page-add
$page->sortable();      // respects item permissions for page-sort

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...