You are here

public function ColorboxAttachment::attach in Colorbox 8

Attach information to the page array.

Parameters

array $element: The page array.

Overrides ElementAttachmentInterface::attach

File

src/ColorboxAttachment.php, line 57

Class

ColorboxAttachment
An implementation of PageAttachmentInterface for the colorbox library.

Namespace

Drupal\colorbox

Code

public function attach(array &$page) {
  if ($this->settings
    ->get('custom.activate')) {
    $js_settings = [
      'transition' => $this->settings
        ->get('custom.transition_type'),
      'speed' => $this->settings
        ->get('custom.transition_speed'),
      'opacity' => $this->settings
        ->get('custom.opacity'),
      'slideshow' => $this->settings
        ->get('custom.slideshow.slideshow') ? TRUE : FALSE,
      'slideshowAuto' => $this->settings
        ->get('custom.slideshow.auto') ? TRUE : FALSE,
      'slideshowSpeed' => $this->settings
        ->get('custom.slideshow.speed'),
      'slideshowStart' => $this->settings
        ->get('custom.slideshow.text_start'),
      'slideshowStop' => $this->settings
        ->get('custom.slideshow.text_stop'),
      'current' => $this->settings
        ->get('custom.text_current'),
      'previous' => $this->settings
        ->get('custom.text_previous'),
      'next' => $this->settings
        ->get('custom.text_next'),
      'close' => $this->settings
        ->get('custom.text_close'),
      'overlayClose' => $this->settings
        ->get('custom.overlayclose') ? TRUE : FALSE,
      'returnFocus' => $this->settings
        ->get('custom.returnfocus') ? TRUE : FALSE,
      'maxWidth' => $this->settings
        ->get('custom.maxwidth'),
      'maxHeight' => $this->settings
        ->get('custom.maxheight'),
      'initialWidth' => $this->settings
        ->get('custom.initialwidth'),
      'initialHeight' => $this->settings
        ->get('custom.initialheight'),
      'fixed' => $this->settings
        ->get('custom.fixed') ? TRUE : FALSE,
      'scrolling' => $this->settings
        ->get('custom.scrolling') ? TRUE : FALSE,
      'mobiledetect' => $this->settings
        ->get('advanced.mobile_detect') ? TRUE : FALSE,
      'mobiledevicewidth' => $this->settings
        ->get('advanced.mobile_device_width'),
    ];
  }
  else {
    $js_settings = [
      'opacity' => '0.85',
      'current' => $this
        ->t('{current} of {total}'),
      'previous' => $this
        ->t('« Prev'),
      'next' => $this
        ->t('Next »'),
      'close' => $this
        ->t('Close'),
      'maxWidth' => '98%',
      'maxHeight' => '98%',
      'fixed' => TRUE,
      'mobiledetect' => $this->settings
        ->get('advanced.mobile_detect') ? TRUE : FALSE,
      'mobiledevicewidth' => $this->settings
        ->get('advanced.mobile_device_width'),
    ];
  }
  $style = $this->settings
    ->get('custom.style');

  // Give other modules the possibility to override Colorbox
  // settings and style.
  $this->moduleHandler
    ->alter('colorbox_settings', $js_settings, $style);

  // Add colorbox js settings.
  $page['#attached']['drupalSettings']['colorbox'] = $js_settings;

  // Add and initialise the Colorbox plugin.
  if ($this->settings
    ->get('advanced.compression_type') == 'minified') {
    $page['#attached']['library'][] = 'colorbox/colorbox';
  }
  else {
    $page['#attached']['library'][] = 'colorbox/colorbox-dev';
  }

  // Add JS and CSS based on selected style.
  if ($style != 'none') {
    $page['#attached']['library'][] = "colorbox/{$style}";
  }
  else {
    $page['#attached']['library'][] = "colorbox/init";
  }
}