mirror of https://github.com/kiwix/libkiwix.git
added use of lang and category api for select boxes on welcome page
This commit is contained in:
parent
fe93035a4c
commit
5e8f3a5505
|
@ -24,8 +24,6 @@ skin/download.png
|
|||
skin/hash.png
|
||||
skin/search-icon.svg
|
||||
skin/taskbar.js
|
||||
skin/langList.js
|
||||
skin/categoryList.js
|
||||
skin/iso6391To3.js
|
||||
skin/isotope.pkgd.min.js
|
||||
skin/index.js
|
||||
|
|
|
@ -1,19 +0,0 @@
|
|||
// eslint-disable-next-line no-unused-vars
|
||||
const categoryList = {
|
||||
"other": "Other",
|
||||
"gutenberg": "Gutenberg",
|
||||
"mooc": "Mooc",
|
||||
"phet": "Phet",
|
||||
"psiram": "Psiram",
|
||||
"stack_exchange": "Stack Exchange",
|
||||
"ted": "Ted",
|
||||
"vikidia": "Vikidia",
|
||||
"wikibooks": "Wikibooks",
|
||||
"wikinews": "Wikinews",
|
||||
"wikipedia": "Wikipedia",
|
||||
"wikiquote": "Wikiquote",
|
||||
"wikisource": "Wikisource",
|
||||
"wikiversity": "Wikiversity",
|
||||
"wikivoyage": "Wikivoyage",
|
||||
"wiktionary": "Wiktionary"
|
||||
}
|
|
@ -51,6 +51,11 @@
|
|||
fileSize /= (1000 ** quotient);
|
||||
return `${+fileSize.toFixed(2)} ${units[quotient]}`;
|
||||
};
|
||||
|
||||
const humanFriendlyTitle = (title) => {
|
||||
title = title.replace(/_/g, ' ');
|
||||
return htmlEncode(title[0].toUpperCase() + title.slice(1));
|
||||
}
|
||||
|
||||
function htmlEncode(str) {
|
||||
return str.replace(/[\u00A0-\u9999<>\&]/gim, (i) => `&#${i.charCodeAt(0)};`);
|
||||
|
@ -213,11 +218,17 @@
|
|||
});
|
||||
}
|
||||
|
||||
async function loadAndDisplayOptions(nodeQuery, query) {
|
||||
// currently taking an object in place of query, will replace it with query while fetching data from backend later on.
|
||||
document.querySelector(nodeQuery).innerHTML += Object.keys(query)
|
||||
.map((option) => {return `<option value='${option}'>${htmlEncode(query[option])}</option>`})
|
||||
.join('');
|
||||
async function loadAndDisplayOptions(nodeQuery, query, valueEntryNode) {
|
||||
await fetch(query).then(async (resp) => {
|
||||
const data = new window.DOMParser().parseFromString(await resp.text(), 'application/xml');
|
||||
let optionStr = '';
|
||||
data.querySelectorAll('entry').forEach(entry => {
|
||||
const title = getInnerHtml(entry, 'title');
|
||||
const value = getInnerHtml(entry, valueEntryNode);
|
||||
optionStr += `<option value='${value}'>${humanFriendlyTitle(title)}</option>`;
|
||||
});
|
||||
document.querySelector(nodeQuery).innerHTML += optionStr;
|
||||
});
|
||||
}
|
||||
|
||||
function checkAndInjectEmptyMessage() {
|
||||
|
@ -367,15 +378,20 @@
|
|||
fadeOutDiv = document.getElementById('fadeOut');
|
||||
loader = document.querySelector('.loader');
|
||||
await loadAndDisplayBooks();
|
||||
await loadAndDisplayOptions('#languageFilter', langList);
|
||||
await loadAndDisplayOptions('#categoryFilter', categoryList);
|
||||
await loadAndDisplayOptions('#languageFilter', `${root}/catalog/v2/languages`, 'language');
|
||||
await loadAndDisplayOptions('#categoryFilter', `${root}/catalog/v2/categories`, 'title');
|
||||
document.querySelectorAll('.filter').forEach(filter => {
|
||||
filter.addEventListener('change', () => {resetAndFilter(filter.name, filter.value)});
|
||||
});
|
||||
if (filters) {
|
||||
window.history.pushState({}, null, `${window.location.href.split('?')[0]}?${params.toString()}`);
|
||||
}
|
||||
params.forEach((value, key) => {document.getElementsByName(key)[0].value = value});
|
||||
params.forEach((value, key) => {
|
||||
const selectBox = document.getElementsByName(key)[0];
|
||||
if (selectBox) {
|
||||
selectBox.value = value
|
||||
}
|
||||
});
|
||||
document.getElementById('kiwixSearchForm').onsubmit = (event) => {event.preventDefault()};
|
||||
if (!window.location.search) {
|
||||
const browserLang = navigator.language.split('-')[0];
|
||||
|
|
|
@ -1,124 +0,0 @@
|
|||
// eslint-disable-next-line no-unused-vars
|
||||
const langList = {
|
||||
"aar": "Afaraf",
|
||||
"afr": "Afrikaans",
|
||||
"aka": "Akan",
|
||||
"amh": "አማርኛ",
|
||||
"ara": "اللغة العربية",
|
||||
"asm": "অসমীয়া",
|
||||
"aze": "azərbaycan dili",
|
||||
"bak": "башҡорт теле",
|
||||
"bel": "беларуская мова",
|
||||
"bul": "български език",
|
||||
"bam": "bamanankan",
|
||||
"ben": "বাংলা",
|
||||
"bod": "བོད་ཡིག",
|
||||
"bre": "brezhoneg",
|
||||
"bos": "bosanski jezik",
|
||||
"cat": "Català",
|
||||
"che": "нохчийн мотт",
|
||||
"cos": "corsu",
|
||||
"ces": "čeština",
|
||||
"chv": "чӑваш чӗлхи",
|
||||
"cym": "Cymraeg",
|
||||
"dan": "dansk",
|
||||
"deu": "Deutsch",
|
||||
"dzo": "རྫོང་ཁ",
|
||||
"ewe": "Eʋegbe",
|
||||
"eng": "English",
|
||||
"spa": "Español",
|
||||
"est": "eesti",
|
||||
"eus": "euskara",
|
||||
"fas": "فارسی",
|
||||
"ful": "Fulfulde",
|
||||
"fin": "suomi",
|
||||
"fao": "føroyskt",
|
||||
"fra": "Français",
|
||||
"gle": "Gaeilge",
|
||||
"glg": "galego",
|
||||
"grn": "Avañe'ẽ",
|
||||
"guj": "ગુજરાતી",
|
||||
"glv": "Gaelg",
|
||||
"hau": "هَوُسَ",
|
||||
"heb": "עברית",
|
||||
"hin": "हिन्दी",
|
||||
"hrv": "hrvatski jezik",
|
||||
"hun": "magyar",
|
||||
"hye": "Հայերեն",
|
||||
"ind": "Bahasa Indonesia",
|
||||
"ibo": "Asụsụ Igbo",
|
||||
"isl": "Íslenska",
|
||||
"ita": "Italiano",
|
||||
"iku": "ᐃᓄᒃᑎᑐᑦ",
|
||||
"jpn": "日本語",
|
||||
"jav": "basa Jawa",
|
||||
"kat": "ქართული",
|
||||
"kik": "Gĩkũyũ",
|
||||
"kaz": "қазақ тілі",
|
||||
"khm": "ខេមរភាសា",
|
||||
"kan": "ಕನ್ನಡ",
|
||||
"kor": "한국어",
|
||||
"kas": "कश्मीरी",
|
||||
"kur": "Kurdî",
|
||||
"cor": "Kernewek",
|
||||
"kir": "Кыргызча",
|
||||
"ltz": "Lëtzebuergesch",
|
||||
"lug": "Luganda",
|
||||
"lin": "Lingála",
|
||||
"lao": "ພາສາ",
|
||||
"lit": "lietuvių kalba",
|
||||
"lav": "latviešu valoda",
|
||||
"mlg": "fiteny malagasy",
|
||||
"mri": "te reo Māori",
|
||||
"mkd": "македонски јазик",
|
||||
"mal": "മലയാളം",
|
||||
"mon": "Монгол хэл",
|
||||
"mar": "मराठी",
|
||||
"mlt": "Malti",
|
||||
"mya": "ဗမာစာ",
|
||||
"nld": "Nederlands",
|
||||
"nya": "chiCheŵa",
|
||||
"orm": "Afaan Oromoo",
|
||||
"pol": "język polski",
|
||||
"por": "Português",
|
||||
"que": "Runa Simi",
|
||||
"roh": "rumantsch grischun",
|
||||
"run": "Ikirundi",
|
||||
"ron": "Română",
|
||||
"rus": "Русский",
|
||||
"kin": "Ikinyarwanda",
|
||||
"san": "संस्कृतम्",
|
||||
"snd": "सिन्धी",
|
||||
"sag": "yângâ tî sängö",
|
||||
"sin": "සිංහල",
|
||||
"slk": "slovenčina",
|
||||
"slv": "slovenski jezik",
|
||||
"sna": "chiShona",
|
||||
"som": "Soomaaliga",
|
||||
"sqi": "Shqip",
|
||||
"srp": "српски језик",
|
||||
"ssw": "SiSwati",
|
||||
"swe": "svenska",
|
||||
"tam": "தமிழ்",
|
||||
"tel": "తెలుగు",
|
||||
"tgk": "тоҷикӣ",
|
||||
"tha": "ไทย",
|
||||
"tir": "ትግርኛ",
|
||||
"tuk": "Türkmen",
|
||||
"tsn": "Setswana",
|
||||
"tur": "Türkçe",
|
||||
"tso": "Xitsonga",
|
||||
"tat": "татар теле",
|
||||
"uig": "ئۇيغۇرچە",
|
||||
"ukr": "Українська",
|
||||
"urd": "اردو",
|
||||
"uzb": "Ўзбек",
|
||||
"ven": "Tshivenḓa",
|
||||
"vie": "Tiếng Việt",
|
||||
"wln": "walon",
|
||||
"wol": "Wollof",
|
||||
"xho": "isiXhosa",
|
||||
"yor": "Yorùbá",
|
||||
"zho": "中文",
|
||||
"zul": "isiZulu"
|
||||
}
|
|
@ -1,7 +1,8 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<feed xmlns="http://www.w3.org/2005/Atom"
|
||||
xmlns:dc="http://purl.org/dc/terms/"
|
||||
xmlns:opds="https://specs.opds.io/opds-1.2">
|
||||
xmlns:opds="https://specs.opds.io/opds-1.2"
|
||||
xmlns:thr="http://purl.org/syndication/thread/1.0">
|
||||
<id>{{feed_id}}</id>
|
||||
<link rel="self"
|
||||
href="{{endpoint_root}}/languages"
|
||||
|
|
|
@ -39,8 +39,6 @@
|
|||
}
|
||||
</style>
|
||||
<script src="{{root}}/skin/isotope.pkgd.min.js" defer></script>
|
||||
<script src="{{root}}/skin/categoryList.js"></script>
|
||||
<script src="{{root}}/skin/langList.js"></script>
|
||||
<script src="{{root}}/skin/iso6391To3.js"></script>
|
||||
<script type="text/javascript" src="{{root}}/skin/index.js" defer></script>
|
||||
</head>
|
||||
|
|
|
@ -1028,7 +1028,8 @@ TEST_F(LibraryServerTest, catalog_v2_languages)
|
|||
const char expected_output[] = R"(<?xml version="1.0" encoding="UTF-8"?>
|
||||
<feed xmlns="http://www.w3.org/2005/Atom"
|
||||
xmlns:dc="http://purl.org/dc/terms/"
|
||||
xmlns:opds="https://specs.opds.io/opds-1.2">
|
||||
xmlns:opds="https://specs.opds.io/opds-1.2"
|
||||
xmlns:thr="http://purl.org/syndication/thread/1.0">
|
||||
<id>12345678-90ab-cdef-1234-567890abcdef</id>
|
||||
<link rel="self"
|
||||
href="/catalog/v2/languages"
|
||||
|
|
Loading…
Reference in New Issue