Open main menu
MediaWiki-Erweiterungen
OOjs UI icon advanced.svg
PDF Include
Erscheinungsstatus: stabil
Einbindung Tag
Beschreibung Bindet eine PDF-Datei ein
Autor(en) Chrisi200014, MarkAHershberger
Letzte Version 1.2
MediaWiki 1.22
Lizenz Keine Lizenz angegeben
Herunterladen im Artikel
width, height
pdf
Übersetze die PDF Include Erweiterung wenn sie auf translatewiki.net verfügbar ist
Prüfe die Benutzungs- und Versionsmatrix.

PDF Include ist eine Erweiterung für Media Wiki 1.16 und höher, mit welcher PDF-Dateien von jeder beliebigen Adresse eingebunden werden können.

InstallationEdit

Kopieren Sie den Code von unten und speicheren Sie ihn im Erweiterungsordner Ihres MediaWikis unter dem Dateinamen pdf_include.php. Anschließend fügen folgendende Zeile zur LocalSettings.php hinzu:

require_once("$IP/extensions/pdf_include.php");

BenutzungEdit

<pdf width="width" height="height">Path</pdf>
<pdf width="800px" height="1000px">http://www.example.com/example.pdf</pdf>

VariablenEdit

GrößeEdit

Wenn height und width nicht angegeben sind, wird die Standardgröße auf 800x800px gesetzt. Sie können dies durch setzen der Einstellungen in der LocalSettings.php ändern:

$wgPDF['width'] = 400;
$wgPDF['height'] = 400;

Domains blockierenEdit

Eine Domain kann durch das Hinzufügen zum Array $wgPDF['black'] blockiert werden:

$wgPDF['black'][] = ‘example.com';
$wgPDF['black'][] = ‘example.net';

RechteEdit

Um den PDF-Tag benutzen zu können, müssen die Benutzer in einer Gruppe mit den pdf-Rechten sein.

$wgGroupPermissions['*']['pdf'] = true;     // Erlaubt allen Benutzer die Verwendung des PDF-Tags.
$wgGroupPermissions['user']['pdf'] = true;  // Erlaubt allen angemeldeten Benutzern die Verwendung des PDF-Tags.
$wgGroupPermissions['sysop']['pdf'] = true; // Standard - Nur Benutzer in der sysop-Gruppe.

ChangelogEdit

0.5
Benutzerrechte-System wurde hinzugefügt
1.0
Domainblockierung hinzugefügt
1.1
Rewrite
1.2
  • Für aktuelles MediaWiki geupdated
  • Bessere Darstellung von Fehlern
  • Behebt den Fall, wo anonyme Benutzer bearbeiten können

CodeEdit

<?php
if (!defined ('MEDIAWIKI')) {
	echo 'This is a MediaWiki-Extension and not meant to be run standalone!';
	exit (1);
}
$wgGroupPermissions['sysop']['pdf'] = true; //To allow the Sysop group to use the pdf-tags
if( !isset($wgPDF['width']) ) {
	$wgPDF['width'] = 800;
}
if( !isset($wgPDF['height']) ) {
	$wgPDF['height'] = 800;
}
if( !isset($wgPDF['black']) ) {
	$wgPDF['black'] = array();
}

$wgExtensionCredits['parserhook'] [] = array (
	'name'             => 'PDF Include',
	'author'           => 'Chrisi200014, [http://hexmode.com Mark A. Hershberger]',
	'url'              => 'http://www.mediawiki.org/wiki/Extension:PDF_Include',
	'description'      => 'Includes PDF-Files',
	'version'          => '1.2',
	'path'             => __FILE__,
);

if(defined('MW_SUPPORTS_PARSERFIRSTCALLINIT')) {
	$wgHooks['ParserFirstCallInit'][] = 'pdfRegister';
} else {
	$wgExtensionFunctions[] = 'pdfRegister';
}

function pdfRegister() {
	global $wgParser;
	$wgParser->setHook( 'pdf', 'pdfInclude' );
	return true;
}

function pdfObject( $data, $width, $height ){
	return '<object width="'.$width.'" height="'.$height.'" data="'.htmlentities($data).'" type="application/pdf"></object>';
}

function pdfError( $msg ) {
	return "<span class='error'>PDF tag error: $msg</span>";
}

function pdfInclude( $obj, $argv, $parser ){
	global $wgPDF;
	$parser->disableCache();
	$width = ( isset( $argv['width'] ) ) ? $argv['width'] : $wgPDF['width'];
	$height = ( isset( $argv['height'] ) ) ? $argv['height'] : $wgPDF['height'];
	$user = User::newFromName ($parser->getRevisionUser());

	if( $user === false ) {
		$allowed = array_flip( User::getGroupPermissions( array( "*" ) ) );
		if( !isset( $allowed['pdf'] ) ) {
			return pdfError( "Rechte benötigt" );
		}
	} else {
		$user->load();
		if(!$user->isAllowed( 'pdf' )) {
			return pdfError( "Rechte benötigt" );
		}
	}
	if( !$obj ) {
		return pdfError( "Kein Pfad gegeben" );
	}

	if( !preg_match( '~^\d+~', $width ) ) {
		return pdfError( "Weite ist falsch" );
	} elseif ( !preg_match( '~^\d+~',$height ) ) {
		return pdfError( "Höhe ist falsch" );
	}

	if( preg_match( '~^[^\/]+\.pdf$~', $obj ) ){
		$image = Image::newFromName( $obj );
		if( $image !== NULL ) {
			return pdfObject( $image->getURL(), $width, $height );
		}
	}

	$domain = parse_url( $obj );
	if( $domain === false || ( !isset( $domain['host'] ) ) ) {
		return pdfError( "Falsche URL" );
	}
	foreach( $wgPDF['black'] as $x => $y ) {
		$wgPDF['black'][$x] = strtolower( $y );
	}

	if( in_array( strtolower( $domain['host'] ), $wgPDF['black'] ) ){
		return pdfError( "Domain ist blockiert" );
	}

	if( filter_var( $obj, FILTER_VALIDATE_URL, FILTER_FLAG_PATH_REQUIRED ) ) {
		return pdfObject( $obj, $width, $height );
	} else {
		return pdfError( "Pfad ist falsch" );
	}
}
English  • Deutsch