diff --git a/Configuration/TCA/Overrides/100_sys_template.php b/Configuration/TCA/Overrides/100_sys_template.php new file mode 100644 index 0000000..fddee57 --- /dev/null +++ b/Configuration/TCA/Overrides/100_sys_template.php @@ -0,0 +1,20 @@ + + +############ +### PAGE ### +############ +[tree.level === 0] +page.theme.navigation.style = default-transition +[end] + +page.theme.navigation.type = top +page.theme.meta.enable = 0 +page.logo.file = EXT:bootstrap_package/Resources/Public/Images/introduction-package.svg +page.logo.fileInverted = EXT:bootstrap_package/Resources/Public/Images/introduction-package-inverted.svg +page.theme.socialmedia.channels.facebook.url = https://www.facebook.com/typo3/ +page.theme.socialmedia.channels.twitter.url = https://twitter.com/typo3 +page.theme.socialmedia.channels.github.url = https://github.com/TYPO3/typo3 +page.theme.socialmedia.channels.youtube.url = https://www.youtube.com/user/typo3 +page.theme.cookieconsent.position = bottom-right +page.preloader.backgroundColor = #03A9F4 +page.preloader.logo.file = EXT:bootstrap_package/Resources/Public/Images/introduction-package-inverted.svg + +plugin.bootstrap_package.settings.scss.primary = #0288D1 +plugin.bootstrap_package.settings.scss.secondary = #FFEB3B +plugin.bootstrap_package.settings.scss.breadcrumb-bg = #FFEB3B +plugin.bootstrap_package.settings.scss.cookieconsent-bg = #F2F2F2 +plugin.bootstrap_package.settings.scss.footer-sections = (content:(background: #0288D1, color: #ffffff, link-color: #FFEB3B), meta:(background: #ffffff, color: $body-color, link-color: #0288D1)) diff --git a/Configuration/TypoScript/setup.typoscript b/Configuration/TypoScript/setup.typoscript new file mode 100644 index 0000000..21f556b --- /dev/null +++ b/Configuration/TypoScript/setup.typoscript @@ -0,0 +1,489 @@ +###################### +#### DEPENDENCIES #### +###################### + + + +################ +#### HELPER #### +################ + + + + +############################################################# +#### EXTENSIONS #### +#### Manual inclusion to keep control over loading order #### +############################################################# + + + + + + + +################### +#### FRAMEWORK #### +################### + + + +#################################### +#### BOOTSTRAP PACKAGE SETTINGS #### +#################################### +plugin.tx_bootstrappackage { + settings { + overrideParserVariables = {$plugin.bootstrap_package.settings.overrideParserVariables} + cssSourceMapping = {$plugin.bootstrap_package.settings.cssSourceMapping} + } +} + + +############## +#### PAGE #### +############## +page = PAGE +page { + typeNum = 0 + shortcutIcon = {$page.favicon.file} + + bodyTagCObject = COA + bodyTagCObject { + 10 = TEXT + 10.data = TSFE:id + 10.noTrimWrap = | id="p|"| + 20 =< lib.page.class + 20.stdWrap.noTrimWrap = | class="|"| + wrap = + } + + headerData { + // Flip ahead browsing for IE10/11 + // http://msdn.microsoft.com/en-us/library/ie/jj883726(v=vs.85).aspx + 10 = HMENU + 10 { + special = browse + special { + items = prev|next + } + 1 = TMENU + 1.NO { + allWrap = |*| + doNotLinkIt = 1 + stdWrap { + typolink { + parameter.data = field:uid + returnLast = url + } + } + } + } + } + + 10 = FLUIDTEMPLATE + 10 { + # Template names will be generated automatically by converting the applied + # backend_layout, there is no explicit mapping necessary anymore. + # + # BackendLayout Key + # subnavigation_right_2_columns -> SubnavigationRight2Columns.html + # + # Backend Record + # uid: 1 -> 1.html + # + # Database Entry + # value: -1 -> None.html + # value: pagets__subnavigation_right_2_columns -> SubnavigationRight2Columns.html + templateName = TEXT + templateName { + cObject = TEXT + cObject { + data = pagelayout + required = 1 + case = uppercamelcase + split { + token = pagets__ + cObjNum = 1 + 1.current = 1 + } + } + ifEmpty = Default + } + + templateRootPaths { + 0 = EXT:bootstrap_package/Resources/Private/Templates/Page/ + 1 = {$page.fluidtemplate.templateRootPath} + } + partialRootPaths { + 0 = EXT:bootstrap_package/Resources/Private/Partials/Page/ + 1 = {$page.fluidtemplate.partialRootPath} + } + layoutRootPaths { + 0 = EXT:bootstrap_package/Resources/Private/Layouts/Page/ + 1 = {$page.fluidtemplate.layoutRootPath} + } + + ########################## + ### DATA PREPROCESSING ### + ########################## + dataProcessing { + 1 = BK2K\BootstrapPackage\DataProcessing\ConstantsProcessor + 1 { + as = theme + key = page.theme + } + 10 = TYPO3\CMS\Frontend\DataProcessing\MenuProcessor + 10 { + levels = 2 + includeSpacer = 1 + as = mainnavigation + dataProcessing { + 10 = TYPO3\CMS\Frontend\DataProcessing\FilesProcessor + 10 { + references.fieldName = nav_icon + as = icon + if { + isTrue.stdWrap.cObject = COA + isTrue.stdWrap.cObject { + 10 = TEXT + 10.value = 1 + 10.if.isTrue = {$page.theme.navigation.icon.enable} + 20 = TEXT + 20.value = 1 + 20.if.isTrue = {$page.theme.navigation.dropdown.icon.enable} + } + } + } + } + } + 20 = TYPO3\CMS\Frontend\DataProcessing\MenuProcessor + 20 { + entryLevel = 1 + levels = 2 + expandAll = 0 + includeSpacer = 1 + as = subnavigation + dataProcessing { + 10 = TYPO3\CMS\Frontend\DataProcessing\FilesProcessor + 10 { + references.fieldName = nav_icon + as = icon + if { + isTrue = {$page.theme.subnavigation.icon.enable} + } + } + } + } + 30 = TYPO3\CMS\Frontend\DataProcessing\MenuProcessor + 30 { + special = rootline + special.range = 0|-1 + includeNotInMenu = 1 + as = breadcrumb + if { + value = {$page.theme.breadcrumb.enableLevel} + value { + insertData = 1 + prioriCalc = 1 + stdWrap.wrap = |-1 + } + isGreaterThan { + data = level + } + } + dataProcessing { + 10 = TYPO3\CMS\Frontend\DataProcessing\FilesProcessor + 10 { + references.fieldName = nav_icon + as = icon + } + } + } + 40 = TYPO3\CMS\Frontend\DataProcessing\LanguageMenuProcessor + 40 { + languages = {$page.theme.language.languageValue} + as = languagenavigation + } + 50 = TYPO3\CMS\Frontend\DataProcessing\MenuProcessor + 50 { + special = {$page.theme.meta.navigationType} + special.value = {$page.theme.meta.navigationValue} + includeNotInMenu = {$page.theme.meta.includeNotInMenu} + as = metanavigation + if { + isTrue = {$page.theme.meta.navigationValue} + } + } + 1553883874 = BK2K\BootstrapPackage\DataProcessing\StaticFilesProcessor + 1553883874 { + files { + normal = {$page.logo.file} + inverted = {$page.logo.fileInverted} + } + as = logo + } + } + + ################ + ### SETTINGS ### + ################ + settings { + logo { + height = {$page.logo.height} + width = {$page.logo.width} + linktitle = {$page.logo.linktitle} + } + } + + ################# + ### VARIABLES ### + ################# + variables { + pageTitle = TEXT + pageTitle.data = page:title + siteTitle = TEXT + siteTitle.data = TSFE:tmpl|setup|sitetitle + rootPage = TEXT + rootPage.data = leveluid:0 + pagelayout = TEXT + pagelayout { + data = pagelayout + replacement.10 { + search = pagets__ + replace = + } + ifEmpty = default + } + logoAlt = COA + logoAlt { + 10 = TEXT + 10 { + data = TSFE:tmpl|setup|sitetitle + noTrimWrap = || logo| + if.isFalse = {$page.logo.alt} + } + 20 = TEXT + 20 { + value = {$page.logo.alt} + if.isTrue = {$page.logo.alt} + } + } + # BreadcrumbExtendedValue should be used to display the title of a + # single record. For example the title of a news record. + breadcrumbExtendedValue = COA + breadcrumbExtendedValue { + } + } + + stdWrap.replacement { + 1 { + search = http://###BACKEND_URL###/ + replace.typolink { + parameter = typo3/ + returnLast = url + } + } + 2 { + search = ###FRONTEND_URL### + replace.typolink { + parameter.data = leveluid:0 + returnLast = url + } + } + 3 { + search = ###CURRENTYEAR### + replace { + data = date:U + strftime = %Y + } + } + 4 { + search = ###SPACE### + replace { + char = 32 + } + } + } + } + + meta { + viewport = {$page.meta.viewport} + robots = {$page.meta.robots} + apple-mobile-web-app-capable = {$page.meta.apple-mobile-web-app-capable} + + X-UA-Compatible = {$page.meta.compatible} + X-UA-Compatible { + attribute = http-equiv + } + + # Google + google = {$page.meta.google} + google-site-verification = {$page.meta.google-site-verification} + } + + includeCSSLibs { + googlewebfont = https://fonts.googleapis.com/css?family={$page.theme.googleFont.font}:{$page.theme.googleFont.weight} + googlewebfont { + external = 1 + disableCompression = 1 + excludeFromConcatenation = 1 + fontLoader { + families { + 0 = {$page.theme.googleFont.font}:{$page.theme.googleFont.weight} + } + enabled = 1 + } + if { + isTrue = {$page.theme.googleFont.enable} + } + } + bootstrappackageicon = EXT:bootstrap_package/Resources/Public/Fonts/bootstrappackageicon.min.css + bootstrappackageicon { + fontLoader { + families { + 0 = BootstrapPackageIcon + } + enabled = 1 + } + } + } + + includeJSLibs { + modernizr = EXT:bootstrap_package/Resources/Public/Contrib/modernizr/modernizr.min.js + modernizr.forceOnTop = 1 + modernizr.async = 1 + } + + includeJSFooterlibs { + #### Contrib + jquery = EXT:bootstrap_package/Resources/Public/Contrib/jquery/jquery.min.js + jquery.forceOnTop = 1 + hammerjs = EXT:bootstrap_package/Resources/Public/Contrib/hammerjs/hammer.min.js + photoswipe_core = EXT:bootstrap_package/Resources/Public/Contrib/photoswipe/photoswipe.min.js + photoswipe_ui = EXT:bootstrap_package/Resources/Public/Contrib/photoswipe/photoswipe-ui-default.min.js + + #### Custom Modules + bootstrap_accordion = EXT:bootstrap_package/Resources/Public/JavaScript/Dist/bootstrap.accordion.min.js + bootstrap_form = EXT:bootstrap_package/Resources/Public/JavaScript/Dist/bootstrap.form.min.js + bootstrap_swipe = EXT:bootstrap_package/Resources/Public/JavaScript/Dist/bootstrap.swipe.min.js + bootstrap_popover = EXT:bootstrap_package/Resources/Public/JavaScript/Dist/bootstrap.popover.min.js + bootstrap_stickyheader = EXT:bootstrap_package/Resources/Public/JavaScript/Dist/bootstrap.stickyheader.min.js + bootstrap_smoothscroll = EXT:bootstrap_package/Resources/Public/JavaScript/Dist/bootstrap.smoothscroll.min.js + bootstrap_lightbox = EXT:bootstrap_package/Resources/Public/JavaScript/Dist/bootstrap.lightbox.min.js + bootstrap_navbar = EXT:bootstrap_package/Resources/Public/JavaScript/Dist/bootstrap.navbar.min.js + } +} + + +########################## +#### GOOGLE ANALYTICS #### +########################## +page { + 10.stdWrap.replacement { + 99 { + search = ###GoogleAnalyticsStatus### + replace { + cObject < lib.block + cObject.templateName = GoogleAnalyticsStatus + } + } + } + jsInline { + 99 = COA + 99 { + if { + isTrue = {$page.tracking.google.trackingID} + } + 10 = TEXT + 10.value ( + var gaProperty = '{$page.tracking.google.trackingID}'; + var disableStr = 'ga-disable-' + gaProperty; + if (document.cookie.indexOf(disableStr + '=true') > -1) { + window[disableStr] = true; + } + function googleAnalyticsToggle(event) { + if (document.cookie.indexOf(disableStr + '=true') > -1) { + event.target.innerHTML = event.target.getAttribute('data-label-disable'); + googleAnalyticsOptIn(); + } else { + event.target.innerHTML = event.target.getAttribute('data-label-enable'); + googleAnalyticsOptOut(); + } + } + function googleAnalyticsOptOut() { + document.cookie = disableStr + '=true; expires=Thu, 31 Dec 2099 23:59:59 UTC; path=/'; + window[disableStr] = true; + } + function googleAnalyticsOptIn() { + document.cookie = disableStr + '=; expires=Thu, 01 Jan 1970 00:00:01 UTC; path=/'; + window[disableStr] = false; + } + document.addEventListener('DOMContentLoaded', function() { + var matches = document.querySelectorAll('[data-action="googleAnalyticsToggle"]'); + for (i=0; i -1) { + matches[i].innerHTML = matches[i].getAttribute('data-label-enable'); + } else { + matches[i].innerHTML = matches[i].getAttribute('data-label-disable'); + } + matches[i].onclick = function(event) { + event.preventDefault(); + event.stopPropagation(); + googleAnalyticsToggle(event); + } + } + }); + (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ + (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), + m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) + })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); + ga('create', '{$page.tracking.google.trackingID}', 'auto'); + ga('set', 'anonymizeIp', true); + ) + 90 = TEXT + 90.value ( + + ga('send', 'pageview'); + ) + } + } +} + + +#################### +#### COMPONENTS #### +#################### + + + +################ +#### CONFIG #### +################ +config { + absRefPrefix = auto + no_cache = {$config.no_cache} + pageTitleFirst = 1 + pageTitleSeparator = - + pageTitleSeparator.noTrimWrap = | | | + linkVars = L(int) + prefixLocalAnchors = {$config.prefixLocalAnchors} + doctype = html5 + removeDefaultJS = {$config.removeDefaultJS} + admPanel = {$config.admPanel} + debug = 0 + sendCacheHeaders = {$config.sendCacheHeaders} + index_enable = 1 + index_externals = 1 + index_metatags = 1 + headerComment = {$config.headerComment} + + // Language Settings + sys_language_overlay = 1 + sys_language_mode = content_fallback + + // Compression and Concatenation of CSS and JS Files + compressJs = {$config.compressJs} + compressCss = {$config.compressCss} + concatenateJs = {$config.concatenateJs} + concatenateCss = {$config.concatenateCss} +} diff --git a/Initialisation/Files/images/introduction-package-inverted.svg b/Initialisation/Files/images/introduction-package-inverted.svg deleted file mode 100644 index 0baee56..0000000 --- a/Initialisation/Files/images/introduction-package-inverted.svg +++ /dev/null @@ -1,61 +0,0 @@ - - - - -Zeichenfläche 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Initialisation/Files/images/introduction-package.svg b/Initialisation/Files/images/introduction-package.svg deleted file mode 100644 index 89149c9..0000000 --- a/Initialisation/Files/images/introduction-package.svg +++ /dev/null @@ -1,63 +0,0 @@ - - - - -Zeichenfläche 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Resources/Public/Images/introduction-package-inverted.svg b/Resources/Public/Images/introduction-package-inverted.svg new file mode 100644 index 0000000..da7d63b --- /dev/null +++ b/Resources/Public/Images/introduction-package-inverted.svg @@ -0,0 +1,39 @@ + + + + +Zeichenfläche 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Resources/Public/Images/introduction-package.svg b/Resources/Public/Images/introduction-package.svg new file mode 100644 index 0000000..a21937d --- /dev/null +++ b/Resources/Public/Images/introduction-package.svg @@ -0,0 +1,41 @@ + + + + +Zeichenfläche 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/composer.json b/composer.json index 6304ae6..1fedf3d 100644 --- a/composer.json +++ b/composer.json @@ -15,7 +15,9 @@ "typo3/cms-felogin": "^10.0", "typo3/cms-form": "^10.0", "typo3/cms-impexp": "^10.0", - "typo3/cms-indexed-search": "^10.0" + "typo3/cms-indexed-search": "^10.0", + "typo3/cms-lowlevel": "^10.0", + "typo3/cms-tstemplate": "^10.0" }, "require-dev": { "typo3-console/composer-auto-commands": "*",