| 
<?php/**
 * Implements AMP_LINK qtag.
 *
 * Render a link to the amp version of the node.
 *
 * @param Environment $env
 *   The Environment.
 *
 * @param string $target
 *   The qtag's target.
 *
 * @param array $attributes
 *   The qtag's attributes.
 *
 * @return string
 *   The rendered qtag.
 */
 function qtag_AMP_LINK($env, $target, $attributes) {
 $node = NodeFactory::current($env);
 return '<link rel="amphtml" href="' . ($env->getBaseUrl() . '/amp/' . $node->getName()) . '">';
 
 }
 
 
 /**
 * Implements CANONICAL_LINK qtag.
 *
 * Render a link to the amp version of the node.
 *
 * @param Environment $env
 *   The Environment.
 *
 * @param string $target
 *   The qtag's target.
 *
 * @param array $attributes
 *   The qtag's attributes.
 *
 * @return string
 *   The rendered qtag.
 */
 function qtag_CANONICAL_LINK($env, $target, $attributes) {
 $node = NodeFactory::current($env);
 return '<link rel="canonical" href="' . ($env->getBaseUrl() . '/' . $node->getName()) . '">';
 
 }
 
 
 /**
 * Implements AMP_CAROUSEL qtag.
 *
 * Render amp version of the carousel.
 *
 * @param Environment $env
 *   The Environment.
 *
 * @param string $target
 *   The qtag's target.
 *
 * @param array $attributes
 *   The qtag's attributes.
 *
 * @return string
 *   The rendered qtag.
 */
 function qtag_AMP_CAROUSEL($env, $target, $attributes) {
 /** @var Page $page */
 $page = $env->getData('page');
 
 $module = isset($attributes['module']) ? $attributes['module'] : 'amp';
 if (empty($attributes['carousel-type'])) {
 $attributes['carousel-type'] = CAROUSEL_DIRS;
 }
 
 /** @var ListObject $list */
 switch ($attributes['carousel-type']) {
 
 case CAROUSEL_DIRS:
 $tpl = isset($attributes['tpl']) ? $attributes['tpl'] : 'amp-carousel';
 $list = new DirList($env, $target, $tpl, array('clean' => true, 'class' => 'amp-carousel') + $attributes, $module);
 break;
 
 case CAROUSEL_FILES:
 $tpl = isset($attributes['tpl']) ? $attributes['tpl'] : 'amp-file-carousel';
 $list = new FileList($env, $target, $tpl, array('clean' => true, 'class' => 'amp-carousel') + $attributes, $module);
 break;
 
 default:
 break;
 }
 
 $carousel_attributes_defaults = array(
 // TODO: Extend to all options.
 'width' => '400',
 'height' => '225', // 400:225 = 16:9
 'layout' => 'responsive', // responsive / fixed-height
 'type' => 'slides',
 'autoplay' => 'false',
 'delay' => '3000', // used when autoplay is active
 );
 
 $carousel_attributes = array();
 foreach ($carousel_attributes_defaults as $k => $attr) {
 $carousel_attributes[$k] = (isset($attributes[$k]) ? $attributes[$k] : $attr);
 }
 
 $rand_class = rand(0, 99999999);
 $html = '<amp-carousel class="amp-' . $rand_class . '"';
 $html .= ' width="' . $carousel_attributes['width'] . '"';
 $html .= ' height="' . $carousel_attributes['height'] . '"';
 $html .= ' layout="' . $carousel_attributes['layout'] . '"';
 $html .= ' type="' . $carousel_attributes['type'] . '"';
 $html .= ($carousel_attributes['autoplay'] == 'true' ? ' autoplay' : '');
 $html .= ' delay="' . $carousel_attributes['delay'] . '"';
 $html .= '>' . $list->render() . '</amp-carousel>';
 
 return $html;
 
 }
 |