diff --git a/Classes/Controller/ConfigController.php b/Classes/Controller/ConfigController.php index 395de45c..af1c513e 100644 --- a/Classes/Controller/ConfigController.php +++ b/Classes/Controller/ConfigController.php @@ -50,6 +50,7 @@ class ConfigController extends ActionController protected $version; + /** * Inject a configRepository repository to enable DI * @@ -221,7 +222,7 @@ public function createAction(\T3SBS\T3sbootstrap\Domain\Model\Config $newConfig) $newConfig->setPid((int)$_GET['id']); $this->configRepository->add($newConfig); - $this->redirect('list'); + parent::redirect('list'); } @@ -289,7 +290,7 @@ public function updateAction(\T3SBS\T3sbootstrap\Domain\Model\Config $config) $config->setHomepageUid($homepageUid); $this->configRepository->update($config); - $this->redirect('edit',NULL,Null,array('config' => $config)); + parent::redirect('edit',NULL,Null,array('config' => $config)); } @@ -303,7 +304,7 @@ public function deleteAction(\T3SBS\T3sbootstrap\Domain\Model\Config $config) { $this->addFlashMessage('The object was deleted.'); $this->configRepository->remove($config); - $this->redirect('list'); + parent::redirect('list'); } diff --git a/Classes/DataProcessing/BootstrapProcessor.php b/Classes/DataProcessing/BootstrapProcessor.php index 7e60f202..33257e24 100644 --- a/Classes/DataProcessing/BootstrapProcessor.php +++ b/Classes/DataProcessing/BootstrapProcessor.php @@ -412,6 +412,7 @@ public function process(ContentObjectRenderer $cObj, array $contentObjectConfigu $processedData['containerPost'] = ''; $processedData['container'] = $container; } + if ($processedData['be_layout'] == 'OneCol' && !$container) { $pageContainer = self::getFrontendController()->page['tx_t3sbootstrap_container'] ? TRUE : FALSE; if (!$pageContainer && !$processedData['data']['tx_gridelements_container']) { @@ -461,7 +462,8 @@ public function process(ContentObjectRenderer $cObj, array $contentObjectConfigu $processedData['data']['tx_t3sbootstrap_animateCss'] = FALSE; } if ($processedData['data']['tx_t3sbootstrap_animateCss'] && $extConf['animateCss'] ) { - $delay = $processedData['data']['tx_t3sbootstrap_animateCssDelay'] ? ' delay-'.$processedData['data']['tx_t3sbootstrap_animateCssDelay'].'s' : ''; + + $delay = $processedData['data']['tx_t3sbootstrap_animateCssDelay'] ? ' delay-'.$processedData['data']['tx_t3sbootstrap_animateCssDelay'] : ''; // add to class if( $processedData['data']['tx_t3sbootstrap_animateCssRepeat'] ) { $processedData['class'] .= ' animated bt_hidden '.$delay; diff --git a/Classes/DataProcessing/ConfigProcessor.php b/Classes/DataProcessing/ConfigProcessor.php index 128ef0d5..20b758a6 100644 --- a/Classes/DataProcessing/ConfigProcessor.php +++ b/Classes/DataProcessing/ConfigProcessor.php @@ -19,21 +19,53 @@ use TYPO3\CMS\Core\Utility\RootlineUtility; use TYPO3\CMS\Core\Site\Entity\SiteInterface; use TYPO3\CMS\Core\Routing\SiteMatcher; -use TYPO3\CMS\Core\Service\FlexFormService; use TYPO3\CMS\Frontend\ContentObject\ContentDataProcessor; use TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer; use TYPO3\CMS\Frontend\ContentObject\DataProcessorInterface; use TYPO3\CMS\Frontend\Resource\FilePathSanitizer; use T3SBS\T3sbootstrap\Utility\BackgroundImageUtility; use TYPO3\CMS\Core\Configuration\ExtensionConfiguration; +use TYPO3\CMS\Core\Resource\FileRepository; + class ConfigProcessor implements DataProcessorInterface { + + /** + * The content object renderer + * + * @var \TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer + */ + protected $contentObjectRenderer; + + /** + * The contentObject configuration + * + * @var array + */ + protected $contentObjectConfiguration; + + /** + * The processor configuration + * + * @var array + */ + protected $processorConfiguration; + + /** + * processed data + * + * @var array + */ + protected $processedData; + /** * @var ContentDataProcessor */ protected $contentDataProcessor; + + /** * Constructor */ @@ -56,58 +88,63 @@ public function __construct() public function process(ContentObjectRenderer $cObj, array $contentObjectConfiguration, array $processorConfiguration, array $processedData) { + $this->contentObjectRenderer = $cObj; + $this->contentObjectConfiguration = $contentObjectConfiguration; + $this->processorConfiguration = $processorConfiguration; + $this->processedData = $processedData; + $frontendController = self::getFrontendController(); // the table to query $tableName = 'tx_t3sbootstrap_domain_model_config'; - $processorConfiguration['pidInList'] = $frontendController->id; + $this->processorConfiguration['pidInList'] = $frontendController->id; // execute a SQL statement to fetch the records from current page - $records = $cObj->getRecords($tableName, $processorConfiguration); + $records = $this->contentObjectRenderer->getRecords($tableName, $this->processorConfiguration); - $rootLineArray = GeneralUtility::makeInstance(RootlineUtility::class, (int)$processedData['data']['uid'])->get(); + $rootLineArray = GeneralUtility::makeInstance(RootlineUtility::class, (int)$this->processedData['data']['uid'])->get(); if ( empty($records) ) { - if ( $processorConfiguration['rootline'] ) { + if ( $this->processorConfiguration['rootline'] ) { // config from rootline // unset current page $rlA = $rootLineArray; unset($rlA[count($rlA)-1]); foreach ($rlA as $rootline) { - $processorConfiguration['pidInList'] = $rootline['uid']; - $records = $cObj->getRecords($tableName, $processorConfiguration); + $this->processorConfiguration['pidInList'] = $rootline['uid']; + $records = $this->contentObjectRenderer->getRecords($tableName, $this->processorConfiguration); if ( !empty($records) ) break; } } else { // config from root page - if ( $processedData['data']['is_siteroot'] ) { - $rootPageUid = $processedData['data']['uid']; + if ( $this->processedData['data']['is_siteroot'] ) { + $rootPageUid = $this->processedData['data']['uid']; } else { $rootPageUid = $rootLineArray[0]['uid']; } - $processorConfiguration['pidInList'] = $rootPageUid; - $records = $cObj->getRecords($tableName, $processorConfiguration); + $this->processorConfiguration['pidInList'] = $rootPageUid; + $records = $this->contentObjectRenderer->getRecords($tableName, $this->processorConfiguration); } } if ( empty($records) ) { - $processedData['noConfig'] = TRUE; + $this->processedData['noConfig'] = TRUE; - return $processedData; + return $this->processedData; } else { - $cObj->start($records[0], $tableName); - $processedRecordVariables = $this->contentDataProcessor->process($cObj, $processorConfiguration, $records[0]); + $this->contentObjectRenderer->start($records[0], $tableName); + $processedRecordVariables = $this->contentDataProcessor->process($this->contentObjectRenderer, $this->processorConfiguration, $records[0]); } // override config by TS - if ( $contentObjectConfiguration['settings.']['configOverride'] ) { - foreach ( $contentObjectConfiguration['settings.']['override.'] as $key=>$override ) { + if ( $this->contentObjectConfiguration['settings.']['configOverride'] ) { + foreach ( $this->contentObjectConfiguration['settings.']['override.'] as $key=>$override ) { if ( ($override || $override === '0' || $override === 'false') && $override[1] != '$' ) { @@ -129,17 +166,17 @@ public function process(ContentObjectRenderer $cObj, array $contentObjectConfigu // company w/ multilingual support $company = $processedRecordVariables['company']; $companyArr = GeneralUtility::trimExplode('|', $company); - $sysLanguageUid = $processedData['data']['sys_language_uid']; + $sysLanguageUid = $this->processedData['data']['sys_language_uid']; if ( $sysLanguageUid && $company ) { $company = $companyArr[$sysLanguageUid] ?: $company; } else { $company = $companyArr[0] ?: $company; } - $processedData['config']['general']['company'] = trim($company); - $processedData['config']['general']['homepageUid'] = $processedRecordVariables['homepage_uid'] ?: 1; - $processedData['config']['general']['pageTitle'] = $processedRecordVariables['page_title'] ?: ''; - $processedData['config']['general']['pageTitlealign'] = $processedRecordVariables['page_titlealign'] ?: ''; - $processedData['config']['general']['pageTitleclass'] = $processedRecordVariables['page_titleclass'] ?: ''; + $this->processedData['config']['general']['company'] = trim($company); + $this->processedData['config']['general']['homepageUid'] = $processedRecordVariables['homepage_uid'] ?: 1; + $this->processedData['config']['general']['pageTitle'] = $processedRecordVariables['page_title'] ?: ''; + $this->processedData['config']['general']['pageTitlealign'] = $processedRecordVariables['page_titlealign'] ?: ''; + $this->processedData['config']['general']['pageTitleclass'] = $processedRecordVariables['page_titleclass'] ?: ''; // flexible small columns $currentPage = $frontendController->page; @@ -156,15 +193,15 @@ public function process(ContentObjectRenderer $cObj, array $contentObjectConfigu $smallColumnsRootline = (int)$rootlinePage['tx_t3sbootstrap_smallColumns']; $smallColumns = $smallColumnsCurrent ?: $smallColumnsRootline; - if ( $contentObjectConfiguration['settings.']['pages.']['override.']['smallColumns'] ) { - if ( GeneralUtility::inList('1,2,3,4,6', $contentObjectConfiguration['settings.']['pages.']['override.']['smallColumns']) ) { - $smallColumns = $contentObjectConfiguration['settings.']['pages.']['override.']['smallColumns']; + if ( $this->contentObjectConfiguration['settings.']['pages.']['override.']['smallColumns'] ) { + if ( GeneralUtility::inList('1,2,3,4,6', $this->contentObjectConfiguration['settings.']['pages.']['override.']['smallColumns']) ) { + $smallColumns = $this->contentObjectConfiguration['settings.']['pages.']['override.']['smallColumns']; } else { $smallColumns = 3; } } - $processedData['colAside'] = $smallColumns; + $this->processedData['colAside'] = $smallColumns; if ($currentPage['backend_layout']) { $threeCol = $currentPage['backend_layout'] == 'pagets__ThreeCol' ? TRUE : FALSE; @@ -177,39 +214,39 @@ public function process(ContentObjectRenderer $cObj, array $contentObjectConfigu $threeCol = $bel == 'pagets__ThreeCol' ? TRUE : FALSE; } - switch ( $processedData['colAside'] ) { + switch ( $this->processedData['colAside'] ) { case 1: - $processedData['colMain'] = $threeCol ? 10 : 11; + $this->processedData['colMain'] = $threeCol ? 10 : 11; break; case 2: - $processedData['colMain'] = $threeCol ? 8 : 10; + $this->processedData['colMain'] = $threeCol ? 8 : 10; break; case 3: - $processedData['colMain'] = $threeCol ? 6 : 9; + $this->processedData['colMain'] = $threeCol ? 6 : 9; break; case 4: - $processedData['colMain'] = $threeCol ? 4 : 8; + $this->processedData['colMain'] = $threeCol ? 4 : 8; break; case 6: - $processedData['colMain'] = $threeCol ? 0 : 6; + $this->processedData['colMain'] = $threeCol ? 0 : 6; break; default: - $processedData['colMain'] = 9; + $this->processedData['colMain'] = 9; } // image from pages media if ( $processedRecordVariables['pagemedia'] ) { - $processedData['pagemedia'] = $processedRecordVariables['pagemedia']; + $this->processedData['pagemedia'] = $processedRecordVariables['pagemedia']; } // grid breakpoint - $processedData['gridBreakpoint'] = $currentPage['tx_t3sbootstrap_breakpoint'] ?: 'md'; + $this->processedData['gridBreakpoint'] = $currentPage['tx_t3sbootstrap_breakpoint'] ?: 'md'; - if ( $contentObjectConfiguration['settings.']['pages.']['override.']['breakpoint'] ) { - if ( GeneralUtility::inList('sm,md,lg,xl', $contentObjectConfiguration['settings.']['pages.']['override.']['breakpoint']) ) { - $processedData['gridBreakpoint'] = $contentObjectConfiguration['settings.']['pages.']['override.']['breakpoint']; + if ( $this->contentObjectConfiguration['settings.']['pages.']['override.']['breakpoint'] ) { + if ( GeneralUtility::inList('sm,md,lg,xl', $this->contentObjectConfiguration['settings.']['pages.']['override.']['breakpoint']) ) { + $this->processedData['gridBreakpoint'] = $this->contentObjectConfiguration['settings.']['pages.']['override.']['breakpoint']; } else { - $processedData['gridBreakpoint'] = $currentPage['tx_t3sbootstrap_breakpoint'] ?: 'md'; + $this->processedData['gridBreakpoint'] = $currentPage['tx_t3sbootstrap_breakpoint'] ?: 'md'; } } @@ -226,20 +263,20 @@ public function process(ContentObjectRenderer $cObj, array $contentObjectConfigu $langFlag[$lang->getLanguageId()] = $lang->getFlagIdentifier(); } - $processedData['config']['lang']['uid'] = $langUid ?: ''; - $processedData['config']['lang']['hreflang'] = $langHref ?: ''; - $processedData['config']['lang']['title'] = $langTitle ?: ''; - $processedData['config']['lang']['flag'] = $langFlag ?: ''; + $this->processedData['config']['lang']['uid'] = $langUid ?: ''; + $this->processedData['config']['lang']['hreflang'] = $langHref ?: ''; + $this->processedData['config']['lang']['title'] = $langTitle ?: ''; + $this->processedData['config']['lang']['flag'] = $langFlag ?: ''; /** * Meta Navigation */ if ( $processedRecordVariables['meta_enable'] ) { - $processedData['config']['meta']['align'] = $processedRecordVariables['meta_enable']; - $processedData['config']['meta']['container'] = $processedRecordVariables['meta_container'] ? ' '.$processedRecordVariables['meta_container'] : ''; + $this->processedData['config']['meta']['align'] = $processedRecordVariables['meta_enable']; + $this->processedData['config']['meta']['container'] = $processedRecordVariables['meta_container'] ? ' '.$processedRecordVariables['meta_container'] : ''; $metaClass = $processedRecordVariables['meta_class'] ?: ''; - $processedData['config']['meta']['class'] = ' '.trim($metaClass); - $processedData['config']['meta']['text'] = trim($processedRecordVariables['meta_text']); + $this->processedData['config']['meta']['class'] = ' '.trim($metaClass); + $this->processedData['config']['meta']['text'] = trim($processedRecordVariables['meta_text']); } /** @@ -247,106 +284,106 @@ public function process(ContentObjectRenderer $cObj, array $contentObjectConfigu */ if ( $processedRecordVariables['navbar_enable'] ) { - switch ( $contentObjectConfiguration['settings.']['navbar.']['dropdownAnimate'] ) { + switch ( $this->contentObjectConfiguration['settings.']['navbar.']['dropdownAnimate'] ) { case 1: # & css - $processedData['config']['navbar']['dropdownAnimate'] = ' dd-animate-1 slideIn'; + $this->processedData['config']['navbar']['dropdownAnimate'] = ' dd-animate-1 slideIn'; break; case 2: # & inlineJS.ts - 19 - $processedData['config']['navbar']['dropdownAnimate'] = ' dd-animate-2'; + $this->processedData['config']['navbar']['dropdownAnimate'] = ' dd-animate-2'; break; case 3: # & css - $processedData['config']['navbar']['dropdownAnimate'] = ' dd-animate-3'; + $this->processedData['config']['navbar']['dropdownAnimate'] = ' dd-animate-3'; break; case 4: # & css - $processedData['config']['navbar']['dropdownAnimate'] = ' dd-animate-4'; + $this->processedData['config']['navbar']['dropdownAnimate'] = ' dd-animate-4'; break; default: - $processedData['config']['navbar']['dropdownAnimate'] = ''; + $this->processedData['config']['navbar']['dropdownAnimate'] = ''; } - $processedData['config']['navbar']['enable'] = $processedRecordVariables['navbar_enable']; - $processedData['config']['navbar']['sectionMenu'] = $processedRecordVariables['navbar_sectionmenu'] ? ' section-menu' : ''; - $processedData['config']['navbar']['brand'] = $processedRecordVariables['navbar_brand']; + $this->processedData['config']['navbar']['enable'] = $processedRecordVariables['navbar_enable']; + $this->processedData['config']['navbar']['sectionMenu'] = $processedRecordVariables['navbar_sectionmenu'] ? ' section-menu' : ''; + $this->processedData['config']['navbar']['brand'] = $processedRecordVariables['navbar_brand']; if ( $rootLineArray[1]['doktype'] == 4) { - $processedData['config']['navbar']['clickableparent'] = 1; + $this->processedData['config']['navbar']['clickableparent'] = 1; } else { - $processedData['config']['navbar']['clickableparent'] = $processedRecordVariables['navbar_clickableparent']; + $this->processedData['config']['navbar']['clickableparent'] = $processedRecordVariables['navbar_clickableparent']; } - $processedData['config']['navbar']['image'] = $processedRecordVariables['navbar_image'] - ? $processedRecordVariables['navbar_image'] : $contentObjectConfiguration['settings.']['navbar.']['image.']['defaultPath']; - $processedData['config']['navbar']['toggler'] = $processedRecordVariables['navbar_toggler']; + $this->processedData['config']['navbar']['image'] = $processedRecordVariables['navbar_image'] + ? $processedRecordVariables['navbar_image'] : $this->contentObjectConfiguration['settings.']['navbar.']['image.']['defaultPath']; + $this->processedData['config']['navbar']['toggler'] = $processedRecordVariables['navbar_toggler']; if ( $processedRecordVariables['navbar_container'] == 'none' ) { - $processedData['config']['navbar']['container'] = ''; + $this->processedData['config']['navbar']['container'] = ''; } else { if ( $processedRecordVariables['navbar_container'] == 'fluid' ) { - $processedData['config']['navbar']['container'] = 'container-fluid'; + $this->processedData['config']['navbar']['container'] = 'container-fluid'; } else { - $processedData['config']['navbar']['containerposition'] = $processedRecordVariables['navbar_container']; - $processedData['config']['navbar']['container'] = 'container'; + $this->processedData['config']['navbar']['containerposition'] = $processedRecordVariables['navbar_container']; + $this->processedData['config']['navbar']['container'] = 'container'; } } $navbarClass = 'navbar-'.$processedRecordVariables['navbar_enable']; $navbarClass .= $processedRecordVariables['navbar_breakpoint'] ? ' navbar-expand-'.$processedRecordVariables['navbar_breakpoint'] : ' navbar-expand-sm'; // navbar breakpoint - $processedData['navbarBreakpoint'] = $processedRecordVariables['navbar_breakpoint'] ?: 'md'; + $this->processedData['navbarBreakpoint'] = $processedRecordVariables['navbar_breakpoint'] ?: 'md'; if ( $processedRecordVariables['navbar_placement'] == 'fixed-top' && $processedRecordVariables['navbar_shrinkcolor'] ) { - $navbarClass .= ' shrink py-'.$contentObjectConfiguration['settings.']['shrinkingNavPadding']; + $navbarClass .= ' shrink py-'.$this->contentObjectConfiguration['settings.']['shrinkingNavPadding']; } - $processedData['config']['navbar']['breakpoint'] = $processedRecordVariables['navbar_breakpoint']; + $this->processedData['config']['navbar']['breakpoint'] = $processedRecordVariables['navbar_breakpoint']; $navbarClass .= $processedRecordVariables['navbar_class'] ? ' '.$processedRecordVariables['navbar_class'] : ''; if ( $processedRecordVariables['navbar_color'] == 'color' ) { if ( $processedRecordVariables['navbar_background'] ) { $navbarStyle = 'background-color: '.$processedRecordVariables['navbar_background'].';'; - $processedData['config']['navbar']['style'] = $navbarStyle; + $this->processedData['config']['navbar']['style'] = $navbarStyle; } else { - $processedData['config']['navbar']['shrinkColorschemes'] = 'bg-'.$processedRecordVariables['navbar_shrinkcolorschemes']; - $processedData['config']['navbar']['colorschemes'] = 'bg-'.$processedRecordVariables['navbar_color']; + $this->processedData['config']['navbar']['shrinkColorschemes'] = 'bg-'.$processedRecordVariables['navbar_shrinkcolorschemes']; + $this->processedData['config']['navbar']['colorschemes'] = 'bg-'.$processedRecordVariables['navbar_color']; } } else { $navbarClass .= ' bg-'.$processedRecordVariables['navbar_color']; - $processedData['config']['navbar']['shrinkColorschemes'] = 'bg-'.$processedRecordVariables['navbar_shrinkcolorschemes']; - $processedData['config']['navbar']['colorschemes'] = 'bg-'.$processedRecordVariables['navbar_color']; + $this->processedData['config']['navbar']['shrinkColorschemes'] = 'bg-'.$processedRecordVariables['navbar_shrinkcolorschemes']; + $this->processedData['config']['navbar']['colorschemes'] = 'bg-'.$processedRecordVariables['navbar_color']; } if ( ($processedRecordVariables['navbar_placement'] == 'fixed-top' && $processedRecordVariables['navbar_shrinkcolor']) && ($processedRecordVariables['navbar_enable'] == 'light' || $processedRecordVariables['navbar_enable'] == 'dark') ) { - $processedData['config']['navbar']['shrinkColor'] = 'navbar-'.$processedRecordVariables['navbar_shrinkcolor']; - $processedData['config']['navbar']['color'] = 'navbar-'.$processedRecordVariables['navbar_enable']; + $this->processedData['config']['navbar']['shrinkColor'] = 'navbar-'.$processedRecordVariables['navbar_shrinkcolor']; + $this->processedData['config']['navbar']['color'] = 'navbar-'.$processedRecordVariables['navbar_enable']; } if ($processedRecordVariables['navbar_placement']) { - if ( $processedData['config']['navbar']['containerposition'] == 'outside' ) { - $processedData['config']['navbar']['container'] = - trim($processedData['config']['navbar']['container'].' '.$processedRecordVariables['navbar_placement']); + if ( $this->processedData['config']['navbar']['containerposition'] == 'outside' ) { + $this->processedData['config']['navbar']['container'] = + trim($this->processedData['config']['navbar']['container'].' '.$processedRecordVariables['navbar_placement']); } else { $navbarClass = $navbarClass.' '.$processedRecordVariables['navbar_placement']; } } - $processedData['config']['navbar']['class'] = trim($navbarClass); + $this->processedData['config']['navbar']['class'] = trim($navbarClass); $dropdown = $processedRecordVariables['navbar_placement'] == 'fixed-bottom' ? 'dropup' : 'dropdown'; - $processedData['config']['navbar']['dropdown'] = $dropdown; - $processedData['config']['navbar']['spacer'] = $processedRecordVariables['navbar_includespacer']; - $processedData['config']['navbar']['megamenu'] = $processedRecordVariables['navbar_megamenu']; - $processedData['config']['navbar']['placement'] = $processedRecordVariables['navbar_placement']; - $processedData['config']['navbar']['sticky'] = $processedRecordVariables['navbar_placement'] == 'sticky-top' ? TRUE : FALSE; - $processedData['config']['navbar']['alignment'] = $processedRecordVariables['navbar_alignment']; - $processedData['config']['navbar']['mauto'] = ($processedRecordVariables['navbar_alignment'] == 'right') ? ' ml-auto': ''; - if ( $processorConfiguration['navbarExtraRow'] ) { - $processedData['config']['navbar']['mauto'] = ($processedRecordVariables['navbar_alignment'] == 'right') ? ' ml-auto': ' mr-auto'; + $this->processedData['config']['navbar']['dropdown'] = $dropdown; + $this->processedData['config']['navbar']['spacer'] = $processedRecordVariables['navbar_includespacer']; + $this->processedData['config']['navbar']['megamenu'] = $processedRecordVariables['navbar_megamenu']; + $this->processedData['config']['navbar']['placement'] = $processedRecordVariables['navbar_placement']; + $this->processedData['config']['navbar']['sticky'] = $processedRecordVariables['navbar_placement'] == 'sticky-top' ? TRUE : FALSE; + $this->processedData['config']['navbar']['alignment'] = $processedRecordVariables['navbar_alignment']; + $this->processedData['config']['navbar']['mauto'] = ($processedRecordVariables['navbar_alignment'] == 'right') ? ' ml-auto': ''; + if ( $this->processorConfiguration['navbarExtraRow'] ) { + $this->processedData['config']['navbar']['mauto'] = ($processedRecordVariables['navbar_alignment'] == 'right') ? ' ml-auto': ' mr-auto'; } - $processedData['config']['navbar']['justify'] = $processedRecordVariables['navbar_justify'] ? ' nav-fill w-100' : ''; - $processedData['config']['navbar']['offcanvas'] = $processedRecordVariables['navbar_offcanvas']; + $this->processedData['config']['navbar']['justify'] = $processedRecordVariables['navbar_justify'] ? ' nav-fill w-100' : ''; + $this->processedData['config']['navbar']['offcanvas'] = $processedRecordVariables['navbar_offcanvas']; if ( $processedRecordVariables['navbar_searchbox'] ) { - $processedData['config']['navbar']['searchbox'] = $processedRecordVariables['navbar_searchbox']; - $processedData['config']['navbar']['searchboxcolor'] = $processedRecordVariables['navbar_enable'] == 'light' ? 'dark' : 'light'; + $this->processedData['config']['navbar']['searchbox'] = $processedRecordVariables['navbar_searchbox']; + $this->processedData['config']['navbar']['searchboxcolor'] = $processedRecordVariables['navbar_enable'] == 'light' ? 'dark' : 'light'; } } @@ -354,19 +391,19 @@ public function process(ContentObjectRenderer $cObj, array $contentObjectConfigu * Jumbotron */ if ( $processedRecordVariables['jumbotron_enable'] ) { - $processedData['config']['jumbotron']['enable'] = $processedRecordVariables['jumbotron_enable']; - $processedData['config']['jumbotron']['fluid'] = $processedRecordVariables['jumbotron_fluid']; - $processedData['config']['jumbotron']['slide'] = $processedRecordVariables['jumbotron_slide']; - $processedData['config']['jumbotron']['position'] = $processedRecordVariables['jumbotron_position']; - $processedData['config']['jumbotron']['container'] = $processedRecordVariables['jumbotron_container']; - $processedData['config']['jumbotron']['containerposition'] = $processedRecordVariables['jumbotron_containerposition']; + $this->processedData['config']['jumbotron']['enable'] = $processedRecordVariables['jumbotron_enable']; + $this->processedData['config']['jumbotron']['fluid'] = $processedRecordVariables['jumbotron_fluid']; + $this->processedData['config']['jumbotron']['slide'] = $processedRecordVariables['jumbotron_slide']; + $this->processedData['config']['jumbotron']['position'] = $processedRecordVariables['jumbotron_position']; + $this->processedData['config']['jumbotron']['container'] = $processedRecordVariables['jumbotron_container']; + $this->processedData['config']['jumbotron']['containerposition'] = $processedRecordVariables['jumbotron_containerposition']; $jumbotronClass = $processedRecordVariables['jumbotron_class'] ?: ''; $jumbotronClass .= $processedRecordVariables['jumbotron_fluid'] ? ' jumbotron-fluid' : ''; - $processedData['config']['jumbotron']['class'] = ' '.trim($jumbotronClass); + $this->processedData['config']['jumbotron']['class'] = ' '.trim($jumbotronClass); # Image from pages media - $fileRepository = GeneralUtility::makeInstance(\TYPO3\CMS\Core\Resource\FileRepository::class); + $fileRepository = GeneralUtility::makeInstance(FileRepository::class); $fileObjects = []; if ( $processedRecordVariables['jumbotron_bgimage'] == 'root' ) { $bgImage = $this->getBackgroundImageUtility()->getBgImage($frontendController->id, 'pages', TRUE); @@ -380,28 +417,28 @@ public function process(ContentObjectRenderer $cObj, array $contentObjectConfigu } } if ($bgImage) - $processedData['config']['jumbotron']['bgImage'] = $bgImage; + $this->processedData['config']['jumbotron']['bgImage'] = $bgImage; } elseif ( $processedRecordVariables['jumbotron_bgimage'] == 'page' ) { $bgImage = $this->getBackgroundImageUtility()->getBgImage($frontendController->id, 'pages', TRUE); $fileObjects = $fileRepository->findByRelation('pages', 'media', $frontendController->id); if ($bgImage) - $processedData['config']['jumbotron']['bgImage'] = $bgImage; + $this->processedData['config']['jumbotron']['bgImage'] = $bgImage; } if ( count($fileObjects) > 1 ) { - $processedData['bgSlides'] = $fileObjects; + $this->processedData['bgSlides'] = $fileObjects; } } /** * Background Image (body) */ - if ( $contentObjectConfiguration['settings.']['backgroundImageEnable'] ) { + if ( $this->contentObjectConfiguration['settings.']['backgroundImageEnable'] ) { $bgImage = $this->getBackgroundImageUtility()->getBgImage($frontendController->id, 'pages', FALSE, FALSE, [], TRUE); - if ( empty($bgImage) && $contentObjectConfiguration['settings.']['backgroundImageSlide'] ) { + if ( empty($bgImage) && $this->contentObjectConfiguration['settings.']['backgroundImageSlide'] ) { foreach ($rootLineArray as $page) { $bgImage = $this->getBackgroundImageUtility()->getBgImage($page['uid'], 'pages', FALSE, FALSE, [], TRUE); if ($bgImage) break; @@ -412,22 +449,21 @@ public function process(ContentObjectRenderer $cObj, array $contentObjectConfigu /** * Breadcrumb */ - $processedData['config']['breadcrumb']['class'] = ''; + $this->processedData['config']['breadcrumb']['class'] = ''; if ( $processedRecordVariables['breadcrumb_enable'] || $processedRecordVariables['breadcrumb_bottom'] ) { if ( ($processedRecordVariables['homepage_uid'] == $frontendController->id) && $processedRecordVariables['breadcrumb_notonrootpage'] ) { - $processedData['config']['breadcrumb']['enable'] = FALSE; - $processedData['config']['breadcrumb']['bottom'] = FALSE; + $this->processedData['config']['breadcrumb']['enable'] = FALSE; + $this->processedData['config']['breadcrumb']['bottom'] = FALSE; } else { - $processedData['config']['breadcrumb']['enable'] = $processedRecordVariables['breadcrumb_enable']; - $processedData['config']['breadcrumb']['bottom'] = $processedRecordVariables['breadcrumb_bottom']; - - $processedData['config']['breadcrumb']['faicon'] = $processedRecordVariables['breadcrumb_faicon']; - $processedData['config']['breadcrumb']['position'] = $processedRecordVariables['breadcrumb_position']; - $processedData['config']['breadcrumb']['container'] = $processedRecordVariables['breadcrumb_container']; - $processedData['config']['breadcrumb']['containerposition'] = $processedRecordVariables['breadcrumb_containerposition']; - $processedData['config']['breadcrumb']['class'] .= $processedRecordVariables['breadcrumb_class'] + $this->processedData['config']['breadcrumb']['enable'] = $processedRecordVariables['breadcrumb_enable']; + $this->processedData['config']['breadcrumb']['bottom'] = $processedRecordVariables['breadcrumb_bottom']; + $this->processedData['config']['breadcrumb']['faicon'] = $processedRecordVariables['breadcrumb_faicon']; + $this->processedData['config']['breadcrumb']['position'] = $processedRecordVariables['breadcrumb_position']; + $this->processedData['config']['breadcrumb']['container'] = $processedRecordVariables['breadcrumb_container']; + $this->processedData['config']['breadcrumb']['containerposition'] = $processedRecordVariables['breadcrumb_containerposition']; + $this->processedData['config']['breadcrumb']['class'] .= $processedRecordVariables['breadcrumb_class'] ? ' '.$processedRecordVariables['breadcrumb_class'] : ''; - $processedData['config']['breadcrumb']['class'] .= $processedRecordVariables['breadcrumb_corner'] ? ' rounded-0': ''; + $this->processedData['config']['breadcrumb']['class'] .= $processedRecordVariables['breadcrumb_corner'] ? ' rounded-0': ''; } } @@ -435,10 +471,10 @@ public function process(ContentObjectRenderer $cObj, array $contentObjectConfigu * Sidebar / submenu */ if ( $processedRecordVariables['sidebar_enable'] ) { - $processedData['config']['sidebar']['left'] = $processedRecordVariables['sidebar_enable']; + $this->processedData['config']['sidebar']['left'] = $processedRecordVariables['sidebar_enable']; } if ( $processedRecordVariables['sidebar_rightenable'] ) { - $processedData['config']['sidebar']['right'] = $processedRecordVariables['sidebar_rightenable']; + $this->processedData['config']['sidebar']['right'] = $processedRecordVariables['sidebar_rightenable']; } /** @@ -446,17 +482,17 @@ public function process(ContentObjectRenderer $cObj, array $contentObjectConfigu */ if ( $processedRecordVariables['footer_enable'] ) { - $processedData['config']['footer']['enable'] = $processedRecordVariables['footer_enable']; - $processedData['config']['footer']['sticky'] = $processedRecordVariables['footer_sticky']; - $processedData['config']['footer']['fluid'] = $processedRecordVariables['footer_fluid']; - $processedData['config']['footer']['slide'] = $processedRecordVariables['footer_slide']; - $processedData['config']['footer']['container'] = $processedRecordVariables['footer_container']; - $processedData['config']['footer']['containerposition'] = $processedRecordVariables['footer_containerposition']; + $this->processedData['config']['footer']['enable'] = $processedRecordVariables['footer_enable']; + $this->processedData['config']['footer']['sticky'] = $processedRecordVariables['footer_sticky']; + $this->processedData['config']['footer']['fluid'] = $processedRecordVariables['footer_fluid']; + $this->processedData['config']['footer']['slide'] = $processedRecordVariables['footer_slide']; + $this->processedData['config']['footer']['container'] = $processedRecordVariables['footer_container']; + $this->processedData['config']['footer']['containerposition'] = $processedRecordVariables['footer_containerposition']; $footerClass = $processedRecordVariables['footer_class'] ?: ''; $footerClass .= $processedRecordVariables['footer_fluid'] ? ' jumbotron-fluid' : ''; $footerClass .= $processedRecordVariables['footer_sticky'] ? ' footer-sticky' : ''; - $processedData['config']['footer']['class'] = trim($footerClass); + $this->processedData['config']['footer']['class'] = trim($footerClass); } @@ -464,93 +500,26 @@ public function process(ContentObjectRenderer $cObj, array $contentObjectConfigu * Expandedcontent Top & Bottom */ if ( $processedRecordVariables['expandedcontent_enabletop'] ) { - $processedData['config']['expandedcontentTop']['enable'] = $processedRecordVariables['expandedcontent_enabletop']; - $processedData['config']['expandedcontentTop']['slide'] = $processedRecordVariables['expandedcontent_slidetop']; - $processedData['config']['expandedcontentTop']['container'] = $processedRecordVariables['expandedcontent_containertop']; - $processedData['config']['expandedcontentTop']['containerposition'] = $processedRecordVariables['expandedcontent_containerpositiontop']; - $processedData['config']['expandedcontentTop']['class'] = $processedRecordVariables['expandedcontent_classtop']; + $this->processedData['config']['expandedcontentTop']['enable'] = $processedRecordVariables['expandedcontent_enabletop']; + $this->processedData['config']['expandedcontentTop']['slide'] = $processedRecordVariables['expandedcontent_slidetop']; + $this->processedData['config']['expandedcontentTop']['container'] = $processedRecordVariables['expandedcontent_containertop']; + $this->processedData['config']['expandedcontentTop']['containerposition'] = $processedRecordVariables['expandedcontent_containerpositiontop']; + $this->processedData['config']['expandedcontentTop']['class'] = $processedRecordVariables['expandedcontent_classtop']; } if ( $processedRecordVariables['expandedcontent_enablebottom'] ) { - $processedData['config']['expandedcontentBottom']['enable'] = $processedRecordVariables['expandedcontent_enablebottom']; - $processedData['config']['expandedcontentBottom']['slide'] = $processedRecordVariables['expandedcontent_slidebottom']; - $processedData['config']['expandedcontentBottom']['container'] = $processedRecordVariables['expandedcontent_containerbottom']; - $processedData['config']['expandedcontentBottom']['containerposition'] = $processedRecordVariables['expandedcontent_containerpositionbottom']; - $processedData['config']['expandedcontentBottom']['class'] = $processedRecordVariables['expandedcontent_classbottom']; + $this->processedData['config']['expandedcontentBottom']['enable'] = $processedRecordVariables['expandedcontent_enablebottom']; + $this->processedData['config']['expandedcontentBottom']['slide'] = $processedRecordVariables['expandedcontent_slidebottom']; + $this->processedData['config']['expandedcontentBottom']['container'] = $processedRecordVariables['expandedcontent_containerbottom']; + $this->processedData['config']['expandedcontentBottom']['containerposition'] = $processedRecordVariables['expandedcontent_containerpositionbottom']; + $this->processedData['config']['expandedcontentBottom']['class'] = $processedRecordVariables['expandedcontent_classbottom']; } - /** - * CSS & JS - */ - $animateCSS = false; - $repeatCSS = false; - $navSlide = $processedData['config']['navbar']['enable'] == 'slide' ? true : false; - - $extConf = GeneralUtility::makeInstance(ExtensionConfiguration::class)->get('t3sbootstrap'); - - # ... if needed only - if ( $extConf['animateCss'] == 1 ) { - $processorConfiguration['pidInList'] = $frontendController->id; - $contents = $cObj->getRecords('tt_content', $processorConfiguration); - $flexFormService = GeneralUtility::makeInstance(FlexFormService::class); - foreach ($contents as $content) { - $flexconf = $flexFormService->convertFlexFormContentToArray($content['tx_t3sbootstrap_flexform']); - // carousel container w/ animated captions - if ( $flexconf['animate'] && !$animateCSS ) { - $animateCSS = true; - } - if ( $content['tx_t3sbootstrap_animateCss'] && !$animateCSS ) { - $animateCSS = true; - } - if ( $content['tx_t3sbootstrap_animateCssRepeat'] && !$repeatCSS ) { - $repeatCSS = true; - } - } + if (!$this->processorConfiguration['disableDefaultCss']) { + self::includeRequiredFiles($processedRecordVariables); } - if ( $navSlide || $animateCSS ) { - - $pageRenderer = GeneralUtility::makeInstance(PageRenderer::class); - - if ( $navSlide ) { - $cssFile = 'EXT:t3sbootstrap/Resources/Public/Styles/slideNavbar.css'; - $cssFile = GeneralUtility::makeInstance(FilePathSanitizer::class)->sanitize($cssFile); - $jsFooterFile = 'EXT:t3sbootstrap/Resources/Public/Scripts/slideNavbar.js'; - $jsFooterFile = GeneralUtility::makeInstance(FilePathSanitizer::class)->sanitize($jsFooterFile); - $pageRenderer->addCssFile($cssFile); - $pageRenderer->addJsFooterFile($jsFooterFile); - } - if ( $animateCSS ) { - if ($processorConfiguration['cdnEnable']) { - $cssFile = 'https://cdnjs.cloudflare.com/ajax/libs/animate.css/'.$processorConfiguration['cdnAnimate'].'/animate.min.css'; - $pageRenderer->addCssFile($cssFile); - } else { - $cssFile = 'fileadmin/T3SB/Resources/Public/CSS/animate.min.css'; - $cssFile = GeneralUtility::makeInstance(FilePathSanitizer::class)->sanitize($cssFile); - $pageRenderer->addCssFile($cssFile); - } - } - if ( $repeatCSS ) { - - if ($processorConfiguration['cdnEnable']) { - $jsFooterFile = 'https://cdnjs.cloudflare.com/ajax/libs/jQuery-viewport-checker/'.$processorConfiguration['cdnViewportchecker'].'/jquery.viewportchecker.min.js'; - $pageRenderer->addJsFooterFile($jsFooterFile); - } else { - $jsFooterFile = 'fileadmin/T3SB/Resources/Public/JS/jquery.viewportchecker.min.js'; - $jsFooterFile = GeneralUtility::makeInstance(FilePathSanitizer::class)->sanitize($jsFooterFile); - $pageRenderer->addJsFooterFile($jsFooterFile); - } - - $animateCssInlineJs = $processorConfiguration['animateCssInlineJs'] ?: "classToAdd: 'bt_visible',classToRemove: 'bt_hidden',offset: 0"; - if ( $animateCssInlineJs ) { - $inlineJS = 'jQuery(function(){$( \'.animated\' ).each(function() {$(this).viewportChecker({'.$processorConfiguration['animateCssInlineJs'].'});});});'; - $pageRenderer->addJsFooterInlineCode(' Viewport checker ',$inlineJS,'FALSE'); - } - } - } - - - return $processedData; + return $this->processedData; } @@ -588,4 +557,174 @@ protected function getBackgroundImageUtility() } + /** + * Load required css and js files + * + * @param array $processedRecordVariables + * + * @return void + */ + private function includeRequiredFiles($processedRecordVariables) { + + $pageRenderer = GeneralUtility::makeInstance(PageRenderer::class); + $frontendController = self::getFrontendController(); + $css = ''; + $js = ''; + + + ########################################################################################################## + # + # Offcanvas Navbar + # + ########################################################################################################## + // offcanvasNavbar.css + if ( $processedRecordVariables['navbar_offcanvas'] ) { + + $cssFile = 'EXT:t3sbootstrap/Resources/Public/Styles/offcanvasNavbar.css'; + $cssPath = GeneralUtility::makeInstance(FilePathSanitizer::class)->sanitize($cssFile); + $style = GeneralUtility::getURL($cssPath); + + switch ($processedRecordVariables['navbar_breakpoint']) { + case 'sm': + $css .= ' +/*! + * offcanvasNavbar.css + */ +@media (max-width:575px){'.$style.'}'; + break; + case 'md': + $css .= ' +/*! + * offcanvasNavbar.css + */ +@media (max-width:767px){'.$style.'}'; + break; + case 'lg': + $css .= ' +/*! + * offcanvasNavbar.css + */ +@media (max-width:991px){'.$style.'}'; + break; + case 'xl': + $css .= ' +/*! + * offcanvasNavbar.css + */ +@media (max-width:1199px){'.$style.'}'; + break; + case 'no': + $css .= ' +/*! + * offcanvasNavbar.css + */' +.$style; + break; + } + } + + ########################################################################################################## + # + # Sticky Footer + # + ########################################################################################################## + if ( $processedRecordVariables['footer_sticky'] ) { + $css .= ' +/*! + * sticky footer + */ +html{position:relative;min-height:100%}#page-footer{position:absolute;bottom:0;width:100%} +'; + } + + ########################################################################################################## + # + # Navbar Slide + # + ########################################################################################################## + if ( $this->processedData['config']['navbar']['enable'] == 'slide' ) { + $cssFile = 'EXT:t3sbootstrap/Resources/Public/Styles/slideNavbar.css'; + $cssPath = GeneralUtility::makeInstance(FilePathSanitizer::class)->sanitize($cssFile); + $css .= GeneralUtility::getURL($cssPath); + $jsFooterFile = 'EXT:t3sbootstrap/Resources/Public/Scripts/slideNavbar.js'; + $jsFooterPath = GeneralUtility::makeInstance(FilePathSanitizer::class)->sanitize($jsFooterFile); + $js .= GeneralUtility::getURL($jsFooterPath); + } + + ########################################################################################################## + # + # Mega Menu + # + ########################################################################################################## + if ( $processedRecordVariables['navbar_megamenu'] ) { + $cssFile = 'EXT:t3sbootstrap/Resources/Public/Styles/megaMenu.css'; + $cssPath = GeneralUtility::makeInstance(FilePathSanitizer::class)->sanitize($cssFile); + $css .= GeneralUtility::getURL($cssPath); + } + + ########################################################################################################## + # + # t3sbootstrap default + # + ########################################################################################################## + $cssFile = 'EXT:t3sbootstrap/Resources/Public/Styles/t3sbootstrap.css'; + $cssPath = GeneralUtility::makeInstance(FilePathSanitizer::class)->sanitize($cssFile); + $css .= GeneralUtility::getURL($cssPath); + + // write required files + if ($css) { + $customDir = 'fileadmin/T3SB/Resources/Public/CSS/'; + $customPath = GeneralUtility::getFileAbsFileName($customDir); + $customFileName = 't3sbProject.css'; + self::writeCustomFile($customPath, $customFileName, $css); + } + if ($js) { + $customDir = 'fileadmin/T3SB/Resources/Public/JS/'; + $customPath = GeneralUtility::getFileAbsFileName($customDir); + $customFileName = 't3sbProject.js'; + self::writeCustomFile($customPath, $customFileName, $js); + } + + // include required files to fileadmin + if ($css) { + $projectCSS = GeneralUtility::makeInstance(FilePathSanitizer::class)->sanitize( + '/fileadmin/T3SB/Resources/Public/CSS/t3sbProject.css'); + $pageRenderer->addCssFile($projectCSS); + } + if ($js) { + $projectJS = GeneralUtility::makeInstance(FilePathSanitizer::class)->sanitize( + '/fileadmin/T3SB/Resources/Public/JS/t3sbProject.js'); + $pageRenderer->addJsFooterFile($projectJS); + } + + } + + + /** + * Write a custom css-file + * + * @param string $customPath + * @param string $customFileName + * @param string $customContent + * + * @return void + */ + private function writeCustomFile($customPath, $customFileName, $customContent ) { + + if ($customContent) { + + $customFile = $customPath.$customFileName; + + if (file_exists($customFile)) { + unlink($customFile); + } + + if (!is_dir($customPath)) { + mkdir($customPath, 0777, true); + } + + GeneralUtility::writeFile($customFile, trim($customContent)); + } + } + } diff --git a/Classes/DataProcessing/GalleryProcessor.php b/Classes/DataProcessing/GalleryProcessor.php index e8974cbc..6c052449 100644 --- a/Classes/DataProcessing/GalleryProcessor.php +++ b/Classes/DataProcessing/GalleryProcessor.php @@ -209,6 +209,11 @@ class GalleryProcessor implements DataProcessorInterface */ protected $maxWidthToast; + /** + * @var boolean + */ + protected $disableAutoRow; + /** * @var array */ @@ -220,7 +225,6 @@ class GalleryProcessor implements DataProcessorInterface protected $contentContainer; - /** * Process data for a gallery, for instance the CType "textmedia" * @@ -258,6 +262,10 @@ public function process( throw new ContentRenderingException('No files found for key ' . $filesProcessedDataKey . ' in $processedData.', 1436809789); } + if (empty($this->fileObjects)) { + return $processedData; + } + $this->numberOfColumns = (int)$this->getConfigurationValue('numberOfColumns', 'imagecols'); $this->mediaOrientation = (int)$this->getConfigurationValue('mediaOrientation', 'imageorient'); $this->maxGalleryWidth = (int)$this->getConfigurationValue('maxGalleryWidth') ?: 1140; @@ -277,6 +285,7 @@ public function process( $this->rowWidth = $processedData['data']['tx_t3sbootstrap_inTextImgRowWidth']; $this->maxWidthMediaObject = $this->getConfigurationValue('maxWidthMediaObject'); $this->maxWidthToast = $this->getConfigurationValue('maxWidthToast'); + $this->disableAutoRow = $this->getConfigurationValue('disableAutoRow'); $this->determineGalleryPosition(); $this->calculateRowsAndColumns(); @@ -345,6 +354,10 @@ protected function determineGalleryPosition() protected function determineMaximumGalleryWidth() { + if ( $this->rowWidth == 'auto' && $this->disableAutoRow ) { + $this->rowWidth == 'none'; + } + if ( $this->rowWidth == 'auto' ) { if ( $this->cType == 'textmedia' || $this->cType == 'textpic' || $this->cType == 'image' ) { @@ -408,10 +421,10 @@ protected function calculateRowsAndColumns() { // If no columns defined, set it to 1 $columns = max((int)$this->numberOfColumns, 1); - + if ($columns === 88) { $columns = 1; - } else { + } else { // When more columns than media elements, set the columns to the amount of media elements if ($columns > $this->galleryData['count']['files']) { $columns = $this->galleryData['count']['files']; @@ -469,7 +482,7 @@ protected function calculateMediaWidthsAndHeights() // nax media width $mediaWidth = $bsMaxGridWidth; - if ( $this->rowWidth != 'none' ) { + if ( $this->rowWidth && $this->rowWidth != 'none' ) { $rowWidth = (int) end(explode('-', $this->rowWidth)); } else { $rowWidth = 100; @@ -478,8 +491,12 @@ protected function calculateMediaWidthsAndHeights() // calculate the default padding $padding = self::getDefaultPadding($rowWidth); - if ( $this->colPos == 0 || $this->colPos == 1 || $this->colPos == 2 || $this->colPos === -1 ) { - + if ( $this->colPos == 0 + || $this->colPos == 1 + || $this->colPos == 2 + || ($this->colPos === -1 && $this->parentgridColPos < 3) + ) + { if ($this->beLayout == 'OneCol') { $galleryWidth = ($bsMaxGridWidth * $rowWidth / 100 - $padding) - ($this->galleryData['count']['columns']-1) * 16; $mediaWidth = $galleryWidth / $this->galleryData['count']['columns']; @@ -521,7 +538,12 @@ protected function calculateMediaWidthsAndHeights() } // Jumbotron, footer && expanded content - if ( $this->colPos == 3 || $this->colPos == 4 || $this->colPos == 20 || $this->colPos == 21 || $this->colPos === -1 ) + if ( $this->colPos == 3 + || $this->colPos == 4 + || $this->colPos == 20 + || $this->colPos == 21 + || ($this->colPos === -1 && $this->parentgridColPos > 2) + ) { $galleryWidth = ($bsMaxGridWidth * $rowWidth / 100 - $padding) - ($this->galleryData['count']['columns']-1) * 16; $mediaWidth = $galleryWidth / $this->galleryData['count']['columns']; @@ -549,11 +571,7 @@ protected function calculateMediaWidthsAndHeights() // User entered a predefined width if ($this->equalMediaWidth) { - if ( $this->equalMediaWidth < $mediaWidth ) { - $mediaWidth = $this->equalMediaWidth; - } - - if ( $this->rowWidth == 'none' ) { + if ( ($this->equalMediaWidth < floor($mediaWidth)) || $this->rowWidth == 'none' ) { $mediaWidth = $this->equalMediaWidth; } @@ -562,6 +580,14 @@ protected function calculateMediaWidthsAndHeights() $mediaWidth = 575; } + if ( $this->cType == 't3sbs_mediaobject' && $this->maxWidthMediaObject < $mediaWidth ) { + $mediaWidth = $this->maxWidthMediaObject; + } + + if ( $this->cType == 't3sbs_toast' && $this->maxWidthToast < $mediaWidth ) { + $mediaWidth = $this->maxWidthToast; + } + // User entered a predefined width & height if ($this->equalMediaHeight) { @@ -623,11 +649,11 @@ protected function calculateMediaWidthsAndHeights() $mediaWidth = 575; } - if ( $this->cType == 't3sbs_mediaobject' ) { + if ( $this->cType == 't3sbs_mediaobject' && $this->maxWidthMediaObject < $mediaWidth ) { $mediaWidth = $this->maxWidthMediaObject; } - if ( $this->cType == 't3sbs_toast' ) { + if ( $this->cType == 't3sbs_toast' && $this->maxWidthToast < $mediaWidth ) { $mediaWidth = $this->maxWidthToast; } @@ -645,6 +671,10 @@ protected function calculateMediaWidthsAndHeights() } } + + + + $this->galleryData['width'] = floor($mediaWidth); } diff --git a/Classes/Helper/DefaultHelper.php b/Classes/Helper/DefaultHelper.php index 2dcb0907..74d6f4aa 100644 --- a/Classes/Helper/DefaultHelper.php +++ b/Classes/Helper/DefaultHelper.php @@ -34,7 +34,7 @@ public function getContainerClass($data) $pageContainer = self::getFrontendController()->page['tx_t3sbootstrap_container'] ? TRUE : FALSE; - if ( $pageContainer === FALSE && $data['colPos'] === 0 ) { + if ( $pageContainer === FALSE && ($data['colPos'] === 0 || $data['parentgrid_colPos'] === 0) ) { $container = $data['tx_t3sbootstrap_container']; } else { @@ -44,12 +44,24 @@ public function getContainerClass($data) $footerContainer = $t3sbconfig[0]['footer_container']; $expandedcontentTopContainer = $t3sbconfig[0]['expandedcontent_containertop']; $expandedcontentBottomContainer = $t3sbconfig[0]['expandedcontent_containerbottom']; + + $footerByPid = $t3sbconfig[0]['footer_pid']; + if(!empty($t3sbconfig)) break; } - if ( $data['colPos'] === 3 && !$jumbotronContainer ) $container = $data['tx_t3sbootstrap_container']; - if ( $data['colPos'] === 4 && !$footerContainer ) $container = $data['tx_t3sbootstrap_container']; - if ( $data['colPos'] === 20 && !$expandedcontentTopContainer ) $container = $data['tx_t3sbootstrap_container']; - if ( $data['colPos'] === 21 && !$expandedcontentBottomContainer ) $container = $data['tx_t3sbootstrap_container']; + if ( ($data['colPos'] === 3 || $data['parentgrid_colPos'] === 3) + && !$jumbotronContainer ) $container = $data['tx_t3sbootstrap_container']; + if ( ($data['colPos'] === 4 || $data['parentgrid_colPos'] === 4) + && !$footerContainer ) $container = $data['tx_t3sbootstrap_container']; + if ( ($data['colPos'] === 20 || $data['parentgrid_colPos'] === 20) + && !$expandedcontentTopContainer ) $container = $data['tx_t3sbootstrap_container']; + if ( ($data['colPos'] === 21 || $data['parentgrid_colPos'] === 21) + && !$expandedcontentBottomContainer ) $container = $data['tx_t3sbootstrap_container']; + + if ($footerByPid && ($data['colPos'] === 0 || $data['parentgrid_colPos'] === 0)) { + $container = 'colPosContainer'; + } + } } else { @@ -62,13 +74,20 @@ public function getContainerClass($data) $footerContainer = $t3sbconfig[0]['footer_container']; $expandedcontentTopContainer = $t3sbconfig[0]['expandedcontent_containertop']; $expandedcontentBottomContainer = $t3sbconfig[0]['expandedcontent_containerbottom']; + + $footerByPid = $t3sbconfig[0]['footer_pid']; + if(!empty($t3sbconfig)) break; } - if ( $data['colPos'] === 3 && $jumbotronContainer ) $container = 'colPosContainer'; - if ( $data['colPos'] === 4 && $footerContainer ) $container = 'colPosContainer'; - if ( $data['colPos'] === 20 && $expandedcontentTopContainer ) 'colPosContainer'; - if ( $data['colPos'] === 21 && $expandedcontentBottomContainer ) 'colPosContainer'; + if ( ($data['colPos'] === 3 || $data['parentgrid_colPos'] === 3) && $jumbotronContainer ) $container = 'colPosContainer'; + if ( ($data['colPos'] === 4 || $data['parentgrid_colPos'] === 4) && $footerContainer ) $container = 'colPosContainer'; + if ( ($data['colPos'] === 20 || $data['parentgrid_colPos'] === 20) && $expandedcontentTopContainer ) $container = 'colPosContainer'; + if ( ($data['colPos'] === 21 || $data['parentgrid_colPos'] === 21) && $expandedcontentBottomContainer ) $container = 'colPosContainer'; + + if ($footerByPid && ($data['colPos'] === 0 || $data['parentgrid_colPos'] === 0)) { + $container = 'colPosContainer'; + } } return trim($container); diff --git a/Classes/Tasks/CdnToLocal.php b/Classes/Tasks/CdnToLocal.php index 59b64432..2445f8ec 100644 --- a/Classes/Tasks/CdnToLocal.php +++ b/Classes/Tasks/CdnToLocal.php @@ -71,7 +71,7 @@ public function execute() { $customDir = 'fileadmin/T3SB/Resources/Public/JS/'; $customPath = GeneralUtility::getFileAbsFileName($customDir); $customFileName = 'popper.js'; - $cdnPath = 'https://unpkg.com/@popperjs/core@'.$version; + $cdnPath = 'https://cdnjs.cloudflare.com/ajax/libs/popper.js/'.$version.'/umd/popper.min.js'; self::writeCustomFile($customPath, $customFileName, $cdnPath); } @@ -97,14 +97,17 @@ public function execute() { $customFileName = 'highlight.default.min.css'; $cdnPath = 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/'.$version.'/styles/default.min.css'; self::writeCustomFile($customPath, $customFileName, $cdnPath); - - + $customFileName = 'highlight.a11y-light.min.css'; + $cdnPath = 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/'.$version.'/styles/a11y-light.min.css'; + self::writeCustomFile($customPath, $customFileName, $cdnPath); $customDir = 'fileadmin/T3SB/Resources/Public/JS/'; $customPath = GeneralUtility::getFileAbsFileName($customDir); $customFileName = 'highlight.min.js'; $cdnPath = 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/'.$version.'/highlight.min.js'; self::writeCustomFile($customPath, $customFileName, $cdnPath); - + $customFileName = 'highlight.php.min.js'; + $cdnPath = 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/'.$version.'/languages/php.min.js'; + self::writeCustomFile($customPath, $customFileName, $cdnPath); } if ($key == 'lazyload') { diff --git a/Classes/ViewHelpers/SplitFileRefViewHelper.php b/Classes/ViewHelpers/SplitFileRefViewHelper.php index 77c072c3..741c4fb8 100644 --- a/Classes/ViewHelpers/SplitFileRefViewHelper.php +++ b/Classes/ViewHelpers/SplitFileRefViewHelper.php @@ -72,13 +72,13 @@ public static function renderStatic(array $arguments, \Closure $renderChildrenCl $fileParts = GeneralUtility::split_fileref($file->getPublicUrl()); - $image= $fileParts['path'].$fileParts['filebody'].'.jpg'; - $fileParts['imgext'] = 'jpg'; + $image= $fileParts['path'].$fileParts['filebody'].'.jpg'; + $fileParts['imgext'] = 'jpg'; - if (!file_exists($image)) { + if (!file_exists($image)) { $image= $fileParts['path'].$fileParts['filebody'].'.png'; $fileParts['imgext'] = 'png'; - } + } $templateVariableContainer->add($arguments['as'], $fileParts); $content = $renderChildrenClosure(); diff --git a/Configuration/FlexForms/CardContent.xml b/Configuration/FlexForms/CardContent.xml index 3e329c4f..fa212a19 100644 --- a/Configuration/FlexForms/CardContent.xml +++ b/Configuration/FlexForms/CardContent.xml @@ -84,4 +84,4 @@ - + \ No newline at end of file diff --git a/Configuration/TCA/Overrides/pages.php b/Configuration/TCA/Overrides/pages.php index 9fbb839d..3560f700 100644 --- a/Configuration/TCA/Overrides/pages.php +++ b/Configuration/TCA/Overrides/pages.php @@ -143,21 +143,21 @@ */ \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::registerPageTSConfigFile( 't3sbootstrap', - 'Configuration/TSConfig/Registered/Textpic.typoscript', + 'Configuration/TSConfig/Registered/Textpic.tsconfig', 'Remove CType textpic' ); \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::registerPageTSConfigFile( 't3sbootstrap', - 'Configuration/TSConfig/Registered/Text.typoscript', + 'Configuration/TSConfig/Registered/Text.tsconfig', 'Remove CType text' ); \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::registerPageTSConfigFile( 't3sbootstrap', - 'Configuration/TSConfig/Registered/Image.typoscript', + 'Configuration/TSConfig/Registered/Image.tsconfig', 'Remove CType image' ); \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::registerPageTSConfigFile( 't3sbootstrap', - 'Configuration/TSConfig/Registered/Header.typoscript', + 'Configuration/TSConfig/Registered/Header.tsconfig', 'Remove CType header' ); diff --git a/Configuration/TCA/Overrides/sys_file_reference.php b/Configuration/TCA/Overrides/sys_file_reference.php index b7fa207c..726d87d4 100644 --- a/Configuration/TCA/Overrides/sys_file_reference.php +++ b/Configuration/TCA/Overrides/sys_file_reference.php @@ -160,7 +160,7 @@ unset($tempSysFileReferenceColumns); -TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addFieldsToPalette('sys_file_reference', 'imageoverlayPalette','--linebreak--,tx_t3sbootstrap_description_align','after:description'); +TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addFieldsToPalette('sys_file_reference', 'imageoverlayPalette','--linebreak--,tx_t3sbootstrap_description_align','after:title'); TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addFieldsToPalette('sys_file_reference', 'imageoverlayPalette','--linebreak--,tx_t3sbootstrap_extra_class','after:tx_t3sbootstrap_description_align'); diff --git a/Configuration/TCA/Overrides/tt_content.php b/Configuration/TCA/Overrides/tt_content.php index 3dbd5ebe..3ec14d39 100644 --- a/Configuration/TCA/Overrides/tt_content.php +++ b/Configuration/TCA/Overrides/tt_content.php @@ -4,11 +4,23 @@ # if typoscript_rendering is loaded if ( \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::isLoaded('typoscript_rendering') ) { - \TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerPlugin( - 'T3SBS.T3sbootstrap', - 'Pi1', - 'Content Consent' - ); + if (version_compare(TYPO3_branch, '10.0', '>=')) { + + \TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerPlugin( + 'T3sbootstrap', + 'Pi1', + 'Content Consent' + ); + + } else { + + \TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerPlugin( + 'T3SBS.T3sbootstrap', + 'Pi1', + 'Content Consent' + ); + + } $extensionName = \TYPO3\CMS\Core\Utility\GeneralUtility::underscoredToUpperCamelCase('t3sbootstrap'); $pluginSignature = strtolower($extensionName) . '_pi1'; diff --git a/Configuration/TSConfig/BackendLayouts/Default/BootstrapCondition.typoscript b/Configuration/TSConfig/BackendLayouts/Default/BootstrapCondition.tsconfig similarity index 100% rename from Configuration/TSConfig/BackendLayouts/Default/BootstrapCondition.typoscript rename to Configuration/TSConfig/BackendLayouts/Default/BootstrapCondition.tsconfig diff --git a/Configuration/TSConfig/BackendLayouts/Default/OneCol.typoscript b/Configuration/TSConfig/BackendLayouts/Default/OneCol.tsconfig similarity index 100% rename from Configuration/TSConfig/BackendLayouts/Default/OneCol.typoscript rename to Configuration/TSConfig/BackendLayouts/Default/OneCol.tsconfig diff --git a/Configuration/TSConfig/BackendLayouts/Default/ThreeCol.typoscript b/Configuration/TSConfig/BackendLayouts/Default/ThreeCol.tsconfig similarity index 100% rename from Configuration/TSConfig/BackendLayouts/Default/ThreeCol.typoscript rename to Configuration/TSConfig/BackendLayouts/Default/ThreeCol.tsconfig diff --git a/Configuration/TSConfig/BackendLayouts/Default/TwoCol_3-9.typoscript b/Configuration/TSConfig/BackendLayouts/Default/TwoCol_3-9.tsconfig similarity index 100% rename from Configuration/TSConfig/BackendLayouts/Default/TwoCol_3-9.typoscript rename to Configuration/TSConfig/BackendLayouts/Default/TwoCol_3-9.tsconfig diff --git a/Configuration/TSConfig/BackendLayouts/Default/TwoCol_9-3.typoscript b/Configuration/TSConfig/BackendLayouts/Default/TwoCol_9-3.tsconfig similarity index 100% rename from Configuration/TSConfig/BackendLayouts/Default/TwoCol_9-3.typoscript rename to Configuration/TSConfig/BackendLayouts/Default/TwoCol_9-3.tsconfig diff --git a/Configuration/TSConfig/BackendLayouts/Default/_main.typoscript b/Configuration/TSConfig/BackendLayouts/Default/_main.tsconfig similarity index 52% rename from Configuration/TSConfig/BackendLayouts/Default/_main.typoscript rename to Configuration/TSConfig/BackendLayouts/Default/_main.tsconfig index 6d84eb6b..c1ae2b4a 100644 --- a/Configuration/TSConfig/BackendLayouts/Default/_main.typoscript +++ b/Configuration/TSConfig/BackendLayouts/Default/_main.tsconfig @@ -1,5 +1,5 @@ - - - - - \ No newline at end of file + + + + + \ No newline at end of file diff --git a/Configuration/TSConfig/BackendLayouts/Expanded/BootstrapCondition.typoscript b/Configuration/TSConfig/BackendLayouts/Expanded/BootstrapCondition.tsconfig similarity index 100% rename from Configuration/TSConfig/BackendLayouts/Expanded/BootstrapCondition.typoscript rename to Configuration/TSConfig/BackendLayouts/Expanded/BootstrapCondition.tsconfig diff --git a/Configuration/TSConfig/BackendLayouts/Expanded/OneCol.typoscript b/Configuration/TSConfig/BackendLayouts/Expanded/OneCol.tsconfig similarity index 100% rename from Configuration/TSConfig/BackendLayouts/Expanded/OneCol.typoscript rename to Configuration/TSConfig/BackendLayouts/Expanded/OneCol.tsconfig diff --git a/Configuration/TSConfig/BackendLayouts/Expanded/ThreeCol.typoscript b/Configuration/TSConfig/BackendLayouts/Expanded/ThreeCol.tsconfig similarity index 100% rename from Configuration/TSConfig/BackendLayouts/Expanded/ThreeCol.typoscript rename to Configuration/TSConfig/BackendLayouts/Expanded/ThreeCol.tsconfig diff --git a/Configuration/TSConfig/BackendLayouts/Expanded/TwoCol_3-9.typoscript b/Configuration/TSConfig/BackendLayouts/Expanded/TwoCol_3-9.tsconfig similarity index 100% rename from Configuration/TSConfig/BackendLayouts/Expanded/TwoCol_3-9.typoscript rename to Configuration/TSConfig/BackendLayouts/Expanded/TwoCol_3-9.tsconfig diff --git a/Configuration/TSConfig/BackendLayouts/Expanded/TwoCol_9-3.typoscript b/Configuration/TSConfig/BackendLayouts/Expanded/TwoCol_9-3.tsconfig similarity index 100% rename from Configuration/TSConfig/BackendLayouts/Expanded/TwoCol_9-3.typoscript rename to Configuration/TSConfig/BackendLayouts/Expanded/TwoCol_9-3.tsconfig diff --git a/Configuration/TSConfig/BackendLayouts/Expanded/_main.typoscript b/Configuration/TSConfig/BackendLayouts/Expanded/_main.tsconfig similarity index 52% rename from Configuration/TSConfig/BackendLayouts/Expanded/_main.typoscript rename to Configuration/TSConfig/BackendLayouts/Expanded/_main.tsconfig index 0c72b72d..fea55287 100644 --- a/Configuration/TSConfig/BackendLayouts/Expanded/_main.typoscript +++ b/Configuration/TSConfig/BackendLayouts/Expanded/_main.tsconfig @@ -1,5 +1,5 @@ - - - - - \ No newline at end of file + + + + + \ No newline at end of file diff --git a/Configuration/TSConfig/CKEditor.typoscript b/Configuration/TSConfig/CKEditor.tsconfig similarity index 72% rename from Configuration/TSConfig/CKEditor.typoscript rename to Configuration/TSConfig/CKEditor.tsconfig index eb622219..c6cf82d7 100644 --- a/Configuration/TSConfig/CKEditor.typoscript +++ b/Configuration/TSConfig/CKEditor.tsconfig @@ -46,6 +46,15 @@ RTE { rel = } + tel { + class = phone-link + type = tel + titleText = Call us + target = _blank + image = + #params = + rel = + } } buttons.link { options.removeItems = folder @@ -62,7 +71,10 @@ RTE { mail.properties { class.default = } - properties.class.allowedClasses = external-link,internal-link,email-link,download-link, btn, btn btn-primary, btn btn-secondary, btn btn-success, btn btn-danger, btn btn-warning, btn btn-info, btn btn-light, btn btn-dark + tel.properties { + class.default = + } + properties.class.allowedClasses = phone-link, external-link, internal-link, email-link, download-link, btn, btn btn-primary, btn btn-secondary, btn btn-success, btn btn-danger, btn btn-warning, btn btn-info, btn btn-light, btn btn-dark queryParametersSelector.enabled = 0 } diff --git a/Configuration/TSConfig/Gridelements.typoscript b/Configuration/TSConfig/Gridelements.tsconfig similarity index 100% rename from Configuration/TSConfig/Gridelements.typoscript rename to Configuration/TSConfig/Gridelements.tsconfig diff --git a/Configuration/TSConfig/NewContentElements.typoscript b/Configuration/TSConfig/NewContentElements.tsconfig similarity index 100% rename from Configuration/TSConfig/NewContentElements.typoscript rename to Configuration/TSConfig/NewContentElements.tsconfig diff --git a/Configuration/TSConfig/Page.typoscript b/Configuration/TSConfig/Page.tsconfig similarity index 98% rename from Configuration/TSConfig/Page.typoscript rename to Configuration/TSConfig/Page.tsconfig index 164af1b3..84b3c787 100644 --- a/Configuration/TSConfig/Page.typoscript +++ b/Configuration/TSConfig/Page.tsconfig @@ -1,9 +1,9 @@ #------------------------------------------------------------------------------- # Include #------------------------------------------------------------------------------- - - - + + + #------------------------------------------------------------------------------- # Content diff --git a/Configuration/TSConfig/Registered/Header.typoscript b/Configuration/TSConfig/Registered/Header.tsconfig similarity index 100% rename from Configuration/TSConfig/Registered/Header.typoscript rename to Configuration/TSConfig/Registered/Header.tsconfig diff --git a/Configuration/TSConfig/Registered/Image.typoscript b/Configuration/TSConfig/Registered/Image.tsconfig similarity index 100% rename from Configuration/TSConfig/Registered/Image.typoscript rename to Configuration/TSConfig/Registered/Image.tsconfig diff --git a/Configuration/TSConfig/Registered/Text.typoscript b/Configuration/TSConfig/Registered/Text.tsconfig similarity index 100% rename from Configuration/TSConfig/Registered/Text.typoscript rename to Configuration/TSConfig/Registered/Text.tsconfig diff --git a/Configuration/TSConfig/Registered/Textpic.typoscript b/Configuration/TSConfig/Registered/Textpic.tsconfig similarity index 100% rename from Configuration/TSConfig/Registered/Textpic.typoscript rename to Configuration/TSConfig/Registered/Textpic.tsconfig diff --git a/Configuration/TSConfig/SysFileReference.typoscript b/Configuration/TSConfig/SysFileReference.tsconfig similarity index 100% rename from Configuration/TSConfig/SysFileReference.typoscript rename to Configuration/TSConfig/SysFileReference.tsconfig diff --git a/Configuration/TypoScript/Content/Content.typoscript b/Configuration/TypoScript/Content/Content.typoscript index 47a77ca4..c811b8ad 100644 --- a/Configuration/TypoScript/Content/Content.typoscript +++ b/Configuration/TypoScript/Content/Content.typoscript @@ -28,7 +28,7 @@ lib.dynamicContent { where.insertData = 1 pidInList.data = register:pageUid } - } + } 90 = RESTORE_REGISTER } diff --git a/Configuration/TypoScript/ContentElement/Bootstrap.typoscript b/Configuration/TypoScript/ContentElement/Bootstrap.typoscript index f5002b47..41ddb08d 100644 --- a/Configuration/TypoScript/ContentElement/Bootstrap.typoscript +++ b/Configuration/TypoScript/ContentElement/Bootstrap.typoscript @@ -68,8 +68,7 @@ tt_content { ratioWithHeight = {$bootstrap.image.ratioWithHeight} maxWidthMediaObject = {$bootstrap.image.maxWidthMediaObject} maxWidthToast = {$bootstrap.image.maxWidthToast} - pageContainer.cObject = TEXT - pageContainer.cObject.data.dataWrap = DB:pages:{page:uid}:tx_t3sbootstrap_container + disableAutoRow = {$bootstrap.image.disableAutoRow} } } } @@ -112,9 +111,8 @@ tt_content { minimumWidth = {$bootstrap.image.minimumWidth} ratioWithHeight = {$bootstrap.image.ratioWithHeight} maxWidthMediaObject = {$bootstrap.image.maxWidthMediaObject} - maxWidthToast = {$bootstrap.image.maxWidthToast} - pageContainer.cObject = TEXT - pageContainer.cObject.data.dataWrap = DB:pages:{page:uid}:tx_t3sbootstrap_container + maxWidthToast = {$bootstrap.image.maxWidthToast} + disableAutoRow = {$bootstrap.image.disableAutoRow} } } diff --git a/Configuration/TypoScript/ContentElement/Default.typoscript b/Configuration/TypoScript/ContentElement/Default.typoscript index fd39a358..e1af8826 100644 --- a/Configuration/TypoScript/ContentElement/Default.typoscript +++ b/Configuration/TypoScript/ContentElement/Default.typoscript @@ -15,7 +15,8 @@ tt_content { minimumWidth = {$bootstrap.image.minimumWidth} ratioWithHeight = {$bootstrap.image.ratioWithHeight} maxWidthMediaObject = {$bootstrap.image.maxWidthMediaObject} - maxWidthToast = {$bootstrap.image.maxWidthToast} + maxWidthToast = {$bootstrap.image.maxWidthToast} + disableAutoRow = {$bootstrap.image.disableAutoRow} } } } @@ -33,6 +34,7 @@ tt_content { ratioWithHeight = {$bootstrap.image.ratioWithHeight} maxWidthMediaObject = {$bootstrap.image.maxWidthMediaObject} maxWidthToast = {$bootstrap.image.maxWidthToast} + disableAutoRow = {$bootstrap.image.disableAutoRow} } } } @@ -49,7 +51,8 @@ tt_content { minimumWidth = {$bootstrap.image.minimumWidth} ratioWithHeight = {$bootstrap.image.ratioWithHeight} maxWidthMediaObject = {$bootstrap.image.maxWidthMediaObject} - maxWidthToast = {$bootstrap.image.maxWidthToast} + maxWidthToast = {$bootstrap.image.maxWidthToast} + disableAutoRow = {$bootstrap.image.disableAutoRow} } } } diff --git a/Configuration/TypoScript/Lib/_main.typoscript b/Configuration/TypoScript/Lib/_main.typoscript index a514014d..17c285e9 100644 --- a/Configuration/TypoScript/Lib/_main.typoscript +++ b/Configuration/TypoScript/Lib/_main.typoscript @@ -11,12 +11,12 @@ lib.parseFunc_RTE.tags := addToList( mark) lib.parseFunc_RTE.externalBlocks.table.stdWrap{ HTMLparser = 1 HTMLparser { - tags.table.fixAttrib.class { - default = table - always = 1 - list > - } - keepNonMatchedTags = 1 + tags.table.fixAttrib.class { + default = table + always = 1 + list > + } + keepNonMatchedTags = 1 } } @@ -43,9 +43,9 @@ lib.currentDate { lib.currentDomain = TEXT lib.currentDomain { - dataWrap = {getIndpEnv:TYPO3_REQUEST_HOST}| - typolink.parameter.current = 1 - typolink.returnLast = url + dataWrap = {getIndpEnv:TYPO3_REQUEST_HOST}| + typolink.parameter.current = 1 + typolink.returnLast = url } lib.printButton = COA diff --git a/Configuration/TypoScript/Page/IncludeCdn.typoscript b/Configuration/TypoScript/Page/IncludeCdn.typoscript index 72242a3f..c6656859 100644 --- a/Configuration/TypoScript/Page/IncludeCdn.typoscript +++ b/Configuration/TypoScript/Page/IncludeCdn.typoscript @@ -1,3 +1,9 @@ + +config.compressJs = 0 +config.compressCss = 0 +config.concatenateJs = 0 +config.concatenateCss = 0 + page { includeCSS { @@ -32,10 +38,7 @@ page { animatecssCDN = https://cdnjs.cloudflare.com/ajax/libs/animate.css/{$bootstrap.cdn.animate}/animate.min.css animatecssCDN.external = 1 - animatecssCDN.if { - value = 2 - equals = {$bootstrap.extconf.animateCss} - } + animatecssCDN.if.isTrue = {$bootstrap.extconf.animateCss} ########################################################################################################## # @@ -47,6 +50,10 @@ page { codesnippetCDN.external = 1 codesnippetCDN.if.isTrue = {$bootstrap.extconf.codesnippet} + heighlightCDN = https://cdnjs.cloudflare.com/ajax/libs/highlight.js/{$bootstrap.cdn.highlight}/styles/a11y-light.min.css + heighlightCDN.external = 1 + heighlightCDN.if.isTrue = {$bootstrap.extconf.codesnippet} + } includeJSFooterlibs { @@ -58,13 +65,20 @@ page { ########################################################################################################## jqueryCDN = https://code.jquery.com/jquery-{$bootstrap.cdn.jquery}.min.js + jqueryCDN.integrity = {$bootstrap.cdn.jqueryIntegrity} + jqueryCDN.type = text/javascript jqueryCDN.external = 1 jqueryCDN.forceOnTop = 1 - popperCDN = https://unpkg.com/@popperjs/core@{$bootstrap.cdn.popperjs} + + popperCDN = https://cdnjs.cloudflare.com/ajax/libs/popper.js/{$bootstrap.cdn.popperjs}/umd/popper.min.js + popperCDN.integrity = {$bootstrap.cdn.popperjsIntegrity} + popperCDN.type = text/javascript popperCDN.external = 1 bootstrapCDN = https://stackpath.bootstrapcdn.com/bootstrap/{$bootstrap.cdn.bootstrap}/js/bootstrap.min.js + bootstrapCDN.integrity = {$bootstrap.cdn.bootstrapJsIntegrity} + bootstrapCDN.type = text/javascript bootstrapCDN.external = 1 } @@ -78,6 +92,8 @@ page { ########################################################################################################## t3sblightboxCDN = https://cdnjs.cloudflare.com/ajax/libs/baguettebox.js/{$bootstrap.cdn.baguetteBox}/baguetteBox.min.js + t3sblightboxCDN.integrity = {$bootstrap.cdn.baguetteBoxIntegrity} + t3sblightboxCDN.type = text/javascript t3sblightboxCDN.external = 1 t3sblightboxCDN.if { value = 1 @@ -91,6 +107,8 @@ page { ########################################################################################################## cookieconsentJsCDN = https://cdn.jsdelivr.net/npm/cookieconsent@{$bootstrap.cdn.cookieconsent}/build/cookieconsent.min.js + cookieconsentJsCDN.integrity = {$bootstrap.cdn.cookieconsentIntegrity} + cookieconsentJsCDN.type = text/javascript cookieconsentJsCDN.external = 1 cookieconsentJsCDN.if.isTrue = {$bootstrap.extconf.cookieconsent} @@ -101,6 +119,8 @@ page { ########################################################################################################## t3sbjqueryeasingCDN = https://cdnjs.cloudflare.com/ajax/libs/jquery-easing/{$bootstrap.cdn.jqueryEasing}/jquery.easing.min.js + t3sbjqueryeasingCDN.integrity = {$bootstrap.cdn.jqueryEasingIntegrity} + t3sbjqueryeasingCDN.type = text/javascript t3sbjqueryeasingCDN.external = 1 t3sbjqueryeasingCDN.forceOnTop = 1 @@ -111,9 +131,17 @@ page { ########################################################################################################## codesnippetCDN = https://cdnjs.cloudflare.com/ajax/libs/highlight.js/{$bootstrap.cdn.highlight}/highlight.min.js + codesnippetCDN.integrity = {$bootstrap.cdn.highlightIntegrity} + codesnippetCDN.type = text/javascript codesnippetCDN.external = 1 codesnippetCDN.if.isTrue = {$bootstrap.extconf.codesnippet} + heighlightCDN = https://cdnjs.cloudflare.com/ajax/libs/highlight.js/{$bootstrap.cdn.highlight}/languages/php.min.js + heighlightCDN.integrity = {$bootstrap.cdn.highlightIntegrity} + heighlightCDN.type = text/javascript + heighlightCDN.external = 1 + heighlightCDN.if.isTrue = {$bootstrap.extconf.codesnippet} + ########################################################################################################## # # LAZYLOAD @@ -121,6 +149,8 @@ page { ########################################################################################################## lazyloadCDN = https://cdn.jsdelivr.net/npm/vanilla-lazyload@{$bootstrap.cdn.lazyload}/dist/lazyload.min.js + lazyloadCDN.integrity = {$bootstrap.cdn.lazyloadIntegrity} + lazyloadCDN.type = text/javascript lazyloadCDN.external = 1 lazyloadCDN.if.isTrue = {$bootstrap.extconf.lazyLoad} @@ -131,6 +161,8 @@ page { ########################################################################################################## picturefillCDN = https://cdnjs.cloudflare.com/ajax/libs/picturefill/{$bootstrap.cdn.picturefill}/picturefill.min.js + picturefillCDN.integrity = {$bootstrap.cdn.picturefillIntegrity} + picturefillCDN.type = text/javascript picturefillCDN.external = 1 picturefillCDN.if.isTrue = {$bootstrap.image.picturefill} @@ -141,11 +173,10 @@ page { ########################################################################################################## viewportcheckerCDN = https://cdnjs.cloudflare.com/ajax/libs/jQuery-viewport-checker/{$bootstrap.cdn.viewportchecker}/jquery.viewportchecker.min.js + viewportcheckerCDN.integrity = {$bootstrap.cdn.viewportcheckerIntegrity} + viewportcheckerCDN.type = text/javascript viewportcheckerCDN.external = 1 - viewportcheckerCDN.if { - value = 2 - equals = {$bootstrap.extconf.animateCss} - } + viewportcheckerCDN.if.isTrue = {$bootstrap.extconf.animateCss} } diff --git a/Configuration/TypoScript/Page/IncludeDefault.typoscript b/Configuration/TypoScript/Page/IncludeDefault.typoscript index d62edb4e..9333f027 100644 --- a/Configuration/TypoScript/Page/IncludeDefault.typoscript +++ b/Configuration/TypoScript/Page/IncludeDefault.typoscript @@ -1,68 +1,19 @@ page { + includeCSS { ########################################################################################################## # - # VARIOUS + # Link Hover Effect CSS # ########################################################################################################## - t3sbootstrap = EXT:t3sbootstrap/Resources/Public/Styles/t3sbootstrap.css - - stickyFooter = EXT:t3sbootstrap/Resources/Public/Styles/stickyFooter.css - stickyFooter.if { - isTrue.cObject = TEXT - isTrue.cObject.data.dataWrap = DB:tx_t3sbootstrap_domain_model_config:{register:configuid}:footer_sticky - } - - megaMenu = EXT:t3sbootstrap/Resources/Public/Styles/megaMenu.css - megaMenu.if { - isTrue.cObject = TEXT - isTrue.cObject.data.dataWrap = DB:tx_t3sbootstrap_domain_model_config:{register:configuid}:navbar_megamenu - } - hoverEffects = EXT:t3sbootstrap/Resources/Public/Styles/hoverEffects.css hoverEffects.if.isTrue = {$bootstrap.extconf.linkHoverEffect} - # Offcanvas Navbar - dependent on the breakpoint - offcanvasNavbarSM = EXT:t3sbootstrap/Resources/Public/Styles/offcanvasNavbarSM.css - offcanvasNavbarSM.if { - value.data = register:breakpoint - equals = sm - isTrue.cObject = TEXT - isTrue.cObject.data.dataWrap = DB:tx_t3sbootstrap_domain_model_config:{register:configuid}:navbar_offcanvas - } - offcanvasNavbarMD = EXT:t3sbootstrap/Resources/Public/Styles/offcanvasNavbarMD.css - offcanvasNavbarMD.if { - value.data = register:breakpoint - equals = md - isTrue.cObject = TEXT - isTrue.cObject.data.dataWrap = DB:tx_t3sbootstrap_domain_model_config:{register:configuid}:navbar_offcanvas - } - offcanvasNavbarLG = EXT:t3sbootstrap/Resources/Public/Styles/offcanvasNavbarLG.css - offcanvasNavbarLG.if { - value.data = register:breakpoint - equals = lg - isTrue.cObject = TEXT - isTrue.cObject.data.dataWrap = DB:tx_t3sbootstrap_domain_model_config:{register:configuid}:navbar_offcanvas - } - offcanvasNavbarXL = EXT:t3sbootstrap/Resources/Public/Styles/offcanvasNavbarXL.css - offcanvasNavbarXL.if { - value.data = register:breakpoint - equals = xl - isTrue.cObject = TEXT - isTrue.cObject.data.dataWrap = DB:tx_t3sbootstrap_domain_model_config:{register:configuid}:navbar_offcanvas - } - offcanvasNavbarNO = EXT:t3sbootstrap/Resources/Public/Styles/offcanvasNavbarNO.css - offcanvasNavbarNO.if { - value.data = register:breakpoint - equals = no - isTrue.cObject = TEXT - isTrue.cObject.data.dataWrap = DB:tx_t3sbootstrap_domain_model_config:{register:configuid}:navbar_offcanvas - } - } + ########################################################################################################## # # FONTAWESOME - using the SVG + JS version @@ -141,13 +92,16 @@ temp.jsFooterInline > # Conditions # ########################################################################################################## + # Ajax Pagination for EXT:news [{$bootstrap.ext.news} == 1 && {$bootstrap.ext.typoscriptRendering} == 1] page.includeJSFooter.ajaxPagination = EXT:t3sbootstrap/Resources/Public/Scripts/AjaxPagination.js +page.includeJSFooter.ajaxPagination.type = text/javascript plugin.tx_news.settings.list.paginate.templatePath = EXT:t3sbootstrap/Resources/Private/Extensions/news/Resources/Private/Templates/ViewHelpers/Widget/Paginate/IndexAjax.html [END] [{$bootstrap.ext.news} == 1 && {$bootstrap.ext.typoscriptRendering} == 1 && {$bootstrap.extconf.lazyLoad} == 1] page.includeJSFooter.ajaxPagination = EXT:t3sbootstrap/Resources/Public/Scripts/AjaxLazyPagination.js +page.includeJSFooter.ajaxPagination.type = text/javascript [END] ########################################################################################################## @@ -203,7 +157,7 @@ page.cssInline { ########################################################################################################## # -# Lightbox mit CDN +# Lightbox with CDN # ########################################################################################################## @@ -217,6 +171,8 @@ page.includeCSS.t3sblightboxCDN = https://cdnjs.cloudflare.com/ajax/libs/ekko-li page.includeCSS.t3sblightboxCDN.external = 1 page.includeJSFooter.t3sblightboxCDN > page.includeJSFooter.t3sblightboxCDN = https://cdnjs.cloudflare.com/ajax/libs/ekko-lightbox/{$bootstrap.cdn.ekkoLightbox}/ekko-lightbox.min.js +page.includeJSFooter.t3sblightboxCDN.integrity = {$bootstrap.cdn.ekkoLightboxIntegrity} +page.includeJSFooter.t3sblightboxCDN.type = text/javascript page.includeJSFooter.t3sblightboxCDN.external = 1 [END] @@ -230,6 +186,8 @@ page.includeCSS.t3sblightboxCDN = https://cdn.jsdelivr.net/npm/lightcase@{$boots page.includeCSS.t3sblightboxCDN.external = 1 page.includeJSFooter.t3sblightboxCDN > page.includeJSFooter.t3sblightboxCDN = https://cdn.jsdelivr.net/npm/lightcase@{$bootstrap.cdn.lightcase}/src/js/lightcase.min.js +page.includeJSFooter.t3sblightboxCDN.integrity = {$bootstrap.cdn.lightcaseIntegrity} +page.includeJSFooter.t3sblightboxCDN.type = text/javascript page.includeJSFooter.t3sblightboxCDN.external = 1 [END] @@ -238,6 +196,7 @@ page.includeJSFooter.t3sblightboxCDN.external = 1 page.includeJSFooterlibs.jqueryCDN > page.includeJSLibs { jqueryCDN = https://code.jquery.com/jquery-{$bootstrap.cdn.jquery}.slim.min.js + jqueryCDN.type = text/javascript jqueryCDN.external = 1 jqueryCDN.forceOnTop = 1 } @@ -246,7 +205,7 @@ page.includeJSLibs { ########################################################################################################## # -# Lightbox ohne CDN +# Lightbox w/o CDN # ########################################################################################################## @@ -259,6 +218,7 @@ page.includeCSS.t3sblightbox > page.includeCSS.t3sblightbox = fileadmin/T3SB/Resources/Public/CSS/ekko-lightbox.css page.includeJSFooter.t3sblightbox > page.includeJSFooter.t3sblightbox = fileadmin/T3SB/Resources/Public/JS/ekko-lightbox.min.js +page.includeJSFooter.t3sblightbox.type = text/javascript [END] ########################################################################################################## @@ -270,6 +230,7 @@ page.includeCSS.t3sblightbox > page.includeCSS.t3sblightbox = fileadmin/T3SB/Resources/Public/CSS/lightcase.css page.includeJSFooter.t3sblightbox > page.includeJSFooter.t3sblightbox = fileadmin/T3SB/Resources/Public/JS/lightcase.min.js +page.includeJSFooter.t3sblightbox.type = text/javascript [END] # load jquery into the header @@ -277,6 +238,7 @@ page.includeJSFooter.t3sblightbox = fileadmin/T3SB/Resources/Public/JS/lightcase page.includeJSFooterlibs.jquery > page.includeJSLibs { jquery = fileadmin/T3SB/Resources/Public/JS/jquery.min.js + jquery.type = text/javascript jquery.forceOnTop = 1 } [END] @@ -300,12 +262,11 @@ page.includeCSS { value = 2 equals = {$bootstrap.extconf.fontawesomeCss} } + t3sfontawesomeMinLink = EXT:t3sbootstrap/Resources/Public/Contrib/Fontawesome/css/fontawesomeMinLink.css t3sfontawesomeMinLink.if.isFalse = {$bootstrap.extconf.fontawesomeCss} } -[END] - -[{$bootstrap.config.faLinkIcons} == 1] +[ELSE] page.includeCSS { t3sfontawesomeMin = EXT:t3sbootstrap/Resources/Public/Contrib/Fontawesome/css/fontawesomeMin.css t3sfontawesomeMin.if.isFalse = {$bootstrap.extconf.fontawesomeCss} diff --git a/Configuration/TypoScript/Page/IncludeLocal.typoscript b/Configuration/TypoScript/Page/IncludeLocal.typoscript index bb4e0d9b..0538e12e 100644 --- a/Configuration/TypoScript/Page/IncludeLocal.typoscript +++ b/Configuration/TypoScript/Page/IncludeLocal.typoscript @@ -30,10 +30,7 @@ page { ########################################################################################################## animatecss = fileadmin/T3SB/Resources/Public/CSS/animate.min.css - animatecss.if { - value = 2 - equals = {$bootstrap.extconf.animateCss} - } + animatecss.if.isTrue = {$bootstrap.extconf.animateCss} ########################################################################################################## # @@ -44,6 +41,9 @@ page { codesnippet = fileadmin/T3SB/Resources/Public/CSS/highlight.default.min.css codesnippet.if.isTrue = {$bootstrap.extconf.codesnippet} + heighlight = fileadmin/T3SB/Resources/Public/CSS/highlight.a11y-light.min.css + heighlight.if.isTrue = {$bootstrap.extconf.codesnippet} + } includeJSFooterlibs { @@ -75,6 +75,7 @@ page { ########################################################################################################## t3sblightbox = fileadmin/T3SB/Resources/Public/JS/baguetteBox.min.js + t3sblightbox.type = text/javascript t3sblightbox.if { value = 1 equals = {$bootstrap.config.lightboxSelection} @@ -87,6 +88,7 @@ page { ########################################################################################################## cookieconsentJs = fileadmin/T3SB/Resources/Public/JS/cookieconsent.min.js + cookieconsentJs.type = text/javascript cookieconsentJs.if.isTrue = {$bootstrap.extconf.cookieconsent} ########################################################################################################## @@ -96,6 +98,7 @@ page { ########################################################################################################## t3sbjqueryeasing = fileadmin/T3SB/Resources/Public/JS/jquery.easing.min.js + t3sbjqueryeasing.type = text/javascript t3sbjqueryeasing.forceOnTop = 1 ########################################################################################################## @@ -105,8 +108,13 @@ page { ########################################################################################################## codesnippet = fileadmin/T3SB/Resources/Public/JS/highlight.min.js + codesnippet.type = text/javascript codesnippet.if.isTrue = {$bootstrap.extconf.codesnippet} + heighlight = fileadmin/T3SB/Resources/Public/JS/highlight.php.min.js + heighlight.type = text/javascript + heighlight.if.isTrue = {$bootstrap.extconf.codesnippet} + ########################################################################################################## # # LAZYLOAD @@ -114,6 +122,7 @@ page { ########################################################################################################## lazyload = fileadmin/T3SB/Resources/Public/JS/lazyload.min.js + lazyload.type = text/javascript lazyload.if.isTrue = {$bootstrap.extconf.lazyLoad} ########################################################################################################## @@ -124,6 +133,7 @@ page { # Local picturefill = fileadmin/T3SB/Resources/Public/JS/picturefill.min.js + picturefill.type = text/javascript picturefill.if.isTrue = {$bootstrap.image.picturefill} ########################################################################################################## @@ -133,10 +143,8 @@ page { ########################################################################################################## viewportchecker = fileadmin/T3SB/Resources/Public/JS/jquery.viewportchecker.min.js - viewportchecker.if { - value = 2 - equals = {$bootstrap.extconf.animateCss} - } + viewportchecker.type = text/javascript + viewportchecker.if.isTrue = {$bootstrap.extconf.animateCss} } diff --git a/Configuration/TypoScript/Page/JS/CookieConsent.typoscript b/Configuration/TypoScript/Page/JS/CookieConsent.typoscript index 033d3e6a..39545870 100644 --- a/Configuration/TypoScript/Page/JS/CookieConsent.typoscript +++ b/Configuration/TypoScript/Page/JS/CookieConsent.typoscript @@ -48,7 +48,7 @@ temp.jsCookieConsent { // no popup on this pages blacklistPage: ["{$bootstrap.cookieconsent.href}"], - onStatusChange: function(status) { + onStatusChange: function(status) { console.log(this.hasConsented() ? 'enable cookies' : 'disable cookies'); @@ -59,19 +59,19 @@ temp.jsCookieConsent { if ( type == 'opt-out' && !this.hasConsented() ) { location.reload(true); } - }, + }, - law: { + law: { regionalLaw: {$bootstrap.cookieconsent.regionalLaw}, - }, - location: {$bootstrap.cookieconsent.location}, + }, + location: {$bootstrap.cookieconsent.location}, }, function (popup) { - p = popup; - }, function (err) { - console.error(err); - }); + p = popup; + }, function (err) { + console.error(err); + }); if ( $('#btn-revokeChoice').length ) { document.getElementById('btn-revokeChoice').onclick = function (e) { diff --git a/Configuration/TypoScript/Page/JS/InlineJS.typoscript b/Configuration/TypoScript/Page/JS/InlineJS.typoscript index f2f099a4..06be2d48 100644 --- a/Configuration/TypoScript/Page/JS/InlineJS.typoscript +++ b/Configuration/TypoScript/Page/JS/InlineJS.typoscript @@ -56,7 +56,7 @@ temp.jsFooterInline { } }); $('.card a[data-toggle="collapse"]').on('click', function(e) { - if ($(this).attr('aria-expanded') == 'true') { + if ($(this).attr('aria-expanded') == 'true') { return; } $(this).addClass('temp-gets-shown'); @@ -139,10 +139,7 @@ temp.jsFooterInline { ) -3.if { - value = 2 - equals = {$bootstrap.extconf.animateCss} -} +3.if.isTrue = {$bootstrap.extconf.animateCss} 4 = TEXT 4.value ( @@ -943,13 +940,13 @@ temp.jsFooterInline { equals = xl } -166 = TEXT -166.value ( -var rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi; -jQuery.htmlPrefilter = function( html ) { - return html.replace( rxhtmlTag, "<$1>" ); -}; -) +#166 = TEXT +#166.value ( +#var rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi; +#jQuery.htmlPrefilter = function( html ) { +# return html.replace( rxhtmlTag, "<$1>" ); +#}; +#) diff --git a/Configuration/TypoScript/Page/Template.typoscript b/Configuration/TypoScript/Page/Template.typoscript index b5f12a0c..90cc8c76 100644 --- a/Configuration/TypoScript/Page/Template.typoscript +++ b/Configuration/TypoScript/Page/Template.typoscript @@ -302,7 +302,7 @@ page { 70.if { value = {$bootstrap.config.lastModifiedContentElement} equals = 1 - isTrue.cObject = {$bootstrap.config.recentlyUpdatedContentElements} + isTrue.cObject = {$bootstrap.config.recentlyUpdatedContentElements} } # @@ -312,10 +312,7 @@ page { 90 { navbarExtraRow = {$bootstrap.navbar.extraRow} rootline = {$bootstrap.config.rootline} - animateCssInlineJs = {$bootstrap.animateCssInlineJs} - cdnEnable = {$bootstrap.cdn.enable} - cdnAnimate = {$bootstrap.cdn.animate} - cdnViewportchecker = {$bootstrap.cdn.viewportchecker} + disableDefaultCss = {$bootstrap.config.disableDefaultCss} dataProcessing { 10 = TYPO3\CMS\Frontend\DataProcessing\FilesProcessor 10 { diff --git a/Configuration/TypoScript/constants.typoscript b/Configuration/TypoScript/constants.typoscript index db4ca9ad..4b092267 100644 --- a/Configuration/TypoScript/constants.typoscript +++ b/Configuration/TypoScript/constants.typoscript @@ -21,41 +21,68 @@ plugin.tx_t3sbootstrap { # customcategory=bootstrap-cdn=* T3SB::CDN-Settings # customsubcategory=a-enable=CDN (Content Delivery Network) - can offer a performance benefit! # customsubcategory=b-version=CDN Versions used in the scheduler task "T3SB CDN to local" - must be valid +# customsubcategory=c-integrity=CDN Integrity - if set crossorigin is set to anonymous bootstrap.cdn { - # cat=bootstrap-cdn/a-enable/10; type=boolean; label=Enable CDN - please consider the "GDPR" ("DSGVO"):before CDN can be disabled, run the scheduler task "T3SB CDN to local" to write the required files to fileadmin/T3SB/Rescources/Private/ + # cat=bootstrap-cdn/a-enable/10; type=boolean; label=Enable CDN - please consider the "GDPR" ("DSGVO"):before CDN can be disabled, run the scheduler task "T3SB CDN to local" to write the required files to fileadmin/T3SB/Resources/Private/ enable = 1 # cat=bootstrap-cdn/a-enable/20; type=options[none=0, Cerulean=cerulean, Cosmo=cosmo, Cyborg=cyborg, Darkly=darkly, Flatly=flatly, Journal=journal, Litera=litera, Lumen=lumen, Lux=lux, Materia=materia, Minty=minty, Pulse=pulse, Sandstone=sandstone, Simplex=simplex, Sketchy=sketchy, Slate=slate, Solar=solar, Spacelab=spacelab, Superhero=superhero, United=united, Yeti=yeti]; label=Bootswatch Themes CDN - works only without EXT ws_scss: Override default Bootstrap values with selected Bootswatch Theme (run Scheduler) - Info: https://bootswatch.com/. bootswatch = 0 + # cat=bootstrap-cdn/b-version/10; type=small; label=Bootstrap: bootstrap = 4.4.1 - # cat=bootstrap-cdn/b-version/11; type=small; label=Popper js: set to 2 only to get v2.x (latest) - popperjs = 2 - # cat=bootstrap-cdn/b-version/20; type=small; label=Fontawesome: + # cat=bootstrap-cdn/b-version/11; type=small; label=Popper js: + popperjs = 2.4.0 + # cat=bootstrap-cdn/b-version/12; type=small; label=Fontawesome: fontawesome = 5.13.0 - # cat=bootstrap-cdn/b-version/30; type=small; label=jQuery library: jQuery 3.5.0 won't work with Bootstrap 4.4.1. Dropdowns and collapse don't work. Reverted to jQuery 3.4.1 to make it work. + # cat=bootstrap-cdn/b-version/20; type=small; label=jQuery library: jQuery 3.5.0 won't work with Bootstrap 4.4.1. Dropdowns and collapse don't work. Reverted to jQuery 3.4.1 to make it work. jquery = 3.4.1 - # cat=bootstrap-cdn/b-version/50; type=small; label=jQuery Easing: + # cat=bootstrap-cdn/b-version/22; type=small; label=jQuery Easing: jqueryEasing = 1.4.1 - # cat=bootstrap-cdn/b-version/11; type=int+; label=Cookieconsent: set to 3 only to get v3.x (latest) + # cat=bootstrap-cdn/b-version/25; type=int+; label=Cookieconsent: set to 3 only to get v3.x (latest) cookieconsent = 3 - # cat=bootstrap-cdn/b-version/60; type=small; label=Highlight: used with codesnippet + # cat=bootstrap-cdn/b-version/27; type=small; label=Highlight: used with codesnippet highlight = 9.18.1 - # cat=bootstrap-cdn/b-version/70; type=small; label=Lazyload: + # cat=bootstrap-cdn/b-version/30; type=small; label=Lazyload: lazyload = 15.1.1 - # cat=bootstrap-cdn/b-version/80; type=small; label=Picturefill: + # cat=bootstrap-cdn/b-version/32; type=small; label=Picturefill: picturefill = 3.0.3 - # cat=bootstrap-cdn/b-version/80; type=small; label=Viewportchecker: + # cat=bootstrap-cdn/b-version/35; type=small; label=Viewportchecker: viewportchecker = 1.8.8 - # cat=bootstrap-cdn/b-version/100; type=small; label=Animate CSS: + # cat=bootstrap-cdn/b-version/37; type=small; label=Animate CSS: animate = 3.7.2 - # cat=bootstrap-cdn/b-version/500; type=small; label=Baguette Box: + # cat=bootstrap-cdn/b-version/40; type=small; label=Baguette Box: baguetteBox = 1.11.0 - # cat=bootstrap-cdn/b-version/501; type=small; label=Ekko Lightbox: + # cat=bootstrap-cdn/b-version/42; type=small; label=Ekko Lightbox: ekkoLightbox = 5.3.0 - # cat=bootstrap-cdn/b-version/502; type=small; label=Lightcase: + # cat=bootstrap-cdn/b-version/45; type=small; label=Lightcase: lightcase = 2.5.0 - # cat=bootstrap-cdn/b-version/600; type=small; label=YouTube player - jquery.mb.YTPlayer: + # cat=bootstrap-cdn/b-version/47; type=small; label=YouTube player - jquery.mb.YTPlayer: ytPlayer = 3.3.1 + + # cat=bootstrap-cdn/c-integrity/11; type=small; label=Bootstrap JS: + bootstrapJsIntegrity = sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6 + # cat=bootstrap-cdn/c-integrity/12; type=small; label=Popper js: + popperjsIntegrity = + # cat=bootstrap-cdn/c-integrity/20; type=small; label=jQuery library: + jqueryIntegrity = + # cat=bootstrap-cdn/c-integrity/22; type=small; label=jQuery Easing: + jqueryEasingIntegrity = + # cat=bootstrap-cdn/c-integrity/25; type=small; label=Cookieconsent: + cookieconsentIntegrity = + # cat=bootstrap-cdn/c-integrity/27; type=small; label=Highlight: + highlightIntegrity = + # cat=bootstrap-cdn/c-integrity/30; type=small; label=Lazyload: + lazyloadIntegrity = + # cat=bootstrap-cdn/c-integrity/32; type=small; label=Picturefill: + picturefillIntegrity = + # cat=bootstrap-cdn/c-integrity/35; type=small; label=Viewportchecker: + viewportcheckerIntegrity = + # cat=bootstrap-cdn/c-integrity/37; type=small; label=Baguette Box: + baguetteBoxIntegrity = + # cat=bootstrap-cdn/c-integrity/40; type=small; label=Ekko Lightbox: + ekkoLightboxIntegrity = + # cat=bootstrap-cdn/c-integrity/42; type=small; label=Lightcase: + lightcaseIntegrity = } @@ -77,7 +104,7 @@ bootstrap.config { # cat=bootstrap-config/a-config/30; type=boolean; label=jQuery in header: load jquery into the header if activated. jqueryHeader = 0 - # cat=bootstrap-config/b-config/10; type=boolean; label=Compress: compress and concatenate JS and CSS. + # cat=bootstrap-config/b-config/10; type=boolean; label=Compress: compress and concatenate JS and CSS - did not work with CDN. compress = 1 # cat=bootstrap-config/b-config/20; type=boolean; label=Disable Prefix Comment: disablePrefixComment = 1 @@ -142,7 +169,7 @@ bootstrap.config { # cat=bootstrap-config/e-config/070; type=options[py-1=1, py-2=2, py-3=3, py-4=4, py-5=5, py-x=x]; label=Padding for Shrinking Navbar: py-x can be set by your stylesheet shrinkingNavPadding = 5 # cat=bootstrap-config/e-config/090; type=small; label=Favicon: path to your favicon e.g.: EXT:t3sbootstrap/Resources/Public/Icons/favicon.ico - favicon = typo3conf/ext/t3sbootstrap/Resources/Public/Icons/favicon.ico + favicon = # cat=bootstrap-config/e-config/110; type=boolean; label=Card Flipper: rotate on click. cardFlipperOnClick = 0 # cat=bootstrap-config/e-config/120; type=boolean; label=Language Menu Style: you have the choice between two layouts - with Fontawesome icon (globe) or current language with flag. @@ -163,14 +190,17 @@ bootstrap.image { minimumWidth = 0 # cat=bootstrap-image/a-image/40; type=boolean; label=Ratio: if enabled use width and height for ratio in textmedia, textpic, image, card and media object. ratioWithHeight = 0 - # cat=bootstrap-image/a-image/50; type=boolean; label=Max. image width Media object: the default max. width for the media object. + # cat=bootstrap-image/a-image/50; type=small; label=Max. image width Media object: the default max. width for the media object. maxWidthMediaObject = 200 - # cat=bootstrap-image/a-image/60; type=boolean; label=Max. image width Toast: the default max. width for Bootstrap toast. + # cat=bootstrap-image/a-image/60; type=small; label=Max. image width Toast: the default max. width for Bootstrap toast. maxWidthToast = 20 + # cat=bootstrap-image/a-image/70; type=boolean; label=Disable auto row: the default "Gallery row width in % = auto" is set to "none" if activated. + disableAutoRow = 1 + # cat=bootstrap-image/b-image/10; type=small; label=Additional Image Sizes for Desktop min-width 1200px: comma-separated list of either image widths specified in pixels or pixel density descriptors, e. g. "2x". srcsetDesktop = 125, 255, 385, 576, 768, 992, 1200 # cat=bootstrap-image/b-image/20; type=small; label=Additional Image Sizes for Tablet min-width 576px: comma-separated list of either image widths specified in pixels or pixel density descriptors, e. g. "2x". - srcsetTablet = 385, 576, 768, 992, 1200 + srcsetTablet = 125, 255, 385, 576, 768, 992, 1200 # cat=bootstrap-image/b-image/30; type=small; label=Additional Image Sizes for Mobile max-width 575px: comma-separated list of either image widths specified in pixels or pixel density descriptors, e. g. "2x". srcsetMobile = 60, 100, 200, 385, 575 # cat=bootstrap-image/c-image/010; type=int+; label=Threshold for Lazy load: if "lazyLoad" is activated in the EM config, the distance out of the viewport, expressed in pixel, before which to start loading the images. @@ -233,6 +263,9 @@ bootstrap.pagebrowser.entryLevel = 1 bootstrap.animateCssInlineJs = classToAdd: 'bt_visible',classToRemove: 'bt_hidden',offset: 0 +# disable default css & js included in ConfigProcessor->includeRequiredFiles +bootstrap.config.disableDefaultCss = 0 + bootstrap.navbar { image.defaultPath = /typo3conf/ext/t3sbootstrap/Resources/Public/Images/bootstrap-solid.svg image.width = 30 diff --git a/Resources/Private/Extensions/news/Configuration/TSconfig/templateLayouts.typoscript b/Resources/Private/Extensions/news/Configuration/TSconfig/templateLayouts.tsconfig similarity index 100% rename from Resources/Private/Extensions/news/Configuration/TSconfig/templateLayouts.typoscript rename to Resources/Private/Extensions/news/Configuration/TSconfig/templateLayouts.tsconfig diff --git a/Resources/Private/Extensions/news/Resources/Private/Partials/Detail/T3sbMediaImage.html b/Resources/Private/Extensions/news/Resources/Private/Partials/Detail/T3sbMediaImage.html index 7035e942..b7169175 100644 --- a/Resources/Private/Extensions/news/Resources/Private/Partials/Detail/T3sbMediaImage.html +++ b/Resources/Private/Extensions/news/Resources/Private/Partials/Detail/T3sbMediaImage.html @@ -12,9 +12,9 @@ - diff --git a/Resources/Private/Partials/Content/Media/Effects.html b/Resources/Private/Partials/Content/Media/Effects.html index 82c949b0..d65b4cdd 100644 --- a/Resources/Private/Partials/Content/Media/Effects.html +++ b/Resources/Private/Partials/Content/Media/Effects.html @@ -7,62 +7,62 @@ {f:if(condition: '{file.title}', then: '

{file.title}

')} - {f:if(condition: '{file.description}', then: '

{file.description}

')} -
+ {f:if(condition: '{file.description}', then: '

{file.description}

')} + -
-
-
+
+
+
{f:if(condition: '{file.title}', then: '

{file.title}

')} - {f:if(condition: '{file.description}', then: '

{file.description}

')} -
+ {f:if(condition: '{file.description}', then: '

{file.description}

')} + -
-
-
+
+
+
{f:if(condition: '{file.title}', then: '

{file.title}

')} - {f:if(condition: '{file.description}', then: '

{file.description}

')} -
+ {f:if(condition: '{file.description}', then: '

{file.description}

')} + {f:if(condition: '{file.title}', then: '

{file.title}

')} {f:if(condition: '{file.description}', then: '

{file.description}

')} -
+ {f:if(condition: '{file.title}', then: '

{file.title}

')} {f:if(condition: '{file.description}', then: '

{file.description}

')} -
+ - {f:if(condition: '{file.description}', then: '

{file.description}

')} - {f:if(condition: '{file.title}', then: '

{file.title}

')} -
+ {f:if(condition: '{file.description}', then: '

{file.description}

')} + {f:if(condition: '{file.title}', then: '

{file.title}

')} + {f:if(condition: '{file.title}', then: '

{file.title}

')} - {f:if(condition: '{file.description}', then: '

{file.description}

')} -
+ {f:if(condition: '{file.description}', then: '

{file.description}

')} + -
-
-

{file.title}

-
-
+
+
+

{file.title}

+
+
-

{file.description}

+

{file.description}

-
-
+
+ - {f:if(condition: '{file.title}', then: '

{file.title}

')} -
+ {f:if(condition: '{file.title}', then: '

{file.title}

')} + {f:if(condition: '{file.title}', then: '

{file.title}

')} - {f:if(condition: '{file.description}', then: '

{file.description}

')} -
+ {f:if(condition: '{file.description}', then: '

{file.description}

')} + {f:if(condition: '{file.title}', then: '

{file.title}

')} - {f:if(condition: '{file.description}', then: '

{file.description}

')} + {f:if(condition: '{file.description}', then: '

{file.description}

')}
diff --git a/Resources/Private/Partials/Content/Media/Rendering/Image.html b/Resources/Private/Partials/Content/Media/Rendering/Image.html index d21bfe24..7eb5fabd 100644 --- a/Resources/Private/Partials/Content/Media/Rendering/Image.html +++ b/Resources/Private/Partials/Content/Media/Rendering/Image.html @@ -1,12 +1,12 @@ {fileParts.path}{fileParts.filebody}.{fileParts.imgext} - diff --git a/Resources/Private/Partials/Content/Media/Type/Image.html b/Resources/Private/Partials/Content/Media/Type/Image.html index f6f6606d..fe866ca0 100644 --- a/Resources/Private/Partials/Content/Media/Type/Image.html +++ b/Resources/Private/Partials/Content/Media/Type/Image.html @@ -50,7 +50,7 @@ {file.description -> f:format.raw()} -
+ @@ -60,7 +60,7 @@ - + + - © {file.properties.tx_t3sbootstrap_copyright} + © {file.properties.tx_t3sbootstrap_copyright} diff --git a/Resources/Private/Partials/Page/Navbar.html b/Resources/Private/Partials/Page/Navbar.html index 86863758..716b437f 100644 --- a/Resources/Private/Partials/Page/Navbar.html +++ b/Resources/Private/Partials/Page/Navbar.html @@ -360,49 +360,49 @@

- + diff --git a/Resources/Private/Templates/Gridelements/BackgroundWrapper.html b/Resources/Private/Templates/Gridelements/BackgroundWrapper.html index 9985583d..e1eb4408 100644 --- a/Resources/Private/Templates/Gridelements/BackgroundWrapper.html +++ b/Resources/Private/Templates/Gridelements/BackgroundWrapper.html @@ -13,7 +13,7 @@ Youtube video
+ data-property="{youtubeProperty}"{f:if(condition: '{style}',then: ' style="{style}"')}> diff --git a/Resources/Public/Scripts/AjaxLazyPagination.js b/Resources/Public/Scripts/AjaxLazyPagination.js index f3bf71a3..d0fd3937 100644 --- a/Resources/Public/Scripts/AjaxLazyPagination.js +++ b/Resources/Public/Scripts/AjaxLazyPagination.js @@ -1,34 +1,2 @@ -$(document).ready(function () { - - $('.news').on('click', '.page-navigation a', function (e) { - - $('#news-spinner').css('display','block'); - - var ajaxUrl = $(this).attr('href'); - - if (ajaxUrl !== undefined && ajaxUrl !== '') { - - e.preventDefault(); - var container = 'news-container-' + $(this).data('container'); - - $.ajax({ - url: ajaxUrl, - type: 'GET', - success: function (result) { - var ajaxDom = $(result).find('#' + container); - - $('#' + container).replaceWith(ajaxDom); - - // with lazyload only - new LazyLoad({ - elements_selector: ".lazy", - threshold: 0 - }); - - $('#news-spinner').delay(350).fadeOut('slow'); - - } - }); - } - }); -}); \ No newline at end of file +/* ajax pagination lazy */ +$(document).ready(function(){$(".news").on("click",".page-navigation a",function(e){$("#news-spinner").css("display","block");var n=$(this).attr("href");if(void 0!==n&&""!==n){e.preventDefault();var a="news-container-"+$(this).data("container");$.ajax({url:n,type:"GET",success:function(e){var n=$(e).find("#"+a);$("#"+a).replaceWith(n),new LazyLoad({elements_selector:".lazy",threshold:0}),$("#news-spinner").delay(350).fadeOut("slow")}})}})}); \ No newline at end of file diff --git a/Resources/Public/Scripts/AjaxPagination.js b/Resources/Public/Scripts/AjaxPagination.js index 01f27919..dabf9a44 100644 --- a/Resources/Public/Scripts/AjaxPagination.js +++ b/Resources/Public/Scripts/AjaxPagination.js @@ -1,26 +1,2 @@ -$(document).ready(function () { - - $('.news').on('click', '.page-navigation a', function (e) { - - $('#news-spinner').css('display','block'); - - var ajaxUrl = $(this).attr('href'); - - if (ajaxUrl !== undefined && ajaxUrl !== '') { - e.preventDefault(); - var container = 'news-container-' + $(this).data('container'); - - $.ajax({ - url: ajaxUrl, - type: 'GET', - success: function (result) { - var ajaxDom = $(result).find('#' + container); - $('#' + container).replaceWith(ajaxDom); - - $('#news-spinner').delay(350).fadeOut('slow'); - - } - }); - } - }); -}); \ No newline at end of file +/* ajax pagination */ +$(document).ready(function(){$(".news").on("click",".page-navigation a",function(n){$("#news-spinner").css("display","block");var e=$(this).attr("href");if(void 0!==e&&""!==e){n.preventDefault();var a="news-container-"+$(this).data("container");$.ajax({url:e,type:"GET",success:function(n){var e=$(n).find("#"+a);$("#"+a).replaceWith(e),$("#news-spinner").delay(350).fadeOut("slow")}})}})}); \ No newline at end of file diff --git a/Resources/Public/Scripts/ajax.js b/Resources/Public/Scripts/ajax.js index 7eafbb4c..0ac07986 100644 --- a/Resources/Public/Scripts/ajax.js +++ b/Resources/Public/Scripts/ajax.js @@ -1,42 +1,2 @@ -// content consent -(function($) { - $(function() { - - $('.ajaxSubmit').on('click', function(event) { - var $submit = $(this), - uri = $submit.data('ajaxuri'), - currentRecord = $submit.val(), - lazyload = jQuery.parseJSON(TYPO3.settings.T3SB['lazyLoad']); - - if ($('#preloader-'+currentRecord).length > 0) { - $('#c'+currentRecord).css('position','relative'); - $('#preloader-'+currentRecord).css('display','block'); - } - - $.ajax( - uri, - { - 'type': 'post', - 'data': {currentRecord: currentRecord} - } - ).done(function(result) { - - $('#ajax-result-'+currentRecord).removeClass('px-3'); - $('#ajax-result-'+currentRecord).html(result); - - if ($('#preloader-'+currentRecord).length > 0) { - $('#preloader-'+currentRecord).css('display','none'); - $('#c'+currentRecord).removeAttr('style'); - } - - if ( lazyload > 0 ) { - new LazyLoad({ - elements_selector: ".lazy", - threshold: 0 - }); - } - - }); - }); - }); -})(jQuery); +/* content consent */ +!function(o){o(function(){o(".ajaxSubmit").on("click",function(e){var a=o(this),t=a.data("ajaxuri"),r=a.val(),l=jQuery.parseJSON(TYPO3.settings.T3SB.lazyLoad);0 576 && winWidth < 769 && key == 768 ) { - currentObj.css('background-image', 'url(' + raster +'), url(' + value + ')'); - } - if ( winWidth > 768 && winWidth < 993 && key == 992 ) { - currentObj.css('background-image', 'url(' + raster +'), url(' + value + ')'); - } - if ( winWidth > 992 && winWidth < 1201 && key == 1200 ) { - currentObj.css('background-image', 'url(' + raster +'), url(' + value + ')'); - } - if ( winWidth > 1200 && winWidth < 1921 && key == 1920 ) { - currentObj.css('background-image', 'url(' + raster +'), url(' + value + ')'); - } - if ( winWidth > 1920 && winWidth < 2561 && key == 2560 ) { - currentObj.css('background-image', 'url(' + raster +'), url(' + value + ')'); - } - if ( winWidth > 2560 && key == 'orig' ) { - currentObj.css('background-image', 'url(' + raster +'), url(' + value + ')'); - } - } - function resizeBgImage(winWidth, objKey, value, key, currentElement) { - - if ($(currentElement).is('body')) { - var currentObj = $('#page-'+objKey); - } else { - if (currentElement.css('background-image') !== undefined) { - var currentObj = $('#s'+objKey); - } else { - var currentObj = $('#bg-img-'+objKey); - } - } - - if (currentObj.length) { - - if ( winWidth < 577 && key == 576 ) { - currentObj.css('background-image', 'url(' + value + ')'); - } - if ( winWidth > 576 && winWidth < 769 && key == 768 ) { - currentObj.css('background-image', 'url(' + value + ')'); - } - if ( winWidth > 768 && winWidth < 993 && key == 992 ) { - currentObj.css('background-image', 'url(' + value + ')'); - } - if ( winWidth > 992 && winWidth < 1201 && key == 1200 ) { - currentObj.css('background-image', 'url(' + value + ')'); - } - if ( winWidth > 1200 && winWidth < 1921 && key == 1920 ) { - currentObj.css('background-image', 'url(' + value + ')'); - } - if ( winWidth > 1920 && winWidth < 2561 && key == 2560 ) { - currentObj.css('background-image', 'url(' + value + ')'); - } - if ( winWidth > 2560 && key == 'orig' ) { - currentObj.css('background-image', 'url(' + value + ')'); - } - - } - } - function backgroundSize() { - var winWidth = $(window).width(); - var enableHeight = false; - - if (TYPO3.settings.BGWRAPPER !== undefined) { - $.each( TYPO3.settings.BGWRAPPER, function( objKey, objValue ) { - var currentElement = $('#s'+objKey+'.bgImageSize'); - - $.each( TYPO3.settings.ENABLEHEIGHT, function( enableKey, enableValue ) { - if ( (objKey == enableKey) && enableValue ) { - enableHeight = true; - } - }); - - if (jQuery.parseJSON(objValue)[0] !== undefined) { - //bgColor only -> false - if (enableHeight) addHeight(objKey, false); - - } else { - - if (enableHeight) addHeight(objKey); - var $obj = jQuery.parseJSON(objValue); - - $.each( $obj, function( key, value ) { - $(window).on('resize', function(){ - var winWidth = $(window).width(); - if ( $('.bgImageSize').hasClass('multiple-background-image') || $('.bgImageSize').hasClass('multiple-parallax') ) { - resizeMultipleBgImage(winWidth, objKey, value, key); - } else { - resizeBgImage(winWidth, objKey, value, key, currentElement); - } - }); - if ( $('.bgImageSize').hasClass('multiple-background-image') || $('.bgImageSize').hasClass('multiple-parallax') ) { - resizeMultipleBgImage(winWidth, objKey, value, key); - } else { - resizeBgImage(winWidth, objKey, value, key, currentElement); - } - }); - } - }); - } - if (TYPO3.settings.JUMBOTRON !== undefined) { - $.each( TYPO3.settings.JUMBOTRON, function( objKey, objValue ) { - var currentElement = $('#s'+objKey+'.bgImageSize'); - var $obj = jQuery.parseJSON(objValue); - objKey = $('body').attr('id').split('-')[1]; - $.each( $obj, function( key, value ) { - $(window).on('resize', function(){ - var winWidth = $('.jumbotron').width(); - resizeBgImage(winWidth, objKey, value, key, currentElement); - }); - resizeBgImage(winWidth, objKey, value, key, currentElement); - }); - }); - } - if (TYPO3.settings.BODY !== undefined && $('body').hasClass("bgi")) { - $.each( TYPO3.settings.BODY, function( objKey, objValue ) { - var currentElement = "#"+$('body').attr('id'); - var $obj = jQuery.parseJSON(objValue); - objKey = $('body').attr('id').split('-')[1]; - $.each( $obj, function( key, value ) { - $(window).on('resize', function(){ - var winWidth = $(window).width(); - resizeBgImage(winWidth, objKey, value, key, currentElement); - }); - resizeBgImage(winWidth, objKey, value, key, currentElement); - }); - }); - } - } - - function addHeight(objKey, bgimg) { - - bgimg = (typeof b !== 'undefined') ? bgimg : 1; - - if (bgimg) { - var overlay = $('#bg-img-'+objKey).next('.card-img-overlay'); - } else { - var overlay = $('#bg-col-'+objKey).next('.card-img-overlay'); - } - - if (overlay.length) { - var totalHeight = 0; - var addHeight = 0; - var outerHeight = 0; - - $.each( TYPO3.settings.ADDHEIGHT, function( addKey, addValue ) { - if (objKey == addKey) { - addHeight = parseInt(addValue); - } - }); - - $.each( overlay, function( objKeyOverlay, objValueOverlay ) { - $(objValueOverlay).children().each(function(){ - if ($(this).hasClass('container')) { - var container = $(this); - container.children().each(function(){ - outerHeight = parseInt($(this).outerHeight(true)); - totalHeight = totalHeight + outerHeight; - }); - } else { - outerHeight = parseInt($(this).outerHeight(true)); - totalHeight = totalHeight + outerHeight; - } - }); - }); - - totalHeight = totalHeight + addHeight; - - if (bgimg) { - $('#bg-img-'+objKey).css('min-height', totalHeight+'px'); - } else { - $('#bg-col-'+objKey).css('min-height', totalHeight+'px'); - } - } - } - - - $('.parallax, .multiple-parallax').each(function(){ - var speed='0.1'; - if(typeof $(this).attr('data-speed')!='undefined' && $(this).attr('data-speed')!=''){ - speed=$(this).attr('data-speed'); - } - $(this).parallax('50%',speed); - }); - - backgroundSize(); - - if (mobile){ - $('.background-image').removeClass('background-fixed'); - } - -}); +/* BgImageSize */ +!function(c){c.browser;var g=c(window),u=g.height();g.resize(function(){u=g.height()}),c.fn.parallax=function(n,s,e){var t,r,o=c(this);o.each(function(){r=o.offset().top}),t=e?function(e){return e.outerHeight(!0)}:function(e){return e.height()},(arguments.length<1||null===n)&&(n="50%"),(arguments.length<2||null===s)&&(s=.1),(arguments.length<3||null===e)&&(e=!0);function i(){if(/Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent))o.each(function(){o.css("backgroundPosition","top left"),o.css("backgroundAttachment","scroll")});else{var a=g.scrollTop();o.each(function(){var e=c(this),i=e.offset().top;i+t(e) img, -.snip1573.hover > img { - opacity: 0.5; -} - -.snip1573:hover:before, -.snip1573.hover:before { - -webkit-transform: skew(45deg) translateX(-55%); - transform: skew(45deg) translateX(-55%); -} - -.snip1573:hover:after, -.snip1573.hover:after { - -webkit-transform: skew(45deg) translateX(55%); - transform: skew(45deg) translateX(55%); -} - -.snip1573:hover figcaption, -.snip1573.hover figcaption { - -webkit-transform: translate(-50%, -50%) scale(1); - transform: translate(-50%, -50%) scale(1); - opacity: 1; -} - - - -/* Hover Effect 6 */ -figure.snip1477 { - position: relative; - float: left; - overflow: hidden; - color: #ffffff; - text-align: center; - font-size: 16px; - background-color: #000000; -} -figure.snip1477 *, -figure.snip1477 *:before, -figure.snip1477 *:after { - -webkit-box-sizing: border-box; - box-sizing: border-box; - -webkit-transition: all 0.55s ease; - transition: all 0.55s ease; -} -figure.snip1477 img { - max-width: 100%; - backface-visibility: hidden; - vertical-align: top; - opacity: 0.9; -} -figure.snip1477 .title { - position: absolute; - top: 58%; - left: 25px; - padding: 5px 10px 10px; -} -figure.snip1477 .title:before, -figure.snip1477 .title:after { - height: 2px; - width: 400px; - position: absolute; - content: ''; - background-color: #ffffff; -} -figure.snip1477 .title:before { - top: 0; - left: 10px; - -webkit-transform: translateX(100%); - transform: translateX(100%); -} -figure.snip1477 .title:after { - bottom: 0; - right: 10px; - -webkit-transform: translateX(-100%); - transform: translateX(-100%); -} -figure.snip1477 .title div:before, -figure.snip1477 .title div:after { - width: 2px; - height: 300px; - position: absolute; - content: ''; - background-color: #ffffff; -} -figure.snip1477 .title div:before { - top: 10px; - right: 0; - -webkit-transform: translateY(100%); - transform: translateY(100%); -} -figure.snip1477 .title div:after { - bottom: 10px; - left: 0; - -webkit-transform: translateY(-100%); - transform: translateY(-100%); -} -figure.snip1477 h2, -figure.snip1477 h4 { - margin: 0; - text-transform: uppercase; -} -figure.snip1477 h2 { - font-weight: 400; -} -figure.snip1477 h4 { - display: block; - font-weight: 700; - background-color: #ffffff; - padding: 5px 10px; - color: #000000; - font-size: 1rem; -} -figure.snip1477 figcaption { - position: absolute; - bottom: 42%; - left: 25px; - text-align: left; - opacity: 0; - padding: 5px 60px 5px 10px; - font-size: 0.8em; - font-weight: 500; - letter-spacing: 1.5px; -} -figure.snip1477 figcaption p { - margin: 0; -} -figure.snip1477 a { - position: absolute; - top: 0; - bottom: 0; - left: 0; - right: 0; -} -figure.snip1477:hover img, -figure.snip1477.hover img { - zoom: 1; - filter: alpha(opacity=35); - -webkit-opacity: 0.35; - opacity: 0.35; -} -figure.snip1477:hover .title:before, -figure.snip1477.hover .title:before, -figure.snip1477:hover .title:after, -figure.snip1477.hover .title:after, -figure.snip1477:hover .title div:before, -figure.snip1477.hover .title div:before, -figure.snip1477:hover .title div:after, -figure.snip1477.hover .title div:after { - -webkit-transform: translate(0, 0); - transform: translate(0, 0); -} -figure.snip1477:hover .title:before, -figure.snip1477.hover .title:before, -figure.snip1477:hover .title:after, -figure.snip1477.hover .title:after { - -webkit-transition-delay: 0.15s; - transition-delay: 0.15s; -} -figure.snip1477:hover figcaption, -figure.snip1477.hover figcaption { - opacity: 1; - -webkit-transition-delay: 0.2s; - transition-delay: 0.2s; -} - - - -/* Hover Effect 7 */ -.snip1361 { - position: relative; - float: left; - overflow: hidden; - color: #141414; - text-align: left; - line-height: 1.4em; - font-size: 16px; -} -.snip1361 * { - -webkit-box-sizing: border-box; - box-sizing: border-box; - -webkit-transition: all 0.35s ease; - transition: all 0.35s ease; -} -.snip1361 img { - max-width: 100%; - vertical-align: top; -} -.snip1361 figcaption { - position: absolute; - top: calc(77%); - width: 100%; - background-color: #ffffff; - padding: 15px 25px 65px; -} -.snip1361 figcaption:before { - position: absolute; - content: ''; - z-index: 2; - bottom: 100%; - left: 0; - width: 100%; - height: 80px; - background-image: -webkit-linear-gradient(top, transparent 0%, #ffffff 100%); - background-image: linear-gradient(to bottom, transparent 0%, #ffffff 100%); -} -.snip1361 h3, -.snip1361 p { - margin: 0 0 20px; -} -.snip1361 h3 { - font-weight: 300; - font-size: 1.2em; - line-height: 1.2em; - text-transform: uppercase; -} -.snip1361 p { - font-size: 0.9em; - letter-spacing: 1px; - opacity: 0.9; -} -.snip1361 a { - position: absolute; - top: 0; - bottom: 0; - left: 0; - right: 0; - z-index: 2; -} -.snip1361:hover figcaption, -.snip1361.hover figcaption { - top: calc(45%); -} - - -/* Hover Effect 8 */ -figure.snip1206 { - color: #fff; - position: relative; - float: left; - overflow: hidden; - color: #000000; - text-align: center; -} -figure.snip1206 * { - -webkit-box-sizing: border-box; - box-sizing: border-box; - -webkit-transition: all 0.6s ease; - transition: all 0.6s ease; -} -figure.snip1206 img { - opacity: 1; - width: 100%; - -webkit-transition: opacity 0.35s; - transition: opacity 0.35s; -} -figure.snip1206:after { - background: #ffffff; - width: 100%; - height: 100%; - position: absolute; - left: 0; - bottom: 0; - content: ''; - opacity: 0.75; - -webkit-transform: skew(-45deg) scaleX(0); - transform: skew(-45deg) scaleX(0); - -webkit-transition: all 0.3s ease-in-out; - transition: all 0.3s ease-in-out; -} -figure.snip1206 figcaption { - position: absolute; - top: 50%; - left: 0; - width: 100%; - -webkit-transform: translateY(-50%); - transform: translateY(-50%); - z-index: 1; -} -figure.snip1206 h2, -figure.snip1206 p { - margin: 0; - width: 100%; - opacity: 0; -} -figure.snip1206 h2 { - padding: 0 30px; - display: inline-block; - font-weight: 400; - text-transform: uppercase; - font-size: 1.2rem; -} -figure.snip1206 p { - padding: 0 50px; - font-size: 0.8em; - font-weight: 500; -} -figure.snip1206 a { - left: 0; - right: 0; - top: 0; - bottom: 0; - position: absolute; - z-index: 1; -} -figure.snip1206:hover:after, -figure.snip1206.hover:after { - -webkit-transform: skew(-45deg) scaleX(1); - transform: skew(-45deg) scaleX(1); - transition: all 400ms cubic-bezier(0.175, 0.885, 0.32, 1.275); -} -figure.snip1206:hover figcaption h2, -figure.snip1206.hover figcaption h2, -figure.snip1206:hover figcaption p, -figure.snip1206.hover figcaption p { - -webkit-transform: translate3d(0%, 0%, 0); - transform: translate3d(0%, 0%, 0); - -webkit-transition-delay: 0.2s; - transition-delay: 0.2s; -} -figure.snip1206:hover figcaption h2, -figure.snip1206.hover figcaption h2 { - opacity: 1; -} -figure.snip1206:hover figcaption p, -figure.snip1206.hover figcaption p { - opacity: 0.7; -} - - -/* Hover Effect 9 */ -figure.snip1190 { - color: #fff; - position: relative; - float: left; - overflow: hidden; - background: #000000; - text-align: center; -} -figure.snip1190 * { - -webkit-box-sizing: padding-box; - box-sizing: padding-box; - -webkit-transition: all 0.3s ease-in-out; - transition: all 0.3s ease-in-out; -} -figure.snip1190 img { - opacity: 0.8; - width: 100%; -} -figure.snip1190 figcaption { - bottom: 0; - display: block; - left: 0; - position: absolute; - right: 0; - top: 0; -} -figure.snip1190 h2 { - font-weight: 400; - left: 0; - right: 0; - letter-spacing: -1px; - margin: 0 auto; - position: absolute; - text-transform: uppercase; - bottom: 50%; - -webkit-transform: translateY(50%); - transform: translateY(50%); - font-size: 1.2rem; - color: white; -} -figure.snip1190 h2 span { - font-weight: 800; -} -figure.snip1190 p { - position: absolute; - top: 0; - left: 0; - right: 0; - margin: 0 auto; - top: 50%; - opacity: 0; - font-size: 14px; - -webkit-transform: translateY(-20%) scale(0.7); - transform: translateY(-20%) scale(0.7); -} -figure.snip1190 .square { - height: 78px; - width: 78px; - overflow: hidden; - position: absolute; - top: 50%; - left: 50%; - content: ''; - -webkit-transform: rotate(45deg) translate(-50%, -50%); - transform: rotate(45deg) translate(-50%, -50%); - -webkit-transform-origin: 0 0; - transform-origin: 0 0; -} -figure.snip1190 .square:before, -figure.snip1190 .square:after, -figure.snip1190 .square div:before, -figure.snip1190 .square div:after { - background-color: #ffffff; - position: absolute; - content: ""; - display: block; - -webkit-transition: all 0.4s ease-in-out; - transition: all 0.4s ease-in-out; -} -figure.snip1190 .square:before, -figure.snip1190 .square:after { - width: 65%; - height: 2px; -} -figure.snip1190 .square div:before, -figure.snip1190 .square div:after { - width: 2px; - height: 65%; -} -figure.snip1190 .square:before, -figure.snip1190 .square div:before { - left: 0; - top: 0; -} -figure.snip1190 .square:after, -figure.snip1190 .square div:after { - bottom: 0; - right: 0; -} -figure.snip1190 a { - left: 0; - right: 0; - top: 0; - bottom: 0; - position: absolute; -} -figure.snip1190:hover img, -figure.snip1190.hover img { - opacity: 0.25; - -webkit-transform: scale(1.1); - transform: scale(1.1); -} -figure.snip1190:hover h2, -figure.snip1190.hover h2 { - opacity: 1; - -webkit-transform: translateY(0px); - transform: translateY(0px); -} -figure.snip1190:hover p, -figure.snip1190.hover p { - opacity: 1; - -webkit-transform: translateY(0px) scale(1); - transform: translateY(0px) scale(1); -} -figure.snip1190:hover .square:before, -figure.snip1190.hover .square:before { - width: 38%; -} -figure.snip1190:hover .square div:before, -figure.snip1190.hover .square div:before { - height: 38%; -} -figure.snip1190:hover .square:after, -figure.snip1190.hover .square:after { - width: 55%; -} -figure.snip1190:hover .square div:after, -figure.snip1190.hover .square div:after { - height: 55%; -} - - - -/* Hover Effect 10 */ -figure.snip0016 { - color: #fff; - position: relative; - float: left; - overflow: hidden; - background: #000000; - text-align: left; -} -figure.snip0016 * { - -webkit-box-sizing: border-box; - box-sizing: border-box; -} -figure.snip0016 img { - max-width: 100%; - opacity: 1; - width: 100%; - -webkit-transition: opacity 0.35s; - transition: opacity 0.35s; -} -figure.snip0016 figcaption { - position: absolute; - bottom: 0; - left: 0; - padding: 30px 3em; - width: 100%; - height: 100%; -} -figure.snip0016 figcaption::before { - position: absolute; - top: 30px; - right: 30px; - bottom: 30px; - left: 100%; - border-left: 4px solid rgba(255, 255, 255, 0.8); - content: ''; - opacity: 0; - background-color: rgba(255, 255, 255, 0.5); - -webkit-transition: all 0.5s; - transition: all 0.5s; - -webkit-transition-delay: 0.6s; - transition-delay: 0.6s; -} -figure.snip0016 h2, -figure.snip0016 p { - margin: 0 0 5px; - opacity: 0; - -webkit-transition: opacity 0.35s, -webkit-transform 0.35s; - transition: opacity 0.35s,-webkit-transform 0.35s,-moz-transform 0.35s,-o-transform 0.35s,transform 0.35s; -} -figure.snip0016 h2 { - font-weight: 300; - text-transform: uppercase; - -webkit-transform: translate3d(30%, 0%, 0); - transform: translate3d(30%, 0%, 0); - -webkit-transition-delay: 0.3s; - transition-delay: 0.3s; - color: white; - font-size: 1rem; -} -figure.snip0016 h2 span { - font-weight: 800; -} -figure.snip0016 p { - font-weight: 200; - -webkit-transform: translate3d(0%, 30%, 0); - transform: translate3d(0%, 30%, 0); - -webkit-transition-delay: 0s; - transition-delay: 0s; -} -figure.snip0016 a { - left: 0; - right: 0; - top: 0; - bottom: 0; - position: absolute; - color: #ffffff; -} -figure.snip0016:hover img { - opacity: 0.3; -} -figure.snip0016:hover figcaption h2 { - opacity: 1; - -webkit-transform: translate3d(0%, 0%, 0); - transform: translate3d(0%, 0%, 0); - -webkit-transition-delay: 0.4s; - transition-delay: 0.4s; -} -figure.snip0016:hover figcaption p { - opacity: 0.9; - -webkit-transform: translate3d(0%, 0%, 0); - transform: translate3d(0%, 0%, 0); - -webkit-transition-delay: 0.6s; - transition-delay: 0.6s; -} -figure.snip0016:hover figcaption::before { - background: rgba(255, 255, 255, 0); - left: 30px; - opacity: 1; - -webkit-transition-delay: 0s; - transition-delay: 0s; -} \ No newline at end of file +/*! + * link hover effect + */ +figure.snip0015{color:#fff;position:relative;float:left;overflow:hidden;background:#000;text-align:center}figure.snip0015 *{-webkit-box-sizing:border-box;box-sizing:border-box}figure.snip0015 img{opacity:1;width:100%;-webkit-transition:opacity .35s;transition:opacity .35s}figure.snip0015 figcaption{position:absolute;bottom:0;left:0;padding:3em;width:100%;height:100%}figure.snip0015 figcaption::before{position:absolute;top:50%;right:30px;bottom:50%;left:30px;border-top:1px solid rgba(255,255,255,0.8);border-bottom:1px solid rgba(255,255,255,0.8);content:'';opacity:0;background-color:#fff;-webkit-transition:all .4s;transition:all .4s;-webkit-transition-delay:.6s;transition-delay:.6s}figure.snip0015 h2,figure.snip0015 p{margin:0 0 5px;opacity:0;font-size:1rem;color:#fff;-webkit-transition:opacity 0.35s,-webkit-transform .35s;transition:opacity 0.35s,-webkit-transform 0.35s,-moz-transform 0.35s,-o-transform 0.35s,transform .35s}figure.snip0015 h2{font-weight:300;text-transform:uppercase;-webkit-transform:translate3d(0%,50%,0);transform:translate3d(0%,50%,0);-webkit-transition-delay:.3s;transition-delay:.3s}figure.snip0015 h2 span{font-weight:800}figure.snip0015 p{font-weight:200;-webkit-transition-delay:0;transition-delay:0;font-size:.9rem}figure.snip0015 a{left:0;right:0;top:0;bottom:0;position:absolute;color:#fff}figure.snip0015:hover img{opacity:.35}figure.snip0015:hover figcaption h2{opacity:1;-webkit-transform:translate3d(0%,0%,0);transform:translate3d(0%,0%,0);-webkit-transition-delay:.3s;transition-delay:.3s}figure.snip0015:hover figcaption p{opacity:.9;-webkit-transition-delay:.6s;transition-delay:.6s}figure.snip0015:hover figcaption::before{background:rgba(255,255,255,0);top:30px;bottom:30px;opacity:1;-webkit-transition-delay:0;transition-delay:0} +figure.snip0016{color:#fff;position:relative;float:left;overflow:hidden;background:#000;text-align:left}figure.snip0016 *{-webkit-box-sizing:border-box;box-sizing:border-box}figure.snip0016 img{max-width:100%;opacity:1;width:100%;-webkit-transition:opacity .35s;transition:opacity .35s}figure.snip0016 figcaption{position:absolute;bottom:0;left:0;padding:30px 3em;width:100%;height:100%}figure.snip0016 figcaption::before{position:absolute;top:30px;right:30px;bottom:30px;left:100%;border-left:4px solid rgba(255,255,255,0.8);content:'';opacity:0;background-color:rgba(255,255,255,0.5);-webkit-transition:all .5s;transition:all .5s;-webkit-transition-delay:.6s;transition-delay:.6s}figure.snip0016 h2,figure.snip0016 p{margin:0 0 5px;opacity:0;-webkit-transition:opacity 0.35s,-webkit-transform .35s;transition:opacity 0.35s,-webkit-transform 0.35s,-moz-transform 0.35s,-o-transform 0.35s,transform .35s}figure.snip0016 h2{font-weight:300;text-transform:uppercase;-webkit-transform:translate3d(30%,0%,0);transform:translate3d(30%,0%,0);-webkit-transition-delay:.3s;transition-delay:.3s;color:#fff;font-size:1rem}figure.snip0016 h2 span{font-weight:800}figure.snip0016 p{font-weight:200;-webkit-transform:translate3d(0%,30%,0);transform:translate3d(0%,30%,0);-webkit-transition-delay:0;transition-delay:0}figure.snip0016 a{left:0;right:0;top:0;bottom:0;position:absolute;color:#fff}figure.snip0016:hover img{opacity:.3}figure.snip0016:hover figcaption h2{opacity:1;-webkit-transform:translate3d(0%,0%,0);transform:translate3d(0%,0%,0);-webkit-transition-delay:.4s;transition-delay:.4s}figure.snip0016:hover figcaption p{opacity:.9;-webkit-transform:translate3d(0%,0%,0);transform:translate3d(0%,0%,0);-webkit-transition-delay:.6s;transition-delay:.6s}figure.snip0016:hover figcaption::before{background:rgba(255,255,255,0);left:30px;opacity:1;-webkit-transition-delay:0;transition-delay:0} +figure.snip1190{color:#fff;position:relative;float:left;overflow:hidden;background:#000;text-align:center}figure.snip1190 *{-webkit-box-sizing:padding-box;box-sizing:padding-box;-webkit-transition:all .3s ease-in-out;transition:all .3s ease-in-out}figure.snip1190 img{opacity:.8;width:100%}figure.snip1190 figcaption{bottom:0;display:block;left:0;position:absolute;right:0;top:0}figure.snip1190 h2{font-weight:400;left:0;right:0;letter-spacing:-1px;margin:0 auto;position:absolute;text-transform:uppercase;bottom:50%;-webkit-transform:translateY(50%);transform:translateY(50%);font-size:1.2rem;color:#fff}figure.snip1190 h2 span{font-weight:800}figure.snip1190 p{position:absolute;top:0;left:0;right:0;margin:0 auto;top:50%;opacity:0;font-size:14px;-webkit-transform:translateY(-20%) scale(0.7);transform:translateY(-20%) scale(0.7)}figure.snip1190 .square{height:78px;width:78px;overflow:hidden;position:absolute;top:50%;left:50%;content:'';-webkit-transform:rotate(45deg) translate(-50%,-50%);transform:rotate(45deg) translate(-50%,-50%);-webkit-transform-origin:0 0;transform-origin:0 0}figure.snip1190 .square:before,figure.snip1190 .square:after,figure.snip1190 .square div:before,figure.snip1190 .square div:after{background-color:#fff;position:absolute;content:"";display:block;-webkit-transition:all .4s ease-in-out;transition:all .4s ease-in-out}figure.snip1190 .square:before,figure.snip1190 .square:after{width:65%;height:2px}figure.snip1190 .square div:before,figure.snip1190 .square div:after{width:2px;height:65%}figure.snip1190 .square:before,figure.snip1190 .square div:before{left:0;top:0}figure.snip1190 .square:after,figure.snip1190 .square div:after{bottom:0;right:0}figure.snip1190 a{left:0;right:0;top:0;bottom:0;position:absolute}figure.snip1190:hover img,figure.snip1190.hover img{opacity:.25;-webkit-transform:scale(1.1);transform:scale(1.1)}figure.snip1190:hover h2,figure.snip1190.hover h2{opacity:1;-webkit-transform:translateY(0px);transform:translateY(0px)}figure.snip1190:hover p,figure.snip1190.hover p{opacity:1;-webkit-transform:translateY(0px) scale(1);transform:translateY(0px) scale(1)}figure.snip1190:hover .square:before,figure.snip1190.hover .square:before{width:38%}figure.snip1190:hover .square div:before,figure.snip1190.hover .square div:before{height:38%}figure.snip1190:hover .square:after,figure.snip1190.hover .square:after{width:55%}figure.snip1190:hover .square div:after,figure.snip1190.hover .square div:after{height:55%} +figure.snip1206{color:#fff;position:relative;float:left;overflow:hidden;color:#000;text-align:center}figure.snip1206 *{-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-transition:all .6s ease;transition:all .6s ease}figure.snip1206 img{opacity:1;width:100%;-webkit-transition:opacity .35s;transition:opacity .35s}figure.snip1206:after{background:#fff;width:100%;height:100%;position:absolute;left:0;bottom:0;content:'';opacity:.75;-webkit-transform:skew(-45deg) scaleX(0);transform:skew(-45deg) scaleX(0);-webkit-transition:all .3s ease-in-out;transition:all .3s ease-in-out}figure.snip1206 figcaption{position:absolute;top:50%;left:0;width:100%;-webkit-transform:translateY(-50%);transform:translateY(-50%);z-index:1}figure.snip1206 h2,figure.snip1206 p{margin:0;width:100%;opacity:0}figure.snip1206 h2{padding:0 30px;display:inline-block;font-weight:400;text-transform:uppercase;font-size:1.2rem}figure.snip1206 p{padding:0 50px;font-size:.8em;font-weight:500}figure.snip1206 a{left:0;right:0;top:0;bottom:0;position:absolute;z-index:1}figure.snip1206:hover:after,figure.snip1206.hover:after{-webkit-transform:skew(-45deg) scaleX(1);transform:skew(-45deg) scaleX(1);transition:all 400ms cubic-bezier(0.175,0.885,0.32,1.275)}figure.snip1206:hover figcaption h2,figure.snip1206.hover figcaption h2,figure.snip1206:hover figcaption p,figure.snip1206.hover figcaption p{-webkit-transform:translate3d(0%,0%,0);transform:translate3d(0%,0%,0);-webkit-transition-delay:.2s;transition-delay:.2s}figure.snip1206:hover figcaption h2,figure.snip1206.hover figcaption h2{opacity:1}figure.snip1206:hover figcaption p,figure.snip1206.hover figcaption p{opacity:.7} +.snip1273{position:relative;float:left;color:#fff;text-align:left;background-color:#000;font-size:16px}.snip1273 *{-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-transition:all .4s ease-in;transition:all .4s ease-in}.snip1273 img{position:relative;max-width:100%;vertical-align:top}.snip1273 figcaption{position:absolute;top:0;right:0;width:100%;height:100%;z-index:1;opacity:0;padding:20px 30px}.snip1273 figcaption:before,.snip1273 figcaption:after{width:1px;height:0}.snip1273 figcaption:before{right:0;top:0}.snip1273 figcaption:after{left:0;bottom:0}.snip1273 h3,.snip1273 p{line-height:1.5em}.snip1273 h3{margin:0 0 5px;font-weight:700;text-transform:uppercase;color:#fff}.snip1273 p{font-size:.8em;font-weight:500;margin:0 0 15px}.snip1273 a{position:absolute;top:0;bottom:0;right:0;left:0;z-index:1}.snip1273:before,.snip1273:after,.snip1273 figcaption:before,.snip1273 figcaption:after{position:absolute;content:'';background-color:#fff;z-index:1;-webkit-transition:all .4s ease-in;transition:all .4s ease-in;opacity:.8}.snip1273:before,.snip1273:after{height:1px;width:0}.snip1273:before{top:0;left:0}.snip1273:after{bottom:0;right:0}.snip1273:hover img,.snip1273.hover img{opacity:.4}.snip1273:hover figcaption,.snip1273.hover figcaption{opacity:1}.snip1273:hover figcaption:before,.snip1273.hover figcaption:before,.snip1273:hover figcaption:after,.snip1273.hover figcaption:after{height:100%}.snip1273:hover:before,.snip1273.hover:before,.snip1273:hover:after,.snip1273.hover:after{width:100%}.snip1273:hover:before,.snip1273.hover:before,.snip1273:hover:after,.snip1273.hover:after,.snip1273:hover figcaption:before,.snip1273.hover figcaption:before,.snip1273:hover figcaption:after,.snip1273.hover figcaption:after{opacity:.1} +figure.snip1321{position:relative;float:left;overflow:hidden;color:#000;text-align:center;-webkit-perspective:50em;perspective:50em}figure.snip1321 *{-webkit-box-sizing:padding-box;box-sizing:padding-box;-webkit-transition:all .2s ease-out;transition:all .2s ease-out}figure.snip1321 img{max-width:100%;vertical-align:top}figure.snip1321 figcaption{top:50%;left:20px;right:20px;position:absolute;opacity:0;z-index:1}figure.snip1321 h2,figure.snip1321 h4{margin:0}figure.snip1321 h2{font-weight:600;font-size:1.4rem}figure.snip1321 h4{font-weight:400;text-transform:uppercase;font-size:.8rem;padding:1rem .5rem}figure.snip1321 i{font-size:32px}figure.snip1321:after{background-color:#fff;position:absolute;content:"";display:block;top:20px;left:20px;right:20px;bottom:20px;-webkit-transition:all .4s ease-in-out;transition:all .4s ease-in-out;-webkit-transform:rotateX(-90deg);transform:rotateX(-90deg);-webkit-transform-origin:50% 50%;-ms-transform-origin:50% 50%;transform-origin:50% 50%;opacity:0}figure.snip1321 a{left:0;right:0;top:0;bottom:0;position:absolute;z-index:1}figure.snip1321:hover figcaption,figure.snip1321.hover figcaption{-webkit-transform:translateY(-50%);transform:translateY(-50%);opacity:1;-webkit-transition-delay:.2s;transition-delay:.2s}figure.snip1321:hover:after,figure.snip1321.hover:after{-webkit-transform:rotateX(0);transform:rotateX(0);opacity:.9} +.snip1361{position:relative;float:left;overflow:hidden;color:#141414;text-align:left;line-height:1.4em;font-size:16px}.snip1361 *{-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-transition:all .35s ease;transition:all .35s ease}.snip1361 img{max-width:100%;vertical-align:top}.snip1361 figcaption{position:absolute;top:calc(77%);width:100%;background-color:#fff;padding:15px 25px 65px}.snip1361 figcaption:before{position:absolute;content:'';z-index:2;bottom:100%;left:0;width:100%;height:80px;background-image:-webkit-linear-gradient(top,transparent 0%,#fff 100%);background-image:linear-gradient(to bottom,transparent 0%,#fff 100%)}.snip1361 h3,.snip1361 p{margin:0 0 20px}.snip1361 h3{font-weight:300;font-size:1.2em;line-height:1.2em;text-transform:uppercase}.snip1361 p{font-size:.9em;letter-spacing:1px;opacity:.9}.snip1361 a{position:absolute;top:0;bottom:0;left:0;right:0;z-index:2}.snip1361:hover figcaption,.snip1361.hover figcaption{top:calc(45%)} +figure.snip1477{position:relative;float:left;overflow:hidden;color:#fff;text-align:center;font-size:16px;background-color:#000}figure.snip1477 *,figure.snip1477 :before,figure.snip1477 :after{-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-transition:all .55s ease;transition:all .55s ease}figure.snip1477 img{max-width:100%;backface-visibility:hidden;vertical-align:top;opacity:.9}figure.snip1477 .title{position:absolute;top:58%;left:25px;padding:5px 10px 10px}figure.snip1477 .title:before,figure.snip1477 .title:after{height:2px;width:400px;position:absolute;content:'';background-color:#fff}figure.snip1477 .title:before{top:0;left:10px;-webkit-transform:translateX(100%);transform:translateX(100%)}figure.snip1477 .title:after{bottom:0;right:10px;-webkit-transform:translateX(-100%);transform:translateX(-100%)}figure.snip1477 .title div:before,figure.snip1477 .title div:after{width:2px;height:300px;position:absolute;content:'';background-color:#fff}figure.snip1477 .title div:before{top:10px;right:0;-webkit-transform:translateY(100%);transform:translateY(100%)}figure.snip1477 .title div:after{bottom:10px;left:0;-webkit-transform:translateY(-100%);transform:translateY(-100%)}figure.snip1477 h2,figure.snip1477 h4{margin:0;text-transform:uppercase}figure.snip1477 h2{font-weight:400}figure.snip1477 h4{display:block;font-weight:700;background-color:#fff;padding:5px 10px;color:#000;font-size:1rem}figure.snip1477 figcaption{position:absolute;bottom:42%;left:25px;text-align:left;opacity:0;padding:5px 60px 5px 10px;font-size:.8em;font-weight:500;letter-spacing:1.5px}figure.snip1477 figcaption p{margin:0}figure.snip1477 a{position:absolute;top:0;bottom:0;left:0;right:0}figure.snip1477:hover img,figure.snip1477.hover img{zoom:1;filter:alpha(opacity=35);-webkit-opacity:.35;opacity:.35}figure.snip1477:hover .title:before,figure.snip1477.hover .title:before,figure.snip1477:hover .title:after,figure.snip1477.hover .title:after,figure.snip1477:hover .title div:before,figure.snip1477.hover .title div:before,figure.snip1477:hover .title div:after,figure.snip1477.hover .title div:after{-webkit-transform:translate(0,0);transform:translate(0,0)}figure.snip1477:hover .title:before,figure.snip1477.hover .title:before,figure.snip1477:hover .title:after,figure.snip1477.hover .title:after{-webkit-transition-delay:.15s;transition-delay:.15s}figure.snip1477:hover figcaption,figure.snip1477.hover figcaption{opacity:1;-webkit-transition-delay:.2s;transition-delay:.2s} +.snip1573{background-color:#000;display:inline-block;font-size:16px;overflow:hidden;position:relative;text-align:center}.snip1573 *{-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-transition:all .35s ease;transition:all .35s ease}.snip1573:before,.snip1573:after{position:absolute;top:0;bottom:0;left:0;right:0;-webkit-transition:all .35s ease;transition:all .35s ease;background-color:#000;border-left:3px solid #fff;border-right:3px solid #fff;content:'';opacity:.9;z-index:1}.snip1573:before{-webkit-transform:skew(45deg) translateX(-155%);transform:skew(45deg) translateX(-155%)}.snip1573:after{-webkit-transform:skew(45deg) translateX(155%);transform:skew(45deg) translateX(155%)}.snip1573 img{backface-visibility:hidden;max-width:100%;vertical-align:top}.snip1573 figcaption{top:50%;left:50%;position:absolute;z-index:2;-webkit-transform:translate(-50%,-50%) scale(0.5);transform:translate(-50%,-50%) scale(0.5);opacity:0;-webkit-box-shadow:0 0 10px #000;box-shadow:0 0 10px #000}.snip1573 h3{background-color:#000;border:2px solid #fff;color:#fff;font-size:1em;font-weight:600;letter-spacing:1px;margin:0;padding:5px 10px;text-transform:uppercase}.snip1573 a{position:absolute;top:0;bottom:0;left:0;right:0;z-index:3}.snip1573:hover > img,.snip1573.hover > img{opacity:.5}.snip1573:hover:before,.snip1573.hover:before{-webkit-transform:skew(45deg) translateX(-55%);transform:skew(45deg) translateX(-55%)}.snip1573:hover:after,.snip1573.hover:after{-webkit-transform:skew(45deg) translateX(55%);transform:skew(45deg) translateX(55%)}.snip1573:hover figcaption,.snip1573.hover figcaption{-webkit-transform:translate(-50%,-50%) scale(1);transform:translate(-50%,-50%) scale(1);opacity:1} +.snip1577{position:relative;display:inline-block;overflow:hidden;color:#fff;text-align:left;font-size:16px;background:#000}.snip1577 *,.snip1577:before,.snip1577:after{-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-transition:all .4s ease;transition:all .4s ease}.snip1577 img{max-width:100%;backface-visibility:hidden;vertical-align:top}.snip1577:before,.snip1577:after{position:absolute;top:20px;right:20px;content:'';background-color:#fff;z-index:1;opacity:0}.snip1577:before{width:0;height:1px}.snip1577:after{height:0;width:1px}.snip1577 figcaption{position:absolute;left:0;bottom:0;padding:15px 20px}.snip1577 h3,.snip1577 h4{margin:0;font-size:1.1em;font-weight:400;opacity:0;color:#fff}.snip1577 h4{font-size:.8em;text-transform:uppercase}.snip1577 a{position:absolute;top:0;bottom:0;left:0;right:0;z-index:1}.snip1577:hover img,.snip1577.hover img{zoom:1;filter:alpha(opacity=20);-webkit-opacity:.4;opacity:.4}.snip1577:hover:before,.snip1577.hover:before,.snip1577:hover:after,.snip1577.hover:after{opacity:1;-webkit-transition-delay:.25s;transition-delay:.25s}.snip1577:hover:before,.snip1577.hover:before{width:40px}.snip1577:hover:after,.snip1577.hover:after{height:40px}.snip1577:hover h3,.snip1577.hover h3,.snip1577:hover h4,.snip1577.hover h4{opacity:1}.snip1577:hover h3,.snip1577.hover h3{-webkit-transition-delay:.3s;transition-delay:.3s}.snip1577:hover h4,.snip1577.hover h4{-webkit-transition-delay:.35s;transition-delay:.35s} \ No newline at end of file diff --git a/Resources/Public/Styles/megaMenu.css b/Resources/Public/Styles/megaMenu.css index 0da341f6..42285820 100644 --- a/Resources/Public/Styles/megaMenu.css +++ b/Resources/Public/Styles/megaMenu.css @@ -1 +1,4 @@ +/*! + * megaMenu.css + */ #main-navbar .container,#main-navbar .container-fluid{position:relative}.mega-dropdown{position:static!important}.mega-dropdown-menu{padding:20px;width:100%;top:inherit}.nav-fill .mega-dropdown-menu .nav-item{text-align:left}.navbar-light .navbar-nav .mega-dropdown-menu .nav-link:focus,.navbar-light .navbar-nav .mega-dropdown-menu .nav-link:hover,.navbar-dark .navbar-nav .mega-dropdown-menu .nav-link:focus,.navbar-dark .navbar-nav .mega-dropdown-menu .nav-link:hover{color:#fff;text-decoration:none;background-color:var(--primary)}.navbar-light .navbar-nav .mega-dropdown-menu .nav-link,.navbar-dark .navbar-nav .mega-dropdown-menu .nav-link{color:var(--gray)}.navbar-light .navbar-nav .mega-dropdown-menu .nav-link.active,.navbar-dark .navbar-nav .mega-dropdown-menu .nav-link.active{color:#fff;background-color:var(--primary)}#main-navbar .mega-dropdown-menu .nav-link{line-height:1.5} \ No newline at end of file diff --git a/Resources/Public/Styles/offcanvasNavbarNO.css b/Resources/Public/Styles/offcanvasNavbar.css similarity index 100% rename from Resources/Public/Styles/offcanvasNavbarNO.css rename to Resources/Public/Styles/offcanvasNavbar.css diff --git a/Resources/Public/Styles/offcanvasNavbarLG.css b/Resources/Public/Styles/offcanvasNavbarLG.css deleted file mode 100644 index 627e0b8b..00000000 --- a/Resources/Public/Styles/offcanvasNavbarLG.css +++ /dev/null @@ -1 +0,0 @@ -@media (max-width:991px){html,body{overflow-x:hidden}.offcanvas-collapse{position:fixed;top:56px;bottom:0;width:100%;padding-right:1rem;padding-left:1rem;overflow-y:auto;background-color:var(--gray-dark);transition:-webkit-transform .3s ease-in-out;transition:transform .3s ease-in-out;transition:transform .3s ease-in-out,-webkit-transform .3s ease-in-out;-webkit-transform:translateX(100%);transform:translateX(100%)}.offcanvas-collapse.open{-webkit-transform:translateX(-1rem);transform:translateX(-1rem)}.offcanvas-collapse .navbar-nav .nav-link{color:rgba(255,255,255,.75)}.offcanvas-collapse .navbar-nav .nav-link:hover,.offcanvas-collapse .navbar-nav .nav-link:focus{color:#fff}.dropdown-item.active,.dropdown-item:active{color:#fff}.dropdown-item.active:hover,.dropdown-item:active:hover{color:rgba(0,0,0,.75)}.offcanvas-collapse .navbar-nav .active .nav-link{color:rgba(255,255,255,.75);color:#fff}.navbar > .offcanvas-container{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;width:100%}} \ No newline at end of file diff --git a/Resources/Public/Styles/offcanvasNavbarMD.css b/Resources/Public/Styles/offcanvasNavbarMD.css deleted file mode 100644 index 36cb7903..00000000 --- a/Resources/Public/Styles/offcanvasNavbarMD.css +++ /dev/null @@ -1 +0,0 @@ -@media (max-width:767px){html,body{overflow-x:hidden}.offcanvas-collapse{position:fixed;top:56px;bottom:0;width:100%;padding-right:1rem;padding-left:1rem;overflow-y:auto;background-color:var(--gray-dark);transition:-webkit-transform .3s ease-in-out;transition:transform .3s ease-in-out;transition:transform .3s ease-in-out,-webkit-transform .3s ease-in-out;-webkit-transform:translateX(100%);transform:translateX(100%)}.offcanvas-collapse.open{-webkit-transform:translateX(-1rem);transform:translateX(-1rem)}.offcanvas-collapse .navbar-nav .nav-link{color:rgba(255,255,255,.75)}.offcanvas-collapse .navbar-nav .nav-link:hover,.offcanvas-collapse .navbar-nav .nav-link:focus{color:#fff}.dropdown-item.active,.dropdown-item:active{color:#fff}.dropdown-item.active:hover,.dropdown-item:active:hover{color:rgba(0,0,0,.75)}.offcanvas-collapse .navbar-nav .active .nav-link{color:rgba(255,255,255,.75);color:#fff}.navbar > .offcanvas-container{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;width:100%}} \ No newline at end of file diff --git a/Resources/Public/Styles/offcanvasNavbarSM.css b/Resources/Public/Styles/offcanvasNavbarSM.css deleted file mode 100644 index 4b50a967..00000000 --- a/Resources/Public/Styles/offcanvasNavbarSM.css +++ /dev/null @@ -1 +0,0 @@ -@media (max-width:575px){html,body{overflow-x:hidden}.offcanvas-collapse{position:fixed;top:56px;bottom:0;width:100%;padding-right:1rem;padding-left:1rem;overflow-y:auto;background-color:var(--gray-dark);transition:-webkit-transform .3s ease-in-out;transition:transform .3s ease-in-out;transition:transform .3s ease-in-out,-webkit-transform .3s ease-in-out;-webkit-transform:translateX(100%);transform:translateX(100%)}.offcanvas-collapse.open{-webkit-transform:translateX(-1rem);transform:translateX(-1rem)}.offcanvas-collapse .navbar-nav .nav-link{color:rgba(255,255,255,.75)}.offcanvas-collapse .navbar-nav .nav-link:hover,.offcanvas-collapse .navbar-nav .nav-link:focus{color:#fff}.dropdown-item.active,.dropdown-item:active{color:#fff}.dropdown-item.active:hover,.dropdown-item:active:hover{color:rgba(0,0,0,.75)}.offcanvas-collapse .navbar-nav .active .nav-link{color:rgba(255,255,255,.75);color:#fff}.navbar > .offcanvas-container{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;width:100%}} \ No newline at end of file diff --git a/Resources/Public/Styles/offcanvasNavbarXL.css b/Resources/Public/Styles/offcanvasNavbarXL.css deleted file mode 100644 index 4f45f1ae..00000000 --- a/Resources/Public/Styles/offcanvasNavbarXL.css +++ /dev/null @@ -1 +0,0 @@ -@media (max-width:1199px){html,body{overflow-x:hidden}.offcanvas-collapse{position:fixed;top:56px;bottom:0;width:100%;padding-right:1rem;padding-left:1rem;overflow-y:auto;background-color:var(--gray-dark);transition:-webkit-transform .3s ease-in-out;transition:transform .3s ease-in-out;transition:transform .3s ease-in-out,-webkit-transform .3s ease-in-out;-webkit-transform:translateX(100%);transform:translateX(100%)}.offcanvas-collapse.open{-webkit-transform:translateX(-1rem);transform:translateX(-1rem)}.offcanvas-collapse .navbar-nav .nav-link{color:rgba(255,255,255,.75)}.offcanvas-collapse .navbar-nav .nav-link:hover,.offcanvas-collapse .navbar-nav .nav-link:focus{color:#fff}.dropdown-item.active,.dropdown-item:active{color:#fff}.dropdown-item.active:hover,.dropdown-item:active:hover{color:rgba(0,0,0,.75)}.offcanvas-collapse .navbar-nav .active .nav-link{color:rgba(255,255,255,.75);color:#fff}.navbar > .offcanvas-container{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;width:100%}} \ No newline at end of file diff --git a/Resources/Public/Styles/slideNavbar.css b/Resources/Public/Styles/slideNavbar.css index 967b1084..a4676978 100644 --- a/Resources/Public/Styles/slideNavbar.css +++ b/Resources/Public/Styles/slideNavbar.css @@ -1,2 +1,4 @@ -/* load in ConfigProcessor.php */ +/*! + * slideNavbar.css + */ body{overflow-x:hidden}.menu{width:360px;height:100%;background:#333;background-color:rgba(0,0,0,0.8);position:fixed;top:0;right:-360px;-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden;-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0);-webkit-transform:translateX(0) translateZ(0);transform:translateX(0) translateZ(0);-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);-webkit-transition:all .3s cubic-bezier(0.32,1.25,0.375,1.15);transition:all .3s cubic-bezier(0.32,1.25,0.375,1.15);z-index:10}.menu.show-nav{-webkit-transform:translateX(-360px);-ms-transform:translateX(-360px);transform:translateX(-360px);-webkit-transform:translateX(-360px) tranlateZ(0);-ms-transform:translateX(-360px) tranlateZ(0);transform:translateX(-360px) tranlateZ(0);-webkit-transform:translate3d(-360px,0,0);transform:translate3d(-360px,0,0)}.menu ul{margin:0;padding:0}.menu ul li{position:relative;list-style:none;width:90%;margin:0 auto;padding:20px 10px;text-align:center;border-top:1px solid #333;box-shadow:0 -1px 1px -1px #746559}.menu ul li:first-child{margin-top:20px;border:0;box-shadow:none}.menu ul li a,.menu ul li span{position:relative;font-weight:360;padding:8px 10px;color:rgba(255,255,255,0.7);color:#fff;text-decoration:none;text-transform:uppercase;-webkit-transition:all .25s ease-in-out;transition:all .25s ease-in-out}.menu ul li a:after,.menu ul li span:after{content:"";position:absolute;bottom:0;left:0;width:100%;height:1px;background-color:#f38b00;visibility:hidden;-webkit-transform:scaleX(0);-ms-transform:scaleX(0);transform:scaleX(0);-webkit-transition:all .3s cubic-bezier(0.32,1.25,0.375,1.15);transition:all .3s cubic-bezier(0.32,1.25,0.375,1.15)}.no-touch .menu ul li a:hover:after,.no-touch .menu ul li span:hover:after{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);visibility:visible}.menu p{color:rgba(255,255,255,0.7);position:absolute;top:86%;left:20px;font-size:.875em;text-align:center}.menu p a{color:rgba(243,139,0,0.6);text-decoration:none;-webkit-transition:all .3s ease;transition:all .3s ease}.menu p a:hover{color:#f38b00;text-decoration:underline}.nav-toggle{position:fixed;top:30px;right:30px;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0);-webkit-transform:translateX(0) translateZ(0);transform:translateX(0) translateZ(0);-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);-webkit-transition:all .4s cubic-bezier(0.32,1.25,0.375,1.15);transition:all .4s cubic-bezier(0.32,1.25,0.375,1.15);z-index:11}.nav-toggle span{color:#4c4c4c;color:rgba(0,0,0,0.7);padding:5px;font-size:1.875em}.no-touch .nav-toggle span:hover{color:#000}.nav-toggle span.fa-times{color:#fff}.nav-toggle span.fa-times:hover{color:#fff}.nav-toggle.show-nav{top:12px;right:12px} \ No newline at end of file diff --git a/Resources/Public/Styles/stickyFooter.css b/Resources/Public/Styles/stickyFooter.css deleted file mode 100644 index 85f8e00a..00000000 --- a/Resources/Public/Styles/stickyFooter.css +++ /dev/null @@ -1 +0,0 @@ -html{position:relative;min-height:100%}#page-footer{position:absolute;bottom:0;width:100%} \ No newline at end of file diff --git a/Resources/Public/Styles/t3sbootstrap.css b/Resources/Public/Styles/t3sbootstrap.css index 0f01f461..b2f0c003 100644 --- a/Resources/Public/Styles/t3sbootstrap.css +++ b/Resources/Public/Styles/t3sbootstrap.css @@ -1,3 +1,6 @@ +/*! + * t3sbootstrap.css + */ html{font-size:14px}a{outline:0}.subheader{margin:0}.alert{display:grid}.code{padding:.2rem .4rem;font-size:90%;color:#bd4147;background-color:rgba(86,61,124,.15);border-radius:.25rem;font-family:Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}mark{background-color:#ff0;color:#000}.back-to-top{position:fixed;bottom:2em;right:1.5em;text-decoration:none;color:#eee;background-color:transparent;opacity:.7;padding:1em;z-index:999}.back-to-top:hover{background-color:transparent;color:#999}.navbar-light .navbar-nav .nav-link.js-scroll-trigger.active{color:var(--light)}.dropdown-submenu{position:relative}.dropdown-submenu a::after{transform:rotate(-90deg);position:absolute;right:6px;top:.8em}.dropdown-submenu .dropdown-menu{top:0;left:100%;top:-.5rem;margin-left:0;margin-right:0}.dropup .dropdown-menu{top:auto;bottom:100%!important}.dropdown-item.parent-active{color:#151515;text-decoration:none;background-color:#f6f6f6}.dropdown-item.active.parent-active{color:#fff;text-decoration:none;background-color:var(--primary)}.dropdown-divider{display:block}.dropdown-menu-right .dropdown-submenu{position:relative}.dropdown-menu-right .dropdown-submenu .dropdown-menu{top:0;right:100%;left:auto;margin-top:-6px;margin-right:-1px;-webkit-border-radius:6px 6px 6px 6px;-moz-border-radius:6px;border-radius:6px 6px 6px 6px}.dropdown-menu-right .dropdown-submenu>a:after{display:block;content:" ";float:left;width:0;height:0;border-color:transparent;border-style:solid;border-width:5px 5px 5px 0;border-right-color:#999;margin-top:5px;margin-right:10px}.dropdown-menu-right .dropdown-submenu:hover>a:after{border-left-color:#fff}.dropdown-menu-right .dropdown-submenu.pull-left{float:none}.dropdown-submenu.pull-left>.dropdown-menu{left:-100%;margin-left:10px;-webkit-border-radius:6px 6px 6px 6px;-moz-border-radius:6px;border-radius:6px 6px 6px 6px}.dropdown-menu-right{margin-left:0}.dropdown-menu-right .dropdown-submenu > a::after{display:none}.dropdown-menu-right .dropdown-toggle::before{display:inline-block;width:0;height:0;margin-left:-.8rem;vertical-align:.255em;content:" ";border-top:.3em solid;border-right:.3em solid transparent;border-left:.3em solid transparent;transform:rotate(90deg)}.dropdown-menu{margin:0}.fixed-bottom .dropdown-menu.show{display:inline-table}.fixed-bottom .dropdown-menu .dropdown-submenu .dropdown-menu{margin-top:-1rem}#main-navbar.shrink{height:auto;-webkit-transition:padding-top 0.3s,padding-bottom .3s;-moz-transition:padding-top 0.3s,padding-bottom .3s;transition:padding-top 0.3s,padding-bottom .3s}#main-navbar.navbar-shrink{padding:.5rem 1rem}#main-navbar .t3js-icon img{width:1.2rem;height:.9rem;margin-right:.5rem;margin-top:-.2rem}#sectionmenu,.submenu{min-width:130px}#sectionmenu .nav-link,.submenu .nav-link{position:relative}#sectionmenu .nav-link[data-toggle].collapsed:after,.submenu .nav-link[data-toggle].collapsed:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent;position:absolute;right:1rem;top:calc(50% - 4px);margin-left:.25rem}#sectionmenu .nav-link[data-toggle]:not(.collapsed):after,.submenu .nav-link[data-toggle]:not(.collapsed):after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent;position:absolute;right:1rem;top:calc(50% - 4px);margin-left:.25rem -moz-transform: rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);-webkit-transform:rotate(180deg);transform:rotate(180deg)}.dropdown-toggle::after{transition:.7s}.dropdown-toggle[aria-expanded="true"]::after{transform:rotate(180deg)}.ge_autoLayout_row figure,.card figure{margin:0}.card .list-group-item{color:#212529}a.card{color:inherit}a.card:hover{text-decoration:none}.card.card-effect-one img{-moz-transition:transform .5s ease-in-out!important;-webkit-transition:transform .5s ease-in-out!important;transition:transform .5s ease-in-out!important}.card.card-effect-one:hover{background-color:var(--light)}.card.card-effect-one:hover img{-webkit-transform:scale(1.2);-ms-transform:scale(1.2);transform:scale(1.2)}.card.card-effect-one::before{content:"";position:absolute;z-index:-1;left:50%;right:50%;bottom:0;background:var(--primary);height:4px;-webkit-transition-property:left,right;transition-property:left,right;-webkit-transition-duration:.3s;transition-duration:.3s;-webkit-transition-timing-function:ease-out;transition-timing-function:ease-out}.card.card-effect-one:hover::before,.card.card-effect-one:focus::before,.card.card-effect-one:active::before{left:0;right:0}.card.card-effect-one{display:inline-block;vertical-align:middle;-webkit-transform:perspective(1px) translateZ(0);transform:perspective(1px) translateZ(0);box-shadow:0 0 1px transparent;position:relative;overflow:hidden;-webkit-transform:scale(1)}.meta-nav.text-white a{color:#fff!important}div.alert p,div.alert ul{margin:0}#language{cursor:pointer}.tx-indexedsearch-redMarkup{color:red}.tx-indexedsearch-info p{margin:0}section.parallax{background-attachment:fixed;background-position:50% 0;background-repeat:no-repeat;background-size:cover;z-index:-1}section.multiple-parallax{background-attachment:fixed,fixed;background-position:left top,50% 0;background-repeat:repeat,no-repeat;background-size:auto,cover;z-index:-1}.absolute{position:absolute!important}.v-row{display:flex;flex-wrap:wrap}.jumbotron.background-image,section.background-image,div.background-image,.content-consent.background-image{background-repeat:no-repeat;background-size:cover;background-position:center center}.jumbotron.multiple-background-image,section.multiple-background-image,div.multiple-background-image{background-repeat:repeat,no-repeat;background-size:auto,cover;background-position:left top,center center}.jumbotron.background-fixed,section.background-fixed,div.background-fixed,div.background-fixed{background-attachment:fixed!important}.col{border:0 solid transparent}.frame-ruler-before:before{content:'';display:block;border-top:1px solid rgba(0,0,0,0.25);margin-bottom:2em}.frame-ruler-after:after{content:'';display:block;border-bottom:1px solid rgba(0,0,0,0.25);margin-top:2em}.frame-indent{margin-left:15%;margin-right:15%}.frame-indent-left{margin-left:33%}.frame-indent-right{margin-right:33%}.preloader{z-index:999;position:absolute;left:calc(50% - 1.5rem);top:50%}.nav-meta,.nav-scroller{position:relative;z-index:2;height:2.75rem;overflow-y:hidden}.nav-scroller .meta-text a,.nav-meta .meta-text a{margin-right:1rem}.nav-scroller .meta-text a:last-child,.nav-meta .meta-text a:last-child{margin-right:0}.nav-scroller .nav{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:nowrap;flex-wrap:nowrap;padding-bottom:1rem;margin-top:-1px;overflow-x:auto;color:rgba(255,255,255,.75);text-align:center;white-space:nowrap;-webkit-overflow-scrolling:touch}.nav-underline .nav-link{padding-top:.75rem;padding-bottom:.75rem;font-size:.875rem;color:var(--gray-dark)}.nav-underline .nav-link:hover{color:var(--danger)}.nav-underline .active{font-weight:500;color:var(--gray-dark)}.nav-underline .nav-link.meta-text{color:var(--gray-dark)}.nav-underline .nav-link.meta-text a:hover{color:var(--danger)}.navbar-expand-no{overflow-y:scroll!important;max-height:100%!important}.sticky.is-sticky{position:fixed;left:0;right:0;top:0;z-index:1000;width:100%}.carousel-indicators{display:flex!important}.carousel-item{transition:-webkit-transform .5s ease;transition:transform .5s ease;transition:transform .5s ease,-webkit-transform .5s ease;-webkit-backface-visibility:visible;backface-visibility:visible;overflow:hidden!important}.carousel figure{margin:0!important}.carousel-caption.caption-animated.animated{position:absolute;top:0;display:flex;justify-content:center;width:auto;color:#fff;text-align:center;-webkit-animation-duration:1.5s;animation-duration:1.5s;-webkit-animation-fill-mode:both;animation-fill-mode:both}.gallery .row{margin-right:-.5rem;margin-left:-.5rem}.gallery .col-sm{padding-right:.5rem;padding-left:.5rem}.image-gallery .ig-col{padding-right:.5rem;padding-left:.5rem;margin-bottom:1rem}.image-gallery .row{margin-right:-7.5px;margin-left:-7.5px}picture img.lazy{opacity:0}picture img.lazy:not(.initial){transition:opacity 2s}picture img.lazy.initial,picture img.lazy.loaded,picture img.lazy.error{opacity:1}picture img.lazy:not([src]):not([srcset]){visibility:hidden}.inline-YTPlayer{z-index:1011}.content-consent{min-height:200px}.ce-link{text-decoration:none!important;color:inherit!important}.ce-link-content{text-decoration:none!important;box-shadow:0 1px 3px rgba(0,0,0,0.12),0 1px 2px rgba(0,0,0,0.24);transition:all .3s cubic-bezier(.25,.8,.25,1);padding:1.5rem}.ce-link-content:hover{box-shadow:0 14px 28px rgba(0,0,0,0.25),0 10px 10px rgba(0,0,0,0.22)}.card.ce-link-content{padding:0}.img-transform{transition:transform .3s ease!important}.img-transform:hover,.img-transform:active{-webkit-transform:scale(1.2);-ms-transform:scale(1.2);transform:scale(1.2)}figure.image{overflow:hidden;display:inline-grid}.relative{position:relative}.relative .overlay > div{position:absolute;top:2rem}#site-preloader{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#f5f5f5;z-index:99999}#site-spinner{position:absolute;left:calc(50% - 1.5rem);top:50%}.sidebar-sub-item i{text-indent:-1px}figcaption{font-size:.75rem;font-weight:400}.fa,.fas,.far,.fal,.fab{line-height:inherit}.bt_hidden{opacity:0}.bt_visible{opacity:1}.page-pagination{margin:2rem 0}.page-pagination .page-item:first-child .page-link{border-top-left-radius:0;border-bottom-left-radius:0}.page-pagination .page-item:last-child .page-link{border-top-right-radius:0;border-bottom-right-radius:0}.video-card .card-img-overlay{margin-bottom:40px}.zoom-overlay{overflow:hidden;background:transparent;opacity:0;transition:opacity 0.35s,-webkit-transform .35s;transition:opacity 0.35s,transform .35s}.image a:hover .zoom-overlay{opacity:.8}.magnifying-glass-icon{color:#fff;text-align:center;position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);-moz-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);-o-transform:translate(-50%,-50%);transform:translate(-50%,-50%);border-radius:50%;padding:20px;border:1px solid #fff;line-height:1;background:rgba(0,0,0,0.5);width:60px;height:60px}.zoom-overlay .description .magnifying-glass-icon{top:50%}.card-img-overlay .card-body{padding:0}.navbar-brand img.d-inline-block{margin-right:.25rem}.media figure.image{position:relative;margin-bottom:0}.media .magnifying-glass-icon{top:50%}.w-33{width:33%!important}.w-66{width:66%!important}.fixedPosition{position:fixed;top:50%;margin:0!important;z-index:999}.fixedPosition-right{right:0}.fixedPosition-left{left:0}.rotate-plus{-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);-webkit-transform:rotate(90deg);transform:rotate(90deg);margin:0!important}.rotate-minus{-moz-transform:rotate(-90deg);-ms-transform:rotate(-90deg);-o-transform:rotate(-90deg);-webkit-transform:rotate(-90deg);transform:rotate(-90deg);margin:0!important}.media-body p{margin-bottom:0}p .svg-inline--fa{margin-right:.4rem}@media (min-width: 576px){html{font-size:16px}.row-eq-height{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.row-eq-height .col > div,.row-eq-height [class*="col-"] > div{height:100%!important}.sm-twoColumns{min-width:26rem}.content-consent{min-height:300px}}@media (min-width: 768px){.md-twoColumns{min-width:26rem}.content-consent{min-height:300px}}@media (min-width: 992px){.lg-twoColumns{min-width:26rem}.content-consent{min-height:400px}}@media (min-width: 1200px){.xl-twoColumns{min-width:26rem}.content-consent{min-height:500px}}@media (max-width: 1199px){.navbar-expand-xl{overflow-y:scroll!important;max-height:100%!important}}@media (max-width: 991px){.navbar-expand-lg{overflow-y:scroll!important;max-height:100%!important}}@media (max-width: 767px){.navbar-expand-md{overflow-y:scroll!important;max-height:100%!important}.gallery.w-25,.gallery .w-25{width:100%!important}.gallery.w-50,.gallery .w-50{width:100%!important}.gallery.w-33,.gallery .w-33{width:100%!important}.gallery.w-66,.gallery .w-66{width:100%!important}.gallery.w-75,.gallery .w-75{width:100%!important}.beside .w-25,.align .w-25{width:100%!important}.beside .w-50,.align .w-50{width:100%!important}.beside .w-33,.align .w-33{width:100%!important}.beside .w-66,.align .w-66{width:100%!important}.beside .w-75,.align .w-75{width:100%!important}}@media (max-width: 575px){.navbar-expand-sm{overflow-y:scroll!important;max-height:100%!important}.gallery{text-align:center}.card .img-overlay{color:#FFF;text-shadow:6px 0 6px #666}.card .img-overlay .card-body{padding:0}}@media (min-width: 768px){.carousel.card-slider .carousel-inner .active,.carousel.card-slider .carousel-inner .active + .carousel-item,.carousel.card-slider .carousel-inner .active + .carousel-item + .carousel-item{display:block;margin-right:inherit}.carousel.card-slider .carousel-inner .carousel-item.active:not(.carousel-item-right):not(.carousel-item-left),.carousel.card-slider .carousel-inner .carousel-item.active:not(.carousel-item-right):not(.carousel-item-left) diff --git a/Resources/Public/Styles/t3sprint.css b/Resources/Public/Styles/t3sprint.css index 42ec1b6f..324b9e62 100644 --- a/Resources/Public/Styles/t3sprint.css +++ b/Resources/Public/Styles/t3sprint.css @@ -1,181 +1 @@ - -body { - margin: 0; - padding: 0; - background-color: #FAFAFA; - font-size: .7rem; - color:#000; - -} - -* { - box-sizing: border-box; - -moz-box-sizing: border-box; -} - -.page { - width: 21cm; - min-height: 29.7cm; - padding: 1cm; - margin: 1cm auto; - border: 1px #D3D3D3 solid; - border-radius: 5px; - background: white; - box-shadow: 0 0 5px rgba(0, 0, 0, 0.1); -} - -.carousel .carousel-item:first-child { - opacity: 1; - display: block; -} -.carousel-control-prev, -.carousel-control-next, -.carousel-indicators { - display: none; -} - - -.tab-content > .tab-pane { - display: block !important; - opacity: 1 !important; - visibility: visible !important; -} - -.nav-tabs { - display: none; -} - -.tab-content { - margin-top: 4rem; -} - -.jumbotron { - background-color: transparent !important; -} - -a,p a,h1 a,h2 a,h3 a,h4 a,h5 a { - font-weight: bold; - color:#000; -} - -.display-1, h1 { - font-size: 2.5rem; -} -.display-2, h2 { - font-size: 1.6rem; -} -.display-3, h3 { - font-size: .8rem; -} -.display-4, h4 { - font-size: 1rem; -} -.display-5, h5 { - font-size: .8rem; -} - -#footer, -figcaption h2, -figcaption h3, -figcaption h4, -figcaption h5 { - font-size: .8rem; -} - -picture img.lazy { - opacity: 1; -} - -@page { - size: A4; - - - margin: 10mm; - -} - - -@media print { - - html, body { - width: 210mm; - height: 297mm; - } - - body { - background-color: #FFF; - margin: 0; - padding: 0 !important; - - } - - .page, - .container { - -margin: 0 !important; - padding: 0 !important; - - width: 210mm; - min-height: 297mm; - - - border: none; - border-radius: none; - - box-shadow: none; - background: none; - } - - .container, - .row, .gallery .row, - .container > div { - width: 100% !important; - max-width: 190mm !important; - margin: 0 !important; - padding: 0 !important; - } - - .table-responsive { - display: inherit; - width: 190mm !important; - overflow-x: visible; - } - - figure { - float: left; - text-align: left; - margin-left: 0 !important; - padding-left: 0 !important; - width: 100% !important; - max-width: 190mm !important; - } - - - - -} - - - -/* set URL after links - -@media print { - - a[href]:after { - background-color: inherit; - color: #666; - content: " (https://domain.tld" attr(href) ")"; - font-style: italic; - } - - - a.email-link[href]:after, table a.email-link[href]:after, - a.external-link[href]:after, table a.external-link[href]:after, - a.external-link-new-window[href]:after, table a.external-link-new-window[href]:after { - content: " (" attr(href) ")"; - } - -} - -*/ - +body{margin:0;padding:0;background-color:#FAFAFA;font-size:.7rem;color:#000}*{box-sizing:border-box;-moz-box-sizing:border-box}.page{width:21cm;min-height:29.7cm;padding:1cm;margin:1cm auto;border:1px #D3D3D3 solid;border-radius:5px;background:#fff;box-shadow:0 0 5px rgba(0,0,0,0.1)}.carousel .carousel-item:first-child{opacity:1;display:block}.carousel-control-prev,.carousel-control-next,.carousel-indicators{display:none}.tab-content > .tab-pane{display:block!important;opacity:1!important;visibility:visible!important}.nav-tabs{display:none}.tab-content{margin-top:4rem}.jumbotron{background-color:transparent!important}a,p a,h1 a,h2 a,h3 a,h4 a,h5 a{font-weight:700;color:#000}.display-1,h1{font-size:2.5rem}.display-2,h2{font-size:1.6rem}.display-3,h3{font-size:.8rem}.display-4,h4{font-size:1rem}.display-5,h5{font-size:.8rem}#footer,figcaption h2,figcaption h3,figcaption h4,figcaption h5{font-size:.8rem}picture img.lazy{opacity:1}@page{size:A4;margin:10mm}@media print{html,body{width:210mm;height:297mm}body{background-color:#FFF;margin:0;padding:0!important}.page,.container{margin:0!important;padding:0!important;width:210mm;min-height:297mm;border:none;border-radius:none;box-shadow:none;background:none}.container,.row,.gallery .row,.container > div{width:100%!important;max-width:190mm!important;margin:0!important;padding:0!important}.table-responsive{display:inherit;width:190mm!important;overflow-x:visible}figure{float:left;text-align:left;margin-left:0!important;padding-left:0!important;width:100%!important;max-width:190mm!important}} \ No newline at end of file diff --git a/ext_conf_template.txt b/ext_conf_template.txt index 6f6d7504..764de0ed 100644 --- a/ext_conf_template.txt +++ b/ext_conf_template.txt @@ -59,7 +59,7 @@ customTranslationsPath = fileadmin/T3SB/Language/ # cat=advanced/enable/10; type=options[none=0, FA free=1, FA pro (You need the Pro license - Info: https://www.t3sbootstrap.de/dokumentation/snippets/extend-t3sbootstrap/font-awesome-pro)=2]; label=Font Awesome 5: include Font Awesome SCSS - if deactivated, only some required icons are loaded (clear cache). fontawesomeCss = 0 - # cat=advanced/enable/20; type=options[none=0, only if needed (did not work for sliding content)=1, on any page (e.g. if using in the footer only)=2]; label=Animate CSS: include Animate CSS und Viewportchecker (clear cache). + # cat=advanced/enable/20; type=boolean; label=Animate CSS: include Animate CSS und Viewportchecker (clear cache). animateCss = 0 # cat=advanced/enable/30; type=boolean; label=Link Hover Effect: for images - include a select field in the FAL (sys_file_reference) and some CSS - (clear cache). linkHoverEffect = 0 diff --git a/ext_emconf.php b/ext_emconf.php index 49caa077..b00100d8 100644 --- a/ext_emconf.php +++ b/ext_emconf.php @@ -20,7 +20,7 @@ 'uploadfolder' => true, 'createDirs' => '', 'clearCacheOnLoad' => true, - 'version' => '4.4.6', + 'version' => '4.4.7', 'constraints' => [ 'depends' => [ 'typo3' => '9.5.13-10.4.99', @@ -34,4 +34,3 @@ 'clearcacheonload' => true, 'author_company' => NULL, ]; - diff --git a/ext_localconf.php b/ext_localconf.php index ea370f24..04f75607 100644 --- a/ext_localconf.php +++ b/ext_localconf.php @@ -29,9 +29,9 @@ * TsConfig */ # Page - \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPageTSConfig(''); + \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPageTSConfig(''); # CKEditor - \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPageTSConfig(''); + \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPageTSConfig(''); /*************** * Default Constants @@ -78,17 +78,35 @@ /*************** * plugin content consent */ - \TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin( - 'T3SBS.T3sbootstrap', - 'Pi1', - [ - 'Consent' => 'index, ajax', - ], - // non-cacheable actions - [ - 'Consent' => 'ajax', - ] - ); + if (version_compare(TYPO3_branch, '10.0', '>=')) { + + \TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin( + 'T3sbootstrap', + 'Pi1', + [ + 'Consent' => 'index, ajax', + ], + // non-cacheable actions + [ + 'Consent' => 'ajax', + ] + ); + + } else { + + \TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin( + 'T3SBS.T3sbootstrap', + 'Pi1', + [ + 'Consent' => 'index, ajax', + ], + // non-cacheable actions + [ + 'Consent' => 'ajax', + ] + ); + + } \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTypoScriptConstants('bootstrap.ext.typoscriptRendering = 1'); } @@ -108,7 +126,7 @@ # if news is loaded if ( \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::isLoaded('news') && array_key_exists('extNews', $extconf) && $extconf['extNews'] === '1' ) { # TsConfig - \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPageTSConfig(''); + \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPageTSConfig(''); \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTypoScript('t3sbootstrap', 'setup','','defaultContentRendering' ); @@ -256,10 +274,10 @@ // Optional "expanded content" if (array_key_exists('expandedContent', $extconf) && $extconf['expandedContent'] === '1') { # expanded content on top and bottom - \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPageTSConfig(''); + \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPageTSConfig(''); \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTypoScriptConstants('bootstrap.extconf.expandedContent = 1'); } else { - \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPageTSConfig(''); + \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPageTSConfig(''); } // Optional "config override" if (array_key_exists('configOverride', $extconf) && $extconf['configOverride'] === '1') { diff --git a/ext_tables.php b/ext_tables.php index 1ad16c31..4dadefb4 100644 --- a/ext_tables.php +++ b/ext_tables.php @@ -5,20 +5,42 @@ if (TYPO3_MODE === 'BE') { - \TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerModule( - 'T3SBS.T3sbootstrap', - 'web', // Make module a submodule of 'web' - 'm1', // Submodule key - '', // Position - [ - 'Config' => 'list, new, create, edit, update, delete, ', - ], - [ - 'access' => 'user,group', - 'icon' => 'EXT:t3sbootstrap/Resources/Public/Images/bootstrap-solid.svg', - 'labels' => 'LLL:EXT:t3sbootstrap/Resources/Private/Language/locallang_m1.xlf', - ] - ); + if (version_compare(TYPO3_branch, '10.0', '>=')) { + + \TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerModule( + 'T3sbootstrap', + 'web', // Make module a submodule of 'web' + 'm1', // Submodule key + '', // Position + [ + \T3SBS\T3sbootstrap\Controller\ConfigController::class => 'list, new, create, edit, update, delete, ', + ], + [ + 'access' => 'user,group', + 'icon' => 'EXT:t3sbootstrap/Resources/Public/Images/bootstrap-solid.svg', + 'labels' => 'LLL:EXT:t3sbootstrap/Resources/Private/Language/locallang_m1.xlf', + ] + ); + + } else { + + \TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerModule( + 'T3SBS.T3sbootstrap', + 'web', // Make module a submodule of 'web' + 'm1', // Submodule key + '', // Position + [ + 'Config' => 'list, new, create, edit, update, delete, ', + ], + [ + 'access' => 'user,group', + 'icon' => 'EXT:t3sbootstrap/Resources/Public/Images/bootstrap-solid.svg', + 'labels' => 'LLL:EXT:t3sbootstrap/Resources/Private/Language/locallang_m1.xlf', + ] + ); + + } + } \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addLLrefForTCAdescr('tx_t3sbootstrap_domain_model_config', 'EXT:t3sbootstrap/Resources/Private/Language/locallang_csh_tx_t3sbootstrap_domain_model_config.xlf');