fullpagejs-1.0.0-beta2/fullpagejs.module
fullpagejs.module
<?php
/**
* @file
* Contains fullpagejs.module.
*/
use Drupal\Core\Routing\RouteMatchInterface;
/**
* Implements hook_page_attachments().
*/
function fullpagejs_page_attachments(array &$attachments) {
// Check if is admin route.
$is_admin = \Drupal::service('router.admin_context')->isAdminRoute();
// Get current node.
$node = \Drupal::request()->attributes->get('node');
// Get settings from fullpagejs config.
$settings = \Drupal::config('fullpagejs.settings');
// Get all content types saved on fullpagejs config.
$content_types = $settings->get('drupalContentTypes');
if(!$is_admin && $node && $content_types) {
// Get node content type.
$node_type = strval($node->getType());
if($node_type === $content_types[$node_type]) {
$attachments['#attached']['library'][] = 'fullpagejs/fullpagejs';
$attachments['#attached']['drupalSettings']['fullpagejs']['licenseKey'] = $settings->get('licenseKey') ? $settings->get('licenseKey') : null;
$attachments['#attached']['drupalSettings']['fullpagejs']['fullPageSelector'] = $settings->get('fullPageSelector') ? $settings->get('fullPageSelector') : '#fullpage';
$attachments['#attached']['drupalSettings']['fullpagejs']['sectionSelector'] = $settings->get('sectionSelector') ? $settings->get('sectionSelector') : '.section';
$attachments['#attached']['drupalSettings']['fullpagejs']['slideSelector'] = $settings->get('slideSelector') ? $settings->get('slideSelector') : '.slide';
$attachments['#attached']['drupalSettings']['fullpagejs']['controlArrows'] = $settings->get('controlArrows') ? true : false;
$attachments['#attached']['drupalSettings']['fullpagejs']['verticalCentered'] = $settings->get('verticalCentered') ? true : false;
$attachments['#attached']['drupalSettings']['fullpagejs']['scrollingSpeed'] = $settings->get('scrollingSpeed') ? intval($settings->get('scrollingSpeed')) : 700;
switch($settings->get('sectionsColor')) {
case 'none':
case '':
$sectionsColor = 'none';
break;
default:
$sectionsColor = explode(', ', $settings->get('sectionsColor'));
}
$attachments['#attached']['drupalSettings']['fullpagejs']['sectionsColor'] = $sectionsColor;
$attachments['#attached']['drupalSettings']['fullpagejs']['anchors'] = $settings->get('anchors') ? explode(', ', $settings->get('anchors')) : [];
$attachments['#attached']['drupalSettings']['fullpagejs']['lockAnchors'] = $settings->get('lockAnchors') ? true : false;
$attachments['#attached']['drupalSettings']['fullpagejs']['easing'] = $settings->get('easing') ? $settings->get('easing') : 'easeInOutCubic';
$attachments['#attached']['drupalSettings']['fullpagejs']['easingcss3'] = $settings->get('easingcss3') ? $settings->get('easingcss3') : 'ease';
$attachments['#attached']['drupalSettings']['fullpagejs']['loopTop'] = $settings->get('loopTop') ? true : false;
$attachments['#attached']['drupalSettings']['fullpagejs']['loopBottom'] = $settings->get('loopBottom') ? true : false;
$attachments['#attached']['drupalSettings']['fullpagejs']['loopHorizontal'] = $settings->get('loopHorizontal') ? true : false;
$attachments['#attached']['drupalSettings']['fullpagejs']['css3'] = $settings->get('css3') ? true : false;
$attachments['#attached']['drupalSettings']['fullpagejs']['autoScrolling'] = $settings->get('autoScrolling') ? true : false;
$attachments['#attached']['drupalSettings']['fullpagejs']['fitToSection'] = $settings->get('fitToSection') ? true : false;
$attachments['#attached']['drupalSettings']['fullpagejs']['fitToSectionDelay'] = $settings->get('fitToSectionDelay') ? intval($settings->get('fitToSectionDelay')) : 1000;
$attachments['#attached']['drupalSettings']['fullpagejs']['scrollBar'] = $settings->get('scrollBar') ? true : false;
$attachments['#attached']['drupalSettings']['fullpagejs']['paddingTop'] = $settings->get('paddingTop') ? $settings->get('paddingTop') : 0;
$attachments['#attached']['drupalSettings']['fullpagejs']['paddingBottom'] = $settings->get('paddingBottom') ? $settings->get('paddingBottom') : 0;
$attachments['#attached']['drupalSettings']['fullpagejs']['fixedElements'] = $settings->get('fixedElements') ? $settings->get('fixedElements') : null;
$attachments['#attached']['drupalSettings']['fullpagejs']['normalScrollElements'] = $settings->get('normalScrollElements') ? $settings->get('normalScrollElements') : null;
switch($settings->get('bigSectionsDestination')) {
case 'top':
$bigSectionsDestination = 'top';
break;
case 'bottom':
$bigSectionsDestination = 'bottom';
break;
default:
$bigSectionsDestination = null;
}
$attachments['#attached']['drupalSettings']['fullpagejs']['bigSectionsDestination'] = $bigSectionsDestination;
$attachments['#attached']['drupalSettings']['fullpagejs']['keyboardScrolling'] = $settings->get('keyboardScrolling') ? true : false;
$attachments['#attached']['drupalSettings']['fullpagejs']['touchSensitivity'] = $settings->get('touchSensitivity') ? intval($settings->get('touchSensitivity')) : 5;
$attachments['#attached']['drupalSettings']['fullpagejs']['continuousVertical'] = $settings->get('continuousVertical') ? true : false;
$attachments['#attached']['drupalSettings']['fullpagejs']['animateAnchor'] = $settings->get('animateAnchor') ? true : false;
$attachments['#attached']['drupalSettings']['fullpagejs']['recordHistory'] = $settings->get('recordHistory') ? true : false;
$attachments['#attached']['drupalSettings']['fullpagejs']['menu'] = $settings->get('menu') ? $settings->get('menu') : false;
$attachments['#attached']['drupalSettings']['fullpagejs']['navigation'] = $settings->get('navigation') ? true : false;
$attachments['#attached']['drupalSettings']['fullpagejs']['navigationPosition'] = $settings->get('navigationPosition') ? $settings->get('navigationPosition') : 'none';
$attachments['#attached']['drupalSettings']['fullpagejs']['navigationTooltips'] = $settings->get('navigationTooltips') ? explode(', ', $settings->get('navigationTooltips')) : [];
$attachments['#attached']['drupalSettings']['fullpagejs']['showActiveTooltip'] = $settings->get('showActiveTooltip') ? true : false;
$attachments['#attached']['drupalSettings']['fullpagejs']['slidesNavigation'] = $settings->get('slidesNavigation') ? true : false;
$attachments['#attached']['drupalSettings']['fullpagejs']['slidesNavPosition'] = $settings->get('slidesNavPosition') ? $settings->get('slidesNavPosition') : 'bottom';
$attachments['#attached']['drupalSettings']['fullpagejs']['lazyLoading'] = $settings->get('lazyLoading') ? true : false;
switch($settings->get('cards')) {
case 'true':
$cards = true;
break;
case 'sections':
$cards = 'sections';
break;
case 'slides':
$cards = 'slides';
break;
default:
$cards = false;
}
$attachments['#attached']['drupalSettings']['fullpagejs']['cards'] = $cards;
$attachments['#attached']['drupalSettings']['fullpagejs']['cardsKey'] = $settings->get('cardsKey') ? $settings->get('cardsKey') : '';
$attachments['#attached']['drupalSettings']['fullpagejs']['cardsPerspective'] = $settings->get('cardsPerspective') ? intval($settings->get('cardsPerspective')) : 100;
$attachments['#attached']['drupalSettings']['fullpagejs']['cardsFadeContent'] = $settings->get('cardsFadeContent') ? true : false;
$attachments['#attached']['drupalSettings']['fullpagejs']['cardsFadeBackground'] = $settings->get('cardsFadeBackground') ? true : false;
$attachments['#attached']['drupalSettings']['fullpagejs']['parallax'] = $settings->get('parallax') ? true : false;
$attachments['#attached']['drupalSettings']['fullpagejs']['parallaxKey'] = $settings->get('parallaxKey') ? $settings->get('parallaxKey') : '';
$attachments['#attached']['drupalSettings']['fullpagejs']['parallaxType'] = $settings->get('parallaxType') ? $settings->get('parallaxType') : 'reveal';
$attachments['#attached']['drupalSettings']['fullpagejs']['parallaxPercentage'] = $settings->get('parallaxPercentage') ? intval($settings->get('parallaxPercentage')) : 62;
$attachments['#attached']['drupalSettings']['fullpagejs']['parallaxProperty'] = $settings->get('parallaxProperty') ? $settings->get('parallaxProperty') : 'translate';
$attachments['#attached']['drupalSettings']['fullpagejs']['scrollOverflow'] = $settings->get('scrollOverflow') ? true : false;
$attachments['#attached']['drupalSettings']['fullpagejs']['scrollOverflowReset'] = $settings->get('scrollOverflowReset') ? true : false;
$attachments['#attached']['drupalSettings']['fullpagejs']['scrollOverflowResetKey'] = $settings->get('scrollOverflowResetKey') ? $settings->get('scrollOverflowResetKey') : '';
switch($settings->get('dragAndMove')) {
case 'true':
$dragAndMove = true;
break;
case 'vertical':
$dragAndMove = 'vertical';
break;
case 'horizontal':
$dragAndMove = 'horizontal';
break;
case 'fingersonly':
$dragAndMove = 'fingersonly';
break;
case 'mouseonly':
$dragAndMove = 'mouseonly';
break;
default:
$dragAndMove = false;
}
$attachments['#attached']['drupalSettings']['fullpagejs']['dragAndMove'] = $dragAndMove;
$attachments['#attached']['drupalSettings']['fullpagejs']['dragAndMoveKey'] = $settings->get('dragAndMoveKey') ? $settings->get('dragAndMoveKey') : '';
$attachments['#attached']['drupalSettings']['fullpagejs']['offsetSections'] = $settings->get('offsetSections') ? true : false;
$attachments['#attached']['drupalSettings']['fullpagejs']['offsetSectionsKey'] = $settings->get('offsetSectionsKey') ? $settings->get('offsetSectionsKey') : '';
switch($settings->get('fadingEffect')) {
case 'true':
$fadingEffect = true;
break;
case 'sections':
$fadingEffect = 'sections';
break;
case 'slides':
$fadingEffect = 'slides';
break;
default:
$fadingEffect = false;
}
$attachments['#attached']['drupalSettings']['fullpagejs']['fadingEffect'] = $fadingEffect;
$attachments['#attached']['drupalSettings']['fullpagejs']['fadingEffectKey'] = $settings->get('fadingEffectKey') ? $settings->get('fadingEffectKey') : '';
$attachments['#attached']['drupalSettings']['fullpagejs']['responsiveWidth'] = $settings->get('responsiveWidth') ? intval($settings->get('responsiveWidth')) : 0;
$attachments['#attached']['drupalSettings']['fullpagejs']['responsiveHeight'] = $settings->get('responsiveHeight') ? intval($settings->get('responsiveHeight')) : 0;
$attachments['#attached']['drupalSettings']['fullpagejs']['responsiveSlides'] = $settings->get('responsiveSlides') ? true : false;
$attachments['#attached']['drupalSettings']['fullpagejs']['responsiveSlidesKey'] = $settings->get('responsiveSlidesKey') ? $settings->get('responsiveSlidesKey') : '';
$attachments['#attached']['drupalSettings']['fullpagejs']['continuousHorizontal'] = $settings->get('continuousHorizontal') ? true : false;
$attachments['#attached']['drupalSettings']['fullpagejs']['continuousHorizontalKey'] = $settings->get('continuousHorizontalKey') ? $settings->get('continuousHorizontalKey') : '';
switch($settings->get('interlockedSlides')) {
case 'true':
$interlockedSlides = true;
break;
case 'false':
$interlockedSlides = false;
break;
default:
$interlockedSlides = array_map('intval', explode(',', $settings->get('interlockedSlides')));
}
$attachments['#attached']['drupalSettings']['fullpagejs']['interlockedSlides'] = $interlockedSlides;
$attachments['#attached']['drupalSettings']['fullpagejs']['interlockedSlidesKey'] = $settings->get('interlockedSlidesKey') ? $settings->get('interlockedSlidesKey') : '';
$attachments['#attached']['drupalSettings']['fullpagejs']['scrollHorizontally'] = $settings->get('scrollHorizontally') ? true : false;
$attachments['#attached']['drupalSettings']['fullpagejs']['scrollHorizontallyKey'] = $settings->get('scrollHorizontallyKey') ? $settings->get('scrollHorizontallyKey') : '';
$attachments['#attached']['drupalSettings']['fullpagejs']['resetSliders'] = $settings->get('resetSliders') ? true : false;
$attachments['#attached']['drupalSettings']['fullpagejs']['resetSlidersKey'] = $settings->get('resetSlidersKey') ? $settings->get('resetSlidersKey') : '';
}
}
}
/**
* Implements hook_help().
*/
function fullpagejs_help($route_name, RouteMatchInterface $route_match) {
switch ($route_name) {
// Main module help for the fullpagejs module.
case 'help.page.fullpagejs':
$output = '';
$output .= '<h3>' . t('About') . '</h3>';
$output .= '<p>' . t('This module implements fullPage.js JavaScript plugin:') . ' <a href="https://github.com/alvarotrigo/fullPage.js/" target="_blank">https://github.com/alvarotrigo/fullPage.js/</a></p>';
$output .= '<p>' . t('See the README.txt file in the module folder to know how to add the fullPage.js plugins extensions in your project.') . '</p>';
return $output;
default:
}
}
