From 92a3fea70ec1117117c3b8fd4e73e40cf094f95c Mon Sep 17 00:00:00 2001 From: "vincent@cubedesigners.com" Date: Wed, 27 Jun 2018 17:02:51 +0000 Subject: [PATCH] wip #2119 @1.5 --- .../html5/diaporama/class.ws.html5.links.php | 585 +++++++++++------- 1 file changed, 371 insertions(+), 214 deletions(-) diff --git a/inc/ws/Util/html5/diaporama/class.ws.html5.links.php b/inc/ws/Util/html5/diaporama/class.ws.html5.links.php index 687618b72..5e07a2f25 100644 --- a/inc/ws/Util/html5/diaporama/class.ws.html5.links.php +++ b/inc/ws/Util/html5/diaporama/class.ws.html5.links.php @@ -1,6 +1,7 @@ _init = $init; foreach ($init as $k => $v) { if ($k == 'extra' && CubeIT_Util_Json::isJson($v)) { @@ -200,11 +204,13 @@ class wsHTML5Link { $this->compiler = $compiler; } - public function getDefaultTooltip() { + public function getDefaultTooltip() + { return false; } - public function getTooltip() { + public function getTooltip() + { if (is_null($this->infobulle) || !$this->infobulle) { if ($this->getDefaultTooltip() === false) { return; @@ -214,11 +220,13 @@ class wsHTML5Link { return $this->infobulle; } - public function getHTMLContainer() { + public function getHTMLContainer() + { return '
getAdditionnalContent() . '>' . $this->getHTMLContent() . '
'; } - public function getHTMLContainerClass() { + public function getHTMLContainerClass() + { $res = trim('link ' . $this->class); if (intval($this->page) % 2 == 1) { $res .= ' odd'; @@ -237,23 +245,28 @@ class wsHTML5Link { } - public function getClasses() { + public function getClasses() + { return array(); } - public function copyExternalFile($file, $video = false) { + public function copyExternalFile($file, $video = false) + { $this->compiler->copyLinkFile($file, 'data/links/', $video); } - public function copyExternalDir($dir, $dest = 'data/links') { + public function copyExternalDir($dir, $dest = 'data/links') + { $this->compiler->copyLinkDir($dir, $dest); } - public function unzipFile($file, $moveAssets = false) { + public function unzipFile($file, $moveAssets = false) + { return $this->compiler->unzipFile($file, $moveAssets); } - public function getCssScale() { + public function getCssScale() + { if (is_int($this->page)) { return $this->compiler->getCssScale(); } else { @@ -261,12 +274,14 @@ class wsHTML5Link { } } - public function getCSSZIndex() { + public function getCSSZIndex() + { $zindex = (($this->zindex + 1) * 1000) - min(999, round(($this->width * $this->height) / 300)); return 'z-index:' . $zindex . ';'; } - public function getCSSContainer() { + public function getCSSContainer() + { if (!($this instanceof contentLink) && intval($this->page) % 2 == 1) { $this->page--; $this->left += $this->compiler->width; @@ -291,15 +306,18 @@ class wsHTML5Link { return $css; } - public function getCSS() { + public function getCSS() + { return ''; } - public function keep() { + public function keep() + { return false; } - public static function getUniversalLocation($loc, $css = false) { + public static function getUniversalLocation($loc, $css = false) + { $datas = parse_url($loc); if (isset($datas['scheme']) && !is_null($datas['scheme']) || strpos($loc, '#') === 0) { @@ -315,9 +333,11 @@ class wsHTML5Link { } -class normalLink extends wsHTML5Link { +class normalLink extends wsHTML5Link +{ - public function getHTMLContent() { + public function getHTMLContent() + { $class = $this->getClasses(); if ($this->display_area) { $class[] = 'displayArea'; @@ -334,45 +354,55 @@ class normalLink extends wsHTML5Link { return 'getAdditionnalContent() . $this->getTrack() . '>'; } - public function getTrack() { + public function getTrack() + { return ''; } - public function getURL() { + public function getURL() + { return '#'; } - public function getTarget() { + public function getTarget() + { return '_self'; } } -class tooltipLink extends normalLink { - public function getClasses() { +class tooltipLink extends normalLink +{ + public function getClasses() + { return array_merge(array('lazy'), parent::getClasses()); } - public function getAdditionnalContent() { + public function getAdditionnalContent() + { $res = parent::getAdditionnalContent(); $res .= ' data-tooltip-maxwidth="' . $this->compiler->book->parametres->linkTooltipMaxWidth . '" '; $res .= ' data-tooltip-touch="1" '; return $res; } - public function getURL() { + public function getURL() + { return '#'; } } -class htmlMultimediaImage extends wsHTML5Link { +class htmlMultimediaImage extends wsHTML5Link +{ public $zindex = 2; - public function getHTMLContainerClass() { + public function getHTMLContainerClass() + { return parent::getHTMLContainerClass() . ' multimedia notinteractive'; } - public function getHTMLContent() { + public function getHTMLContent() + { $w = $this->width; $h = $this->height; $this->copyExternalFile($this->alternative); @@ -382,9 +412,11 @@ class htmlMultimediaImage extends wsHTML5Link { } -class htmlMultimediaPopupLink extends htmlMultimediaPopupImage { +class htmlMultimediaPopupLink extends htmlMultimediaPopupImage +{ - public function getAdditionnalContent() { + public function getAdditionnalContent() + { $i = $this->_init; $i['inline'] = true; $i['in_popup'] = true; @@ -398,16 +430,19 @@ class htmlMultimediaPopupLink extends htmlMultimediaPopupImage { } -class htmlMultimediaPopupImage extends normalLink { +class htmlMultimediaPopupImage extends normalLink +{ - public function getURL() { + public function getURL() + { $this->copyExternalFile($this->alternative); $read = ($this->read_mode) ? 'r_' : ''; return '#/multimedia/' . $read . md5($this->alternative); } - public function getAdditionnalContent() { + public function getAdditionnalContent() + { $res = parent::getAdditionnalContent(); $dim = getimagesize($this->wdir . '/' . $this->alternative); @@ -419,103 +454,127 @@ class htmlMultimediaPopupImage extends normalLink { return $res . ' ' . $read . ' data-multimedia="' . rawurlencode($markup) . '" '; } - public function keep() { + public function keep() + { return true; } } -class contentLink extends wsHTML5Link { +class contentLink extends wsHTML5Link +{ public $zindex = 1; - public function getHTMLContainerClass() { + public function getHTMLContainerClass() + { return parent::getHTMLContainerClass() . ' contentLink'; } } -class eventOverlayLink extends wsHTML5Link { +class eventOverlayLink extends wsHTML5Link +{ public $zindex = 3; - public function getHTMLContainerClass() { + public function getHTMLContainerClass() + { return parent::getHTMLContainerClass() . ' eventOverlayLink'; } - public function getHTMLContent() { + public function getHTMLContent() + { return '
'; } } -class webLink extends normalLink { - public function getURL() { +class webLink extends normalLink +{ + public function getURL() + { $res = str_replace('"', '\'', wsHTML5Link::getUniversalLocation($this->to)); return $res; } - public function getTarget() { + public function getTarget() + { if (strpos($this->getURL(), 'javascript:') === 0) { return '_self'; } return $this->target; } - public function getTrack() { + public function getTrack() + { return ' data-track="' . $this->getURL() . '"'; } - public function getCSS() { + public function getCSS() + { } - public function getDefaultTooltip() { + public function getDefaultTooltip() + { return 'click to open the link'; } } -class mailLink extends normalLink { +class mailLink extends normalLink +{ - public function getURL() { + public function getURL() + { return 'mailto:' . $this->to; } - public function getTrack() { + public function getTrack() + { return ' data-track="' . $this->to . '"'; } - public function getTarget() { + public function getTarget() + { return '_self'; } - public function getDefaultTooltip() { + public function getDefaultTooltip() + { return 'click to send an e-mail'; } } -class phoneLink extends mailLink { +class phoneLink extends mailLink +{ - public function getURL() { + public function getURL() + { return 'tel:' . $this->to; } - public function getTarget() { + public function getTarget() + { return '_blank'; } - public function getDefaultTooltip() { + public function getDefaultTooltip() + { return 'click to call this number'; } } -class internalLink extends normalLink { +class internalLink extends normalLink +{ - public function getURL() { + public function getURL() + { return '#/page/' . $this->getPage(); } - public function getPage() { + public function getPage() + { if ($this->numerotation == 'physical') { return $this->to; } else { @@ -523,13 +582,15 @@ class internalLink extends normalLink { } } - public function getDefaultTooltip() { + public function getDefaultTooltip() + { return 'go to page'; } } -class videoLink extends wsHTML5Link { +class videoLink extends wsHTML5Link +{ public $zindex = 2; public static function addVideoJS($compiler) @@ -537,11 +598,13 @@ class videoLink extends wsHTML5Link { $compiler->addVideoJs(); } - public function getClasses() { + public function getClasses() + { return array_merge(['videoLink'], parent::getClasses()); } - public function getHTMLContent() { + public function getHTMLContent() + { $this->copyExternalFile($this->to, true); @@ -556,7 +619,8 @@ class videoLink extends wsHTML5Link { return $this->makeVideoTag($this, $w, $h, $this->compiler); } - public static function makeVideoTag($linkDatas, $w = null, $h = null, $compiler = null) { + public static function makeVideoTag($linkDatas, $w = null, $h = null, $compiler = null) + { static::addVideoJS($compiler); $attributes = static::getVideoAttributes($linkDatas, $w, $h, $compiler); @@ -570,7 +634,8 @@ class videoLink extends wsHTML5Link { return $res; } - public static function getVideoAttributes($data, $w = null, $h = null, $compiler = null) { + public static function getVideoAttributes($data, $w = null, $h = null, $compiler = null) + { $file = $data->to; $e = explode('.', $file); @@ -601,9 +666,11 @@ class videoLink extends wsHTML5Link { } -class videoPopupLink extends normalLink { +class videoPopupLink extends normalLink +{ - public function getURL() { + public function getURL() + { $this->copyExternalFile($this->to, true); $file = $this->to; $e = explode('.', $file); @@ -613,24 +680,29 @@ class videoPopupLink extends normalLink { return '#/video/' . $basename; } - public function getAdditionnalContent() { + public function getAdditionnalContent() + { $this->video_auto_start = true; // Videos should always autoplay return ' data-video="' . rawurlencode(videoLink::makeVideoTag($this, null, null, $this->compiler)) . '" '; } - public function keep() { + public function keep() + { return true; } - public function getDefaultTooltip() { + public function getDefaultTooltip() + { return 'click to play the video'; } } -class audioPopupLink extends normalLink { +class audioPopupLink extends normalLink +{ - public function getURL() { + public function getURL() + { $this->copyExternalFile($this->to, false); $file = $this->to; $e = explode('.', $file); @@ -640,23 +712,28 @@ class audioPopupLink extends normalLink { return '#/audio/' . $basename; } - public function getAdditionnalContent() { + public function getAdditionnalContent() + { return ' data-audio="' . rawurlencode(audioLink::makeAudioTag($this, null, null, $this->compiler)) . '" '; } - public function keep() { + public function keep() + { return true; } - public function getDefaultTooltip() { + public function getDefaultTooltip() + { return 'click to play the audio'; } } -class webVideoLink extends videoLink { +class webVideoLink extends videoLink +{ - public static function getVideoAttributes($data, $w = null, $h = null, $compiler = null) { + public static function getVideoAttributes($data, $w = null, $h = null, $compiler = null) + { $attributes = parent::getVideoAttributes($data, $w, $h, $compiler); // Since the admin interface doesn't offer options for setting controls or sound, we will set some defaults here @@ -668,7 +745,8 @@ class webVideoLink extends videoLink { return $attributes; } - public static function getVideoSetup($data, $compiler) { + public static function getVideoSetup($data, $compiler) + { static::addVideoJS($compiler); // Ensure videoJS core is included first @@ -721,7 +799,8 @@ class webVideoLink extends videoLink { } - public function getHTMLContent() { + public function getHTMLContent() + { if ($this->video_service !== 0) { return $this->getEmbed(); @@ -733,11 +812,13 @@ class webVideoLink extends videoLink { return $this->makeVideoTag($this, $w, $h, $this->compiler); } - public function getEmbed() { + public function getEmbed() + { return ''; } - public function getEmbedURL() { + public function getEmbedURL() + { if ($this->video_service == 0) { $url = 'https://www.youtube.com/embed/' . $this->to . '?html5=1'; } elseif ($this->video_service == 1) { @@ -753,14 +834,17 @@ class webVideoLink extends videoLink { } -class actionLink extends internalLink { +class actionLink extends internalLink +{ protected $_share = array('facebook', 'twitter', 'googleplus', 'linkedin', 'viadeo'); - public function getURL() { + public function getURL() + { return '#'; } - public function getClasses() { + public function getClasses() + { if (in_array($this->to, $this->_share)) { return array_merge(array('share'), parent::getClasses()); } else { @@ -768,7 +852,8 @@ class actionLink extends internalLink { } } - public function getAdditionnalContent() { + public function getAdditionnalContent() + { $res = parent::getAdditionnalContent(); if (is_object($this->extra) || is_array($this->extra)) { $extra = json_encode($this->extra); @@ -788,7 +873,8 @@ class actionLink extends internalLink { return $res; } - public function getDefaultTooltip() { + public function getDefaultTooltip() + { return false; } @@ -814,24 +900,28 @@ class cartLink extends normalLink $res .= 'data-cart-ref="' . $this->to . '" '; return $res; } - } +} class remarkableCartLink extends cartLink { } -class colorLink extends contentLink { +class colorLink extends contentLink +{ - public function getCSS() { + public function getCSS() + { return 'background-color:' . wsHTML5::colorToCSS($this->to) . ';'; } } -class imageLink extends contentLink { +class imageLink extends contentLink +{ - public function getCSS() { + public function getCSS() + { $this->copyExternalFile($this->to); return 'background-image:url(' . wsHTML5Link::getUniversalLocation($this->to, true) . ');background-size:100% 100%;background-repeat:no-repeat;'; } @@ -862,7 +952,8 @@ class inlineSlideshowLink extends contentLink class fileLink extends normalLink { - public function getURL() { + public function getURL() + { if ($this->compiler->book->parametres->linkFilePrefix && !CubeIT_Util_Url::isDistant($this->to)) { return $this->compiler->book->parametres->linkFilePrefix . $this->to; } @@ -870,24 +961,29 @@ class fileLink extends normalLink return wsHTML5Link::getUniversalLocation($this->to); } - public function getTarget() { + public function getTarget() + { return '_blank'; } - public function getDefaultTooltip() { + public function getDefaultTooltip() + { return 'click to open the file'; } } -class facebookLikeLink extends wsHTML5Link { - public function getHTMLContent() { +class facebookLikeLink extends wsHTML5Link +{ + public function getHTMLContent() + { $this->compiler->addFacebookSDK(); return '
'; } } -class htmlMultimediaLink extends wsHTML5Link { +class htmlMultimediaLink extends wsHTML5Link +{ protected $_config = null; protected $_content = ''; @@ -895,7 +991,8 @@ class htmlMultimediaLink extends wsHTML5Link { protected $_externalIframe = false; public $zindex = 2; - public function getHTMLContent() { + public function getHTMLContent() + { if ($this->_content == '') { $ext = files::getExtension($this->alternative); @@ -978,7 +1075,8 @@ class htmlMultimediaLink extends wsHTML5Link { return $this->_content; } - public function getHTMLContainerClass() { + public function getHTMLContainerClass() + { $res = parent::getHTMLContainerClass() . ' multimedia'; if (!$this->interactive) { $res .= ' notinteractive'; @@ -988,7 +1086,8 @@ class htmlMultimediaLink extends wsHTML5Link { } - protected function _correctFiles($dir) { + protected function _correctFiles($dir) + { $files = CubeIT_Files::getRecursiveDirectoryIterator($dir); foreach ($files as $f) { /* @var $f SplFileInfo */ @@ -998,7 +1097,8 @@ class htmlMultimediaLink extends wsHTML5Link { } } - public function getCSSContainer() { + public function getCSSContainer() + { if (!($this instanceof contentLink) && $this->page % 2 == 1) { $this->page--; $this->left += $this->compiler->width; @@ -1016,7 +1116,8 @@ class htmlMultimediaLink extends wsHTML5Link { return $css; } - public function getCSS() { + public function getCSS() + { $sx = ($this->width / ($this->_config['width'])) * $this->getCssScale(); $sy = ($this->height / ($this->_config['height'])) * $this->getCssScale(); @@ -1029,18 +1130,21 @@ class htmlMultimediaLink extends wsHTML5Link { return $res; } - public function getConfigZIP($d) { + public function getConfigZIP($d) + { return $this->compiler->getConfigZIP($d); } - public function getConfigHTML($d, $html) { + public function getConfigHTML($d, $html) + { $res = array('width' => $this->video_width, 'height' => $this->video_height); $r = array('html' => $html, 'inject' => array(), 'injectcss' => array(), 'injectjs' => array()); return array_merge($res, $r); } - public function getConfigOAM($d) { + public function getConfigOAM($d) + { $x = simplexml_load_file($d . '/config.xml'); $config = (string)$x->oamfile['src']; $config = str_replace('/Assets', '', $d . '/' . $config); @@ -1067,7 +1171,8 @@ class htmlMultimediaLink extends wsHTML5Link { } -class webVideoPopupLink extends videoPopupLink { +class webVideoPopupLink extends videoPopupLink +{ // public function getURL() { // if ($this->video_service == 0) { @@ -1082,7 +1187,8 @@ class webVideoPopupLink extends videoPopupLink { // return '#/webvideo/' . $service . '/' . $this->to; // } - public function getURL() { + public function getURL() + { switch ($this->video_service) { case 1: // Dailymotion @@ -1096,16 +1202,19 @@ class webVideoPopupLink extends videoPopupLink { } } - public function getAdditionnalContent() { + public function getAdditionnalContent() + { $this->video_auto_start = true; // Videos should always autoplay return ' data-video="' . rawurlencode(webVideoLink::makeVideoTag($this, 1280, 720, $this->compiler)) . '" '; } } -class audioLink extends wsHTML5Link { +class audioLink extends wsHTML5Link +{ - public function getHTMLContent() { + public function getHTMLContent() + { $this->copyExternalFile($this->to); $w = round($this->width * $this->getCssScale()); @@ -1114,7 +1223,8 @@ class audioLink extends wsHTML5Link { return self::makeAudioTag($this, $w, $h, $this->compiler); } - public function getCSSContainer() { + public function getCSSContainer() + { $css = parent::getCSSContainer(); $css .= '#l_' . $this->id . ' audio{'; $css .= 'width:' . round($this->width * $this->getCssScale()) . 'px;'; @@ -1124,7 +1234,8 @@ class audioLink extends wsHTML5Link { return $css; } - public static function makeAudioTag($linkDatas, $w = null, $h = null, $compiler = null) { + public static function makeAudioTag($linkDatas, $w = null, $h = null, $compiler = null) + { $res = '