Main Page: Difference between revisions
Load all people pages in main page slider |
Fix remaining broken arrow characters on main page |
||
| (4 intermediate revisions by 2 users not shown) | |||
| Line 1,012: | Line 1,012: | ||
<span class="vu-explore-description">Biographies recorded across the wiki.</span> | <span class="vu-explore-description">Biographies recorded across the wiki.</span> | ||
</span> | </span> | ||
<span class="vu-explore-arrow"> | <span class="vu-explore-arrow">></span> | ||
</a> | </a> | ||
| Line 1,021: | Line 1,021: | ||
<span class="vu-explore-description">Places documented throughout the history.</span> | <span class="vu-explore-description">Places documented throughout the history.</span> | ||
</span> | </span> | ||
<span class="vu-explore-arrow"> | <span class="vu-explore-arrow">></span> | ||
</a> | </a> | ||
| Line 1,030: | Line 1,030: | ||
<span class="vu-explore-description">Family lines and their members.</span> | <span class="vu-explore-description">Family lines and their members.</span> | ||
</span> | </span> | ||
<span class="vu-explore-arrow"> | <span class="vu-explore-arrow">></span> | ||
</a> | </a> | ||
| Line 1,039: | Line 1,039: | ||
<span class="vu-explore-description">Institutions and organized groups.</span> | <span class="vu-explore-description">Institutions and organized groups.</span> | ||
</span> | </span> | ||
<span class="vu-explore-arrow"> | <span class="vu-explore-arrow">></span> | ||
</a> | </a> | ||
| Line 1,048: | Line 1,048: | ||
<span class="vu-explore-description">Events recorded throughout the history.</span> | <span class="vu-explore-description">Events recorded throughout the history.</span> | ||
</span> | </span> | ||
<span class="vu-explore-arrow"> | <span class="vu-explore-arrow">></span> | ||
</a> | </a> | ||
| Line 1,057: | Line 1,057: | ||
<span class="vu-explore-description">The historical periods used by the wiki.</span> | <span class="vu-explore-description">The historical periods used by the wiki.</span> | ||
</span> | </span> | ||
<span class="vu-explore-arrow"> | <span class="vu-explore-arrow">></span> | ||
</a> | </a> | ||
</nav> | </nav> | ||
| Line 1,074: | Line 1,074: | ||
<h2> | <h2> | ||
<a data-wiki-title="Reichsministerium für Bergbau und Rohstoffe" href="/wiki/Reichsministerium_f%C3%BCr_Bergbau_und_Rohstoffe"> | <a data-wiki-title="Reichsministerium für Bergbau und Rohstoffe" href="/wiki/Reichsministerium_f%C3%BCr_Bergbau_und_Rohstoffe"> | ||
Reichsministerium | Reichsministerium für Bergbau und Rohstoffe | ||
</a> | </a> | ||
</h2> | </h2> | ||
<p> | <p> | ||
The Reichsministerium | The Reichsministerium für Bergbau und Rohstoffe was a central ministry of the | ||
<a data-wiki-title="Government of the Tanoa Einsatzgruppen" href="/wiki/Government_of_the_Tanoa_Einsatzgruppen">Government of the Tanoa Einsatzgruppen</a>. | <a data-wiki-title="Government of the Tanoa Einsatzgruppen" href="/wiki/Government_of_the_Tanoa_Einsatzgruppen">Government of the Tanoa Einsatzgruppen</a>. | ||
It administered mining and the state supply of raw materials. | It administered mining and the state supply of raw materials. | ||
| Line 1,145: | Line 1,145: | ||
<div class="vu-people-controls"> | <div class="vu-people-controls"> | ||
<button class="vu-slide-button" id="vu-person-prev" type="button" aria-label="Previous person"> | <button class="vu-slide-button" id="vu-person-prev" type="button" aria-label="Previous person"><</button> | ||
<button class="vu-slide-button" id="vu-person-toggle" type="button" aria-label="Pause slideshow">Pause</button> | <button class="vu-slide-button" id="vu-person-toggle" type="button" aria-label="Pause slideshow">Pause</button> | ||
| Line 1,154: | Line 1,154: | ||
<div class="vu-slide-count" id="vu-person-count">1 / 1</div> | <div class="vu-slide-count" id="vu-person-count">1 / 1</div> | ||
<button class="vu-slide-button" id="vu-person-next" type="button" aria-label="Next person"> | <button class="vu-slide-button" id="vu-person-next" type="button" aria-label="Next person">></button> | ||
</div> | </div> | ||
</section> | </section> | ||
<div class="vu-heading"> | <div class="vu-heading"> | ||
<div class="vu-heading-title">How to use this wiki</div> | <div class="vu-heading-title">How to use this wiki</div> | ||
| Line 1,244: | Line 1,243: | ||
var root = document.querySelector(".vu-main"); | var root = document.querySelector(".vu-main"); | ||
var slider = document.getElementById("vu-people-slider"); | var slider = document.getElementById("vu-people-slider"); | ||
var status = document.getElementById("vu-people-status"); | |||
var image = document.getElementById("vu-person-image"); | var image = document.getElementById("vu-person-image"); | ||
var title = document.getElementById("vu-person-title"); | var title = document.getElementById("vu-person-title"); | ||
| Line 1,256: | Line 1,256: | ||
!root || | !root || | ||
!slider || | !slider || | ||
!status || | |||
!image || | !image || | ||
!title || | !title || | ||
| Line 1,269: | Line 1,270: | ||
var fallbackImage = "/wiki/Special:Redirect/file/Vu-logo.png"; | var fallbackImage = "/wiki/Special:Redirect/file/Vu-logo.png"; | ||
var cacheKey = "vu-main-people-slides- | var cacheKey = "vu-main-people-slides-v9"; | ||
var cacheLifetime = 6 * 60 * 60 * 1000; | var cacheLifetime = 6 * 60 * 60 * 1000; | ||
var slideInterval = 9000; | var slideInterval = 9000; | ||
var apiPath = "/wiki/api.php"; | |||
var people = []; | var people = []; | ||
var currentIndex = 0; | var currentIndex = 0; | ||
| Line 1,282: | Line 1,284: | ||
count.textContent = "1 / 1"; | count.textContent = "1 / 1"; | ||
toggle.textContent = "Play"; | toggle.textContent = "Play"; | ||
previous.textContent = "<"; | |||
next.textContent = ">"; | |||
function showStatus(message) { | |||
if (!message) { | |||
status.hidden = true; | |||
status.textContent = ""; | |||
return; | |||
} | |||
status.textContent = message; | |||
status.hidden = false; | |||
} | |||
function shuffle(items) { | function shuffle(items) { | ||
| Line 1,322: | Line 1,337: | ||
var finalSpace = cut.lastIndexOf(" "); | var finalSpace = cut.lastIndexOf(" "); | ||
return cut.slice(0, finalSpace > 0 ? finalSpace : limit) + " | return cut.slice(0, finalSpace > 0 ? finalSpace : limit) + "..."; | ||
} | } | ||
| Line 1,337: | Line 1,352: | ||
} | } | ||
function | function pageUrl(pageTitle) { | ||
if (window.mw && mw.util) { | |||
return mw.util.getUrl(pageTitle); | |||
} | |||
return "/wiki/" + encodeURIComponent(pageTitle.replace(/ /g, "_")); | |||
} | |||
function normalizePages(pages) { | |||
return shuffle( | return shuffle( | ||
pages | pages | ||
| Line 1,362: | Line 1,378: | ||
extract: pageExtract, | extract: pageExtract, | ||
image: getImage(page) || fallbackImage, | image: getImage(page) || fallbackImage, | ||
url: | url: page.fullurl || pageUrl(page.title) | ||
}; | }; | ||
}) | }) | ||
| Line 1,497: | Line 1,506: | ||
function activateSlides(items) { | function activateSlides(items) { | ||
if (!Array.isArray(items) || !items.length) { | if (!Array.isArray(items) || !items.length) { | ||
showStatus("No people pages were loaded."); | |||
return; | return; | ||
} | } | ||
| Line 1,502: | Line 1,512: | ||
people = shuffle(items); | people = shuffle(items); | ||
currentIndex = 0; | currentIndex = 0; | ||
previous.disabled = | previous.disabled = people.length < 2; | ||
next.disabled = | next.disabled = people.length < 2; | ||
toggle.disabled = | toggle.disabled = people.length < 2; | ||
showStatus(""); | |||
showSlide(0); | showSlide(0); | ||
setPlaying( | setPlaying(people.length > 1); | ||
} | } | ||
| Line 1,539: | Line 1,550: | ||
} | } | ||
}); | }); | ||
function buildQuery(params) { | |||
var parts = []; | |||
Object.keys(params).forEach(function (key) { | |||
parts.push( | |||
encodeURIComponent(key) + | |||
"=" + | |||
encodeURIComponent(params[key]) | |||
); | |||
}); | |||
return parts.join("&"); | |||
} | |||
function requestJson(params) { | |||
return window | |||
.fetch(apiPath + "?" + buildQuery(params), { | |||
credentials: "same-origin" | |||
}) | |||
.then(function (response) { | |||
if (!response.ok) { | |||
throw new Error("API HTTP " + response.status); | |||
} | |||
return response.json(); | |||
}); | |||
} | |||
function copyParams(params) { | function copyParams(params) { | ||
| Line 1,550: | Line 1,589: | ||
} | } | ||
function | function loadCategoryMembers(params, collectedPages) { | ||
return | return requestJson(params).then(function (data) { | ||
var nextPages = | var nextPages = | ||
data && | data && | ||
data.query && | data.query && | ||
Array.isArray(data.query. | Array.isArray(data.query.categorymembers) | ||
? data.query. | ? data.query.categorymembers | ||
: []; | : []; | ||
var allPages = collectedPages.concat(nextPages); | var allPages = collectedPages.concat(nextPages); | ||
| Line 1,567: | Line 1,606: | ||
}); | }); | ||
return | showStatus("Loading people... " + String(allPages.length)); | ||
return loadCategoryMembers(nextParams, allPages); | |||
} | } | ||
return | return allPages; | ||
}); | }); | ||
} | } | ||
var | function uniqueTitles(items) { | ||
var seen = {}; | |||
var titles = []; | |||
items.forEach(function (item) { | |||
if (!item || !item.title || seen[item.title]) { | |||
return; | |||
} | |||
seen[item.title] = true; | |||
titles.push(item.title); | |||
}); | |||
return titles; | |||
} | } | ||
function loadPageDetails(titles) { | |||
var groups = []; | |||
for (var index = 0; index < titles.length; index += 1) { | |||
groups.push(titles.slice(index, index + 1)); | |||
} | |||
return groups | |||
.reduce(function (chain, group) { | |||
return chain.then(function (pages) { | |||
return requestJson({ | |||
return | |||
action: "query", | action: "query", | ||
titles: group.join("|"), | |||
prop: "extracts|pageimages|info", | prop: "extracts|pageimages|info", | ||
exintro: 1, | exintro: 1, | ||
| Line 1,615: | Line 1,651: | ||
inprop: "url", | inprop: "url", | ||
redirects: 1, | redirects: 1, | ||
formatversion: 2 | formatversion: 2, | ||
} | format: "json" | ||
}).then(function (data) { | |||
var nextPages = | |||
data && | |||
data.query && | |||
Array.isArray(data.query.pages) | |||
} | ? data.query.pages | ||
: []; | |||
if ( | |||
(pages.length + nextPages.length) % 10 === 0 || | |||
pages.length + nextPages.length === titles.length | |||
) { | |||
showStatus( | |||
"Loading details... " + | |||
String(pages.length + nextPages.length) + | |||
" / " + | |||
String(titles.length) | |||
); | |||
} | |||
return pages.concat(nextPages); | |||
}); | |||
}); | |||
}, Promise.resolve([])); | |||
} | |||
var cachedPeople = readCache(); | |||
if (cachedPeople) { | |||
activateSlides(cachedPeople); | |||
} | |||
if (!window.fetch) { | |||
showStatus("This browser cannot load the people list."); | |||
return; | |||
} | |||
showStatus("Loading people..."); | |||
loadCategoryMembers( | |||
{ | |||
action: "query", | |||
list: "categorymembers", | |||
cmtitle: "Category:People", | |||
cmnamespace: 0, | |||
cmtype: "page", | |||
cmlimit: "max", | |||
formatversion: 2, | |||
format: "json" | |||
}, | |||
[] | |||
) | |||
.then(function (members) { | |||
var titles = uniqueTitles(members); | |||
showStatus("Loading details... 0 / " + String(titles.length)); | |||
return loadPageDetails(titles); | |||
}) | |||
.then(function (pages) { | |||
var loadedPeople = normalizePages(pages); | |||
saveCache(loadedPeople); | |||
activateSlides(loadedPeople); | |||
}) | |||
.catch(function () { | |||
showStatus("Could not load people list."); | |||
}); | |||
/* | /* | ||
| Line 1,648: | Line 1,722: | ||
* keep MediaWiki's red-link appearance. | * keep MediaWiki's red-link appearance. | ||
*/ | */ | ||
mw.loader | if (window.mw && mw.loader) { | ||
.using(["mediawiki.api", "mediawiki.util"]) | mw.loader | ||
.using(["mediawiki.api", "mediawiki.util"]) | |||
.then(function () { | |||
var api = new mw.Api(); | |||
var links = Array.prototype.slice.call( | |||
root.querySelectorAll("a[data-wiki-title]") | |||
); | |||
var titles = links | |||
.map(function (item) { | |||
return item.getAttribute("data-wiki-title"); | |||
}) | |||
.filter(function (item, index, allItems) { | |||
return item && allItems.indexOf(item) === index; | |||
}); | |||
if (!titles.length) { | |||
return; | |||
} | |||
return api | |||
.get({ | |||
action: "query", | |||
titles: titles.join("|"), | |||
formatversion: 2 | |||
}) | |||
.then(function (data) { | |||
var missing = {}; | |||
if (data.query && Array.isArray(data.query.pages)) { | |||
data.query.pages.forEach(function (page) { | |||
if (page.missing) { | |||
missing[page.title] = true; | |||
} | |||
}); | |||
} | |||
links.forEach(function (item) { | |||
var pageTitle = | |||
item.getAttribute("data-wiki-title"); | |||
if (!missing[pageTitle]) { | |||
return; | |||
} | |||
item.classList.add("new"); | |||
item.href = mw.util.getUrl(pageTitle, { | |||
action: "edit", | |||
redlink: 1 | |||
}); | |||
item.title = | |||
pageTitle + " (page does not exist)"; | |||
}); | }); | ||
}); | }); | ||
}); | |||
} | |||
}); | }); | ||
})(); | })(); | ||
Latest revision as of 14:46, 19 June 2026
About the wiki
The Vrienden Universe began in 2019 as De Lijers De Vrienden, a project about De Vrienden. The project expanded as related pages were added and became a single encyclopedia covering the wider history around its original subject.
The wiki now contains hundreds of connected pages developed over several years. Information established on one page is carried into related articles, allowing readers to follow the same history throughout the site.
Reichsministerium für Bergbau und Rohstoffe
The Reichsministerium für Bergbau und Rohstoffe was a central ministry of the Government of the Tanoa Einsatzgruppen. It administered mining and the state supply of raw materials.
The ministry supported the command economy of Tanoa and supplied the regime's industrial system.
Open page
Browse
Toonio Noord
Toonio Noord, born 4 April 1969, is a Dutch registration official and former security guard from Vriendendam. He works for the Stichting Noord Registratiebureau and is a member of the Noord family.
Open pageChoose a starting point
Most articles link directly to the subjects needed to continue through the history. Readers can begin with De Vrienden or select a broader section above.
The principal family pages provide the main route from De Vrienden into family history. Index pages provide access to the rest of the site.
Principal families
Community
Information about contributing is available on the community page.
Details
Information about the scope of the site is available in the disclaimer.