From c21c42cb6584bef6ec014325c90fc011a6eeeab0 Mon Sep 17 00:00:00 2001 From: Jaifroid Date: Mon, 26 Jul 2021 11:17:00 +0100 Subject: [PATCH] Close but with errors on TED and others Former-commit-id: 6cf8190e0f1260e5a9caf4a5547cdf39ac210d4c [formerly f7424147328cb61f0236df69e9b8c3cffacae3f2] [formerly 558abbbaf21140d596d0ac93ca96237120360b06] [formerly fbb54fa7e385a1bb9caf1834efd0f5375d381d06 [formerly 3340c539f663cf50b10ac10e45555a662d77dc4d [formerly a667a252db041875cbaf121ff6998a5a4e0870c4]]] Former-commit-id: 3411bc919e4bfa9673c74c4c4e22b8dbc68ec997 [formerly 9a864041d23080e329e61b065775fd55cbc47ff9 [formerly 7488cd149539f0477da27ca060b85f69d54813e2]] Former-commit-id: 4d1dd1021ef718adf1f91f94fda4c6a0a318c647 [formerly 5423c07a04b36d959d1b9fd959ad8058a6c9f85a] Former-commit-id: ee0518d24e1a92c5a9571fce44937b7991d49d97 --- www/css/app.css | 4 +++ www/js/lib/kiwixServe.js | 57 ++++++++++++++++++++++++++-------------- 2 files changed, 42 insertions(+), 19 deletions(-) diff --git a/www/css/app.css b/www/css/app.css index 012407f3..404ff1db 100644 --- a/www/css/app.css +++ b/www/css/app.css @@ -415,6 +415,10 @@ pre { margin-bottom: 15% !important; } +#dl-panel-body::before, #dl-panel-body::after { + content: '' !important; +} + /*********************************/ /******* Custom checkboxes *******/ /*********************************/ diff --git a/www/js/lib/kiwixServe.js b/www/js/lib/kiwixServe.js index aac49125..5c27a5b1 100644 --- a/www/js/lib/kiwixServe.js +++ b/www/js/lib/kiwixServe.js @@ -208,6 +208,7 @@ define([], function () { pms: 'Piemontèis (Piedmontese)', ps: 'پښتو (Pashto)', pt: 'Português (Portuguese)', + ptbr: 'Português brasileiro (Brazilian Portuguese)', qu: 'Runa Simi (Quechua)', rm: 'Rumantsch (Raeto Romance)', rmy: 'Romani / रोमानी (Romani)', @@ -549,11 +550,17 @@ define([], function () { } dropdownDate += '\r\n'; } + //Add language, subject and date spans to doc + if (/^(?:[^._]+\.stack(?:exchange|overflow)|askubuntu|stackapps|stackoverflow|superuser|serverfault)/mi.test(doc)) { + doc = doc.replace(/^([^>\n\r]+>(?:.+(stackoverflow)|([^.\n\r]+))\.([^_\n\r]+)_([^_\n\r]+)_.*?(\d[\d-]+)\.zi[mp].+)$[\n\r]*/img, '$1
'); + } else { + doc = doc.replace(/^([^_\n\r]+_([^_\n\r]+)_((?:[^_]|_(?!maxi|mini|nopic|\d\d\d\d))+)_.*?(\d[\d-]+)\.zi[mp].+)$[\n\r]*/img, '$1
'); + } + // Normalize languages with a - (from Stackexchange) + doc = doc.replace(/(lang="\w+)-(\w+")/, '$1$2'); doc = dropdownDate ? doc.replace(/<\/h3>/i, '' + (dropdownLang || dropdownSubj ? '' : '\r\n
\r\n') + '
Date:  ' + dropdownDate + '
\r\n
\r\n') : doc; doc = dropdownSubj ? doc.replace(/<\/h3>/i, '' + (dropdownLang ? '' : '\r\n
\r\n') + '
Subject:  ' + dropdownSubj + '
\r\n' + (dropdownDate ? '' : '
\r\n')) : doc; doc = dropdownLang ? doc.replace(/<\/h3>/i, '\r\n
\r\n
Language:  ' + dropdownLang + '
\r\n' + (dropdownSubj || dropdownDate ? '' : '
\r\n')) : doc; - //Add language and date spans to doc - doc = doc.replace(/^([^_\n\r]+_([^_\n\r]+)_([^_\n\r]+)_.*?(\d[\d-]+)\.zi[mp].+)$[\n\r]*/img, '$1
'); } downloadLinks.innerHTML = doc; var langSel = document.getElementById('langs'); @@ -572,7 +579,7 @@ define([], function () { if (subjSel) subjSel.value = subj || 'All'; if (dateSel) dateSel.value = kiwixDate || 'All'; } - if (typeof langArray !== "undefined") { + if (langArray && langSel) { //Set up event listener for language selector langSel.addEventListener("change", function () { var dateID = dateSel ? dateSel.options[dateSel.selectedIndex].value : ''; @@ -604,7 +611,8 @@ define([], function () { var subjList = subjectArray.join('\r\n'); subjList = subjList.replace(/^(.*)[\r\n]*/mg, function (p0, p1) { // DEV: innerText doesn't include hidden items - if (p1 !== 'All' && !~langPanel.innerText.indexOf('_' + p1 + '_')) return ''; + var rgxSubject = new RegExp('_?' + p1 + '[._]', 'i'); + if (p1 !== 'All' && !rgxSubject.test(langPanel.innerText)) return ''; return ''; }); subjSel.innerHTML = subjList; @@ -618,7 +626,7 @@ define([], function () { } }); } - if (typeof subjectArray !== "undefined") { + if (subjectArray && subjSel) { //Set up event listener for subject selector subjSel.addEventListener("change", function () { var langID = langSel ? langSel.options[langSel.selectedIndex].value : ''; @@ -636,9 +644,11 @@ define([], function () { // Prune the language list if (langID === 'All') { var langList = langArray.join('\r\n'); + // We need to normalize language codes in langPanel (for Stackexchange) + // DEV: innerText doesn't include hidden items + var langTestPanel = langPanel.innerText.replace(/(_\w+)-(\w+_)/, '$1$2'); langList = langList.replace(/^(.*)[\r\n]*/mg, function (p0, p1) { - // DEV: innerText doesn't include hidden items - if (p1 !== 'All' && !~langPanel.innerText.indexOf('_' + p1 + '_')) return ''; + if (p1 !== 'All' && !~langTestPanel.indexOf('_' + p1 + '_')) return ''; return ''; }); langSel.innerHTML = langList; @@ -662,7 +672,7 @@ define([], function () { } }); } - if (typeof dateArray !== "undefined") { + if (dateArray && dateSel) { //Set up event listener for date selector dateSel.addEventListener("change", function () { var langID = langSel ? langSel.options[langSel.selectedIndex].value : ''; @@ -680,9 +690,11 @@ define([], function () { // Prune the language list if (langID === 'All') { var langList = langArray.join('\r\n'); + // We need to normalize language codes in langPanel (for Stackexchange) + // DEV: innerText doesn't include hidden items + var langTestPanel = langPanel.innerText.replace(/(_\w+)-(\w+_)/, '$1$2'); langList = langList.replace(/^(.*)[\r\n]*/mg, function (p0, p1) { - // DEV: innerText doesn't include hidden items - if (p1 !== 'All' && !~langPanel.innerText.indexOf('_' + p1 + '_')) return ''; + if (p1 !== 'All' && !~langTestPanel.indexOf('_' + p1 + '_')) return ''; return ''; }); langSel.innerHTML = langList; @@ -692,7 +704,8 @@ define([], function () { var subjList = subjectArray.join('\r\n'); subjList = subjList.replace(/^(.*)[\r\n]*/mg, function (p0, p1) { // DEV: innerText doesn't include hidden items - if (p1 !== 'All' && !~langPanel.innerText.indexOf('_' + p1 + '_')) return ''; + var rgxSubject = new RegExp('_?' + p1 + '[._]', 'i'); + if (p1 !== 'All' && !rgxSubject.test(langPanel.innerText)) return ''; return ''; }); subjSel.innerHTML = subjList; @@ -707,7 +720,7 @@ define([], function () { }); } var links = downloadLinks.getElementsByTagName("a"); - for (var i = 0; i < links.length; i++) { + for (i = 0; i < links.length; i++) { //Store the href - seems it's not useful? //links[i].setAttribute("data-kiwix-dl", links[i].href); links[i].href = "#"; @@ -737,11 +750,11 @@ define([], function () { // Standardize the document for array extraction function getStandardizedDoc(fromDoc) { //Add back any missing carriage returns - var std = fromDoc.replace(/<\/span>