Benutzer:Andreas Plank/Wiki-Programmierung: Unterschied zwischen den Versionen

Aus Open Source Ecology - Germany
Zur Navigation springen Zur Suche springen
(→‎Bilder SVG: +Abschnitt)
 
(4 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 8: Zeile 8:
 
* herkömmliche Funktions-Bausteine https://www.mediawiki.org/wiki/ResourceLoader/Core_modules
 
* herkömmliche Funktions-Bausteine https://www.mediawiki.org/wiki/ResourceLoader/Core_modules
 
* Reguläre Ausdrücke testen https://regex101.com
 
* Reguläre Ausdrücke testen https://regex101.com
 +
 +
== CORS (cross-origin resource sharing) ==
 +
 +
(1) a: Auf Server-Wiki-Ebene von Apache, daß die Erlaubnis des Ursprungs (=origin) gegeben wird:
 +
 +
<syntaxhighlight lang="apache">
 +
<IfModule mod_headers.c>
 +
  # define external resources that are allowed to read resources from wiki.opensourceecology.de
 +
  SetEnvIf Origin "https://(3dviewer\.net)$" ORIGIN=$0
 +
  Header set Access-Control-Allow-Origin %{ORIGIN}e env=ORIGIN
 +
  Header set Access-Control-Allow-Credentials "true" env=ORIGIN
 +
  Header merge Vary Origin
 +
</IfModule>
 +
</syntaxhighlight>
 +
 +
(1) b: Auf Ebene des Wikis in den <code>LocalSettings.php</code> selbst:
 +
<syntaxhighlight lang="php">
 +
$wgCrossSiteAJAXdomains = [
 +
    '3dviewer.net'
 +
];
 +
</syntaxhighlight>
 +
 +
(2) auf dem Fremdserver 3dviewer.net muß wahrscheinlich folgendes frei eingestellt sein:
 +
<syntaxhighlight lang="apache">
 +
<IfModule mod_headers.c>
 +
  Header set Access-Control-Allow-Origin "*"
 +
</IfModule>
 +
</syntaxhighlight>
 +
 +
… oder genauer genommen und sicherer müßte auf 3dviewer.net der genaue Ursprung (=origin) erlaubt werden, mit dem Daten vermittelt werden dürfen:
 +
<syntaxhighlight lang="apache">
 +
<IfModule mod_headers.c>
 +
  # define external origins that are allowed to read from 3dviewer.net as a resource
 +
  SetEnvIf Origin "https://(wiki\.opensourceecology\.de)$" ORIGIN=$0
 +
  Header set Access-Control-Allow-Origin %{ORIGIN}e env=ORIGIN
 +
  Header set Access-Control-Allow-Credentials "true" env=ORIGIN
 +
  Header merge Vary Origin
 +
</IfModule>
 +
</syntaxhighlight>
 +
 +
Siehe auch
 +
* https://enable-cors.org/server_apache.html
 +
* https://www.html5rocks.com/static/images/cors_server_flowchart.png
 +
 +
== Bilder SVG ==
 +
 +
Echte Lösung, SVG wie es ist, darstellen lassen:
 +
<syntaxhighlight lang="bash">
 +
# Erweiterung einstellen jenachdem, welche MediaWiki Abfassung (REL1_…)
 +
cd extensions/
 +
git clone --branch REL1_39 --depth=1 https://gerrit.wikimedia.org/r/mediawiki/extensions/NativeSvgHandler
 +
</syntaxhighlight>
 +
 +
Dann in <code>LocalSettings.php</code>:
 +
wfLoadExtension( 'NativeSvgHandler' );
 +
 +
Notbehelf in <code>LocalSettings.php</code> die Bilddichte (density) hochsetzen, allerdings kann dies an Vorgaben-Begrenzungen stoßen, und ein SVG in angeforderter Rießengröße (weil es ja in ein Rasterbild umgewandelt wird) kann dann vielleicht nicht dargestellt werden, und führt zu kaputten Bilddarstellungen:
 +
* <code>$wgSVGConverters['ImageMagick'] = '"' . $wgImageMagickConvertCommand . '" -density 300 -thumbnail $widthx$height^! $input PNG:$output';</code>
 +
* <code>-density 300</code> ist vielleicht eine gutes Mittelmaß, <code>-density 600</code> führte schnell an die Grenzen der Bilder-Voreinstellungen

Aktuelle Version vom 6. Juni 2024, 13:22 Uhr

Einstellungen

JavaScript

CORS (cross-origin resource sharing)

(1) a: Auf Server-Wiki-Ebene von Apache, daß die Erlaubnis des Ursprungs (=origin) gegeben wird:

<IfModule mod_headers.c>
  # define external resources that are allowed to read resources from wiki.opensourceecology.de
  SetEnvIf Origin "https://(3dviewer\.net)$" ORIGIN=$0
  Header set Access-Control-Allow-Origin %{ORIGIN}e env=ORIGIN
  Header set Access-Control-Allow-Credentials "true" env=ORIGIN
  Header merge Vary Origin
</IfModule>

(1) b: Auf Ebene des Wikis in den LocalSettings.php selbst:

$wgCrossSiteAJAXdomains = [
    '3dviewer.net'
];

(2) auf dem Fremdserver 3dviewer.net muß wahrscheinlich folgendes frei eingestellt sein:

<IfModule mod_headers.c>
  Header set Access-Control-Allow-Origin "*"
</IfModule>

… oder genauer genommen und sicherer müßte auf 3dviewer.net der genaue Ursprung (=origin) erlaubt werden, mit dem Daten vermittelt werden dürfen:

<IfModule mod_headers.c>
  # define external origins that are allowed to read from 3dviewer.net as a resource
  SetEnvIf Origin "https://(wiki\.opensourceecology\.de)$" ORIGIN=$0
  Header set Access-Control-Allow-Origin %{ORIGIN}e env=ORIGIN
  Header set Access-Control-Allow-Credentials "true" env=ORIGIN
  Header merge Vary Origin
</IfModule>

Siehe auch

Bilder SVG

Echte Lösung, SVG wie es ist, darstellen lassen:

# Erweiterung einstellen jenachdem, welche MediaWiki Abfassung (REL1_…)
cd extensions/
git clone --branch REL1_39 --depth=1 https://gerrit.wikimedia.org/r/mediawiki/extensions/NativeSvgHandler

Dann in LocalSettings.php:

wfLoadExtension( 'NativeSvgHandler' );

Notbehelf in LocalSettings.php die Bilddichte (density) hochsetzen, allerdings kann dies an Vorgaben-Begrenzungen stoßen, und ein SVG in angeforderter Rießengröße (weil es ja in ein Rasterbild umgewandelt wird) kann dann vielleicht nicht dargestellt werden, und führt zu kaputten Bilddarstellungen:

  • $wgSVGConverters['ImageMagick'] = '"' . $wgImageMagickConvertCommand . '" -density 300 -thumbnail $widthx$height^! $input PNG:$output';
  • -density 300 ist vielleicht eine gutes Mittelmaß, -density 600 führte schnell an die Grenzen der Bilder-Voreinstellungen