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. |