Issue #2132551 by Gábor Hojtsy, alexpott, kfritsche: Picture module uses config keys with a dot.

8.0.x
Nathaniel Catchpole 2013-12-06 15:47:30 +00:00
parent afa7d30c5c
commit 648e362241
2 changed files with 27 additions and 7 deletions

View File

@ -18,10 +18,16 @@ picture.mappings.*:
label: 'Mappings'
sequence:
- type: sequence
label: 'Mapping'
label: 'Source type'
sequence:
- type: string
label: 'Image style'
- type: sequence
label: 'Source'
sequence:
- type: sequence
label: 'Machine name'
sequence:
- type: string
label: 'Image style'
breakpointGroup:
type: string
label: 'Breakpoint group'

View File

@ -95,6 +95,16 @@ class PictureMapping extends ConfigEntityBase implements PictureMappingInterface
if (isset($this->breakpointGroup) && is_object($this->breakpointGroup)) {
$this->breakpointGroup = $this->breakpointGroup->id();
}
// Split the breakpoint ids into their different parts, as dots as
// identifiers are not possible.
$loaded_mappings = $this->mappings;
$this->mappings = array();
foreach ($loaded_mappings as $breakpoint_id => $mapping) {
list($source_type, $source, $name) = explode('.', $breakpoint_id);
$this->mappings[$source_type][$source][$name] = $mapping;
}
parent::save();
$this->loadBreakpointGroup();
$this->loadAllMappings();
@ -129,10 +139,14 @@ class PictureMapping extends ConfigEntityBase implements PictureMappingInterface
$this->mappings = array();
if ($this->breakpointGroup) {
foreach ($this->breakpointGroup->getBreakpoints() as $breakpoint_id => $breakpoint) {
// Get the components of the breakpoint ID to match the format of the
// configuration file.
list($source_type, $source, $name) = explode('.', $breakpoint_id);
// Get the mapping for the default multiplier.
$this->mappings[$breakpoint_id]['1x'] = '';
if (isset($loaded_mappings[$breakpoint_id]['1x'])) {
$this->mappings[$breakpoint_id]['1x'] = $loaded_mappings[$breakpoint_id]['1x'];
if (isset($loaded_mappings[$source_type][$source][$name]['1x'])) {
$this->mappings[$breakpoint_id]['1x'] = $loaded_mappings[$source_type][$source][$name]['1x'];
}
// Get the mapping for the other multipliers.
@ -140,8 +154,8 @@ class PictureMapping extends ConfigEntityBase implements PictureMappingInterface
foreach ($breakpoint->multipliers as $multiplier => $status) {
if ($status) {
$this->mappings[$breakpoint_id][$multiplier] = '';
if (isset($loaded_mappings[$breakpoint_id][$multiplier])) {
$this->mappings[$breakpoint_id][$multiplier] = $loaded_mappings[$breakpoint_id][$multiplier];
if (isset($loaded_mappings[$source_type][$source][$name][$multiplier])) {
$this->mappings[$breakpoint_id][$multiplier] = $loaded_mappings[$source_type][$source][$name][$multiplier];
}
}
}