Welcome To Our Shell

Mister Spy & Souheyl Bypass Shell

Current Path : /var/www/html/pallets/web/modules/contrib/language_switcher_menu/src/Form/

Linux ift1.ift-informatik.de 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64
Upload File :
Current File : /var/www/html/pallets/web/modules/contrib/language_switcher_menu/src/Form/SettingsForm.php

<?php

namespace Drupal\language_switcher_menu\Form;

use Drupal\Core\Config\ConfigFactoryInterface;
use Drupal\Core\Entity\EntityTypeManagerInterface;
use Drupal\Core\Form\ConfigFormBase;
use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\Language\LanguageManagerInterface;
use Drupal\Core\Menu\MenuLinkManagerInterface;
use Drupal\Core\Menu\MenuParentFormSelectorInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;

/**
 * Provides a form to administer settings.
 */
class SettingsForm extends ConfigFormBase {

  /**
   * The entity type manager.
   *
   * @var \Drupal\Core\Entity\EntityTypeManagerInterface
   */
  protected $entityTypeManager;

  /**
   * The language manager.
   *
   * @var \Drupal\Core\Language\LanguageManagerInterface
   */
  protected $languageManager;

  /**
   * The menu link plugin manager.
   *
   * @var \Drupal\Core\Menu\MenuLinkManagerInterface
   */
  protected $menuLinkManager;

  /**
   * The menu parent form selector.
   *
   * @var \Drupal\Core\Menu\MenuParentFormSelectorInterface
   */
  protected $menuParentFormSelector;

  /**
   * Constructs a \Drupal\system\ConfigFormBase object.
   *
   * @param \Drupal\Core\Config\ConfigFactoryInterface $config_factory
   *   The factory for configuration objects.
   * @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager
   *   The entity type manager.
   * @param \Drupal\Core\Language\LanguageManagerInterface $language_manager
   *   The language manager.
   * @param \Drupal\Core\Menu\MenuLinkManagerInterface $menu_link_manager
   *   The menu link plugin manager.
   * @param \Drupal\Core\Menu\MenuParentFormSelectorInterface $menu_parent_form_selector
   *   The menu parent form selector.
   */
  public function __construct(ConfigFactoryInterface $config_factory, EntityTypeManagerInterface $entity_type_manager, LanguageManagerInterface $language_manager, MenuLinkManagerInterface $menu_link_manager, MenuParentFormSelectorInterface $menu_parent_form_selector) {
    parent::__construct($config_factory);
    $this->entityTypeManager = $entity_type_manager;
    $this->languageManager = $language_manager;
    $this->menuLinkManager = $menu_link_manager;
    $this->menuParentFormSelector = $menu_parent_form_selector;
  }

  /**
   * {@inheritdoc}
   *
   * @phpstan-return self
   */
  public static function create(ContainerInterface $container) {
    return new static(
      $container->get('config.factory'),
      $container->get('entity_type.manager'),
      $container->get('language_manager'),
      $container->get('plugin.manager.menu.link'),
      $container->get('menu.parent_form_selector')
    );
  }

  /**
   * {@inheritdoc}
   *
   * @phpstan-return array<string>
   */
  protected function getEditableConfigNames() {
    return [
      'language_switcher_menu.settings',
    ];
  }

  /**
   * {@inheritdoc}
   *
   * @phpstan-return string
   */
  public function getFormId() {
    return 'language_switcher_menu_settings_form';
  }

  /**
   * {@inheritdoc}
   *
   * @phpstan-param array<mixed> $form
   * @phpstan-return array<mixed>
   */
  public function buildForm(array $form, FormStateInterface $form_state) {
    $config = $this->config('language_switcher_menu.settings');

    $info = $this->languageManager->getDefinedLanguageTypesInfo();
    $configurable_types = $this->languageManager->getLanguageTypes();
    $options = [];
    foreach ($configurable_types as $type) {
      $options[$type] = $info[$type]['name'];
    }
    $default = $config->get('type') ? $config->get('type') : NULL;
    if (empty($default) && count($configurable_types) === 1) {
      $default = $type ?? NULL;
    }
    $form['type'] = [
      '#type' => 'select',
      '#title' => $this->t('Language type'),
      '#description' => $this->t('Language type to build language switcher links for.'),
      '#options' => $options,
      '#required' => TRUE,
      '#default_value' => $default,
    ];

    $default = $config->get('parent');
    if ($default === NULL) {
      // The module has not been configured, yet. Suggest a sane default.
      $default = 'main:';
      $menus = $this->entityTypeManager->getStorage('menu')->loadMultiple();
      if (!isset($menus['main']) && count($menus) > 0) {
        $default = array_key_first($menus) . ':';
      }
    }
    // If the value is empty, the module has been disabled. We need to set a
    // dummy default for menu parent form selector and reset the value later.
    $disabled = FALSE;
    if (empty($default)) {
      $disabled = TRUE;
      $default = 'main:';
    }
    $form['parent'] = $this->menuParentFormSelector->parentSelectElement($default);
    $form['parent']['#title'] = $this->t('Parent link');
    $form['parent']['#description'] = $this->t('Link to use as a parent link for language switcher links. Select %disabled to disable adding of language switcher links.', [
      '%disabled' => $this->t('Disabled'),
    ]);
    $form['parent']['#required'] = FALSE;
    $form['parent']['#empty_option'] = $this->t('Disabled');
    $form['parent']['#empty_value'] = '';
    if ($disabled) {
      $form['parent']['#default_value'] = '';
    }

    // Our own menu links should not be available for selection.
    $form['parent']['#options'] = array_filter($form['parent']['#options'], function ($key) {
      return strpos($key, ':language_switcher_menu.language_switcher_link:') === FALSE;
    }, ARRAY_FILTER_USE_KEY);

    $form['weight'] = [
      '#type' => 'weight',
      '#title' => $this->t('Weight'),
      '#description' => $this->t('Menu item weight of <em>first</em> language switcher link. Weight of any additional links will be increased by 1.'),
      '#delta' => 100,
      '#default_value' => (int) $config->get('weight'),
    ];

    return parent::buildForm($form, $form_state);
  }

  /**
   * {@inheritdoc}
   *
   * @phpstan-param array<mixed> $form
   * @phpstan-return void
   */
  public function submitForm(array &$form, FormStateInterface $form_state) {
    parent::submitForm($form, $form_state);

    $has_changes = FALSE;
    $config = $this->config('language_switcher_menu.settings');
    foreach (['parent', 'type', 'weight'] as $setting) {
      $setting_old = $config->get($setting);
      $setting_new = $form_state->getValue($setting);
      if ($setting === 'weight') {
        $setting_new = (int) $setting_new;
      }
      if ($setting_old === $setting_new) {
        continue;
      }
      $has_changes = TRUE;
      break;
    }

    $config
      ->set('type', $form_state->getValue('type'))
      ->set('parent', $form_state->getValue('parent'))
      ->set('weight', (int) $form_state->getValue('weight'))
      ->save();

    if ($has_changes) {
      // Rebuild the menu link plugin cache. This will also invalidate cache
      // tags for old and new menu config, which will invalidate menu block
      // caches.
      $this->menuLinkManager->rebuild();
    }

  }

}

bypass 1.0, Devloped By El Moujahidin (the source has been moved and devloped)
Email: contact@elmoujehidin.net bypass 1.0, Devloped By El Moujahidin (the source has been moved and devloped) Email: contact@elmoujehidin.net