Theology

An error occurred while processing the template.
The following has evaluated to null or missing:
==> .vars['reserved-article-display-date']  [in template "20101#20127#173614" at line 60, column 38]

----
Tip: It's the final [] step that caused this error, not those before it.
----
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: #assign displayDate = .vars["reserved...  [in template "20101#20127#173614" at line 60, column 15]
----
1<#-- 
2Freemarker template for topic archive (History, Science, Bioethics, Philosophy, etc...) 
3--> 
4 
5 
6<!-- constants/default values --> 
7<#assign viewURL = requestMap.attributes.viewURL /> 
8<#assign viewURL = viewURL?keep_before("?") /> 
9<#assign title = requestMap.attributes.title /> 
10<#assign summary = requestMap.attributes.summary! /> 
11<#assign icon = requestMap.attributes.icon! /> 
12<#assign mediaType = requestMap.attributes.mediaType /> 
13<#assign bgStyle = requestMap.attributes.bgStyle /> 
14<#assign iconImg = "" /> 
15<#assign iconID = "" /> 
16<#assign adaptiveMediaLocation = ["/o/adaptive-media/image/","/thumbnail-600x600/"] /> 
17 
18<#-- custom poster image overrides default podcast artwork (or default image) --> 
19<#-- this is in the item template because the Widget Template doesn't know about structure-specific values (PosterImage) --> 
20<#-- lots of conditions because of import in API? Sometimes has_content is true, but still empty... --> 
21<#if PosterImage?has_content && PosterImage.getData()?? && PosterImage.getData() != ""> 
22  <#assign iconID = PosterImage.getAttribute("fileEntryId") />  
23  <#assign iconImg = adaptiveMediaLocation[0] + iconID + adaptiveMediaLocation[1] + PosterImage.getData()?split("/")[4] /> 
24  <#assign bgStyle = "background-image: url('${iconImg}');" /> 
25</#if> 
26 
27<div class="row"> 
28  <div class="col-12 article-archive-item"> 
29    <a class="block-link" href="${viewURL}"> 
30      <div class="row"> 
31        <div class="col-3"> 
32          <div class="aspect-ratio aspect-ratio-4-to-3 aspect-ratio-bg-cover" style="${bgStyle}"> 
33            <!-- image implemented as background image --> 
34          </div> 
35        </div> 
36        <#if icon == "hash" || icon == "podcast"> 
37            <div class="podcast-icon-sm"> 
38                <div class="podcast-icon"> 
39                    <#if icon == "hash"><i class="fas fa-hashtag"></i></#if> 
40                    <#if icon == "podcast"><i class="fas fa-podcast"></i></#if> 
41                </div> 
42            </div> 
43        </#if> 
44        <#if icon == "play"> 
45            <div class="podcast-icon-sm"> 
46                <div class="podcast-icon" style="padding-left:.65rem;"> 
47                    <i class="fas fa-play"></i> 
48                </div> 
49            </div> 
50        </#if> 
51 
52        <div class="col-9"> 
53          <div class="d-flex flex-column h-100 article-archive-excerpt"> 
54            <h3>${title}</h3> 
55            <span class="summary mb-2">${summary}</span> 
56 
57            <div class="mt-auto"> 
58              <span class="meta-label meta-author">${.vars['reserved-article-author-name'].data}</span> 
59              <span class="meta-label meta-published-date">${mediaType}</span> 
60              <#assign displayDate = .vars['reserved-article-display-date'].data> 
61              <#assign originalLocale = .locale> 
62              <#setting locale = localeUtil.getDefault()> 
63              <#assign displayDate = displayDate?datetime("EEE, d MMM yyyy HH:mm:ss Z")> 
64              <#assign locale = originalLocale> 
65              <span class="meta-label meta-published-date">${displayDate?string["MM/dd/yyyy"]}</span> 
66            </div> 
67          </div> 
68        </div> 
69      </div> 
70    </a> 
71  </div> 
72</div>