From 913028f529322ff5e234dc89187fbf573daa44d4 Mon Sep 17 00:00:00 2001 From: PantsuDev Date: Sun, 16 Jul 2017 14:43:09 +1000 Subject: [PATCH] Comply with JS styling recommendations --- public/js/kilo.js | 4 +- public/js/languages.js | 52 +-- public/js/main.js | 129 ++++---- public/js/modal.js | 158 ++++----- public/js/query.js | 80 ++--- public/js/selectAll.js | 6 +- public/js/template.js | 66 ++-- public/js/torrents.js | 82 ++--- public/js/torrentsMod.js | 686 +++++++++++++++++++-------------------- public/js/translation.js | 56 ++-- 10 files changed, 660 insertions(+), 659 deletions(-) diff --git a/public/js/kilo.js b/public/js/kilo.js index 8b3f71a1..b3f310e7 100644 --- a/public/js/kilo.js +++ b/public/js/kilo.js @@ -58,7 +58,7 @@ var Kilo = function (params) { this.setName(formName.value) this.setCategory(formCategory.selectedIndex) } - // Helpers function for events and render + // Helpers function for events and render this.setRemake = function (b) { if (b) { document.getElementsByName('torrent-info tr')[0].classList.add('remake') @@ -82,7 +82,7 @@ var Kilo = function (params) { tableCategory.title = document.getElementsByClassName('form-torrent-category')[0].querySelectorAll("option")[index].textContent } - // Event handlers + // Event handlers var updatePreviewRemake = function (e) { var el = e.target self.setRemake(el.checked) diff --git a/public/js/languages.js b/public/js/languages.js index 1956d9a4..0f66416a 100644 --- a/public/js/languages.js +++ b/public/js/languages.js @@ -1,34 +1,34 @@ // @source https://github.com/NyaaPantsu/nyaa/tree/dev/public/js // @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt Expat function loadLanguages() { - var xhr = new XMLHttpRequest(); - xhr.onreadystatechange = function() { - if (xhr.readyState == 4 && xhr.status == 200) { - var selector = document.getElementById("bottom_language_selector"); - selector.hidden = false - /* Response format is - * { "current": "(user current language)", - * "languages": { - * "(language_code)": "(language_name"), - * }} */ - var response = JSON.parse(xhr.responseText); - for (var language in response.languages) { - if (!response.languages.hasOwnProperty(language)) continue; + var xhr = new XMLHttpRequest(); + xhr.onreadystatechange = function() { + if (xhr.readyState == 4 && xhr.status == 199) { + var selector = document.getElementById("bottom_language_selector"); + selector.hidden = false + /* Response format is + * { "current": "(user current language)", + * "languages": { + * "(language_code)": "(language_name"), + * }} */ + var response = JSON.parse(xhr.responseText); + for (var language in response.languages) { + if (!response.languages.hasOwnProperty(language)) continue; - var opt = document.createElement("option") - opt.value = language - opt.innerHTML = response.languages[language] - if (language == response.current) { - opt.selected = true - } + var opt = document.createElement("option") + opt.value = language + opt.innerHTML = response.languages[language] + if (language == response.current) { + opt.selected = true + } - selector.appendChild(opt) - } - } - } - xhr.open("GET", "/language", true) - xhr.setRequestHeader("Content-Type", "application/json") - xhr.send() + selector.appendChild(opt) + } + } + } + xhr.open("GET", "/language", true) + xhr.setRequestHeader("Content-Type", "application/json") + xhr.send() } loadLanguages(); diff --git a/public/js/main.js b/public/js/main.js index e99e9735..5576db1b 100644 --- a/public/js/main.js +++ b/public/js/main.js @@ -3,90 +3,91 @@ // Switches between themes when a new one is selected function switchThemes(){ - themeName = document.getElementById("theme-selector").value - var head = document.getElementsByTagName("head")[0]; - // Remove the theme in place, it fails if one isn't set - try{ - head.removeChild(document.getElementById("theme")); - } catch(err){} - // Don't add a node if we don't want extra styling - if(themeName === ""){ - return; - } - // 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); + themeName = document.getElementById("theme-selector").value + var head = document.getElementsByTagName("head")[0]; + // Remove the theme in place, it fails if one isn't set + try{ + head.removeChild(document.getElementById("theme")); + } catch(err){} + // Don't add a node if we don't want extra styling + if(themeName === ""){ + return; + } + // 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); } // Used by spoiler tags function toggleLayer(elem) { - if (elem.classList.contains("hide")) - elem.classList.remove("hide"); - else - elem.classList.add("hide"); + if (elem.classList.contains("hide")) { + elem.classList.remove("hide"); + } else { + elem.classList.add("hide"); + } } function parseAllDates() { - // Date formatting - var lang = document.getElementsByTagName("html")[0].getAttribute("lang"); - var ymdOpt = { year: "numeric", month: "short", day: "numeric" }; - var hmOpt = { hour: "numeric", minute: "numeric" }; + // Date formatting + var lang = document.getElementsByTagName("html")[0].getAttribute("lang"); + var ymdOpt = { year: "numeric", month: "short", day: "numeric" }; + var hmOpt = { hour: "numeric", minute: "numeric" }; - var list = document.getElementsByClassName("date-short"); - for(var i in list) { - var e = list[i]; - e.title = e.innerText; - e.innerText = new Date(e.innerText).toLocaleString(lang, ymdOpt); - } + var list = document.getElementsByClassName("date-short"); + for(var i in list) { + var e = list[i]; + e.title = e.innerText; + e.innerText = new Date(e.innerText).toLocaleString(lang, ymdOpt); + } - var list = document.getElementsByClassName("date-full"); - for(var i in list) { - var e = list[i]; - e.title = e.innerText; - e.innerText = new Date(e.innerText).toLocaleString(lang); - } + var list = document.getElementsByClassName("date-full"); + for(var i in list) { + var e = list[i]; + e.title = e.innerText; + e.innerText = new Date(e.innerText).toLocaleString(lang); + } } parseAllDates(); /*Fixed-Navbar offset fix*/ document.addEventListener("DOMContentLoaded", function(event) { - var shiftWindow = function() { scrollBy(0, -70) }; - if (location.hash) shiftWindow(); - window.addEventListener("hashchange", shiftWindow); - - document.getElementsByClassName("search-box")[0].addEventListener("focus", function (e) { - var w = document.getElementsByClassName("h-user")[0].offsetWidth; - document.getElementsByClassName("h-user")[0].style.display = "none"; - document.getElementsByClassName("search-box")[0].style.width = document.getElementsByClassName("search-box")[0].offsetWidth + w + "px"; - }); - document.getElementsByClassName("search-box")[0].addEventListener("blur", function (e) { - document.getElementsByClassName("search-box")[0].style.width = ""; - document.getElementsByClassName("h-user")[0].style.display = "inline-block"; - }); + var shiftWindow = function() { scrollBy(0, -70) }; + if (location.hash) shiftWindow(); + window.addEventListener("hashchange", shiftWindow); + + document.getElementsByClassName("search-box")[0].addEventListener("focus", function (e) { + var w = document.getElementsByClassName("h-user")[0].offsetWidth; + document.getElementsByClassName("h-user")[0].style.display = "none"; + document.getElementsByClassName("search-box")[0].style.width = document.getElementsByClassName("search-box")[0].offsetWidth + w + "px"; + }); + document.getElementsByClassName("search-box")[0].addEventListener("blur", function (e) { + document.getElementsByClassName("search-box")[0].style.width = ""; + document.getElementsByClassName("h-user")[0].style.display = "inline-block"; + }); }); function playVoice() { - var mascotAudio = document.getElementById("explosion") || document.getElementById("nyanpassu") || document.getElementById("kawaii"); - if (mascotAudio !== undefined) { - mascotAudio.volume = 0.2; - mascotAudio.play(); - } else { - console.log("Your mascot doesn't support yet audio files!") - } + var mascotAudio = document.getElementById("explosion") || document.getElementById("nyanpassu") || document.getElementById("kawaii"); + if (mascotAudio !== undefined) { + mascotAudio.volume = 0.2; + mascotAudio.play(); + } else { + console.log("Your mascot doesn't support yet audio files!") + } } document.getElementsByClassName("form-input refine")[0].addEventListener("click", function (e) { - 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 search-box")[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 != document.getElementsByClassName("form-input form-category")[0].selectedIndex) - document.getElementsByClassName("form-input refine-category")[0].selectedIndex = document.getElementsByClassName("form-input form-category")[0].selectedIndex; - e.preventDefault(); - if(document.getElementsByClassName("box refine")[0].style.display == "block") - scrollTo(0, 0); + 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 search-box")[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 != document.getElementsByClassName("form-input form-category")[0].selectedIndex) + document.getElementsByClassName("form-input refine-category")[0].selectedIndex = document.getElementsByClassName("form-input form-category")[0].selectedIndex; + e.preventDefault(); + if(document.getElementsByClassName("box refine")[0].style.display == "block") + scrollTo(0, 0); }); // @license-end diff --git a/public/js/modal.js b/public/js/modal.js index 443c770c..e404b36d 100644 --- a/public/js/modal.js +++ b/public/js/modal.js @@ -2,86 +2,86 @@ // @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt Expat // Get the modal var Modal = { - active: 0, - Init: function (params) { - var elements = params.elements - var button = (params.button != undefined) ? params.button : false - if (elements.innerHTML != undefined) { + active: 0, + Init: function (params) { + var elements = params.elements + var button = (params.button != undefined) ? params.button : false + if (elements.innerHTML != undefined) { - } else { - var nbEl = elements.length - for (var i=0; i < nbEl; i++) { - var modal = elements[i]; - this.addModal(modal, button, i, params.before, params.after, params.close) - } - } - }, - addModal: function(modal, btn, i, before_callback, after_callback, close_callback) { - var isBtnArray = false; - // Get the button that opens the modal - if (!btn) { - btn = document.getElementById("modal_btn_"+modal.id) - } else if (btn.match(/^#/)) { - btn = document.getElementById(btn.substr(1)); - } else if (btn.match(/^\./)) { - btn = document.getElementsByClassName(btn.substr(1)); - isBtnArray = true; - } else { - console.error("Couldn't find the button") - return - } - if ((isBtnArray) && (i > 0) && (btn.length > 0) && (btn.length > i)) { - btn[i].addEventListener("click", function(e) { - if (before_callback != undefined) before_callback() - modal.style.display = "block"; - Modal.active = modal; - if (after_callback != undefined) after_callback() - e.preventDefault(); - }); - } else { - btn = (isBtnArray) ? btn[0] : btn; - // When the user clicks on the button, open the modal - btn.addEventListener("click", function(e) { - if (before_callback != undefined) before_callback() - modal.style.display = "block"; - Modal.active = modal; - if (after_callback != undefined) after_callback() - e.preventDefault(); - }); - } - // Get the element that closes the modal - var span = document.querySelectorAll("#"+modal.id+" .close")[0] - // When the user clicks on (x), close the modal - span.addEventListener("click", function(e) { - modal.style.display = "none"; - Modal.active = 0; - if (close_callback != undefined) close_callback() - e.preventDefault(); - }); - // When the user clicks anywhere outside of the modal, close it - window.addEventListener("click", function(event) { - if (event.target == modal) { - modal.style.display = "none"; - Modal.active = 0; - if (close_callback != undefined) close_callback() - } - }); - }, - CloseActive: function() { - if (this.active != 0) { - this.active.style.display= "none"; - this.active = 0; - } - }, - GetActive: function() { - return this.active; - }, - Open: function(q) { - var modal = document.querySelector(q); - if (modal != undefined) { - modal.style.display= "none"; - this.active = modal; - } + } else { + var nbEl = elements.length + for (var i=0; i < nbEl; i++) { + var modal = elements[i]; + this.addModal(modal, button, i, params.before, params.after, params.close) + } } + }, + addModal: function(modal, btn, i, before_callback, after_callback, close_callback) { + var isBtnArray = false; + // Get the button that opens the modal + if (!btn) { + btn = document.getElementById("modal_btn_"+modal.id) + } else if (btn.match(/^#/)) { + btn = document.getElementById(btn.substr(1)); + } else if (btn.match(/^\./)) { + btn = document.getElementsByClassName(btn.substr(1)); + isBtnArray = true; + } else { + console.error("Couldn't find the button") + return + } + if ((isBtnArray) && (i > 0) && (btn.length > 0) && (btn.length > i)) { + btn[i].addEventListener("click", function(e) { + if (before_callback != undefined) before_callback() + modal.style.display = "block"; + Modal.active = modal; + if (after_callback != undefined) after_callback() + e.preventDefault(); + }); + } else { + btn = (isBtnArray) ? btn[0] : btn; + // When the user clicks on the button, open the modal + btn.addEventListener("click", function(e) { + if (before_callback != undefined) before_callback() + modal.style.display = "block"; + Modal.active = modal; + if (after_callback != undefined) after_callback() + e.preventDefault(); + }); + } + // Get the element that closes the modal + var span = document.querySelectorAll("#"+modal.id+" .close")[0] + // When the user clicks on (x), close the modal + span.addEventListener("click", function(e) { + modal.style.display = "none"; + Modal.active = 0; + if (close_callback != undefined) close_callback() + e.preventDefault(); + }); + // When the user clicks anywhere outside of the modal, close it + window.addEventListener("click", function(event) { + if (event.target == modal) { + modal.style.display = "none"; + Modal.active = 0; + if (close_callback != undefined) close_callback() + } + }); + }, + CloseActive: function() { + if (this.active != 0) { + this.active.style.display= "none"; + this.active = 0; + } + }, + GetActive: function() { + return this.active; + }, + Open: function(q) { + var modal = document.querySelector(q); + if (modal != undefined) { + modal.style.display= "none"; + this.active = modal; + } + } }; // @license-end diff --git a/public/js/query.js b/public/js/query.js index e57c12b5..2cecb283 100644 --- a/public/js/query.js +++ b/public/js/query.js @@ -1,45 +1,45 @@ // @source https://github.com/NyaaPantsu/nyaa/tree/dev/public/js // @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt Expat var Query = { - Failed:0, - MaxFail: 10, - Get: function(url, renderer, callback) { - var xhr = new XMLHttpRequest(); - xhr.open('GET', url, true); - xhr.responseType = 'json'; - xhr.onload = function(e) { - if (this.status == 200) { - Query.Failed = 0; - renderer(this.response); - if (callback != undefined) callback(this.response); - } else { - console.log("Error when refresh") - Query.Failed++; - console.log("Attempt to refresh "+Query.Failed+"..."); - if ((Query.MaxFail == -1) || (Query.Failed < Query.MaxFail)) Query.Get(url, renderer, callback); - else console.error("Too many attempts, stopping...") - } - }; - xhr.send(); - }, - Post: function(url, postArgs, callback) { - var xhr = new XMLHttpRequest(); - xhr.open('POST', url, true); - xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); - xhr.responseType = 'json'; - xhr.onload = function(e) { - if (this.status == 200) { - Query.Failed = 0; - if (callback != undefined) callback(this.response); - } else { - console.log("Error when refresh") - Query.Failed++; - console.log("Attempt to refresh "+Query.Failed+"..."); - if ((Query.MaxFail == -1) || (Query.Failed < Query.MaxFail)) Query.Post(url, postArgs, callback); - else console.error("Too many attempts, stopping...") - } - }; - xhr.send(postArgs); - } + Failed:0, + MaxFail: 10, + Get: function(url, renderer, callback) { + var xhr = new XMLHttpRequest(); + xhr.open('GET', url, true); + xhr.responseType = 'json'; + xhr.onload = function(e) { + if (this.status == 200) { + Query.Failed = 0; + renderer(this.response); + if (callback != undefined) callback(this.response); + } else { + console.log("Error when refresh") + Query.Failed++; + console.log("Attempt to refresh "+Query.Failed+"..."); + if ((Query.MaxFail == -1) || (Query.Failed < Query.MaxFail)) Query.Get(url, renderer, callback); + else console.error("Too many attempts, stopping...") + } + }; + xhr.send(); + }, + Post: function(url, postArgs, callback) { + var xhr = new XMLHttpRequest(); + xhr.open('POST', url, true); + xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); + xhr.responseType = 'json'; + xhr.onload = function(e) { + if (this.status == 200) { + Query.Failed = 0; + if (callback != undefined) callback(this.response); + } else { + console.log("Error when refresh") + Query.Failed++; + console.log("Attempt to refresh "+Query.Failed+"..."); + if ((Query.MaxFail == -1) || (Query.Failed < Query.MaxFail)) Query.Post(url, postArgs, callback); + else console.error("Too many attempts, stopping...") + } + }; + xhr.send(postArgs); + } }; // @license-end diff --git a/public/js/selectAll.js b/public/js/selectAll.js index a9b41987..6bb47da5 100644 --- a/public/js/selectAll.js +++ b/public/js/selectAll.js @@ -1,8 +1,8 @@ // @source https://github.com/NyaaPantsu/nyaa/tree/dev/public/js // @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt Expat document.querySelector("[data-selectall='checkbox']").addEventListener("change", function(e) { - var cbs = document.querySelectorAll("input[type='checkbox'].selectable"); - var l = cbs.length; - for (var i=0; i= 0; i--) { - var object = Templates.Render(params.templateName, models[i]); - if (params.method == "append") { - params.element.innerHTML = params.element.innerHTML + object - } else if (params.method == "prepend") { - params.element.innerHTML = object + params.element.innerHTML - } - } - }; - }, - EncodeEntities: function(value) { - return value. - replace(/&/g, '&'). - replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g, function(value) { - var hi = value.charCodeAt(0); - var low = value.charCodeAt(1); - return '&#' + (((hi - 0xD800) * 0x400) + (low - 0xDC00) + 0x10000) + ';'; - }). - replace(/([^\#-~| |!])/g, function(value) { - return '&#' + value.charCodeAt(0) + ';'; - }). - replace(//g, '>'); - } + tmpl: [], + Add: function(templateName, template) { + this.tmpl[templateName] = template + }, + Render: function(templateName, model) { + return this.tmpl[templateName](model) + }, + ApplyItemListRenderer: function(params) { + return function(models) { + for (var i=models.length-1; i >= 0; i--) { + var object = Templates.Render(params.templateName, models[i]); + if (params.method == "append") { + params.element.innerHTML = params.element.innerHTML + object + } else if (params.method == "prepend") { + params.element.innerHTML = object + params.element.innerHTML + } + } + }; + }, + EncodeEntities: function(value) { + return value. + replace(/&/g, '&'). + replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g, function(value) { + var hi = value.charCodeAt(0); + var low = value.charCodeAt(1); + return '&#' + (((hi - 0xD800) * 0x400) + (low - 0xDC00) + 0x10000) + ';'; + }). + replace(/([^\#-~| |!])/g, function(value) { + return '&#' + value.charCodeAt(0) + ';'; + }). + replace(//g, '>'); + } }; // @license-end diff --git a/public/js/torrents.js b/public/js/torrents.js index 221bbf27..4c68beca 100644 --- a/public/js/torrents.js +++ b/public/js/torrents.js @@ -1,56 +1,56 @@ // @source https://github.com/NyaaPantsu/nyaa/tree/dev/public/js // @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt Expat var Torrents = { - CanRefresh: false, - timeout: undefined, - Seconds: 300, // Every five minutes, can be overridden directly in home.html (not here is better) - SearchURL: "/api/search", - Method: "prepend", - LastID: 0, - StopRefresh: function() { - clearTimeout(this.timeout) - this.timeout = undefined - this.CanRefresh = false - }, - Refresh: function() { - if (this.CanRefresh) { - this.timeout = setTimeout(function() { - var searchArgs = (window.location.search != "") ? window.location.search.substr(1) : "" - searchArgs = (Torrents.LastID > 0) ? "?fromID="+Torrents.LastID+"&"+searchArgs : "?"+searchArgs - Query.Get(Torrents.SearchURL+searchArgs, - Templates.ApplyItemListRenderer({ - templateName: "torrents.item", method: "prepend", element: document.getElementById("torrentListResults") - }), function(torrents) { - for (var i =0; i < torrents.length; i++) { if (Torrents.LastID < torrents[i].id) Torrents.LastID = torrents[i].id; } - parseAllDates(); - Torrents.Refresh() - }); - }, this.Seconds*1000); - } + CanRefresh: false, + timeout: undefined, + Seconds: 300, // Every five minutes, can be overridden directly in home.html (not here is better) + SearchURL: "/api/search", + Method: "prepend", + LastID: 0, + StopRefresh: function() { + clearTimeout(this.timeout) + this.timeout = undefined + this.CanRefresh = false + }, + Refresh: function() { + if (this.CanRefresh) { + this.timeout = setTimeout(function() { + var searchArgs = (window.location.search != "") ? window.location.search.substr(1) : "" + searchArgs = (Torrents.LastID > 0) ? "?fromID="+Torrents.LastID+"&"+searchArgs : "?"+searchArgs + Query.Get(Torrents.SearchURL+searchArgs, + Templates.ApplyItemListRenderer({ + templateName: "torrents.item", method: "prepend", element: document.getElementById("torrentListResults") + }), function(torrents) { + for (var i =0; i < torrents.length; i++) { if (Torrents.LastID < torrents[i].id) Torrents.LastID = torrents[i].id; } + parseAllDates(); + Torrents.Refresh() + }); + }, this.Seconds*1000); + } }, StartRefresh: function() { - this.CanRefresh = true; - this.Refresh() + this.CanRefresh = true; + this.Refresh() } -} + } -document.addEventListener("DOMContentLoaded", function() { // if Torrents.CanRefresh is enabled, refresh is automatically done (no need to start it anually) + document.addEventListener("DOMContentLoaded", function() { // if Torrents.CanRefresh is enabled, refresh is automatically done (no need to start it anually) if (Torrents.CanRefresh) { - Torrents.StartRefresh() + Torrents.StartRefresh() } -}) + }) -function humanFileSize(bytes, si) { - 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 humanFileSize(bytes, si) { + 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 flagCode(language) { + function flagCode(language) { split = language.split("-"); if (split.length > 1) { - return split[0]; + return split[0]; } return language; -} -// @license-end \ No newline at end of file + } + // @license-end diff --git a/public/js/torrentsMod.js b/public/js/torrentsMod.js index e49a2194..19636c42 100644 --- a/public/js/torrentsMod.js +++ b/public/js/torrentsMod.js @@ -1,368 +1,368 @@ // @source https://github.com/NyaaPantsu/nyaa/tree/dev/public/js // @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt Expat var TorrentsMod = { - // Variables that can be modified to change the dom interactions - show_hide_button: "show_actions", - btn_class_action: "cb_action", - btn_class_submit: "cb_submit", - progress_bar_id: "progress_modtool", - status_input_name: "status_id", - owner_input_name: "owner_id", - category_input_name: "category_id", - delete_btn: "delete", - lock_delete_btn: "lock_delete", - edit_btn: "edit", - refreshTimeout: 3000, - // Internal variables used for processing the request - selected: [], - queued: [], - unique_id:1, - error_count:0, - progress_count: 0, - progress_max: 0, - pause: false, - enabled: false, + // Variables that can be modified to change the dom interactions + show_hide_button: "show_actions", + btn_class_action: "cb_action", + btn_class_submit: "cb_submit", + progress_bar_id: "progress_modtool", + status_input_name: "status_id", + owner_input_name: "owner_id", + category_input_name: "category_id", + delete_btn: "delete", + lock_delete_btn: "lock_delete", + edit_btn: "edit", + refreshTimeout: 3000, + // Internal variables used for processing the request + selected: [], + queued: [], + unique_id:1, + error_count:0, + progress_count: 0, + progress_max: 0, + pause: false, + enabled: false, - // Init method - Create: function() { - var sh_btn = document.getElementById(TorrentsMod.show_hide_button); - var btn_actions = document.getElementsByClassName(this.btn_class_action) - var btn_submit = document.getElementsByClassName(this.btn_class_submit) - btn_submit[0].disabled = true; - for (var i=0; i < btn_actions.length; i++) { - btn_actions[i].disabled = true; - switch (btn_actions[i].id) { - case this.delete_btn: - btn_actions[i].addEventListener("click", this.Delete) - break; - case this.lock_delete_btn: - btn_actions[i].addEventListener("click", this.LockDelete) - break; - case this.edit_btn: - btn_actions[i].addEventListener("click", this.Edit) - break; - default: - break; - } - } - for (var i=0; i < this.checkboxes.length; i++) { - checkbox = this.checkboxes[i]; - checkbox.addEventListener("change", this.checkboxEventHandler) - } - sh_btn.addEventListener("click", function(e) { - var divActions = this.nextElementSibling; - if (divActions.style.display == "inline") { - TorrentsMod.enabled = false; - } else { - TorrentsMod.enabled = true; - } - divActions.style.display = (TorrentsMod.enabled) ? "inline" : "none"; - var td_cbs = document.getElementsByClassName("tr-cb") - for (var i=0; i < td_cbs.length; i++) { - td_cb = td_cbs[i]; - td_cb.style.display = (TorrentsMod.enabled) ? "table-cell" : "none"; - } - var toggleText = this.dataset.toggleText; - this.dataset.toggleText = this.innerText; - this.innerText = toggleText; - }); - }, - // generate a unique id for a query - getId: function(){ - return this.unique_id++; - }, + // Init method + Create: function() { + var sh_btn = document.getElementById(TorrentsMod.show_hide_button); + var btn_actions = document.getElementsByClassName(this.btn_class_action) + var btn_submit = document.getElementsByClassName(this.btn_class_submit) + btn_submit[0].disabled = true; + for (var i=0; i < btn_actions.length; i++) { + btn_actions[i].disabled = true; + switch (btn_actions[i].id) { + case this.delete_btn: + btn_actions[i].addEventListener("click", this.Delete) + break; + case this.lock_delete_btn: + btn_actions[i].addEventListener("click", this.LockDelete) + break; + case this.edit_btn: + btn_actions[i].addEventListener("click", this.Edit) + break; + default: + break; + } + } + for (var i=0; i < this.checkboxes.length; i++) { + checkbox = this.checkboxes[i]; + checkbox.addEventListener("change", this.checkboxEventHandler) + } + sh_btn.addEventListener("click", function(e) { + var divActions = this.nextElementSibling; + if (divActions.style.display == "inline") { + TorrentsMod.enabled = false; + } else { + TorrentsMod.enabled = true; + } + divActions.style.display = (TorrentsMod.enabled) ? "inline" : "none"; + var td_cbs = document.getElementsByClassName("tr-cb") + for (var i=0; i < td_cbs.length; i++) { + td_cb = td_cbs[i]; + td_cb.style.display = (TorrentsMod.enabled) ? "table-cell" : "none"; + } + var toggleText = this.dataset.toggleText; + this.dataset.toggleText = this.innerText; + this.innerText = toggleText; + }); + }, + // generate a unique id for a query + getId: function(){ + return this.unique_id++; + }, - // UI Methods - selectAll: function(bool) { - var l = TorrentsMod.checkboxes.length; - for (var i = 0; i < l; i++) { - TorrentsMod.checkboxes[i].checked = bool; - TorrentsMod.checkboxEventHandlerFunc(TorrentsMod.checkboxes[i]); - } - }, - disableBtnActions: function() { - var btn_actions = document.getElementsByClassName(this.btn_class_action) - for (var i=0; i < btn_actions.length; i++) { - btn_actions[i].disabled = true; - } - }, - enableBtnActions: function() { - var btn_actions = document.getElementsByClassName(this.btn_class_action) - for (var i=0; i < btn_actions.length; i++) { - btn_actions[i].disabled = false; - } - }, - enableBtnSubmit: function() { - var btn_submit = document.getElementsByClassName(this.btn_class_submit) - btn_submit[0].disabled = false; - }, - enableApplyChangesBtn: function() { - var btn_apply_changes = document.getElementById("confirm_changes"); - btn_apply_changes.disabled=false; - }, - disableBtnSubmit: function() { - var btn_submit = document.getElementsByClassName(this.btn_class_submit) - btn_submit[0].disabled = true; - }, - disableApplyChangesBtn: function() { - var btn_apply_changes = document.getElementById("confirm_changes"); - btn_apply_changes.disabled=true; - }, - removeDivFromList: function(i) { - var queueAction = this.queued[i]; - var parentDiv = document.getElementById(queueAction.unique_id).parentNode; - parentDiv.removeChild(document.getElementById(queueAction.unique_id)); - }, - removeFromParent: function(el) { - var parentDiv = el.parentNode; - parentDiv.removeChild(el); - }, - generatingModal: function() { - listLength = this.queued.length; - var div = {"edit": "", "delete": ""}; - for (var i=0; i < listLength; i++) { - var listHTML = ""; - for(key in this.queued[i].selection) { - var selection = this.queued[i].selection[key]; - selection.key = i; - listHTML += Templates.Render("torrents."+this.queued[i].action+".item", selection); - } - this.queued[i].list = listHTML; - this.queued[i].key = i; - div[this.queued[i].action] += Templates.Render("torrents."+this.queued[i].action+".block", this.queued[i]); - } - this.progress_count = 0; - this.progress_max = listLength; - document.querySelector(".modal .edit_changes").innerHTML = div["edit"]; - document.querySelector(".modal .delete_changes").innerHTML = div["delete"]; - }, - toggleList: function(el) { - el.parentNode.nextSibling.style.display = (el.parentNode.nextSibling.style.display != "block") ? "block" : "none" - }, - addToLog: function(type, msg) { - var logDiv = document.querySelector(".modal .logs_mess"); - if (logDiv.style.display == "none") logDiv.style.display = "block" - logDiv.innerHTML += Templates.Render("torrents.logs."+type, msg); - }, - updateProgressBar: function() { - document.querySelector("#"+this.progress_bar_id).style.display = "block"; - var progress_green = document.querySelector("#"+this.progress_bar_id+" .progress-green"); - var perc = this.progress_count/this.progress_max*100; - progress_green.style.width=perc+"%"; - progress_green.innerText = this.progress_count+"/"+this.progress_max; - }, - resetModal: function() { - var logDiv = document.querySelector(".modal .logs_mess"); - logDiv.style.display = "none"; - document.querySelector("#"+this.progress_bar_id).style.display = "none"; - logDiv.innerHTML = ""; - document.querySelector(".modal .edit_changes").innerHTML = ""; - document.querySelector(".modal .delete_changes").innerHTML = ""; - this.enableApplyChangesBtn(); - }, - statusToClassName: function(status) { - var className = ["", "normal", "remake", "trusted", "aplus", ""] - return className[status]; - }, + // UI Methods + selectAll: function(bool) { + var l = TorrentsMod.checkboxes.length; + for (var i = 0; i < l; i++) { + TorrentsMod.checkboxes[i].checked = bool; + TorrentsMod.checkboxEventHandlerFunc(TorrentsMod.checkboxes[i]); + } + }, + disableBtnActions: function() { + var btn_actions = document.getElementsByClassName(this.btn_class_action) + for (var i=0; i < btn_actions.length; i++) { + btn_actions[i].disabled = true; + } + }, + enableBtnActions: function() { + var btn_actions = document.getElementsByClassName(this.btn_class_action) + for (var i=0; i < btn_actions.length; i++) { + btn_actions[i].disabled = false; + } + }, + enableBtnSubmit: function() { + var btn_submit = document.getElementsByClassName(this.btn_class_submit) + btn_submit[0].disabled = false; + }, + enableApplyChangesBtn: function() { + var btn_apply_changes = document.getElementById("confirm_changes"); + btn_apply_changes.disabled=false; + }, + disableBtnSubmit: function() { + var btn_submit = document.getElementsByClassName(this.btn_class_submit) + btn_submit[0].disabled = true; + }, + disableApplyChangesBtn: function() { + var btn_apply_changes = document.getElementById("confirm_changes"); + btn_apply_changes.disabled=true; + }, + removeDivFromList: function(i) { + var queueAction = this.queued[i]; + var parentDiv = document.getElementById(queueAction.unique_id).parentNode; + parentDiv.removeChild(document.getElementById(queueAction.unique_id)); + }, + removeFromParent: function(el) { + var parentDiv = el.parentNode; + parentDiv.removeChild(el); + }, + generatingModal: function() { + listLength = this.queued.length; + var div = {"edit": "", "delete": ""}; + for (var i=0; i < listLength; i++) { + var listHTML = ""; + for(key in this.queued[i].selection) { + var selection = this.queued[i].selection[key]; + selection.key = i; + listHTML += Templates.Render("torrents."+this.queued[i].action+".item", selection); + } + this.queued[i].list = listHTML; + this.queued[i].key = i; + div[this.queued[i].action] += Templates.Render("torrents."+this.queued[i].action+".block", this.queued[i]); + } + this.progress_count = 0; + this.progress_max = listLength; + document.querySelector(".modal .edit_changes").innerHTML = div["edit"]; + document.querySelector(".modal .delete_changes").innerHTML = div["delete"]; + }, + toggleList: function(el) { + el.parentNode.nextSibling.style.display = (el.parentNode.nextSibling.style.display != "block") ? "block" : "none" + }, + addToLog: function(type, msg) { + var logDiv = document.querySelector(".modal .logs_mess"); + if (logDiv.style.display == "none") logDiv.style.display = "block" + logDiv.innerHTML += Templates.Render("torrents.logs."+type, msg); + }, + updateProgressBar: function() { + document.querySelector("#"+this.progress_bar_id).style.display = "block"; + var progress_green = document.querySelector("#"+this.progress_bar_id+" .progress-green"); + var perc = this.progress_count/this.progress_max*100; + progress_green.style.width=perc+"%"; + progress_green.innerText = this.progress_count+"/"+this.progress_max; + }, + resetModal: function() { + var logDiv = document.querySelector(".modal .logs_mess"); + logDiv.style.display = "none"; + document.querySelector("#"+this.progress_bar_id).style.display = "none"; + logDiv.innerHTML = ""; + document.querySelector(".modal .edit_changes").innerHTML = ""; + document.querySelector(".modal .delete_changes").innerHTML = ""; + this.enableApplyChangesBtn(); + }, + statusToClassName: function(status) { + var className = ["", "normal", "remake", "trusted", "aplus", ""] + return className[status]; + }, - // Selection Management Methods - addToSelection: function (torrent) { - this.selected[torrent.id] = torrent; - }, - removeFromSelection: function(torrent) { - delete this.selected[torrent.id]; - for (t in this.selected) { - return - } - this.selected = []; - }, + // Selection Management Methods + addToSelection: function (torrent) { + this.selected[torrent.id] = torrent; + }, + removeFromSelection: function(torrent) { + delete this.selected[torrent.id]; + for (t in this.selected) { + return + } + this.selected = []; + }, - // Query Queue Management Methods - AddToQueue: function(QueueAction) { - QueueAction.unique_id = this.getId(); // used for DOM interaction - this.queued.push(QueueAction); - this.enableBtnSubmit() - }, - RemoveFromQueueAfterItems: function(i) { - for (t in this.queued[i].selection) { - this.RemoveItemFromQueue(i, t); - } - }, - RemoveFromQueue: function(i) { - this.progress_max = (this.progress_max - 1 >= 0) ? this.progress_max-1 : 0; - this.RemoveFromQueueAction(i) - return false; - }, - RemoveFromQueueAction: function(i) { - this.removeFromParent(document.getElementById("list_"+this.queued[i].unique_id)); - this.queued.splice(i, 1); - if (this.queued.length == 0) { - this.disableBtnSubmit(); - if (this.progress_max>0) { - this.disableApplyChangesBtn(); - } else { - Modal.CloseActive(); - } - } - }, - formatSelectionToQuery: function(selection) { - var format = ""; - for (s in selection) { - format += "&torrent_id="+selection[s].id - } - return (format != "") ? format.substr(1) : "" - }, - RemoveItemFromQueue: function(i, id) { - this.removeFromParent(document.getElementById("list_item_"+id)); - delete this.queued[i].selection[id]; - document.getElementById("torrent_cb_"+id).checked=false; - document.getElementById("torrent_"+id).style.display=""; - var test = 0; - for (t in this.queued[i].selection) { - test++ - break; - } - if (test == 0) this.RemoveFromQueue(i); - return false; - }, - newQueryAttempt: function(queryUrl, queryPost, callback) { - Query.Post(queryUrl, queryPost, function (response) { - if ((response.length == 0)||(!response.ok)) { // Query has failed - var errorMsg = response.errors.join("
"); - TorrentsMod.addToLog("error", errorMsg); - TorrentsMod.error_count++; - if (TorrentsMod.error_count < 2) { - TorrentsMod.addToLog("success", T.r("try_new_attempt")); - TorrentsMod.newQueryAttempt(queryUrl, queryPost, callback) - } else { - TorrentsMod.addToLog("error", T.r("query_is_broken", queryUrl, queryPost)); - if (callback != undefined) { - TorrentsMod.addToLog("error", "Passing to the next query..."); - callback(response) // So we can query only one item - } - } - } else { - var succesMsg = (response.infos != null) ? response.infos.join("
") : T.r("query_executed_success"); - TorrentsMod.addToLog("success", succesMsg) - if (callback != undefined) callback(response) // So we can query only one item - } - }); - }, - QueryQueue: function(i, callback) { - if (this.queued.length > 0) { - var QueueAction = this.queued[i]; // we clone it so we can delete it safely - this.RemoveFromQueueAction(i); - var queryPost = ""; - var queryUrl = "/mod/api/torrents"; - QueueAction.queryPost = TorrentsMod.formatSelectionToQuery(QueueAction.selection) - if (QueueAction.action == "delete") { - queryPost="action="+QueueAction.action; - queryPost+="&withreport="+QueueAction.withReport; - queryPost += "&status="+((QueueAction.status != undefined) ? QueueAction.status : ""); - queryPost += "&"+QueueAction.queryPost; // we add torrent id - } else if (QueueAction.action == "edit") { - queryPost="action=multiple"; - queryPost += "&status="+QueueAction.status; - queryPost += "&owner="+QueueAction.owner; - queryPost += "&category="+QueueAction.category; - queryPost += "&"+QueueAction.queryPost; // we add torrent id - } - TorrentsMod.newQueryAttempt(queryUrl, queryPost, callback) + // Query Queue Management Methods + AddToQueue: function(QueueAction) { + QueueAction.unique_id = this.getId(); // used for DOM interaction + this.queued.push(QueueAction); + this.enableBtnSubmit() + }, + RemoveFromQueueAfterItems: function(i) { + for (t in this.queued[i].selection) { + this.RemoveItemFromQueue(i, t); + } + }, + RemoveFromQueue: function(i) { + this.progress_max = (this.progress_max - 1 >= 0) ? this.progress_max-1 : 0; + this.RemoveFromQueueAction(i) + return false; + }, + RemoveFromQueueAction: function(i) { + this.removeFromParent(document.getElementById("list_"+this.queued[i].unique_id)); + this.queued.splice(i, 1); + if (this.queued.length == 0) { + this.disableBtnSubmit(); + if (this.progress_max>0) { + this.disableApplyChangesBtn(); + } else { + Modal.CloseActive(); + } + } + }, + formatSelectionToQuery: function(selection) { + var format = ""; + for (s in selection) { + format += "&torrent_id="+selection[s].id + } + return (format != "") ? format.substr(1) : "" + }, + RemoveItemFromQueue: function(i, id) { + this.removeFromParent(document.getElementById("list_item_"+id)); + delete this.queued[i].selection[id]; + document.getElementById("torrent_cb_"+id).checked=false; + document.getElementById("torrent_"+id).style.display=""; + var test = 0; + for (t in this.queued[i].selection) { + test++ + break; + } + if (test == 0) this.RemoveFromQueue(i); + return false; + }, + newQueryAttempt: function(queryUrl, queryPost, callback) { + Query.Post(queryUrl, queryPost, function (response) { + if ((response.length == 0)||(!response.ok)) { // Query has failed + var errorMsg = response.errors.join("
"); + TorrentsMod.addToLog("error", errorMsg); + TorrentsMod.error_count++; + if (TorrentsMod.error_count < 2) { + TorrentsMod.addToLog("success", T.r("try_new_attempt")); + TorrentsMod.newQueryAttempt(queryUrl, queryPost, callback) } else { - TorrentsMod.addToLog("success", T.r("all_operations_done")) - if (TorrentsMod.refreshTimeout > 0) { - TorrentsMod.addToLog("success", T.r("refreshing_in", TorrentsMod.refreshTimeout/1000)) - setTimeout(function(){ - window.location.reload() - }, TorrentsMod.refreshTimeout); - } + TorrentsMod.addToLog("error", T.r("query_is_broken", queryUrl, queryPost)); + if (callback != undefined) { + TorrentsMod.addToLog("error", "Passing to the next query..."); + callback(response) // So we can query only one item + } } - }, - QueryLoop: function() { - if (TorrentsMod.progress_count <= TorrentsMod.progress_max) { - TorrentsMod.updateProgressBar() - TorrentsMod.progress_count++; - if (TorrentsMod.progress_count > TorrentsMod.progress_max) TorrentsMod.progress_count = TorrentsMod.progress_max; - TorrentsMod.QueryQueue(0, TorrentsMod.QueryLoop); - } - }, + } else { + var succesMsg = (response.infos != null) ? response.infos.join("
") : T.r("query_executed_success"); + TorrentsMod.addToLog("success", succesMsg) + if (callback != undefined) callback(response) // So we can query only one item + } + }); + }, + QueryQueue: function(i, callback) { + if (this.queued.length > 0) { + var QueueAction = this.queued[i]; // we clone it so we can delete it safely + this.RemoveFromQueueAction(i); + var queryPost = ""; + var queryUrl = "/mod/api/torrents"; + QueueAction.queryPost = TorrentsMod.formatSelectionToQuery(QueueAction.selection) + if (QueueAction.action == "delete") { + queryPost="action="+QueueAction.action; + queryPost+="&withreport="+QueueAction.withReport; + queryPost += "&status="+((QueueAction.status != undefined) ? QueueAction.status : ""); + queryPost += "&"+QueueAction.queryPost; // we add torrent id + } else if (QueueAction.action == "edit") { + queryPost="action=multiple"; + queryPost += "&status="+QueueAction.status; + queryPost += "&owner="+QueueAction.owner; + queryPost += "&category="+QueueAction.category; + queryPost += "&"+QueueAction.queryPost; // we add torrent id + } + TorrentsMod.newQueryAttempt(queryUrl, queryPost, callback) + } else { + TorrentsMod.addToLog("success", T.r("all_operations_done")) + if (TorrentsMod.refreshTimeout > 0) { + TorrentsMod.addToLog("success", T.r("refreshing_in", TorrentsMod.refreshTimeout/1000)) + setTimeout(function(){ + window.location.reload() + }, TorrentsMod.refreshTimeout); + } + } + }, + QueryLoop: function() { + if (TorrentsMod.progress_count <= TorrentsMod.progress_max) { + TorrentsMod.updateProgressBar() + TorrentsMod.progress_count++; + if (TorrentsMod.progress_count > TorrentsMod.progress_max) TorrentsMod.progress_count = TorrentsMod.progress_max; + TorrentsMod.QueryQueue(0, TorrentsMod.QueryLoop); + } + }, - // Event Handlers - checkboxEventHandler: function(e) { - var el = e.target; - TorrentsMod.checkboxEventHandlerFunc(el); - }, - checkboxEventHandlerFunc: function(el) { - var name = el.dataset.name; - var id = el.value; - if (el.checked) TorrentsMod.addToSelection({name:name, id:id}); - else TorrentsMod.removeFromSelection({name:name, id:id}); - if (TorrentsMod.selected.length > 0) TorrentsMod.enableBtnActions(); - else TorrentsMod.disableBtnActions(); - }, + // Event Handlers + checkboxEventHandler: function(e) { + var el = e.target; + TorrentsMod.checkboxEventHandlerFunc(el); + }, + checkboxEventHandlerFunc: function(el) { + var name = el.dataset.name; + var id = el.value; + if (el.checked) TorrentsMod.addToSelection({name:name, id:id}); + else TorrentsMod.removeFromSelection({name:name, id:id}); + if (TorrentsMod.selected.length > 0) TorrentsMod.enableBtnActions(); + else TorrentsMod.disableBtnActions(); + }, - // Action Methods - DeleteHandler: function(locked) { - var withReport = confirm(T.r("delete_reports_with_torrents")) - var selection = TorrentsMod.selected; - if (locked) - TorrentsMod.AddToQueue({ action: "delete", - withReport: withReport, - selection: selection, - queryPost: "", - infos: T.r("with_lock")+ ((withReport) ? T.r("and_reports") : ""), - status: "5" }); - else TorrentsMod.AddToQueue({ - action: "delete", - withReport: withReport, - selection: selection, - infos: (withReport) ? T.r("with_reports") : "", - queryPost: ""}); - for (i in selection) document.getElementById("torrent_"+i).style.display="none"; - TorrentsMod.selected = [] - TorrentsMod.disableBtnActions(); + // Action Methods + DeleteHandler: function(locked) { + var withReport = confirm(T.r("delete_reports_with_torrents")) + var selection = TorrentsMod.selected; + if (locked) + TorrentsMod.AddToQueue({ action: "delete", + withReport: withReport, + selection: selection, + queryPost: "", + infos: T.r("with_lock")+ ((withReport) ? T.r("and_reports") : ""), + status: "5" }); + else TorrentsMod.AddToQueue({ + action: "delete", + withReport: withReport, + selection: selection, + infos: (withReport) ? T.r("with_reports") : "", + queryPost: ""}); + for (i in selection) document.getElementById("torrent_"+i).style.display="none"; + TorrentsMod.selected = [] + TorrentsMod.disableBtnActions(); }, Delete: function(e) { - TorrentsMod.DeleteHandler(false); - e.preventDefault(); + TorrentsMod.DeleteHandler(false); + e.preventDefault(); }, LockDelete: function(e) { - TorrentsMod.DeleteHandler(true); - e.preventDefault(); + TorrentsMod.DeleteHandler(true); + e.preventDefault(); }, Edit: function(e) { - var selection = TorrentsMod.selected; - var status = document.querySelector(".modtools *[name='"+TorrentsMod.status_input_name+"']").value; - var owner_id = document.querySelector(".modtools *[name='"+TorrentsMod.owner_input_name+"']").value; - var category = document.querySelector(".modtools *[name='"+TorrentsMod.category_input_name+"']").value; - var infos = ""; - infos += (status != "") ? T.r("status_js", status) : ""; - infos += (owner_id != "") ? T.r("owner_id_js", owner_id) : ""; - infos += (category != "") ? T.r("category_js", category) : ""; - TorrentsMod.AddToQueue({ - action: "edit", - selection: selection, - queryPost: "", // We don't format now, we wait until the query is sent - infos: (infos != "" ) ? T.r("with_st", infos) : T.r("no_changes"), - status: status, - category: category, - owner: owner_id }); + var selection = TorrentsMod.selected; + var status = document.querySelector(".modtools *[name='"+TorrentsMod.status_input_name+"']").value; + var owner_id = document.querySelector(".modtools *[name='"+TorrentsMod.owner_input_name+"']").value; + var category = document.querySelector(".modtools *[name='"+TorrentsMod.category_input_name+"']").value; + var infos = ""; + infos += (status != "") ? T.r("status_js", status) : ""; + infos += (owner_id != "") ? T.r("owner_id_js", owner_id) : ""; + infos += (category != "") ? T.r("category_js", category) : ""; + TorrentsMod.AddToQueue({ + action: "edit", + selection: selection, + queryPost: "", // We don't format now, we wait until the query is sent + infos: (infos != "" ) ? T.r("with_st", infos) : T.r("no_changes"), + status: status, + category: category, + owner: owner_id }); if (status != "") { - for (i in selection) document.getElementById("torrent_"+i).className="torrent-info "+TorrentsMod.statusToClassName(status); + for (i in selection) document.getElementById("torrent_"+i).className="torrent-info "+TorrentsMod.statusToClassName(status); } TorrentsMod.selected = [] TorrentsMod.disableBtnActions(); e.preventDefault(); - }, - ApplyChanges: function() { + }, + ApplyChanges: function() { this.pause = false; this.QueryLoop(); - } -}; + } + }; -// Load torrentMods when DOM is ready -document.addEventListener("DOMContentLoaded", function() { - TorrentsMod.checkboxes = document.querySelectorAll("input[name='torrent_id']"); - TorrentsMod.Create(); -}); -// @license-end + // Load torrentMods when DOM is ready + document.addEventListener("DOMContentLoaded", function() { + TorrentsMod.checkboxes = document.querySelectorAll("input[name='torrent_id']"); + TorrentsMod.Create(); + }); + // @license-end diff --git a/public/js/translation.js b/public/js/translation.js index ce0f277a..06b111c6 100644 --- a/public/js/translation.js +++ b/public/js/translation.js @@ -1,34 +1,34 @@ // @source https://github.com/NyaaPantsu/nyaa/tree/dev/public/js // @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt Expat function Translations() { - var translations = {}; - this.Add = function(tr, val) { - trans = {} - if (val != undefined) { - trans[tr] = val; - } else { - trans = tr - } - Object.assign(translations, trans); - }; - this.r = function(string, ...args) { - if ((string != undefined) && (translations[string] != undefined)) { - if (args != undefined) { - return this.format(translations[string], ...args); - } - return translations[string]; - } - console.error("No translation string for %s! Please check!", string); - return ""; - }; - this.format = function(format, ...args) { - return format.replace(/{(\d+)}/g, function(match, number) { - return typeof args[number] != 'undefined' - ? args[number] - : match - ; - }); - }; + var translations = {}; + this.Add = function(tr, val) { + trans = {} + if (val != undefined) { + trans[tr] = val; + } else { + trans = tr + } + Object.assign(translations, trans); + }; + this.r = function(string, ...args) { + if ((string != undefined) && (translations[string] != undefined)) { + if (args != undefined) { + return this.format(translations[string], ...args); + } + return translations[string]; + } + console.error("No translation string for %s! Please check!", string); + return ""; + }; + this.format = function(format, ...args) { + return format.replace(/{(\d+)}/g, function(match, number) { + return typeof args[number] != 'undefined' + ? args[number] + : match + ; + }); + }; } var T = new Translations();