HTML - Vorlagen: Unterschied zwischen den Versionen

Aus OrgaMon Wiki
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 1: Zeile 1:
Alle Dokumente, die der OrgaMon erzeugt sind .html Dateien. Diese werden nicht aus eigener Kraft, sondern grundsätzlich anhand einer .html Vorlage "belichtet". Dabei wird die Vorlage aus dem Verzeichnis ".\HTML Vorlagen" geladen und <code>~Platzhalter~</code> durch einen echten Inhalt ersetzt.
Alle Dokumente, die der OrgaMon erzeugt sind .html Dateien. Diese werden nicht aus eigener Kraft, sondern grundsätzlich anhand einer .html Vorlage "belichtet". Dabei wird die Vorlage aus dem Verzeichnis ".\HTML Vorlagen" geladen und <code>~Platzhalter~</code> durch einen echten Inhalt ersetzt.
Variable, mehrzeilige Ausgaben werden durch "BLOCKS" gelöst: In der Vorlage markiert man einen Abschnitt als Block der beim Laden entfernt und in einen Zwischenspeicher verlagert wird. "Braucht" die Ausbelichtung diesen Block wird er an einer "insert"-Marke eingefügt und ausbelichtet.
Ein "BLOCKS" ermöglicht es mehrzeilige Tabellen auszugeben. In der Vorlage markiert man einen Abschnitt als Block der beim Laden zunächst entfernt wird. "Braucht" die Ausbelichtung diesen Block wird er an einer "insert"-Marke eingefügt und ausbelichtet. Gibt es z.B. 3 Zeilen in einer Datenbank-Tabelle, so wird der Block 3 mal hintereinander mit unterschiedlichen Daten ausgegeben.


== Variable ==
== Variable ==

Version vom 16. Januar 2019, 16:04 Uhr

Alle Dokumente, die der OrgaMon erzeugt sind .html Dateien. Diese werden nicht aus eigener Kraft, sondern grundsätzlich anhand einer .html Vorlage "belichtet". Dabei wird die Vorlage aus dem Verzeichnis ".\HTML Vorlagen" geladen und ~Platzhalter~ durch einen echten Inhalt ersetzt. Ein "BLOCKS" ermöglicht es mehrzeilige Tabellen auszugeben. In der Vorlage markiert man einen Abschnitt als Block der beim Laden zunächst entfernt wird. "Braucht" die Ausbelichtung diesen Block wird er an einer "insert"-Marke eingefügt und ausbelichtet. Gibt es z.B. 3 Zeilen in einer Datenbank-Tabelle, so wird der Block 3 mal hintereinander mit unterschiedlichen Daten ausgegeben.

Variable

Je nach Context stellt der OrgaMon verschiedenen Variable zur Verfügung, die im Template verwendet werden können. Im Rahmen der Belichtung werden die Variable ersetzt, und es erscheinen anstelle des Variablennamen echte Inhalte. Es gibt vordefinierte Variablen Listen, die bei den meisten Dokumenten verfübgar sind.

Basis

~Datum~    heutiges Datum

Artikel

~Artikel~                TITEL
~No~                     NUMERO
~Komponist~              e_r_MusikerName(KOMPONIST_R)
~KomponistNachname~      e_r_MusikerNurNachName(KOMPONIST_R)
~Arrangeur~              e_r_MusikerName(ARRANGEUR_R)
~ArrangeurNachname~      e_r_MusikerNurNachName(ARRANGEUR_R)
~Verlag~                 e_r_Verlag(VERLAG_R)
~VerlagNo~               VERLAGNO
~Konto~                  b_r_Konto(SORTIMENT_R)
~Lager~                  e_r_LagerPlatzNameFromLAGER_R(LAGER_R)
~GEMA_WN~                GEMA_WN

Personen

~K#~                  NUMMER
~H#~                  HAUPT_NUMMER
~KontoAR~             KONTO_AR
~KontoER~             KONTO_ER
~Anrede~              ANREDE
~Ansprache~           ANSPRACHE
~Vorname~             VORNAME
~Nachname~            NACHNAME
~Name~                VORNAME ' ' NACHNAME
~Fax~                 PERSON
~Telefon~             e_r_telefon(RID)
~Handy~               HANDY
~eMail~               USER_ID
~Versicherungsnummer~ VERSICHERUNGSNUMMER
~Adressat1~           e_r_Adressat(RID)[0]
~Adressat2~           e_r_Adressat(RID)[1]
~Adressat3~           e_r_Adressat(RID)[2]
~Adressat4~           e_r_Adressat(RID)[3]
~Name1~               NAME1
~Name2~               NAME2
~Strasse~             STRASSE
~Ort~                 e_r_Ort(PRIV_ANSCHRIFT_R)

Mehrseitigkeit

Bei mehrseitigen Dokumenten muss man 4 Typen von Seiten vorbereiten:

  • PAGE_SINGLE: Die "erste" Seite für den Fall, dass alles auf einer Seite Platz hat
  • PAGE_FIRST: Die "erste" Seite für den Fall, dass ein mehrseitiges Dokument ensteht
  • PAGE_NEXT
  • PAGE_LAST

Einseitige Vorlage

<html>
<titel></titel>
Hallo Welt! 

Heute ist der ~DATUM~!
</html>

Blocks

  • Mit "BEGIN BlockName" werden Blocks eingeleitet
  • Mit "END BlockName" abgeschlossen

<!-- BEGIN ARTIKEL EVEN -->

~ArtNo~ ~AusgabeArt~~ArtTxt~ ~Menge~  ~Wert~  ~Percent~  ~Anteil~  <!-- END ARTIKEL EVEN --> <!-- BEGIN ARTIKEL ODD --> ~ArtNo~ ~AusgabeArt~~ArtTxt~ ~Menge~  ~Wert~  ~Percent~  ~Anteil~  <!-- END ARTIKEL ODD --> <!-- INSERT ARTIKEL -->

Includes

  • Rechnung, Mahnung, Bestellung - sie alle teilen sich oft identische Vorlagen-Anteile, diese können zentral in einer eigenen Datei abgelegt werden, und von den "grossen" Vorlagen einbezogen werden. An die Stelle des Befehles <!-- INCLUDE datei.html --> wird die komplette Datei "datei.html" eingelesen und an diesem Platz eingefügt.
  • Wird "INCLUDE datei.html" z.B. inerhalb der Vorlage Rechnung.html verwendet, so wird zunächst
    • im ersten Rang die Datei Rechnung.html.datei.html gesucht, wird sie nicht gefunden so wird
    • im zweiten Rang die Datei datei.html gesucht


<!-- BEGIN PAGE_SINGLE -->
<!-- SET MAXLINES 28 PunkteText,Text,MW -->
  <br>
  <table width=100% border=0 cellspacing=0 cellpadding=0>
   <tr>
    <td width=5%> </td>
    <td width=95%>
    <font face="Verdana" size=3><b>OrgaMon-App Projektentwicklung Umlagebeleg ~R#~</b><br>
    <br>
<!-- INCLUDE header.html -->
<!-- INCLUDE tablesumme.html -->
<!-- INCLUDE footer.html -->
    </td>
   </tr>
  </table>
<!-- END PAGE_SINGLE -->

Mehrseitige Vorlage

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<HEAD>
<title></title>
<META HTTP-EQUIV="Pragma" content="no-cache">
<META HTTP-EQUIV="Cache-Control" content="no-cache, must-revalidate">
<META HTTP-EQUIV="Expires" content="0">
<STYLE TYPE="text/css">
<!--
P.breakhere {page-break-before: always}
-->
</STYLE>
</HEAD>
<body bgcolor="#ffffff" text="#000000" link="#cc0000" vlink="#999999" alink="#ffcc00">

<!-- BEGIN PAGE_SINGLE -->
<!-- SET MAXLINES 16 ArtTxt -->
<br>
<br>
<br>...
<!-- END PAGE_SINGLE -->

<!-- BEGIN PAGE_FIRST -->
<!-- SET MAXLINES 18 ArtTxt -->
<P class="breakhere"></P>
<!-- END PAGE_FIRST -->

<!-- BEGIN PAGE_NEXT -->
<!-- SET MAXLINES 29 ArtTxt,!MW -->
<P class="breakhere"></P>
<!-- END PAGE_NEXT -->

<!-- BEGIN PAGE_LAST -->
<!-- SET MAXLINES 18 ArtTxt,MW -->
<!-- END PAGE_LAST -->
<!-- INSERT PAGE -->
</body>
</html>

MAXLINES

COSUMER - Begriff

  • Consumer sind ~Platzhalter~, die im Falle einer Ausbelichtung Platz benötigen
  • "!" sind Nicht-Consumer, die nicht auf eine Seite ausbelichtet werden dürfen

Implementierung

 // konstante Daten, die auf jeder Seite gleich sind
 DatenSammlerGlobal: TStringList; //
 // lokale Block-Daten, die wechseln
 DatenSammlerLokal: TStringList; //

Kommandos

local

pagebreak

save&delete

set

load FROMBLOCK [,ASBLOCK]

  • Lädt den definierten BLOCK "FROMBLOCK" und fügt ihn an der Insert-Position bei "ASBLOCK" ein.
  • Ist "ASBLOCK" nicht definiert, so wird der Block an der Insert-Position "FROMBLOCK" eingefügt.
  • Ist "FROMBLOCK" undefiniert wird der Block Namens "ASBLOCK" benutzt, so kann man speziell benannte optionale Blocks definieren, der load gelingt aber dennoch sollte der spezielle Block nicht vorhanden sein

write

save

clear

delete

dereference

Blocks

 cHTML_BeginBlock = '\<\!-- BEGIN ';
 cHTML_EndBlock = '