Joomla 5 Mitteilung

Wir freuen uns mitteilen zu können, dass seit dem 29. Januar 2024 alle unsere Joomla Erweiterungen mit Joomla 5 kompatible sind.

Für alle die gerade noch von Joomla 3 auf 4 aktualisieren: Anleitungen für die Joomla 4 Migration gibt es hier:

Es gibt nun auch eine eigenständige Dokumentation für Visforms für Joomla 4 und für Visforms auf Joomla 5

Forum

Visforms Subscription Inhaber können in unserem Forum Fragen stellen. Bitte mit dem entsprechenden Benutzer anmelden.
Jeder kann lesend auf das Forum zugreifen.

Bitte stellen Sie nur 1 Frage pro Thema.

Wichtige Angaben für fast jede Frage:
V1: Welche Visforms-Version läuft?
V2: Welche Joomla-Version läuft?
V3: Welche PHP-Version läuft?

Fehlermeldung Edit-Link

Mehr
2 Tage 19 Stunden her #11502 von Schulamt
Fehlermeldung Edit-Link wurde erstellt von Schulamt
Lieber Ingmar,

ich habe bei einem Formular das Problem, dass beim Aufruf der Datenübersicht über die Datenliste eine Fehlermeldung erscheint:Sorry, there was a problem we could not recover from.The server returned a "500 - Whoops, looks like something went wrong."
Das Formular ist genau so konfiguriert wie alle anderen Menüs/Formulare auch, siehe Screenshots. Das Problem trat auch anfangs nicht auf, sondern erst seit die Meldung ausgefüllt wurde.

Eventuell liegt es an der Zahl der Datensätze? 
Es sind 884 Datensätze.

Ich verwende ein Skript in Verbindung mit einem cron-Job auf Datenbankebene, um Datensätze aus dem Frontend zu löschen:

document.addEventListener('DOMContentLoaded', function() {
    // Alle Elemente mit der Klasse 'visicon-publish' suchen
    var icons = document.querySelectorAll('.visicon-publish');
    
    icons.forEach(function(icon) {
        // Die Klasse 'visicon-publish' entfernen
        icon.classList.remove('visicon-publish');
        
        // Eine eigene Klasse hinzufügen (z.B. 'custom-icon')
        icon.classList.add('custom-icon');
    });

    // Alle <a>-Elemente mit den Klassen 'btn btn-micro active visToolTip' suchen
    var buttons = document.querySelectorAll('.btn.btn-micro.active.visToolTip');
    
    buttons.forEach(function(button) {
        // aria-label und data-bs-original-title ändern
        button.setAttribute('aria-label', 'Datensatz unwiderruflich löschen');
        button.setAttribute('data-bs-original-title', 'Datensatz löschen');
        
        // Originalen onclick-Event sichern und entfernen
        var originalOnClick = button.getAttribute('onclick');
        button.removeAttribute('onclick'); // Entfernt das direkte onclick-Attribut

        // Neuen Event Listener hinzufügen
        button.addEventListener('click', function(event) {
            event.preventDefault(); // Verhindert die Standardaktion

            // Bestätigungsdialog anzeigen
            var confirmDelete = confirm("Sind Sie sicher, dass Sie diesen Datensatz unwiderruflich löschen möchten? Der Datensatz wird INNERHALB EINER MINUTE unwiderruflich gelöscht! Bitte warten Sie kurz, bis Sie die PDF-Datei, bzw. die CSV-Datei generieren.");
            
            if (confirmDelete) {
                // Extrahiere die Parameter aus originalOnClick
                var match = originalOnClick.match(/vflistItemTask\('([^']*)','([^']*)', '([^']*)'\)/);
                if (match) {
                    var cb = match[1];
                    var task = match[2];
                    var com = match[3];

                    // Die ursprüngliche Joomla-Funktion mit den extrahierten Parametern aufrufen
                    vflistItemTask(cb, task, com);
                }
            }
        });
    });

    // Nur Elemente mit der Klasse "btn", die NICHT bestimmte andere Klassen enthalten
    var allButtons = document.querySelectorAll('.btn');
    allButtons.forEach(function(btn) {
        // Prüfen, ob der Button NICHT eine der folgenden unerwünschten Klassen hat
        if (!btn.classList.contains('btn-primary') && 
            !btn.classList.contains('btn-micro') && 
            !btn.classList.contains('visToolTip') &&
            !btn.classList.contains('active')) {
            btn.classList.add('custom-button');
        }
    });

    // Tooltips nach den Änderungen neu initialisieren
    var tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]'));
    tooltipTriggerList.forEach(function (tooltipTriggerEl) {
        // Existierenden Tooltip entfernen, falls er bereits initialisiert wurde
        if (tooltipTriggerEl._tooltip) {
            tooltipTriggerEl._tooltip.dispose();
        }
        
        // Tooltip neu initialisieren
        new bootstrap.Tooltip(tooltipTriggerEl);
    });

    // *** NEUE FUNKTION *** Zeilen ausblenden, die <span class="visicon-unpublish"> enthalten
    var rows = document.querySelectorAll('tr'); // Alle Tabellenzeilen durchsuchen

    rows.forEach(function(row) {
        if (row.querySelector('.visicon-unpublish')) { // Prüfen, ob die Zeile das Icon enthält
            row.style.display = 'none'; // Zeile ausblenden
        }
    });
});


Allerdings kommt auch der Fehler, wenn ich meinen Code aus den Webassets entferne. Der Code kann also nicht ausschlaggebend sein.

Die Meldung muss bald bearbeitet werden, die Nutzer können allerdings nicht auf Ihre Datensätze zugreifen.

Woran könnte das liegen?

Viele Grüße
Michael


 

Mehr
1 Tag 19 Stunden her #11506 von Schulamt
Schulamt antwortete auf Fehlermeldung Edit-Link
Das Ticket kann geschlossen werden, ich habe den Fehlfunktion gefunden:


Die Anzeige funktioniert ohne Fehlermeldungen, wenn die Datensätze pro Seite auf maximal "50" eingestellt wird.

Ich hatte hier "Alle" ausgewählt und dann den Fehler erhalten. Auch bei "100" kommt der Fehler beim Aufruf der Datenliste, bzw. werden dann trotz der Auswahl Alle oder 100 nur 25 Datensätze angezeigt und beim Klicken auf die nächste Seite kommt der Fehler.

Evtl. aber ein Bug in Visforms, der ab einer gewissen Anzahl an Datensätzen auftritt?
Folgende Benutzer bedankten sich: Administrator IV

Mehr
19 Stunden 32 Minuten her #11515 von Administrator IV
Administrator IV antwortete auf Fehlermeldung Edit-Link
Hallo Michael,

Danke für die gute Beschreibung und aussagefähigen Screenshots.

Zu: Bug in Visforms, der ab einer gewissen Anzahl an Datensätzen auftritt?

Ich habe ein Formular mit etwa 1000 Datensätzen und ein Formular mit etwa 4000 Datensätzen.

Beide Formulare zeigen
- bei der genannten Einstellung Menü-Konfiguration, Reiter 'Formular-Daten Darstellung', Parameter  'Datensätze pro Seite' = 'Alle',
- in der Frontend Daten-Ansicht mit 10 angezeigten Feldern,
- alle 1000 Datensätzen bzw. alle 4000 Datensätzen,
- ohne Fehler wie erwartet an,
- inklusive den Funktionen 'Filtern' und 'Sortieren' im Frontend.

Die 4000 Datensätzen benötigen
- etwa 4 Sekunden zur Anzeige,
- etwa 5 Sekunden zur Sortierung der Anzeige nach einem Text-Feld.

Der 500er Fehler bei dir und auch die unvollständige Daten-Liste, liegen an deinen Web-Server-Ressourcen deines Hosting-Paketes.
Zu den Web-Server-Ressourcen zählen auch Ausführungszeiten und deren Begrenzungen für PHP-Code sowie Datenbank-Zugriffe.

Liebe Grüße, 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 :-).

Mehr
17 Stunden 26 Minuten her #11517 von Schulamt
Schulamt antwortete auf Fehlermeldung Edit-Link
Lieber Ingmar,

vielen Dank für die Erkläung.
Bei uns sind es jeweils ca. 50 Felder pro Datensatz (weil noch nicht optimiert), das klingt mit den Ladezeiten dann durchaus nachvollziehbar. 

Ich bin nun im Bilde und lasse es der Einfachheit halber erstmal bei der Limitierung auf die 50 Datensätze.

Viele Grüße
Michael

Moderatoren: Administrator AVAdministrator IV
Powered by Kunena Forum