An error occurred while processing the template.
The following has evaluated to null or missing: ==> request.getCookies() [in template "35001#35028#2420792" at line 11, column 19] ---- Tip: If the failing expression is known to 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: #local cookies = request.getCookies() [in template "35001#35028#2420792" in function "isAlertHidden" at line 11, column 1] ----
1<#compress>
2<#assign
3utilname = "com.liferay.portal.kernel.servlet.taglib.ui.BreadcrumbUtil"
4type_any = staticUtil[utilname].ENTRY_TYPE_ANY
5breadcrumbEntries = staticUtil[utilname].getBreadcrumbEntries(request, [type_any])
6>
7
8<#if serviceLocator?? && entries?has_content>
9
10<#function isAlertHidden alertId>
11<#local cookies = request.getCookies()>
12 <#list cookies as cookie>
13 <#if cookie.getValue()?matches(alertId)>
14 <#return true>
15 </#if>
16 </#list>
17 <#return false>
18</#function>
19
20<#function normalAlert entry>
21 <#if (alertType?contains('value 1') || alertType?contains('value 2'))><#return true></#if>
22 <#return false>
23</#function>
24
25<script>
26function hideAlert(alertId) {
27 var now = new Date();
28 var time = now.getTime();
29 var expireTime = time + 1000*36000;
30 now.setTime(expireTime);
31 document.cookie = 'alertHidden=' + alertId + ';expires='+now.toUTCString()+';path=/';
32}
33</script>
34
35<style>
36
37.portlet:first-of-type{
38margin-bottom:0px!important;
39}
40
41.alert-body {
42 max-width: 1228px;
43 width: 100%;
44 padding: 0 1rem 0 1rem;
45 margin-top: 0.8rem;
46}
47
48.alert-body-wide {
49 background-color:#fc0;
50 width: 100vw;
51 position: relative;
52 left: calc(-51vw + 50.5%);
53 margin-top: -1.1rem;
54}
55
56
57.lexicon-icon-exclamation-full {
58 height: 1.3em;
59 width: 1.3em;
60}
61
62.alert {
63 margin-bottom: -1.5rem;
64}
65
66.alert h2 {
67 margin-top: 0rem;
68 margin-bottom: 0rem;
69 color:#FFFFFF;
70 font-size: 1.25rem;
71
72}
73
74.alert-primary {
75 background-color: #FFFFFF;
76 border-color: rgb(0 0 0 / 0%);
77 }
78
79.alert-top {
80 width: 100%;
81}
82
83.red-background {
84 background-color:#D4351C;
85}
86
87.bg-black {
88 background-color:#000000;
89}
90
91 .alert-primary .close {
92 color: #000000;
93 font-size: 2rem;
94 float:right;
95 position: inherit;
96 margin-top: 0.5rem;
97}
98 .alert-text-primary {
99 color: #000000!important;
100 border: 6px #000000 solid!important;
101 }
102
103 .alert-text-red {
104 color: #000000!important;
105 border: 6px #D4351C solid!important;
106 }
107
108 .alert-text-yellow {
109 color: #000000!important;
110 border: 6px #D4351C solid!important;
111 }
112
113 </style>
114
115
116 <#assign journalArticleRetrievalService = serviceLocator.findService("com.placecube.journal.service.JournalArticleRetrievalService") />
117
118 <#assign journalArticleService = serviceLocator.findService("com.liferay.journal.service.JournalArticleService") />
119
120 <#assign getterUtil = staticUtil["com.liferay.portal.kernel.util.GetterUtil"] />
121
122
123 <#assign AssetCategoryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService")>
124
125 <#assign AssetCategoryService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryService")>
126
127
128 <#list entries as curEntry>
129
130 <#assign journalArticle = journalArticleService.getLatestArticle(curEntry.getClassPK()) />
131
132 <#assign alertBody = journalArticleRetrievalService.getFieldValue(journalArticle,"alertBody",locale) />
133
134 <#assign body = alertBody.get() />
135
136 <#assign alertId = curEntry.entryId?c>
137
138 <#assign alertDismiss = journalArticleRetrievalService.getFieldValue(journalArticle,"select_dismiss",locale) />
139
140 <#assign alertType = journalArticleRetrievalService.getFieldValue(journalArticle,"select_type",locale) />
141
142 <#if alertType?contains('value 3')>
143 <div class="alert alert-primary <#if alertDismiss?contains('value 1')>alert-dismissible</#if> p-0" role="alert">
144 <div class="alert-body-wide d-flex justify-content-center">
145 <div class="alert-body">
146 <div class="alert-top alert-warning px-3">
147 <#if alertDismiss?contains('value 1')>
148 <button type="button" id ="alertClose" onclick="hideAlert(${alertId})" class="close text-dark mt-2" data-dismiss="alert" aria-label="Close">
149 <span aria-hidden="true">×</span>
150 </button>
151 </#if>
152 <h2 class="text-dark">
153 <svg class="lexicon-icon lexicon-icon-exclamation-full" viewBox="0 0 512 512">
154 <path class="lexicon-icon-outline" d="M256,0C114.6,0,0,114.6,0,256s114.6,256,256,256s256-114.6,256-256S397.4,0,256,0z M256,384c-17.7,0-32-14.3-32-32
155 s14.3-32,32-32s32,14.3,32,32S273.7,384,256,384z M272,288h-32l-16-160h64L272,288z"></path>
156 </svg> Important
157 </h2>
158 </div>
159 <div class="alert-text alert-warning px-3">
160 <h3 class="mt-2">${curEntry.getTitle(locale)}</h3>
161 <p>${body}</p>
162 </div>
163 </div>
164 </div>
165 </#if>
166
167 <#list curEntry.categories as category>
168
169 <#assign cat = category.getName()?lower_case />
170 <#assign cat2 = cat?replace("and ", "")/>
171 <#assign cat3 = cat2?replace(",", "")/>
172 <#list breadcrumbEntries as breadcrumb>
173
174 <#assign breadcrumbLevel = breadcrumb.getTitle()?lower_case/>
175 <#assign breadcrumbLevelLower = breadcrumbLevel?replace(",", "")/>
176 <#assign breadcrumbLevelLower2 = breadcrumbLevelLower?replace("and ", "")/>
177 <#assign breadcrumbLevelLower3 = breadcrumbLevelLower2?replace(" information", "")/>
178
179 <#--<p>Breadcrumb level: : ${breadcrumbLevelLower3}</p>-->
180
181 <#if !isAlertHidden(alertId)>
182
183 <#--<p>Alert category : ${cat3}</p>-->
184
185 <#if breadcrumbLevelLower3?matches(cat3) || !cat3?has_content>
186
187
188 <#if normalAlert??>
189 <div class="alert alert-primary d-flex justify-content-center <#if alertDismiss?contains('value 1')>alert-dismissible</#if> p-0 mb-2" role="alert">
190 <div class="alert-body">
191 <div class="alert-top
192 <#if alertType?contains('value 1')>red-background</#if>
193 <#if alertType?contains('value 2')>bg-black</#if> px-3">
194 <#if alertDismiss?contains('value 1')>
195 <button type="button" id ="alertClose" onclick="hideAlert(${alertId})" class="close text-light" data-dismiss="alert" aria-label="Close">
196 <span aria-hidden="true">×</span>
197 </button>
198 </#if>
199 <h2>
200 <svg class="lexicon-icon lexicon-icon-exclamation-full" viewBox="0 0 512 512">
201 <path class="lexicon-icon-outline" d="M256,0C114.6,0,0,114.6,0,256s114.6,256,256,256s256-114.6,256-256S397.4,0,256,0z M256,384c-17.7,0-32-14.3-32-32
202 s14.3-32,32-32s32,14.3,32,32S273.7,384,256,384z M272,288h-32l-16-160h64L272,288z"></path>
203 </svg>
204 <#if alertType?contains('value 1')>Warning</#if>
205 <#if alertType?contains('value 2')>Important</#if>
206 </h2>
207 </div>
208 <div class="
209 <#if alertType?contains('value 1')>alert-text-red</#if>
210 <#if alertType?contains('value 2')>alert-text-primary</#if> px-3">
211 <h3 class="mt-2">${curEntry.getTitle(locale)}</h3>
212 <p>${body}</p>
213 </div>
214 </div>
215 </div>
216 </#if>
217 </#if>
218 </#if>
219 </#list>
220 </#list>
221 </#list>
222 </#if>
223</#compress>