################
#### HELPER ####
################
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:bootstrap_package/Configuration/TypoScript/Helper/ParseFunc.txt">
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:bootstrap_package/Configuration/TypoScript/Helper/DynamicContent.txt">


#############################################################
#### CONTENT ELEMENT RENDERING                           ####
#### Manual inclusion to keep control over loading order ####
#############################################################
tt_content >
tt_content = CASE
tt_content {
    key {
        field = CType
    }
}

#### TYPO3 DEFAULT CONTENT ELEMENT RENDERING
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:bootstrap_package/Configuration/TypoScript/ContentElement/Bullets.txt">
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:bootstrap_package/Configuration/TypoScript/ContentElement/Div.txt">
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:bootstrap_package/Configuration/TypoScript/ContentElement/Header.txt">
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:bootstrap_package/Configuration/TypoScript/ContentElement/Html.txt">
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:bootstrap_package/Configuration/TypoScript/ContentElement/Image.txt">
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:bootstrap_package/Configuration/TypoScript/ContentElement/List.txt">
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:bootstrap_package/Configuration/TypoScript/ContentElement/Menu.txt">
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:bootstrap_package/Configuration/TypoScript/ContentElement/MenuCategorizedContent.txt">
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:bootstrap_package/Configuration/TypoScript/ContentElement/MenuCategorizedPages.txt">
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:bootstrap_package/Configuration/TypoScript/ContentElement/MenuOfSubpagesToThesePages.txt">
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:bootstrap_package/Configuration/TypoScript/ContentElement/MenuOfSubpagesToThesePagesAbstract.txt">
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:bootstrap_package/Configuration/TypoScript/ContentElement/MenuOfSubpagesToThesePagesAndSections.txt">
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:bootstrap_package/Configuration/TypoScript/ContentElement/MenuRecentlyUpdatedPages.txt">
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:bootstrap_package/Configuration/TypoScript/ContentElement/MenuRelatedPagesBasedOnKewords.txt">
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:bootstrap_package/Configuration/TypoScript/ContentElement/MenuSectionIndex.txt">
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:bootstrap_package/Configuration/TypoScript/ContentElement/MenuSitemap.txt">
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:bootstrap_package/Configuration/TypoScript/ContentElement/MenuSitemapOfSelectedPages.txt">
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:bootstrap_package/Configuration/TypoScript/ContentElement/Shortcut.txt">
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:bootstrap_package/Configuration/TypoScript/ContentElement/Table.txt">
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:bootstrap_package/Configuration/TypoScript/ContentElement/Text.txt">
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:bootstrap_package/Configuration/TypoScript/ContentElement/Textpic.txt">
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:bootstrap_package/Configuration/TypoScript/ContentElement/Textmedia.txt">
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:bootstrap_package/Configuration/TypoScript/ContentElement/Uploads.txt">

#### TYPO3 MAILFORM
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:form/Configuration/TypoScript/setup.txt">
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:bootstrap_package/Configuration/TypoScript/ContentElement/Mailform.txt">

#### INDEXED SEARCH
[userFunc = TYPO3\CMS\Core\Utility\ExtensionManagementUtility::isLoaded('indexed_search')]
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:bootstrap_package/Configuration/TypoScript/Extension/IndexedSearch.txt">
[global]

#### FRONTEND LOGIN
[userFunc = TYPO3\CMS\Core\Utility\ExtensionManagementUtility::isLoaded('felogin')]
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:bootstrap_package/Configuration/TypoScript/Extension/Felogin.txt">
[global]

#### BOOTSTRAP PACKAGE CONTENT ELEMENT RENDERING
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:bootstrap_package/Configuration/TypoScript/ContentElement/BootstrapPackageAccordion.txt">
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:bootstrap_package/Configuration/TypoScript/ContentElement/BootstrapPackageCarousel.txt">
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:bootstrap_package/Configuration/TypoScript/ContentElement/BootstrapPackageExternalMedia.txt">
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:bootstrap_package/Configuration/TypoScript/ContentElement/BootstrapPackageListGroup.txt">
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:bootstrap_package/Configuration/TypoScript/ContentElement/BootstrapPackageMenuThumbnail.txt">
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:bootstrap_package/Configuration/TypoScript/ContentElement/BootstrapPackagePanel.txt">
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:bootstrap_package/Configuration/TypoScript/ContentElement/BootstrapPackageTab.txt">
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:bootstrap_package/Configuration/TypoScript/ContentElement/BootstrapPackageTextIcon.txt">

#### NO RENDERING DEFINITION
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:bootstrap_package/Configuration/TypoScript/ContentElement/Default.txt">


###################################
#### BOOSTRAP PACKAGE SETTINGS ####
###################################
plugin.tx_bootstrappackage {
    settings {
        overrideLessVariables = {$plugin.bootstrap_package.settings.overrideLessVariables}
        cssSourceMapping = {$plugin.bootstrap_package.settings.cssSourceMapping}
    }
}


####################
#### PAGE CLASS ####
####################
lib.page.class = COA
lib.page.class {
    // Page alias or id as fallback
    10 = TEXT
    10 {
        field = alias // uid
        noTrimWrap = |page-||
    }
    // Current level of the page within the tree structure
    20 = TEXT
    20 {
        data = level:1
        noTrimWrap = | pagelevel-||
    }
    // Language
    30 = TEXT
    30 {
        data = TSFE:sys_language_uid
        noTrimWrap = | language-||
    }
    // Backend layout
    40 = TEXT
    40 {
        data = levelfield:-1, backend_layout_next_level, slide
        override.field = backend_layout
        ifEmpty = default
        noTrimWrap = | backendlayout-||
    }
    // Layout
    50 = TEXT
    50 {
        field = layout
        noTrimWrap = | layout-||
    }
}


##############
#### PAGE ####
##############
page = PAGE
page {
    typeNum = 0
    shortcutIcon = {$page.includePath.icons}favicon.ico

    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 = <link rel="prev" href="|"> |*| <link rel="next" href="|">
                doNotLinkIt = 1
                stdWrap {
                    typolink {
                        parameter.data = field:uid
                        useCacheHash = 1
                        returnLast = url
                    }
                }
            }
        }
    }

    5 < styles.content.editPanelPage
    5 {
        stdWrap.wrap = <div class="typo3-feedit-page">|</div>
        stdWrap.required = 1
    }

    10 = FLUIDTEMPLATE
    10 {
        templateName = TEXT
        templateName.stdWrap.cObject = CASE
        templateName.stdWrap.cObject {
            key.data = levelfield:-1, backend_layout_next_level, slide
            key.override.field = backend_layout

            pagets__default_clean = TEXT
            pagets__default_clean.value = DefaultClean

            pagets__default_2_columns = TEXT
            pagets__default_2_columns.value = Default2Columns

            pagets__default_2_columns_25_75 = TEXT
            pagets__default_2_columns_25_75.value = Default2Columns2575

            pagets__default_2_columns_50_50 = TEXT
            pagets__default_2_columns_50_50.value = Default2Columns5050

            pagets__default_2_columns_offset_right = TEXT
            pagets__default_2_columns_offset_right.value = Default2ColumnsOffsetRight

            pagets__default_3_columns = TEXT
            pagets__default_3_columns.value = Default3Columns

            pagets__default_subnavigation_right = TEXT
            pagets__default_subnavigation_right.value = DefaultSubNavRight

            pagets__default_subnavigation_right_2_columns = TEXT
            pagets__default_subnavigation_right_2_columns.value = DefaultSubNavRight2Columns

            pagets__default_subnavigation_left = TEXT
            pagets__default_subnavigation_left.value = DefaultSubNavLeft

            pagets__default_subnavigation_left_2_columns = TEXT
            pagets__default_subnavigation_left_2_columns.value = DefaultSubNavLeft2Columns

            pagets__special_start = TEXT
            pagets__special_start.value = SpecialStart

            pagets__special_feature = TEXT
            pagets__special_feature.value = SpecialFeature

            default = TEXT
            default.value = 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 {
            10 = BK2K\BootstrapPackage\DataProcessing\MenuProcessor
            10 {
                levels = 2
                as = mainnavigation
            }
            20 = BK2K\BootstrapPackage\DataProcessing\MenuProcessor
            20 {
                entryLevel = 1
                levels = 2
                expandAll = 0
                as = subnavigation
            }
            30 = BK2K\BootstrapPackage\DataProcessing\MenuProcessor
            30 {
                special = rootline
                special.range = 0|-1
                includeNotInMenu = 1
                as = breadcrumb
                if {
                    value = {$page.theme.breadcrumbEnableLevel}
                    value {
                        insertData = 1
                        prioriCalc = 1
                        stdWrap.wrap = |-1
                    }
                    isGreaterThan {
                        data = level
                    }
                }
            }
            40 = BK2K\BootstrapPackage\DataProcessing\MenuProcessor
            40 {
                special = language
                special.value = 0,1,2
                special.normalWhenNoLanguage = 0
                as = languagenavigation
            }
        }

        ################
        ### SETTINGS ###
        ################
        settings {
            logo {
                file = {$page.logo.file}
                height = {$page.logo.height}
                width = {$page.logo.width}
            }
            breadcrumb {
                enable = {$page.theme.breadcrumb}
            }
            navigation {
                style = {$page.theme.navigationstyle}
                type = {$page.theme.navigationtype}
            }
            copyright {
                enable = {$page.theme.copyright.enable}
                text = {$page.theme.copyright.text}
            }
        }

        #################
        ### VARIABLES ###
        #################
        variables {
            showFooter = TEXT
            showFooter.value = {$page.theme.footersection.enable}
            showMeta = TEXT
            showMeta.value = {$page.theme.metasection.enable}
            pageTitle = TEXT
            pageTitle.data = page:title
            siteTitle = TEXT
            siteTitle.data = TSFE:tmpl|setup|sitetitle
            rootPage = TEXT
            rootPage.data = leveluid:0
            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}
                }
            }
            pageClass < lib.page.class
        }

        stdWrap.replacement {
            1 {
                search = http://###BACKEND_URL###/
                replace.typolink {
                    parameter = typo3/
                    returnLast = url
                }
            }
            2 {
                search = ###CURRENTYEAR###
                replace {
                    data = date:U
                    strftime = %Y
                }
            }
            3 {
                search = ###SPACE###
                replace {
                    char = 32
                }
            }
        }
    }

    meta {
        # New notation available since TYPO3 7.4
        # see https://forge.typo3.org/issues/67360 for more details
        viewport = {$page.meta.viewport}
        robots = {$page.meta.robots}
        google = {$page.meta.google}
        apple-mobile-web-app-capable = {$page.meta.apple-mobile-web-app-capable}
        description = {$page.meta.description}
        description {
            override.field = description
        }
        author = {$page.meta.author}
        author {
            override.field = author
        }
        keywords = {$page.meta.keywords}
        keywords {
            override.field = keywords
        }
        X-UA-Compatible = {$page.meta.compatible}
        X-UA-Compatible {
            attribute = http-equiv
        }

        # OpenGraph Tags
        og:title {
            attribute = property
            field = title
        }
        og:site_name {
            attribute = property
            data = TSFE:tmpl|setup|sitetitle
        }
        og:description = {$page.meta.description}
        og:description {
            attribute = property
            field = description
        }
        og:image {
            attribute = property
            stdWrap.cObject = FILES
            stdWrap.cObject {
                references {
                    data = levelfield:-1, media, slide
                }
                maxItems = 1
                renderObj = COA
                renderObj {
                    10 = IMG_RESOURCE
                    10 {
                        file {
                            import.data = file:current:uid
                            treatIdAsReference = 1
                            width = 1280c
                            height = 720c
                        }
                        stdWrap {
                            typolink {
                                parameter.data = TSFE:lastImgResourceInfo|3
                                returnLast = url
                                forceAbsoluteUrl = 1
                            }
                        }
                    }
                }
            }
        }
    }

    includeCSS {
        # bootstrap will be included in the themes.less file
        # for standalone usage just uncomment the following line
        # bootstrap = EXT:bootstrap_package/Resources/Public/Less/Bootstrap/bootstrap.less
        theme = EXT:bootstrap_package/Resources/Public/Less/Theme/theme.less
    }

    includeJSLibs {
        modernizr = EXT:bootstrap_package/Resources/Public/JavaScript/Libs/modernizr-2.8.3.min.js
        modernizr.forceOnTop = 1
        modernizr.async = 1
        wpfix = EXT:bootstrap_package/Resources/Public/JavaScript/Dist/windowsphone-viewportfix.min.js
        wpfix.async = 1
    }

    includeJSFooterlibs {
        jquery = EXT:bootstrap_package/Resources/Public/JavaScript/Libs/jquery.min.js
        jquery.forceOnTop = 1
        responsiveimages = EXT:bootstrap_package/Resources/Public/JavaScript/Dist/jquery.responsiveimages.min.js
        equalheight = EXT:bootstrap_package/Resources/Public/JavaScript/Dist/jquery.equalheight.min.js
        bootstrap = EXT:bootstrap_package/Resources/Public/JavaScript/Libs/bootstrap.min.js
        photoswipe_core = EXT:bootstrap_package/Resources/Public/JavaScript/Libs/photoswipe.min.js
        photoswipe_ui = EXT:bootstrap_package/Resources/Public/JavaScript/Libs/photoswipe-ui-default.min.js

        #### Add swipe support for boostrap components
        hammerjs = EXT:bootstrap_package/Resources/Public/JavaScript/Libs/hammer.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
        #### Basic lightbox implementation for bootstrap
        bootstrap_lightbox = EXT:bootstrap_package/Resources/Public/JavaScript/Dist/bootstrap.lightbox.min.js
        #### Toggle collapsed CSS class on the navbar toggle button
        bootstrap_navbartoggle = EXT:bootstrap_package/Resources/Public/JavaScript/Dist/bootstrap.navbartoggle.min.js
    }

    jsFooterInline {
        # Google Analytics
        10 = COA
        10 {
            if {
                isTrue = {$page.tracking.google.trackingID}
            }
            10 = TEXT
            10.value (
    (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');
            )
            20 = TEXT
            20 {
                if {
                    isTrue = {$page.tracking.google.anonymizeIp}
                }

                value (

    ga('set', 'anonymizeIp', true);
                )
            }

            90 = TEXT
            90.value (

    ga('send', 'pageview');
            )
        }
    }
}


###################################################
#### EXCLUDE PAGE FROM EXTERNAL SEARCH RESULTS ####
#### IF NO SEARCH IS SET FOR THIS PAGE         ####
###################################################
[globalVar = TSFE:page|no_search = 1]
    page.meta.robots = noindex,follow
[end]


################
#### CONFIG ####
################
config {
    absRefPrefix = auto
    no_cache = {$config.no_cache}
    uniqueLinkVars = 1
    pageTitleFirst = 1
    linkVars = L
    prefixLocalAnchors = {$config.prefixLocalAnchors}
    renderCharset = utf-8
    metaCharset = utf-8
    doctype = html5
    removeDefaultJS = {$config.removeDefaultJS}
    inlineStyle2TempFile = 1
    admPanel = {$config.admPanel}
    debug = 0
    cache_period = 86400
    sendCacheHeaders = {$config.sendCacheHeaders}
    intTarget =
    extTarget =
    disablePrefixComment = 1
    index_enable = 1
    index_externals = 1
    index_metatags = 1
    headerComment = {$config.headerComment}

    // Enable RealUrl
    tx_realurl_enable = 1
    simulateStaticDocuments = 0

    // Disable Image Upscaling
    noScaleUp = 1

    // Language Settings
    sys_language_uid = 0
    sys_language_overlay = 1
    sys_language_mode = content_fallback
    language = en
    locale_all = en_US.UTF-8
    htmlTag_setParams = lang="en" dir="ltr" class="no-js"

    // Compression and Concatenation of CSS and JS Files
    compressJs = {$config.compressJs}
    compressCss = {$config.compressCss}
    concatenateJs = {$config.concatenateJs}
    concatenateCss = {$config.concatenateCss}
}


#############################
#### LANGUAGE CONDITIONS ####
#############################
[globalVar = GP:L = 1]
    config {
        sys_language_uid = 1
        language = de
        locale_all = de_DE.UTF-8
        htmlTag_setParams = lang="de" dir="ltr" class="no-js"
    }
[global]
[globalVar = GP:L = 2]
    config {
        sys_language_uid = 2
        language = da
        locale_all = da_DK.UTF-8
        htmlTag_setParams = lang="da" dir="ltr" class="no-js"
    }
[global]


########################
#### PAGETYPE POPUP ####
########################
popup < page
popup {
    typeNum = 1000
    10 {
        variables {
            showHeader.value = 0
            showFooter.value = 0
        }
    }
}
