Skip to content

Commit 4001f27

Browse files
authored
Merge pull request #52 from jwcooper/language-select-fixes
Language dropdown not working, also fixes multiple file selection
2 parents 024e5d0 + 152659f commit 4001f27

File tree

2 files changed

+37
-19
lines changed

2 files changed

+37
-19
lines changed

_layouts/download.html

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ <h3>CircuitPython {{ version.version }}</h3>
3636
<label class="language-select">
3737
<select>
3838
{% for file in version.files %}
39-
<option value="{{ file[1][0] }}" data-files={{ file[1] }} data-locale={{ file[0] | replace: '_', '-' }} {% if file[0] == "en_US" %}selected{% endif %}>
39+
<option value="{{ file[1] | join: ',' }}" data-files={{ file[1] | join: ',' }} data-locale={{ file[0] | replace: '_', '-' }} {% if file[0] == "en_US" %}selected{% endif %}>
4040
{% case file[0] %}
4141
{% when 'en_US' %}
4242
ENGLISH
@@ -65,7 +65,7 @@ <h3>CircuitPython {{ version.version }}</h3>
6565
</label>
6666
<div class="download-buttons">
6767
{% for file in version.files['en_US'] %}
68-
<a class="download-button-{{stable}}" href="{{ file }}">DOWNLOAD {{ file | slice: -4, 4 | upcase }} NOW <i class="fas fa-download"></i></a>
68+
<a class="download-button {% if version.stable %}stable{% else %}unstable{% endif %} {{ file | slice: -3, 3 }}" href="{{ file }}">DOWNLOAD {{ file | slice: -4, 4 | upcase }} NOW <i class="fas fa-download"></i></a>
6969
{% endfor %}
7070
</div>
7171
</div>
@@ -91,7 +91,7 @@ <h3>Past Releases</h3>
9191
the latest stable otherwise.
9292
</p>
9393
<div>
94-
<a class="download-button" href="https://github.com/adafruit/circuitpython/releases">BROWSE GITHUB<i class="fab fa-github"></i></a>
94+
<a class="download-button-unrecommended" href="https://github.com/adafruit/circuitpython/releases">BROWSE GITHUB<i class="fab fa-github"></i></a>
9595
<div class="clear"></div>
9696
</div>
9797
</div>

assets/javascript/download.js

Lines changed: 34 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,46 @@
1-
var languageSelect;
2-
31
document.addEventListener('DOMContentLoaded',function() {
4-
languageSelect = document.querySelector(".language-select select");
5-
languageSelect.onchange = languageSelectHandler;
2+
var languageSelect = document.querySelectorAll(".language-select select");
3+
languageSelect.forEach(function(select) {
4+
select.onchange = languageSelectHandler;
5+
});
66

77
var script = document.createElement('script');
8-
script.src = '//accounts.adafruit.com/users/locale?callback=setLocale';
9-
document.head.appendChild(script);
10-
8+
script.setAttribute('src', '//accounts.adafruit.com/users/locale?callback=setLocale');
9+
document.body.appendChild(script);
1110
},false);
1211

1312
function languageSelectHandler(event) {
14-
document.querySelector(".download-button").href = languageSelect.value;
13+
// find download-details, two levels up from select
14+
// event may either be an event from selection, or passed from setLocale
15+
// as a select element.
16+
if (event.target) {
17+
var selectedOption = event.target;
18+
var parentNode = event.target.parentNode.parentNode;
19+
} else {
20+
var selectedOption = event.selectedOptions[0];
21+
var parentNode = event.parentNode.parentNode;
22+
}
23+
24+
var files = selectedOption.value.split(',');
25+
26+
files.forEach(function(file) {
27+
var extension = file.substr(file.lastIndexOf('.') + 1);
28+
parentNode.querySelector(".download-button." + extension).href = file;
29+
});
1530
}
1631

1732
function setLocale(response) {
18-
var languages = response.languages.join(' ')
19-
var options = languageSelect.options;
33+
var languages = response.languages;
34+
var languageSelect = document.querySelectorAll(".language-select select");
35+
36+
languageSelect.forEach(function(select) {
37+
var options = select.options;
2038

21-
for (var i = 0; i < options.length; i++) {
22-
if (languages.includes(options[i].dataset.locale)) {
23-
console.log(options[i].dataset.locale);
24-
options[i].selected = true;
25-
languageSelect.onchange();
39+
for (var i = 0; i < options.length; i++) {
40+
if (languages.includes(options[i].dataset.locale)) {
41+
options[i].selected = true;
42+
select.onchange(select);
43+
}
2644
}
27-
}
45+
});
2846
}

0 commit comments

Comments
 (0)