Francuski U 100 Lekcija Pdf ★
function speakSavedPhrase() phrase.trim() === "") alert("Nema sačuvane fraze za ovu lekciju. Prvo unesite frazu."); return; speakFrench(phrase);
function saveProgress() localStorage.setItem("francuski100_completed", JSON.stringify(completed)); localStorage.setItem("francuski100_phrases", JSON.stringify(lessonPhrases)); updateStats(); renderLessonsList(currentSearchTerm);
function selectLesson(idx)
// ------------------------------------------------------------ // 2. LOCALSTORAGE za napredak i za fraze (po lekcijama) // ------------------------------------------------------------ let completed = new Array(100).fill(false); let lessonPhrases = new Array(100).fill(""); // čuva francuske fraze
// ------------------------------------------------------------ // 4. RENDER LISTE LEKCIJA (sa pretragom) // ------------------------------------------------------------ let currentSearchTerm = ""; function renderLessonsList(filter = "") const container = document.getElementById("lessonsList"); container.innerHTML = ""; const lowerFilter = filter.toLowerCase(); for (let i = 0; i < lessonTitles.length; i++) const title = lessonTitles[i]; if (lowerFilter && !title.toLowerCase().includes(lowerFilter) && !`lekcija $i+1`.includes(lowerFilter)) continue; const isCompleted = completed[i]; const div = document.createElement("div"); div.className = "lesson-item"; // checkbox const chk = document.createElement("input"); chk.type = "checkbox"; chk.className = "lesson-check"; chk.checked = isCompleted; chk.addEventListener("change", (function(idx) return function(e) completed[idx] = e.target.checked; saveProgress(); renderLessonsList(currentSearchTerm); if(completed[idx]) // opcionalno: mali zvučni efekat nije potreban ; )(i)); // broj const numSpan = document.createElement("span"); numSpan.className = "lesson-number"; numSpan.innerText = i+1; // title const titleSpan = document.createElement("span"); titleSpan.className = "lesson-title" + (isCompleted ? " completed" : ""); titleSpan.innerText = title; titleSpan.style.cursor = "pointer"; titleSpan.addEventListener("click", (function(idx) return function() selectLesson(idx); ; )(i)); // audio button const audioBtn = document.createElement("button"); audioBtn.innerHTML = "🔊"; audioBtn.className = "audio-btn"; audioBtn.title = "Izgovori naslov lekcije (francuski)"; audioBtn.addEventListener("click", (function(frenchText) return function() speakFrench(frenchText); ; )(title.replace(/Lekcija \d+: /, ''))); // izgovara samo temu div.appendChild(chk); div.appendChild(numSpan); div.appendChild(titleSpan); div.appendChild(audioBtn); container.appendChild(div); if(container.children.length === 0) container.innerHTML = "<div style='padding: 2rem; text-align:center'>🔍 Nema lekcija koje odgovaraju pretrazi</div>"; francuski u 100 lekcija pdf
// Odabrana lekcija za fraze let selectedLessonIndex = null;
function updateStats() const done = completed.filter(v => v === true).length; document.getElementById("statsDisplay").innerText = `$done / 100 završeno`; function speakSavedPhrase() phrase
This is a specific request for a related to the PDF file "Francuski u 100 lekcija" (Serbian/Croatian/Bosnian for "French in 100 Lessons").