examples-3.x-dev/examples.module

examples.module
<?php

/**
 * @file
 * Module file for Examples for Developers.
 *
 * This file serves as a stub file for the many Examples modules in the
 * @link http://drupal.org/project/examples Examples for Developers Project @endlink
 * which you can download and experiment with.
 *
 * One might say that examples.module is an example of documentation. However,
 * note that the example submodules define many doxygen groups, which may or
 * may not be a good strategy for other modules.
 */

use Drupal\Component\Utility\Html;
use Drupal\Core\Url;

/**
 * @defgroup examples Examples
 * @{
 * Well-documented API examples for a broad range of Drupal core functionality.
 *
 * Developers can learn how to use a particular API quickly by experimenting
 * with the examples, and adapt them for their own use.
 *
 * Download the Examples for Developers Project (and participate with
 * submissions, bug reports, patches, and documentation) at
 * http://drupal.org/project/examples
 */

/**
 * Implements hook_toolbar().
 */
function examples_toolbar() {
  // First, build an array of all example modules and their routes.
  // We resort to this hard-coded way so as not to muck up each example.
  $examples = _examples_toolbar_routes();

  // Build a list of links for the menu.
  $links = [];
  foreach ($examples as $module => $route) {

    // Check if module is installed or not.
    if (\Drupal::moduleHandler()->moduleExists($module)) {

      // Get the module info (title, description) from Drupal.
      $info = \Drupal::service('extension.list.module')->getExtensionInfo($module);

      // If there's no info, the example isn't enabled, so don't display it.
      if (!empty($info)) {
        $links[$module] = [
          'title' => Html::escape($info['name']),
          'url' => Url::fromRoute($route),
          'attributes' => [
            'class' => [Html::getClass($module)],
            'title' => Html::escape($info['description']),
          ],
        ];
      }
    }
  }

  // Add a link to enable all examples.
  $links['enable_examples'] = [
    'title' => t('Enable Examples'),
    'url' => Url::fromRoute('system.modules_list'),
    'options' => [
      'title' => t('Enable more examples in on the Extend page.'),
    ],
    'fragment' => 'edit-modules-example-modules',
  ];

  // Create the examples toolbar render array.
  $items['examples'] = [
    '#type' => 'toolbar_item',
    'tab' => [
      '#type' => 'link',
      '#title' => t('Examples'),
      '#url' => Url::fromRoute('<front>'),
      '#attributes' => [
        'title' => t('Developer Examples'),
        'class' => ['toolbar-icon', 'toolbar-icon-examples'],
      ],
    ],
    'tray' => [
      '#heading' => t('Developer Examples'),
      'shortcuts' => [
        '#theme' => 'links__toolbar_example',
        '#links' => $links,
        '#attributes' => [
          'class' => ['toolbar-menu'],
        ],
      ],
    ],
    '#weight' => 99,
    '#attached' => [
      'library' => [
        'examples/examples.icons',
      ],
    ],
  ];

  return $items;
}

/**
 * Get a list of toolbar links for testing toolbar routes.
 *
 * This function returns a keyed array of toolbar routes with keys as the
 * module name which supplies the route. For internal use only.
 *
 * @return string[]
 *   Keyed array of toolbar routes.
 *
 * @see toolbar_menu()
 */
function _examples_toolbar_routes() {
  return [
    'ajax_example' => 'ajax_example.description',
    'batch_example' => 'batch_example.form',
    'block_example' => 'block_example.description',
    'cache_example' => 'cache_example.description',
    'config_entity_example' => 'entity.robot.list',
    'config_simple_example' => 'config_simple_example.description',
    'content_entity_example' => 'entity.content_entity_example_contact.collection',
    'cron_example' => 'cron_example.description',
    'dbtng_example' => 'dbtng_example.generate_entry_list',
    'email_example' => 'email_example.description',
    'events_example' => 'events_example.description',
    'field_example' => 'field_example.description',
    'field_permission_example' => 'field_permission_example.description',
    'file_example' => 'file_example.file_api',
    'form_api_example' => 'form_api_example.description',
    'hooks_example' => 'hooks_example.description',
    'js_example' => 'js_example.info',
    'menu_example' => 'examples.menu_example',
    'node_type_example' => 'config_node_type_example.description',
    'page_example' => 'page_example.description',
    'pager_example' => 'pager_example.page',
    'plugin_type_example' => 'plugin_type_example.description',
    'queue_example' => 'queue_example.form',
    'render_example' => 'render_example.description',
    'rest_example' => 'rest_example.getting_started',
    'session_example' => 'session_example.form',
    'stream_wrapper_example' => 'stream_wrapper_example.description',
    'tabledrag_example' => 'tabledrag_example.description',
    'tablesort_example' => 'tablesort_example.description',
    'testing_example' => 'testing_example.description',
  ];
}

/**
 * @} End of 'defgroup examples'.
 */

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

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