Useful constants, CMS field helper functions and a permission extension for Silverstripe CMS ^4.
Useful constants, CMS field helper functions and a permission extension for Silverstripe CMS ^4.
Keep your SilverStripe code DRY!
Apply and configure:
canView
canEdit
canCreate
canDelete
permission checks to data objects through an extension.
First set the allowed group codes in a config file.
Conan\DataObjectUtils\DataObjectGroupPermissionExtension:
can_view_group_codes:
- 'administrators'
- 'can_view_group_codes'
can_edit_group_codes:
- 'administrators'
- 'can_edit_group_codes'
can_create_group_codes:
- 'administrators'
- 'can_create_group_codes'
can_delete_group_codes:
- 'administrators'
- 'can_delete_group_codes'
Then apply the extension to data objects.
namespace The\Namespace;
use Conan\DataObjectUtils\DataObjectGroupPermissionExtension;
use SilverStripe\ORM\DataObject;
class MyClass extends DataObject
{
private static $extensions = [
DataObjectGroupPermissionExtension::class,
];
}
namespace The\Namespace;
use Conan\DataObjectUtils\DBConstants;
use Conan\DataObjectUtils\CMSFieldUtils;
use SilverStripe\ORM\DataObject;
class MyClass extends DataObject
{
const MY_STRING_FIELD = 'MyStringField';
const MY_INT_FIELD = 'MyIntField';
private static $db = [
self::MY_STRING_FIELD => DBConstants::VARCHAR,
self::MY_INT_FIELD => DBConstants::INT,
];
public function getCMSFields()
{
$fields = parent::getCMSFields();
$myStringField = $fields->dataFieldByName(self::MY_STRING_FIELD);
CMSFieldUtils::setTitle($myStringField, 'My title');
CMSFieldUtils::setDescription($myStringField, 'My description');
// Or for both title and description you can use this
// CMSFieldUtils::setTitleAndDescription($myStringField, 'My title', 'My description');
}
}
The field can then be translated like this:
en:
The\Namespace\MyClass:
MyStringField.Title: 'Translated title'
MyStringField.Description: 'Translated description'
By default the namespaced class name is used, but it is possible to pass a custom value as the caller class.
e.g. CMSFieldUtils::setTitle($myStringField, 'My title', 'MyModule');
and then translate it like this:
en:
MyModule:
MyStringField.Title: 'Translated title'
MyStringField.Description: 'Translated description'
This library uses semantic versioning.
silverstripe-data-object-utils
is released under the MIT license. Please see the LICENSE file for more information.
Module rating system helping users find modules that are well supported. For more on how the rating system works visit Module standards
Score not correct? Let us know there is a problem