') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); })(); Ensure window.Urls has correct language code & browser lang is respected by nucleogenesis · Pull Request #2637 · learningequality/studio · GitHub
Skip to content

Ensure window.Urls has correct language code & browser lang is respected - #2637

Merged
rtibbles merged 2 commits into
learningequality:developfrom
nucleogenesis:lang-code-in-window.urls
Dec 7, 2020
Merged

Ensure window.Urls has correct language code & browser lang is respected#2637
rtibbles merged 2 commits into
learningequality:developfrom
nucleogenesis:lang-code-in-window.urls

Conversation

@nucleogenesis

Copy link
Copy Markdown
Contributor

Please remove any unused sections

Description

Imports and modifies logic here: https://github.com/learningequality/kolibri/blob/release-v0.14.x/kolibri/core/kolibri_plugin.py#L36 and inserts it into the context processor which exposes a dict w/ I18N_URLS key returning the properly generated and minified JS code that sets window.Urls to the currently used i18n lang code.

Also helps ensure that browser language code is respected.

Issue Addressed (if applicable)

Fixes#2627

Steps to Test

Set your browser's language to a non-English language of your choice.

Navigate the site's sections:

  • Sign in page
  • Channel's listings
  • Channel edit
  • Settings
  • Profile

You should never have your URL default back to en as you navigate.

@nucleogenesisnucleogenesis added needs review qa-ready Create a demo server for this pull request labels Dec 7, 2020
@nucleogenesisnucleogenesis added this to the Vue Refactor milestone Dec 7, 2020
@nucleogenesisnucleogenesis changed the title Ensure window.Urls has correct language codeEnsure window.Urls has correct language code & browser lang is respectedDec 7, 2020

@rtibblesrtibbles left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good, but I've not tested.

Can clean up this from base.html:

 {% if not debug %}
<script src={% static 'django_js_reverse/js/reverse.js' %}></script>
{% else %}
<script src="{% url 'js_reverse' %}" type="text/javascript"></script>
{% endif %}

As it is now redundant with your work.

Can also remove this line: https://github.com/learningequality/studio/blob/develop/Makefile#L54 as it is no longer needed.

@nucleogenesisnucleogenesis removed the qa-ready Create a demo server for this pull request label Dec 7, 2020
@codecov

codecovBot commented Dec 7, 2020

Copy link
Copy Markdown

Codecov Report

Merging #2637 (2d466de) into develop (fc35107) will increase coverage by 0.41%.
The diff coverage is 100.00%.

Impacted file tree graph

@@ Coverage Diff @@## develop #2637 +/- ##
===========================================
+ Coverage 84.56% 84.98% +0.41% 
===========================================
Files 296 294 -2 Lines 15093 15019 -74 ===========================================
Hits 12764 12764 + Misses 2329 2255 -74 
Impacted FilesCoverage Δ
contentcuration/contentcuration/settings.py90.47% <ø> (ø)
...tentcuration/contentcuration/context_processors.py100.00% <100.00%> (ø)
contentcuration/contentcuration/utils/cache.py31.70% <0.00%> (-12.20%)⬇️
contentcuration/contentcuration/utils/user.py
contentcuration/contentcuration/utils/channel.py
contentcuration/search/viewsets/contentnode.py46.25% <0.00%> (+0.05%)⬆️
contentcuration/contentcuration/viewsets/base.py88.86% <0.00%> (+0.23%)⬆️
contentcuration/contentcuration/tasks.py73.19% <0.00%> (+0.55%)⬆️
contentcuration/contentcuration/viewsets/common.py94.11% <0.00%> (+0.65%)⬆️
contentcuration/contentcuration/viewsets/user.py70.81% <0.00%> (+0.81%)⬆️
... and 1 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 533b62b...ddc9511. Read the comment docs.

@rtibblesrtibbles left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changes made, manual test checks out.

@rtibbles
rtibbles merged commit c7727cc into learningequality:developDec 7, 2020
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Browser language preference not respected

2 participants

@nucleogenesis@rtibbles