<?php /** * Slick slider for Contao * * Copyright (c) 2016 Benjamin Roth * * @license LGPL-3.0+ */ /** * Table tl_content */ /** * Add callback */ $GLOBALS['TL_DCA']['tl_content']['config']['onload_callback'][] = array('tl_content_eSM_slick', 'showJsLibraryHint'); /** * Add palettes to tl_content */ $GLOBALS['TL_DCA']['tl_content']['palettes']['__selector__'][] = 'eSM_addImage'; $GLOBALS['TL_DCA']['tl_content']['palettes']['slickSliderStart'] = '{type_legend},type;{slickSlider_legend},eSM_slick_autoPlaySpeed,eSM_slick_speed,eSM_slick_initialSlide,eSM_slick_lazyLoad,eSM_slick_infinite,eSM_slick_arrows,eSM_slick_pagination,eSM_slick_pause,eSM_slick_fade;{template_legend:hide},customTpl;{protected_legend:hide},protected;{expert_legend:hide},guests,cssID,space;{invisible_legend:hide},invisible,start,stop'; $GLOBALS['TL_DCA']['tl_content']['palettes']['slickSliderStop'] = '{type_legend},type;{template_legend:hide},customTpl;{protected_legend:hide},protected;{expert_legend:hide},guests;{invisible_legend:hide},invisible,start,stop'; $GLOBALS['TL_DCA']['tl_content']['palettes']['slickSliderSlideStart'] = '{type_legend},type;{slickSlider_legend},eSM_addImage;{protected_legend:hide},protected;{expert_legend:hide},guests,cssID,space;{invisible_legend:hide},invisible,start,stop'; $GLOBALS['TL_DCA']['tl_content']['palettes']['slickSliderSlideStop'] = '{type_legend},type;{protected_legend:hide},protected;{expert_legend:hide},guests;{invisible_legend:hide},invisible,start,stop'; $GLOBALS['TL_DCA']['tl_content']['palettes']['slickSliderWallpaper'] = '{type_legend},type;{slickSlider_legend},eSM_slick_text,eSM_slick_url,singleSRC,size;{template_legend:hide},customTpl;{protected_legend:hide},protected;{expert_legend:hide},guests,cssID,space;{invisible_legend:hide},invisible,start,stop'; $GLOBALS['TL_DCA']['tl_content']['subpalettes']['eSM_addImage'] = 'singleSRC,size'; /** * Add fields to tl_content */ $GLOBALS['TL_DCA']['tl_content']['fields']['eSM_slick_autoPlaySpeed'] = array ( 'label' => &$GLOBALS['TL_LANG']['tl_content']['eSM_slick_autoPlaySpeed'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('tl_class'=>'w50','rgxp'=>'digit'), 'sql' => "int(10) unsigned NOT NULL default '0'" ); $GLOBALS['TL_DCA']['tl_content']['fields']['eSM_slick_speed'] = array ( 'label' => &$GLOBALS['TL_LANG']['tl_content']['eSM_slick_speed'], 'exclude' => true, 'inputType' => 'text', 'default' => '500', 'eval' => array('tl_class'=>'w50','rgxp'=>'digit'), 'sql' => "int(10) unsigned NOT NULL default '0'" ); $GLOBALS['TL_DCA']['tl_content']['fields']['eSM_slick_initialSlide'] = array ( 'label' => &$GLOBALS['TL_LANG']['tl_content']['eSM_slick_initialSlide'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('tl_class'=>'w50','rgxp'=>'digit'), 'sql' => "int(10) unsigned NOT NULL default '0'" ); $GLOBALS['TL_DCA']['tl_content']['fields']['eSM_slick_infinite'] = array ( 'label' => &$GLOBALS['TL_LANG']['tl_content']['eSM_slick_infinite'], 'exclude' => true, 'inputType' => 'checkbox', 'eval' => array('tl_class'=>'w50 m12'), 'sql' => "char(1) NOT NULL default ''" ); $GLOBALS['TL_DCA']['tl_content']['fields']['eSM_slick_arrows'] = array ( 'label' => &$GLOBALS['TL_LANG']['tl_content']['eSM_slick_arrows'], 'exclude' => true, 'inputType' => 'checkbox', 'eval' => array('tl_class'=>'w50 m12'), 'sql' => "char(1) NOT NULL default ''" ); $GLOBALS['TL_DCA']['tl_content']['fields']['eSM_slick_pagination'] = array ( 'label' => &$GLOBALS['TL_LANG']['tl_content']['eSM_slick_pagination'], 'exclude' => true, 'inputType' => 'checkbox', 'eval' => array('tl_class'=>'w50 m12'), 'sql' => "char(1) NOT NULL default ''" ); $GLOBALS['TL_DCA']['tl_content']['fields']['eSM_slick_pause'] = array ( 'label' => &$GLOBALS['TL_LANG']['tl_content']['eSM_slick_pause'], 'exclude' => true, 'inputType' => 'checkbox', 'eval' => array('tl_class'=>'w50 m12'), 'sql' => "char(1) NOT NULL default ''" ); $GLOBALS['TL_DCA']['tl_content']['fields']['eSM_slick_lazyLoad'] = array ( 'label' => &$GLOBALS['TL_LANG']['tl_content']['eSM_slick_lazyLoad'], 'exclude' => true, 'inputType' => 'select', 'default' => 'ondemand', 'options' => array('ondemand','progressive'), 'reference' => &$GLOBALS['TL_LANG']['MSC']['slick_lazyLoad'], 'eval' => array('tl_class'=>'w50','includeBlankOption'=>true), 'sql' => "varchar(16) NOT NULL default ''" ); $GLOBALS['TL_DCA']['tl_content']['fields']['eSM_slick_fade'] = array ( 'label' => &$GLOBALS['TL_LANG']['tl_content']['eSM_slick_fade'], 'exclude' => true, 'inputType' => 'checkbox', 'eval' => array('tl_class'=>'w50 m12'), 'sql' => "char(1) NOT NULL default ''" ); $GLOBALS['TL_DCA']['tl_content']['fields']['eSM_slick_text'] = array ( 'label' => &$GLOBALS['TL_LANG']['tl_content']['eSM_slick_text'], 'exclude' => true, 'inputType' => 'textarea', 'eval' => array('rows'=>2,'style'=>'height: 2em;', 'maxlength'=>64), 'sql' => "varchar(64) NOT NULL default ''" ); $GLOBALS['TL_DCA']['tl_content']['fields']['eSM_slick_url'] = array ( 'label' => &$GLOBALS['TL_LANG']['MSC']['url'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('rgxp'=>'url', 'decodeEntities'=>true, 'maxlength'=>255, 'fieldType'=>'radio', 'filesOnly'=>true, 'tl_class'=>'w50 wizard'), 'wizard' => array ( array('tl_content', 'pagePicker') ), 'sql' => "varchar(255) NOT NULL default ''" ); $GLOBALS['TL_DCA']['tl_content']['fields']['eSM_addImage'] = array ( 'label' => &$GLOBALS['TL_LANG']['tl_content']['addImage'], 'exclude' => true, 'inputType' => 'checkbox', 'eval' => array('submitOnChange'=>true), 'sql' => "char(1) NOT NULL default ''" ); class tl_content_eSM_slick extends Backend { /** * Import the back end user object */ public function __construct() { parent::__construct(); $this->import('BackendUser', 'User'); } /** * Show a hint if a JavaScript library needs to be included in the page layout * * @param object */ public function showJsLibraryHint($dc) { if ($_POST || Input::get('act') != 'edit') { return; } // Return if the user cannot access the layout module (see #6190) if (!$this->User->hasAccess('themes', 'modules') || !$this->User->hasAccess('layout', 'themes')) { return; } $objCte = ContentModel::findByPk($dc->id); if ($objCte === null) { return; } switch ($objCte->type) { case 'slickSliderStart': case 'slickSliderStop': Message::addInfo(sprintf($GLOBALS['TL_LANG']['tl_content']['includeTemplatesJQuery'], 'j_slickslider')); break; } } }