Merge pull request #51 from kivitendo/2022-redesign-merge-3
2022 redesign merge 3
OpenDocument PDF Erzeugung: Geht neu direkt via LibreOffice CLI Option, anstatt via Makro
- vereinfacht die Einrichtung, da LibreOffice kein Makro mehr ausführen muss (auf dem Server nicht ganz trivial einzurichten)
OpenDocument PDF Erzeugung: Xvfb wird nicht mehr gebraucht um libreoffice auf dem Server zu starten
- libreoffice wird mit --headless gestartet, das funktioniert auch ohne Xvfb, getestet auch mit openofficeorg_daemon Variante
LaTeX: Aufruf von latexmk klarer gemacht
LaTeX-Druckvorlagen: nicht immer zwei mal den LaTeX-Interpreter aufrufen
LaTeX-Druckvorlagen werden nun standardmäßig nicht mehr zwei mal durchden LaTeX-Interpreter übersetzt. Statt dessen wird in derStandardkonfiguration das Programm »latexmk -pdf« aufgerufen, das...
LaTeX: TeX-Var-Verzeichnis permanent im users-Verzeichnis belassen
Bisher lag es bei PDF-Erzeugung im temporären Verzeichnisusers/kivitendo-print-…, das anschließend wieder gelöscht wurde. Dasbedeutete, dass Font-Caching bei jeder PDF-Erstellung erfolgen...
LaTeX switch from \n\n to \par in replacements of user input
L: area-input switch-to-textarea button styling ins css verschoben
CLI Optionen für OpenDocument PDF Erzeugung korrigiert (behebt Warnungen)
Swiss QR-Bill: Einige Variablen bereits in der invoice setzen, so dassdiese auch in den latex Vorlagen verfügbar sind.
Variablen:
qrbill_iban, qrbill_biller_countrycode, qrbill_customer_countrycode,qrbill_amount
Swiss QR-Bill: Unstrukturierte Mitteilung in Rechnung hinzufügen
Swiss QR-Bill: QR-Referenz soll in der jeweiligen Rechnung gespeichert werden
Swiss QR-Bill: QrBillFunctions.pm Fehlerrückgabe angepasst
Swiss QR-Bill: Fix zu Bankkonto für QR-Rechnung
- fehlendes Modul eingefügt- nur erstes markiertes Bankkonto berücksichtigen
Swiss QR-Bill: Helfer Funktionen in separate Datei ausgelagert
Swiss QR-Bill: Schweiz als Standardwert für das Land beim Rechnungssteller verwenden
Swiss QR-Bill: Für die QR-Rechnung nur Vorlagen mit dem Vorlagenkürzel 'qr' berücksichtigen
Ermöglicht die gleichzeitige Verwendung von QR und nicht-QR Rechnungen.
Swiss QR-Bill: Beim Erzeugen der QR-Rechnung Schweiz als Standardwert für das Land beim Kunden verwenden
Swiss QR-Bill: Option Rechnung ohne Betrag
- Checkbox bei Rechnung hinzugefügt (eingeblendet wenn Feature aktiv,sonst hidden)- Integration in Odt Print Ablauf- Übersetzung + locales lauf
Swiss QR-Bill: Fix: Referenznummer nur bei gewählter Variante erzeugen
Swiss QR-Bill: QR-Code in Printablauf nur für Formname "Rechnung" erzeugen
Swiss QR-Bill: Variante IBAN ohne Referenz in Druckablauf und Mandantenkonfiguration hinzugefügt
KiviLatex-Plugin: HTML-zu-LaTeX-Wandlung aus SL::Template::LaTeX verwenden
Die Umwandlung von HTML zu LaTeX ist komplex. Es gibt viele Randfälle,in denen ein falsch platziertes \newline übrig bleibt, über das LaTeXdann stolpert.
Bisher gab es zwei Implementationen dieses Codes:...
Swiss QR-Bill: In Druckablauf OpenDocument/OASIS integrieren
- Feature in Mandantenkonfiguration einschaltbar- Aufruf zum Erzeugen von QR-Code PNG (Steven Schubiger)- Vorlage hinzugefügt (rev-odt/invoice_qr.odt)- PNG Bild CH-Kreuz hinzugefügt- Übersetzungen hinzugefügt, locales Script ausgeführt de/en...
L/Presenter: Funktion zum Entfernen aller HTML-Tags
L/Presenter: Funktion zum Säubern von HTML von unerwünschten Tags
Definitionen von format_amount_units entfernt.
Durch die zwei vorgherigen commits wird format_amount_units nichtmehr verwendet.
Presenter::Tag: img_tag aus Plugin/L verschoben
Presenter::Tag: radio_button_tag aus Plugin/L verschoben
HTML zu LaTeX: gewisse kaputte Konstrukte vom CKEditor entfernen
Dazu gehören leere Listen <ul></ul> oder Paragraphen mitZeilenumbrüchen und non-breakable spaces <p><br><br> </p>
Factur-X/ZUGFeRD: in »Factur-X/ZUGFeRD« umbenannt
Mit ZUGFeRD-Standard Version 2.1.1 ist der offizielle Name desEU-Standards schlicht Factur-X. ZUGFeRD ist nur noch der toleriertealte Name.
In der Oberfläche ist nun überall von »Factur-X/ZUGFeRD« die Rede....
div_tag aus L in Presenter verschoben
ZUGFeRD: Namen der eingebetteten Datei richtig setzen
'ucfilespec' wird erst ab PDF 1.7 unterstützt, was wir nichterzeugen. Daher wurde bisher der Name der temporären Datei auch im PDFals Dateiname verwendet.
Jetzt wird korrekt »ZUGFeRD-invoice.xml« als Name des Anhangs im PDF...
Kosmetik: Einrückung
Hinzufügen der Option ajax_return zu L.sortable_element
ZUGFeRD: nicht nach \documentclass, sondern \begin{document} suchen
\documentclass steht evtl. in einem Include.
PDF/A-Erzeugung: die XMP-Metadaten selber erzeugen
PDF-Erzeugung: alles in temporärem Unterverzeichnis von users erledigen
Das vermeidet Kollisionen, wenn Dateien mit festem Namen wie`pdfa.xmp` für PDF/A erzeugt werden müssen.
PDF-Erzeugung: Support fürs Erzeugen von PDF/A-konformen PDFs
Es gibt einen Rose-DB-Helfer `S:D:H:PDF_A`, der die erforderlicheStruktur für `SL::Template::LaTeX` (via`$form->{TEMPLATE_DRIVER_OPTIONS}->{pdf_a}`) erzeugt. Der Helfer istfür die üblichen Belegklassen (`S:D:{Order,DeliveryOrder,Invoice}`)...
Vorlagen: (kaputte) Unterstützung für XML-Vorlagen entfernt
Außerdem ein paar Vorkommen der schon seit längerem entfernte Winston& Taxbird entfernt.
LaTeX: openin_any weniger restriktiv
Die Einstellung openin_any aus texmf.cnf (oder der Umgebungsvariablegleichen Namens) kontrolliert, aus welchen Pfaden (PDF)LaTeXQuelldateien liest: a = any liest aus beliebigen Verzeichnissen, r =restricted nicht aus Dot-Verzeichnissen und p = paranoid nur aus...
LaTeX-Escaping: gewisse Formen von »no line to end here« vermeiden
Passiert, wenn im HTML so ein Konstrukt existert:
…Text</p><p> <br>
Das wird zu einem Paragraphen, einem Leerzeichen und einem forciertenZeilenumbruch:
----schipp----Text
\newline...
Presenter::Tag::link - umbenannt in link_tag
um Namenskonflikte mit dem link builtin zu vermeiden
LaTeX-Druck: Newlines nicht entfernen
LaTeX-Druck: Unicode-Control-Zeichen und nicht druckbare Zeichen entfernen
Filtert z.B. das »bidirectional left-to-right«-Kontroll-Zeichen raus,an dem sich LaTeX verschluckt.
Presenter::Tag: date_tag aus Plugin/L verschoben
Presenter::Tag: textarea_tag aus Plugin/L verschoben
Presenter: Sub-Presenter auf Funktional geändert
1. alle Sub-Presenter aus dem SL::Presenter Namespace geschmissen
2. Keine ungefragten @EXPORTs mehr, nur noch @EXPORT_OK
3. Alle Methoden sind auf Funktionen umgeschrieben (kein $self mehr)
4. Die benötigten Methoden von Sub-Presentern müssen jetzt direkt importiert...
kivi.Validator: date_tag angepasst und input_number_tag eingeführt
AreaInputTag: kleines Icon neben Input zum Umschalten auf Textarea
In Masken, in denen es keinen »Erneuern«-Button gab (neuerArtikelcontroller), hatten die Benutzer*innen somit auch keineMöglichkeit, aus dem normalen Input eine Textarea zu machen. Dies hier...
SL::Template::*: Form::template direkt nutzen, nicht mehr Form::init_template
Form::init_template wurde bei der Umstellung entfernt, bei der nurnoch die eine Template-Instanz im SL::Presenter genutzt wird, und Formkeine eigene mehr beinhaltet.
Presenter: mehr Funktionen von L in Tag-Presenter verschieben
Datumvalidierung bei ENTER, d.h bei onchange, nich bei onblur.
Beim Bestätigen der Datumseingabe mit ENTER statt mit TAB wird die Funktion nicht getriggert,und ungültiges Datum wird übernommen.
OnBlur Event für alle Datumsfelder auf OnChange umgestellt.
Presenter: button_tag, submit_tag, ajax_submit_tag von L nach SL::Presenter::Tag verschoben
Form: globals nicht mehr beim Drucken in Form ablegen
Presenter: hidden_tag, javascript, checkbox_tag von L → Presenter::Tag verschoben
Damit sind diese Funktionen auch direkt aus Perl-Code verfügbar, und manmuss nicht mehr das unsägliche CGI benutzen, um Checkboxen zu rendern.
HTML-zu-LaTeX: diverse Sonderfälle bzgl. Zeilenumbrüchen behandeln
Zeilenumbrüche an verschiedenen Stellen sorgten dafür, dass LaTeX dieFehlmerldung »There's no line to end here« ausspuckte. Die folgendenSonderfälle werden nun abgefangen und in \vspace*-Anweisungen...
Revert "JavaScript-Plugin: auch als Filter einsetzen können"
Dies revertet Commit 20d730acdbb52b5b75af783aa010609e25b73024. Grundist, dass aus bisher nicht zu analysierenden Gründen in manchenSituationen der Template-Toolkit-Compiler oder eine andere Komponente...
JavaScript-Plugin: auch als Filter einsetzen können
Rückgabewert von system-Aufrufen prüfen und ggf. Fehler ausgeben.
OpenDocument-Template: Umwandlung von HTML-Feldern gefixt
OpenDocument hat gewisse Probleme mit Verschachtelung von gewissenKonstrukten, z.B. kein <text:p> innerhalb von <text:p><text:span>. DieHTML-Felder aber sind immer in ein <p>…</p> eingeschlossen....
Druck: Bei template-toolkit auch die globals setzen
Project-Picker basierend auf Part-Picker
OpenDocument Druck: foreach Konstrukte korrekt ausschneiden
$&, $' und $` grösstenteils entfernt.
L.radio_button_tag: value in id mit einbeziehen
Neues Feature: Chartpicker
Praktisch komplett analog zum Partpicker, danke Sven für diePionierleistung!
Es gibt natürlich ein paar Unterschiede bei den Filteroptionen, z.B.kann man im Popup nur bebuchte Konten anzeigen lassen, oder dieErgebnisliste nach der Kontenart einschränken. Es wird auch immer nur...
CustomerVendor: Picker nach Art von PartPicker
- reinit_widgets fähig- Tab und Enter atomar- unterstützt onChange und set_item:CustomerVendorPicker trigger- unterstützt fat_set_item
L.radio_button_tag: id erhalten wenn sie schon vorher gesetzt ist.
L: Eindeutige ids für radio_tag wiederhergestellt.
Die waren in da2fecb453416b3731a896ab6d35e9992be3d9eb kaputtgegangen.
L: Parameterextraktion dreier Funktionen gefixt
Template übergibt Hash-Parameter als Hash-Ref, nicht direkt als Hash.
LaTeX-Escaping von HTML: Newlines am Ende entfernen
KiviLatex-Template-Plugin: leere Listen entfernen
Das sind Einträge, die im HTML so aussehen: <ul> </ul> LaTeX schmeißtbeim Äquivalent (\begin{itemize} \end{itemize}) Fehler. Kann z.B. viaCopy & Paste aus LibreOffice passieren.
KiviLatex-Plugin: Dokumentation ergänzt
KiviLatex-Plugin: \uline{…} aus ulem-Package für »Unterstrichen« nutzen
Das Standard-\underline{…} setzt den Text in eine \hbox. Nebenwirkungist, dass der Text darin weder der Silbentrennung noch dem Wortumbruchunterworfen wird.
Plugin LxLatex in KiviLatex umbenannt
Template-Plugin LxLatex: neue Funktion filter_html()
Konvertiert HTML nach LaTeX.
Refactoring: SL::Template: Parameterübergabe als Hash, nicht positionsabhängig (Teil 2)
HTML-zu-LaTeX/OpenDocument: durch normale Leerzeichen ersetzen
SL::Template::OpenDocument: Unterstützung für HTML-codierte Felder
SL::Template::LaTeX: Unterstützung für HTML-codierte Felder
SL::Template: Optionen von den Contrllern zum eigentlichen Template-Modul durchleiten
Refactoring: SL::Template: Parameterübergabe als Hash, nicht positionsabhängig
Pflichtenhefte: Unterstützung für an Textblöcke angehängte Bilder
areainput implementierung von cetaq übernommen
L-Plugin: Hilfsfunktion is_rdbo($obj) zum Testen ob $obj von einem RDBO ableitet
customer_picker: name leer lassen, damit es nicht mit assign_attributes kollidiert
2. Teil zu: Winston-Export, Taxbird-Export und Latex-Export für UstVA entfernt
L.pm um for_submit erweitert und in Kundenvorlage erweitert: #2386
Code von Sven übernommen. Ohne das for_submit wurde bei abgewähltenCheckboxen nichts übertragen (auch keine 0), so daß Rose die Spalte auchnicht aktualisiert hat. Dies wurde durch das Hinfügen von Hiddens...
BackgroundJobHistory getmodels
BackgroundJob models
Erste Version GetModels rewrite
known bugs:disable pagination funktioniert nichtcompiletime optimizations werden noch nicht benutztdoku fehlt
Template: as_list-Methode zum Forçieren vom Listenkontext
jqModal-Dialoge durch jQuery-UI-Dialoge ersetzen
Javascript escape nach Ecmascript Spec.
Es gab einen Eckfall mit CR wo das kaputt gegangen ist, Spec kenntnoch als weitere Randfälle TAB, VT, ' und BS
JavaScript-Plugin: Carriage returns escapen
ClientJS: automatisch Date- und Partpicker nach AJAX-Request initialisieren
Doku, picker nach Presenter verschoben
Part Picker
L.date_tag: Möglichkeit, "class" zu setzen