Công tác triển khai
- Hoạt động triển khai
- Công tác triển khai
Có lỗi xảy ra trong quá trình xử lý biểu mẫu.
Java method "com.sun.proxy.$Proxy166.getCategory(long)" threw an exception when invoked on com.sun.proxy.$Proxy166 object "com.swt.portal.servicewrappers.AssetCategoryServiceOverride@6a50b6a2"; see cause exception in the Java stack trace. ---- FTL stack trace ("~" means nesting-related): - Failed at: category = AssetCategoryService.getCa... [in template "20115#20151#33165" at line 174, column 17] - Reached through: #assign-container [in template "20115#20151#33165" at line 172, column 9] ----
1<style scope>
2
3
4 .taglib-categorization-filter{
5 display:none
6 }
7 .article-title{
8 color: #0b5090;
9 text-decoration: none !important;
10 font-weight: bold;
11 padding: 0;
12 font-weight: bold;
13 margin-bottom: 5px
14 }
15 .article-img{
16 padding: 0;
17 }
18 .article-description{
19 padding-left: 10px;
20 text-align: justify;
21 }
22 .article-container{
23 padding: 0;
24 margin-bottom: 15px;
25 }
26 .article-title a{
27 color: #0b5090;
28 }
29 .list-container{
30 font-size: 14px;
31 }
32 .publish-date{
33 font-weight: bold;
34 color: grey;
35 }
36 .cms-title-category a{
37 color: #d70000;
38 font-weight: bold;
39 }
40 .title-category-container{
41 padding: 12px 0px 10px 12px;
42 border-bottom: 1px dotted #CBCBCB;
43 margin-bottom: 10px;
44 background: linear-gradient(#e9e9e9, #fbfbfb);
45 }
46 .search-date{
47 padding: 0;
48 float: left;
49 margin: 0 0 8px -24px;
50 display: flex;
51 }
52 .search-lable{
53 text-align: right;
54 padding: 8px;
55 font-weight: bold;
56 }
57 .search-input{
58 padding: 4px 1px 5px 5px;
59 }
60 #dateSearch {
61 height: 24px;
62 border: 1px solid #C8C9CA;
63 border-radius: 4px;
64 background: #fff;
65 width: 133px;
66 }
67 .btn-primary {
68 background-color: #337ab7;
69 height: 24px;
70 position: relative;
71 top: 4px;
72 width: 56px;
73 left: 43px;
74 border: 1px solid;
75 border-color: #C8C9CA #9E9E9E #9E9E9E #C8C9CA;
76 background: linear-gradient(#ffffff, #f2f2f2, #dedede, #d9d9d9);
77 Font-size: 12px;
78 font-weight: bold;
79 color: #2c6c97;
80 padding: 3px;
81 }
82 .taglib-page-iterator {
83 padding: 0 15px;
84 }
85 .lfr-icon-menu-text, .search-results, .lfr-pagination-buttons{
86 font-size: 12px;
87 }
88 .btn:hover {
89 border: 1px solid #204d74;
90 }
91 .btn-primary:active:hover{
92 color: #2c6c97;
93 border: 1px solid;
94 border-color: #C8C9CA #9E9E9E #9E9E9E #C8C9CA;
95 }
96 .taglib-page-iterator{
97 padding: 0 15px;
98 }
99 .taglib-page-iterator .search-results, .lfr-pagination-buttons, .lfr-icon-menu-text{
100 font-size: 12px;
101 }
102
103 .search-results, .lfr-pagination-delta-selector{
104 display: none !important;
105 }
106
107 .clearfix{
108 display: flex;
109 }
110
111 .lfr-pagination-buttons{
112 margin: 10px 0 0 auto !important;
113 }
114
115
116 @media only screen and (max-width: 767px){
117 .list-container {
118 padding: 6px;
119 }
120 .article-container {
121 margin-top: 0;
122 border-bottom: 1px dashed #cbcbcb;
123 }
124 .search-button{
125 padding: 0;
126 }
127 .search-button .btn-primary{
128 left: 0;
129 }
130 .search-lable {
131 text-align: left;
132 padding: 8px 0 0 6px;
133 }
134 .search-date{
135 margin: 0;
136 }
137 .taglib-page-iterator{
138 padding: 0 6px;
139 }
140 .taglib-page-iterator .lfr-pagination-buttons{
141 display: flex;
142 }
143 .taglib-page-iterator .lfr-pagination-buttons>li>a{
144 width: 99%;
145 border-radius: 4px;
146 }
147 .taglib-page-iterator .lfr-pagination-config .current-page-menu .btn{
148 margin: 0 0 5px 0;
149 }
150 .search-results{
151 display: none !important;
152 line-height: 35px !important;
153 color: #9e9e9e;
154 }
155
156 .clearfix{
157 display: unset;
158 }
159 }
160</style>
161
162<#--firstCategoryId là gia trị được truyền từ template Danh sách tin tuc , và nó dùng làm chuyên mục chính-->
163<#assign firstCategoryId = paramUtil.getString(renderRequest, "categoryId") />
164<#assign httpRequest = portalUtil.getOriginalServletRequest(portalUtil.getHttpServletRequest(renderRequest))>
165<#assign AssetCategoryService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryService")>
166<#assign dateSearch = getterUtil.getString(httpRequest.getParameter("p_r_p_date"))
167 idCategory = ""
168 nameCategory = "Tin tức"
169/>
170
171<#if (firstCategoryId != "")>
172 <#assign
173 idCategory = firstCategoryId
174 category = AssetCategoryService.getCategory(idCategory?number)
175 nameCategory = category.getName()
176 />
177<#else>
178 <#assign idCategory = getterUtil.getString(httpRequest.getParameter("p_r_p_categoryId"))>
179 <#if (idCategory?length > 0) >
180 <#assign
181 category = AssetCategoryService.getCategory(idCategory?number)
182 nameCategory = category.getName()
183 />
184 </#if>
185</#if>
186
187<!--<h2 class="portlet-title-text">
188 <img class="portlet-title-icon" alt="title" src="/o/hcm-default-theme/images/imageVanBan/iconTitle.jpg">
189 <span>${nameCategory}</span>
190</h2>
191-->
192<div class="row row-swt-responsive">
193 <div class="col-md-12 list-container">
194 <#if entries?has_content>
195 <#if validator.isNull(dateSearch)>
196 <#assign listToShow = entries >
197 <#else>
198 <#assign dateSearch = htmlUtil.escape(dateSearch) />
199 <#assign listToShow = [] >
200 <#list entries?chunk(1) as i>
201 <#assign dateSearch_DateObj = dateUtil.parseDate("yyyy-MM-dd", dateSearch, locale) />
202 <#assign curEntryDate = i?first.getPublishDate() />
203 <#if dateSearch_DateObj?date?string.short?contains(curEntryDate?date?string.short) >
204 <#assign listToShow = listToShow + i>
205 </#if>
206 </#list>
207 </#if>
208 <#list listToShow as curEntry>
209 <#assign
210 curEntry = curEntry
211
212 renderer = curEntry.getAssetRenderer()
213 article = renderer.getArticle() >
214
215 <#assign firstImgUrl = "" />
216
217 <#assign journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") />
218 <#assign journalArticle = journalArticleLocalService.fetchLatestArticle(curEntry.getClassPK()) />
219 <#assign entryTitle = htmlUtil.escape(renderer.getTitle(locale)) />
220
221 <#if validator.isNotNull(journalArticle)>
222 <#assign content = journalArticle.getContent() />
223 <#if content?contains("<img")>
224 <#assign firstIndexImg = content?index_of("<img") />
225 <#assign newContent = content?substring(firstIndexImg)/>
226 <#assign lastIndexImg = newContent?index_of(">") />
227 <#assign newContent = newContent?substring(0, lastIndexImg)/>
228
229 <#assign strLenght= "src=\"" />
230 <#assign indexSrc = newContent?index_of(strLenght) + strLenght?length />
231 <#assign firstImgUrl = newContent?substring(indexSrc) />
232 <#assign lastIndexSrc = firstImgUrl?index_of("\"") />
233 <#assign firstImgUrl = firstImgUrl?substring(0,lastIndexSrc) />
234 </#if>
235 </#if>
236
237
238 <#if article.getSmallImage()>
239 <#assign imgThumbnailURL = renderer.getThumbnailPath(renderRequest)>
240 <#elseif (firstImgUrl?length > 0)>
241 <#assign imgThumbnailURL = firstImgUrl>
242 <#else>
243 <#assign imgThumbnailURL = "/o/hcm-default-theme/images/cms/no-image.jpg" >
244 </#if>
245
246 <#assign publishDate = curEntry.getCreateDate() />
247 <#if (curEntry.getPublishDate()??) >
248 <#assign publishDate = curEntry.getPublishDate() />
249 </#if>
250
251 <#assign publishDate_txt = "(" + publishDate?date?string["dd/MM/yyyy"] + ")" />
252 <#assign urlArticle = assetPublisherHelper.getAssetViewURL(renderRequest, renderResponse, renderer, curEntry, !stringUtil.equals(assetLinkBehavior, "showFullContent")) />
253
254 <div class="col-md-12 article-container">
255 <div class="col-md-12 article-title">
256 <a href="${urlArticle}">
257 ${article.getTitle()?replace('<[^>]+>','','r')} <span class="publish-date">${publishDate_txt}<span>
258 </a>
259 <@getEditIcon />
260 </div>
261 <div class="col-md-12 col-swt">
262 <div class="col-md-3 article-img">
263 <a href="${urlArticle}">
264 <img src="${imgThumbnailURL}" width=100%/>
265 </a>
266 </div>
267 <div class="col-md-9 article-description">
268 ${article.getDescription()}
269 </div>
270 </div>
271 </div>
272 </#list>
273 </#if>
274 </div>
275</div>
276
277<#macro getEditIcon>
278 <#if renderer.hasEditPermission(themeDisplay.getPermissionChecker())>
279 <#assign redirectURL = renderResponse.createRenderURL() />
280 <#assign editPortletURL = renderer.getURLEdit(renderRequest, renderResponse, windowStateFactory.getWindowState("pop_up"), redirectURL)!"" />
281 <!--Set embedded =true để giao diện hiển thị theo hook -->
282 ${editPortletURL.setParameter("embedded", "true")}
283 <#if validator.isNotNull(editPortletURL)>
284 <@liferay_ui["icon"]
285 cssClass="pull-right"
286 image="edit"
287 url="javascript:Liferay.Util.openWindow({id:'" + renderResponse.getNamespace() + "editAsset', title: '" + entryTitle + "', uri:'" + htmlUtil.escapeURL(editPortletURL.toString()) + "'});"
288 />
289 </#if>
290 </#if>
291</#macro>
292
293<div class="row search-date">
294 <div class="col-md-5 search-lable">
295 Xem theo ngày:
296 </div>
297 <div class="col-md-3 search-input">
298 <input type="date" id="dateSearch" value="${dateSearch}"/>
299 </div>
300 <div class="col-md-4 search-button">
301 <div class="btn btn-primary" onClick="searchDate()">
302 Tìm
303 </div>
304 </div>
305</div>
306
307<#assign currentUrl = themeDisplay.getURLCurrent() />
308
309<#if currentUrl?contains("&p_r_p_date=")>
310 <#assign firstIndex = currentUrl?index_of("&p_r_p_date=") />
311 <#assign currentUrl = currentUrl?substring(0, firstIndex)/>
312</#if>
313
314<script type="text/javascript">
315 function searchDate(){
316 var date = $("#dateSearch").val();
317 var url = "${currentUrl}" + "&p_r_p_date=" + date;
318 window.location.href = url;
319 }
320</script>
—
Ngày bắt đầu: 28/03/2019, 07:00
Địa điểm diễn ra sự kiện: Sở TTTT