series - yes.co.il
שגיאה קרתה בעת עיבוד התבנית
Java method "com.yes.template.services.SeriesLocalServiceDB.getBySeriesId(int, javax.servlet.http.HttpServletRequest)" couldn't be called: The value of the 1st argument was null, but the target Java parameter type (int) is primitive and so can't store null.
----
FTL stack trace ("~" means nesting-related):
- Failed at: #assign seriesCntx = seriesService.ge... [in template "33702#33729#1667223" at line 22, column 1]
---- 1<#-- Series All --> 2<#-- Breadcram Start --> 3<#assign serviceContext=staticUtil["com.liferay.portal.kernel.service.ServiceContextThreadLocal"].getServiceContext() /> 4<#assign httpServletRequest=serviceContext.getRequest() /> 5<#assign themeDisplay=serviceContext.getThemeDisplay() /> 6<#assign currentUrl=themeDisplay.getPortalURL() + themeDisplay.getURLCurrent() /> 7<#assign seriesId1=0 /> 8<#if httpServletRequest.getParameter("seriesId")?has_content> 9 <#assign seriesId1=httpServletRequest.getParameter('seriesId') /> 10 <#if seriesId1?matches("^\\d+$")> 11 <#assign seriesId=seriesId1?number /> 12 </#if> 13<#else> 14 <#-- inheritRedirect=true -return from serch --> 15 <#if httpServletRequest.getParameter("inheritRedirect")?has_content> 16 <script> 17 window.location.href = '/content/main/series'; 18 </script> 19 </#if> 20</#if> 21<#assign seriesService=serviceLocator.findService("com.yes.template.services.SeriesLocalServiceDB") /> 22<#assign seriesCntx=seriesService.getBySeriesId(seriesId, request) /> 23<#assign dayOfWeek=seriesCntx.getHebDayOfWeek() /> 24<#if !currentUrl?contains("/dxp")> 25 <#if !(seriesCntx.getName())?has_content> 26 <script> 27 window.location.href = '/pagenotfound'; 28 </script> 29 </#if> 30</#if> 31 32 <#if seriesCntx.getStartTime()?has_content> 33 <script> 34 var seriesRecordData = {"isDefaultUser": "${user.defaultUser?c}", "scheduleItemId": "${seriesCntx.getScheduleItemId()}", "startTime": "${seriesCntx.getStartTime()}", "seriesName": "${seriesCntx.getName()}", "brodcastItem": "${seriesCntx.getBroadcastItem()}", "brodcastSeries": "${seriesCntx.getBroadcastSeries()}"}; 35 </script> 36 </#if> 37<nav aria-label="breadcrumbs flex-container" class="breadcrumbs"> 38 <ol class="breadcrumbs-ol"> 39 <li> 40 <a target="_self" href="/content/main" class="breadcrumbs-item">עולם התוכן</a> 41 <img aria-hidden="true" class="breadcrumbs-arrow" 42 src="/o/com.yes.alpha.theme/images/yes/breadcrumbs-arrow.svg" alt="arrow content" /> 43 </li> 44 <li> 45 <a target="_self" href="/content/main/series" class="breadcrumbs-item">סדרות</a> 46 <img aria-hidden="true" class="breadcrumbs-arrow" 47 src="/o/com.yes.alpha.theme/images/yes/breadcrumbs-arrow.svg" alt="arrow series" /> 48 </li> 49 <li> 50 <a target="_self" href="${currentUrl}" aria-current="location" 51 class="breadcrumbs-item active">${seriesCntx.getName()}</a> 52 </li> 53 </ol> 54</nav> 55<#-- Breadcram End --> 56<#-- Banner Start --> 57<section class="banner-ibms-content text-white rtl"> 58 <div class="banner-text-container"> 59 <h1 tabindex="0" class="banner-main-title font-medium">${seriesCntx.getName()}</h1> 60 <div class="banner-details font-regular"> 61 <span tabindex="0" class="banner-genre">${seriesCntx.getGenreSubDesc()}</span> 62 <#if (seriesCntx.getYear()?has_content) && (seriesCntx.getYear() != '0')> 63 <span tabindex="0" class="banner-year">${seriesCntx.getYear()}</span> 64 </#if> 65 <#if (seriesCntx.getCountryName()?has_content) && (seriesCntx.getCountryName() != "null")> 66 <div class="country font-medium"> 67 <span class="white-ellipse"> ${seriesCntx.getCountryName()} </span> 68 </div> 69 </#if> 70 <#-- 71 <div tabindex="0" class="banner-imdb-score"> 72 <img class="imdb-logo imdb-el" src="/o/com.yes.alpha.theme/images/yes/icon-imdb.png" alt="imdb-logo" /> 73 <div tabindex="0" class="imdb-score imdb-el">8.3</div> 74 <img class="icon-star" src="/o/com.yes.alpha.theme/images/yes/icon-star.svg" alt="" /> 75 </div> 76 <div class="banner-age-rating font-regular"> 77 <span class="white-ellipse"> 13 </span> 78 </div> 79 --> 80 <#list VersionsToShow.getData()?split(",") as ver> 81 <#if seriesCntx.getVersionName()?contains(ver)> 82 <div class="is4k font-medium"> 83 <span class="white-ellipse"> 84 ${ver} 85 <#-- 4<span class="k">k 86 </span> --> 87 </span> 88 </div> 89 </#if> 90 </#list> 91 <#if (seriesCntx.getRestrictionDesc()?has_content) && (seriesCntx.getRestrictionDesc() != "null")> 92 <div class="dubbing font-medium"> 93 <span class="white-ellipse"> ${seriesCntx.getRestrictionDesc()} </span> 94 </div> 95 </#if> 96 </div> 97 <div tabindex="0" class="banner-description font-medium"> 98 ${seriesCntx.getDesc()} 99 </div> 100 <#if seriesCntx.getStartTime()?has_content && seriesCntx.getChannelName()?has_content && dayOfWeek?has_content> 101 <div class="banner-show-starts"> 102 <span tabindex="0" aria-label="יום השידור" class="show-day"> 103 <#switch dayOfWeek> 104 <#case "SUNDAY"> 105 ${SUNDAY.getData()} 106 <#break> 107 <#case "MONDAY"> 108 ${MONDAY.getData()} 109 <#break> 110 <#case "TUESDAY"> 111 ${TUESDAY.getData()} 112 <#break> 113 <#case "WEDNESDAY"> 114 ${WEDNESDAY.getData()} 115 <#break> 116 <#case "THURSDAY"> 117 ${THURSDAY.getData()} 118 <#break> 119 <#case "FRIDAY"> 120 ${FRIDAY.getData()} 121 <#break> 122 <#case "SATURDAY"> 123 ${SATURDAY.getData()} 124 <#break> 125 <#default> 126 ${dayOfWeek} 127 </#switch> 128 </span> 129 <span tabindex="0" aria-label="שעת השידור" class="show-hour"> 130 ${seriesCntx.getStartTime()?substring(0,5)} 131 </span> 132 <span tabindex="0" aria-label="מיקום השידור" class="show-channle">ב-${seriesCntx.getChannelName()}</span><#-- וב-yesVOD --> 133 </div> 134 </#if> 135 <div class="banner-content-cta-wrap"> 136 <#if seriesCntx.getTrailerPath()?has_content> 137 <a role="button" data-toggle="modal" data-target="#bannertraileryoutube" href="javascript:void(0)" 138 target="_self" class="banner_cta-trailer tap-btn btn-dark-op-03"> 139 <i> 140 <img class="play-svg" src="/o/com.yes.alpha.theme/images/yes/play-icon.svg" alt="play" /> 141 </i> 142 <div class="banner_cta-text font-medium text-blue">לצפייה בטריילר</div> 143 </a> 144 </#if> 145 <#if seriesCntx.getStartTime()?has_content> 146 <a role="button" href="javascript:void(0)" class="banner_cta-title-page tap-btn btn-dark-op-03"> 147 <i> 148 <img class="favorite-svg" src="/o/com.yes.alpha.theme/images/yes/icon-favorite.svg" alt="favorite" /> 149 </i> 150 <div class="banner_cta-text font-medium text-blue seriesRecordModal">הוספה למועדפים</div> 151 </a> 152 </#if> 153 </div> 154 </div> 155 <div class="banner-img-container"> 156 <div class="banner-img-gradient"></div> 157 <img class="top-banner" src="${seriesCntx.getImage16x9()}" alt="${seriesCntx.getNameEN()}" 158 onerror="this.onerror=null;this.src='/o/com.yes.alpha.theme/images/yes/default16x9.jpg'" /> 159 </div> 160</section> 161 <#if seriesCntx.getTrailerPath()?has_content> 162 <!-- Modal --> 163 <div class="modal fade" id="bannertraileryoutube" tabindex="-1" role="dialog" 164 aria-labelledby="bannertraileryoutubeModalLabel" aria-hidden="true"> 165 <div class="modal-dialog" role="document"> 166 <div class="modal-content"> 167 <div class="modal-header"> 168 <button type="button" onclick='closeTrlr();' class="close" data-dismiss="modal" aria-label="Close"> 169 </button> 170 </div> 171 <div class="modal-body"> 172 <iframe id="trlr" width="444" height="250" src="https://www.youtube.com/embed/${seriesCntx.getTrailerPath()}" 173 frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" 174 allowfullscreen></iframe> 175 </div> 176 <div class="modal-footer"> 177 </div> 178 </div> 179 </div> 180 </div> 181 <script> 182 function closeTrlr() 183 { 184 $('#trlr').attr('src', ''); 185 setTimeout(function(){ $('#trlr').attr('src', 'https://www.youtube.com/embed/${seriesCntx.getTrailerPath()}'); }, 200); 186 } 187 </script> 188</#if> 189<#-- SERIES_BUNNER_DB END --> 190 <#assign journalArticleLocalService=serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") /> 191<#-- Single Trailer --> 192<#if seriesCntx.getWebContentMainTrailerId()?has_content> 193 <#assign mainTrailerNumber=seriesCntx.getWebContentMainTrailerId()?number /> 194 <#if (mainTrailerNumber?is_number) && (mainTrailerNumber > 0)> 195 <#assign mainTrailer=journalArticleLocalService.getLatestArticle(getterUtil.getLong(mainTrailerNumber)) /> 196 <#assign mt=journalArticleLocalService.getArticleContent(mainTrailer, mainTrailer.getDDMTemplateKey(), "VIEW" , locale, themeDisplay) /> 197 <section id="seriesTrailer" class="bg-black rtl"> 198 ${mt} 199 </section> 200 <#else> 201 <!-- 202 Single Trailer 1 203 ${mainTrailerNumber} 204 --> 205 </#if> 206<#else> 207 <!-- 208 Single Trailer 2 209 210 --> 211</#if> 212<#-- SERIES_DETAILS_DB START --> 213<#-- Get Trailers WebContents Start--> 214 <#if seriesCntx.getWebContentId()?has_content> 215 <#assign webContentNumber=seriesCntx.getWebContentId()?number /> 216 <#if (webContentNumber?is_number) && (webContentNumber > 0) > 217 <#assign 218 article=journalArticleLocalService.getLatestArticle(getterUtil.getLong(webContentNumber)) /> 219 <#assign trailers=journalArticleLocalService.getArticleContent(article, 220 article.getDDMTemplateKey(), "VIEW" , locale, themeDisplay) /> 221 <div class="font-regular bg-black text-white rtl"> 222 ${trailers} 223 </div> 224 </#if> 225 </#if> 226 <#if seriesCntx.getDetailsContentId()?has_content> 227 <#assign detailsContentNumber=seriesCntx.getDetailsContentId()?number /> 228 <#if (detailsContentNumber?is_number) && (detailsContentNumber > 0)> 229 <#assign articleDetails=journalArticleLocalService.getLatestArticle(getterUtil.getLong(detailsContentNumber)) /> 230 <#assign details=journalArticleLocalService.getArticleContent(articleDetails, articleDetails.getDDMTemplateKey(), "VIEW" , locale, themeDisplay) /> 231 <div id='yesArticleDetails' class='bg-black text-white rtl'> 232 ${details} 233 </div> 234 </#if> 235 </#if> 236<#-- SERIES_DETAILS_DB END --> 237<#-- SERIES_CASTS_DB START --> 238 239<#assign castServiceDB=serviceLocator.findService("com.yes.template.services.CastLocalServiceDB") /> 240<#assign casts=castServiceDB.getCastBySeriesId(seriesId, request) /> 241<#if casts?has_content> 242<div class="font-regular bg-black text-white rtl"> 243 <section class="bg-black rtl text-white rtl"> 244 <h2 tabindex="0" aria-label="${CastTitle.getData()}" class="medium-title font-medium"> 245 ${CastTitle.getData()}</h2> 246 <div class="swiper-container round-carousel "> 247 <div class="swiper-wrapper"> 248 <div class="swiper-slide first-slide"></div> 249 <#list casts as curObjVast> 250 <div class="swiper-slide scale-on-hover"> 251 <a href="/content/actors/${curObjVast.getCastId()}/${curObjVast.getCastNameEN()} " 252 target="_blank" class="round-link-wrapper"> 253 <img class="round-carousel-img" src="${curObjVast.getImageSrc2X3()}" 254 alt="${curObjVast.getCastNameEN()}" 255 onError="this.onerror=null;this.src='/o/com.yes.alpha.theme/images/yes/Avatar_560x560.png'" /> 256 <div class="round-carousel-bottom text-white"> 257 <div class="round-carousel-text"> 258 <div class="round-carousel-actor-name font-medium"> 259 ${curObjVast.getCastName()} 260 </div> 261 <div class="round-carousel-actor-role"> 262 <#switch curObjVast.getCastType()> 263 <#case "D"> 264 ${D.getData()} 265 <#break> 266 <#case "S"> 267 ${S.getData()} 268 <#break> 269 <#case "W"> 270 ${W.getData()} 271 <#break> 272 <#default> 273 ${curObjVast.getCastType()} 274 </#switch> 275 </div> 276 </div> 277 </div> 278 </a> 279 </div> 280 </#list> 281 <div class="swiper-slide last-slide scale-on-hover"></div> 282 </div> 283 </div> 284 </section> 285</div> 286</#if> 287<script> 288 289 var recordData = ""; 290 291 var swiper = new Swiper({ 292 el: ".round-carousel", 293 initialSlide: 0, 294 slidesPerView: "auto", 295 updateOnWindowResize: false, 296 autoHeight: true, 297 setWrapperSize: true, 298 slideToClickedSlide: true, 299 grabCursor: true, 300 iOSEdgeSwipeDetection: true, 301 keyboard: { 302 enabled: true, 303 }, 304 breakpoints: { 305 // when window width is >= 320px 306 320: { 307 slidesPerView: "auto", 308 spaceBetween: 10, 309 freeMode: true, 310 }, 311 // when window width is >= 640px 312 640: { 313 slidesPerView: "auto", 314 spaceBetween: 20, 315 longSwipesRatio: 0.2, 316 freeMode: true, 317 }, 318 1440: { 319 slidesPerView: "auto", 320 spaceBetween: 30, 321 longSwipesRatio: 0.2, 322 freeMode: true, 323 }, 324 }, 325 }); 326</script> 327<#-- SERIES_CASTS_DB END --> 328<#-- SEASONS_SUMMERY_DB START --> 329<#assign seasons=seriesCntx.getSeasons() /> 330<section id='yesEpisodes' class="summery font-regular bg-black text-white rtl"> 331 <#if seasons?has_content> 332 <h2 class="medium-title font-medium mb-0" aria-label="${EpisodeTitle.getData()}"> 333 ${EpisodeTitle.getData()} 334 </h2> 335 336 <div class=custom-select-wrapper> 337 <div class="custom-select-1-container"> 338 <div class="custom-select-1"> 339 <div class="custom-select-1__trigger"> 340 <span>בחר עונה</span> 341 <div class="arrow"></div> 342 </div> 343 <div class="custom-options"> 344 <#list seasons as season> 345 <span class="custom-option" onclick="showEpisode(this)" 346 data-value="${season.getSeasonId()},${groupId}">${season.getSeasonName()}</span> 347 </#list> 348 </div> 349 </div> 350 </div> 351 </div> 352 <div class="swiper-container summary-carousel bg-black rtl swiper-container-initialized swiper-container-horizontal swiper-container-free-mode swiper-container-autoheight swiper-container-rtl"> 353 <div class="swiper-button-prev swiper-button-disabled"></div> 354 <div class="swiper-button-next"></div> 355 <div class="swiper-wrapper" id="swiperSlideEpisode"> 356 </div> 357 </div> 358 </div> 359 </#if> 360 <script> 361 try 362 { 363 setTimeout(YESUI.App.CheckSST, 0); 364 YESUI.App.InitFunction(['initEpisode','playTrailerLoad']); 365 document.querySelector(".custom-select-wrapper").addEventListener("click", function () { 366 this.querySelector(".custom-select-1").classList.toggle("open"); 367 }); 368 369 try{ 370 document.querySelector(".seriesRecordModal").addEventListener("click", function () 371 { 372 OpenRecordModal(); 373 }); 374 } 375 catch (e) 376 { 377 console.log("Error at addEventListener -> OpenRecordModal",e); 378 } 379 380 381 } 382 catch (e) { console.log("Error at initEpisode " + e) } 383 384 function showEpisode(elm){ 385 try{ 386 if (!elm.classList.contains('selected')) { 387 if (elm.parentNode.querySelector('.custom-option.selected') != null) { 388 elm.parentNode.querySelector('.custom-option.selected').classList.remove('selected'); 389 } 390 elm.classList.add('selected'); 391 elm.closest('.custom-select-1').querySelector('.custom-select-1__trigger span').textContent = elm.textContent; 392 getEpisodesBySeasonId(elm.dataset.value); 393 } 394 } 395 catch (e){ console.log("error at showEpisode"+ e);} 396 } 397 398 function initEpisode() { 399 try 400 { 401 402 if (!jQuery.isEmptyObject(document.querySelectorAll(".custom-option"))) 403 { 404 var ind = document.querySelectorAll(".custom-option").length - 1; 405 document.querySelectorAll(".custom-option")[ind].click(); // last season 406 //document.querySelectorAll(".custom-option")[0].click(); // first season 407 document.querySelector(".custom-select-1").classList.toggle("open"); // close select 408 jQuery(".custom-select-1").removeClass('open'); 409 } 410 } 411 catch (e){ console.log("error at initEpisode"+ e);} 412 } 413 window.onload = function () { 414 try { 415 YESUI.App.InitFunction(['initEpisode','playTrailerLoad']); 416 } 417 catch (e) { console.log("Error at onload " + e) } 418 } 419 function doSwiper() { 420 var swiper = new Swiper({ 421 el: ".summary-carousel", 422 initialSlide: 0, 423 slidesPerView: "auto", 424 updateOnWindowResize: false, 425 autoHeight: true, 426 freeMode: true, 427 setWrapperSize: true, 428 slideToClickedSlide: true, 429 grabCursor: true, 430 iOSEdgeSwipeDetection: true, 431 keyboard: { 432 enabled: true, 433 }, 434 navigation: { 435 nextEl: ".swiper-button-next", 436 prevEl: ".swiper-button-prev", 437 }, 438 breakpoints: { 439 // when window width is >= 320px 440 320: { 441 loopedSlides: 1.5, 442 spaceBetween: 10, 443 freeMode: true, 444 slidesPerView: "auto", 445 }, 446 // when window width is >= 640px 447 640: { 448 loopedSlides: 3, 449 spaceBetween: 10, 450 freeMode: true, 451 slidesPerView: "auto", 452 }, 453 1024: { 454 loopedSlides: 4, 455 spaceBetween: 30, 456 freeMode: true, 457 }, 458 1440: { 459 loopedSlides: 4, 460 spaceBetween: 40, 461 freeMode: true, 462 slidesPerView: "auto", 463 }, 464 }, 465 }); 466 } 467 468 function getEpisodesBySeasonId(objectId) { 469 var seasonid = objectId.split(',')[0]; 470 var groupid = objectId.split(',')[1]; 471 $.ajax({ 472 type: 'POST', 473 url: '/o/yes/servletepisodes/episodebyseasonid', 474 contentType: 'application/x-www-form-urlencoded', 475 dataType: 'text', 476 data: { "seasonid": seasonid, "groupid": groupid, p_auth: Liferay.authToken }, 477 success: function (msg) { 478 try { 479 $("#swiperSlideEpisode").html(DrawEpisodesBySeasonId(msg)); 480 doSwiper(); 481 } 482 catch (e) { 483 console.log('series catch ' + e); 484 } 485 }, 486 error: function (e) { 487 console.log("error: " + e); 488 } 489 }) 490 } 491 492 493 function DrawEpisodesBySeasonId(msg) { 494 var tempEpisodes = '<div class="swiper-slide first-slide"></div>'; 495 try { 496 var _json = JSON.parse(msg); 497 $.each(_json.list, function (i, item) { 498 tempEpisodes += '<div class="swiper-slide">'; 499 tempEpisodes += '<a class="summary-link-wrapper">'; 500 tempEpisodes += "<img class='summary-carousel-img' src='" + item.episodeImage2 + "' alt='" + item.episodeName + "' onerror=\"this.onerror=null;this.src='/o/com.yes.alpha.theme/images/yes/default16x9.jpg'\" />"; 501 tempEpisodes += '<div class="summary-carousel-bottom text_show">'; 502 tempEpisodes += '<div class="summary-carousel-text">'; 503 tempEpisodes += '<div class="summary-carousel-title">' + item.episodeName + '</div>'; 504 tempEpisodes += '<div class="summary-carousel-info">' + item.episodeSynopsis + '</div>'; 505 tempEpisodes += '</div>'; 506 tempEpisodes += '<div class="summary-carousel-icon"></div>'; 507 tempEpisodes += '</div></a></div>'; 508 }); 509 tempEpisodes += '<div class="swiper-slide last-slide"></div>'; 510 return tempEpisodes; 511 } 512 catch { 513 console.log('series catch'); 514 } 515 } 516 517 518 function OpenRecordModal(){ 519 $.ajax({ 520 type: 'POST', 521 url: '/o/yes/servletrecord/getrecorddetails', 522 contentType: 'application/x-www-form-urlencoded', 523 dataType: 'text', 524 data:{'scheduleItemId': seriesRecordData.scheduleItemId, 'p_auth': Liferay.authToken}, 525 success: function (responseData) { 526 try 527 { 528 529 recordData = JSON.parse(responseData); 530 531 if(jQuery.isEmptyObject(recordData.eventId) && jQuery.isEmptyObject(recordData.scheduleItemId)) 532 { 533 YESUI.App.GeneralErrorPopup("אי אפשר לבצע הקלטה, צריך טקסט ועיצוב של הודעה"); 534 } 535 else 536 { 537 recordData.startTime = seriesRecordData.startTime.replaceAll(':',''); 538 recordData.Name = seriesRecordData.seriesName; 539 recordData.brodcastItem = seriesRecordData.brodcastItem; 540 recordData.brodcastSeries = seriesRecordData.brodcastSeries; 541 recordData.recCode = ""; 542 YESUI.App.SetSST(seriesRecordData.isDefaultUser); 543 } 544 545 } 546 catch (e){console.log('json catch '+ e);} 547 }, 548 error: function (e) {console.log("error: " + e);} 549 }); 550 } 551 552 553 try { 554 function playTrailerLoad() { 555 556 $('.playTrailer').click(function () { 557 var youTubeId = $(this).data('youtubeid'); 558 $('#youtubeFrame').attr('src', 'https://www.youtube.com/embed/' + youTubeId); 559 $('#traileryoutube').modal('show'); 560 }); 561 } 562 } 563 catch (e) { console.log("Error at playTrailer " + e) } 564 function closeYoutube() 565 { 566 $('#youtubeFrame').attr('src', ''); 567 } 568 </script> 569<#-- stories --> 570 <#assign journalArticleLocalService=serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") /> 571 <#if seriesCntx.getArticleWebContentId()?has_content> 572 <#assign ArticleWebContent=seriesCntx.getArticleWebContentId()?number /> 573 <#if (ArticleWebContent?is_number) && (ArticleWebContent > 0)> 574 <#assign article=journalArticleLocalService.getLatestArticle(getterUtil.getLong(ArticleWebContent)) /> 575 <#assign stories=journalArticleLocalService.getArticleContent(article, article.getDDMTemplateKey(), "VIEW" , locale, themeDisplay) /> 576 <div id='yesStories' class="font-regular bg-black text-white rtl"> 577 ${stories} 578 </div> 579 </#if> 580 </#if> 581 582 583</section> 584<#-- SEASONS_SUMMERY_DB END -->
