Extension:PDF Include/de
This extension stores its source code on a wiki page. Please be aware that this code may be unreviewed or maliciously altered. They may contain security holes, outdated interfaces that are no longer compatible etc. Note: No localisation updates are provided for this extension by translatewiki.net . |
PDF Include Freigabestatus: 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 |
|
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" );
}
}