Tender English
Tender notice for providing and fixing concertina coil fencing with punched tape concertina coil, Bhubaneswar
An error occurred while processing the template.
The following has evaluated to null or missing:
==> cur_downloadContent.uploadPdf [in template "75024455507050#20120#3949294" at line 30, column 46]
----
Tip: It's the step after the last dot 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 downloadUrl = cur_downloadCon... [in template "75024455507050#20120#3949294" at line 30, column 25]
----
1<div class="etds-section">
2 <div class="container">
3 <#if (.vars["reserved-article-title"].data)?has_content>
4 <header class="etds-header" role="banner" aria-labelledby="etds-header-title">
5 <h3 class="etds-header-title" id="etds-header-title">${(.vars["reserved-article-title"].data)}</h3>
6 <button class="etds-button--back" id="backButton">
7 ${languageUtil.get(locale, "back-to-search")}
8 </button>
9 </header>
10
11 </#if>
12 <main >
13 <#if (shortDescription.getData())?has_content>
14 <section class="etds-content-box" aria-labelledby="etds-short-content">
15 <h4 id="etds-short-content" class="etds-content-box-heading">
16 ${languageUtil.get(locale, "short-description")}
17 </h4>
18 <div class='etds-main-content doc-view-content-main'>${shortDescription.getData()}</div>
19 </section>
20 </#if>
21 <#if downloadContent.getSiblings()?has_content>
22 <div class="etds-content-box" role="region" aria-label="Downloadable Content">
23 <p class='etds-download-heading'>${languageUtil.get(locale, "downloads")}</p>
24 <#list downloadContent.getSiblings() as cur_downloadContent>
25 <#assign selectType=cur_downloadContent.selectType.getData()!"" />
26 <#assign name="" />
27 <#assign downloadUrl="" />
28
29 <#if selectType=="pdf">
30 <#assign downloadUrl=cur_downloadContent.uploadPdf.getData()!"#" />
31 <#assign pdfPos = downloadUrl?index_of(".pdf") />
32 <#assign beforePdf = downloadUrl?substring(0, pdfPos) />
33 <#assign lastSlashBeforePdf = beforePdf?last_index_of("/") />
34 <#assign name = beforePdf?substring(lastSlashBeforePdf + 1) />
35 <#else>
36 <#assign
37 webContentData=jsonFactoryUtil.createJSONObject(cur_downloadContent.webContentLink.getData()!"{}") />
38 <#if webContentData.title??>
39 <#assign name=webContentData.title />
40 </#if>
41 <#assign
42 downloadUrl="javaScript:openDocumentViewer('Tenders', 'articleId', '${webContentData.classPK}')" />
43 </#if>
44
45 <div class="etds-download-card etds-content-box">
46 <div class=" etds-card-title">
47 <span>${name}</span>
48 <@clay.icon symbol="etds-chevron-right" />
49 </div>
50
51 <a class="btn btn-outline-primary btn-sm etds-card-actions" href="${downloadUrl}"
52 rel="noopener noreferrer" <#if selectType == "pdf">target="_blank"</#if> >
53 ${languageUtil.get(locale, "etds-download")!"Download"}
54 <@clay.icon symbol="etds-download-1" />
55 </a>
56 </div>
57 </#list>
58 </div>
59 </#if>
60 </main>
61 </div>
62</div>
63
64<script>
65 document.getElementById('backButton')?.addEventListener('click', () => {
66 if (document.referrer) {
67 history.back();
68 } else {
69 window.location.href = '/search';
70 }
71 });
72</script>
