Asset Publisher

Hhj

An error occurred while processing the template.
Java method "com.sun.proxy.$Proxy647.getArticle(long, String)" threw an exception when invoked on com.sun.proxy.$Proxy647 object "com.liferay.journal.service.impl.JournalArticleLocalServiceImpl@24aadf72"; see cause exception in the Java stack trace.

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #assign currentArticle = JournalArtic...  [in template "20097#20123#" at line 690, column 1]
----
1<style> 
2    /*.align-items-center.d-flex.mb-2 {*/ 
3    /*    display: none !important;*/ 
4    /*}*/ 
5    .autofit-row.mb-4.metadata-author { 
6        display: none; 
7
8    .asset-anchor.lfr-asset-anchor { 
9        display: none; 
10
11    .liferayckevideo.video-container video { 
12        width: 100% !important; 
13        height: auto !important; 
14
15 
16    .social-buttons { 
17        display: flex; 
18
19 
20    .article-head { 
21        margin-bottom: 0; 
22
23 
24    .botting-border { 
25        color: #292a32; 
26        background: unset; 
27        font-family: "Roboto"; 
28        text-transform: unset; 
29        font-weight: bold; 
30        font-size: 20px; 
31        margin-bottom: 15px; 
32        border-bottom: 3px solid #d1d2d4; 
33
34 
35    .buttonIn { 
36        position: relative; 
37
38 
39    .btnsend { 
40        color: #FFF; 
41        border-color: #f70000; 
42        padding: 3px 0.75rem; 
43        border: none; 
44        height: 42px; 
45        cursor: pointer; 
46        border-radius: 6px; 
47        background: #C8392B; 
48        margin-top: 17px; 
49        font-size: 14px; 
50        font-style: normal; 
51        font-weight: 700; 
52        line-height: 130%; /* 18.2px */ 
53        letter-spacing: 0.021px; 
54
55 
56    .button-dt { 
57        color: #FFF; 
58        background-color: #f70000; 
59        border-color: #f70000; 
60        padding: 3px 0.75rem; 
61        border-radius: 5px; 
62        margin: 2px; 
63
64 
65    .button-dt-close { 
66        color: #FFF; 
67        background-color: #f70000; 
68        border-color: #f70000; 
69        padding: 3px 0.75rem; 
70        border-radius: 5px; 
71        margin: 2px; 
72
73 
74    .md-textarea { 
75        width: 100%; 
76
77 
78    .comment { 
79        display: inline-block; 
80        margin-top: 5px; 
81        width: 100%; 
82
83 
84    .comment-text { 
85        padding-left: 51px; 
86        margin-top: -9px; 
87        font-size: 14px; 
88
89 
90    .comment-child { 
91        margin-left: 35px; 
92
93 
94 
95    .modal-thongtin { 
96        display: none; 
97        position: fixed; 
98        z-index: 1111; 
99        padding-top: 100px; 
100        left: 0; 
101        top: 0; 
102        width: 100%; 
103        height: 100%; 
104        overflow: auto; 
105        background-color: rgb(0, 0, 0); 
106        background-color: rgba(0, 0, 0, .4); 
107
108 
109    .modal-thongtin-reply { 
110        display: none; 
111        position: fixed; 
112        z-index: 1; 
113        padding-top: 100px; 
114        left: 0; 
115        top: 0; 
116        width: 100%; 
117        height: 100%; 
118        overflow: auto; 
119        background-color: rgb(0, 0, 0); 
120        background-color: rgba(0, 0, 0, .4); 
121
122 
123 
124    .close { 
125        color: #aaaaaa; 
126        float: right; 
127        font-size: 28px; 
128        font-weight: bold; 
129
130 
131    .close:hover, 
132    .close:focus { 
133        color: #000; 
134        text-decoration: none; 
135        cursor: pointer; 
136
137 
138    .btnreply { 
139        color: #FFF; 
140        background-color: #f70000; 
141        border-color: #f70000; 
142        padding: 3px 0.75rem; 
143        border-radius: 5px; 
144        height: 28px; 
145        border: none; 
146        float: right; 
147
148 
149    .autofit-float.autofit-row.portlet-header { 
150        display: none; 
151
152 
153    .breadcrumb > li.active { 
154        color: #f70000; 
155
156 
157    .zalo-share-button { 
158        width: 158px !important; 
159
160 
161    iframe { 
162        min-width: 92px; 
163
164 
165    @media only screen and (min-width: 768px) { 
166        .other-imgs { 
167            height: 60px; 
168
169 
170        .modal-thongtin-content { 
171            background-color: #fefefe; 
172            margin: auto; 
173            padding: 20px; 
174            border: 1px solid #888; 
175            width: 60%; 
176
177
178 
179    @media only screen and (max-width: 768px) { 
180        .pagination2 a { 
181            cursor: pointer; 
182            color: black; 
183            padding: 3px 8px; 
184            text-decoration: none; 
185            transition: background-color .3s; 
186            margin: 0px; 
187            border-radius: 5px; 
188            background: #ddd; 
189
190 
191        .curPage-title { 
192            display: none; 
193
194 
195        h3.title-divvv { 
196            text-align: justify; 
197            margin-top: 16px; 
198            color: var(--darkdefault-212529, #212529); 
199            /*font-family: Roboto;*/ 
200            font-size: 22px; 
201            font-style: normal; 
202            font-weight: 700; 
203            line-height: normal; 
204            letter-spacing: -0.28px; 
205
206 
207        #contentText iframe { 
208            width: 100% !important; 
209
210 
211        .detail-social > a:hover { 
212            cursor: pointer; 
213
214 
215        .article-head .article-info { 
216            margin-bottom: 0; 
217            padding: 4px 0 8px 0; 
218            font-size: 14px; 
219            height: 59px !important; 
220
221 
222        .modal-thongtin-content { 
223            background-color: #fefefe; 
224            margin: auto; 
225            padding: 20px; 
226            border: 1px solid #888; 
227            width: 100%; 
228
229
230 
231    span.sticker-overlay { 
232        background: var(--main-color-background); 
233        color: var(--main-color-text); 
234        opacity: 0.8; 
235
236 
237 
238 
239 
240    .detail__flex { 
241        display: flex; 
242
243 
244    .sp-dislaydate { 
245        color: var(--darkdefault-212529, #212529); 
246        font-size: 16px; 
247        font-style: normal; 
248        font-weight: 400; 
249        line-height: 130%; 
250        letter-spacing: 0.08px; 
251        border-left: 3px solid #212529; 
252        margin-bottom: 18.5px; 
253        padding-left: 12px; 
254        margin-top: 40px; 
255
256 
257    .title-divvv { 
258        text-align: justify; 
259        margin-top: 16px; 
260        color: var(--darkdefault-212529, #212529); 
261        font-size: 22px; 
262        font-style: normal; 
263        font-weight: 700; 
264        line-height: normal; 
265        letter-spacing: -0.28px; 
266
267 
268    #contentText table { 
269        width: 100% !important; 
270        text-align: center; 
271
272 
273    #contentText table { 
274        width: 100% !important; 
275        text-align: center; 
276
277 
278    #contentText p { 
279        text-align: justify; 
280        color: #000; 
281        font-size: 16px; 
282        font-style: normal; 
283        font-weight: 400; 
284        line-height: 130%; 
285        letter-spacing: 0.08px; 
286
287 
288    #contentText > .text-summary > p { 
289        color: #000; 
290        font-size: 16px; 
291        font-style: italic; 
292        font-weight: 700; 
293        line-height: normal; 
294
295 
296    #contentText > p:has(img) { 
297        text-align: center; 
298
299 
300    .text-dgbv { 
301        display: flex; 
302        flex-direction: row; 
303        color: #000; 
304        font-size: 14px; 
305        font-style: normal; 
306        font-weight: 500; 
307        line-height: normal; 
308        margin-top: 8px; 
309
310 
311    .like-fb-custom { 
312        margin-top: 6px; 
313        max-width: 90px; 
314
315 
316    .text-trangchu-ctbv { 
317        color: var(--darkdefault-212529, #212529); 
318        font-size: 16px; 
319        font-style: normal; 
320        font-weight: 400; 
321        line-height: 130%; 
322        letter-spacing: 0.08px; 
323
324 
325    .text-gioithieu-ctbv { 
326        color:#0D4C92; 
327        font-size: 16px; 
328        font-style: normal; 
329        font-weight: 500; 
330        line-height: 130%; 
331        letter-spacing: 0.08px; 
332
333 
334    .ctbv-right { 
335        display: flex; 
336        flex-wrap: wrap; 
337        justify-content: flex-end; 
338
339 
340    .title-content-vni { 
341        color: var(--Dark-primary-000000, #000); 
342        font-size: 20px; 
343        font-style: normal; 
344        font-weight: 700; 
345        line-height: 130%; 
346        letter-spacing: 0.03px; 
347
348 
349    .line { 
350        background: #777; 
351        height: 1px; 
352        width: 100%; 
353        margin: 32px 0; 
354
355 
356    .line-tlq { 
357        background: #777; 
358        height: 1px; 
359        width: 100%; 
360        margin: 26px 18px 15px 15px; 
361
362 
363    .text-readmore-tlq { 
364        color: #0D4C92; 
365        font-size: 14px; 
366        font-style: normal; 
367        font-weight: 500; 
368        line-height: 130%; 
369        letter-spacing: 0.175px; 
370        margin-top: 16px; 
371
372 
373    .text-des-tlq > p  { 
374        color: var(--signinupfont-3777777, #777); 
375        font-size: 16px; 
376        font-style: normal; 
377        font-weight: 400!important; 
378        line-height: 130%; /* 18.2px */ 
379        letter-spacing: 0.035px; 
380
381 
382    .text-title-tlq { 
383        color: var(--darkdefault-212529, #212529); 
384        font-size: 16px; 
385        font-style: normal; 
386        font-weight: 700; 
387        line-height: 130%; 
388        letter-spacing: 0.024px; 
389        padding-right: 15px; 
390        padding-left: 15px; 
391
392 
393    .text-title-tlq-img { 
394        color: var(--darkdefault-212529, #212529); 
395        font-size: 16px; 
396        font-style: normal; 
397        font-weight: 700; 
398        line-height: 130%; 
399        letter-spacing: 0.024px; 
400        margin-top: 32px; 
401
402 
403    .title-content-tlq { 
404        color: var(--Dark-primary-000000, #000); 
405        font-size: 20px; 
406        font-style: normal; 
407        font-weight: 700; 
408        line-height: 130%; 
409        letter-spacing: 0.03px; 
410        margin-top: 22px; 
411
412 
413    .box-tlq { 
414        border-radius: 8px; 
415        border: 1px solid #C7C7C7; 
416        background: #FAFAFA; 
417
418 
419    .limit-title-1 { 
420        display: block; 
421        text-overflow: ellipsis; 
422        word-wrap: break-word; 
423        overflow: hidden; 
424        max-height: 3em; 
425        display: -webkit-box; 
426        -webkit-line-clamp: 1; 
427        -webkit-box-orient: vertical; 
428
429 
430    .border-item { 
431        border-radius: 8px; 
432        border: 1px solid var(--stroke-777777, rgba(119, 119, 119, 0.50)); 
433        margin: 0px 17px; 
434
435 
436    .tin-slide-img-left { 
437        border-radius: 8px 0px 0px 8px; 
438
439 
440    .sdt-list-tlq-items { 
441        color: var(--darkdefault-212529, #212529); 
442        font-size: 16px; 
443        font-style: normal; 
444        font-weight: 400; 
445        line-height: 130%; 
446        letter-spacing: 0.024px; 
447
448 
449    .sdt-list-tlq-items:hover > a{ 
450        color: #0D4C92!important; 
451        font-weight: 700; 
452
453 
454    .sdt-list-tlq-items:hover::before { 
455        background: #0D4C92; 
456
457    .sdt-list-tlq-items::before { 
458        position: absolute; 
459        top: 7px; 
460        left: 0; 
461        content: ""; 
462        height: 6px; 
463        width: 6px; 
464        border-radius: 8px; 
465        background: #D9D9D9; 
466        margin-right: 5px; 
467
468 
469    .text-border { 
470        color: #000; 
471        font-size: 18px; 
472        font-style: normal; 
473        font-weight: 400; 
474        line-height: 130%; 
475        letter-spacing: 0.027px; 
476        border-bottom: 3px solid #f70000; 
477
478 
479    .form-chitiet { 
480        border-radius: 6px; 
481        background: #F2F2F2; 
482        border-color: #F2F2F2; 
483
484 
485    .form-chitiet::placeholder { 
486        color: rgba(119, 119, 119, 0.50); 
487        font-size: 14px; 
488        font-style: normal; 
489        font-weight: 400; 
490        line-height: 130%; 
491        letter-spacing: 0.021px; 
492
493 
494    .lbl-blyk { 
495        color: #000; 
496        font-size: 16px; 
497        font-style: normal; 
498        font-weight: 500; 
499        line-height: 130%; 
500        letter-spacing: 0.024px; 
501
502 
503    .align-right { 
504        text-align: right; 
505        border: 0; 
506
507 
508    .gg-custom { 
509        margin-top: 10px; 
510
511 
512    .avatar { 
513        display: block; 
514        width: 40px; 
515        height: 40px; 
516        margin-right: 13px; 
517        border-radius: 50%; 
518        overflow: hidden; 
519
520 
521    .item { 
522        padding-bottom: 16px; 
523        margin-bottom: 16px; 
524        display: flex; 
525        border-bottom: 1px solid rgba(119, 119, 119, 0.30); 
526
527    .user-name { 
528        color: #000; 
529        font-size: 16px; 
530        font-style: normal; 
531        font-weight: 700; 
532        line-height: 130%; 
533        letter-spacing: 0.024px; 
534
535    .text-comment { 
536        color: #4D4D4D; 
537        font-size: 16px; 
538        font-style: normal; 
539        font-weight: 400; 
540        line-height: 130%; 
541        letter-spacing: 0.08px; 
542
543    .btnmorecmt { 
544        width: 285px; 
545        padding: 12px 50px; 
546        justify-content: center; 
547        align-items: center; 
548        gap: 10px; 
549        border-radius: 8px; 
550        border: 1px solid #000; 
551        color: #000; 
552        font-size: 14px; 
553        font-style: normal; 
554        font-weight: 400; 
555        line-height: 130%; /* 18.2px */ 
556        letter-spacing: 0.021px; 
557        background: none; 
558
559    .content-left-tlq{ 
560        padding: 0!important; 
561
562    .content-right-tlq{ 
563        padding-left: 32px!important; 
564
565    .content-right-tlq:hover, 
566    .content-right-tlq:hover ~ .content-left-tlq { 
567        background-color: #0D4C92; 
568
569 
570    .content-right-tlq:hover .text-title-tlq-img, 
571    .content-right-tlq:hover .text-des-tlq > p , 
572    .content-right-tlq:hover .text-readmore-tlq{ 
573        color: #ffffff!important; 
574
575    .content-right-tlq, 
576    .content-left-tlq, 
577    .content-right-tlq .text-title-tlq-img, 
578    .content-right-tlq .text-des-tlq > p , 
579    .content-right-tlq .text-readmore-tlq { 
580        transition: all 0.9s ease; 
581
582 
583    @media only screen and (max-width: 576px) { 
584        .detail__sticky { 
585            display: none; 
586
587        .h-img-ctbv { 
588            height: 100%; 
589
590 
591        .text-title-tlq-img { 
592            margin-top: 10px; 
593
594 
595        #tin-slide-img-left { 
596            height: 100% !important; 
597
598 
599        .content-right-tlq { 
600            padding-left: 12px !important; 
601
602        #contentText p, 
603        #contentText > .text-summary > p 
604
605            line-height: 1.6; 
606
607     
608
609 
610    .star { 
611        position: relative; 
612        display: inline-block; 
613        transition: color 0.2s ease; 
614        color: #ebebeb; 
615
616 
617    .star:before { 
618        content: '\2605'; 
619        width: 30px; 
620        height: 30px; 
621        font-size: 30px; 
622
623 
624    .star:hover, 
625    .star.selected, 
626    .star:hover ~ .star, 
627    .star.selected ~ .star { 
628        transition: color 0.8s ease; 
629        color: #FDE16D; 
630
631    .ratings-wrapper { 
632        display: inline-block; 
633        margin-bottom: 20px; 
634
635 
636    .ratings { 
637        display: flex; 
638        flex-direction: row-reverse; 
639
640 
641    .ratings span { 
642        cursor: pointer; 
643        transition: color 0.8s ease; 
644        font-size: 50px; 
645
646 
647    .ratings span:hover { 
648        transition: color 0.8s ease; 
649        color: #FDE16D; 
650
651 
652    .ratings span:hover ~ span { 
653        transition: color 0.8s ease; 
654        color: #FDE16D; 
655
656 
657    .ratings span[data-clicked] { 
658        color: #FDE16D; 
659
660 
661    .ratings span[data-clicked] ~ span { 
662        color: #FDE16D; 
663
664 
665    .reset { 
666        font-size: 18px; 
667        text-decoration: none; 
668        background-color: #4f5a78; 
669        padding: 15px 50px; 
670        display: inline-block; 
671        margin-top: 20px; 
672        color: #fff; 
673        border: none; 
674        cursor: pointer; 
675
676 
677    .reset:hover { 
678        filter: brightness(1.2); 
679
680    .asset-details .mr-3 a{ 
681        display: none !important; 
682
683    .separator{ 
684        display: none !important; 
685
686</style> 
687<#assign AssetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService" )> 
688<#assign JournalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")> 
689 
690<#assign currentArticle = JournalArticleLocalService.getArticle(getterUtil.getLong(groupId),.vars['reserved-article-id'].data)> 
691<#assign currentArticleResourcePrimKey = currentArticle.getResourcePrimKey()> 
692 
693<#assign currentArticleAssetEntry = AssetEntryLocalService.getEntry("com.liferay.journal.model.JournalArticle", currentArticleResourcePrimKey)/> 
694 
695<#assign articlePrimKey = currentArticle.resourcePrimKey> 
696<#assign DDMStructureKey = currentArticle.DDMStructureKey> 
697 
698<#assign catLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService")> 
699<#assign articleCatId = catLocalService.getCategoryIds("com.liferay.journal.model.JournalArticle", getterUtil.getLong(articlePrimKey))> 
700 
701<#assign assetEntryQueryService = objectUtil('com.liferay.asset.kernel.service.AssetEntryLocalServiceUtil')> 
702 
703<#assign assetEntryQuery = objectUtil('com.liferay.asset.kernel.service.persistence.AssetEntryQuery')> 
704 
705 
706<#assign search = assetEntryQuery.setAnyCategoryIds(articleCatId)> 
707<#assign search = assetEntryQuery.setOrderByCol1("publishDate")/> 
708<#assign search = assetEntryQuery.setStart(0)/> 
709<#assign search = assetEntryQuery.setEnd(10)/> 
710<#assign search = assetEntryQuery.setOrderByType1("DESC")/> 
711 
712<#assign teste = assetEntryQueryService.getEntries(assetEntryQuery) 
713totalPage = 0/> 
714 
715<#assign 
716title = .vars['reserved-article-title'].data 
717portalURL = themeDisplay.getPortalURL() 
718currentUrl = portalURL + themeDisplay.getURLCurrent() 
719imageUrl = portalURL + .vars['reserved-article-small-image-url'].data 
720srcfb = "https://www.facebook.com/plugins/like.php?href=${currentUrl}&width=92&layout=button_count&locale=vi_VN&action=like&size=small&share=false&height=28&appId=252861586372350" 
721 
722displayDate = .vars['reserved-article-display-date'].data 
723summary = .vars['reserved-article-description'].data/> 
724 
725<#assign scopeId = themeDisplay.getScopeGroupId()> 
726<#assign contentId = .vars['reserved-article-id'].data> 
727<#assign originalLocale = .locale> 
728<#setting locale = localeUtil.getDefault()> 
729<#assign displayDate = displayDate?datetime("EEE, d MMM yyyy HH:mm:ss Z")> 
730<#assign locale = originalLocale> 
731<#assign displayDate = displayDate?string("EEEE, dd/MM/yyyy, HH:mm a ")> 
732<#assign listLayoutDHD = [5474,5512,179]> 
733<#assign layo = themeDisplay.getPlid() /> 
734<#assign noImageUrl = "/documents/60205/77945/no-image.jpg" > 
735 
736<@liferay_util["html-top"]> 
737    <meta name="title" property="og:title" content="${title?html}"> 
738    <meta name="image" property="og:image" content="${imageUrl}"> 
739    <meta name="imageurl" property="og:image:url" content="${imageUrl}"> 
740    <meta name="description" property="og:description" content="${summary?html}"> 
741    <meta name="url" property="og:url" content="${currentUrl}"> 
742</@> 
743<#assign 
744theme_display = themeDisplay 
745images_folder = theme_display.getPathThemeImages() 
746/> 
747 
748<script> 
749    $(document).ready(function () { 
750        $(".hrefShareFb").attr("href", "https://www.facebook.com/sharer/sharer.php?u=" + window.location.href); 
751        $("#hrefShareEmail").attr("href", "mailto:?subject=I wanted you to see this site&amp;body=Check out this site " + window.location.href); 
752        $("#hrefShareSkype").attr("href", "https://web.skype.com/share?url=" + window.location.href); 
753        $("#trigger_zalo").attr("data-href", "" + window.location.href); 
754        $(".hrefShareTwitter").attr("href", "https://twitter.com/intent/tweet?text=" + window.location.href); 
755        var modal = $('.modal-thongtin'); 
756        var btn = $('.btnsend'); 
757        var button_dt = $('.button-dt'); 
758        var button_dt_close = $('.button-dt-close'); 
759        var span = $('.close'); 
760        var baiVietId = $('#baiVietId'); 
761        var tieuDe = $('#tieuDe'); 
762        var commentContent = $('#commentContent'); 
763        var commentName = $('#commentName'); 
764        var commentAddress = $('#commentAddress'); 
765        var commentEmail = $('#commentEmail'); 
766 
767        /*btn.click(function () { 
768            if (commentContent.val().length == 0) { 
769                alert('Vui lòng nhập nội dung ý kiến!'); 
770            } else { 
771                modal.show(); 
772                btn.hide(); 
773
774        });*/ 
775 
776 
777        button_dt.click(function () { 
778            const valid = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; 
779            if (commentName.val().length == 0) { 
780                commentName.css('border-color', 'red'); 
781                commentName.focus(); 
782            } else if (commentAddress.val().length == 0) { 
783                commentAddress.css('border-color', 'red'); 
784                commentAddress.focus(); 
785            } else if (commentEmail.val().length == 0) { 
786                commentEmail.css('border-color', 'red'); 
787                commentEmail.focus(); 
788            } else if (!valid.test(commentEmail.val())) { 
789                commentEmail.css('border-color', 'red'); 
790                commentEmail.focus(); 
791                alert('Vui lòng nhập đúng email!'); 
792            } else { 
793                comment(baiVietId.val(), tieuDe.val(), commentContent.val(), commentName.val(), commentAddress.val(), commentEmail.val(), ${groupId}); 
794                commentContent.val(''); 
795                commentName.val(''); 
796                commentAddress.val(''); 
797                commentEmail.val(''); 
798                modal.hide(); 
799                btn.show(); 
800
801        }); 
802 
803        button_dt_close.click(function () { 
804            commentContent.val(''); 
805            commentName.val(''); 
806            commentAddress.val(''); 
807            commentEmail.val(''); 
808            commentName.css('border-color', '#ccc'); 
809            commentAddress.css('border-color', '#ccc'); 
810            commentEmail.css('border-color', '#ccc'); 
811            modal.hide(); 
812            btn.show(); 
813 
814        }); 
815 
816        span.click(function () { 
817            commentContent.val(''); 
818            commentName.val(''); 
819            commentAddress.val(''); 
820            commentEmail.val(''); 
821            modal.hide(); 
822            $('.replyBox').hide(); 
823            btn.show(); 
824 
825            $('.inputReplyContent').val(''); 
826            commentNameReply.val(''); 
827            commentAddressReply.val(''); 
828            commentEmailReply.val(''); 
829            modal_reply.hide(); 
830            $('.replyBox').hide(); 
831            btnreply.show(); 
832        }); 
833 
834        $(window).on('click', function (e) { 
835            if ($(e.target).is('.modal-thongtin')) { 
836                commentContent.val(''); 
837                commentName.val(''); 
838                commentAddress.val(''); 
839                commentEmail.val(''); 
840                modal.hide(); 
841                btn.show(); 
842
843            if ($(e.target).is('.modal-thongtin-reply')) { 
844                $('.inputReplyContent').val(''); 
845                commentNameReply.val(''); 
846                commentAddressReply.val(''); 
847                commentEmailReply.val(''); 
848                modal_reply.hide(); 
849                btnreply.show(); 
850
851        }); 
852 
853 
854        var modal_reply = $('.modal-thongtin-reply'); 
855        var btnreply = $('.btnreply'); 
856        var button_dt_reply = $('.button-dt-reply'); 
857        var button_dt_reply_close = $('.button-dt-reply-close'); 
858        var span = $('.close'); 
859        var commentNameReply = $('#commentNameReply'); 
860        var commentAddressReply = $('#commentAddressReply'); 
861        var commentEmailReply = $('#commentEmailReply'); 
862 
863        function submitreply() { 
864            var commentId = $('#commentId').val(); 
865            if ($('#inputReplyContent' + commentId).val().length == 0) { 
866                alert('Vui lòng nhập nội dung ý kiến!'); 
867            } else { 
868                modal_reply.show(); 
869                $('#commentContentReply').val($('#inputReplyContent' + commentId).val()); 
870                btnreply.hide(); 
871
872
873 
874        button_dt_reply.click(function () { 
875            if (commentNameReply.val().length == 0) { 
876                commentNameReply.css('border-color', 'red'); 
877            } else if (commentAddressReply.val().length == 0) { 
878                commentAddressReply.css('border-color', 'red'); 
879            } else if (commentEmailReply.val().length == 0) { 
880                commentEmailReply.css('border-color', 'red'); 
881            } else { 
882                replyComment($('#commentId').val(), baiVietId.val(), tieuDe.val(), $('#commentContentReply').val(), commentNameReply.val(), commentAddressReply.val(), commentEmailReply.val()); 
883                $('.inputReplyContent').val(''); 
884                commentNameReply.val(''); 
885                commentAddressReply.val(''); 
886                commentEmailReply.val(''); 
887                modal_reply.hide(); 
888
889        }); 
890 
891        button_dt_reply_close.click(function () { 
892            $('.inputReplyContent').val(''); 
893            commentNameReply.val(''); 
894            commentAddressReply.val(''); 
895            commentEmailReply.val(''); 
896            modal_reply.hide(); 
897 
898        }); 
899    }); 
900 
901    $(function () { 
902        var star = '.star', 
903            selected = '.selected'; 
904        $(star).on('click', function () { 
905            $(selected).each(function () { 
906                $(this).removeClass('selected'); 
907            }); 
908            $(this).addClass('selected'); 
909        }); 
910    }); 
911 
912    function submitreply() { 
913        var commentId = $('#commentId').val(); 
914        if ($('#inputReplyContent' + commentId).val().length == 0) { 
915            alert('Vui lòng nhập nội dung ý kiến!'); 
916        } else { 
917            $('.modal-thongtin-reply').show(); 
918            $('#commentContentReply').val($('#inputReplyContent' + commentId).val()); 
919            $('.btnreply').hide(); 
920
921
922 
923    function changePageSize() { 
924        var pageSize = $('#pageSize').val(); 
925        var pageIndex = $('#pageIndex').val(); 
926        paginate(pageIndex, pageSize); 
927
928 
929    function changePageIndex() { 
930        var pageSize = $('#pageSize').val(); 
931        var pageIndex = $('#pageIndex').val(); 
932        $('#curPage').val(pageIndex); 
933        paginate(pageIndex, pageSize); 
934
935 
936    function gotoPage(i) { 
937        $('a[name="gotoPage"]').removeClass("active"); 
938        $('#gotoPage' + i).addClass("active"); 
939        $('.list-unstyled').css("display", "none"); 
940        $('ul[name="list-unstyled-' + i + '"]').css("display", "grid"); 
941        $('#currentPage').val(i); 
942
943 
944    function previousPage() { 
945        var i = $('#currentPage').val(); 
946        if (i > 1) { 
947            gotoPage(Number(i) - 1); 
948
949
950 
951    function nextPage() { 
952        var i = $('#currentPage').val(); 
953        var totalPage = $('#totalPages').val(); 
954        console.log(i); 
955        console.log(totalPage); 
956        if (i < totalPage) { 
957            gotoPage(Number(i) + 1); 
958
959
960 
961 
962</script> 
963<div id="fb-root"></div> 
964<div class="detail__flex"> 
965    <div class="detail__sticky"> 
966        <div class="detail__scroll-action"> 
967            <div class="detail-social"> 
968                <a onclick="fontMinus();" href="javascript:void(0);" title="Giảm cỡ chữ" data-toggle="tooltip"> 
969				<span class="icon"> 
970					<svg xmlns="http://www.w3.org/2000/svg" width="28" height="28" viewBox="0 0 28 28" fill="none"> 
971						<circle cx="14" cy="14" r="13.5" stroke="#777777"/> 
972						<path d="M17.5 15.5L13.75 11.75L10 15.5" stroke="#777777" stroke-width="1.5" 
973                              stroke-linecap="round" stroke-linejoin="round"/> 
974					</svg> 
975				</span> 
976                </a> 
977                <a onclick="fontPlus();" href="javascript:void(0);" title="Tăng cỡ chữ" data-toggle="tooltip"> 
978				<span class="icon"> 
979					<svg xmlns="http://www.w3.org/2000/svg" width="28" height="28" viewBox="0 0 28 28" fill="none"> 
980						<circle cx="14" cy="14" r="13.5" transform="rotate(-180 14 14)" stroke="#777777"/> 
981						<path d="M10 12L13.75 15.75L17.5 12" stroke="#777777" stroke-width="1.5" stroke-linecap="round" 
982                              stroke-linejoin="round"/> 
983					</svg> 
984				</span> 
985                </a> 
986                <a onclick="voiceSpeak('contentText','voiceSex')" href="javascript:void(0);" data-toggle="tooltip" 
987                   title="Đọc bài viết"> 
988				<span class="icon"> 
989					<svg xmlns="http://www.w3.org/2000/svg" width="28" height="28" viewBox="0 0 28 28" fill="none"> 
990					<path d="M17.1145 3.14453C16.9531 3.14453 16.7891 3.18828 16.6387 3.28945L6.94531 9.625H2.46094C2.22031 9.625 2.02344 9.82188 2.02344 10.0625V17.9375C2.02344 18.1781 2.22031 18.375 2.46094 18.375H6.94531L16.6387 24.7105C16.7891 24.809 16.9559 24.8555 17.1145 24.8555C17.5711 24.8555 17.9922 24.4918 17.9922 23.9777V4.02227C17.9922 3.5082 17.5711 3.14453 17.1145 3.14453ZM16.0234 21.957L8.02266 16.7262L7.53047 16.4062H3.99219V11.5938H7.53047L8.01992 11.2738L16.0234 6.04297V21.957ZM25.5391 13.0156H22.0391C21.7984 13.0156 21.6016 13.2125 21.6016 13.4531V14.5469C21.6016 14.7875 21.7984 14.9844 22.0391 14.9844H25.5391C25.7797 14.9844 25.9766 14.7875 25.9766 14.5469V13.4531C25.9766 13.2125 25.7797 13.0156 25.5391 13.0156ZM24.3934 20.1742L21.3773 18.4324C21.3278 18.404 21.2731 18.3857 21.2165 18.3785C21.1599 18.3712 21.1023 18.3752 21.0472 18.3902C20.9921 18.4052 20.9405 18.4309 20.8954 18.4658C20.8502 18.5007 20.8123 18.5442 20.784 18.5938L20.2398 19.5371C20.1195 19.7449 20.1906 20.0129 20.3984 20.1332L23.4145 21.875C23.464 21.9034 23.5187 21.9217 23.5753 21.929C23.6319 21.9362 23.6894 21.9322 23.7445 21.9172C23.7996 21.9023 23.8513 21.8766 23.8964 21.8416C23.9416 21.8067 23.9794 21.7632 24.0078 21.7137L24.552 20.7703C24.6723 20.5625 24.5984 20.2945 24.3934 20.1742ZM20.7812 9.40625C20.8096 9.45581 20.8475 9.49929 20.8926 9.53422C20.9378 9.56915 20.9894 9.59484 21.0445 9.60982C21.0996 9.6248 21.1571 9.62878 21.2138 9.62153C21.2704 9.61428 21.3251 9.59595 21.3746 9.56758L24.3906 7.82578C24.5984 7.70547 24.6695 7.4375 24.5492 7.22969L24.0078 6.28906C23.9794 6.23951 23.9416 6.19602 23.8964 6.16109C23.8513 6.12616 23.7996 6.10048 23.7445 6.0855C23.6894 6.07051 23.6319 6.06653 23.5753 6.07378C23.5187 6.08103 23.464 6.09936 23.4145 6.12773L20.3984 7.86953C20.2986 7.92775 20.2258 8.02314 20.1961 8.13484C20.1664 8.24655 20.1821 8.36548 20.2398 8.46563L20.7812 9.40625Z" 
991                          fill="#777777"/> 
992					</svg> 
993				</span> 
994                </a> 
995                <a id="void-pause" onclick="voicePause()" href="javascript:void(0);" style="display:none;" 
996                   data-toggle="tooltip" 
997                   title="Tạm dừng đọc"> 
998				<span class="icon"> 
999					<i class="fa fa-pause" style="vertical-align: middle;opacity: 1;color: dimgray;"></i> 
1000				</span> 
1001                </a> 
1002                <a id="void-resume" onclick="voiceResume()" href="javascript:void(0);" style="display:none;" 
1003                   data-toggle="tooltip" 
1004                   title="Tiếp tục đọc"> 
1005                    <i class="icon fa fa-repeat" style="vertical-align: middle;opacity: 1;color: dimgray;"></i> 
1006                </a> 
1007                <a id="void-stop" onclick="voiceCancel()" href="javascript:void(0);" style="display:none;" 
1008                   data-toggle="tooltip" 
1009                   title="Dừng đọc"> 
1010                    <i class="icon fa fa-stop" style="vertical-align: middle;opacity: 1;color: dimgray;"></i> 
1011                </a> 
1012 
1013                <a onclick="giamTuongPhan();" href="javascript:void(0);" 
1014                   data-toggle="tooltip" title="Giảm tương phản"> 
1015					<span class="icon"> 
1016						<img src="/o/portal-home-multi-theme/icons/trothinh/trothinh_bright-down-btn.png" 
1017                             style="vertical-align: middle;opacity: 1;"/> 
1018					</span> 
1019                </a> 
1020                <a onclick="tangTuongPhan();" href="javascript:void(0);" 
1021                   data-toggle="tooltip" title="Tăng tương phản"> 
1022					<span class="icon"> 
1023						<img src="/o/portal-home-multi-theme/icons/trothinh/trothinh_bright-up-btn.png" 
1024                             style="vertical-align: middle;opacity: 1;"/> 
1025					</span> 
1026                </a> 
1027                <a target="_blank" title="Chia sẻ Facebook" class="hrefShareFb"> 
1028                    <span class="icon"> 
1029                        <img src="${images_folder}/icons/iconfacebookvni.png"> 
1030                    </span> 
1031                </a> 
1032 
1033                <a target="_blank" title="Chia sẻ Twitter" class="hrefShareTwitter"> 
1034                    <span class="icon"> 
1035                        <img src="${images_folder}/icons/twittershare.png"> 
1036                    </span> 
1037                </a> 
1038 
1039                <a class="" title="Chia sẻ Zalo" onclick="load_js_zalo();" href="javascript:void(0);"> 
1040				<span class="icon"> 
1041					<img src="${images_folder}/icons/iconzlvni.png"> 
1042				</span> 
1043                </a> 
1044                <span id="trigger_zalo" style="position: absolute;" href="javascript:void(0);" class="zalo-share-button" 
1045                      data-oaid="3853758560685742933" data-layout="2" data-color="blue" data-customize="true" 
1046                      title="Chia sẻ Zalo"></span> 
1047            </div> 
1048        </div> 
1049    </div> 
1050    <div class="detail__main"> 
1051        <span class="text-trangchu-ctbv">TRANG CHỦ / <span class="text-gioithieu-ctbv">TIN TỨC</span></span> 
1052        <div class="main-content main_blog_post_content"> 
1053            <div class="panel mbp_thumb_post" id="main-body"> 
1054                <div class="shortcode-content hreview"> 
1055                    <div style="margin:10px 0px;"> 
1056                        <h3 class="title-divvv">${title}</h3> 
1057                    </div> 
1058                    <div class="article-head"> 
1059                        <div class="article-info" style="border-top: 0px;border-bottom: 0px; height: 33px;"> 
1060                            <div class="social-buttons left" style="float: left!important;"> 
1061                                <ul class="blog_sp_post_meta"> 
1062                                    <li class="list-inline-item"> 
1063                                        <span class="sp-dislaydate">${displayDate}</span> 
1064                                    </li> 
1065                                </ul> 
1066                            </div> 
1067                            <input type="hidden" id="voiceSex" value="Vietnamese Female"/> 
1068                            <input type="hidden" id="tuongphan" value="3"/> 
1069                            <input type="hidden" id="DDMStructureKey" name="DDMStructureKey" 
1070                                   value="${DDMStructureKey}"/> 
1071                            <input type="hidden" id="baiVietId" name="baiVietId" value="${articlePrimKey}"/> 
1072                            <input type="hidden" id="commentId" name="commentId" value=""/> 
1073                            <input type="hidden" id="tieuDe" name="tieuDe" value="${title?html}"/> 
1074                            <input type="hidden" value="1" id="curPage"/> 
1075                            <input type="hidden" value="0" id="totalRelated"/> 
1076                            <input type="hidden" value="${currentUrl}" id="currentURL"/> 
1077                        </div> 
1078                    </div> 
1079                </div> 
1080                <div id="contentText" style="margin:10px 0px;"> 
1081                    <b style="text-align: justify;" class="text-summary">${summary}</b> 
1082                    <#assign sanitizedContent = noiDung.getData()?replace("<script>", "<p class='d-none'>")?replace("</script>", "</p>")> 
1083                    ${sanitizedContent} 
1084                </div> 
1085                <div class="article-info"> 
1086                    <div class="row social-buttons"> 
1087                        <div class="col-lg-10 d-flex align-items-center"> 
1088                            <iframe class="like-fb-custom" src="${srcfb}" width="92" height="28" style="border:none;overflow:hidden" scrolling="no" frameborder="0" allowTransparency="true" allow="encrypted-media"></iframe> 
1089                            <div style="display: flex; align-items: center;"> 
1090                                <p class="text-dgbv">Đánh giá bài viết:</p> 
1091                                <div class="ratings-wrapper ml-2"> 
1092                                    <div data-productid="39" class="ratings"> 
1093                                        <span class="star" data-rating="5"></span> 
1094                                        <span class="star" data-rating="4"></span> 
1095                                        <span class="star" data-rating="3"></span> 
1096                                        <span class="star" data-rating="2"></span> 
1097                                        <span class="star" data-rating="1"></span> 
1098                                    </div> 
1099                                </div> 
1100                            </div> 
1101                        </div> 
1102                        <div class="col-lg-1 ctbv-right"></div> 
1103                    </div> 
1104                </div> 
1105                <div class="line"></div> 
1106                <p class="title-content-vni"> 
1107                    <svg xmlns="http://www.w3.org/2000/svg" width="33" height="32" viewBox="0 0 33 32" fill="none"> 
1108                        <path d="M31.5337 15.445L25.8262 6.89125C25.6445 6.61728 25.3978 6.39252 25.1082 6.23702C24.8185 6.08151 24.4949 6.00008 24.1662 6H5.70117C5.17074 6 4.66203 6.21071 4.28696 6.58579C3.91189 6.96086 3.70117 7.46957 3.70117 8V24C3.70117 24.5304 3.91189 25.0391 4.28696 25.4142C4.66203 25.7893 5.17074 26 5.70117 26H24.1662C24.4947 25.9994 24.818 25.9179 25.1075 25.7626C25.397 25.6074 25.6439 25.3833 25.8262 25.11L31.5299 16.555C31.6401 16.391 31.6993 16.1981 31.7 16.0006C31.7006 15.803 31.6428 15.6097 31.5337 15.445ZM24.1662 24H5.70117V8H24.1662L29.4987 16L24.1662 24Z" 
1109                              fill="#0D4C92"/> 
1110                    </svg> 
1111                    Từ khoá 
1112                </p> 
1113                <div class="menu-tags"> 
1114                    <#list currentArticleAssetEntry.getTags() as tag> 
1115                        <div class="tags"><p class="tag">${tag.name}</p></div> 
1116                    </#list> 
1117                </div> 
1118 
1119                <div id="comment-list"></div> 
1120                <div class="line"></div> 
1121                <div class="col-lg-12 col-xl-12 box-tlq mb-4"> 
1122                    <#if teste?has_content> 
1123                        <h1 class="title-content-tlq font-merri mb-3">Tin liên quan</h1> 
1124                        <div class="row"> 
1125                            <#assign indexLocal = 0/> 
1126                            <#assign 
1127                            isSpecialSite = getterUtil.getBoolean(themeDisplay.getThemeSetting("isSpecialSite")) 
1128                            /> 
1129                            <#list teste?filter(curEntryyy -> curEntryyy.getEntryId() != currentArticleAssetEntry.getEntryId()) as  curEntryyy> 
1130                                <#if curEntryyy?? && curEntryyy.getAssetRenderer()??> 
1131                                    <#assign 
1132                                    renderer = curEntryyy.getAssetRenderer() 
1133                                    className = renderer.getClassName() /> 
1134                                    <#if className == "com.liferay.journal.model.JournalArticle" && indexLocal < 6> 
1135                                        <#assign 
1136                                        title = curEntryyy.getTitle(locale) 
1137                                        article = renderer.getArticle() 
1138                                        SmallImageID  = article.getSmallImageId() 
1139                                        SmallImage  = article.getSmallImageURL() 
1140                                        description = article.getDescription(locale) 
1141                                        curEntryyy = curEntryyy 
1142                                        viewURL = "${themeDisplay.getPathFriendlyURLPublic()}${themeDisplay.getSiteGroup().getFriendlyURL()}/-/${renderer.getUrlTitle()}" 
1143                                        hasMatch = false /> 
1144                                        <#if isSpecialSite?c == "true"> 
1145                                            <#assign currentUrl = themeDisplay.getURLCurrent() /> 
1146                                            <#assign parts_split = currentUrl?split("/")> 
1147                                            <#assign aidx = parts_split?seq_index_of("asset_publisher")> 
1148                                            <#if aidx != -1 && (parts_split?size > (aidx + 1))> 
1149                                                <#assign portletKey = parts_split[aidx + 1]> 
1150                                            <#else> 
1151                                                <#assign portletKey = rvlr> 
1152                                            </#if> 
1153                                            <#assign viewURL = 	"${themeDisplay.getPathFriendlyURLPublic()}${themeDisplay.getSiteGroup().getFriendlyURL()}/chi-tiet/-/asset_publisher/${portletKey}/content/${renderer.getUrlTitle()}/39403" 
1154                                            /> 
1155                                        </#if> 
1156                                        <#list curEntryyy.getCategories() as categoryList> 
1157                                            <#list currentArticleAssetEntry.getCategories() as cateId> 
1158                                                <#if categoryList.getCategoryId() == cateId.getCategoryId()> 
1159                                                    <#assign hasMatch = true /> 
1160                                                    <#break /> 
1161                                                </#if> 
1162                                            </#list> 
1163                                            <#if hasMatch> 
1164                                                <#break /> 
1165                                            </#if> 
1166                                        </#list> 
1167 
1168                                        <#if hasMatch> 
1169                                            <#if SmallImage ?? && SmallImage?length !=0 > 
1170                                                <#assign smallImageUrl = SmallImage> 
1171                                            <#elseif SmallImageID ?? && SmallImageID != 0> 
1172                                                <#assign smallImageUrl = "/image/journal/article?img_id=${SmallImageID}"> 
1173                                            <#else> 
1174                                                <#assign smallImageUrl = "/documents/60205/77945/no-image.jpg" > 
1175                                            </#if> 
1176                                            <#if indexLocal  == 0> 
1177                                                <div class="col-12 d-flex p-0 mb-16" idx="${indexLocal+1}" style="height: 100% !important;"> 
1178                                                    <a href="${viewURL}" class="d-flex w-100 border-item"> 
1179                                                        <div class="col-4 pl-0 content-left-tlq"> 
1180                                                            <img id="tin-slide-img-left" 
1181                                                                 class="tin-slide-img-left img-34-left p-0 h-img-ctbv" 
1182                                                                 src="${smallImageUrl}" alt="" width="100%"  
1183																 onerror="this.onerror=null; this.src='${noImageUrl}';"> 
1184                                                        </div> 
1185                                                        <div class="col-8 content-right-tlq"> 
1186                                                            <p class="limit-title-1 text-title-tlq-img" title="${title}">${title}</p> 
1187                                                            <div class="text-left limit-description-3 text-des-tlq" title="${htmlUtil.extractText(description)}"><p>${htmlUtil.extractText(description)}</p></div> 
1188                                                            <p class="text-readmore-tlq d-mobile-none">Đọc thêm 
1189                                                                <i class="fa fa-angle-right"></i> 
1190                                                            </p> 
1191                                                        </div> 
1192                                                    </a> 
1193                                                </div> 
1194                                                <div class="line-tlq"></div> 
1195                                            <#else> 
1196                                                <div class="col-lg-12" idx="${indexLocal+1}" style="margin-left: 15px;"> 
1197                                                    <li class="sdt-list-tlq-items "><a class="limit-title-1 mr-2" href="${viewURL}" title="${title}">${title}</a></li> 
1198                                                </div> 
1199                                            </#if> 
1200                                            <#assign indexLocal = indexLocal + 1 /> 
1201                                        </#if> 
1202                                    </#if> 
1203                                </#if> 
1204                            </#list> 
1205                        </div> 
1206                    </#if> 
1207                </div> 
1208 
1209            </div> 
1210        </div> 
1211    </div> 
1212</div> 
1213 
1214<script> 
1215    $(document).ready(function () { 
1216        getFeedback(10); 
1217        let stars = document.querySelectorAll(".ratings span"); 
1218        let products = document.querySelectorAll(".ratings"); 
1219        let ratings = []; 
1220 
1221        for(let star of stars){ 
1222            star.addEventListener("click", function(){ 
1223                let children = 	star.parentElement.children; 
1224                for(let child of children){ 
1225                    if(child.getAttribute("data-clicked")){ 
1226                        return false; 
1227
1228
1229 
1230                this.setAttribute("data-clicked","true"); 
1231                let rating = this.dataset.rating; 
1232                let productId = this.parentElement.dataset.productid; 
1233                let data = { 
1234                    "rating": rating, 
1235                    "product-id": productId, 
1236
1237                ratings.push(data); 
1238                localStorage.setItem("rating", JSON.stringify(ratings)); 
1239            }); 
1240
1241 
1242        if(localStorage.getItem("rating")){ 
1243            ratings = JSON.parse(localStorage.getItem("rating")); 
1244            for(let rating of ratings){ 
1245                for(let product of products){ 
1246                    if(rating["product-id"] == product.dataset.productid){ 
1247                        let reverse = Array.from(product.children).reverse(); 
1248                        let index = parseInt(rating["rating"]) - 1; 
1249                        reverse[index].setAttribute("data-clicked", "true"); 
1250
1251
1252
1253
1254    }); 
1255    /*function submitUserForm() { 
1256        var response = grecaptcha.getResponse(); 
1257        if (response.length == 0) { 
1258            $("#g-recaptcha-error").html("<span style='color:red;'>This field is required.</span>"); 
1259            return false; 
1260
1261        return true; 
1262    }; 
1263*/ 
1264    function verifyCaptcha() { 
1265        $("#g-recaptcha-error").html(""); 
1266
1267 
1268    function sendFeedback() { 
1269        let isValid = true; 
1270        var response = grecaptcha.getResponse(); 
1271        if (response.length == 0) { 
1272            $("#g-recaptcha-error").html("<span style='color:red;'>This field is required.</span>"); 
1273            return false; 
1274
1275        $('[required]').each(function () { 
1276            if ($(this).val().toString().trim().length == 0) { 
1277                isValid = false; 
1278                alert('Vui lòng nhập thông tin '+$(this).attr('title')); 
1279                return false; 
1280            } else if ($(this).attr("regex") != undefined){ 
1281                if (new RegExp($(this).attr('regex')).test($(this).val())) { 
1282                    isValid = true; 
1283                } else { 
1284                    alert('Vui lòng nhập đúng định dạng '+$(this).attr('title')) 
1285                    isValid = false; 
1286                    return false; 
1287
1288 
1289            } else { 
1290                isValid = true; 
1291
1292        }); 
1293        const param = JSON.stringify({ 
1294            baiVietId: '${currentArticle.id}', 
1295            noiDung: $("#commentContent").val(), 
1296            ten : $("#commentName").val(), 
1297            mail : $("#email").val(), 
1298            soDienThoai : $("#soDienThoai").val(), 
1299            tieuDeBaiViet :'${currentArticle.title}', 
1300            tenTacGia :'${currentArticle.userName}', 
1301        }); 
1302        console.log(param) 
1303        $.ajax({ 
1304            url: location.origin+'/api/v1/public/tuongtacbaiviet/themBinhLuan', 
1305            type: 'POST', 
1306            cache : false, 
1307            dataType:"json", 
1308            contentType:"application/json", 
1309            data:param, 
1310            success: function () { 
1311                alert("Đã gửi thành công"); 
1312                $("#commentContent").val(''); 
1313                $("#commentName").val(''); 
1314                $("#email").val(''); 
1315                $("#soDienThoai").val(''); 
1316            }, 
1317            error: function (er) { 
1318                alert("Gửi bình luận thất bại"); 
1319
1320        }); 
1321
1322 
1323    function getFeedback(sizecmt) { 
1324        $('#comment-list').empty(); 
1325        const param = JSON.stringify({ 
1326            baiVietId: '${currentArticle.id}' 
1327        }); 
1328        $.ajax({ 
1329            url: location.origin+'/api/v1/public/tuongtacbaiviet/truyCapBaiViet', 
1330            type: 'POST', 
1331            cache : false, 
1332            dataType:"json", 
1333            contentType:"application/json", 
1334            data: param, 
1335        }).done(function (data) { 
1336            var dsBinhLuan = data.msg.thongTinBinhLuans; 
1337            var count = data.msg.thongTinBinhLuans.length; 
1338            var htmlYKien = ''; 
1339            if (dsBinhLuan.length > 0) { 
1340                htmlYKien += '<h2 class="botting-border"><span class="text-border">Bình luận, ý kiến của bạn đọc ('+count+')</span></h2>'; 
1341                for (var i = 0 ; i < dsBinhLuan.length ; i++) { 
1342                    var obj = dsBinhLuan[i]; 
1343                    htmlYKien += '<div class="item box_cm">'; 
1344                    htmlYKien += '<a href="javascript:void(0)" class="avatar">\n' + 
1345                        '                <img src="${images_folder}/icons/iconuser.png">\n' + 
1346                        '            </a>'; 
1347                    htmlYKien += '<div class="item-content">'; 
1348                    htmlYKien += '<span class="user-name">' + obj.ten + '</span>'+' <span class="date-cmt">'+ obj.thoiGianBinhLuan+'</span></br>'; 
1349                    htmlYKien += '<span class="text-comment">' + obj.noiDungHienThi + '</span>'; 
1350                    htmlYKien += '</div>'; 
1351                    htmlYKien += '</div>'; 
1352
1353                if (count > sizecmt) { 
1354                    htmlYKien += '<div class="text-center">\n' + 
1355                        '<button type="submit" class="btnmorecmt" onclick="getFeedback('+(sizecmt+10)+')" >Xem thêm bình luận, ý kiến\n' + 
1356                        '</button>\n' + 
1357                        '</div>'; 
1358
1359                $('#comment-list').append(htmlYKien); 
1360            }; 
1361        }); 
1362
1363</script> 
1364<script src="https://sp.zalo.me/plugins/sdk.js"></script> 
1365<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> 
1366<script src="https://code.responsivevoice.org/responsivevoice.js?key=25hFfRt0"></script> 
1367<script async defer crossorigin="anonymous" src="https://connect.facebook.net/vi_VN/sdk.js#xfbml=1&version=v17.0" nonce="vuMxJ4dq"></script> 
1368<script src="https://www.google.com/recaptcha/api.js" async defer></script> 
1369 
1370 
1371<#macro getMetadataField 
1372fieldName 
1373
1374    <#if stringUtil.split(metadataFields)?seq_contains(fieldName)> 
1375        <span class="metadata-entry metadata-${fieldName}"> 
1376 			<#assign dateFormat = "dd MMM yyyy - HH:mm:ss" /> 
1377 
1378            <#if stringUtil.equals(fieldName, "author")> 
1379                <@liferay.language key="by" /> ${htmlUtil.escape(portalUtil.getUserName(assetRenderer.getUserId(), assetRenderer.getUserName()))} 
1380            <#elseif stringUtil.equals(fieldName, "categories")> 
1381                <@liferay_asset["asset-categories-summary"] 
1382                className=curEntry.getClassName() 
1383                classPK=curEntry.getClassPK() 
1384                portletURL=renderResponse.createRenderURL() 
1385                /> 
1386            <#elseif stringUtil.equals(fieldName, "create-date")> 
1387                ${dateUtil.getDate(curEntry.getCreateDate(), dateFormat, locale)} 
1388            <#elseif stringUtil.equals(fieldName, "expiration-date")> 
1389                ${dateUtil.getDate(curEntry.getExpirationDate(), dateFormat, locale)} 
1390            <#elseif stringUtil.equals(fieldName, "modified-date")> 
1391                ${dateUtil.getDate(curEntry.getModifiedDate(), dateFormat, locale)} 
1392            <#elseif stringUtil.equals(fieldName, "priority")> 
1393                ${curEntry.getPriority()} 
1394            <#elseif stringUtil.equals(fieldName, "publish-date")> 
1395                ${dateUtil.getDate(curEntry.getPublishDate(), dateFormat, locale)} 
1396            <#elseif stringUtil.equals(fieldName, "tags")> 
1397                <@liferay_asset["asset-tags-summary"] 
1398                className=curEntry.getClassName() 
1399                classPK=curEntry.getClassPK() 
1400                portletURL=renderResponse.createRenderURL() 
1401                /> 
1402            <#elseif stringUtil.equals(fieldName, "view-count")> 
1403                ${curEntry.getViewCount()} 
1404            </#if> 
1405 		</span> 
1406    </#if> 
1407</#macro> 

Asset Publisher