PHP code example of s2hub / silverstripe-cms-popup
1. Go to this page and download the library: Download s2hub/silverstripe-cms-popup 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/ */
s2hub / silverstripe-cms-popup example snippets
use S2Hub\CmsPopup\Handler\CmsPopupSearchHandler;
use SilverStripe\Control\HTTPRequest;
use SilverStripe\Forms\FieldList;
use SilverStripe\Forms\TextField;
class MySearchHandler extends CmsPopupSearchHandler
{
public function getSearchFormFields(): FieldList
{
return FieldList::create(
TextField::create('q', 'Search')->setAttribute('autofocus', 'autofocus'),
);
}
public function search(string $query, HTTPRequest $request): string
{
$results = MyRecord::get()->filter('Title:PartialMatch', $query);
$html = '';
foreach ($results as $record) {
$payload = htmlspecialchars(json_encode(['id' => $record->ID, 'title' => $record->Title]), ENT_QUOTES);
$html .= "<button type='button' data-cms-select='{$payload}'>{$record->Title}</button>";
}
return $html ?: '<p>No results found.</p>';
}
// Optional: override minimum query length (default: 2)
public function getMinQueryLength(): int { return 1; }
}
use S2Hub\CmsPopup\Forms\CmsModalSearchAction;
$action = CmsModalSearchAction::forHandler(MySearchHandler::class)
->setModalTitle('Select a record')
->setModalSize('md');
use S2Hub\CmsPopup\Http\CmsPopupBatchResponse;
use S2Hub\CmsPopup\Http\CmsPopupBatchDetail;
return CmsPopupBatchResponse::success('Processed', [
CmsPopupBatchDetail::info('en_US', 'OK'),
]);
return CmsPopupBatchResponse::warning('Skipped', []);
return CmsPopupBatchResponse::error('Failed', [
CmsPopupBatchDetail::error('de_DE', 'API error'),
]);
use S2Hub\CmsPopup\Handler\CmsPopupHandler;
use SilverStripe\Control\HTTPRequest;
use SilverStripe\Forms\FieldList;
use SilverStripe\Forms\Form;
use SilverStripe\Forms\HTMLEditor\HTMLEditorField;
use SilverStripe\ORM\DataObject;
class MyRecordPopup extends CmsPopupHandler
{
public function getRecord(HTTPRequest $request): DataObject
{
return MyRecord::get()->byID((int) $request->getVar('recordID'));
}
public function getFields(DataObject $record): FieldList
{
return FieldList::create(
HTMLEditorField::create('Content', 'Content')->setRows(8),
);
}
// Optional overrides:
// public function save(DataObject $record, array $data, Form $form): void { ... }
// public function canAccess(DataObject $record): bool { return $record->canEdit(); }
}
use S2Hub\CmsPopup\GridField\CmsPopupGridFieldColumn;
$config->addComponent(new CmsPopupGridFieldColumn(
MyRecordPopup::class,
'recordID', // query parameter name for the record ID
'Edit record' // column tooltip / modal title
));