Frage wird geladen...

kostenlos registrieren oder anmelden
um Fortschritte zu speichern.
Mit firstthousandwords.com kannst du kostengünstig Sprachen lernen. Die wichtigsten 1000 Wörter einer Sprache stehen dir kostenfrei zur Verfügung. 
Jetzt kostenlos registrieren oder anmelden
DSGVO Cookie Consent mit Real Cookie Banner Trainingsmodus (0) `; // Füge die Modusauswahl vor der Quiz-Navigation ein const quizNavigation = document.getElementById('quiz-navigation'); quizNavigation.parentNode.insertBefore(modeSelector, quizNavigation); // Verstecke die Quiz-Navigation initial quizNavigation.style.display = 'none'; updateButtonVisibility(); updateVolumeIcon(); updateProgressBarVisibility(null); updateCurrentVocabularyDisplay(); fetchProgress(); updateModeSelectionStyle(true); initializeMode(); updateBookmarkIconVisibility(currentMode !== null); document.querySelectorAll('.switch_vocabulary_btn').forEach(function(button) { button.addEventListener('click', function(event) { event.preventDefault(); targetVocabulary = this.getAttribute('data-vocabulary'); updateURLParameter('vocabulary', targetVocabulary); loadNewWords(); fetchProgress(); // Fortschritt beim Wechsel des Vokabelpakets abrufen updateCurrentVocabularyDisplay(); }); }); document.getElementById('bookmark-icon').addEventListener('click', function() { if (currentWordId) { toggleBookmark(currentWordId, targetVocabulary); } }); // Fügen Sie hier den Event-Listener für das Formular hinzu document.getElementById('report-form').addEventListener('submit', function(event) { event.preventDefault(); var isValid = true; var errorMessage = document.getElementById('error-message'); var successMessage = document.getElementById('success-message'); // Verstecke die Fehlermeldung und Erfolgsmeldung standardmäßig errorMessage.style.display = 'none'; successMessage.style.display = 'none'; // Überprüfe, ob ein Radio-Button ausgewählt ist var requested = document.querySelector('input[name="requested"]:checked'); if (!requested) { isValid = false; } // Überprüfe, ob das Textfeld ausgefüllt ist var reason = document.getElementById('reason').value.trim(); if (reason === '') { isValid = false; } if (isValid) { // Formulardaten hier absenden var formData = { requested: requested.value, reason: reason, vocabulary: getVocabularyFromURL(), word_id: currentWordId, user_id: my_ajax_object.user_id }; jQuery.ajax({ url: my_ajax_object.ajax_url, type: 'POST', data: { action: 'submit_report', report_data: formData }, success: function(response) { var data = JSON.parse(response); if (data.success) { successMessage.style.display = 'block'; } else { errorMessage.innerText = 'Fehler beim Senden des Berichts. Bitte versuchen Sie es später erneut.'; errorMessage.style.display = 'block'; } }, error: function(error) { errorMessage.innerText = 'Fehler beim Senden des Berichts. Bitte versuchen Sie es später erneut.'; errorMessage.style.display = 'block'; } }); } else { errorMessage.style.display = 'block'; } }); }); function initializeMode() { if (!isUserLoggedIn()) { setMode('learning'); document.getElementById('reset-mode-button').style.display = 'none'; } else { showModeSelection(); } } function setMode(mode) { currentMode = mode; document.body.setAttribute('data-mode', mode); // Verstecke die Modusauswahl document.getElementById('mode-selector').style.display = 'none'; // Zeige die Quiz-Navigation document.getElementById('quiz-navigation').style.display = 'block'; // Aktualisiere den Text des Reset-Buttons const resetButton = document.getElementById('reset-mode-button'); resetButton.textContent = mode === 'learning' ? 'Lernmodus' : 'Trainingsmodus'; // Zeige den Reset-Button nur für angemeldete Benutzer if (isUserLoggedIn()) { resetButton.style.display = 'block'; resetButton.onclick = resetMode; // Setze den onClick-Handler } else { resetButton.style.display = 'none'; } // Aktualisiere die Sichtbarkeit der Buttons updateButtonVisibility(); // Aktualisiere die Sichtbarkeit des Fortschrittsbalkens updateProgressBarVisibility(mode); // Entferne den speziellen Stil für die Modusauswahl updateModeSelectionStyle(false); // Zeige das Bookmark-Icon an updateBookmarkIconVisibility(true); // Zurücksetzen des Quiz-Zustands wordHistory = []; currentWordIndex = -1; isAnsweringAllowed = true; selectedOrder = []; loadNewWords(); if (mode === 'learning') { fetchProgress(); } } function showModeSelection() { if (!isUserLoggedIn()) { setMode('learning'); return; } currentMode = null; document.body.removeAttribute('data-mode'); document.getElementById('mode-selector').style.display = 'block'; document.getElementById('quiz-navigation').style.display = 'none'; jQuery('#quiz-question').html('Bitte wählen Sie einen Modus.'); jQuery('#quiz-answers').empty(); // Zeige den Reset-Button nur für angemeldete Benutzer const resetButton = document.getElementById('reset-mode-button'); resetButton.style.display = isUserLoggedIn() ? 'block' : 'none'; // Aktualisiere die Sichtbarkeit der Buttons updateButtonVisibility(); } function resetMode() { if (!isUserLoggedIn()) { setMode('learning'); return; } currentMode = null; document.body.removeAttribute('data-mode'); document.getElementById('mode-selector').style.display = 'block'; document.getElementById('quiz-navigation').style.display = 'none'; jQuery('#quiz-question').html('Bitte wählen Sie einen Modus.'); jQuery('#quiz-answers').empty(); // Verstecke den Reset-Button const resetButton = document.getElementById('reset-mode-button'); resetButton.style.display = 'none'; // Aktualisiere die Sichtbarkeit der Buttons updateButtonVisibility(); // Füge den speziellen Stil für die Modusauswahl hinzu updateModeSelectionStyle(true); // Verstecke das Bookmark-Icon updateBookmarkIconVisibility(false); // Zurücksetzen des Quiz-Zustands wordHistory = []; currentWordIndex = -1; isAnsweringAllowed = true; selectedOrder = []; // Aktualisiere die Fortschrittsanzeige updateProgressBarVisibility(null); fetchProgress(); } function updateButtonVisibility() { const switchModeButton = document.getElementById('switchMode'); const toggleSpeechButton = document.getElementById('toggleSpeech'); // Überprüfe, ob `currentMode` null ist, um die Buttons auszublenden if (currentMode === null) { if (switchModeButton) switchModeButton.style.display = 'none'; if (toggleSpeechButton) toggleSpeechButton.style.display = 'none'; } else { if (switchModeButton) switchModeButton.style.display = 'block'; if (toggleSpeechButton) toggleSpeechButton.style.display = 'block'; } } function updateProgressBarVisibility(mode) { const progressContainer = document.getElementById('progress-container'); if (progressContainer) { progressContainer.style.display = mode === 'learning' ? 'block' : 'none'; } } function updateModeSelectionStyle(show) { const container = document.getElementById('vocabulary_game_container'); if (container) { if (show) { container.style.alignContent = 'center'; container.style.paddingTop = '0px'; } else { container.style.alignContent = ''; container.style.paddingTop = ''; } } } var originalGameContainerContent = null; function loadNewWords() { isAnsweringAllowed = true; resetQuizContainer(); var currentLang = document.documentElement.lang.slice(-2); jQuery.ajax({ url: my_ajax_object.ajax_url, type: 'POST', data: { action: 'get_new_question_words', lang: currentLang, targetLang: targetLanguage, targetVocabulary: targetVocabulary, mode: currentMode, user_id: my_ajax_object.user_id }, success: function(response) { var data = JSON.parse(response); if (data.error) { if (data.error === 'Premium content') { if (originalGameContainerContent === null) { originalGameContainerContent = jQuery('#vocabulary_game_container').html(); } jQuery('#vocabulary_game_container').html(`

Premium-Content

Dieses Vokabelpaket ist Premium-Content. Bitte erwerben Sie eine Premium-Lizenz um fortzufahren.

  • +10 Vokabelpakete
  • Satzbautrainer
  • Konjugations Trainer
  • Multiple Choice Quiz
  • Texte übersetzen
  • Hörverständnis Übungen
Premium freischalten
`); // Hide the buttons jQuery('#switch_mode_container').hide(); jQuery('#toggleSpeech').hide(); jQuery('#prevButton').hide(); jQuery('#nextButton').hide(); } else { console.log('Fehler:', data.error); } return; } // Wenn es kein Premium-Inhalt ist, stellen wir den ursprünglichen Inhalt wieder her if (originalGameContainerContent !== null) { jQuery('#vocabulary_game_container').html(originalGameContainerContent); originalGameContainerContent = null; } // Show the buttons if content is not premium jQuery('#switch_mode_container').show(); jQuery('#toggleSpeech').show(); jQuery('#prevButton').show(); jQuery('#nextButton').show(); // Fügen Sie das neue Wort zur Historie hinzu data.userAnswer = null; // Stellen Sie sicher, dass isBookmarked im data-Objekt vorhanden ist if (typeof data.isBookmarked === 'undefined') { data.isBookmarked = false; // Setzen Sie einen Standardwert, falls nicht vorhanden } wordHistory.push(data); currentWordIndex = wordHistory.length - 1; displayWord(data); updateNavigationButtons(); updateProgressBarVisibility(currentMode); updateBookmarkIcon(data.isBookmarked); checkCurrentBookmarkStatus(data.wordId); }, error: function(error) { console.log('Fehler beim Laden neuer Worte:', error); } }); } function displayWord(data) { jQuery('#quiz-question').html(data.question); var answersHtml = ''; data.allAnswers.forEach(function(answer, index) { var className = 'quiz-answer answer-' + (index + 1); var onclickAttr = ''; if (data.userAnswer !== null) { if (answer === data.userAnswer) { className += data.userAnswer === data.correctAnswer ? ' correct' : ' incorrect'; } } else { onclickAttr = `onclick="checkAnswer(this, '${escapeHtml(data.correctAnswer)}', ${data.wordId})"`; } answersHtml += `
${escapeHtml(answer)}
`; }); jQuery('#quiz-answers').html(answersHtml); currentWordId = data.wordId; updateBookmarkIcon(data.isBookmarked); } function loadPreviousWord() { if (currentWordIndex > 0) { currentWordIndex--; displayWord(wordHistory[currentWordIndex]); updateNavigationButtons(); } } function loadNextWord() { if (currentWordIndex < wordHistory.length - 1) { currentWordIndex++; displayWord(wordHistory[currentWordIndex]); updateNavigationButtons(); } else { loadNewWords(); } } function updateNavigationButtons() { document.getElementById('prevButton').disabled = currentWordIndex <= 0; document.getElementById('nextButton').disabled = currentWordIndex >= wordHistory.length - 1; } function resetQuizContainer() { jQuery('#quiz-container').html(`

Frage wird geladen...

`); } function fetchProgress() { return new Promise((resolve, reject) => { jQuery.ajax({ url: my_ajax_object.ajax_url, type: 'POST', data: { action: 'get_user_word_progress', user_id: my_ajax_object.user_id, targetLang: targetLanguage, targetVocabulary: targetVocabulary }, success: function(response) { var data = JSON.parse(response); updateProgressDisplay(data.learned, data.total); console.log('Progress fetched:', data); resolve(data); }, error: function(error) { console.error('Error fetching progress:', error); reject(error); } }); }); } function updateProgressBar(learned, total, percentage) { var progressBar = document.getElementById('progress-bar'); progressBar.value = learned; progressBar.max = total; var progressText = document.getElementById('progress-text'); progressText.innerText = percentage + '% (' + learned + ' / ' + total + ' Vokabeln)'; } function updateProgressDisplay(learned, total) { var percentage = Math.round((learned / total) * 100); // Aktualisiere die Anzeige im Lernmodus-Button var learningProgressSpan = document.getElementById('learning-progress'); if (learningProgressSpan) { learningProgressSpan.textContent = '(' + percentage + '%)'; } // Aktualisiere die Anzeige im Trainingsmodus-Button var trainingProgressSpan = document.getElementById('training-progress'); if (trainingProgressSpan) { trainingProgressSpan.textContent = '(' + learned + ')'; } // Aktualisiere auch den Fortschrittsbalken, falls vorhanden var progressBar = document.getElementById('progress-bar'); var progressText = document.getElementById('progress-text'); if (progressBar && progressText) { progressBar.value = learned; progressBar.max = total; progressText.textContent = percentage + '% (' + learned + ' / ' + total + ' Vokabeln)'; } console.log('Progress display updated:', learned, total, percentage); } function onCorrectAnswer() { fetchProgress(); } var isAnsweringAllowed = true; function checkAnswer(selectedElement, correctAnswer, wordId) { if (!isAnsweringAllowed || wordHistory[currentWordIndex].userAnswer !== null) return; isAnsweringAllowed = false; var currentWord = wordHistory[currentWordIndex]; currentWord.userAnswer = selectedElement.innerHTML.trim(); if (selectedElement.innerHTML.trim() === correctAnswer.trim()) { selectedElement.classList.add('correct'); updateUserProgress(wordId, 'gelernt') .then(() => fetchProgress()) .then(() => { console.log('Progress updated successfully'); }) .catch(error => { console.error('Error updating progress:', error); }) .finally(() => { setTimeout(() => { loadNewWords(); isAnsweringAllowed = true; }, 300); }); } else { selectedElement.classList.add('incorrect'); // Finde und markiere die richtige Antwort document.querySelectorAll('.quiz-answer').forEach(function(answer) { if (answer.innerHTML.trim() === correctAnswer.trim()) { answer.classList.add('correct'); } }); setTimeout(() => { loadNewWords(); isAnsweringAllowed = true; }, 2000); } speakCorrectAnswer(correctAnswer); document.querySelectorAll('.quiz-answer').forEach(function(answer) { answer.removeAttribute('onclick'); }); } function updateUserProgress(wordId, status) { return new Promise((resolve, reject) => { jQuery.ajax({ url: my_ajax_object.ajax_url, type: 'POST', data: { action: 'update_user_progress_words', user_id: my_ajax_object.user_id, word_id: wordId, status: status, language: targetLanguage, targetVocabulary: targetVocabulary }, success: function(response) { console.log('User progress updated:', response); resolve(response); }, error: function(error) { console.error('Error updating user progress:', error); reject(error); } }); }); } function escapeHtml(text) { var map = { '&': '&', '<': '<', '>': '>', '"': '"', "'": ''' }; return text.replace(/[&<>"']/g, function(m) { return map[m]; }); } var isSpeechEnabled = true; function toggleSpeech() { isSpeechEnabled = !isSpeechEnabled; updateVolumeIcon(); } function updateVolumeIcon() { var volumeIcon = document.getElementById('volumeIcon'); if (isSpeechEnabled) { volumeIcon.innerHTML = ''; } else { volumeIcon.innerHTML = ''; } } async function textToSpeech(text, languageCode) { const response = await fetch(`https://texttospeech.googleapis.com/v1/text:synthesize?key=AIzaSyBDFfRGA7AbOl7WkaPjcKPyPCvRCXCe7TY`, { method: 'POST', headers: { 'Content-Type': 'application/json; charset=utf-8', }, body: JSON.stringify({ input: { text }, voice: { languageCode, ssmlGender: 'NEUTRAL' }, audioConfig: { audioEncoding: 'MP3' }, }), }); const result = await response.json(); if (result.audioContent) { const audio = new Audio('data:audio/mp3;base64,' + result.audioContent); audio.play(); } else { console.error('Fehler bei der Sprachausgabe:', result); } } function speakCorrectAnswer(correctAnswer) { if (!isSpeechEnabled) { return; } textToSpeech(correctAnswer, 'es-ES'); // Hier wird die Zielsprache als Beispiel verwendet } document.getElementById('speakBtn').addEventListener('click', function() { speakCorrectAnswer('Hola, ¿cómo estás?'); // Beispieltext }); // Stelle sicher, dass die Aktualisierung des Icons beim Laden der Seite durchgeführt wird document.addEventListener('DOMContentLoaded', function() { updateVolumeIcon(); }); function updateCurrentVocabularyDisplay() { var currentVocabularyText = { '1000-words': 'Die 1000 wichtigsten Wörter', 'travel-holiday': 'Reisen & Urlaub', 'education-school': 'Bildung & Schule', 'pets-animals': 'Haustiere & Tiere', 'food-cooking': 'Lebensmittel & Kochen', 'shopping-fashion': 'Einkaufen & Mode', 'feelings-emotions': 'Gefühle & Emotionen', 'music-instruments': 'Musik & Instrumente', 'business-career': 'Business & Beruf', 'adventure-outdoor': 'Abenteuer & Outdoor', 'sports-hobbies': 'Sport & Hobbys' }; var currentIconClass = { '1000-words': 'exclamation-triangle', 'travel-holiday': 'plane', 'education-school': 'book', 'pets-animals': 'cat', 'food-cooking': 'cutlery', 'shopping-fashion': 'tshirt', 'feelings-emotions': 'heart', 'music-instruments': 'guitar', 'business-career': 'briefcase', 'adventure-outdoor': 'caravan', 'sports-hobbies': 'football-ball' }; var currentVocabularyBtn = document.getElementById('current_vocabulary'); var currentIcon = currentVocabularyBtn.querySelector('.switch_vocabulary_icon svg use'); var currentText = currentVocabularyBtn.querySelector('.switch_vocabulary_text'); currentIcon.setAttribute('xlink:href', '#FontAwesome5.15.4icon-' + currentIconClass[targetVocabulary]); currentText.innerHTML = currentVocabularyText[targetVocabulary]; document.querySelectorAll('.switch_vocabulary_btn').forEach(function(button) { button.style.display = 'flex'; }); var currentBtn = document.querySelector('.switch_vocabulary_btn[data-vocabulary="' + targetVocabulary + '"]'); if (currentBtn) { currentBtn.style.display = 'none'; } fetchProgress(); // Aktualisiere den Fortschritt nach dem Wechsel des Vokabelpakets } document.querySelectorAll('.switch_vocabulary_btn').forEach(function(button) { button.addEventListener('click', function(event) { event.preventDefault(); targetVocabulary = this.getAttribute('data-vocabulary'); updateURLParameter('vocabulary', targetVocabulary); loadNewWords(); fetchProgress(); // Fortschritt beim Wechsel des Vokabularpakets abrufen updateCurrentVocabularyDisplay(); }); }); updateCurrentVocabularyDisplay(); function updateURLParameter(param, value) { const url = new URL(window.location); url.searchParams.set(param, value); window.history.pushState({}, '', url); } document.getElementById('report-form').addEventListener('submit', function(event) { event.preventDefault(); var isValid = true; var errorMessage = document.getElementById('error-message'); var successMessage = document.getElementById('success-message'); // Verstecke die Fehlermeldung und Erfolgsmeldung standardmäßig errorMessage.style.display = 'none'; successMessage.style.display = 'none'; // Überprüfe, ob ein Radio-Button ausgewählt ist var requested = document.querySelector('input[name="requested"]:checked'); if (!requested) { isValid = false; } // Überprüfe, ob das Textfeld ausgefüllt ist var reason = document.getElementById('reason').value.trim(); if (reason === '') { isValid = false; } if (isValid) { // Formulardaten hier absenden var formData = { requested: requested.value, reason: reason, vocabulary: getVocabularyFromURL(), word_id: currentWordId, user_id: my_ajax_object.user_id }; jQuery.ajax({ url: my_ajax_object.ajax_url, type: 'POST', data: { action: 'submit_report', report_data: formData }, success: function(response) { var data = JSON.parse(response); if (data.success) { successMessage.style.display = 'block'; } else { errorMessage.innerText = 'Fehler beim Senden des Berichts. Bitte versuchen Sie es später erneut.'; errorMessage.style.display = 'block'; } }, error: function(error) { errorMessage.innerText = 'Fehler beim Senden des Berichts. Bitte versuchen Sie es später erneut.'; errorMessage.style.display = 'block'; } }); } else { errorMessage.style.display = 'block'; } }); function getVocabularyFromURL() { var urlParams = new URLSearchParams(window.location.search); return urlParams.get('vocabulary'); } function toggleBookmark(wordId, vocabulary) { jQuery.ajax({ url: my_ajax_object.ajax_url, type: 'POST', data: { action: 'toggle_bookmark', user_id: my_ajax_object.user_id, word_id: wordId, vocabulary: vocabulary, targetLang: targetLanguage // Fügen Sie diese Zeile hinzu }, success: function(response) { var data = JSON.parse(response); if (data.success) { // Aktualisieren Sie den Bookmark-Status in der Historie wordHistory[currentWordIndex].isBookmarked = data.isBookmarked; updateBookmarkIcon(data.isBookmarked); } else { console.error('Fehler beim Aktualisieren des Bookmarks:', data.error); } }, error: function(error) { console.error('AJAX-Fehler beim Aktualisieren des Bookmarks:', error); } }); } function updateBookmarkIcon(isBookmarked) { var bookmarkIcon = document.querySelector('#bookmark-icon i'); if (isBookmarked) { bookmarkIcon.classList.remove('fa-star-o'); bookmarkIcon.classList.add('fa-star'); } else { bookmarkIcon.classList.remove('fa-star'); bookmarkIcon.classList.add('fa-star-o'); } } function checkCurrentBookmarkStatus(wordId) { jQuery.ajax({ url: my_ajax_object.ajax_url, type: 'POST', data: { action: 'check_bookmark_status', user_id: my_ajax_object.user_id, word_id: wordId, vocabulary: targetVocabulary, targetLang: targetLanguage // Fügen Sie diese Zeile hinzu }, success: function(response) { var data = JSON.parse(response); if (data.success) { wordHistory[currentWordIndex].isBookmarked = data.isBookmarked; updateBookmarkIcon(data.isBookmarked); } else { console.error('Fehler beim Abrufen des Bookmark-Status:', data.error); } }, error: function(error) { console.error('AJAX-Fehler beim Abrufen des Bookmark-Status:', error); } }); } function updateBookmarkIconVisibility(mode) { const bookmarkIcon = document.getElementById('bookmark-icon'); if (bookmarkIcon) { bookmarkIcon.style.display = mode ? 'block' : 'none'; } }-->