templates/login/index.html.twig line 1

  1. {# templates/login/index.html.twig #}
  2. {% extends 'base.html.twig' %}
  3. {% block body %}
  4. <div class="container sm:px-10">
  5.     <div class="block xl:grid grid-cols-2 gap-4">
  6.         <!-- BEGIN: Login Info -->
  7.         <div class="hidden xl:flex flex-col min-h-screen">
  8.             <a href="/" class="-intro-x flex items-center pt-5">
  9.                 <span class="text-white text-lg"><span class="{% if is_granted('ROLE_ADMIN') %} customText {% else %} loadText {% endif %}" data-key="login-10">{{ texte["login-10"] }}</span></span>
  10.             </a>
  11.             <div class="my-auto">
  12.                 {% include 'global/logos-login-links.html.twig' %}
  13.                 <div class="-intro-x text-white font-medium text-3xl leading-tight {% if is_granted('ROLE_ADMIN') %} customText {% else %} loadText {% endif %}" data-key="login-0">
  14.                     {{ texte["login-0"]|raw }}
  15.                 </div>
  16.                 <div class="-intro-x mt-5 text-white text-opacity-70 dark:text-slate-400">
  17.                     <div class="text-lg">
  18.                         <span class="{% if is_granted('ROLE_ADMIN') %} customText {% else %} loadText {% endif %}" data-key="login-1">{{ texte["login-1"]|raw }}</span>
  19.                         <br>
  20.                         <br>
  21.                         <span class="{% if is_granted('ROLE_ADMIN') %} customText {% else %} loadText {% endif %}" data-key="login-2">
  22.                             {{ texte["login-2"]|raw }}
  23.                         </span>
  24.                     </div>
  25.                     <div class="mt-5">
  26.                         {% if "login-3" in texte|keys and texte["login-3"] is not empty %}
  27.                             <p class="flex items-center py-1 rounded-md"> <i class="w-4 h-4 mr-2" data-lucide="star"></i> <span class="{% if is_granted('ROLE_ADMIN') %}customText{% else %} loadText {% endif %}" data-key="login-3">{{ texte["login-3"]|raw }}</span></p>
  28.                         {% endif %}
  29.                         {% if "login-4" in texte|keys and texte["login-4"] is not empty %}
  30.                             <p class="flex items-center py-1 rounded-md"> <i class="w-4 h-4 mr-2" data-lucide="star"></i> <span class="{% if is_granted('ROLE_ADMIN') %}customText{% else %} loadText {% endif %}" data-key="login-4">{{ texte["login-4"]|raw }}</span></p>
  31.                         {% endif %}
  32.                         {% if "login-5" in texte|keys and texte["login-5"] is not empty %}
  33.                             <p class="flex items-center py-1 rounded-md"> <i class="w-4 h-4 mr-2" data-lucide="star"></i> <span class="{% if is_granted('ROLE_ADMIN') %}customText{% else %} loadText {% endif %}" data-key="login-5">{{ texte["login-5"]|raw }}</span></p>
  34.                         {% endif %}
  35.                         {% if "login-6" in texte|keys and texte["login-6"] is not empty %}
  36.                             <p class="flex items-center py-1 rounded-md"> <i class="w-4 h-4 mr-2" data-lucide="star"></i> <span class="{% if is_granted('ROLE_ADMIN') %}customText{% else %} loadText {% endif %}" data-key="login-6">{{ texte["login-6"]|raw }}</span></p>
  37.                         {% endif %}
  38.                         {% if "login-7" in texte|keys and texte["login-7"] is not empty %}
  39.                             <p class="flex items-center py-1 rounded-md"> <i class="w-4 h-4 mr-2" data-lucide="star"></i> <span class="{% if is_granted('ROLE_ADMIN') %}customText{% else %} loadText {% endif %}" data-key="login-7">{{ texte["login-7"]|raw }}</span></p>
  40.                         {% endif %}
  41.                         {% if "login-8" in texte|keys and texte["login-8"] is not empty %}
  42.                             <p class="flex items-center py-1 rounded-md"> <i class="w-4 h-4 mr-2" data-lucide="star"></i> <span class="{% if is_granted('ROLE_ADMIN') %}customText{% else %} loadText {% endif %}" data-key="login-8">{{ texte["login-8"]|raw }}</span></p>
  43.                         {% endif %}
  44.                         {% if "login-9" in texte|keys and texte["login-9"] is not empty %}
  45.                             <p class="flex items-center py-1 rounded-md"> <i class="w-4 h-4 mr-2" data-lucide="star"></i> <span class="{% if is_granted('ROLE_ADMIN') %}customText{% else %} loadText {% endif %}" data-key="login-9">{{ texte["login-9"]|raw }}</span></p>
  46.                         {% endif %}
  47.                     </div>
  48.                     <div class="text-lg">
  49.                         {% if "login-14" in texte|keys and texte["login-14"] is not empty %}
  50.                             <span class="data-key="login-14">{{ texte["login-14"]|raw }}</span>
  51.                         {% endif %}
  52.                         <br>
  53.                         <br>
  54.                         {% if "login-15" in texte|keys and texte["login-15"] is not empty %}
  55.                             <span class=" data-key="login-15">{{ texte["login-15"]|raw }}</span>
  56.                         {% endif %}
  57.                     </div>
  58.                     <div class="flex justify-left mt-20">
  59.                         {% set linkImpressum    = "https://msu-solutions.de/impressum/" %}
  60.                         {% set linkDatenschutz  = "https://msu-solutions.de/datenschutz/" %}
  61.                         {% if app.session.get('impressum') is defined and app.session.get('impressum') is not empty %}
  62.                                 {% set linkImpressum = app.session.get('impressum') %}
  63.                         {% endif %}
  64.                         {% if app.session.get('datenschutz') is defined and app.session.get('datenschutz') is not empty %}
  65.                                 {% set linkDatenschutz = app.session.get('datenschutz') %}
  66.                         {% endif %}
  67.                         <input type="hidden" id="impressumLink" class="hidden" value="{{ linkImpressum }}">
  68.                         <input type="hidden" id="datenschutzLink" class="hidden" value="{{ linkDatenschutz }}">
  69.                         {% if app.session.get('barrierefreiheitanzeigen') %}
  70.                             <div class="flex items-center mr-5">
  71.                                 <a href="{% if barrierefreiheit is defined and barrierefreiheit is not empty %} {{barrierefreiheit}} {% endif %}" class="flex items-center py-2 mt-2 rounded-md" target="_blank"> Barrierefreiheit </a>
  72.                             </div>
  73.                         {% endif %}
  74.                         <div class="flex items-center mr-5">
  75.                             <a href="{{ datenschutz }}" class="flex items-center py-2 mt-2 rounded-md" target="_blank"> Datenschutz </a>
  76.                         </div>
  77.                         <div class="flex items-center mr-5">
  78.                             <a href="{{ impressum }}" class="flex items-center py-2 mt-2 rounded-md" target="_blank"> Impressum </a>
  79.                         </div>
  80.                         {% if satzung is defined and satzung is not empty %}
  81.                             <div class="flex items-center mr-5">
  82.                                 <a href="{% if satzung is defined and satzung is not empty %} {{satzung}} {% endif %}" class="flex items-center py-2 mt-2 rounded-md" target="_blank">Aktuelle Satzung</a>
  83.                             </div>
  84.                         {% endif %}
  85.                         {% if is_granted('ROLE_ADMIN') %}
  86.                             <div class="flex items-center ml-5">
  87.                                 <a href="/dashboard" class="flex items-center py-2 mt-2 rounded-md"> Backend </a>
  88.                             </div>
  89.                         {% endif %}
  90.                     </div>
  91.                 </div>
  92.                 {% if app.session.get('news-funktion')and neuestenews %}
  93.                     <!-- BEGIN: Single Item -->
  94.                     <div class="intro-y box mt-5">
  95.                         <div class="flex flex-col sm:flex-row items-center p-2 border-b border-slate-200/60 dark:border-darkmode-400">
  96.                             <h2 class="font-medium text-base mr-auto dark:text-gray-300 ml-4">
  97.                                 <a href="javascript:;" data-tw-toggle="modal" data-tw-target="#basic-modal-preview-{{ neuestenews.id }}" title="Anzeigen">Neueste News vom {{ neuestenews.start|date("d.m.Y") }}: {{ neuestenews.titel|slice(0,40) }} ...</a>
  98.                             </h2>
  99.                         </div>
  100.                         <div id="center-mode-slider" class="p-5">
  101.                             <div class="preview">
  102.                                 <div class="mx-6">
  103.                                     <div class="center-mode">
  104.                                         {% for key,entry in news %}
  105.                                             <div class="h-10 px-2">
  106.                                                 <div class="h-full bg-slate-100 dark:bg-darkmode-400 rounded-md">
  107.                                                     <a href="javascript:;" data-tw-toggle="modal" data-tw-target="#basic-modal-preview-{{ entry.id }}" title="Anzeigen"
  108.                                                        class="h-full flex items-center justify-center primary font-normal">
  109.                                                         {{ entry.titel|slice(0,40) }} ...
  110.                                                     </a>
  111.                                                 </div>
  112.                                             </div>
  113.                                         {% endfor %}
  114.                                     </div>
  115.                                 </div>
  116.                             </div>
  117.                         </div>
  118.                     </div>
  119.                     <!-- END: Single Item -->
  120.                 {% endif %}
  121.             </div>
  122.         </div>
  123.         {% for key,entry in news %}
  124.             <div id="basic-modal-preview-{{ entry.id }}" class="modal" tabindex="-1" aria-hidden="true">
  125.                 <div class="modal-dialog modal-lg">
  126.                     <div class="modal-content">
  127.                         <div class="modal-header">
  128.                             <h2 class="font-medium text-base mr-auto">{{ entry.titel }}</h2>
  129.                         </div> <!-- END: Modal Header -->
  130.                         <div class="modal-body">
  131.                             {{ entry.inhalt|raw }}
  132.                         </div>
  133.                         <div class="modal-footer text-left">
  134.                             veröffentlicht am: {{ entry.start|date("d.m.Y") }}
  135.                         </div>
  136.                     </div>
  137.                 </div>
  138.             </div>
  139.         {% endfor %}
  140.         <!-- END: Login Info -->
  141.         <!-- BEGIN: Login Form -->
  142.         <div class="flex content-container">
  143.             <div class="my-auto mx-auto xl:ml-20 bg-white dark:bg-darkmode-600 xl:bg-transparent px-5 sm:px-8 py-8 xl:p-0 rounded-md shadow-md xl:shadow-none w-full sm:w-3/4 lg:w-2/4 xl:w-auto">
  144.                 {% set zaehlerstandAktiv = true %}
  145.                 {% if zaehlerstandAktivStart is defined and zaehlerstandAktivStart is not empty and zaehlerstandAktivEnde is defined and zaehlerstandAktivEnde is not empty and zaehlerstandAktivText is defined and zaehlerstandAktivText is not empty %}
  146.                     {% if zaehlerstandAktivStart|date('U') <= "now"|date("d.m.Y")|date('U') and zaehlerstandAktivEnde|date('U') >= "now"|date("d.m.Y")|date('U') %}
  147.                         {% set zaehlerstandAktiv = true %}
  148.                     {% else %}
  149.                         {% set zaehlerstandAktiv = false %}
  150.                     {% endif %}
  151.                 {% endif %}
  152.                 {% include 'global/logos-login-rechts.html.twig' %}
  153.                 <button class="hidden" id="druckenbutton" data-tw-toggle="modal" data-tw-target="#drucken">drucken</button>
  154.                 <button class="hidden" id="twofabutton" data-tw-toggle="modal" data-tw-target="#twofapopup">drucken</button>
  155.                 <input type="hidden" name="target_action" value="{% if target_action is defined and target_action is not empty %}{{target_action}}{% endif %}">
  156.                 {% if portalvariante is defined and portalvariante == 'zaehlerstand' %}
  157.                     {% if app.session.get('zaehlerstandmelden_abgemeldet') %}
  158.                         {% if zaehlerstandAktiv == false %}
  159.                             <p class="py-5"><span>{{ zaehlerstandAktivText }}</span></p>
  160.                         {% endif %}
  161.                         <button id="btn_zaehlerstand_melden" class="btn btn-dark-soft py-3 px-4 mt-3 w-full xl:w-auto" data-tw-toggle="modal" data-tw-target="#zaehlerstand-melden"
  162.                         {% if zaehlerstandAktiv == false or webservice == false %} disabled {% endif %}>Zählerstand melden
  163.                         {% if zaehlerstandAktiv == false or webservice == false %} <a class="flex items-center tooltip ml-2" data-theme="light" title="Diese Funktion steht zur Zeit nicht zur Verfügung" href="javascript:;">
  164.                             <i style="width: 15px; height: 15px;" data-lucide="info"></i>
  165.                         </a> {% endif %}
  166.                         </button>
  167.                     {% endif %}
  168.                 {% else %}
  169.                     <form action="{{ path('login') }}" method="post" id="anmeldeFormular" class="mt-5">
  170.                         <h2 class="intro-x font-bold text-2xl xl:text-3xl text-center xl:text-left">
  171.                             {% if wartungsarbeiten is defined and wartungsarbeiten is not empty %}
  172.                                 Es finden aktuell Wartungsarbeiten statt, so dass Sie sich nicht anmelden können.
  173.                                 <input type="hidden" id="wartungsarbeiten" value="yes">
  174.                             {% elseif online is defined and online == false or webservice == false %}
  175.                                 Das Portal ist aktuell offline.
  176.                                 <input type="hidden" id="offline" value="yes">
  177.                             {% else %}
  178.                                 <span class="{% if is_granted('ROLE_ADMIN') %}customText{% else %} loadText {% endif %}" data-key="login-11">Loggen Sie sich jetzt ein.</span>
  179.                             {% endif %}
  180.                         </h2>
  181.                         <p class="intro-x mt-5 font-normal">
  182.                             Bitte geben Sie hier Ihre Daten ein. Wenn Sie noch kein Kundenkonto bei uns haben, können Sie sich hier registrieren.
  183.                         </p>
  184.                         {% if error %}
  185.                             <br>
  186.                             <div class="alert alert-danger show flex items-center mb-2" role="alert">
  187.                                 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" icon-name="alert-octagon" data-lucide="alert-octagon" class="lucide lucide-alert-octagon w-6 h-6 mr-2"><polygon points="7.86 2 16.14 2 22 7.86 22 16.14 16.14 22 7.86 22 2 16.14 2 7.86 7.86 2"></polygon><line x1="12" y1="8" x2="12" y2="12"></line><line x1="12" y1="16" x2="12.01" y2="16"></line></svg> {{ error.messageKey|trans(error.messageData, 'security') }}
  188.                             </div>
  189.                         {% endif %}
  190.                         <div class="intro-x mt-8">
  191.                             <input type="text" class="intro-x login__input form-control py-3 px-4 block" id="username" name="_username" placeholder="E-Mail Adresse" value="{{ app.session.get('emailtwofa') }}{{ email }}">
  192.                             <input type="hidden" name="_csrf_token" value="{{ csrf_token('authenticate') }}">
  193.                             <input type="password" id="password" name="_password" class="intro-x login__input form-control py-3 px-4 block mt-4" placeholder="Passwort" value="{% if app.session.get("passwordtwofa") %}{{ app.session.get("passwordtwofa") }}{% endif %}">
  194.                             <input type="text" id="code" name="code" class="intro-x login__input form-control py-3 px-4 block mt-4 {% if app.request.get('webid') %}{% else %}hidden{% endif %}" placeholder="Web-ID" value="{{ app.request.get('webid') }}" data-webid="{{ app.request.get('webid') }}">
  195.                             {% if app.request.get('twofa') %}
  196.                                 <input type="text" id="twofacode" name="twofacode" class="intro-x login__input form-control py-3 px-4 block mt-4" placeholder="Code" value="">
  197.                             {% endif %}
  198.                         </div>
  199.                         {% if wartungsarbeiten is defined and (wartungsarbeiten == 0 or online == false or webservice == false) %}
  200.                             <div class="intro-x flex text-slate-600 dark:text-slate-500 text-xs sm:text-sm mt-4">
  201.                                 <a href="/passwort-vergessen/">Passwort vergessen?</a>
  202.                             </div>
  203.                         {% endif %}
  204.                         <div class="intro-x mt-5 xl:mt-8 text-center xl:text-left">
  205.                             <input type="hidden" id="twofa" value="{{ twofa }}">
  206.                             <button class="btn btn-primary py-3 px-4 w-60 align-top" id="anmelden">Anmelden</button>
  207.                         </div>
  208.                         {% if captcha %}
  209.                             <br>
  210.                             <altcha-widget challengeurl="/altcha-challenge"></altcha-widget>
  211.                         {% endif %}
  212.                     </form>
  213.                     {% if wartungsarbeiten is defined and (wartungsarbeiten == 0 or online == false or webservice == false) %}
  214.                         <div class="btn-grid intro-x mt-5 xl:mt-8 text-center xl:text-left">
  215.                             <button class="btn btn-dark-soft py-3 px-4 align-top w-60" data-tw-toggle="modal" data-tw-target="#zugang-beantragen" {% if online == false or webservice == false %} disabled title="Die Zugangsbeantragung ist aktuell nicht verfügbar." {% endif %}>
  216.                                 Zugang beantragen
  217.                                 {% if online == false or webservice == false %}
  218.                                     <a class="flex items-center tooltip ml-2" data-theme="light" title="Diese Funktion steht zur Zeit nicht zur Verfügung" href="javascript:;">
  219.                                         <i style="width: 15px; height: 15px;" data-lucide="info"></i>
  220.                                     </a>
  221.                                 {% endif %}
  222.                             </button>
  223.                             {% if app.session.get('zaehlerstandmelden_abgemeldet') %}
  224.                                 <button id="btn_zaehlerstand_melden" class="btn btn-dark-soft py-3 px-4 align-top w-60" data-tw-toggle="modal" data-tw-target="#zaehlerstand-melden" {% if zaehlerstand_online is defined and not zaehlerstand_online == true or online == false or  webservice == false %} disabled title="Die Zählerstandsmeldung ist aktuell nicht verfügbar." {% endif %}>
  225.                                     Zählerstand melden
  226.                                     {% if zaehlerstand_online is defined and not zaehlerstand_online == true or online == false or webservice == false %}
  227.                                         <a class="flex items-center tooltip ml-2" data-theme="light" title="Diese Funktion steht zur Zeit nicht zur Verfügung" href="javascript:;">
  228.                                             <i style="width: 15px; height: 15px;" data-lucide="info"></i>
  229.                                         </a>
  230.                                     {% endif %}
  231.                                 </button>
  232.                             {% endif %}
  233.                             <button class="btn btn-primary py-3 px-4 align-top w-60 mt-1" id="test" data-tw-toggle="modal" data-tw-target="#barrierefreiheit">Barrierefreiheit</button>
  234.                         </div>
  235.                     {% endif %}
  236.                     {% if info is defined %}
  237.                         <div class="alert alert-secondary show flex items-center mb-2 mt-2" role="alert">
  238.                             <i data-lucide="mail" class="w-6 h-6 mr-2"></i> {{ info }}
  239.                         </div>
  240.                     {% endif %}
  241.                     {% include 'global/logos-login-footer.html.twig' %}
  242.                     <div class="xl:hidden">
  243.                         {% include 'global/footerlinks-login.html.twig' %}
  244.                     </div>
  245.                 {% endif %}
  246.             </div>
  247.         </div>
  248.         <!-- END: Login Form -->
  249.     </div>
  250. </div>
  251. <!-- BEGIN: Modal Content Zugang beantragen bearbeiten -->
  252. <div id="zugang-beantragen" class="modal" data-tw-backdrop="static" tabindex="-1" aria-hidden="true">
  253.     <div class="modal-dialog modal-xl">
  254.         <div class="modal-content" id="form-validation">
  255.             <form action="/zugangbeantragen/" method="post" id="loginForm">
  256.                 <!-- BEGIN: Modal Header -->
  257.                 <div class="modal-header">
  258.                     <h2 class="font-medium text-base mr-auto">Zugang beantragen</h2>
  259.                     <a data-tw-dismiss="modal" href="javascript:;"> <i data-lucide="x" class="w-8 h-8 text-slate-400"></i> </a>
  260.                 </div> <!-- END: Modal Header -->
  261.                 <div class="modal-body p-10">
  262.                     <div class="input-form">
  263.                         <label for="validation-form-1" class="form-label">Kundennummer* </label>
  264.                         <input id="customerid"  type="text" class="form-control" name="kundennummer" placeholder="" required>
  265.                     </div>
  266.                     {% if auth.metavalue == "internal" %}
  267.                         <div class="input-form mt-3">
  268.                             <label for="horizontal-form-1" class="form-label">Zählernummer*</label>
  269.                             <input id="meterno" type="text" class="form-control" name="meterno" placeholder="" required>
  270.                         </div>
  271.             
  272.                         {% elseif auth.metavalue == "accountingcontract" %}
  273.                             <div class="input-form mt-3">
  274.                                 <label for="horizontal-form-1" class="form-label">Vertragsnummer*</label>
  275.                                 <input id="meterno" type="text" class="form-control" name="leistungsobjektnummer" placeholder="" required>
  276.                             </div>
  277.                         
  278.                     {% else %}
  279.                         <div class="input-form mt-3">
  280.                             <label for="horizontal-form-1" class="form-label">{{ texte["begriff_leistungsobjektnummer"]|default('Leistungsobjektnummer')|raw }}*</label>
  281.                             <input id="meterno" type="text" class="form-control" name="leistungsobjektnummer" placeholder="" required>
  282.                         </div>
  283.                     {% endif %}
  284.                     <div class="input-form mt-3">
  285.                         <label for="horizontal-form-1" class="form-label">E-Mail-Adresse*</label>
  286.                         <input id="email" type="email" name="email" class="form-control" placeholder="test@test.de" required>
  287.                     </div>
  288.                     <div class="input-form mt-3">
  289.                         <label for="horizontal-form-1" class="form-label">E-Mail-Adresse zur Überprüfung erneut eingeben* </label>
  290.                         <input id="emailnochmal" type="email" name="emailnochmal" class="form-control" placeholder="test@test.de" required>
  291.                     </div>
  292.                     <div class="input-form mt-3">
  293.                         <label for="horizontal-form-2" class="form-label">Passwort</label>
  294.                         <input id="passwortupdate" type="password" name="passwort" class="form-control" placeholder="****" required autocomplete="off">
  295.                     </div>
  296.                     <div class="input-form mt-3">
  297.                         <label for="horizontal-form-2" class="form-label">Passwort bestätigen</label>
  298.                         <input id="passwortupdaterepeat" type="password" name="passwort-repeat" class="form-control" placeholder="****" required autocomplete="off">
  299.                     </div>
  300.                     
  301.                     <div class="mt-3">
  302.                         <div class="alert alert-secondary show flex flex-col items-start text-left" role="alert">
  303.                             <p class="font-bold">Hinweis</p>
  304.                             <p>Zulässige Sonderzeichen: !@#$%^&*</p>
  305.                         </div>
  306.                     </div>
  307.                     {% if output.metavalue == "on" %}
  308.                         <div class="input-form mt-3">
  309.                             <label for="horizontal-form-2" class="form-label">Zustellart* (An dieser Stelle können Sie sich dafür entscheiden, wie Sie zukünftig Ihre Rechnung erhalten möchten.)</label>
  310.                             <select class="form-select mt-2 sm:mr-2" aria-label="" name="zustellart" id="zustellart">
  311.                                 <option value="">Bitte auswählen</option>
  312.                                 {% if abrufarten is iterable %}
  313.                                         {% for key,value in abrufarten %}
  314.                                             <option value="{{ value.Code }}">{{ value.Description }}</option>
  315.                                         {% endfor %}
  316.                                 {% else %}
  317.                                     {% for key,value in zustellarten %}
  318.                                         <option value="{{ value }}">{{ value }}</option>
  319.                                     {% endfor %}
  320.                                 {% endif %}
  321.                             </select>
  322.                         </div>
  323.                     {% endif %}
  324.                     <div class="input-form mt-5 border-t py-5">
  325.                         <label for="horizontal-form-2" class="form-label">Datenschutz*</label>
  326.                         <div class="form-check form-switch">
  327.                             <input id="datenschutz" class="form-check-input" type="checkbox" required>
  328.                             <label class="form-check-label" for="datenschutz">
  329.                             {% if datenschutzText is not empty %}
  330.                                 {{ datenschutzText|raw }}
  331.                             {% endif %}
  332.                             </label>
  333.                         </div>
  334.                     </div>
  335.                 </div>
  336.                 <div class="modal-footer text-center">
  337.                     <a data-tw-dismiss="modal" href="javascript:;">
  338.                         <span class="btn btn-secondary abbrechen" id="abbrechen">Abbrechen</span>
  339.                     </a>
  340.                     <input type="submit" class="btn btn-primary" value="Zugang beantragen" id="zugangbeantragen">
  341.                 </div>
  342.             </form>
  343.         </div>
  344.     </div>
  345. </div> <!-- END: Modal Content -->
  346.     <!-- BEGIN: Modal Content Zählerstand melden bearbeiten -->
  347. <div id="zaehlerstand-melden" class="modal" data-tw-backdrop="static" tabindex="-1" aria-hidden="true">
  348.     <div class="modal-dialog modal-xl">
  349.         <div class="modal-content" id="form-validation">
  350.             <form action="/zaehlerstanderfassen/" method="post" id="zaehlerstandMeldenForm" enctype="multipart/form-data">
  351.                 <div class="intro-y box p-5">
  352.                     <!-- BEGIN: Modal Header -->
  353.                     <div class="modal-header">
  354.                         <h2 class="font-medium text-base mr-auto">Zählerstand melden</h2>
  355.                         <a data-tw-dismiss="modal" href="javascript:;"> <i data-lucide="x" class="w-8 h-8 text-slate-400"></i> </a>
  356.                     </div>
  357.                     <!-- END: Modal Header -->
  358.                     {% if zaehlerstandAktiv == false %}
  359.                         <p class="p-5"><span>{{ zaehlerstandAktivText }}</span></p>
  360.                     {% else %}
  361.                         <p class="p-5">Hier können Sie Ihre Zählerstände melden. Wenn Sie zu einem Zähler keinen Stand melden wollen, lassen Sie das Feld neuer Zählerstand bitte leer.</p>
  362.                         <div class="modal-header"><h2 class="font-medium text-base mr-auto">Anmeldung</h2></div>
  363.                         <div class="grid grid-cols-12 gap-6 p-5">
  364.                             <div class="col-span-6">
  365.                                 <div class="input-form">
  366.                                     {% if authz.metavalue == "hashz" %}
  367.                                         <label for="validation-form-1" class="form-label">{{ app.session.get('texte')["bezeichn_kundennummer_AuthwithHash"]}}<span class="red"> *</span></label>
  368.                                         <input id="customeridz"  type="text" class="form-control" name="kundennummer" placeholder="123456" required>
  369.                                     {% else %}
  370.                                         <label for="validation-form-1" class="form-label">Kundennummer<span class="red"> *</span></label>
  371.                                         <input id="customeridz"  type="text" class="form-control" name="kundennummer" placeholder="123456" required>
  372.                                     {% endif %}
  373.                                     <input id="showFormularAuto" type="hidden" value="{% if app.request.get('rahmenvertrag') %}1{% else %}2{% endif %}">
  374.                                     <input id="hiddenrv" type="hidden" value="{{ app.session.get('rahmenvertrag')}}">
  375.                                     <input id="hiddenznr" type="hidden" value="{{ app.session.get('leistungsobjektnr')}}">
  376.                                     <input id="bezeichn_kundennummer_AuthwithHash" type="hidden" value="{{ app.session.get('texte')["bezeichn_kundennummer_AuthwithHash"]}}">
  377.                                     <input id="begriff_leistungsobjektnummer" type="hidden" value="{{ app.session.get('texte')["begriff_leistungsobjektnummer"]|default("Leistungsobjektnummer")|raw }}">
  378.                                 </div>
  379.                             </div>
  380.                             <div class="col-span-6">
  381.                                 <div class="input-form">
  382.                                     <label for="horizontal-form-1" class="form-label">
  383.                                         {% if authz.metavalue == "internalz" %}
  384.                                             Zählernummer
  385.                                         {% elseif authz.metavalue == "accountingcontractz" %}
  386.                                             Vertragsnummer
  387.                                         {% else %}
  388.                                             {% if texte is defined 
  389.                                                     and texte["begriff_leistungsobjektnummer"] is defined
  390.                                                     and texte["begriff_leistungsobjektnummer"] is not empty
  391.                                                     and texte["begriff_leistungsobjektnummer"] != "Vertragsnummer" %}
  392.                                                 {{ texte["begriff_leistungsobjektnummer"]|default("Leistungsobjektnummer")|raw }}
  393.                                             {% else %}
  394.                                                 Leistungsobjektnummer
  395.                                             {% endif %}
  396.                                         {% endif %}
  397.                                         <span class="red"> *</span>
  398.                                     </label>
  399.                                     <input id="leistungsobjektnummerz" type="text" class="form-control" name="leistungsobjektnummer" placeholder="123456" required>
  400.                                     <input id="contractnoz" type="hidden" class="form-control" name="AccountingContractNo" placeholder="">
  401.                                     <!-- <input id="ZS_METERREGIDX" type="hidden" class="form-control" name="ZS_METERREGIDX" placeholder=""> -->
  402.                                 </div>
  403.                             </div>
  404.                         </div>
  405.                     {% endif %}
  406.                 </div>
  407.                 <div class="hidden" id="mehrerevertraege">
  408.                 </div>
  409.                 {% if hinweiszaehler is defined %}
  410.                     <div id="hinweis_zaehler">
  411.                         <p class="text-left p-5">{{ hinweiszaehler.beschreibung }}</p>
  412.                     </div>
  413.                 {% endif %}
  414.                 <div class="input-form mt-5 hidden" id="hiddenKontakt">
  415.                     <span class="font-bold mt-3">Optionale Kontaktdaten</span>
  416.                     <br>
  417.                     <span class="mt-5">Wenn Sie Ihre E-Mail-Adresse eingeben, dann erhalten Sie eine Bestätigung der Zählerstandsmeldung an Ihre E-Mail.
  418.                         Ihre Kontaktdaten werden für mögliche Nachfragen an uns übermittelt. Sie müssen diese nicht eingeben.</span>
  419.                     <br>
  420.                     <label for="horizontal-form-2" class="form-label mt-5">E-Mail-Adresse</label>
  421.                     <input type="email" name="emailkontakt2" id="emailkontakt2" class="form-control" placeholder="" autocomplete="off">
  422.                     <label for="horizontal-form-2" class="form-label mt-5">Telefonnummer</label>
  423.                     <input type="text" name="telefonkontakt2" class="form-control" placeholder="" autocomplete="off">
  424.                 </div>
  425.                 
  426.                 
  427.                 <div class="modal-footer text-center">
  428.                     <a data-tw-dismiss="modal" href="javascript:;">
  429.                         <span class="btn btn-secondary abbrechen" id="abbrechen">Abbrechen</span>
  430.                     </a>
  431.                     <input type="submit" class="btn btn-primary" value="Daten prüfen" id="zaehlerstandmelden" {% if zaehlerstandAktiv == false %}disabled="true"{% endif %}>
  432.                 </div>
  433.             </form>
  434.             <script>
  435.             function validateNumericInput(input) {
  436.                 const error = document.getElementById('zaehlerstandneu-error');
  437.                 if (/[^0-9]/.test(input.value)) {
  438.                     error.style.display = 'inline';
  439.                     input.value = input.value.replace(/[^0-9]/g, '');
  440.                 } else {
  441.                     error.style.display = 'none';
  442.                 }
  443.             }
  444.             </script> 
  445.         </div>
  446.     </div>
  447. </div> <!-- END: Modal Content -->
  448.     {% if app.request.get('drucken') == 1 %}
  449.         <div id="drucken" class="modal" data-tw-backdrop="static" tabindex="-1" aria-hidden="true">
  450.             <div class="modal-dialog modal-lg">
  451.                 <div class="modal-content" id="form-validation">
  452.                     <div class="modal-header">
  453.                         <h2 class="font-medium text-base mr-auto">Zählerstand drucken  </h2>
  454.                         <a data-tw-dismiss="modal" class="closeDrucken" href="javascript:;"> <i data-lucide="x" class="w-8 h-8 text-slate-400"></i> </a>
  455.                     </div> <!-- END: Modal Header -->
  456.                     <div class="modal-body p-5">
  457.                         <div id="druckenElemente">
  458.                             <div class="input-form">
  459.                                 <h2 class="font-medium text-base mr-auto">Zählerstand gemeldet</h2>
  460.                             </div>
  461.                             {% for key,value in app.session.get('zaehler') %}
  462.                                 {% if app.session.get('staende')[key] is not empty %}
  463.                                     <div class="input-form mt-3">
  464.                                         <label for="horizontal-form-1" class="form-label">Zähler: {{ value }}</label>
  465.                                     </div>
  466.                                     <div class="input-form">
  467.                                         <label for="horizontal-form-1" class="form-label">Ablesedatum: {{ app.session.get('ablesedatum')[key]|date("d.m.Y") }}</label>
  468.                                     </div>
  469.                                     <div class="input-form">
  470.                                         <label for="horizontal-form-1" class="form-label">Neuer Zählerstand: {{ app.session.get('staende')[key] }} {{ app.session.get('einheit')[key] }}</label>
  471.                                     </div>
  472.                                     {% if key in app.session.get('toleranzart')|keys %}
  473.                                         {% if app.session.get('toleranzart')[key] == "Anderer Grund" %}
  474.                                             <div class="input-form">
  475.                                                 <label for="horizontal-form-1" class="form-label">Grund: {{ app.session.get('toleranzarttext')[key] }}</label>
  476.                                             </div>
  477.                                             {% elseif app.session.get('toleranzart')[key] is not empty %}
  478.                                                 <div class="input-form">
  479.                                                     <label for="horizontal-form-1" class="form-label">Grund: {{ app.session.get('toleranzart')[key] }}</label>
  480.                                                 </div>
  481.                                         {% endif %}
  482.                                     {% endif %}
  483.                                     {% if value in app.session.get('fotos')|keys %}
  484.                                         <img src="data:image/jpeg;base64,{{ app.session.get('fotos')[value] }}" alt="Foto" class="mt-3">
  485.                                     {% endif %}
  486.                                 {% endif %}
  487.                             {% endfor %}
  488.                             <div class="input-form mt-3">
  489.                                 <label for="horizontal-form-1" class="form-label">gemeldet am: {{ "now"|date("d.m.Y") }} um {{ "now"|date("H:i") }} Uhr</label>
  490.                             </div>
  491.                         </div>
  492.                         <div class="input-form mt-5">
  493.                             <input type="button" id="druckenDialog" class="btn btn-primary" value="Drucken">
  494.                         </div>
  495.                     </div>
  496.                 </div>
  497.             </div>
  498.         </div>
  499.     {% endif %}
  500.     {% if twofa and app.request.get('twofa') is empty %}
  501.         <div id="twofapopup" class="modal" data-tw-backdrop="static" tabindex="-1" aria-hidden="true">
  502.             <div class="modal-dialog modal-lg">
  503.                 <div class="modal-content" id="form-validation">
  504.                     <div class="modal-header">
  505.                         <h2 class="font-medium text-base mr-auto">Information zur 2FA </h2>
  506.                         <a data-tw-dismiss="modal" class="closeDrucken" href="javascript:;"> <i data-lucide="x" class="w-8 h-8 text-slate-400"></i> </a>
  507.                     </div> <!-- END: Modal Header -->
  508.                     <div class="modal-body p-10">
  509.                         <form action="/login/twofa/" method="post" id="login2faformular">
  510.                             <div class="input-form mt-3">
  511.                                 <label for="horizontal-form-1" class="form-label">Ihnen wird der Code nach dem Absenden per Mail zugesendet.</label>
  512.                             </div>
  513.                             <div class="input-form mt-5">
  514.                                 <input type="hidden" id="emailtwofa" name="emailtwofa" class="btn btn-primary" value="">
  515.                                 <input type="hidden" id="passwordtwofa" name="passwordtwofa" class="btn btn-primary" value="">
  516.                                 <input type="submit" class="btn btn-primary" value="Absenden">
  517.                             </div>
  518.                         </form>
  519.                     </div>
  520.                 </div>
  521.             </div>
  522.         </div>
  523.     {% endif %}
  524. {% endblock %}
  525. {% block scripts %}
  526.     <script src="{{ asset('/js/password-strength/jquery.strengthify.js')}}"></script>
  527.     <script src="{{ asset('/js/printthis/printThis.js')}}"></script>
  528.     <script src="{{ asset('/js/login.js')}}"></script>
  529. {% endblock %}