adaptivetheme-8.x-3.x-dev/at_core/forms/ext/responsive_menus.php

at_core/forms/ext/responsive_menus.php
<?php

/**
 * @file
 * Generate form elements for the Responsive Menu settings.
 */

$responsive_menu_breakpoint_group = theme_get_setting('settings.responsive_menu_breakpoint_group', $theme);
$responsive_menu_breakpoints = $breakpoints[$responsive_menu_breakpoint_group];

// Breakpoint options.
$rmb_group_options = [];
foreach ($responsive_menu_breakpoints as $rmb_key => $rmb_value) {
  $rmb_group_options[$rmb_value->getMediaQuery()] = $rmb_value->getLabel() . ': ' . $rmb_value->getMediaQuery();
}

// Menu blocks.
if (!empty($theme_blocks)) {
  $default_value = theme_get_setting('settings.responsive_menu_block', $theme);
  foreach ($theme_blocks as $block_key => $block_values) {
    // Support System module and Menu Block module blocks.
    if ($block_values->getPlugin()->getPluginDefinition()['id'] === 'system_menu_block' || $block_values->getPlugin()->getPluginDefinition()['id'] === 'menu_block') {
      $menu_blocks[$block_values->id()] = $block_values->label() . ' (' . $block_values->id() . ')';
    }
  }
}
else {
  $menu_blocks['bummer'] = '-- no menu blocks available --';
}

// Menu style options.
$responsive_menu_options = [
  'none' => t('-- none --'),
  'horizontal' => t('Horizontal'),
  'vertical'   => t('Vertical'),
  'dropmenu'   => t('Drop menu'),
  'slidedown'  => t('Slide down'),
  'meganav'    => t('Mega nav'),
  'offcanvas'  => t('Off canvas'),
  'overlay'    => t('Overlay'),
  'tiles'      => t('Tiles'),
];

$tiles_count = [
  'two' => 2,
  'three' => 3,
  'four' => 4,
];

$form['responsive_menus'] = [
  '#type' => 'details',
  '#title' => t('Responsive Menus'),
  '#group' => 'extension_settings',
  '#description' => t('<h3>Responsive Menus</h3><p>Select a menu and breakpoint group, then a specific breakpoint for the responsive style. You can configure one default style and optionally a responsive style.</p><p>It is recommended to follow a mobile first approach where the <i>responsive style</i> is the one you typically associate with <i>desktop view</i>, and the <i>default style</i> is for small screens such as mobile touch devices.</p>'),
];

$form['responsive_menus']['default_settings'] = [
  '#type' => 'fieldset',
  '#attributes' => ['class' => ['clearfix']],
];

// Menu.
$form['responsive_menus']['default_settings']['settings_responsive_menu_block'] = [
  '#type' => 'select',
  '#title' => t('Menu'),
  '#options' => $menu_blocks,
  // '#default_value' => theme_get_setting('settings.responsive_menu_block', $theme),
  '#default_value' => $default_value,

];

// Breakpoints group.
$form['responsive_menus']['default_settings']['settings_responsive_menu_breakpoint_group'] = [
  '#type' => 'select',
  '#title' => t('Breakpoint group'),
  '#options' => $breakpoint_options,
  '#default_value' => $responsive_menu_breakpoint_group,
];

// Breakpoint.
$form['responsive_menus']['default_settings']['settings_responsive_menu_breakpoint'] = [
  '#type' => 'select',
  '#title' => t('Breakpoint'),
  '#options' => $rmb_group_options,
  '#default_value' => theme_get_setting('settings.responsive_menu_breakpoint', $theme),
  '#states' => [
    'enabled' => ['select[name="settings_responsive_menu_breakpoint_group"]' => ['value' => $responsive_menu_breakpoint_group]],
  ],
];

// Change message.
$form['responsive_menus']['default_settings']['responsive_menu_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_responsive_menu_breakpoint_group"]' => ['value' => $responsive_menu_breakpoint_group]],
  ],
];

// Menu styles.
$form['responsive_menus']['styles'] = [
  '#type' => 'fieldset',
  '#attributes' => ['class' => ['responsive-menu-styles']],
  '#states' => [
    'enabled' => ['select[name="settings_responsive_menu_breakpoint_group"]' => ['value' => $responsive_menu_breakpoint_group]],
  ],
];

// Default.
$form['responsive_menus']['styles']['settings_responsive_menu_default_style'] = [
  '#type' => 'select',
  '#title' => t('Default style'),
  '#options' => $responsive_menu_options,
  '#default_value' => theme_get_setting('settings.responsive_menu_default_style', $theme),
];

// Responsive.
$form['responsive_menus']['styles']['settings_responsive_menu_responsive_style'] = [
  '#type' => 'select',
  '#title' => t('Responsive style'),
  '#options' => $responsive_menu_options,
  '#default_value' => theme_get_setting('settings.responsive_menu_responsive_style', $theme),
];

// Click menus.
$form['responsive_menus']['click_menus'] = [
  '#type' => 'details',
  '#title' => t('Click Menus'),
  // '#description' => t('These settings only apply to the responsive style (i.e. the "desktop style").'),
];

$form['responsive_menus']['click_menus']['settings_click_menus_enabled'] = [
  '#type' => 'checkbox',
  '#title' => t('Use folding click menus for Off Canvas, Slide Down, Overlay and Vertical menu items.'),
  '#default_value' => theme_get_setting('settings.click_menus_enabled', $theme),
];

if (!isset($getThemeInfo['base theme original'])) {
  $form['responsive_menus']['click_menus']['upgrade_message'] = [
    '#type' => 'container',
    '#markup' => t('Themes generated with AT RC1 and prior are not compatible with click menus, <a href=":upgrade_message" target="_blank"><b>click here for upgrade instructions</b></a>.', [':upgrade_message' => 'https://www.drupal.org/node/2753187']),
  ];
  $form['responsive_menus']['click_menus']['settings_click_menus_enabled']['#disabled'] = TRUE;
}

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

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