class Disqus in Disqus 8
Provides Disqus render element.
Plugin annotation
@RenderElement("disqus");Hierarchy
- class \Drupal\Component\Plugin\PluginBase implements DerivativeInspectionInterface, PluginInspectionInterface- class \Drupal\Core\Plugin\PluginBase uses DependencySerializationTrait, MessengerTrait, StringTranslationTrait- class \Drupal\Core\Render\Element\RenderElement implements ElementInterface- class \Drupal\disqus\Element\Disqus
 
 
- class \Drupal\Core\Render\Element\RenderElement implements ElementInterface
 
- class \Drupal\Core\Plugin\PluginBase uses DependencySerializationTrait, MessengerTrait, StringTranslationTrait
Expanded class hierarchy of Disqus
5 string references to 'Disqus'
- d7_disqus_field.yml in migrations/d7_disqus_field.yml 
- migrations/d7_disqus_field.yml
- disqus.config_translation.yml in ./disqus.config_translation.yml 
- disqus.config_translation.yml
- disqus.info.yml in ./disqus.info.yml 
- disqus.info.yml
- disqus.links.menu.yml in ./disqus.links.menu.yml 
- disqus.links.menu.yml
- disqus.routing.yml in ./disqus.routing.yml 
- disqus.routing.yml
1 #type use of Disqus
- DisqusFormatter::viewElements in src/Plugin/ Field/ FieldFormatter/ DisqusFormatter.php 
- Builds a renderable array for a field value.
File
- src/Element/ Disqus.php, line 12 
Namespace
Drupal\disqus\ElementView source
class Disqus extends RenderElement {
  /**
   * {@inheritdoc}
   */
  public function getInfo() {
    return [
      '#title' => '',
      '#url' => '',
      '#identifier' => '',
      '#callbacks' => [],
      '#attributes' => [
        'id' => 'disqus_thread',
      ],
      '#pre_render' => [
        get_class() . '::generatePlaceholder',
      ],
    ];
  }
  /**
   * Pre_render callback to generate a placeholder.
   *
   * @param array $element
   *   A renderable array.
   *
   * @return array
   *   The updated renderable array containing the placeholder.
   */
  public static function generatePlaceholder(array $element) {
    if (\Drupal::currentUser()
      ->hasPermission('view disqus comments')) {
      $element[] = [
        '#lazy_builder' => [
          get_class() . '::displayDisqusComments',
          [
            $element['#title'],
            $element['#url'],
            $element['#identifier'],
            serialize($element['#callbacks']),
          ],
        ],
        '#create_placeholder' => TRUE,
      ];
    }
    return $element;
  }
  /**
   * Post render function of the Disqus element to inject the Disqus JavaScript.
   */
  public static function displayDisqusComments($title, $url, $identifier, $callbacks) {
    $disqus_settings = \Drupal::config('disqus.settings');
    /** @var \Drupal\Core\Render\RendererInterface $renderer */
    $renderer = \Drupal::service('renderer');
    $element = [
      '#theme_wrappers' => [
        'disqus_noscript',
        'container',
      ],
      '#attributes' => [
        'id' => 'disqus_thread',
      ],
    ];
    $renderer
      ->addCacheableDependency($element, $disqus_settings);
    $disqus = [
      'domain' => $disqus_settings
        ->get('disqus_domain'),
      'url' => $url,
      'title' => $title,
      'identifier' => $identifier,
    ];
    // If the user is logged in, we can inject the username and email for
    // Disqus.
    $account = \Drupal::currentUser();
    if ($disqus_settings
      ->get('behavior.disqus_inherit_login') && !$account
      ->isAnonymous()) {
      $renderer
        ->addCacheableDependency($element, $account);
      $disqus['name'] = $account
        ->getAccountName();
      $disqus['email'] = $account
        ->getEmail();
    }
    // Provide alternate language support if desired.
    if ($disqus_settings
      ->get('behavior.disqus_localization')) {
      $disqus['language'] = \Drupal::languageManager()
        ->getCurrentLanguage()
        ->getId();
    }
    // Check if we are to provide Single Sign-On access.
    if ($disqus_settings
      ->get('advanced.sso.disqus_sso')) {
      $disqus += \Drupal::service('disqus.manager')
        ->ssoSettings();
    }
    // Pass callbacks on if needed. Callbacks array is two dimensional array
    // with callback type as key on first level and array of JS callbacks on the
    // second level.
    // Example:
    // @code
    // $element = [
    //   '#type' => 'disqus',
    //   '#callbacks' = [
    //     'onNewComment' => [
    //       'myCallbackThatFiresOnCommentPost',
    //       'Drupal.mymodule.anotherCallbInsideDrupalObj',
    //     ],
    //   ],
    // ];
    // @endcode
    $callbacks = unserialize($callbacks);
    if (!empty($callbacks)) {
      $disqus['callbacks'] = $callbacks;
    }
    // Check if we want to track new comments in Google Analytics.
    if ($disqus_settings
      ->get('behavior.disqus_track_newcomment_ga')) {
      // Add a callback when a new comment is posted.
      $disqus['callbacks']['onNewComment'][] = 'Drupal.disqus.disqusTrackNewComment';
      // Attach the js with the callback implementation.
      $element['#attached']['library'][] = 'disqus/ga';
    }
    // Add the disqus.js and all the settings to process the JavaScript and load
    // Disqus.
    $element['#attached']['library'][] = 'disqus/disqus';
    $element['#attached']['drupalSettings']['disqus'] = $disqus;
    return $element;
  }
}Members
| Name   | Modifiers | Type | Description | Overrides | 
|---|---|---|---|---|
| DependencySerializationTrait:: | protected | property | An array of entity type IDs keyed by the property name of their storages. | |
| DependencySerializationTrait:: | protected | property | An array of service IDs keyed by property name used for serialization. | |
| DependencySerializationTrait:: | public | function | 1 | |
| DependencySerializationTrait:: | public | function | 2 | |
| Disqus:: | public static | function | Post render function of the Disqus element to inject the Disqus JavaScript. | |
| Disqus:: | public static | function | Pre_render callback to generate a placeholder. | |
| Disqus:: | public | function | Returns the element properties for this element. Overrides ElementInterface:: | |
| MessengerTrait:: | protected | property | The messenger. | 29 | 
| MessengerTrait:: | public | function | Gets the messenger. | 29 | 
| MessengerTrait:: | public | function | Sets the messenger. | |
| PluginBase:: | protected | property | Configuration information passed into the plugin. | 1 | 
| PluginBase:: | protected | property | The plugin implementation definition. | 1 | 
| PluginBase:: | protected | property | The plugin_id. | |
| PluginBase:: | constant | A string which is used to separate base plugin IDs from the derivative ID. | ||
| PluginBase:: | public | function | Gets the base_plugin_id of the plugin instance. Overrides DerivativeInspectionInterface:: | |
| PluginBase:: | public | function | Gets the derivative_id of the plugin instance. Overrides DerivativeInspectionInterface:: | |
| PluginBase:: | public | function | Gets the definition of the plugin implementation. Overrides PluginInspectionInterface:: | 3 | 
| PluginBase:: | public | function | Gets the plugin_id of the plugin instance. Overrides PluginInspectionInterface:: | |
| PluginBase:: | public | function | Determines if the plugin is configurable. | |
| PluginBase:: | public | function | Constructs a \Drupal\Component\Plugin\PluginBase object. | 92 | 
| RenderElement:: | public static | function | Adds Ajax information about an element to communicate with JavaScript. | |
| RenderElement:: | public static | function | Adds members of this group as actual elements for rendering. | |
| RenderElement:: | public static | function | Form element processing handler for the #ajax form property. | 1 | 
| RenderElement:: | public static | function | Arranges elements into groups. | |
| RenderElement:: | public static | function | Sets a form element's class attribute. Overrides ElementInterface:: | |
| StringTranslationTrait:: | protected | property | The string translation service. | 1 | 
| StringTranslationTrait:: | protected | function | Formats a string containing a count of items. | |
| StringTranslationTrait:: | protected | function | Returns the number of plurals supported by a given language. | |
| StringTranslationTrait:: | protected | function | Gets the string translation service. | |
| StringTranslationTrait:: | public | function | Sets the string translation service to use. | 2 | 
| StringTranslationTrait:: | protected | function | Translates a string to the current language or to a given language. | 
