-
Có lỗi xảy ra trong quá trình xử lý biểu mẫu.
The following has evaluated to null or missing: ==> expirationDate_DateObj [in template "20115#20151#45229" at line 318, column 20] ---- 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: checkDateEquals = (expirationDate_Dat... [in template "20115#20151#45229" at line 318, column 1] - Reached through: #assign-container [in template "20115#20151#45229" at line 316, column 1] ----
1<#assign HttpUtil = staticUtil["com.liferay.portal.kernel.util.HttpUtil"] />
2<style scoped>
3 #form-question-answer{
4 display:none;
5 }
6 .style-padding-bottom-attachFile{
7 display: flex;
8 }
9
10 .div-ds-gop-y-vbdt {
11 border: 1px solid #E6E6E6;
12 border-bottom: none;
13 float: left;
14 width: 100%;
15 }
16 .div-title-du-thao-vbqppl{
17 text-transform: uppercase;
18 width: 100%;
19 background: -webkit-linear-gradient(#144673, #3982ad);
20 background: -o-linear-gradient(#144673, #3982ad);
21 background: -moz-linear-gradient(#144673, #3982ad);
22 background: linear-gradient(r#144673, #3982ad);
23 color: white;
24 font-size: 14px;
25 font-style: normal;
26 font-weight: bold;
27 font-family: Arial, Helvetica, sans-serif;
28 padding: 8px;
29 height: 30px;
30 }
31 .div-btn-gop-y{
32 width: 100%;
33 margin-top: 20px;
34 float: left;
35 margin-bottom: 10px;
36 }
37 .button-question {
38 float:right;
39 padding: 4px;
40 height: 30px;
41 width: 111px;
42 text-shadow: none;
43 font-weight: 700;
44 border-radius: unset;
45 font-size: 14px;
46 color: white;
47 border-color: #9ebed0;
48 background: linear-gradient(#cfe3ed, #23729e, #53bcf3);
49 }
50 .doc-gen-cover-tt table tr td {
51 vertical-align: middle;
52 border: 1px solid #b6b3b3;
53 line-height: 18px;
54 padding: 5px 5px;
55 }
56 .doc-gen-body-detail{
57 padding: 0px !important;
58 }
59 .doc-gen-font-bold {
60 border-bottom: 1px solid #fff !important;
61 padding: 10px 5px;
62 width: 100%;
63 margin: 0;
64 position: relative;
65 top: 0;
66 border: 1px solid #b6b3b3;
67 }
68 .attachFile{
69 border: 1px solid #b6b3b3;
70 display: flow-root;
71 padding: 10px 5px ;
72 margin: -1px 0 10px;
73 border-top: 1px solid #fff;
74 }
75 .doc-gen-file-dk {
76 padding: 0px 0 0 5px;
77 }
78 .doc-gen-file-dk-all{
79 padding: 4px;
80 text-align: center;
81 margin: 5px 0 10px 0;
82 border-radius: 4px;
83 border: 1px solid #b6b3b3;
84 cursor: pointer;
85 }
86 .doc-gen-file-dk-all:hover {
87 background: #eaeaea;
88 transition: 0.4s;
89 }
90 .title_down{
91 word-wrap: break-word;
92 width: 300px;
93 margin: 0 0 0 5px;
94 }
95 .doc-gen-no-file-dk {
96 border: 1px solid #b6b3b3;
97 border-top: 0;
98 padding: 0 0 15px 7px;
99 width: 100%;
100 text-align: left;
101 }
102 .portlet-content {
103 border: 0 !important;
104 }
105</style>
106
107<#assign serviceContext = staticUtil["com.liferay.portal.kernel.service.ServiceContextThreadLocal"].getServiceContext()>
108<#assign themeDisplay = serviceContext.getThemeDisplay() />
109
110<div class="doc-gen-body-detail">
111 <div class="doc-gen-cover-tt" id="content-article-swt-id-voice">
112 <#assign loaiVanBan = "" >
113 <#assign coQuanBanHanh = "" >
114
115 <#assign journalLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")>
116 <#assign articleobj = journalLocalService.getArticle(groupId, .vars["reserved-article-id"].data)>
117
118 <#assign articlePrimKey = articleobj.getResourcePrimKey()>
119
120 <#assign catLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService")>
121 <#assign articleCates = catLocalService.getCategories("com.liferay.journal.model.JournalArticle", getterUtil.getLong(articlePrimKey))>
122
123 <#assign listCategoryId = "">
124 <#list articleCates as cat>
125 <#assign listCategoryId = listCategoryId + "," + cat.getCategoryId()?string>
126 </#list>
127
128 <#assign assetVocabularyLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetVocabularyLocalService")>
129 <#assign listVocab = assetVocabularyLocalService.getGroupVocabularies(groupId)>
130
131 <#list listVocab as vocab>
132 <#-- 43269: id vocabulary cua loai van ban -->
133 <#if vocab.getVocabularyId() == 43269 >
134 <#list vocab.getCategories() as cate>
135 <#if listCategoryId?contains(cate.getCategoryId()?string)>
136 <#assign loaiVanBan = cate.getName()>
137 </#if>
138 </#list>
139 </#if>
140
141 <#-- 43268: id vocabulary cua co quan ban hanh -->
142 <#if vocab.getVocabularyId() == 43268 >
143 <#list vocab.getCategories() as cate>
144 <#if listCategoryId?contains(cate.getCategoryId()?string)>
145 <#assign coQuanBanHanh = cate.getName()>
146 </#if>
147 </#list>
148 </#if>
149 </#list>
150
151
152 <table style="color: #100404; width: 100%">
153 <tbody>
154 <tr>
155 <td style=" width: 150px;"><b>Loại văn bản:</b></td>
156 <td>${loaiVanBan}</td>
157 </tr>
158 <tr>
159 <td><b>Cơ quan ban hành:</b></td>
160 <td>${coQuanBanHanh}</td>
161 </tr>
162 <tr>
163 <td><b>Ngày bắt đầu lấy ý kiến:</b></td>
164 <td>
165 <#assign effectiveDate_Data = getterUtil.getString(startDate.getData())>
166 <#if validator.isNotNull(effectiveDate_Data)>
167 <#assign effectiveDate_DateObj = dateUtil.parseDate("yyyy-MM-dd", effectiveDate_Data, locale)>
168 ${dateUtil.getDate(effectiveDate_DateObj, "dd/MM/yyyy", locale)}
169 </#if>
170 </td>
171 </tr>
172 <tr>
173 <td><b>Ngày hết hạn lấy ý kiến:</b></td>
174 <td>
175 <#assign expirationDate_Data = getterUtil.getString(endDate.getData())>
176 <#if validator.isNotNull(expirationDate_Data)>
177 <#assign expirationDate_DateObj = dateUtil.parseDate("yyyy-MM-dd", expirationDate_Data, locale)>
178 ${dateUtil.getDate(expirationDate_DateObj, "dd/MM/yyyy", locale)}
179 </#if>
180 </td>
181 </tr>
182
183 <tr>
184 <#assign description = .vars["reserved-article-description"].data ?trim >
185 <#assign docgenrowbttom = "" >
186 <#if !validator.isBlank(description)>
187 <#assign docgenrowbttom = "doc-gen-row-bttom" >
188 </#if>
189 <td><b>Trích yếu:</b></td>
190 <td>
191 ${htmlUtil.escape(.vars["reserved-article-description"].data)}
192 </td>
193 </tr>
194
195
196 </tbody></table>
197
198 <div class="doc-gen-row doc-gen-row-bttom doc-gen-font-bold">
199 Tài liệu đính kèm:
200 </div>
201 <div class="doc-gen-row">
202 <#assign extensionsImg =".jpg_.jpeg_.bmp_.gif_.png">
203 <#assign urlIconAttachment = "" >
204 <#assign pathToDownloadAll = "" />
205 <#assign iconDownloadall = "" />
206 <#if validator.isNotNull(attachment.getData())>
207 <#list attachment.getSiblings() as file>
208 <#assign isPDF = false >
209 <#assign arrString = file.getData()?string?split("/")/>
210 <#assign filename = arrString[4] />
211 <#assign pathToDownloadAll = pathToDownloadAll +"'" + file.getData() + "'" + "," />
212
213 <#if (filename?lower_case)?contains(".doc")>
214 <#assign urlIconAttachment = themeDisplay.getPathThemeRoot() + "/images/imageVanBan/WORD.png" >
215 <#elseif (filename?lower_case)?contains(".rtf")>
216 <#assign urlIconAttachment = themeDisplay.getPathThemeRoot() + "/images/imageVanBan/WORD.png" >
217 <#elseif (filename?lower_case)?contains(".pdf")>
218 <#assign isPDF = true >
219 <#assign urlIconAttachment = themeDisplay.getPathThemeRoot() + "/images/imageVanBan/PDF.png" >
220 <#elseif (filename?lower_case)?contains(".xls")>
221 <#assign urlIconAttachment = themeDisplay.getPathThemeRoot() + "/images/imageVanBan/EXCEL.png" >
222 <#else>
223 <#assign urlIconAttachment = themeDisplay.getPathThemeRoot() + "/images/imageVanBan/OTHER.png" >
224 <!--Kiem tra co phai la img khong-->
225 <#list extensionsImg?split("_") as x>
226 <#if (filename?lower_case)?contains(x)>
227 <#assign isPDF = true >
228 </#if>
229 </#list>
230 </#if>
231
232 <#assign iconDownloadall = themeDisplay.getPathThemeRoot() + "/images/imageVanBan/vb-download.png" >
233 <#assign iconVBDownload = themeDisplay.getPathThemeRoot() + "/images/imageVanBan/vb-download.png" >
234 <#assign iconVBReview = themeDisplay.getPathThemeRoot() + "/images/imageVanBan/vb-review.png" >
235 <div class="attachFile">
236 <div class="col-xs-12 col-sm-8 doc-gen-padd-no doc-gen-row-bttom-mobile style-padding-bottom-attachFile">
237 <a href="${file.getData()}"><img src="${urlIconAttachment}"></a>
238 <span class="title_down" >${HttpUtil.decodeURL(filename,true)}</span>
239 </div>
240
241 <div class="col-xs-12 col-sm-4 doc-gen-file-dk">
242 <a class="col-xs-5 col-sm-5 doc-gen-padd-no" href="${file.getData()}" download>
243 <img src="${iconVBDownload}">
244 Tải về
245 </a>
246 <#if isPDF>
247 <a class="col-xs-7 col-sm-7 doc-gen-padd-no" href="${file.getData()}" target="_blank">
248 <img src="${iconVBReview}" />
249 Xem trước
250 </a>
251 </#if>
252 </div>
253 </div>
254 </#list>
255 <#assign pathToDownloadAll = "javascript:downloadAllFiles(" + .vars['reserved-article-author-id'].data + ", [" + pathToDownloadAll + "])" />
256 <#if (attachment.getSiblings()?size >1) >
257 <div class="hidden-xs col-sm-8 doc-gen-padd-no doc-gen-row-bttom-mobile style-padding-bottom-attachFile">
258 </div>
259 <a href="${pathToDownloadAll}">
260 <div class="col-xs-12 col-sm-4 doc-gen-file-dk doc-gen-file-dk-all">
261 <img src="${iconDownloadall}">
262 <span style="word-wrap: break-word;">Tải về tất cả tài liệu</span>
263 </div>
264 </a>
265
266 </#if>
267 <#else>
268 <div class="doc-gen-no-file-dk">
269 Không có tài liệu đính kèm
270 </div>
271 </#if>
272 </div>
273</div>
274</div>
275
276
277<a id="hiddenDownload" style="display: none;"></a>
278
279<script type="text/javascript">
280 /** Perform download all files of the selected record. */
281 function downloadAllFiles(id, urls) {
282 zipFiles(id, urls);
283 }
284
285 function zipFiles(id, urls) {
286 var jszip = new JSZip();
287 doZip(jszip, urls, 0);
288 }
289
290 function doZip(jszip, urls, index) {
291 var fileName = urls[index].split('/')[4];
292
293 JSZipUtils.getBinaryContent(urls[index], function(err, data) {
294 if (!err) {
295 jszip.file(fileName, data, {
296 binary : true
297 });
298
299 if (++index == urls.length) {
300 jszip.generateAsync({
301 type : "blob"
302 }).then(function(content) {
303 var a = $("#hiddenDownload");
304 a.attr("download", "tailieudinhkem");
305 a.attr("href", URL.createObjectURL(content));
306 document.getElementById("hiddenDownload").click();
307 });
308 } else {
309 doZip(jszip, urls, index);
310 }
311 }
312 });
313 }
314
315</script>
316<#assign
317currentDate = .now
318checkDateEquals = (expirationDate_DateObj?date?iso_utc == currentDate?date?iso_utc)?string
319checkExpirationDate = (expirationDate_DateObj?date > currentDate?date)
320>
321 <#if getterUtil.getBoolean(checkDateEquals) || getterUtil.getBoolean(checkExpirationDate)>
322 <div class="div-btn-gop-y">
323 <button class="btn btn-info button-question" type="button" onclick="form_question()">Gửi góp ý</button>
324 </div>
325 </#if>
326
327<input type="hidden" id="idDuThao" value="${articleobj.getArticleId()}">
328<script>
329$(document).ready(function(){
330
331 $('#parrentIdId').val($("#idDuThao").val());
332});
333
334function form_question(){
335 $("#form-question-answer").css("display","block");
336}
337function backListQuestion(){
338 $("#form-question-answer").css("display","none");
339}
340
341</script>
Danh sách góp ý
Không có kết quả nào.