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>
Warning
We are currently not accepting new customers or additional container requests for the 2022-23 garden waste service. Our garden waste rounds are currently at full capacity and we are unable to increase the number of collection rounds due to the national HGV driver shortage. We are operating a waiting list for residents who wish to subscribe to the service or request an additional container. Sign up to the waiting list.