Albirew/nyaa-pantsu
Archivé
1
0
Bifurcation 0
Ce dépôt a été archivé le 2022-05-07. Vous pouvez voir ses fichiers ou le cloner, mais pas ouvrir de ticket ou de demandes d'ajout, ni soumettre de changements.
nyaa-pantsu/public/js/main.js

246 lignes
9,6 Kio
JavaScript
Brut Vue normale Historique

2017-06-04 07:43:41 +02:00
// @source https://github.com/NyaaPantsu/nyaa/tree/dev/public/js
// @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt Expat
//String that will contain a far future date, used multiple times throughout multiple functions
var farFutureString
//Array that will contain the themes that the user will switch between when triggering the function a few lines under
var UserTheme
2017-07-22 23:27:02 +02:00
// Switches between themes when a new one is selected
function switchThemes() {
2017-07-24 07:03:43 +02:00
var themeName = document.getElementById("theme-selector").value
var head = document.getElementsByTagName("head")[0]
2017-08-17 03:35:18 +02:00
if (themeName === "") {
return
}
2017-07-16 17:36:17 +02:00
// Remove the theme in place, it fails if one isn't set
try {
head.removeChild(document.getElementById("theme"))
} catch (err) {}
2017-07-16 17:36:17 +02:00
// Don't add a node if we don't want extra styling
2017-08-17 03:35:18 +02:00
2017-07-16 17:36:17 +02:00
// Create the new one and put it back
var newTheme = document.createElement("link")
newTheme.setAttribute("rel", "stylesheet")
newTheme.setAttribute("href", "/css/" + themeName + ".css")
newTheme.setAttribute("id", "theme")
head.appendChild(newTheme)
}
2017-05-05 12:59:56 +02:00
// Used by spoiler tags
function toggleLayer(elem) {
2017-07-16 17:36:17 +02:00
if (elem.classList.contains("hide")) {
elem.classList.remove("hide")
2017-07-16 17:36:17 +02:00
} else {
elem.classList.add("hide")
2017-07-16 17:36:17 +02:00
}
2017-05-05 12:59:56 +02:00
}
function parseAllDates() {
2017-07-16 17:36:17 +02:00
// Date formatting
var lang = document.getElementsByTagName("html")[0].getAttribute("lang")
var ymdOpt = {
year: "numeric",
month: "short",
day: "numeric"
}
var hmOpt = {
hour: "numeric",
minute: "numeric"
}
2017-05-05 15:55:25 +02:00
var list = document.getElementsByClassName("date-short")
for (var i in list) {
var e = list[i]
e.title = new Date(e.innerText).toLocaleString(lang)
e.innerText = new Date(e.innerText).toLocaleString(lang, ymdOpt)
2017-07-16 17:36:17 +02:00
}
2017-05-05 15:55:25 +02:00
var list = document.getElementsByClassName("date-full")
for (var i in list) {
if(list.length == 0)
break;
var e = list[i]
var dateDifference = dateDiff(new Date(e.innerText), new Date())
if(e.className != undefined && e.className.includes("scrape-date"))
e.title = ((dateDifference.d * 24) + dateDifference.h) + " hours " + dateDifference.m + " minutes ago"
else
e.title = dateDifference.d + " days " + dateDifference.h + " hours ago"
e.innerText = new Date(e.innerText).toLocaleString(lang)
2017-07-16 17:36:17 +02:00
}
2017-05-05 15:55:25 +02:00
}
function dateDiff( str1, str2 ) {
var diff = Date.parse( str2 ) - Date.parse( str1 );
return isNaN( diff ) ? NaN : {
diff : diff,
m : Math.floor( diff / 60000 % 60 ),
h : Math.floor( diff / 3600000 % 24 ),
d : Math.floor( diff / 86400000 )
};
}
parseAllDates()
//called if no Commit cookie is set or if the website has a newer commit than the one in cookie
function resetCookies() {
var cookies = document.cookie.split(";")
var excludedCookies = ["mascot", "version", "theme", "theme2", "mascot_url", "lang", "csrf_token", "altColors", "EU_Cookie", "oldNav"]
2017-07-23 04:50:36 +02:00
//Remove all cookies but re-create those in the above array
for (var i = 0; i < cookies.length; i++) {
var cookieName = (cookies[i].split("=")[0]).trim()
//Trim spaces because some cookie names have them at times
if (excludedCookies.includes(cookieName)) {
2017-09-18 04:05:38 +02:00
if(domain == ".pantsu.cat") {
//only execute if cookie are supposed to be shared between nyaa & sukebei
var cookieValue = getCookieValue(cookieName)
document.cookie = cookieName + "=;expires=Thu, 01 Jan 1970 00:00:00 UTC;"
document.cookie = cookieName + "=" + cookieValue + ";path=/;expires=" + farFutureString + ";domain=" + domain
//Remove cookie and re-create it to ensure domain is correct
}
continue
}
document.cookie = cookieName + "=;path=/;expires=Thu, 01 Jan 1970 00:00:00 UTC;"
2017-07-22 23:27:02 +02:00
}
2017-07-23 04:50:36 +02:00
//Set new version in cookie
document.cookie = "commit=" + commitVersion + ";expires=" + farFutureString + ";domain=" + domain
document.cookie = "version=" + websiteVersion + ";expires=" + farFutureString + ";domain=" + domain
2017-07-23 04:50:36 +02:00
var oneHour = new Date()
oneHour.setTime(oneHour.getTime() + 1 * 3600 * 1500)
document.cookie = "newVersion=true; expires=" + oneHour.toUTCString() + ";domain=" + domain
}
2017-07-23 04:50:36 +02:00
2017-07-22 23:27:02 +02:00
/*Fixed-Navbar offset fix*/
if (document.getElementsByClassName("search-box")[0] !== undefined)
2017-07-23 04:50:36 +02:00
startupCode()
else
document.addEventListener("DOMContentLoaded", function (event) {
startupCode()
})
2017-07-16 17:36:17 +02:00
2017-07-23 00:00:44 +02:00
function startupCode() {
farFutureString = new Date()
farFutureString.setTime(farFutureString.getTime() + 50 * 36000 * 15000)
farFutureString = farFutureString.toUTCString()
var shiftWindow = function () {
scrollBy(0, -70)
}
2017-07-23 02:22:33 +02:00
if (location.hash) shiftWindow()
window.addEventListener("hashchange", shiftWindow)
2017-07-23 00:00:44 +02:00
if (!document.cookie.includes("commit") && !document.cookie.includes("version"))
resetCookies()
else {
var userCommitVersion = getCookieValue("commit"), userWebsiteVersion = getCookieValue("version");
if (userCommitVersion != commitVersion || userWebsiteVersion != websiteVersion)
resetCookies()
}
if(document.getElementById("cookie-warning-close") != null) {
document.getElementById("cookie-warning-close").addEventListener("click", function (e) {
document.getElementById("cookie-warning").outerHTML = "";
})
}
if (document.cookie.includes("newVersion"))
document.getElementById("commit").className = document.getElementById("commit").innerHTML != "unknown" ? "new" : "wew";
document.getElementById("dark-toggle").addEventListener("click", toggleTheme);
if(document.cookie.includes("theme=")) {
UserTheme = [getCookieValue("theme"), "tomorrow"]
2017-08-12 08:52:54 +02:00
//Get user's default theme and set the alternative one as tomorrow
}
else
2017-08-12 08:52:54 +02:00
UserTheme = ["g", "tomorrow"]
//If user has no default theme, set these by default
if(document.cookie.includes("theme2=")) {
UserTheme[1] = getCookieValue("theme2")
2017-08-12 08:52:54 +02:00
//If user already has ran the ToggleTheme() function in the past, we get the value of the second theme (the one the script switches to)
if(!UserTheme.includes("tomorrow"))
UserTheme[1] = "tomorrow"
//If none of the theme are tomorrow, which happens if the user is on dark mode (with theme2 on g.css) and that he switches to classic or g.css in settings, we set the second one as tomorrow
else if(UserTheme[0] == UserTheme[1])
UserTheme[1] = "g"
//If both theme are tomorrow, which happens if theme2 is on tomorrow (always is by default) and that the user sets tomorrow as his theme through settings page, we set secondary theme to g.css
}
else {
if(UserTheme[0] == UserTheme[1])
2017-08-12 08:52:54 +02:00
UserTheme[1] = "g"
//If tomorrow is twice in UserTheme, which happens when the user already has tomorrow as his default theme and toggle the dark mode for the first time, we set the second theme as g.css
document.cookie = "theme2=" + UserTheme[1] + ";path=/;expires=" + farFutureString + ";domain=" + domain
//Set cookie for future theme2 uses
}
}
function toggleTheme(e) {
var CurrentTheme = document.getElementById("theme").href
CurrentTheme = CurrentTheme.substring(CurrentTheme.indexOf("/css/") + 5, CurrentTheme.indexOf(".css"))
CurrentTheme = (CurrentTheme == UserTheme[0] ? UserTheme[1] : UserTheme[0])
document.getElementById("theme").href = "/css/" + CurrentTheme + ".css";
if(UserID > 0 ){
Query.Get("/dark", function(data) {})
//If user logged in, we're forced to go through this page in order to save the new user theme
}
else {
document.cookie = "theme=" + CurrentTheme + ";path=/;expires=" + farFutureString + ";domain=" + domain
document.cookie = "theme2=" + (CurrentTheme == UserTheme[0] ? UserTheme[1] : UserTheme[0]) + ";path=/;expires=" + farFutureString + ";domain=" + domain
//Otherwise, we can just set the theme through cookies
}
e.preventDefault()
2017-07-23 00:00:44 +02:00
}
function playVoice() {
var mascotAudio = document.getElementById("explosion") || document.getElementById("nyanpassu") || document.getElementById("nyanpassu2") || document.getElementById("kawaii")
2017-07-16 17:36:17 +02:00
if (mascotAudio !== undefined) {
mascotAudio.volume = 0.2
mascotAudio.play()
2017-07-16 17:36:17 +02:00
} else {
console.log("Your mascot doesn't support yet audio files!")
}
}
document.getElementsByClassName("form-input refine")[0].addEventListener("click", function (e) {
if(document.getElementsByClassName("form-input search-box")[0].value == "" || location.pathname != "/")
{
document.getElementsByClassName("box refine")[0].style.display = document.getElementsByClassName("box refine")[0].style.display == "none" ? "block" : "none"
if (document.getElementsByClassName("form-input refine-searchbox")[0].value == "")
document.getElementsByClassName("form-input refine-searchbox")[0].value = document.getElementsByClassName("form-input search-box")[0].value
if (document.getElementsByClassName("form-input refine-category")[0].selectedIndex == 0)
document.getElementsByClassName("form-input refine-category")[0].selectedIndex = document.getElementsByClassName("form-input form-category")[0].selectedIndex
if (document.getElementsByClassName("box refine")[0].style.display == "block")
scrollTo(0, 0)
e.preventDefault()
}
})
function humanFileSize(bytes, si) {
if (bytes == 0)
return "Unknown"
var k = si ? 1000 : 1024
var i = ~~(Math.log(bytes) / Math.log(k))
return i == 0 ? bytes + " B" : (bytes / Math.pow(k, i)).toFixed(1) + " " + "KMGTPEZY" [i - 1] + (si ? "" : "i") + "B"
}
function getCookieValue(cookieName) {
var startPos = document.cookie.indexOf(cookieName + "=") + cookieName.length + 1
var endPos = document.cookie.substring(startPos).indexOf(";")
return endPos == "-1" ? document.cookie.substring(startPos) : document.cookie.substring(startPos, endPos + startPos)
}
2017-06-04 07:43:41 +02:00
// @license-end