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

מתוך ויקיתרופות
קפיצה אל: ניווט, חיפוש
Banner.jpg
שורה 72: שורה 72:
 
 
 
mw.loader.using(['jquery.ui.button', 'jquery.spinner'], function(){
 
mw.loader.using(['jquery.ui.button', 'jquery.spinner'], function(){
var default_size = '400px';
+
var default_size = 'auto';
 
var presentations = $('.pdfPresentationShow').map(function() {
 
var presentations = $('.pdfPresentationShow').map(function() {
 
var presentationParams = {  
 
var presentationParams = {  
שורה 80: שורה 80:
 
};
 
};
 
if (presentationParams.size.length<4 || isNaN(presentationParams.size.substr(0, presentationParams.size.length-2))) {
 
if (presentationParams.size.length<4 || isNaN(presentationParams.size.substr(0, presentationParams.size.length-2))) {
presentationParams['size'] = default_size;
+
presentationParams['size'] = Math.floor($(this).width()*0.9);
 
}
 
}
 
  return presentationParams;
 
  return presentationParams;

גרסה מתאריך 12:29, 1 בנובמבר 2014

$(function(){
	if ($('.pdfPresentationShow').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++;
					$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--;
					$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>&nbsp;</div>').button({ icons: { primary: "ui-icon-seek-prev" } }).click( getNext ),
				$prevButton = $('<div>&nbsp;</div>').button({ icons: { primary: "ui-icon-seek-next" } }).click( getPrev ),
				$spinner = $.createSpinner( {
					size: 'large',
					type: 'block'
				} );
			var $controllers = $('<div>');
			$prevButton.hide();

			$controllers.append( [$prevButton, $nextButton] );
			return $self.append( [ imgThumb, $controllers] );
		}
	  } );
	})(jQuery);
	
	mw.loader.using(['jquery.ui.button', 'jquery.spinner'], function(){
		var default_size = 'auto';
		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))) {
				presentationParams['size'] = Math.floor($(this).width()*0.9);
			}
		  return presentationParams;
		}).each(function( i, 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 })
			});
		});


	});
});