guysartorelli/silverstripe-gridfield-preview

Standalone silverstripe GridField component for previewing records directly from the GridField

Installs: 41

Dependents: 0

Suggesters: 0

Security: 0

Stars: 5

Watchers: 5

Forks: 1

Open Issues: 0

Type:silverstripe-vendormodule

2.0.0 2023-02-14 08:01 UTC

This package is auto-updated.

Last update: 2024-02-19 02:56:30 UTC


README

A stand-alone GridField component that enables previewing records directly from a GridField.

Install

composer require guysartorelli/silverstripe-gridfield-preview

CMS User Usage

example of usage

Click the preview button in the gridfield. This will automatically open the preview panel (in split mode if your screen is wide enough, or in preview mode otherwise) with the preview set to the record you clicked.

preview button

Developer Usage

Directly inn a ModelAdmin

The easiest way to use this module is to add PreviewableModelAdminExtension as an extension for your ModelAdmin subclass. By default this will add a preview button to the gridfield for all tabs that have CMSPreviewable models.

MyApp\Admin\MyModelAdmin:
  extensions:
    - GuySartorelli\GridFieldPreview\PreviewableModelAdminExtension

You can also configure this to only add the component for specific model classes:

MyApp\Admin\MyModelAdmin:
  extensions:
    - GuySartorelli\GridFieldPreview\PreviewableModelAdminExtension
  gridfield_previewable_classes:
    - MyApp\Model\MyPreviewableModel

In literally any other GridField

You can add the GridFieldPreviewButton GridField component to literally any GridField, even one that belongs to a DataObject which has its own preview!

use GuySartorelli\GridFieldPreview\GridFieldPreviewButton;
use SilverStripe\Forms\GridField\GridField;
use SilverStripe\Forms\GridField\GridFieldConfig_RecordViewer;

//...

    public function getCMSFields()
    {
        $fields = parent::getCMSFields();

        $fields->addFieldToTab('Root.Main', GridField::create(
            'SomethingPreviewable',
            'Something Previewable',
            MyPreviewableDataObject::get(),
            $config = GridFieldConfig_RecordViewer::create()
        ));

        // Here's the important part - add the GridFieldPreviewButton component!
        $config->addComponent(GridFieldPreviewButton::create());

        return $fields;
    }