You are here

class SocialCommentViewBuilder in Open Social 10.0.x

Same name and namespace in other branches
  1. 8.9 modules/social_features/social_comment/src/SocialCommentViewBuilder.php \Drupal\social_comment\SocialCommentViewBuilder
  2. 8 modules/social_features/social_comment/src/SocialCommentViewBuilder.php \Drupal\social_comment\SocialCommentViewBuilder
  3. 8.2 modules/social_features/social_comment/src/SocialCommentViewBuilder.php \Drupal\social_comment\SocialCommentViewBuilder
  4. 8.3 modules/social_features/social_comment/src/SocialCommentViewBuilder.php \Drupal\social_comment\SocialCommentViewBuilder
  5. 8.4 modules/social_features/social_comment/src/SocialCommentViewBuilder.php \Drupal\social_comment\SocialCommentViewBuilder
  6. 8.5 modules/social_features/social_comment/src/SocialCommentViewBuilder.php \Drupal\social_comment\SocialCommentViewBuilder
  7. 8.6 modules/social_features/social_comment/src/SocialCommentViewBuilder.php \Drupal\social_comment\SocialCommentViewBuilder
  8. 8.7 modules/social_features/social_comment/src/SocialCommentViewBuilder.php \Drupal\social_comment\SocialCommentViewBuilder
  9. 8.8 modules/social_features/social_comment/src/SocialCommentViewBuilder.php \Drupal\social_comment\SocialCommentViewBuilder
  10. 10.3.x modules/social_features/social_comment/src/SocialCommentViewBuilder.php \Drupal\social_comment\SocialCommentViewBuilder
  11. 10.1.x modules/social_features/social_comment/src/SocialCommentViewBuilder.php \Drupal\social_comment\SocialCommentViewBuilder
  12. 10.2.x modules/social_features/social_comment/src/SocialCommentViewBuilder.php \Drupal\social_comment\SocialCommentViewBuilder

View builder handler for social comments.

Hierarchy

Expanded class hierarchy of SocialCommentViewBuilder

2 files declare their use of SocialCommentViewBuilder
social_ajax_comments.module in modules/custom/social_ajax_comments/social_ajax_comments.module
The Social AJAX comments module.
social_comment.module in modules/social_features/social_comment/social_comment.module
The Social comment module.

File

modules/social_features/social_comment/src/SocialCommentViewBuilder.php, line 12

Namespace

Drupal\social_comment
View source
class SocialCommentViewBuilder extends CommentViewBuilder {

  /**
   * The pager tag.
   */
  const PAGER_TAG = 'comments';

  /**
   * {@inheritdoc}
   */
  protected function alterBuild(array &$build, EntityInterface $comment, EntityViewDisplayInterface $display, $view_mode) {
    parent::alterBuild($build, $comment, $display, $view_mode);

    /** @var \Drupal\comment\CommentInterface $comment */
    if (empty($comment->in_preview)) {

      // Need to display reply comments without indentation in activity items.
      $no_indent_view_modes = [
        'activity',
        'activity_comment',
      ];
      if (in_array($view_mode, $no_indent_view_modes)) {
        $build['#prefix'] = $build['#suffix'] = '';
        return;
      }
      $prefix = '';

      // Add indentation div or close open divs as needed.
      if ($build['#comment_threaded']) {
        if ($build['#comment_indent'] <= 0) {
          $prefix .= str_repeat('</div>', abs($build['#comment_indent']));
        }

        // We are in a thread of comments.
        if ($build['#comment_indent'] > 0) {
          $div_class = 'comments';

          // If the parent comment is unpublished, hide the thread for users
          // who may not see unpublished comments.
          if (!$comment
            ->getParentComment()
            ->isPublished() && !$this->currentUser
            ->hasPermission('administer comments')) {
            $div_class .= ' hidden';
          }
          $prefix .= PHP_EOL . '<div class="' . $div_class . '">';
        }
      }

      // Add anchor for each comment.
      $prefix .= "<a id=\"comment-{$comment->id()}\"></a>\n";
      $build['#prefix'] = $prefix;

      // Close all open divs.
      if (!empty($build['#comment_indent_final'])) {
        $build['#suffix'] = str_repeat('</div>', $build['#comment_indent_final']);
      }
    }
  }

  /**
   * {@inheritdoc}
   */
  public function buildMultiple(array $build_list) {
    $build_list = parent::buildMultiple($build_list);
    $tags = $build_list['pager']['#tags'] ?? [];
    $tags[] = self::PAGER_TAG;
    $build_list['pager']['#tags'] = $tags;
    return $build_list;
  }

}

Members

Namesort descending Modifiers Type Description Overrides
CommentViewBuilder::$currentUser protected property The current user.
CommentViewBuilder::$entityTypeManager protected property The entity type manager.
CommentViewBuilder::buildComponents public function In addition to modifying the content key on entities, this implementation will also set the comment entity key which all comments carry. Overrides EntityViewBuilder::buildComponents
CommentViewBuilder::createInstance public static function Instantiates a new instance of this entity handler. Overrides EntityViewBuilder::createInstance
CommentViewBuilder::getBuildDefaults protected function Provides entity-specific defaults to the build process. Overrides EntityViewBuilder::getBuildDefaults
CommentViewBuilder::__construct public function Constructs a new CommentViewBuilder. Overrides EntityViewBuilder::__construct
DependencySerializationTrait::$_entityStorages protected property
DependencySerializationTrait::$_serviceIds protected property
DependencySerializationTrait::__sleep public function 2
DependencySerializationTrait::__wakeup public function 2
EntityHandlerBase::$moduleHandler protected property The module handler to invoke hooks on. 5
EntityHandlerBase::moduleHandler protected function Gets the module handler. 5
EntityHandlerBase::setModuleHandler public function Sets the module handler for this handler.
EntityViewBuilder::$cacheBin protected property The cache bin used to store the render cache.
EntityViewBuilder::$entityDisplayRepository protected property The entity display repository.
EntityViewBuilder::$entityRepository protected property The entity repository service.
EntityViewBuilder::$entityType protected property Information about the entity type.
EntityViewBuilder::$entityTypeId protected property The type of entities for which this view builder is instantiated.
EntityViewBuilder::$languageManager protected property The language manager.
EntityViewBuilder::$singleFieldDisplays protected property The EntityViewDisplay objects created for individual field rendering.
EntityViewBuilder::$themeRegistry protected property The theme registry.
EntityViewBuilder::addContextualLinks protected function Add contextual links.
EntityViewBuilder::build public function Builds an entity's view; augments entity defaults.
EntityViewBuilder::getCacheTags public function The cache tag associated with this entity view builder. Overrides EntityViewBuilderInterface::getCacheTags
EntityViewBuilder::getSingleFieldDisplay protected function Gets an EntityViewDisplay for rendering an individual field.
EntityViewBuilder::isViewModeCacheable protected function Determines whether the view mode is cacheable.
EntityViewBuilder::resetCache public function Resets the entity render cache. Overrides EntityViewBuilderInterface::resetCache
EntityViewBuilder::trustedCallbacks public static function Lists the trusted callbacks provided by the implementing class. Overrides TrustedCallbackInterface::trustedCallbacks 2
EntityViewBuilder::view public function Builds the render array for the provided entity. Overrides EntityViewBuilderInterface::view 4
EntityViewBuilder::viewField public function Builds a renderable array for the value of a single field in an entity. Overrides EntityViewBuilderInterface::viewField
EntityViewBuilder::viewFieldItem public function Builds a renderable array for a single field item. Overrides EntityViewBuilderInterface::viewFieldItem
EntityViewBuilder::viewMultiple public function Builds the render array for the provided entities. Overrides EntityViewBuilderInterface::viewMultiple 4
SocialCommentViewBuilder::alterBuild protected function Specific per-entity building. Overrides CommentViewBuilder::alterBuild
SocialCommentViewBuilder::buildMultiple public function Builds multiple entities' views; augments entity defaults. Overrides EntityViewBuilder::buildMultiple
SocialCommentViewBuilder::PAGER_TAG constant The pager tag.
StringTranslationTrait::$stringTranslation protected property The string translation service. 4
StringTranslationTrait::formatPlural protected function Formats a string containing a count of items.
StringTranslationTrait::getNumberOfPlurals protected function Returns the number of plurals supported by a given language.
StringTranslationTrait::getStringTranslation protected function Gets the string translation service.
StringTranslationTrait::setStringTranslation public function Sets the string translation service to use. 2
StringTranslationTrait::t protected function Translates a string to the current language or to a given language.
TrustedCallbackInterface::THROW_EXCEPTION constant Untrusted callbacks throw exceptions.
TrustedCallbackInterface::TRIGGER_SILENCED_DEPRECATION constant Untrusted callbacks trigger silenced E_USER_DEPRECATION errors.
TrustedCallbackInterface::TRIGGER_WARNING constant Untrusted callbacks trigger E_USER_WARNING errors.