Thứ năm, 03/06/2021, 14:56 CH
Cỡ chữ Màu chữ image
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.