class GridStackListBuilder in GridStack 8.2
Same name and namespace in other branches
- 8 modules/gridstack_ui/src/Controller/GridStackListBuilder.php \Drupal\gridstack_ui\Controller\GridStackListBuilder
Provides a listing of GridStack optionsets.
Hierarchy
- class \Drupal\Core\Entity\EntityHandlerBase uses DependencySerializationTrait, StringTranslationTrait
- class \Drupal\Core\Entity\EntityListBuilder implements EntityHandlerInterface, EntityListBuilderInterface uses MessengerTrait, RedirectDestinationTrait
- class \Drupal\Core\Config\Entity\ConfigEntityListBuilder
- class \Drupal\Core\Config\Entity\DraggableListBuilder implements FormInterface
- class \Drupal\gridstack_ui\Controller\GridStackListBuilder
- class \Drupal\Core\Config\Entity\DraggableListBuilder implements FormInterface
- class \Drupal\Core\Config\Entity\ConfigEntityListBuilder
- class \Drupal\Core\Entity\EntityListBuilder implements EntityHandlerInterface, EntityListBuilderInterface uses MessengerTrait, RedirectDestinationTrait
Expanded class hierarchy of GridStackListBuilder
File
- modules/
gridstack_ui/ src/ Controller/ GridStackListBuilder.php, line 19
Namespace
Drupal\gridstack_ui\ControllerView source
class GridStackListBuilder extends DraggableListBuilder {
/**
* The current user.
*
* @var \Drupal\Core\Session\AccountInterface
*/
protected $currentUser;
/**
* The gridstack manager.
*
* @var \Drupal\gridstack\GridStackManagerInterface
*/
protected $manager;
/**
* {@inheritdoc}
*/
public static function createInstance(ContainerInterface $container, EntityTypeInterface $entity_type) {
$instance = new static($entity_type, $container
->get('entity_type.manager')
->getStorage($entity_type
->id()));
$instance->currentUser = $container
->get('current_user');
$instance->manager = $container
->get('gridstack.manager');
return $instance;
}
/**
* {@inheritdoc}
*/
public function getFormId() {
return 'gridstack_list_form';
}
/**
* {@inheritdoc}
*/
public function buildHeader() {
$header = [
'label' => $this
->t('Optionset'),
'id' => $this
->t('ID'),
'icon' => $this
->t('Icon'),
'framework' => $this
->t('Grid framework'),
'grids' => $this
->t('Grids : Nested'),
'provider' => $this
->t('Provider'),
];
return $header + parent::buildHeader();
}
/**
* {@inheritdoc}
*/
public function buildRow(EntityInterface $entity) {
$icon_uri = $entity
->getIconUri();
$manager = $this->manager;
$framework = $manager
->configLoad('framework', 'gridstack.settings');
$use_framework = $framework && $entity
->getOption('use_framework');
$row['label'] = Html::escape($entity
->label());
$row['id'] = [
'#markup' => $entity
->id(),
];
$row['icon'] = [];
$row['framework'] = [];
$token_query = [
IMAGE_DERIVATIVE_TOKEN => time(),
];
$image_url = file_url_transform_relative(file_create_url($icon_uri));
$image_url .= (strpos($image_url, '?') !== FALSE ? '&' : '?') . UrlHelper::buildQuery($token_query);
if ($description = $entity
->description()) {
$row['label'] .= '<br><small>' . $description . '</small>';
}
if (!empty($icon_uri)) {
$row['icon'] = [
'#theme' => 'blazy',
'#settings' => [
'uri' => $icon_uri,
'lazy' => 'blazy',
'image_url' => $image_url,
],
'#item_attributes' => [
'width' => 140,
],
];
}
$row['framework']['#markup'] = $use_framework ? ucwords($framework) : 'GridStack/ Native';
$grids = $entity
->getLastBreakpoint();
$nested = $entity
->getLastBreakpoint('nested');
$nested = array_filter($nested);
$counts = [];
if (!empty($nested)) {
foreach ($nested as $grid) {
if (empty($grid)) {
continue;
}
if (is_string($grid)) {
$grid = Json::decode($grid);
}
$boxes = [];
foreach ($grid as $item) {
if (!isset($item['width'])) {
continue;
}
$boxes[] = $item['width'];
}
$counts = NestedArray::mergeDeep($counts, $boxes);
}
}
$nested_grids = empty($nested) ? '0' : count($counts);
$row['grids']['#markup'] = $this
->t('@grids : @nested', [
'@grids' => count($grids),
'@nested' => $nested_grids,
]);
$dependencies = $entity
->getDependencies();
$row['provider']['#markup'] = isset($dependencies['module'][0]) ? $dependencies['module'][0] : 'gridstack';
return $row + parent::buildRow($entity);
}
/**
* {@inheritdoc}
*/
public function getDefaultOperations(EntityInterface $entity) {
$operations = parent::getDefaultOperations($entity);
if (isset($operations['edit'])) {
$operations['edit']['title'] = $this
->t('Configure');
}
$operations['duplicate'] = [
'title' => $this
->t('Duplicate'),
'weight' => 15,
'url' => $entity
->toUrl('duplicate-form'),
];
$defaults = [
'bootstrap',
'default',
'foundation',
'frontend',
];
if (in_array($entity
->id(), $defaults)) {
unset($operations['delete'], $operations['edit']);
}
return $operations;
}
/**
* {@inheritdoc}
*/
public function render() {
$build['description'] = [
'#markup' => '<p>' . $this
->t("Manage the GridStack optionsets. Optionsets are Config Entities. Use the Operations column to edit, clone and delete optionsets.<br><br>By default, four default optionsets are created: <code>Admin, Frontend, Bootstrap, Foundation</code>. GridStack supports both one-dimensional layouts like Bootstrap, Foundation, etc. (<a href=':ui'>enable here</a>), and two-dimensional layouts via GridStack JS or native browser CSS Grid Layout, and Masonry, Packery, Isotope via <a href=':outlayer'>Outlayer</a> module. To generate icons, edit and save optionsets.<br><strong>Important!</strong><br>Avoid overriding default or sample optionsets. Any customization will be lost at the next update. Use <code>Duplicate</code> button instead, unless a module declares direct usages. <br>Use <a href=':url'>config_update</a> module to revert to stored optionsets at <code>/admin/config/development/configuration/report/module/gridstack</code>, if needed. Clearing cache is required to register the new layouts for Layout Discovery/ Layout Builder.", [
':ui' => Url::fromRoute('gridstack.settings')
->toString(),
':url' => '//drupal.org/project/config_update',
':outlayer' => '//drupal.org/project/outlayer',
]) . '</p>',
];
$build[] = parent::render();
$attachments = $this->manager
->attach([
'blazy' => TRUE,
]);
$build['#attached'] = isset($build['#attached']) ? NestedArray::mergeDeep($build['#attached'], $attachments) : $attachments;
$build['#attached']['library'][] = 'gridstack/admin';
return $build;
}
/**
* {@inheritdoc}
*/
public function buildForm(array $form, FormStateInterface $form_state) {
$form['#attributes']['class'][] = 'blazy';
$form['#attributes']['data-blazy'] = '';
return parent::buildForm($form, $form_state);
}
/**
* {@inheritdoc}
*/
public function submitForm(array &$form, FormStateInterface $form_state) {
parent::submitForm($form, $form_state);
$this
->messenger()
->addMessage($this
->t('The optionsets order has been updated.'));
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
ConfigEntityListBuilder:: |
public | function |
Loads entities of this type from storage for listing. Overrides EntityListBuilder:: |
7 |
DependencySerializationTrait:: |
protected | property | An array of entity type IDs keyed by the property name of their storages. | |
DependencySerializationTrait:: |
protected | property | An array of service IDs keyed by property name used for serialization. | |
DependencySerializationTrait:: |
public | function | 1 | |
DependencySerializationTrait:: |
public | function | 2 | |
DraggableListBuilder:: |
protected | property | The entities being listed. | 1 |
DraggableListBuilder:: |
protected | property | The key to use for the form element containing the entities. | 3 |
DraggableListBuilder:: |
protected | property | The form builder. | |
DraggableListBuilder:: |
protected | property |
The number of entities to list per page, or FALSE to list all entities. Overrides EntityListBuilder:: |
|
DraggableListBuilder:: |
protected | property | Name of the entity's weight field or FALSE if no field is provided. | |
DraggableListBuilder:: |
protected | function | Returns the form builder. | |
DraggableListBuilder:: |
public | function |
Form validation handler. Overrides FormInterface:: |
2 |
DraggableListBuilder:: |
public | function |
Constructs a new EntityListBuilder object. Overrides EntityListBuilder:: |
5 |
EntityHandlerBase:: |
protected | property | The module handler to invoke hooks on. | 2 |
EntityHandlerBase:: |
protected | function | Gets the module handler. | 2 |
EntityHandlerBase:: |
public | function | Sets the module handler for this handler. | |
EntityListBuilder:: |
protected | property | Information about the entity type. | |
EntityListBuilder:: |
protected | property | The entity type ID. | |
EntityListBuilder:: |
protected | property | The entity storage class. | 1 |
EntityListBuilder:: |
public | function | Builds a renderable list of operation links for the entity. | 2 |
EntityListBuilder:: |
protected | function | Ensures that a destination is present on the given URL. | |
EntityListBuilder:: |
protected | function | Loads entity IDs using a pager sorted by the entity id. | 4 |
EntityListBuilder:: |
protected | function | Gets the label of an entity. | |
EntityListBuilder:: |
public | function |
Provides an array of information to build a list of operation links. Overrides EntityListBuilderInterface:: |
2 |
EntityListBuilder:: |
public | function |
Gets the entity storage. Overrides EntityListBuilderInterface:: |
|
EntityListBuilder:: |
protected | function | Gets the title of the page. | 1 |
GridStackListBuilder:: |
protected | property | The current user. | |
GridStackListBuilder:: |
protected | property | The gridstack manager. | |
GridStackListBuilder:: |
public | function |
Form constructor. Overrides DraggableListBuilder:: |
|
GridStackListBuilder:: |
public | function |
Builds the header row for the entity listing. Overrides DraggableListBuilder:: |
1 |
GridStackListBuilder:: |
public | function |
Builds a row for an entity in the entity listing. Overrides DraggableListBuilder:: |
1 |
GridStackListBuilder:: |
public static | function |
Instantiates a new instance of this entity handler. Overrides EntityListBuilder:: |
|
GridStackListBuilder:: |
public | function |
Gets this list's default operations. Overrides ConfigEntityListBuilder:: |
1 |
GridStackListBuilder:: |
public | function |
Returns a unique string identifying the form. Overrides FormInterface:: |
1 |
GridStackListBuilder:: |
public | function |
Builds the entity listing as renderable array for table.html.twig. Overrides DraggableListBuilder:: |
1 |
GridStackListBuilder:: |
public | function |
Form submission handler. Overrides DraggableListBuilder:: |
|
MessengerTrait:: |
protected | property | The messenger. | 29 |
MessengerTrait:: |
public | function | Gets the messenger. | 29 |
MessengerTrait:: |
public | function | Sets the messenger. | |
RedirectDestinationTrait:: |
protected | property | The redirect destination service. | 1 |
RedirectDestinationTrait:: |
protected | function | Prepares a 'destination' URL query parameter for use with \Drupal\Core\Url. | |
RedirectDestinationTrait:: |
protected | function | Returns the redirect destination service. | |
RedirectDestinationTrait:: |
public | function | Sets the redirect destination service. | |
StringTranslationTrait:: |
protected | property | The string translation service. | 1 |
StringTranslationTrait:: |
protected | function | Formats a string containing a count of items. | |
StringTranslationTrait:: |
protected | function | Returns the number of plurals supported by a given language. | |
StringTranslationTrait:: |
protected | function | Gets the string translation service. | |
StringTranslationTrait:: |
public | function | Sets the string translation service to use. | 2 |
StringTranslationTrait:: |
protected | function | Translates a string to the current language or to a given language. |