Có lỗi xảy ra trong quá trình xử lý biểu mẫu.
Java method "static com.liferay.asset.kernel.service.AssetEntryLocalServiceUtil.getEntries(com.liferay.asset.kernel.service.persistence.AssetEntryQuery)" threw an exception; see cause exception in the Java stack trace.
----
FTL stack trace ("~" means nesting-related):
- Failed at: teste = assetEntryQueryService.getEnt... [in template "37610#37640#102007" at line 1226, column 10]
----
1<style>
2 p.component-title {
3 display: none;
4 }
5 .display-img-default > figure > img {
6 width: 95%;
7 height: auto !important;
8 }
9 .display-img-default > figure > span > img {
10 width: 95%;
11 height: auto !important;
12 }
13 figcaption.figcaption p {
14 color: rgb(94, 94, 255) !important;
15 font-style: italic !important;
16 text-align: center !important;
17 }
18 .figcaption {
19 color: #5e5eff;
20 font-style: italic;
21 text-align: center;
22 }
23 .autofit-row.mb-4.metadata-author {
24 display: none;
25 }
26 .display-img-default {
27 background: transparent !important;
28 height: fit-content !important;
29 min-height: unset!important;
30 }
31 .display-img-default > figure > img {
32 width: 95%;
33 height: auto !important;
34 }
35
36
37 .asset-anchor.lfr-asset-anchor {
38 display: none;
39 }
40 .liferayckevideo {
41 display: flex;
42 justify-content: center;
43 position: relative;
44 }
45
46 .liferayckevideo.video-container {
47 position: relative;
48 display: flex;
49 justify-content: center;
50 }
51
52 .liferayckevideo.video-container video {
53 width: 99% !important;
54 height: 465px !important;
55 border: 1px solid #333;
56 }
57 @media only screen and (min-width: 1400px) {
58 .liferayckevideo.video-container video {
59 height: 600px !important;
60 }
61 }
62 .liferayckevideo video {
63 width: 99% !important;
64 height: 465px !important;
65 }
66
67 /* Nút play overlay */
68 .video-play-button {
69 position: absolute;
70 top: 50%;
71 left: 50%;
72 transform: translate(-50%, -50%);
73 width: 60px;
74 height: 60px;
75 background: rgba(0, 0, 0, 0.7);
76 border: 3px solid #fff;
77 border-radius: 50%;
78 cursor: pointer;
79 z-index: 10;
80 display: flex;
81 align-items: center;
82 justify-content: center;
83 transition: all 0.3s ease;
84 }
85
86 .video-play-button:hover {
87 background: rgba(0, 0, 0, 0.9);
88 transform: translate(-50%, -50%) scale(1.1);
89 }
90
91 .video-play-button::before {
92 content: '';
93 width: 0;
94 height: 0;
95 border-style: solid;
96 border-width: 15px 0 15px 25px;
97 border-color: transparent transparent transparent #fff;
98 margin-left: 5px;
99 }
100
101 .video-play-button.playing {
102 display: none;
103 }
104
105 .social-buttons {
106 display: flex;
107 }
108
109 .article-head {
110 margin-bottom: 0;
111 }
112
113 .botting-border {
114 color: #292a32;
115 background: unset;
116 font-family: "Roboto";
117 text-transform: unset;
118 font-weight: bold;
119 font-size: 20px;
120 margin-bottom: 15px;
121 border-bottom: 3px solid #d1d2d4;
122 }
123
124 .buttonIn {
125 position: relative;
126 }
127
128 .btnsend {
129 color: #FFF;
130 border-color: #f70000;
131 padding: 3px 0.75rem;
132 border: none;
133 height: 42px;
134 cursor: pointer;
135 border-radius: 6px;
136 background: #C8392B;
137 margin-top: 17px;
138 font-size: 14px;
139 font-style: normal;
140 font-weight: 700;
141 line-height: 130%; /* 18.2px */
142 letter-spacing: 0.021px;
143 }
144
145 .button-dt {
146 color: #FFF;
147 background-color: #f70000;
148 border-color: #f70000;
149 padding: 3px 0.75rem;
150 border-radius: 5px;
151 margin: 2px;
152 }
153
154 .button-dt-close {
155 color: #FFF;
156 background-color: #f70000;
157 border-color: #f70000;
158 padding: 3px 0.75rem;
159 border-radius: 5px;
160 margin: 2px;
161 }
162
163 .md-textarea {
164 width: 100%;
165 }
166
167 .comment {
168 display: inline-block;
169 margin-top: 5px;
170 width: 100%;
171 }
172
173 .comment-text {
174 padding-left: 51px;
175 margin-top: -9px;
176 font-size: 14px;
177 }
178
179 .comment-child {
180 margin-left: 35px;
181 }
182
183
184 .modal-thongtin {
185 display: none;
186 position: fixed;
187 z-index: 1111;
188 padding-top: 100px;
189 left: 0;
190 top: 0;
191 width: 100%;
192 height: 100%;
193 overflow: auto;
194 background-color: rgb(0, 0, 0);
195 background-color: rgba(0, 0, 0, .4);
196 }
197
198 .modal-thongtin-reply {
199 display: none;
200 position: fixed;
201 z-index: 1;
202 padding-top: 100px;
203 left: 0;
204 top: 0;
205 width: 100%;
206 height: 100%;
207 overflow: auto;
208 background-color: rgb(0, 0, 0);
209 background-color: rgba(0, 0, 0, .4);
210 }
211
212
213 .close {
214 color: #aaaaaa;
215 float: right;
216 font-size: 28px;
217 font-weight: bold;
218 }
219
220 .close:hover,
221 .close:focus {
222 color: #000;
223 text-decoration: none;
224 cursor: pointer;
225 }
226
227 .btnreply {
228 color: #FFF;
229 background-color: #f70000;
230 border-color: #f70000;
231 padding: 3px 0.75rem;
232 border-radius: 5px;
233 height: 28px;
234 border: none;
235 float: right;
236 }
237
238 .autofit-float.autofit-row.portlet-header {
239 display: none;
240 }
241
242 .breadcrumb > li.active {
243 color: #f70000;
244 }
245
246 .zalo-share-button {
247 width: 158px !important;
248 }
249
250 iframe {
251 min-width: 92px;
252 }
253
254 b.text-summary {
255 color: #000;
256 font-size: 16px;
257 font-style: italic;
258 font-weight: 700;
259 line-height: normal;
260 }
261
262 @media only screen and (min-width: 768px) {
263 .other-imgs {
264 height: 60px;
265 }
266
267 .modal-thongtin-content {
268 background-color: #fefefe;
269 margin: auto;
270 padding: 20px;
271 border: 1px solid #888;
272 width: 60%;
273 }
274 }
275
276 @media only screen and (max-width: 768px) {
277 .pagination2 a {
278 cursor: pointer;
279 color: black;
280 padding: 3px 8px;
281 text-decoration: none;
282 transition: background-color .3s;
283 margin: 0px;
284 border-radius: 5px;
285 background: #ddd;
286 }
287
288 .curPage-title {
289 display: none;
290 }
291
292 h3.title-divvv {
293 /*text-align: justify;*/
294 /*margin-top: 16px;*/
295 color: #15191C;
296 font-size: clamp(18px, 4vw, 24px);
297 font-style: normal;
298 font-weight: 700;
299 line-height: 33.6px;
300 letter-spacing: -0.28px;
301 margin-bottom: 0px;
302 }
303
304 #contentText iframe {
305 width: 100% !important;
306 }
307
308 .detail-social > a:hover {
309 cursor: pointer;
310 }
311
312 .article-head .article-info {
313 margin-bottom: 0;
314 padding: 4px 0 8px 0;
315 font-size: 14px;
316 height: 24px !important;
317 }
318
319 .modal-thongtin-content {
320 background-color: #fefefe;
321 margin: auto;
322 padding: 20px;
323 border: 1px solid #888;
324 width: 100%;
325 }
326 }
327 @media only screen and (max-width: 576px) {
328 .article-head .article-info {
329 height: 59px !important;
330 }
331 }
332
333 span.sticker-overlay {
334 background: var(--main-color-background);
335 color: var(--main-color-text);
336 opacity: 0.8;
337 }
338
339
340 .detail__flex {
341 display: flex;
342 }
343
344 .sp-dislaydate {
345 color: var(--darkdefault-212529, #212529);
346 font-size: 16px;
347 font-style: normal;
348 font-weight: 400;
349 line-height: 130%;
350 letter-spacing: 0.08px;
351 /*border-left: 3px solid #212529;*/
352 margin-bottom: 18.5px;
353 /*padding-left: 12px;*/
354 margin-top: 40px;
355 }
356
357 .title-divvv {
358 text-align: justify;
359 /*margin-top: 16px;*/
360 color: var(--darkdefault-212529, #212529);
361 font-size: clamp(22px, 4vw, 24px);
362 font-style: normal;
363 font-weight: 700;
364 line-height: normal;
365 /*letter-spacing: -0.28px;*/
366 }
367
368 #contentText table {
369 width: 100% !important;
370 text-align: center;
371 }
372
373 #contentText table {
374 width: 100% !important;
375 text-align: center;
376 }
377
378 #contentText p {
379 text-align: justify;
380 color: #2E2E2E;
381 font-size: 16px;
382 font-style: normal;
383 font-weight: 400;
384 line-height: 22.4px;
385 letter-spacing: 0.08px;
386 }
387
388 #contentText > .text-summary > p {
389 color: #2E2E2E;
390 font-size: 16px;
391 /*font-style: italic;*/
392 font-weight: 500;
393 line-height: normal;
394 }
395
396 #contentText > p:has(img) {
397 text-align: center;
398 }
399
400 .text-dgbv {
401 display: flex;
402 flex-direction: row;
403 color: #000;
404 font-size: 14px;
405 font-style: normal;
406 font-weight: 500;
407 line-height: normal;
408 margin-top: 8px;
409 }
410
411 .share-fb-custom {
412 margin-top: 6px;
413 max-width: 90px;
414 }
415
416 .text-trangchu-ctbv {
417 color: var(--darkdefault-212529, #212529);
418 font-size: 16px;
419 font-style: normal;
420 font-weight: 400;
421 line-height: 130%;
422 letter-spacing: 0.08px;
423 }
424
425 .text-gioithieu-ctbv {
426 color: #0D4C92;
427 font-size: 16px;
428 font-style: normal;
429 font-weight: 500;
430 line-height: 130%;
431 letter-spacing: 0.08px;
432 }
433
434 .ctbv-right {
435 display: flex;
436 flex-wrap: wrap;
437 justify-content: flex-end;
438 }
439
440 .title-content-vni {
441 color: var(--Dark-primary-000000, #000);
442 font-size: 20px;
443 font-style: normal;
444 font-weight: 700;
445 line-height: 130%;
446 letter-spacing: 0.03px;
447 }
448
449 .line {
450 background: #848A8F;
451 height: 1px;
452 width: 100%;
453 margin: 32px 0;
454 }
455
456 .line-tlq {
457 background: #848A8F;
458 height: 1px;
459 width: 100%;
460 margin: 26px 18px 15px 15px;
461 }
462
463 .text-readmore-tlq {
464 color: #0D4C92;
465 font-size: 14px;
466 font-style: normal;
467 font-weight: 500;
468 line-height: 130%;
469 letter-spacing: 0.175px;
470 margin-top: 16px;
471 }
472
473 .text-des-tlq > p {
474 color: var(--signinupfont-3777777, #777);
475 font-size: 16px;
476 font-style: normal;
477 font-weight: 400 !important;
478 line-height: 130%; /* 18.2px */
479 letter-spacing: 0.035px;
480 }
481
482 .text-title-tlq {
483 color: var(--darkdefault-212529, #212529);
484 font-size: 16px;
485 font-style: normal;
486 font-weight: 700;
487 line-height: 130%;
488 letter-spacing: 0.024px;
489 padding-right: 15px;
490 padding-left: 15px;
491 }
492
493 .text-title-tlq-img {
494 color: var(--darkdefault-212529, #212529);
495 font-size: 16px;
496 font-style: normal;
497 font-weight: 700;
498 line-height: 130%;
499 letter-spacing: 0.024px;
500 /*margin-top: 32px;*/
501 }
502
503 .title-content-tlq {
504 color: var(--Dark-primary-000000, #000);
505 font-size: 20px;
506 font-style: normal;
507 font-weight: 700;
508 line-height: 130%;
509 letter-spacing: 0.03px;
510 margin-top: 22px;
511 }
512
513 .box-tlq {
514 border-radius: 8px;
515 border: 1px solid #C7C7C7;
516 background: #FAFAFA;
517 }
518
519
520
521 .border-item {
522 border-radius: 8px;
523 border: 1px solid var(--stroke-777777, rgba(119, 119, 119, 0.50));
524 margin: 0px 17px;
525 }
526
527 .tin-slide-img-left {
528 border-radius: 8px 0px 0px 8px;
529 }
530
531 .sdt-list-tlq-items {
532 color: var(--darkdefault-212529, #212529);
533 font-size: 16px;
534 font-style: normal;
535 font-weight: 400;
536 line-height: 130%;
537 letter-spacing: 0.024px;
538 }
539
540 .sdt-list-tlq-items:hover > a {
541 color: #0D4C92 !important;
542 font-weight: 700;
543 }
544
545 .sdt-list-tlq-items:hover > div > img {
546 filter: invert(20%) sepia(202%) saturate(280%) hue-rotate(-10deg) brightness(140%) contrast(142%);
547 }
548
549 .sdt-list-tlq-items:hover::before {
550 background: #0D4C92;
551 }
552
553
554 .text-border {
555 color: #000;
556 font-size: 18px;
557 font-style: normal;
558 font-weight: 400;
559 line-height: 130%;
560 letter-spacing: 0.027px;
561 }
562
563 .form-chitiet {
564 border-radius: 6px;
565 background: #F2F2F2;
566 border-color: #F2F2F2;
567 }
568
569 .form-chitiet::placeholder {
570 color: rgba(119, 119, 119, 0.50);
571 font-size: 14px;
572 font-style: normal;
573 font-weight: 400;
574 line-height: 130%;
575 letter-spacing: 0.021px;
576 }
577
578 .lbl-blyk {
579 color: #000;
580 font-size: 16px;
581 font-style: normal;
582 font-weight: 500;
583 line-height: 130%;
584 letter-spacing: 0.024px;
585 }
586
587 .align-right {
588 text-align: right;
589 border: 0;
590 }
591
592 .gg-custom {
593 margin-top: 10px;
594 }
595
596 .avatar {
597 display: block;
598 width: 25px;
599 height: 25px;
600 margin-right: 13px;
601 border-radius: 50%;
602 overflow: hidden;
603 flex: 0 0 auto;
604 }
605
606 .item {
607 padding-bottom: 16px;
608 margin-bottom: 16px;
609 display: flex;
610 border-bottom: 1px solid rgba(119, 119, 119, 0.30);
611 }
612
613 .user-name {
614 color: #000;
615 font-size: 16px;
616 font-style: normal;
617 font-weight: 700;
618 line-height: 130%;
619 letter-spacing: 0.024px;
620 }
621
622 .text-comment {
623 color: #4D4D4D;
624 font-size: 16px;
625 font-style: normal;
626 font-weight: 400;
627 line-height: 130%;
628 letter-spacing: 0.08px;
629 }
630
631 .btnmorecmt {
632 width: 285px;
633 padding: 12px 50px;
634 justify-content: center;
635 align-items: center;
636 gap: 10px;
637 border-radius: 8px;
638 border: 1px solid #000;
639 color: #000;
640 font-size: 14px;
641 font-style: normal;
642 font-weight: 400;
643 line-height: 130%; /* 18.2px */
644 letter-spacing: 0.021px;
645 background: none;
646 }
647
648 .content-left-tlq {
649 padding: 0 !important;
650 }
651
652 .content-right-tlq {
653 /*padding-left: 32px !important;*/
654 padding: 10px 20px !important;
655 background: #E0E0E04D;
656 color: #212529;
657 }
658
659 .content-right-tlq:hover,
660 .content-right-tlq:hover ~ .content-left-tlq {
661 /*background-color: #0D4C92;*/
662 }
663
664 .content-right-tlq:hover .text-title-tlq-img,
665 .content-right-tlq:hover .text-des-tlq > p,
666 .content-right-tlq:hover .text-readmore-tlq {
667 /*color: #ffffff !important;*/
668 }
669
670 .content-right-tlq,
671 .content-left-tlq,
672 .content-right-tlq .text-title-tlq-img,
673 .content-right-tlq .text-des-tlq > p,
674 .content-right-tlq .text-readmore-tlq {
675 transition: all 0.9s ease;
676 }
677
678 @media only screen and (max-width: 576px) {
679 .liferayckevideo.video-container video {
680 width: 100% !important;
681 height: 300px !important;
682 }
683 .detail__sticky {
684 display: none;
685 }
686
687 .h-img-ctbv {
688 height: 100%;
689 }
690
691 .text-title-tlq-img {
692 margin-top: 10px;
693 }
694
695 #tin-slide-img-left {
696 height: 100% !important;
697 }
698
699 .content-right-tlq {
700 padding-left: 12px !important;
701 }
702
703 #contentText p,
704 #contentText > .text-summary > p {
705 line-height: 1.6;
706 }
707
708 }
709
710 .star {
711 position: relative;
712 display: inline-block;
713 transition: color 0.2s ease;
714 color: #ebebeb;
715 }
716
717 .star:before {
718 content: '\2605';
719 width: 30px;
720 height: 30px;
721 font-size: 30px;
722 }
723
724 .star:hover,
725 .star.selected,
726 .star:hover ~ .star,
727 .star.selected ~ .star {
728 transition: color 0.8s ease;
729 color: #FDE16D;
730 }
731
732 .ratings-wrapper {
733 display: inline-block;
734 margin-bottom: 20px;
735 }
736
737 .ratings {
738 display: flex;
739 flex-direction: row-reverse;
740 }
741
742 .ratings span {
743 cursor: pointer;
744 transition: color 0.8s ease;
745 font-size: 50px;
746 }
747
748 .ratings span:hover {
749 transition: color 0.8s ease;
750 color: #FDE16D;
751 }
752
753 .ratings span:hover ~ span {
754 transition: color 0.8s ease;
755 color: #FDE16D;
756 }
757
758 .ratings span[data-clicked] {
759 color: #FDE16D;
760 }
761
762 .ratings span[data-clicked] ~ span {
763 color: #FDE16D;
764 }
765
766 .reset {
767 font-size: 18px;
768 text-decoration: none;
769 background-color: #4f5a78;
770 padding: 15px 50px;
771 display: inline-block;
772 margin-top: 20px;
773 color: #fff;
774 border: none;
775 cursor: pointer;
776 }
777
778 .reset:hover {
779 filter: brightness(1.2);
780 }
781
782 .asset-details .mr-3 a {
783 display: none !important;
784 }
785
786 .separator {
787 display: none !important;
788 }
789
790
791 .title-ccni a{
792 text-decoration: none;
793 color: #035FB5;
794 font-size: clamp(16px, 3vw, 24px);
795 font-weight: 700;
796 line-height: 33.6px;
797 }
798
799 .title-ccni-icon {
800 height: 24px;
801 }
802 .line-tail-chitiet{
803 width: 100%;
804 height: 2px;
805 background: #DE6F18;
806 position: absolute;
807 bottom: 0;
808 z-index: 1;
809 }
810 .line-blue {
811 width: 70%;
812 height: 6px;
813 background: #035FB5;
814 clip-path: polygon(0 0, calc(100% - 6px) 0, 100% 6px, 0% 100%);
815 }
816 .orange-line{
817 height: 6px;
818 background: #DE6F18;
819 clip-path: polygon(0 0, calc(100% - 4px) 0, 100% 100%, 0 100%);
820 }
821 .label-binh-luan {
822 color: #15191C;
823 font-size: 14px;
824 font-weight: 500;
825 line-height: 18px;
826 }
827
828 .form-binh-luan {
829 background: #E0E0E04D;
830 padding: 1rem;
831 }
832
833 .btn-send-cmt {
834 color: white;
835 border-radius: 10px;
836 box-shadow: -2px 2px 3px 0px #00000040;
837 background: #DE6F18;
838 }
839
840 .btn-send-cmt:hover {
841 color: white;
842 border-radius: 10px;
843 box-shadow: -2px 2px 3px 0px #00000040;
844 background: #DE6F18;
845 }
846
847 .wrap-list-comment {
848 border: 1px solid #848A8F;
849 padding: 20px;
850 border-radius: 10px;
851 }
852
853 .user-name-cmt {
854 font-size: 16px;
855 font-weight: 500;
856 line-height: 20px;
857 color: #15191C;
858 }
859
860 .time-comment {
861 color: #848A8F;
862 }
863
864 .txt-content-cmt {
865 font-size: 16px;
866 font-weight: 400;
867 line-height: 22.4px;
868 color: #2E2E2E;
869 }
870
871 .thin-line {
872 background: #EBEBEB;
873 height: 1px;
874 }
875
876 .btn-xem-them-cmt {
877 border-radius: 5px;
878 font-size: 16px;
879 padding: 10px;
880 font-weight: 500;
881 line-height: 22.4px;
882 text-align: center;
883 color: #0065B3;
884 background: #E0E0E04D;
885 border: 1px solid #035FB5;
886 }
887
888 .icon-tool {
889 width: 25px;
890 height: 25px;
891 margin-right: 10px;
892 }
893
894
895
896
897
898 .img-lo57 {
899 width: 100%;
900 aspect-ratio: 4 / 3;
901 object-fit: cover;
902 }
903
904 .img-nho-block11 {
905 border-radius: 10px 10px 0 0;
906 }
907
908 .tin-nho-block11 {
909 border-radius: 10px;
910 }
911
912 .title-tin-nho-block11 {
913 height: 125px;
914 overflow-y: auto;
915 font-family: Roboto;
916 font-size: clamp(14px, 2vw, 16px);
917 font-weight: 500;
918 text-align: left;
919 color: rgba(46, 46, 46, 1);
920 scrollbar-width: none;
921 -ms-overflow-style: none;
922 }
923
924 .title-tin-nho-block11::-webkit-scrollbar {
925 display: none;
926 }
927
928 .inner-bg-gray:hover {
929 cursor: pointer;
930
931 .title-tin-nho-block11 {
932 color: rgba(3, 95, 181, 1);
933 }
934
935 img {
936 box-shadow: 4px 4px 4px 0px rgba(0, 0, 0, 0.25);
937 }
938 }
939
940 .item-small-news .inner-bg-gray {
941 background-color: rgba(224, 224, 224, 0.3);
942 height: 100%;
943 width: 100%;
944 border-radius: 8px;
945 overflow: hidden;
946 border-bottom: 1px solid rgba(235, 235, 235, 1);
947 }
948
949 @media (max-width: 992px) {
950 .title-tin-nho-block11 {
951 height: 100px;
952 }
953 }
954
955
956 .tin-nho-block11 .under-ws {
957 bottom: 0;
958 left: 0;
959 width: 100%;
960 height: 35px;
961 background: linear-gradient(180deg, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.7) 28.26%, #FFFFFF 59.44%);
962 }
963
964
965
966
967
968
969
970 .hoat-dong-khac-tin-khac {
971 height: 100%;
972 padding: 15px;
973 background: #E0E0E04D;
974 }
975 .hoat-dong-khac-tin-khac .makeshortnews-pct-thuy {
976 margin-bottom: 25px !important;
977 }
978 .mg-b-24 {
979 margin-bottom: 24px;
980 display: flex;
981 flex-direction: column;
982 gap: 20px;
983 }
984 .news-item-pvm .asset-publisher-title{
985 font-size: clamp(14px, 3vw, 18px);
986 font-weight: 700;
987 line-height: 25.2px;
988 color: #2E2E2E;
989 }
990 .news-item-pvm:hover .asset-publisher-title{
991 color: #035FB5;
992 }
993 .news-item-pvm .tin-slide-img-left {
994 width: 100%;
995 aspect-ratio: 4 / 3;
996 object-fit: cover;
997 height: 100% !important;
998 }
999 .news-item-pvm:hover .tin-slide-img-left{
1000 filter: drop-shadow(4px 4px 4px rgba(0, 0, 0, 0.25));
1001
1002 }
1003
1004 .title-tin-hd-khac{
1005 width: 100%;
1006 padding-right: 14px;
1007 }
1008 .hd-khac-tin-nho {
1009 position: relative;
1010 }
1011
1012 .limit-tin-descc-news > p{
1013 color: #2E2E2E !important;
1014 }
1015 .main-color-pct-tin-khac > p{
1016 color: #031739!important;
1017 }
1018
1019
1020 .limit-3-lines{
1021 display: -webkit-box;
1022 -webkit-line-clamp: 3;
1023 -webkit-box-orient: vertical;
1024 overflow: hidden;
1025 text-overflow: ellipsis;
1026 }
1027 .limit-5-lines-desc {
1028 display: -webkit-box;
1029 -webkit-line-clamp: 5;
1030 -webkit-box-orient: vertical;
1031 overflow: hidden;
1032 text-overflow: ellipsis;
1033 }
1034 @media screen and (max-width: 426px) {
1035 .hoat-dong-khac-tin-khac{
1036 margin-left: 15px;
1037 margin-right: 15px;
1038 }
1039
1040 .limit-5-lines-desc{
1041 line-height: 1.6;
1042 }
1043 .hoat-dong-khac-tin-khac{
1044 padding-bottom: 30px;
1045
1046 }
1047 .img-hdk-ct{
1048 padding-right: 15px !important;
1049 }
1050 }
1051 @media screen and (min-width: 768px) and (max-width: 993px) {
1052 .liferayckevideo.video-container video {
1053 width: 100% !important;
1054 height: 400px !important;
1055 }
1056
1057 }
1058 @media screen and (min-width: 993px) and (max-width: 1025px) {
1059 .liferayckevideo.video-container video {
1060 width: 100% !important;
1061 height: 500px !important;
1062 }
1063 }
1064 @media screen and (min-width: 427px) and (max-width: 768px) {
1065 .hoat-dong-khac-tin-khac{
1066 margin-left: 15px;
1067 margin-right: 15px;
1068 }
1069
1070 .limit-5-lines-desc{
1071 line-height: 1.6;
1072 }
1073 .hoat-dong-khac-tin-khac{
1074 padding-bottom: 30px;
1075
1076 }
1077 .img-hdk-ct{
1078 padding-right: 15px !important;
1079 }
1080 }
1081
1082
1083 .binhLuanMacDinh{
1084 margin-bottom: 0;
1085 color: #2E2E2E;
1086 font-size: clamp(14px, 2vw, 16px);
1087 font-weight: 600;
1088 }
1089 @media screen and (min-width: 767.9px) and (max-width: 768px) {
1090 .col-12.col-md-3.pr-0.img-hdk-ct {
1091 padding-right: 0px !important;
1092 }
1093 }
1094
1095 .hoat-dong-khac-tin-khac.hd-khac-tin-nho.d-flex.flex-column.align-items-start {
1096 margin-left: 0px !important;
1097 margin-right: 0px !important;
1098 }
1099
1100 @media screen and (max-width: 932px) and (max-height: 430px) {
1101 .mb-50 {
1102 margin-bottom: -50px !important;
1103 }
1104 }
1105
1106 @media screen and (max-width: 810px) {
1107 .mb-50-portal {
1108 margin-bottom: -50px !important;
1109 }
1110 }
1111
1112 @media screen and (max-width: 912px) and (min-width: 911.99px) and (max-height: 1368px) and (min-height: 1367.99px) {
1113 .mb-50-surface-pro-7 {
1114 margin-bottom: -50px !important;
1115 }
1116 }
1117
1118 .mb-32 {
1119 margin-bottom: -32px !important;
1120 }
1121
1122 .no-mt {
1123 margin-top: 0px !important;
1124 }
1125
1126 .pb-32 {
1127 padding-bottom: 32px !important;
1128 }
1129
1130 @media screen and (min-width: 992px) {
1131 .mb-30 {
1132 margin-bottom: -30px !important;
1133 }
1134 }
1135
1136 @media screen and (max-width: 740px) {
1137 .hoat-dong-khac-tin-khac.hd-khac-tin-nho.d-flex.flex-column.align-items-start {
1138 margin-left: 15px !important;
1139 margin-right: 15px !important;
1140 }
1141 }
1142
1143 @media screen and (max-width: 768px) and (max-width: 767.99px) and (max-height: 1024px) and (min-height: 1023.99px) {
1144 .col-12.col-md-4.pr-0.img-hdk-ct {
1145 padding-right: 0px !important;
1146 }
1147 }
1148 .popup-overlay {
1149 position: fixed;
1150 top: 0;
1151 left: 0;
1152 width: 100vw;
1153 height: 100vh;
1154 background-color: rgba(0, 0, 0, 0.5); /* lớp mờ xám */
1155 display: flex;
1156 align-items: center;
1157 justify-content: center;
1158 z-index: 9998; /* thấp hơn popup một chút */
1159 }
1160
1161 .custom-popup-ykien-binhluan {
1162 background: white;
1163 border-radius: 10px;
1164 box-shadow: 0 0 15px rgba(0, 0, 0, 0.2);
1165 z-index: 9999;
1166 width: 300px;
1167 padding: 20px;
1168 text-align: center;
1169 border: 1px solid #035FB5;
1170 }
1171
1172 .custom-popup-ykien-binhluan-content img.popup-icon {
1173 width: 50px;
1174 height: 50px;
1175 }
1176
1177 .custom-popup-ykien-binhluan-content div {
1178 border-bottom: solid 1px #035FB5;
1179 padding-bottom: 20px;
1180 }
1181
1182 .custom-popup-ykien-binhluan-content .popup-message {
1183 margin-top: 2rem;
1184 font-weight: bold;
1185 color: #035FB5;
1186 }
1187
1188 .d-none {
1189 display: none;
1190 }
1191
1192 .img-binhluan{
1193 height: 25px;
1194 width: 25px;
1195 }
1196 iframe[src*="facebook.com/plugins/video.php"] {
1197 height: 420px !important;
1198 }
1199
1200</style>
1201<#assign AssetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService" )>
1202<#assign JournalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")>
1203
1204<#assign currentArticle = JournalArticleLocalService.getArticle(getterUtil.getLong(groupId),.vars['reserved-article-id'].data)>
1205<#assign currentArticleResourcePrimKey = currentArticle.getResourcePrimKey()>
1206
1207<#assign currentArticleAssetEntry = AssetEntryLocalService.getEntry("com.liferay.journal.model.JournalArticle", currentArticleResourcePrimKey)/>
1208
1209<#assign articlePrimKey = currentArticle.resourcePrimKey>
1210<#assign DDMStructureKey = currentArticle.DDMStructureKey>
1211
1212<#assign catLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService")>
1213<#assign articleCatId = catLocalService.getCategoryIds("com.liferay.journal.model.JournalArticle", getterUtil.getLong(articlePrimKey))>
1214
1215<#assign assetEntryQueryService = objectUtil('com.liferay.asset.kernel.service.AssetEntryLocalServiceUtil')>
1216
1217<#assign assetEntryQuery = objectUtil('com.liferay.asset.kernel.service.persistence.AssetEntryQuery')>
1218
1219
1220<#assign search = assetEntryQuery.setAnyCategoryIds(articleCatId)>
1221<#assign search = assetEntryQuery.setOrderByCol1("publishDate")/>
1222<#assign search = assetEntryQuery.setStart(0)/>
1223<#assign search = assetEntryQuery.setEnd(200)/>
1224<#assign search = assetEntryQuery.setOrderByType1("DESC")/>
1225
1226<#assign teste = assetEntryQueryService.getEntries(assetEntryQuery)
1227totalPage = 0/>
1228
1229<#assign
1230title = .vars['reserved-article-title'].data
1231portalURL = themeDisplay.getPortalURL()
1232currentUrl = portalURL + themeDisplay.getURLCurrent()
1233imageUrl = portalURL + .vars['reserved-article-small-image-url'].data
1234<#--srcfb = "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"-->
1235srcfb = "https://www.facebook.com/sharer/sharer.php?u=${currentUrl}"
1236displayDate = .vars['reserved-article-display-date'].data
1237summary = .vars['reserved-article-description'].data/>
1238<#assign summaryText = htmlUtil.extractText(summary) >
1239
1240<#assign scopeId = themeDisplay.getScopeGroupId()>
1241<#assign contentId = .vars['reserved-article-id'].data>
1242<#assign originalLocale = .locale>
1243<#setting locale = localeUtil.getDefault()>
1244<#assign displayDate = displayDate?datetime("EEE, d MMM yyyy HH:mm:ss Z")>
1245<#assign locale = originalLocale>
1246<#--<#assign displayDate = displayDate?string("EEEE, dd/MM/yyyy, HH:mm a ")>-->
1247<#assign displayDate = displayDate?string("dd/MM/yyyy HH:mm")>
1248<#assign listLayoutDHD = [5474,5512,179]>
1249<#assign layo = themeDisplay.getPlid() />
1250<#assign noImageUrl = "/documents/37638/0/ảnh-đại-diện-đà-nẵng-01.jpg" >
1251<#assign danhMucTacGia = 348587>
1252<#assign authorCategories = "">
1253<#list currentArticleAssetEntry.getCategories() as category>
1254<#if category.vocabularyId == danhMucTacGia>
1255<#if authorCategories?has_content>
1256<#assign authorCategories = authorCategories + ", " + category.name>
1257<#else>
1258<#assign authorCategories = category.name>
1259</#if>
1260</#if>
1261</#list>
1262<@liferay_util["html-top"]>
1263<meta name='DC.Creator' content="${authorCategories}">
1264<meta name="DC.Description" content="${summary?replace('<[^>]*>', '', 'r')}">
1265<meta name="title" property="og:title" content="${title?html}">
1266<meta name="image" property="og:image" content="${imageUrl}">
1267<meta name="imageurl" property="og:image:url" content="${imageUrl}">
1268<meta name="description" property="og:description" content="${summaryText}">
1269<meta name="url" property="og:url" content="${currentUrl}">
1270</@>
1271<#assign
1272theme_display = themeDisplay
1273images_folder = theme_display.getPathThemeImages()
1274
1275/>
1276
1277<script>
1278 $(document).ready(function () {
1279 $(".hrefShareFb").attr("href", "https://www.facebook.com/sharer/sharer.php?u=" + window.location.href);
1280 /*$("#hrefShareEmail").attr("href", "mailto:?subject=I wanted you to see this site&body=Check out this site " + window.location.href);*/
1281 $("#hrefShareEmail").attr("href", 'https://mail.google.com/mail/u/0/?su='+'${title}'+'&body=' + window.location.href+'&fs=1&tf=cm');
1282 $("#hrefShareSkype").attr("href", "https://web.skype.com/share?url=" + window.location.href);
1283 $("#trigger_zalo").attr("data-href", "" + window.location.href);
1284 $(".hrefShareTwitter").attr("href", "https://twitter.com/intent/tweet?text=" + window.location.href);
1285 var modal = $('.modal-thongtin');
1286 var btn = $('.btnsend');
1287 var button_dt = $('.button-dt');
1288 var button_dt_close = $('.button-dt-close');
1289 var span = $('.close');
1290 var baiVietId = $('#baiVietId');
1291 var tieuDe = $('#tieuDe');
1292 var commentContent = $('#commentContent');
1293 var commentName = $('#commentName');
1294 var commentAddress = $('#commentAddress');
1295 var commentEmail = $('#commentEmail');
1296
1297 button_dt.click(function () {
1298 const valid = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
1299 if (commentName.val().length == 0) {
1300 commentName.css('border-color', 'red');
1301 commentName.focus();
1302 } else if (commentAddress.val().length == 0) {
1303 commentAddress.css('border-color', 'red');
1304 commentAddress.focus();
1305 } else if (commentEmail.val().length == 0) {
1306 commentEmail.css('border-color', 'red');
1307 commentEmail.focus();
1308 } else if (!valid.test(commentEmail.val())) {
1309 commentEmail.css('border-color', 'red');
1310 commentEmail.focus();
1311 alert('Vui lòng nhập đúng email!');
1312 } else {
1313 comment(baiVietId.val(), tieuDe.val(), commentContent.val(), commentName.val(), commentAddress.val(), commentEmail.val(), groupId);
1314 commentContent.val('');
1315 commentName.val('');
1316 commentAddress.val('');
1317 commentEmail.val('');
1318 modal.hide();
1319 btn.show();
1320 }
1321 });
1322
1323 button_dt_close.click(function () {
1324 commentContent.val('');
1325 commentName.val('');
1326 commentAddress.val('');
1327 commentEmail.val('');
1328 commentName.css('border-color', '#ccc');
1329 commentAddress.css('border-color', '#ccc');
1330 commentEmail.css('border-color', '#ccc');
1331 modal.hide();
1332 btn.show();
1333
1334 });
1335
1336 span.click(function () {
1337 commentContent.val('');
1338 commentName.val('');
1339 commentAddress.val('');
1340 commentEmail.val('');
1341 modal.hide();
1342 $('.replyBox').hide();
1343 btn.show();
1344
1345 $('.inputReplyContent').val('');
1346 commentNameReply.val('');
1347 commentAddressReply.val('');
1348 commentEmailReply.val('');
1349 modal_reply.hide();
1350 $('.replyBox').hide();
1351 btnreply.show();
1352 });
1353
1354 $(window).on('click', function (e) {
1355 if ($(e.target).is('.modal-thongtin')) {
1356 commentContent.val('');
1357 commentName.val('');
1358 commentAddress.val('');
1359 commentEmail.val('');
1360 modal.hide();
1361 btn.show();
1362 }
1363 if ($(e.target).is('.modal-thongtin-reply')) {
1364 $('.inputReplyContent').val('');
1365 commentNameReply.val('');
1366 commentAddressReply.val('');
1367 commentEmailReply.val('');
1368 modal_reply.hide();
1369 btnreply.show();
1370 }
1371 });
1372
1373
1374 var modal_reply = $('.modal-thongtin-reply');
1375 var btnreply = $('.btnreply');
1376 var button_dt_reply = $('.button-dt-reply');
1377 var button_dt_reply_close = $('.button-dt-reply-close');
1378 var span = $('.close');
1379 var commentNameReply = $('#commentNameReply');
1380 var commentAddressReply = $('#commentAddressReply');
1381 var commentEmailReply = $('#commentEmailReply');
1382
1383 function submitreply() {
1384 var commentId = $('#commentId').val();
1385 if ($('#inputReplyContent' + commentId).val().length == 0) {
1386 alert('Vui lòng nhập nội dung ý kiến!');
1387 } else {
1388 modal_reply.show();
1389 $('#commentContentReply').val($('#inputReplyContent' + commentId).val());
1390 btnreply.hide();
1391 }
1392 }
1393
1394 button_dt_reply.click(function () {
1395 if (commentNameReply.val().length == 0) {
1396 commentNameReply.css('border-color', 'red');
1397 } else if (commentAddressReply.val().length == 0) {
1398 commentAddressReply.css('border-color', 'red');
1399 } else if (commentEmailReply.val().length == 0) {
1400 commentEmailReply.css('border-color', 'red');
1401 } else {
1402 replyComment($('#commentId').val(), baiVietId.val(), tieuDe.val(), $('#commentContentReply').val(), commentNameReply.val(), commentAddressReply.val(), commentEmailReply.val());
1403 $('.inputReplyContent').val('');
1404 commentNameReply.val('');
1405 commentAddressReply.val('');
1406 commentEmailReply.val('');
1407 modal_reply.hide();
1408 }
1409 });
1410
1411 button_dt_reply_close.click(function () {
1412 $('.inputReplyContent').val('');
1413 commentNameReply.val('');
1414 commentAddressReply.val('');
1415 commentEmailReply.val('');
1416 modal_reply.hide();
1417
1418 });
1419 });
1420
1421 function printById(elementId) {
1422 var contentHTML = document.getElementById(elementId).innerHTML;
1423 var titleDetail = document.getElementById('title-detail').innerHTML;
1424 const baseUrl = window.location.origin;
1425 contentHTML = contentHTML.replace(/src="\/(?!\/)/g, 'src="' + baseUrl + '/');
1426 var headerHTML = `
1427 <div class="menu-logo-90">
1428 <img src="https://cttdt.danangportal.gov.vn/o/portal-home-multi-theme/images/icons/DNG_icon.png" alt="logo" class="menu-logo__image-90 DN-logo">
1429 <div class="header-title mx-3">
1430 <div class="ttdt-header-1">CỔNG THÔNG TIN ĐIỆN TỬ</div>
1431 <div class="ttdt-header-2">
1432
1433 THÀNH PHỐ ĐÀ NẴNG
1434 </div>
1435 <div class="ttdt-header-3">
1436
1437 WWW.DANANG.GOV.VN
1438 </div>
1439 </div>
1440 </div>
1441 `;
1442 var printWindow = window.open('', '', 'width=800,height=600');
1443
1444 printWindow.document.open();
1445 printWindow.document.write(`
1446 <html>
1447 <head>
1448 <style>
1449.text-summary > p {
1450 color: #000;
1451 font-size: 16px;
1452 font-style: italic;
1453 font-weight: 700;
1454 line-height: normal;
1455 }
1456 p {
1457 text-align: justify;
1458 color: #2E2E2E;
1459 font-size: 16px;
1460 font-style: normal;
1461 font-weight: 400;
1462 line-height: 22.4px;
1463 letter-spacing: 0.08px;
1464 }
1465 .menu-logo-90 {
1466 display: flex;
1467 height: 132px;
1468 padding: 9px;
1469 }
1470
1471 .menu-logo__image-90 {
1472 object-fit: contain;
1473 }
1474
1475 .header-title {
1476 line-height: 38px;
1477 letter-spacing: 0.25px;
1478 margin: auto;
1479}
1480
1481.ttdt-header-1 {
1482 letter-spacing: 6px;
1483 color: #DE6F18;
1484 font-weight: 700;
1485 font-size: 22px;
1486 font-family: 'Montserrat Bold' !important;
1487 line-height: 30px;
1488}
1489
1490.ttdt-header-2 {
1491 color: #035FB5;
1492 font-family: 'Montserrat Black' !important;
1493 font-style: normal;
1494 font-size: 36px;
1495 font-weight: 900;
1496 line-height: 50px;
1497}
1498
1499.ttdt-header-3 {
1500 letter-spacing: 11px;
1501 color: #0065B3;
1502 font-weight: 500;
1503 font-size: 20px;
1504 font-family: 'Montserrat Medium' !important;
1505 line-height: 30px;
1506}
1507
1508.print-separator {
1509 border: none;
1510 border-top: 2px solid #ccc;
1511 margin: 10px 0 25px 0;
1512 }
1513
1514 .display-img-default {
1515 background: transparent !important;
1516 height: fit-content !important;
1517}
1518
1519.display-img-default > figure > img {
1520 width: 95%;
1521 height: auto !important;
1522}
1523 </style>
1524 </head>
1525 <body>`+ headerHTML+`<hr class="print-separator">` + titleDetail+contentHTML+`
1526 </body>
1527 </html>
1528 `);
1529 printWindow.document.close();
1530 const interval = setInterval(() => {
1531 if (printWindow.document.readyState === 'complete') {
1532 clearInterval(interval);
1533
1534 const imgs = printWindow.document.images;
1535 if (imgs.length === 0) {
1536 startPrint();
1537 return;
1538 }
1539
1540 let loadedCount = 0;
1541 for (let img of imgs) {
1542 if (img.complete) {
1543 loadedCount++;
1544 if (loadedCount === imgs.length) startPrint();
1545 } else {
1546 img.onload = img.onerror = () => {
1547 loadedCount++;
1548 if (loadedCount === imgs.length) startPrint();
1549 };
1550 }
1551 }
1552
1553 function startPrint() {
1554 printWindow.focus();
1555 setTimeout(() => {
1556 printWindow.print();
1557 // printWindow.close(); // bật nếu bạn muốn tự đóng
1558 }, 300);
1559 }
1560 }
1561 }, 100);
1562 }
1563
1564 $(function () {
1565 var star = '.star',
1566 selected = '.selected';
1567 $(star).on('click', function () {
1568 $(selected).each(function () {
1569 $(this).removeClass('selected');
1570 });
1571 $(this).addClass('selected');
1572 });
1573 });
1574
1575 function submitreply() {
1576 var commentId = $('#commentId').val();
1577 if ($('#inputReplyContent' + commentId).val().length == 0) {
1578 alert('Vui lòng nhập nội dung ý kiến!');
1579 } else {
1580 $('.modal-thongtin-reply').show();
1581 $('#commentContentReply').val($('#inputReplyContent' + commentId).val());
1582 $('.btnreply').hide();
1583 }
1584 }
1585
1586 function changePageSize() {
1587 var pageSize = $('#pageSize').val();
1588 var pageIndex = $('#pageIndex').val();
1589 paginate(pageIndex, pageSize);
1590 }
1591
1592 function changePageIndex() {
1593 var pageSize = $('#pageSize').val();
1594 var pageIndex = $('#pageIndex').val();
1595 $('#curPage').val(pageIndex);
1596 paginate(pageIndex, pageSize);
1597 }
1598
1599 function gotoPage(i) {
1600 $('a[name="gotoPage"]').removeClass("active");
1601 $('#gotoPage' + i).addClass("active");
1602 $('.list-unstyled').css("display", "none");
1603 $('ul[name="list-unstyled-' + i + '"]').css("display", "grid");
1604 $('#currentPage').val(i);
1605 }
1606
1607 function previousPage() {
1608 var i = $('#currentPage').val();
1609 if (i > 1) {
1610 gotoPage(Number(i) - 1);
1611 }
1612 }
1613
1614 function nextPage() {
1615 var i = $('#currentPage').val();
1616 var totalPage = $('#totalPages').val();
1617 console.log(i);
1618 console.log(totalPage);
1619 if (i < totalPage) {
1620 gotoPage(Number(i) + 1);
1621 }
1622 }
1623
1624
1625</script>
1626<div id="fb-root"></div>
1627<div class="detail__flex">
1628
1629 <div class="detail__main">
1630 <#-- <span class="text-trangchu-ctbv">TRANG CHỦ / <span class="text-gioithieu-ctbv">TIN TỨC</span></span>-->
1631 <div class="main-content main_blog_post_content">
1632 <div class="panel mbp_thumb_post mb-50-portal mb-50 mb-50-surface-pro-7 mb-30" id="main-body">
1633 <div style="margin:0px 0px;" id="title-detail">
1634 <h3 class="title-divvv">${title}</h3>
1635 </div>
1636 <div class="shortcode-content hreview py-1 py-md-2">
1637 <div class="article-head">
1638 <div class="article-info" style="border-top: 0px;border-bottom: 0px; height: 33px;">
1639 <div class="social-buttons left" style="float: left!important;">
1640 <ul class="blog_sp_post_meta">
1641 <li class="list-inline-item">
1642 <span class="sp-dislaydate">${displayDate} , Lượt xem: ${currentArticleAssetEntry.viewCount} </span>
1643 </li>
1644 </ul>
1645 </div>
1646 <div style="float: right">
1647 <div class="wrap-tool d-flex">
1648 <a onclick="fontMinus();" href="javascript:void(0);" title="Giảm cỡ chữ"
1649 class=""
1650 data-toggle="tooltip">
1651 <span class="icon-tool">
1652 <svg xmlns="http://www.w3.org/2000/svg" width="25" height="25"
1653 viewBox="0 0 28 28" fill="none">
1654 <circle cx="14" cy="14" r="13.5" stroke="#777777"/>
1655 <path d="M17.5 15.5L13.75 11.75L10 15.5" stroke="#777777"
1656 stroke-width="1.5"
1657 stroke-linecap="round" stroke-linejoin="round"/>
1658 </svg>
1659 </span>
1660 </a>
1661
1662 <a onclick="fontPlus();" href="javascript:void(0);" title="Aa" class=""
1663 data-toggle="tooltip">
1664 <span class="icon-tool">
1665 <img src="/documents/37638/39612/Aa.svg" style="height: 20px" />
1666 </span>
1667 </a>
1668
1669 <a onclick="fontPlus();" href="javascript:void(0);" title="Tăng cỡ chữ" class=""
1670 data-toggle="tooltip">
1671 <span class="icon-tool">
1672 <svg xmlns="http://www.w3.org/2000/svg" width="28" height="28"
1673 viewBox="0 0 28 28" fill="none">
1674 <circle cx="14" cy="14" r="13.5" transform="rotate(-180 14 14)"
1675 stroke="#777777"/>
1676 <path d="M10 12L13.75 15.75L17.5 12" stroke="#777777"
1677 stroke-width="1.5" stroke-linecap="round"
1678 stroke-linejoin="round"/>
1679 </svg>
1680 </span>
1681 </a>
1682
1683 <a onclick="giamTuongPhan();" href="javascript:void(0);"
1684 data-toggle="tooltip" title="Giảm tương phản">
1685 <span class="icon-tool">
1686 <img src="/o/portal-home-multi-theme/icons/trothinh/trothinh_bright-down-btn.png"
1687 style="vertical-align: middle;opacity: 1; height: 28px"/>
1688 </span>
1689 </a>
1690
1691 <a onclick="tangTuongPhan();" href="javascript:void(0);"
1692 data-toggle="tooltip" title="Tăng tương phản">
1693 <span class="icon-tool">
1694 <img src="/o/portal-home-multi-theme/icons/trothinh/trothinh_bright-up-btn.png"
1695 style="vertical-align: middle;opacity: 1; height: 28px"/>
1696 </span>
1697 </a>
1698
1699 <a onclick="voiceSpeak('contentText','voiceSex')" href="javascript:void(0);"
1700
1701 data-toggle="tooltip"
1702 title="Đọc bài viết">
1703 <span class="icon-tool">
1704 <svg xmlns="http://www.w3.org/2000/svg" width="28" height="28"
1705 viewBox="0 0 28 28" fill="none">
1706 <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"
1707 fill="#777777"/>
1708 </svg>
1709 </span>
1710 </a>
1711 <a id="void-pause" onclick="voicePause()" href="javascript:void(0);" style="display:none;"
1712 data-toggle="tooltip"
1713 title="Tạm dừng đọc">
1714 <span class="icon">
1715 <span class="fa fa-pause mr-3" style="vertical-align: middle;opacity: 1;color: dimgray;"/>
1716 </span>
1717 </a>
1718 <a id="void-resume" onclick="voiceResume()" href="javascript:void(0);" style="display:none;"
1719 data-toggle="tooltip"
1720 title="Tiếp tục đọc">
1721 <span class="icon fa fa-repeat mr-3" style="vertical-align: middle;opacity: 1;color: dimgray;"></span>
1722 </a>
1723 <a id="void-stop" onclick="voiceCancel()" href="javascript:void(0);" style="display:none;"
1724 data-toggle="tooltip"
1725 title="Dừng đọc">
1726 <span class="icon fa fa-stop mr-3" style="vertical-align: middle;opacity: 1;color: dimgray;"/>
1727 </a>
1728 <a target="_blank" id="hrefShareEmail" title="Gửi Mail" style="float: left"
1729 data-toggle="tooltip">
1730 <span class="icon-tool">
1731 <img src="/documents/37638/39612/icon-mail.svg" style="height: 25px" />
1732 </span>
1733 </a>
1734
1735 <a onclick="printById('contentText')" href="javascript:void(0);" title="In bài" class="" style="float: left"
1736 data-toggle="tooltip">
1737 <span class="icon-tool">
1738 <img src="/documents/37638/39612/icon-print.svg" style="height: 25px" />
1739 </span>
1740 </a>
1741
1742 </div>
1743 </div>
1744
1745
1746 <input type="hidden" id="voiceSex" value="Vietnamese Female"/>
1747 <input type="hidden" id="tuongphan" value="3"/>
1748 <input type="hidden" id="DDMStructureKey" name="DDMStructureKey"
1749 value="${DDMStructureKey}"/>
1750 <input type="hidden" id="baiVietId" name="baiVietId" value="${articlePrimKey}"/>
1751 <input type="hidden" id="commentId" name="commentId" value=""/>
1752 <input type="hidden" id="tieuDe" name="tieuDe" value="${title?html}"/>
1753 <input type="hidden" value="1" id="curPage"/>
1754 <input type="hidden" value="0" id="totalRelated"/>
1755 <input type="hidden" value="${currentUrl}" id="currentURL"/>
1756 </div>
1757 </div>
1758 </div>
1759 <div id="contentText" style="margin:10px 0px;">
1760 <b style="text-align: justify;" class="text-summary">${summary}</b>
1761 <#assign sanitizedContent = noiDung.getData()?replace("<script>", "<p class='d-none'>")?replace("</script>", "</p>")>
1762 ${noiDung.getData()}
1763 </div>
1764 <div class="article-info">
1765 <div class="row social-buttons">
1766 <div class="col-lg-10 d-flex align-items-center">
1767 <iframe class="share-fb-custom" src="https://www.facebook.com/plugins/share_button.php?href=${currentUrl}&layout=button_count&size=small&width=92&height=28&appId=252861586372350&locale=vi_VN" width="92" height="28"
1768 style="border:none;overflow:hidden" scrolling="no" frameborder="0"
1769 allowTransparency="true" allow="encrypted-media"></iframe>
1770 <div style="display: flex; align-items: center;">
1771 <p class="text-dgbv">Đánh giá bài viết:</p>
1772 <div class="ratings-wrapper ml-2">
1773 <div data-productid="39" class="ratings">
1774 <span class="star" data-rating="5"></span>
1775 <span class="star" data-rating="4"></span>
1776 <span class="star" data-rating="3"></span>
1777 <span class="star" data-rating="2"></span>
1778 <span class="star" data-rating="1"></span>
1779 </div>
1780 </div>
1781 </div>
1782 </div>
1783 <div class="col-lg-1 ctbv-right"></div>
1784 </div>
1785 </div>
1786 <div class="line no-mt"></div>
1787
1788 <#assign videoCategoryIds = [] />
1789 <#assign audioCategoryIds = [] />
1790 <#assign currentURL = themeDisplay.getURLCurrent()?lower_case />
1791 <div class="d-flex align-items-start pb-32">
1792 <p class="title-content-vni mr-2">
1793 <img src="/documents/37638/39612/icon-tag.svg" />
1794 </p>
1795 <div class="d-flex flex-wrap" style="gap: 10px;">
1796 <#list currentArticleAssetEntry.getCategories() as category>
1797 <#if category_index == 0>
1798 <span id="firstCategory" data-category="${category.name}"></span>
1799 </#if>
1800 <#if currentURL?contains("video")>
1801 <#if category.name?lower_case?contains("video")>
1802 <#assign videoCategoryIds = videoCategoryIds + [category.categoryId] />
1803 </#if>
1804 </#if>
1805 <#if currentURL?contains("audio")>
1806 <#if category.name?lower_case?contains("audio")>
1807 <#assign audioCategoryIds = audioCategoryIds + [category.categoryId] />
1808 </#if>
1809 </#if>
1810 <#if category.vocabularyId != danhMucTacGia>
1811 <div class="tags mr-2" style=" background: #EBEBEB; border-radius: 6px; padding: 3px 8px; color: #5F676D; font-size: clamp(14px, 2vw, 16px); font-weight: 400;">
1812 <p data-categoryId="${category.categoryId}" class="tag mb-0">${category.name}</p>
1813 </div>
1814</#if>
1815</#list>
1816</div>
1817</div>
1818
1819
1820<script>
1821 $(document).ready(function () {
1822 getCurrentCategorie();
1823 });
1824
1825 function getCurrentCategorie() {
1826 var firstCategory = $("#firstCategory").data("category");
1827 if (firstCategory) {
1828 $("#tinTucChiTietBreadcrumd a:last").html(' / ' + firstCategory);
1829 }
1830 }
1831</script>
1832
1833<div class="line no-mt"></div>
1834
1835<div class="y-kien">
1836 <div class="position-relative d-flex flex-column" >
1837 <div class="title-ccni" style="width: fit-content">
1838 <a class="d-flex align-items-center" style="margin-bottom: 10px">
1839 <p class="mb-0" data-lfr-editable-id="element-text" data-lfr-editable-type="text">
1840 Ý KIẾN CỦA BẠN
1841 </p>
1842 </a>
1843 <div class="spotlight-x" style="
1844width: 20%;
1845position: absolute;
1846bottom: 0;
1847left: 0;
1848z-index: 2;
1849display: block;
1850 ">
1851 <div class="d-flex orange-line">
1852 <div class="line-blue"></div>
1853 </div>
1854 </div>
1855 <div class="line-tail-chitiet position-absolute"></div>
1856 </div>
1857 </div>
1858
1859
1860 <div class="form-binh-luan my-2">
1861 <form action="?" method="POST" class="needs-validation" novalidate="novalidate" onsubmit="return submitUserForm();">
1862 <div id="articleWrapper"
1863 data-article-id="${currentArticle.id}"
1864 data-article-title="${currentArticle.title?html}"
1865 data-article-author="${currentArticle.userName}"
1866 data-group-id="${groupId}"
1867 data-url-title="${currentArticle.urlTitle}">
1868 </div>
1869 <div class="form-group">
1870 <label class="label-binh-luan" for="commentName">Tên <span class="text-danger">*</span></label>
1871 <input type="text" class="form-control" id="commentName" placeholder="Nhập tên" title="tên" required>
1872 </div>
1873 <div class="form-row">
1874 <div class="form-group col-md-3">
1875 <label class="label-binh-luan" for="soDienThoai">Số điện thoại <span class="text-danger">*</span></label>
1876 <input type="tel" max="12" id="soDienThoai" class="form-control" placeholder="Nhập số điện thoại" required />
1877 <span id="soDienThoaiValid" style="color: red; font-size: 12px;"></span>
1878 </div>
1879 <div class="form-group col-md-9">
1880 <label class="label-binh-luan" for="email">Thư điện tử <span class="text-danger">*</span></label>
1881 <input type="email" class="form-control" placeholder="Nhập thư điện tử" id="email" regex="^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$" required>
1882 </div>
1883 </div>
1884
1885 <div class="form-group">
1886 <label class="label-binh-luan" for="commentContent">Bình luận, góp ý <span class="text-danger">*</span></label>
1887 <textarea class="form-control" id="commentContent" placeholder="Nhập ý kiến của bạn ..." rows="3" required></textarea>
1888 </div>
1889 <div class="g-recaptcha gg-custom"
1890 data-sitekey="6LdJn8wUAAAAAMvr7BbFYRPvKU8CJh8eppjhQVrp" data-callback="verifyCaptcha">
1891 </div>
1892 <div class="d-flex justify-content-end">
1893 <button type="submit" class="btn btn-send-cmt btnsend" onclick="sendFeedback()" style="">Gửi bình luận</button>
1894 </div>
1895 </form>
1896 </div>
1897</div>
1898<div id="customSuccessPopupOverlay" class="popup-overlay d-none">
1899 <div id="customSuccessPopup" class="custom-popup-ykien-binhluan">
1900 <div class="custom-popup-ykien-binhluan-content">
1901 <div>
1902 <img src="/documents/37638/0/daguibinhluan-icon.png" alt="Success Icon" class="popup-icon"/>
1903 </div>
1904 <p class="popup-message">"Cảm ơn bạn đã bình luận!"</p>
1905 </div>
1906 </div>
1907</div>
1908<div class="y-kien-ban-doc my-4">
1909 <div class="position-relative d-flex flex-column" >
1910 <div class="title-ccni" style="width: fit-content">
1911 <a class="d-flex align-items-center" style="margin-bottom: 10px">
1912 <p class="mb-0" data-lfr-editable-id="element-text" data-lfr-editable-type="text">
1913 Ý KIẾN BẠN ĐỌC
1914 </p>
1915 </a>
1916 <div class="spotlight-x" style="
1917width: 20%;
1918position: absolute;
1919bottom: 0;
1920left: 0;
1921z-index: 2;
1922display: block;
1923 ">
1924 <div class="d-flex orange-line">
1925 <div class="line-blue"></div>
1926 </div>
1927 </div>
1928 <div class="line-tail-chitiet position-absolute"></div>
1929 </div>
1930 </div>
1931
1932 <div class="wrap-list-comment my-3">
1933 <div class="row">
1934 <div class="col-12">
1935 <div id="comment-list"></div>
1936 <div id="binhLuanMacDinh"> <p class="binhLuanMacDinh"> Chưa có bình luận ý kiến bài viết! </p></div>
1937 </div>
1938 </div>
1939 </div>
1940</div>
1941
1942
1943
1944<div class="y-kien-ban-doc my-4">
1945 <div class="position-relative d-flex flex-column mb-3" >
1946 <div class="title-ccni" style="width: fit-content">
1947 <a class="d-flex align-items-center" style="margin-bottom: 10px">
1948 <p class="mb-0" data-lfr-editable-id="element-text" data-lfr-editable-type="text">
1949 CÁC TIN KHÁC
1950 </p>
1951 </a>
1952 <div class="spotlight-x" style=" width:18%; position: absolute; bottom: 0; left: 0; z-index: 2; display: block;">
1953 <div class="d-flex orange-line">
1954 <div class="line-blue"></div>
1955 </div>
1956 </div>
1957 <div class="line-tail-chitiet position-absolute"></div>
1958 </div>
1959 </div>
1960
1961
1962 <div class="col-lg-12 col-xl-12 mb-4 px-lg-0 px-3">
1963 <#if teste?has_content>
1964 <div class="row">
1965 <#assign indexLocal = 0/>
1966 <#assign isSpecialSite = getterUtil.getBoolean(themeDisplay.getThemeSetting("isSpecialSite")) />
1967 <#list teste?filter(curEntryyy -> curEntryyy.getEntryId() != currentArticleAssetEntry.getEntryId()) as curEntryyy>
1968 <#if curEntryyy?? && curEntryyy.getAssetRenderer()??>
1969 <#assign
1970 renderer = curEntryyy.getAssetRenderer()
1971 className = renderer.getClassName()!"" />
1972 <#if className == "com.liferay.journal.model.JournalArticle">
1973 <#assign
1974 title = curEntryyy.getTitle(locale)!""
1975 article = renderer.getArticle()
1976 SmallImageID = article.getSmallImageId()
1977 SmallImage = article.getSmallImageURL()
1978 viewCount = curEntryyy.getViewCount()
1979 description = article.getDescription(locale)!""
1980 curEntryyy = curEntryyy
1981 viewURL = "${themeDisplay.getPathFriendlyURLPublic()}${themeDisplay.getSiteGroup().getFriendlyURL()}/-/${renderer.getUrlTitle()}"
1982 hasMatch = false />
1983 <#if isSpecialSite?? && isSpecialSite?c == "true">
1984 <#assign currentUrl = themeDisplay.getURLCurrent()!"" />
1985 <#if currentUrl?has_content>
1986 <#assign parts_split = currentUrl?split("/")>
1987 <#assign aidx = parts_split?seq_index_of("asset_publisher")>
1988 <#if aidx != -1 && (parts_split?size > (aidx + 1))>
1989 <#assign portletKey = parts_split[aidx + 1]>
1990 <#else>
1991 <#if rvlr??>
1992 <#assign portletKey = rvlr>
1993 <#else>
1994 <#assign portletKey = "default_portlet_key">
1995 </#if>
1996 </#if>
1997</#if>
1998</#if>
1999
2000<#if videoCategoryIds?has_content >
2001<#list curEntryyy.getCategories() as categoryList>
2002<#if videoCategoryIds?seq_contains(categoryList.getCategoryId())>
2003<#assign hasMatch = true />
2004<#break />
2005</#if>
2006</#list>
2007<#elseif audioCategoryIds?has_content >
2008<#list curEntryyy.getCategories() as categoryList>
2009<#if audioCategoryIds?seq_contains(categoryList.getCategoryId())>
2010<#assign hasMatch = true />
2011<#break />
2012</#if>
2013</#list>
2014
2015<#else>
2016<#list curEntryyy.getCategories() as categoryList>
2017<#list currentArticleAssetEntry.getCategories() as cateId>
2018<#if categoryList.getCategoryId() == cateId.getCategoryId()>
2019<#assign hasMatch = true />
2020<#break />
2021</#if>
2022</#list>
2023<#if hasMatch>
2024<#break />
2025</#if>
2026</#list>
2027</#if>
2028<#if hasMatch>
2029<#assign indexLocal = indexLocal + 1 />
2030<#if indexLocal < 13>
2031<#if SmallImage ?? && SmallImage?length !=0 >
2032<#assign smallImageUrl = SmallImage>
2033<#elseif SmallImageID ?? && SmallImageID != 0>
2034<#assign smallImageUrl = "/image/journal/article?img_id=${article.getSmallImageId()}">
2035<#else>
2036<#assign smallImageUrl = "/documents/37638/0/ảnh-đại-diện-đà-nẵng-01.jpg" >
2037</#if>
2038<div class="col-6 col-lg-4 item-small-news mb-2 px-1 px-lg-3">
2039 <a class="inner-bg-gray" href="${viewURL}" title="${title}">
2040 <div class="row">
2041 <div class="col-12">
2042 <div class="tin-nho-block11 position-relative" >
2043 <img src="${smallImageUrl}" alt="" class="img-nho-block11 img-lo57" onerror="this.onerror=null; this.src='/documents/37638/0/ảnh-đại-diện-đà-nẵng-01.jpg';">
2044 <div class="p-2 p-lg-3 title-tin-nho-block11">
2045 ${title}
2046 </div>
2047 <div class="under-ws position-absolute"></div>
2048 </div>
2049 </div>
2050 </div>
2051 </a>
2052</div>
2053</#if>
2054<#if indexLocal == 12>
2055<#break>
2056</#if>
2057</#if>
2058</#if>
2059</#if>
2060</#list>
2061</div>
2062</#if>
2063</div>
2064</div>
2065
2066
2067<div class="tin-doc-nhieu-nhat">
2068 <div class="position-relative d-flex flex-column mb-3" >
2069 <div class="title-ccni" style="width: fit-content">
2070 <a class="d-flex align-items-center" style="margin-bottom: 10px">
2071 <p class="mb-0" data-lfr-editable-id="element-text" data-lfr-editable-type="text">
2072 TIN ĐỌC NHIỀU
2073 </p>
2074 </a>
2075 <div class="spotlight-x" style="
2076width:18%;
2077position: absolute;
2078bottom: 0;
2079left: 0;
2080z-index: 2;
2081display: block;
2082 ">
2083 <div class="d-flex orange-line">
2084 <div class="line-blue"></div>
2085 </div>
2086 </div>
2087 <div class="line-tail-chitiet position-absolute"></div>
2088 </div>
2089 </div>
2090 <div class=" p-0 scroll-divv news-container-pvm ">
2091 <#if teste?has_content>
2092 <div class=" news-item-pvm mg-b-24">
2093 <#assign indexLocal = 0/>
2094 <#assign
2095 isSpecialSite = getterUtil.getBoolean(themeDisplay.getThemeSetting("isSpecialSite"))
2096 />
2097 <#assign sortedEntries = teste?sort_by("viewCount")?reverse />
2098 <#list sortedEntries?filter(curEntryyy -> curEntryyy.getEntryId() != currentArticleAssetEntry.getEntryId()) as curEntryyy>
2099 <#if curEntryyy?? && curEntryyy.getAssetRenderer()??>
2100 <#assign
2101 renderer = curEntryyy.getAssetRenderer()
2102 className = renderer.getClassName()!"" />
2103 <#if className == "com.liferay.journal.model.JournalArticle">
2104 <#assign
2105 title = curEntryyy.getTitle(locale)!""
2106 article = renderer.getArticle()
2107 SmallImageID = article.getSmallImageId()
2108 SmallImage = article.getSmallImageURL()
2109 <#--SmallImageID = article.getSmallImageId()!0
2110 SmallImage = article.getSmallImageURL()!""-->
2111 description = article.getDescription(locale)!""
2112 curEntryyy = curEntryyy
2113 countView = curEntryyy.getViewCount()
2114 viewURL = "${themeDisplay.getPathFriendlyURLPublic()}${themeDisplay.getSiteGroup().getFriendlyURL()}/-/${renderer.getUrlTitle()}"
2115 hasMatch = false />
2116 <#if isSpecialSite?? && isSpecialSite?c == "true">
2117 <#assign currentUrl = themeDisplay.getURLCurrent()!"" />
2118 <#if currentUrl?has_content>
2119 <#assign parts_split = currentUrl?split("/")>
2120 <#assign aidx = parts_split?seq_index_of("asset_publisher")>
2121 <#if aidx != -1 && (parts_split?size > (aidx + 1))>
2122 <#assign portletKey = parts_split[aidx + 1]>
2123 <#else>
2124 <#if rvlr??>
2125 <#assign portletKey = rvlr>
2126 <#else>
2127 <#assign portletKey = "default_portlet_key">
2128 </#if>
2129 </#if>
2130</#if>
2131</#if>
2132<#if videoCategoryIds?has_content>
2133<#list curEntryyy.getCategories() as categoryList>
2134<#if videoCategoryIds?seq_contains(categoryList.getCategoryId())>
2135<#assign hasMatch = true />
2136<#break />
2137</#if>
2138</#list>
2139<#elseif audioCategoryIds?has_content >
2140<#list curEntryyy.getCategories() as categoryList>
2141<#if audioCategoryIds?seq_contains(categoryList.getCategoryId())>
2142<#assign hasMatch = true />
2143<#break />
2144</#if>
2145</#list>
2146<#else>
2147<#list curEntryyy.getCategories() as categoryList>
2148<#list currentArticleAssetEntry.getCategories() as cateId>
2149<#if categoryList.getCategoryId() == cateId.getCategoryId()>
2150<#assign hasMatch = true />
2151<#break />
2152</#if>
2153</#list>
2154<#if hasMatch>
2155<#break />
2156</#if>
2157</#list>
2158</#if>
2159
2160<#if hasMatch>
2161<#assign indexLocal = indexLocal + 1 />
2162<#if indexLocal < 11>
2163<#if SmallImage ?? && SmallImage?length !=0 >
2164<#assign smallImageUrl = SmallImage>
2165<#elseif SmallImageID ?? && SmallImageID != 0>
2166<#assign smallImageUrl = "/image/journal/article?img_id=${SmallImageID}">
2167<#else>
2168<#assign smallImageUrl = "/documents/37638/0/ảnh-đại-diện-đà-nẵng-01.jpg" >
2169</#if>
2170<span class="abcd" style="display:none;">${article}</span>
2171<a href="${viewURL}" class=" w-100 same-height">
2172 <div class="row">
2173 <div class="col-12 col-md-4 pr-0 img-hdk-ct">
2174 <img id="tin-slide-img-left"
2175 class=" tin-slide-img-left img-tin-hd-khac"
2176 onerror="this.onerror=null; this.src='/documents/37638/0/ảnh-đại-diện-đà-nẵng-01.jpg';"
2177 src="${smallImageUrl}" alt="">
2178 </div>
2179 <div class="col-12 col-md-8 limit-tin-desc-news-3 p-0 pr-md-3 title-tin-hd-khac">
2180 <div class="hoat-dong-khac-tin-khac hd-khac-tin-nho d-flex flex-column align-items-start" style="gap: 8px;">
2181 <div class="limit-tin-desc-2 main-color-pct-tin-khac">
2182 <p class="makeshortnews asset-publisher-title mb-0 limit-tin-desc-2 limit-3-lines" title="${title}">${title}</p>
2183 </div>
2184 <div class="text-left align-items-start top-0 limit-tin-descc-news limit-5-lines-desc description-color d-mobile-none"><p title="${htmlUtil.extractText(description)}">${htmlUtil.extractText(description)}</p></div>
2185 </div>
2186 </div>
2187 </div>
2188</a>
2189</#if>
2190<#if indexLocal == 10>
2191<#break>
2192</#if>
2193</#if>
2194
2195</#if>
2196</#if>
2197</#list>
2198</div>
2199</#if>
2200
2201
2202<script>
2203 $(document).ready(function () {
2204 //load lần đầu lấy 3 comments
2205 getFeedback(3);
2206
2207
2208 let stars = document.querySelectorAll(".ratings span");
2209 let products = document.querySelectorAll(".ratings");
2210 let ratings = [];
2211
2212 for (let star of stars) {
2213 star.addEventListener("click", function () {
2214 let children = star.parentElement.children;
2215 for (let child of children) {
2216 if (child.getAttribute("data-clicked")) {
2217 return false;
2218 }
2219 }
2220
2221 this.setAttribute("data-clicked", "true");
2222 let rating = this.dataset.rating;
2223 let productId = this.parentElement.dataset.productid;
2224 let data = {
2225 "rating": rating,
2226 "product-id": productId,
2227 }
2228 ratings.push(data);
2229 localStorage.setItem("rating", JSON.stringify(ratings));
2230 });
2231 }
2232
2233 if (localStorage.getItem("rating")) {
2234 ratings = JSON.parse(localStorage.getItem("rating"));
2235 for (let rating of ratings) {
2236 for (let product of products) {
2237 if (rating["product-id"] == product.dataset.productid) {
2238 let reverse = Array.from(product.children).reverse();
2239 let index = parseInt(rating["rating"]) - 1;
2240 reverse[index].setAttribute("data-clicked", "true");
2241 }
2242 }
2243 }
2244 }
2245 });
2246
2247
2248
2249 function submitUserForm() {
2250 var response = grecaptcha.getResponse();
2251 if (response.length == 0) {
2252 $("#g-recaptcha-error").html("<span style='color:red;'>This field is required.</span>");
2253 return false;
2254 }
2255 return true;
2256 };
2257 function verifyCaptcha() {
2258 $("#g-recaptcha-error").html("");
2259 }
2260
2261 function sendFeedback() {
2262 event.preventDefault();
2263 let isValid = true;
2264 let btn = $(".btnsend");
2265 if (btn.prop("disabled")) return;
2266 btn.prop("disabled", true);
2267 /*var response = grecaptcha.getResponse();
2268 if (response.length == 0) {
2269 $("#g-recaptcha-error").html("<span style='color:red;'>This field is required.</span>");
2270 return false;
2271 }*/
2272
2273 const sdt = $('#soDienThoai').val().trim();
2274 if (!/^\d*$/.test(sdt)) {
2275 $('#soDienThoai').addClass('is-invalid');
2276 $('#soDienThoaiValid').text("Số điện thoại chỉ được nhập số");
2277 isValid = false;
2278 } else if (sdt.length !== 10 && sdt.length !== 0) {
2279 $('#soDienThoai').addClass('is-invalid');
2280 $('#soDienThoaiValid').text("Số điện thoại phải đủ 10 số");
2281 isValid = false;
2282 } else {
2283 $('#soDienThoaiValid').text("");
2284 $('#soDienThoai').removeClass('is-invalid');
2285 }
2286
2287 $('[required]').each(function () {
2288 let fieldTitle = $(this).attr('title');
2289 if ($(this).val().toString().trim().length == 0) {
2290 isValid = false;
2291 btn.prop("disabled", false);
2292 Swal.fire({
2293 title: "Vui lòng nhập thông tin",
2294 icon: "error",
2295 })
2296 return false;
2297 } else if ($(this).attr("regex") != undefined) {
2298 let regex = new RegExp($(this).attr('regex'));
2299 if (!regex.test($(this).val())) {
2300 isValid = false;
2301 btn.prop("disabled", false);
2302 Swal.fire({
2303 title: "Vui lòng nhập đúng định dạng",
2304 icon: "error",
2305 })
2306 return false;
2307 }
2308
2309 }
2310 });
2311 if (!isValid) {
2312 btn.prop("disabled", false);
2313 return false;
2314 }
2315 fetch('https://api.ipify.org?format=json')
2316 .then(response => response.json())
2317 .then(data => {
2318 const ipAddress = data.ip;
2319 const articleId = $('#articleWrapper').data('article-id');
2320 const title = $('#articleWrapper').data('article-title');
2321 const author = $('#articleWrapper').data('article-author');
2322 const groupId = $('#articleWrapper').data('group-id');
2323 const urlArticle = $('#articleWrapper').data('url-title');
2324 const param = JSON.stringify({
2325 baiVietId: articleId,
2326 noiDung: $("#commentContent").val(),
2327 ten: $("#commentName").val(),
2328 mail: $("#email").val(),
2329 soDienThoai: $("#soDienThoai").val(),
2330 tieuDeBaiViet: title,
2331 tenTacGia: author,
2332 ipNguoiDung: ipAddress,
2333 groupId : groupId,
2334 urlBaiViet: urlArticle
2335 });
2336 $.ajax({
2337 url: location.origin+'/api/v1/public/tuongtacbaiviet/themBinhLuan',
2338 type: 'POST',
2339 cache: false,
2340 dataType:"json",
2341 contentType:"application/json",
2342 data:param,
2343 /*data: {
2344 baiVietId: '${currentArticle.id}',
2345 noiDung: $("#commentContent").val(),
2346 ten: $("#commentName").val(),
2347 mail: $("#email").val(),
2348 soDienThoai: $("#soDienThoai").val(),
2349 tieuDeBaiViet: '${currentArticle.title}',
2350 tenTacGia: '${currentArticle.userName}',
2351 },*/
2352
2353 success: function () {
2354 $("#customSuccessPopupOverlay").removeClass("d-none");
2355
2356 $("#commentContent").val('');
2357 $("#commentName").val('');
2358 $("#email").val('');
2359 $("#soDienThoai").val('');
2360 btn.prop("disabled", false);
2361 setTimeout(function () {
2362 $("#customSuccessPopupOverlay").addClass("d-none");
2363 }, 3000);
2364 },
2365 error: function (er) {
2366 btn.prop("disabled", false);
2367 Swal.fire({
2368 title: "Thực hiện không thành công",
2369 text: 'Gửi bình luận thất bại',
2370 icon: "error",
2371 })
2372 }
2373 });})
2374 .catch(error => {
2375 btn.prop("disabled", false);
2376 Swal.fire({
2377 title: "Thực hiện không thành công",
2378 text: 'Gửi bình luận thất bại',
2379 icon: "error",
2380 })
2381 });
2382 }
2383 $(document).ready(function () {
2384 $("#customSuccessPopupOverlay").on("click", function () {
2385 $(this).addClass("d-none");
2386 });
2387
2388 $(".custom-popup-ykien-binhluan").on("click", function (e) {
2389 e.stopPropagation();
2390 });
2391 });
2392 function getFeedback(sizecmt) {
2393 $('#comment-list').empty();
2394 const param = JSON.stringify({
2395 baiVietId: '${currentArticle.id}'
2396 });
2397 $.ajax({
2398 url: location.origin+'/api/v1/public/tuongtacbaiviet/truyCapBaiViet',
2399 type: 'POST',
2400 cache : false,
2401 dataType:"json",
2402 contentType:"application/json",
2403 data: param,
2404 }).done(function (data) {
2405
2406 console.log(data)
2407 var dsBinhLuan = data.msg.thongTinBinhLuans;
2408 var count = data.msg.thongTinBinhLuans.length;
2409 var htmlYKien = '';
2410 if (dsBinhLuan.length > 0) {
2411 $('#binhLuanMacDinh').empty();
2412 // htmlYKien += '<h2 class="botting-border"><span class="text-border">Bình luận, ý kiến của bạn đọc (' + count + ')</span></h2>';
2413 for (var i = 0; i < dsBinhLuan.length; i++) {
2414 var obj = dsBinhLuan[i];
2415 htmlYKien += '<div class="item box_cm">';
2416 htmlYKien += '<a href="javascript:void(0)" class="avatar">\n' +
2417 ' <img src="${images_folder}/icons/iconuser.png" class="img-binhluan">\n' +
2418 '</a>';
2419 htmlYKien += '<div class="item-content">';
2420 htmlYKien += '<span class="user-name">' + obj.ten + '</span>' + ' <span class="date-cmt">' + obj.thoiGianBinhLuan + '</span></br>';
2421 htmlYKien += '<span class="text-comment">' + obj.noiDungHienThi + '</span>';
2422 htmlYKien += '</div>';
2423 htmlYKien += '</div>';
2424 }
2425 if (count > sizecmt) {
2426 htmlYKien += '<div class="text-center">\n' +
2427 '<button type="submit" class="btnmorecmt" onclick="getFeedback(' + (sizecmt + 10) + ')" >Xem thêm bình luận, ý kiến\n' +
2428 '</button>\n' +
2429 '</div>';
2430 }
2431 $('#comment-list').append(htmlYKien);
2432 }
2433 ;
2434 });
2435 }
2436</script>
2437<script src="https://sp.zalo.me/plugins/sdk.js"></script>
2438<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
2439<script src="https://code.responsivevoice.org/responsivevoice.js?key=25hFfRt0"></script>
2440<script async defer crossorigin="anonymous" src="https://connect.facebook.net/vi_VN/sdk.js#xfbml=1&version=v17.0"
2441 nonce="vuMxJ4dq"></script>
2442<script src="https://www.google.com/recaptcha/api.js" async defer></script>
2443
2444
2445<#macro getMetadataField
2446fieldName
2447>
2448<#if stringUtil.split(metadataFields)?seq_contains(fieldName)>
2449<span class="metadata-entry metadata-${fieldName}">
2450 <#assign dateFormat = "dd MMM yyyy - HH:mm:ss" />
2451
2452 <#if stringUtil.equals(fieldName, "author")>
2453 <@liferay.language key="by" /> ${htmlUtil.escape(portalUtil.getUserName(assetRenderer.getUserId(), assetRenderer.getUserName()))}
2454 <#elseif stringUtil.equals(fieldName, "categories")>
2455 <@liferay_asset["asset-categories-summary"]
2456 className=curEntry.getClassName()
2457 classPK=curEntry.getClassPK()
2458 portletURL=renderResponse.createRenderURL()
2459 />
2460 <#elseif stringUtil.equals(fieldName, "create-date")>
2461 ${dateUtil.getDate(curEntry.getCreateDate(), dateFormat, locale)}
2462 <#elseif stringUtil.equals(fieldName, "expiration-date")>
2463 ${dateUtil.getDate(curEntry.getExpirationDate(), dateFormat, locale)}
2464 <#elseif stringUtil.equals(fieldName, "modified-date")>
2465 ${dateUtil.getDate(curEntry.getModifiedDate(), dateFormat, locale)}
2466 <#elseif stringUtil.equals(fieldName, "priority")>
2467 ${curEntry.getPriority()}
2468 <#elseif stringUtil.equals(fieldName, "publish-date")>
2469 ${dateUtil.getDate(curEntry.getPublishDate(), dateFormat, locale)}
2470 <#elseif stringUtil.equals(fieldName, "tags")>
2471 <@liferay_asset["asset-tags-summary"]
2472 className=curEntry.getClassName()
2473 classPK=curEntry.getClassPK()
2474 portletURL=renderResponse.createRenderURL()
2475 />
2476 <#elseif stringUtil.equals(fieldName, "view-count")>
2477 ${curEntry.getViewCount()}
2478 </#if>
2479</span>
2480</#if>
2481</#macro>
2482
2483<script>
2484 $(document).ready(function() {
2485 function getCleanUrl(url) {
2486 if(!url) return "";
2487
2488 // Xử lý trường hợp URL có phần /ID và tham số query
2489 var match = url.match(/(.+\.mp4)\/[^\/]+(\?.*)?$/);
2490 if(match) {
2491 return match[1];
2492 }
2493
2494 // Trường hợp URL chỉ có .mp4 và tham số query
2495 var queryIndex = url.indexOf('?');
2496 if(queryIndex !== -1 && url.indexOf('.mp4') < queryIndex) {
2497 return url.substring(0, queryIndex);
2498 }
2499
2500 // Trường hợp URL chỉ kết thúc với .mp4
2501 var mp4Index = url.indexOf('.mp4');
2502 if(mp4Index !== -1) {
2503 return url.substring(0, mp4Index + 4);
2504 }
2505
2506 return url;
2507 }
2508
2509 function processVideo(videoElement) {
2510 try {
2511 // Xử lý source trong video
2512 var sourceElements = videoElement.find("source");
2513 if(sourceElements.length > 0) {
2514 sourceElements.each(function() {
2515 var sourceUrl = $(this).attr("src");
2516 if(sourceUrl) {
2517 var cleanSourceUrl = getCleanUrl(sourceUrl);
2518 $(this).attr("src", cleanSourceUrl);
2519 // Sửa lỗi type có dấu chấm phẩy
2520 var type = $(this).attr("type");
2521 if(type && type.endsWith(';')) {
2522 $(this).attr("type", type.slice(0, -1));
2523 }
2524 }
2525 });
2526 } else {
2527 // Xử lý trường hợp video không có thẻ source
2528 var videoSrc = videoElement.attr("src");
2529 if(videoSrc) {
2530 var cleanVideoSrc = getCleanUrl(videoSrc);
2531 videoElement.attr("src", cleanVideoSrc);
2532 }
2533 }
2534
2535 // Xử lý poster
2536 var posterUrl = videoElement.attr("poster");
2537 if(posterUrl) {
2538 var cleanPosterUrl = getCleanUrl(posterUrl);
2539 videoElement.attr("poster", cleanPosterUrl);
2540 }
2541
2542 // Tải lại video
2543 if(videoElement[0]) {
2544 videoElement[0].load();
2545 }
2546 } catch(e) {
2547 console.error("Lỗi khi xử lý video:", e);
2548 }
2549 }
2550
2551 function processAllVideos() {
2552
2553
2554 // Xử lý video trong contentText
2555 if($("#contentText").length) {
2556 $("#contentText video").each(function() {
2557 processVideo($(this));
2558 });
2559 }
2560
2561 // Xử lý video trong liferayckevideo
2562 $(".liferayckevideo").each(function() {
2563 var container = $(this);
2564 var video = container.find("video");
2565 if(video.length > 0) {
2566 processVideo(video);
2567 }
2568 });
2569
2570 // Xử lý tất cả video còn lại
2571 $("video").each(function() {
2572 processVideo($(this));
2573 });
2574 }
2575
2576 // Chạy xử lý ngay lập tức
2577 processAllVideos();
2578
2579 // Chạy lại sau 1 giây để đảm bảo xử lý các video được thêm sau
2580 setTimeout(processAllVideos, 1000);
2581
2582 // Chạy lại sau 3 giây để đảm bảo xử lý các video được tải chậm
2583 setTimeout(processAllVideos, 3000);
2584
2585 // Theo dõi thay đổi DOM để xử lý video mới được thêm vào
2586 if(window.MutationObserver) {
2587 var observer = new MutationObserver(function(mutations) {
2588 var needsProcessing = false;
2589 mutations.forEach(function(mutation) {
2590 if(mutation.addedNodes.length) {
2591 needsProcessing = true;
2592 }
2593 });
2594
2595 if(needsProcessing) {
2596 processAllVideos();
2597 addPlayButtonsToVideos();
2598 }
2599 });
2600
2601 observer.observe(document.body, {
2602 childList: true,
2603 subtree: true
2604 });
2605 }
2606
2607 // Hàm thêm nút play cho video
2608 function addPlayButtonsToVideos() {
2609 $('.liferayckevideo.video-container').each(function() {
2610 var container = $(this);
2611 var video = container.find('video');
2612
2613 // Kiểm tra xem đã có nút play chưa
2614 if (container.find('.video-play-button').length === 0 && video.length > 0) {
2615 // Tạo nút play
2616 var playButton = $('<div class="video-play-button" title="Phát video"></div>');
2617 container.append(playButton);
2618
2619 // Xử lý sự kiện click
2620 playButton.on('click', function() {
2621 var videoElement = video[0];
2622 if (videoElement) {
2623 videoElement.play();
2624 $(this).addClass('playing');
2625 }
2626 });
2627
2628 // Ẩn nút play khi video đang phát
2629 video.on('play', function() {
2630 playButton.addClass('playing');
2631 });
2632
2633 // Hiển thị lại nút play khi video dừng
2634 video.on('pause ended', function() {
2635 playButton.removeClass('playing');
2636 });
2637 }
2638 });
2639 }
2640
2641 // Chạy hàm thêm nút play ngay lập tức
2642 addPlayButtonsToVideos();
2643
2644 // Chạy lại sau 1 giây
2645 setTimeout(addPlayButtonsToVideos, 1000);
2646
2647 // Chạy lại sau 3 giây
2648 setTimeout(addPlayButtonsToVideos, 3000);
2649 });
2650</script>
2651
2652<script>
2653 document.addEventListener("DOMContentLoaded", function () {
2654 const el = document.querySelector(".sp-dislaydate");
2655 if (!el) {
2656 return;
2657 }
2658 let text = el.textContent;
2659 const match = text.match(/Lượt xem:\s*(\d+)/);
2660 if (match) {
2661 const originalNumber = match[1];
2662 const formattedNumber = formatNumber(originalNumber);
2663 text = text.replace(originalNumber, formattedNumber);
2664 el.textContent = text;
2665 }
2666 });
2667
2668 function formatNumber(value) {
2669 return value.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ".");
2670 }
2671</script>
Lịch công tác tuần 24 năm 2026 của Lãnh đạo UBND thành phố
07:47 | 08/06/2026
Lịch công tác tuần 23 năm 2026 của Lãnh đạo UBND thành phố
08:03 | 01/06/2026
Lịch công tác tuần 22 năm 2026 của Lãnh đạo UBND thành phố
08:00 | 25/05/2026
Lịch công tác tuần 21 năm 2026 của Lãnh đạo UBND thành phố
07:40 | 18/05/2026
Lịch công tác tuần 20 năm 2026 của Lãnh đạo UBND thành phố
07:56 | 11/05/2026
LIÊN KẾT WEBSITE

