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"> oder </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&response_mode=form_post&client_id=com.tomthaler.aiteacher.web&redirect_uri=https%3A%2F%2Fwww.ai-teacher.de%2Foauth2callback-apple.php&scope=name+email&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> Freitext </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> Quiz </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.