An error occurred while processing the template.
The following has evaluated to null or missing:
==> spec [in template "20099#20135#321193" at line 226, column 69]
----
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: #if (aDateTime?date lte eventDateOfCu... [in template "20099#20135#321193" at line 226, column 9]
----
1<style>
2 /* Your existing styles here */
3 time.icon {
4 font-size: 1em; /* change icon size */
5 display: block;
6 position: relative;
7 width: 112px;
8 height: 112px;
9 background-color: #fff;
10 border-radius: 0.6em;
11 box-shadow: 0 1px 0 #bdbdbd, 0 2px 0 #fff, 0 3px 0 #bdbdbd, 0 4px 0 #fff, 0 5px 0 #bdbdbd, 0 0 0 1px #bdbdbd;
12 overflow: hidden;
13 }
14 table.dataTable thead th{
15 text-align: inherit;
16 }
17 table.dataTable thead th:last-child input{
18 display:none;
19 }
20 table.dataTable thead th:last-child:before,
21 table.dataTable thead th:last-child:after{
22 display:none !important;
23 }
24 table.dataTable thead tr:first-child{
25 display:none;
26 }
27 time.icon * {
28 display: block;
29 width: 100%;
30 font-size: 1em;
31 font-weight: bold;
32 font-style: normal;
33 text-align: center;
34 }
35 time.icon strong {
36 position: absolute;
37 top: 0;
38 padding: 0.4em 0;
39 color: #fff;
40 background-color: #f68c30;
41 border-bottom: 1px dashed #d27220;
42 box-shadow: 0 2px 0 #f68c30;
43 }
44 time.icon em {
45 position: absolute;
46 bottom: 0.3em;
47 color: #1f5e97;
48 }
49 time.icon span {
50 font-size: 2.8em;
51 letter-spacing: -0.05em;
52 padding-top: 0.8em;
53 color: #2f2f2f;
54 }
55 .upcommingActivityInfo small{
56 margin-bottom:6px;
57 display:inline-block;
58 }
59 .upcommingActivity{
60 border: 1px solid #cccccc;
61 box-sizing: border-box;
62 display: inline-block;
63 width: 100%;
64 border-radius: 10px;
65 padding: 15px;
66 }
67 .upcommingActivity .upcommingActivityInfo{
68 width:calc(100% - 128px);
69 }
70 .owl-carousel-upcomming .owl-item:after{
71 display:none;
72 }
73 .owl-carousel-upcomming .owl-item{
74 padding:1px;
75 }
76 <#if locale="ar_SA">
77 .owl-carousel-upcomming{
78 direction:ltr;
79 }
80 .upcommingActivityInfo{
81 text-align:right;
82 }
83 .upcommingActivity time{
84 float:right;
85 margin-left:16px;
86 }
87 .upcommingActivity .upcommingActivityInfo{
88 float:left;
89 }
90 .owl-carousel-upcomming .owl-dots{
91 direction:rtl;
92 }
93 .owl-stage-outer .owl-stage .owl-item{
94 text-align:left:
95 }
96 </#if>
97 <#if locale="en_US">
98 .upcommingActivity time{
99 float:left;
100 margin-right:15px;
101 }
102 .upcommingActivity .upcommingActivityInfo{
103 float:right;
104 }
105 .owl-stage-outer .owl-stage .owl-item{
106 text-align:right:
107 }
108 .upcommingActivityInfo{
109 text-align:left;
110 }
111 </#if>
112 .owl-stage-outer{
113 text-align:center;
114 }
115 .owl-stage-outer .owl-stage{
116 margin:0 auto !important;
117 }
118 @media only screen and (max-width: 768px) {
119 table th:nth-child(3),
120 table th:nth-child(4){
121 display:none;
122 }
123 .hideOnMobile{
124 display:none;
125 }
126 }
127</style>
128
129<script type="application/javascript">
130 function validateForm() {
131 var startDate = document.getElementById("fromDate").value;
132 var endDate = document.getElementById("toDate").value;
133 var title = document.getElementById("title").value;
134 var governorate = document.getElementById("governorate").value;
135
136 if(governorate==="" && startDate ==="" && endDate ==="" && title ===""){
137 alert("Please enter at least one value");
138 return false;
139 }
140
141 // Check if both fields are filled
142 if (((startDate !== "") && (endDate === "")) || ((startDate === "") && (endDate !== ""))) {
143 alert("Please enter both start date and end date.");
144 return false;
145 }
146
147 // Convert the input values to Date objects
148 var startDateObj = new Date(startDate);
149 var endDateObj = new Date(endDate);
150
151 // Check if the start date is before the end date
152 if (startDateObj >= endDateObj) {
153 alert("End date must be greater than start date.");
154 return false;
155 }
156
157 // Validation passed
158 return true;
159 }
160</script>
161
162<script type="application/javascript">
163 document.addEventListener("DOMContentLoaded", function () {
164 const myForm = document.getElementById("searchForm");
165 const cancelButton = document.getElementById("cancelButton");
166
167 // Add an event listener to the cancel button
168 cancelButton.addEventListener("click", function () {
169 // Clear all the input fields when the cancel button is clicked
170 const currentURL = window.location.href;
171 const newUrl = "/activities?spec=1";
172 myForm.reset();
173 if(currentURL.includes('fromDate')){
174 window.location.href = newUrl;
175 }else{
176 history.pushState(null, '', newUrl);
177 }
178 });
179 });
180</script>
181
182<script>
183 const dynamicSelect = document.getElementById('governorate');
184 const currentURL = window.location.href;
185 if(currentURL.includes('fromDate')){
186 const urlParams = new URLSearchParams(window.location.search);
187 const governorate = urlParams.get('governorate');
188 console.log('governorateParam: '+governorate);
189 window.onload = (event) =>{
190 document.getElementById("governorate").value = governorate;
191 };
192 }
193</script>
194
195<div class="container">
196 <span class="title title-large title-bold sds mr-5-dir mt-4">
197 <#if locale="ar_SA">
198 الأنشطة الحالية
199 </#if>
200 <#if locale="en_US">
201 Current Activities
202 </#if>
203 </span>
204 <div class="owl-carousel-upcomming owl-carousel owl-theme">
205 <#assign journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")>
206 <#list entries as curEntry>
207 <#if curEntry.getAssetRenderer()?? && curEntry.getAssetRenderer().getArticle()??>
208 <#assign article = curEntry.getAssetRenderer().getArticle() />
209 <#assign structKey = article.getDDMStructureKey()/>
210 <#assign docXml = saxReaderUtil.read(article.getContent())!"" />
211 <#assign eventDateOfCurrent = docXml.valueOf("//dynamic-element[@name='toDate']/dynamic-content/text()")!""/>
212 <#assign eventDate = docXml.valueOf("//dynamic-element[@name='date']/dynamic-content/text()")!""/>
213 <#assign speciality = docXml.valueOf("//dynamic-element[@name='speciality']/dynamic-content/text()")!""/>
214 <#if request.getParameter("spec")??>
215 <#assign spec = request.getParameter("spec") />
216 </#if>
217 <#assign eventDateOfCurrent_Data = getterUtil.getString(eventDateOfCurrent)>
218 <#assign eventDate_Data = getterUtil.getString(eventDate)>
219 <#if validator.isNotNull(eventDateOfCurrent_Data)>
220 <#assign eventDateOfCurrent_DataObj = dateUtil.parseDate("yyyy-MM-dd", eventDateOfCurrent_Data, locale)>
221 </#if>
222 <#if validator.isNotNull(eventDate_Data)>
223 <#assign eventDate_DateObj = dateUtil.parseDate("yyyy-MM-dd", eventDate_Data, locale)>
224 </#if>
225 <#assign aDateTime = .now?date>
226 <#if (aDateTime?date lte eventDateOfCurrent_DataObj?date && spec == speciality) >
227 ${journalArticleLocalService.getArticleContent(article,"326760", "VIEW", locale, objectUtil("com.liferay.portal.kernel.portlet.PortletRequestModel", renderRequest, renderResponse), themeDisplay)}
228 </#if>
229 </#if>
230 </#list>
231</div>
232</div>
233
234<#if locale="ar_SA">
235 <div class="container mb-5">
236 <span class="title title-large title-bold sds mr-5-dir mt-4"> جميع الانشطة </span>
237 <form id="searchForm" onsubmit="return validateForm()" method="get">
238 <#assign startDate = "">
239 <#assign endDate = "">
240 <#assign title = "">
241 <#assign governorate = "">
242 <#if themeDisplay.getURLCurrent()?contains("fromDate")>
243 <#if request.getParameter("fromDate")?? && request.getParameter("fromDate") != "">
244 <#assign startDate = request.getParameter("fromDate") />
245 </#if>
246 <#if request.getParameter("toDate")?? && request.getParameter("toDate") != "">
247 <#assign endDate = request.getParameter("toDate") />
248 </#if>
249 <#if request.getParameter("title")?? && request.getParameter("title") != "">
250 <#assign title = request.getParameter("title") />
251 </#if>
252 <#if request.getParameter("governorate")?? && request.getParameter("governorate") != "">
253 <#assign governorate = request.getParameter("governorate") />
254 </#if>
255 </#if>
256 <div class="row mt-5">
257 <input type="hidden" name="spec" value="${spec!}">
258 <div class="col-md-2">
259 <div class="form-group">
260 <label>عنوان النشاط</label>
261 <input id="title" name="title" class="form-control" value="${title!}">
262 </div>
263 </div>
264 <div class="col-md-2">
265 <div class="form-group">
266 <label>انعقاد النشاط من</label>
267 <input id="fromDate" name="fromDate" class="form-control gj-textbox-md-rev newdatepicker01" value="${startDate!}">
268 </div>
269 </div>
270 <div class="col-md-2">
271 <div class="form-group">
272 <label>انعقاد النشاط الي</label>
273 <input id="toDate" name="toDate" class="form-control gj-textbox-md-rev newdatepicker02" value="${endDate!}">
274 </div>
275 </div>
276 <div class="col-md-2">
277 <div class="form-group">
278 <label>المحافظة</label>
279 <input id="governorate" name="governorate" class="form-control" value="${governorate!}">
280 </div>
281 </div>
282
283 <div class="col-md-2">
284 <label class="helper"></label>
285 <button type="submit" class="btn btn-blue w100" >بحث</button>
286 </div>
287 <div class="col-md-2">
288 <label class="helper"></label>
289 <button type="button" class="btn btn-white w100" id="cancelButton">اعادة البحث</button>
290 </div>
291 </div>
292 </form>
293 <div class="row mt-5">
294 <div class="col-md-12 table-responsive">
295 <table id="datatable01" class="display" style="width:100%">
296 <thead>
297 <tr>
298 <th>عنوان النشاط</th>
299 <th>نوع النشاط</th>
300 <th>تاريخ بداية أنعقاد النشاط </th>
301 <th>تاريخ نهاية أنعقاد النشاط </th>
302 <th>المحافظة</th>
303 <th>عرض</th>
304 </tr>
305 </thead>
306 <tbody>
307 <#assign journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")>
308 <#list entries as curEntry>
309 <#if curEntry.getAssetRenderer()?? && curEntry.getAssetRenderer().getArticle()??>
310 <#assign article = curEntry.getAssetRenderer().getArticle() />
311 <#assign structKey = article.getDDMStructureKey()/>
312 <#assign docXml = saxReaderUtil.read(article.getContent())!"" />
313 <#assign document = saxReaderUtil.read(article.getContentByLocale(locale))!"" />
314
315 <#-- Get localized title -->
316 <#assign eventTitle = article.getTitle(locale)!"" />
317 <#if !eventTitle?has_content>
318 <#assign eventTitle = docXml.valueOf("//dynamic-element[@name='title']/dynamic-content[@language-id='ar_SA']/text()")!"" />
319 </#if>
320
321 <#-- Get localized governorate -->
322 <#assign eventGovernorate = docXml.valueOf("//dynamic-element[@name='governorate']/dynamic-content[@language-id='ar_SA']/text()")!"" />
323
324 <#assign eventType = docXml.valueOf("//dynamic-element[@name='kind']/dynamic-content/text()")!""/>
325 <#assign eventDate = docXml.valueOf("//dynamic-element[@name='date']/dynamic-content/text()")!""/>
326 <#assign eventTypeDropdown = docXml.valueOf("//dynamic-element[@name='eventType1']/dynamic-content/text()")!""/>
327 <#assign eventDate_Data = getterUtil.getString(eventDate)>
328 <#if validator.isNotNull(eventDate_Data)>
329 <#assign eventDate_DateObj = dateUtil.parseDate("yyyy-MM-dd", eventDate_Data, locale)>
330 </#if>
331 <#assign speciality = docXml.valueOf("//dynamic-element[@name='speciality']/dynamic-content/text()")!""/>
332 <#if request.getParameter("spec")??>
333 <#assign spec = request.getParameter("spec") />
334 <#if spec == speciality>
335 <#if !themeDisplay.getURLCurrent()?contains("fromDate")>
336 ${journalArticleLocalService.getArticleContent(article,"321238", "VIEW", locale, objectUtil("com.liferay.portal.kernel.portlet.PortletRequestModel", renderRequest, renderResponse), themeDisplay)}
337 </#if>
338 <#if title?has_content && eventTitle?contains(title)>
339 ${journalArticleLocalService.getArticleContent(article,"321238", "VIEW", locale, objectUtil("com.liferay.portal.kernel.portlet.PortletRequestModel", renderRequest, renderResponse), themeDisplay)}
340 </#if>
341 <#if governorate?has_content && eventGovernorate?contains(governorate)>
342 ${journalArticleLocalService.getArticleContent(article,"321238", "VIEW", locale, objectUtil("com.liferay.portal.kernel.portlet.PortletRequestModel", renderRequest, renderResponse), themeDisplay)}
343 </#if>
344 <#if ((startDate?has_content) && eventDate_DateObj?date gte startDate?date("MM/dd/yyyy")) && (eventDate_DateObj?date lte endDate?date("MM/dd/yyyy"))>
345 ${journalArticleLocalService.getArticleContent(article,"321238", "VIEW", locale, objectUtil("com.liferay.portal.kernel.portlet.PortletRequestModel", renderRequest, renderResponse), themeDisplay)}
346 </#if>
347 <#if (kind?has_content) && (eventTypeDropdown == kind)>
348 ${journalArticleLocalService.getArticleContent(article,"321238", "VIEW", locale, objectUtil("com.liferay.portal.kernel.portlet.PortletRequestModel", renderRequest, renderResponse), themeDisplay)}
349 </#if>
350 </#if>
351 </#if>
352 </#if>
353 </#list>
354 </tbody>
355 </table>
356 </div> </div> </div> </#if>
357
358<#if locale="en_US">
359 <div class="container mb-5">
360 <span class="title title-large title-bold sds mr-5-dir mt-4">All Activities </span>
361 <form id="searchForm" onsubmit="return validateForm()" method="get">
362 <#assign startDate = "">
363 <#assign endDate = "">
364 <#assign title = "">
365 <#assign governorate = "">
366 <#assign kind = "">
367 <#if themeDisplay.getURLCurrent()?contains("fromDate")>
368 <#if request.getParameter("fromDate")?? && request.getParameter("fromDate") != "">
369 <#assign startDate = request.getParameter("fromDate") />
370 </#if>
371 <#if request.getParameter("toDate")?? && request.getParameter("toDate") != "">
372 <#assign endDate = request.getParameter("toDate") />
373 </#if>
374 <#if request.getParameter("title")?? && request.getParameter("title") != "">
375 <#assign title = request.getParameter("title") />
376 </#if>
377 <#if request.getParameter("governorate")?? && request.getParameter("governorate") != "">
378 <#assign governorate = request.getParameter("governorate") />
379 </#if>
380 </#if>
381 <div class="row mt-5">
382 <input type="hidden" name="spec" value="${spec!}">
383 <div class="col-md-2">
384 <div class="form-group">
385 <label>Activity Title</label>
386 <input id="title" name="title" class="form-control" value="${title!}" placeholder="">
387 </div>
388 </div>
389 <div class="col-md-2">
390 <div class="form-group">
391 <label>Activity From</label>
392 <input id="fromDate" name="fromDate" class="form-control gj-textbox-md-rev newdatepicker01" value="${startDate!}" placeholder="">
393 </div>
394 </div>
395 <div class="col-md-2">
396 <div class="form-group">
397 <label>Activity To</label>
398 <input id="toDate" name="toDate" class="form-control gj-textbox-md-rev newdatepicker02" value="${endDate!}" placeholder="">
399 </div>
400 </div>
401 <div class="col-md-2">
402 <div class="form-group">
403 <label>Governorate</label>
404 <input id="governorate" name="governorate" class="form-control" value="${governorate!}">
405 </div>
406 </div>
407 <div class="col-md-2">
408 <label class="helper"></label>
409 <button type="submit" class="btn btn-blue w100" >Search</button>
410 </div>
411 <div class="col-md-2">
412 <label class="helper"></label>
413 <button type="button" class="btn btn-white w100" id="cancelButton">Clear</button>
414 </div>
415 </div>
416 </form>
417 <div class="row mt-5">
418 <div class="col-md-12 table-responsive">
419 <table id="datatable01" class="display" style="width:100%">
420 <thead>
421 <tr>
422 <th>Activity Title</th>
423 <th>Activity Type</th>
424 <th>From Activity Date</th>
425 <th class="hideOnMobile">To Activity Date</th>
426 <th class="hideOnMobile">Governorate</th>
427 <th>Show</th>
428 </tr>
429 </thead>
430 <tbody>
431 <#assign journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")>
432
433 <#list entries as curEntry>
434 <#if curEntry.getAssetRenderer()?? && curEntry.getAssetRenderer().getArticle()??>
435 <#assign article = curEntry.getAssetRenderer().getArticle() />
436 <#assign structKey = article.getDDMStructureKey()/>
437 <#assign docXml = saxReaderUtil.read(article.getContent())!"" />
438 <#assign document = saxReaderUtil.read(article.getContentByLocale(locale))!"" />
439
440 <#-- Get localized title -->
441 <#assign eventTitle = article.getTitle(locale)!"" />
442 <#if !eventTitle?has_content>
443 <#assign eventTitle = docXml.valueOf("//dynamic-element[@name='title']/dynamic-content[@language-id='en_US']/text()")!"" />
444 </#if>
445
446 <#-- Get localized governorate -->
447 <#assign eventGovernorate = docXml.valueOf("//dynamic-element[@name='governorate']/dynamic-content[@language-id='en_US']/text()")!"" />
448
449 <#assign eventType = docXml.valueOf("//dynamic-element[@name='kind']/dynamic-content/text()")!""/>
450 <#assign eventDate = docXml.valueOf("//dynamic-element[@name='date']/dynamic-content/text()")!""/>
451 <#assign eventTypeDropdown = docXml.valueOf("//dynamic-element[@name='eventType1']/dynamic-content/text()")!""/>
452 <#assign eventDate_Data = getterUtil.getString(eventDate)>
453 <#if validator.isNotNull(eventDate_Data)>
454 <#assign eventDate_DateObj = dateUtil.parseDate("yyyy-MM-dd", eventDate_Data, locale)>
455 </#if>
456 <#assign speciality = docXml.valueOf("//dynamic-element[@name='speciality']/dynamic-content/text()")!""/>
457 <#if request.getParameter("spec")??>
458 <#assign spec = request.getParameter("spec") />
459 <#if spec == speciality>
460 <#if !themeDisplay.getURLCurrent()?contains("fromDate")>
461 ${journalArticleLocalService.getArticleContent(article,"321238", "VIEW", locale, objectUtil("com.liferay.portal.kernel.portlet.PortletRequestModel", renderRequest, renderResponse), themeDisplay)}
462 </#if>
463 <#if title?has_content>
464 <script>
465 console.log("Search Title: '${title}'");
466 console.log("Content Title: '${eventTitle}'");
467 console.log("Match: ${eventTitle?contains(title)?string('true', 'false')}");
468 </script>
469 <#if eventTitle?contains(title)>
470 ${journalArticleLocalService.getArticleContent(article,"321238", "VIEW", locale, objectUtil("com.liferay.portal.kernel.portlet.PortletRequestModel", renderRequest, renderResponse), themeDisplay)}
471 </#if>
472 </#if>
473 <#if governorate?has_content>
474 <script>
475 console.log("Search Governorate: '${governorate}'");
476 console.log("Content Governorate: '${eventGovernorate}'");
477 console.log("Match: ${eventGovernorate?contains(governorate)?string('true', 'false')}");
478 </script>
479 <#if eventGovernorate?contains(governorate)>
480 ${journalArticleLocalService.getArticleContent(article,"321238", "VIEW", locale, objectUtil("com.liferay.portal.kernel.portlet.PortletRequestModel", renderRequest, renderResponse), themeDisplay)}
481 </#if>
482 </#if>
483 <#if ((startDate?has_content) && eventDate_DateObj?date gte startDate?date("MM/dd/yyyy")) && (eventDate_DateObj?date lte endDate?date("MM/dd/yyyy"))>
484 ${journalArticleLocalService.getArticleContent(article,"321238", "VIEW", locale, objectUtil("com.liferay.portal.kernel.portlet.PortletRequestModel", renderRequest, renderResponse), themeDisplay)}
485 </#if>
486 <#if (kind?has_content) && (eventTypeDropdown == kind)>
487 ${journalArticleLocalService.getArticleContent(article,"321238", "VIEW", locale, objectUtil("com.liferay.portal.kernel.portlet.PortletRequestModel", renderRequest, renderResponse), themeDisplay)}
488 </#if>
489 </#if>
490 </#if>
491 </#if>
492 </#list>
493 </tbody>
494 </table>
495 </div>
496</div>
497</div>
498</#if>