Chi tiết hình ảnh
Có lỗi xảy ra trong quá trình xử lý biểu mẫu.
The following has evaluated to null or missing: ==> AssetCategoryService.getCategory(idArticle) [in template "20115#20151#84168" at line 133, column 25] ---- 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: #assign nameAlbum = AssetCategoryServ... [in template "20115#20151#84168" at line 133, column 4] ----
1<style>
2
3 .photoAlbum-hinhanh {
4 margin-right: -2%;
5 height: 56px;
6 box-shadow: 0px 2px 10px #888888;
7 }
8 .photoAlbum-img {
9 margin-left: 14%;
10 }
11 .photo-title {
12 margin-top: 1%;
13 color: #767676;
14 }
15 .photo-spantitle {
16 font-size: 14px;
17 margin-right: 4px;
18 font-weight: 600;
19 }
20 .mtouserphoto-ul-image {
21 width: 100%;
22 list-style: none;
23 float: left;
24 margin-top: 0%;
25 margin-right: 0px !important;
26 margin-left: 0px !important;
27 padding: 0;
28 }
29 .mtouserphoto-li-image {
30 float: left;
31 padding-right: 1%;
32 margin-top: 1%;
33 }
34 .col-image-carousel {
35 width: 97%;
36 }
37
38 .carousel-image-name {
39 padding-bottom: 1%;
40 padding-left: 3%;
41 width: 100%;
42 background: linear-gradient( #ffffff00,rgba(11, 11, 11, 0.89));
43 float: left;
44 margin-top: -9%;
45 position: absolute;
46 text-align: left;
47 padding-top: 5px;
48 color: white;
49 font-weight: bold;
50 height: 14%;
51 font-size: 12px;
52 font-family: Arial, Helvetica, sans-serif;
53 }
54 .slide-img-responsive {
55 width: 100%;
56 height: 155px !important;
57 }
58 .img-responsive-detail {
59 width: 98%;
60 height: 155px !important;
61 }
62 .carousel-image-name-photo-img {
63 width: 96%;
64 float: left;
65 text-align: justify;
66 padding-top: 2px;
67 padding: 5px;
68 color: #306e95;
69 font-weight: bold;
70 font-size: 13px;
71 font-family: Arial, Helvetica, sans-serif;
72 }
73 .titile-danh-sach-hinh-anh {
74 color: #10406e;
75 font-weight: 600;
76 margin: 10px;
77 margin-left: 28px;
78 font-size: 14px;
79 text-align: justify;
80 }
81 .image-viewer-info{
82 display: none;
83 }
84 .lfr-pagination{
85 display: none;
86 }
87 #myDropdownalbum{
88
89 float: left;
90 z-index: 5;
91 margin-left: 20%;
92 }
93 .page-menu{
94 width: 70%;
95 }
96 .cursor{
97
98 color: #777;
99 pointer-events: none;
100 cursor: not-allowed;
101 }
102 </style>
103<#assign httpRequest = portalUtil.getOriginalServletRequest(portalUtil.getHttpServletRequest(renderRequest))>
104<#assign idArticle = getterUtil.getLong(httpRequest.getParameter("id"))>
105<#assign page = getterUtil.getLong(httpRequest.getParameter("page"))>
106 <#assign AssetCategoryService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryService")>
107 <#assign AssetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService")>
108 <#assign assetVocabularyLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetVocabularyLocalService")>
109 <#assign AssetCategoryPropertyLocalServiceUtil = staticUtil["com.liferay.asset.kernel.service.AssetCategoryPropertyLocalServiceUtil"]/>
110 <#assign AssetPublisherUtil = serviceLocator.findService("com.liferay.asset.publisher.web.util.AssetPublisherUtil")/>
111 <#assign DLFileEntryLocalServiceUtil = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFileEntryLocalService")/>
112
113
114
115<#assign indexCur = -1 />
116<#list portletPreferences?keys as k>
117 <#if "delta" = k>
118 <#assign indexCur = k?index />
119 </#if>
120 </#list>
121 <#assign lvalues= portletPreferences?values />
122 <#assign numberConfig = lvalues[indexCur][0] />
123
124<#assign indexPage = -1 />
125<#list portletPreferences?keys as k>
126 <#if "paginationType" = k>
127 <#assign indexPage = k?index />
128 </#if>
129 </#list>
130 <#assign pageValues= portletPreferences?values />
131 <#assign stylePage = pageValues[indexPage][0] />
132 <#if validator.isNotNull(idArticle)>
133 <#assign nameAlbum = AssetCategoryService.getCategory(idArticle) />
134 </#if>
135 <#assign i = 0 >
136 <#assign Category = AssetCategoryService.getChildCategories(idArticle) />
137 <#assign listCates = [] >
138 <#list Category as ategory>
139 <#assign i =i+1 >
140 </#list>
141<#if validator.isNotNull(i?number) >
142 <div class="row">
143 <div class="col-md-2 col-lg-2"></div>
144 <div class="col-md-8 col-lg-8">
145 <#assign start = 0 >
146 <#assign end = 0 >
147 <#if page<=1 >
148 <#assign start=0 >
149 <#assign end=numberConfig >
150 <#else>
151 <#assign star= page-1 >
152 <#assign start= star*numberConfig?number >
153 <#assign end=start?number+numberConfig?number >
154 </#if>
155 <ul class="mtouserphoto-ul-image row row-swt-responsive">
156 <#if validator.isNotNull(idArticle) >
157<#assign listCategory = AssetCategoryService.getVocabularyCategories(themeDisplay.getScopeGroupId(),idArticle,nameAlbum.getVocabularyId(), start?number , end?number ,null) />
158 <div class="titile-danh-sach-hinh-anh">Danh sách album ${nameAlbum.getName()}</div>
159 <#list listCategory as categoryChil>
160 <#assign categoryPropertyList = AssetCategoryPropertyLocalServiceUtil.getCategoryProperties(categoryChil.getCategoryId())/>
161 <#list categoryPropertyList as categoryProperty>
162 <#if (categoryProperty.getKey() == "icon")>
163 <#assign idDLEntry = categoryProperty.getValue()/>
164 <#if (idDLEntry?number > 0)>
165 <#assign fileEntry = DLFileEntryLocalServiceUtil.getDLFileEntry(idDLEntry?number) />
166 <#assign fileNameUrl = fileEntry.getTitle()/>
167 <#assign folderId = fileEntry.getFolderId()/>
168 <#assign url = themeDisplay.getPortalURL() + themeDisplay.getPathContext() + "/documents/" + themeDisplay.getScopeGroupId() + "/" + folderId + "/" + fileNameUrl />
169 </#if>
170 </#if>
171 </#list>
172 <li class="mtouserphoto-li-image col-swt col-xs-12 col-sm-6 col-md-3 col-lg-3">
173 <div id="myCarousel" class="col-image-carousel carousel slide" data-ride="carousel" data-interval="60000">
174 <div class="item">
175 <a href="?id=${categoryChil.getCategoryId()}">
176 <img src="${url}" class="slide-img-responsive"/>
177 <div class="carousel-image-name">
178 <img class="photo-carousel" src="/o/hcm-video-theme/images/hinhanh_07.png">
179 ${categoryChil.getName()}
180 </div>
181 </a>
182 </div>
183 </div>
184 </li>
185
186 </#list>
187
188 </ul>
189 <#assign pageCur = 1 />
190 <#assign x = i?number/numberConfig?number />
191 <#assign y =x?floor />
192 <#if i?number%numberConfig?number == 0>
193 <#assign pageTotal = i?number/numberConfig?number />
194 <#else>
195 <#assign pageTotal = y?number +1 />
196 </#if>
197 <#if validator.isNull(page)>
198 <#assign pageNext = 2/>
199 <#else>
200 <#assign pageNext = page + 1/>
201 </#if>
202 <#assign pagePre = page - 1/>
203 <#if stylePage == "regular">
204
205 <div id="myDropdownalbum" class="dropdown">
206 <button id="myTriggeralbum" class="btn btn-default dropdown-toggle" type="button">
207 Trang <#if validator.isNull(page)>1<#else> ${page} </#if> của ${pageTotal}
208 <span class="caret"></span>
209 </button>
210 <ul class="dropdown-menu">
211 <#list 1..pageTotal as x>
212 <li class="">
213 <a tabindex="-1" href="?page=${x}">${x}</a>
214 </li>
215 </#list>
216 </ul>
217 <small class="search-results"> — Dòng ${start + 1} - <#if (end?number <i?number) > ${end} <#else> ${i?number} </#if> (Tổng số: ${i}). </small>
218 </div>
219 <div class ="page-menu">
220 <ul class="lfr-pagination-buttons pager">
221 <li class="">
222 <a href="?page=${pageCur}" class="<#if page <=1 > cursor </#if>" > ← Đầu tiên </a>
223 </li>
224 <li class="">
225 <a href="?page=${pagePre}" class="<#if page <=1 > cursor </#if>"> Trước </a>
226 </li>
227 <li class="">
228 <a href="?page=${pageNext}" class="<#if (page =pageTotal) || (numberConfig?number>=i?number) > cursor </#if>"> Tiếp theo </a>
229 </li>
230 <li class="">
231 <a href="?page=${pageTotal}" class="<#if (page =pageTotal) || (numberConfig?number>=i?number) > cursor </#if>"> Cuối cùng → </a>
232 </li>
233 </ul>
234 </div>
235
236
237 </#if>
238 </#if>
239
240 </div>
241
242 <div class="col-md-2 col-lg-2"></div>
243</div>
244</#if>
245
246<script>
247 YUI().use(
248 'aui-dropdown',
249 function(Y) {
250 new Y.Dropdown(
251 {
252 boundingBox: '#myDropdownalbum',
253 trigger: '#myTriggeralbum'
254 }
255 ).render();
256 }
257);
258</script>
Có lỗi xảy ra trong quá trình xử lý biểu mẫu.
The following has evaluated to null or missing: ==> AssetCategoryService.getCategory(idArticle) [in template "20115#20151#84164" at line 145, column 25] ---- 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: #assign nameAlbum = AssetCategoryServ... [in template "20115#20151#84164" at line 145, column 4] ----
1<style>
2
3 .photo-title {
4 width: 100%;
5 font-size: 20px;
6 padding: 0 0 10px 0;
7 border-bottom: 1px solid #085791;
8 margin-bottom: 20px;
9 color: #085791;
10 font-weight: 600;
11 text-transform: uppercase;
12 margin-top: 5px;
13 cursor: pointer;
14 }
15 .photo-spantitle {
16 font-size: 20px;
17 font-weight: 600;
18 }
19 .mtouserphoto-ul-image {
20 width: 100%;
21 list-style: none;
22 float: left;
23 margin-top: 0%;
24 margin-right: 0px !important;
25 margin-left: 0px !important;
26 padding: 0;
27 }
28 .mtouserphoto-li-image {
29 float: left;
30 padding-right: 1%;
31 margin-top: 1%;
32 }
33 .col-image-carousel {
34 width: 97%;
35 }
36
37 .carousel-image-name {
38 padding-bottom: 1%;
39 padding-left: 3%;
40 width: 100%;
41 background: linear-gradient( #ffffff00,rgba(11, 11, 11, 0.89));
42 float: left;
43 margin-top: -9%;
44 position: absolute;
45 text-align: left;
46 padding-top: 5px;
47 color: white;
48 font-weight: bold;
49 height: 14%;
50 font-size: 12px;
51 font-family: Arial, Helvetica, sans-serif;
52 }
53 .slide-img-responsive {
54 width: 100%;
55 height: 155px !important;
56 object-fit: cover;
57 }
58 .img-responsive-detail {
59 width: 98%;
60 height: 155px !important;
61 object-fit: cover;
62 }
63 .carousel-image-name-photo-img {
64 width: 96%;
65 float: left;
66 text-align: justify;
67 padding-top: 2px;
68 padding: 5px;
69 color: #085791;
70 font-weight: bold;
71 font-size: 13px;
72 font-family: Arial, Helvetica, sans-serif;
73 }
74 .titile-danh-sach-hinh-anh {
75 color: #10406e;
76 font-weight: 600;
77 margin: 10px;
78 margin-left: 28px;
79 font-size: 14px;
80 text-align: justify;
81 }
82 .image-viewer-info{
83 display: none;
84 }
85 .lfr-pagination{
86 display: none;
87 }
88 #myDropdown{
89
90 float: left;
91 z-index: 5;
92 margin-left: 20%;
93 }
94 .page-menu{
95 width: 70%;
96 }
97 .cursor{
98
99 color: #777;
100 pointer-events: none;
101 cursor: not-allowed;
102 }
103 </style>
104
105 <#assign httpRequest = portalUtil.getOriginalServletRequest(portalUtil.getHttpServletRequest(renderRequest))>
106<#assign idArticle = getterUtil.getLong(httpRequest.getParameter("id"))>
107<#assign page = getterUtil.getLong(httpRequest.getParameter("page"))>
108 <#assign AssetCategoryService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryService")>
109 <#assign AssetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService")>
110 <#assign assetVocabularyLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetVocabularyLocalService")>
111 <#assign AssetCategoryPropertyLocalServiceUtil = staticUtil["com.liferay.asset.kernel.service.AssetCategoryPropertyLocalServiceUtil"]/>
112 <#assign AssetPublisherUtil = serviceLocator.findService("com.liferay.asset.publisher.web.util.AssetPublisherUtil")/>
113 <#assign DLFileEntryLocalServiceUtil = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFileEntryLocalService")/>
114
115
116 <#assign index = -1 />
117<#list portletPreferences?keys as k>
118 <#if "queryValues0" = k>
119 <#assign index = k?index />
120 </#if>
121 </#list>
122 <#assign lvl = portletPreferences?values />
123 <#assign idCategory = lvl[index][0] />
124
125<#assign indexCur = -1 />
126<#list portletPreferences?keys as k>
127 <#if "delta" = k>
128 <#assign indexCur = k?index />
129 </#if>
130 </#list>
131 <#assign lvalues= portletPreferences?values />
132 <#assign numberConfig = lvalues[indexCur][0] />
133
134<#assign indexPage = -1 />
135<#list portletPreferences?keys as k>
136 <#if "paginationType" = k>
137 <#assign indexPage = k?index />
138 </#if>
139 </#list>
140 <#assign pageValues= portletPreferences?values />
141 <#assign stylePage = pageValues[indexPage][0] />
142
143
144 <#if validator.isNotNull(idArticle)>
145 <#assign nameAlbum = AssetCategoryService.getCategory(idArticle) />
146</#if>
147
148 <div class="row row-swt-responsive">
149 <div class="col-md-12 col-lg-12">
150 <div class="photo-title">
151 <span class="photo-spantitle" id="aui_3_4_0_1_1371">
152 <#if validator.isNull(idArticle)>
153 Hình ảnh
154 <#else>
155 ${nameAlbum.getName()}
156 </#if>
157 </span>
158 </div>
159 <div>
160
161 <#assign start = 0 >
162 <#assign end = 0 >
163 <#if page<=1 >
164 <#assign start=0 >
165 <#assign end=numberConfig >
166 <#else>
167 <#assign star= page-1 >
168 <#assign start= star*numberConfig?number >
169 <#assign end=start?number+numberConfig?number >
170 </#if>
171 <#assign i = 0 >
172 <#assign listAssetEntries = AssetEntryLocalService.getAssetCategoryAssetEntries(idArticle)>
173 <#list listAssetEntries as entry>
174 <#assign i =i+1 >
175 </#list>
176<#if validator.isNotNull(i?number) >
177 <ul class="mtouserphoto-ul-image row row-swt-responsive">
178 <#if validator.isNotNull(idArticle) >
179
180 <div class="demo-gallery">
181 <ul id="lightgallery" class="mtouserphoto-ul-image row row-swt-responsive">
182 <#assign listEntries = AssetEntryLocalService.getAssetCategoryAssetEntries(idArticle?number, start?number , end?number)>
183 <#list listEntries as entry>
184 <#attempt>
185 <#assign renderer = entry.getAssetRenderer() />
186 <#assign article = renderer.getArticle() />
187 <#assign document = saxReaderUtil.read(article.getContent()) />
188 <#assign root = document.getRootElement() />
189 <#list root.elements() as element>
190 <#if element.attributeValue("name") == "abstractImage" >
191 <#assign avatar = getterUtil.getString(element.element("dynamic-content").getText())>
192 <li class="mtouserphoto-li-image col-swt col-xs-12 col-sm-6 col-md-3 col-lg-3">
193 <div id="myGallery">
194 <a href="${avatar}" style="text-decoration: none;">
195 <img class="img-responsive-detail" src="${avatar}" style="height: 200px; ">
196 <div class="carousel-image-name-photo-img">
197 ${article.getTitle(locale)}
198 </div>
199 </a>
200 </div>
201 </li>
202 </#if>
203 </#list>
204 <#recover>
205 ${entry.getEntryId()}
206 </#attempt>
207 </#list>
208 </ul>
209 </div>
210
211 </ul>
212 <#assign pageCur = 1 />
213 <#assign x = i?number/numberConfig?number />
214 <#assign y =x?floor />
215 <#if i?number%numberConfig?number == 0>
216 <#assign pageTotal = i?number/numberConfig?number />
217 <#else>
218 <#assign pageTotal = y?number +1 />
219 </#if>
220 <#if validator.isNull(page)>
221 <#assign pageNext = 2/>
222 <#else>
223 <#assign pageNext = page + 1/>
224 </#if>
225 <#assign pagePre = page - 1/>
226 <#if stylePage == "regular">
227
228 <div id="myDropdown" class="dropdown">
229 <button id="myTrigger" class="btn btn-default dropdown-toggle" type="button">
230 Trang <#if validator.isNull(page)>1<#else> ${page} </#if> của ${pageTotal}
231 <span class="caret"></span>
232 </button>
233 <ul class="dropdown-menu">
234 <#list 1..pageTotal as x>
235 <li class="">
236 <a tabindex="-1" href="${currentURL}&id=${idArticle}&page=${x}">${x}</a>
237 </li>
238 </#list>
239 </ul>
240 <small class="search-results"> — Dòng ${start + 1} - <#if (end?number <i?number) > ${end} <#else> ${i?number} </#if> (Tổng số: ${i}). </small>
241 </div>
242 <div class ="page-menu">
243 <ul class="lfr-pagination-buttons pager">
244 <li class="">
245 <a href="${currentURL}&id=${idArticle}&page=${pageCur}" class="<#if page <=1 > cursor </#if>" > ← Đầu tiên </a>
246 </li>
247 <li class="">
248 <a href="${currentURL}&id=${idArticle}&page=${pagePre}" class="<#if page <=1 > cursor </#if>"> Trước </a>
249 </li>
250 <li class="">
251 <a href="${currentURL}&id=${idArticle}&page=${pageNext}" class="<#if (page =pageTotal) || (numberConfig?number>=i?number) > cursor </#if>"> Tiếp theo </a>
252 </li>
253 <li class="">
254 <a href="${currentURL}&id=${idArticle}&page=${pageTotal}" class="<#if (page =pageTotal) || (numberConfig?number>=i?number) > cursor </#if>"> Cuối cùng → </a>
255 </li>
256 </ul>
257 </div>
258
259
260 </#if>
261 </#if>
262 </#if>
263 </div>
264 <div class="col-md-2 col-lg-2"></div>
265 </div>
266 <script>
267
268
269YUI().use(
270 'aui-image-viewer',
271 function(Y) {
272 new Y.ImageViewer(
273 {
274 caption: '',
275 //captionFromTitle uses the DOM title attibute as image caption
276 captionFromTitle: true,
277 centered: true,
278 imageAnim: {
279 duration: 1,
280 easing: 'easeIn'
281 },
282 intervalTime: 5,
283 links: '#myGallery a',
284 playing: true,
285 preloadAllImages: true,
286 preloadNeighborImages: true,
287 showInfo: true,
288 showPlayer: true,
289 zIndex: 1000
290 }
291 ).render();
292 }
293);
294
295
296 YUI().use(
297 'aui-dropdown',
298 function(Y) {
299 new Y.Dropdown(
300 {
301 boundingBox: '#myDropdown',
302 trigger: '#myTrigger'
303 }
304 ).render();
305 }
306);
307</script>