Đại hội đồng cổ đông
An error occurred while processing the template.
The following has evaluated to null or missing:
==> fileData.extension [in template "85872286966386#20120#78665" at line 52, column 22]
----
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: #if fileData.extension?lower_case == ... [in template "85872286966386#20120#78665" at line 52, column 17]
----
1<div class="mx-auto sm:py-0 xl:py-[24px] w-100">
2 <!-- Danh sách thông báo -->
3 <div class="sm:w-full xl:w-[1320px] mx-auto px-[16px] sm:px-[24.25px] xl:px-0">
4 <#if entries?has_content>
5 <#list entries as entry>
6 <#assign fileNumber=[] />
7 <#global entry=entry assetRenderer=entry.getAssetRenderer()
8 entryTitle=htmlUtil.escape(assetRenderer.getTitle(locale))
9 viewURL=assetPublisherHelper.getAssetViewURL(renderRequest, renderResponse, assetRenderer, entry,
10 !stringUtil.equals(assetLinkBehavior, "showFullContent" )) />
11
12 <#assign ddmValuesMap=assetRenderer.getDDMFormValuesReader().getDDMFormValues().getDDMFormFieldValuesMap() />
13
14 <#list ddmValuesMap["Fieldset74441881"] as fieldSet>
15 <#-- fieldSet ngoài cùng -->
16
17 <#list fieldSet.getNestedDDMFormFieldValues() as nestedField>
18 <#-- Kiểm tra nếu là fieldset con (File Đính Kèm) -->
19 <#if nestedField.getName() == "Fieldset00399837">
20 <#-- Đây là repeatable, phải lặp tiếp -->
21 <#list nestedField.getNestedDDMFormFieldValues() as fileField>
22 <#if fileField.getName() == "file_name">
23 <#assign fileName = fileField.getValue().getString(locale) />
24 </#if>
25
26 <#if fileField.getName() == "file_link">
27 <#assign jsonString = fileField.getValue().getString(locale) />
28 <#if jsonString?has_content>
29 <#assign jsonObj=jsonFactoryUtil.createJSONObject(jsonString) />
30 <#assign fileLink="/documents/" + jsonObj.getString("groupId") + "/" + jsonObj.getString("fileEntryId")
31 + "/" + jsonObj.getString("title") + "." + jsonObj.getString("extension") + "/" +
32 jsonObj.getString("uuid") />
33 <#assign fileNumber +=[ { "link" : fileLink, "jsonString" : jsonString } ] />
34 </#if>
35 </#if>
36 </#list>
37 </#if>
38 </#list>
39 </#list>
40
41 <!-- Item -->
42 <div class="flex flex-col sm:flex-col xl:flex-row items-start py-[16px] sm:py-[24px] xl:py-[30px] border-b border-gray-100 transition-colors gap-[8px] sm:gap-[8px] xl:gap-[80px]">
43 <div class="">
44 <div class="text-[14px] sm:text-[16px] xl:text-[17px] date-title">${entry.getPublishDate()?string("dd/MM/yyyy")}</div>
45 </div>
46
47 <div class="flex flex-col sm:flex-row xl:flex-row gap-[8px] sm:gap-[unset] xl:gap-[unset] items-start sm:items-center xl:items-start justify-between w-full">
48 <div class="flex gap-[10px] sm:gap-[12px] xl:gap-[14px] items-center sm:max-w-[75%]">
49 <div class="w-[24px] h-[24px] sm:w-[32px] sm:h-[32px] xl:w-[32px] xl:h-[32px] flex items-center justify-center">
50 <#if fileNumber?has_content>
51 <#assign fileData=jsonFactoryUtil.createJSONObject(fileNumber[0].jsonString) />
52 <#if fileData.extension?lower_case=="pdf">
53 <img src="/documents/d/investor/file-pdf" alt="icon_pdf">
54 <#elseif fileData.extension?lower_case=="doc" || fileData.extension?lower_case=="docx">
55 <img src="/documents/d/investor/file-pdf-1-1" alt="icon_doc">
56 <#elseif fileData.extension?lower_case=="xls" || fileData.extension?lower_case=="xlsx">
57 <img src="/documents/d/investor/file-excel" alt="icon_xlsx">
58 <#elseif fileData.extension?lower_case=="rar" || fileData.extension?lower_case=="zip">
59 <img src="/documents/d/investor/file-pdf" alt="icon_file">
60 <#else>
61 <img src="/documents/d/investor/huge-icon" alt="icon_file">
62 </#if>
63 <#else>
64 <img src="/documents/d/investor/file-pdf" alt="icon_file">
65 </#if>
66 </div>
67
68 <div class="flex-1 min-w-0">
69 <h3 class="text-[14px] sm:text-[16px] xl:text-[18px] title-file text-left">
70 ${entryTitle}
71 </h3>
72 </div>
73 </div>
74
75 <div class="flex gap-[24px] sm:gap-[32px] xl:gap-[32px] w-full sm:w-[unset] justify-end">
76 <a href="${viewURL}" class="btn-color-text text-[14px]">
77 Xem chi tiết
78 </a>
79 <#if fileNumber?has_content>
80 <#list fileNumber as f>
81 <a href="${f.link}"
82 class="flex gap-[8px] ">
83 <img src="/documents/d/investor/dowload" alt="btn-color-text">
84 <span class="btn-color-text text-[14px]">${languageUtil.get(locale,"download")}</span>
85 </a>
86 </#list>
87 </#if>
88 </div>
89 </div>
90 </div>
91 </#list>
92 </#if>
93 </div>
94</div>
95
96 <style>
97 .btn-color-text{
98 color: var(--Color-Palletes-Sea-Blue-Normal, #006095);
99 font-style: normal;
100 font-weight: 600;
101 line-height: 20px; /* 142.857% */
102 }
103 .entry-title.taglib-categorization-filter{
104 display: none;
105 }
106 .date-title{
107 color: var(--Neutral-Neutral-Grey-1-Neutral-Gray-700, #344051);
108
109
110
111font-style: normal;
112font-weight: 400;
113line-height: 24px; /* 141.176% */
114 }
115 .title-file{
116 color: var(--Base-Color-Black, #000);
117font-style: normal;
118/*font-weight: 600;*/
119font-weight: unset;
120line-height: 140%; /* 25.2px */
121 }
122
123
124 /* pagination */
125
126.pagination-results {
127 display: none;
128}
129
130.pagination-bar {
131 display: flex;
132 justify-content: center;
133}
134
135ul.pagination li:first-child span#qfkd____::before {
136 <#if locale == "vi_VN">
137 content: "Trước";
138 <#else>
139 content: "Pre";
140 </#if>
141
142 color: var(--Gray-500, #6B7280);
143 text-align: center;
144 font-size: 17px;
145 font-style: normal;
146 font-weight: 600;
147 line-height: normal;
148}
149
150span#qfkd____ svg {
151 display: none;
152}
153
154ul.pagination li.page-item.active {
155 border-radius: 6px;
156 background: var(--Base-Color-Picton-Blue, #4CB8E9);
157 display: flex;
158 width: 40px;
159 height: 40px;
160 justify-content: center;
161 align-items: center;
162 gap: 20px;
163}
164
165ul.pagination li.page-item.active .page-link {
166 border-radius: 6px;
167 color: var(--Base-Color-White, #FFF);
168}
169
170ul.pagination li:last-child span#jbfs____::before {
171 <#if locale == "vi_VN">
172 content: "Tiếp";
173 <#else>
174 content: "Next";
175 </#if>
176
177 color: var(--Gray-500, #6B7280);
178 text-align: center;
179 font-size: 17px;
180 font-style: normal;
181 font-weight: 600;
182 line-height: normal;
183}
184
185span#jbfs____ svg {
186 display: none;
187}
188
189a.page-link {
190 border: none;
191 display: flex;
192 width: 40px;
193 height: 40px;
194 justify-content: center;
195 align-items: center;
196 gap: 20px;
197 color: var(--Gray-500, #6B7280);
198 text-align: center;
199
200 font-size: 17px;
201 font-style: normal;
202 font-weight: 600;
203 line-height: normal;
204}
205
206li.page-item.disabled {
207 align-items: center;
208 display: flex;
209}
210
211.page-item.active .page-link::before {
212 background-color: unset;
213}
214
215/* pagination */
216 </style>