در حین انجام عملیات خطایی رخ داده است.
The following has evaluated to null or missing: ==> .vars['reserved-article-display-date'] [in template "20098#20124#37706" at line 15, column 24] ---- Tip: It's the final [] step that caused this error, not those before it. ---- Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: #assign displaydate = .vars["reserved... [in template "20098#20124#37706" at line 15, column 1] ----
1<#assign liferay_ui = taglibLiferayHash["/META-INF/liferay-ui.tld"] />
2
3<#assign JournalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")>
4 <#assign assetLinkLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetLinkLocalService" )>
5 <#assign assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService" )>
6 <#assign getterUtil = staticUtil["com.liferay.portal.kernel.util.GetterUtil"] />
7 <#assign currentArticle = JournalArticleLocalService.getArticle(getterUtil.getLong(groupId),.vars['reserved-article-id'].data)>
8 <#assign currentArticleResourcePrimKey = currentArticle.getResourcePrimKey()>
9 <#assign currentArticleAssetEntry = assetEntryLocalService.getEntry("com.liferay.journal.model.JournalArticle", currentArticleResourcePrimKey)/>
10
11 <#assign viewCount = currentArticleAssetEntry.viewCount/>
12
13
14<#-- Retrieve the published date meta data field of the web content -->
15<#assign displaydate = .vars['reserved-article-display-date'].data>
16<#-- Save the original page locale for later -->
17<#assign originalLocale = .locale>
18
19<#-- Set the page locale to the portals default locale -->
20<#setting locale = localeUtil.getDefault()>
21
22<#-- Parse the date to a date object -->
23<#assign displaydate = displaydate?datetime("EEE, d MMM yyyy HH:mm:ss Z")>
24
25<#-- Set the page locale back to the original page locale -->
26<#--#assign locale = ''-->
27<#assign dateFormat = "dd MMM yyyy" />
28<#assign publishDate=dateUtil.getDate(displaydate,dateFormat,localet)/>
29
30<section class="sp-top-details" style="background:url('${cover_img.getData()}');background-size:cover;background-position: center;background-color:#001650;">
31 <div class="container">
32 <div class="row">
33 <div class="sp-news-details">
34
35 <div class="sp-breascumbs d-none">
36 <@liferay.language key="home"/>
37 <span class="sp-category"></span>
38 </div>
39 <div class="sp-title">${.vars['reserved-article-title'].data}</div>
40 <div class="sp-meta">
41 <ul>
42 <li class="sp-date">
43 <i class="icon-calendar"></i>
44 <span create-date="${publishDate}"></span>
45 </li>
46 <li class="sp-view">
47 ${viewCount}
48 <#if locale=='fa_IR'> بازدید <#else> Views </#if>
49 </li>
50 <!--li class="sp-rate">
51 <@liferay_ui["ratings"] className="" classPK=currentArticleAssetEntry.getEntryId() type="stars" />
52 </li-->
53 </ul>
54 </div>
55 </div>
56 </div>
57 </div>
58</section>
59<section class="sp-news-content">
60 <div class="container">
61 <div class="row">
62 <div class="sp-content-details">
63 <div id="scroll" class="header">
64 <div class="progress-container">
65 <div class="progress-bar" id="myBar"></div>
66 </div>
67 </div>
68 <div class="content">
69 <div class="sp-share">
70 <ul>
71 <li class="sp-print">
72 <a class="sp-link-nextSibling" href="" onclick="window.print()">
73 <svg class="lexicon-icon lexicon-icon-print" focusable="false" role="img" title="" viewBox="0 0 512 512"><title>print</title> <path class="lexicon-icon-body" fill="none" d="M448,96h-63.5V33c0-18.2-14.8-33-33-33H161.4c-18.2,0-33,14.8-33,33v63H64c-35.3,0-64,27.7-64,63v193.3 c0,35.3,28.7,64,64,64h32.6v64.3c0,18.2,14.8,33,33,33h254.9c18.2,0,32-14.8,32-33v-64.3H448c35.3,0,64-28.7,64-64V159 C512,123.7,483.3,96,448,96z"></path> <path class="lexicon-icon-outline" d="M448,96h-63.5V33c0-18.2-14.8-33-33-33H161.4c-18.2,0-33,14.8-33,33v63H64c-35.3,0-64,27.7-64,63v193.3 c0,35.3,28.7,64,64,64h32.6v64.3c0,18.2,14.8,33,33,33h254.9c18.2,0,32-14.8,32-33v-64.3H448c35.3,0,64-28.7,64-64V159 C512,123.7,483.3,96,448,96z M192.4,64h128.1v32.4H192.4V64z M351.6,447.6h-191v-95.3h190.9L351.6,447.6z M448,352.3h-31.4v-31.1 c0-18.2-14.8-33-33-33h-254c-18.2,0-33,14.8-33,33v31.1H64V160h384V352.3L448,352.3z"></path> <circle class="lexicon-icon-outline" cx="112" cy="208.3" r="16"></circle> <circle class="lexicon-icon-outline" cx="176.3" cy="208" r="15.7"></circle> </svg>
74 </a>
75 </li>
76 <li class="sp-send-email">
77 <a class="sp-link-nextSibling" href="mailto:name1@rapidtables.com?cc=name2@rapidtables.com&bcc=name3@rapidtables.com &subject=${.vars['reserved-article-title'].data}">
78 <svg aria-hidden="true" class="lexicon-icon lexicon-icon-share" focusable="false" viewBox="0 0 512 512"><title>share</title> <path class="lexicon-icon-outline" d="M326.2,323.3l-107.6-53.8c2.7-5.9,2.4-19.9,0-27.1l107.6-53.8c77.2,69.3,185.8,13,185.8-78.9C512,49.2,462.8,0,402.3,0S287,51.3,293.4,123.3l-107.6,53.8C113.3,108,0,161.7,0,256c0,100.3,118.3,143.7,185.8,78.9l107.6,53.8C285,460.7,341.8,512,402.3,512S512,462.8,512,402.3C512,314.3,406.3,252,326.2,323.3z M438.9,109.7c0,49-73.1,47.6-73.1,0C365.7,60.3,438.9,62,438.9,109.7z M73.1,256c0-49,73.1-49,73.1,0C146.3,303.3,73.1,305,73.1,256z M365.7,402.3c0-48.6,73.1-49,73.1,0C438.9,451,365.7,449.7,365.7,402.3z"></path>
79 </svg>
80 </a>
81 </li>
82 <li class="sp-sapp">
83 <a class="sp-link-nextSibling" href="https://sapp.ir/share?url=${themeDisplay.getLayout().getFriendlyURL()} &text=${.vars['reserved-article-title'].data}"><i class="icon-ic-soroosh-dark"></i></a>
84 </li>
85 </ul>
86 </div>
87 <img src="${.vars['reserved-article-small-image-url'].getData()}" class="img-main float-right img-responsive" />
88 ${content.getData()}
89 <#if files.getData()!="">
90 <a class="sp-link-nextSibling btn btn-info" href="${files.getData()}" download>
91 <i class="icon-download"></i>
92 ${languageUtil.format(locale, "download-x", "فایل", false)}
93 </a>
94 </#if>
95 <#if video.getData()!="">
96 <div class="col-6 m-auto pt-4" style="clear: both;">
97 <video style="width: 100%;" poster="${image_snapshot.getData()}" controls>
98 <source src="${video.getData()}" preload="none">
99 Your browser does not support the video tag.
100 </video>
101 </div>
102 </#if>
103 <#if audio.getData()!="">
104 <div class="col-6 m-auto pt-4" style="clear: both;">
105 <audio style="width: 100%;" controls>
106 <source src="${audio.getData()}">
107 Your browser does not support the audio element.
108 </audio>
109 </div>
110 </#if>
111 <#if other_images?? && other_images.getData() != "" && other_images.getSiblings()?has_content>
112 <div class="demo-gallery col-6 m-auto pt-4" style="clear: both;">
113 <link type="text/css" rel="stylesheet" href="/o/sbu-theme/css/lightslider.css" />
114 <script src="/o/sbu-theme/js/lightslider.js"></script>
115 <ul id="lightSlider">
116 <#list other_images.getSiblings() as cur_other_images>
117 <li data-thumb="${cur_other_images.getData()}">
118 <img src="${cur_other_images.getData()}" />
119 </li>
120 </#list>
121 </ul>
122 <script>
123 var dir=$("html").attr("dir");
124 var rtol=false;
125 if(dir=="rtl"){rtol=true}
126 $(document).ready(function() {
127 $('#lightSlider').lightSlider({
128 rtl: rtol,
129 gallery: true,
130 item: 1,
131 loop:true,
132 slideMargin: 0,
133 thumbItem: 9
134 });
135 });
136 </script>
137 <style>
138 #lightSlider ul {
139 list-style: none outside none;
140 margin-bottom:0;
141 }
142 #lightSlider li {
143 display: block;
144 cursor:pointer;
145 }
146 #lightSlider img {
147 display: block;
148 height: auto;
149 max-width: 100%;
150 width: 100%;
151 }
152 .demo-gallery .lSSlideOuter .lSPager.lSGallery img {
153 height: 32px;
154 }
155 </style>
156 </div>
157 </#if>
158
159 <@liferay_portlet["runtime"] portletName="com_liferay_comment_page_comments_web_portlet_PageCommentsPortlet" />
160
161 </div>
162 </div>
163 </div>
164 </div>
165</section>
166<script>
167 // When the user scrolls the page, execute myFunction
168 window.onscroll = function() {myFunction()};
169 function myFunction() {
170 var winScroll = document.body.scrollTop || document.documentElement.scrollTop;
171 var height = document.documentElement.scrollHeight - document.documentElement.clientHeight;
172 var scrolled = (winScroll / height) * 100;
173 document.getElementById("myBar").style.width = scrolled + "%";
174 // Get the header
175 var header = document.getElementById("scroll");
176 var topBar = document.getElementById("topbar");
177 // Get the offset position of the navbar
178 var sticky = header.offsetTop+200;
179 if (window.pageYOffset > sticky) {
180 header.classList.add("sticky");
181 topBar.classList.add("d-none");
182 } else {
183 header.classList.remove("sticky");
184 topBar.classList.remove("d-none");
185 }
186 }
187 $( document ).ready(function() {
188 //$( ".sp-rate" ).append($('.asset-ratings .liferay-rating-score').html());
189 //$('.asset-ratings .liferay-rating-score').hide();
190 //$('.print-action').hide();
191 //$('.sp-print a').attr('href',$('.print-action a').attr('href'));
192 $(".sp-meta .sp-date span").each(function(){
193 var dp=$(this).attr('create-date');
194 var dir=$("html").attr("dir");
195 if(dir=="rtl")
196 {
197 $(this).text(moment(dp).locale('fa').format('D MMM YYYY'));
198 }
199 else
200 {
201 $(this).text(dp);
202 }
203
204 });
205 var txt = $('.metadata-view-count').text();
206 var numb = txt.match(/\d/g);
207 numb = numb.join("");
208
209 $('.sp-view').text('بازدید '+numb);
210 $('.sp-category').text($('.asset-category').text());
211
212 });
213</script>