Ankündigung

Einklappen
Keine Ankündigung bisher.

Tabletree Widget optimieren

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Tabletree Widget optimieren

    Das Tabletree Widget hat irgendwie noch einige Macken, die ziemlich hinderlich sind und zu Fehlern in der Erfassung führen.

    z.B. Tags / Seitenwähler in der Mehrfachauswahl
    Wenn hier einzelne Tags/Seiten nicht sichtbar sind (z.B. andere Hierarchie-Ebene geöffnet oder über die Suche eingeschränkt) dann werden nur die aktuell sichtbaren Einträge übernommen. Alle anderen werden entfernt. Darüber stolpern immer wieder die Redakteure, weil zuvor angehakte Elemente entfernt werden.

    Lässt sich das beheben?

  • #2
    Im Seitenwähler kommt Contaos normaler DCAPicker zum Einsatz. Das Tabletree dient nur den Tags.

    z.B. andere Hierarchie-Ebene geöffnet oder über die Suche eingeschränkt)
    Nun ja, das sind aktiv gesetzte Filter, die auch aktiv zurückgesetzt werden können.
    Gleiches in der Seitenstrukur oder in jeder Listenansicht in Contao. Wenn man die Seitenstrukur auf einen Zweig reduziert, sind natürlich alle anderen weg. Oder wenn man nach einem bestimmten Modultyp filtert, sind natürlich auch die anderen weg

    Was genau schwebt dir denn vor?
    Zuletzt geändert von Tim; 10.02.2021, 11:57.
    http://www.premium-contao-themes.com

    Kommentar


    • #3
      Na, mir schwebt vor, dass bestehende Einträge nicht gelöscht werden, wenn ich über die Suche neue Einträge ergänze.
      Typischer Usecase sind hier verwandte Produkte über Tags.

      Im Produkt sind verwandte 1, 5 und 7 bereits ausgewählt.

      Dann will der Redakteur das verwandte Produkt 344 ergänzen.
      Da es über 500 Produkte gibt nutzt er die Suche, um sein Produkt zu finden, wählt es aus und speichert.
      Danach sind 1,5,7 weg!

      Wenn das neue Produkt gewählt wird und anschließend die Suche geleert, dann ist das neue Produkt nicht mehr ausgewählt, bringt also nix...
      Beim Seitenwähler im Grunde dasselbe. Die Suche ist so eigentlich sinnlos.

      Es sollten zumindest die bestehenden schon gewählten und gespeicherten Einträge erhalten bleiben bis ich sie aktiv demarkiere.

      Kommentar


      • #4
        Die vorher gewählten Einträge sind im Widget vorausgewählt. Es wird ergänzt zumindest bei einer Mehrfachauswahl.

        Wenn dann die Suche benutzt wird, filtert man natürlich. Hier sollen die bereits gespeicherten Einträge weiterhin sichtbar bleiben, korrekt? Quasi aus der Filterung exkludiert werden, damit sie weiterhin als gewählt übergeben werden.

        Beim Seitenwähler im Grunde dasselbe.
        Korrekt. Jedes Contao-Widget arbeitet auf diese Weise. Es sind quasi Checkboxes, die dann nicht mehr ausgewählt sind, weil sie nicht existieren. Du wünscht dir ein persistentes Auswahlsystem.

        Es sollten zumindest die bestehenden schon gewählten und gespeicherten Einträge erhalten bleiben bis ich sie aktiv demarkiere.
        Ich verstehe. Ich weiss nicht, ob sich das seltsam anfühlt. Das muss man mal durchspielen. Technisch wäre es recht einfach gelöst mit einem load und save callback für das Feld.
        Beim Laden aktuelle Werte zwischenspeichern. Beim Speichern mit den neuen abgleichen.
        Zuletzt geändert von Tim; 10.02.2021, 13:57.
        http://www.premium-contao-themes.com

        Kommentar


        • #5
          Das wäre zumindest ein Ansatz, der funktionieren könnte.
          Beim Seitenwähler wäre das entsprechend über die Hierarchie mit zu berücksichtigen.

          Kommentar


          • #6
            Zitat von eblick Beitrag anzeigen
            Das wäre zumindest ein Ansatz, der funktionieren könnte.
            Beim Seitenwähler wäre das entsprechend über die Hierarchie mit zu berücksichtigen.
            Der Seitenwähler ist Contao-Kernelement. Hier wäre ein Feature Request bei Contao einzureichen.
            Die Funktion kann aber recht einfach über die callbacks für ein Feld implementiert werden. Ich würde es auch eher als Feld-Feature betrachten, nicht als Widget-Feature. Die Reduzierung der Auswahlen im Widget finde ich eigentlich gut so und es sieht komisch aus wenn man nach "Äpfel" sucht und zusätzlich "Birnen" bekommt
            http://www.premium-contao-themes.com

            Kommentar


            • #7
              Das mit der Suche sehe ich auch so. Eine Suche soll Suchergebnisse liefern.
              Damit sollte aber dennoch eine Lösung des unbeabsichtigten Löschens gefunden werden.
              Es fühlt sich definitiv komisch an, wenn ich mehrere Seiten/Tags gespeichert hatte und alle gelöscht werden, sobald ich über die Suche neue hinzufüge.

              Kommentar


              • #8
                Ich sehe das große Problem beim Leeren der Auswahlen.

                Wenn der Benutzer seine vorgewählten Auswahlen aufhebt, wird das System es nicht verstehen können und mit den vorher gespeicherten Auswahlen wieder füllen. Das wird ebenfalls sehr verwirrend.
                Die Checkboxen ala "Auswahl aufheben" senden keinen Status. Sie setzen per JS entweder alle Auswahlen / oder leeren. Man kann sicher mit JS Gehacke und Cookie/Localstorage Zwischenspeicherungen ansetzen und damit Brücken bauen, aber ehrlich...

                Ich sehe folgendes als praktikabel: Konsequent sagen: Kommt vom Widget keine Auswahl, wird weiterhin leer gespeichert. Kommt eine Auswahl wird gemerged. Soweit sollte man einen Radakteuer dann auch schulen können, dass nach eventueller Filterung/Suche zumindest etwas ausgewählt werden sollte oder einfach das Fenster ohne Auswahl bestätigen geschlossen wird (quasi ohne Speicherung)
                Zuletzt geändert von Tim; 11.02.2021, 08:52.
                http://www.premium-contao-themes.com

                Kommentar


                • #9
                  Also nach vielen Jahren Redakteursschulung kann ich dir nur eins sagen. Der Großteil ist extrem widerstandsfähig. Ich meine auch, dass hier die Logik/Usability vor der Schulung kommen muss und Fehlerquellen soweit möglich vermieden werden sollten.

                  Abgesehen davon ist wie gesagt die Suche dann eher komplett unnötig und führt zu den Fehler und sollte im Zweifel wahrscheinlich besser deaktiviert werden. Ansonsten werden ja alle bestehenden Einträge gelöscht.

                  In diesem Fall ist das Aufheben von Vorauswahlen 1. sehr viel seltener (vor allem alle deaktivieren) 2. sprichst du hier einen weiteren Punkt an, der ziemlich unlogisch ist und immer wieder zu Rückfragen führt -> um alle zu deaktivieren müssen erst alle ausgewählt werden um sie dann alle zu löschen. Auf die Idee muss man erstmal kommen ;-) Ist aber wohl eher ein Contao Ding, nehme ich an.

                  Die Idee, dass vorhandene Einträge grundsätzlich erhalten bleiben, bis sie aktiv gelöscht werden wäre aus meiner Sicht der beste Kompromiss, wenn sich das technisch umsetzen ließe. Das würde zumindest die Suchfunktion retten, die bei vielen Einträgen definitiv notwendig ist.



                  Kommentar


                  • #10
                    Seitenauswahlen machen es inzwischen so. Die Grundidee ist wie hier bequatscht. Quasi die Zwischenspeicherung des aktuellen Werts beim Speichern (save_callback) und dann im load_callback gemerged.

                    Lad mal die 1.6.5 des Tabletree dazu, damit der load_callback sauber greift im Ajax. https://github.com/timgatzky/pct_tab...ases/tag/1.6.5

                    Ich hab das mal testweise gebaut: "cc_test.tags_werkzeuge" ist meine Tabelle und Feld.

                    dcaconfig.php

                    Code:
                     if (is_array($GLOBALS['TL_DCA']['cc_test']['fields']['tags_werkzeuge'])) {
                        $GLOBALS['TL_DCA']['cc_test']['fields']['tags_werkzeuge']['save_callback'] = array(array('cc_test_helper', 'rememberValues'));
                        $GLOBALS['TL_DCA']['cc_test']['fields']['tags_werkzeuge']['load_callback'] = array(array('cc_test_helper', 'mergeValues'));
                    }
                    
                    if (!class_exists('cc_test_helper', false)) {
                        class cc_test_helper extends Backend
                        {
                           public function rememberValues($varValues, $objDC)
                            {
                                $objSession = System::getContainer()->get('session');
                                $strSession = 'remeberValues_' . $objDC->table . '_' . $objDC->field;
                                $objSession->set($strSession, $varValues);
                                return $varValues;
                            }
                    
                            public function mergeValues($varValues, $objDC)
                            {
                                $varValues = StringUtil::deserialize($varValues);
                    
                                $strSession = 'remeberValues_' . $objDC->table . '_' . $objDC->field;
                                $objSession = System::getContainer()->get('session');
                    
                                $arrFromSession = StringUtil::deserialize($objSession->get($strSession)) ?: array();
                    
                                // merge
                                if (empty($varValues) === false) {
                                    $varValues = array_merge($varValues, $arrFromSession);
                                }
                    
                                return array_unique($varValues);
                            }
                        }
                    }
                    ---

                    Ich mach mal ein Issue für die Tags (Mehrfachauswahl)
                    Zuletzt geändert von Tim; 11.02.2021, 10:05.
                    http://www.premium-contao-themes.com

                    Kommentar


                    • #11
                      Ich habe das Feature mal in die 1.4.0 gesetzt (dev) https://github.com/timgatzky/pct_cus...ree/dev_1.14.0
                      http://www.premium-contao-themes.com

                      Kommentar


                      • #12
                        Hab beides installiert und getestet. Works fine!!!
                        where's a will there's a way THX!

                        Kommentar

                        Lädt...
                        X