Skip to content

Commit

Permalink
user docs: Automatically activate correct tab for OS-specific instruc…
Browse files Browse the repository at this point in the history
…tions.
  • Loading branch information
eeshangarg authored and rishig committed Sep 18, 2018
1 parent 4c7762f commit ecd4f82
Show file tree
Hide file tree
Showing 3 changed files with 67 additions and 1 deletion.
63 changes: 63 additions & 0 deletions static/js/portico/tabbed-instructions.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
function detect_user_os() {
if (/Android/i.test(navigator.userAgent)) {
return "android";
}
if (/iPhone|iPad|iPod/i.test(navigator.userAgent)) {
return "ios";
}
if (/Mac/i.test(navigator.userAgent)) {
return "mac";
}
if (/Win/i.test(navigator.userAgent)) {
return "windows";
}
if (/Linux/i.test(navigator.userAgent)) {
return "linux";
}
return "mac"; // if unable to determine OS return Mac by default
}

function activate_correct_tab($codeSection) {
var user_os = detect_user_os();
var desktop_os = ["mac", "linux", "windows"];
const $li = $codeSection.find("ul.nav li");
const $blocks = $codeSection.find(".blocks div");

$li.each(function () {
const language = this.dataset.language;
$(this).removeClass("active");
if (language === user_os) {
$(this).addClass("active");
}

if (desktop_os.indexOf(user_os) !== -1 && language === "desktop-web") {
$(this).addClass("active");
}
});

$blocks.each(function () {
const language = this.dataset.language;
$(this).removeClass("active");
if (language === user_os) {
$(this).addClass("active");
}

if (desktop_os.indexOf(user_os) !== -1 && language === "desktop-web") {
$(this).addClass("active");
}
});

// if no tab was activated, just activate the first one
var active_list_items = $li.filter(".active");
if (!active_list_items.length) {
$li.first().addClass("active");
var language = $li.first()[0].dataset.language;
$blocks.filter("[data-language=" + language + "]").addClass("active");
}
}

(function () {
$(".code-section").each(function () {
activate_correct_tab($(this));
});
}());
3 changes: 2 additions & 1 deletion tools/webpack.assets.json
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,8 @@
"help": [
"./node_modules/simplebar/dist/simplebar.css",
"./node_modules/simplebar/dist/simplebar.js",
"./static/js/portico/help.js"
"./static/js/portico/help.js",
"./static/js/portico/tabbed-instructions.js"
],
"katex": "./node_modules/katex/dist/katex.min.js",
"landing-page": [
Expand Down
2 changes: 2 additions & 0 deletions zerver/lib/bugdown/tabbed_sections.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,8 @@
</div>
""".strip()

# If adding new entries here, also check if you need to update
# tabbed-instructions.js
TAB_DISPLAY_NAMES = {
'desktop-web': 'Desktop/Web',
'ios': 'iOS',
Expand Down

0 comments on commit ecd4f82

Please sign in to comment.