ÿþ<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes"> <title>CTET Paper-1 | English Language & Pedagogy | Daily Practice Generator</title> <link href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'%3E%3Ccircle cx='50' cy='50' r='45' fill='%23007bff'/%3E%3Ctext x='50' y='68' font-size='48' text-anchor='middle' fill='white' font-weight='bold'%3EEN%3C/text%3E%3C/svg%3E" rel="icon"> <script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.5.1/jspdf.umd.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/html2canvas/1.4.1/html2canvas.min.js"></script> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css"> <style> :root { --primary: #007bff; --primary-dark: #0056b3; --secondary: #17a2b8; --danger: #dc3545; --success: #28a745; --light: #e8f0fe; --dark: #1a1a2e; --gray: #6c757d; --border-radius: 12px; --box-shadow: 0 10px 25px -5px rgba(0,0,0,0.1); --transition: all 0.3s ease; } * { margin: 0; padding: 0; box-sizing: border-box; font-family: 'Segoe UI', 'Poppins', system-ui, sans-serif; } body { background: linear-gradient(135deg, #e3f2fd 0%, #bbdefb 100%); min-height: 100vh; display: flex; justify-content: center; align-items: center; padding: 20px; color: var(--dark); line-height: 1.5; } .container { width: 100%; max-width: 1100px; background: white; border-radius: var(--border-radius); box-shadow: var(--box-shadow); overflow: hidden; transition: var(--transition); animation: fadeIn 0.4s ease-out; } @keyframes fadeIn { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } } .header { background: linear-gradient(135deg, var(--primary), var(--primary-dark)); color: white; padding: 28px 20px; text-align: center; position: relative; } .header::before { content: '=ØÚÜ'; position: absolute; bottom: 10px; right: 20px; font-size: 70px; opacity: 0.1; } .header h1 { font-size: 1.9rem; margin-bottom: 8px; font-weight: 700; letter-spacing: -0.5px; } .header p { font-size: 1rem; opacity: 0.9; } .header-controls { position: absolute; top: 20px; right: 20px; display: flex; gap: 12px; z-index: 5; } .header-controls .home-icon { position: relative; top: 0; left: 0; color: white; font-size: 24px; cursor: pointer; transition: var(--transition); text-decoration: none; display: inline-block; background: rgba(0,0,0,0.2); width: 40px; height: 40px; border-radius: 50%; display: flex; align-items: center; justify-content: center; } .header-controls .home-icon:hover { transform: scale(1.08); background: rgba(0,0,0,0.4); } .content-area { padding: 28px; } .hidden { display: none !important; } .btn { display: inline-block; padding: 12px 28px; border-radius: 50px; font-weight: 600; cursor: pointer; transition: var(--transition); border: none; text-align: center; box-shadow: 0 4px 8px rgba(0,0,0,0.05); margin: 8px 5px; font-size: 0.95rem; } .btn-primary { background: var(--primary); color: white; } .btn-primary:hover { background: var(--primary-dark); transform: translateY(-2px); box-shadow: 0 10px 20px -5px var(--primary); } .btn-success { background: var(--success); color: white; } .btn-success:hover { background: #1e7e34; transform: translateY(-2px); } .btn-danger { background: var(--danger); color: white; } .btn-danger:hover { background: #bd2130; transform: translateY(-2px); } .btn-level { background: white; color: var(--dark); border: 2px solid #cbd5e0; font-size: 1.1rem; padding: 14px 28px; width: 190px; font-weight: 600; transition: all 0.2s; } .btn-level:hover { transform: translateY(-4px); background: #f7fafc; border-color: var(--primary); } .btn-level.selected { background: var(--primary); color: white; border-color: var(--primary); box-shadow: 0 8px 16px -4px rgba(0,123,255,0.4); } .btn-group { display: flex; flex-wrap: wrap; justify-content: center; gap: 12px; margin: 20px 0; } .level-buttons { display: flex; justify-content: center; gap: 25px; margin: 30px 0; flex-wrap: wrap; } .section-title { text-align: center; margin-bottom: 25px; color: var(--primary-dark); font-size: 1.7rem; position: relative; padding-bottom: 12px; font-weight: 600; } .section-title::after { content: ''; position: absolute; bottom: 0; left: 50%; transform: translateX(-50%); width: 80px; height: 4px; background: var(--secondary); border-radius: 4px; } .checkbox-container { display: grid; grid-template-columns: repeat(auto-fill, minmax(310px, 1fr)); gap: 14px; margin: 25px 0; max-height: 520px; overflow-y: auto; padding: 15px; border: 1px solid #e2e8f0; border-radius: 18px; background: #f8f9fe; } .checkbox-item { display: flex; align-items: center; background: white; padding: 8px 12px; border-radius: 40px; transition: all 0.2s; border: 1px solid #e9ecef; } .checkbox-item:hover { background: #e3f2fd; transform: translateX(3px); } .checkbox-item input { margin-right: 12px; width: 18px; height: 18px; cursor: pointer; accent-color: var(--primary); } .checkbox-item label { cursor: pointer; font-size: 0.9rem; font-weight: 500; } .question { margin-bottom: 25px; page-break-inside: avoid; background: #ffffff; padding: 15px; border-radius: 16px; box-shadow: 0 1px 2px rgba(0,0,0,0.05); border-left: 4px solid var(--secondary); } .question-text { font-weight: 700; margin-bottom: 12px; font-size: 1.05rem; color: #2d3748; } .option { margin-left: 24px; margin-bottom: 6px; color: #4a5568; } .action-buttons { display: flex; justify-content: center; flex-wrap: wrap; gap: 18px; margin-top: 40px; } .answer-sheet { margin-top: 40px; padding: 20px; background: #f0f7ff; border-radius: var(--border-radius); } .answer-table { width: 100%; border-collapse: collapse; margin-top: 15px; border-radius: 12px; overflow: hidden; } .answer-table th, .answer-table td { border: 1px solid #cbd5e0; padding: 10px; text-align: center; } .answer-table th { background-color: var(--primary); color: white; font-weight: 600; } .streak-container { display: flex; justify-content: center; align-items: center; margin: 20px 0; gap: 20px; flex-wrap: wrap; } .streak-counter { background: #ff9100; color: white; padding: 10px 20px; border-radius: 60px; font-weight: bold; box-shadow: 0 4px 10px rgba(0,0,0,0.1); } .date-display { font-size: 1rem; font-weight: 600; background: #e2e8f0; padding: 8px 18px; border-radius: 40px; color: var(--primary-dark); } .progress-container { margin: 20px 0; background: #edf2f7; padding: 20px; border-radius: 28px; } .progress-bar { height: 12px; background: #cbd5e0; border-radius: 20px; overflow: hidden; margin-top: 12px; } .progress-fill { height: 100%; background: var(--success); border-radius: 20px; transition: width 0.5s ease; } .problem-of-day { background: linear-gradient(115deg, #fff6e5, #ffedd5); border-left: 5px solid var(--danger); padding: 20px; margin: 20px 0; border-radius: 24px; } .daily-summary { display: flex; justify-content: space-between; flex-wrap: wrap; gap: 15px; margin: 20px 0; } .summary-card { flex: 1; min-width: 110px; background: white; padding: 15px; border-radius: 20px; box-shadow: 0 8px 20px rgba(0,0,0,0.05); text-align: center; border: 1px solid #e2e8f0; } .home-icon { position: absolute; top: 20px; left: 20px; color: white; font-size: 26px; cursor: pointer; transition: transform 0.2s; z-index: 5; background: rgba(0,0,0,0.2); width: 40px; height: 40px; border-radius: 50%; display: flex; align-items: center; justify-content: center; } .home-icon:hover { transform: scale(1.08); background: rgba(0,0,0,0.4); } .instructions { margin-bottom: 30px; padding: 18px 22px; background: #f7fafc; border-radius: 24px; border: 1px solid #e2e8f0; } @media (max-width: 680px) { .header h1 { font-size: 1.3rem; } .btn-level { width: 140px; font-size: 0.9rem; padding: 12px 16px; } .checkbox-container { grid-template-columns: 1fr; } .header-controls { top: 12px; right: 12px; gap: 8px; } } @media print { .action-buttons, .streak-container, .progress-container, .problem-of-day, .daily-summary, .header-controls { display: none; } .question { break-inside: avoid; } } .text-center { text-align: center; } </style> <script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-4930137336556867" crossorigin="anonymous"></script> <script async src="https://www.googletagmanager.com/gtag/js?id=G-KMZ9RJ62EY"></script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-KMZ9RJ62EY'); </script> </head> <body> <div class="container" id="startContainer"> <div class="header"> <div class="header-controls"> <a href="ctet-exam-paper1-daily-practice-problem-generator.html" class="home-icon" ><i class="fas fa-chalkboard-user"></i></a> </div> <h1 id="mainTitle"><i class="fas fa-language"></i> CTET Paper-1</h1> <p id="mainSubtitle">English Language & Pedagogy | Daily Practice Problem Generator</p> </div> <div class="content-area"> <div id="startScreen"> <h2 class="section-title" id="startTitle">=ØÖÜ English Language & Pedagogy</h2> <div class="streak-container"> <div class="streak-counter"><i class="fas fa-fire"></i> <span id="streakLabel">Streak</span>: <span id="streakDays">0</span> <span id="dayLabel">days</span></div> <div class="date-display" id="currentDate"></div> </div> <div class="progress-container"> <h3><i class="fas fa-chart-line"></i> <span id="progressTitle">Your Progress</span></h3> <div class="progress-bar"><div class="progress-fill" id="progressFill" style="width: 0%"></div></div> <p id="progressText" style="margin-top: 8px;">0% complete</p> </div> <div class="btn-group"> <button class="btn btn-primary" id="problemOfDayBtn"><i class="fas fa-calendar-day"></i> <span id="podBtnText">Problem of the Day</span></button> <button class="btn btn-success" id="customPracticeBtn"><i class="fas fa-pen-ruler"></i> <span id="customBtnText">Custom Practice</span></button> </div> </div> <div id="subjectSelection" class="hidden"> <h2 class="section-title" id="subjectTitle"><Ø¯ß Select Subject</h2> <div class="btn-group"><button class="btn btn-primary" id="selectEngBtn"><i class="fas fa-brain"></i> <span id="selectSubjectText">English Language & Pedagogy</span></button></div> </div> <div id="topicSelection" class="hidden"> <h2 class="section-title" id="topicTitle">=ØÚÜ <span id="chapterSelectText">Select Chapters</span> (28 chapters)</h2> <form id="topicForm"> <div class="checkbox-container" id="topicsContainer"></div> </form> <div class="btn-group"> <button class="btn btn-danger" id="backToStartBtn"><i class="fas fa-arrow-left"></i> <span id="backStartText">Back to Start</span></button> <button class="btn btn-success" id="generateAssignmentBtn"><i class="fas fa-cogs"></i> <span id="genAssignText">Generate Practice Questions</span></button> </div> </div> <div id="levelSelection" class="hidden"> <h2 class="section-title" id="levelTitle">¡& <span id="levelSelectText">Select Difficulty Level</span></h2> <p class="text-center" id="levelDescText" style="text-align:center; margin-bottom:10px;">Choose according to your CTET level:</p> <div class="level-buttons"> <button class="btn btn-level" id="level1Btn"><span id="l1Title">Level 1</span> <br><small id="l1Sub">Basic / CTET Foundation</small></button> <button class="btn btn-level" id="level2Btn"><span id="l2Title">Level 2</span> <br><small id="l2Sub">Medium (CTET Standard)</small></button> <button class="btn btn-level" id="level3Btn"><span id="l3Title">Level 3</span> <br><small id="l3Sub">Advanced (Analytical)</small></button> </div> <div class="btn-group"> <button class="btn btn-danger" id="backToTopicsBtn"><i class="fas fa-arrow-left"></i> <span id="backTopicsText">Back to Topics</span></button> <button class="btn btn-success" id="generateFinalBtn"><i class="fas fa-cogs"></i> <span id="genFinalText">Generate Practice Questions</span></button> </div> </div> </div> </div> <div class="container hidden" id="generatedPaperContainer"></div> <script> const { jsPDF } = window.jspdf; const startContainer = document.getElementById('startContainer'); const startScreen = document.getElementById('startScreen'); const subjectSelection = document.getElementById('subjectSelection'); const topicSelection = document.getElementById('topicSelection'); const levelSelection = document.getElementById('levelSelection'); const generatedPaperContainer = document.getElementById('generatedPaperContainer'); // ===================================================== // ENGLISH LANGUAGE & PEDAGOGY QUESTION BANK (28 TOPICS) // ===================================================== const questionBank = {}; function addQuestions(topicKey, questions) { if (!questionBank[topicKey]) questionBank[topicKey] = { level1: [], level2: [], level3: [] }; const levels = ['level1', 'level2', 'level3']; questions.forEach((q, idx) => { const levelKey = levels[idx % 3]; questionBank[topicKey][levelKey].push(q); }); } // ----- ENGLISH LANGUAGE TOPICS (1-18) ----- addQuestions('Reading Comprehension', [ { question: "Reading comprehension primarily tests the ability to:", options: ["Understand and interpret text", "Memorize facts", "Write summaries", "Identify parts of speech"], answer: "A" }, { question: "The main idea of a passage is usually found in:", options: ["The introductory paragraph", "The conclusion", "The middle", "Anywhere"], answer: "A" }, { question: "Inference in reading comprehension means:", options: ["Drawing conclusions from clues", "Reading quickly", "Finding synonyms", "Counting words"], answer: "A" } ]); addQuestions('The Sentence', [ { question: "A sentence must contain:", options: ["A subject and a predicate", "A verb only", "A noun only", "A conjunction"], answer: "A" }, { question: "Which is a declarative sentence?", options: ["I am going.", "Where are you?", "Please sit down.", "What a day!"], answer: "A" }, { question: "An imperative sentence expresses:", options: ["A command or request", "A question", "A strong feeling", "A statement"], answer: "A" } ]); addQuestions('The Phrase & The Clause', [ { question: "A phrase is a group of words that:", options: ["Does not contain a finite verb", "Contains a finite verb", "Contains a subject and predicate", "Is always a sentence"], answer: "A" }, { question: "A clause contains:", options: ["A subject and a verb", "Only a verb", "Only a subject", "No verb"], answer: "A" }, { question: "Which is an independent clause?", options: ["She went home.", "Because she was tired", "After the rain", "When I saw him"], answer: "A" } ]); addQuestions('The Noun : Kinds of Nouns, Number & Gender', [ { question: "A proper noun is:", options: ["A specific name", "A common name", "An action word", "A describing word"], answer: "A" }, { question: "The plural of 'child' is:", options: ["Children", "Childs", "Childrens", "Childes"], answer: "A" }, { question: "The feminine gender of 'actor' is:", options: ["Actress", "Actoress", "Actorine", "Actresss"], answer: "A" } ]); addQuestions('The Pronoun', [ { question: "A pronoun is used in place of:", options: ["A noun", "A verb", "An adjective", "An adverb"], answer: "A" }, { question: "Which is a personal pronoun?", options: ["He", "Who", "Which", "That"], answer: "A" }, { question: "The reflexive pronoun of 'they' is:", options: ["Themselves", "Themself", "Theirselves", "Theirself"], answer: "A" } ]); addQuestions('The Adjective', [ { question: "An adjective modifies a:", options: ["Noun or pronoun", "Verb", "Adverb", "Preposition"], answer: "A" }, { question: "Which is an adjective?", options: ["Beautiful", "Quickly", "Run", "And"], answer: "A" }, { question: "The comparative degree of 'good' is:", options: ["Better", "Best", "More good", "Gooder"], answer: "A" } ]); addQuestions('The Verb', [ { question: "A verb expresses:", options: ["An action or state", "A name", "A quality", "A relation"], answer: "A" }, { question: "Which is a transitive verb?", options: ["Carry", "Sleep", "Go", "Arrive"], answer: "A" }, { question: "The past participle of 'write' is:", options: ["Written", "Wrote", "Writing", "Writes"], answer: "A" } ]); addQuestions('Modals', [ { question: "Modal verbs are used to:", options: ["Express possibility, necessity, etc.", "Express action", "Describe nouns", "Join sentences"], answer: "A" }, { question: "Which is a modal verb?", options: ["Can", "Run", "Eat", "Sleep"], answer: "A" }, { question: "'May' is used to express:", options: ["Possibility and permission", "Compulsion", "Ability", "Certainty"], answer: "A" } ]); addQuestions('The Adverb', [ { question: "An adverb modifies a:", options: ["Verb, adjective, or another adverb", "Noun", "Pronoun", "Preposition"], answer: "A" }, { question: "Which is an adverb?", options: ["Quickly", "Quick", "Better", "Good"], answer: "A" }, { question: "The adverb in 'She spoke softly' is:", options: ["Softly", "Spoke", "She", "The"], answer: "A" } ]); addQuestions('The Preposition', [ { question: "A preposition shows the relationship between:", options: ["A noun and another word", "A verb and a noun", "Two verbs", "Two adjectives"], answer: "A" }, { question: "Which is a preposition?", options: ["In", "And", "But", "Very"], answer: "A" }, { question: "The preposition in 'The book is on the table' is:", options: ["On", "The", "Is", "Book"], answer: "A" } ]); addQuestions('The Conjunction', [ { question: "A conjunction is used to:", options: ["Join words, phrases, or clauses", "Describe nouns", "Show action", "Express emotion"], answer: "A" }, { question: "Which is a coordinating conjunction?", options: ["And", "Because", "Since", "Unless"], answer: "A" }, { question: "'Although' is a:", options: ["Subordinating conjunction", "Coordinating conjunction", "Preposition", "Adverb"], answer: "A" } ]); addQuestions('The Interjection', [ { question: "An interjection expresses:", options: ["Strong emotion", "Action", "Description", "Relation"], answer: "A" }, { question: "Which is an interjection?", options: ["Wow!", "Run", "Beautiful", "Slowly"], answer: "A" }, { question: "Interjections are usually followed by:", options: ["An exclamation mark", "A full stop", "A comma", "A semicolon"], answer: "A" } ]); addQuestions('Tense', [ { question: "The present perfect tense uses:", options: ["Has/have + past participle", "Was/were + -ing", "Will/shall + verb", "Verb + -ing"], answer: "A" }, { question: "'I had gone' is which tense?", options: ["Past perfect", "Present perfect", "Past continuous", "Simple past"], answer: "A" }, { question: "The future continuous tense is formed with:", options: ["Will be + -ing", "Will have + past participle", "Is/am/are + -ing", "Has/have + been + -ing"], answer: "A" } ]); addQuestions('Synonyms', [ { question: "Synonyms are words with:", options: ["Similar meanings", "Opposite meanings", "Same spelling", "Same pronunciation"], answer: "A" }, { question: "A synonym of 'big' is:", options: ["Large", "Small", "Tiny", "Narrow"], answer: "A" }, { question: "A synonym of 'happy' is:", options: ["Joyful", "Sad", "Angry", "Tired"], answer: "A" } ]); addQuestions('Antonyms', [ { question: "Antonyms are words with:", options: ["Opposite meanings", "Similar meanings", "Same spelling", "Same pronunciation"], answer: "A" }, { question: "The antonym of 'hot' is:", options: ["Cold", "Warm", "Boiling", "Freezing"], answer: "A" }, { question: "The antonym of 'victory' is:", options: ["Defeat", "Win", "Success", "Triumph"], answer: "A" } ]); addQuestions('One Word Substitution', [ { question: "One who cannot be corrected is:", options: ["Incorrigible", "Invincible", "Inevitable", "Infallible"], answer: "A" }, { question: "A person who loves books is a:", options: ["Bibliophile", "Philanthropist", "Misanthrope", "Chauvinist"], answer: "A" }, { question: "A speech by a single person is:", options: ["Monologue", "Dialogue", "Soliloquy", "Eulogy"], answer: "A" } ]); addQuestions('Idioms & Phrases', [ { question: "The idiom 'once in a blue moon' means:", options: ["Rarely", "Always", "Never", "Frequently"], answer: "A" }, { question: "'A piece of cake' means:", options: ["Easy", "Difficult", "Expensive", "Tasty"], answer: "A" }, { question: "'To spill the beans' means:", options: ["Reveal a secret", "Make a mistake", "Tell a lie", "Start a fight"], answer: "A" } ]); addQuestions('Figures of Speech', [ { question: "A simile uses:", options: ["Like or as", "Is or was", "And or but", "Because or since"], answer: "A" }, { question: "'Life is a journey' is an example of:", options: ["Metaphor", "Simile", "Personification", "Hyperbole"], answer: "A" }, { question: "Personification gives human qualities to:", options: ["Non-human things", "Animals only", "People only", "Plants only"], answer: "A" } ]); // ----- PEDAGOGY TOPICS (19-28) ----- addQuestions('Learning And Acquisition', [ { question: "Learning is a:", options: ["Conscious process", "Subconscious process", "Random process", "One-time event"], answer: "A" }, { question: "Acquisition of language occurs through:", options: ["Exposure and use", "Formal instruction", "Grammar rules", "Translation"], answer: "A" }, { question: "The difference between learning and acquisition is:", options: ["Learning is conscious, acquisition is subconscious", "Both are the same", "Learning is for children only", "Acquisition is for adults only"], answer: "A" } ]); addQuestions('Principle, Methods And Approaches of Teaching English', [ { question: "The communicative approach focuses on:", options: ["Interaction and communication", "Grammar rules", "Translation", "Reading only"], answer: "A" }, { question: "The direct method of teaching uses:", options: ["Target language only", "Translation", "Grammar rules", "Memorization"], answer: "A" }, { question: "The principle of 'learning by doing' is emphasized in:", options: ["Activity-based learning", "Grammar translation", "Rote learning", "Lecture method"], answer: "A" } ]); addQuestions('Role of Listening and Speaking; Functions of Language', [ { question: "Listening is a:", options: ["Receptive skill", "Productive skill", "Reading skill", "Writing skill"], answer: "A" }, { question: "Speaking is a:", options: ["Productive skill", "Receptive skill", "Reading skill", "Listening skill"], answer: "A" }, { question: "The expressive function of language is to:", options: ["Express emotions", "Convey facts", "Ask questions", "Give commands"], answer: "A" } ]); addQuestions('Role of Grammar in Learning a Language', [ { question: "Grammar is important in language learning for:", options: ["Structuring sentences", "Only writing", "Only speaking", "Only reading"], answer: "A" }, { question: "Which approach emphasizes grammar rules?", options: ["Formal approach", "Communicative approach", "Natural approach", "Direct method"], answer: "A" }, { question: "Grammar is best learned through:", options: ["Context and usage", "Rote memorization", "Translation", "Isolation"], answer: "A" } ]); addQuestions('Challenges of Teaching Language in a Diverse Classroom', [ { question: "In a diverse classroom, the teacher must:", options: ["Address individual differences", "Use one method for all", "Ignore differences", "Separate students"], answer: "A" }, { question: "Multilingual classrooms require:", options: ["Inclusive teaching strategies", "Single-language approach", "Translation-based teaching", "Only English instruction"], answer: "A" }, { question: "A challenge in diverse classrooms is:", options: ["Varying proficiency levels", "Same proficiency levels", "Lack of students", "Too many resources"], answer: "A" } ]); addQuestions('Language Skills', [ { question: "The four language skills are:", options: ["L,S,R,W", "L,R,W,S", "R,W,S,L", "W,S,L,R"], answer: "A" }, { question: "Which is a receptive skill?", options: ["Reading", "Speaking", "Writing", "Reading and listening"], answer: "D" }, { question: "Which is a productive skill?", options: ["Speaking and writing", "Listening and reading", "Speaking only", "Writing only"], answer: "A" } ]); addQuestions('Evaluating Language Comprehension and Proficiency', [ { question: "Evaluation of language proficiency should be:", options: ["Continuous and comprehensive", "Only at the end", "Only oral", "Only written"], answer: "A" }, { question: "Formative assessment in language is:", options: ["During the learning process", "At the end of the year", "Only for grading", "Only for punishment"], answer: "A" }, { question: "Summative assessment aims to:", options: ["Evaluate overall achievement", "Improve learning", "Diagnose difficulties", "Plan instruction"], answer: "A" } ]); addQuestions('Teaching Learning Material', [ { question: "Teaching learning materials in language include:", options: ["Textbooks, audio-visual aids, realia", "Only textbooks", "Only workbooks", "Only charts"], answer: "A" }, { question: "Authentic materials in language teaching are:", options: ["Real-world texts and resources", "Textbooks only", "Grammar books only", "Workbooks only"], answer: "A" }, { question: "The use of technology in language teaching:", options: ["Enhances learning and engagement", "Replaces the teacher", "Is unnecessary", "Confuses students"], answer: "A" } ]); addQuestions('Remedial Teaching', [ { question: "Remedial teaching is intended for:", options: ["Students with learning difficulties", "High achievers", "Average students", "All students"], answer: "A" }, { question: "The aim of remedial teaching is to:", options: ["Correct errors and build skills", "Accelerate learning", "Test knowledge", "Assign grades"], answer: "A" }, { question: "Remedial teaching should be:", options: ["Individualized and specific", "General and broad", "Rote-based", "Translation-based"], answer: "A" } ]); addQuestions('Teaching English in Bilingual/Multilingual Context', [ { question: "In a multilingual classroom, English teaching should:", options: ["Use students' mother tongue as a resource", "Avoid mother tongue", "Use only English", "Use translation only"], answer: "A" }, { question: "Bilingual education involves:", options: ["Two languages of instruction", "Only one language", "Three languages", "No language"], answer: "A" }, { question: "Code-switching in bilingual classrooms:", options: ["Is a natural phenomenon", "Should be avoided", "Is a sign of confusion", "Is not allowed"], answer: "A" } ]); // ===================================================== // TOPIC KEYS // ===================================================== const topicKeys = [ "Reading Comprehension", "The Sentence", "The Phrase & The Clause", "The Noun : Kinds of Nouns, Number & Gender", "The Pronoun", "The Adjective", "The Verb", "Modals", "The Adverb", "The Preposition", "The Conjunction", "The Interjection", "Tense", "Synonyms", "Antonyms", "One Word Substitution", "Idioms & Phrases", "Figures of Speech", "Learning And Acquisition", "Principle, Methods And Approaches of Teaching English", "Role of Listening and Speaking; Functions of Language", "Role of Grammar in Learning a Language", "Challenges of Teaching Language in a Diverse Classroom", "Language Skills", "Evaluating Language Comprehension and Proficiency", "Teaching Learning Material", "Remedial Teaching", "Teaching English in Bilingual/Multilingual Context" ]; // ===================================================== // UI TEXT (All in English) // ===================================================== const uiText = { en: { mainTitle: "=ØÝÜ CTET Paper-1 - English Language & Pedagogy", mainSubtitle: "English Language & Pedagogy | Daily Practice Problem Generator", startTitle: "=ØÖÜ English Language & Pedagogy", streakLabel: "Streak", dayLabel: "days", progressTitle: "Your Progress", podBtnText: "Problem of the Day", customBtnText: "Custom Practice", subjectTitle: "<Ø¯ß Select Subject", selectSubjectText: "English Language & Pedagogy", topicTitle: "=ØÚÜ Select Chapters", chapterSelectText: "Select Chapters", backStartText: "Back to Start", genAssignText: "Generate Practice Questions", levelTitle: "¡& Select Difficulty Level", levelSelectText: "Select Difficulty Level", levelDescText: "Choose according to your CTET level:", l1Title: "Level 1", l1Sub: "Basic / CTET Foundation", l2Title: "Level 2", l2Sub: "Medium (CTET Standard)", l3Title: "Level 3", l3Sub: "Advanced (Analytical)", backTopicsText: "Back to Topics", genFinalText: "Generate Practice Questions", fullPaper: "All Topics (Full Syllabus - 28 Chapters)", noTopicAlert: "Please select at least one chapter!", noLevelAlert: "Please select a difficulty level!", instructions: "Instructions (English Practice):", inst1: "10 multiple choice questions based on English Language and Pedagogy.", inst2: "Solve in 15 minutes, check with answer key.", mcqHeading: "'þ Practice Questions", answerKey: "=ØÝ Answer Key", qNo: "Q. No.", ans: "Answer", print: "Print / PDF", newPractice: "New Practice", markComplete: "Mark Complete", completeMsg: "<Ø‰ß Excellent! Practice marked complete. Progress saved.", dailyComplete: "Congratulations! Problem of the day solved.", podTitle: "<Øß Problem of the Day (English)", podSub: "<دß", podLevel: "Level", podToday: "Today's Practice Question", podStreak: "=Ø%Ý Streak", podSolved: "' Solved", podProgress: "=ØÚÜ Progress", podSolution: "=ØÌÜ Solution", podCorrect: "Correct Answer:", podExplanation: "Explanation: As per CTET English Pedagogy concept", podComplete: "Mark Complete", podPrint: "Print", podNew: "New Practice" } }; // ===================================================== // DOM REFS & STATE // ===================================================== let currentLang = 'en'; let selectedTopics = []; let selectedLevel = null; let userProgress = { streak: 0, lastPracticeDate: null, totalProblemsSolved: 0, topicsCompleted: 0, totalTopics: topicKeys.length }; function applyUILanguage(lang) { const t = uiText[lang]; document.getElementById('mainTitle').textContent = t.mainTitle; document.getElementById('mainSubtitle').textContent = t.mainSubtitle; document.getElementById('startTitle').textContent = t.startTitle; document.getElementById('streakLabel').textContent = t.streakLabel; document.getElementById('dayLabel').textContent = t.dayLabel; document.getElementById('progressTitle').textContent = t.progressTitle; document.getElementById('podBtnText').textContent = t.podBtnText; document.getElementById('customBtnText').textContent = t.customBtnText; document.getElementById('subjectTitle').textContent = t.subjectTitle; document.getElementById('selectSubjectText').textContent = t.selectSubjectText; document.getElementById('topicTitle').textContent = t.topicTitle; document.getElementById('chapterSelectText').textContent = t.chapterSelectText; document.getElementById('backStartText').textContent = t.backStartText; document.getElementById('genAssignText').textContent = t.genAssignText; document.getElementById('levelTitle').textContent = t.levelTitle; document.getElementById('levelSelectText').textContent = t.levelSelectText; document.getElementById('levelDescText').textContent = t.levelDescText; document.getElementById('l1Title').textContent = t.l1Title; document.getElementById('l1Sub').textContent = t.l1Sub; document.getElementById('l2Title').textContent = t.l2Title; document.getElementById('l2Sub').textContent = t.l2Sub; document.getElementById('l3Title').textContent = t.l3Title; document.getElementById('l3Sub').textContent = t.l3Sub; document.getElementById('backTopicsText').textContent = t.backTopicsText; document.getElementById('genFinalText').textContent = t.genFinalText; // Reload topics renderTopics(); // If paper generated, re-render if (!generatedPaperContainer.classList.contains('hidden')) { if (selectedTopics.length > 0 && selectedLevel) { generatePaper(selectedTopics, selectedLevel, currentLang); } } } // ============ CORE FUNCTIONS ============ function renderTopics() { const container = document.getElementById('topicsContainer'); const t = uiText[currentLang]; const fullLabel = "' Full Syllabus (All 28 Chapters)"; container.innerHTML = `<div class="checkbox-item" style="background:#e9f5ec;"><input type="checkbox" id="fullSyllabus" value="full"><label for="fullSyllabus"><strong>${fullLabel}</strong></label></div>`; topicKeys.forEach(topic => { const id = `topic_${topic.replace(/[\s,?()]/g, '_').substring(0, 40)}`; container.innerHTML += `<div class="checkbox-item"><input type="checkbox" id="${id}" name="topic" value="${topic}"><label for="${id}">${topic}</label></div>`; }); document.getElementById('fullSyllabus')?.addEventListener('change', (e) => { const allCheckboxes = document.querySelectorAll('input[name="topic"]'); allCheckboxes.forEach(cb => cb.disabled = e.target.checked); if(e.target.checked) allCheckboxes.forEach(cb => cb.checked = false); }); } function getRandomQuestions(topics, level, count) { let allQs = []; topics.forEach(topic => { if (questionBank[topic] && questionBank[topic][`level${level}`]) { allQs = allQs.concat(questionBank[topic][`level${level}`]); } }); if (allQs.length === 0) { const t = uiText[currentLang]; return [{ question: t.noTopicAlert, options: ["A", "B", "C", "D"], answer: "A" }]; } allQs = allQs.sort(() => Math.random() - 0.5); return allQs.slice(0, count); } function loadUserProgress() { const saved = localStorage.getItem('ctetEngDailyProgress'); if (saved) userProgress = JSON.parse(saved); const today = new Date().toDateString(); if (userProgress.lastPracticeDate !== today) { const yesterday = new Date(); yesterday.setDate(yesterday.getDate() - 1); if (userProgress.lastPracticeDate === yesterday.toDateString()) userProgress.streak++; else userProgress.streak = 1; userProgress.lastPracticeDate = today; saveUserProgress(); } updateUI(); } function saveUserProgress() { localStorage.setItem('ctetEngDailyProgress', JSON.stringify(userProgress)); } function updateUI() { const t = uiText[currentLang]; document.getElementById('streakDays').textContent = userProgress.streak; const today = new Date(); document.getElementById('currentDate').textContent = today.toLocaleDateString('en-US', { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' }); const percent = Math.min(100, Math.round((userProgress.topicsCompleted / userProgress.totalTopics) * 100)); document.getElementById('progressFill').style.width = `${percent}%`; document.getElementById('progressText').textContent = `${percent}% complete (${userProgress.topicsCompleted}/${userProgress.totalTopics} chapters)`; } function generatePaper(topics, level, lang) { const t = uiText[lang]; const topicNamesDisplay = topics.length > 5 ? topics.slice(0,5).join(", ")+" ..." : topics.join(", "); const mcqs = getRandomQuestions(topics, level, 10); let paperContent = `<div class="header"><h2>=ØØÜ CTET Paper-1 (English Language & Pedagogy)</h2><h3>=ØÌÜ ${topics.length === topicKeys.length ? "Full Syllabus (28 Chapters)" : topicNamesDisplay.substring(0, 85)}</h3><p>¡& Difficulty Level ${level}  ${level === 1 ? 'Basic' : level === 2 ? 'Medium' : 'Advanced'}</p></div><div class="content-area"><div class="instructions"><p><strong>${t.instructions}</strong></p><ol><li>${t.inst1}</li><li>${t.inst2}</li></ol></div><div class="question-section"><div style="font-size:1.4rem; margin-bottom:20px; font-weight:bold;">${t.mcqHeading}</div>`; let qNum = 1; mcqs.forEach(mcq => { paperContent += `<div class="question"><div class="question-text">${qNum}. ${mcq.question}</div> <div class="option">A. ${mcq.options[0]}</div><div class="option">B. ${mcq.options[1]}</div> <div class="option">C. ${mcq.options[2]}</div><div class="option">D. ${mcq.options[3]}</div></div>`; qNum++; }); paperContent += `</div><div class="answer-sheet"><h3 class="section-title">${t.answerKey}</h3><table class="answer-table"><thead><tr><th>${t.qNo}</th><th>${t.ans}</th><th>${t.qNo}</th><th>${t.ans}</th></tr></thead><tbody>`; for (let i = 0; i < mcqs.length; i += 2) { paperContent += `<tr><td>${i+1}</td><td><strong>${mcqs[i].answer}</strong></td>`; if (i+1 < mcqs.length) paperContent += `<td>${i+2}</td><td><strong>${mcqs[i+1].answer}</strong></td>`; else paperContent += `<td></td><td></td>`; paperContent += `</tr>`; } paperContent += `</tbody></table></div><div class="action-buttons"><button class="btn btn-success" id="markCompleteBtn"><i class="fas fa-check-circle"></i> ${t.markComplete}</button><button class="btn btn-primary" id="printBtn"><i class="fas fa-print"></i> ${t.print}</button><button class="btn btn-danger" id="newAssignmentBtn"><i class="fas fa-undo-alt"></i> ${t.newPractice}</button></div></div>`; generatedPaperContainer.innerHTML = paperContent; generatedPaperContainer.classList.remove('hidden'); startContainer.classList.add('hidden'); document.getElementById('markCompleteBtn')?.addEventListener('click', markPracticeComplete); document.getElementById('printBtn')?.addEventListener('click', () => window.print()); document.getElementById('newAssignmentBtn')?.addEventListener('click', backToStart); } function markPracticeComplete() { const t = uiText[currentLang]; userProgress.totalProblemsSolved += 10; let newlyCompleted = 0; selectedTopics.forEach(t => { if (!userProgress[`comp_${t}`]) { userProgress[`comp_${t}`] = true; newlyCompleted++; } }); userProgress.topicsCompleted = Math.min(userProgress.totalTopics, userProgress.topicsCompleted + newlyCompleted); saveUserProgress(); updateUI(); alert(t.completeMsg); backToStart(); } function generateProblemOfDay() { const t = uiText[currentLang]; const randomTopic = topicKeys[Math.floor(Math.random() * topicKeys.length)]; const randomLevel = Math.floor(Math.random() * 3) + 1; selectedTopics = [randomTopic]; selectedLevel = randomLevel; const mcq = getRandomQuestions(selectedTopics, randomLevel, 1)[0]; startContainer.classList.add('hidden'); generatedPaperContainer.classList.remove('hidden'); let content = `<div class="header"><h2>${t.podTitle}</h2><h3>${t.podSub} ${randomTopic}</h3><p>${t.podLevel} ${randomLevel}</p></div><div class="content-area"><div class="problem-of-day"><h3><i class="fas fa-star-of-life"></i> ${t.podToday}</h3><p>Keep your learning streak going!</p></div><div class="daily-summary"><div class="summary-card"><h4>${t.podStreak}</h4><p>${userProgress.streak} days</p></div><div class="summary-card"><h4>${t.podSolved}</h4><p>${userProgress.totalProblemsSolved}</p></div><div class="summary-card"><h4>${t.podProgress}</h4><p>${Math.round((userProgress.topicsCompleted / userProgress.totalTopics) * 100)}%</p></div></div><div class="question"><div class="question-text">${mcq.question}</div><div class="option">A. ${mcq.options[0]}</div><div class="option">B. ${mcq.options[1]}</div><div class="option">C. ${mcq.options[2]}</div><div class="option">D. ${mcq.options[3]}</div></div><div class="answer-sheet"><h3>${t.podSolution}</h3><p><strong>${t.podCorrect}</strong> ${mcq.answer}</p><p><strong>${t.podExplanation}</strong></p></div><div class="action-buttons"><button class="btn btn-success" id="markCompleteDailyBtn"><i class="fas fa-check"></i> ${t.podComplete}</button><button class="btn btn-primary" id="printBtn">${t.podPrint}</button><button class="btn btn-danger" id="newAssignmentBtn">${t.podNew}</button></div></div>`; generatedPaperContainer.innerHTML = content; document.getElementById('markCompleteDailyBtn')?.addEventListener('click', () => { userProgress.totalProblemsSolved++; saveUserProgress(); updateUI(); alert(t.dailyComplete); backToStart(); }); document.getElementById('printBtn')?.addEventListener('click', () => window.print()); document.getElementById('newAssignmentBtn')?.addEventListener('click', backToStart); } function backToStart() { generatedPaperContainer.classList.add('hidden'); startContainer.classList.remove('hidden'); document.getElementById('topicSelection').classList.add('hidden'); document.getElementById('levelSelection').classList.add('hidden'); document.getElementById('subjectSelection').classList.add('hidden'); document.getElementById('startScreen').classList.remove('hidden'); updateUI(); } // ===================================================== // EVENT BINDINGS // ===================================================== document.getElementById('customPracticeBtn').addEventListener('click', () => { document.getElementById('startScreen').classList.add('hidden'); document.getElementById('subjectSelection').classList.remove('hidden'); }); document.getElementById('selectEngBtn').addEventListener('click', () => { renderTopics(); document.getElementById('subjectSelection').classList.add('hidden'); document.getElementById('topicSelection').classList.remove('hidden'); }); document.getElementById('backToStartBtn').addEventListener('click', backToStart); document.getElementById('generateAssignmentBtn').addEventListener('click', () => { const full = document.getElementById('fullSyllabus')?.checked; if (full) selectedTopics = [...topicKeys]; else selectedTopics = Array.from(document.querySelectorAll('input[name="topic"]:checked')).map(cb => cb.value); if (selectedTopics.length === 0) { const t = uiText[currentLang]; alert(t.noTopicAlert); return; } document.getElementById('topicSelection').classList.add('hidden'); document.getElementById('levelSelection').classList.remove('hidden'); }); document.getElementById('backToTopicsBtn').addEventListener('click', () => { document.getElementById('levelSelection').classList.add('hidden'); document.getElementById('topicSelection').classList.remove('hidden'); }); document.getElementById('level1Btn').addEventListener('click', () => { document.querySelectorAll('.btn-level').forEach(b => b.classList.remove('selected')); document.getElementById('level1Btn').classList.add('selected'); selectedLevel = 1; }); document.getElementById('level2Btn').addEventListener('click', () => { document.querySelectorAll('.btn-level').forEach(b => b.classList.remove('selected')); document.getElementById('level2Btn').classList.add('selected'); selectedLevel = 2; }); document.getElementById('level3Btn').addEventListener('click', () => { document.querySelectorAll('.btn-level').forEach(b => b.classList.remove('selected')); document.getElementById('level3Btn').classList.add('selected'); selectedLevel = 3; }); document.getElementById('generateFinalBtn').addEventListener('click', () => { if (!selectedLevel) { const t = uiText[currentLang]; alert(t.noLevelAlert); return; } generatePaper(selectedTopics, selectedLevel, currentLang); }); document.getElementById('problemOfDayBtn').addEventListener('click', generateProblemOfDay); document.getElementById('homeIconBtn').addEventListener('click', (e) => { e.preventDefault(); backToStart(); }); document.addEventListener('DOMContentLoaded', () => { loadUserProgress(); }); </script> </body> </html>