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