מדיה ויקי:PdfPresentation.js: הבדלים בין גרסאות
מתוך ויקיתרופות

ערן רוזנטל (שיחה | תרומות) (back to ver1) |
ערן רוזנטל (שיחה | תרומות) (galleries) |
||
שורה 1: | שורה 1: | ||
$(function(){ | $(function(){ | ||
− | if ($('.pdfPresentationShow').length == 0) return; | + | if ($('.pdfPresentationShow, .presentationGallery').length == 0) return; |
// create PdfPresentation handler | // create PdfPresentation handler | ||
שורה 74: | שורה 74: | ||
})(jQuery); | })(jQuery); | ||
+ | function loadPresentation( presentationParams ) { | ||
+ | var api = new mw.Api(); | ||
+ | api.get({ | ||
+ | action: 'query', | ||
+ | titles: presentationParams.pdf, | ||
+ | prop: 'imageinfo', | ||
+ | iiprop: 'metadata|url', | ||
+ | iiurlwidth: presentationParams.size | ||
+ | }).done(function( data ){ | ||
+ | var pages = data && data.query && data.query.pages; | ||
+ | if (!pages || pages.hasOwnProperty('-1')) return; | ||
+ | var imgPage; | ||
+ | for ( var p in pages ) imgPage = pages[p]; | ||
+ | var thumbURL = imgPage.imageinfo[0].thumburl; | ||
+ | var metadata = imgPage.imageinfo[0].metadata; | ||
+ | //extract number of pages | ||
+ | var pages = 1; | ||
+ | var size = 0; | ||
+ | for(var metadata_i=0; metadata_i<metadata.length;metadata_i++) { | ||
+ | if ( metadata[metadata_i].name === 'Pages' ) { | ||
+ | pages = metadata[metadata_i].value; | ||
+ | } | ||
+ | else if ( metadata[metadata_i].name === 'pages' ){ | ||
+ | var firstPage = metadata[metadata_i].value[0].value[0]; | ||
+ | if ( firstPage.name == 'Page size' && !size ) { | ||
+ | size = /([0-9]+)[^0-9]/.exec(firstPage.value)[1]+'px'; | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | |||
+ | var $multipageimage = presentationParams.ele; | ||
+ | $multipageimage.css({'text-align': 'center', 'display': 'block' }).children().remove(); | ||
+ | $multipageimage.PdfPresentation({ pages: pages, thumbURL: thumbURL, size: presentationParams.size, imgFile: presentationParams.pdf }) | ||
+ | }); | ||
+ | } | ||
+ | |||
mw.loader.using(['jquery.ui.button', 'jquery.spinner'], function(){ | mw.loader.using(['jquery.ui.button', 'jquery.spinner'], function(){ | ||
− | + | //load individual presntations | |
var presentations = $('.pdfPresentationShow').map(function() { | var presentations = $('.pdfPresentationShow').map(function() { | ||
var presentationParams = { | var presentationParams = { | ||
שורה 90: | שורה 126: | ||
return presentationParams; | return presentationParams; | ||
}).each(function( i, presentationParams ){ | }).each(function( i, presentationParams ){ | ||
− | + | loadPresentation(presentationParams); | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
}); | }); | ||
+ | //load galleries | ||
+ | $('.presentationGallery').each(function(){ | ||
+ | var presentationSize = $(this).find('.pdfPresentationSize').text(); | ||
+ | var ele = $(this).find('.presentationContainer'); | ||
+ | $(this).find('a.image').click(function(e){ | ||
+ | e.preventDefault(); | ||
+ | var href= $(this).prop('href'); | ||
+ | var fileNS = mw.util.wikiUrlencode('קובץ'); | ||
+ | var pdfLink = 'File:'+href.substr(href.indexOf(fileNS)+fileNS.length+1); | ||
+ | var presentationParams = { | ||
+ | 'pdf': pdfLink, | ||
+ | 'size': presentationSize, | ||
+ | 'ele': ele | ||
+ | }; | ||
+ | loadPresentation(presentationParams); | ||
+ | }); | ||
+ | }); | ||
}); | }); | ||
+ | |||
}); | }); |
גרסה מתאריך 11:29, 8 בנובמבר 2014
$(function(){ if ($('.pdfPresentationShow, .presentationGallery').length == 0) return; // create PdfPresentation handler (function($){ $.fn.extend( { PdfPresentation: function( prop ) { function extractURL(data) { var pages = data && data.query && data.query.pages; if (!pages) return; var imgPage; for ( var p in pages ) imgPage = pages[p]; return imgPage.imageinfo[0].thumburl; } function getNext() { if(currentPage>=prop.pages) return; $controllers.append( $spinner ); var api = new mw.Api(); api.get({ action: 'query', titles: prop.imgFile, prop: 'imageinfo', iiprop: 'url', iiurlwidth: size, iiurlparam: 'page'+(currentPage+1)+'-'+size }).done(function( data ){ $spinner.remove(); imgThumb.prop('src', extractURL(data)); currentPage++; $pageSelector.text(currentPage+'/'+prop.pages); $prevButton.css('display', (currentPage == 1)? 'hide' : 'inline-block'); $nextButton.css('display', (currentPage == prop.pages)? 'hide' : 'inline-block'); }); } function getPrev() { $controllers.append( $spinner ); var api = new mw.Api(); api.get({ action: 'query', titles: prop.imgFile, prop: 'imageinfo', iiprop: 'url', iiurlwidth: size, iiurlparam: 'page'+(currentPage+1)+'-'+size }).done(function( data ){ $spinner.remove(); imgThumb.prop('src', extractURL(data)); currentPage--; $pageSelector.text(currentPage+'/'+prop.pages); $prevButton.css('display', (currentPage == 1)? 'hide' : 'inline-block'); $nextButton.css('display', (currentPage == prop.pages)? 'hide' : 'inline-block'); }); } var $self = $(this); var size = prop.size; var currentPage = 1; var imgThumb = $('<img src="'+prop.thumbURL+'">').click( getNext ); var $nextButton = $('<div> </div>').button({ icons: { primary: "ui-icon-seek-prev" } }).click( getNext ), $prevButton = $('<div> </div>').button({ icons: { primary: "ui-icon-seek-next" } }).click( getPrev ), $spinner = $.createSpinner( { size: 'large', type: 'block' } ); var $controllers = $('<div>'); var $pageSelector = $('<span>').css('padding', '2px 10px 2px 5px').text('1/'+prop.pages); $prevButton.hide(); $controllers.append( [$prevButton, $pageSelector, $nextButton] ); return $self.append( [ imgThumb, $controllers] ); } } ); })(jQuery); function loadPresentation( presentationParams ) { var api = new mw.Api(); api.get({ action: 'query', titles: presentationParams.pdf, prop: 'imageinfo', iiprop: 'metadata|url', iiurlwidth: presentationParams.size }).done(function( data ){ var pages = data && data.query && data.query.pages; if (!pages || pages.hasOwnProperty('-1')) return; var imgPage; for ( var p in pages ) imgPage = pages[p]; var thumbURL = imgPage.imageinfo[0].thumburl; var metadata = imgPage.imageinfo[0].metadata; //extract number of pages var pages = 1; var size = 0; for(var metadata_i=0; metadata_i<metadata.length;metadata_i++) { if ( metadata[metadata_i].name === 'Pages' ) { pages = metadata[metadata_i].value; } else if ( metadata[metadata_i].name === 'pages' ){ var firstPage = metadata[metadata_i].value[0].value[0]; if ( firstPage.name == 'Page size' && !size ) { size = /([0-9]+)[^0-9]/.exec(firstPage.value)[1]+'px'; } } } var $multipageimage = presentationParams.ele; $multipageimage.css({'text-align': 'center', 'display': 'block' }).children().remove(); $multipageimage.PdfPresentation({ pages: pages, thumbURL: thumbURL, size: presentationParams.size, imgFile: presentationParams.pdf }) }); } mw.loader.using(['jquery.ui.button', 'jquery.spinner'], function(){ //load individual presntations var presentations = $('.pdfPresentationShow').map(function() { var presentationParams = { 'pdf': $(this).find('a:first').prop('title'), 'size': $(this).find('.pdfPresentationSize').text(), 'ele': $(this) }; if (presentationParams.size.length<4 || isNaN(presentationParams.size.substr(0, presentationParams.size.length-2))) { var prevDisplay = $('h1:first').css('display'); $(this).css({ position: "absolute", visibility: "hidden", display: "block" }); presentationParams['size'] = Math.floor($(this).parent().width()*0.9)+'px'; $(this).css({ position: "", visibility: "", display: prevDisplay }); } return presentationParams; }).each(function( i, presentationParams ){ loadPresentation(presentationParams); }); //load galleries $('.presentationGallery').each(function(){ var presentationSize = $(this).find('.pdfPresentationSize').text(); var ele = $(this).find('.presentationContainer'); $(this).find('a.image').click(function(e){ e.preventDefault(); var href= $(this).prop('href'); var fileNS = mw.util.wikiUrlencode('קובץ'); var pdfLink = 'File:'+href.substr(href.indexOf(fileNS)+fileNS.length+1); var presentationParams = { 'pdf': pdfLink, 'size': presentationSize, 'ele': ele }; loadPresentation(presentationParams); }); }); }); });