Suchfunktion - Autocomplete

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • rezico
    Contao-Fan
    • 04.01.2011
    • 450

    #166
    Hallo leo,
    also ich habe die Tage des ganze nun ausgiebig getestet und bin leider nach wie vor bei dem Ergebnis dass es nicht am Megamenu und auch nicht an slideshow2 liegt.
    AutoCompleter verhindert nur die Funktion der beiden extensions und vermutlich auch jeder anderer.

    Im Firefox bekomme ich den Fehler:
    this.element is null in der ac_core.js in zeile 1, womit ich aber leider nichts anfangen kann.

    Evtl. hilft dir das ja weiter.

    Danke !
    Contao ist schon was Feines...

    Kommentar

    • rezico
      Contao-Fan
      • 04.01.2011
      • 450

      #167
      Ich nochmal:
      vielleicht hilft dir das noch weiter:





      Viel Erfolg!
      Contao ist schon was Feines...

      Kommentar

      • rezico
        Contao-Fan
        • 04.01.2011
        • 450

        #168
        Hiho,
        ich nochmal -
        gibt es zufällig schon was neues? Hat es jemand zum laufen bekommen?
        Hab das ganze jetzt auch mit der aktuellsten Github Version und Contao 2.11 auf einer völlig anderen Seite getestet (ohne Schnickschnack) und bekomme den selben Fehler (s. Screenshots)

        Würde mich wirklich sehr über Hilfe bzw. Feedback freuen!

        Danke!
        Contao ist schon was Feines...

        Kommentar

        • rezico
          Contao-Fan
          • 04.01.2011
          • 450

          #169
          Okay, natürlich respektieren wir das Falls jemand eine Ahnung hat, wie man den Fehler beheben kann, wäre ich dem jenigen sehr dankbar, wenn er seine Lösung hier postet
          Nichts desto trotz sag ich mal danke Leo und hoffe dir in Zukunft ein bisschen weniger Stress, da du momentan scheinbar wirklich ziemlich viel zu tun hast (siehe Uhrzeit ).

          Danke!
          Contao ist schon was Feines...

          Kommentar

          • deerwood
            Contao-Fan
            • 24.11.2009
            • 344

            #170
            Moin alle,

            Zitat von leo.unglaub
            Ich habe mir das mal angesehen und der Code ist VIEL aufgeräumter als die alte Version und jedenfalls der richtige Ansatz.

            Das gemeldete JS Problem beim Laden der Seite war tatsächlich einfach zu fixen (und hat nichts mit anderen Erweiterungen zu tun): bei der Erzeugung des JS Strings "... new Autocompleter.Request.JSON(\'ctrl_keywords_' . $this->strFormId ..." fehlte einfach nur der rot markierte Prefix [ac_core].

            Allerdings gibt es noch mindestens 2 weitere Probleme:
            1. das REQUEST_TOKEN in 2.10.x ... das könnte ich hinbekommen und einen Patch dafür liefern. So wie es ist, kommt halt 400 Bad Request "Invalid Request Token" zurück. Als ersten Test habe ich mein ajax.php so gepatcht, dass es den Token Check umgeht, dann kommt allerdings "500 Internal Server Error" zurück ... und das liegt daran:
            2. in [ac_search_index] wird der [ac_core]-Hook 'getAutoCompleterChoices' auf array('AcSearchIndex', 'getChoices') gesetzt. Aber weder die Klasse noch eine passende Methode existieren


            @Leo: keinen zusätzlichen Stress! Aber FALLS Du bereits diese Klasse/Methode bei Dir rumfliegen hast, so unfertig sie auch sein mag, gib sie mir. Git, PM oder email rehfeld@georg-rehfeld.de.

            Ansonsten würde ich versuchen, aus der alten Erweiterung die Methode "ac_search_index.keywords()" als Vorlage zu nehmen und anzupassen.

            Liebe Grüße,
            Georg

            Kommentar

            • deerwood
              Contao-Fan
              • 24.11.2009
              • 344

              #171
              Erste laufende Version, Tester gesucht

              Moin,

              hat deutlich länger gedauert als geplant, aber hier erste Versionen von [ac_core] und [ac_search_index], die für mich im Prinzip funktionieren. Siehe Anlagen.

              - Installation:
              1. Backups machen (DB und die Originale von [ac_core] und [ac_search_index], falls bereits installiert)
              2. falls [auto_completer] (die alte, obsolete Version) installiert ist: komplett deinstallieren
              3. die Erweiterung [ajax] ganz normal aus dem Repository installieren. Ohne diese Erweiterung geht natürlich garnichts.
              4. die beiden ZIPs in der Anlage auspacken und jeweils in "system/modules" hochladen
              5. falls "system/modules/ac_search_index" zuvor noch nie installiert war, unbedingt ein DB Update machen
              6. im BE ein Modul vom Typ "Suchmodul - Auto Vervollständigung" anlegen, konfigurieren und im Layout/einem Artikel einbinden

              Dann sollten die beiden Erweiterungen funktionieren und ein Ergebnis zeigen, ähnlich zum Bild in der Anlage (wie Ihr aber seht, ist das Beispiel CSS noch nicht perfekt, da arbeite ich dran).

              Die meiste Zeit hat mich das "Token per Request" in 2.10.x gekostet. Ich denke aber, ich habe eine brauchbare Lösung dafür gefunden, die Erweiterungen sollten von 2.7.x - 2.11.x funktionieren. Für 2.10.x und neuer braucht es eine zusätzliche JS Klasse, die sich um das Auspacken der JSON Antwort kümmert. Dafür habe ich nicht das Original JS geändert, sondern eine zusätzliche kleine JS Datei gemacht. Einzige Schwäche der aktuellen Lösung: falls man (in 2.10.x) auf einer Seite mit einem POST Formular ist, das Suchfeld aber z.B. in rechter/linker Spalte sichtbar ist, man dort 25 oder mehr AJAX Requests/Lookups auslöst, dann aber garnicht sucht, sondern das POST Formular absendet, dann wird man wohl die "Invalid Request Token" Meldung bekommen.

              Hier meine Änderungen in Kurzform:
              • Präfix 'ctrl_keywords_' hinzugefügt, um JS Fehler zu vermeiden bzw. das Lookup zu triggern
              • json_encode() ausgebaut, wird von ajax.php gemacht
              • REQUEST_TOKEN unterstützt
              • fehlende Klasse/Methode AcSearchIndex::getChoices() hinzugefügt, angelehnt an die entsprechende Methode aus der alten Erweiterung, aber schon deutlich modifiziert
              • Beispiel CSS aus der alten Erweiterung wird mitgeliefert und eingebunden, Einbindung kann aber mit unset($GLOBALS['TL_CSS']['ac_search_index']) in localconfig.php (?) abgeschaltet werden
              • Formular Template an das Standard Suchformular angepasst (accessibility, Anzeige der Keywords)

              Zum Lookup: Sortierung ist zur Zeit erst nach Relevanz, dann nach Name. Evtl. wäre eine Option im BE wünschenswert, um nach Name zu sortieren? Die Eingabe wird auch nur am Anfang der Worte gefunden, eine Option zur Suche auch im Wort wäre wohl wünschenswert. Diese beiden Optionen wären relativ leicht einzubauen. Ich persönlich hätte noch gern die Möglichkeit, eine Referenzseite angeben zu können, so dass man Lookups nur aus Teil-Bäumen der Site bekommt. Die normale Contao Suche kann das ja auch. Aufwand dafür kann ich noch nicht abschätzen.

              Ich habe bisher nur unter 2.10.4 getestet und auch noch nicht alle Options-Kombinationen. Wäre schön, wenn sich Tester finden, die auch andere Contao Versionen erproben. Und Rückmeldung geben!

              LG, Georg

              PS: ich bin mit git noch nicht ausreichend vertraut, deshalb kann ich keinen Pull Request machen. Das müsste gegebenenfalls jemand anderes übernehmen (oder Leo verwendet halt die ZIPs)
              Angehängte Dateien

              Kommentar

              • rumpelsepp
                Contao-Nutzer
                • 13.03.2012
                • 74

                #172
                Serwus,

                Google Chrome 17 - Contao 2.11.1
                Autocomplete funktioniert nicht -> Uncaught TypeError: Cannot call method 'setProperty' of null

                Firefox 11 - Contao 2.11.1
                Funktioniert ebenfalls nicht, zusätzlich blendet er beim Firefox den Löschen Button nicht ein. In Chrome funktioniert der Button.
                Im Firebug rührt sich gar nichts.

                Hoffe ich konnte helfen.

                Einstellungen waren alle default. Hab nichts angerührt.

                Kommentar

                • deerwood
                  Contao-Fan
                  • 24.11.2009
                  • 344

                  #173
                  Danke für den Bericht.

                  Zitat von rumpelsepp Beitrag anzeigen
                  Serwus,

                  Google Chrome 17 - Contao 2.11.1
                  Autocomplete funktioniert nicht -> Uncaught TypeError: Cannot call method 'setProperty' of null

                  Firefox 11 - Contao 2.11.1
                  Funktioniert ebenfalls nicht, zusätzlich blendet er beim Firefox den Löschen Button nicht ein. In Chrome funktioniert der Button.
                  Im Firebug rührt sich gar nichts.
                  Hmm, bist Du sicher, dass Du BEIDE Zips und auch die ajax Erweiterung installiert hast? Wie man nämlich an der Anzahl der Downloads sehen kann, wurde [ac_core] einmal weniger geladen als [ac_search_index]. Geändert habe ich aber in beiden Erweiterungen.

                  Und was meinst Du mit dem "Löschen Button"?

                  Ach noch ein Hinweis: bisher gibt es nur ein Template "mod_ac_search_index.html5". In der Anlage die beiden fehlenden *.xhtml bzw. *.tpl. Gehören nach system/modules/ac_search_index/templates. Nach auspacken/hochladen müssen dort also alle 3 Templates nebeneinander sein. Und die EN Sprachdateien liefere ich demnächst auch noch nach.

                  Könntest Du einen Link schicken? Meine Testseite funktioniert in Opera 11.61, FireFox 10.0.2, IE 8.0.6001, Chrome 17.0.963.79 m und Safari 5.1.2 unter Windows XP.

                  LG, Georg
                  Angehängte Dateien
                  Zuletzt geändert von deerwood; 15.03.2012, 00:37.

                  Kommentar

                  • xtra
                    Maintainer
                    • 02.07.2009
                    • 2007

                    #174
                    Zitat von deerwood Beitrag anzeigen
                    Einzige Schwäche der aktuellen Lösung: falls man (in 2.10.x) auf einer Seite mit einem POST Formular ist, das Suchfeld aber z.B. in rechter/linker Spalte sichtbar ist, man dort 25 oder mehr AJAX Requests/Lookups auslöst, dann aber garnicht sucht, sondern das POST Formular absendet, dann wird man wohl die "Invalid Request Token" Meldung bekommen.
                    Pseudocode:
                    Code:
                    new Request({
                    //...
                    onSuccess: function(... json ...)
                    {
                      $(document.getElementsByName('REQUEST_TOKEN')).each(function(el){
                        el.value=json.token;
                      });
                      // do something with json.content.
                    }
                    }).send();
                    Sollte dein Problem beheben.
                    Bedenke stets: Wenn Du ungenaue oder unzureichende Angaben machst, so koennte dies die Bearbeitung deiner Frage endlos verzoegern (oder sogar dazu fyhren, dass ich zu viel nachdenken muss und die Antwort vergesse!). Kein Support per PN.

                    Kommentar

                    • rumpelsepp
                      Contao-Nutzer
                      • 13.03.2012
                      • 74

                      #175
                      Zitat von deerwood Beitrag anzeigen
                      Hmm, bist Du sicher, dass Du BEIDE Zips und auch die ajax Erweiterung installiert hast? Wie man nämlich an der Anzahl der Downloads sehen kann, wurde [ac_core] einmal weniger geladen als [ac_search_index]. Geändert habe ich aber in beiden Erweiterungen.
                      Der Zähler war vor meinem Download bereits ungerade, ich hab beide Plugins und die ajax Erweiterung installiert.

                      Zitat von deerwood Beitrag anzeigen
                      Und was meinst Du mit dem "Löschen Button"?
                      Wenn ich in das Formularfeld was eintippe, erscheint im Chrome ein blaues x am rechten Rand, mit dem ich die Eingabe löschen kann. Dies funktioniert im Firefox nicht.

                      Zitat von deerwood Beitrag anzeigen
                      Könntest Du einen Link schicken? Meine Testseite funktioniert in Opera 11.61, FireFox 10.0.2, IE 8.0.6001, Chrome 17.0.963.79 m und Safari 5.1.2 unter Windows XP.

                      LG, Georg
                      Im Moment kann ich noch nichts verschicken, aber ich werde nochmal ne Testseite bauen. Diese schick ich dir dann. Vielleicht gibts ja nen Plugin Konflikt oder dergleichen.

                      Kommentar

                      • rezico
                        Contao-Fan
                        • 04.01.2011
                        • 450

                        #176
                        Danke - Danke - DANKE!
                        Es funktioniert bei mir 1a (in allen Browsern).
                        Vielen Dank!
                        Contao ist schon was Feines...

                        Kommentar

                        • rumpelsepp
                          Contao-Nutzer
                          • 13.03.2012
                          • 74

                          #177
                          Zitat von rezico Beitrag anzeigen
                          Danke - Danke - DANKE!
                          Es funktioniert bei mir 1a (in allen Browsern).
                          Vielen Dank!
                          Welche Contao Version hast du?

                          Kommentar

                          • rezico
                            Contao-Fan
                            • 04.01.2011
                            • 450

                            #178
                            2.10.4
                            Habe alles rausgeworfen, Update gemacht, die Zips & Ajax rübergehauen, erneutes Update gemacht - per Systemwartung alles bereinigt, Suchindex neu aufgebaut und es läuft!
                            Contao ist schon was Feines...

                            Kommentar

                            • deerwood
                              Contao-Fan
                              • 24.11.2009
                              • 344

                              #179
                              Danke xtra,

                              Zitat von xtra Beitrag anzeigen
                              Code:
                                $(document.getElementsByName('REQUEST_TOKEN')).each(function(el){
                              Ich habe mir mal angesehen wie Contao 2.10.x das macht und das so übernommen:
                              Code:
                              ...
                              // Update all forms
                              $$('input[type="hidden"]').each(function(el) {
                                  if (el.name == 'REQUEST_TOKEN') {
                                      el.value = response.token;
                                  }
                              });
                              ...
                              Wichtig: die $$ Funktion (statt $). Funktioniert für mich, FireBug zeigt, dass in meinem Testformular das REQUEST_TOKEN aufgefrischt wird. Im Anhang das verbesserte "ac_core_cto.js". Auspacken und das JS nach system/modules/ac_core/html/ac_core_cto.js hochladen (also das vorhandene überschreiben).

                              @rumpelsepp

                              Bei mir zeigt kein Browser ein Lösch-Symbol, auch Chrome nicht. Es gibt meines Wissens auch keine Stelle im JS, das so etwas machen würde. Kann das evtl. ein Feature von Chrome unter OS X bzw. Linux sein?

                              LG, Georg
                              Angehängte Dateien
                              Zuletzt geändert von deerwood; 16.03.2012, 00:29.

                              Kommentar

                              • deerwood
                                Contao-Fan
                                • 24.11.2009
                                • 344

                                #180
                                Zitat von rezico Beitrag anzeigen
                                Es funktioniert bei mir 1a
                                Was ist mit der Positionierung der Ausklapp-Liste bei Dir? Ist die, so wie es sein sollte, direkt unterhalb des Suchfelds, oder mit Abstand, wie in meinem Screenshot? Ich denke nämlich, dass das mitgelieferte CSS an sich OK ist. Offenbar setzt aber das JS von digitarald die Position der <ul>, und das (bei mir) falsch ... irgendwie kann ich das nicht glauben und habe im Moment wohl ein Brett vor dem Kopf.

                                LG, Georg

                                PS zum Beispiel-CSS: einzig die Hintergrundfarbe des aktiven Eintrags in der Liste sollte statt Hell-Gelb eher dezent Hell-Grau sein:
                                Code:
                                li.autocompleter-selected {
                                    background-color: #EEE;
                                }

                                Kommentar

                                Lädt...