• Welcome to WebsiteBaker Community Forum. Please log in or sign up.
Welcome, Guest
News
Support WebsiteBaker
Your donations will help to:
PayPal
  • Pay for our dedicated server
  • Pay for domain registration
  • and much more!
You can donate by clicking on the button below.

Accordion SyntaxError Twig

Started by dbs, September 12, 2024, 11:01:40 PM  ( Read 24,213 times )

dbs

Hi, Accordion 2.7.1 or 2.7.2 with latest WB and PHP

my console shows:
Uncaught SyntaxError: missing variable name

for this part:
<script>
    /* inserted by view.twig */
    var  = {
        WB_URL : "https://xxx.de",
        AddonUrl : "https://xxx.de/modules/accordion/",
        Addon_Name : "accordion",
        ICONS : "https://xxx,de/modules/accordion/images",
        AJAX_PLUGINS : "https://xxx.de/modules/accordion/ajax",
        LANGUAGE : "DE",
    };
</script>

Seems the ADDONNAME placeholder will not be replaced. The module works.
But the console message triggers me.  ;D

    Gast


    Gast

    problem was a missing variable-definition in View.inc.php

    'ADDONNAME'            => strtoupper($sAddonName),

    see last line of the definition - this code repair v2.7.1 and also v2.7.2 - in the attachement the complete zip for this module as upgrade



    Thanks for reporting  (Y)

      dbs


      dbs

      Noch was bei upgrade:
      [E_WARNING] /modules/accordion/cmd/Upgrade.inc.php:[121]  from /modules/accordion/cmd/Upgrade.inc.php:[167] {closure} "Undefined variable $aDefaults"

        Gast

        hm... versteh ich nicht. Den Fehler hab ich nicht  :|
        $aDefaults ist ein Array mit den Defaulteinstellungen für die Modul-Settings und ist definiert in der init.php im Hauptverzeichnis des Moduls.
        Diese init.php wird in der Upgrade.inc.php eingelesen in Zeile 56 und ab da steht auch das Array zur Verfügung.
        Im weiteren Verlauf des Upgrades wird dann der Inhalt der Modulesettings aus der Datenbank eingelesen und mit den Defaultwerten aus der init.php verglichen. Sind alle Werte (s_name) vorhanden, bleiben die Einstellungen aus der DB erhalten. Fehlt was in der Datenbank oder ist die Tabelle garnicht da, wird sie ergänzt bzw angelegt.

        Die init.php wird von allen Dateien im cmd-Ordner benötigt, die direkt aufgerufen werden können. Wäre sie nicht vorhanden oder nicht lesbar, funktioniert alles nicht

        das wird kompliziert...

        Was steht denn bei dir in Zeile 167 der cmd/Upgrade.inc.php?

          dbs

          Vielleicht kann ich es eingrenzen. Der Fehler wird nur auf einer meiner Installationen angezeigt. Dort wird das Modul derzeit nicht verwendet.
          Nach Klick auf Upgrade erscheint die Meldung:
          Quote[224] upgrade accordion konnte nicht ausgeführt werden
          Danach steht die andere Meldung im errorlog.

          z167:
          if (!($aOldSettings = $selectSettings()))

            Gast

            Quote from: dbs on September 15, 2024, 06:36:24 AM
            Quote[224] upgrade accordion konnte nicht ausgeführt werden

            auf deutsch? oder von dir übersetzt?

            Ersteres wäre gruselig, weil im Modul alles in englisch steht  :wink:

            die [224] wäre die Zeilennummer in dieser Datei Upgrade.inc.php, die wird automatisch generiert, wäre also in jedem Fall zutreffend. Das soll heißen, da sind keine hardgecodete Zeilennummern drin, die ggf die falsche Zeile nennen könnten

            Noch zwei Fragen: die Datenbank-Tabelle mod_accordion_settings ist die dort vorhanden und mit Inhalten gefüllt?

            PHP- und WB-Version sollten eigentlich keine Rolle spielen, aber ich frag trotzdem. Wenn, dann wäre es eher die WB-Version, ich glaube, ab 2.13. gab es eine Änderung mit dem Twig

            QuoteDer Fehler wird nur auf einer meiner Installationen angezeigt. Dort wird das Modul derzeit nicht verwendet.

            Nur zum Nachbauen für mich: heißt: das Addon ist installiert, hat aber noch keine angelegte Section?

              Gast

              Ha.... erwischt...

              "created: [Sat, 14 Sep 2024 23:00:50 +0000]
              Sun, 15 Sep 2024 10:24:55 +0000 [E_WARNING] \modules\accordion\cmd\Upgrade.inc.php:[121] from \modules\accordion\cmd\Upgrade.inc.php:[167] {closure} "Undefined variable $aDefaults"

              läßt sich auch reproduzieren
              nu wirds einfacher   :wink:

                dbs

                2x ja, keine section und message auf deutsch. weißt du zwar schon, aber der Vollständigkeit halber.

                  Gast

                  Möchtest du selbst mal ändern und testen bevor ich da eine neue Version mache?

                  cmd/Upgrade.inc.php in Zeile 115 - original Code
                  $selectSettings = (function() use ($database, $sTableName) {

                  ändern in
                  $selectSettings = (function() use ($database, $sTableName, $aDefaults) {

                  P.S.: eine neue Version kommt aber eh dieser Tage, weil das Backend des Moduls derzeit garnicht responsive ist

                    dbs

                    Das Upgrade geht jetzt durch mit grüner Info Meldung.
                    Aber im errorlog steht was neues:Sun, 15 Sep 2024 14:22:49 +0000 [E_WARNING] /modules/accordion/cmd/Upgrade.inc.php:[131]  from /modules/accordion/cmd/Upgrade.inc.php:[173] {closure} "Undefined array key 0"
                    Sun, 15 Sep 2024 14:22:49 +0000 [E_WARNING] /modules/accordion/cmd/Upgrade.inc.php:[131]  from /modules/accordion/cmd/Upgrade.inc.php:[173] {closure} "Trying to access array offset on null""

                      Gast

                      Bin hier noch eine Rückmeldung schuldig - da war ein Denkfehler drin in der Upgrade.inc.php. Ich bin immer davon ausgegangen, das ein Modul auch in Benutzung ist oder zumindest gewesen ist. In diesem Fall wären DefaultSettings dann schon in der Datenbank. Das diese aber leer ist, hatte ich nicht auf der Rechnung.

                      Die Änderung in Antwort #10 sorgt nun für die Folgefehler aus deiner letzten Antwort, weil sie einen leeren Array hinterläßt, der im späteren Verlauf als gefüllt vorausgesetzt wird.
                      Diese Änderung müßte also wieder zurück genommen werden, Zeile 115 sollte dann wieder so aussehen

                      $selectSettings = (function() use ($database, $sTableName) {

                      In Zeile 121 muß das $aDefault mit einem false ersetzt werden, also so

                      return ((\count($aSettings) > 0) ? $aSettings : false);

                      Habe mittlerweile das Backend zum Modul auf responsive Darstellung umgebaut, benötige aber noch etwas Zeit für ein paar Test's

                        dbs

                        QuoteIch bin immer davon ausgegangen, das ein Modul auch in Benutzung ist oder zumindest gewesen ist. In diesem Fall wären DefaultSettings dann schon in der Datenbank. Das diese aber leer ist, hatte ich nicht auf der Rechnung.
                        Dass ich nochmal DAU Sachen mache, hätte ich nicht gedacht. Aber gut so.  ;D

                        Keine Eile, das Modul ist schon fein wie es ist.

                          \n\n