creates combined checkbox cookie "user_role" */ // Wait for DOM to be fully loaded before initializing document.addEventListener("DOMContentLoaded", function () { // Select all input elements with the data-set-cookie attribute // These inputs will automatically save their values as cookies when changed const cookieInputs = document.querySelectorAll("[data-set-cookie]"); /** * Sets a cookie with the specified name, value, and expiration * @param {string} name - The name of the cookie * @param {string} value - The value to store in the cookie * @param {number} days - Number of days until cookie expires (default: 365) */ function setCookie(name, value, days = 365) { // Calculate expiration date const expires = new Date(); expires.setTime(expires.getTime() + days * 24 * 60 * 60 * 1000); // Set the cookie with proper encoding and site-wide path // encodeURIComponent ensures special characters are handled safely document.cookie = `${name}=${encodeURIComponent( value )};expires=${expires.toUTCString()};path=/`; } // Attach change event listeners to each tracked input cookieInputs.forEach((input) => { input.addEventListener("change", function () { // Get the cookie name from the data-set-cookie attribute const cookieName = this.getAttribute("data-set-cookie"); // Get the current value of the input const cookieValue = this.value; // Only set the cookie if we have a valid cookie name if (cookieName) { // Store the input value as a cookie setCookie(cookieName, cookieValue); } }); }); // === CHECKBOX LIST HANDLING === // This section handles elements that contain multiple checkboxes where we want to // combine the labels of all checked items into a single semicolon-separated cookie value // // Expected HTML structure: //
//
// //
Option 1
//
//
// //
Option 2
//
//
// Find all container elements that have the data-list-set-cookie attribute const checkboxLists = document.querySelectorAll("[data-list-set-cookie]"); /** * Gets the label text for a checkbox by traversing up to find .form_checkbox-field * and then finding the nested .form_checkbox-label * * DOM traversal path: checkbox -> closest('.form_checkbox-field') -> querySelector('.form_checkbox-label') * * @param {HTMLElement} checkbox - The checkbox input element * @returns {string|null} - The label text or null if not found */ function getCheckboxLabel(checkbox) { // Navigate up the DOM tree to find the closest parent with class 'form_checkbox-field' const fieldContainer = checkbox.closest(".form_checkbox-field"); if (fieldContainer) { // Look for a child element with class 'form_checkbox-label' within the field container const labelElement = fieldContainer.querySelector(".form_checkbox-label"); if (labelElement) { // Extract and clean up the text content, removing any extra whitespace return labelElement.textContent.trim(); } } // Return null if the expected DOM structure is not found return null; } /** * Gets all checked checkbox labels within a checkbox list element and combines them * into a semicolon-separated string * * Example output: "Content Developer; State, District or Education Leader" * * @param {HTMLElement} listElement - The element with data-list-set-cookie attribute * @returns {string} - Semicolon-separated list of checked labels */ function getCheckedLabels(listElement) { // Find all checkbox inputs within this list container const checkboxes = listElement.querySelectorAll('input[type="checkbox"]'); const checkedLabels = []; // Loop through each checkbox in the list checkboxes.forEach((checkbox) => { // Only process checkboxes that are currently checked if (checkbox.checked) { // Get the associated label text for this checkbox const label = getCheckboxLabel(checkbox); // Only add to our list if we successfully found a label if (label) { checkedLabels.push(label); } } }); // Combine all checked labels into a semicolon-separated string // Example: ["Option 1", "Option 2"] becomes "Option 1; Option 2" return checkedLabels.join("; "); } // Set up event listeners for each checkbox list container checkboxLists.forEach((listElement) => { // Find all checkboxes within this specific list container const checkboxes = listElement.querySelectorAll('input[type="checkbox"]'); // Get the cookie name from the data-list-set-cookie attribute value const cookieName = listElement.getAttribute("data-list-set-cookie"); // Only proceed if we have a valid cookie name if (cookieName) { // Attach a change event listener to each checkbox in this list checkboxes.forEach((checkbox) => { checkbox.addEventListener("change", function () { // When any checkbox changes, recalculate the combined value of all checked items const combinedValue = getCheckedLabels(listElement); // Store the combined value as a cookie // This will update the cookie every time any checkbox in the list is changed setCookie(cookieName, combinedValue); }); }); } }); });

Math Guidelines

Math Guidelines

Introduction

Math Guidelines

ELSF’s research-informed guidelines support content developers in building their capacity to design, develop, and refine curriculum materials that effectively support multilingual learners. The Math Guidelines provide the necessary foundation for the simultaneous development of disciplinary knowledge, language and math literacy for multilingual learners. They can also be applied to existing math curriculum to assess how responsive it is to multilingual learners' needs.

The Guidelines were developed iteratively with researchers, practitioners and experts. They are divided into five areas of focus. Each area is comprised of several guidelines that are explored in depth through specific attributes, providing content developers with actionable solutions to support multilingual learners.

Areas of Focus

1

Interdependence of Mathematical Content, Practices, and Language

2

Scaffolding and Supports for Simultaneous Development

3

Mathematical Rigor Through Language

4

Leveraging Students’ Assets

5

Assessment of Mathematical Content, Practices, and Language

Related Resources

Activities

Collaborative Student Talk Structures

Dual Language Literacy
ELA
English Language Development
Math
SLA
Activities

Talk Moves - ELA and Math

Dual Language Literacy
ELA
English Language Development
Math
SLA
Exemplar Lessons

Translanguaging Strategies - ELA and Math

Dual Language Literacy
ELA
English Language Development
Math
SLA
How-Tos

Using Multilingual Resources to Support English Learners’ Remote Learning

Dual Language Literacy
ELA
English Language Development
Math
SLA
How-Tos

A How-to Guide for Content Developers

Dual Language Literacy
ELA
English Language Development
Math
SLA