PHP code example of lekoala / silverstripe-cms-actions
1. Go to this page and download the library: Download lekoala/silverstripe-cms-actions library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
lekoala / silverstripe-cms-actions example snippets
public function getCMSActions()
{
$actions = parent::getCMSActions();
$actions->push(new CustomAction("doCustomAction", "My custom action"));
return $actions;
}
public function doCustomAction() {
return 'Done!';
}
public function doCustomAction() {
throw new Exception("Show this error");
return false;
}
$myAction->setShouldRefresh(true);
$fields->push($doRedirect = new CustomAction('doRedirect', 'Redirect'));
$doRedirect->setRedirectURL("/admin/my_section/my_model");
public function getCMSActions()
{
$actions = parent::getCMSActions();
$actions->push($downloadExcelReport = new CustomLink('downloadExcelReport','Download report'));
$downloadExcelReport->setButtonIcon(SilverStripeIcons::ICON_EXPORT);
return $actions;
}
public function downloadExcelReport() {
echo "This is the report";
die();
}
public function getCMSUtils()
{
$fields = new FieldList();
$fields->push(new LiteralField("LastLoginInfo", "Last login at " . $this->LastLogin));
return $fields;
}
class MyRowAction extends GridFieldRowButton
{
protected $fontIcon = 'torso';
public function getActionName()
{
return 'my_action';
}
public function getButtonLabel()
{
return 'My Action';
}
public function doHandle(GridField $gridField, $actionName, $arguments, $data)
{
$item = $gridField->getList()->byID($arguments['RecordID']);
if (!$item) {
return;
}
// Do something with item
// Or maybe download a file...
return Controller::curr()->redirectBack();
}
}
public function getGridFieldFrom(Form $form)
{
return $form->Fields()->dataFieldByName($this->getSanitisedModelClass());
}
public function getEditForm($id = null, $fields = null)
{
$form = parent::getEditForm($id, $fields);
$gridfield = $this->getGridFieldFrom($form);
if ($this->modelClass == MyModel::class) {
$gridfield->getConfig()->addComponent(new MyRowAction());
}
return $form;
}
$actions->push($downloadExcelReport = new CustomLink('downloadExcelReport', 'Download report'));
$downloadExcelReport->addExtraClass('d-none');
//or simply...
//$downloadExcelReport->setHidden();
class MyGridButton extends GridFieldTableButton
{
protected $buttonLabel = 'Do stuff';
protected $fontIcon = 'do_stuff';
public function handle(GridField $gridField, Controller $controller)
{
}
}
public function getCMSFields()
{
$fields = parent::getCMSFields();
$fields->addFieldToTab('Root.Actions', new CmsInlineFormAction('doCustomAction', 'Do this'));
return $fields;
}
// don't forget to add me to allowed_actions as well
function doCustomAction()
{
// do something here
return $this->redirectBack();
}
$fields->addFieldToTab('Root.MyTab', $myAction = new CmsInlineFormAction("myAction", "My Action"));
$myAction->setPost(true);
public function myAction()
{
$RecordID = $this->getRequest()->getVar("ID");
$message = "My action done";
$response = Controller::curr()->getResponse();
$response->addHeader('X-Status', rawurlencode($message));
return $response;
}
$actions->push(LiteralField::create('MyCustomAction', "<span class=\"bb-align\">Action not available</span>"));
class MyProgressiveTableButton extends GridFieldTableButton
{
public function __construct($targetFragment = "buttons-before-right", $buttonLabel = null)
{
$this->progressive = true;
parent::__construct($targetFragment, $buttonLabel);
}
public function handle(GridField $gridField, Controller $controller)
{
$step = (int) $controller->getRequest()->postVar("progress_step");
$total = (int) $controller->getRequest()->postVar("progress_total");
if (!$total) {
$total = $list->count();
}
$i = 0;
$res = null;
foreach ($list as $rec) {
if ($i < $step) {
$i++;
continue;
}
$res = "Processed record $i";
break;
}
$step++;
return [
'progress_step' => $step,
'progress_total' => $total,
'reload' => true,
'message' => $res,
];
}
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.