Kivitendo-HTML-Anpassungen

Das HTML-Konstrukt, das via Kivitendo an den Webbrowser ausgegeben wird, ist durchdacht und generell in Ordnung. Es hat aber doch ein paar leichte Umpässlichkeiten, die das Arbeiten des CSS-Designers und -Entwicklers leicht beeinträchtigen. Nachfolgend ein paar Vorschläge für leichte, kosmetische Anpassungen, die schnell ausdurchgeführt werden können.

Ziel sollte sein, dass so wenig wie möglich Warnhinweise und keine Fehlermeldungen in HTMLtidy auftreten.

Die Suche nach Ungereimtheiten des Kivitendo-HTMLs ist mit der HTML-Tidy-Implementation in JEdit vorgenommen worden.

Autor: Hans P. Schläpfer

Allgemeines zum HTML

H1 wird nur einmal pro Seite verwendet

Header 1 ist sozusagen der Dokumenten-Titel. Alle nachfolgenden Titel sind Untergruppen oder Kapitel des Dokuments. Es sollten auch keine Klassen wie H1.Sub verwendet werden. Verwenden Sie H2 bis H6 oder Caption.

NAME- oder ID-Attribut in Formular-Elementen?

Das ist eine berechtigte Frage. Am besten ist, man verwendet entweder ID oder Name, aber nicht beides zusammen, was in Kivitendo im übrigen vorkommt. Sollten doch beide Attribute im gleichen Objekt verwendet werden, bitte beide mit gleichem Namen oder gleicher ID versehen.

Übersetzungen

«Kaufmännische Und»-Zeichen nicht HTML-übersetzt

Das alleinstehende kaufmännische Und (&) (Ampersand) könnte in der deutschen Übersetzung nach HTML (&) konvertiert werden (z.B. «Kunden & Lieferanten»).
Die englische Version soll ja nicht angepasst bzw. angerührt werden.
Datei: local/de/all

Grund-Elemente der Kivitendo-HTML-Seite

Leeres TARGET-Attribut

Falls dieses leere Attribut «target=""» doch benötigt wird, Standard-Inhalt __«_self»__ setzen.

layout-actionbar

Nicht geschlossene SPAN-Tags

Dieser «Container» wird anscheinend für die Aufklapp-Schaltfläche benötigt. Bitte diese Tags auch schliessen:
       </div><span></div>
ersetzen durch
       </div><span></span></div>
Das ergibt in der Browserdarstellung keinen Fehler, aber HTML-Kontrolltools geben einen Warnhinweis aus. Zudem formatieren Code-Beautifier/-Formatter einen wesentlichen Teil des Restcodes nicht mehr wie gewünscht.

Content und UI-Tabs (Reiter-Elemente)

Hier herrscht erstaunlicherweise keine konsequente und durchgehende Anwendung von Klassen und IDs bei Steuer- und Daten-Bereichen vor. Doch um die Selektoren gezielt und effizient ansprechen und das Design umsetzen zu können, sollten einheitliche Container mit eindeutigen Bezeichnungen (Klassen) oder IDs versehen sein. Hier ein Vorschlag, von unten nach oben sortiert:

Rechnungen

Positionen

Grafisches Entfernen-Symbol mit falschen Abmessungsattributen

Die WIDTH- und HEIGHT-Werte der Grafik «image/cross.png» sind nicht ganz korrekt.
Anstelle von «10px» müsste «10» (Zahl ohne Masseinheit) eingesetzt werden.
Da diese Grafik selbst bereits über diese Abmessungen verfügt, kann auf die WIDTH- und HEIGHT-Attribute gänzlich verzichtet werden.

LongDescriptionDialog: Tabelle in P-Tag eingekapselt

Tabellen sollten nicht in einen Absatz (P) eingeschlossen sein. Als Alternative DIV-Tag verwenden oder ganz weglassen, da die Tabelle direkt mit CSS über das Element #edit_longdescription_dialog formatiert werden kann. Zudem könnte die Tabelle mit einer oder mehreren Klassen versehen sein.

<div id="edit_longdescription_dialog" style="display: none">
    <p><!-- ENTFERNEN -->
    <table>
       <tr>
          <th align="right">Zeile:</th>
          <td id="popup_edit_longdescription_runningnumber"></td>
       </tr>
       <tr>
          <th align="right">Artikelnummer:</th>
          <td id="popup_edit_longdescription_partnumber"></td>
       </tr>
        ...
    </table>
    </p><!-- ENTFERNEN -->
    ...

Leere Tabellen-Zeile (TR)

Table-Rows (TR) sollten TD- oder TH-Zellen enthalten und nicht leer sein.

    ...
    <th>Lieferadresse</th>
</tr>
<tr height="5"></tr><!-- ENTFERNEN und Abstand/Titelzeilenhoehe via CSS festlegen -->
<tr>
    <th align="right" nowrap>Kundennummer</th>
    ...

Falls diese leere Zeile als Abstandhalter benutzt wird, besteht die Moeglichkeit, den Tabellenkopf
<tr class="listheading"><th>Rechnungsadresse</th></th>Lieferadresse<th></tr>
via CSS zu vergrössern:
.listheading { padding: 0.8em 0.2em ; }

Leere Tabelle in Detail-Informationen der Positionen

Schön wäre, wenn bei leerem Array folgende Code-Zeilen nicht ausgegeben würden:

<table class='row2-cvars-table'>
    <tr>
    </tr>
</table>

Script innerhalb von TABLE

Scripte sollten ausserhalb von TABLE-Containern stehen oder nur innerhalb von TD- oder TH-Containern.

    </tr>
    <script type='text/javascript'>
        $('#is_set_to_paid_missing').click(function(){ $('input[name^="paid_"]:last').val('616.00') });
    </script>
</table>

Veraltete Font-Anweisung ersetzen

Font-Statements mit roter Schriftfarbe etc. durch SPAN-Tag mit Klasse ersetzen:
       <b>Auf Lager</b> <font >0.00 Stck</font>
ersetzen durch:
       <b>Auf Lager</b> <span class="attention">0.00 Stck</span>
Somit könnte auch der Zeilenhintergrund eingefärbt werden, was eine flexiblere Formatierung und Hervorhebung ermöglicht.

Rechnungen, Aufträge: Auftragsdaten-Tabellenzellen mit unnötiger COLSPAN-Angabe

In der zweispaltigen Tabelle mit den Auftragsdaten (Kunde, Kredit, Konti etc.), die aus Bezeichnung (TH) und Feld-Inhalt (TD) besteht, sind teilweise in den Tabellen-Daten (TD) falsche COLSPAN-Anweisungen gesetzt (colspan="3"). Diese sind unnötig oder sollten anders gesetzt werden, falls diese andernorts notwendig sind.

Formular in Rechnung (innerhalb #content)

Das FORM-Element weist unterschiedliche ID- und NAME-Attribute auf. Beide sollten identisch sein.

Input-Element mit doppeltem ONCHANGE-Events

INPUT-Element Rechnungsdatum weist zweimal den ONCHANGE-Event aus. Liste Rechnungen mit falschen Attribut-Werten

In den Zellen ist das Attribut VALIGN mit dem falschen Wert «center» versehen. Korrekt wäre «middle».

Artikel (Waren)

Waren-Detail: Preisinformationen mit flash_messages mit falschen IDs

Innerhalb der Seite, vor allem bei den Preisinformationen, werden flash_messages mit den gleichen IDs generiert. IDs innerhalb der Seite sollten eindeutig sein. Für die Flash_Messages muss ggf. eine andere Lösung in Betracht gezogen werden. Diese sollten einmalig am Schluss der Seite angelegt werden, von wo man sie dann in den entsprechenden Containern plazieren kann.

Waren-Detail: flash_messages in Preisregeln mit falschen IDs

Siehe vorherige Position.

Basisdaten: Make-Model-Tabelle ohne TR-Tags

Diese sollten gesetzt sein, auch wenn die Tabelle ggf. nicht angezeigt wird.

Basisdaten: Tabellen-Zeilen doppelt abgeschlossen

Mind. zwei Tabellenzeilen sind falsch abgeschlossen:

Diese Unschönheit könnte entfernt werden.

H1-Überschriften normalisieren

H1-Überschriften kommen mehrmals in Preisinformationen und Preisregeln vor. H1 sollte nur einmal pro Seite vorkommen, und dieser ist schon reserviert. Verwenden Sie bitte H2 oder H3.

Mandanten-Bearbeitung

XHTML-Tagsabschlüsse entfernen

Diese Abschlüsse («.../>») sind nur in XHTML nötig, in HTML 4 und 5 nicht. Keine dringende Angelegenheit aber leicht unschön.

Konten

Kontodaten bearbeiten: Auswahlmenu Steuerschlüssel

Die <option>-Elemente sind nicht abgeschlossen. Dies ist zwar kein schwerwiegender Fehler, erzeugt aber in den Kontroll-Tools Warnhinweise. Zudem formatieren Code-Beautifier/-Formatter u.U. einen wesentlichen Teil des Restcodes nicht mehr wie gewünscht.

Kontodaten bearbeiten: Seltsame Klassen in FIELDSET-Tags

Hier kann von keiner Klasse gesprochen werden: <fieldset class="DEPENDS ON charttype BEING A">

Kontodaten bearbeiten: Unnoetige LABEL-Tags entfernen

Es hat hier in LABEL-Tags eingekapselte Feldbeschriftungen ohne Funktion, die zudem noch in eigens dafür angelegten Tabellenzellen gesetzt sind. Diese Label sind unnoetig.

Kontodaten bearbeiten: Sinnvolle LABEL-Tags hinzufügen