Trailer Rear Drive Assist - Trailer Rear Drive Assist - HRI-US
An error occurred while processing the template.
The following has evaluated to null or missing: ==> assetEntryQuery [in template "20116#20152#50391" at line 250, column 31] ---- 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: #assign search = assetEntryQuery.setC... [in template "20116#20152#50391" at line 250, column 13] ----
1<!-- START: Project Template -->
2
3<style>
4 /*START: Related Projects*/
5 .b-related-projects-container{
6 background: #f4f4f4;
7 padding: 0px 20px 30px 20px;
8 margin-bottom: 20px;
9 }
10 .b-related-project {
11 margin-bottom: 10px;
12 }
13 .b-related-project a{
14 color: #444;
15 font-weight: 700;
16 }
17 /*END: Related Projects*/
18 .researchAreaHeader{
19 font-family: Georgia, serif;
20 font-size: 24px!important;
21 color: #cd1129!important;
22 font-weight: 400;
23 line-height: 1.4;
24 }
25 .researchAreaTitle{
26 font-family: 'Open Sans', arial, sans-serif;
27 font-weight: 700;
28 font-size: 16px;
29 line-height: 1.1em;
30 color: #444;
31 }
32 .b-related-researchAreas{
33 margin-bottom: 10px;
34 }
35 #titleContainer .title h1{
36 font-family: 'Open Sans', Arial, sans-serif;
37 font-weight: 700;
38 font-size: 38px;
39 line-height: 1em;
40 }
41 #contentType{
42 color: #999;
43 margin-bottom: 30px;
44 font-size: 18px;
45 font-weight: 700;
46 margin-top: -8px;
47 font-family: 'open sans', arial, sans-serif;
48 line-height: 1.4;
49 }
50 .item h3, .b-publications--title{
51 font-family: Georgia, serif;
52 font-size: 24px;
53 color: #cd1129;
54 font-weight: 400;
55 margin-bottom: 5px;
56 line-height: 1.4;
57 }
58 .media-item{
59 margin-right: 20px;
60 margin-bottom: 10px;
61 height: 100%;
62 }
63 .pull-left{
64 float: left;
65 display: block;
66 }
67 .media{
68 zoom: 1;
69 overflow: hidden;
70 margin-top: 15px;
71 width: 145px;
72 height: 100px;
73 background: #0a7cbc;
74 position: relative;
75 }
76 .media:first-child {
77 margin-top: 0;
78 }
79 .media-item .glyphicon{
80 font-size: 45px;
81 color: #fff;
82 margin: 25px 48px;
83 }
84 .itemLink{
85 position: absolute;
86 top: 0;
87 bottom: 0;
88 left: 0;
89 right: 0;
90 }
91 .hidden{
92 display: none;
93 }
94 button.media-item.pull-left{
95 padding:0;
96 border:0;
97 }
98 .yui3-resize-handle.yui3-resize-handle-br{
99 display: none;
100 }
101 .modal-content{
102 width: 100%;
103 height: 100%;
104 }
105 .modal-dialog:focus{
106 outline: none;
107 }
108</style>
109
110<div class="row">
111 <div id="titleContainer" class="col-md-12">
112 <div class="title" id="contentTitle">
113 <h1>${DisplayTitle.getData()}</h1>
114 </div>
115 <div class="type" id="contentType">Research Project</div>
116 </div>
117
118 <div class="col-md-9">
119 <div class="item">
120 <div class="imagefull">
121 <img src="${Image.getData()}" data-themekey="#">
122 </div>
123 <div class="bodycontainer">
124 <div class="b-widget__title">Project Goals</div>
125 ${Description.getData()}
126 </div>
127 <div class="b-widget__title"> Research Area </div>
128
129
130
131 <#assign serviceContext = staticUtil["com.liferay.portal.kernel.service.ServiceContextThreadLocal"].getServiceContext()>
132 <#assign themeDisplay = serviceContext.getThemeDisplay() />
133 <#assign viewInContext = (themeDisplay.getURLCurrent()?index_of("control_panel") gte 0)?then(false, true) />
134
135 <#if viewInContext == true>
136 <!-- START: Related Projects -->
137 <#import "liferay-hri-theme_SERVLET_CONTEXT_/templates/base22/freemarker-utils.ftl" as utils>
138 <#assign OrderByComparatorFactoryUtil = staticUtil["com.liferay.portal.kernel.util.OrderByComparatorFactoryUtil"] />
139
140 <#assign categoriesOrderBy = OrderByComparatorFactoryUtil.create("AssetCategory", ["modifiedDate", false]) />
141
142 <#--Obtain domain of Liferay instance -->
143
144 <#assign splittedURL = themeDisplay.getURLCurrent()?split("/") />
145
146 <#--Obtain the categories of the current content -->
147 <#assign journalArticleId = .vars['reserved-article-id'].data>
148
149 <#assign journalArticleResourceLocalServiceUtil = staticUtil["com.liferay.journal.service.JournalArticleResourceLocalServiceUtil"]>
150
151 <#assign assetCategoryLocalServiceUtil = staticUtil["com.liferay.asset.kernel.service.AssetCategoryLocalServiceUtil"]>
152
153 <#assign articleResourcePK = journalArticleResourceLocalServiceUtil.getArticleResourcePrimKey(groupId, journalArticleId)/>
154
155 <#assign categoryList=assetCategoryLocalServiceUtil.getCategories("com.liferay.journal.model.JournalArticle", articleResourcePK) />
156
157 <#--Obtain the VocabularyID of 'All Projects'-->
158 <#assign allProjectsVocabularyId = getVocabularyId('All Projects') />
159 <#assign projectCategoryOfCurrentContent = getCategoriesByVocabularyId(allProjectsVocabularyId) />
160
161 <#--Obtain the VocabularyID of 'All Research Areas'-->
162 <#assign allResearchAreasVocabularyId = getVocabularyId('All Research Areas') />
163 <#assign allResearchAreasCategoriesOfCurrentContent = getCategoriesByVocabularyId(allResearchAreasVocabularyId) />
164
165 <#if allResearchAreasCategoriesOfCurrentContent?has_content>
166
167 <#-- Search Projects by Research Areas -->
168 <#assign assetEntryQueryService = objectUtil('com.liferay.asset.kernel.service.AssetEntryLocalServiceUtil')>
169
170 <#assign assetEntryQuery = objectUtil('com.liferay.asset.kernel.service.persistence.AssetEntryQuery')>
171
172 <#assign search = assetEntryQuery.setAnyCategoryIds(allResearchAreasCategoriesOfCurrentContent)>
173
174 <#assign researchAreasStructureId = utils.getStructureIdByName("Research Area") />
175 <#assign search = assetEntryQuery.setClassTypeIds([researchAreasStructureId])>
176
177 <#assign entries = assetEntryQueryService.getEntries(assetEntryQuery)>
178 <#if entries?has_content>
179 <#list entries as entry>
180 <#assign renderer = entry.getAssetRenderer()>
181 <#assign className = renderer.getClassName() >
182
183 <#assign classPK = renderer.getClassPK() />
184
185 <#if className == "com.liferay.journal.model.JournalArticle" >
186 <#assign journalArticle = renderer.getArticle() >
187 <#assign document = saxReaderUtil.read(journalArticle.getContent()) >
188
189 <#assign entryDisplayTitle = document.valueOf("//dynamic-element[@name='DisplayTitle']") />
190
191 <!-- start item html -->
192 <div class="b-related-researchAreas">
193 <div class="researchAreaTitle"> ${entryDisplayTitle} </div>
194 <a class="researchAreaURL" href="${buildURLResearchAreas()}">
195 View details
196 </a>
197 </div>
198 <!-- end item html -->
199 </#if>
200 </#list>
201 </#if>
202 </#if>
203 </#if>
204
205 <#if Media?has_content>
206
207 <div class="b-widget__title"> Media </div>
208 <#if Media.getSiblings()?has_content>
209 <#list Media.getSiblings() as MediaBox>
210 <#if MediaBox.getData()?? && MediaBox.getData() != "">
211 <#assign mediaBoxInfo = generateAttachmentElement(MediaBox.getData()) >
212 <#assign mimeType = mediaBoxInfo[0]>
213 <#assign fileName = mediaBoxInfo[1]>
214 <#if mimeType != "">
215 <#if mimeType?contains("video/mp4")>
216 <button class="video-modal media-item pull-left" data-videoLink="${MediaBox.getData()}" data-toggle="tooltip" data-target="top" title="${fileName}" >
217
218 <div class="media mp4">
219 <span class="glyphicon glyphicon-file" aria-hidden="true"></span>
220 </div>
221
222 </button>
223 <#else>
224 <div class="media-item pull-left" alt = "..." data-videoLink="${MediaBox.getData()}" data-toggle="tooltip" data-target="top">
225 <div class="media mp4">
226 <span class="glyphicon glyphicon-file" aria-hidden="true"></span>
227 <a class="itemLink" href="${MediaBox.getData()}" title= "..."></a>
228 </div>
229
230 </div>
231
232 </#if>
233 </#if>
234 </#if>
235
236 </#list>
237 </#if>
238 </#if>
239
240
241 <div class="yui3-skin-sam">
242 <div id="modal"></div>
243 </div>
244
245 </div>
246 </div>
247 <div class="col-md-3">
248 <#if projectCategoryOfCurrentContent?has_content>
249 <#assign projectsStructureId = utils.getStructureIdByName("Project") />
250 <#assign search = assetEntryQuery.setClassTypeIds([projectsStructureId])>
251 <#assign search = assetEntryQuery.setNotAnyCategoryIds(projectCategoryOfCurrentContent)>
252 <#assign entries = assetEntryQueryService.getEntries(assetEntryQuery)>
253
254 <#if entries?has_content>
255 <!-- start header html -->
256 <div class="b-related-projects-container clearfix">
257 <div class="b-widget__title">Related Projects</div>
258
259 <!-- end header html -->
260
261 <!-- start item loop -->
262 <#list entries as entry>
263 <#assign renderer = entry.getAssetRenderer()>
264 <#assign className = renderer.getClassName() >
265
266 <#assign classPK = renderer.getClassPK() />
267
268 <#if className == "com.liferay.journal.model.JournalArticle" >
269 <#assign journalArticle = renderer.getArticle() >
270 <#assign document = saxReaderUtil.read(journalArticle.getContent()) >
271
272 <#assign entryDisplayTitle = document.valueOf("//dynamic-element[@name='DisplayTitle']") />
273
274 <!-- start item html -->
275 <div class="b-related-project">
276 <a href="${buildURLProjects()}">
277 ${entryDisplayTitle}
278 </a>
279 </div>
280
281 <!-- end item html -->
282
283 </#if>
284 </#list>
285 <!-- end item loop -->
286 <!-- start footer -->
287 </div>
288 <!-- end footer -->
289 </#if>
290 </#if>
291
292
293 </div>
294
295 <!-- start functions -->
296 <#function getVocabularyId categoryName>
297
298 <#assign categoriesTest = assetCategoryLocalServiceUtil.getCategories() />
299
300 <#list categoriesTest as categoryEntry>
301 <#if categoryEntry.getName() == categoryName>
302 <#return categoryEntry.getVocabularyId()>
303 </#if>
304 </#list>
305 </#function>
306
307 <#function getCategoriesByVocabularyId vocabularyId>
308 <#assign vocabularyCategoryList=assetCategoryLocalServiceUtil.getVocabularyCategories(getterUtil.getLong(vocabularyId), 0, 999, categoriesOrderBy)/>
309 <#local vocabularyCategories = [] />
310 <#list vocabularyCategoryList as vocabularyCategoryEntry>
311 <#list categoryList as categoryEntry>
312 <#if categoryEntry.getName() == vocabularyCategoryEntry.getName() >
313
314 <#local vocabularyCategories = vocabularyCategories + [ getterUtil.getLong(categoryEntry.getCategoryId()) ] />
315
316 </#if>
317 </#list>
318 </#list>
319 <#return vocabularyCategories>
320 </#function>
321
322 <#function buildURLProjects>
323
324 <#assign projectCategoryId = getCategoryIdByVocabularyId(allProjectsVocabularyId) />
325 <#assign projectCategoryIdParam = "" />
326 <#if projectCategoryId+"" != "">
327 <#assign projectCategoryIdParam = "?p_r_p_categoryId=" + projectCategoryId />
328 </#if>
329 <#local url = "/" + splittedURL[1] + "/" + renderer.getUrlTitle() + projectCategoryIdParam />
330 <#return url />
331 </#function>
332
333 <#function buildURLResearchAreas>
334
335 <#assign researchAreaCategoryId = getCategoryIdByVocabularyId(allResearchAreasVocabularyId) />
336 <#assign researchAreaIdParam = "" />
337 <#if researchAreaCategoryId+"" != "">
338 <#assign researchAreaIdParam = "?p_r_p_categoryId=" + researchAreaCategoryId />
339 </#if>
340 <#local url = "/" + splittedURL[1] + "/" + renderer.getUrlTitle() + researchAreaIdParam />
341 <#return url />
342 </#function>
343
344 <#function getCategoryIdByVocabularyId vocabularyId>
345 <#assign vocabularyCategoryList=assetCategoryLocalServiceUtil.getVocabularyCategories(getterUtil.getLong(vocabularyId), 0, 999, categoriesOrderBy)/>
346 <#assign categoryList=assetCategoryLocalServiceUtil.getCategories(className, classPK)/>
347 <#list vocabularyCategoryList as vocabularyCategoryEntry>
348 <#list categoryList as categoryEntry>
349 <#if categoryEntry.getName() == vocabularyCategoryEntry.getName() >
350 <#return categoryEntry.getCategoryId()>
351 </#if>
352 </#list>
353 </#list>
354 <#return "">
355 </#function>
356
357
358
359
360
361<#function generateAttachmentElement attachmentURL>
362 <#assign counter = 0 >
363 <#list attachmentURL?split("/") as chunkURL>
364 <#if counter == 2>
365 <#assign groupId = chunkURL?number >
366 </#if>
367 <#if counter == 5>
368 <#if chunkURL?index_of("?") != -1>
369 <#assign uuId = chunkURL?substring(0, chunkURL?index_of("?")) >
370 <#else>
371 <#assign uuId = chunkURL >
372 </#if>
373 </#if>
374 <#assign counter = counter+1 >
375 </#list>
376
377 <#assign fileEntry = serviceLocator.findService('com.liferay.document.library.kernel.service.DLFileEntryService') />
378 <#attempt>
379 <#assign file=fileEntry.getFileEntryByUuidAndGroupId(uuId, getterUtil.getLong(groupId)) />
380 <#assign fileMimeType = file.getMimeType()>
381 <#assign fileName = file.getFileName()>
382 <#recover>
383 <#assign fileMimeType = "">
384 <#assign fileName = "">
385 </#attempt>
386
387 <#assign fileInfo = [fileMimeType, fileName]>
388 <#return fileInfo />
389</#function>
390
391
392
393
394
395
396
397</div>
398
399
400
401
402
403<script type="text/javascript">
404 (function($){
405 AUI().ready("aui-module", function() {
406 $(".researchAreaURL").on('touchend', function(e) {
407 debugger;
408 window.location.href = $(this).attr("href");
409 });
410 var $source = $('<source>');
411 $(".video-modal").on("click", function(){
412 var videoUrl = $(this).data( "videolink" );
413 var videoName = $(this).attr("title")
414 var $video = $('.yui3-widget-bd.modal-body video');
415 var video = $video[0];
416 console.log(videoUrl, videoName);
417 $(".modalVideoTitle").html(videoName);
418 if($video.html() == ""){
419 $source.attr('src', videoUrl);
420 $source.appendTo($video);
421 video.play();
422 }else{
423 video.pause();
424 $source.attr("src", videoUrl);
425 video.load();
426 video.play();
427 }
428 /*$('.yui3-widget-bd.modal-body video source').attr('src', videoUrl);*/
429 });
430 });
431 })(jQuery);
432</script>
433
434
435<script>
436 YUI().use(
437 'aui-modal',
438 function(Y) {
439 var modal = new Y.Modal(
440 {
441 bodyContent: '<video width="720" height="480" controls>' +
442
443 '</video>',
444 centered: true,
445 destroyOnHide: false,
446 headerContent: '<h3 class="modalVideoTitle"></h3>',
447 modal: true,
448 render: '#modal',
449 zIndex: 1100,
450 visible: false,
451 width: 760
452 }
453 ).render();
454 Y.all('.video-modal').on(
455 'click',
456 function() {
457 modal.show();
458 }
459 );
460 }
461);
462</script>
463<!-- END: Related Projects -->
464<!-- END: Project Template -->