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

מתוך ויקיתרופות
קפיצה אל: ניווט, חיפוש
Banner.jpg
(יצירת דף עם התוכן "$(function(){ if ($('.pdfPresentationShow').length == 0) return; // create PdfPresentation handler (function($){ $.fn.extend( { PdfPresentation: functio...")
 
שורה 14: שורה 14:
 
}
 
}
 
function getNext() {
 
function getNext() {
imgThumb.before( $spinner );
+
$self.prepend( $spinner );
console.log('page'+(currentPage+1)+'-'+size);
+
 
var api = new mw.Api();
 
var api = new mw.Api();
 
api.get({
 
api.get({
שורה 34: שורה 33:
  
 
function getPrev() {
 
function getPrev() {
imgThumb.before( $spinner );
+
$self.prepend( $spinner );
 
var api = new mw.Api();
 
var api = new mw.Api();
 
api.get({
 
api.get({
שורה 51: שורה 50:
 
});
 
});
 
}
 
}
 +
 +
var $self = $(this);
 
var size = prop.size;
 
var size = prop.size;
 
var currentPage = 1;
 
var currentPage = 1;
שורה 62: שורה 63:
 
 
 
$prevButton.hide();
 
$prevButton.hide();
return $( this ).append( [$prevButton, imgThumb, $nextButton] );
+
return $self.append( [$prevButton, imgThumb, $nextButton] );
 
}
 
}
 
  } );
 
  } );
 
})(jQuery);
 
})(jQuery);
 
 
 
 
mw.loader.using(['jquery.ui.button', 'jquery.spinner'], function(){
 
mw.loader.using(['jquery.ui.button', 'jquery.spinner'], function(){
var size = '200px';
+
var default_size = '400px';
var imgFile = $('.pdfPresentationShow a:first').prop( 'title' );
+
var presentations = $('.pdfPresentationShow').map(function() {
var api = new mw.Api();
+
var presentationParams = {
api.get({
+
'pdf': $(this).find('a:first').prop('title'),
action: 'query',
+
'size': $(this).find('.pdfPresentationSize').text(),
titles: imgFile,
+
'ele': $(this)
prop: 'imageinfo',
+
};
iiprop: 'metadata|url',
+
if (presentationParams.size.length<4 || isNaN(presentationParams.size.substr(0, presentationParams.size.length-2))) {
iiurlwidth: size
+
presentationParams['size'] = default_size;
}).done(function( data ){
+
}
var pages = data && data.query && data.query.pages;
+
  return presentationParams;
if (!pages) return;
+
}).each(function( i, presentationParams ){
var imgPage;
+
var api = new mw.Api();
for ( var p in pages ) imgPage = pages[p];
+
api.get({
var thumbURL = imgPage.imageinfo[0].thumburl;
+
action: 'query',
var metadata = imgPage.imageinfo[0].metadata;
+
titles: presentationParams.pdf,
//extract number of pages
+
prop: 'imageinfo',
var pages = 1;
+
iiprop: 'metadata|url',
var size = 0;
+
iiurlwidth: presentationParams.size
for(var metadata_i=0; metadata_i<metadata.length;metadata_i++) {
+
}).done(function( data ){
if ( metadata[metadata_i].name === 'Pages' ) {
+
var pages = data && data.query && data.query.pages;
pages = metadata[metadata_i].value;
+
if (!pages || pages.hasOwnProperty('-1')) return;
}
+
var imgPage;
else if ( metadata[metadata_i].name === 'pages' ){
+
for ( var p in pages ) imgPage = pages[p];
var firstPage = metadata[metadata_i].value[0].value[0];
+
var thumbURL = imgPage.imageinfo[0].thumburl;
if ( firstPage.name == 'Page size' && !size ) {
+
var metadata = imgPage.imageinfo[0].metadata;
size = /([0-9]+)[^0-9]/.exec(firstPage.value)[1]+'px';
+
//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;
var $multipageimage = $('.pdfPresentationShow');
+
$multipageimage.css('text-align', 'center').children().remove();
$multipageimage.PdfPresentation({pages: pages, thumbURL: thumbURL, size: size, imgFile: imgFile })
+
$multipageimage.PdfPresentation({ pages: pages, thumbURL: thumbURL, size: presentationParams.size, imgFile: presentationParams.pdf })
 +
});
 
});
 
});
 +
 +
 
});
 
});
 
});
 
});

גרסה מתאריך 22:02, 27 באוקטובר 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() {
				$self.prepend( $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() {
				$self.prepend( $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+'">');
			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'
				} );
		
			$prevButton.hide();
			return $self.append( [$prevButton, imgThumb, $nextButton] );
		}
	  } );
	})(jQuery);
	
	mw.loader.using(['jquery.ui.button', 'jquery.spinner'], function(){
		var default_size = '400px';
		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'] = default_size;
			}
		  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').children().remove();
				$multipageimage.PdfPresentation({ pages: pages, thumbURL: thumbURL, size: presentationParams.size, imgFile: presentationParams.pdf })
			});
		});


	});
});