Lesedauer 37 - 38 Min.

Version 2.1 • Stand: 17.06.2021, 17:15 Uhr

©2020 Norbert Simon

OffSiteLogo OffSiteEditdit

©2020-2021 Norbert Simon Produktseite

Wartung und Pflege datenbankfreier Webseiten direkt vom PC aus.

Die Hilfe ist thematisch strukturiert. Für die Suche nach Menü-Einträgen bitte die Suchfunktion des anzeigenden Browsers bemühen.
Bei aktivem Textfenster kann mit Tab / SHIFTTAB in den Überschriften navigiert werden.


Der Editor

Der Editor konzentiert sich auf die Erstellung und Pflege projektorientierte Webseiten. Es ist jederzeit die Unterbrechung einer Bearbeitung möglich, Daten können zwischen mehreren Arbeitsplätzen ohne Umweg über eine „Cloud“ ausgetauscht werden.

Für die Quellcode-Bearbeitung von z.B. Stilvorlagen, etc. ist ein Quellcode-Editor erforderlich, beispielsweise PSPaD, Noepad++, oder vergleichbare.

Der Editor ist die „Komando-Zentrale“ zu Projektdateien und Strukturen, in der Markdown-Texte damit eingefügt oder bearbeitet werden. Die Verbindung wird mit einem Yaml-Header hergestellt. Aus dem Editor heraus werden HTML/PHP-Dateien generiert und direkt online publiziert.

Die Konfiguration folgt dem Markdown-Ansatz des Minimalismus: Es gibt nur Dialoge für Einstellungen, die textbasiert fehleranfällig wären (Schrift- und Farbeinstellung). Alle weiteren Einstellungen erfolgen mit Konfigurationsdateien. Fehlende Konfigurationen werden automatisch erzeugt und können verfeinert werden.

Das Konzept

Konzeptionell folgt der Editor gängiger CMS-System: Durch das Integrieren von in HTML-konvertierten Markdown in Seitenvorlagen, die mit Anzeigeformaten verknüpft werden, entstehen Webseiten (s. Projektkonfiguration). Bei gängigen CMS-System erfolgt dies in der REgelmit umfangreichen Bibliotheken, Datenbanken und „Frameworks“ auf dem Server. »OffSiteEdit« erledigt alles auf dem PC – die Aktualisierung einer Webseite ist „optional“ in einem Zug möglich (s. FTP-Upload)

Alle „Arbeitsdaten“ liegen lokal auf dem Rechner, inklusive der erzeugten Dateien für den Server. Die dort angezeigten Daten sind lediglich Kopien der Originale. Es können sowohl „fertige“ Dateien erzeugt werden, die aus sich heraus vollständig darstellbar sind, als auch Seiten, die Skriptbasierte Seitenelemente hinzuladen. in der aktuellen Form wird PHP für „Echtzeit-Operationen“ (Einbinden von Kopf-/Fußzeilen, Suche,…) verwendet. Grundsätzlich sollte die Verwendung jeder serverseitigen Programmiersprache möglich sein. Es wird „Code“ erzeugt…

Die lokale Kopie kann mit einer Testumgebung (z.B. XAMPP) getesten werden, bevor der Upload auf den Webserver erfolgt. Damit erübrigt sich ein serverseitig erforderlicher Wasserkopf mit Editor, Rechtekonzept,… – es gibt dort nur die Daten, die Besuchende sehen sollen (bzw. dürfen).

Da die Daten auf dem Server Kopien der lokalen Daten sind, erübrigen sich in den meisten Fällen Backups der Serverdaten.

Gegenüber „Website-Generatoren“ für statische Webseiten hat »OffSiteEdit« den Charme, dass Änderungen und Ergänzungen im Arbeitsprozess seitenweise erfolgen. Vorhandene Seiten bleiben unangetastet. So lange indirekte Änderungen (Farbänderungen, Inhalte in Kopf-/Fußzeilen,…) keine grundlegende strukturelle Änderung für alle Seiten erforderlich oder wünschenswert machen, ist das unnötig. Was der Regelfall sein dürfte. Falls es nötig wird, bietet OffSiteEdit dafür einen „Automaten“. Mit »OffSiteEdit« lassen sich die Vorteile aus beiden Welten (statisch/dynamisch) fließend miteinander kombinieren.

Der erste Start

»OffSiteEdit« wird in das Verzeichnis kopiert, in dem die Projektdateien liegen sollen. Beim erste Start werden „Standardverzeichnisse“ und eine Basiskonfiguration für den Editor erzeugt. Alles Weitere kann später – wenn durch die Verwendung klar ist, was „es“ macht – nach Belieben angepasst werden.

Für den „Schnelleinstieg“ kann über »Hilfe und Lizenz« → »Erklärende Beispieldaten holen`« ein Musterprojekt herunter geladen werden, das einerseits vieles erklärt und andererseits als leicht anpassbare Grundlage für eigene Projekte verwendet werden kann.

Das „Arbeitsverzeichnis“, in dem sich »OffSiteEdit« befindet, ist „portabel“, d.h. es kann problemlos auf dem Rechner oder über mehrere Rechner hinweg (→ USB-Stick) verschoben, kopiert und verwendet werden, so lange Projekte keine „absoluten Pfade“ außerhalb des Verzeichnisses verwenden.

Grundlegende Bedienung

Als „Schreibwerkzeug“ bietet der Editor eine umfangreiche Steuerung mit Tastenbefehlen. Neben Shortcuts, die im Programm-Menü hinter dem Befehl aufgeführt sind, kann mit der Alt-Taste die Menüsteuerung aktiviert werden. Mit der Maus geht natürlich ebenfalls…

Einstellunge → …

Schriftart…

Die bevorzugte unproportionale Schriftart (Hintergrundinfo unter „Technisches“)

Farben…

Hier können ausgehend von einer Vielzahl von Grundfarben vor allem die individuell dazu gewünschten Farben für den Editor eingestellt werden.

Das Programm kann mit verschiedenen Themen individuell angepasst werden. System-Themen haben leider keine konsistente Farb-Zuordnung für die Text-Farben. Bei der ersten Verwendung eines Themas müssen sie zugewiesen werden. Neben den Systemfarben kann

Die „Rand“-Farben sind Farbumschläge der Zeilennummerierung für den Count-Down.

Basiskonfiguration

Die Basiskonfiguration wird in einem externen Texteditor geöffnet. Ein Großteil der Einträge wird vom Editor automatisch beim Fensterwechsel und Schließen des Programms gepflegt. „Wartbare“ Einträge sind:

[Path] → htmltemplate
Standardvorlage für den HTML-Export (ohne Yaml-Header)
[Path] → template
Standardpfad für Layout-Dateien für Dateien ohne Projekt-Verknüpfung

[Path] → backups

Allgemeiner Pfad für Backups

[path] → dobackup
1 = Es werden Backups angelegt, 0 = keine Backups
[path] → php
Der Pfad zum „www“-Verzeichnis eines lokalen Webservers, bei XAMPP ist das typischerweise [c|d:]\xampp\htdocs
[search] → …
Pfad, an die ein markiertes Wort zur (Web-)Suche übergeben wird

Die Basispfade „htmltemplate“, „template“, „backups“ sind die Projektkonfiguration für „projektlose“ Dateien.

Die Basiskonfiguration wird beim ersten Programmstart automatisch mit Standardwerten angelegt. Bei Programm-Updates werden ggf. fehlende Einträge automatisch ergänzt. Bestehende oder geänderte Einträge werden von der Automatik respektiert.

Änderungen der Konfiguration erfordern einem Neustart ( → »Konfiguration aktualisieren«).

Die Textbausteine

Für ständig wiederkehrende Elemente können (rudimentäre) Textbausteine in einer Textdatei definiert werden. Die Struktur eines Bausteins ist immer gleich:

[Suchkürzel::]Textbaustein

Das „Suchkürzel“ ist optional. Davon eingegebene Teile werden vor dem Einfügen entfernt, bevor alles nach der Trennmarke :: eingefügt wird. Die Vorauswahl von Textbausteinen orientiert sich an Eingaben links neben dem Cursor, von links in den Bausteinen. Für viele gleichartig beginnende Bausteine ist das Suchkürzel:: eine Abhilfe. Eindeutige Textbausteine können ohne Suchkürzel eingegeben werden. Sie werden – von links in der Liste gefunden und vollständig eingefügt.

Textbausteine müssen ohne Umbruch einzeilig erfasst werden. Mit Steuerzeichen können Umbrüche und aktuelle Daten eingefügt werden:

Steuerzeichenwird vor dem Einfügen ersetzt durch
|Das „Pipe“-Zeichen markiert Zeilenumbrüche
§Ein Paragraph-Zeichen markiert die Position des Cursors.
§…§Mit zwei Paragraph-Zeichen kann ein Bereich ausgewählt werden, der (ausgewählt) mit einer Eingabe überschrieben wird.
@@@Fügt den aktuellen Inhalt der Zwischenablage ein, z.B. eine URL.
&#dDer aktuelle Tag, zweistellig
&#mDer aktuelle Monat, zweistellig
&#yDas aktuelle Jahr, vierstellig
&#hDie aktuelle Stunde, zweistellig, 0 - 24
&#nDie aktuelle Minute, zweistellig
&#sDie aktuelle Sekunde, zweistellig
::Trennt eine „Suchhilfe“ vom einzufügenden Text ab: Alles bis zum ersten :: wird „abgeschnitten“, der Rest – mit den vorgenannt möglichen Ersetzungen – eingefügt.

Änderungen der Textbausteine erfordern einem Neustart ( → »Konfiguration aktualisieren«).

Farben verwenden

Der Schalter oben rechts färbt Worte aus der darunter befindliche Wortliste mit der „Textfarbe Wortliste“ ein. Das erfolgt unabhängig von der Schreibweise (groß/KLEIN). Verteilung und Häufigkeit dieser „Lieblingsworte wird sichtbar und lässt sich damit kontrollieren.

Die Wortliste ist Projekt-unabhängiger Bestandteil des Editors. Mit dem Tastenbefehl ALTL wir ein Wort am Cursor oder die aktuelle Auswahl in die Liste eingefügt. Die Pflege erfolgt durch hineingehen und bearbeiten. Beim Verlassen (mit ALTL zurück zur letzten Position) werden die Einträge in KAPITÄLCHEN gewandelt, die Liste alphabetisch sortiert, Dubletten entfernt.

Es werden nur einzelne Worte pro Zeile markiert. Einträge mit mehrere Worten werden ignoriert.

Worte/Differenz zählen

Ist diese Funktion rechts unter den Lieblingsworten deaktiviert, wird weder die Konkordanzliste erstellt („Top 300“-Worte im Text), noch „gezählt“.

Über dem Eingabefeld werden die Werte für den

Die Zählung einer Auswahl oder Differenz wird bis zur nächsten Textänderung nach dem Moduswechsel angezeigt bzw. zurückgesetzt. Der Differenz-Schalter ∇ ist für z.B. „100 Worte mehr“, „40 Zeichen weniger“. Die Differenz kann allerdings nur für die jeweilige Sitzung ermittelt werdenm wesnhalb dieser Schalter beim Programmstart grundsätzlich „aus“ ist.

Die Wortzählung ist darüber hinaus Grundlage für die durchschnittliche Lesezeit. Sie wird für den „Haupttext“ ermittelt. Deshalb ignoriert sie …

In einem markierten Textbereich (Werte in geschweiften Klammern) wird „alles“ gezählt.

Speichern und Laden

OffSiteEdit speichert den aktuellen Text im Programmverzeichnis beim Fensterwechsel und Programm-Ende als Arbeitsdatei. Das ist fest vorgegeben, weshalb das Programm in einem beschreibbaren Ordner liegen muss. Dieser Ordner kann beliebig bewegt werden: Dort ist „alles erforderliche drin“.

Der automatisch gespeicherte Text ist dem mit Speichern unter… gespeichertem. Es sind zwei unabhängige Dateien: Die vom Editor automatisch gespeicherte ist die Arbeitsdatei des Editors, die mit Speichern unter… gespeicherte ist eine Projektdatei, die den Status zum Zeitpunkt des Speicherns hat. Alle weiteren Daten (Wortliste, Sprungmarken) gelten nur für die „Arbeitsdatei“ des OffSiteEditors.

Wann wird was gespeichert

Automatisch

Automatisches Backup

Es gibt kein Limit oder „aufräumen“: Backups müssen im Explorer gepflegt werden.

Textaufbau

OffSiteEdit ist für die Erfassung von Markdown-Dateien gedacht. Hierfür gibt es hinreichen Informationen im Netz. Der Markdown-Übersetzer von OffSiteEdit ist weitestgehend STandard-kompatibel, hat jedoch einige Besonderheiten, die im Abschnitt Markdown-Konvertierung erläutert werden.

Yaml-Header

Drei Minus-Zeichen am Zeilenanfang der ersten Zeile markieren einen „Yaml-Header-Anfang“. Er endet in »OffSiteEdit« entweder mit dem nächsten Dreifach-Minus oder einer Leerzeile1. Hier können beliebige Parameter für die Layoutdatei oder Module definiert werden:

Der Yaml-Header hat zentrale Bedeutung für OffSiteEdit. Einerseits dient er der Projektverwaltung, andererseite können damit Parameter in den Text und die verwendete Vorlage übergeben werden.

Für die Yaml-Parameter gelten diese Regeln:

  1. Groß/KLEIN in der Schreibweise des Parameternamens* wird ignoriert.
  2. Lesezeichen am Anfang/Ende des Parameters und des Parameterwetes werden entfernt.
  3. Die Parameter werden nach der Markdown-Konvertierung und Einbettung in die Formatdatei an allen Fundstellen ersetzt.
  4. Es findet keine Inhaltskontrolle statt: Ein „leerer“ Parameter erzeugt einen „Leer-Eintrag“.
  5. Parameter ohne Ersetzung werden aus dem Ergebnis entfernt. Aus »%­%­%abc%­%­%« wird »``«.
  6. Parameter ohne Ersetzung mit „!“ am Anfang, löschen den gesamten Absatz. Damit lässt sich z.B. dann überflüssiger Code entfernen.
  7. Mit einem „!“ ab der zweiten Position kann ein Parameter „unbekannt“ gemacht werden, was im Ergebnis zu einem Parameter ohne Ersetzung führt.

Grundsätzliche Struktur pro Parameter:

Parametername: Parameterwert

Durch Kombination der Optionen entstehen vielfältige Möglichkeiten:

%­%­%!p1%­%­% Was passiert %­%­%p2%­%­%  mit dieser Zeile?
ParameterErgebnis
!p1:Frage:
p2:beim Ersetzen
»Frage: Was passiert beim Ersetzen mit dieser Zeile?«
!p1:
p2:beim Ersetzen
»Was passiert beim Ersetzen mit dieser Zeile?«
!p1:
p!2:beim Ersetzen
»Was passiert mit dieser Zeile?«
!p!1:[Inhalt egal]
p2:[Inhalt egal]
»«
Genauer: Der „!-Parameter“ (!p1) entfernt den ganze Absatz

Besondere Editor-Variablen

BearbeitenEditor-Variable → …

Der Editor stellt mit nur im Editor gültigen Variablen Informationen zur Verfügung. Sie können im gesamten Text verwendet werden, einschließlich dem Yaml-Header. So können diese Information im Layout mit einem dafür definierten Yaml-Parameter verwendet werden.

Editor-VariableFunktion
%­%­%READ%­%%Aktuell angezeigte Lesedauer gerundet: ≤ 1 oder m - n
%­%%DATE%­%%Aktuelles Datum (tt.mm.yyyy)
%­%%YEAR%­%%Aktuelles Jahr (yyyy)
%­%%SORTDATE%­%%„umgedrehtes“ Datum (yyyy-mm-dd) → sortierbar
%­%%TIME%­%%Aktuelle Zeit, minutengenau
%­%%CLEANTIME%­%%Aktuelle Zeit (hh:mm), auf Viertelstunden abgerundet
%­%%RAWTIME%­%%Datum des Computers als Double/Float-Zeitstempel
%-%%filewithoutext%—%%Der vollständige Pfad der erzeugten Datei (s. nächster Abschnitt)

Besondere Projekt-Variablen

Einträge im Yaml-Header definieren die Zugehörigkeit einer Datei zu einem Projekt. Sie legen den (vorgeschlagenen) Speicherort der Datei und der damit generierten Seite, sowie die zugrunde liegenden Einstellungen fest.

Project: Projektname
in: [pfad/]Datei.[md|txt|…]
out: [pfad/]Datei.[html|php|…]
media: [pfad]
Layout: [pfad/]Layout.[html|php|…]

Die Datei-Endung ist dem Editor weitestgehend „egal“. Für die generische Webseiten-Erzugung wird jedoch für die Markdown-Dateien die Endung .md erwartet. Für die Verarbeitung werden „Text-Dateien“ im UTF8 Format vorausgesetzt.

VariableFunktion
projectDer Ordnername für ein Projekt im Editor-Verzeichnis ODER eine [Konfigurationsdatei[(#projektkonfiguration), auf die nachfolgende Einträge aus dem Yaml-Header zugreifen.
inDer Speicherort und Name der Datei, der für den Editortext vorgeschlagen wird. Der Name kann eine relative Pfadergänzung enthalten.
outDer Pfad und Dateiname für den Export. Der Name kann eine relative Pfadergänzung enthalten.
mediaLegt den Zielpfad für Medien-Dateien fest, die in diese Datei importiert werden (Drag & Drop oder Menübefehl). Ein hier angegebener relativer Pfad ergänzt den Basispfad für Medien, in den sie beim Einfügen in den Text automatisch kopiert werden.
Beim Einfügen ohne media-Angabe werden Medien — nach einem Hinweis mit Abbruchmöglichkeit — in den Standardpfad kopiert.
!mediaEin Ausrufezeichen vor dem Medienpfad deaktiviert ihn und den FTP-Upload für verknüpfte Medien.
layoutEine „Format-Datei“ für die Ausgabe. Ohne Layout-Datei wird ein HTML-Export des Editor-Inhalts („Text“) erzeugt.

Die im Yaml-Header gewählten Pfadstrukturen werden gegebenenfalls automatisch erzeugt.

Aus der Yaml-Variablen out wird die Editor-Variable filewithoutext generiert. Sie enthält den Ausgabepfad samt Dateinamen ohne Datei-Endung.

Projekte

Eine Webseite besteht – meistens – aus mehreren Seiten. Die Erstellung, Bearbeitung und Pflege einer Webseite ist ein „Projekt“ – weshalb bei OffSiteEdit von „Proejekten“ gesprochen wird. Denn damit erstellte Dateien können, müssen jedoch keine Webseite werden.

Die Projektorganisation der in diesem Menü unten aufgelisteten Projekte basiert auf den Angaben des Yaml-Headers der gerade im Editor bearbeiteten Datei. Diese ist – trotz der Angaben im Header – kein Bestandteil des Projekts, sondern lediglich die Editor-Datei. Nur mit den Datei → … - Befehlen wird auf Projektdateien zugegriffen. Diese stehen im Kontext zur im Yaml-Header festgelegten Konfiguration.

Die Projekteinträge im Menü Projekte haben aus dem Programmablauf heraus unterschiedliche Funktionen:

FunktionVoraussetzung
Yaml-Header anlegenFehlt in der Arbeitsdatei der Yaml-Header, wird der in der Projektkonfiguration definierte vorangestellt.
Projektkonfiguration öffnenIn der Arbeitsdatei ist ein Yaml-Header der Projektdatei vorhanden
Projekt wechselnIn der Arbeitsdatei verweist der Yaml-Heaer auf ein anderes Projekt

Modul-Verzeichnis öffnen

Das Modul-Verzeichnis ist für alle Projekte das Selbe und wird deshalb zum Bestandteil jedes Projekts, das Module verwendet.

Änderungen eines Moduls wirken ab diesem Zeitpunkt auf alle Projekte, die es verwenden. Das Verzeichnis öffnet im Explorer.

Projektverzeichnis öffnen

Für die Bearbeitung von Projektdateien mit einem Code- oder Bild-Editor lässt sich mit F4 das Projektverzeichnis im Explorer öffnen.

Neue Projektkonfiguration…

Die Projekt-Konfiguration ist benutzungsfreundlich gestaltet, d.h. es gibt Programmseitig keine Verschlüsselung der lokalen Daten (besonders relevant: FTP-Daten). Wenn dieser Rechner mehreren Benutzern zugänglich ist, müssen ggf. geeigneten Maßnahmen für den Datenschutz vom Anwender getroffen werden (Verzeichnis verschlüsseln, Daten auf portablem Datenträger, der sicher verwahrt wird,…).

Für die Projektorganisation sollten Konfigurationsdateien erzeugt werden. Diese müssen im Projektverzeichnis von »OffSiteEdit« liegen (s. Projekt-Organisation). Darin definierte Pfade werden den Pfaden der Projektdateien vorangestellt. Damit sind „absolute“ Pfade außerhalb des Projektverzeichnisses möglich, doch schränkt das die Portabilität von Projekten ein.

EintragFunktion
[Set]Gruppe Projekt-Einstellungen
backup1 : beim Laden von Dateien werden Backups des Editor-Inhalts angelegt (default), 0: keine Backups
headerDer Yaml-Header-Standard für neue Dateien
[Path]Gruppe Projektpfade
inBasis-Pfad zu den Quelldateien (Markdown)
outBasis-Pfad für den generierten lokalen Export
mediaBasis-Pfad für im Editor eingefügte Medien-Dateien
layoutBasis-Pfad zu den Layout-Dateien des Projekts
backupsBasis-Pfad für die beim Öffnen von Dateien automatisch angelegten Backups
[ftp]Serverkonfiguration für Upload
userFTP-Benutzername
passPasswort des FTP-Benutzers
hostder FTP-Host (typischerweise ohne ftp://)
rootDer Basispfad des Projekts, ohne Angabe ist das /
timeoutoptional: Legt die Dauer fest, in der eine Verbindung zustande kommen muss. Vorgabe sind 5 Sekunden. Bei langsamen Verbindungen kann der Wert nach Bedarf erhöht, bei schnellen ggf. auch verkürzt werden (ganzzahlig Millisekunden angeben 10s = 10000)
xchangeLege den relativen Pfad zur root für die Datensynchronisation fest.
uploadLegt fest, welche referenzierten, relativ verknüpften Medien (src="…", href="…" ohne ://) automatisch mit hochgeladen werden. Die Dateiendungen in der Liste müssen mit einem . beginnen.
[pack]Konfiguration der Archivierung
type1 = Standardzip; 0 = Stark schützbares ZIP, inkompatibel zu den meisten Standard-Programmen (kein Entpacken möglich)
passPasswort für Archive

Bitte beachten:

Für Änderungen der Archiv-Struktur (Kompressionstyp, Passwort) muss grundsätzlich ein neues Archiv angelegt, ein bestehendes vorher gelöscht werden.

Der Menübefehl ProjekteNeue Projektkonfiguration… generiert standardmäßig ein Projektverzeichnis innerhalb des Programm-Verzeichnisses. Das ist ein funktionierender Vorschlag, der an die eigenen Anforderungen angepasst werden kann.

Eine neu erzeugte Projektkonfiguration wird automatisch der Liste im Menü Projekte hinzugefügt.

PHP-Pfad → out setzen

Für XAMPP2 kann diese Funktion ein Symlink eingerichten, mit dem als Zielverzeichnis ein Ordner im Projektverzeichnis genutzt werden kann. Die Einrichtung erfolgt über einen damit abgesetzten Console-Befehl (erst ab Windows 10 verfügbar!):

cmd /J mklink {Pfad zum htdocs-Verzeichnis} {Pfad zum Projekt-Ausgabeverzeichnis}

Der {Pfad zum htdocs-Verzeichnis} muss in der Konfiguration von OffSiteEdit angegeben sein. Der {Pfad zum Projekt-Ausgabeverzeichnis} wird beim Funktionsaufruf als „htdocs“-Verzeichnis auf das aktuelle Projekt gesetzt. So kann ohne Aufwand problemlos zwischen verschiedenen Projekten gewechselt werden, ohne dass dafür Pfade in XAMPP verändert oder eingestellt werden müssen. Ein bestehender Symlink wird mit Aufruf der Funktion automatisch entfernt und durch den neuen ersetzt.

Das „reguläre“ htdocs-Verzeichnis muss dafür gelöscht werden, da ein Symlink nur auf einen Pfad verweisen kann, der „virtuell“ ist.

Konfiguration PHP-Pfad

In der Basiskonfiguration im Abschnitt Path muss eine Definition php=Absoluter Pfad vorhanden sein. Dieser Pfad wird als symbolischer Link für das aktuelle Projekt gesetzt. Ein möglicherweise bereits vorhandener Symlink wird vorher entfernt. Der Pfad kann *ohne Neustart der des XAMPP-Apache-Moduls gewechselt werden.

Der erste Zugriff auf das htdocs-Verzeichnis über einen Symlink ist unter Windows eventuell signifikant feststellbar verzögert. Im Anschluss erfolgen die Zugriffe jedoch gewohnt schnell.

Projekt neu generieren

Vor dem Aufruf dieser Funktion ist es ratsam, das Projekt einzupacken, damit es ggf. problemlos auf diesen Stand zurück gebracht werden kann.

Die mit OffSiteEdit erzeugen Website-Dateien sind „robust“, d.h. abgesehen von Teilen, die über zusätzliche Dateien eingefügt werden, sind sie unabhängig von späteren strukturellen Änderungen, z.B. von via Modulen eingefügtem Code. Das hat grundsätzlich den Vorteil, dass bestehende Seiten bei einer Moduländerung ohne Anpassungsdruck weiter funktionieren können (hängt natürlich vom Code ab…). Sollte aufgrund von Änderungen eine vollständige Neuerstellung der Webseiten erforderlich werden (z.B. Medien verschoben, Modul funktional erweitert,…), können alle exportierten Seiten automatisiert neu erzeugt werden.

Grundlage sind die im Augenblick des Aufrufs verfügbaren Daten. Das kann ältere, bisher funktionierende Dateien unbrauchbar machen, falls z.B. das in einigen Markdown-Dateien notierte Layout geändert wurde oder fehlt.

Die Funktion öffnet ausschließlich Dateien mit dern Endung <em>.md und exportiert sie mit den aktuellen Vorgaben in das lokale* Ausgabeverzeichnis. Nachdem das kontrolliert wurde (!), werden die geänderten Dateien (zweckmäßigerweise) in einem Archiv auf den Webserver geladen und ausgepackt.

Der Prozess ist „dumm“, d.h. es werden keine Prüfungen auf „tote Links“, fehlende Medien, Ressourcen, o.ä. durchgeführt. Es werden lediglich „technische Fehler“ (wie beim manuellen Export) registriert. Davon betroffene Dateien werden am Ende mit einem „Problemhinweis“ aufgelistet. Detailliertere Fehlermeldungen stehen ggf. im Log darüber.

Damit besondere Editor-Variablen korrekt erstzt werden (z.B. Lesezeit, die nur als Variable in der Markdown-Datei steht), wird der manuelle Prozess mit allen .md-Dateien simuliert: Datei laden, exportieren, nächste. Das erfolgt rekursiv durch alle Verzeichnisse im in:-Basis-Pfad.

Datei

Datei laden…

Yaml-Header-Check

Nach dem Laden einer Projektdatei, für die eine Projektkonfiguration gefunden wird, gleicht eine Prüfroutine den hinterlegten Eintrag [SET] header:… mit den Einträgen im Yaml-Header der Datei ab. Bei Abweichungen weist ein Hinweis-Dialog auf diesen Unterschied hin.

Der Abgleich erfolgt nach diesen Regeln:

  1. Die Parameter werden in Kleinbuchstasben umgewandelt: Damit gross/KLEIN-Schreibung keine Rolle spielt
  2. „!“-Zeichen werden aus den Parametern entfernt: Damit auch „gleiche“ Parameter erkannt werden, die mit einem eingefügten oder fehlenden „!“ als »hier ungültig« markiert sind.

Speichern unter…

DateiSpeichern untern…

Datei verknüpfen…

Diese Funktion erfordert eine Lizenz.

Die ausgewählte Medien-Datei wird in den eingestellten Medien-Pfad kopiert und ein Link dorthin an der Cursor-Position eingefügt (geht auch per „Drag & Drop“).

Datei als MIME einbetten…

Bilder können MIME-encodiert in eine HTML eingebettet werden. Das bläht diese erheblich auf, dafür ist „alles drin“, was z.B. bei einer Hilfedatei praktisch sein kann.

HTML exportieren…

Die aktuell im Editor befindliche Datei (!) wird an die Markdown-Konvertierung übergeben. Enthält sie einen Yaml-Header werden die darin getroffenen Vorgaben berücksichtigt (z.B. Seitenvorlage). Die so erzeugte Datei wird zum Speichern angeboten.

FTP-Operationen

Diese Funktionen erfordern eine Lizenz.

»OffSiteEdit« bietet verschiedene Optionen für den Up- und Download von Daten. Für die Pflege von Webseiten gilt:

Wenn beide Einträge im Yaml-Header vorkommen (media: + !media:) gewinnt !media. Sowohl der Medienimport als auch die FTP-Funktion weisen darauf hin.

Das dient vor allem als Hinweis: Wenn eine neue Mediendatei mit !media:-Einstellung eingefügt würde, gäbe es später keinen Upload, außerdem wäre der Pfad falsch…

FTP Upload

Dieser Befehl setzt einen Yaml-Header und eine Projektdatei voraus. Liegt Beides vor, wird die vorher erzeugte Exportdatei (out) in den entsprechenden Pfad auf dem Server hochgeladen.

Alles speichern → FTP

Das sind „drei Befehle in einem“: Datei speichern, HTML exportieren, FTP-Upload. Via Tastatur ausgelöst, wird „in einem Zug alles erledigt“.

Arbeitsdaten synchonisieren

Die Synchronisation ermöglicht den Austausch der Arbeitsdaten über den eingestellten Backup-Pfad via FTP.

Die Synchronisation erfolgt auf Grundlage des Zeitstempels der Dateien. Daher sind neben der gleichen Zeitzone gleich gehende Uhren auf den verwendeten Systemen relevant.

In Arbeit → FTP

Die gespeicherte Version der im Editor befindlichen Datei wird in einem Archiv in den Backup-Pfad des Projekts geladen. Wenn die Datei lokal exportiert wurde, werden in der vorgefundenen Pfadstruktur verknüpfte Medien mit eingepackt. Es können mehrere Dateien in den Backup-Pfad geladen werden. Sie werden mit einem vorangestellten wk- und ihrem Namen als ZIP-Datei abgelegt.

FTP → In Arbeit

Alle im Server-Backup-Pfad des Projekts befindlichen wk-Dateien werden in das lokale Backup-Verzeichnis herunter geladen und gemäß der hinterlegten Pfadangaben in der lokalen Umgebung entpackt. Nur ältere Dateien (Zeitstempel der Datei) werden überschrieben.

Das „Erkennungsmerkmal“ für die Funktion ist das vorangestellte wk-. Damit es keine Konflikte gibt, müssen für diese Funktion getrennte Backup-Verzeichnisse für Projekte eingerichtet werden (z.B. /backups/projektname). Bei „absoluten“ Pfaden kann das „Auspacken“ scheitern.

Arbeit aufräumen

Hiermit werden sowohl auf dem FTP-Server als auch lokal alle wk--Archive in den Backup-Verzeichnissen des Projekts gelöscht.

Projekt einpacken

Alle Daten im Projektordner sowie die Projektkonfiguration werden in ein Archiv gepackt. Falls ein „Moduls-Status“ mitgesichert werden soll: Eine Kopie des Modul-Ordners in den Layout-Ordner legen….

Ein wiederholter Aufruf der Funktion aktualisiert ein vorhandenes Backup. Soll ein Zwischenstand dauerhaft gespeichert werden, kann das Backup nach einer Umbenennung im Verzeichnis verbleiben. Es wird beim nächsten Funktionsaufruf ein neues „Standardbackup“ erzeugt.

Projekt einpacken → FTP

Das „Standardbackup“ wird erzeugt/aktualisiert und in den Backup-Server-Pfad des Projekts hochgeladen.

FTP → Gepacktes Projekt

Ein „Standardprojekt“ auf dem Server wird herunter geladen. Vorher wird ein eventuell vorhandenes lokales „Standardprojekt“ mit einem Zeitstempel („Z-yymmddhhnnss-Projektname.zip“) umbenannt.

Projekt auspacken

Mit einen Auswahldialog kann das Archiv entpackt werden, das gebraucht wird. Beim Auspacken werden nur (nach Zeitstempel) ältere Dateien überschrieben.

Messen

Dieses Menü enthält Funktionen, die ebenfalls in der darunter liegenden Informationsleiste angeboten werden.

Die Sanduhr ganz links zeigt „fix“ die Dauer der aktuellen Sitzung an (ab Programmstart).Rechts daneben kann unterhalb des „Stoppuhr“-Symbols eine Zeit-Vorgabe in Minuten eingestellt werden, die mit dem Knopf rechts daneben gestartet/gestoppt wird. Der aktuelle Stand wird mit einem „Status-Icon“ angezeigt. Zur Halbzeit ertönt ein (dezenter) Hinweiston, der Rand wird mit der „Halbzeit“-Farbe eingefärbt. Bei ca. 10% Restzeit, schaltet der Rand auf die „Endspurt“-Farbe, mit weiterem akustischen Hinweis. Ist die Zeit abgelaufen, wird die „Ende“-Farbe mit akustischem Signal aktiviert. Eine Überziehungsdauer wird als negativer Minutenwert angezeigt. Aus-/Ein-Schalten des Schreiblimits setzt den Count-Down fort, ggf. wird weiter „ins Minus“ gearbeitet.

Für einen Neustart muss der Count-Down ausgeschaltet und der Startwert aktiviert (und Bedarfsweise angepasst) werden (ins Feld und wieder hinaus).
Der Count-Down ist „in etwa“. Start/Stopp verwirft den Anteil einer aktuellen Minute. Die Funktion ist lediglich als Erinnerung an ein selbstgestecktes Zeit-Budget gedacht.

Bearbeiten

Suchen & Ersetzen

Die Suche erfolgt wahlweise im »RegEX«-Modus«, voreingestellt ist „RegEx aus“.

Eine „lesbare“ Einführung gibt es im Artikel „Bis das Gehirn blutet: Der Regex-Guide von t3n“ oder als Kurzübersicht bei Autohotkey, Regeln entwickeln und Testen geht vorzüglich mit dem REGEXR.

Der Suchen-Ersetzen-Schalter „Ab Anfang“ ist beim Programmstart standardmäßig aktiviert, die übrigen standardmäßig „aus“.

Mit den Tastenbefehlen für Suchen/Ersetzen wird

Die Suchhistorie gilt nur für die jeweilige Sitzung. Sie geht mit Schließen des Programms verloren.

Editor-Variablen

Das Submenü enthält die verfügbaren Variablen, die in der korrekten Schreibweise an der Cursorposition eingefügt werden können.

Setze… / Gehe zu…

setzen und Anspringen von Textmarken. Neben dem direkten Anspringen kann „die nächste“ oder „die vorige“ angesprungen werden. Das „dynamische“ Setzen einer Marke nimmt die nächste freie Marke.

Marke 0 / Cursormarke

Die Marke 0 wird vom Editor automatisch für die aktuelle Position gesetzt, wenn…

Das erlaubt den Rücksprung an die jeweilige Position, die durch die gewählte Aktion eventuell verschoben oder verlassen wurde. Das erfolgt in einigen Fällen automatisch, wenn z.B. die letzte Position durch veränderte Zeichengrößen oder Zeilenumbruch aus dem sichtbaren Bereich rutscht.

Das erneute Setzen einer Marke an der gleichen Stelle löscht sie. Werden wiederholt Funktionen mit Auswirkung auf die Marke 0 an der gleichen Cursor-Position ausgeführt, kann das zur Folge haben, dass keine Marke gesetzt ist.

Querverweise

BearbeitenQuerverweis⟨e⟩…

Das sich öffnende Fenster ist ein „Multifunktionswerkzeug“. Einerseits ermöglicht es die schnelle Navigation innerhalb eines mit Überschriften strukturierten Dokuments, andererseits können Querverweise innerhalb des Dokuments damit erzeugt werden.

Nach dem Öffnen haben die nachfolgenden Tasten die beschriebene Funktion:

Reduzieren / Erweitern der Liste auf die gewählte Überschriften-HierarchieEnter
Taste(nfolge)Funktion
AZ(inkl. deutsche Umlaute und ß) Markieren von Überschriften mit dem getippten Inhalt
„kein Treffer“ löscht den bis dahin eingegebenen Tastenpuffer.
1..6
EnterEin Eintrag ausgewählt: Querverweis zur Überschrift an der Cursorposition einfügen.
Mehrere Einträge ausgewählt: : Alle gewählten Einträge werden als Liste eingefügt (z.B. für ein Inhalts-/Teilinhaltsverzeichnis)
STRGEnterEin Eintrag ausgewählt: Zur Überschrift hingehen
TabOhne Aktion Liste schließen (alternativ in den Text klicken)
ESCAuswahl/Tastenpuffer löschen, ohne Auswahl wird die Liste geschlossen

Alle Enter-Aktionen fügen vorher die Marke 0 an der aktuellen Cursor-Position ein. Nach Einfügeoperationen steht der Cursor anschließend auf dieser Marke.

Seitenverweis

Für Querverweise innerhalb der Webseitenstrutkur kann die dazugehörende Markdown-Datei ausgewählt werden. Der relative Link zu dieser Datei wird ohne Dateiendung eingefügt und gilt entsprechend beim Epxort der Datei für die Verknüpfung dort. Es findet keine Kontrolle statt, ob die Datei als Export-Ergebnis vorliegt.

Auswahl-Manipulationen

Codierung des STrings in eine URL-fähige Parameter-Schreibweise

* Der markierte Block bleibt erhalten, das Resultat wird in die Zwischenablage kopiert.

Korrektur

Im Sinne von „ablenkungsfreiem Schreiben“ gibt keine „Fehlermarkierungen“ im Text. Die Korrektur soll bewusst und willentlich erfolgen, deshalb können Vorschläge der Korrektur nur mit den bereitgestellten Befehlen gefunden und bearbeitet werden:

TastenbefehlFunktion
STRGNSucht ab der aktuellen Cursor-Position das nächste im Wörterbuch unbekannte Wort und markiert es. Ein erneuer Suchlauf beendet einen möglicherweise geöffneten Korrekturvorschlag.
STRGKKorrekturvorschläge öffnet dort eine Liste mit dem Wörterbuch bekannten Worten. Eine Auswahl wird Enter übernommen.
STRG MMerkt sich das markierte Wort im Wörterbuch. Es gibt keine Nachträgliche Korrekturmöglichkeit – es könnten lediglich „korrigierte“ Hunspell-Wörterbücher bestehende ersetzen.

Als Sprache ist „Deutsch“ voreingestellt, die im Haupt- und Eigenschaften-Menü („Rechtsklick“) geändert werden kann. Weitere Wörterbücher können beim Hunspell-Projekt herunter geladen werden. Diese müssen im Programmverzeichnis, im Ordner dict eingefügt sein, damit sie beim nächsten Programmstart zur Verfügung stehen.

Solide gepflegte Wörterbücher gibt es bei „Softmaker“. Diese müssen nach dem Herunterladen lediglich in ein zip umbenannt werden, damit sie — ausgepackt — genutzt werden können. Benötigt werden die aff- und dic-Dateien.

Tastenbefehle

Der Editor unterstütz die „gebräuchlichen“ Tastenbefehle, die von Word & Co bekannt sind. Das Menü reagiert auf ALT → (dann) unterstrichener Buchstabe. Zum Verlassen des aktivierten Menüs muss ggf. mehrfach ESC gedrückt werden.

Nachfolgend die „Schnelltasten“ vieler Menü- und besonderer Befehle:

Absatzbefehle

BefehlFunktionAnmerkung
SHIFT ALT 8Zeilen sortieren A..ZMindestens zwei Zeilen müssen markiert sein, Dubletten werden entfernt, A=a
SHIFT ALT 9Zeilen sortieren Z..AMindestens zwei Zeilen müssen markiert sein, Dubletten werden entfernt, A=a
SHIFT ALT ↑ oder ↓Absatz hoch/runter kopierenCursorposition bzw. Block
SHIFT STRG ↑ oder ↓Absatz hoch/runter schiebenCursorposition bzw. Block
STRG ↑ oder ↓hoch/runter rollenCursor bleibt wo er ist
F11Umbruch an/ausUmbruch an der Fensterkante, alternativ im Kontextmenü, Setzt Marke 0
STRG YZeile löschenAktuelle Zeile
SHIFT STRG YBis Zeilenende löschenAktuelle Zeile

Blockbefehle

BefehlFunktionAnmerkung
STRG ALT AAuswahlmodus wechselnNormal → Spalte → Zeile →… , alternativ im Kontextmenü
STRG ALT Ualles GROSS (wenn möglich)Schreibweise für Wort unter dem Cursor oder alles im Block
STRG Ualles kleinSchreibweise für Wort unter dem Cursor oder alles im Block
STRG SHIFT UA ß B # C - Ö → aßb#c-öAlles klein ohne Leerzeichen
ALT SHIFT Ualles SubstantivierenSchreibweise für Wort unter dem Cursor oder alles im Block
ALT UÄn Dern → aenndern → KlemmbrettMarkierter Text wird „umlautfrei“ und „Linkfähig“ z.B. für einen Dateinamen, entspricht der Funktion für die ID-Bildung der Überschriften
STRG TBis Wortende LöschenCursorposition bzw. Block

Dateibefehle

BefehlFunktionAnmerkung
STRG OText öffnen/ersetzenErsetzt den aktuellen Text mit einem hinzu geladenen. Es werden nur UTF8-Codierte Dateien akzeptiert. möglicherweise gesetzte Sprungmarken gelöscht
STRG SSpeichern unterAktuellen Text in (beliebige) Datei speichern.Der Text im Editor wird weiterhin in der Standard-Datei gespeichert.
STRG EMedien einfügen/kopierenKopiert eine Mediendatei gemäß Header und erzeugt einen Pfad im Editor an der Cursor-Position.
SHIFT STRG EMedien Mime-codiert einbettenEinbettung einer Media-Datei als Mime-Typ.
F12Text → HTML exportierens.HTML-Export
SHIFT F12FTP-Datei des Exportss. FTP-Upload
SHIFT ALT F12Alles speichern (lokal, FTP)entspricht funktional der Tastenfolge STRGS,F12,SHIFTF12
F5Module-Verzeichnis öffnenÖffnet das Module-Verzeichnis im Explorer
F9„In Arbeit“ → FTPHochlagen der gespeicherten Arbeitsdaten als Backup
ALT F9FTP → „In Arbeit“Alle Arbeitsdateien vom FTP-Backup herunterladen und lokal entpacken
STRG ALT F9„In Arbeit“ aufräumenAlle „In Arbeit“-Projekt-Dateien (lokal & FTP) löschen

Korrektur

BefehlFunktionAnmerkung
STRG NNächster Fehlerschließt ggf. Wortliste
STRG KKorrekturvorschlägeerneute Auslösung schließt die Liste
STRG MWort in Wörterbuchdirekt, ohne Rückfrage!
STRG LLieblingswortmarkierter Text wird mitgenommen, in der Liste ausgelöst erfolgt Rücksprung in den Text
ALT WNächstes Wort länger als 11 ZeichenErleichtert die Suche nach manuellen „Umbruchskandidaten“ (ALT 173)
F6Rechtschreibung DudenOnline-Duden-Abfrage mit markiertem Wort
SHIFT F6Duden SprachwissenDuden-Sprachwissen-Abfrage mit markiertem Wort
F7WikipediaWikipedia-Suche mit markiertem Wort

Textbefehle

BefehlFunktionAnmerkung
ALT ↑ oder ↓Markdown Überschrift hoch/runterSprung zur nächsten Zeile mit Hash in Spalte 1
STRG GQuerverweiseSetzt ggf. Marke 0
SHIFT STRG BKlammerpaar findenCursor muss links neben der Klammer stehen
STRG 1…9Marke 0-9 anspringenn = [0..9] s. Hinweis Marke 0
STRG FSuchenmarkierter Text wird mitgenommen
F3 / EnterWeitersuchenFokus wird auf dem Suchen-Knopf gehalten
STRG HErsetzenmarkierter Text wird mitgenommen
ALT #Suche a<>A an/ausStandard: aus
ALT -Suche rückwärts an/ausStandard: aus
ALT XStandard/RegEx-Suche umschaltenStandard: RegEx aus
ALT +Ab Anfang suchen an/ausStandard: An
SHIFT STRG 1…9
ALT 1…9
Marke 1-9 setzen/löschenn = [1..9] erneute Auslösung auf der Marke löscht sie
STRG BMarke dynamisch setzen/löschenErzeugt die nächste freie Marke (1-9), löscht eine beliebige Marke an der Position
ALT STRG ← oder →Nächste Marke davor/danachSpringt zur nächsten Marke ab Cursor in die entsprechende Richtung
SHIFT ALT STRG BAlle Marken löschenEntfernt ohne Rückfrage alle Textmarken
STRG ALT ,Schrift 1pt kleinerSetzt Marke 0
STRG ALT .Schrift 1pt größerSetzt Marke 0
F10Schrift wählen/einstellenSetzt Marke 0
STRG F10Farben wählen/einstellenSetzt Marke 0
ALT FFarben verwendenStandard: an

Projektbefehle

BefehlFunktionAnmerkung
F5Modulverzeichnis öffnenÖffnet das für alle Projekte gültige Modulverzeichnis im Explorer.
F4Projektverzeichnis öffnenÖffnet das Projekte-Verzeichnis im Explorer
STRG F4Neue Projektverzeichnis anlegenErzeugt das Grundgrüst einer Konfiguration für ein neues Projekt.
SHIFT STRG F4PHP-Pfad → out setzenSetzt den PHP-Pfad auf das Projekt. Dafür muss diese in der Basiskonfiguration festgelegt sein und dem Standard-Webverzeichnis der PHP-Installation entsprechen. Bei XAMPP ist das z.B. typischerweise „htdocs“
SHIFT Alt STRG F4Projekt neu generierenErzeugt für alle *.md im Projektverzeichnis rekursiv neue Ausgabedateien
SHIFT STRG SAktuelle Daten einpackenErzeugt im Backup-Pfad ein verschlüsseltes ZIP-Archiv, s. Projekt-Backups
STRG SHIFT OArbeitsbackup auspackenÖffnet ein verschlüsseltes Arbeitsdaten-Backup, s. Projekt-Backups
SHIFT ALT STRG F12FTP Uplad ArbeitsdatenDas Arbeitsdaten-Archiv wird aktualisiert und in den FTP-Upload-Pfad geladen, s. Projekt-Backups
STRG SHIFT ALT OFTP Download ArbeitsdatenArbeitsdaten-Archiv des aktuellen Projekts herunter laden, s. Projekt-Backups

Messen-Befehle

BefehlFunktionAnmerkung
ALT TTimer an / ausWenn an: ein Status-Icon, wenn aus: Stoppuhr
SHIFT ALT TTimer-Zeit einstellenStellt neu, wenn aus, bildet Differenz, wenn an, ±1 3
F2Differenz zählenSchalter ∇ an/aus, Taste angelehnt an „F2 → Bearbeiten“
ALT RWorte pro Minute einstellenDurchschnittliche Lesegeschwindigkeit ±10 3

Drag & Drop

Diese Funktion erfordert eine Lizenz.

Der Editor akzeptiert „TXT“ und „MD“-Dateien als neue Arbeitsdatei oder Mediendateien gemäß Projektkonfiguration. Von der vorhandenen Datei wird konfigurationsabhängig ein Backup angelegt. Mediendateien werden in das für die Arbeitsdatei gültige Medienverzeichnis kopiert, der dazugehörende Pfad an der aktuellen Curorposition* eingefügt. Ist keine Projektdatei vorgegeben, wird der absolute Dateipfad eingefügt. In diesem Fall findet keine Kontrolle bzgl. des Dateityps statt.


Ende Editor-Dokumentation


Markdown-Konvertierung

Die Übersetzung des Editor-Inhalts erfolgt mit den nachfolgenden Regeln. Sie folgen in weiten Teilen den mittlerweile gebräuchlichen Markdown-Standards, sind jedoch an einigen Stellen spezialisiert und erweitert. Das kann zu unerwarteten Ergebnissen führen, die anhand dieser Dokumentation alle behoben bzw. erklärt werden können.


Es können und müssen keine Einstellungen vorgenommen werden.

Konvertierungsreihenfolge

  1. Einlesen des Yaml-Headers und puffern der Parameter
  2. Laden der verfügbaren Module
  3. Konvertieren des Editor-Textes
    1. Doublettenprüfung und Entfernen des YAML-Headers (wenn vorhanden)
    2. Ersetzen der Meta-Zeichen
    3. Leerzeilen und Notizen entfernen
    4. Fußnoten sammeln und aus dem Text entfernen
    5. Referenzen sammeln und aus dem Text entfernen
    6. Module ersetzen
    7. Einzüge für Listen normalisieren (Tabs und Leerzeichen)
    8. HTML-Code erzeugen
      1. Blockbehandlung für Code-Blöcke, Kommentare, Notizen, Blockquote, Blockquote, Tabellen
      2. Überschriften
      3. Definitionen
      4. Linien (<hr>) → Theoretisch an jeder beliebigen Stelle, damit sie auch in Blöcken genutzt werden können
      5. Listen (•, a, A, 1., i, I), a,A,1 registrieren einen Startwert, römisch kann immer nur bei i/I anfangen, dehalb kann es a/A nicht.
      6. Fett, Kursiv, Fett-kursiv, code, …
      7. Fußnotenverweise im Text einfügen
      8. Referenzen im Text einfügen
      9. Fußnotentexte anhängen
  4. Laden der eingesellten Layoutdatei
  5. Zusammenfügen des layouts des konvertierten Textes zu einer Ausgabedatei
  6. Ersetzen bzw. Entfernen der Yaml-Parameter in der Ausgabedatei

Die Reihenfolge kann insbesondere im Zusammenspiel mit Modulen relevant sein. Einerseits werden eventuell Moduleinträge (Sonderzeichen) verändert, andererseits können Yaml-Parameter in Modulen ebenso wie im Layout genutzt werden, während Module und Markdonw-Auszeichnungen nur im Markdown-Bereich ersetzt werden. Yaml-Parameter werden deshalb immer „wie sie sind“ übergeben.

Zeichenkonvertierung

Im Markdown muss keine Rücksicht auf nachgelagerte Module genommen werden. Deshalb werden Zeichen »1:1« durchgereicht. Ersetzungen finden für diese „Meta-Zeichen“ statt, damit sich Sonderfälle lösen lassen:

WasWofürErsetzungAnmerkung
\\\\„Backslash“
\***„Sternchen“
\___Unterstrich
\^^^„Caret“
\[[[nur in Sonderfällen erforderlich
\>>>„größer“ umschifft ggf. HTML-Konflikte
\<<&lgt;„kleiner“ umschifft ggf. HTML-Konflikte
\]]]nur in Sonderfällen erforderlich
\|||innerhalb von Tabellen
\```Sonst wird es Code
\"""Damit sind Hochkomma z.B. in Bild-Titeln möglich
­(-)(-)„Bedingter Trennstrich“, in der Ausgabe unsichtbar, nur wenn eine Trennung nötig ist (ALT173)
  „festes Leerzeichen“, Backslash + Leertaste ( ALT160)
\0…\9₀…₉₀…₀Tiefgestellte Zahlen4

Code-Blöcke, Kommentare, Notizen

Zeilenweise eingerahmter HTML-Kommentar oder PHP-Code wird „durchgereicht“:

<?php
// wird inklusive der Start- und Endmarke 1:1 übernommen
?>
<!--
Dito.
-->

Eventuell noch offene“ Strukturen (Tabellen, Blockquotes, Aufzählungen, …) werden vor dem Beginn dieser Strukturen geschlossen.

Innerhalb eines Absatzes werden Kommentare und PHP ebenfalls durchgereicht.

Werden mehrzeilige Kommentare/Codezeilen innerhalb eines Absatzes eingeleitet, unterliegt die darin eingeschlossenen Absätze der Markdown-Interpretation. Der Code wird dadurch (sehr wahrscheinlich) fehlerhaft!

Sonderfunktion Notiz

Beginnt ein Absatz mit ?? wird er als „interner Kommentar“ angesehen und beim Export wie eine Leerzeile behandelt (s. Absätze).

Absätze

Die „offiziellen“ fünf Leerzeichen als Ersatz für <br/> → „weicher Umbruch“ werden ignoriert: Das geht optisch unter, deshalb <br/> schreiben…6

Blockquote

Diese Blockstruktur lässt sich beliebig tief verschachteln. Dabei ist egal, ob vor oder zwischen den >-Symbolen Leerzeichen stehen (≠ Standard-Markdown). Innerhalb eines Blocks können alle hier nachfolgend beschriebenen Auszeichnungen verwendet werden7.

Damit das „optisch konsistent“ funktioniert, müssen entsprechende Stile definiert werden.


Das „Blockquote-Dilemma“

Es gibt keine Referenzierung in CSS auf das Eltern-Element. Über Folge-Definitionen wie z.B. :first-child lässt sich für mehrstufige Blockquotes schwer vorhersehen, was am Ende heraus kommt. Erwartbare Format-Kombinationen sollten daher explizit mit Stilvorlagen definiert sein. Ist es in der Formatvorlage berücksichtigt, lässt sich problemlos

  beispielsweise Code in eine Blockquote legen,
  was ziemlich cool aussieht…

pre

Codeblöcke folgen im Rang den Blockquotes. Sie können wahlweise mit dreifachem Akzent (```) oder dreifacher Tilde (˜˜˜) eingeleitet werden. Sie müssen am Zeilenanfang bzw. direkt nach dem letzten Blockquote-Zeichen stehen und werden mit <pre><code> eingeschlossen. Optional kann eine Formatklasse angehängt werden: Alles im Absatz hinter ~~~ ≠ Whitespace.

Überschriften

­## Eine Ganz - besondere - Überschrift
             ↓ wird zu ↓
<h2 id="eine-ganz-besondere-ueberschrift" tabindex="0">Eine Ganz - besondere - Überschrift</h2>

Aus dem Text der Überschrift wird (für H1…H6) ein ID erzeugt, bei dem [ÄÖÜ,äöüß] mit [ae..ue,ss] ersetzt und alles ≠ [A..Z,a..z,-] ersatzlos entfernt und klein geschrieben wird. Zusätzlich erhalten alle Überschriften den „tabindex="0"“, was sie mit der TAB / SHIFTTAB „navigierbar“ macht.

Zum einfachen Verweisen auf Überschriften in dieser Form können sie im Editor wahlweise per Querverweis eingefügt werden, oder mit dem Tastenbefehl ALTU ein markierter Text in dieser konvertierten Form in die Zwischenablage kopiert werden.

Auszeichnungen

WaswofürAnmerkung
**…****Fett**Fett 11
__…____Fett__Fett 11
*…**kursiv*Kursiv 11
_…__kursiv_Kursiv 11
***…******kursiv-fett***kursiv-fett 11
___…______kursiv-fett___kursiv-fett 11
`…``Code`Code, HTML-encodiert 10
˜…˜˜tief˜stellentiefstellen
^…^^hoch^stellenhochstellen
˜˜…˜˜˜durch˜streichendurchstreichen
!­!…!­!AchtungAchtung 9

Bilder

   ![Ersatztext]⟨Link Titel⟩
   [Linktext]⟨Link Titel⟩

Referenzen

Im Text: [Linktext][referenz]

Referenz:

Ausgabe:

Eine „vergessene Referenz“ wird hervorgehoben: UNGÜLTIGE REFERENZ

Fußnoten

Fußnote[^ref]
[^ref]: …

Eine „vergessene Fußnote“ wird hervorgehoben: UNGÜLTIGE FUSSNOTE

Definitionslisten

Vorschlag
: Aufzählen als einfache Liste
: Ggf. auch mehrzeilig
    ↓ wird zu ↓
<dt>Vorschlag</dt>
<dd>Aufzählen als einfache Liste</dd>
<dd>Ggf. auch mehrzeilig</dd>

Tabellen


| Kopf 1 | Kopf 2 | kopf 3 |{tabellenid}
| :--- | :---: | ---: |
| links | Mitte | rechts |
| Das ist ein Muster | Das ist ein Muster | Das ist ein Muster |

Kopf 1Kopf 2kopf 3
linksMitterechts
Das ist ein MusterDas ist ein MusterDas ist ein Muster

Das ganze in einer Blockquote:

> | Kopf 1 | Kopf 2 | kopf 3 |{tabellenid2}
> | :--- | :---: | ---: |
> | links | Mitte | rechts |
> | Das ist ein Muster  | Das ist ein Muster | Das ist ein Muster |

Kopf 1Kopf 2kopf 3
linksMitterechts
Das ist ein MusterDas ist ein MusterDas ist ein Muster

Aufzählungen

Erstes ZeichenAnmerkung
- oder +ungeordnete Liste
1…9…nNummierierte Liste, optionaler Startwert = erste Zahl
A…H,J…ZAlphanummerisch Großbuchstaben, Startwert = erster Buchstabe
a…h,j…zAlphanummerisch Kleinbuchstaben, Startwert = erster Buchstabe 13
I oder iRömische Nummerierung, Kein freier Startwert möglich
  1. ungeordnete Listen mit - oder +
  2. Der Zähler der Einzugsebene wird mit dem ersten Eintrag festgelegt
  3. Eine Zählung wird mit einer folgenden höheren Ebene zurückgesetzt
  4. Die Aufzählung kann an beliebiger Stelle starten, maßgeblich ist der tatsächliche Einzug vom Absatzanfang (als Leerzeichen,> zählt als Leerzeichen, Tab wird zu zwei davon) für die Nummerierungstiefe.

Module

ProjekteModule-Verzeichnis öffnen

[modulname parameter "parameter" …]

Mit der abgebildeten Syntax können beliebige Erweiterungen realisiert werden. Der „Modulblock“ wird durch einen Code-Block ersetzt, in dem die Parameter vor der Einfügung ersetzt werden. Diese Erweiterungen müssen

Ab der nächsten Zeile werden - die im Kopf definierten Variablennamen mit dem übergebenen Wert ersetzt, wenn sie in der Form %parameter% eingefügt wurden. Die Übergabe erfolgt Reihenfolge-abhängig. Variablen können Standardwerte haben, die allerdings weder Leerzeichen enthalten dürfen, noch durch Anführungsstriche geklammert werden können:

modulname vertikal=rechts horizontal=unten breite=45.23

Wenn für dieses Beispiel nur die Breite übergeben werden soll:

[modulname - - 20]

Von hinten können Parameter mit Vorgabe ausgelassen werden. Für ungültige oder „leere“ Parameter müssen (gegebenenfalls) im Modulcode Vorkehrungen getroffen werden.

Ein fehlendes Modul wird hervorgehoben: » UNGÜLTIGES MODUL «


Es findet keine Syntaxkontrolle des Ergebnisses statt.

Beispielmodul „img“

img href Titel=Keine Bildbeschreibung verfügbar ID=px css=right
<img id="%ID%" class="%css%" src="%href%" alt="%Titel%" title="%Titel%" />

Damit ein Bild mit Formatierung versehen werden kann, wird ein mit [img Bildpfad] übergebenes Bild ohne weitere Parameter so im HTML-Code eingefügt:

<img id="px" class="right" src="Bildpfad" alt="Keine Bildbeschreibun" title="Keine Bildbeschreibung" />

Die Worte im Vorgabewert für den Titel sind mit ALT0173=&­nbsp; getrennt – so werden soe als „ein Parameter“ erkannt. Der Vorschlaf für „ID“ kann kritisch werden, wenn mehrere Bilder mit gleicher ID eingefügt werden.

Die Parameter-Reihenfolge ist so gewählt, dass die notwendigen Eingaben am Anfang, die sinnvollen im Anschluss und die „optionalen“ am Ende stehen.

Layoutdatei(en)

Es handelt sich um „entkernte“ HTML/PHP-Dateien, die mit Variablen aus dem Yaml-Header ergänzt werden. Der in HTML transferierte Markdown-Text wird für die Variable %­%%content%­%% eingefügt.

  • Es findet keine Syntax- oder Funktionsprüfung statt.
  • Es findet keine Prüfung auf Existenz verwendeter Include-, CSS-, oder sonstiger verknüpften Daten statt.

Maßgeblich ist die Funktionalität im Rahmen der Webseite.

Technisches

Editor und Schriften

Die Basis von »OffSiteEdit« ist das Paket SynEdit. Dessen Fokus ist Programmieren, weshalb nur „unproportionale“ Schriften verwendet werden können. Davon gibt es vergleichsweise wenig „gute“, typischerweise sind es Schreibmaschinen-Schriften.

Gut geeignet ist „Consolas“ (Windows Standardschrift) oder „Hack“, Fira Code, die trotz Unproportionalität angenehm lesbar sind. Ein (m.E.) noch angenehmeres Schriftbild hat Telder Mono, dieser Font ist allerdings kostenpflichtig und hat einen eingeschränkten Zeichenumfang.

Weitere unproportionale Schriften gibt es bei Google-Fonts. Qualität und Umfang der Fonts dort variiert stark, das muss fallweise ausprobiert werden.

Hunspell-Korrektur

Die Hunspell-Korrektur basiert auf dem SynEdit-Spell-Checker von Jürgen Rathlev.


1Standard sind drei Minus-Zeichen am Anfang und Ende. Das Interpretieren einer Leerzeile verhindert eine leere Ausgabe-Datei.  

2Ob und wie sich das mit anderen lokalen PHP-Umgebungen einrichten und nutzen lässt, ist unklar (Falls es dazu Erkenntnsise gibt: Bitte teilen!). Allgemein formuliert ist das ´htdocs-Verzeichnis von XAMPP das Verzeichnis var/www` einer Linux-Installation.  

3Versteckt den Eingabe-Cursor. Damit dieser sichtbar wird, entweder Zahlen tippen (bei unklarer Position) oder / wiederholt drücken, bis der Cursor angezeigt wird.  

4https://www.htmlsymbols.xyz/miscellaneous-symbols/subscript-and-superscript "HTML Symbols"  

5Das gilt für den HTML-Export mit OffSiteEdit. Andere Markdown-Interpreter/Parser verhalten sich womöglich anders.  

6Das schränkt die Portabilität des Markdown-Codes etwas ein. Mit Blick auf den primären Zweck des mit OffSiteEdit erzeugen Markdowns ist das vertretbar.  

7Das ist gemäß „Daring-Fireball“-Konvention, wird jedoch von wenigen Interpretern gemacht.  

9Das ist kein offizielles Markdown. Es wird das HTML5-Element <mark>…</mark> verwendet, das älteren Browsern unbekannt ist  

10Automatische Ersetzung von <,>,[,],(,) mit HTML-Encodierung innerhalb der <Code>-Auszeichnung.  

11Bei Auszeichnungsfehlern wird „der kleinste Nenner“ genommen, „unpaarige“ Sterne bleiben übrig. Falls ein Stern „überleben“ soll, muss er mit \* geschützt werden. Die „Unterstrich-Varianten“ werden unterstützt, allerdings werden sie von der Korrektur als „Zeichen“ interpretiert.  

12Wofür ist das gut? Technisch zum sortieren der Fußnoten. Ob es auch einen praktischen Wert hat, ist unklar. ;)  

13Wegen der Option „römisch“ kann I bzw. i kein Startwert sein.