You are here

public function SharethisWidgetBlock::build in ShareThis 8.2

Builds and returns the renderable array for this block plugin.

If a block should not be rendered because it has no content, then this method must also ensure to return no content: it must then only return an empty array, or an empty array with #cache set (with cacheability metadata indicating the circumstances for it being empty).

Return value

array A renderable array representing the content of the block.

Overrides BlockPluginInterface::build

See also

\Drupal\block\BlockViewBuilder

File

src/Plugin/Block/SharethisWidgetBlock.php, line 174

Class

SharethisWidgetBlock
Provides an 'Share this Widget' block.

Namespace

Drupal\sharethis\Plugin\Block

Code

public function build() {
  if ($this->sharethisSettings
    ->get('location') === 'block') {
    $st_js = $this->sharethisManager
      ->sharethisIncludeJs();
    if ($this->configuration['sharethis_path'] == 'external') {
      $mpath = $this->configuration['sharethis_path_external'];
    }
    else {
      $current_path = Url::fromRoute('<current>')
        ->toString();
      $path = $this->configuration['sharethis_path'] == 'global' ? '<front>' : $current_path;
      global $base_url;
      $path_obj = Url::fromUri($base_url . $path, [
        'absolute' => TRUE,
      ]);
      $mpath = $path_obj
        ->toString();
    }
    $request = $this->requestStack
      ->getCurrentRequest();
    $title = $this->titleResolver
      ->getTitle($request, $this->routeMatch
      ->getRouteObject());
    $title = is_object($title) ? $title
      ->getUntranslatedString() : $title;
    $mtitle = $this->configuration['sharethis_path'] == 'current' ? $title : $this->configFactory
      ->get('system.site')
      ->get('name');
    $markup = $this->sharethisManager
      ->widgetContents([
      'm_path' => $mpath,
      'm_title' => $mtitle,
    ]);
    return [
      '#theme' => 'sharethis_block',
      '#content' => $markup,
      '#attached' => [
        'library' => [
          'sharethis/sharethispickerexternalbuttonsws',
          'sharethis/sharethispickerexternalbuttons',
          'sharethis/sharethis',
        ],
        'drupalSettings' => [
          'sharethis' => $st_js,
        ],
      ],
    ];
  }
}