Issue #2060865 by benjy, larowlan, tim.plunkett: Modernize custom_block.module forms.

8.0.x
webchick 2014-01-02 22:11:06 -08:00
parent b2a6ece3fb
commit 1c4af85ac6
3 changed files with 76 additions and 31 deletions

View File

@ -7,15 +7,61 @@
namespace Drupal\custom_block;
use Drupal\Core\Datetime\DrupalDateTime;
use Drupal\Core\Cache\Cache;
use Drupal\Core\Entity\ContentEntityFormController;
use Drupal\Core\Entity\EntityManagerInterface;
use Drupal\Core\Entity\EntityStorageControllerInterface;
use Drupal\Core\Language\Language;
use Drupal\Core\Language\LanguageManager;
use Symfony\Component\DependencyInjection\ContainerInterface;
/**
* Form controller for the custom block edit forms.
*/
class CustomBlockFormController extends ContentEntityFormController {
/**
* The custom block storage.
*
* @var \Drupal\Core\Entity\EntityStorageControllerInterface
*/
protected $customBlockStorage;
/**
* The language manager.
*
* @var \Drupal\Core\Language\LanguageManager
*/
protected $languageManager;
/**
* Constructs a CustomBlockFormController object.
*
* @param \Drupal\Core\Entity\EntityManagerInterface $entity_manager
* The entity manager.
* @param \Drupal\Core\Entity\EntityStorageControllerInterface $custom_block_storage
* The custom block storage controller.
* @param \Drupal\Core\Language\LanguageManager $language_manager
* The language manager.
*/
public function __construct(EntityManagerInterface $entity_manager, EntityStorageControllerInterface $custom_block_storage, LanguageManager $language_manager) {
parent::__construct($entity_manager);
$this->customBlockStorage = $custom_block_storage;
$this->languageManager = $language_manager;
}
/**
* {@inheritdoc}
*/
public static function create(ContainerInterface $container) {
$entity_manager = $container->get('entity.manager');
return new static(
$entity_manager,
$entity_manager->getStorageController('custom_block'),
$container->get('language_manager')
);
}
/**
* Overrides \Drupal\Core\Entity\EntityFormController::prepareEntity().
*
@ -36,7 +82,7 @@ class CustomBlockFormController extends ContentEntityFormController {
}
/**
* Overrides \Drupal\Core\Entity\EntityFormController::form().
* {@inheritdoc}
*/
public function form(array $form, array &$form_state) {
$block = $this->entity;
@ -53,23 +99,25 @@ class CustomBlockFormController extends ContentEntityFormController {
// Basic block information.
$form['info'] = array(
'#type' => 'textfield',
'#title' => t('Block description'),
'#title' => $this->t('Block description'),
'#required' => TRUE,
'#default_value' => $block->label(),
'#weight' => -5,
'#description' => t('A brief description of your block. Used on the <a href="@overview">Blocks administration page</a>.', array('@overview' => url('admin/structure/block'))),
'#description' => $this->t('A brief description of your block. Used on the <a href="@overview">Blocks administration page</a>.', array('@overview' => $this->url('block.admin_display'))),
);
$language_configuration = module_invoke('language', 'get_default_configuration', 'custom_block', $block->bundle());
if ($this->moduleHandler->moduleExists('language')) {
$language_configuration = language_get_default_configuration('custom_block', $block->bundle());
// Set the correct default language.
if ($block->isNew() && !empty($language_configuration['langcode'])) {
$language_default = language($language_configuration['langcode']);
$block->langcode->value = $language_default->id;
// Set the correct default language.
if ($block->isNew()) {
$language_default = $this->languageManager->getLanguage($language_configuration['langcode']);
$block->langcode->value = $language_default->id;
}
}
$form['langcode'] = array(
'#title' => t('Language'),
'#title' => $this->t('Language'),
'#type' => 'language_select',
'#default_value' => $block->getUntranslated()->language()->id,
'#languages' => Language::STATE_ALL,
@ -85,7 +133,7 @@ class CustomBlockFormController extends ContentEntityFormController {
// current user has the ability to check that option.
$form['revision_information'] = array(
'#type' => 'details',
'#title' => t('Revision information'),
'#title' => $this->t('Revision information'),
'#collapsible' => TRUE,
// Collapsed by default when "Create new revision" is unchecked.
'#collapsed' => !$block->isNewRevision(),
@ -102,7 +150,7 @@ class CustomBlockFormController extends ContentEntityFormController {
$form['revision_information']['revision'] = array(
'#type' => 'checkbox',
'#title' => t('Create new revision'),
'#title' => $this->t('Create new revision'),
'#default_value' => $block->isNewRevision(),
'#access' => $account->hasPermission('administer blocks'),
);
@ -120,10 +168,10 @@ class CustomBlockFormController extends ContentEntityFormController {
$form['revision_information']['log'] = array(
'#type' => 'textarea',
'#title' => t('Revision log message'),
'#title' => $this->t('Revision log message'),
'#rows' => 4,
'#default_value' => $block->getRevisionLog(),
'#description' => t('Briefly describe the changes you have made.'),
'#description' => $this->t('Briefly desribe the changes you have made.'),
);
return parent::form($form, $form_state, $block);
@ -151,7 +199,7 @@ class CustomBlockFormController extends ContentEntityFormController {
}
/**
* Overrides \Drupal\Core\Entity\EntityFormController::save().
* {@inheritdoc}
*/
public function save(array $form, array &$form_state) {
$block = $this->entity;
@ -163,11 +211,11 @@ class CustomBlockFormController extends ContentEntityFormController {
if ($insert) {
watchdog('content', '@type: added %info.', $watchdog_args, WATCHDOG_NOTICE);
drupal_set_message(t('@type %info has been created.', $t_args));
drupal_set_message($this->t('@type %info has been created.', $t_args));
}
else {
watchdog('content', '@type: updated %info.', $watchdog_args, WATCHDOG_NOTICE);
drupal_set_message(t('@type %info has been updated.', $t_args));
drupal_set_message($this->t('@type %info has been updated.', $t_args));
}
if ($block->id()) {
@ -192,20 +240,20 @@ class CustomBlockFormController extends ContentEntityFormController {
else {
// In the unlikely case something went wrong on save, the block will be
// rebuilt and block form redisplayed.
drupal_set_message(t('The block could not be saved.'), 'error');
drupal_set_message($this->t('The block could not be saved.'), 'error');
$form_state['rebuild'] = TRUE;
}
// Clear the page and block caches.
cache_invalidate_tags(array('content' => TRUE));
Cache::invalidateTags(array('content' => TRUE));
}
/**
* Overrides \Drupal\Core\Entity\EntityFormController::delete().
* {@inheritdoc}
*/
public function delete(array $form, array &$form_state) {
$destination = array();
$query = \Drupal::request()->query;
$query = $this->getRequest()->query;
if (!is_null($query->get('destination'))) {
$destination = drupal_get_destination();
$query->remove('destination');
@ -226,12 +274,11 @@ class CustomBlockFormController extends ContentEntityFormController {
*/
public function validateForm(array &$form, array &$form_state) {
if ($this->entity->isNew()) {
// @todo Inject this once https://drupal.org/node/2060865 is in.
$exists = \Drupal::entityManager()->getStorageController('custom_block')->loadByProperties(array('info' => $form_state['values']['info']));
$exists = $this->customBlockStorage->loadByProperties(array('info' => $form_state['values']['info']));
if (!empty($exists)) {
$this->setFormError('info', $form_state, $this->t('A block with description %name already exists.', array(
'%name' => $form_state['values']['info']
)));
'%name' => $form_state['values']['info'],
)));
}
}
}

View File

@ -8,7 +8,6 @@
namespace Drupal\custom_block\Form;
use Drupal\Core\Entity\ContentEntityConfirmFormBase;
use Symfony\Component\HttpFoundation\Request;
/**
* Provides a confirmation form for deleting a custom block entity.
@ -41,8 +40,7 @@ class CustomBlockDeleteForm extends ContentEntityConfirmFormBase {
/**
* {@inheritdoc}
*/
public function buildForm(array $form, array &$form_state, Request $request = NULL) {
$form = parent::buildForm($form, $form_state, $request);
public function buildForm(array $form, array &$form_state) {
$instances = $this->entity->getInstances();
$form['message'] = array(
@ -50,7 +48,7 @@ class CustomBlockDeleteForm extends ContentEntityConfirmFormBase {
'#access' => !empty($instances),
);
return $form;
return parent::buildForm($form, $form_state);
}
/**

View File

@ -46,7 +46,7 @@ class CustomBlockTypeDeleteForm extends EntityConfirmFormBase {
* {@inheritdoc}
*/
public function getQuestion() {
return t('Are you sure you want to delete %label?', array('%label' => $this->entity->label()));
return $this->t('Are you sure you want to delete %label?', array('%label' => $this->entity->label()));
}
/**
@ -62,7 +62,7 @@ class CustomBlockTypeDeleteForm extends EntityConfirmFormBase {
* {@inheritdoc}
*/
public function getConfirmText() {
return t('Delete');
return $this->t('Delete');
}
/**