PageRenderTime 73ms CodeModel.GetById 29ms RepoModel.GetById 1ms app.codeStats 0ms

/wp-content/plugins/revslider/inc_php/revslider_output.class.php

https://bitbucket.org/acipriani/madeinapulia.com
PHP | 2210 lines | 1455 code | 448 blank | 307 comment | 378 complexity | e026674e032b9f223173731c4a8e311c MD5 | raw file
Possible License(s): GPL-3.0, MIT, BSD-3-Clause, LGPL-2.1, GPL-2.0, Apache-2.0
  1. <?php
  2. class RevSliderOutput{
  3. private static $sliderSerial = 0;
  4. private $sliderHtmlID;
  5. private $sliderHtmlID_wrapper;
  6. private $slider;
  7. private $oneSlideMode = false;
  8. private $oneSlideData;
  9. private $previewMode = false; //admin preview mode
  10. private $slidesNumIndex;
  11. private $sliderLang = null;
  12. private $hasOnlyOneSlide = false;
  13. private $rev_inline_js = '';
  14. private $class_include = array();
  15. /**
  16. *
  17. * check the put in string
  18. * return true / false if the put in string match the current page.
  19. */
  20. public static function isPutIn($putIn,$emptyIsFalse = false){
  21. $putIn = strtolower($putIn);
  22. $putIn = trim($putIn);
  23. if($emptyIsFalse && empty($putIn))
  24. return(false);
  25. if($putIn == "homepage"){ //filter by homepage
  26. if(is_front_page() == false)
  27. return(false);
  28. }
  29. else //case filter by pages
  30. if(!empty($putIn)){
  31. $arrPutInPages = array();
  32. $arrPagesTemp = explode(",", $putIn);
  33. foreach($arrPagesTemp as $page){
  34. $page = trim($page);
  35. if(is_numeric($page) || $page == "homepage")
  36. $arrPutInPages[] = $page;
  37. }
  38. if(!empty($arrPutInPages)){
  39. //get current page id
  40. $currentPageID = "";
  41. if(is_front_page() == true)
  42. $currentPageID = "homepage";
  43. else{
  44. global $post;
  45. if(isset($post->ID))
  46. $currentPageID = $post->ID;
  47. }
  48. //do the filter by pages
  49. if(array_search($currentPageID, $arrPutInPages) === false)
  50. return(false);
  51. }
  52. }
  53. return(true);
  54. }
  55. /**
  56. *
  57. * put the rev slider slider on the html page.
  58. * @param $data - mixed, can be ID ot Alias.
  59. */
  60. public static function putSlider($sliderID,$putIn=""){
  61. $isPutIn = self::isPutIn($putIn);
  62. if($isPutIn == false)
  63. return(false);
  64. //check if on mobile and if option hide on mobile is set
  65. $output = new RevSliderOutput();
  66. $output->putSliderBase($sliderID);
  67. $slider = $output->getSlider();
  68. return($slider);
  69. }
  70. /**
  71. *
  72. * set language
  73. */
  74. public function setLang($lang){
  75. $this->sliderLang = $lang;
  76. }
  77. /**
  78. *
  79. * set one slide mode for preview
  80. */
  81. public function setOneSlideMode($data){
  82. $this->oneSlideMode = true;
  83. $this->oneSlideData = $data;
  84. }
  85. /**
  86. *
  87. * set preview mode
  88. */
  89. public function setPreviewMode(){
  90. $this->previewMode = true;
  91. }
  92. /**
  93. *
  94. * get the last slider after the output
  95. */
  96. public function getSlider(){
  97. return($this->slider);
  98. }
  99. /**
  100. *
  101. * get slide full width video data
  102. */
  103. private function getSlideFullWidthVideoData(RevSlide $slide){
  104. $response = array("found"=>false);
  105. //deal full width video:
  106. $enableVideo = $slide->getParam("enable_video","false");
  107. if($enableVideo != "true")
  108. return($response);
  109. $videoID = $slide->getParam("video_id","");
  110. $videoID = trim($videoID);
  111. if(empty($videoID))
  112. return($response);
  113. $response["found"] = true;
  114. $videoType = is_numeric($videoID)?"vimeo":"youtube";
  115. $videoAutoplay = $slide->getParam("video_autoplay");
  116. $videoCover = $slide->getParam("cover");
  117. $videoAutoplayOnlyFirstTime = $slide->getParam("autoplayonlyfirsttime");
  118. $previewimage = $slide->getParam("previewimage", "");
  119. $videoNextslide = $slide->getParam("video_nextslide");
  120. $mute = $slide->getParam("mute");
  121. $response["type"] = $videoType;
  122. $response["videoID"] = $videoID;
  123. $response["autoplay"] = UniteFunctionsRev::strToBool($videoAutoplay);
  124. $response["cover"] = UniteFunctionsRev::strToBool($videoCover);
  125. $response["autoplayonlyfirsttime"] = UniteFunctionsRev::strToBool($videoAutoplayOnlyFirstTime);
  126. $response["previewimage"] = UniteFunctionsRev::strToBool($previewimage);
  127. $response["nextslide"] = UniteFunctionsRev::strToBool($videoNextslide);
  128. $response["mute"] = UniteFunctionsRev::strToBool($mute);
  129. return($response);
  130. }
  131. /**
  132. *
  133. * put full width video layer
  134. */
  135. private function putFullWidthVideoLayer($videoData){
  136. /*if($videoData["found"] == false)
  137. return(false);
  138. $autoplayonlyfirsttime = "";
  139. $autoplay = UniteFunctionsRev::boolToStr($videoData["autoplay"]);
  140. if($autoplay == "true"){
  141. $autoplayonlyfirsttime = UniteFunctionsRev::boolToStr($videoData["autoplayonlyfirsttime"]);
  142. $autoplayonlyfirsttime = ' data-autoplayonlyfirsttime="'. $autoplayonlyfirsttime.'"';
  143. }
  144. $nextslide = UniteFunctionsRev::boolToStr($videoData["nextslide"]);
  145. $htmlParams = 'data-x="0" data-y="0" data-speed="500" data-start="10" data-easing="easeOutBack"';
  146. if($videoData["previewimage"] != '') $htmlParams.= ' data-videoposter="'.$videoData["previewimage"].'"';
  147. $videoID = $videoData["videoID"];
  148. $setBase = (is_ssl()) ? "https://" : "http://";
  149. $mute = (UniteFunctionsRev::strToBool($videoData['mute'])) ? ' data-volume="mute"' : '';
  150. if($videoData["type"] == "youtube"): //youtube
  151. ?> <div class="tp-caption fade fullscreenvideo " data-nextslideatend="<?php echo $nextslide?>" data-autoplay="<?php echo $autoplay?>"<?php echo $autoplayonlyfirsttime; ?> <?php echo $htmlParams?><?php echo $mute; ?>><iframe src="<?php echo $setBase; ?>www.youtube.com/embed/<?php echo $videoID?>?enablejsapi=1&amp;version=3&amp;html5=1&amp;hd=1&amp;controls=1&amp;showinfo=0;" allowfullscreen="true" width="100%" height="100%"></iframe></div><?php
  152. else: //vimeo
  153. ?> <div class="tp-caption fade fullscreenvideo" data-nextslideatend="<?php echo $nextslide?>" data-autoplay="<?php echo $autoplay?>"<?php echo $autoplayonlyfirsttime; ?> <?php echo $htmlParams?><?php echo $mute; ?>><iframe src="<?php echo $setBase; ?>player.vimeo.com/video/<?php echo $videoID?>?title=0&amp;byline=0&amp;portrait=0;api=1" width="100%" height="100%"></iframe></div><?php
  154. endif;*/
  155. }
  156. /**
  157. *
  158. * filter the slides for one slide preview
  159. */
  160. private function filterOneSlide($slides){
  161. $oneSlideID = $this->oneSlideData["slideid"];
  162. $oneSlideParams = UniteFunctionsRev::getVal($this->oneSlideData, "params");
  163. $oneSlideLayers = UniteFunctionsRev::getVal($this->oneSlideData, "layers");
  164. if(gettype($oneSlideParams) == "object")
  165. $oneSlideParams = (array)$oneSlideParams;
  166. if(gettype($oneSlideLayers) == "object")
  167. $oneSlideLayers = (array)$oneSlideLayers;
  168. if(!empty($oneSlideLayers))
  169. $oneSlideLayers = UniteFunctionsRev::convertStdClassToArray($oneSlideLayers);
  170. $newSlides = array();
  171. foreach($slides as $slide){
  172. $slideID = $slide->getID();
  173. if($slideID == $oneSlideID){
  174. if(!empty($oneSlideParams))
  175. $slide->setParams($oneSlideParams);
  176. if(!empty($oneSlideLayers))
  177. $slide->setLayers($oneSlideLayers);
  178. $newSlides[] = $slide; //add 2 slides
  179. $newSlides[] = $slide;
  180. }
  181. }
  182. return($newSlides);
  183. }
  184. /**
  185. *
  186. * put the slider slides
  187. */
  188. private function putSlides($doWrapFromTemplate){
  189. //go to template slider if post template
  190. if($doWrapFromTemplate !== false) $this->slider->initByMixed($doWrapFromTemplate); //back to original Slider
  191. $sliderType = $this->slider->getParam("slider_type");
  192. $publishedOnly = true;
  193. if($this->previewMode == true && $this->oneSlideMode == true){
  194. $previewSlideID = UniteFunctionsRev::getVal($this->oneSlideData, "slideid");
  195. $previewSlide = new RevSlide();
  196. $previewSlide->initByID($previewSlideID);
  197. $slides = array($previewSlide);
  198. }else{
  199. $slides = $this->slider->getSlidesForOutput($publishedOnly,$this->sliderLang);
  200. }
  201. $this->slidesNumIndex = $this->slider->getSlidesNumbersByIDs(true);
  202. if(empty($slides)){
  203. ?>
  204. <div class="no-slides-text">
  205. <?php
  206. if($this->slider->isSlidesFromPosts()){
  207. _e('No slides found, please add at least one Slide Template to the choosen Template Slider.', REVSLIDER_TEXTDOMAIN);
  208. }else{
  209. _e('No slides found, please add some slides', REVSLIDER_TEXTDOMAIN);
  210. }
  211. ?>
  212. </div>
  213. <?php
  214. }
  215. //set that we are originally template slider
  216. $templateSlider = false;
  217. $postData = array();
  218. if($this->slider->isSlidesFromPosts() && $this->slider->getParam("slider_template_id",false) !== false){
  219. $templateSlider = true;
  220. }
  221. //go back to normal slider if post template
  222. if($doWrapFromTemplate) $this->slider->initByMixed($this->slider->getParam("slider_template_id",false)); //back to template for JS
  223. $thumbWidth = $this->slider->getParam("thumb_width",100);
  224. $thumbHeight = $this->slider->getParam("thumb_height",50);
  225. $slideWidth = $this->slider->getParam("width",900);
  226. $slideHeight = $this->slider->getParam("height",300);
  227. $navigationType = $this->slider->getParam("navigaion_type","none");
  228. $isThumbsActive = ($navigationType == "thumb")?true:false;
  229. $lazyLoad = $this->slider->getParam("lazy_load","off");
  230. //for one slide preview
  231. if($this->oneSlideMode == true)
  232. $slides = $this->filterOneSlide($slides);
  233. echo "<ul>";
  234. $htmlFirstTransWrap = "";
  235. $startWithSlide = $this->slider->getStartWithSlideSetting();
  236. $firstTransActive = $this->slider->getParam("first_transition_active","false");
  237. if($firstTransActive == "true"){
  238. $firstTransition = $this->slider->getParam("first_transition_type","fade");
  239. $htmlFirstTransWrap .= " data-fstransition=\"$firstTransition\"";
  240. $firstDuration = $this->slider->getParam("first_transition_duration","300");
  241. if(!empty($firstDuration) && is_numeric($firstDuration))
  242. $htmlFirstTransWrap .= " data-fsmasterspeed=\"$firstDuration\"";
  243. $firstSlotAmount = $this->slider->getParam("first_transition_slot_amount","7");
  244. if(!empty($firstSlotAmount) && is_numeric($firstSlotAmount))
  245. $htmlFirstTransWrap .= " data-fsslotamount=\"$firstSlotAmount\"";
  246. }
  247. if(count($slides) == 1 && $this->oneSlideMode == false){
  248. $slides[] = $slides[0];
  249. $slides[1]->ignore_alt = true;
  250. $this->hasOnlyOneSlide = true;
  251. }
  252. foreach($slides as $index => $slide){
  253. $params = $slide->getParams();
  254. $cur_slide_title = $this->slider->getParam("navigation_style","round");
  255. if($templateSlider)
  256. $postData = $slide->getPostData();
  257. //check if date is set
  258. $date_from = $slide->getParam("date_from","");
  259. $date_to = $slide->getParam("date_to","");
  260. if($date_from != ""){
  261. $date_from = strtotime($date_from);
  262. if(time() < $date_from) continue;
  263. }
  264. if($date_to != ""){
  265. $date_to = strtotime($date_to);
  266. if(time() > $date_to) continue;
  267. }
  268. $transition = $slide->getParam("slide_transition","random");
  269. $transition_arr = explode(',', $transition);
  270. $add_rand = '';
  271. if(is_array($transition_arr) && !empty($transition_arr)){
  272. foreach($transition_arr as $tkey => $trans){
  273. if($trans == 'random-selected'){
  274. $add_rand = ' data-randomtransition="on"';
  275. unset($transition_arr[$tkey]);
  276. $transition = implode(',', $transition_arr);
  277. break;
  278. }
  279. }
  280. }
  281. //if($transition == "fade") $transition = "tp-fade";
  282. //$transitionPremium = $slide->getParam("slide_transition_premium","random");
  283. //if(trim($transition) == '')
  284. // $transition = $transitionPremium;
  285. //else
  286. // if(trim($transitionPremium) != '') $transition .= ','.$transitionPremium;
  287. $slotAmount = $slide->getParam("slot_amount","7");
  288. $isExternal = $slide->getParam("background_type","image");
  289. if($isExternal != "external"){
  290. $urlSlideImage = $slide->getImageUrl();
  291. //get image alt
  292. $imageFilename = $slide->getImageFilename();
  293. $info = pathinfo($imageFilename);
  294. $alt = $info["filename"];
  295. }else{
  296. $urlSlideImage = $slide->getParam("slide_bg_external","");
  297. $info = '';
  298. $alt = '';
  299. }
  300. if(isset($slide->ignore_alt)) $alt = '';
  301. $bgType = $slide->getParam("background_type","image");
  302. //get thumb url
  303. $is_special_nav = false;
  304. switch($cur_slide_title){ //generate also if we have a special navigation selected
  305. case 'preview1':
  306. case 'preview2':
  307. case 'preview3':
  308. case 'preview4':
  309. case 'custom':
  310. $is_special_nav = true;
  311. }
  312. $htmlThumb = "";
  313. if($isThumbsActive == true || $is_special_nav == true){
  314. $urlThumb = null;
  315. //check if post slider, if yes, get thumb from featured image
  316. //if($this->slider->isSlidesFromPosts())
  317. // $urlThumb = '';
  318. if(empty($urlThumb)){
  319. $urlThumb = $slide->getParam("slide_thumb","");
  320. }
  321. if($bgType == 'image'){
  322. if(empty($urlThumb)){ //try to get resized thumb
  323. $url_img_link = $slide->getImageUrl();
  324. $urlThumb = rev_aq_resize($url_img_link, 320, 200, true, true, true);
  325. /*$pathThumb = $slide->getImageFilepath();
  326. if(!empty($pathThumb))
  327. $urlThumb = UniteBaseClassRev::getImageUrl($pathThumb,$thumbWidth,$thumbHeight,true);*/
  328. }
  329. //if not - put regular image:
  330. if(empty($urlThumb))
  331. $urlThumb = $slide->getImageUrl();
  332. }
  333. $htmlThumb = 'data-thumb="'.$urlThumb.'" ';
  334. }
  335. //get link
  336. $htmlLink = "";
  337. $enableLink = $slide->getParam("enable_link","false");
  338. if($enableLink == "true"){
  339. $linkType = $slide->getParam("link_type","regular");
  340. switch($linkType){
  341. //---- normal link
  342. default:
  343. case "regular":
  344. $link = $slide->getParam("link","");
  345. $linkOpenIn = $slide->getParam("link_open_in","same");
  346. $htmlTarget = "";
  347. if($linkOpenIn == "new")
  348. $htmlTarget = ' data-target="_blank"';
  349. $htmlLink = "data-link=\"$link\" $htmlTarget ";
  350. break;
  351. //---- link to slide
  352. case "slide":
  353. $slideLink = UniteFunctionsRev::getVal($params, "slide_link");
  354. if(!empty($slideLink) && $slideLink != "nothing"){
  355. //get slide index from id
  356. if(is_numeric($slideLink))
  357. $slideLink = UniteFunctionsRev::getVal($this->slidesNumIndex, $slideLink);
  358. if(!empty($slideLink)){
  359. $htmlLink = "data-link=\"slide\" data-linktoslide=\"$slideLink\" ";
  360. }
  361. }
  362. break;
  363. }
  364. //set link position:
  365. $linkPos = UniteFunctionsRev::getVal($params, "link_pos","front");
  366. if($linkPos == "back")
  367. $htmlLink .= ' data-slideindex="back"';
  368. }
  369. //set delay
  370. $htmlDelay = "";
  371. $delay = $slide->getParam("delay","");
  372. if(!empty($delay) && is_numeric($delay))
  373. $htmlDelay = "data-delay=\"$delay\" ";
  374. //get duration
  375. $htmlDuration = "";
  376. $duration = $slide->getParam("transition_duration","");
  377. if(!empty($duration) && is_numeric($duration))
  378. $htmlDuration = "data-masterspeed=\"$duration\" ";
  379. //get performance
  380. $htmlPerformance = "";
  381. $performance = $slide->getParam("save_performance","off");
  382. if(!empty($performance) && ($performance == 'on' || $performance == 'off'))
  383. $htmlPerformance = " data-saveperformance=\"$performance\" ";
  384. //get rotation
  385. $htmlRotation = "";
  386. $rotation = $slide->getParam("transition_rotation","");
  387. if(!empty($rotation)){
  388. $rotation = (int)$rotation;
  389. if($rotation != 0){
  390. if($rotation > 720 && $rotation != 999)
  391. $rotation = 720;
  392. if($rotation < -720)
  393. $rotation = -720;
  394. }
  395. $htmlRotation = "data-rotate=\"$rotation\" ";
  396. }
  397. $fullWidthVideoData = $this->getSlideFullWidthVideoData($slide);
  398. //set full width centering.
  399. /*$htmlImageCentering = "";
  400. $fullWidthCentering = $slide->getParam("fullwidth_centering","false");
  401. if($sliderType == "fullwidth" && $fullWidthCentering == "true")
  402. $htmlImageCentering = ' data-fullwidthcentering="on"';
  403. */
  404. //set first slide transition
  405. $htmlFirstTrans = "";
  406. if($index == $startWithSlide){
  407. $htmlFirstTrans = $htmlFirstTransWrap;
  408. }//first trans
  409. $htmlParams = $htmlDuration.$htmlLink.$htmlThumb.$htmlDelay.$htmlRotation.$htmlFirstTrans.$htmlPerformance;
  410. $styleImage = "";
  411. $urlImageTransparent = UniteBaseClassRev::$url_plugin."images/transparent.png";
  412. switch($bgType){
  413. case "trans":
  414. $urlSlideImage = $urlImageTransparent;
  415. break;
  416. case "solid":
  417. $urlSlideImage = $urlImageTransparent;
  418. $slideBGColor = $slide->getParam("slide_bg_color","#d0d0d0");
  419. $styleImage = "style='background-color:".$slideBGColor."'";
  420. break;
  421. }
  422. //additional params
  423. $imageAddParams = "";
  424. if($lazyLoad == "on"){
  425. $imageAddParams .= "data-lazyload=\"$urlSlideImage\"";
  426. $urlSlideImage = UniteBaseClassRev::$url_plugin."images/dummy.png";
  427. }
  428. //$imageAddParams .= $htmlImageCentering;
  429. //additional background params
  430. $bgFit = $slide->getParam("bg_fit","cover");
  431. $bgFitX = intval($slide->getParam("bg_fit_x","100"));
  432. $bgFitY = intval($slide->getParam("bg_fit_y","100"));
  433. $bgPosition = $slide->getParam("bg_position","center top");
  434. $bgPositionX = intval($slide->getParam("bg_position_x","0"));
  435. $bgPositionY = intval($slide->getParam("bg_position_y","0"));
  436. $bgRepeat = $slide->getParam("bg_repeat","no-repeat");
  437. if($bgPosition == 'percentage'){
  438. $imageAddParams .= ' data-bgposition="'.$bgPositionX.'% '.$bgPositionY.'%"';
  439. }else{
  440. $imageAddParams .= ' data-bgposition="'.$bgPosition.'"';
  441. }
  442. //check for kenburn & pan zoom
  443. $kenburn_effect = $slide->getParam("kenburn_effect","off");
  444. //$kb_rotation_start = intval($slide->getParam("kb_rotation_start","0"));
  445. //$kb_rotation_end = intval($slide->getParam("kb_rotation_end","0"));
  446. $kb_duration = intval($slide->getParam("kb_duration",$this->slider->getParam("delay",9000)));
  447. $kb_ease = $slide->getParam("kb_easing","Linear.easeNone");
  448. $kb_start_fit = $slide->getParam("kb_start_fit","100");
  449. $kb_end_fit =$slide->getParam("kb_end_fit","100");
  450. $kb_pz = '';
  451. if($kenburn_effect == "on" && ($bgType == 'image' || $bgType == 'external')){
  452. $kb_pz.= ' data-kenburns="on"';
  453. //$kb_pz.= ' data-rotationstart="'.$kb_rotation_start.'"';
  454. //$kb_pz.= ' data-rotationend="'.$kb_rotation_end.'"';
  455. $kb_pz.= ' data-duration="'.$kb_duration.'"';
  456. $kb_pz.= ' data-ease="'.$kb_ease.'"';
  457. $kb_pz.= ' data-bgfit="'.$kb_start_fit.'"';
  458. $kb_pz.= ' data-bgfitend="'.$kb_end_fit.'"';
  459. $bgEndPosition = $slide->getParam("bg_end_position","center top");
  460. $bgEndPositionX = intval($slide->getParam("bg_end_position_x","0"));
  461. $bgEndPositionY = intval($slide->getParam("bg_end_position_y","0"));
  462. if($bgEndPosition == 'percentage'){
  463. $kb_pz.= ' data-bgpositionend="'.$bgEndPositionX.'% '.$bgEndPositionY.'%"';
  464. }else{
  465. $kb_pz.= ' data-bgpositionend="'.$bgEndPosition.'"';
  466. }
  467. //set image original width and height
  468. //$imgSize = @getimagesize($urlSlideImage);
  469. //if(is_array($imgSize) && !empty($imgSize)){
  470. // $kb_pz.= ' data-owidth="'.$imgSize[0].'"';
  471. // $kb_pz.= ' data-oheight="'.$imgSize[1].'"';
  472. //}
  473. }else{ //only set if kenburner is off
  474. if($bgFit == 'percentage'){
  475. $imageAddParams .= ' data-bgfit="'.$bgFitX.'% '.$bgFitY.'%"';
  476. }else{
  477. $imageAddParams .= ' data-bgfit="'.$bgFit.'"';
  478. }
  479. $imageAddParams .= ' data-bgrepeat="'.$bgRepeat.'"';
  480. }
  481. $thumbWidth = $this->slider->getParam("thumb_width",100);
  482. //add Slide Title if we have special navigation type choosen
  483. $slide_title = '';
  484. $class_attr = $slide->getParam("class_attr","");
  485. if($class_attr !== '')
  486. $htmlParams.= ' class="'.$class_attr.'"';
  487. $id_attr = $slide->getParam("id_attr","");
  488. if($id_attr !== '')
  489. $htmlParams.= ' id="'.$id_attr.'"';
  490. $attr_attr = $slide->getParam("attr_attr","");
  491. if($attr_attr !== '')
  492. $htmlParams.= ' id="'.$attr_attr.'"';
  493. $data_attr = stripslashes($slide->getParam("data_attr",""));
  494. if($data_attr !== '')
  495. $htmlParams.= ' '.$data_attr;
  496. switch($cur_slide_title){
  497. case 'preview1':
  498. case 'preview2':
  499. case 'preview3':
  500. case 'preview4':
  501. case 'custom':
  502. //check if we are post based or normal slider
  503. if($templateSlider){
  504. $new_title = @get_the_title($slide->getID());
  505. $slide_title = ' data-title="'.str_replace("\'", "'", $new_title).'"';
  506. }else{
  507. $slide_title = ' data-title="'.str_replace("\'", "'", $slide->getParam("title","Slide")).'"';
  508. }
  509. break;
  510. }
  511. //Html
  512. echo " <!-- SLIDE -->\n";
  513. echo " <li data-transition=\"".$transition."\" data-slotamount=\"". $slotAmount."\" ".$add_rand.$htmlParams.$slide_title .">\n";
  514. echo " <!-- MAIN IMAGE -->\n";
  515. echo " <img src=\"". $urlSlideImage ."\" ". $styleImage." alt=\"". $alt . "\" ". $imageAddParams. $kb_pz .">\n";
  516. echo " <!-- LAYERS -->\n";
  517. //put video:
  518. if($fullWidthVideoData["found"] == true) //backward compatability
  519. $this->putFullWidthVideoLayer($fullWidthVideoData);
  520. $this->putCreativeLayer($slide);
  521. echo " </li>\n";
  522. } //get foreach
  523. echo "</ul>\n";
  524. //check for static layers
  525. $useStaticLayers = $this->slider->getParam("enable_static_layers","off");
  526. if($useStaticLayers == 'on'){
  527. $sliderID = $this->slider->getID();
  528. $staticID = $slide->getStaticSlideID($sliderID);
  529. if($staticID !== false){
  530. $static_slide = new RevSlide();
  531. $static_slide->initByStaticID($staticID);
  532. echo '<div class="tp-static-layers">'."\n";
  533. $this->putCreativeLayer($static_slide, true);
  534. echo '</div>'."\n";
  535. }
  536. }
  537. //add styles to the footer
  538. //add_action('wp_footer', array($this, 'add_inline_styles'));
  539. }
  540. /**
  541. *
  542. * put creative layer
  543. */
  544. private function putCreativeLayer(RevSlide $slide, $static_slide = false){
  545. $layers = $slide->getLayers();
  546. $customAnimations = RevOperations::getCustomAnimations('customin'); //get all custom animations
  547. $customEndAnimations = RevOperations::getCustomAnimations('customout'); //get all custom animations
  548. $startAnimations = RevOperations::getArrAnimations(false); //only get the standard animations
  549. $endAnimations = RevOperations::getArrEndAnimations(false); //only get the standard animations
  550. $lazyLoad = $this->slider->getParam("lazy_load","off");
  551. $isTemplate = $this->slider->getParam("template","false");
  552. if(empty($layers))
  553. return(false);
  554. $zIndex = 5;
  555. foreach($layers as $layer):
  556. $type = UniteFunctionsRev::getVal($layer, "type","text");
  557. //set if video full screen
  558. $videoclass = '';
  559. $isFullWidthVideo = false;
  560. if($type == "video"){
  561. $videoclass = ' tp-videolayer';
  562. $videoData = UniteFunctionsRev::getVal($layer, "video_data");
  563. if(!empty($videoData)){
  564. $videoData = (array)$videoData;
  565. $isFullWidthVideo = UniteFunctionsRev::getVal($videoData, "fullwidth");
  566. $isFullWidthVideo = UniteFunctionsRev::strToBool($isFullWidthVideo);
  567. }else
  568. $videoData = array();
  569. }
  570. $class = UniteFunctionsRev::getVal($layer, "style");
  571. if(trim($class) !== '')
  572. $this->class_include['.'.trim($class)] = true; //add classname for style inclusion
  573. $animation = UniteFunctionsRev::getVal($layer, "animation","tp-fade");
  574. if($animation == "fade") $animation = "tp-fade";
  575. $customin = '';
  576. if(!array_key_exists($animation, $startAnimations) && array_key_exists($animation, $customAnimations)){ //if true, add custom animation
  577. $customin.= 'data-customin="';
  578. $animArr = RevOperations::getCustomAnimationByHandle($customAnimations[$animation]);
  579. if($animArr !== false) $customin.= RevOperations::parseCustomAnimationByArray($animArr);
  580. $customin.= '"';
  581. $animation = 'customin';
  582. }
  583. if(strpos($animation, 'customin-') !== false || strpos($animation, 'customout-') !== false) $animation = "tp-fade";
  584. //set output class:
  585. $layer_2d_rotation = intval(UniteFunctionsRev::getVal($layer, "2d_rotation",'0'));
  586. $layer_2d_origin_x = intval(UniteFunctionsRev::getVal($layer, "2d_origin_x",'50'));
  587. $layer_2d_origin_y = intval(UniteFunctionsRev::getVal($layer, "2d_origin_y",'50'));
  588. if($layer_2d_rotation == 0)
  589. $outputClass = "tp-caption ". trim($class);
  590. else
  591. $outputClass = "tp-caption ";
  592. $outputClass = trim($outputClass) . " ";
  593. $outputClass .= trim($animation);
  594. $left = UniteFunctionsRev::getVal($layer, "left",0);
  595. $top = UniteFunctionsRev::getVal($layer, "top",0);
  596. $speed = UniteFunctionsRev::getVal($layer, "speed",300);
  597. $time = UniteFunctionsRev::getVal($layer, "time",0);
  598. $easing = UniteFunctionsRev::getVal($layer, "easing","easeOutExpo");
  599. $randomRotate = UniteFunctionsRev::getVal($layer, "random_rotation","false");
  600. $randomRotate = UniteFunctionsRev::boolToStr($randomRotate);
  601. $splitin = UniteFunctionsRev::getVal($layer, "split","none");
  602. $splitout = UniteFunctionsRev::getVal($layer, "endsplit","none");
  603. $elementdelay = intval(UniteFunctionsRev::getVal($layer, "splitdelay",0));
  604. $endelementdelay = intval(UniteFunctionsRev::getVal($layer, "endsplitdelay",0));
  605. if($elementdelay > 0) $elementdelay /= 100;
  606. if($endelementdelay > 0) $endelementdelay /= 100;
  607. $text = UniteFunctionsRev::getVal($layer, "text");
  608. if(function_exists('qtrans_useCurrentLanguageIfNotFoundUseDefaultLanguage')) //use qTranslate
  609. $text = qtrans_useCurrentLanguageIfNotFoundUseDefaultLanguage($text);
  610. $htmlVideoAutoplay = "";
  611. $htmlVideoAutoplayOnlyFirstTime = "";
  612. $htmlVideoNextSlide = "";
  613. $htmlVideoThumbnail = "";
  614. $htmlMute = '';
  615. $htmlCover = '';
  616. $htmlDotted = '';
  617. $htmlRatio = '';
  618. $htmlRewind = '';
  619. $htmlDisableOnMobile = '';
  620. $ids = UniteFunctionsRev::getVal($layer, "attrID");
  621. $classes = UniteFunctionsRev::getVal($layer, "attrClasses");
  622. $title = UniteFunctionsRev::getVal($layer, "attrTitle");
  623. $rel = UniteFunctionsRev::getVal($layer, "attrRel");
  624. $ids = ($ids != '') ? ' id="'.$ids.'"' : '';
  625. $classes = ($classes != '') ? ' '.$classes : '';
  626. $title = ($title != '') ? ' title="'.$title.'"' : '';
  627. $rel = ($rel != '') ? ' rel="'.$rel.'"' : '';
  628. $max_width = UniteFunctionsRev::getVal($layer, "max_width",'auto');
  629. $max_height = UniteFunctionsRev::getVal($layer, "max_height",'auto');
  630. $white_space = UniteFunctionsRev::getVal($layer, "whitespace",'nowrap');
  631. $inline_styles = '';
  632. $layer_rotation = '';
  633. $do_rotation = false;
  634. $add_data = '';
  635. //set html:
  636. $html = "";
  637. switch($type){
  638. default:
  639. case "text":
  640. $html = $text;
  641. $html = do_shortcode($html);
  642. $inline_styles .= ' max-width: '.$max_width.'; max-height: '.$max_height.'; white-space: '.$white_space.';';
  643. if($layer_2d_rotation !== 0)
  644. $do_rotation = true;
  645. break;
  646. case "image":
  647. $alt = UniteFunctionsRev::getVal($layer, "alt");
  648. if(isset($slide->ignore_alt)) $alt = '';
  649. $urlImage = UniteFunctionsRev::getVal($layer, "image_url");
  650. $additional = "";
  651. $scaleX = UniteFunctionsRev::getVal($layer, "scaleX");
  652. $scaleY = UniteFunctionsRev::getVal($layer, "scaleY");
  653. if($scaleX != '') $additional .= ' data-ww="'.$scaleX.'"';
  654. if($scaleY != '') $additional .= ' data-hh="'.$scaleY.'"';
  655. if(is_ssl()){
  656. $urlImage = str_replace("http://", "https://", $urlImage);
  657. }
  658. $imageAddParams = "";
  659. if($lazyLoad == "on"){
  660. $imageAddParams .= " data-lazyload=\"$urlImage\"";
  661. $urlImage = UniteBaseClassRev::$url_plugin."images/dummy.png";
  662. }
  663. $html = '<img src="'.$urlImage.'" alt="'.$alt.'"'.$additional.$imageAddParams.'>';
  664. $imageLink = UniteFunctionsRev::getVal($layer, "link","");
  665. if(!empty($imageLink)){
  666. $openIn = UniteFunctionsRev::getVal($layer, "link_open_in","same");
  667. $target = "";
  668. if($openIn == "new")
  669. $target = ' target="_blank"';
  670. $linkID = UniteFunctionsRev::getVal($layer, "link_id","");
  671. $linkClass = UniteFunctionsRev::getVal($layer, "link_class","");
  672. $linkTitle = UniteFunctionsRev::getVal($layer, "link_title","");
  673. $linkRel = UniteFunctionsRev::getVal($layer, "link_rel","");
  674. $linkIDHtml = "";
  675. $linkClassHtml = "";
  676. $linkTitleHtml = "";
  677. $linkRelHtml = "";
  678. if(!empty($linkID))
  679. $linkIDHtml = ' id="'.$linkID.'"';
  680. if(!empty($linkClass))
  681. $linkClassHtml = ' class="'.$linkClass.'"';
  682. if(!empty($linkTitle))
  683. $linkTitleHtml = ' title="'.$linkTitle.'"';
  684. if(!empty($linkRel))
  685. $linkRelHtml = ' rel="'.$linkRel.'"';
  686. $html = '<a href="'.$imageLink.'"'.$target.$linkIDHtml.$linkClassHtml.$linkTitleHtml.$linkRelHtml.'>'.$html.'</a>';
  687. }
  688. if($layer_2d_rotation !== 0)
  689. $do_rotation = true;
  690. break;
  691. case "video":
  692. $videoType = trim(UniteFunctionsRev::getVal($layer, "video_type"));
  693. $videoID = trim(UniteFunctionsRev::getVal($layer, "video_id"));
  694. $videoWidth = trim(UniteFunctionsRev::getVal($layer, "video_width"));
  695. $videoHeight = trim(UniteFunctionsRev::getVal($layer, "video_height"));
  696. $videoArgs = trim(UniteFunctionsRev::getVal($layer, "video_args"));
  697. $v_controls = UniteFunctionsRev::getVal($videoData, "controls");
  698. $v_controls = UniteFunctionsRev::strToBool($v_controls);
  699. $rewind = UniteFunctionsRev::getVal($videoData, "forcerewind");
  700. $rewind = UniteFunctionsRev::strToBool($rewind);
  701. $htmlRewind = ($rewind == true) ? ' data-forcerewind="on"' : '';
  702. /*
  703. $cover = UniteFunctionsRev::getVal($videoData, "cover");
  704. $cover = UniteFunctionsRev::strToBool($cover);
  705. if($cover == true){
  706. $dotted = UniteFunctionsRev::getVal($videoData, "dotted");
  707. if($dotted !== 'none')
  708. $htmlDotted = ' data-dottedoverlay="'.$dotted.'"';
  709. $ratio = UniteFunctionsRev::getVal($videoData, "ratio");
  710. if(!empty($ratio))
  711. $htmlRatio = ' data-aspectratio="'.$ratio.'"';
  712. }
  713. */
  714. if($isFullWidthVideo == true){ // || $cover == true
  715. $videoWidth = "100%";
  716. $videoHeight = "100%";
  717. }
  718. $setBase = (is_ssl()) ? "https://" : "http://";
  719. switch($videoType){
  720. case "youtube":
  721. if(empty($videoArgs))
  722. $videoArgs = GlobalsRevSlider::DEFAULT_YOUTUBE_ARGUMENTS;
  723. //check if full URL
  724. if(strpos($videoID, 'http') !== false){
  725. //we have full URL, split it to ID
  726. parse_str( parse_url( $videoID, PHP_URL_QUERY ), $my_v_ret );
  727. $videoID = $my_v_ret['v'];
  728. }
  729. $videospeed = UniteFunctionsRev::getVal($videoData, "videospeed", '1');
  730. //$ytBase = 'https://';
  731. //if($v_controls) $videoArgs.='controls=0;';
  732. $videoArgs.=';origin='.$setBase.$_SERVER['SERVER_NAME'].';';
  733. $add_data = ' data-ytid="'.$videoID.'" data-videowidth="'.$videoWidth.'" data-videoheight="'.$videoHeight.'" data-videoattributes="version=3&amp;enablejsapi=1&amp;html5=1&amp;'.$videoArgs.'" data-videorate="'.$videospeed.'"';
  734. $add_data .= ($v_controls) ? ' data-videocontrols="none"' : ' data-videocontrols="controls"';
  735. //$html = "<iframe src='".$ytBase."www.youtube.com/embed/".$videoID."?enablejsapi=1&amp;html5=1&amp;".$videoArgs."' allowfullscreen='true' width='".$videoWidth."' height='".$videoHeight."' style='width:".$videoWidth."px;height:".$videoHeight."px;'></iframe>";
  736. break;
  737. case "vimeo":
  738. if(empty($videoArgs))
  739. $videoArgs = GlobalsRevSlider::DEFAULT_VIMEO_ARGUMENTS;
  740. //check if full URL
  741. if(strpos($videoID, 'http') !== false){
  742. //we have full URL, split it to ID
  743. $videoID = (int) substr(parse_url($videoID, PHP_URL_PATH), 1);
  744. }
  745. $add_data = ' data-vimeoid="'.$videoID.'" data-videowidth="'.$videoWidth.'" data-videoheight="'.$videoHeight.'" data-videoattributes="'.$videoArgs.'"';
  746. //no controls for vimeo $add_data .= ($v_controls) ? ' data-videocontrols="none"' : ' data-videocontrols="controls"';
  747. //$html = "<iframe src='".$setBase."player.vimeo.com/video/".$videoID."?".$videoArgs."' width='".$videoWidth."' height='".$videoHeight."' style='width:".$videoWidth."px;height:".$videoHeight."px;'></iframe>";
  748. break;
  749. case "html5":
  750. $urlPoster = UniteFunctionsRev::getVal($videoData, "urlPoster");
  751. $urlMp4 = UniteFunctionsRev::getVal($videoData, "urlMp4");
  752. $urlWebm = UniteFunctionsRev::getVal($videoData, "urlWebm");
  753. $urlOgv = UniteFunctionsRev::getVal($videoData, "urlOgv");
  754. $videopreload = UniteFunctionsRev::getVal($videoData, "preload");
  755. $videoloop = UniteFunctionsRev::getVal($videoData, "videoloop");
  756. $add_data = ' data-videowidth="'.$videoWidth.'" data-videoheight="'.$videoHeight.'"';
  757. $cover = UniteFunctionsRev::getVal($videoData, "cover");
  758. $cover = UniteFunctionsRev::strToBool($cover);
  759. if($cover == true){
  760. $add_data .= ' data-forceCover="1"';
  761. $dotted = UniteFunctionsRev::getVal($videoData, "dotted");
  762. if($dotted !== 'none')
  763. $add_data .= ' data-dottedoverlay="'.$dotted.'"';
  764. $ratio = UniteFunctionsRev::getVal($videoData, "ratio");
  765. if(!empty($ratio))
  766. $add_data .= ' data-aspectratio="'.$ratio.'"';
  767. }
  768. $add_data .= ($v_controls) ? ' data-videocontrols="none"' : ' data-videocontrols="controls"';
  769. if(!empty($urlPoster)) $add_data .= ' data-videoposter="'.$urlPoster.'"';
  770. if(!empty($urlOgv)) $add_data .= ' data-videoogv="'.$urlOgv.'"';
  771. if(!empty($urlWebm)) $add_data .= ' data-videowebm="'.$urlWebm.'"';
  772. if(!empty($urlMp4)) $add_data .= ' data-videomp4="'.$urlMp4.'"';
  773. if(!empty($videopreload)) $add_data .= ' data-videopreload="'.$videopreload.'"';
  774. if(UniteFunctionsRev::strToBool($videoloop) == true){ //fallback
  775. $add_data .= ' data-videoloop="loop"';
  776. }else{
  777. $add_data .= ' data-videoloop="'.$videoloop.'"';
  778. }
  779. break;
  780. default:
  781. UniteFunctionsRev::throwError("wrong video type: $videoType");
  782. break;
  783. }
  784. //set video autoplay, with backward compatability
  785. if(array_key_exists("autoplay", $videoData))
  786. $videoAutoplay = UniteFunctionsRev::getVal($videoData, "autoplay");
  787. else //backword compatability
  788. $videoAutoplay = UniteFunctionsRev::getVal($layer, "video_autoplay");
  789. //set video autoplayonlyfirsttime, with backward compatability
  790. if(array_key_exists("autoplayonlyfirsttime", $videoData))
  791. $videoAutoplayOnlyFirstTime = UniteFunctionsRev::getVal($videoData, "autoplayonlyfirsttime");
  792. else
  793. $videoAutoplayOnlyFirstTime = "";
  794. $videoAutoplay = UniteFunctionsRev::strToBool($videoAutoplay);
  795. $videoAutoplayOnlyFirstTime = UniteFunctionsRev::strToBool($videoAutoplayOnlyFirstTime);
  796. $mute = UniteFunctionsRev::getVal($videoData, "mute");
  797. $mute = UniteFunctionsRev::strToBool($mute);
  798. $htmlMute = ($mute) ? ' data-volume="mute"' : '';
  799. if($videoAutoplay == true)
  800. $htmlVideoAutoplay = ' data-autoplay="true"'." \n";
  801. else
  802. $htmlVideoAutoplay = ' data-autoplay="false"'." \n";
  803. if($videoAutoplayOnlyFirstTime == true && $videoAutoplay == true)
  804. $htmlVideoAutoplayOnlyFirstTime = ' data-autoplayonlyfirsttime="true"'." \n";
  805. else
  806. $htmlVideoAutoplayOnlyFirstTime = ' data-autoplayonlyfirsttime="false"'." \n";
  807. $videoNextSlide = UniteFunctionsRev::getVal($videoData, "nextslide");
  808. $videoNextSlide = UniteFunctionsRev::strToBool($videoNextSlide);
  809. if($videoNextSlide == true)
  810. $htmlVideoNextSlide = ' data-nextslideatend="true"'." \n";
  811. $videoThumbnail = @$videoData["previewimage"];
  812. if(trim($videoThumbnail) !== '') $htmlVideoThumbnail = ' data-videoposter="'.$videoThumbnail.'"'." \n";
  813. $disable_on_mobile = UniteFunctionsRev::getVal($videoData, "disable_on_mobile");
  814. $disable_on_mobile = UniteFunctionsRev::strToBool($disable_on_mobile);
  815. $htmlDisableOnMobile = ($disable_on_mobile) ? ' data-disablevideoonmobile="1"'." \n" : '';
  816. break;
  817. }
  818. if($do_rotation){
  819. $layer_rotation = ' -moz-transform: rotate('.$layer_2d_rotation.'deg); -ms-transform: rotate('.$layer_2d_rotation.'deg); -o-transform: rotate('.$layer_2d_rotation.'deg); -webkit-transform: rotate('.$layer_2d_rotation.'deg); transform: rotate('.$layer_2d_rotation.'deg);';
  820. $layer_rotation .= ' -moz-transform-origin: '.$layer_2d_origin_x.'% '.$layer_2d_origin_y.'%; -ms-transform-origin: '.$layer_2d_origin_x.'% '.$layer_2d_origin_y.'%; -o-transform-origin: '.$layer_2d_origin_x.'% '.$layer_2d_origin_y.'%; -webkit-transform-origin: '.$layer_2d_origin_x.'% '.$layer_2d_origin_y.'%; transform-origin: '.$layer_2d_origin_x.'% '.$layer_2d_origin_y.'%;';
  821. }
  822. //handle end transitions:
  823. $endTime = trim(UniteFunctionsRev::getVal($layer, "endtime"));
  824. $realEndTime = trim(UniteFunctionsRev::getVal($layer, "realEndTime"));
  825. $endWithSlide = UniteFunctionsRev::getVal($layer, "endWithSlide",false);
  826. $endSpeed = trim(UniteFunctionsRev::getVal($layer, "endspeed"));
  827. $calcSpeed = (!empty($endSpeed)) ? $endSpeed : $speed;
  828. if(!empty($calcSpeed) && $realEndTime - $calcSpeed !== $endTime){
  829. $endTime = $realEndTime - $calcSpeed;
  830. }
  831. $htmlEnd = "";
  832. $customout = '';
  833. if(!empty($endTime) && $endWithSlide !== true){
  834. $htmlEnd = " data-end=\"$endTime\""." \n";
  835. }
  836. if(!empty($endSpeed))
  837. $htmlEnd .= " data-endspeed=\"$endSpeed\""." \n";
  838. $endEasing = trim(UniteFunctionsRev::getVal($layer, "endeasing"));
  839. if(!empty($endSpeed) && $endEasing != "nothing")
  840. $htmlEnd .= " data-endeasing=\"$endEasing\""." \n";
  841. //add animation to class
  842. $endAnimation = trim(UniteFunctionsRev::getVal($layer, "endanimation"));
  843. if($endAnimation == "fade") $endAnimation = "tp-fade";
  844. if(!array_key_exists($endAnimation, $endAnimations) && array_key_exists($endAnimation, $customEndAnimations)){ //if true, add custom animation
  845. $customout = ' data-customout="';
  846. $animArr = RevOperations::getCustomAnimationByHandle($customEndAnimations[$endAnimation]);
  847. if($animArr !== false) $customout.= RevOperations::parseCustomAnimationByArray($animArr);
  848. $customout.= '"';
  849. $endAnimation = 'customout';
  850. }
  851. if(strpos($endAnimation, 'customin-') !== false || strpos($endAnimation, 'customout-') !== false) $endAnimation = "";
  852. if(!empty($endAnimation) && $endAnimation != "auto")
  853. $outputClass .= " ".$endAnimation;
  854. //slide link
  855. $htmlLink = "";
  856. $slideLink = UniteFunctionsRev::getVal($layer, "link_slide");
  857. if(!empty($slideLink) && $slideLink != "nothing" && $slideLink != "scroll_under"){
  858. //get slide index from id
  859. if(is_numeric($slideLink))
  860. $slideLink = UniteFunctionsRev::getVal($this->slidesNumIndex, $slideLink);
  861. if(!empty($slideLink))
  862. $htmlLink = " data-linktoslide=\"$slideLink\""." \n";
  863. }
  864. //scroll under the slider
  865. if($slideLink == "scroll_under"){
  866. $outputClass .= " tp-scrollbelowslider";
  867. $scrollUnderOffset = intval(UniteFunctionsRev::getVal($layer, "scrollunder_offset"));
  868. $htmlLink .= " data-scrolloffset=\"".$scrollUnderOffset."\""." \n";
  869. }
  870. //hidden under resolution
  871. $htmlHidden = "";
  872. $layerHidden = UniteFunctionsRev::getVal($layer, "hiddenunder");
  873. if($layerHidden == "true" || $layerHidden == "1")
  874. $htmlHidden = ' data-captionhidden="on"'." \n";
  875. $htmlParams = $add_data.$htmlEnd.$htmlLink.$htmlVideoAutoplay.$htmlVideoAutoplayOnlyFirstTime.$htmlVideoNextSlide.$htmlVideoThumbnail.$htmlHidden.$htmlMute.$htmlDisableOnMobile.$htmlCover.$htmlDotted.$htmlRatio.$htmlRewind."\n";
  876. //set positioning options
  877. $alignHor = UniteFunctionsRev::getVal($layer,"align_hor","left");
  878. $alignVert = UniteFunctionsRev::getVal($layer, "align_vert","top");
  879. $htmlPosX = "";
  880. $htmlPosY = "";
  881. switch($alignHor){
  882. default:
  883. case "left":
  884. $htmlPosX = " data-x=\"".$left."\"";
  885. break;
  886. case "center":
  887. $htmlPosX = " data-x=\"center\" data-hoffset=\"".$left."\"";
  888. break;
  889. case "right":
  890. $left = (int)$left*-1;
  891. $htmlPosX = " data-x=\"right\" data-hoffset=\"".$left."\"";
  892. break;
  893. }
  894. switch($alignVert){
  895. default:
  896. case "top":
  897. $htmlPosY = " data-y=\"".$top."\" ";
  898. break;
  899. case "middle":
  900. $htmlPosY = " data-y=\"center\" data-voffset=\"".$top."\"";
  901. break;
  902. case "bottom":
  903. $top = (int)$top*-1;
  904. $htmlPosY = " data-y=\"bottom\" data-voffset=\"".$top."\"";
  905. break;
  906. }
  907. //set corners
  908. $htmlCorners = "";
  909. if($type == "text"){
  910. $cornerLeft = UniteFunctionsRev::getVal($layer, "corner_left");
  911. $cornerRight = UniteFunctionsRev::getVal($layer, "corner_right");
  912. switch($cornerLeft){
  913. case "curved":
  914. $htmlCorners .= "<div class='frontcorner'></div>";
  915. break;
  916. case "reverced":
  917. $htmlCorners .= "<div class='frontcornertop'></div>";
  918. break;
  919. }
  920. switch($cornerRight){
  921. case "curved":
  922. $htmlCorners .= "<div class='backcorner'></div>";
  923. break;
  924. case "reverced":
  925. $htmlCorners .= "<div class='backcornertop'></div>";
  926. break;
  927. }
  928. //add resizeme class
  929. $resizeme = UniteFunctionsRev::getVal($layer, "resizeme");
  930. if($resizeme == "true" || $resizeme == "1")
  931. $outputClass .= ' tp-resizeme';
  932. }//end text related layer
  933. //make some modifications for the full screen video
  934. if($isFullWidthVideo == true){
  935. $htmlPosX = " data-x=\"0\"";
  936. $htmlPosY = " data-y=\"0\"";
  937. $outputClass .= " fullscreenvideo";
  938. }
  939. //parallax part
  940. $use_parallax = $this->slider->getParam("use_parallax","off");
  941. $parallax_class = '';
  942. if($use_parallax == 'on'){
  943. $slide_level = intval(UniteFunctionsRev::getVal($layer, "parallax_level", '-'));
  944. if($slide_level !== '-')
  945. $parallax_class = ' rs-parallaxlevel-'.$slide_level;
  946. }
  947. //check for loop animation here
  948. $do_loop = UniteFunctionsRev::getVal($layer,"loop_animation","none");
  949. $loop_data = '';
  950. $loop_class = '';
  951. if($do_loop !== 'none'){
  952. $loop_class = ' '.$do_loop;
  953. switch($do_loop){
  954. case 'rs-pendulum':
  955. $loop_data.= ' data-easing="'.UniteFunctionsRev::getVal($layer,"loop_easing","Power3.easeInOut").'"';
  956. $loop_data.= ' data-startdeg="'.UniteFunctionsRev::getVal($layer,"loop_startdeg","-20").'"';
  957. $loop_data.= ' data-enddeg="'.UniteFunctionsRev::getVal($layer,"loop_enddeg","20").'"';
  958. $loop_data.= ' data-speed="'.UniteFunctionsRev::getVal($layer,"loop_speed","2").'"';
  959. $loop_data.= ' data-origin="'.UniteFunctionsRev::getVal($layer,"loop_xorigin","50").'% '.UniteFunctionsRev::getVal($layer,"loop_yorigin","50").'%"';
  960. break;
  961. case 'rs-rotate':
  962. $loop_data.= ' data-easing="'.UniteFunctionsRev::getVal($layer,"loop_easing","Power3.easeInOut").'"';
  963. $loop_data.= ' data-startdeg="'.UniteFunctionsRev::getVal($layer,"loop_startdeg","-20").'"';
  964. $loop_data.= ' data-enddeg="'.UniteFunctionsRev::getVal($layer,"loop_enddeg","20").'"';
  965. $loop_data.= ' data-speed="'.UniteFunctionsRev::getVal($layer,"loop_speed","2").'"';
  966. $loop_data.= ' data-origin="'.UniteFunctionsRev::getVal($layer,"loop_xorigin","50").'% '.UniteFunctionsRev::getVal($layer,"loop_yorigin","50").'%"';
  967. break;
  968. case 'rs-slideloop':
  969. $loop_data.= ' data-easing="'.UniteFunctionsRev::getVal($layer,"loop_easing","Power3.easeInOut").'"';
  970. $loop_data.= ' data-speed="'.UniteFunctionsRev::getVal($layer,"loop_speed","1").'"';
  971. $loop_data.= ' data-xs="'.UniteFunctionsRev::getVal($layer,"loop_xstart","0").'"';
  972. $loop_data.= ' data-xe="'.UniteFunctionsRev::getVal($layer,"loop_xend","0").'"';
  973. $loop_data.= ' data-ys="'.UniteFunctionsRev::getVal($layer,"loop_ystart","0").'"';
  974. $loop_data.= ' data-ye="'.UniteFunctionsRev::getVal($layer,"loop_yend","0").'"';
  975. break;
  976. case 'rs-pulse':
  977. $loop_data.= ' data-easing="'.UniteFunctionsRev::getVal($layer,"loop_easing","Power3.easeInOut").'"';
  978. $loop_data.= ' data-speed="'.UniteFunctionsRev::getVal($layer,"loop_speed","1").'"';
  979. $loop_data.= ' data-zoomstart="'.UniteFunctionsRev::getVal($layer,"loop_zoomstart","1").'"';
  980. $loop_data.= ' data-zoomend="'.UniteFunctionsRev::getVal($layer,"loop_zoomend","1").'"';
  981. break;
  982. case 'rs-wave':
  983. $loop_data.= ' data-speed="'.UniteFunctionsRev::getVal($layer,"loop_speed","1").'"';
  984. $loop_data.= ' data-angle="'.UniteFunctionsRev::getVal($layer,"loop_angle","0").'"';
  985. $loop_data.= ' data-radius="'.UniteFunctionsRev::getVal($layer,"loop_radius","10").'"';
  986. $loop_data.= ' data-origin="'.UniteFunctionsRev::getVal($layer,"loop_xorigin","50").'% '.UniteFunctionsRev::getVal($layer,"loop_yorigin","50").'%"';
  987. break;
  988. }
  989. }
  990. echo "\n <!-- LAYER NR. ";
  991. echo $zIndex - 4;
  992. echo " -->\n";
  993. echo " <div class=\"".$outputClass;
  994. echo ($classes != '') ? ' '.$classes : '';
  995. echo $parallax_class;
  996. if($static_slide) echo ' tp-static-layer';
  997. echo $videoclass;
  998. echo "\" \n";
  999. echo ($ids != '') ? ' '.$ids." \n" : '';
  1000. echo ($title != '') ? ' '.$title." \n" : '';
  1001. echo ($rel != '') ? ' '.$rel." \n" : '';
  1002. if($htmlPosX != "") echo " ".$htmlPosX." \n";
  1003. if($htmlPosY != "") echo " ".$htmlPosY." \n";
  1004. if($customin != "") echo " ".$customin." \n";
  1005. if($customout != "") echo " ".$customout." \n";
  1006. echo " data-speed=\"".$speed."\" \n";
  1007. echo " data-start=\"".$time."\" \n";
  1008. echo " data-easing=\"".$easing."\" \n";
  1009. if($type == "text"){ //only output if we are a text layer
  1010. echo " data-splitin=\"".$splitin."\" \n";
  1011. echo " data-splitout=\"".$splitout."\" \n";
  1012. }
  1013. //check if static layer and if yes, set values for it.
  1014. if($static_slide){
  1015. if($isTemplate != "true"){
  1016. $start_on_slide = intval(UniteFunctionsRev::getVal($layer,"static_start",1)) - 1;
  1017. $end_on_slide = intval(UniteFunctionsRev::getVal($layer,"static_end",2)) - 1;
  1018. }else{
  1019. $start_on_slide = '-1';
  1020. $end_on_slide = '-1';
  1021. }
  1022. echo ' data-startslide="'.$start_on_slide.'"'." \n";
  1023. echo ' data-endslide="'.$end_on_slide.'"'." \n";
  1024. }
  1025. echo " data-elementdelay=\"".$elementdelay."\" \n";
  1026. echo " data-endelementdelay=\"".$endelementdelay."\" \n";
  1027. if($htmlParams != "") echo " ".$htmlParams;
  1028. echo " style=\"z-index: ".$zIndex.";".$inline_styles. "\"";
  1029. echo ">";
  1030. if($do_loop !== 'none'){
  1031. echo "\n".' <div style="'.$layer_rotation.'" class="tp-layer-inner-rotation ';
  1032. $rotationClass = trim($class);
  1033. $rotationClass = trim($rotationClass) . " ";
  1034. echo $rotationClass;
  1035. echo $loop_class;
  1036. echo '" ';
  1037. echo $loop_data;
  1038. echo '>';
  1039. }elseif($layer_rotation != ''){
  1040. $rotationClass = trim($class);
  1041. $rotationClass = trim($rotationClass) . " ";
  1042. echo '<div class="tp-layer-inner-rotation '.$rotationClass.'" style="'.$layer_rotation.'">'." \n";
  1043. }
  1044. echo stripslashes($html)." \n";
  1045. if($htmlCorners != ""){
  1046. echo $htmlCorners." \n";
  1047. }
  1048. if($do_loop !== 'none' || $layer_rotation != ''){
  1049. echo " </div>\n";
  1050. }
  1051. echo " </div>\n";
  1052. $zIndex++;
  1053. endforeach;
  1054. }
  1055. /**
  1056. *
  1057. * put slider javascript
  1058. */
  1059. private function putJS(){
  1060. $params = $this->slider->getParams();
  1061. $sliderType = $this->slider->getParam("slider_type");
  1062. $optFullWidth = ($sliderType == "fullwidth")?"on":"off";
  1063. $optFullScreen = "off";
  1064. if($sliderType == "fullscreen"){
  1065. $optFullWidth = "off";
  1066. $optFullScreen = "on";
  1067. }
  1068. $use_spinner = $this->slider->getParam("use_spinner","0");
  1069. $spinner_color = $this->slider->getParam("spinner_color","#FFFFFF");
  1070. $noConflict = $this->slider->getParam("jquery_noconflict","on");
  1071. //set thumb amount
  1072. $numSlides = $this->slider->getNumSlides(true);
  1073. $thumbAmount = (int)$this->slider->getParam("thumb_amount","5");
  1074. if($thumbAmount > $numSlides)
  1075. $thumbAmount = $numSlides;
  1076. //get stop slider options
  1077. $stopSlider = $this->slider->getParam("stop_slider","off");
  1078. $stopAfterLoops = $this->slider->getParam("stop_after_loops","0");
  1079. $stopAtSlide = $this->slider->getParam("stop_at_slide","2");
  1080. if($stopSlider == "off"){
  1081. $stopAfterLoops = "-1";
  1082. $stopAtSlide = "-1";
  1083. }
  1084. $oneSlideLoop = $this->slider->getParam("loop_slide","loop");
  1085. if($oneSlideLoop == 'noloop' && $this->hasOnlyOneSlide == true){
  1086. $stopAfterLoops = '0';
  1087. $stopAtSlide = '1';
  1088. }
  1089. // set hide navigation after
  1090. $hideThumbs = $this->slider->getParam("hide_thumbs","200");
  1091. if(is_numeric($hideThumbs) == false)
  1092. $hideThumbs = "0";
  1093. else{
  1094. $hideThumbs = (int)$hideThumbs;
  1095. if($hideThumbs < 10)
  1096. $hideThumbs = 10;
  1097. }
  1098. $alwaysOn = $this->slider->getParam("navigaion_always_on","false");
  1099. if($alwaysOn == "true")
  1100. $hideThumbs = "0";
  1101. $sliderID = $this->slider->getID();
  1102. //treat hide slider at limit
  1103. $hideSliderAtLimit = $this->slider->getParam("hide_slider_under","0",RevSlider::VALIDATE_NUMERIC);
  1104. if(!empty($hideSliderAtLimit))
  1105. $hideSliderAtLimit++;
  1106. $hideCaptionAtLimit = $this->slider->getParam("hide_defined_layers_under","0",RevSlider::VALIDATE_NUMERIC);;
  1107. if(!empty($hideCaptionAtLimit))
  1108. $hideCaptionAtLimit++;
  1109. $hideAllCaptionAtLimit = $this->slider->getParam("hide_all_layers_under","0",RevSlider::VALIDATE_NUMERIC);;
  1110. if(!empty($hideAllCaptionAtLimit))
  1111. $hideAllCaptionAtLimit++;
  1112. //start_with_slide
  1113. $startWithSlide = $this->slider->getStartWithSlideSetting();
  1114. //modify navigation type (backward compatability)
  1115. $arrowsType = $this->slider->getParam("navigation_arrows","nexttobullets");
  1116. switch($arrowsType){
  1117. case "verticalcentered":
  1118. $arrowsType = "solo";
  1119. break;
  1120. }
  1121. //More Mobile Options
  1122. $hideThumbsOnMobile = $this->slider->getParam("hide_thumbs_on_mobile","off");
  1123. $hideThumbsDelayMobile = $this->slider->getParam("hide_thumbs_delay_mobile","1500");
  1124. $hideBulletsOnMobile = $this->slider->getParam("hide_bullets_on_mobile","off");
  1125. $hideArrowsOnMobile = $this->slider->getParam("hide_arrows_on_mobile","off");
  1126. $hideThumbsUnderResolution = $this->slider->getParam("hide_thumbs_under_resolution","0",RevSlider::VALIDATE_NUMERIC);
  1127. $timerBar = $this->slider->getParam("show_timerbar","top");
  1128. $disableKenBurnOnMobile = $this->slider->getParam("disable_kenburns_on_mobile","off");
  1129. $swipe_velocity = $this->slider->getParam("swipe_velocity","0.7",RevSlider::VALIDATE_NUMERIC);
  1130. $swipe_min_touches = $this->slider->getParam("swipe_min_touches","1",RevSlider::VALIDATE_NUMERIC);
  1131. $swipe_max_touches = $this->slider->getParam("swipe_max_touches","1",RevSlider::VALIDATE_NUMERIC);
  1132. $drag_block_vertical = $this->slider->getParam("drag_block_vertical","false");
  1133. $use_parallax = $this->slider->getParam("use_parallax","off");
  1134. $disable_parallax_mobile = $this->slider->getParam("disable_parallax_mobile","off");
  1135. if($use_parallax == 'on'){
  1136. $parallax_type = $this->slider->getParam("parallax_type","mouse");
  1137. $parallax_bg_freeze = $this->slider->getParam("parallax_bg_freeze","off");
  1138. $parallax_level[] = intval($this->slider->getParam("parallax_level_1","5"));
  1139. $parallax_level[] = intval($this->slider->getParam("parallax_level_2","10"));
  1140. $parallax_level[] = intval($this->slider->getParam("parallax_level_3","15"));
  1141. $parallax_level[] = intval($this->slider->getParam("parallax_level_4","20"));
  1142. $parallax_level[] = intval($this->slider->getParam("parallax_level_5","25"));
  1143. $parallax_level[] = intval($this->slider->getParam("parallax_level_6","30"));
  1144. $parallax_level[] = intval($this->slider->getParam("parallax_level_7","35"));
  1145. $parallax_level[] = intval($this->slider->getParam("parallax_level_8","40"));
  1146. $parallax_level[] = intval($this->slider->getParam("parallax_level_9","45"));
  1147. $parallax_level[] = intval($this->slider->getParam("parallax_level_10","50"));
  1148. $parallax_level = implode(',', $parallax_level);
  1149. }
  1150. $operations = new RevOperations();
  1151. $arrValues = $operations->getGeneralSettingsValues();
  1152. $do_delay = $this->slider->getParam("start_js_after_delay","0");
  1153. $do_delay = apply_filters('revslider_add_js_delay', $do_delay);
  1154. $do_delay = intval($do_delay);
  1155. $js_to_footer = (isset($arrValues['js_to_footer']) && $arrValues['js_to_footer'] == 'on') ? true : false;
  1156. //add inline style into the footer
  1157. if($js_to_footer && $this->previewMode == false){
  1158. ob_start();
  1159. }
  1160. ?>
  1161. <?php
  1162. // ADD SCOPED INLINE STYLES
  1163. $this->add_inline_styles();
  1164. ?>
  1165. <script type="text/javascript">
  1166. /******************************************
  1167. - PREPARE PLACEHOLDER FOR SLIDER -
  1168. ******************************************/
  1169. <?php
  1170. /*var setREVStartSize = function() {
  1171. var tpopt = new Object();
  1172. tpopt.startwidth = <?php echo $this->slider->getParam("width","900")?>;
  1173. tpopt.startheight = <?php echo $this->slider->getParam("height","300")?>;
  1174. tpopt.container = jQuery('#<?php echo $this->sliderHtmlID?>');
  1175. tpopt.fullScreen = "<?php echo $optFullScreen?>";
  1176. tpopt.forceFullWidth="<?php echo $this->slider->getParam("force_full_width", 'off'); ?>";
  1177. tpopt.container.closest('.rev_slider_wrapper').css({'height':tpopt.container.height()});
  1178. tpopt.width=parseInt(tpopt.container.width(),0);
  1179. tpopt.height=parseInt(tpopt.container.height(),0);
  1180. tpopt.bw= (tpopt.width / tpopt.startwidth);
  1181. tpopt.bh = (tpopt.height / tpopt.startheight);
  1182. if (tpopt.bh>tpopt.bw) tpopt.bh=tpopt.bw;
  1183. if (tpopt.bh<tpopt.bw) tpopt.bw = tpopt.bh;
  1184. if (tpopt.bw<tpopt.bh) tpopt.bh = tpopt.bw;
  1185. if (tpopt.bh>1) { tpopt.bw=1; tpopt.bh=1; }
  1186. if (tpopt.bw>1) {tpopt.bw=1; tpopt.bh=1; }
  1187. tpopt.height = Math.round(tpopt.startheight * (tpopt.width/tpopt.startwidth));
  1188. if (tpopt.height>tpopt.startheight && tpopt.autoHeight!="on") tpopt.height=tpopt.startheight;
  1189. if (tpopt.fullScreen=="on") {
  1190. tpopt.height = tpopt.bw * tpopt.startheight;
  1191. var cow = tpopt.container.parent().width();
  1192. var coh = jQuery(window).height();
  1193. if (tpopt.fullScreenOffsetContainer!=undefined) {
  1194. try{
  1195. var offcontainers = tpopt.fullScreenOffsetContainer.split(",");
  1196. jQuery.each(offcontainers,function(index,searchedcont) {
  1197. coh = coh - jQuery(searchedcont).outerHeight(true);
  1198. if (coh<tpopt.minFullScreenHeight) coh=tpopt.minFullScreenHeight;
  1199. });
  1200. } catch(e) {}
  1201. }
  1202. tpopt.container.parent().height(coh);
  1203. tpopt.container.height(coh);
  1204. tpopt.container.closest('.rev_slider_wrapper').height(coh);
  1205. tpopt.container.closest('.forcefullwidth_wrapper_tp_banner').find('.tp-fullwidth-forcer').height(coh);
  1206. tpopt.container.css({'height':'100%'});
  1207. tpopt.height=coh;
  1208. } else {
  1209. tpopt.container.height(tpopt.height);
  1210. tpopt.container.closest('.rev_slider_wrapper').height(tpopt.height);
  1211. tpopt.container.closest('.forcefullwidth_wrapper_tp_banner').find('.tp-fullwidth-forcer').height(tpopt.height);
  1212. }
  1213. } */
  1214. ?>
  1215. var setREVStartSize = function() {
  1216. var tpopt = new Object();
  1217. tpopt.startwidth = <?php echo $this->slider->getParam("width","900")?>;
  1218. tpopt.startheight = <?php echo $this->slider->getParam("height","300")?>;
  1219. tpopt.container = jQuery('#<?php echo $this->sliderHtmlID?>');
  1220. tpopt.fullScreen = "<?php echo $optFullScreen?>";
  1221. tpopt.forceFullWidth="<?php echo $this->slider->getParam("force_full_width", 'off'); ?>";
  1222. tpopt.container.closest(".rev_slider_wrapper").css({height:tpopt.container.height()});tpopt.width=parseInt(tpopt.container.width(),0);tpopt.height=parseInt(tpopt.container.height(),0);tpopt.bw=tpopt.width/tpopt.startwidth;tpopt.bh=tpopt.height/tpopt.startheight;if(tpopt.bh>tpopt.bw)tpopt.bh=tpopt.bw;if(tpopt.bh<tpopt.bw)tpopt.bw=tpopt.bh;if(tpopt.bw<tpopt.bh)tpopt.bh=tpopt.bw;if(tpopt.bh>1){tpopt.bw=1;tpopt.bh=1}if(tpopt.bw>1){tpopt.bw=1;tpopt.bh=1}tpopt.height=Math.round(tpopt.startheight*(tpopt.width/tpopt.startwidth));if(tpopt.height>tpopt.startheight&&tpopt.autoHeight!="on")tpopt.height=tpopt.startheight;if(tpopt.fullScreen=="on"){tpopt.height=tpopt.bw*tpopt.startheight;var cow=tpopt.container.parent().width();var coh=jQuery(window).height();if(tpopt.fullScreenOffsetContainer!=undefined){try{var offcontainers=tpopt.fullScreenOffsetContainer.split(",");jQuery.each(offcontainers,function(e,t){coh=coh-jQuery(t).outerHeight(true);if(coh<tpopt.minFullScreenHeight)coh=tpopt.minFullScreenHeight})}catch(e){}}tpopt.container.parent().height(coh);tpopt.container.height(coh);tpopt.container.closest(".rev_slider_wrapper").height(coh);tpopt.container.closest(".forcefullwidth_wrapper_tp_banner").find(".tp-fullwidth-forcer").height(coh);tpopt.container.css({height:"100%"});tpopt.height=coh;}else{tpopt.container.height(tpopt.height);tpopt.container.closest(".rev_slider_wrapper").height(tpopt.height);tpopt.container.closest(".forcefullwidth_wrapper_tp_banner").find(".tp-fullwidth-forcer").height(tpopt.height);}
  1223. };
  1224. /* CALL PLACEHOLDER */
  1225. setREVStartSize();
  1226. var tpj=jQuery;
  1227. <?php if($noConflict == "on"):?>tpj.noConflict();<?php endif;?>
  1228. var revapi<?php echo $sliderID?>;
  1229. tpj(document).ready(function() {
  1230. if(tpj('#<?php echo $this->sliderHtmlID?>').revolution == undefined){
  1231. revslider_showDoubleJqueryError('#<?php echo $this->sliderHtmlID?>');
  1232. }else{
  1233. revapi<?php echo $sliderID?> = tpj('#<?php echo $this->sliderHtmlID?>').show().revolution(
  1234. {
  1235. <?php if($do_delay > 0){ ?>startDelay: <?php echo $do_delay; ?>,<?php } ?>
  1236. dottedOverlay:"<?php echo $this->slider->getParam("background_dotted_overlay","none");?>",
  1237. delay:<?php echo $this->slider->getParam("delay","9000",RevSlider::FORCE_NUMERIC)?>,
  1238. startwidth:<?php echo $this->slider->getParam("width","900")?>,
  1239. startheight:<?php echo $this->slider->getParam("height","300")?>,
  1240. hideThumbs:<?php echo $hideThumbs?>,
  1241. thumbWidth:<?php echo $this->slider->getParam("thumb_width","100",RevSlider::FORCE_NUMERIC)?>,
  1242. thumbHeight:<?php echo $this->slider->getParam("thumb_height","50",RevSlider::FORCE_NUMERIC)?>,
  1243. thumbAmount:<?php echo $thumbAmount?>,
  1244. <?php
  1245. $minHeight = $this->slider->getParam("min_height","0",RevSlider::FORCE_NUMERIC);
  1246. if($minHeight > 0){ ?>minHeight:<?php echo $minHeight; ?>,
  1247. <?php
  1248. }
  1249. ?>
  1250. simplifyAll:"<?php echo $this->slider->getParam("simplify_ie8_ios4","off"); ?>",
  1251. navigationType:"<?php echo $this->slider->getParam("navigaion_type","none")?>",
  1252. navigationArrows:"<?php echo $arrowsType?>",
  1253. navigationStyle:"<?php echo $this->slider->getParam("navigation_style","round")?>",
  1254. touchenabled:"<?php echo $this->slider->getParam("touchenabled","on")?>",
  1255. onHoverStop:"<?php echo $this->slider->getParam("stop_on_hover","on")?>",
  1256. nextSlideOnWindowFocus:"<?php echo $this->slider->getParam("next_slide_on_window_focus","off")?>",
  1257. <?php
  1258. if($this->slider->getParam("touchenabled","on") == 'on'){
  1259. ?>swipe_threshold: <?php echo $swipe_velocity ?>,
  1260. swipe_min_touches: <?php echo $swipe_min_touches ?>,
  1261. drag_block_vertical: <?php echo ($drag_block_vertical == 'true') ? 'true' : 'false'; ?>,
  1262. <?php
  1263. }
  1264. ?>
  1265. <?php
  1266. if($use_parallax == 'on'){
  1267. ?>
  1268. parallax:"<?php echo $parallax_type; ?>",
  1269. parallaxBgFreeze:"<?php echo $parallax_bg_freeze; ?>",
  1270. parallaxLevels:[<?php echo $parallax_level; ?>],
  1271. <?php
  1272. if($disable_parallax_mobile == 'on'){
  1273. ?>
  1274. parallaxDisableOnMobile:"on",
  1275. <?php
  1276. }
  1277. }
  1278. ?>
  1279. <?php
  1280. if($disableKenBurnOnMobile == 'on'){
  1281. ?>
  1282. panZoomDisableOnMobile:"on",
  1283. <?php
  1284. }
  1285. ?>
  1286. keyboardNavigation:"<?php echo $this->slider->getParam("keyboard_navigation","off")?>",
  1287. navigationHAlign:"<?php echo $this->slider->getParam("navigaion_align_hor","center")?>",
  1288. navigationVAlign:"<?php echo $this->slider->getParam("navigaion_align_vert","bottom")?>",
  1289. navigationHOffset:<?php echo $this->slider->getParam("navigaion_offset_hor","0",RevSlider::FORCE_NUMERIC)?>,
  1290. navigationVOffset:<?php echo $this->slider->getParam("navigaion_offset_vert","20",RevSlider::FORCE_NUMERIC)?>,
  1291. soloArrowLeftHalign:"<?php echo $this->slider->getParam("leftarrow_align_hor","left")?>",
  1292. soloArrowLeftValign:"<?php echo $this->slider->getParam("leftarrow_align_vert","center")?>",
  1293. soloArrowLeftHOffset:<?php echo $this->slider->getParam("leftarrow_offset_hor","20",RevSlider::FORCE_NUMERIC)?>,
  1294. soloArrowLeftVOffset:<?php echo $this->slider->getParam("leftarrow_offset_vert","0",RevSlider::FORCE_NUMERIC)?>,
  1295. soloArrowRightHalign:"<?php echo $this->slider->getParam("rightarrow_align_hor","right")?>",
  1296. soloArrowRightValign:"<?php echo $this->slider->getParam("rightarrow_align_vert","center")?>",
  1297. soloArrowRightHOffset:<?php echo $this->slider->getParam("rightarrow_offset_hor","20",RevSlider::FORCE_NUMERIC)?>,
  1298. soloArrowRightVOffset:<?php echo $this->slider->getParam("rightarrow_offset_vert","0",RevSlider::FORCE_NUMERIC)?>,
  1299. shadow:<?php echo $this->slider->getParam("shadow_type","2")?>,
  1300. fullWidth:"<?php echo $optFullWidth?>",
  1301. fullScreen:"<?php echo $optFullScreen?>",
  1302. <?php
  1303. if($use_spinner == '-1'){
  1304. ?>
  1305. spinner:"off",
  1306. <?php
  1307. }else{
  1308. ?>
  1309. spinner:"spinner<?php echo $use_spinner?>",
  1310. <?php
  1311. }
  1312. ?>
  1313. stopLoop:"<?php echo $stopSlider?>",
  1314. stopAfterLoops:<?php echo $stopAfterLoops?>,
  1315. stopAtSlide:<?php echo $stopAtSlide?>,
  1316. shuffle:"<?php echo $this->slider->getParam("shuffle","off") ?>",
  1317. <?php if($this->slider->getParam("slider_type") == "fullwidth"){ ?>autoHeight:"<?php echo $this->slider->getParam("auto_height", 'off'); ?>",<?php } ?>
  1318. <?php if($this->slider->getParam("slider_type") == "fullwidth" || $this->slider->getParam("slider_type") == "fullscreen"){ ?>forceFullWidth:"<?php echo $this->slider->getParam("force_full_width", 'off'); ?>",<?php } ?>
  1319. <?php if($this->slider->getParam("slider_type") == "fullscreen"){ ?>fullScreenAlignForce:"<?php echo $this->slider->getParam("full_screen_align_force","off") ?>",<?php } ?>
  1320. <?php if($this->slider->getParam("slider_type") == "fullscreen"){ ?>minFullScreenHeight:"<?php echo $this->slider->getParam("fullscreen_min_height","0") ?>",<?php } ?>
  1321. <?php if($timerBar == "hide"){ ?>hideTimerBar:"on",<?php } ?>
  1322. hideThumbsOnMobile:"<?php echo $hideThumbsOnMobile?>",
  1323. <?php if($hideThumbsOnMobile == 'off'){ ?>hideNavDelayOnMobile:<?php echo $hideThumbsDelayMobile; ?>,
  1324. <?php } ?>hideBulletsOnMobile:"<?php echo $hideBulletsOnMobile?>",
  1325. hideArrowsOnMobile:"<?php echo $hideArrowsOnMobile?>",
  1326. hideThumbsUnderResolution:<?php echo $hideThumbsUnderResolution?>,
  1327. <?php
  1328. if($this->slider->getParam("slider_type") == 'fullscreen'){
  1329. ?>
  1330. fullScreenOffsetContainer: "<?php echo $this->slider->getParam("fullscreen_offset_container","");?>",
  1331. fullScreenOffset: "<?php echo $this->slider->getParam("fullscreen_offset_size","");?>",
  1332. <?php
  1333. }
  1334. ?>
  1335. hideSliderAtLimit:<?php echo $hideSliderAtLimit?>,
  1336. hideCaptionAtLimit:<?php echo $hideCaptionAtLimit?>,
  1337. hideAllCaptionAtLilmit:<?php echo $hideAllCaptionAtLimit?>,
  1338. startWithSlide:<?php echo $startWithSlide?>
  1339. });
  1340. <?php
  1341. if($this->slider->getParam("custom_javascript", '') !== ''){
  1342. echo stripslashes($this->slider->getParam("custom_javascript", ''));
  1343. }
  1344. ?>
  1345. }
  1346. }); /*ready*/
  1347. </script>
  1348. <?php
  1349. if($js_to_footer && $this->previewMode == false){
  1350. $js_content = ob_get_contents();
  1351. ob_clean();
  1352. ob_end_clean();
  1353. $this->rev_inline_js = $js_content;
  1354. add_action('wp_footer', array($this, 'add_inline_js'));
  1355. }
  1356. switch($use_spinner){
  1357. case '1':
  1358. case '2':
  1359. echo '<style type="text/css">'."\n";
  1360. echo ' #'.$this->sliderHtmlID_wrapper.' .tp-loader.spinner'.$use_spinner.'{ background-color: '.$spinner_color.' !important; }'."\n";
  1361. echo '</style>'."\n";
  1362. break;
  1363. case '3':
  1364. case '4':
  1365. echo '<style type="text/css">'."\n";
  1366. echo ' #'.$this->sliderHtmlID_wrapper.' .tp-loader.spinner'.$use_spinner.' div { background-color: '.$spinner_color.' !important; }'."\n";
  1367. echo '</style>'."\n";
  1368. break;
  1369. case '0':
  1370. case '5':
  1371. default:
  1372. break;
  1373. }
  1374. if($this->slider->getParam("custom_css", '') !== ''){
  1375. ?>
  1376. <style type="text/css">
  1377. <?php
  1378. echo stripslashes($this->slider->getParam("custom_css", ''));
  1379. ?>
  1380. </style>
  1381. <?php
  1382. }
  1383. }
  1384. /**
  1385. * Output Inline JS
  1386. */
  1387. public function add_inline_js(){
  1388. echo $this->rev_inline_js;
  1389. }
  1390. /**
  1391. * Output Dynamic Inline Styles
  1392. */
  1393. public function add_inline_styles(){
  1394. //echo '<div class="revsliderstyles">';
  1395. echo '<style scoped>';
  1396. $db = new UniteDBRev();
  1397. $styles = $db->fetch(GlobalsRevSlider::$table_css);
  1398. foreach($styles as $key => $style){
  1399. $handle = str_replace('.tp-caption', '', $style['handle']);
  1400. if(!isset($this->class_include[$handle])) unset($styles[$key]);
  1401. }
  1402. $styles = UniteCssParserRev::parseDbArrayToCss($styles, "\n");
  1403. $styles = UniteCssParserRev::compress_css($styles);
  1404. echo $styles;
  1405. echo '</style>'."\n";
  1406. //echo '</div>';
  1407. }
  1408. /**
  1409. *
  1410. * put inline error message in a box.
  1411. */
  1412. public function putErrorMessage($message){
  1413. ?>
  1414. <div style="width:800px;height:300px;margin-bottom:10px;border:1px solid black;margin:0px auto;">
  1415. <div style="padding-left:20px;padding-right:20px;line-height:1.5;padding-top:40px;color:red;font-size:16px;text-align:left;">
  1416. <?php _e("Revolution Slider Error",REVSLIDER_TEXTDOMAIN)?>: <?php echo $message?>
  1417. </div>
  1418. </div>
  1419. <script type="text/javascript">
  1420. jQuery(document).ready(function(){
  1421. jQuery(".rev_slider").show();
  1422. });
  1423. </script>
  1424. <?php
  1425. }
  1426. /**
  1427. *
  1428. * fill the responsitive slider values for further output
  1429. */
  1430. private function getResponsitiveValues(){
  1431. $sliderWidth = (int)$this->slider->getParam("width");
  1432. $sliderHeight = (int)$this->slider->getParam("height");
  1433. $percent = $sliderHeight / $sliderWidth;
  1434. $w1 = (int) $this->slider->getParam("responsitive_w1",0);
  1435. $w2 = (int) $this->slider->getParam("responsitive_w2",0);
  1436. $w3 = (int) $this->slider->getParam("responsitive_w3",0);
  1437. $w4 = (int) $this->slider->getParam("responsitive_w4",0);
  1438. $w5 = (int) $this->slider->getParam("responsitive_w5",0);
  1439. $w6 = (int) $this->slider->getParam("responsitive_w6",0);
  1440. $sw1 = (int) $this->slider->getParam("responsitive_sw1",0);
  1441. $sw2 = (int) $this->slider->getParam("responsitive_sw2",0);
  1442. $sw3 = (int) $this->slider->getParam("responsitive_sw3",0);
  1443. $sw4 = (int) $this->slider->getParam("responsitive_sw4",0);
  1444. $sw5 = (int) $this->slider->getParam("responsitive_sw5",0);
  1445. $sw6 = (int) $this->slider->getParam("responsitive_sw6",0);
  1446. $arrItems = array();
  1447. //add main item:
  1448. $arr = array();
  1449. $arr["maxWidth"] = -1;
  1450. $arr["minWidth"] = $w1;
  1451. $arr["sliderWidth"] = $sliderWidth;
  1452. $arr["sliderHeight"] = $sliderHeight;
  1453. $arrItems[] = $arr;
  1454. //add item 1:
  1455. if(empty($w1))
  1456. return($arrItems);
  1457. $arr = array();
  1458. $arr["maxWidth"] = $w1-1;
  1459. $arr["minWidth"] = $w2;
  1460. $arr["sliderWidth"] = $sw1;
  1461. $arr["sliderHeight"] = floor($sw1 * $percent);
  1462. $arrItems[] = $arr;
  1463. //add item 2:
  1464. if(empty($w2))
  1465. return($arrItems);
  1466. $arr["maxWidth"] = $w2-1;
  1467. $arr["minWidth"] = $w3;
  1468. $arr["sliderWidth"] = $sw2;
  1469. $arr["sliderHeight"] = floor($sw2 * $percent);
  1470. $arrItems[] = $arr;
  1471. //add item 3:
  1472. if(empty($w3))
  1473. return($arrItems);
  1474. $arr["maxWidth"] = $w3-1;
  1475. $arr["minWidth"] = $w4;
  1476. $arr["sliderWidth"] = $sw3;
  1477. $arr["sliderHeight"] = floor($sw3 * $percent);
  1478. $arrItems[] = $arr;
  1479. //add item 4:
  1480. if(empty($w4))
  1481. return($arrItems);
  1482. $arr["maxWidth"] = $w4-1;
  1483. $arr["minWidth"] = $w5;
  1484. $arr["sliderWidth"] = $sw4;
  1485. $arr["sliderHeight"] = floor($sw4 * $percent);
  1486. $arrItems[] = $arr;
  1487. //add item 5:
  1488. if(empty($w5))
  1489. return($arrItems);
  1490. $arr["maxWidth"] = $w5-1;
  1491. $arr["minWidth"] = $w6;
  1492. $arr["sliderWidth"] = $sw5;
  1493. $arr["sliderHeight"] = floor($sw5 * $percent);
  1494. $arrItems[] = $arr;
  1495. //add item 6:
  1496. if(empty($w6))
  1497. return($arrItems);
  1498. $arr["maxWidth"] = $w6-1;
  1499. $arr["minWidth"] = 0;
  1500. $arr["sliderWidth"] = $sw6;
  1501. $arr["sliderHeight"] = floor($sw6 * $percent);
  1502. $arrItems[] = $arr;
  1503. return($arrItems);
  1504. }
  1505. /**
  1506. *
  1507. * put responsitive inline styles
  1508. */
  1509. private function putResponsitiveStyles(){
  1510. $bannerWidth = $this->slider->getParam("width");
  1511. $bannerHeight = $this->slider->getParam("height");
  1512. $arrItems = $this->getResponsitiveValues();
  1513. ?>
  1514. <style type='text/css'>
  1515. #<?php echo $this->sliderHtmlID?>, #<?php echo $this->sliderHtmlID_wrapper?> { width:<?php echo $bannerWidth?>px; height:<?php echo $bannerHeight?>px;}
  1516. <?php
  1517. foreach($arrItems as $item):
  1518. $strMaxWidth = "";
  1519. if($item["maxWidth"] >= 0)
  1520. $strMaxWidth = "and (max-width: ".$item["maxWidth"]."px)";
  1521. ?>
  1522. @media only screen and (min-width: <?php echo $item["minWidth"]?>px) <?php echo $strMaxWidth?> {
  1523. #<?php echo $this->sliderHtmlID?>, #<?php echo $this->sliderHtmlID_wrapper?> { width:<?php echo $item["sliderWidth"]?>px; height:<?php echo $item["sliderHeight"]?>px;}
  1524. }
  1525. <?php
  1526. endforeach;
  1527. echo "</style>";
  1528. }
  1529. /**
  1530. *
  1531. * modify slider settings for preview mode
  1532. */
  1533. private function modifyPreviewModeSettings(){
  1534. $params = $this->slider->getParams();
  1535. $params["js_to_body"] = "false";
  1536. $this->slider->setParams($params);
  1537. }
  1538. /**
  1539. *
  1540. * put html slider on the html page.
  1541. * @param $data - mixed, can be ID ot Alias.
  1542. */
  1543. //TODO: settings google font, position, margin, background color, alt image text
  1544. public function putSliderBase($sliderID){
  1545. try{
  1546. self::$sliderSerial++;
  1547. $this->slider = new RevSlider();
  1548. $this->slider->initByMixed($sliderID);
  1549. $doWrapFromTemplate = false;
  1550. if($this->slider->isSlidesFromPosts() && $this->slider->getParam("slider_template_id",false) !== false){ //need to use general settings from the Template Slider
  1551. $this->slider->initByMixed($this->slider->getParam("slider_template_id",false));
  1552. $doWrapFromTemplate = $sliderID;
  1553. }
  1554. //modify settings for admin preview mode
  1555. if($this->previewMode == true)
  1556. $this->modifyPreviewModeSettings();
  1557. //set slider language
  1558. $isWpmlExists = UniteWpmlRev::isWpmlExists();
  1559. $useWpml = $this->slider->getParam("use_wpml","off");
  1560. if( $isWpmlExists && $useWpml == "on"){
  1561. if($this->previewMode == false)
  1562. $this->sliderLang = UniteFunctionsWPRev::getCurrentLangCode();
  1563. }
  1564. //edit html before slider
  1565. $htmlBeforeSlider = "";
  1566. if($this->slider->getParam("load_googlefont","false") == "true"){
  1567. $googleFont = $this->slider->getParam("google_font");
  1568. if(is_array($googleFont)){
  1569. foreach($googleFont as $key => $font){
  1570. $htmlBeforeSlider .= RevOperations::getCleanFontImport($font);
  1571. }
  1572. }else{
  1573. $htmlBeforeSlider .= RevOperations::getCleanFontImport($googleFont);
  1574. }
  1575. }
  1576. //pub js to body handle
  1577. if($this->slider->getParam("js_to_body","false") == "true"){
  1578. $operations = new RevOperations();
  1579. $arrValues = $operations->getGeneralSettingsValues();
  1580. $enable_logs = UniteFunctionsRev::getVal($arrValues, "enable_logs",'off');
  1581. if($enable_logs == 'on'){
  1582. $urlIncludeJS = UniteBaseClassRev::$url_plugin."rs-plugin/js/jquery.themepunch.enablelog.js?rev=". GlobalsRevSlider::SLIDER_REVISION;
  1583. $htmlBeforeSlider .= "<script type='text/javascript' src='$urlIncludeJS'></script>";
  1584. }
  1585. $urlIncludeJS = UniteBaseClassRev::$url_plugin."rs-plugin/js/jquery.themepunch.tools.min.js?rev=". GlobalsRevSlider::SLIDER_REVISION;
  1586. $htmlBeforeSlider .= "<script type='text/javascript' src='$urlIncludeJS'></script>";
  1587. $urlIncludeJS = UniteBaseClassRev::$url_plugin."rs-plugin/js/jquery.themepunch.revolution.min.js?rev=". GlobalsRevSlider::SLIDER_REVISION;
  1588. $htmlBeforeSlider .= "<script type='text/javascript' src='$urlIncludeJS'></script>";
  1589. }
  1590. //the initial id can be alias
  1591. $sliderID = $this->slider->getID();
  1592. $bannerWidth = $this->slider->getParam("width",null,RevSlider::VALIDATE_NUMERIC,"Slider Width");
  1593. $bannerHeight = $this->slider->getParam("height",null,RevSlider::VALIDATE_NUMERIC,"Slider Height");
  1594. $sliderType = $this->slider->getParam("slider_type");
  1595. //set wrapper height
  1596. $wrapperHeigh = 0;
  1597. $wrapperHeigh += $this->slider->getParam("height");
  1598. //add thumb height
  1599. if($this->slider->getParam("navigaion_type") == "thumb"){
  1600. $wrapperHeigh += $this->slider->getParam("thumb_height");
  1601. }
  1602. $this->sliderHtmlID = "rev_slider_".$sliderID."_".self::$sliderSerial;
  1603. $this->sliderHtmlID_wrapper = $this->sliderHtmlID."_wrapper";
  1604. $containerStyle = "";
  1605. $sliderPosition = $this->slider->getParam("position","center");
  1606. //set position:
  1607. if($sliderType != "fullscreen"){
  1608. switch($sliderPosition){
  1609. case "center":
  1610. default:
  1611. $containerStyle .= "margin:0px auto;";
  1612. break;
  1613. case "left":
  1614. $containerStyle .= "float:left;";
  1615. break;
  1616. case "right":
  1617. $containerStyle .= "float:right;";
  1618. break;
  1619. }
  1620. }
  1621. //add background color
  1622. $backgrondColor = trim($this->slider->getParam("background_color"));
  1623. if(!empty($backgrondColor))
  1624. $containerStyle .= "background-color:$backgrondColor;";
  1625. //set padding
  1626. $containerStyle .= "padding:".$this->slider->getParam("padding","0")."px;";
  1627. //set margin:
  1628. if($sliderType != "fullscreen"){
  1629. if($sliderPosition != "center"){
  1630. $containerStyle .= "margin-left:".$this->slider->getParam("margin_left","0")."px;";
  1631. $containerStyle .= "margin-right:".$this->slider->getParam("margin_right","0")."px;";
  1632. }
  1633. $containerStyle .= "margin-top:".$this->slider->getParam("margin_top","0")."px;";
  1634. $containerStyle .= "margin-bottom:".$this->slider->getParam("margin_bottom","0")."px;";
  1635. }
  1636. //set height and width:
  1637. $bannerStyle = "display:none;";
  1638. //add background image (to banner style)
  1639. $showBackgroundImage = $this->slider->getParam("show_background_image","false");
  1640. if($showBackgroundImage == "true"){
  1641. $backgroundImage = $this->slider->getParam("background_image");
  1642. $backgroundFit = $this->slider->getParam("bg_fit", "cover");
  1643. $backgroundRepeat = $this->slider->getParam("bg_repeat", "no-repeat");
  1644. $backgroundPosition = $this->slider->getParam("bg_position", "center top");
  1645. if(!empty($backgroundImage))
  1646. $bannerStyle .= "background-image:url($backgroundImage);background-repeat:".$backgroundRepeat.";background-fit:".$backgroundFit.";background-position:".$backgroundPosition.";";
  1647. }
  1648. //set wrapper and slider class:
  1649. $sliderWrapperClass = "rev_slider_wrapper";
  1650. $sliderClass = "rev_slider";
  1651. $putResponsiveStyles = false;
  1652. switch($sliderType){
  1653. case "responsitive":
  1654. //$containerStyle .= "height:".$bannerHeight."px;";
  1655. $putResponsiveStyles = true;
  1656. break;
  1657. case "fullwidth":
  1658. $sliderWrapperClass .= " fullwidthbanner-container";
  1659. $sliderClass .= " fullwidthabanner";
  1660. $bannerStyle .= "max-height:".$bannerHeight."px;height:".$bannerHeight."px;";
  1661. $containerStyle .= "max-height:".$bannerHeight."px;";
  1662. break;
  1663. case "fullscreen":
  1664. //$containerStyle .= "height:".$bannerHeight."px;";
  1665. $sliderWrapperClass .= " fullscreen-container";
  1666. $sliderClass .= " fullscreenbanner";
  1667. break;
  1668. case "fixed":
  1669. default:
  1670. $bannerStyle .= "height:".$bannerHeight."px;width:".$bannerWidth."px;";
  1671. $containerStyle .= "height:".$bannerHeight."px;width:".$bannerWidth."px;";
  1672. break;
  1673. }
  1674. $htmlTimerBar = "";
  1675. $timerBar = $this->slider->getParam("show_timerbar","top");
  1676. if($timerBar == "true")
  1677. $timerBar = $this->slider->getParam("timebar_position","top");
  1678. switch($timerBar){
  1679. case "top":
  1680. $htmlTimerBar = '<div class="tp-bannertimer"></div>';
  1681. break;
  1682. case "bottom":
  1683. $htmlTimerBar = '<div class="tp-bannertimer tp-bottom"></div>';
  1684. break;
  1685. case "hide":
  1686. $htmlTimerBar = '<div class="tp-bannertimer tp-bottom" style="visibility: hidden !important;"></div>';
  1687. break;
  1688. }
  1689. //check inner / outer border
  1690. $paddingType = $this->slider->getParam("padding_type","outter");
  1691. if($paddingType == "inner")
  1692. $sliderWrapperClass .= " tp_inner_padding";
  1693. global $revSliderVersion;
  1694. if($putResponsiveStyles == true)
  1695. $this->putResponsitiveStyles();
  1696. echo $htmlBeforeSlider."\n";
  1697. echo "<div id=\"";
  1698. echo $this->sliderHtmlID_wrapper;
  1699. echo "\" ";
  1700. echo "class=\"". $sliderWrapperClass ."\"";
  1701. $show_alternate = $this->slider->getParam("show_alternative_type","off");
  1702. if($show_alternate !== 'off'){
  1703. $show_alternate_image = $this->slider->getParam("show_alternate_image","");
  1704. echo ' data-aimg="'.$show_alternate_image.'" ';
  1705. if($show_alternate == 'mobile' || $show_alternate == 'mobile-ie8'){
  1706. echo ' data-amobile="enabled" ';
  1707. }else{
  1708. echo ' data-amobile="disabled" ';
  1709. }
  1710. if($show_alternate == 'mobile-ie8' || $show_alternate == 'ie8'){
  1711. echo ' data-aie8="enabled" ';
  1712. }else{
  1713. echo ' data-aie8="disabled" ';
  1714. }
  1715. }
  1716. echo " style=\"". $containerStyle ."\">\n";
  1717. echo "<!-- START REVOLUTION SLIDER ". $revSliderVersion ." ". $sliderType ." mode -->\n";
  1718. echo " <div id=\"";
  1719. echo $this->sliderHtmlID;
  1720. echo "\" ";
  1721. echo "class=\"". $sliderClass ."\"";
  1722. echo " style=\"". $bannerStyle ."\">\n";
  1723. echo $this->putSlides($doWrapFromTemplate);
  1724. echo $htmlTimerBar;
  1725. echo " </div>\n";
  1726. $this->putJS();
  1727. echo "</div>";
  1728. echo "<!-- END REVOLUTION SLIDER -->";
  1729. }catch(Exception $e){
  1730. $message = $e->getMessage();
  1731. $this->putErrorMessage($message);
  1732. }
  1733. }
  1734. }
  1735. ?>