Issue #2127941 by Gábor Hojtsy: Remove two (out of 3) bogus and duplicate date languages UIs.
parent
4009f8f723
commit
c435b714e6
|
@ -1,9 +1,3 @@
|
|||
system.date_format_language_overview:
|
||||
title: 'Localize'
|
||||
route_name: system.date_format_language_overview
|
||||
tab_root_id: system.date_format_list
|
||||
weight: -8
|
||||
|
||||
language.admin_overview:
|
||||
title: 'List'
|
||||
route_name: language.admin_overview
|
||||
|
|
|
@ -60,14 +60,4 @@ class LanguageLocalTasks extends LocalTaskIntegrationTest {
|
|||
));
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests language date format local tasks.
|
||||
*/
|
||||
public function testLanguageDateLocalTasks() {
|
||||
$this->assertLocalTasks('system.date_format_language_overview', array(
|
||||
0 => array('system.date_format_language_overview'),
|
||||
));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -130,12 +130,6 @@ system.date_format.*:
|
|||
locked:
|
||||
type: boolean
|
||||
label: 'Locked'
|
||||
locales:
|
||||
type: sequence
|
||||
label: 'Languages'
|
||||
sequence:
|
||||
- type: string
|
||||
label: 'Language'
|
||||
pattern:
|
||||
type: mapping
|
||||
label: 'Format string'
|
||||
|
|
|
@ -4,7 +4,6 @@ label: 'Fallback date format'
|
|||
status: true
|
||||
langcode: en
|
||||
locked: true
|
||||
locales: { }
|
||||
pattern:
|
||||
php: 'D, m/d/Y - H:i'
|
||||
intl: 'ccc, MM/dd/yyyy - kk:mm'
|
||||
|
|
|
@ -4,7 +4,6 @@ label: 'HTML Date'
|
|||
status: true
|
||||
langcode: en
|
||||
locked: true
|
||||
locales: { }
|
||||
pattern:
|
||||
php: Y-m-d
|
||||
intl: yyyy-MM-dd
|
||||
|
|
|
@ -4,7 +4,6 @@ label: 'HTML Datetime'
|
|||
status: true
|
||||
langcode: en
|
||||
locked: true
|
||||
locales: { }
|
||||
pattern:
|
||||
php: 'Y-m-d\TH:i:sO'
|
||||
intl: 'yyyy-MM-dd''T''kk:mm:ssZZ'
|
||||
|
|
|
@ -4,7 +4,6 @@ label: 'HTML Month'
|
|||
status: true
|
||||
langcode: en
|
||||
locked: true
|
||||
locales: { }
|
||||
pattern:
|
||||
php: Y-m
|
||||
intl: Y-MM
|
||||
|
|
|
@ -4,7 +4,6 @@ label: 'HTML Time'
|
|||
status: true
|
||||
langcode: en
|
||||
locked: true
|
||||
locales: { }
|
||||
pattern:
|
||||
php: 'H:i:s'
|
||||
intl: 'H:mm:ss'
|
||||
|
|
|
@ -4,7 +4,6 @@ label: 'HTML Week'
|
|||
status: true
|
||||
langcode: en
|
||||
locked: true
|
||||
locales: { }
|
||||
pattern:
|
||||
php: Y-\WW
|
||||
intl: 'Y-''W''WW'
|
||||
|
|
|
@ -4,7 +4,6 @@ label: 'HTML Year'
|
|||
status: true
|
||||
langcode: en
|
||||
locked: true
|
||||
locales: { }
|
||||
pattern:
|
||||
php: Y
|
||||
intl: Y
|
||||
|
|
|
@ -4,7 +4,6 @@ label: 'HTML Yearless date'
|
|||
status: true
|
||||
langcode: en
|
||||
locked: true
|
||||
locales: { }
|
||||
pattern:
|
||||
php: m-d
|
||||
intl: MM-d
|
||||
|
|
|
@ -4,7 +4,6 @@ label: 'Default long date'
|
|||
status: true
|
||||
langcode: en
|
||||
locked: false
|
||||
locales: { }
|
||||
pattern:
|
||||
php: 'l, F j, Y - H:i'
|
||||
intl: 'EEEE, LLLL d, yyyy - kk:mm'
|
||||
|
|
|
@ -4,7 +4,6 @@ label: 'Default medium date'
|
|||
status: true
|
||||
langcode: en
|
||||
locked: false
|
||||
locales: { }
|
||||
pattern:
|
||||
php: 'D, m/d/Y - H:i'
|
||||
intl: 'ccc, MM/dd/yyyy - kk:mm'
|
||||
|
|
|
@ -4,7 +4,6 @@ label: 'Default short date'
|
|||
status: true
|
||||
langcode: en
|
||||
locked: false
|
||||
locales: { }
|
||||
pattern:
|
||||
php: 'm/d/Y - H:i'
|
||||
intl: 'MM/dd/yyyy - kk:mm'
|
||||
|
|
|
@ -1,51 +0,0 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* @file
|
||||
* Contains \Drupal\system\Controller\LanguageDateFormatController.
|
||||
*/
|
||||
|
||||
namespace Drupal\system\Controller;
|
||||
|
||||
/**
|
||||
* Controller for Language Date Format handling.
|
||||
*/
|
||||
class DateFormatLanguageController {
|
||||
|
||||
/**
|
||||
* Displays edit date format links for each language.
|
||||
*
|
||||
* @return array
|
||||
* Render array of overview page.
|
||||
*/
|
||||
public function overviewPage() {
|
||||
|
||||
$header = array(t('Language'), t('Operations'));
|
||||
|
||||
$languages = language_list();
|
||||
foreach ($languages as $langcode => $language) {
|
||||
$row = array();
|
||||
$row[] = $language->name;
|
||||
$links = array();
|
||||
$links['edit'] = array(
|
||||
'title' => t('Edit'),
|
||||
'href' => 'admin/config/regional/date-time/locale/' . $langcode . '/edit',
|
||||
);
|
||||
$links['reset'] = array(
|
||||
'title' => t('Reset'),
|
||||
'href' => 'admin/config/regional/date-time/locale/' . $langcode . '/reset',
|
||||
);
|
||||
$row[] = array(
|
||||
'data' => array(
|
||||
'#type' => 'operations',
|
||||
'#links' => $links,
|
||||
),
|
||||
);
|
||||
$rows[] = $row;
|
||||
}
|
||||
|
||||
return array('#theme' => 'table', '#header' => $header, '#rows' => $rows);
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -39,44 +39,6 @@ interface DateFormatInterface extends ConfigEntityInterface {
|
|||
*/
|
||||
public function setPattern($pattern, $type = DrupalDateTime::PHP);
|
||||
|
||||
/**
|
||||
* Adds a locale for this date format.
|
||||
*
|
||||
* @param string $locale
|
||||
* The locale to add for this format.
|
||||
*
|
||||
* @return self
|
||||
* Returns the date format.
|
||||
*/
|
||||
public function addLocale($locale);
|
||||
|
||||
/**
|
||||
* Sets the locales for this date format. This overwrites existing locales.
|
||||
*
|
||||
* @param array $locales
|
||||
* The array of locales to set for this format.
|
||||
*
|
||||
* @return self
|
||||
* Returns the date format.
|
||||
*/
|
||||
public function setLocales(array $locales);
|
||||
|
||||
/**
|
||||
* Returns an array of the locales for this date format.
|
||||
*
|
||||
* @return array
|
||||
* An array of locale names.
|
||||
*/
|
||||
public function getLocales();
|
||||
|
||||
/**
|
||||
* Determines if this data format has any locales.
|
||||
*
|
||||
* @return bool
|
||||
* TRUE if the date format has locales, FALSE otherwise.
|
||||
*/
|
||||
public function hasLocales();
|
||||
|
||||
/**
|
||||
* Determines if this date format is locked.
|
||||
*
|
||||
|
|
|
@ -78,11 +78,6 @@ class DateFormat extends ConfigEntityBase implements DateFormatInterface {
|
|||
*/
|
||||
protected $locked = FALSE;
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
protected $locales = array();
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
|
@ -90,7 +85,6 @@ class DateFormat extends ConfigEntityBase implements DateFormatInterface {
|
|||
$properties = parent::getExportProperties();
|
||||
$names = array(
|
||||
'locked',
|
||||
'locales',
|
||||
'pattern',
|
||||
);
|
||||
foreach ($names as $name) {
|
||||
|
@ -114,37 +108,6 @@ class DateFormat extends ConfigEntityBase implements DateFormatInterface {
|
|||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getLocales() {
|
||||
return $this->locales;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function setLocales(array $locales) {
|
||||
$this->locales = $locales;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function hasLocales() {
|
||||
return !empty($this->locales);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function addLocale($locale) {
|
||||
$this->locales[] = $locale;
|
||||
$this->locales = array_unique($this->locales);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
|
@ -152,43 +115,4 @@ class DateFormat extends ConfigEntityBase implements DateFormatInterface {
|
|||
return (bool) $this->locked;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function preSave(EntityStorageControllerInterface $storage_controller) {
|
||||
parent::preSave($storage_controller);
|
||||
|
||||
if ($this->hasLocales()) {
|
||||
$config_factory = \Drupal::service('config.factory');
|
||||
$properties = $this->getExportProperties();
|
||||
$languages = language_list();
|
||||
// Check if the suggested language codes are configured.
|
||||
foreach ($this->getLocales() as $langcode) {
|
||||
if (isset($languages[$langcode])) {
|
||||
$config_factory->get('locale.config.' . $langcode . '.system.date_format.' . $this->id())
|
||||
->setData($properties)
|
||||
->save();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public static function postDelete(EntityStorageControllerInterface $storage_controller, array $entities) {
|
||||
parent::postDelete($storage_controller, $entities);
|
||||
|
||||
// Clean up the localized entry if required.
|
||||
if (\Drupal::moduleHandler()->moduleExists('language')) {
|
||||
$languages = language_list();
|
||||
foreach ($entities as $entity) {
|
||||
$format_id = $entity->id();
|
||||
foreach ($languages as $langcode => $data) {
|
||||
\Drupal::config("locale.config.$langcode.system.date_format.$format_id")->delete();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -11,6 +11,7 @@ use Drupal\Core\Ajax\AjaxResponse;
|
|||
use Drupal\Core\Ajax\ReplaceCommand;
|
||||
use Drupal\Core\Config\Entity\ConfigStorageController;
|
||||
use Drupal\Core\Datetime\Date;
|
||||
use Drupal\Core\Language\Language;
|
||||
use Symfony\Component\DependencyInjection\ContainerInterface;
|
||||
use Drupal\Core\Datetime\DrupalDateTime;
|
||||
use Drupal\Core\Entity\Query\QueryFactory;
|
||||
|
@ -168,22 +169,12 @@ abstract class DateFormatFormBase extends EntityFormController {
|
|||
'#required' => TRUE,
|
||||
);
|
||||
|
||||
$languages = language_list();
|
||||
|
||||
$options = array();
|
||||
foreach ($languages as $langcode => $data) {
|
||||
$options[$langcode] = $data->name;
|
||||
}
|
||||
|
||||
if (!empty($options)) {
|
||||
$form['locales'] = array(
|
||||
'#title' => t('Languages'),
|
||||
'#type' => 'select',
|
||||
'#options' => $options,
|
||||
'#multiple' => TRUE,
|
||||
'#default_value' => $this->entity->getLocales(),
|
||||
);
|
||||
}
|
||||
$form['langcode'] = array(
|
||||
'#type' => 'language_select',
|
||||
'#title' => t('Language'),
|
||||
'#languages' => Language::STATE_ALL,
|
||||
'#default_value' => $this->entity->langcode,
|
||||
);
|
||||
|
||||
return parent::form($form, $form_state);
|
||||
}
|
||||
|
|
|
@ -1,117 +0,0 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* @file
|
||||
* Contains \Drupal\system\Form\DateFormatLocalizeResetForm.
|
||||
*/
|
||||
|
||||
namespace Drupal\system\Form;
|
||||
|
||||
use Drupal\Core\DependencyInjection\ContainerInjectionInterface;
|
||||
use Drupal\Core\Form\ConfirmFormBase;
|
||||
use Drupal\Core\Config\ConfigFactory;
|
||||
use Symfony\Component\DependencyInjection\ContainerInterface;
|
||||
|
||||
/**
|
||||
* Builds a form for enabling a module.
|
||||
*/
|
||||
class DateFormatLocalizeResetForm extends ConfirmFormBase implements ContainerInjectionInterface {
|
||||
|
||||
/**
|
||||
* The language to be reset.
|
||||
*
|
||||
* @var \Drupal\Core\Language\Language;
|
||||
*/
|
||||
protected $language;
|
||||
|
||||
/**
|
||||
* The config factory.
|
||||
*
|
||||
* @var \Drupal\Core\Config\ConfigFactory
|
||||
*/
|
||||
protected $configFactory;
|
||||
|
||||
/**
|
||||
* Constructs a DateFormatLocalizeResetForm object.
|
||||
*
|
||||
* @param \Drupal\Core\Config\ConfigFactory $config_factory
|
||||
* The config factory.
|
||||
*/
|
||||
public function __construct(ConfigFactory $config_factory) {
|
||||
$this->configFactory = $config_factory;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public static function create(ContainerInterface $container) {
|
||||
return new static(
|
||||
$container->get('config.factory')
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getFormId() {
|
||||
return 'system_date_format_localize_reset_form';
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getQuestion() {
|
||||
return t('Are you sure you want to reset the date formats for %language to the global defaults?', array(
|
||||
'%language' => $this->language->name,
|
||||
));
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getConfirmText() {
|
||||
return t('Reset');
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getCancelRoute() {
|
||||
return array(
|
||||
'route_name' => 'system.date_format_language_overview',
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getDescription() {
|
||||
return t('Resetting will remove all localized date formats for this language. This action cannot be undone.');
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*
|
||||
* @param string $langcode
|
||||
* The language code.
|
||||
*
|
||||
*/
|
||||
public function buildForm(array $form, array &$form_state, $langcode = NULL) {
|
||||
$this->language = language_load($langcode);
|
||||
|
||||
return parent::buildForm($form, $form_state);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function submitForm(array &$form, array &$form_state) {
|
||||
foreach (config_get_storage_names_with_prefix('locale.config.' . $this->language->id . '.system.date_format.') as $config_id) {
|
||||
$this->configFactory->get($config_id)->delete();
|
||||
}
|
||||
entity_render_cache_clear();
|
||||
|
||||
$form_state['redirect'] = 'admin/config/regional/date-time/locale';
|
||||
}
|
||||
|
||||
}
|
|
@ -1,24 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* @file
|
||||
* Contains \Drupal\system\Form\SystemForm.
|
||||
*/
|
||||
|
||||
namespace Drupal\system\Form;
|
||||
|
||||
/**
|
||||
* Temporary form controller for system module.
|
||||
*/
|
||||
class SystemForm {
|
||||
|
||||
/**
|
||||
* Wraps system_date_format_localize_form().
|
||||
*
|
||||
* @todo Remove system_date_format_localize_form().
|
||||
*/
|
||||
public function localizeDateFormat($langcode) {
|
||||
module_load_include('admin.inc', 'system');
|
||||
return drupal_get_form('system_date_format_localize_form', $langcode);
|
||||
}
|
||||
|
||||
}
|
|
@ -1,114 +0,0 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* @file
|
||||
* Definition of Drupal\system\Tests\System\DateFormatsLanguageTest.
|
||||
*/
|
||||
|
||||
namespace Drupal\system\Tests\System;
|
||||
|
||||
use Drupal\Core\Language\Language;
|
||||
use Drupal\simpletest\WebTestBase;
|
||||
|
||||
/**
|
||||
* Functional tests for localizing date formats.
|
||||
*/
|
||||
class DateFormatsLanguageTest extends WebTestBase {
|
||||
|
||||
/**
|
||||
* Modules to enable.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
public static $modules = array('node', 'locale');
|
||||
|
||||
public static function getInfo() {
|
||||
return array(
|
||||
'name' => 'Localize date formats',
|
||||
'description' => 'Tests for the localization of date formats.',
|
||||
'group' => 'System',
|
||||
);
|
||||
}
|
||||
|
||||
function setUp() {
|
||||
parent::setUp();
|
||||
|
||||
// Create Article node type.
|
||||
$this->drupalCreateContentType(array('type' => 'article', 'name' => 'Article'));
|
||||
|
||||
// Create and login user.
|
||||
$admin_user = $this->drupalCreateUser(array('administer site configuration', 'administer languages', 'access administration pages', 'create article content'));
|
||||
$this->drupalLogin($admin_user);
|
||||
}
|
||||
|
||||
/**
|
||||
* Functional tests for localizing date formats.
|
||||
*/
|
||||
function testLocalizeDateFormats() {
|
||||
// Add language.
|
||||
$edit = array(
|
||||
'predefined_langcode' => 'fr',
|
||||
);
|
||||
$this->drupalPostForm('admin/config/regional/language/add', $edit, t('Add language'));
|
||||
|
||||
// Set language negotiation.
|
||||
$language_type = Language::TYPE_INTERFACE;
|
||||
$edit = array(
|
||||
"{$language_type}[enabled][language-url]" => TRUE,
|
||||
);
|
||||
$this->drupalPostForm('admin/config/regional/language/detection', $edit, t('Save settings'));
|
||||
|
||||
// Add new date format for French.
|
||||
$edit = array(
|
||||
'id' => 'example_style_fr',
|
||||
'label' => 'Example Style',
|
||||
'date_format_pattern' => 'd.m.Y - H:i',
|
||||
'locales[]' => array('fr'),
|
||||
);
|
||||
$this->drupalPostForm('admin/config/regional/date-time/formats/add', $edit, t('Add format'));
|
||||
|
||||
// Add new date format for English.
|
||||
$edit = array(
|
||||
'id' => 'example_style_en',
|
||||
'label' => 'Example Style',
|
||||
'date_format_pattern' => 'j M Y - g:ia',
|
||||
'locales[]' => array('en'),
|
||||
);
|
||||
$this->drupalPostForm('admin/config/regional/date-time/formats/add', $edit, t('Add format'));
|
||||
|
||||
// Configure date formats.
|
||||
$this->drupalGet('admin/config/regional/date-time/locale');
|
||||
$this->assertText('French', 'Configured languages appear.');
|
||||
$edit = array(
|
||||
'date_format_long' => 'example_style_fr',
|
||||
'date_format_medium' => 'example_style_fr',
|
||||
'date_format_short' => 'example_style_fr',
|
||||
);
|
||||
$this->drupalPostForm('admin/config/regional/date-time/locale/fr/edit', $edit, t('Save configuration'));
|
||||
$this->assertText(t('Configuration saved.'), 'French date formats updated.');
|
||||
|
||||
$edit = array(
|
||||
'date_format_long' => 'example_style_en',
|
||||
'date_format_medium' => 'example_style_en',
|
||||
'date_format_short' => 'example_style_en',
|
||||
);
|
||||
$this->drupalPostForm('admin/config/regional/date-time/locale/en/edit', $edit, t('Save configuration'));
|
||||
$this->assertText(t('Configuration saved.'), 'English date formats updated.');
|
||||
|
||||
// Create node content.
|
||||
$node = $this->drupalCreateNode(array('type' => 'article'));
|
||||
|
||||
// Configure format for the node posted date changes with the language.
|
||||
$this->drupalGet('node/' . $node->id());
|
||||
$english_date = format_date($node->getCreatedTime(), 'custom', 'j M Y');
|
||||
$this->assertText($english_date, 'English date format appears');
|
||||
$this->drupalGet('fr/node/' . $node->id());
|
||||
$french_date = format_date($node->getCreatedTime(), 'custom', 'd.m.Y');
|
||||
$this->assertText($french_date, 'French date format appears');
|
||||
|
||||
// Make sure we can reset dates back to default.
|
||||
$this->drupalPostForm('admin/config/regional/date-time/locale/en/reset', array(), t('Reset'));
|
||||
$this->drupalGet('node/' . $node->id());
|
||||
$this->assertNoText($english_date, 'English date format does not appear');
|
||||
}
|
||||
}
|
|
@ -124,28 +124,6 @@ class DateTimeTest extends WebTestBase {
|
|||
$this->assertFalse($date_format);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test if the date formats are stored properly.
|
||||
*/
|
||||
function testDateFormatStorage() {
|
||||
$date_format = entity_create('date_format', array(
|
||||
'id' => 'test_short',
|
||||
'label' => 'testDateFormatStorage Short Format',
|
||||
'pattern' => array('php' => 'dmYHis'),
|
||||
));
|
||||
$date_format->save();
|
||||
|
||||
$format = $date_format->getPattern();
|
||||
$this->assertEqual('dmYHis', $format, 'Unlocalized date format resides in general config.');
|
||||
|
||||
$date_format->addLocale('en')->save();
|
||||
$format = $date_format->getPattern();
|
||||
$this->assertEqual('dmYHis', $format, 'Localized date format resides in general config too.');
|
||||
|
||||
$format = \Drupal::config('locale.config.en.system.date_format.test_short')->get('pattern.php');
|
||||
$this->assertEqual('dmYHis', $format, 'Localized date format resides in localized config.');
|
||||
}
|
||||
|
||||
/**
|
||||
* Test that date formats are sanitized.
|
||||
*/
|
||||
|
|
|
@ -779,140 +779,3 @@ function theme_system_themes_page($variables) {
|
|||
|
||||
return $output;
|
||||
}
|
||||
|
||||
/**
|
||||
* Form constructor for the date localization configuration form.
|
||||
*
|
||||
* @param $langcode
|
||||
* The code for the current language.
|
||||
*
|
||||
* @see locale_menu()
|
||||
* @see system_date_format_localize_form_submit()
|
||||
* @ingroup forms
|
||||
*
|
||||
* @deprecated Use \Drupal\system\Form\SystemForm::localizeDateFormat()
|
||||
*/
|
||||
function system_date_format_localize_form($form, &$form_state, $langcode) {
|
||||
// Display the current language name.
|
||||
$form['language'] = array(
|
||||
'#type' => 'item',
|
||||
'#title' => t('Language'),
|
||||
'#markup' => language_load($langcode)->name,
|
||||
'#weight' => -10,
|
||||
);
|
||||
$form['langcode'] = array(
|
||||
'#type' => 'value',
|
||||
'#value' => $langcode,
|
||||
);
|
||||
|
||||
// Get list of available formats.
|
||||
$date_service = \Drupal::service('date');
|
||||
$formats = \Drupal::entityManager()
|
||||
->getStorageController('date_format')
|
||||
->loadMultiple();
|
||||
$choices = array();
|
||||
foreach ($formats as $date_format_id => $format_info) {
|
||||
// Ignore values that are localized.
|
||||
if (!$format_info->hasLocales()) {
|
||||
$choices[$date_format_id] = $date_service->format(REQUEST_TIME, $date_format_id);
|
||||
}
|
||||
}
|
||||
|
||||
// Get configured formats for each language.
|
||||
$config_prefix = 'locale.config.' . $langcode . '.system.date_format.';
|
||||
foreach (config_get_storage_names_with_prefix($config_prefix) as $config_id) {
|
||||
$date_format_id = substr($config_id, strlen($config_prefix));
|
||||
$choices[$date_format_id] = $date_service->format(REQUEST_TIME, $date_format_id);
|
||||
}
|
||||
|
||||
// Display a form field for each format type.
|
||||
foreach ($formats as $date_format_id => $format_info) {
|
||||
// Show date format select list.
|
||||
$form['date_formats']['date_format_' . $date_format_id] = array(
|
||||
'#type' => 'select',
|
||||
'#title' => check_plain($format_info->label()),
|
||||
'#attributes' => array('class' => array('date-format')),
|
||||
'#default_value' => isset($choices[$date_format_id]) ? $date_format_id : 'custom',
|
||||
'#options' => $choices,
|
||||
);
|
||||
}
|
||||
|
||||
$form['actions'] = array('#type' => 'actions');
|
||||
$form['actions']['submit'] = array(
|
||||
'#type' => 'submit',
|
||||
'#value' => t('Save configuration'),
|
||||
);
|
||||
|
||||
return $form;
|
||||
}
|
||||
|
||||
/**
|
||||
* Form submission handler for system_date_format_localize_form().
|
||||
*/
|
||||
function system_date_format_localize_form_submit($form, &$form_state) {
|
||||
$langcode = $form_state['values']['langcode'];
|
||||
|
||||
$formats = entity_load_multiple('date_format');
|
||||
foreach ($formats as $date_format_id => $format_info) {
|
||||
if (isset($form_state['values']['date_format_' . $date_format_id])) {
|
||||
$format = $form_state['values']['date_format_' . $date_format_id];
|
||||
system_date_format_localize_form_save($langcode, $date_format_id, $formats[$format]);
|
||||
}
|
||||
}
|
||||
drupal_set_message(t('Configuration saved.'));
|
||||
$form_state['redirect'] = 'admin/config/regional/date-time/locale';
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns HTML for a locale date format form.
|
||||
*
|
||||
* @param $variables
|
||||
* An associative array containing:
|
||||
* - form: A render element representing the form.
|
||||
*
|
||||
* @ingroup themeable
|
||||
*/
|
||||
function theme_system_date_format_localize_form($variables) {
|
||||
$form = $variables['form'];
|
||||
$header = array(
|
||||
'machine_name' => t('Machine Name'),
|
||||
'pattern' => t('Format'),
|
||||
);
|
||||
|
||||
foreach (element_children($form['date_formats']) as $key) {
|
||||
$row = array();
|
||||
$row[] = $form['date_formats'][$key]['#title'];
|
||||
unset($form['date_formats'][$key]['#title']);
|
||||
$row[] = array('data' => drupal_render($form['date_formats'][$key]));
|
||||
$rows[] = $row;
|
||||
}
|
||||
|
||||
$table = array(
|
||||
'#theme' => 'table',
|
||||
'#header' => $header,
|
||||
'#rows' => $rows,
|
||||
);
|
||||
$output = drupal_render($form['language']);
|
||||
$output .= drupal_render($table);
|
||||
$output .= drupal_render_children($form);
|
||||
|
||||
return $output;
|
||||
}
|
||||
|
||||
/**
|
||||
* Save locale specific date formats to the database.
|
||||
*
|
||||
* @param string $langcode
|
||||
* Language code, can be 2 characters, e.g. 'en' or 5 characters, e.g.
|
||||
* 'en-CA'.
|
||||
* @param string $date_format_id
|
||||
* Date format id, e.g. 'short', 'medium'.
|
||||
* @param \Drupal\system\DateFormatInterface $format
|
||||
* The date format entity.
|
||||
*/
|
||||
function system_date_format_localize_form_save($langcode, $date_format_id, DateFormatInterface $format) {
|
||||
$format->addLocale($langcode)->save();
|
||||
\Drupal::config('locale.config.' . $langcode . '.system.date_format.' . $date_format_id)
|
||||
->set('pattern', $format->get('pattern'))
|
||||
->save();
|
||||
}
|
||||
|
|
|
@ -189,9 +189,6 @@ function system_theme() {
|
|||
'system_compact_link' => array(
|
||||
'variables' => array(),
|
||||
),
|
||||
'system_date_format_localize_form' => array(
|
||||
'render element' => 'form',
|
||||
),
|
||||
));
|
||||
}
|
||||
|
||||
|
@ -815,26 +812,6 @@ function system_menu() {
|
|||
'type' => MENU_CALLBACK,
|
||||
);
|
||||
|
||||
// Localize date formats.
|
||||
if (\Drupal::moduleHandler()->moduleExists('language')) {
|
||||
$items['admin/config/regional/date-time/locale'] = array(
|
||||
'title' => 'Localize',
|
||||
'description' => 'Configure date formats for each locale',
|
||||
'weight' => -8,
|
||||
'route_name' => 'system.date_format_language_overview',
|
||||
);
|
||||
$items['admin/config/regional/date-time/locale/%/edit'] = array(
|
||||
'title' => 'Localize date formats',
|
||||
'route_name' => 'system.localize_date_format',
|
||||
'description' => 'Configure date formats for each locale',
|
||||
);
|
||||
$items['admin/config/regional/date-time/locale/%/reset'] = array(
|
||||
'title' => 'Reset date formats',
|
||||
'description' => 'Reset localized date formats to global defaults',
|
||||
'route_name' => 'system.date_format_localize_reset',
|
||||
);
|
||||
}
|
||||
|
||||
return $items;
|
||||
}
|
||||
|
||||
|
|
|
@ -214,13 +214,6 @@ system.date_format_edit:
|
|||
requirements:
|
||||
_entity_access: 'date_format.update'
|
||||
|
||||
system.date_format_language_overview:
|
||||
path: '/admin/config/regional/date-time/locale'
|
||||
defaults:
|
||||
_controller: '\Drupal\system\Controller\DateFormatLanguageController::overviewPage'
|
||||
requirements:
|
||||
_permission: 'administer site configuration'
|
||||
|
||||
system.date_format_delete:
|
||||
path: '/admin/config/regional/date-time/formats/manage/{date_format}/delete'
|
||||
defaults:
|
||||
|
@ -229,13 +222,6 @@ system.date_format_delete:
|
|||
requirements:
|
||||
_entity_access: 'date_format.delete'
|
||||
|
||||
system.date_format_localize_reset:
|
||||
path: '/admin/config/regional/date-time/locale/{langcode}/reset'
|
||||
defaults:
|
||||
_form: '\Drupal\system\Form\DateFormatLocalizeResetForm'
|
||||
requirements:
|
||||
_permission: 'administer site configuration'
|
||||
|
||||
system.modules_list:
|
||||
path: '/admin/modules'
|
||||
defaults:
|
||||
|
@ -377,13 +363,5 @@ system.batch_page:
|
|||
requirements:
|
||||
_access: 'TRUE'
|
||||
|
||||
system.localize_date_format:
|
||||
path: '/admin/config/regional/date-time/locale/{langcode}/edit'
|
||||
defaults:
|
||||
_content: '\Drupal\system\Form\SystemForm::localizeDateFormat'
|
||||
_title: 'Localize date formats'
|
||||
requirements:
|
||||
_permission: 'administer site configuration'
|
||||
|
||||
system.update:
|
||||
path: '/core/update.php'
|
||||
|
|
Loading…
Reference in New Issue