tra('Slider'), 'documentation' => 'PluginSlider', 'description' => tra('Embed a mini-slideshow of content on a page'), 'prefs' => [ 'wikiplugin_slider' ], 'body' => tra('Content separated by "/////"'), 'iconname' => 'tv', 'introduced' => 8, 'tags' => [ 'basic' ], 'last_supported_version' => 'This preference (and all the related code) will be removed after Tiki21', 'is_superceded_by' => 'Superceded by preference wikiplugin_swiper', 'params' => [ 'titles' => [ 'required' => false, 'name' => tra('Slider Titles'), 'description' => tr('Pipe-separated list of slider titles. Example:') . 'slider 1|slider 2|slider 3', 'since' => '8.0', 'filter' => 'text', 'separator' => '|', 'default' => '', ], 'width' => [ 'required' => false, 'name' => tra('Width'), 'description' => tr( 'Width in pixels or percentage. Default value is page width, for example, %0 or %1', '200px', '100%' ), 'since' => '8.0', 'filter' => 'text', 'default' => 'Slider width', ], 'height' => [ 'required' => false, 'name' => tra('Height'), 'description' => tr( 'Height in pixels or percentage. Default value is complete slider height. If the %0 parameter set to Yes (%1), then don\'t use percent only use pixels.', 'expand', 'y' ), 'since' => '8.0', 'filter' => 'text', 'default' => 'Slider height', ], 'theme' => [ 'required' => false, 'name' => tra('Theme'), 'description' => tra('The theme to use in slider.'), 'since' => '8.0', 'filter' => 'text', 'default' => 'default', 'options' => [ ['text' => 'default', 'value' => ''], ['text' => 'construction', 'value' => 'construction'], ['text' => 'cs-portfolio', 'value' => 'cs-portfolio'], ['text' => 'default1', 'value' => 'default1'], ['text' => 'default2', 'value' => 'default2'], ['text' => 'metallic', 'value' => 'metallic'], ['text' => 'mini-dark', 'value' => 'mini-dark'], ['text' => 'mini-light', 'value' => 'mini-light'], ['text' => 'minimalist-round', 'value' => 'minimalist-round'], ['text' => 'minimalist-square', 'value' => 'minimalist-square'], ['text' => 'office', 'value' => 'office'], ['text' => 'polished', 'value' => 'polished'], ['text' => 'ribbon', 'value' => 'ribbon'], ['text' => 'shiny', 'value' => 'shiny'], ['text' => 'simple', 'value' => 'simple'], ['text' => 'tabs-dark', 'value' => 'tabs-dark'], ['text' => 'tabs-light', 'value' => 'tabs-light'] ] ], 'expand' => [ 'required' => false, 'name' => tra('Expand'), 'description' => tr('Set whether the entire slider expands to fit the parent element. The %0 parameter needs to also be set', 'height'), 'since' => '8.0', 'filter' => 'alpha', 'default' => 'n', 'options' => [ ['text' => '', 'value' => ''], ['text' => tra('Yes'), 'value' => 'y'], ['text' => tra('No'), 'value' => 'n'] ] ], 'resizecontents' => [ 'required' => false, 'name' => tra('Resize'), 'description' => tr('Set whether solitary images/objects in the panel will be expanded to fit the viewport'), 'since' => '8.0', 'filter' => 'alpha', 'default' => 'y', 'options' => [ ['text' => '', 'value' => ''], ['text' => tra('Yes'), 'value' => 'y'], ['text' => tra('No'), 'value' => 'n'] ] ], 'showmultiple' => [ 'required' => false, 'name' => tra('Show Multiple'), 'description' => tra('Set this value to a number and it will show that many slides at once'), 'since' => '8.0', 'filter' => 'digits', 'default' => '1' ], 'buildarrows' => [ 'required' => false, 'name' => tra('Arrows'), 'description' => tra('Set whether to show forward and backward buttons'), 'since' => '8.0', 'filter' => 'alpha', 'default' => 'y', 'options' => [ ['text' => '', 'value' => ''], ['text' => tra('Yes'), 'value' => 'y'], ['text' => tra('No'), 'value' => 'n'] ] ], 'buildnavigation' => [ 'required' => false, 'name' => tra('Navigation'), 'description' => tra('Set whether to show a list of anchor links to link to each panel'), 'since' => '8.0', 'filter' => 'alpha', 'default' => 'y', 'options' => [ ['text' => '', 'value' => ''], ['text' => tra('Yes'), 'value' => 'y'], ['text' => tra('No'), 'value' => 'n'] ] ], 'buildstartstop' => [ 'required' => false, 'name' => tra('Start / Stop'), 'description' => tra('Set whether to show a start/stop button and add slideshow functionality'), 'since' => '8.0', 'filter' => 'alpha', 'default' => 'y', 'options' => [ ['text' => '', 'value' => ''], ['text' => tra('Yes'), 'value' => 'y'], ['text' => tra('No'), 'value' => 'n'] ] ], 'togglearrows' => [ 'required' => false, 'name' => tra('Toggle Arrows'), 'description' => tra('Set whether side navigation arrows slide out on hovering and hide at other times'), 'since' => '8.0', 'filter' => 'alpha', 'default' => 'n', 'options' => [ ['text' => '', 'value' => ''], ['text' => tra('Yes'), 'value' => 'y'], ['text' => tra('No'), 'value' => 'n'] ] ], 'togglecontrols' => [ 'required' => false, 'name' => tra('Toggle Controls'), 'description' => tra('Set whether slide in controls (navigation + play/stop button) on hover and slide change, hide at other times'), 'since' => '8.0', 'filter' => 'alpha', 'default' => 'n', 'options' => [ ['text' => '', 'value' => ''], ['text' => tra('Yes'), 'value' => 'y'], ['text' => tra('No'), 'value' => 'n'] ] ], 'enablearrows' => [ 'required' => false, 'name' => tra('Enable Arrows'), 'description' => tra('Set whether arrows are clickable'), 'since' => '8.0', 'filter' => 'alpha', 'default' => 'y', 'options' => [ ['text' => '', 'value' => ''], ['text' => tra('Yes'), 'value' => 'y'], ['text' => tra('No'), 'value' => 'n'] ] ], 'enablenavigation' => [ 'required' => false, 'name' => tra('Enable Navigation'), 'description' => tra('Set whether navigation links are clickable'), 'since' => '8.0', 'filter' => 'alpha', 'default' => 'y', 'options' => [ ['text' => '', 'value' => ''], ['text' => tra('Yes'), 'value' => 'y'], ['text' => tra('No'), 'value' => 'n'] ] ], 'enablestartstop' => [ 'required' => false, 'name' => tra('Enable Start Stop'), 'description' => tr( 'Set whether the play/stop button is clickable. Previously %0', 'enablePlay' ), 'since' => '8.0', 'filter' => 'alpha', 'default' => 'y', 'options' => [ ['text' => '', 'value' => ''], ['text' => tra('Yes'), 'value' => 'y'], ['text' => tra('No'), 'value' => 'n'] ] ], 'enablekeyboard' => [ 'required' => false, 'name' => tra('Enable Keyboard'), 'description' => tra('Set whether keyboard arrow keys will work for this slider'), 'since' => '8.0', 'filter' => 'alpha', 'default' => 'y', 'options' => [ ['text' => '', 'value' => ''], ['text' => tra('Yes'), 'value' => 'y'], ['text' => tra('No'), 'value' => 'n'] ] ], 'autoplay' => [ 'required' => false, 'name' => tra('Auto Play'), 'description' => tr( 'Set whether the slideshow will start running automatically; replaces %0 option', 'startStopped' ), 'since' => '8.0', 'filter' => 'alpha', 'default' => 'f', 'options' => [ ['text' => '', 'value' => ''], ['text' => tra('Yes'), 'value' => 'y'], ['text' => tra('No'), 'value' => 'n'] ] ], 'autoplaylocked' => [ 'required' => false, 'name' => tra('Auto Play Locked'), 'description' => tra('Keep playing the slideshow even if the user changes slides'), 'since' => '8.0', 'filter' => 'alpha', 'default' => 'n', 'options' => [ ['text' => '', 'value' => ''], ['text' => tra('Yes'), 'value' => 'y'], ['text' => tra('No'), 'value' => 'n'] ] ], 'autoplaydelayed' => [ 'required' => false, 'name' => tra('Auto Play Delayed'), 'description' => tra('Set whether there will be a delay in advancing slides'), 'since' => '8.0', 'filter' => 'alpha', 'default' => 'n', 'options' => [ ['text' => '', 'value' => ''], ['text' => tra('Yes'), 'value' => 'y'], ['text' => tra('No'), 'value' => 'n'] ] ], 'pauseonhover' => [ 'required' => false, 'name' => tra('Pause On Hover'), 'description' => tra('Set whether the slideshow will pause on hover while the slideshow is active'), 'since' => '8.0', 'filter' => 'alpha', 'default' => 'y', 'options' => [ ['text' => '', 'value' => ''], ['text' => tra('Yes'), 'value' => 'y'], ['text' => tra('No'), 'value' => 'n'] ] ], 'stopatend' => [ 'required' => false, 'name' => tra('Stop At End'), 'description' => tra('Set whether the slideshow stops on the last page'), 'since' => '8.0', 'filter' => 'alpha', 'default' => 'n', 'options' => [ ['text' => '', 'value' => ''], ['text' => tra('Yes'), 'value' => 'y'], ['text' => tra('No'), 'value' => 'n'] ] ], 'delay' => [ 'required' => false, 'name' => tra('Delay between slides'), 'description' => tra('Time in milliseconds between slideshow transitions (in AutoPlay mode).'), 'since' => '10.0', 'filter' => 'digits', 'default' => '3000', ], 'playrtl' => [ 'required' => false, 'name' => tra('Right To Left'), 'description' => tra('Set whether the slideshow moves right-to-left'), 'since' => '8.0', 'filter' => 'alpha', 'default' => 'n', 'options' => [ ['text' => '', 'value' => ''], ['text' => tra('Yes'), 'value' => 'y'], ['text' => tra('No'), 'value' => 'n'] ] ], 'resumeonvideoend' => [ 'required' => false, 'name' => tra('Resume On Video End'), 'description' => tra('Set whether auto play stops until the video is complete (for supported video types)'), 'since' => '8.0', 'filter' => 'alpha', 'default' => 'y', 'options' => [ ['text' => '', 'value' => ''], ['text' => tra('Yes'), 'value' => 'y'], ['text' => tra('No'), 'value' => 'n'] ] ], 'animationtime' => [ 'required' => false, 'name' => tra('Animation Time'), 'description' => tra('Milliseconds between slides'), 'since' => '10.0', 'filter' => 'digits', 'default' => '600', ], 'hashtags' => [ 'required' => false, 'name' => tra('Panel Hashtags'), 'description' => tra('Set whether to include a hashtag in the page URL, allowing links to specific panels'), 'since' => '13.0', 'filter' => 'alpha', 'default' => 'y', 'options' => [ ['text' => '', 'value' => ''], ['text' => tra('Yes'), 'value' => 'y'], ['text' => tra('No'), 'value' => 'n'] ] ], ], ]; } function wikiplugin_slider($data, $params) { $headerlib = TikiLib::lib('header'); // set default params $plugininfo = wikiplugin_slider_info(); $default = []; foreach ($plugininfo['params'] as $key => $param) { $default["$key"] = $param['default']; } $params = array_merge($default, $params); extract($params, EXTR_SKIP); $headerlib->add_jsfile('vendor_bundled/vendor/jquery-plugins/anythingslider/js/swfobject.js', true); $headerlib->add_jsfile('vendor_bundled/vendor/jquery-plugins/anythingslider/js/jquery.anythingslider.js'); $headerlib->add_jsfile('vendor_bundled/vendor/jquery-plugins/anythingslider/js/jquery.anythingslider.fx.js'); $headerlib->add_jsfile('vendor_bundled/vendor/jquery-plugins/anythingslider/js/jquery.anythingslider.video.js'); $headerlib->add_cssfile('vendor_bundled/vendor/jquery-plugins/anythingslider/css/anythingslider.css'); $headerlib->add_cssfile('vendor_bundled/vendor/jquery-plugins/anythingslider/css/theme-construction.css'); $headerlib->add_cssfile('vendor_bundled/vendor/jquery-plugins/anythingslider/css/theme-cs-portfolio.css'); $headerlib->add_cssfile('vendor_bundled/vendor/jquery-plugins/anythingslider/css/theme-metallic.css'); $headerlib->add_cssfile('vendor_bundled/vendor/jquery-plugins/anythingslider/css/theme-minimalist-round.css'); $headerlib->add_cssfile('vendor_bundled/vendor/jquery-plugins/anythingslider/css/theme-minimalist-square.css'); $headerlib->add_cssfile('vendor_bundled/vendor/css-tricks/anythingslider-themes/css/theme-default1.css'); $headerlib->add_cssfile('vendor_bundled/vendor/css-tricks/anythingslider-themes/css/theme-default2.css'); $headerlib->add_cssfile('vendor_bundled/vendor/css-tricks/anythingslider-themes/css/theme-mini-dark.css'); $headerlib->add_cssfile('vendor_bundled/vendor/css-tricks/anythingslider-themes/css/theme-mini-light.css'); $headerlib->add_cssfile('vendor_bundled/vendor/css-tricks/anythingslider-themes/css/theme-office.css'); $headerlib->add_cssfile('vendor_bundled/vendor/css-tricks/anythingslider-themes/css/theme-polished.css'); $headerlib->add_cssfile('vendor_bundled/vendor/css-tricks/anythingslider-themes/css/theme-ribbon.css'); $headerlib->add_cssfile('vendor_bundled/vendor/css-tricks/anythingslider-themes/css/theme-shiny.css'); $headerlib->add_cssfile('vendor_bundled/vendor/css-tricks/anythingslider-themes/css/theme-simple.css'); $headerlib->add_cssfile('vendor_bundled/vendor/css-tricks/anythingslider-themes/css/theme-tabs-dark.css'); $headerlib->add_cssfile('vendor_bundled/vendor/css-tricks/anythingslider-themes/css/theme-tabs-light.css'); if (isset($theme) && ! empty($theme)) { switch (strtolower($theme)) { case 'construction': case 'cs-portfolio': case 'default1': case 'default2': case 'metallic': case 'mini-dark': case 'mini-light': case 'minimalist-round': case 'minimalist-square': case 'office': case 'polished': case 'ribbon': case 'shiny': case 'simple': case 'tabs-dark': case 'tabs-light': $theme = $theme; break; default: $theme = 'default'; } } else { $theme = 'default'; } $animationtime = (int) $animationtime; $animationtime = (empty($animationtime) === false ? $animationtime : 600); $delay = (int) $delay; $delay = (empty($delay) === false ? $delay : 3000); $showmultiple = (int) $showmultiple; $showmultiple = (empty($showmultiple) === false ? $showmultiple : 1); $headerlib->add_jq_onready( "function formatText(i, p) { var possibleText = $('.tiki-slider-title').eq(i - 1).text(); return (possibleText ? possibleText : 'slide_' + i); } $('.tiki-slider').anythingSlider({ theme : '$theme', expand : " . makeBool($expand, false) . ", resizeContents : " . makeBool($resizecontents, true) . ", showMultiple : $showmultiple, easing : 'swing', buildArrows : " . makeBool($buildarrows, true) . ", buildNavigation : " . makeBool($buildnavigation, true) . ", buildStartStop : " . makeBool($buildstartstop, true) . ", toggleArrows : " . makeBool($togglearrows, false) . ", toggleControls : " . makeBool($togglecontrols, false) . ", startText : 'Start', stopText : 'Stop', forwardText : '»', backText : '«', tooltipClass : 'tooltip', // Function enableArrows : " . makeBool($enablearrows, true) . ", enableNavigation : " . makeBool($enablenavigation, true) . ", enableStartStop : " . makeBool($enablestartstop, true) . ", enableKeyboard : " . makeBool($enablekeyboard, true) . ", // Navigation startPanel : 1, changeBy : 1, hashTags : " . makeBool($hashtags, true) . ", // Slideshow options autoPlay : " . makeBool($autoplay, false) . ", autoPlayLocked : " . makeBool($autoplaylocked, false) . ", autoPlayDelayed : " . makeBool($autoplaydelayed, false) . ", pauseOnHover : " . makeBool($pauseonhover, true) . ", stopAtEnd : " . makeBool($stopatend, false) . ", playRtl : " . makeBool($playrtl, false) . ", // Times delay : $delay, resumeDelay : 15000, animationTime : $animationtime, // Video resumeOnVideoEnd : " . makeBool($resumeonvideoend, true) . ", addWmodeToObject : 'opaque', navigationFormatter: formatText });" ); if (! empty($titles)) { $titles = TikiLib::lib('parser')->parse_data($titles, ['suppress_icons' => true]); $titles = explode('|', $titles); } $sliderData = []; if (! empty($data)) { $data = TikiLib::lib('parser')->parse_data($data, ['suppress_icons' => true]); $data = preg_replace('/

\/\/\/\/\/\s*<\/p>/', '/////', $data); // remove surrounding

tags on slide boundaries $sliderData = explode('/////', $data); } $ret = ''; foreach ($sliderData as $i => $slide) { $ret .= "

" . (isset($titles[$i]) ? "" : "") . " $slide
"; } if ($expand == 'y') { /** if expand eq 'y', "100%" height not working **/ /** Temp fix: if $height is empty**/ $height = (empty($height) === false ? $height : '300px'); $result = "
$ret
"; } else { $result = "
$ret
"; } return <<