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