PageSourceSearch

https://ai-teacher.de/testme.php

html ai-teacher.de collected 2026-09-24 14:20:32 UTC 35,573 bytes, 698 lines download raw bytes

1
2<!DOCTYPE html>
3<html lang="de" data-user-logged-in="0">
4
5<head>
6  <meta charset="UTF-8">
7  
7<script>
8  (function () {
9    var STORAGE_KEY = 'aiTeacherUiTheme';
10    var VALID = { light: 1, dark: 1, system: 1 };
11    var fromServer = null;
12    var loggedIn = false;
13    var ls = null;
14    try { ls = localStorage.getItem(STORAGE_KEY); } catch (e) {}
15    var choice = 'system';
16    if (loggedIn && fromServer && VALID[fromServer]) {
17      choice = fromServer;
18    } else if (!loggedIn && ls && VALID[ls]) {
19      choice = ls;
20    } else if (fromServer && VALID[fromServer]) {
21      choice = fromServer;
22    } else if (ls && VALID[ls]) {
23      choice = ls;
24    }
25    var effective = 'light';
26    if (choice === 'dark') effective = 'dark';
27    else if (choice === 'light') effective = 'light';
28    else {
29      try {
30        effective = window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';
31      } catch (err) {}
32    }
33    document.documentElement.setAttribute('data-bs-theme', effective);
34    document.documentElement.setAttribute('data-ui-theme', choice);
35    document.documentElement.style.colorScheme = effective === 'dark' ? 'dark' : 'light';
36    if (loggedIn && fromServer && VALID[fromServer]) {
37      try { localStorage.setItem(STORAGE_KEY, fromServer); } catch (e) {}
38    }
39  })();
40  </script>
40
41    
41<script>window.AI_TEACHER_ROOT_PATH = "";</script>
41
42  	<title>AI Teacher | Üben aus deinem Schulstoff</title>
43  	<META name="description" content="Mache Fotos vom Stoff und lass dich abfragen. Er erklärt, falls etwas nicht verstanden wurde und erstellt Übungen. Kostenlos mithilfe künstlicher Intelligenz.">
44	<META name="author" content="Studinino - Tom Thaler">
45	
46		
47	<base href="/">
48
49  <!-- Favicons -->
50	<link rel="apple-touch-icon" sizes="180x180" href="img/favicon/apple-touch-icon.png">
51    <link rel="icon" type="image/png" sizes="32x32" href="img/favicon/favicon-32x32.png">
52    <link rel="icon" type="image/png" sizes="16x16" href="img/favicon/favicon-16x16.png">
53    <link rel="manifest" href="img/favicon/site.webmanifest">
54    <link rel="canonical" href="https://www.ai-teacher.de/testme.php">
55
56  <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
57  
58  <link href="lib/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet">
59  
59<script src="lib/bootstrap-5.3.1/bootstrap.bundle.min.js"></script>
59
60  <link rel="stylesheet" href="lib/bootstrap-5.3.1/bootstrap-icons.css">
61  
62  
62<script>
63        var klaroConfig = {
64            version: 1,
65            elementID: 'klaro',
66            noAutoLoad: false,
67            htmlTexts: true,
68            embedded: false,
69            cookieName: 'klaro',
70            groupByPurpose: true,
71            storageMethod: 'localStorage',
72            cookieExpiresAfterDays: 365,
73            privacyPolicy: 'data-privacy.php', // Link zu deiner Datenschutzerklärung
74        
75            default: false, // Standard: alles deaktiviert außer "notwendig"
76            mustConsent: true, // Nutzer muss aktiv zustimmen
77            acceptAll: true,
78            hideDeclineAll: false,
79            hidePoweredBy: true,
80                    
81            translations: {
82                de: {
83                    privacyPolicyUrl: 'data-privacy.php',
84                    consentModal: {
85                        title: 'Cookie-Einstellungen',
86                        description: 'Hier können Sie auswählen, welche Cookies und Dienste Sie zulassen möchten. Sie können Ihre Auswahl jederzeit ändern.'
87                    },
88                    consentNotice: {
89                        description: 'Wir verwenden Cookies, um unsere Webapp zu verbessern und Ihren Besuch zu analysieren. Sie können selbst entscheiden.',
90                        learnMore: 'Einstellungen'
91                    },
92                    purposes: {
93                        necessary: 'Notwendige Cookies',
94                        analytics: 'Statistiken'
95                    },
96                    ok: 'Einverstanden',
97                    acceptAll: 'Alle akzeptieren',
98                    decline: 'Ablehnen',
99                    save: 'Speichern'
100                }
101            },
102        
103            services: [
104                {
105                    name: 'necessary',
106                    title: 'Technisch notwendige Cookies',
107                    purposes: ['necessary'],
108                    required: true,
109                    optOut: false,
110                    onlyOnce: true
111                },
112                {
113                    name: 'google-analytics',
114                    title: 'Google Analytics',
115                    purposes: ['analytics'],
116                    cookies: [/^_ga/, /^_gid/, /^_gat/],
117                    required: false,
118                    optOut: false,
119                    onlyOnce: false
120                },
121                {
122                    name: 'onboarding',
123                    title: 'Onboarding Tour',
124                    purposes: ['necessary'], 
125                    required: true, // weil für deine App-Funktion unverzichtbar
126                    onlyOnce: true
127                }
128                ,
129                {
130                    name: 'youtube',
131                    title: 'Erklärvideos von YouTube',
132                    purposes: ['necessary'], 
133                    required: true, // weil für deine App-Funktion unverzichtbar
134                    onlyOnce: true
135                }
136            ]
137        };
138    </script>
138
139    
140    
140<script src="lib/klaro/klaro.js"></script>
140
141	<!-- 
141<script src="https://cdn.kiprotect.com/klaro/latest/klaro.js"></script>
141 -->
142	
143
144	
144<script src="lib/jquery-2.1.1/jquery.min.js"></script>
144
145	
146	
146<script src="lib/file-upload/file-upload.js"></script>
146
147	<link rel="stylesheet" href="lib/file-upload/file-upload.css">
148	
149	<link rel="stylesheet" href="lib/easymde/easymde.min.css">
150	
150<script src="lib/easymde/easymde.min.js"></script>
150
151	<!-- <link rel="stylesheet" href="https://unpkg.com/easymde/dist/easymde.min.css"> -->
152	<!-- 
152<script src="https://unpkg.com/easymde/dist/easymde.min.js"></script>
152 -->
153
154	<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/mathlive/dist/mathlive.min.css" />
155    
155<script type="module">
156        import { MathfieldElement } from "https://cdn.jsdelivr.net/npm/mathlive/dist/mathlive.min.mjs";
157        window.MathfieldElement = MathfieldElement;
158    </script>
158
159	
160	
160<script>
161    window.MathJax = {
162      tex: {
163        inlineMath: [['$', '$'], ['\\(', '\\)']],  // ← aktiviert $...$ als Inline-Math
164        displayMath: [['\\[', '\\]'], ['$$','$$']] // erlaubt \[...\] und $$...$$
165      },
166      svg: { fontCache: 'global' }
167    };
168    </script>
168
169    
169<script id="MathJax-script" async src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml.js"></script>
169
170    
171    
171<script src="lib/driver.js/driver.js"></script>
171
172	<link rel="stylesheet" href="lib/driver.js/driver.css"/>
173	<!-- 
173<script src="https://cdn.jsdelivr.net/npm/driver.js@latest/dist/driver.js.iife.js"></script>
173  -->
174	<!-- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/driver.js@latest/dist/driver.css"/> -->
175    
176    <!-- DataTables -->
177    <link rel="stylesheet" href="lib/datatables/dataTables.bootstrap5.min.css">
178    <!-- <link rel="stylesheet" href="https://cdn.datatables.net/1.13.6/css/dataTables.bootstrap5.min.css"> -->
179    <!-- JS -->
180    
180<script src="lib/datatables/jquery.dataTables.min.js"></script>
180
181    
181<script src="lib/datatables/dataTables.bootstrap5.min.js"></script>
181
182    <!-- 
182<script src="https://cdn.datatables.net/1.13.6/js/jquery.dataTables.min.js"></script>
182 -->
183    <!-- 
183<script src="https://cdn.datatables.net/1.13.6/js/dataTables.bootstrap5.min.js"></script>
183 -->
184    <!-- Responsive Extension -->
185    <link rel="stylesheet" href="lib/datatables/responsive.dataTables.min.css">
186    
186<script src="lib/datatables/dataTables.responsive.min.js"></script>
186
187    <!-- <link rel="stylesheet" href="https://cdn.datatables.net/responsive/2.5.0/css/responsive.dataTables.min.css"> -->
188    <!-- 
188<script src="https://cdn.datatables.net/responsive/2.5.0/js/dataTables.responsive.min.js"></script>
188 -->
189    
190    <!-- 1) ProgressBar.js (falls noch nicht drin) -->
191    
191<script src="lib/progressBar.js/progressbar.min.js"></script>
vendor: 149 bytes, lines 191-193
191
192	
193	<script type="text/plain" data-type="application/javascript" data-name="google-analytics" async src="https://www.googletagmanager.com/gtag/js?id=
193G-B65FY9T4N8
vendor: 21 bytes, lines 193-195
193"></script>
194    
195    
195<script type="text/plain" data-type="application/javascript" data-name="google-analytics">
196        
vendor: 152 bytes, lines 196-200
196window.dataLayer = window.dataLayer || [];
197        function gtag(){dataLayer.push(arguments);}
198        gtag('js', new Date());
199
200        gtag('config', '
200G-B65FY9T4N8
vendor: 8 bytes, lines 200-201
200');
201    
201</script>
201
202    
203    
203<script type="text/plain" data-type="application/javascript" data-name="google-analytics">
vendor: 411 bytes, lines 203-212
203
204        (function(w,d,s,l,i){
205        w[l]=w[l]||[];
206        w[l].push({'gtm.start': new Date().getTime(), event:'gtm.js'});
207        var f=d.getElementsByTagName(s)[0],
208            j=d.createElement(s), dl=l!='dataLayer'?'&l='+l:'';
209        j.async=true;
210        j.src='https://www.googletagmanager.com/gtm.js?id='+i+dl;
211        f.parentNode.insertBefore(j,f);
212        })(window,document,'script','dataLayer','
212GTM-WKDKBCXJ
vendor: 8 bytes, lines 212-213
212');
213    
213</script>
213
214
215  <!-- Fonts -->
216  <link href="https://fonts.googleapis.com" rel="preconnect">
217  <link href="https://fonts.gstatic.com" rel="preconnect" crossorigin>
218  <link href="https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&family=Poppins:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&family=Nunito:ital,wght@0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap" rel="stylesheet">
219
220  <!-- Vendor CSS Files -->
221  <link href="lib/FlexStart/assets/vendor/aos/aos.css" rel="stylesheet">
222  <link href="lib/FlexStart/assets/vendor/glightbox/css/glightbox.min.css" rel="stylesheet">
223  <link href="lib/FlexStart/assets/vendor/swiper/swiper-bundle.min.css" rel="stylesheet">
224
225  
226
227  <!-- Main CSS File -->
228  <link href="lib/FlexStart/assets/css/main.css" rel="stylesheet">
229  
230  	<link rel="stylesheet" href="css/ai-teacher.css">
231  	<link rel="stylesheet" href="css/ai-teacher-dark.css">
232  	  
233</head>
234
235
236<body class="blog-details-page">
237
238    
238<script src="js/local-storage-feature-usage.js"></script>
238
239  
240  <!-- Alerts -->
241  <div id="alert-container"
242     class="position-fixed start-50 translate-middle-x"
243     style="bottom: 30px; z-index:2000; pointer-events: none;">
244	</div>
245
246
247  
247<script src="js/alert.js"></script>
247
248  
249    <!-- End Alerts -->
250  
251  
251<script>
252    function openModalById(id) {
253        if (!id) return;
254        const el = typeof id === 'string' ? document.getElementById(id) : id;
255        if (el && typeof bootstrap !== 'undefined') {
256            bootstrap.Modal.getOrCreateInstance(el).show();
257        }
258    }
259  </script>
259
260
261  <header id="header" class="header d-flex align-items-center fixed-top">
262    <div class="container-fluid container-xl position-relative d-flex align-items-center">
263
264      <a href="/" class="logo d-flex align-items-center me-auto">
265        <!-- Uncomment the line below if you also wish to use an image logo -->
266        <img src="img/logo-header.png" alt="AI Teacher">
267      </a>
268
269      <div id="headerSearch" class="header-search d-print-none"
270  data-no-results="Keine passenden Arbeitsblätter gefunden."
271  data-create="Eigenes Arbeitsblatt erstellen"
272  data-class-label="Klasse"
273  data-open-label="Arbeitsblätter suchen"
274  data-close-label="Suche schließen"
275  data-create-icon="bi bi-plus-circle-fill"
276  data-loading-label="Suche läuft…">
277  <div id="headerSearchBackdrop" class="header-search-backdrop" hidden></div>
278  <div class="header-search-bar">
279    <div id="headerSearchPanel" class="header-search-panel" inert>
280      <div class="header-search-field">
281        <span id="headerSearchSpinner" class="header-search-spinner" aria-hidden="true"></span>
282        <span class="header-search-progress" aria-hidden="true"></span>
283        <input type="search" id="headerSearchInput" class="header-search-input"
284          placeholder="Arbeitsblatt suchen…"
285          autocomplete="off" enterkeyhint="search" maxlength="100"
286          role="combobox" aria-autocomplete="list" aria-expanded="false"
287          aria-controls="headerSearchResults" aria-haspopup="listbox">
288        <button type="button" id="headerSearchClearBtn" class="header-search-clear d-none"
289          title="Eingabe löschen"
290          aria-label="Eingabe löschen">
291          <i class="bi bi-x-lg" aria-hidden="true"></i>
292        </button>
293      </div>
294      <div id="headerSearchResults" class="header-search-results d-none" role="listbox"
295        aria-label="Suchen"></div>
296    </div>
297    <button type="button" id="headerSearchBtn" class="header-search-btn"
298      aria-expanded="false" aria-controls="headerSearchPanel"
299      title="Arbeitsblätter suchen"
300      aria-label="Arbeitsblätter suchen">
301      <i class="bi bi-search" aria-hidden="true"></i>
302    </button>
303  </div>
304</div>
305      
306             
307      <!-- Navbar for small screens (smartphone) -->
308      <nav id="navmenu-mobile" class="navmenu d-xl-none d-print-none">
309        <ul>
310          <li><a href="testme.php" id="headerPracticeNavPhoto"><span>Üben mit Foto</span><i title="Arbeitsblatt (Foto & Upload)" alt="Arbeitsblatt (Foto & Upload)" class="bi bi-camera bg-dark text-white"></i></a></li>
311          <li><a href="exercise.php" id="headerPracticeNavTopic"><span>Üben mit Thema</span><i title="Arbeitsblatt" alt="Arbeitsblatt" class="bi bi-keyboard bg-primary text-white"></i></a></li>
312          <li><a href="explain.php"><span>Etwas erklären</span><i title="Erklärung" alt="Erklärung" class="bi bi-lightbulb bg-success text-white"></i></a></li>
313          <li><a></a></li>
314          <li>
315          	<a href="profile.php" title="Profil">
316                            	<span>Anmelden</span>
317              	<i class="bi-person-circle fs-3"></i>
318                          </a>
319		  </li>
320		  
321		          </ul>
322        <i class="mobile-nav-toggle bi bi-list"></i>
323      </nav><!-- Navbar for large screens -->
324<nav id="navmenu-desktop" class="navmenu d-none d-xl-block d-print-none">
325	<ul>
326		<li><a href="exercise.php" id="headerPracticeNav">Arbeitsblatt erstellen</a></li>
327		<li><a href="testme.php" id="headerTestOnPhotoBtn"
328			class="d-inline-flex justify-content-center align-items-center rounded-start bg-dark text-white"
329			style="width: 36px; height: 36px;"><i
330				title="Arbeitsblatt (Foto & Upload)"
331				alt="Arbeitsblatt (Foto & Upload)"
332				class="bi bi-camera fs-6 m-0"></i></a></li>
333		<li><a href="exercise.php" id="headerExerciseBtn"
334			class="d-inline-flex justify-content-center align-items-center rounded-end bg-primary text-white"
335			style="width: 36px; height: 36px;"><i
336				title="Arbeitsblatt"
337				alt="Arbeitsblatt"
338				class="bi bi-keyboard fs-6 m-0"></i></a></li>
339		<li><a href="explain.php">Erklären</a></li>
340		<li><a href="explain.php" id="headerExplainBtn"
341			class="d-inline-flex justify-content-center align-items-center rounded bg-success text-white"
342			style="width: 36px; height: 36px;"><i
343				title="Erklärung"
344				alt="Erklärung"
345				class="bi bi-lightbulb fs-6 m-0"></i></a></li>
346          					<li><a></a></li>
347                    			
348        </ul>
349</nav>      
350            	<a class="btn-getstarted flex-md-shrink-0 rounded-pill" href="profile.php">Anmelden</a>
351            
352       
353    </div>
354  </header>
355  
356  <main class="main">
357  
358  
359      <!-- Page Title -->
360    <div class="page-title">
361      <div class="heading">
362
363      </div>
364    </div>
365
366<!-- User mail verfication check -->
367
368<div class="modal fade" id="practicePlanRegisterModal" tabindex="-1" aria-labelledby="practicePlanRegisterModalLabel" aria-hidden="true">
369  <div class="modal-dialog modal-dialog-centered">
370    <div class="modal-content shadow-lg border-0">
371      <div class="modal-header border-0">
372        <h5 class="modal-title" id="practicePlanRegisterModalLabel">
373          <i class="bi bi-signpost-2 me-1"></i>
374          Lernplan starten        </h5>
375        <button type="button" class="btn-close" data-bs-dismiss="modal" id="practicePlanRegisterClose" aria-label="Schließen"></button>
376      </div>
377      <div class="modal-body pt-0">
378        <p>Ein Lernplan zerlegt deinen Stoff in Themen bis zur Klassenarbeit – mit Fortschritt, Quiz und Abschlusstest. Dafür brauchst du einen <b>kostenlosen Account</b>, damit der Plan gespeichert bleibt und du weitermachen kannst.</p>
379        <ul class="pb-1">
380          <li>Passend zu deinem Thema oder zu Foto und PDF <i class="bi bi-check-circle-fill text-success"></i></li>
381          <li>Schritt für Schritt üben, den Stand im Blick <i class="bi bi-check-circle-fill text-success"></i></li>
382          <li>Ideal vorbereitet auf die Klassenarbeit <i class="bi bi-check-circle-fill text-success"></i></li>
383        </ul>
384
385        <div class="d-grid mb-2">
386          <a href="profile.php" class="btn btn-primary rounded-pill w-100" id="practicePlanRegisterCta">
387            Jetzt kostenlos anmelden          </a>
388        </div>
389        <small class="d-grid text-center">Kostenlos. Keine Zahlungsdaten. 30 Sekunden.</small>
390
391        <div class="d-flex align-items-center my-2 d-print-none">
392          <div class="flex-grow-1 border-bottom"></div>
393          <div class="text-decoration-none text-muted small">&nbsp;oder&nbsp;</div>
394          <div class="flex-grow-1 border-bottom"></div>
395        </div>
396
397                <div class="d-grid mb-2">
398          <a href="https://accounts.google.com/o/oauth2/v2/auth?client_id=311207241500-a71t24sf0ki5cn0cfvb3fifcpjrn2nf4.apps.googleusercontent.com&redirect_uri=https://www.ai-teacher.de/oauth2callback.php&response_type=code&scope=email%20profile&access_type=online" class="btn btn-light rounded-pill border" id="practicePlanRegisterGoogleBtn">
399            <img src="https://developers.google.com/identity/images/g-logo.png" alt="" width="20" height="20" class="me-2">
400            Mit Google anmelden          </a>
401        </div>
402        
403                <div class="d-grid">
404          <a href="https://appleid.apple.com/auth/authorize?response_type=code&amp;response_mode=form_post&amp;client_id=com.tomthaler.aiteacher.web&amp;redirect_uri=https%3A%2F%2Fwww.ai-teacher.de%2Foauth2callback-apple.php&amp;scope=name+email&amp;state=7a5b4063ca09d6e352f076e9738a678e" class="btn btn-light rounded-pill border" id="practicePlanRegisterAppleBtn">
405            <svg width="20" height="20" viewBox="0 0 14 17" fill="#000" xmlns="http://www.w3.org/2000/svg" class="me-2" aria-hidden="true">
406              <path d="M11.816 9.1c-.015-1.514 1.236-2.24 1.292-2.275-.704-1.03-1.795-1.17-2.18-1.184-0.931-.093-1.817.547-2.289.547-.472 0-1.196-.533-1.969-.519-1.014.015-1.962.587-2.487 1.495-1.066 1.846-.272 4.577.764 6.074.507.738 1.11 1.567 1.9 1.54.752-.03 1.035-.498 1.94-.498.904 0 1.159.498 1.968.484.797-.015 1.3-.75 1.8-1.492.567-.828.801-1.633.816-1.673-.017-.008-1.564-.6-1.58-2.367zM9.74 3.612c.413-.5.691-1.196.615-1.896-.594.024-1.313.39-1.74.89-.383.443-.721 1.151-.63 1.828.665.051 1.342-.34 1.755-.822z"/>
407            </svg>
408            Mit Apple anmelden          </a>
409        </div>
410              </div>
411    </div>
412  </div>
413</div>
414
415
416<div class="container">
417  <main>
418  <!-- 
419    <div class="py-5 text-center">
420      <h2>AI Teacher</h2>
421      <p class="lead">Mache Fotos vom Stoff und lass dich abfragen. Er erklärt, falls etwas nicht verstanden wurde und erstellt Übungen. Kostenlos mithilfe künstlicher Intelligenz.</p>
422    </div>
423    -->
424
425    <div class="row g-6">
426      <div class="col-md-6 offset-md-3">
427        <h1 class="mb-3 fs-4" id="ask-create-title"><i class="bi bi-camera"></i> Übungen aus deinem Schulstoff</h1>
428        <form method="post" action="index.php?site=return-testme" enctype="multipart/form-data" id="testme" name="testme" class="needs-validation" novalidate>
429          <div class="row g-3">
430          
431          <div class="card w-100 bg-light">
432              <div class="card-body">
433                <h2 class="card-text h6" id="ask-create-lead">Lade PDFs oder Fotos von Heftseiten, Buch, Skript oder Tafelbild hoch – AI Teacher erstellt dir automatisch passende Übungen.</h2>
434                
435              </div>
436            </div>
437          
438            
439            <div class="col-md-6">
440              <label for="course" class="form-label">Fach</label>
441              <input type="text" class="form-control" id="course" name="course" list="courses" placeholder="z. B. Mathe" value="" required>
442              <datalist id="courses"><option value="Biologie"><option value="BWL"><option value="Chemie"><option value="Deutsch"><option value="Englisch"><option value="Erdkunde"><option value="Ethik"><option value="Französisch"><option value="Gemeinschaftskunde"><option value="Geschichte"><option value="Griechisch"><option value="Informatik"><option value="Kunst"><option value="Latein"><option value="Mathe"><option value="Musik"><option value="Physik"><option value="Politik"><option value="Religion"><option value="Sachunterricht"><option value="Spanisch"><option value="Sport"><option value="Technik"><option value="VWL"><option value="Wirtschaft"></datalist>              <div class="invalid-feedback">
443                Bitte gib ein Fach ein.
444              </div>
445            </div>
446                      
447            <div class="col-12">
448 
449 
450              <label class="form-label">Dein Schulstoff (Foto oder PDF hochladen) 
451                  <img src="img/loading-spinner.gif" alt="loading" id="loading-spinner" style="display: none;" width="30">
452              </label><br>
453              <label for="files" class="form-label btn btn-primary"><i class="bi bi-plus-lg"></i></label>
454              <br>
455              <input class="form-control" type="file" id="files" name="files[]" multiple hidden required>
456
457            </div>
458            
459            <div class="mt-0 mb-2" id="ask-enter-topic-hint">
460
461              <div class="small text-muted mb-1">
462                Keine Unterlagen zur Hand? Ohne geht’s auch!
463              </div>
464            
465              <a href="exercise.php" type="button" class="btn btn-sm btn-outline-secondary px-3">
466                Themen eingeben 
467              </a>
468            
469            </div>
470
471            <div class="col-12 create-mode-toggle" id="create-mode-toggle">
472  <div class="btn-group create-mode-toggle-group" role="group" id="create-mode-toggle-group" aria-label="Arbeitsblatt oder Lernplan">
473    <input type="radio" class="btn-check" name="create_mode" id="create-mode-sheet" value="sheet" autocomplete="off" checked>
474    <label class="btn btn-outline-primary" for="create-mode-sheet" id="create-mode-sheet-label">
475      <i class="bi bi-keyboard me-1"></i>Arbeitsblatt    </label>
476    <input type="radio" class="btn-check" name="create_mode" id="create-mode-plan" value="plan" autocomplete="off">
477    <label class="btn btn-outline-primary" for="create-mode-plan" id="create-mode-plan-label">
478      <i class="bi bi-signpost-2 me-1"></i>Lernplan (beta)    </label>
479  </div>
480  <div class="small text-muted mt-2" id="create-mode-help">Ein Blatt aus deinem Upload</div>
481</div>
482          	
483          	<div class="col-12 js-create-mode-sheet-only">
484              	<div class="form-check form-switch">
485                  <input class="form-check-input" type="checkbox" role="switch" id="is_vocabulary" name="is_vocabulary" >
486                  <label class="form-check-label" for="is_vocabulary">Vokabeltest</label>
487                </div>
488                <!-- 
489                <div class="form-check form-switch">
490                  <input class="form-check-input" type="checkbox" role="switch" id="with-solution" name="with-solution" >
491                  <label class="form-check-label" for="flexSwitchCheckChecked">mit Musterlösung</label>
492                </div>
493                 -->
494            </div>
495			
496			<div class="col-12 js-create-mode-sheet-only">
497            	                <input type="radio" class="btn-check" name="type" id="type-default" value="default" autocomplete="off" checked required>
498                <label class="btn btn-light btn-toggle-active" for="type-default" title="Offene Aufgaben, die schriftlich bearbeitet werden. Wie einem klassischen Test oder einer Klassenarbeit."><img src="img/icon-free-text.png" width="48"><br><small>&nbsp;&nbsp;&nbsp;&nbsp;Freitext&nbsp;&nbsp;&nbsp;&nbsp;</small></label>
499                                
500                                <input type="radio" class="btn-check" name="type" id="type-single-choice" value="single-choice"  autocomplete="off" >
501                <label class="btn btn-light btn-toggle-active" for="type-single-choice" title="Fragen mit 4 Antwortmöglichkeiten von denen genau eine richtig ist."><img src="img/icon-single-choice.png" width="48"><br><small>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Quiz&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</small></label>
502                                
503                                <input type="radio" class="btn-check" name="type" id="type-multiple-choice" value="multiple-choice"  autocomplete="off" >
504                <label class="btn btn-light btn-toggle-active" for="type-multiple-choice" title="Fragen mit 4 Antwortmöglichkeiten von denen mindestens eine richtig ist."><img src="img/icon-multiple-choice.png" width="48"><br><small>Multiple Choice</small></label>
505                                
506                            </div>
507            
508          </div>
509
510          <hr class="my-4">
511          <input type="hidden" id="timestamp" name="timestamp" value="1790259632" />
512          <input type="hidden" id="sid" name="sid" value="b98bc20de24f5245cd18c9549682a58a" />
513          		  
514          <button class="w-100 btn btn-primary btn-lg rounded-pill" type="submit" id="explain-me">Los! </button>
515          
516                    <div class="mt-2">
517              <div class="small text-muted mb-1 text-center">
518                Kostenlos starten · Keine Anmeldung nötig
519              </div>            
520          </div>
521          
522        </form>
523        
524            <!-- 
525            <div class="card w-100 bg-light">
526              <div class="card-body">
527                <p class="card-text">Keine Unterlagen zur Hand? Dann gib einfach die Themen ein, die du üben möchtest.</p>
528                <a href="exercise.php" title="Arbeitsblatt erstellen" class="btn rounded-pill btn-sm btn-primary ?>" aria-current="page"><i class="bi bi-keyboard ms-1 me-1" title="Frag mich ab"></i> <span class="me-1">Themeneingabe</span></a>
529              </div>
530            </div>
531             -->
532        
533      </div>
534    </div>
535  </main>
536  
537  
538  
538<script type="text/javascript">
539  	document.getElementById("files").addEventListener("change", function(e){
540  	
541  		e.preventDefault();
542  		
543  		$.ajax({
544			url: "fileUpload.php",
545			type: "POST",
546			data: new FormData(document.getElementById('testme')),
547			contentType: false,
548			processData: false,
549			beforeSend: function() {
550                $("#explain-me").prop("disabled", true); // deactivate button during ajax run
551                $("#files").prop("disabled", true); // deactivate button during ajax run
552                $("#loading-spinner").show();
553            },
554			success: function(data){
555				console.log(data);
556				document.getElementById("ask-enter-topic-hint")?.remove();
557				
558				let filesElement = $("#files"); // Element mit ID "files"
559        		let warningMessage = "<p id='file-limit-warning' style='color: red;'>⚠️ Es sind nur maximal 22 Bilder bzw. Seiten erlaubt! Bitte entferne einige.</p>";
560				
561				// Falls die Meldung schon existiert, erst entfernen
562        		$("#file-limit-warning").remove();
563				
564				// Disable button when file limit exceeded and enable which resolved by the user
565				if (data.includes("Check file limit: exceeded")) {
566                    $("#explain-me").prop("disabled", true); // Button deaktivieren
567                    $("#files").prop("disabled", true); // Button deaktivieren
568                    filesElement.after(warningMessage); // Nachricht unter #files einfügen
569                } else {
570                    $("#explain-me").prop("disabled", false); // Button wieder aktivieren
571                    $("#files").prop("disabled", false); // Button wieder aktivieren
572                }
573                
574                let warningElement = $("#file-limit-warning");
575        		let warningMessagePDF = "<p id='pdf-limit-warning' style='color: red;'>⚠️ Bitte prüfe die Seitenzahl deiner PDF und <a href='#' onclick='window.location.reload(true);'>beginne von vorne</a>.</p>";
576                if (data.includes("PDF DECOMPOSED")) {
577                	warningElement.after(warningMessagePDF); // Nachricht unter #files einfügen
578                }
579			},
580            complete: function() {
581                $("#loading-spinner").hide(); // Spinner ausblenden
582            }           
583		});
584  		
585  	});
586  </script>
vendor: 1 bytes, line 586
586
587<script id="createModeToggleConfig" type="application/json">{"sheetHelp":"Ein Blatt aus deinem Upload","planHelp":"Lernpfad aus deinem Schulstoff","sheetSubmit":"Los!","planSubmit":"Lernplan erstellen","planAction":"index.php?site=return-practice-plan","requireLoginForPlan":true}</script>
vendor: 1 bytes, line 587
587
588<script src="js/create-mode-toggle.js"></script>
588
589  
590</div><!-- Android App Advertisement -->
591<!-- <button class="btn btn-primary" type="button" data-bs-toggle="offcanvas" data-bs-target="#androidAppAd" aria-controls="offcanvasScrolling">Enable body scrolling</button>  -->
592<div class="offcanvas offcanvas-bottom" data-bs-scroll="true" data-bs-backdrop="false" tabindex="-1" id="androidAppAd" aria-labelledby="offcanvasBottomLabel">
593  <div class="offcanvas-header">
594    <h5 class="offcanvas-title" id="offcanvasBottomLabel">Hol dir AI Teacher als App!</h5>
595    <button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close"></button>
596  </div>
597  <div class="offcanvas-body small">
598  	<p>So hast du AI Teacher immer griffbereit wenn du ihn brauchst.</p> 
599  	<a id="app-link" href="https://play.google.com/store/apps/details?id=com.tomthaler.aiteacher" target="_blank"><img id="app-icon" src="img/GetItOnGooglePlay_Badge_Web_color_German.png" alt="App Icon"></a>
600  </div>
601</div>
602
603
604  
605  </main>
606  <footer id="footer" class="footer d-print-none">
607
608    <div class="container footer-top">
609      <div class="row gy-4">
610		
611				
612		<div class="col-lg-4 col-md-6 footer-about">
613          <a href="get-ai-teacher.php" class="d-flex align-items-center">
614            <span class="sitename">AI Teacher App</span>
615          </a>
616          <div class="footer-contact pt-3">
617			<p><a id="app-link" href="https://play.google.com/store/apps/details?id=com.tomthaler.aiteacher" target="_blank"><img id="app-icon" src="img/GetItOnGooglePlay_Badge_Web_color_German.png" width="170" alt="App Icon"></a></p>
618        	<p><a id="app-link" href="https://apps.apple.com/us/app/ai-teacher/id6745111680" target="_blank"><img id="app-icon" src="img/Download_on_the_App_Store_Badge_DE_RGB_blk_092917.svg" width="170" alt="Apple App"></a></p>
619          </div>
620        </div>
621		
622        
623        <div class="col-lg-4 col-md-3 footer-links">
624          <h4>Infos</h4>
625          <ul>
626
627            <li class="bi bi-chevron-right pb-0"><a href="value-students-parents.php" class="nav-link px-2 text-body-secondary" title="Für Schüler & Eltern">Für Schüler & Eltern</a></li>
628            <li class="bi bi-chevron-right pb-0"><a href="value-teacher.php" class="nav-link px-2 text-body-secondary" title="Für Lehrer">Für Lehrer</a></li>
629          	<li class="bi bi-chevron-right pb-0"><a href="pricing.php" class="nav-link px-2 text-body-secondary" title="Preise">Abos & Preise</a></li>          	<li class="bi bi-chevron-right pb-0"><a href="gallery.php" class="nav-link px-2 text-body-secondary" title="Galerie">Galerie</a></li>
630          	<li class="bi bi-chevron-right pb-0"><a href="faq.php" id="footer-faq-link" class="nav-link px-2 text-body-secondary" title="FAQ">FAQ</a></li>
631          	<li class="bi bi-chevron-right pb-0"><a href="get-ai-teacher.php" class="nav-link px-2 text-body-secondary" title="Wie funktionier AI Teacher?">AI Teacher App</a></li>                        <li class="bi bi-chevron-right pb-0"><a href="https://www.youtube.com/playlist?list=PLiQPjQw-DJwjlvuRCrExfEXpR18ajN6Wq" class="nav-link px-2 text-body-secondary" target="_blank" title="Erklärvideos">Erklärvideos</a></li>
632                        <!-- <li class="nav-item"><a href="how-it-works.php" class="nav-link px-2 text-body-secondary" title="Wie funktionier AI Teacher?">Wie funktioniert AI Teacher?</a></li> -->
633
634          </ul>
635        </div>
636
637        <div class="col-lg-4 col-md-3 footer-links">
638          <h4>Über</h4>
639          <ul>
640            <li class="bi bi-chevron-right pb-0"><a href="index.php#contact" class="nav-link px-2 text-body-secondary" title="AI Content Disclaimer">Kontakt</a></li>
641            <li class="bi bi-chevron-right pb-0"><a href="agb.php" class="nav-link px-2 text-body-secondary" title="AGBs">AGBs</a></li>
642        	<li class="bi bi-chevron-right pb-0"><a href="data-privacy.php" class="nav-link px-2 text-body-secondary" title="Datenschutz">Datenschutz</a></li>
643        	<li class="bi bi-chevron-right pb-0"><a href="ai-content-disclaimer.php" class="nav-link px-2 text-body-secondary" title="AI Content Disclaimer">AI Content Disclaimer</a></li>
644        	<li class="bi bi-chevron-right pb-0"><a href="#" onclick="klaro.show(); return false;" class="nav-link px-2 text-body-secondary" title="Cookie-Einstellungen">Cookie-Einstellungen</a></li>
645        	<li class="bi bi-chevron-right pb-0"><a href="imprint.php" class="nav-link px-2 text-body-secondary" title="Impressum">Impressum</a></li>
646          </ul>
647        </div>
648
649      </div>
650    </div>
651
652  </footer>
653
654  <!-- Scroll Top -->
655  <a href="#" id="scroll-top" class="scroll-top d-flex align-items-center justify-content-center"><i class="bi bi-arrow-up-short"></i></a>
656
657  <!-- Vendor JS Files -->
658  
658<script src="lib/FlexStart/assets/vendor/php-email-form/validate.js"></script>
658
659  
659<script src="lib/FlexStart/assets/vendor/aos/aos.js"></script>
659
660  
660<script src="lib/FlexStart/assets/vendor/glightbox/js/glightbox.min.js"></script>
660
661  
661<script src="js/verify-drawing-lightbox.js"></script>
661
662  
662<script src="lib/FlexStart/assets/vendor/purecounter/purecounter_vanilla.js"></script>
662
663  
663<script src="lib/FlexStart/assets/vendor/imagesloaded/imagesloaded.pkgd.min.js"></script>
663
664  
664<script src="lib/FlexStart/assets/vendor/isotope-layout/isotope.pkgd.min.js"></script>
664
665  
665<script src="lib/FlexStart/assets/vendor/swiper/swiper-bundle.min.js"></script>
665
666
667  <!-- Main JS File -->
668  
668<script src="lib/FlexStart/assets/js/main.js"></script>
668
669  
669<script src="js/theme.js"></script>
669
670  
670<script src="js/header-search.js"></script>
670
671  
671<script src="js/grade-stars.js"></script>
671
672  
673  
674
675    	</body>
676	</html>
677    
677<script>
678// Example starter JavaScript for disabling form submissions if there are invalid fields
679(function () {
680  'use strict'
681
682  // Fetch all the forms we want to apply custom Bootstrap validation styles to
683  var forms = document.querySelectorAll('.needs-validation')
684
685  // Loop over them and prevent submission
686  Array.prototype.slice.call(forms)
687    .forEach(function (form) {
688      form.addEventListener('submit', function (event) {
689        if (!form.checkValidity()) {
690          event.preventDefault()
691          event.stopPropagation()
692        }
693
694        form.classList.add('was-validated')
695      }, false)
696    })
697})()
698</script>
698

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.