class GeysirModalController in Geysir 8
Controller for all modal dialogs.
Hierarchy
- class \Drupal\Core\Controller\ControllerBase implements ContainerInjectionInterface uses LoggerChannelTrait, MessengerTrait, LinkGeneratorTrait, RedirectDestinationTrait, UrlGeneratorTrait, StringTranslationTrait
- class \Drupal\geysir\Controller\GeysirControllerBase
- class \Drupal\geysir\Controller\GeysirModalController
- class \Drupal\geysir\Controller\GeysirControllerBase
Expanded class hierarchy of GeysirModalController
File
- src/
Controller/ GeysirModalController.php, line 13
Namespace
Drupal\geysir\ControllerView source
class GeysirModalController extends GeysirControllerBase {
/**
* Create a modal dialog to add the first paragraph.
*/
public function addFirst($parent_entity_type, $parent_entity_bundle, $parent_entity_revision, $field, $field_wrapper_id, $delta, $position, $js = 'nojs', $bundle = NULL) {
if ($js == 'ajax') {
$response = new AjaxResponse();
$paragraph_title = $this
->getParagraphTitle($parent_entity_type, $parent_entity_bundle, $field);
$entity = $this
->entityTypeManager()
->getStorage($parent_entity_type)
->loadRevision($parent_entity_revision);
if ($bundle) {
$newParagraph = Paragraph::create([
'type' => $bundle,
'langcode' => $entity
->language()
->getId(),
]);
$form = $this
->entityFormBuilder()
->getForm($newParagraph, 'geysir_modal_add', []);
$response
->addCommand(new GeysirOpenModalDialogCommand($this
->t('Add @paragraph_title', [
'@paragraph_title' => $paragraph_title,
]), render($form)));
}
else {
$bundle_fields = $this->entityFieldManager
->getFieldDefinitions($parent_entity_type, $entity
->bundle());
$field_definition = $bundle_fields[$field];
$bundles = $field_definition
->getSetting('handler_settings')['target_bundles'];
if ($field_definition
->getSetting('handler_settings')['negate']) {
$bundles = array_diff_key(\Drupal::service('entity_type.bundle.info')
->getBundleInfo('paragraph'), $bundles);
}
$routeParams = [
'parent_entity_type' => $parent_entity_type,
'parent_entity_bundle' => $parent_entity_bundle,
'parent_entity_revision' => $parent_entity_revision,
'field' => $field,
'field_wrapper_id' => $field_wrapper_id,
'delta' => $delta,
'position' => $position,
'js' => $js,
];
$form = \Drupal::formBuilder()
->getForm('\\Drupal\\geysir\\Form\\GeysirModalParagraphAddSelectTypeForm', $routeParams, $bundles);
$response
->addCommand(new GeysirOpenModalDialogCommand($this
->t('Add @paragraph_title', [
'@paragraph_title' => $paragraph_title,
]), render($form)));
}
return $response;
}
return $this
->t('Javascript is required for this functionality to work properly.');
}
/**
* Create a modal dialog to add a single paragraph.
*/
public function add($parent_entity_type, $parent_entity_bundle, $parent_entity_revision, $field, $field_wrapper_id, $delta, $paragraph, $paragraph_revision, $position, $js = 'nojs', $bundle = NULL) {
if ($js == 'ajax') {
$response = new AjaxResponse();
$paragraph_title = $this
->getParagraphTitle($parent_entity_type, $parent_entity_bundle, $field);
// Get the parent revision if available, otherwise the parent.
$entity = $this
->getParentRevisionOrParent($parent_entity_type, $parent_entity_revision);
if ($bundle) {
$newParagraph = Paragraph::create([
'type' => $bundle,
'langcode' => $entity
->language()
->getId(),
]);
$form = $this
->entityFormBuilder()
->getForm($newParagraph, 'geysir_modal_add', []);
$response
->addCommand(new GeysirOpenModalDialogCommand($this
->t('Add @paragraph_title', [
'@paragraph_title' => $paragraph_title,
]), render($form)));
}
else {
$bundle_fields = $this->entityFieldManager
->getFieldDefinitions($parent_entity_type, $entity
->bundle());
$field_definition = $bundle_fields[$field];
$bundles = $field_definition
->getSetting('handler_settings')['target_bundles'];
if ($field_definition
->getSetting('handler_settings')['negate']) {
$bundles = array_diff_key(\Drupal::service('entity_type.bundle.info')
->getBundleInfo('paragraph'), $bundles);
}
$routeParams = [
'parent_entity_type' => $parent_entity_type,
'parent_entity_bundle' => $parent_entity_bundle,
'parent_entity_revision' => $parent_entity_revision,
'field' => $field,
'field_wrapper_id' => $field_wrapper_id,
'delta' => $delta,
'paragraph' => $paragraph
->id(),
'paragraph_revision' => $paragraph
->getRevisionId(),
'position' => $position,
'js' => $js,
];
$form = \Drupal::formBuilder()
->getForm('\\Drupal\\geysir\\Form\\GeysirModalParagraphAddSelectTypeForm', $routeParams, $bundles);
$response
->addCommand(new GeysirOpenModalDialogCommand($this
->t('Add @paragraph_title', [
'@paragraph_title' => $paragraph_title,
]), render($form)));
}
return $response;
}
return $this
->t('Javascript is required for this functionality to work properly.');
}
/**
* Create a modal dialog to edit a single paragraph.
*/
public function edit($parent_entity_type, $parent_entity_bundle, $parent_entity_revision, $field, $field_wrapper_id, $delta, $paragraph, $paragraph_revision, $js = 'nojs') {
if ($js == 'ajax') {
$response = new AjaxResponse();
$form = $this
->entityFormBuilder()
->getForm($paragraph_revision, 'geysir_modal_edit', []);
$paragraph_title = $this
->getParagraphTitle($parent_entity_type, $parent_entity_bundle, $field);
$response
->addCommand(new GeysirOpenModalDialogCommand($this
->t('Edit @paragraph_title', [
'@paragraph_title' => $paragraph_title,
]), render($form)));
return $response;
}
return $this
->t('Javascript is required for this functionality to work properly.');
}
/**
* Create a modal dialog to translate a single paragraph.
*/
public function translate($parent_entity_type, $parent_entity_bundle, $parent_entity_revision, $field, $field_wrapper_id, $delta, Paragraph $paragraph, $paragraph_revision, $js = 'nojs') {
if ($js == 'ajax') {
$response = new AjaxResponse();
$langcode = $this
->languageManager()
->getCurrentLanguage()
->getId();
$translated_paragraph = $paragraph
->addTranslation($langcode, $paragraph
->toArray());
$form = $this
->entityFormBuilder()
->getForm($translated_paragraph, 'geysir_modal_edit', []);
$paragraph_title = $this
->getParagraphTitle($parent_entity_type, $parent_entity_bundle, $field);
$response
->addCommand(new GeysirOpenModalDialogCommand($this
->t('Translate @paragraph_title', [
'@paragraph_title' => $paragraph_title,
]), render($form)));
return $response;
}
return $this
->t('Javascript is required for this functionality to work properly.');
}
/**
* Create a modal dialog to delete a single paragraph.
*/
public function delete($parent_entity_type, $parent_entity_bundle, $parent_entity_revision, $field, $field_wrapper_id, $delta, $paragraph, $paragraph_revision, $js = 'nojs') {
if ($js == 'ajax') {
$options = [
'dialogClass' => 'geysir-dialog',
'width' => '20%',
];
$form = $this
->entityFormBuilder()
->getForm($paragraph, 'geysir_modal_delete', []);
$response = new AjaxResponse();
$paragraph_title = $this
->getParagraphTitle($parent_entity_type, $parent_entity_bundle, $field);
$response
->addCommand(new OpenModalDialogCommand($this
->t('Delete @paragraph_title', [
'@paragraph_title' => $paragraph_title,
]), render($form), $options));
return $response;
}
return $this
->t('Javascript is required for this functionality to work properly.');
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
ControllerBase:: |
protected | property | The configuration factory. | |
ControllerBase:: |
protected | property | The current user service. | 1 |
ControllerBase:: |
protected | property | The entity form builder. | |
ControllerBase:: |
protected | property | The entity manager. | |
ControllerBase:: |
protected | property | The form builder. | 2 |
ControllerBase:: |
protected | property | The key-value storage. | 1 |
ControllerBase:: |
protected | property | The language manager. | 1 |
ControllerBase:: |
protected | property | The module handler. | 2 |
ControllerBase:: |
protected | property | The state service. | |
ControllerBase:: |
protected | function | Returns the requested cache bin. | |
ControllerBase:: |
protected | function | Retrieves a configuration object. | |
ControllerBase:: |
private | function | Returns the service container. | |
ControllerBase:: |
protected | function | Returns the current user. | 1 |
ControllerBase:: |
protected | function | Retrieves the entity form builder. | |
ControllerBase:: |
protected | function | Retrieves the entity manager service. | |
ControllerBase:: |
protected | function | Retrieves the entity type manager. | |
ControllerBase:: |
protected | function | Returns the form builder service. | 2 |
ControllerBase:: |
protected | function | Returns a key/value storage collection. | 1 |
ControllerBase:: |
protected | function | Returns the language manager service. | 1 |
ControllerBase:: |
protected | function | Returns the module handler. | 2 |
ControllerBase:: |
protected | function |
Returns a redirect response object for the specified route. Overrides UrlGeneratorTrait:: |
|
ControllerBase:: |
protected | function | Returns the state storage service. | |
GeysirControllerBase:: |
protected | property | The entity field manager. | |
GeysirControllerBase:: |
protected | property |
The entity type manager. Overrides ControllerBase:: |
|
GeysirControllerBase:: |
public static | function |
Instantiates a new instance of this class. Overrides ControllerBase:: |
|
GeysirControllerBase:: |
protected | function | Returns the paragraph title set for the current paragraph field. | |
GeysirControllerBase:: |
protected | function | ||
GeysirControllerBase:: |
public | function | ||
GeysirModalController:: |
public | function | Create a modal dialog to add a single paragraph. | |
GeysirModalController:: |
public | function | Create a modal dialog to add the first paragraph. | |
GeysirModalController:: |
public | function | Create a modal dialog to delete a single paragraph. | |
GeysirModalController:: |
public | function | Create a modal dialog to edit a single paragraph. | |
GeysirModalController:: |
public | function | Create a modal dialog to translate a single paragraph. | |
LinkGeneratorTrait:: |
protected | property | The link generator. | 1 |
LinkGeneratorTrait:: |
protected | function | Returns the link generator. | |
LinkGeneratorTrait:: |
protected | function | Renders a link to a route given a route name and its parameters. | |
LinkGeneratorTrait:: |
public | function | Sets the link generator service. | |
LoggerChannelTrait:: |
protected | property | The logger channel factory service. | |
LoggerChannelTrait:: |
protected | function | Gets the logger for a specific channel. | |
LoggerChannelTrait:: |
public | function | Injects the logger channel factory. | |
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. | |
UrlGeneratorTrait:: |
protected | property | The url generator. | |
UrlGeneratorTrait:: |
protected | function | Returns the URL generator service. | |
UrlGeneratorTrait:: |
public | function | Sets the URL generator service. | |
UrlGeneratorTrait:: |
protected | function | Generates a URL or path for a specific route based on the given parameters. |