Joomla 5 Notice

We are pleased to announce that as of January 29, 2024, all of our Joomla extensions are compatible with Joomla 5.

For all who are still updateing from Joomla 3 to Joomla 4: Joomla 4 Migration instructions are available here:

There is now a separate Documentation for Visforms for Joomla 4 and for Visforms for Joomla 5!

Forum

Visforms Subscription user can ask questions in our forum. Please log in with the relevant user first.
Everybody can access the forum for reading.

Please only ask 1 question per topic.

Berechnete Felder

More
1 year 3 months ago #8743 by remanso01
Berechnete Felder was created by remanso01
Hallo,

ich bins noch mal.
Erst einmal vielen Dank für die letzte Unterstützung hier.
Nun stehe ich für mich vor einem Problem da was mir Kopfzerbrechen bereitet.
Ich möchte für unsere kleine Pensio ein Buchungsformular entwerfen.
Soweit klappt auch alle, zumindest die ersten Felder...
Datumsberechnung geht schon mal.

Zu meiner Überlegung:
Wir haben drei Zimmer mit 6 verschiedenen Preisen (Quasi als Einzelperson oder 2 Personen)
- Nun habe ich ein Selectfeld mit den Zimmern ertsellt. (Pflichtfeld)
- Zwei Datumsfelder Anreise vom und Abreise am...
- Eine berechnetes Feld Übernachtungen
Bis hier geht alles
Dann eine Selectfeld Preise (Hier sind alle Einzelpreise drin)
Jetzt möchte ich gern dass das Auswahlfeld Zimmer Multipliziert wird mit Preise und Übernachtungen.

Und da hackt es bei mir.

Muss ich nun für jedes Zimmer ein neue Feld mit Preis erstellen oder geht das auch anders?

Leider kann ich noch kein Link zur Seite nennen, da ich alles Local Vorbereite.

Viele Grüße und im Vorraus Danke
Dirk

More
1 year 3 months ago #8744 by remanso01
Replied by remanso01 on topic Berechnete Felder
Hallo,

hat sich erledigt.
Wenn man zu bl... ist eine Klammer richtig zu setzen braucht man sich nicht wundern.

Vorher:
([ROOMS]*[DAYS]))

Nachher:
([ROOMS]*([DAYS]))

Eine Frage dennoch...
ist es möglich nach der Berechnung eine Währung bzw. Tag(e) einzutragen?

Und die Summe mit Dezimaltrenner für Tausend darzustellen?

Beispiel
([ABREISE]-([ANREISE])) = 10 Tage
([ROOMS]*([DAYS])) = 1.210.000 Guaranì

Viele Grüße
Dirk

More
1 year 3 months ago - 1 year 3 months ago #8749 by Administrator IV
Replied by Administrator IV on topic Berechnete Felder
Hallo Dirk,

danke für deine echt interessante Anwendungs-Frage!

Es ist beides möglich:
- nach der Berechnung eine Währung bzw. Tag(e) einzutragen
- die Summe mit Dezimaltrenner für Tausend darzustellen.

Es geht aber nicht über die Feldkonfiguration alleine.
Du musst den folgenden, wie ich denke weitgehend selbsterklärenden, Custom JavaScript-Code in die Seite einbinden:
Code:
jQuery(document).ready(function() {     jQuery('.bind-days').on('change', function(){         let value = jQuery(this).val();         jQuery(this).val(value + ' Tage(e)');     });     jQuery('.bind-price').on('change', function(){         let value = jQuery(this).val();         jQuery(this).val(numberWithCommas(value) + ' Guaranì');     }); }); function numberWithCommas(x) {     return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","); }


Und folgendes in der Feld-Konfiguration einstellen (siehe mein Test-Formular).

- Feld 'days':
Reiter 'Grundeinstellungen', Parameter 'Formel' = [ABREISE]-[ANREISE]
Reiter 'Grundeinstellungen', Parameter 'Genauigkeit' = 0
Reiter 'Erweitert', Parameter 'CSS Klasse des Feldes' = bind-days

- Feld 'price':
Reiter 'Grundeinstellungen', Parameter 'Formel' = ([ABREISE]-[ANREISE])*[ROOMS]*2130
Reiter 'Grundeinstellungen', Parameter 'Genauigkeit' = 2
Reiter 'Grundeinstellungen', Parameter 'Dezimaltrenner' = Punkt
Reiter 'Erweitert', Parameter 'CSS Klasse des Feldes' = bind-price

Der Wert '2130' ist halt ein fiktiver Umrechnungsfaktor mit der Einheit Preis pro Zimmer und Tag.
Die Formeln sind weniger fehleranfällig und leichter lesbar, wenn du nur genau die Klammern setzt, die mathematisch notwendig sind.

Wichtig:
Alle Berechnungsfelder, die nach der Berechnung einen Text an den berechneten Zahlenwert angehängt bekommen, dürfen nicht mehr in anderen Berechnungsfeldern verwendet werden.
Daher kommt der Ausdruck '[ABREISE]-[ANREISE]' in der Formel für Feld 'price' ein zweites Mal vor und nicht [days].
Denn der zusätzlich angehängte Text würde bei Weiter-Verwendung in einem anderen Berechnungsfeld zu einem Fehler führen, da als Eingabe-Objekte für Berechnungsfelder nur Zahlen vorkommen dürfen.

Mein Test-Formular sieht dann so aus:
vi-solutions.de/forum-uploads/calculate-form.png

Gruß, Ingmar

:idea: I recommend you the new and up-to-date documentation for Joomla 4:
docs.joomla-5.visforms.vi-solutions.de/en/docs/
Most of this also applies retrospectively to Joomla 3.
Please only ask 1 question per topic :-).

:idea: Ich empfehle Dir die neue und aktuelle Dokumentation für Joomla 4:
docs.joomla-5.visforms.vi-solutions.de/docs/
Das meiste gilt rückwirkend auch für Joomla 3.
Bitte immer nur 1 Frage pro Thema stellen :-).
Last edit: 1 year 3 months ago by Administrator IV.

More
1 year 3 months ago - 1 year 3 months ago #8750 by Administrator IV
Replied by Administrator IV on topic Berechnete Felder
Nachtrag.

Eigenen Custom-JavaScript in Joomla einfügen:
Ich gehe davon aus, dass du weißt, wie du Custom-JavaScript in deine Joomla-Instanz einfügen kannst.
Dafür gibt es zahlreiche Möglichkeiten, etwa im Rahmen von Joomla oder deines Templates.

Mit Visforms geht es mit der Erstellung eines Overrides, in das du dein JavaScript einfügst:
docs.joomla-4.visforms.vi-solutions.de/d...yout-with-overrides/

:idea: I recommend you the new and up-to-date documentation for Joomla 4:
docs.joomla-5.visforms.vi-solutions.de/en/docs/
Most of this also applies retrospectively to Joomla 3.
Please only ask 1 question per topic :-).

:idea: Ich empfehle Dir die neue und aktuelle Dokumentation für Joomla 4:
docs.joomla-5.visforms.vi-solutions.de/docs/
Das meiste gilt rückwirkend auch für Joomla 3.
Bitte immer nur 1 Frage pro Thema stellen :-).
Last edit: 1 year 3 months ago by Administrator IV.

More
1 year 3 months ago #8756 by remanso01
Replied by remanso01 on topic Berechnete Felder
Hallo Ingmar,

erst einmal super vielen Dank für die Hilfe.
Ich habe nun alles so gemacht wie du es beschrieben hast.

Nur mit dem Ablageort der custom.js Datei habe ich schwierigkeiten.
Habe im Rootverzeichnis...
/templates/cassiopeia/html/layouts/com_visforms/layouts/custom.js abgelegt.
Genauso wie es in der Doku beschrieben wurde.
Aber es hat keine Wirkung.

"Mit Visforms geht es mit der Erstellung eines Overrides, in das du dein JavaScript einfügst:
docs.joomla-4.visforms.vi-solutions.de/d...yout-with-overrides/"

Einzige Änderung die ich durchgeführt hatte war
- Feld 'price':
Reiter 'Grundeinstellungen', Parameter 'Formel' = ([ABREISE]-[ANREISE])*[ROOMS]*0
Reiter 'Grundeinstellungen', Parameter 'Genauigkeit' = 0

Da es in Paraguay keine Nachkommastellen gibt (Hier wird auf- oder abgerundet)

Hab ich da etwas falsch gemacht?

Viele Grüße
Dirk

More
1 year 3 months ago - 1 year 3 months ago #8760 by Administrator IV
Replied by Administrator IV on topic Berechnete Felder
Hallo Dirk,

du verwechselst bzw. vermischst die Inhalte und Funktionsweise der beiden Abschnitte der Dokumentation miteinander.
Layout durch Overrides anpassen: docs.joomla-4.visforms.vi-solutions.de/d...yout-with-overrides/
Layout mit CSS anpassen: docs.joomla-4.visforms.vi-solutions.de/d...orm-layout-with-css/

Der Mechanismus mit 'custom.css'  ('custom' im Namen der Datei am richtigen Ort) funktioniert nur für 'Layout mit CSS anpassen'.
Wenn du es mit Visforms machen willst, dann musst du eine kleine PHP-Datei schreiben (siehe unten).
Ansonsten bietet dir eventuell auch dein Template eine Template-spezifische Möglichkeit, dein Custom JavaScript einzubinden.

Für deinen Fall 'Layout durch Overrides anpassen' musst du für die Top-Level PHP Datei ein Override erstellen.
Angenommen du hast das Template 'Cassiopeia'.

1. Kopiere default.php
von components/com_visforms/tmpl/visforms/default.php
nach templates/cassiopeia/html/com_visforms/visforms/default.php
(also unter das Template Verzeichnis des gewählten Templates deiner Joomla Instanz. Hier templates/cassiopeia/)

2. Erzeuge die Datei custom.php (Name ist egal)
templates/cassiopeia/html/com_visforms/visforms/custom.php
mit folgendem Inhalt:
Code:
<script>     jQuery(document).ready(function() {         jQuery('.bind-days').on('change', function(){             let value = jQuery(this).val();             jQuery(this).val(value + ' Tag(e)');         });         jQuery('.bind-price').on('change', function(){             let value = jQuery(this).val();             jQuery(this).val(numberWithCommas(value) + ' Guaranì');         });     });     function numberWithCommas(x) {         return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");     } </script><?php

3. Füge in die Datei default.php
 templates/cassiopeia/html/com_visforms/visforms/default.php
nach Zeile 20 und vor Zeile 22
einen Verweis auf deine neue PHP-Datei von oben ein (custom.php):
Code:
include 'custom.php';

Das sieht an dieser Stelle dann etwa so aus:
Code:
use Joomla\CMS\Layout\LayoutHelper; use Joomla\CMS\Plugin\PluginHelper; use Joomla\CMS\HTML\HTMLHelper; use Joomla\CMS\Layout\FileLayout; include 'custom.php'; if ($this->visforms->published != '1') {     return; }

Die Dokumentation hat hier eine Schwachstelle, die ich beheben werde.
Sie beschreibt allein das Verfahren für Overrides für die einzelnen Controls.
Sie beschreibt noch nicht das Verfahren für allgemeine Änderungen auf Formular-Ebene.

Ich habe hierzu einen Issue angelegt und der Entwicklungs-Liste hinzugefügt:
Issue [VF - 694] Forum: Doku: Addition: Override procedure for general form-level changes
Nach einem zukünftigen Release, welches diesen Punkt enthält, wirst du direkt hier im Thema darüber informiert.

Gruß, Ingmar

:idea: I recommend you the new and up-to-date documentation for Joomla 4:
docs.joomla-5.visforms.vi-solutions.de/en/docs/
Most of this also applies retrospectively to Joomla 3.
Please only ask 1 question per topic :-).

:idea: Ich empfehle Dir die neue und aktuelle Dokumentation für Joomla 4:
docs.joomla-5.visforms.vi-solutions.de/docs/
Das meiste gilt rückwirkend auch für Joomla 3.
Bitte immer nur 1 Frage pro Thema stellen :-).
Last edit: 1 year 3 months ago by Administrator IV.

Moderators: Administrator AVAdministrator IV
Powered by Kunena Forum