Sales Offices 

Please contact us at our International Sales Office in Munich or get in touch with one of our international sales offices. We offer a network of sales offices in the major international advertising markets with our longtime partners Axel Springer Media SE and Publieurope Ltd. 

Fehler bei der Verarbeitung der Vorlage.
Java method "com.liferay.journal.util.impl.JournalContentImpl.getContent(long, String, String, String, com.liferay.portal.kernel.theme.ThemeDisplay)" threw an exception when invoked on com.liferay.journal.util.impl.JournalContentImpl object "com.liferay.journal.util.impl.JournalContentImpl@549ed348"; see cause exception in the Java stack trace.

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #assign content = journalContentUtil...  [in template "20155#20195#AKKORDEON" at line 43, column 29]
----
1<div id="${randomNamespace}AkkordeonContent" class="som-akkordeon-content"> 
2    <h2 class="som-akkordeon-content-title">${.vars['Headline'].getData()}</h2> 
3 
4    <#assign realTabSize = 0> 
5 
6    <#if .vars['Tab'].getSiblings()?has_content> 
7        <#assign indexTab = 0> 
8        <#assign liElements = ""> 
9        <#assign tabElements = ""> 
10 
11        <#list .vars['Tab'].getSiblings() as curTab> 
12            <#if curTab.data != ''> 
13                <#assign realTabSize = realTabSize + 1> 
14            </#if> 
15        </#list> 
16 
17        <#list .vars['Tab'].getSiblings() as curTab> 
18            <#if curTab.data != ''> 
19                <#assign indexTab = indexTab + 1> 
20                <#assign liElements = liElements + "<li><a href='#tab_${indexTab}'>${curTab.data}</a></li>"> 
21 
22                <#assign accordeonElements = ""> 
23                <#assign count = curTab.Akkordeon_Element_Name.getSiblings()?size> 
24                <#assign indexAccordeon = 0> 
25                <#if curTab.Akkordeon_Element_Name?has_content> 
26                    <#list curTab.Akkordeon_Element_Name.getSiblings() as curAkkordeon> 
27                        <#assign indexAccordeon = indexAccordeon + 1> 
28                        <#assign lastClass = ""> 
29                        <#if indexAccordeon == count> 
30                            <#assign lastClass = "last"> 
31                        </#if> 
32 
33                        <#if curAkkordeon.Akkordeon_Bild.data != ''> 
34                            <#assign accordeonElements = accordeonElements + "<h3 class='${lastClass} image-absolute'><div class='accordion-title-text'>${curAkkordeon.data}</div><img alt='Akkordeon Bild' class='accordion-image' src='${curAkkordeon.Akkordeon_Bild.data}'></h3> <div>"> 
35                            <#assign accordeonElements = accordeonElements + "<img alt='Akkordeon Bild' class='accordion-image' src='${curAkkordeon.Akkordeon_Bild.data}'>"> 
36                        <#else> 
37                            <#assign accordeonElements = accordeonElements + "<h3 class='${lastClass}'><div class='accordion-title-text'>${curAkkordeon.data}</div></h3> <div>"> 
38                        </#if> 
39 
40                        <#if curAkkordeon['jsselectorWebcontent_Auswahl'].data != ''> 
41                            <#assign serviceContext = staticUtil["com.liferay.portal.kernel.service.ServiceContextThreadLocal"].getServiceContext()> 
42                            <#assign themeDisplay = serviceContext.getThemeDisplay() > 
43                            <#assign content = journalContentUtil.getContent(request['theme-display']['scope-group-id']?eval, "${curAkkordeon['jsselectorWebcontent_Auswahl'].data}", "${viewMode}", "${request['theme-display']['language-id']}", themeDisplay)> 
44                            <#assign accordeonElements = accordeonElements + "<div class='content'>${content}</div>"> 
45                        </#if> 
46 
47                        <#assign accordeonElements = accordeonElements + "</div>"> 
48                    </#list> 
49                </#if> 
50 
51                <#assign tabElements = tabElements + " 
52                    <div id='tab_${indexTab}'> 
53                        <div class='som-akkordeon-content-tabs_${randomNamespace}_accordion' id='accordion_${randomNamespace}_${indexTab}'> 
54                            ${accordeonElements} 
55                        </div> 
56                    </div>" 
57
58            </#if> 
59        </#list> 
60 
61        <div class="som-akkordeon-content-tabs_${randomNamespace}"> 
62            <div class="sizeWrapper"> 
63                <ul id="${randomNamespace}_tab-navigation"> 
64                    ${liElements} 
65                </ul> 
66                <div class="tab-navigation"> 
67                    <div class="left-tab-navigation"></div> 
68                    <div class="right-tab-navigation"></div> 
69                </div> 
70            </div> 
71            ${tabElements} 
72        </div> 
73    </#if> 
74</div> 
75 
76<script type="text/javascript"> 
77    /* Init template wide variables. */ 
78    var ${randomNamespace}curTab = 0; 
79    var ${randomNamespace}effectiveResponseCount; 
80    var ${randomNamespace}marginToScroll; 
81 
82    /* Override akkordion icons. */ 
83    var ${randomNamespace}icons = { 
84        header: "som-toggle-open-small som-icon-font-sized", 
85        activeHeader: "som-toggle-close-small som-icon-font-sized" 
86    }; 
87 
88    function ${randomNamespace}accordionBeforeActivate( event, ui ) { 
89        /* Accordion is collapsing. */ 
90        if (ui.oldHeader.length > 0 && ui.oldHeader.hasClass('image-absolute')) { 
91            ui.oldPanel.css('min-height', ui.oldHeader.outerHeight() + 'px'); 
92
93
94 
95    $(document).ready(function() { 
96 
97        /* Handles changes in the media query to show and hide the dynamic tab navigation. */ 
98        var ${randomNamespace}handleMqlChange = function(mediaQuery) { 
99            /* Desktop defaults. */ 
100            if (mediaQuery.matches) { 
101                ${randomNamespace}effectiveResponseCount = 2.5; 
102                ${randomNamespace}marginToScroll = 40; /* Will be used as a percentage value later on. Defined as an integer to allow calculations. */ 
103            } else { 
104                ${randomNamespace}effectiveResponseCount = 4; 
105                ${randomNamespace}marginToScroll = 25; 
106
107 
108            /* Reset scroll position for tab-nav. */ 
109            ${randomNamespace}curTab = 0; 
110            var tabNav = $('.som-akkordeon-content-tabs_${randomNamespace} #${randomNamespace}_tab-navigation'); 
111            tabNav.css('margin-left', 0); 
112            tabNav.css('margin-right', 0); 
113            ${randomNamespace}toggleNavigation(); 
114 
115            if (${realTabSize} <= ${randomNamespace}effectiveResponseCount) { 
116                ${randomNamespace}effectiveResponseCount = ${realTabSize}; 
117                $('.som-akkordeon-content-tabs_${randomNamespace} .tab-navigation').hide(); 
118            } else { 
119                $('.som-akkordeon-content-tabs_${randomNamespace} .tab-navigation').show(); 
120
121        }; 
122 
123        /* Handles the initialization of the akkordion content. Registers the media query, tabs, akkordion etc. */ 
124        function ${randomNamespace}initAkkordionContent() { 
125            var mql = window.matchMedia("(max-width: 767px)"); 
126            mql.addListener(${randomNamespace}handleMqlChange); 
127            ${randomNamespace}handleMqlChange(mql); 
128 
129            $(".som-akkordeon-content-tabs_${randomNamespace}").tabs(); 
130            $.each($(".som-akkordeon-content-tabs_${randomNamespace}_accordion"), function (index, node) { 
131                $(node).accordion({ 
132                    collapsible: true, 
133                    heightStyle: "content", 
134                    icons: ${randomNamespace}icons, 
135                    beforeActivate: function( event, ui ) { 
136                        ${randomNamespace}accordionBeforeActivate( event, ui ); 
137
138                }); 
139            }); 
140 
141            $('.som-akkordeon-content-tabs_${randomNamespace} .left-tab-navigation').click(function () { 
142                var element = $('.som-akkordeon-content-tabs_${randomNamespace}  #${randomNamespace}_tab-navigation'); 
143                ${randomNamespace}curTab--; 
144                var totalMargin = ${randomNamespace}curTab * ${randomNamespace}marginToScroll; 
145                var partialMargin = ${realTabSize} - ${randomNamespace}curTab - ${randomNamespace}effectiveResponseCount; 
146                if (partialMargin < 0) { 
147                    totalMargin = totalMargin + partialMargin * ${randomNamespace}marginToScroll; 
148
149                element.css('margin-left', totalMargin * -1 + '%'); 
150                element.css('margin-right', totalMargin + '%'); 
151                ${randomNamespace}toggleNavigation(); 
152            }); 
153            $('.som-akkordeon-content-tabs_${randomNamespace} .right-tab-navigation').click(function () { 
154                var element = $('.som-akkordeon-content-tabs_${randomNamespace}  #${randomNamespace}_tab-navigation'); 
155                ${randomNamespace}curTab++; 
156                var totalMargin = ${randomNamespace}curTab * ${randomNamespace}marginToScroll; 
157                var partialMargin = ${realTabSize} - ${randomNamespace}curTab - ${randomNamespace}effectiveResponseCount; 
158                if (partialMargin < 0) { 
159                    totalMargin = totalMargin + partialMargin * ${randomNamespace}marginToScroll; 
160
161                element.css('margin-left', totalMargin * -1 + '%'); 
162                element.css('margin-right', totalMargin + '%'); 
163                ${randomNamespace}toggleNavigation(); 
164            }); 
165            ${randomNamespace}toggleNavigation(); 
166
167 
168        /* Fire up the init on page ready. */ 
169        ${randomNamespace}initAkkordionContent(); 
170    }); 
171 
172    function ${randomNamespace}toggleNavigation() { 
173         if (${randomNamespace}curTab == 0) { 
174            $(".som-akkordeon-content-tabs_${randomNamespace} .left-tab-navigation").hide(); 
175         } else { 
176            $(".som-akkordeon-content-tabs_${randomNamespace} .left-tab-navigation").show(); 
177
178         if ((${randomNamespace}curTab + Math.floor(${randomNamespace}effectiveResponseCount)) < ${realTabSize}) { 
179             $(".som-akkordeon-content-tabs_${randomNamespace} .right-tab-navigation").show(); 
180         } else { 
181             $(".som-akkordeon-content-tabs_${randomNamespace} .right-tab-navigation").hide(); 
182
183
184</script>