class CMSEditLinkExtension extends Extension (View source)

An extension that automatically generates a CMS edit link for DataObjects even if they are canonically edited in some nested GridField.

Designed to be used in conjunction with the CMSPreviewable interface.

For nested relations (e.g. a DataObject managed in a GridField of another DataObject) you can apply this extension to both the parent and the child object and the links will chain down the nested GridFields to the root cms_edit_owner.

You must set a cms_edit_owner config variable which defines the cms edit owner for this class. e.g. set this to a LeftAndMain class: private static string cms_edit_owner = MyModelAdmin::class; or to a has_one relation: private static string cms_edit_owner = 'Parent';

Note that the cms_edit_owner must implement a getCMSEditLinkForManagedDataObject() method.

If the cms_edit_owner is a has_one relation, the class on the other end of the relation must have a CMSEditLink() method.

Properties

protected T $owner

The object this extension is applied to.

from  Extension

Methods

public
__construct()

No description

public static 
add_to_class(string $class, string $extensionClass, mixed $args = null)

Called when this extension is added to a particular class

public
setOwner(object $owner)

Set the owner of this extension.

public
mixed
withOwner(mixed $owner, callable $callback, array $args = [])

Temporarily modify the owner. The original owner is ensured to be restored

public
clearOwner()

Clear the current owner, and restore extension to the state prior to the last setOwner()

public
T
getOwner()

Returns the owner of this extension.

public static 
string
get_classname_without_arguments(string $extensionStr)

Helper method to strip eval'ed arguments from a string that's passed to DataObject::$extensions or Object::add_extension().

public
mixed
invokeExtension(object $owner, string $method, array ...$arguments)

Invoke extension point. This will prefer explicit extend prefixed methods.

public
getCMSEditOwner()

Get the ModelAdmin, LeftAndMain, or DataObject which owns this object for CMS editing purposes.

public
string
getCMSEditLinkForManagedDataObject(DataObject $obj, string $reciprocalRelation)

Get the link for editing an object from the CMS edit form of this object.

public
string
CMSEditLink()

Get a link to edit this DataObject in the CMS.

Details

__construct()

No description

static add_to_class(string $class, string $extensionClass, mixed $args = null)

Called when this extension is added to a particular class

Parameters

string $class
string $extensionClass
mixed $args

setOwner(object $owner)

Set the owner of this extension.

Parameters

object $owner

The owner object

mixed withOwner(mixed $owner, callable $callback, array $args = [])

Temporarily modify the owner. The original owner is ensured to be restored

Parameters

mixed $owner

Owner to set

callable $callback

Callback to invoke

array $args

Args to pass to callback

Return Value

mixed

clearOwner()

Clear the current owner, and restore extension to the state prior to the last setOwner()

T getOwner()

Returns the owner of this extension.

Return Value

T

static string get_classname_without_arguments(string $extensionStr)

Helper method to strip eval'ed arguments from a string that's passed to DataObject::$extensions or Object::add_extension().

Parameters

string $extensionStr

E.g. "Versioned('Stage','Live')"

Return Value

string

Extension classname, e.g. "Versioned"

mixed invokeExtension(object $owner, string $method, array ...$arguments)

Invoke extension point. This will prefer explicit extend prefixed methods.

Parameters

object $owner
string $method
array ...$arguments

Return Value

mixed

DataObject|LeftAndMain|null getCMSEditOwner()

Get the ModelAdmin, LeftAndMain, or DataObject which owns this object for CMS editing purposes.

Return Value

DataObject|LeftAndMain|null

string getCMSEditLinkForManagedDataObject(DataObject $obj, string $reciprocalRelation)

Get the link for editing an object from the CMS edit form of this object.

Parameters

DataObject $obj
string $reciprocalRelation

Return Value

string

Exceptions

LogicException

Get a link to edit this DataObject in the CMS.

Return Value

string