mirror of
https://github.com/jfmcbrayer/brutaldon
synced 2024-12-24 22:40:45 +01:00
9d70757988
Don't pin the menu to the top by default -- add those classes from JavaScript. This is clearly the best thing on mobile, but it means that on desktop, without JavaScript, the menu will not be pinned to the top, which used to work.
159 lines
4.9 KiB
JavaScript
159 lines
4.9 KiB
JavaScript
String.prototype.trunc =
|
||
function(n){
|
||
return this.substr(0,n-1)+(this.length>n?'…':'');
|
||
};
|
||
|
||
function setTitle(user, page)
|
||
{
|
||
document.title = `Brutaldon (${user}) – ${page}`;
|
||
}
|
||
|
||
function afterPage(user, page)
|
||
{
|
||
setTitle(user,page);
|
||
var menu = document.querySelector('#navMenu');
|
||
menu.classList.remove('is-active');
|
||
var burger = document.querySelector('.navbar-burger');
|
||
burger.classList.remove('is-active');
|
||
$('#page-load-indicator').hide();
|
||
}
|
||
|
||
function menuPrepare() {
|
||
// Remove is-active from navbar menu
|
||
var menu = document.querySelector('#navMenu');
|
||
menu.classList.remove('is-active');
|
||
|
||
// Pin the navbar to the top
|
||
document.querySelector('body').classList.toggle("has-navbar-fixed-top");
|
||
document.querySelector('nav.navbar').classList.toggle("is-fixed-top");
|
||
|
||
// Add the burger
|
||
var brand = document.querySelector('.navbar-brand');
|
||
var burger = document.createElement('a');
|
||
burger.classList.toggle('navbar-burger');
|
||
burger.setAttribute("aria-label", "menu");
|
||
burger.setAttribute("aria-expanded", "false");
|
||
burger.setAttribute("data-target", "navMenu");
|
||
for (var index = 0; index < 3; index++)
|
||
{
|
||
var span = document.createElement('span');
|
||
span.setAttribute('aria-hidden', "true");
|
||
burger.appendChild(span);
|
||
}
|
||
brand.appendChild(burger);
|
||
|
||
|
||
|
||
// Get all "navbar-burger" elements
|
||
var $navbarBurgers = Array.prototype.slice.call(document.querySelectorAll('.navbar-burger'), 0);
|
||
|
||
// Check if there are any navbar burgers
|
||
if ($navbarBurgers.length > 0) {
|
||
|
||
// Add a click event on each of them
|
||
$navbarBurgers.forEach(function ($el) {
|
||
$el.addEventListener('click', function () {
|
||
|
||
// Get the target from the "data-target" attribute
|
||
var target = $el.dataset.target;
|
||
var $target = document.getElementById(target);
|
||
|
||
// Toggle the class on both the "navbar-burger" and the "navbar-menu"
|
||
$el.classList.toggle('is-active');
|
||
$target.classList.toggle('is-active');
|
||
|
||
});
|
||
});
|
||
}
|
||
|
||
}
|
||
|
||
function expandCWButtonPrepare()
|
||
{
|
||
var theButton = document.querySelector('#expandCWs');
|
||
if (!theButton) {
|
||
theButton = document.createElement('p');
|
||
theButton.id = "expandCWs";
|
||
theButton.textContent = "Expand CWs";
|
||
theButton.classList.toggle('button');
|
||
var title = document.querySelector('#title');
|
||
if (title)
|
||
{
|
||
title.insertAdjacentElement('afterend', theButton);
|
||
var details = document.querySelectorAll('details');
|
||
var openState = false;
|
||
|
||
if (details != null) {
|
||
theButton.addEventListener('click', function() {
|
||
openState = details.item(0).hasAttribute('open');
|
||
details.forEach(function ($el) {
|
||
if (openState)
|
||
{
|
||
$el.removeAttribute('open');
|
||
} else
|
||
{
|
||
$el.setAttribute('open', '');
|
||
}
|
||
});
|
||
openState = !openState;
|
||
if (openState) { theButton.textContent = 'Collapse CWs'; }
|
||
else { theButton.textContent = "Expand CWs"; };
|
||
theButton.classList.toggle('is-active');
|
||
});
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
function fileButtonUpdaters()
|
||
{
|
||
var file1 = document.getElementById("id_media_file_1");
|
||
file1.onchange = function(){
|
||
if (file1.files.length > 0)
|
||
{
|
||
document.getElementById('media_filename_1').innerHTML = file1.files[0].name.trunc(5);
|
||
}
|
||
};
|
||
var file2 = document.getElementById("id_media_file_2");
|
||
file2.onchange = function(){
|
||
if (file2.files.length > 0)
|
||
{
|
||
document.getElementById('media_filename_2').innerHTML = file2.files[0].name.trunc(5);
|
||
}
|
||
};
|
||
var file3 = document.getElementById("id_media_file_3");
|
||
file3.onchange = function(){
|
||
if (file3.files.length > 0)
|
||
{
|
||
document.getElementById('media_filename_3').innerHTML = file3.files[0].name.trunc(5);
|
||
}
|
||
};
|
||
var file4 = document.getElementById("id_media_file_4");
|
||
file4.onchange = function(){
|
||
if (file4.files.length > 0)
|
||
{
|
||
document.getElementById('media_filename_4').innerHTML = file4.files[0].name.trunc(5);
|
||
}
|
||
};
|
||
|
||
}
|
||
|
||
function characterCountSetup()
|
||
{
|
||
if ($("#id_status").length) {
|
||
$("#status_count").text(characterCount());
|
||
$("#id_status").keyup(function(){
|
||
$("#status_count").text(characterCount());
|
||
});
|
||
$("#id_spoiler_text").keyup(function(){
|
||
$("#status_count").text(characterCount());
|
||
});
|
||
}
|
||
}
|
||
|
||
function characterCount()
|
||
{
|
||
return $("#id_status").val().length + $("#id_spoiler_text").val().length;
|
||
}
|
||
|