Guidelines for Exemption from Parts of a Study Programme on the Basis of Prior Learning and Work Experience

An error occurred while processing the template.
Java method "no.oslomet.liferay.service.customjournalservice.impl.JournalServiceImpl.getAccordions(com.liferay.portal.kernel.theme.ThemeDisplay, String, String, String, String, boolean)" threw an exception when invoked on no.oslomet.liferay.service.customjournalservice.impl.JournalServiceImpl object "no.oslomet.liferay.service.customjournalservice.impl.JournalServiceImpl@1c38be63"; see cause exception in the Java stack trace.

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #list journalService.getAccordions(th...  [in template "10155#10195#590749" at line 154, column 17]
----
1<#assign breadCrumbService=serviceLocator.findService("no.oslomet.liferay.service.breadcrumbservice.api.BreadcrumbService")/> 
2<#assign journalService=serviceLocator.findService("no.oslomet.liferay.service.customjournalservice.api.JournalService")/> 
3<#assign urlService=serviceLocator.findService("no.oslomet.liferay.service.urlservice.api.UrlService")/> 
4 
5<#if themeDisplay??> 
6    <#assign breadcrumbs = breadCrumbService.getBreadCrumbs(themeDisplay.getPlid(), locale, false)> 
7</#if> 
8 
9<#assign displaydate = .vars['reserved-article-create-date'].data> 
10<#assign modifydate = .vars['reserved-article-modified-date'].data> 
11<#assign orgloc = locale> 
12<#assign originalLocale = .locale> 
13<#setting locale = localeUtil.getDefault()> 
14<#assign displaydate = displaydate?datetime("EEE, d MMM yyyy HH:mm:ss Z")> 
15<#assign modifydate = modifydate?datetime("EEE, d MMM yyyy HH:mm:ss Z")> 
16<#assign locale = originalLocale> 
17 
18<#assign showNoEnglish = false /> 
19<#if (orgloc == "en_US" && journalService.shouldShowLanguageMessage(themeDisplay,.vars['reserved-article-id'].getData()))> 
20    <#assign showNoEnglish = true /> 
21</#if> 
22 
23<#assign showNoNorwegian = false /> 
24<#if (orgloc == "nb_NO" && nonorwegian?? && getterUtil.getBoolean(nonorwegian.getData()))> 
25    <#assign showNoNorwegian = true /> 
26</#if> 
27 
28<#macro l key> 
29    ${languageUtil.get(orgloc, key)} 
30</#macro> 
31 
32<#-- Main content --> 
33<div class="main row-fluid"> 
34    <#-- Article --> 
35    <article class="article article-static" aria-label="<@l "template.aria.main.article"/>"> 
36        <#if (showNoEnglish || showNoNorwegian)> 
37            <div class="article-header"> 
38                <h1 title="${.vars['reserved-article-title'].data}" class="article-title"> 
39 
40                    <#if (retur?? && retur?length >0)> 
41                        <span class="header-back-to"> <a class="icon-circle-arrow-left previous-level" href="${urlService.decodeURL(retur)}" title="<@l "template.back.to.overview"/>"> <span class="helper-hidden-accessible"><@l "template.back.to.overview"/></span> </a> </span> 
42                    </#if> 
43 
44                    ${.vars['reserved-article-title'].data} 
45                </h1> 
46 
47                <#if showNoEnglish> 
48                    <div class="alert alert-info"><@l "template.static.article.info.no.english"/></div> 
49                <#else> 
50                    <div class="alert alert-info"><@l "template.static.article.info.no.norwegian"/></div> 
51                </#if> 
52            </div> 
53        <#else> 
54            <div class="article-header"> 
55                <#-- Title --> 
56                <h1 title="${.vars['reserved-article-title'].data}" class="article-title"> 
57 
58                    <#if (retur?? && retur?length >0)> 
59                        <span class="header-back-to"> <a class="icon-circle-arrow-left previous-level" href="${urlService.decodeURL(retur)}" title="<@l "template.back.to.overview"/>"> <span class="helper-hidden-accessible"><@l "template.back.to.overview"/></span> </a> </span> 
60                    </#if> 
61 
62                    ${.vars['reserved-article-title'].data} 
63                </h1> 
64                <#-- Lead --> 
65                <div class="article-lead lead clearfix"> 
66                    <strong> 
67                        ${ingress.getData()} 
68                    </strong> 
69                </div> 
70                <#-- Article meta --> 
71                <div class="article-body clearfix"> 
72                    <div class="article-meta clearfix"> 
73                        <div class="published"><@l "template.statisk.artikkel.published"/> <time datetime="${displaydate?string["yyyy-MM-dd"]}">${displaydate?string["dd.MM.yyyy"]}</time></div> 
74                        <div class="modified"><@l "template.statisk.artikkel.last.update"/> <time datetime="${modifydate?string["yyyy-MM-dd"]}">${modifydate?string["dd.MM.yyyy"]}</time></div> 
75                    </div> 
76                </div> 
77            </div> 
78        <#-- Body pt1 --> 
79        <#if (body1.getData()) == "" > 
80        <#elseif (body1.getData()) == "" > 
81        <#else> 
82            <div class="article-body clearfix"> 
83                ${body1.getData()} 
84            </div> 
85        </#if> 
86        <#-- Shortcuts --> 
87        <#if actionbuttonalttext?? && actionbuttonalttext.getSiblings()?has_content> 
88        <#if (actionbuttonalttext.getSiblings()[0].getData()?length > 0)> 
89            <ul class="article-btn-group clearfix"> 
90                <#list actionbuttonalttext.getSiblings() as cur_actionbuttonalttext> 
91                    <li class="article-btn"> 
92                        <div class="article-bordered"> 
93                            <div class="title"> 
94                                <#if cur_actionbuttonalttext.getChild("title")??> 
95                                    ${cur_actionbuttonalttext.getChild("title").getData()} 
96                                </#if> 
97                            </div> 
98                            <div class="text"> 
99                                ${cur_actionbuttonalttext.getData()} 
100                            </div> 
101                        </div> 
102                    </li> 
103                </#list> 
104            </ul> 
105        </#if> 
106        </#if> 
107        <#-- Button --> 
108        <#if calltoactiontext?has_content> 
109        <#if (calltoactiontext.getData()?length > 0)> 
110            <#if body2.getData()?has_content> 
111                <#assign bodyextra = ""/> 
112            <#else> 
113                <#assign bodyextra = "nobody"/> 
114            </#if> 
115            <div class="hidden-print"> 
116                <div class="btn-wrapper cta-btn-wrapper-bord"> 
117                    <a href="${calltoactiontext.getChild('calltoactionlink').getData()}" class="btn article-btn2-top article-btn2 btn-large btn-primary offset3 clearfix ${bodyextra}" title="${calltoactiontext.getData()}" role="button"> 
118                        ${calltoactiontext.getData()} 
119                    </a> 
120                </div> 
121            </div> 
122        </#if> 
123        </#if> 
124        <#-- Body pt2 --> 
125        <#if body2.getData()?has_content> 
126            <div class="article-body clearfix"> 
127                <#if body3.getData()?has_content> 
128                    <div class="row"> 
129                        <div class="col-md-6"> 
130                            ${body2.getData()} 
131                        </div> 
132                        <div class="col-md-6"> 
133                            ${body3.getData()} 
134                        </div> 
135                    </div> 
136                <#else> 
137                    ${body2.getData()} 
138                </#if> 
139            </div> 
140        </#if> 
141 
142            <#if themeDisplay.locale == "nb_NO" && paragraph??> 
143                <#assign name = paragraph/> 
144                <#assign body = "body"/> 
145            </#if> 
146            <#if themeDisplay.locale == "en_US" && enparagraph??> 
147                <#assign name = enparagraph/> 
148                <#assign body = "enbody"/> 
149            </#if> 
150        <#if (name?? && name.getSiblings()?has_content)> 
151            <#assign has_content = false/> 
152        <#assign accordions> 
153            <ul type="A" id="statisk-artikkel-toggle"> 
154                <#list journalService.getAccordions(themeDisplay,.vars['reserved-article-id'].getData(), .vars['reserved-article-version'].getData(), name["name"], body, true) as cur_item> 
155                    <#if (cur_item["name"]?? && cur_item["name"]?length > 0 && cur_item["body"]?? && cur_item["body"]?length > 0)> 
156                        <#assign has_content = true/> 
157                        <li class="statisk-artikkel-accordion"> 
158                            <h2 data-hasher="statisk_avsnitt_${cur_item["id"]}" tabindex="0" class="sa-t-header toggler-header"> 
159                                ${cur_item["name"]} 
160                                <div class="hash-hack" id="statisk_avsnitt_${cur_item["id"]}"></div> 
161                            </h2> 
162                            <div class="clearfix"></div> 
163                            <div class="sa-t-content toggler-content"> 
164                                ${cur_item["body"]} 
165                            </div> 
166                        </li> 
167                    </#if> 
168                </#list> 
169            </ul> 
170            <script> 
171                AUI().ready("aui-toggler", function (A) { 
172                    new A.TogglerDelegate({ 
173                        animated: false, 
174                        closeAllOnExpand: false, 
175                        container: "#statisk-artikkel-toggle", 
176                        content: ".sa-t-content", 
177                        expanded: false, 
178                        header: ".sa-t-header", 
179                        transition: { 
180                            duration: 0.2, 
181                            easing: "cubic-bezier(0, 0.1, 0, 1)" 
182                        }, 
183                        after: { 
184                            init: function (e) { 
185                                if (!Liferay.trekkspilllhopper) { 
186                                    Liferay.trekkspillhopper = { 
187                                        hopp: function (id) { 
188                                            Liferay.trekkspillhopper.targets[id].expand(); 
189                                            A.one('#'+Liferay.trekkspillhopper.targets[id].get('header').getAttribute('data-hasher')).scrollIntoView(); 
190                                        }, 
191                                        targets: {} 
192
193
194                                e.target.collapseAll(); 
195                                if (e.target.items.length > 0) { 
196                                    e.target.items.forEach(function (item) { 
197                                        Liferay.trekkspillhopper.targets[item.get('header').getAttribute('data-hasher')] = item; 
198                                        if (window.location.hash.substr(1)) { 
199                                            if (item.get('header').getAttribute('data-hasher') === window.location.hash.substr(1)) { 
200                                                item.expand(); 
201                                                A.one('#'+item.get('header').getAttribute('data-hasher')).scrollIntoView(); 
202
203
204                                        item.get('header').on('click', function (event) { 
205                                            if (event.altKey) { 
206                                                if (event.shiftKey) { 
207                                                    console.log('URL for intern direktelenke: javascript:Liferay.trekkspillhopper.hopp(\'' + 
208                                                        item.get('header').getAttribute('data-hasher')+'\');'); 
209                                                    prompt("Bruk denne URL-en for intern direktelenking til trekkspill:", 
210                                                        'javascript:Liferay.trekkspillhopper.hopp(\'' + 
211                                                        item.get('header').getAttribute('data-hasher')+'\');'); 
212                                                } else { 
213                                                    console.log('URL for direktelenke: ' + 
214                                                        location.protocol + '//' + location.host + location.pathname + '#' + item.get('header').getAttribute('data-hasher')); 
215                                                    prompt("Bruk denne URL-en for direktelenking til trekkspill:", 
216                                                        location.protocol + '//' + location.host + location.pathname + '#' + item.get('header').getAttribute('data-hasher')); 
217
218
219                                        }); 
220                                        item.get('header').on('', function(event) { 
221                                            if (event.keyCode === 13) { 
222                                                item.toggle(); 
223
224                                        }); 
225                                        document.addEventListener('keydown', function(event){ 
226                                            if (event.key === "f" && (event.ctrlKey || event.metaKey)) { 
227                                                item.expand(); 
228
229                                        }); 
230                                    }); 
231                                    <#-- 
232                                        <#if !.vars['nonexpand']?? || !getterUtil.getBoolean(.vars['nonexpand'].getData())> 
233                                            e.target.items[0].expand(); 
234                                        </#if> 
235                                        --> 
236
237
238
239                    }); 
240                }); 
241            </script> 
242        </#assign> 
243            <#if has_content> 
244                ${accordions} 
245            </#if> 
246        </#if> 
247        </#if> 
248    </article> 
249</div>