PageSourceSearch

https://edicola.lanuovaprovincia.it/asti/assets/js/areas/reader/multimedia.js?v=8

js lanuovaprovincia.it collected 2026-10-02 06:31:35 UTC 15,755 bytes, 495 lines download raw bytes

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 + '&timestamp=' + 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.