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]],
        ],
      ];
    }
  }
}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc