at_theme-1.4.1/at_core/forms/ext/mobile_blocks.php
at_core/forms/ext/mobile_blocks.php
<?php
/**
* @file
* Generate settings for Mobile blocks.
*/
$mobile_blocks_breakpoint_group = theme_get_setting('settings.mobile_blocks_breakpoint_group', $theme) ?: 'at_core.simple';
$mobile_blocks_breakpoints = $breakpoints[$mobile_blocks_breakpoint_group];
// Breakpoints.
foreach ($mobile_blocks_breakpoints as $mbs_key => $mbs_value) {
$mbs_query = $mbs_value->getMediaQuery();
$mbs_group_options[$mbs_query] = $mbs_value->getLabel() . ': ' . $mbs_query;
}
$form['mobile-blocks'] = [
'#type' => 'details',
'#title' => t('Mobile Blocks'),
'#group' => 'extension_settings',
'#description' => t('<h3>Mobile Blocks</h3><p>Hide or show blocks in breakpoints (wide, tablet, mobile etc).</p><ol><li>Select a breakpoint group. Stepped breakpoints are recommended.</li><li>Check hide or show to set the blocks visibility in that breakpoint. If using cascading breakpoints you may need to explicitly set visibility for a block in each breakpoint, otherwise unchecked blocks always show.</li></ol></p>'),
];
// Breakpoints group.
$form['mobile-blocks']['settings_mobile_blocks_breakpoint_group'] = [
'#type' => 'select',
'#title' => t('Breakpoint group'),
'#options' => $breakpoint_options,
'#default_value' => $mobile_blocks_breakpoint_group,
];
// Change message.
$form['mobile-blocks']['mobile_blocks_breakpoint_group_haschanged'] = [
'#type' => 'container',
'#markup' => t('<em>Save the extension settings to change the breakpoint group and update breakpoint options.</em>'),
'#attributes' => ['class' => ['warning', 'messages', 'messages--warning']],
'#states' => [
'invisible' => ['select[name="settings_mobile_blocks_breakpoint_group"]' => ['value' => $mobile_blocks_breakpoint_group]],
],
];
foreach ($mobile_blocks_breakpoints as $mbs_key => $mbs_value) {
$mbs_query = $mbs_value->getMediaQuery();
$mbs_label = strtolower($mbs_value->getLabel());
$mbs_group_options[$mbs_query] = $mbs_value->getLabel() . ': ' . $mbs_query;
$form['mobile-blocks']['breakpoints']['bp' . $mbs_label] = [
'#type' => 'details',
'#title' => t($mbs_label . ' <small>' . $mbs_query . '</small>'),
];
// Blocks.
if (!empty($theme_blocks)) {
foreach ($theme_blocks as $block_key => $block_values) {
$block_id = $block_values->id();
$plugin_id = $block_values->getPluginId();
$block_plugin = str_replace(':', '_', $plugin_id);
$block_label = $block_values->label();
$old_default_value_show = theme_get_setting('settings.mobile_block_show_' . 'bp' . $mbs_label . '_' . $block_id, $theme);
$old_default_value_hide = theme_get_setting('settings.mobile_block_hide_' . 'bp' . $mbs_label . '_' . $block_id, $theme);
if (!empty($old_default_value_show)) {
$default_value_show = $old_default_value_show;
}
else {
$default_value_show = theme_get_setting('settings.mobile_block_show_' . 'bp' . $mbs_label . '_' . $block_plugin, $theme) ?: '';
}
if (!empty($old_default_value_hide)) {
$default_value_hide = $old_default_value_hide;
}
else {
$default_value_hide = theme_get_setting('settings.mobile_block_hide_' . 'bp' . $mbs_label . '_' . $block_plugin, $theme) ?: '';
}
$form['mobile-blocks']['breakpoints']['bp' . $mbs_label][$block_plugin] = [
'#type' => 'fieldset',
'#title' => $block_label,
'#markup' => '<div class="mobile-blocks-title layouts-column-threequarters align-left"><h4 class="h4">' . $block_label . '</h4><small><b>Block id:</b> ' . $block_key . '</small> <br><small><b>Plugin id:</b> ' . $plugin_id . '</small></div>',
'#attributes' => ['class' => ['clearfix']],
];
$form['mobile-blocks']['breakpoints']['bp' . $mbs_label][$block_plugin]['container'] = [
'#type' => 'container',
'#attributes' => ['class' => ['align-right']],
];
$form['mobile-blocks']['breakpoints']['bp' . $mbs_label][$block_plugin]['container']['settings_mobile_block_show_' . 'bp' . $mbs_label . '_' . $block_plugin] = [
'#type' => 'checkbox',
'#title' => t('Show'),
'#default_value' => $default_value_show,
'#states' => [
'disabled' => ['input[name="settings_mobile_block_hide_' . 'bp' . $mbs_label . '_' . $block_plugin . '"]' => ['checked' => TRUE]],
],
];
$form['mobile-blocks']['breakpoints']['bp' . $mbs_label][$block_plugin]['container']['settings_mobile_block_hide_' . 'bp' . $mbs_label . '_' . $block_plugin] = [
'#type' => 'checkbox',
'#title' => t('Hide'),
'#default_value' => $default_value_hide,
'#states' => [
'disabled' => ['input[name="settings_mobile_block_show_' . 'bp' . $mbs_label . '_' . $block_plugin . '"]' => ['checked' => TRUE]],
],
];
}
}
}
