Ankündigung

Einklappen
Keine Ankündigung bisher.

Template Checker: HTML Parser und WIDGET VALUE PARAM CHECK

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

    Template Checker: HTML Parser und WIDGET VALUE PARAM CHECK

    Hallo,

    vorab: Riesen Respekt für das Projekt!

    Ich habe die develop-Version schon seit 2018 in Betrieb und habe jetzt auf das offizielle Release upgegradet. Alles läuft. Durch den Changelog-Eintrag "optimierter Template Checker" habe ich diesen zum ersten Mal überhaupt benutzt

    Ich erhalte eine Warnung, und für jede Seite
    HTML_Parser.png

    Das zweite ist ein Fehler: WIDGET VALUE PARAM CHECK
    Dieser tritt bei widgets auf, welche ich erstellt habe (sind meist nur Anpassungen, z.B. die Taste "Sperre" für die Automatikfunktion der Jalousie). Diese liegen unter /widgets der Page. Alle neu eingefügten Variable werden mit "numeric value required" angezeigt. Die widgets funktionieren aber.
    PARAM_Check.png

    Nochmal, tolles Projekt
    Zuletzt geändert von NGem; 20.04.2020, 21:39.

    #2
    Und wie schauen die ersten 6 Zeilen des entsprechenden HTML aus?

    Kommentar


      #3
      die ersten 6 Zeilen in alle HTML folgendermaßen aus:
      Code:
      /**
      * -----------------------------------------------------------------------------
      * @package smartVISU
      * @author Martin Gleiß
      * @copyright 2012 - 2015
      * @license GPL <http://www.gnu.de>
      Den Code habe ich wahrscheinlich seit 2015 in Version 2.8 verwendet.

      Edit: was man nicht sieht: Ab Zeile 2 ist vor jedem * ein Leerzeichen.

      Kommentar


        #4
        Danke für den Gankenanstoss. Ein Vergleich mit anderen Bsp. Dateien brachte Erfolg.

        ich habe Zeile 6 folgendermaßen geändert:
        von
        Code:
         * @license     GPL <http://www.gnu.de>
        in
        Code:
        * @license     GPL [http://www.gnu.de]
        Entscheiden sind die <>

        Bleibt noch der Fehler in den eigenen Widgets.

        Kommentar


          #5
          Ohne Hochkommas in den defaults?

          Kommentar


            #6
            Nein, ich kann die Default auch entfernen, ändert nichts.

            Anbei eines meines Widgets:
            Code:
            /**
            * -----------------------------------------------------------------------------
            * @package smartVISU
            * @author Martin Gleiß
            * @copyright 2012 - 2015
            * @license GPL [http://www.gnu.de]
            * -----------------------------------------------------------------------------
            */
            
            
            /**
            * Standard blind, erweitert um Sperre der Absolutpositionen (Fasssadensteuerung)
            *
            * @param {id=} unique id for this widget (optional)
            * @param {text=} name of the blind
            * @param {item=} an item for the up and down movement (optional, value_top/value_bottom will be sent to item_pos if omitted)
            * @param {item=} an item for stopping the movement (optional)
            * @param {item} an item for the absolute position of the blinds
            * @param {item=} an item for increase and decrease of the blade (optional)
            * @param {item=} an item for the absolute angle of the blade (optional)
            * @param {value=0} the value for opened (optional, default 0)
            * @param {value=255} the value for closed (optional, default 255)
            * @param {value=5} step between two values (optional, default: 5)
            * @param {item=} an item for Sperre absoluter Positionen
            *
            */
            {% macro blind(id, txt, item_move, item_stop, item_pos, item_shift, item_angle, min, max, step, item_sperre) %}
            {% import "basic.html" as basic %}
            
            <div class="blind">
            <table align="center" cellpadding="0">
            <tr>
            <td valign="top">
            {% if item_move %} <div class="set">{{ basic.stateswitch(id~'up', item_move, '', 0, 'arrow-u') }}</div> {% endif %}
            </td>
            <td rowspan="3" align="left" class="pos">
            {{ basic.slider(id~'pos', item_pos, min|default(0), max|default(255), step|default(5), 'vertical') }}
            </td>
            <td rowspan="2" valign="bottom" class="angle">
            {{ txt }}<br />
            {% if item_angle %} {{ basic.slider(id~'angle', item_angle, min|default(0), max|default(255), step|default(5), 'semicircle') }} {% endif %}
            </td>
            </tr>
            <tr>
            <td>
            {% if item_stop %} <div class="set">{{ basic.stateswitch(id~'stop', item_stop, '', 1, 'delete') }}</div> {% endif %}
            {% if item_sperre %} <div class="set">{{ basic.stateswitch(id~'sperre', item_sperre, '', '', ['fts_shutter_automatic.svg', 'fts_shutter_manual.svg']) }}</div> {% endif %}
            </td>
            </tr>
            <tr>
            <td valign="bottom">
            {% if item_move %} <div class="set">{{ basic.stateswitch(id~'down', item_move, '', 1, 'arrow-d') }}</div> {% endif %}
            </td>
            <td valign="bottom">
            {% if item_shift %}
            <div class="set">
            <span style="float: left;">{{ basic.stateswitch(id~'minus', item_shift, '', 0, 'minus') }}</span>
            <span style="float: right;">{{ basic.stateswitch(id~'plus', item_shift, '', 1, 'plus') }}</span>
            </div>
            {% endif %}
            </td>
            </tr>
            </table>
            </div>
            {% endmacro %}
            Oh, da fehlen ja die ganzen Einrückungen - schlecht zu lesen.

            Der Fehler betrifft:
            min, max, step
            Code:
            {{ basic.slider(id~'pos', item_pos, min|default(0), max|default(255), step|default(5), 'vertical') }}
            und
            Code:
            {% if item_angle %} {{ basic.slider(id~'angle', item_angle, min|default(0), max|default(255), step|default(5), 'semicircle') }} {% endif %}
            Die Variable stammen aus:
            Code:
            {% macro blind(id, txt, item_move, item_stop, item_pos, item_shift, item_angle, min, max, step, item_sperre) %}

            Kommentar


              #7
              Hm, kann ich nicht wirklich reproduzieren. Wie rufst du denn dein eigenes Widget auf?

              Kommentar


                #8
                Code:
                {% import "widgets/w_blind.html" as w_blind %}
                
                {% extends "room_00_sidebar.html" %}
                
                {% block content %}
                
                <div class="block">
                <div class="set-2" data-role="collapsible-set" data-theme="c" data-content-theme="a" data-mini="true">
                <div data-role="collapsible" data-collapsed="false" >
                <h3>Jalousie</h3>
                
                {{ w_blind.blind('Jal_BadOG', 'Bad OG', 'Jal_BadOG.move', 'Jal_BadOG.shift', 'Jal_BadOG.pos', 'Jal_BadOG.shift', 'Jal_BadOG.angle', 0, 100, 1, 'Jal_BadOG.sperre') }}
                
                </div>
                </div>
                </div>
                
                {% endblock %}

                Kommentar


                  #9
                  Hm, muss ich leider passen. Wenn ich's in den pages widgets Ordner stecke, meldet der Template Checker was von "unknown widget", Anzeige funktioniert. Wenn ichs in dropins/widgets stecken, erhalte ich keinerlei Fehlermeldung..?

                  Die kaputten Einrückungen kommen übrigens vermutlich vom Kopieren aus dem Texteditor. Dort werden Umbrüche für Linux gespeichert, wenn du aber unter Windows "copy/paste" machst, müsste man vor dem Kopieren kurzzeitig die EOL auf Windows stellen.

                  Kommentar


                    #10
                    Ja, werde mich morgen nochmal dran probieren

                    Edit: Es ist morgen
                    Ich habe den Spieß mal umgedreht und die "device.html" aus Standard-widgets-Verzeichnis in mein Page/widgets kopiert. Und siehe da, 33 Errors
                    Der Templatchecker checkt das Standard-widgets-Verzeichnis und dropins-Verzeichnis ja. Ich denke der Template wird jedes widget bemängeln, da es Variablen enthält. Könnte das sein?
                    Zuletzt geändert von NGem; 09.04.2020, 06:37.

                    Kommentar


                      #11
                      Also summa summarum scheint der Template Checker die pages/widgets nicht richtig zu interpretieren. Alles was im dropins drin ist, passt hingegen. Oder?

                      Kommentar


                        #12
                        Für's Einrücken von Code gibt's den Button oben ganz rechts in der Menüleiste im Post:
                        einruecken.png

                        Bitte teste tatsächlich mal eine Ablage des widgets in /dropins/widgets. Wenn das geht, habe ich schon einen Verdacht: in der index.php wird der Pfad zu pages/widgets nicht zu Path hinzugefügt. Du könntest vor Zeile 58 auch folgenden Code einfügen und testen:
                        Code:
                        if (is_dir(const_path.'pages/'.$config_pages.'/widgets'))
                           $loader->addPath(const_path.'pages/'.$config_pages.'/widgets');
                        Wenn das klappt, committe ich das heute Abend.

                        Gruß Wolfram
                        Zuletzt geändert von wvhn; 09.04.2020, 09:18.

                        Kommentar


                          #13
                          Aufgabe 1: Verschieben in /dropins/widgets
                          Funktioniert. Ich denke aber es funktioniert, weil der TemplateChecker dort nicht checkt.

                          Aufgabe 2: Code einfügen
                          Funktioniert nicht. Die Errors werden weiterhin angezeigt.

                          Vielleicht ist der TemplateChecker auch nicht geeignet, das widget direkt zu checken. Ich könnte mir vorstellen, dass ein echter Fehler im widget zu einem Fehler beim Test der HMTL-Seite führt, die das widget enthält. Ich hoffe man versteht meinen Gedanken.
                          Wenn das so wäre, bräuchte man pages/widgets nicht checken, muss mit dem anzeigten Error leben oder das dropin-Verzeichnis nutzen.

                          Kommentar


                            #14
                            OK. Danke.
                            Ob der Templatechecker im Verzeichnis dropins/widgets checkt, kannst Du ja daran erkennen, ob Dein Widget im Templatechecker in der Liste auftaucht.

                            Ich versuche mal heute Abend, dies nachzuvollziehen. Wichtig ist ja, dass die widgets funktionieren, obwohl der Templatechecker Fehler anzeigt. Andersherum wäre es blöder

                            Bitte Vorsicht mit dem dropins/widgets Verzeichnis. Falls Du das Pagegenerator-Plugin visu_smartvisu nutzt, leert dieses das Verzeichnis bei Neustart.
                            Zuletzt geändert von wvhn; 09.04.2020, 10:54.

                            Kommentar


                              #15
                              Zitat von wvhn Beitrag anzeigen
                              Ob der Templatechecker im Verzeichnis dropins/widgets checkt, kannst Du ja daran erkennen, ob Dein Widget im Templatechecker in der Liste auftaucht.
                              Tut es nicht. Dort wird demnach nicht gecheckt.

                              Um meine These "widget wird indirekt geprüft" nachzugehen, habe ich im widget etwas geändert (einen Fehler produziert):
                              Aus diesem Ausdruck
                              HTML-Code:
                              * @param {item=}
                              habe ich dieses gemacht
                              HTML-Code:
                              * @param {value}
                              Und siehe da, alle vorher gut getesten HTMLs haben jetzt einen Fehler.

                              Kommentar

                              Lädt...
                              X