An error occurred while processing the template.
The following has evaluated to null or missing:
==> contentVn  [in template "10131#10164#1705548" at line 729, column 72]

----
Tip: If the failing expression is known to be legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----

----
FTL stack trace ("~" means nesting-related):
	- Failed at: ${contentVn}  [in template "10131#10164#1705548" at line 729, column 70]
----
1<#-- 
2    Chi tiết bài viết - Thông tin cần biết - QT 
3--> 
4<style> 
5#Detail { 
6    border-bottom: 3px solid #ffc107; 
7
8#Detail h3.h1_title_news { 
9    font-size: 18px; 
10    margin: 10px 0 20px 0; 
11    line-height: 1.2; 
12
13#Detail #pPost-date { 
14    font-size: 14px; 
15    color: #404040; 
16
17#Detail em { 
18    font-style: italic; 
19
20#Detail .title_name_orther { 
21    font-size: 16px; 
22    margin-bottom: 10px; 
23    color: #000 !important; 
24    margin-top: 20px; 
25    padding-top: 20px; 
26    border-top: 1px solid #e3e3e3; 
27
28#Detail .ul_li_orther { 
29    padding-left: 10px; 
30
31#Detail .ul_li_orther li { 
32    padding-bottom: 10px; 
33
34</style> 
35<div id="Detail"> 
36	 
37	<div class="titleNewsDetail"> 
38		<ol class="breadcrumb"> 
39			<li> 
40				<a class="title-font white-text" href="#">Trang chủ</a> 
41			</li> 
42					 
43			<#if catalogue??> 
44				<li> 
45					<a class="title-font white-text" href="${freemakerUtil.getNavURL(catalogue.plid)}">${catalogueTitle}</a> 
46				</li> 
47			<#else> 
48				 
49			</#if> 
50			 
51			<#if ADMIN_AND_POWER == true> 
52			<li> 
53				<a class="title-font white-text edit_article_v" articleid="${art.articleid}">Sửa bài viết</a> 
54			</li>						 
55			</#if> 
56		</ol> 
57		 
58	</div> 
59 
60	<div id="right_content2"> 
61 
62		<div class="detail_news1"> 
63			<div id="printableArea"> 
64 
65				<!-- Title --> 
66 
67				<div class="detail_content_news"> 
68				 
69			 
70					<h3 class="h1_title_news ">${titleVn}</h3> 
71					 
72					 
73					<!-- Tools --> 
74					<div class="time_fonsize">													     
75					        <#if languageId == "vi_VN"> 
76							<p class="time_detail_news" id="pPost-date">${DateUtil.showDateVn(art.startdatetime)}</p> 
77						</#if> 
78						     
79							<script type="text/javascript"> 
80								var min=11; 
81								var max=21; 
82								var sizeDefault=13; 
83								function zoominLetter(){ 
84								var a=document.getElementsByClassName("article_summary_detail");for(i=0;i<a.length;i++){ 
85									if(a[i].style.fontSize){ 
86										var b=parseInt(a[i].style.fontSize.replace("px","")) 
87									}else{ 
88										var b=sizeDefault 
89									}if(b!=max){b+=1}a[i].style.fontSize=b+"px";$(".article_summary_detail *").css("fontSize",b+"px") 
90
91
92								function zoomoutLetter(){ 
93									var a=document.getElementsByClassName("article_summary_detail"); 
94									for(i=0;i<a.length;i++){ 
95									if(a[i].style.fontSize){ 
96										var b=parseInt(a[i].style.fontSize.replace("px","")) 
97									}else{var b=12}if(b!=min){b-=1}a[i].style.fontSize=b+"px"; 
98									$(".article_summary_detail *").css("fontSize",b+"px")} 
99								}; 
100							</script> 
101 
102 
103							<script type="text/javascript"> 
104								var min=11; 
105								var max=21; 
106								var sizeDefault=13; 
107								function zoominLetter(){ 
108									var a=document.getElementsByClassName("article_summary_detail"); 
109									for(i=0;i<a.length;i++){ 
110										if(a[i].style.fontSize){ 
111											var b=parseInt(a[i].style.fontSize.replace("px","")) 
112										}else{ 
113											var b=sizeDefault 
114										}if(b!=max){b+=1}a[i].style.fontSize=b+"px";$(".article_summary_detail *").css("fontSize",b+"px") 
115
116
117								function zoomoutLetter(){ 
118									var a=document.getElementsByClassName("article_summary_detail"); 
119									for(i=0;i<a.length;i++){ 
120										if(a[i].style.fontSize){ 
121											var b=parseInt(a[i].style.fontSize.replace("px","")) 
122										}else{var b=12}if(b!=min){b-=1}a[i].style.fontSize=b+"px"; 
123										$(".article_summary_detail *").css("fontSize",b+"px") 
124
125								}; 
126							</script> 
127							 
128							<script type="text/javascript"> 
129								$(document).ready(function(){ 
130									function goBack(){ 
131										window.history.back(); 
132
133								}); 
134							</script> 
135												 
136						<div id="txTts"></div> 
137							 
138						<div class="ho_tro"> 
139							<div class="chinh_font"> 
140								<div class="email_print"> 
141									 
142									<#if languageId == "vi_VN"> 
143										<a id="print_${portletId}" class="print_1">In bài</a> 
144										<a id="send_${portletId}" class="email_1" href="#">Gửi</a>   
145									</#if> 
146 
147									<#if languageId != "vi_VN"> 
148										<a id="print_${portletId}" class="print_1">Print</a> 
149										<a id="send_${portletId}" class="email_1" href="#">Send</a>   
150									</#if> 
151								</div>  
152								<#if languageId == "vi_VN"> 
153									<b>Xem với cỡ chữ : </b> 
154								</#if> 
155 
156								<#if languageId != "vi_VN"> 
157									<b>Font size : </b>  
158								</#if> 
159								 
160								<a class="fontSizeMinus" onclick="zoomoutLetter()">A-</a> 
161								<a class="fontReset" onclick="return false">A</a> 
162								<a class="fontSizePlus" onclick="zoominLetter()">A+</a> 
163					 
164								 
165							</div>  
166						</div> 
167 
168					</div> 
169					<#if catalogueTitle == 'Tin tức hoạt động'> 
170                    <style> 
171                    #audio-player-loading { display: none; position: relative; } 
172                    #audio-player-loading .loading { 
173                        display: flex; 
174                        flex-direction: row; 
175                        box-sizing: border-box; 
176                        margin: 1em 0; 
177                        padding: 0 14px; 
178                        width: 100%; 
179                        height: 40px; 
180                        align-items: center; 
181                        border: 1px solid #DDE2E6; 
182                        border-radius: 40px; 
183                        background: #fff; 
184
185                    #audio-player-loading .playpause { 
186                        display: flex; 
187                        justify-content: center; 
188                        align-items: center; 
189                        width: 28px; 
190                        height: 28px; 
191                        border-radius: 50%; 
192                        cursor: pointer; 
193                        transition: all .2s ease-in-out; 
194                        position: absolute; 
195                        top: 6px; 
196                        left: 12px; 
197
198                    #audio-player-loading .playpause a { 
199                        content: " "; 
200                        display: block; 
201                        width: 18px; 
202                        height: 18px; 
203                        border-radius: 50%; 
204                        border: 2px solid #000; 
205                        border-color: #000 transparent #000 transparent; 
206                        animation: lds-dual-ring 1.2s linear infinite; 
207
208                    .audioplayer { 
209                        display: flex; 
210                        flex-direction: row; 
211                        box-sizing: border-box; 
212                        margin: 1em 0; 
213                        padding: 0 14px; 
214                        width: 100%; 
215                        height: 40px; 
216                        align-items: center; 
217                        border: 1px solid #DDE2E6; 
218                        border-radius: 40px; 
219                        background: #fff; 
220
221                     
222                    .audioplayer-playpause { 
223                        display: flex; 
224                        justify-content: center; 
225                        align-items: center; 
226                        width: 28px; 
227                        height: 28px; 
228                        border-radius: 50%; 
229                        cursor: pointer; 
230                        transition: all .2s ease-in-out; 
231
232                     
233                    .audioplayer:not(.audioplayer-playing) .audioplayer-playpause { 
234                        background: rgba(91, 130, 255, 0); 
235
236                     
237                    .audioplayer:not(.audioplayer-playing) .audioplayer-playpause:hover { 
238                        background: rgba(91, 130, 255, 0.1); 
239
240                     
241                    .audioplayer-playing .audioplayer-playpause { 
242                        background: rgba(253, 79, 26, 0); 
243
244                     
245                    .audioplayer-playing .audioplayer-playpause:hover { 
246                        background: rgba(235, 79, 26, 0.1); 
247
248                     
249                    .audioplayer:not(.audioplayer-playing) .audioplayer-playpause a { 
250                        content: ''; 
251                        justify-content: center; 
252                        width: 0; 
253                        height: 0; 
254                        margin-left: 2px; 
255                        border-top: 7px solid transparent; 
256                        border-right: none; 
257                        border-bottom: 7px solid transparent; 
258                        border-left: 12px solid #000; 
259
260                     
261                    .audioplayer-playing .audioplayer-playpause a { 
262                        content: ''; 
263                        display: flex; 
264                        justify-content: space-between; 
265                        width: 12px; 
266                        height: 14px; 
267
268                     
269                    .audioplayer:not(.audioplayer-playing).audioplayer-loading .audioplayer-playpause a { 
270                        content: " "; 
271                        display: block; 
272                        width: 18px; 
273                        height: 18px; 
274                        border-radius: 50%; 
275                        border: 2px solid #000; 
276                        border-color: #000 transparent #000 transparent; 
277                        animation: lds-dual-ring 1.2s linear infinite; 
278
279                     
280                    @keyframes lds-dual-ring { 
281                        0% { 
282                            transform: rotate(0deg); 
283
284                        100% { 
285                            transform: rotate(360deg); 
286
287
288                     
289                    .audioplayer-playing .audioplayer-playpause a::before, .audioplayer-playing .audioplayer-playpause a::after { 
290                        content: ''; 
291                        width: 4px; 
292                        height: 14px; 
293                        background-color: #000; 
294
295                     
296                    .audioplayer-time { 
297                        display: flex; 
298                        width: 40px; 
299                        justify-content:center; 
300                        font-size: 12px; 
301                        color: rgba(51, 51 ,51, .6) 
302
303                     
304                    .audioplayer-time-current { 
305                        margin-left: 24px; 
306
307                     
308                    .audioplayer-time-duration { 
309                        margin-right: 24px; 
310
311                     
312                    .audioplayer-bar { 
313                        position: relative; 
314                        display: flex; 
315                        margin: 0 12px; 
316                        height: 12px; 
317                        flex-basis: 0; 
318                        flex-grow: 1; 
319                        cursor: pointer; 
320
321                     
322                    .audioplayer-bar::before { 
323                        content: ''; 
324                        position: absolute; 
325                        top: 5px; 
326                        width: 100%; 
327                        height: 2px; 
328                        background-color: #DDE2E6; 
329
330                     
331                    .audioplayer-bar > div { 
332                        position: absolute; 
333                        left: 0; 
334                        top: 5px; 
335
336                    .audioplayer-bar-loaded { 
337                        z-index: 1; 
338                        height: 2px; 
339                        background: #BEC8D2; 
340
341                     
342                    .audioplayer-bar-played { 
343                        flex-direction: row-reverse; 
344                        z-index: 2; 
345                        height: 2px; 
346                        background: -webkit-linear-gradient(left,#0059FF,#09B1FA); 
347
348                     
349                    .audioplayer-bar-played::after { 
350                        display: flex; 
351                        position: absolute; 
352                        content: ''; 
353                        box-sizing: border-box; 
354                        top: -5px; 
355                        right: -1px; 
356                        margin-right: -5px; 
357                        width: 12px; 
358                        height: 12px; 
359                        background-color: #fff; 
360                        border-radius: 6px; 
361
362                     
363                    .audioplayer:not(.audioplayer-playing) .audioplayer-bar-played::after { 
364                        border: 2px solid #BEC8D2; 
365
366                     
367                    .audioplayer-playing .audioplayer-bar-played::after { 
368                        border: 2px solid #000; 
369                     
370
371                     
372                    .audioplayer-volume { 
373                        display: flex; 
374                        align-items: center; 
375
376                     
377                    .audioplayer-volume-button { 
378                        display: flex; 
379                        align-items: center; 
380                        width: 24px; 
381                        height: 24px; 
382                        cursor: pointer; 
383
384                     
385                    .audioplayer-volume-button a { 
386                        display: flex; 
387                        width: 6px; 
388                        height: 8px; 
389                        background-color: #9A9FB0; 
390                        position: relative; 
391
392                     
393                    .audioplayer-volume-button a:before, .audioplayer-volume-button a:after { 
394                        content: ''; 
395                        position: absolute; 
396
397                     
398                    .audioplayer-volume-button a:before { 
399                        width: 0; 
400                        height: 0; 
401                        border-top: 8px solid transparent; 
402                        border-right: 9px solid #9A9FB0; 
403                        border-bottom: 8px solid transparent; 
404                        border-left: none; 
405                        top: -4px; 
406
407                     
408                    .audioplayer:not(.audioplayer-mute) .audioplayer-volume-button a:after { 
409                        left: 10px; 
410                        top: -2px; 
411                        width: 6px; 
412                        height: 6px; 
413                        border: 6px double #9A9FB0; 
414                        border-width: 6px 6px 0 0; 
415                        border-radius: 0 12px 0 0; 
416                        transform: rotate(45deg); 
417
418                     
419                    .audioplayer-mute .audioplayer-volume-button a { 
420                        background-color: #FD4F1A; 
421
422                     
423                    .audioplayer-mute .audioplayer-volume-button a:before { 
424                        border-right: 9px solid #FD4F1A; 
425
426                     
427                    .audioplayer-volume-adjust { 
428                        display: flex; 
429                        align-items: center; 
430                        margin-left: 8px; 
431
432                     
433                    .audioplayer-volume-adjust > div { 
434                        position: relative; 
435                        display: flex; 
436                        width: 60px; 
437                        height: 2px; 
438                        cursor: pointer; 
439                        background-color: #BEC8D2; 
440
441                     
442                    .audioplayer-volume-adjust div div { 
443                        position: absolute; 
444                        top: 0; 
445                        left: 0; 
446                        height: 2px; 
447                        background-color: #000; 
448
449                     
450 
451                    @media screen and (max-width: 679px) { 
452                        .audioplayer-volume-adjust { 
453                            display: none; 
454
455
456                    </style> 
457                    <script type="text/javascript"> 
458                    (function($, window, document, undefined) { 
459                        var isTouch = 'ontouchstart' in window, 
460                            eStart = isTouch ? 'touchstart' : 'mousedown', 
461                            eMove = isTouch ? 'touchmove' : 'mousemove', 
462                            eEnd = isTouch ? 'touchend' : 'mouseup', 
463                            eCancel = isTouch ? 'touchcancel' : 'mouseup', 
464                            secondsToTime = function(secs) { 
465                                var hours = Math.floor(secs / 3600), 
466                                    minutes = Math.floor(secs % 3600 / 60), 
467                                    seconds = Math.ceil(secs % 3600 % 60); 
468                                return (hours == 0 ? '' : hours > 0 && hours.toString().length < 2 ? '0' + hours + ':' : hours + ':') + (minutes.toString().length < 2 ? '0' + minutes : minutes) + ':' + (seconds.toString().length < 2 ? '0' + seconds : seconds); 
469                            }, 
470                            canPlayType = function(file) { 
471                                var audioElement = document.createElement('audio'); 
472                                return !!(audioElement.canPlayType && audioElement.canPlayType('audio/' + file.split('.').pop().toLowerCase() + ';').replace(/no/, '')); 
473                            }; 
474                     
475                        $.fn.audioPlayer = function(params) { 
476                            var params = $.extend({ 
477                                    classPrefix: 'audioplayer', 
478                                    strPlay: '', 
479                                    strPause: '', 
480                                    strVolume: '' 
481                                }, params), 
482                                cssClass = {}, 
483                                cssClassSub = { 
484                                    playPause: 'playpause', 
485                                    playing: 'playing', 
486                                    time: 'time', 
487                                    timeCurrent: 'time-current', 
488                                    timeDuration: 'time-duration', 
489                                    bar: 'bar', 
490                                    barLoaded: 'bar-loaded', 
491                                    barPlayed: 'bar-played', 
492                                    volume: 'volume', 
493                                    volumeButton: 'volume-button', 
494                                    volumeAdjust: 'volume-adjust', 
495                                    noVolume: 'novolume', 
496                                    mute: 'mute', 
497                                    mini: 'mini audioplayer-loading' 
498                                }; 
499                     
500                            for (var subName in cssClassSub) 
501                                cssClass[subName] = params.classPrefix + '-' + cssClassSub[subName]; 
502                     
503                            this.each(function() { 
504                                if ($(this).prop('tagName').toLowerCase() != 'audio') 
505                                    return false; 
506                     
507                                var $this = $(this), 
508                                    audioFile = $this.attr('src'), 
509                                    isAutoPlay = $this.get(0).getAttribute('autoplay'), 
510                                    isAutoPlay = isAutoPlay === '' || isAutoPlay === 'autoplay' ? true : false, 
511                                    isLoop = $this.get(0).getAttribute('loop'), 
512                                    isLoop = isLoop === '' || isLoop === 'loop' ? true : false, 
513                                    isSupport = false; 
514                                if (typeof audioFile === 'undefined') { 
515                                    $this.find('source').each(function() { 
516                                        audioFile = $(this).attr('src'); 
517                                        if (typeof audioFile !== 'undefined' && canPlayType(audioFile)) { 
518                                            isSupport = true; 
519                                            return false; 
520
521                                    }); 
522                                } else if (canPlayType(audioFile)) isSupport = true; 
523                     
524                                var thePlayer = $('<div class="' + params.classPrefix + '">' + (isSupport ? $('<div>').append($this.eq(0).clone()).html() : '<embed src="' + audioFile + '" width="0" height="0" volume="100" autostart="' + isAutoPlay.toString() + '" loop="' + isLoop.toString() + '" />') + '<div class="' + cssClass.playPause + '" title="' + params.strPlay + '"><a href="#">' + params.strPlay + '</a></div></div>'), 
525                                    theAudio = isSupport ? thePlayer.find('audio') : thePlayer.find('embed'), 
526                                    theAudio = theAudio.get(0); 
527                     
528                                if (isSupport) { 
529                                    thePlayer.find('audio').css({ 
530                                        'width': 0, 
531                                        'height': 0, 
532                                        'display': 'none' 
533                                    }); 
534                                    thePlayer.append('<div class="' + cssClass.time + ' ' + cssClass.timeCurrent + '"></div><div class="' + cssClass.bar + '"><div class="' + cssClass.barLoaded + '"></div><div class="' + cssClass.barPlayed + '"></div></div><div class="' + cssClass.time + ' ' + cssClass.timeDuration + '"></div><div class="' + cssClass.volume + '"><div class="' + cssClass.volumeButton + '" title="' + params.strVolume + '"><a href="#">' + params.strVolume + '</a></div><div class="' + cssClass.volumeAdjust + '"><div><div></div></div></div></div>'); 
535                     
536                                    var theBar = thePlayer.find('.' + cssClass.bar), 
537                                        barPlayed = thePlayer.find('.' + cssClass.barPlayed), 
538                                        barLoaded = thePlayer.find('.' + cssClass.barLoaded), 
539                                        timeCurrent = thePlayer.find('.' + cssClass.timeCurrent), 
540                                        timeDuration = thePlayer.find('.' + cssClass.timeDuration), 
541                                        volumeButton = thePlayer.find('.' + cssClass.volumeButton), 
542                                        volumeAdjuster = thePlayer.find('.' + cssClass.volumeAdjust + ' > div'), 
543                                        volumeDefault = 0, 
544                                        adjustCurrentTime = function(e) { 
545                                            theRealEvent = isTouch ? e.originalEvent.touches[0] : e; 
546                                            theAudio.currentTime = Math.round((theAudio.duration * (theRealEvent.pageX - theBar.offset().left)) / theBar.width()); 
547                                        }, 
548                                        adjustVolume = function(e) { 
549                                            theRealEvent = isTouch ? e.originalEvent.touches[0] : e; 
550                                            theAudio.volume = Math.abs((theRealEvent.pageX - volumeAdjuster.offset().left) / volumeAdjuster.width()); 
551                                        }, 
552                                        updateLoadBar = setInterval(function() { 
553                                          if (theAudio.buffered.length > 0) { 
554                                            barLoaded.width((theAudio.buffered.end(0) / theAudio.duration) * 100 + '%'); 
555                                            if (theAudio.buffered.end(0) >= theAudio.duration) 
556                                                clearInterval(updateLoadBar); 
557
558                                        }, 100); 
559                     
560                                    var volumeTestDefault = theAudio.volume, 
561                                        volumeTestValue = theAudio.volume = 0.111; 
562                                    if (Math.round(theAudio.volume * 1000) / 1000 == volumeTestValue) theAudio.volume = volumeTestDefault; 
563                                    else thePlayer.addClass(cssClass.noVolume); 
564                     
565                                    timeDuration.html('&hellip;'); 
566                                    timeCurrent.text(secondsToTime(0)); 
567                     
568                                    theAudio.addEventListener('loadeddata', function() { 
569                                        timeDuration.text(secondsToTime(theAudio.duration)); 
570                                        volumeAdjuster.find('div').width(theAudio.volume * 100 + '%'); 
571                                        volumeDefault = theAudio.volume; 
572                                    }); 
573                     
574                                    theAudio.addEventListener('timeupdate', function() { 
575                                        timeCurrent.text(secondsToTime(theAudio.currentTime)); 
576                                        barPlayed.width((theAudio.currentTime / theAudio.duration) * 100 + '%'); 
577                                    }); 
578                     
579                                    theAudio.addEventListener('volumechange', function() { 
580                                        volumeAdjuster.find('div').width(theAudio.volume * 100 + '%'); 
581                                        if (theAudio.volume > 0 && thePlayer.hasClass(cssClass.mute)) thePlayer.removeClass(cssClass.mute); 
582                                        if (theAudio.volume <= 0 && !thePlayer.hasClass(cssClass.mute)) thePlayer.addClass(cssClass.mute); 
583                                    }); 
584                     
585                                    theAudio.addEventListener('ended', function() { 
586                                        thePlayer.removeClass(cssClass.playing); 
587                                    }); 
588                     
589                                    theBar.on(eStart, function(e) { 
590                                            adjustCurrentTime(e); 
591                                            theBar.on(eMove, function(e) { 
592                                                adjustCurrentTime(e); 
593                                            }); 
594                                        }) 
595                                        .on(eCancel, function() { 
596                                            theBar.unbind(eMove); 
597                                        }); 
598                     
599                                    volumeButton.on('click', function() { 
600                                        if (thePlayer.hasClass(cssClass.mute)) { 
601                                            thePlayer.removeClass(cssClass.mute); 
602                                            theAudio.volume = volumeDefault; 
603                                        } else { 
604                                            thePlayer.addClass(cssClass.mute); 
605                                            volumeDefault = theAudio.volume; 
606                                            theAudio.volume = 0; 
607
608                                        return false; 
609                                    }); 
610                     
611                                    volumeAdjuster.on(eStart, function(e) { 
612                                            adjustVolume(e); 
613                                            volumeAdjuster.on(eMove, function(e) { 
614                                                adjustVolume(e); 
615                                            }); 
616                                        }) 
617                                        .on(eCancel, function() { 
618                                            volumeAdjuster.unbind(eMove); 
619                                        }); 
620                                } else thePlayer.addClass(cssClass.mini); 
621                     
622                                if (isAutoPlay) thePlayer.addClass(cssClass.playing); 
623                     
624                                thePlayer.find('.' + cssClass.playPause).on('click', function() { 
625                                    if (thePlayer.hasClass(cssClass.playing)) { 
626                                        $(this).attr('title', params.strPlay).find('a').html(params.strPlay); 
627                                        thePlayer.removeClass(cssClass.playing); 
628                                        isSupport ? theAudio.pause() : theAudio.Stop(); 
629                                    } else { 
630                                        $(this).attr('title', params.strPause).find('a').html(params.strPause); 
631                                        thePlayer.addClass(cssClass.playing); 
632                                        isSupport ? theAudio.play() : theAudio.Play(); 
633
634                                    return false; 
635                                }); 
636                     
637                                $this.replaceWith(thePlayer); 
638                            }); 
639                            return this; 
640                        }; 
641                    })(jQuery, window, document); 
642                    $(function() { 
643                      $(document).ready(function(){ 
644                        var post_id = '${art.articleid}'; 
645                        var post_content = $('#Detail h3.h1_title_news').text() + '<break time=1s/>' + $('#Detail .summary_detail_news').text() + '<break time=1s/>' + $('#Detail .article_content').text(); 
646                        $.ajax({ 
647                          method: 'GET', 
648                          url: 'https://dukhach.qbo.vn/rest/audio/'+post_id, 
649                          success: function(data){ 
650                            if(data.length > 0) { 
651                              $('#audio-player source').attr('src', data[0].field_audio); 
652                              $('audio').audioPlayer(); 
653                            }else { 
654                                $('#audio-player').hide(); 
655                                $('#audio-player-loading').show(); 
656                              $.ajax({ 
657                                method: 'POST', 
658                                url: 'https://dukhach.qbo.vn/rest/audio/convert', 
659                                data: { post_content: post_content }, 
660                                success: function(audio_convert) { 
661                                  var request_id = audio_convert.data.result.request_id; 
662                                  var audio_url = ''; 
663                                  console.log(new Date()); 
664                                  request_audio(request_id); 
665                                  function request_audio(request_id) { 
666                                    console.log(audio_url); 
667                                    if(audio_url == ''){ 
668                                      $.ajax({ 
669                                        method: 'POST', 
670                                        url: 'https://dukhach.qbo.vn/rest/audio/request', 
671                                        data: { request_id: request_id }, 
672                                        success: function(request_data) { 
673                                          if(request_data.data.result.status == 'SUCCESS'){ 
674                                            console.log('success'); 
675                                            console.log(new Date()); 
676                                            $('#audio-player').show(); 
677                                            $('#audio-player-loading').hide(); 
678                                            audio_url = request_data.data.result.audio_link; 
679                                            console.log(audio_url); 
680                                            $('#audio-player source').attr('src', audio_url); 
681                                            $('audio').audioPlayer(); 
682                                            $.ajax({ 
683                                              method: 'POST', 
684                                              url: 'https://dukhach.qbo.vn/rest/audio/save', 
685                                              data: { post_id: post_id, audio_url: audio_url }, 
686                                              success: function(msg) { 
687                                                console.log('Audio Saved ' + msg.node_id); 
688
689                                            }); 
690                                          }else{ 
691                                            setTimeout(function() {request_audio(request_id);}, 2000); 
692
693
694                                      }); 
695
696
697
698                              }); 
699
700                          }, 
701                        }); 
702                      }); 
703                    }); 
704                    </script> 
705                        <div id="audio-player"> 
706                            <audio style="display:none" preload="auto" controls> 
707                              <source src=""> 
708                            </audio>   
709                         </div> 
710                         <div id="audio-player-loading"> 
711                            <div class="loading"></div> 
712                            <div class="playpause" title=""><a href="#"></a></div> 
713                         </div> 
714                    </#if> 
715					<div class="article_summary_detail"> 
716 
717						<!-- Intro --> 
718						 
719						<#if hasSummmaryContentVn == true>	 
720							<span class="summary_detail_news"> 
721								${summmaryContentVn} 
722							</span> 
723						</#if> 
724						 
725					</div> 
726					<div class="article_content"> 
727											<!-- Content --> 
728						<p style="text-align: center;">  
729							<p dir="ltr">${contentVn}</p> 
730						</p> 
731 
732					</div> 
733					<div class="sharelist"> 
734						<div>${bufferSocial}</div> 
735						<div>${bufferSdk}</div> 
736					</div> 
737					 
738				</div> 
739			</div> 
740			 
741			<!-- Turn back --> 
742			<div class="print_back"> 
743				<div class="print_back1"> 
744				 
745					<#if languageId == "vi_VN"> 
746						<a id="btnBack" class="icon_back">Quay lại trang trước</a> 
747					</#if> 
748 
749					<#if languageId != "vi_VN"> 
750						<a id="btnBack" class="icon_back" href="#">Previous page</a> 
751					</#if> 
752 
753				</div> 
754			</div> 
755 
756		 
757		<!-- other news --> 
758		<#if catalogue??> 
759			<#if lstArticleRelate?has_content>	 
760				<div class="orther_news"> 
761				 
762						<#if languageId == "vi_VN"> 
763							<div class="title_name_orther">Các tin khác </div> 
764						</#if> 
765 
766						<#if languageId != "vi_VN"> 
767							<div class="title_name_orther">More </div>		 
768						</#if> 
769 
770 
771					</div>       
772				</div> 
773				 
774				 
775				<!-- more --> 
776				<ul class="ul_li_orther"> 
777					 
778					<#list lstArticleRelate as articleRelate> 
779						<li> 
780							 
781							<a title="${titleVn}" target="" class="name_orther_1" data-toggle="tooltip" href="${freemakerUtil.getArticleDetailURL(catalogue.catalogueid, articleRelate.articleid)}"> 
782								 
783								${localization.getLocalization( 
784									articleRelate.title_vn, "${languageId}" 
785								)}						 
786								 
787								<#if article.showndate?? && article.showndate == 0> 
788									<b class="time_3">(${DateUtil.parseLongToString(articleRelate.startdatetime)})</b> 
789								</#if> 
790								 
791							</a> 
792 
793						</li> 
794					</#list> 
795				</ul> 
796				 
797			</#if>		 
798		</#if>		 
799	</div> 
800</div> 

 

Lượt truy cập: 12.175.189 Ghi rõ nguồn "Trang TTĐT Văn phòng UBND tỉnh Quảng Trị" khi phát hành lại thông tin từ nguồn này