Same name and namespace in other branches
  1. 8.x-1.x src/ColorboxAttachment.php \Drupal\colorbox\ColorboxAttachment::attach() 1 comment

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";
    }
}