IMPR: GridField Inline editor config

This commit is contained in:
Tony Air 2021-06-28 13:20:02 +02:00
parent bcfd8918fa
commit b64e4878c4
2 changed files with 82 additions and 1 deletions

View File

@ -1 +1,23 @@
# cms-niceties
# cms-niceties
Some useful CMS objects and extensions
## Usefull UNIX console utilities
### Code search (find . -name "*.*" | xargs grep "some text" replacement)
ag "some text" ./
https://github.com/ggreer/the_silver_searcher
### File content with code hightlighting (cat replacement)
bat ./app/src/Pages/Page.php
https://github.com/sharkdp/bat
### File listing (ls replacement)
exa -aTL3 ./app
https://github.com/ogham/exa
### git diff tool with bat code hightlighting (git show)
https://github.com/dandavison/delta

View File

@ -0,0 +1,59 @@
<?php
namespace A2nt\CMSNiceties\Forms\GridField;
use SilverStripe\Forms\GridField\GridFieldButtonRow;
use SilverStripe\Forms\GridField\GridFieldConfig;
use SilverStripe\Forms\GridField\GridFieldDeleteAction;
use SilverStripe\Forms\GridField\GridFieldDetailForm;
use SilverStripe\Forms\GridField\GridFieldEditButton;
use SilverStripe\Forms\GridField\GridFieldFilterHeader;
use SilverStripe\Forms\GridField\GridFieldPageCount;
use SilverStripe\Forms\GridField\GridFieldPaginator;
use SilverStripe\Forms\GridField\GridFieldToolbarHeader;
use Symbiote\GridFieldExtensions\GridFieldAddNewInlineButton;
use Symbiote\GridFieldExtensions\GridFieldEditableColumns;
use Symbiote\GridFieldExtensions\GridFieldTitleHeader;
class GridFieldConfig_Inline extends GridFieldConfig
{
/**
*
* @param bool $showDetails Whether the `Details form` should display or not, leave as null to use default
* @param bool $showAdd Whether the `Add` button should display or not, leave as null to use default
* @param int $itemsPerPage - How many items per page should show up
*/
public function __construct($showDetails = false, $showAdd = true, $itemsPerPage = 100)
{
parent::__construct();
$this
->addComponent(new GridFieldTitleHeader())
->addComponent(new GridFieldEditableColumns());
if($showDetails) {
$this
->addComponent(new GridFieldDetailForm(null, true, $showAdd))
->addComponent(new GridFieldEditButton());
}
$this
->addComponent($pagination = new GridFieldPaginator($itemsPerPage))
->addComponent($filter = new GridFieldFilterHeader())
->addComponent(new GridFieldPageCount('toolbar-header-right'))
->addComponent(new GridFieldButtonRow('before'))
->addComponent(new GridFieldToolbarHeader())
->addComponent(new GridFieldDeleteAction());
if($showAdd) {
$this->addComponent(new GridFieldAddNewInlineButton());
}
$pagination->setThrowExceptionOnBadDataType(false);
$filter->setThrowExceptionOnBadDataType(false);
$this->extend('updateConfig');
}
}