1VNP.Areas.Reader.module.Multimedia = new function () { 2 3 var self = this; 4 var $multimediaIcon = $(".vc_open_multimedia"); 5 var regions = new Regions(); 6 var regionsWithoutArticles = new Regions(); 7 var w_multimedia = 100; // in gallerym.jsp and video.jsp will be 100% 8 var h_multimedia = 600;// in gallerym.jsp and video will be 600px 9 10 /* 11 * get the multimedia and articles from webservice 12 * @param params {Object} : parameters to pass in the ajax call 13 */ 14 self.getMultimedia = function (params) { 15 return $.ajax({ 16 url: VNP.baseUrl + "/webservice/issues/getEnrichments.jsp", 17 data: params 18 }); 19 }; 20 21 self.loadMediaSwiper = function ( edition, callback, onlyMultimedia) { 22 var page = VNP.Areas.Reader.getActivePage(); 23 var params = { 24 edition: edition, 25 onlyMultimedia: onlyMultimedia, 26 html5: true, 27 all: 'checked' 28 }; 29 30 // get multimedia from webservice 31 var multimedia = self.getMultimedia(params); 32 33 // render multimedia 34 multimedia.done(function (data) { 35 36 if (Object.keys(data).length > 0) { 37 38 // set regions 39 regions.setRegions(data); 40 } 41 42 callback(data); 43 44 }) 45 .fail(function (x) { 46 // Tell the user something bad happened 47 console.error("multimedia.loadMediaSwiper() fail ", x); 48 }); 49 50 }; 51 52 /* 53 * load multimedia 54 * loadMultimediaElements 55 */ 56 self.loadMultimediaElements = function ( edition, callback, onlyMultimedia) { 57 var page = VNP.Areas.Reader.getActivePage(); 58 var params = { 59 edition: edition, 60 onlyMultimedia: onlyMultimedia, 61 html5: true, 62 all: 'checked' 63 }; 64 65 // get multimedia from webservice 66 var multimedia = self.getMultimedia(params); 67 68 // render multimedia 69 multimedia.done(function (data) { 70 71 if (Object.keys(data).length > 0) { 72 73 // set regions 74 regionsWithoutArticles.setRegions(data); 75 self.setMultimediaByPage(page); 76 77 } else { 78 $multimediaIcon.addClass("disabled"); 79 $multimediaIcon.find(".badge").empty(); 80 } 81 82 callback(); 83 84 }) 85 .fail(function (x) { 86 // Tell the user something bad happened 87 console.log("fail ", x); 88 }); 89 90 }; 91 92 /* get multimedia from issueArticles by page 93 * @param page {Integer} 94 * */ 95 self.getMultimediaByPage = function (page) { 96 return regionsWithoutArticles.getRegionsByPage(page); 97 }; 98 99 100 /* 101 * set the number of multimedia by page 102 * @param page {Integer} : active page 103 * 104 * */ 105 self.setMultimediaByPage = function (page) { 106 107 var $multimediaIcon = $(".vc_open_multimedia"); 108 //get regions 109 110 var reg = regionsWithoutArticles.getRegionsByPage(page); 111 var totRegions = reg.length; 112 // eg. when pages are double get the media from both 113 if (page > 1 && VNP.Areas.Reader.isDoublePage) { 114 totRegions = totRegions + regionsWithoutArticles.getRegionsByPage((page + 1)).length; 115 } 116 117 if (totRegions > 0) { 118 //fill in the badge icon with multimedia's length 119 $multimediaIcon.find(".badge").text(totRegions); 120 $multimediaIcon.show(); 121 $multimediaIcon.removeClass("disabled"); 122 } else { 123 // no multimedia for active page 124 $multimediaIcon.addClass("disabled"); 125 $multimediaIcon.find(".badge").empty(); 126 } 127 128 var $externalIcon = $(".vc_open_external_links"); 129 var reg = regionsWithoutArticles.getExternalRegionsByPage(page); 130 var totRegions = reg.length; 131 // eg. when pages are double get the media from both 132 if (page > 1 && VNP.Areas.Reader.isDoublePage) { 133 totRegions = totRegions + regionsWithoutArticles.getExternalRegionsByPage((page + 1)).length; 134 } 135 136 if (totRegions > 0) { 137 //fill in the badge icon with multimedia's length 138 $externalIcon.find(".badge").text(totRegions); 139 $externalIcon.show(); 140 $externalIcon.removeClass("disabled"); 141 } else { 142 // no multimedia for active page 143 $externalIcon.addClass("disabled"); 144 $externalIcon.find(".badge").empty(); 145 } 146 }; 147 148 self.renderExternalLinks = function (pageNum) { 149 150 var totalPages = VNP.Areas.Reader.getTotalPages(); 151 var regionObj = []; 152 153 154 // eg. when pages are double render multimedia for both pages 155 var totDoublePage = ( VNP.Areas.Reader.isDoublePage && pageNum > 1 && pageNum < totalPages ) ? 2 : 1; 156 var contMultimedia = "#vc_external_links"; 157 $(contMultimedia).empty(); 158 159 // loop for page on the left and pag on the right 160 for (var index = 0; index < totDoublePage; index++) { 161 162 regionObj = regionsWithoutArticles.getExternalRegionsByPage(pageNum + index); 163 164 165 for (var i = 0; i < regionObj.length; i++) { 166 var mediaClone = $('#vc_template_external_links .vc_media').clone(); 167 var multimedia = regionsWithoutArticles.getRegion(regionObj[i], (pageNum + index)); 168 $(mediaClone).attr('data-id', multimedia.id); 169 $(mediaClone).attr('id', regionObj[i]); 170 171 172 var highlight_text = $(mediaClone).find(".vc_highlight_text"); 173 var highlight_title = $(mediaClone).find(".vc_highlight_title"); 174 var pageNumber = $(mediaClone).find(".vc_page_number"); 175 var type = $(mediaClone).find(".vc_type"); 176 var thumb = $(mediaClone).find(".vc_img_thumb"); 177 178 $(pageNumber).html(pageNum + index); 179 $(highlight_title).html(multimedia.data.name); 180 $(highlight_text).html(multimedia.data.description); 181 $(type).attr('data-object', multimedia.object); 182 183 184 185 // if (multimedia.object != "externallink") { 186 // continue; 187 // } 188 189 190 $(contMultimedia).append($(mediaClone)); 191 // bind click on multimedia object 192 193 $(mediaClone).find(".vc_open_single_external_links").on("click", function (event) { 194 event.preventDefault(); 195 //get id from parent 196 var parents = $(this).parents()[2]; 197 // get again the region because multimedia is override in the loop 198 var attrRegion = $(parents).attr("id"); 199 var attrPage = $(parents).find(".vc_page_number").text(); 200 var media = regionsWithoutArticles.getRegion(attrRegion, attrPage); 201 self.openSingleMedia(media); 202 }); 203 } 204 } 205 206 }; 207 208 /* 209 * Render multimedia inside the modal 210 * @param pageNum {Number} : number of the page 211 * */ 212 self.renderMultimedia = function (pageNum) { 213 214 var totalPages = VNP.Areas.Reader.getTotalPages(); 215 var regionObj = []; 216 217 218 219 // eg. when pages are double render multimedia for both pages 220 var totDoublePage = ( VNP.Areas.Reader.isDoublePage && pageNum > 1 && pageNum < totalPages ) ? 2 : 1; 221 var contMultimedia = "#vc_multimedia"; 222 $(contMultimedia).empty(); 223 224 // loop for page on the left and pag on the right 225 for (var index = 0; index < totDoublePage; index++) { 226 227 regionObj = regionsWithoutArticles.getRegionsByPage(pageNum + index); 228 229 console.log("called", regionObj); 230 231 for (var i = 0; i < regionObj.length; i++) { 232 var mediaClone = $('#vc_template_multimedia .vc_media').clone(); 233 var multimedia = regionsWithoutArticles.getRegion(regionObj[i], (pageNum + index)); 234 $(mediaClone).attr('data-id', multimedia.id); 235 $(mediaClone).attr('id', regionObj[i]); 236 237 var highlight_text = $(mediaClone).find(".vc_highlight_text"); 238 var highlight_title = $(mediaClone).find(".vc_highlight_title"); 239 var pageNumber = $(mediaClone).find(".vc_page_number"); 240 var type = $(mediaClone).find(".vc_type"); 241 var thumb = $(mediaClone).find(".vc_img_thumb"); 242 243 $(pageNumber).html(pageNum + index); 244 $(highlight_title).html(multimedia.data.name); 245 $(highlight_text).html(multimedia.data.description); 246 $(type).attr('data-object', multimedia.object); 247 248 if (multimedia.object == "externallink") { 249 continue; 250 } 251 252 if (multimedia.object == "jumppage") { 253 var formatDate = VNP.formatDate; 254 var edition = moment(multimedia.data.issue).format(formatDate); 255 var jumpPage = multimedia.data.page; 256 var $label = "<span class='vc_label_jumppage'>" + VNP.getLanguagesKey["reader.jumpPage.goto"] + "</span>"; 257 var $page = "<span class='vc_label_jumppage_edition'>" + VNP.getLanguagesKey["page"] + " " + multimedia.data.page + "</span>"; 258 var $edition = ""; 259 260 // print edition only if it is different from the opened one 261 if( moment(multimedia.data.issue).format("YYYYMMDD") !== VNP.editionDate ){ 262 $edition = "<span class='vc_label_jumppage_page'>" + VNP.getLanguagesKey["edition"] + " " + moment(multimedia.data.issue).format(formatDate) + "</span>"; 263 } 264 265 $(highlight_title).html($label + " " + $edition + " " + $page); 266 } 267 268 269 if (multimedia.object == "video" || multimedia.object == "foto") { 270 $(thumb).removeAttr("data-src"); 271 $(thumb).attr('src', VNP.baseUrl + '/webservice/multimediaPreview.jsp?id='
271+ multimedia.id + '×tamp=' + new Date().getTime()); 272 } 273 $(contMultimedia).append($(mediaClone)); 274 275 // bind click on multimedia object 276 $(mediaClone).find(".vc_open_single_multimedia").on("click", function (event) { 277 event.preventDefault(); 278 //get id from parent 279 var parents = $(this).parents()[2]; 280 // get again the region because multimedia is override in the loop 281 var attrRegion = $(parents).attr("id"); 282 var attrPage = $(parents).find(".vc_page_number").text(); 283 var media = regionsWithoutArticles.getRegion(attrRegion, attrPage); 284 self.openSingleMedia(media); 285 }); 286 } 287 } 288 289 }; 290 291 292 self.renderGallery = function(selectorTop, selectorThumbs, slides) { 293 294 if (typeof selectorTop === "undefined" && selectorTop.trim() === ""){ 295 selectorTop = ".gallery-top"; 296 } 297 298 if( typeof selectorThumbs === "undefined" && selectorThumbs.trim() ){ 299 selectorThumbs = ".gallery-thumb"; 300 } 301 302 var slidesArray = []; 303 304 if(slides.length > 0){ 305 306 slides.forEach(function(slide){ 307 308 var desc = ""; 309 if((slide.description).trim() !== ""){ 310 desc="<p class='description'>" + 311 "<i class='open'>i</i>" + 312 "<span class='text'>" + slide.description + "</span>" + 313 "<i class='close'>x</i>" + 314 "</p>"; 315 } 316 317 slidesArray.push("<div class='swiper-slide'><img src='" + slide.image + "'>" + desc + "</div>"); 318 }); 319 320 $(document).on("click",".swiper-slide .open",function(){ 321 $(this).hide(); 322 $(this).parent().find(".text").show(); 323 $(this).parent().find(".close").show(); 324 }); 325 326 $(document).on("click",".swiper-slide .close",function(){ 327 $(this).hide(); 328 $(this).parent().find(".text").hide(); 329 $(this).parent().find(".open").show(); 330 }); 331 332 $(selectorThumbs).find(".swiper-wrapper").append(slidesArray); 333 $(selectorTop).find(".swiper-wrapper").append(slidesArray); 334 335 var sliderOptionsThumbs = $(selectorThumbs).data(); 336 var galleryThumbs = new Swiper(selectorThumbs, sliderOptionsThumbs); 337 338 var sliderOptionsTop = $(selectorTop).data(); 339 var galleryTop = new Swiper(selectorTop, sliderOptionsTop); 340 341 galleryTop.controller.control = galleryThumbs; 342 galleryThumbs.controller.control = galleryTop; 343 344 } 345 346 }; 347 348 /* 349 * open the single multimedia object by id 350 */ 351 self.openSingleMedia = function (media) { 352 // NEWS 353 if (media.object == "news") { 354 355 eModal.iframe({ 356 url: VNP.baseUrl + '/news.jsp?id=' + media.id, 357 title: media.data.name, 358 classname: (VNP.getDisableContextMenu() ) ? "hidden-print select-text" : "vc_news_iframe", 359 size: 'lg' 360 }); 361 push_stats(stats.category.title, stats.event.open_multimedia + '-' + EDITION_LABEL, media.data.name + '-' + hasAccess_label); 362 363 } else 364 365 // PHOTO 366 if (media.object == "foto") { 367 368 eModal.iframe({ 369 url: VNP.baseUrl + '/gallerym.jsp?responsive&w=' + w_multimedia + '&h=' + h_multimedia + '&id=' + media.id, 370 size: 'lg', 371 title: media.data.name 372 }); 373 push_stats(stats.category.title, stats.event.open_multimedia + '-' + EDITION_LABEL, media.data.name + '-' + hasAccess_label); 374 } else 375 376 // VIDEO 377 if (media.object == "video") { 378 379 var url; 380 381 if (media.data.embed) { 382 383 url = '/video.jsp?responsive&w=' + w_multimedia + '&h=' + h_multimedia + '&id=' + media.id; 384 385 } else if (media.data.url) { 386 387 url = '/video.jsp?responsive&w=' + w_multimedia + '&h=' + h_multimedia + '&video=' + media.data.url; 388 389 } else if (media.data.file) { 390 391 url = '/video.jsp?responsive&w=' + w_multimedia + '&h=' + h_multimedia + '&video=' + media.data.file; 392 393 } 394 395 eModal.iframe({ 396 url: VNP.baseUrl + url, 397 size: 'lg', 398 title: media.data.name 399 }); 400 401 push_stats(stats.category.title, stats.event.open_multimedia + '-' + EDITION_LABEL, media.data.name + '-' + hasAccess_label); 402 } else 403 404 if (media.object == 'link') { 405 406 if(media.target == "overlay"){ 407 408 eModal.iframe({ 409 url: media.data.link, 410 size: 'lg', 411 title: media.data.name 412 }); 413 414 }else{ 415 416 window.open(media.data.link); 417 418 } 419 420 push_stats(stats.category.title, stats.event.open_multimedia + '-' + EDITION_LABEL, media.data.name + '-' + hasAccess_label); 421 } else 422 423 // FILE 424 if (media.object == 'file') { 425 window.open(VNP.baseUrl + "/uploadmultimedia/" + media.data.file); 426 push_stats(stats.category.title, stats.event.open_multimedia + '-' + EDITION_LABEL, media.data.name + '-' + hasAccess_label); 427 } else 428 429 // JUMPPAGE 430 if (media.object == 'jumppage') { 431 var url = VNP.baseUrl + "/pageflip/swipe/" + media.data.section + "/" + media.data.titleEdition + "#/" + media.data.page + "/"; 432 window.open(url); 433 push_stats(stats.category.title, stats.event.open_multimedia + '-' + EDITION_LABEL, media.data.name + '-' + hasAccess_label); 434 } else 435 436 // ARTICLE open article from cms 437 if (media.object == 'article') { 438 media.title = media.data.name; 439 VNP.Areas.Reader.module.Articles.openArticleFromCms(media); 440 } 441 442 // TEXTUAL ARTICLE 443 if (media.object == 'textual-article') { 444 media.title = media.data.name; 445 VNP.Areas.Reader.module.Articles.openArticle(media); 446 } 447 448 // External LINK 449 if(media.object === 'externallink'){ 450 window.open(media.data.link, '_self'); 451 } 452 453 }; 454 455 /* 456 * @param region {Object} 457 * 458 */ 459 var getMultimediaObject = function (region) { 460 var multimediaObject; 461 switch (region.object) { 462 case "photo": 463 multimediaObject = "photos"; 464 break; 465 case "foto": 466 multimediaObject = "photos"; 467 break; 468 case "video": 469 multimediaObject = region.data["embed"] || region.data["url"] || region.data["file"]; 470 break; 471 case "link": 472 multimediaObject = region.data["link"]; 473 break; 474 case "file": 475 multimediaObject = VNP.baseUrl + "/uploadmultimedia/" + region.data["file"]; 476 break; 477 case "news": 478 multimediaObject = region.data["news"]; 479 break; 480 case "article": 481 multimediaObject = region.data["url"]; 482 break; 483 case "fullpage": 484 multimediaObject = region.data["fullpage"]; 485 break; 486 case "jumppage": 487 var issue = region.data["titleEdition"]; 488 var page = region.data["page"]; 489 multimediaObject = VNP.baseUrl + "/books/" + issue + "/#" + page; 490 break; 491 } 492 return multimediaObject; 493 }; 494 495};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.