Virhe tapahtui prosessoidessa esitysmallia.
Java method "com.sun.proxy.$Proxy1091.getArticle(long, String)" threw an exception when invoked on com.sun.proxy.$Proxy1091 object "com.liferay.journal.service.impl.JournalArticleLocalServiceImpl@79204c11"; see cause exception in the Java stack trace. ---- FTL stack trace ("~" means nesting-related): - Failed at: #assign journalArticle = JournalArtic... [in template "20095#20121#61184" at line 95, column 1] ----
1<style>
2 .modal-success-message .modal-content{
3 background-color: #fff;
4 }
5 .modal-success-message .modal-content .btn-cancel{
6margin-bottom: 20px
7 }
8 .job-details-z{
9 position: relative;
10 z-index:-1;
11 }
12 .job-details img{
13 width: -webkit-fill-available;
14 }
15 .job-details .designation{
16 position: absolute;
17 top: 240px;
18 left: 50%;
19 transform: translate(-50%, -50%);
20 text-align: center;
21 width: 63%;
22 }
23.job-details .designation .header-job-apply{
24 top: 60px;
25 position: relative;
26 }
27 .job-details .designation h2{
28 color:#FF6D00 !important;
29 margin-bottom:1rem !important;
30 }
31 .job-details .job-type-detail{
32 display:flex;
33 gap:30px;
34 align-items: center;
35 justify-content: center;
36 letter-spacing: 2.4px;
37 color: #464555;
38 text-transform: uppercase;
39 font-size: 16px;
40 font-weight: 600;
41 }
42 .job-details h3{
43 color: #7E7D88 !important;
44 }
45
46 .job-details .go-back-card{
47 background: #E7EDF933 0% 0% no-repeat padding-box;
48border: 2px solid #E7EDF9;
49border-radius: 12px;
50 top: 8rem;
51
52 }
53 .job-details .go-back-card .rightCard-title{
54 padding: 1rem;
55 border-bottom: 1px solid #E7EDF9;
56 align-items: center;
57 gap: 10px
58 }
59 .job-details .go-back-card .rightCard-detail{
60 color: #464555;
61 padding: 1rem;
62 border-bottom: 1px solid #E7EDF9;
63 }
64 .job-details .go-back-card .rightCard-btn{
65 padding: 1rem;
66 border-bottom: 1px solid #E7EDF9;
67 text-align: center;
68 }
69 .job-details .go-back-card .socialmediaCard{
70 padding: 1rem;
71 border-bottom: 1px solid #E7EDF9;
72 }
73 .job-details .go-back-card .socialmediaCard .social-icon{
74 display:flex;
75 gap:25px;
76 }
77 .job-details .go-back-card .socialmediaCard p{
78 font-weight: 600;
79 color: #7E7D88;
80 }
81</style>
82
83<#if themeDisplay?has_content>
84 </#if>
85<#assign ddmFieldLocalService=serviceLocator.findService("com.liferay.dynamic.data.mapping.service.DDMFieldLocalService") />
86<#assign JournalArticleLocalService=serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") />
87<#assign AssetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") />
88<#assign AssetEntryAssetCategoryRel = serviceLocator.findService("com.liferay.asset.entry.rel.service.AssetEntryAssetCategoryRelLocalService") />
89<#assign AssetVocabularyLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetVocabularyLocalService") />
90<#assign AssetCategoryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService") />
91<#assign url = "${themeDisplay.getURLCurrent()}">
92<#assign lastIndex = url?last_index_of("=") />
93<#assign articleId = url?substring(lastIndex+1) />
94<#assign scopeGroupId = themeDisplay.getScopeGroupId() />
95<#assign journalArticle = JournalArticleLocalService.getArticle(scopeGroupId, articleId) />
96<#assign metaDataMap = {} />
97 <#assign articleIdLong = journalArticle.getId() />
98 <#assign instanceId = themeDisplay.getPortletDisplay().getInstanceId() />
99 <#assign jobType = ""
100 designation = ""
101 experience = ""
102 whatWillYouDo = ""
103 experienceRequired = ""
104 desirable = ""
105 location = ""
106 articleTitle = journalArticle.getTitle()
107 />
108 <#assign jobType=[] />
109
110
111<#assign ddmFormStructure = journalArticle.getDDMStructure()
112 ddmForm = ddmFormStructure.getDDMForm()
113 />
114 <#assign ddmFormValues = ddmFieldLocalService.getDDMFormValues(ddmForm, articleIdLong)
115 ddmFormFieldValues = ddmFormValues.getDDMFormFieldValues()
116 />
117<#list ddmFormFieldValues as field>
118 <#list field.getNestedDDMFormFieldValues() as nestedField>
119 <#assign curFieldReferenceName = nestedField.getFieldReference()
120 curFieldValue = nestedField.getValue().getString(locale) />
121 <#if nestedField.getFieldReference() == "JobType">
122 <#assign jobType= jobType+[curFieldValue]/>
123 </#if>
124 <#assign metaDataMap = metaDataMap + {curFieldReferenceName : curFieldValue} />
125 </#list>
126</#list>
127
128
129 <#assign designation = metaDataMap.Designation
130 experience = metaDataMap.Experience
131 whatWillYouDo = metaDataMap.WhatYoullDo
132 experienceRequired = metaDataMap.ExperienceRequired
133 desirable = metaDataMap.Desirable
134 location = metaDataMap.Location
135 />
136 <#assign jobTypeCount = jobType?size/>
137 <div class="job-details" >
138 <div >
139 <img class="" src="/documents/d/guest/shape"/>
140 <div class="designation">
141 <h2>${designation}</h2>
142 <div class="job-type-detail">
143 <#list jobType as type>
144
145 <p>${type}</p>
146
147 </#list>
148 </div>
149 <div class="header-job-apply">
150 <a class="btn btn-primary" id="<portlet:namespace/>applyForm" onClick = "openCareerForm()" >APPLY FOR THIS ROLE</a>
151 <@liferay_portlet["runtime"]
152 defaultPreferences=""
153 portletProviderAction=portletProviderAction.ACTION
154 instanceId="${instanceId}"
155 portletName="com_infoaxon_join_us_web_ComInfoaxonJoinUsWebPortlet"
156 />
157 </div>
158 </div>
159 </div>
160 <div class="container job-details-z">
161 <div class="row">
162 <div class="col-md-8 col col-lg-8 col-12 col-sm-12">
163 <div class="whatyoudo">
164 <h3 class="mb-3">What you’ll do</h3>
165 <p>${whatWillYouDo}</p>
166 </div>
167 <div class="ExperienceRequired">
168 <h3 class="mb-3">Experience Required</h3>
169 <p>${experienceRequired}</p>
170 </div>
171 <div class="Desirable">
172 <h3 class="mb-3">Desirable</h3>
173 <p>${desirable}</p>
174 </div>
175 </div>
176 <div class="col-md-4 col col-lg-4 col-12 col-sm-12">
177 <div class="card go-back-card">
178 <div class="d-flex rightCard-title">
179 <span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
180 <g id="Layer_2" data-name="Layer 2" transform="translate(0 24) rotate(-90)">
181 <g id="arrow-upward">
182 <rect id="Rectangle_5542" data-name="Rectangle 5542" width="24" height="24" transform="translate(24 24) rotate(180)" fill="#464555" opacity="0"/>
183 <path id="Path_2948" data-name="Path 2948" d="M5.23,10.64a1,1,0,0,0,1.41.13L11,7.14V19a1,1,0,0,0,2,0V7.14l4.36,3.63a1,1,0,0,0,1.28-1.54l-6-5-.15-.09-.13-.07a1,1,0,0,0-.72,0l-.13.07-.15.09-6,5a1,1,0,0,0-.13,1.41Z" fill="#464555"/>
184 </g>
185 </g>
186 </svg>
187 </span>
188 <p class="m-0">Go back</p>
189 </div>
190 <div class="rightCard-detail">
191 <p>${designation}</p>
192 <p>${experience}</p>
193 <p>${location}</p>
194 </div>
195 <div class="rightCard-btn">
196 <a class="btn btn-primary" id="<portlet:namespace/>applyFormBox" onClick = "openCareerForm()" >APPLY FOR THIS ROLE</a>
197 </div>
198 <div class="socialmediaCard">
199 <p>Share on social media</p>
200 <div class="social-icon">
201 <a><svg xmlns="http://www.w3.org/2000/svg" width="20.815" height="20.814" viewBox="0 0 20.815 20.814">
202 <path id="linkedin-in" d="M4.659,20.824H.344V6.928H4.659ZM2.5,5.032A2.511,2.511,0,1,1,5,2.509,2.52,2.52,0,0,1,2.5,5.032ZM20.81,20.824H16.5V14.06c0-1.612-.033-3.68-2.244-3.68-2.244,0-2.587,1.752-2.587,3.564v6.881H7.362V6.928H11.5v1.9h.06a4.534,4.534,0,0,1,4.083-2.244c4.367,0,5.17,2.876,5.17,6.612v7.634Z" transform="translate(0 -0.01)" fill="#464555"/>
203 </svg></a>
204 <a><svg xmlns="http://www.w3.org/2000/svg" width="20.74" height="20.74" viewBox="0 0 20.74 20.74">
205 <path id="Path_17732" data-name="Path 17732" d="M80.37,11.9a1.521,1.521,0,1,0-1.521-1.521A1.522,1.522,0,0,0,80.37,11.9Zm3.285-4.455a.828.828,0,1,0-.828-.828A.828.828,0,0,0,83.654,7.443Zm-.242,2.934A3.043,3.043,0,1,1,77.5,9.368H76.031v4.124a1.3,1.3,0,0,0,1.3,1.295H83.2a1.3,1.3,0,0,0,1.295-1.295V8.072h-2.14a3.034,3.034,0,0,1,1.059,2.3ZM80.37.007a10.37,10.37,0,1,0,10.37,10.37A10.37,10.37,0,0,0,80.37.007Zm5.537,14.575a1.733,1.733,0,0,1-1.728,1.728H76.345a1.734,1.734,0,0,1-1.728-1.728V6.748a1.733,1.733,0,0,1,1.728-1.728h7.834a1.733,1.733,0,0,1,1.728,1.728v7.834Z" transform="translate(-70 -0.007)" fill="#464555"/>
206 </svg></a>
207 <a><svg xmlns="http://www.w3.org/2000/svg" width="24.745" height="20.098" viewBox="0 0 24.745 20.098">
208 <path id="twitter" d="M22.2,53.091c.016.22.016.44.016.659A14.331,14.331,0,0,1,7.788,68.18,14.332,14.332,0,0,1,0,65.9a10.49,10.49,0,0,0,1.225.063,10.157,10.157,0,0,0,6.3-2.167,5.08,5.08,0,0,1-4.742-3.517,6.394,6.394,0,0,0,.958.078,5.363,5.363,0,0,0,1.335-.173A5.072,5.072,0,0,1,1,55.21v-.063a5.107,5.107,0,0,0,2.292.644,5.079,5.079,0,0,1-1.57-6.783,14.416,14.416,0,0,0,10.457,5.307,5.725,5.725,0,0,1-.126-1.162,5.076,5.076,0,0,1,8.777-3.47,9.985,9.985,0,0,0,3.219-1.225,5.058,5.058,0,0,1-2.23,2.795,10.167,10.167,0,0,0,2.92-.785A10.9,10.9,0,0,1,22.2,53.091Z" transform="translate(0 -48.082)" fill="#464555"/>
209 </svg></a>
210 <a><svg xmlns="http://www.w3.org/2000/svg" width="11.155" height="20.828" viewBox="0 0 11.155 20.828">
211 <path id="facebook-f" d="M33.314,11.716l.578-3.769H30.276V5.5A1.885,1.885,0,0,1,32.4,3.464h1.644V.255A20.052,20.052,0,0,0,31.127,0C28.148,0,26.2,1.805,26.2,5.074V7.947H22.89v3.769H26.2v9.112h4.075V11.716Z" transform="translate(-22.89)" fill="#464555"/>
212 </svg></a>
213 </div>
214 </div>
215 </div>
216 </div>
217 </div>
218 </div>
219 </div>
220 <#assign vocabularyName = "job categories" />
221
222<#assign vocabularies = AssetVocabularyLocalService.getGroupVocabularies(themeDisplay.getScopeGroupId()) />
223
224<#list vocabularies as vocab>
225 <#if vocab.getName() == vocabularyName>
226 <#assign vocabulary = vocab>
227 <#break>
228 </#if>
229</#list>
230 <#assign categoryIds = []/>
231 <#assign categoryNames = []/>
232 <#assign categoryMap = {}/>
233<#if vocabulary??>
234 <#assign rootCategories = AssetCategoryLocalService.getVocabularyRootCategories(vocabulary.getVocabularyId(), -1, -1, null) />
235 <div class="asset-categories">
236 <h3 class="text-center mb-5">Other jobs</h3>
237 <#list rootCategories as rootCategory>
238 <#assign categoryName = "${rootCategory.getTitle(locale)}" />
239 <#assign categoryId = rootCategory.getCategoryId() />
240 <#assign categoryNames = categoryNames + [categoryName]>
241 <#assign categoryIds = categoryIds + [categoryId]>
242 <#assign assetList = AssetEntryAssetCategoryRel.getAssetEntryAssetCategoryRelsByAssetCategoryId(categoryId) />
243 <#assign assetListSize = assetList?size/>
244 <a class="btn btn-primary" name="${categoryName}" id="btn_${categoryId}" onclick="showCategory(${categoryId},'${categoryName}',${assetListSize})">${categoryName} (${assetListSize})</a>
245 </#list>
246 </div>
247 <div class="asset-categories">
248 <#list rootCategories as rootCategory>
249 <#assign categoryName = "${rootCategory.getTitle(locale)}" />
250 <#assign categoryId = rootCategory.getCategoryId() />
251 <#assign categoryNames = categoryNames + [categoryName]>
252 <#assign categoryIds = categoryIds + [categoryId]>
253 <#assign assetList = AssetEntryAssetCategoryRel.getAssetEntryAssetCategoryRelsByAssetCategoryId(categoryId) />
254 <#assign assetListSize = assetList?size/>
255 <div class="container">
256 <div class="row">
257 <div class="col-md-12">
258 <div class="category-div" id="${categoryId}" style="display: none;">
259 <#list assetList as asset>
260 <#assign entry = AssetEntryLocalService.getAssetEntry(asset.getAssetEntryId())/>
261 <#assign entryId = entry.getClassPK() />
262 <#assign journalA = JournalArticleLocalService.getLatestArticle(entryId) />
263 <@liferay_journal["journal-article"]
264 articleId=journalA.getArticleId()
265 ddmTemplateKey="53090"
266 groupId=journalA.getGroupId()
267 />
268 </#list>
269 </div>
270 </div>
271 </div>
272 </div>
273 <h2>
274 <span class="no-content" id="no-content-error${categoryId}" style="display: none;">No content availabe for ${categoryName}</span>
275 </h2>
276 </#list>
277 </div>
278</#if>
279
280
281 <script>
282
283$(document).ready(function(){
284 $('.category-div:first').show();
285 var count = "${jobTypeCount}";
286 $("#infoaxon-careers-form-modal").hide();
287var counter = 0;
288 <#list jobType as job>
289 var jb = "${job}";
290 var input = $("<p>");
291
292 input.attr("id", "job-type" + counter);
293 input.attr("name", "job-type" + counter);
294 input.attr("class","job-types-list");
295 input.text(jb);
296 var modalHeader = $("#jobTypeHeader");
297 modalHeader.append(input);
298 counter++;
299</#list>
300});
301 var jobTitle = "${articleTitle}";
302 var desgination = "${designation}";
303 var experience = "${experience}";
304
305
306
307 function openCareerForm(){
308 $("#infoaxon-career-form")[0].reset();
309 $("#infoaxon-careers-form-modal").show();
310 $("#applyForm").hide();
311 $("#desgination").text(desgination);
312 $("#experience").text(experience);
313 }
314 function closeCareerFormModal(){
315 $("#infoaxon-careers-form-modal").hide();
316 $("#infoaxon-career-form")[0].reset();
317 $("#applyForm").show();
318 $(".removeMessage").html("");
319 $(".removeMessage").css("display","none");
320 $("#applyForm").show();
321 }
322 function closeModal(){
323 $("#career-model-success").hide();
324 $("#infoaxon-career-form")[0].reset();
325 $("#applyForm").show();
326 }
327 function backToHome(){
328 $("#career-model-success").hide();
329
330 }
331 function showCategory(id,name,count){
332 $(".category-div").hide();
333 $(".no-content").hide();
334 if(count > 0){
335 $("#"+id).show();
336 } else {
337 $("#no-content-error"+id).show();
338 }
339 }
340
341</script>