Có lỗi xảy ra trong quá trình xử lý biểu mẫu.
Java method "com.sun.proxy.$Proxy2616.getArticle(long, String)" threw an exception when invoked on com.sun.proxy.$Proxy2616 object "com.liferay.journal.change.tracking.internal.service.CTJournalArticleLocalServiceWrapper@c574a87"; see cause exception in the Java stack trace. ---- FTL stack trace ("~" means nesting-related): - Failed at: #assign articlePrimKey = JournalArtic... [in template "34201#34227#43055" at line 531, column 9] ----
1<style>
2 .other-news {
3 color: #cb373b;
4 font-weight: bold;
5 margin-top: 5px;
6 margin-bottom: 3px;
7 overflow: hidden;
8 }
9 .other-news:after {
10 content:"";
11 display: inline-block;
12 height: 0.5em;
13 vertical-align: bottom;
14 width: 100%;
15 margin-right: -100%;
16 margin-left: 10px;
17 border-top: 1px solid #cb373b;
18 }
19 .date-span {
20 color: #888888;
21 font-size: 14px;
22 font-weight: normal;
23 }
24 .limit-tit {
25 display: block;
26 text-overflow: ellipsis;
27 word-wrap: break-word;
28 overflow: hidden;
29 max-height: 6em;
30 display: -webkit-box;
31 -webkit-line-clamp: 2;
32 -webkit-box-orient: vertical;
33 margin: 0;
34 }
35 @media only screen and (min-width: 768px) {
36 .other-imgs {
37 height: 60px;
38 }
39 }
40 @media only screen and (max-width: 500px) {
41 .curPage-title {
42 display: none;
43 }
44 .title-divvv {
45 text-align: justify;
46 margin-top: 50px;
47 }
48 }
49 .pagination2 {
50 display: inline-block;
51 }
52
53 .pagination2 a {
54 cursor: pointer;
55 color: black;
56 float: left;
57 padding: 8px 16px;
58 text-decoration: none;
59 transition: background-color .3s;
60 border: 1px solid #ddd;
61 margin: 0 4px;
62 }
63
64 .pagination2 a.active {
65 background-color: #4CAF50;
66 color: white;
67 border: 1px solid #4CAF50;
68 }
69
70 .pagination2 a:hover:not(.active) {
71 background-color: #ddd;
72 }
73 .tieuDe-asset::after {
74 position: absolute;
75 content: "";
76 left: 100%;
77 top: 0;
78 border-top: 14px solid transparent;
79 border-bottom: 15px solid transparent;
80 border-left: 13px solid darkgray;
81 }
82 .asset-full-content.clearfix.mb-5.show-asset-title {
83 margin-bottom: 0 !important;
84 }
85 .article-head {
86 margin-bottom: 0;
87 }
88 @media only screen and (max-width: 768px) {
89 #contentText iframe {
90 width: 100% !important;
91 }
92 .article-head .article-info {
93 margin-bottom: 0;
94 padding: 15px 0 8px 0;
95 }
96 }
97 @media only screen and (max-width: 500px) {
98 .curPage-title {
99 display: unset !important;
100 }
101 }
102 .paginate-pagination ul {
103
104 margin: 20px 0;
105 padding: 0;
106 list-style: none;
107
108}
109
110.paginate-pagination ul:after {
111
112 content: ' ';
113 display: table;
114 clear: both;
115
116}
117
118.paginate-pagination ul > li {
119
120 float: left;
121 margin-right: 3px;
122
123}
124
125.paginate-pagination ul > li > a.page {
126
127 display: block;
128 height: 30px;
129 width: 30px;
130 text-align: center;
131 line-height: 30px;
132 border: 1px solid #ddd;
133 background: white;
134 text-decoration: none;
135 cursor: pointer;
136
137}
138
139.paginate-pagination ul > li > a.page:hover { opacity: 0.7; }
140.paginate-pagination ul > li > a.page.active { opacity: 0.7; cursor: default; }
141
142.paginate-pagination ul > li > a.page-next.deactive,
143.paginate-pagination ul > li > a.page-prev.deactive { opacity: 0.7; cursor: default; }
144</style>
145<style>
146
147.page_navigation , .alt_page_navigation{
148 padding-bottom: 10px;
149
150}
151
152.page_navigation a, .alt_page_navigation a{
153float: left;
154 width: 32px;
155 text-align: center;
156 padding: 6px 0;
157 border: 1px solid #cdcdcd;
158 border-right: none;
159 background: #fff;
160 color: #45afe4;
161}
162.page_navigation a:hover{
163 cursor: pointer;
164 background: rgb(216, 241, 255);
165}
166.ellipse{
167 float: left;
168 border-right:1px solid #cdcdcd;
169}
170.active_page{
171 background-color:#45afe4 !important;
172 color:#fff !important;
173}
174.component-title{
175display:none;
176}
177.metadata-author{
178display:none;
179}
180.portlet-header{
181display:none;
182}
183</style>
184<script type="text/javascript">
185;
186(function($) { /*******************************************************************************************/
187
188 $.fn.pajinate = function(options) {
189 // Set some state information
190 var current_page = 'current_page';
191 var items_per_page = 'items_per_page';
192
193 var meta;
194
195 // Setup default option values
196 var defaults = {
197 item_container_id: '.content',
198 items_per_page: 5,
199 nav_panel_id: '.page_navigation',
200 nav_info_id: '.info_text',
201 num_page_links_to_display: 5,
202 start_page: 0,
203 wrap_around: false,
204 nav_label_first: 'First',
205 nav_label_prev: 'Prev',
206 nav_label_next: 'Next',
207 nav_label_last: 'Last',
208 nav_order: ["first", "prev", "num", "next", "last"],
209 nav_label_info: 'Showing {0}-{1} of {2} results',
210 show_first_last: true,
211 abort_on_small_lists: false,
212 jquery_ui: false,
213 jquery_ui_active: "ui-state-highlight",
214 jquery_ui_default: "ui-state-default",
215 jquery_ui_disabled: "ui-state-disabled"
216 };
217
218 var options = $.extend(defaults, options);
219 var $item_container;
220 var $page_container;
221 var $items;
222 var $nav_panels;
223 var total_page_no_links;
224 var jquery_ui_default_class = options.jquery_ui ? options.jquery_ui_default : '';
225 var jquery_ui_active_class = options.jquery_ui ? options.jquery_ui_active : '';
226 var jquery_ui_disabled_class = options.jquery_ui ? options.jquery_ui_disabled : '';
227
228 return this.each(function() {
229 $page_container = $(this);
230 $item_container = $(this).find(options.item_container_id);
231 $items = $page_container.find(options.item_container_id).children();
232
233 if (options.abort_on_small_lists && options.items_per_page >= $items.size()) return $page_container;
234
235 meta = $page_container;
236
237 // Initialize meta data
238 meta.data(current_page, 0);
239 meta.data(items_per_page, options.items_per_page);
240
241 // Get the total number of items
242 var total_items = $item_container.children().size();
243
244 // Calculate the number of pages needed
245 var number_of_pages = Math.ceil(total_items / options.items_per_page);
246
247 // Construct the nav bar
248 var more = '<a class="ellipse more">...</a>';
249 var less = '<a class="ellipse less">...</a>';
250 var first = !options.show_first_last ? '' : '<a class="first_link ' + jquery_ui_default_class + '" href="">' + options.nav_label_first + '</a>';
251 var last = !options.show_first_last ? '' : '<a style="border:1px solid #cdcdcd;" class="last_link ' + jquery_ui_default_class + '" href="">' + options.nav_label_last + '</a>';
252
253 var navigation_html = "";
254
255 for (var i = 0; i < options.nav_order.length; i++) {
256 switch (options.nav_order[i]) {
257 case "first":
258 navigation_html += first;
259 break;
260 case "last":
261 navigation_html += last;
262 break;
263 case "next":
264 navigation_html += '<a class="next_link ' + jquery_ui_default_class + '" href="">' + options.nav_label_next + '</a>';
265 break;
266 case "prev":
267 navigation_html += '<a class="previous_link ' + jquery_ui_default_class + '" href="">' + options.nav_label_prev + '</a>';
268 break;
269 case "num":
270 navigation_html += less;
271 var current_link = 0;
272 while (number_of_pages > current_link) {
273 navigation_html += '<a class="page_link ' + jquery_ui_default_class + '" href="" longdesc="' + current_link + '">' + (current_link + 1) + '</a>';
274 current_link++;
275 }
276 navigation_html += more;
277 break;
278 default:
279 break;
280 }
281
282 }
283
284 // And add it to the appropriate area of the DOM
285 $nav_panels = $page_container.find(options.nav_panel_id);
286 $nav_panels.html(navigation_html).each(function() {
287
288 $(this).find('.page_link:first').addClass('first');
289 $(this).find('.page_link:last').addClass('last');
290
291 });
292
293 // Hide the more/less indicators
294 $nav_panels.children('.ellipse').hide();
295
296 // Set the active page link styling
297 $nav_panels.find('.previous_link').next().next().addClass('active_page ' + jquery_ui_active_class);
298
299 /* Setup Page Display */
300 // And hide all pages
301 $items.hide();
302 // Show the first page
303 $items.slice(0, meta.data(items_per_page)).show();
304
305 /* Setup Nav Menu Display */
306 // Page number slices
307 total_page_no_links = $page_container.find(options.nav_panel_id + ':first').children('.page_link').size();
308 options.num_page_links_to_display = Math.min(options.num_page_links_to_display, total_page_no_links);
309
310 $nav_panels.children('.page_link').hide(); // Hide all the page links
311 // And only show the number we should be seeing
312 $nav_panels.each(function() {
313 $(this).children('.page_link').slice(0, options.num_page_links_to_display).show();
314 });
315
316 /* Bind the actions to their respective links */
317
318 // Event handler for 'First' link
319 $page_container.find('.first_link').click(function(e) {
320 e.preventDefault();
321
322 movePageNumbersRight($(this), 0);
323 gotopage(0);
324 });
325
326 // Event handler for 'Last' link
327 $page_container.find('.last_link').click(function(e) {
328 e.preventDefault();
329 var lastPage = total_page_no_links - 1;
330 movePageNumbersLeft($(this), lastPage);
331 gotopage(lastPage);
332 });
333
334 // Event handler for 'Prev' link
335 $page_container.find('.previous_link').click(function(e) {
336 e.preventDefault();
337 showPrevPage($(this));
338 });
339
340
341 // Event handler for 'Next' link
342 $page_container.find('.next_link').click(function(e) {
343 e.preventDefault();
344 showNextPage($(this));
345 });
346
347 // Event handler for each 'Page' link
348 $page_container.find('.page_link').click(function(e) {
349 e.preventDefault();
350 gotopage($(this).attr('longdesc'));
351 });
352
353 // Goto the required page
354 gotopage(parseInt(options.start_page));
355 toggleMoreLess();
356 if (!options.wrap_around) tagNextPrev();
357 });
358
359 function showPrevPage(e) {
360 new_page = parseInt(meta.data(current_page)) - 1;
361
362 // Check that we aren't on a boundary link
363 if ($(e).siblings('.active_page').prev('.page_link').length == true) {
364 movePageNumbersRight(e, new_page);
365 gotopage(new_page);
366 }
367 else if (options.wrap_around) {
368 gotopage(total_page_no_links - 1);
369 }
370
371 };
372
373 function showNextPage(e) {
374 new_page = parseInt(meta.data(current_page)) + 1;
375
376 // Check that we aren't on a boundary link
377 if ($(e).siblings('.active_page').next('.page_link').length == true) {
378 movePageNumbersLeft(e, new_page);
379 gotopage(new_page);
380 }
381 else if (options.wrap_around) {
382 gotopage(0);
383 }
384
385 };
386
387 function gotopage(page_num) {
388
389 page_num = parseInt(page_num, 10)
390
391 var ipp = parseInt(meta.data(items_per_page));
392
393 // Find the start of the next slice
394 start_from = page_num * ipp;
395
396 // Find the end of the next slice
397 end_on = start_from + ipp;
398 // Hide the current page
399 var items = $items.hide().slice(start_from, end_on);
400
401 items.show();
402
403 // Reassign the active class
404 $page_container.find(options.nav_panel_id).children('.page_link[longdesc=' + page_num + ']').addClass('active_page ' + jquery_ui_active_class).siblings('.active_page').removeClass('active_page ' + jquery_ui_active_class);
405
406 // Set the current page meta data
407 meta.data(current_page, page_num);
408 /*########## Ajout de l'option page courante + nombre de pages*/
409 var $current_page = parseInt(meta.data(current_page)+1);
410 // Get the total number of items
411 var total_items = $item_container.children().size();
412 // Calculate the number of pages needed
413 var $number_of_pages = Math.ceil(total_items / options.items_per_page);
414 /*##################################################################*/
415 $page_container.find(options.nav_info_id).html(options.nav_label_info.replace("{0}", start_from + 1).
416 replace("{1}", start_from + items.length).replace("{2}", $items.length).replace("{3}", $current_page).replace("{4}", $number_of_pages));
417
418 // Hide the more and/or less indicators
419 toggleMoreLess();
420
421 // Add a class to the next or prev links if there are no more pages next or previous to the active page
422 tagNextPrev();
423
424 // check if the onPage callback is available and call it
425 if (typeof(options.onPageDisplayed) !== "undefined" ) {
426 options.onPageDisplayed.call(this, page_num + 1)
427 }
428
429 }
430
431 // Methods to shift the diplayed index of page numbers to the left or right
432
433
434 function movePageNumbersLeft(e, new_p) {
435 var new_page = new_p;
436
437 var $current_active_link = $(e).siblings('.active_page');
438
439 if ($current_active_link.siblings('.page_link[longdesc=' + new_page + ']').css('display') == 'none') {
440
441 $nav_panels.each(function() {
442 $(this).children('.page_link').hide() // Hide all the page links
443 .slice(parseInt(new_page - options.num_page_links_to_display + 1), new_page + 1).show();
444 });
445 }
446
447 }
448
449 function movePageNumbersRight(e, new_p) {
450 var new_page = new_p;
451
452 var $current_active_link = $(e).siblings('.active_page');
453
454 if ($current_active_link.siblings('.page_link[longdesc=' + new_page + ']').css('display') == 'none') {
455
456 $nav_panels.each(function() {
457 $(this).children('.page_link').hide() // Hide all the page links
458 .slice(new_page, new_page + parseInt(options.num_page_links_to_display)).show();
459 });
460 }
461 }
462
463 // Show or remove the ellipses that indicate that more page numbers exist in the page index than are currently shown
464
465
466 function toggleMoreLess() {
467
468 if (!$nav_panels.children('.page_link:visible').hasClass('last')) {
469 $nav_panels.children('.more').show();
470 }
471 else {
472 $nav_panels.children('.more').hide();
473 }
474
475 if (!$nav_panels.children('.page_link:visible').hasClass('first')) {
476 $nav_panels.children('.less').show();
477 }
478 else {
479 $nav_panels.children('.less').hide();
480 }
481 }
482
483 /* Add the style class ".no_more" to the first/prev and last/next links to allow custom styling */
484
485 function tagNextPrev() {
486 if ($nav_panels.children('.last').hasClass('active_page')) {
487 $nav_panels.children('.next_link').add('.last_link').addClass('no_more ' + jquery_ui_disabled_class);
488 }
489 else {
490 $nav_panels.children('.next_link').add('.last_link').removeClass('no_more ' + jquery_ui_disabled_class);
491 }
492
493 if ($nav_panels.children('.first').hasClass('active_page')) {
494 $nav_panels.children('.previous_link').add('.first_link').addClass('no_more ' + jquery_ui_disabled_class);
495 }
496 else {
497 $nav_panels.children('.previous_link').add('.first_link').removeClass('no_more ' + jquery_ui_disabled_class);
498 }
499 }
500
501 };
502
503})(jQuery);
504</script>
505<script type="text/javascript">
506 $(document).ready(function(){
507 $('#paging_container5').pajinate({
508 nav_label_first : '<<',
509 nav_label_last : '>>',
510 nav_label_prev : '<',
511 nav_label_next : '>'
512 });
513 });
514
515 </script>
516<#assign
517 title = .vars['reserved-article-title'].data
518 portalURL = themeDisplay.getPortalURL()
519 currentUrl = portalURL + themeDisplay.getURLCurrent()
520 imageUrl = portalURL + .vars['reserved-article-small-image-url'].data
521 srcfb = "https://www.facebook.com/plugins/like.php?href=${currentUrl}&width=172&layout=button_count&action=like&size=small&share=true&height=46&appId"
522 displayDate = .vars['reserved-article-display-date'].data
523 summary = .vars['reserved-article-description'].data/>
524
525 <#assign JournalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")>
526
527 <#assign scopeId = themeDisplay.getScopeGroupId()>
528
529 <#assign contentId = .vars['reserved-article-id'].data>
530
531 <#assign articlePrimKey = JournalArticleLocalService.getArticle(getterUtil.getLong(scopeId), contentId).resourcePrimKey>
532
533 <#assign catLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService")>
534 <#assign articleCatId = catLocalService.getCategoryIds("com.liferay.journal.model.JournalArticle", getterUtil.getLong(articlePrimKey))>
535
536 <#assign categoryList = catLocalService.getAssetEntryAssetCategories(getterUtil.getLong(articlePrimKey))>
537
538 <#assign assetEntryQueryService = objectUtil('com.liferay.asset.kernel.service.AssetEntryLocalServiceUtil')>
539
540 <#assign assetEntryQuery = objectUtil('com.liferay.asset.kernel.service.persistence.AssetEntryQuery')>
541
542
543 <#assign search = assetEntryQuery.setAllCategoryIds(articleCatId)>
544 <#assign search = assetEntryQuery.setOrderByCol1("publishDate")/>
545 <#assign search = assetEntryQuery.setOrderByType1("DESC")/>
546
547 <#assign teste = assetEntryQueryService.getEntries(assetEntryQuery)
548 totalPage = 0/>
549
550<#assign layoutService = serviceLocator.findService("com.liferay.portal.kernel.service.LayoutLocalService") />
551<#if (request.getParameter("plidlayout")?has_content)>
552 <#assign plidlayout = request.getParameter("plidlayout") />
553 <#else>
554 <#assign plidlayout = 2 />
555</#if>
556<#assign layout = layoutService.fetchLayout(plidlayout?number) />
557<#assign curLayout = layoutService.fetchLayout(plid?number) />
558<#assign pageTitle = layout.getName(locale) />
559<#assign pageUrl = layout.getFriendlyURL(locale) />
560<#assign curPageTitle = curLayout.getName(locale) />
561<#assign originalLocale = .locale>
562<#setting locale = localeUtil.getDefault()>
563<#assign displayDate = displayDate?datetime("EEE, d MMM yyyy HH:mm:ss Z")>
564<#assign locale = originalLocale>
565<#assign displayDate = displayDate?string("HH:mm dd/MM/yyyy")>
566
567<#assign listLayoutDHD = [5474,5512,179]>
568<#assign layo = themeDisplay.getPlid() />
569
570<script src="https://sp.zalo.me/plugins/sdk.js"></script>
571<liferay-util:html-top outputKey="htmltop">
572 <meta name="url" property="og:url" content="${currentUrl}" />
573 <meta name="type" property="og:type" content="article" />
574 <meta name="title" property="og:title" content="${.vars['reserved-article-title'].data}" />
575 <meta name="image" property="og:image" content="${imageUrl}" >
576</liferay-util:html-top>
577
578
579
580<div class="row">
581 <div class="col-8">
582
583
584 <#if listLayoutDHD?seq_index_of(layo) > -1 >
585 <div class="brumnoidung">
586 <ul class="breadcrumb">
587 <li class="breadcrumb-item crum1"><a href="/home">Trang chủ</a></li>
588 <li class="breadcrumb-item active">Tin tức</li>
589 </ul>
590 </div>
591 <#else>
592 <span style="position: relative;font-weight: bold;font-size: 17px;border-left: 3px solid #ed0678;padding: 5px;background-color: darkgrey;" class="tieuDe-asset">
593 <a href="${pageUrl}">${pageTitle}</a>
594 </span>
595 <#assign journalArticleId = .vars['reserved-article-id'].data>
596 <#assign journalArticleResourceLocalServiceUtil = staticUtil["com.liferay.journal.service.JournalArticleResourceLocalServiceUtil"]>
597 <#assign assetCategoryLocalServiceUtil = staticUtil["com.liferay.asset.kernel.service.AssetCategoryLocalServiceUtil"]>
598
599 <#assign articleResourcePK = journalArticleResourceLocalServiceUtil.getArticleResourcePrimKey(groupId, journalArticleId)/>
600 <#assign categoryList=assetCategoryLocalServiceUtil.getCategories("com.liferay.journal.model.JournalArticle",articleResourcePK) >
601
602 <#list categoryList as thisCategory>
603 <#if (thisCategory_index==0)>
604 <span class="curPage-title" style="font-size: 17px;padding-left: 17px;font-weight: bold;">${thisCategory.getName()}</span>
605 </#if>
606 </#list>
607 </#if>
608
609 <div class="article-head">
610 <div class="article-info" style="border-top: 0px;border-bottom: 0px;margin-left: 11px;">
611 <div class="social-buttons left">
612 ${displayDate}
613 </div>
614 <div class="social-buttons right">
615 <a class="social-thing" onclick="voiceSpeak('contentText','voiceSex')"; style="margin-right: 5px;"
616 data-toggle="tooltip" title="Đọc bài viết">
617 <img class="volume-up" src="/o/portal-dt-home-theme/images/icons/trothinh_volume-btn.png" style="vertical-align: middle;opacity: 1;width: 16px;"/>
618 </a>
619 <a id="void-pause" class="social-thing" onclick="voicePause()"; style="margin-right: 1px;display:none;"
620 data-toggle="tooltip" title="Tạm dừng đọc">
621 <span class="fa fa-pause" style="vertical-align: middle;opacity: 1;width: 13px;color: dimgray;"/>
622 </a>
623 <a id="void-resume" class="social-thing" onclick="voiceResume()"; style="margin-right: 1px;display:none;"
624 data-toggle="tooltip" title="Tiếp tục đọc">
625 <span class="fa fa-repeat" style="vertical-align: middle;opacity: 1;width: 13px;color: dimgray;"></span>
626 </a>
627 <a id="void-stop" class="social-thing" onclick="voiceCancel()"; style="margin-right: 1px;display:none;"
628 data-toggle="tooltip" title="Dừng đọc">
629 <span class="fa fa-stop"style="vertical-align: middle;opacity: 1;width: 13px;color: dimgray;"/>
630 </a>
631 <a class="social-thing" style="margin-right: 5px;">
632 <img src="/o/portal-dt-home-theme/images/icons/trothinh_wall-ico.png" style="vertical-align: middle;opacity: 1;width: 1px;height: 13px"/>
633 </a>
634 <a class="social-thing" onclick="giamTuongPhan();" style="margin-right: 5px;"
635 data-toggle="tooltip" title="Giảm tương phản">
636 <img src="/o/portal-dt-home-theme/images/icons/trothinh_bright-down-btn.png" style="vertical-align: middle;opacity: 1;width: 16px;"/>
637 </a>
638 <a class="social-thing" onclick="tangTuongPhan();" style="margin-right: 5px;"
639 data-toggle="tooltip" title="Tăng tương phản">
640 <img src="/o/portal-dt-home-theme/images/icons/trothinh_bright-up-btn.png" style="vertical-align: middle;opacity: 1;width: 16px;"/>
641 </a>
642 <a class="social-thing" style="margin-right: 5px;">
643 <img src="/o/portal-dt-home-theme/images/icons/trothinh_wall-ico.png" style="vertical-align: middle;opacity: 1;width: 1px;height: 13px"/>
644 </a>
645 <a class="social-thing" onclick="fontMinus();" style="margin-right: 5px;"
646 data-toggle="tooltip" title="Giảm cỡ chữ">
647 <img src="/o/portal-dt-home-theme/images/icons/trothinh_zoom-down-btn.png" style="vertical-align: middle;opacity: 1;width: 16px;"/>
648 </a>
649 <a class="social-thing" onclick="fontDefault();" style="margin-right: 5px;"
650 data-toggle="tooltip" title="Cỡ chữ mặc định">
651 <img src="/o/portal-dt-home-theme/images/icons/trothinh_zoom-btn.png" style="vertical-align: middle;opacity: 1;width: 16px;"/>
652 </a>
653 <a class="social-thing" onclick="fontPlus();" style="margin-right: 5px;"
654 data-toggle="tooltip" title="Tăng cỡ chữ">
655 <img src="/o/portal-dt-home-theme/images/icons/trothinh_zoom-up-btn.png" style="vertical-align: middle;opacity: 1;width: 16px;"/>
656 </a>
657 <a class="social-thing" style="margin-right: 5px;">
658 <img src="/o/portal-dt-home-theme/images/icons/trothinh_wall-ico.png" style="vertical-align: middle;opacity: 1;width: 1px;height: 13px"/>
659 </a>
660 <a class="social-thing" onclick="printPage('contentText');" style="margin-right: 5px;"
661 data-toggle="tooltip" title="In bài viết">
662 <img src="/o/portal-dt-home-theme/images/icons/trothinh_print-btn.png" style="vertical-align: middle;opacity: 1;width: 16px;"/>
663 </a>
664 <a class="social-thing" href="https://mail.google.com/mail/?view=cm&fs=1&su=${title}&body=${currentUrl}" style="margin-right: 5px;"
665 data-toggle="tooltip" title="Gửi mail" target="_blank">
666 <img src="/o/portal-dt-home-theme/images/icons/trothinh_mail-btn.png" style="vertical-align: middle;opacity: 1;width: 16px;height:13px"/>
667 </a>
668 </div>
669 <input type="hidden" id="voiceSex" value="Vietnamese Female"></input>
670 <input type="hidden" id="tuongphan" value="3"></input>
671 </div>
672 </div>
673
674 <div style="margin:10px">
675 <h2 class="title-divvv" style="color: #ed0678;font-weight: bold;">${title}</h2>
676 </div>
677 <div id="contentText" style="margin:10px">
678 <b>${summary}</b>
679 ${noiDung.getData()}
680 </div>
681 <div class="article-info">
682 <div class="social-buttons">
683 <a href="#"><img src="https://dongthap.gov.vn/documents/34223/36207/quantam-btn.jpg/03716e20-b334-f2ab-e186-370511edfc77?t=1594708727042" style="width: 80px; height: 20px; margin-right: 2px"></a>
684 <div class="zalo-follow-only-button" data-oaid="3540423014405379625" style="width: 88px;"></div>
685 <div class="zalo-share-button" data-href="" data-oaid="4499765515963062717" data-layout="1" data-color="blue" data-customize=false></div>
686 <iframe src="${srcfb}" width="140" height="35" style="border:none;overflow:hidden" scrolling="no" frameborder="0" allowTransparency="true" allow="encrypted-media"></iframe>
687 </div>
688 <#if listLayoutDHD?seq_index_of(layo) > -1 >
689 <#if teste?has_content>
690 <div class="tinkhac">
691 <div class="bg-tinkhac"></div>
692 <ul class="list-unstyled">
693 <#list teste as curEntryyy>
694 <#assign
695 renderer = curEntryyy.getAssetRenderer()
696 className = renderer.getClassName() />
697 <#if className == "com.liferay.journal.model.JournalArticle">
698 <#assign
699 title = curEntryyy.getTitle(locale)
700 article = renderer.getArticle()
701 description = article.getDescription(locale)
702 curEntryyy = curEntryyy
703 viewURL = "/chi-tiet-chuyen-trang-dh-dang/-/asset_publisher/hPvLbtAWEWEb/content/id/${curEntryyy.getEntryId()}?plidlayout=${themeDisplay.getLayout().getPlid()}" />
704 <#if description?has_content && description?length > 300>
705 <#assign description = description?substring(0,300) + " ..."/>
706 </#if>
707
708 <#if curEntryyy.getAssetRenderer().getThumbnailPath(renderRequest)??>
709 <#assign smallImageUrl = curEntryyy.getAssetRenderer().getThumbnailPath(renderRequest) >
710 <#else>
711 <#assign smallImageUrl = "" >
712 </#if>
713 <li><a href="${viewURL}">${title}</a></li>
714
715 </#if>
716 </#list>
717 </ul>
718 </div>
719 </#if>
720 <#else>
721
722
723 </div>
724 </div>
725 <div class="col-4" style="padding-left:20px">
726
727
728 <div class="social-buttons right">
729 <div>
730 <p class="other-news">Xem thêm các tin khác </p>
731 </div>
732 <div class="row ml-0 mr-0 relatedentry" id="0">
733 <div id="paging_container5">
734 <ul class="content" style="padding-bottom: 15px;">
735 <#list teste as curEntryyy>
736 <#assign
737 renderer = curEntryyy.getAssetRenderer()
738 className = renderer.getClassName() />
739 <#if className == "com.liferay.journal.model.JournalArticle">
740 <#assign
741 title2 = curEntryyy.getTitle(locale)
742 article2 = renderer.getArticle()
743 publishdate2 = curEntryyy.getPublishDate()
744 viewcount2 = curEntryyy.getViewCount()
745 description2 = article2.getDescription(locale)
746 curEntryyy = curEntryyy
747 viewURL2 = themeDisplay.getPathFriendlyURLPublic() + themeDisplay.getSiteGroup().getFriendlyURL() + "/chi-tiet-bai-viet/-/asset_publisher/1mOzUrGkrdAE/content/id/${curEntryyy.getEntryId()}?plidlayout=${themeDisplay.getLayout().getPlid()}"/>
748
749 <#if curEntryyy.getAssetRenderer().getThumbnailPath(renderRequest)??>
750 <#assign smallImageUrl = curEntryyy.getAssetRenderer().getThumbnailPath(renderRequest) >
751 <#else>
752 <#assign smallImageUrl = "" >
753 </#if>
754
755 <li style="margin-top:10px">
756 <div class="col-md-12">
757 <div class="row ml-0 mr-0">
758 <div class="col-sm-3">
759 <a href="${viewURL2}"><img src="${smallImageUrl}" alt="img" class="img-fluid w-100 other-imgs"></a>
760 </div>
761 <div class="col-sm-9 pl-sm-2">
762 <a href="${viewURL2}"><p style="margin-bottom: 5px;" class="limit-tit">${title2}</p></a>
763 <span class="date-span">${publishdate2}</span>
764 </div>
765 </div>
766 </div>
767 </li>
768
769 </#if>
770 </#list>
771 </ul>
772 <div class="page_navigation"></div>
773 </div>
774
775 </div>
776 </div>
777 </#if>
778 <#if teste?has_content && teste?length > 0>
779 <div style="text-align: center">
780
781 </div>
782 </#if>
783 </div>
784
785 </div>