Im Zuge meiner Tätigkeit für den parlamentarischen Untersuchungsausschuss zur Untersuchung der politischen Verantwortung im Zusammenhang mit dem Kampfflugzeugsystem „Eurofighter Typhoon“ von Anfang 2000 bis Ende 2017 stellte sich das Problem, Dokumentenbezeichnungen in Word-Dateien durch Hyperlinks, welche zu diesen Dokumenten in einer zentralen Datenbank verlinken sollten, zu ersetzen.

Eine erste Hürde bestand darin, dass diese Dokumentenbezeichnungen in allen Bereichen der Word-Dateien vorkommen konnten, daher die Dokumentenbezeichnungen konnten im normalen Fließtext verwendet werden und/oder in Fuß-/Endnoten als Zitat (dies war überwiegend der Fall).

Ein weiteres Problem bestand darin, die Dokumentenbezeichnungen automatisiert im Dokument ausfindig zu machen. Die Struktur der Bezeichnung war stets DokNr gefolgt von (idealerweise einem) Leerzeichen und einer fünfstelligen Zahl (z.B. DokNr 12345). Zu beachten war hierbei, dass die einzelnen Dokumentenbezeichnungen sich unterscheiden, aber auch öfters/wiederholt vorkommen konnten (z.B. wenn ein Dokument mehrfach zitiert wurde).

Mein erster Fehlversuch basierte auf RegExp (war meiner Affinität für PHP/JS-Code geschuldet wo ich gerne und recht häufig mit preg_match und preg_replace arbeite) und sah wie folgt aus:

Der Code schien zu funktionieren und schloss dank der „For Each“-Schleife durch ActiveDocument.StoryRanges auch alle Textbereiche (Kopfbereich, Fließtext, Fußnoten, etc.) mit ein, jedoch zeigte sich bald der „logische Fehler“ meines Codes, wodurch Dokumentenbezeichnungen nur einmal durch Hyperlinks ersetzt wurden, auch wenn diese öfters im Text vorkamen. So wurde beispielsweise nur beim ersten Zitat die DokNr 12345 durch einen Hyperlink zum Dokument ersetzt, alle weiteren Vorkommnissen von DokNr 12345 wurden ignoriert und nicht wie intendiert durch einen Hyperlink ersetzt.

Ich überlasse es jetzt Dir als Leser den logischen Fehler zu finden – ein Tipp: den Inhalt der Variable „Matches“ (ein Array) ansehen.

Nach ein wenig Recherche bin ich zu einer wesentlich einfacheren und eleganteren Lösung unter Einbeziehung von „wildcards“ gekommen:

Kurze Analyse des Codes:

Die For-Each-Schleife

stellt sicher, dass ALLE Textbereiche (Kopfbereich, Fließtext, Fußnoten, etc.) nach den Dokumentenbezeichnungen durchsucht werden.

Mit

werden alle Dokumentenbezeichnungen im jeweiligen Textbereich gesucht. Durch DokNr @ wird sichergestellt, dass die Dokumentenbezeichnungen auch dann als solche erkannt werden, wenn mehrere Leerzeichen zwischen DokNr und der fünfstelligen Dokumentennummer gesetzt wurden. Durch [0-9]{5} werden nur Zahlen zwischen 0-9 gefunden, wobei diese immer fünfstellig sein müssen.

Danach ersetzt dieser Code:

die jeweils gefundenen Dokumentenbezeichnungen durch die zugehörigen Hyperlinks. Trim(.Text) sorgt dafür, dass etwaige Leerzeichen vor oder hinter der Dokumentenbezeichnung entfernt werden. Right(TrimString, 5) extrahiert dann die fünfstellige Dokumentennummer. Der folgende .Hyperlinks.Add-Code ersetzt anschließend die Dokumentenbezeichnung durch einen Hyperlink, wobei die Variable DokNr die fünfstellige Dokumentennummer in die URL des Hyperlinks einbaut. Durch TextToDisplay:=.Text wird sichergestellt, dass als Linktext wieder die (durch einen Hyperlink ersetzte) Dokumentenbezeichnung verwendet wird.

Seit Version 2.2.5 unterstützt German Market einen Filter, welcher den Benutzer ermöglicht den Hinweistext bzgl Kleinunternehmer abzuändern. Wenn der Shopbetreiber dem österreichischen Steuerrecht unterliegt, würde ich eine Anpassung dringend empfehlen, da der Standardtext:

Umsatzsteuerbefreit nach §19 UstG

nicht die österreichische Rechtsgrundlage wiedergibt. §19 bezieht vielmehr auf das deutsche UStG (siehe Gesetzestext).

In Österreich ist die Rechtsgrundlage der Steuerbefreiung in §6 (1) Z27 iVm §1 (1) Z1 und 2 UStG 1994 geregelt. Siehe hierzu die konsolidierte Version des UStG 1994 im Rechtsinformationssystem (Gesetzestext).

Da somit die falsche Rechtsgrundlage im Hinweistext angegeben wird empfiehlt es sich den Text entsprechend anzupassen. Die einfachste Lösung ist die functions.php des Themes (oder Child Themes) zu öffnen und am Ende der Datei folgenden Code einzutragen:

Dieses Bild wurde bei der Moot Court Competition 2012 gemacht. Es zeigt das Publikum im großen Dachgeschosssaals des Juridicums, meine Kollegin Natasa und mich beim Argumentieren mit den Gegnern und dem Richtersensat. Wir hatten eine Menge Spaß und ich freue mich diese Efahrung gemacht zu haben 🙂

Bei meinem letzten Auftrag habe ich die Aufgabe bekommen Werbebanner, Content Slider und „Featured Post“ Widgets auf einer Seite zu integrieren. Die Herausforderung hierbei war es möglichst ressourcenschonend vorzugehen. Ich wollte für alle Anliegen nur ein Skript benützen und dieses entsprechend für alle drei Bereiche anpassen. Die Lösung fand ich mit Slidedeck. Slidedeck bietet sowohl in der kostenlosen, als auch in der „Pro“ Variante eine WordPress Anbindung und ein jQuery Skript, welches eine einfache Slider Implentierung ermöglicht. In diesem Review möchte ich kurz einige Vorteile von Slidedeck aufzeigen und auch auf einen großen Schwachpunkt hinweisen.
Weiterlesen