You are here

function _single_page_site_validate_menu_item in Single Page Site 2.x

Same name and namespace in other branches
  1. 8 single_page_site.module \_single_page_site_validate_menu_item()
  2. 7 single_page_site.module \_single_page_site_validate_menu_item()
  3. 2.0.x single_page_site.module \_single_page_site_validate_menu_item()

Validates the menu item.

1 string reference to '_single_page_site_validate_menu_item'
single_page_site_form_menu_link_content_menu_link_content_form_alter in ./single_page_site.module
Implements hook_form_FROM_ID_alter().

File

./single_page_site.module, line 71
Module hooks file for Single Page Site.

Code

function _single_page_site_validate_menu_item($form, FormStateInterface &$form_state) {

  // Add validation callback to menu that is used as single page menu.
  $menu = $form_state
    ->getValue('menu_parent');
  $settings = \Drupal::config('single_page_site.config');
  if (strpos($menu, $settings
    ->get('menu')) !== FALSE) {
    $uri = $form_state
      ->getValue([
      'link',
      0,
      'uri',
    ]);
    if ($uri == 'internal:/single-page-site') {

      // Don't allow to add "single-page-site" as menu item.
      $form_state
        ->setErrorByName('url', t("You can't add this page to this menu, because it is used as a single page menu."));
    }
    elseif ($uri == 'internal:/' && $settings
      ->get('homepage')) {

      // Don't allow to add "<front>" as menu item if it is "single-page-site".
      // @codingStandardsIgnoreStart
      $form_state
        ->setErrorByName('url', t("You can't add the frontpage to this menu, because this menu is used for building your single page site " . "and you configured the single page as you homepage."));

      // @codingStandardsIgnoreEnd
    }
  }
}