function parseTshadow($v) { $v = NextendParse::parse($v); $rgba = NextendColor::hex2rgba($v[3]); if ($v[0] == 0 && $v[1] == 0 && $v[2] == 0) { return 'text-shadow: none;'; } return 'text-shadow: ' . $v[0] . 'px ' . $v[1] . 'px ' . $v[2] . 'px RGBA(' . $rgba[0] . ',' . $rgba[1] . ',' . $rgba[2] . ',' . round($rgba[3] / 127, 2) . ');'; }
function transparentcolor($color) { $cachefile = $this->_folder . 'transparentcolor' . $color . '.' . $this->_filetype; if (!NextendFilesystem::existsFile($cachefile)) { $rgba = NextendColor::hex2rgba($color); $this->createIm(1, 1); $fillcolor = imagecolorallocatealpha($this->_im, $rgba[0], $rgba[1], $rgba[2], 127 - $rgba[3]); imagefilledrectangle($this->_im, 0, 0, 1, 1, $fillcolor); $this->saveIm($cachefile); } return NextendFilesystem::pathToAbsoluteURL($cachefile); }
$params = $this->_sliderParams; $width = intval($context['width']); $height = intval($context['height']); $context['bgsize'] = NextendParse::parse($params->get('simplebackgroundimagesize', 'auto')); $border = NextendParse::parse($params->get('simpleborder', '0|*|3E3E3Eff')); $border1 = intval($border[0]); $padding = NextendParse::parse($params->get('simplepadding', '0|*|0|*|0|*|0')); $context['paddingt'] = $padding[0] . 'px'; $context['paddingr'] = $padding[1] . 'px'; $context['paddingb'] = $padding[2] . 'px'; $context['paddingl'] = $padding[3] . 'px'; if ($context['canvas']) { $width += 2 * $border1 + $padding[1] + $padding[3]; $height += 2 * $border1 + $padding[0] + $padding[2]; $context['width'] = $width . "px"; $context['height'] = $height . "px"; } $context['border'] = $border1 . 'px'; $rgba = NextendColor::hex2rgba($border[1]); $context['borderrgba'] = 'RGBA(' . $rgba[0] . ',' . $rgba[1] . ',' . $rgba[2] . ',' . round($rgba[3] / 127, 2) . ')'; $context['borderhex'] = '#' . substr($border[1], 0, 6); $borderradius = NextendParse::parse($params->get('simpleborderradius', '0|*|0|*|0|*|0')); $context['tl'] = $borderradius[0] . 'px'; $context['tr'] = $borderradius[1] . 'px'; $context['br'] = $borderradius[2] . 'px'; $context['bl'] = $borderradius[3] . 'px'; $width = $width - ($padding[1] + $padding[3]) - $border1 * 2; $height = $height - ($padding[0] + $padding[2]) - $border1 * 2; $context['inner1height'] = $height . 'px'; $context['canvaswidth'] = $width . "px"; $context['canvasheight'] = $height . "px";
static function render($slider, $id, $params) { $html = ''; $thumbnail = $params->get('thumbnail', false); if ($thumbnail && $thumbnail != '-1') { $displayclass = self::getDisplayClass($params->get('widgetthumbnaildisplay', '0|*|always|*|0|*|0'), true); $css = NextendCss::getInstance(); $css->addCssFile(NextendFilesystem::translateToMediaPath(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'vertical' . DIRECTORY_SEPARATOR . 'style.css')); $js = NextendJavascript::getInstance(); $js->addLibraryJsLibraryFile('jquery', 'jquery.mousewheel.js'); $js->addLibraryJsFile('jquery', dirname(__FILE__) . '/vertical/script.js'); $thumbnailactivebackground = $params->get('thumbnailactivebackground', '00000080'); $rgbathumbnailactivebackground = NextendColor::hex2rgba($thumbnailactivebackground); $rgbacssthumbnailactivebackground = 'RGBA(' . $rgbathumbnailactivebackground[0] . ',' . $rgbathumbnailactivebackground[1] . ',' . $rgbathumbnailactivebackground[2] . ',' . round($rgbathumbnailactivebackground[3] / 127, 2) . ')'; $colorhexthumbnailactivebackground = substr($thumbnailactivebackground, 0, 6); $info = pathinfo($thumbnail); $class = 'nextend-thumbnail nextend-thumbnail-vertical nextend-thumbnail-vertical-' . basename($thumbnail, '.' . $info['extension']); $thumbnailsize = array(NextendParse::parse($params->get('thumbnailsize', '300'))); $thumbnailcolumn = $params->get('thumbnailcolumn', '30'); $thumbnailperpage = $params->get('thumbnailperpage', 2); list($positionstyle, $data) = self::getPosition($params->get('thumbnailposition', '')); $positionstyle .= 'z-index:10; font-size: ' . intval($slider->_sliderParams->get('globalfontsize', '12')) . 'px;'; $html .= '<div id="' . $id . '-thumbnail" class="' . $displayclass . '" style="width: ' . $thumbnailsize[0] . 'px;height: 100%;' . $positionstyle . '" ' . $data . '>'; $html .= '<div class="nextend-thumbnail-container ' . $class . ' nextend-clearfix"> <div class="nextend-arrow-top"></div>'; $html .= '<div class="nextend-thumbnail-strip-hider"><div class="nextend-thumbnail-strip">'; $thumbnailtitlelink = $params->get('thumbnailtitlelink', 0); for ($i = 0; $i < count($slider->_slides); $i++) { $html .= '<div onclick="njQuery(\'#' . $id . '\').smartslider(\'goto\',' . $i . ',false);" class="' . $class . ($slider->_slides[$i]['first'] ? ' active' : '') . '">'; if ($thumbnailcolumn != 0) { if (!$slider->_slides[$i]['thumbnail'] && $slider->_slides[$i]['bg']['desktop']) { $slider->_slides[$i]['thumbnail'] = $slider->_slides[$i]['bg']['desktop']; } $html .= '<div class="nextend-thumbnail-vertical-image" style="float:left;width:' . $thumbnailcolumn . '%; background-image:url(\'' . $slider->_slides[$i]['thumbnail'] . '\');"></div>'; } $html .= '<div class="nextend-thumbnail-vertical-content" style="width:' . (100 - $thumbnailcolumn) . '%;">'; $link = NextendParse::parse($slider->_slides[$i]['params']->get('link')); if ($thumbnailtitlelink && $link[0] != '' && $link[0] != '#') { $html .= '<h4 class="' . $params->get('thumbnailfontclasstitle') . '"><a href="' . $link[0] . '" target="' . $link[1] . '">' . $slider->_slides[$i]['title'] . '</a></h4>'; } else { $html .= '<h4 class="' . $params->get('thumbnailfontclasstitle') . '">' . $slider->_slides[$i]['title'] . '</h4>'; } $html .= '<p class="' . $params->get('thumbnailfontclassdescription') . '">' . $slider->_slides[$i]['description'] . '</p> </div></div>'; } $html .= '</div></div></td>'; $html .= '<div class="nextend-arrow-bottom"></div></div></div>'; $html .= "\n <script type='text/javascript'>\n njQuery(document).ready(function () {\n window['" . $id . "-thumbnail'] = new smartSliderVertical({\n id: '" . $id . "',\n node: window.njQuery('#" . $id . "-thumbnail'),\n thumbnailperpage: '" . $thumbnailperpage . "',\n thumbnailanimation: '" . $params->get('thumbnailanimation', 700) . "'\n });\n });\n </script>\n "; $css->addCssFile(' #' . $id . ' .nextend-thumbnail-container .nextend-thumbnail-vertical-vertical1:HOVER, #' . $id . ' .nextend-thumbnail-container .nextend-thumbnail-vertical-vertical1.active, #' . $id . ' .nextend-thumbnail-container.nextend-thumbnail-vertical-vertical1 .nextend-arrow-top:HOVER, #' . $id . ' .nextend-thumbnail-container.nextend-thumbnail-vertical-vertical1 .nextend-arrow-bottom:HOVER, #' . $id . ' .nextend-thumbnail-container .nextend-thumbnail-vertical-vertical-light:HOVER, #' . $id . ' .nextend-thumbnail-container .nextend-thumbnail-vertical-vertical-light.active, #' . $id . ' .nextend-thumbnail-container.nextend-thumbnail-vertical-vertical-light .nextend-arrow-top:HOVER, #' . $id . ' .nextend-thumbnail-container.nextend-thumbnail-vertical-vertical-light .nextend-arrow-bottom:HOVER{ background-color:' . $rgbacssthumbnailactivebackground . '; }', $id); } return $html; }
function initSlides($slides) { if ($this->_backend) { if (NextendRequest::getCmd('action') == 'create') { array_unshift($slides, array('id' => 0, 'title' => '{_slidetitle}', 'slider' => NextendRequest::getInt('sliderid'), 'publish_up' => '0000-00-00 00:00:00', 'publish_down' => '0000-00-00 00:00:00', 'published' => 1, 'first' => 0, 'slide' => '', 'params' => '', 'thumbnail' => '', 'background' => 'ffffff00|*|', 'description' => 'Description', 'ordering' => count($slides))); } if (NextendRequest::getCmd('action') == 'generatoredit') { global $smartslidergeneratorslide; if (!$smartslidergeneratorslide) { $smartslidergeneratorslide = array(); } array_unshift($slides, array_merge(array('id' => 0, 'title' => '{_slidetitle}', 'slider' => NextendRequest::getInt('sliderid'), 'publish_up' => '0000-00-00 00:00:00', 'publish_down' => '0000-00-00 00:00:00', 'published' => 1, 'first' => 0, 'slide' => '', 'params' => '', 'thumbnail' => '', 'background' => 'ffffff00|*|', 'description' => 'Description', 'ordering' => count($slides)), $smartslidergeneratorslide)); } else { if (NextendRequest::getCmd('controller') == 'layouts' && NextendRequest::getCmd('action') == 'edit') { global $smartsliderlayout; if (!$smartsliderlayout) { $smartsliderlayout = ''; } array_unshift($slides, array('id' => 0, 'title' => '{_slidetitle}', 'slide' => $smartsliderlayout, 'params' => '')); } else { if (NextendRequest::getCmd('controller') == 'slides') { $currentlyedited = NextendRequest::getInt('slideid'); for ($i = 0; $i < count($slides); $i++) { if ($slides[$i]['id'] == $currentlyedited) { $this->_activeSlide = $i; break; } } } } } } else { for ($i = 0; $i < count($slides); $i++) { if ($slides[$i]['first'] == 1) { $this->_activeSlide = $i; break; } } } nextendimport('nextend.image.color'); for ($i = 0; $i < count($slides); $i++) { $params = new NextendData(); $params->loadJSON($slides[$i]['params']); $slides[$i]['params'] = $params; $slides[$i]['classes'] = 'smart-slider-canvas'; if (!isset($slides[$i]['background'])) { $slides[$i]['background'] = 'ffffff00|*|'; } $bg = (array) NextendParse::parse($slides[$i]['background']); $style = ''; if (isset($bg[0]) && strlen($bg[0]) == 8) { if (substr($bg[0], 6, 2) != '00') { $style .= 'background-color: #' . substr($bg[0], 0, 6) . ';'; $rgba = NextendColor::hex2rgba($bg[0]); $style .= 'background-color: RGBA(' . $rgba[0] . ',' . $rgba[1] . ',' . $rgba[2] . ',' . round($rgba[3] / 127, 2) . ');'; } } $slides[$i]['style'] = $style; $bgmore = (array) NextendParse::parse($slides[$i]['params']->get('backgroundmore')); $slides[$i]['bg'] = array('desktop' => empty($bg[1]) ? 0 : NextendUri::fixrelative($bg[1]), 'desktopretina' => empty($bgmore[0]) ? 0 : NextendUri::fixrelative($bgmore[0]), 'tablet' => empty($bgmore[1]) ? 0 : NextendUri::fixrelative($bgmore[1]), 'tabletretina' => empty($bgmore[2]) ? 0 : NextendUri::fixrelative($bgmore[2]), 'mobile' => empty($bgmore[3]) ? 0 : NextendUri::fixrelative($bgmore[3]), 'mobileretina' => empty($bgmore[4]) ? 0 : NextendUri::fixrelative($bgmore[4]), 'alt' => empty($bg[2]) ? '' : $bg[2]); if (!empty($slides[$i]['thumbnail'])) { $slides[$i]['thumbnail'] = NextendUri::fixrelative($slides[$i]['thumbnail']); } $link = $params->get('link', ''); $link = (array) NextendParse::parse($link); if (!$this->_backend && $link && isset($link[0]) && $link[0] != '' && $link[0] != '#') { if (!isset($link[1])) { $link[1] = '_self'; } $slides[$i]['link'] = ' onclick="' . htmlspecialchars(strpos($link[0], 'javascript:') === 0 ? $link[0] : ($link[1] == '_blank' ? "window.open('" . (nextendIsJoomla() ? JRoute::_($link[0], false) : $link[0]) . "','_blank');" : "window.location='" . (nextendIsJoomla() ? JRoute::_($link[0], false) : $link[0]) . "'")) . '" '; $slides[$i]['style'] .= 'cursor:pointer;'; } else { $slides[$i]['link'] = ''; } } return $slides; }