THD® ProctoStation: HRA Module - THDLAB - CO UK

An error occurred while processing the template.
The following has evaluated to null or missing:
==> parts[2]  [in template "20099#20135#37407" at line 163, column 22]

----
Tip: It's the final [] step that caused this error, not those before it.
----
Tip: If the failing expression is known to be legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #assign groupId = parts[2]?number  [in template "20099#20135#37407" in function "getDlFileEntry" at line 163, column 5]
	- Reached through: #assign file = getDlFileEntry(node.ge...  [in template "20099#20135#37407" at line 99, column 29]
----
1<#assign dLFileLocalService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFileEntryLocalService") /> 
2<#assign textFormatter = staticUtil["com.liferay.portal.kernel.util.TextFormatter"]> 
3<#assign layoutService = serviceLocator.findService("com.liferay.portal.kernel.service.LayoutLocalService") />  
4 
5<article class="method container"> 
6    <div class="row"> 
7        <div class="col-lg-7"> 
8            <#if Image.getData() !='' || VideoYoutube.getData() !=''>  
9                <article class="owl-carousel owl-theme mb-5" id="owl-carousel-product" aria-label="slider" aria-hidden="true"> 
10                    <#if Image.getData() !=''> 
11                        <#list Image.getSiblings() as node> 
12                            <div class="slide" role="contentinfo"> 
13                                <img <#if node.getAttribute("alt")??>alt="${node.getAttribute("alt")}"</#if> data-fileentryid="${node.getAttribute("fileEntryId")}" src="${node.getData()}" /> 
14                            </div> 
15                        </#list> 
16                    </#if> 
17                    <#if VideoYoutube.getData() !=''> 
18                        <#list VideoYoutube.getSiblings() as sub> 
19                            <div class="slide"> 
20                                <div class="embed-responsive embed-responsive-16by9"> 
21                                <iframe class="embed-responsive-item" width="100%" src="https://www.youtube-nocookie.com/embed/${sub.getData()}" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe> 
22                                </div> 
23                            <div> 
24                        </#list> 
25                    </#if> 
26                </article> 
27            </#if> 
28            <#if Title.getData() !=''> 
29                <h2 class="primary font-weight-normal">${Title.getData()}</h2> 
30            </#if> 
31            <#assign summary = .vars['reserved-article-description'].data />  
32            <#if summary?has_content> 
33                <div class="summary mb-5">${summary}</div> 
34            </#if> 
35            <#if Ancora.getData() !=''>  
36                <#assign counter = 0> 
37                <#assign counter2 = 0> 
38                <ul class="mb-5 anchor"> 
39                    <#list Ancora.getSiblings() as node>  
40                        <#assign counter = counter+1> 
41                        <li class="cursor" id="button${counter}">${node.getData()}</li>  
42                    </#list>  
43                </ul> 
44                <#list Ancora.getSiblings() as node> 
45                    <#assign counter2 = counter2+1> 
46                    <div id="text${counter2}"> 
47                        ${node.Text.getData()} 
48                        <div class="up-anchor text-right secondary mt-3 mb-3 cursor"> 
49                            <span class="bg-gray p-1 pl-2 pr-2"><i class="fas fa-angle-up"></i> <#if themeDisplay.getLanguageId() == "it_IT"> 
50	Torna su 
51<#elseif themeDisplay.getLanguageId() == "es_ES"> 
52	Volver arriba 
53<#elseif themeDisplay.getLanguageId() == "de_DE"> 
54	Zum Seitenanfang 
55<#elseif themeDisplay.getLanguageId() == "fr_FR"> 
56	Retournez en haut de la page		 
57<#else> 
58	Up 
59</#if></span> 
60                        </div> 
61                    </div>  
62                </#list> 
63            <#else> 
64                ${Ancora.Text.getData()} 
65            </#if> 
66        </div> 
67        <div class="col-lg-5 col-xl-4 offset-xl-1 mt-6 mt-md-0"> 
68            <#if File.getData() !=''>  
69                <div class="related"> 
70                    <h5 class="font-weight-light yellow mb-2"> 
71                        <#if themeDisplay.getLanguageId() == "it_IT"> 
72                        	Documentazione 
73                        <#elseif themeDisplay.getLanguageId() == "es_ES"> 
74                        	Documentación 
75                        <#elseif themeDisplay.getLanguageId() == "de_DE"> 
76                        	Dokumentation 
77                        <#elseif themeDisplay.getLanguageId() == "fr_FR"> 
78                        	Documents 
79                        <#else> 
80                        	Related documents 
81                        </#if> 
82                    </h5> 
83                    <h3 class="font-weight-normal mb-0"> 
84                        <#if themeDisplay.getLanguageId() == "it_IT"> 
85                        	Materiale download 
86                        <#elseif themeDisplay.getLanguageId() == "es_ES"> 
87                        	Material descargable 
88                        <#elseif themeDisplay.getLanguageId() == "de_DE"> 
89                        	Material zum Herunterladen 
90                        <#elseif themeDisplay.getLanguageId() == "fr_FR"> 
91                        	Documents à télécharger	 
92                        <#else> 
93                        	Download 
94                        </#if> 
95                    </h3> 
96                    <hr /> 
97                    <ul class="file"> 
98                        <#list File.getSiblings() as node>  
99                            <#assign file = getDlFileEntry(node.getData()) /> 
100                            <li> 
101                                <a href="${node.getData()}" target="_blank">  
102                                    <#if node.FileName.getData() !=''> 
103                                        ${node.FileName.getData()}  
104                                    <#else> 
105                                        <@liferay.language key="download" /> 
106                                    </#if> 
107                                    <span class="font-weight-light">(${textFormatter.formatStorageSize(file.size, locale)})</span> 
108                                </a>  
109                            </li> 
110                        </#list>  
111                    </ul> 
112                </div> 
113            </#if> 
114 
115            <#if PageLink.getData() !=''>  
116                <div class="related"> 
117                    <h5 class="font-weight-light yellow mb-2"> 
118                        <#if themeDisplay.getLanguageId() == "it_IT"> 
119                        	Argomenti correlati 
120                        <#elseif themeDisplay.getLanguageId() == "es_ES"> 
121                        	Temas relacionados 
122                        <#elseif themeDisplay.getLanguageId() == "de_DE"> 
123                        	Im Zusammenhang 
124                        <#elseif themeDisplay.getLanguageId() == "fr_FR"> 
125                        	Thématiques associées	 
126                        <#else> 
127                        	Related topics 
128                        </#if> 
129                    </h5> 
130                    <h3 class="font-weight-normal mb-0"> 
131                        <#if themeDisplay.getLanguageId() == "it_IT"> 
132                        	Informazioni ed Approfondimenti 
133                        <#elseif themeDisplay.getLanguageId() == "es_ES"> 
134                        	Información y análisis en profundidad 
135                        <#elseif themeDisplay.getLanguageId() == "de_DE"> 
136                        	Informationen und Details 
137                        <#elseif themeDisplay.getLanguageId() == "fr_FR"> 
138                        	Renseignements et approfondissements 
139                        <#else> 
140                        	Information and insights 
141                        </#if> 
142                    </h3> 
143                    <hr /> 
144                    <ul> 
145                        <#list PageLink.getSiblings() as node>  
146                            <#assign layout = layoutService.getLayout(themeDisplay.getScopeGroupId(),false,node.getData()?number) />  
147                            <#assign pageTitle = layout.getName(locale) /> 
148                            <li> 
149                                <a href="${layout.getFriendlyURL(locale)}" data-senna-off="true">  
150                                    <svg aria-hidden='true' class='lexicon-icon lexicon-icon-angle-right'><use xlink:href='${themeDisplay.getPathThemeImages()}/lexicon/icons.svg#angle-right'></use></svg> 
151                                    ${pageTitle} 
152                                </a>  
153                            </li> 
154                        </#list>  
155                    </ul> 
156                </div> 
157            </#if> 
158        </div> 
159    </div> 
160</article> 
161<#function getDlFileEntry url> 
162    <#assign parts=url?string?split("/") /> 
163    <#assign groupId=parts[2]?number /> 
164    <#assign uuid=parts[5]?string?split("?")[0] /> 
165    <#assign dlFileEntry=dLFileLocalService.fetchDLFileEntryByUuidAndGroupId(uuid, groupId)! /> 
166    <#return dlFileEntry /> 
167</#function> 
168 
169<script> 
170    $(document).ready(function() { 
171        var owl = $('#owl-carousel-product'); 
172        owl.owlCarousel({ 
173            items:1, 
174            loop:true, 
175            nav:false, 
176            dots:true, 
177            autoplay:true, 
178            <#if ScrollSlideInMillisecondDefault5000.getData() !=''> 
179                autoplayTimeout:${ScrollSlideInMillisecondDefault5000.getData()} 
180            <#else> 
181                autoplayTimeout:5000 
182            </#if> 
183        }); 
184    }) 
185</script> 
186 
187<#if Ancora.getData() !=''>  
188    <#assign counter = 0> 
189    <#assign counter2 = 0> 
190    <#list Ancora.getSiblings() as node>  
191        <#assign counter = counter+1> 
192        <#assign counter2 = counter2+1> 
193        <script> 
194            $(document).ready(function (){ 
195                $("#button${counter}").click(function (){ 
196                    $('html, body').animate({ 
197                        scrollTop: $("#text${counter}").offset().top-200 
198                    }, 1000); 
199                }); 
200                $(".up-anchor").click(function (){ 
201                    $('html, body').animate({ 
202                        scrollTop: $("ul.anchor").offset().top-300 
203                    }, 1000); 
204                }); 
205            }); 
206        </script> 
207    </#list> 
208</#if> 
Need help?

Contact THD

Mon - Fri
8.30 am - 5.30 pm

Find out more for
Healthcare Professionals