%PDF- %PDF-
| Direktori : /home/lightco1/public_html/plugins/content/sigplus/engines/lightbox/ |
| Current File : /home/lightco1/public_html/plugins/content/sigplus/engines/lightbox/boxplus.php |
<?php
/**
* @file
* @brief sigplus Image Gallery Plus boxplusx lightweight pop-up window engine
* @author Levente Hunyadi
* @version 1.5.0
* @remarks Copyright (C) 2009-2017 Levente Hunyadi
* @remarks Licensed under GNU/GPLv3, see http://www.gnu.org/licenses/gpl-3.0.html
* @see http://hunyadi.info.hu/projects/sigplus
*/
// no direct access
defined( '_JEXEC' ) or die( 'Restricted access' );
/**
* Support class for the boxplusx lightweight pop-up window engine.
* @see http://hunyadi.info.hu/projects/boxplusx/
*/
class SigPlusNovoBoxPlusLightboxEngine extends SigPlusNovoLightboxEngine {
public function getIdentifier() {
return 'boxplusx';
}
/**
* Adds style sheet references to the HTML head element.
* @param {string} $selector A CSS selector.
* @param $params Gallery parameters.
*/
public function addStyles($selector, SigPlusNovoGalleryParameters $params) {
// add main stylesheet
parent::addStyles($selector, $params);
$instance = SigPlusNovoEngineServices::instance();
$id = '#boxplusx_'.$params->id;
$css = array();
// lightbox color theme
$parts = explode('/', $params->lightbox, 2);
if (count($parts) > 1) {
$theme = $parts[1];
$selectorMain = "{$id} .boxplusx-dialog, {$id} .boxplusx-detail";
$selectorData = "{$id} .boxplusx-detail td";
switch ($theme) {
case 'dark': // a dark theme for the dialog box
$css[$selectorMain] = array(
'background-color' => 'rgba(0,0,0,0.8)',
'color' => '#fff'
);
$css[$selectorData] = array(
'border-color' => '#fff'
);
break;
case 'light': // a light theme for the dialog box
$css[$selectorMain] = array(
'background-color' => 'rgba(255,255,255,0.8)',
'color' => '#000'
);
$css[$selectorData] = array(
'border-color' => '#000'
);
break;
}
}
// quick-access navigation bar
$navigation = array();
switch ($params->lightbox_thumbs) {
case 'inside':
case 'outside':
$navigation['height'] = $params->thumb_height.'px';
break;
case 'none':
default:
$navigation['display'] = 'none';
break;
}
$css[$id.' .boxplusx-navigation'] = $navigation;
$css[$id.' .boxplusx-navitem'] = array('width' => $params->thumb_width.'px');
// transition animation
switch ($params->lightbox_transition) {
case 'linear':
$easing = 'linear'; break;
case 'quad': // http://easings.net/#easeInOutQuad
$easing = 'cubic-bezier(0.455, 0.03, 0.515, 0.955)'; break;
case 'cubic': // http://easings.net/#easeInOutCubic
$easing = 'cubic-bezier(0.645, 0.045, 0.355, 1)'; break;
case 'quart': // http://easings.net/#easeInOutQuart
$easing = 'cubic-bezier(0.77, 0, 0.175, 1)'; break;
case 'quint': // http://easings.net/#easeInOutQuint
$easing = 'cubic-bezier(0.86, 0, 0.07, 1)'; break;
case 'expo': // http://easings.net/#easeInOutExpo
$easing = 'cubic-bezier(1, 0, 0, 1)'; break;
case 'circ': // http://easings.net/#easeInOutCirc
$easing = 'cubic-bezier(0.785, 0.135, 0.15, 0.86)'; break;
case 'sine': // http://easings.net/#easeInOutSine
$easing = 'cubic-bezier(0.445, 0.05, 0.55, 0.95)'; break;
case 'back': // http://easings.net/#easeInOutBack
$easing = 'cubic-bezier(0.68, -0.55, 0.265, 1.55)'; break;
case 'bounce': // not supported in CSS
case 'elastic': // not supported in CSS
default:
$easing = 'linear'; break;
}
$css[$id.' .boxplusx-dialog.boxplusx-animation'] = array('transition-timing-function' => $easing);
$instance->addStyles($css);
}
/**
* Adds script references to the HTML head element.
* @param {string} $selector A CSS selector.
* @param $params Gallery parameters.
*/
public function addScripts($selector, SigPlusNovoGalleryParameters $params) {
// add main script
parent::addScripts($selector, $params);
// get engine helper
$instance = SigPlusNovoEngineServices::instance();
// build lightbox engine options
$jsparams = array();
if ($params->id) {
$jsparams['id'] = 'boxplusx_'.$params->id;
}
$jsparams['slideshow'] = $params->lightbox_slideshow;
$jsparams['autostart'] = $params->lightbox_autostart;
$jsparams['loop'] = $params->loop;
switch ($params->lightbox_thumbs) {
case 'inside':
$position = 'bottom'; break;
case 'outside':
$position = 'below'; break;
case 'none':
default:
$position = 'hidden'; break;
}
$jsparams['navigation'] = $position;
$jsparams['protection'] = $params->protection;
$user = JFactory::getUser();
if ($params->metadata !== false && in_array($params->metadata, $user->getAuthorisedViewLevels())) { // check if user is authorized to view metadata
// add Exif.js third-party plug-in to parse EXIF and IPTC metadata
$instance->addScript('/media/sigplus/engines/'.$this->getIdentifier().'/js/exif.js');
$jsparams['metadata'] = true;
}
$language = JFactory::getLanguage();
$jsparams['dir'] = $language->isRtl() ? 'rtl' : 'ltr';
$jsparams = array_merge($jsparams, $params->lightbox_params);
$jsselector = json_encode($selector);
$jsparams = json_encode($jsparams, JSON_FORCE_OBJECT);
// add document loaded event script with parameters
$displayfunc = "(new BoxPlusXDialog({$jsparams})).bind(document.querySelectorAll({$jsselector}))";
$instance->storeLightbox($selector, $displayfunc);
}
}