Wikiquote nowikiquote https://no.wikiquote.org/wiki/Hovedside MediaWiki 1.48.0-wmf.1 first-letter Medium Spesial Diskusjon Bruker Brukerdiskusjon Wikiquote Wikiquote-diskusjon Fil Fildiskusjon MediaWiki MediaWiki-diskusjon Mal Maldiskusjon Hjelp Hjelpdiskusjon Kategori Kategoridiskusjon Undertekster Undertekstdiskusjon Modul Moduldiskusjon Arrangement Arrangementsdiskusjon MediaWiki:HotCat.js 8 3673 28612 25395 2026-11-02T18:07:29Z Maintenance script 3061 Use thumb.wikimedia.org for thumbnails ([[phab:T427465]], Operator: Ladsgroup) 28612 javascript text/javascript /* Script: [[User:TheDJ/Gadget-HotCat.js]] * HotCat: Adds an easy way to add, modify and remove categories * Documentation: [[User:TheDJ/HotCat]] * Originally written by: Magnus Manske * * This version was forked from //commons.wikimedia.org/w/index.php?title=MediaWiki:Gadget-HotCat.js&oldid=10204404 * Major changes: * - blacklist code is disabled. * - all code for the uploadForm has been removed * - autocommit is disabled * - will be enabled on pages without categories so that you can easily add them * - uses javascript:void() as a dummy value for href in order to avoid a conflict with popups. * - checks for {{Uncategorized}} and removes it if a category is added * - does not use JSconfig for configuration options like its Commons original * - tries to detect other categories and if possible, add to the end of them. * - fixes a bug in the suggestion list with titles containing : character * [[User:TheDJ]] 2008-03-12 <source lang="javascript"><nowiki> */ var hotcat_running = 0 ; var hotcat_last_v = "" ; var hotcat_exists_yes = "//thumb.wikimedia.org/wikipedia/commons/thumb/b/be/P_yes.svg/20px-P_yes.svg.png" ; var hotcat_exists_no = "//thumb.wikimedia.org/wikipedia/commons/thumb/4/42/P_no.svg/20px-P_no.svg.png" ; var hotcat_no_autocommit = 0; // In Commons hotcat_suggestion_delay is configurable trough JSconfig var hotcat_suggestion_delay = 100; var hotcat_old_onsubmit = null; var hotcat_nosuggestions = false; // hotcat_nosuggestions is set to true if we don't have XMLHttp! (On IE6, XMLHttp uses // ActiveX, and the user may deny execution.) If true, no suggestions will ever be // displayed, and there won't be any checking whether the category exists. // Lupo, 2008-01-20 var hotcat_modify_blacklist = new Array ( "" ) ; $( hotcat ) ; function hotcat () { if ( hotcat_check_action() ) return ; // Edited page, reloading anyway // Do not add interface to protected pages, if user has no edit permission // Also disable it on preview pages: on a preview, we *are* already editing, // and HotCat must not open the page for editing a second time. Lupo, 2008-02-27 if( mw.config.get('wgAction') != "view" || document.getElementById('ca-viewsource' ) != null || mw.config.get('wgNamespaceNumber') == -1 || mw.config.get('wgNamespaceNumber') == 10 ) return; // If we have no Categories div, then add one // TheDJ, 2008-02-28 var visible_catlinks = document.getElementById ('mw-normal-catlinks') || getElementsByClassName ( document , "p" , "catlinks" ) [0]; var hidden_catlinks = document.getElementById ('mw-hidden-catlinks'); if ( visible_catlinks == null || typeof( visible_catlinks ) == 'undefined' ) { d3 = document.createElement ( "div" ); d3.id = "mw-normal-catlinks"; d3.innerHTML = '<a href="/wiki/Special:Categories" title="Special:Categories">Kategorier</a>: '; visible_catlinks = d3; if ( hidden_catlinks ) { // There are hidden categories. hidden_catlinks.parentNode.insertBefore( d3, hidden_catlinks ); hidden_catlinks.parentNode.className = "catlinks"; } else { // This page has no categories at all, lets create a section where we can add them. var footer = getElementsByClassName ( document , "div" , "printfooter" ) [0]; if( !footer ) return; // We have no idea where we should add this. d1 = document.createElement ( "div" ); d1.id = "catlinks"; d1.className = "catlinks"; d1.appendChild ( d3 ); footer.parentNode.insertBefore( d1, footer.nextSibling ); } } hotcat_modify_existing ( visible_catlinks ) ; hotcat_append_add_span ( visible_catlinks ) ; } function hotcat_append_add_span ( catline ) { var span_add = document.createElement ( "span" ) ; var span_sep = document.createTextNode ( " | " ) ; if ( catline.getElementsByTagName("span")[0] ) catline.appendChild ( span_sep ) ; catline.appendChild ( span_add ) ; hotcat_create_span ( span_add ) ; } String.prototype.ucFirst = function () { return this.substr(0,1).toUpperCase() + this.substr(1,this.length); } function hotcat_is_on_blacklist ( cat_title ) { if ( !cat_title ) return 0 ; cat_title = cat_title.ucFirst.replace( /Kategori:/gi, "" ); for ( var i = 0 ; i < hotcat_modify_blacklist.length ; i++ ) { if ( cat_title.substr ( 0 , hotcat_modify_blacklist[i].length ) == hotcat_modify_blacklist[i] ) return 1 ; } return 0 ; } function hotcat_modify_span ( span , i ) { //var cat_title = span.firstChild.getAttribute ( "title" ) ; // This fails with MW 1.13alpha if the category is a redlink, because MW 1.13alpha appends // [[MediaWiki:Red-link-title]] to the category name... we another way to get that category // name. Lupo, 2008-02-27 var cat_title = span.firstChild.innerHTML; // without "Kategori:" var sep1 = document.createTextNode ( " " ) ; var a1 = document.createTextNode ( "(-)" ) ; var remove_link = document.createElement ( "a" ) ; // Set the href to a dummy value to make sure we don't move if somehow the onclick handler // is bypassed. remove_link.className = "noprint"; remove_link.href = "#catlinks"; remove_link.onclick = hotcat_remove; remove_link.appendChild ( a1 ) ; span.appendChild ( sep1 ) ; span.appendChild ( remove_link ) ; // Disabled blacklist check TheDJ, 2008-02-28 // if ( hotcat_is_on_blacklist ( cat_title ) ) return ; var mod_id = "hotcat_modify_" + i ; var sep2 = document.createTextNode ( " " ) ; var a2 = document.createTextNode ( "(±)" ) ; var modify_link = document.createElement ( "a" ) ; modify_link.id = mod_id ; modify_link.className = "noprint"; modify_link.href = "javascript:hotcat_modify(«" + mod_id + "»);" ; modify_link.appendChild ( a2 ) ; span.appendChild ( sep2 ) ; span.appendChild ( modify_link ) ; } function hotcat_modify_existing ( catline ) { var spans = catline.getElementsByTagName ( "span" ) ; for ( var i = 0 ; i < spans.length ; i++ ) { hotcat_modify_span ( spans[i] , i ) ; } } function hotcat_getEvt (evt) { return evt || window.event || window.Event; // Gecko, IE, Netscape } function hotcat_evt2node (evt) { var node = null; try { var e = hotcat_getEvt (evt); node = e.target; if (!node) node = e.srcElement; } catch (ex) { node = null; } return node; } function hotcat_evtkeys (evt) { var code = 0; try { var e = hotcat_getEvt (evt); if (typeof(e.ctrlKey) != 'undefined') { // All modern browsers if (e.ctrlKey) code |= 1; if (e.shiftKey) code |= 2; if (e.altKey) code |= 4; } else if (typeof (e.modifiers) != 'undefined') { // Netscape... if (e.modifiers & Event.CONTROL_MASK) code |= 1; if (e.modifiers & Event.SHIFT_MASK) code |= 2; if (e.modifiers & Event.ALT_MASK) code |= 4; } } catch (ex) { } return code; } function hotcat_killEvt (evt) { try { var e = hotcat_getEvt (evt); if (typeof (e.preventDefault) != 'undefined') { e.preventDefault(); e.stopPropagation() } else e.cancelBubble = true; } catch (ex) { } } function hotcat_remove (evt) { var node = hotcat_evt2node (evt); if (!node) return false; // Get the category name from the original link to the category var cat_title = node.parentNode.firstChild.innerHTML; var editlk = document.getElementById('ca-edit').getElementsByTagName('a')[0].href; if ((hotcat_evtkeys (evt) & 1) || (hotcat_evtkeys (evt) & 4 )) // CTRL or ALT pressed? editlk = editlk + '&hotcat_nocommit=1'; hotcat_killEvt (evt); document.location = editlk + '&hotcat_removecat=' + encodeURIComponent(cat_title) ; return false; } function hotcatGetParamValue(paramName, h) { if (typeof(h) == 'undefined' ) { h = document.location.href; } var cmdRe=RegExp('[&?]'+paramName+'=([^&]*)'); var m=cmdRe.exec(h); if (m) { try { return decodeURIComponent(m[1]); } catch (someError) {} } return null; } // New. Code by Lupo & Superm401, added by Lupo, 2008-02-2007 function hotcat_find_category (wikitext, category) { var cat_name = category.replace(/([\\\^\$\.\?\*\+\(\)])/g, "\\$1"); var initial = cat_name.substr (0, 1); var cat_regex = new RegExp ("\\[\\[\\s*[Kk]ategori\\s*:\\s*" + (initial == "\\" ? initial : "[" + initial.toUpperCase() + initial.toLowerCase() + "]") + cat_name.substring (1).replace (/[ _]/g, "[ _]") + "\\s*(\\|.*?)?\\]\\]", "g" ); var result = new Array (); var curr_match = null; while ((curr_match = cat_regex.exec (wikitext)) != null) { result [result.length] = {match : curr_match}; } return result; // An array containing all matches, with positions, in result[i].match } // New. Code by TheDJ, 2008-03-12 function hotcat_find_ins ( wikitext ) { var re = /\[\[(?:Kategori):[^\]]+\]\]/ig var index = -1; while( re.exec(wikitext) != null ) index = re.lastIndex; if( index > -1) return index; //we should try to find interwiki links here, but that's for later. return -1; } // Rewritten (nearly) from scratch. Lupo, 2008-02-27 function hotcat_check_action () { var ret = 0; if (mw.config.get('wgAction') != 'edit' || typeof(document.editform) == "undefined" ) return ret; // Not an edit page, so not our business... var summary = new Array () ; var t = document.editform.wpTextbox1.value ; var prevent_autocommit = 0; if ( (typeof (hotcat_no_autocommit) != "undefined" && hotcat_no_autocommit) || hotcatGetParamValue ('hotcat_nocommit') == '1') prevent_autocommit = 1; var cat_rm = hotcatGetParamValue ('hotcat_removecat'); var cat_add = hotcatGetParamValue ('hotcat_newcat'); var cat_key = null; if (cat_rm != null && cat_rm.length > 0) { var matches = hotcat_find_category (t, cat_rm); if (!matches || matches.length == 0) { alert ('Kategori "' + cat_rm + '" ikke funnet. Kanskje den ligger i en mal?'); prevent_autocommit = 1; } else if (matches.length > 1) { alert ('Kategori «' + cat_rm + "» funnet flere ganger. Vet ikke hvem av dem jeg skal fjerne. Fjern manuelt."); prevent_autocommit = 1; } else { if (cat_add != null && cat_add.length > 0 && matches[0].match.length > 1) cat_key = matches[0].match[1]; // Remember the category key, if any. var t1 = t.substring (0, matches[0].match.index); var t2 = t.substring (matches[0].match.index + matches[0].match[0].length); // Remove whitespace (properly): strip whitespace, but only up to the next line feed. // If we then have two linefeeds in a row, remove one. Otherwise, if we have two non- // whitespace characters, insert a blank. var i = t1.length - 1; while (i >= 0 && t1.charAt (i) != '\n' && t1.substr (i, 1).search (/\s/) >= 0) i--; var j = 0; while (j < t2.length && t2.charAt (j) != '\n' && t1.substr (j, 1).search (/\s/) >= 0) j++; if (i >= 0 && t1.charAt (i) == '\n' && j < t2.length && t2.charAt (j) == '\n') i--; if (i >= 0) t1 = t1.substring (0, i+1); else t1 = ""; if (j < t2.length) t2 = t2.substring (j); else t2 = ""; if (t1.length > 0 && t1.substring (t1.length - 1).search (/\S/) >= 0 && t2.length > 0 && t2.substr (0, 1).search (/\S/) >= 0) t1 = t1 + ' '; t = t1 + t2; summary.push ( "Fjernet kategori «" + cat_rm + "»" ) ; ret = 1; } } if (cat_add != null && cat_add.length > 0) { var matches = hotcat_find_category (t, cat_add); if (matches && matches.length > 0) { alert ('Kategori "' + cat_add + '" allerede inne; ikke lagt inn.'); prevent_autocommit = 1; } else { var insertionpoint = hotcat_find_ins( t ); var newcatstring = '\n\[\[Kategori:' + cat_add + (cat_key != null ? cat_key : "") + '\]\]'; if( insertionpoint > -1 ) { t = t.substring(0, insertionpoint ) + newcatstring + t.substring( insertionpoint ); } else { t = t + newcatstring; } summary.push ( "Hurtiginnlegg av kategori «" + cat_add + "»" ) ; var t2 = t.replace(/\{\{[Uu]kategorisert[^}]*\}\}/g, ""); // Remove "uncategorized" template if (t2.length != t.length) { t = t2; summary.push ( "fjernet {{ukategorisert}}" ) ; } ret = 1; } } if (ret) { document.editform.wpTextbox1.value = t ; document.editform.wpSummary.value = summary.join( "; " ); // + " (ved hjelp av [[WP:HOTCAT|HotCat]])" ; document.editform.wpMinoredit.checked = true ; if (!prevent_autocommit) { // Hide the entire edit section so as not to tempt the user into editing... var bodyContentId = document.getElementById("bodyContent") || document.getElementById("mw_contentholder"); bodyContentId.style.display = "none"; document.editform.submit(); } } return ret; } function hotcat_clear_span ( span_add ) { while ( span_add.firstChild ) span_add.removeChild ( span_add.firstChild ) ; } function hotcat_create_span ( span_add ) { hotcat_clear_span ( span_add ) ; var a_add = document.createElement ( "a" ) ; var a_text = document.createTextNode ( "(+)" ) ; span_add.id = "hotcat_add" ; a_add.className = "noprint"; a_add.href = "javascript:hotcat_add_new()" ; a_add.appendChild ( a_text ) ; span_add.appendChild ( a_add ) ; } function hotcat_modify ( link_id ) { var link = document.getElementById ( link_id ) ; var span = link.parentNode ; var catname = span.firstChild.innerHTML; // was .firstChild.data. Just for consistency while ( span.firstChild.nextSibling ) span.removeChild ( span.firstChild.nextSibling ) ; span.firstChild.style.display = "none" ; hotcat_create_new_span ( span , catname ) ; hotcat_last_v = "" ; hotcat_text_changed () ; // Update icon } function hotcat_add_new () { var span_add = document.getElementById ( "hotcat_add" ) ; hotcat_clear_span ( span_add ) ; hotcat_last_v = "" ; hotcat_create_new_span ( span_add , "" ) ; } function hotcat_create_new_span ( thespan , init_text ) { var form = document.createElement ( "form" ) ; form.method = "post" ; form.onsubmit = function () { hotcat_ok(); return false; } ; form.id = "hotcat_form" ; form.style.display = "inline" ; var list = null; if (!hotcat_nosuggestions) { // Only do this if we may actually use XMLHttp... list = document.createElement ( "select" ) ; list.id = "hotcat_list" ; list.onclick = function () { var l = document.getElementById("hotcat_list"); if (l != null) document.getElementById("hotcat_text").value = l.options[l.selectedIndex].text; hotcat_text_changed(); }; list.ondblclick = function (evt) { var l = document.getElementById("hotcat_list"); if (l != null) document.getElementById("hotcat_text").value = l.options[l.selectedIndex].text; // Don't call text_changed here if on upload form: hotcat_ok will remove the list // anyway, so we must not ask for new suggestions since show_suggestions might // raise an exception if it tried to show a no longer existing list. // Lupo, 2008-01-20 hotcat_text_changed(); hotcat_ok((hotcat_evtkeys (evt) & 1) || (hotcat_evtkeys (evt) & 4)); // CTRL or ALT pressed? }; list.style.display = "none" ; } var text = document.createElement ( "input" ) ; text.size = 40 ; text.id = "hotcat_text" ; text.type = "text" ; text.value = init_text ; text.onkeyup = function () { window.setTimeout("hotcat_text_changed();", hotcat_suggestion_delay ); } ; var exists = null; if (!hotcat_nosuggestions) { exists = document.createElement ( "img" ) ; exists.id = "hotcat_exists" ; exists.src = hotcat_exists_no ; } var OK = document.createElement ( "input" ) ; OK.type = "button" ; OK.value = "OK" ; OK.onclick = function (evt) { hotcat_ok ((hotcat_evtkeys (evt) & 1) || (hotcat_evtkeys (evt) & 4)); }; // CTRL or ALT pressed? var cancel = document.createElement ( "input" ) ; cancel.type = "button" ; cancel.value = "Cancel" ; cancel.onclick = hotcat_cancel ; if (list != null) form.appendChild ( list ) ; form.appendChild ( text ) ; if (exists != null) form.appendChild ( exists ) ; form.appendChild ( OK ) ; form.appendChild ( cancel ) ; thespan.appendChild ( form ) ; text.focus () ; } function hotcat_ok (nocommit) { var text = document.getElementById ( "hotcat_text" ) ; var v = text.value ; // Empty category ? if ( v == "" ) { hotcat_cancel() ; return ; } var editlk = document.getElementById('ca-edit').getElementsByTagName('a')[0].href; var url = editlk + '&hotcat_newcat=' + encodeURIComponent( v ) ; // Editing existing? var span = text.parentNode.parentNode ; // span.form.text if ( span.id != "hotcat_add" ) { // Not plain "addition" url += '&hotcat_removecat=' + span.firstChild.innerHTML; } if (nocommit) url = url + '&hotcat_nocommit=1'; document.location = url ; } function hotcat_just_add ( text ) { var span = document.getElementById("hotcat_form") ; while ( span.tagName != "SPAN" ) span = span.parentNode ; var add = 0 ; if ( span.id == "hotcat_add" ) add = 1 ; span.id = "" ; while ( span.firstChild ) span.removeChild ( span.firstChild ) ; var na = document.createElement ( "a" ) ; na.href = mw.config.get('wgArticlePath').split("$1").join("Kategori:" + encodeURI (text)) ; na.appendChild ( document.createTextNode ( text ) ) ; na.setAttribute ( "title" , "Kategori:" + text ) ; span.appendChild ( na ) ; var catline = getElementsByClassName ( document , "p" , "catlinks" ) [0] ; if ( add ) hotcat_append_add_span ( catline ) ; for ( var i = 0 ; i < span.parentNode.childNodes.length ; i++ ) { if ( span.parentNode.childNodes[i] != span ) continue ; hotcat_modify_span ( span , i ) ; break ; } } function hotcat_cancel () { var span = document.getElementById("hotcat_form").parentNode ; if ( span.id == "hotcat_add" ) { hotcat_create_span ( span ) ; } else { while ( span.firstChild.nextSibling ) span.removeChild ( span.firstChild.nextSibling ) ; span.firstChild.style.display = "" ; for ( var i = 0 ; i < span.parentNode.childNodes.length ; i++ ) { if ( span.parentNode.childNodes[i] != span ) continue ; hotcat_modify_span ( span , i ) ; break ; } } } function hotcat_text_changed () { if ( hotcat_running ) return ; var text = document.getElementById ( "hotcat_text" ) ; var v = text.value.ucFirst() ; if ( hotcat_last_v == v ) return ; // Nothing's changed... if (hotcat_nosuggestions) { // On IE, XMLHttp uses ActiveX, and the user may deny execution... just make sure // the list is not displayed. var list = document.getElementById ('hotcat_list'); if (list != null) list.style.display = "none" ; var exists = document.getElementById ('hotcat_exists'); if (exists != null) exists.style.display = "none" ; return; } hotcat_running = 1 ; hotcat_last_v = v ; if ( v != "" ) { var url = mw.config.get('wgServer') + wgScriptPath + "/api.php?format=xml&action=query&list=allpages&apfilterredir=nonredirects&apnamespace=14&apfrom=" + encodeURIComponent( v ) ; var request = sajax_init_object() ; if (request == null) { //Oops! We don't have XMLHttp... hotcat_nosuggestions = true; var list = document.getElementById ('hotcat_list'); if (list != null) list.style.display = "none" ; var exists = document.getElementById ('hotcat_exists'); if (exists != null) exists.style.display = "none" ; hotcat_running = 0; return; } request.open('GET', url, true); request.onreadystatechange = function () { if (request.readyState == 4) { var xml = request.responseXML ; if ( xml == null ) return ; var pages = xml.getElementsByTagName( "p" ) ; var titles = new Array () ; for ( var i = 0 ; i < pages.length ; i++ ) { // Strip "Category:" but don't break on titles like "Category:Space: 2001 a space odyssey" var s = pages[i].getAttribute("title").replace( /Kategori:/gi, "" ); if ( s.substr ( 0 , hotcat_last_v.length ) != hotcat_last_v ) break ; titles.push ( s ) ; } hotcat_show_suggestions ( titles ) ; } }; request.setRequestHeader ('Pragma', 'cache=yes'); request.setRequestHeader ('Cache-Control', 'no-transform'); request.send(null); } else { hotcat_show_suggestions ( new Array () ) ; } hotcat_running = 0 ; } function hotcat_show_suggestions ( titles ) { var text = document.getElementById ( "hotcat_text" ) ; var list = document.getElementById ( "hotcat_list" ) ; var icon = document.getElementById ( "hotcat_exists" ) ; // Somehow, after a double click on the selection list, we still get here in IE, but // the list may no longer exist... Lupo, 2008-01-20 if (list == null) return; if (hotcat_nosuggestions) { list.style.display = "none" ; if (icon != null) icon.style.display = "none"; return; } if ( titles.length == 0 ) { list.style.display = "none" ; icon.src = hotcat_exists_no ; return ; } // Set list size to minimum of 5 and actual number of titles. Formerly was just 5. // Lupo, 2008-01-20 list.size = (titles.length > 5 ? 5 : titles.length) ; // Avoid list height 1: double-click doesn't work in FF. Lupo, 2008-02-27 if (list.size == 1) list.size = 2; list.style.align = "left" ; list.style.zIndex = 5 ; list.style.position = "absolute" ; // Was listh = titles.length * 20: that makes no sense if titles.length > list.size // Lupo, 2008-01-20 var listh = list.size * 20; var nl = parseInt (text.offsetLeft) - 1 ; var nt = parseInt (text.offsetTop) - listh ; list.style.top = nt + "px" ; list.style.width = text.offsetWidth + "px" ; list.style.height = listh + "px" ; list.style.left = nl + "px" ; while ( list.firstChild ) list.removeChild ( list.firstChild ) ; for ( var i = 0 ; i < titles.length ; i++ ) { var opt = document.createElement ( "option" ) ; var ot = document.createTextNode ( titles[i] ) ; opt.appendChild ( ot ) ; //opt.value = titles[i] ; list.appendChild ( opt ) ; } icon.src = hotcat_exists_yes ; var nof_titles = titles.lenght; var first_title = titles.shift () ; var v = text.value.ucFirst() ; if ( first_title == v ) { if( nof_titles == 1 ) { // Only one result, and it's the same as whatever is in the input box: makes no sense // to show the list. But make sure the text field has the focus ! text.focus(); list.style.display = "none"; } return; } list.style.display = "block" ; // Put the first entry of the title list into the text field, and select the // new suffix such that it'll be overwritten if the user keeps typing. // ONLY do this if we have a way to select parts of the content of a text // field, otherwise, this is very annoying for the user. Note: IE does it // again differently from the two versions previously implemented. // Lupo, 2008-01-20 // Only put first entry into the list if the user hasn't typed something // conflicting yet Dschwen 2008-02-18 if ( ( text.setSelectionRange || text.createTextRange || typeof (text.selectionStart) != 'undefined' && typeof (text.selectionEnd) != 'undefined' ) && v == first_title.substr(0,v.length) ) { // taking hotcat_last_v was a major annoyance, // since it constantly killed text that was typed in // _since_ the last AJAX request was fired! Dschwen 2008-02-18 var nosel = v.length ; text.value = first_title ; if (text.setSelectionRange) // e.g. khtml text.setSelectionRange (nosel, first_title.length); else if (text.createTextRange) { // IE var new_selection = text.createTextRange(); new_selection.move ("character", nosel); new_selection.moveEnd ("character", first_title.length - nosel); new_selection.select(); } else { text.selectionStart = nosel; text.selectionEnd = first_title.length; } } } /* </nowiki></source> */ faynu0f9hpc1j44g4opo1kxgh4jjd0o Brukerdiskusjon:Joreberg 3 5213 28611 28543 2026-11-02T15:48:02Z Ottawahitech 3667 /* Order of categories */ ny seksjon 28611 wikitext text/x-wiki == Donald Trump == Hi {{PAGENAME}}: I was wondering if you are planning on creating a [[Donald Trump]] page here? If so I just created an entry for it (I used google to translate from English to Norwegian): * [Tidligere president Trump] er for øyeblikket ikke tillatt på våre plattformer (inkludert nye innlegg med president Trump snakker). ** Facebook according to "[https://www.usatoday.com/story/tech/2021/03/31/facebook-donald-trump-interview-lara-trump-video-removed-capitol/4823121001/ Trump-video: Facebook skrubber Donald Trump-intervju med Lara Trump, siterer ubestemt forbud] " (31 mars 2021) Cheers, [[Bruker:Ottawahitech|Ottawahitech]] ([[Brukerdiskusjon:Ottawahitech|diskusjon]]) 1. apr. 2021 kl. 02:12 (CEST) :: Wow, you are really paying attention, seeing that I have done work on the Norwegian WikiQuote too! :-) :: No, I am not planning on creating a Donald Trump page on the Norwegian WikiQuote. Most Norwegians understand English quite well. After a meeting between our Prime Minister and Trump, many commented that she speaks better English than Trump does. https://www.bustle.com/p/trump-met-norways-erna-solberg-twitter-noticed-something-was-way-off-7853025 For most Norwegians, it will be more natural to read Trump quotes in the original language. :: Google Translate can be very useful, but the results can also look silly. When I very occasionally use humor on Wikipedia and Wikiquote, I try to do so in a more subtle manner to avoid jeapordizing the serious and reliable impression people have of these media, and also to avoid having entries being edited away :-) :: Considering today's date, I am a bit hesitant to accept suggestions right now :-) :: Anyway: Season's greetings to you! :: [[Bruker:Joreberg|Joreberg]] ([[Brukerdiskusjon:Joreberg|diskusjon]]) 1. apr. 2021 kl. 17:20 (CEST) ::: Let me reciprocate with a Wow, for being met by a friendly fellow-contributor :) ::: Back to [[Doanld Trump]]. do you realize that a search on this term produces this: [[Jan_Hanvold#Om_Donald_Trump]]? I doubt this represents most Norwegians' views on DT? I guess the question we should ask ourselves is who is the intended audience/readership of the Norwegian wikiquote: Is it norwegians only, or are there others who are coming here for information. Thanks for the bustle ref, very informative and Season's greetings to you too, Cheers, [[Bruker:Ottawahitech|Ottawahitech]] ([[Brukerdiskusjon:Ottawahitech|diskusjon]]) 2. apr. 2021 kl. 20:53 (CEST) (note date:) ::::Ooops, sorry for not noticing this messagage. An answer after so many years may still perhaps be slightly better than no answer!? ::::You are very right; the views Jan Hanvold has on Donald Trump and many other subjects are not very typical for Norwegians. The approval rate for DT in Norway was 9 % in a poll in 2024, and I have a strong feeling it has decreased since that. ::::In my view, the Norwegian wikiquote should be mainly in Norwegian language, except for special cases, like when Shaman Durek stated "I'm Norwegian!". This will limit the traffic from non-Norwegians. You have a point that there may be some non-Norwegians reading Norwegian Wikiquote, since automatic translation has become so good now. But for me personally I regard this as a small niche "market". [[Bruker:Joreberg|Joreberg]] ([[Brukerdiskusjon:Joreberg|diskusjon]]) 19. okt. 2026 kl. 19:36 (CEST) :::::<An answer after so many years> :::::Absolutely, comments such as yours are timeless. In any event I have never subscribed to the dogma that so-called thoughts-on-paper should be expired after a period of time. :::::Back to the topic: The approval ratings for DT in Norway in 2024 show that Norwegians are better at predicting the future, seeing that those ratings have been plummeting in the USA. I suspect, even though I have not seen any polls, that the same applies in Canada, but I hesitate to conclude this as a fact until I see some convincing statistics. I find that most people, including me unfortunately, tend to assume that most others around them have similar thought processes. :::::As far as the audience of the Norwegian Wikiquote I found an interesting page when drilling through the statistics link at the bottom of all pages here called Wikimedia Statistics. The page which is a map of the world in colors, shows Brazil as a country with top views of this wiki, much higher than the USA with a larger population. I wish I could find a page with per capita views, but it is very time consuming. :::::Cheers, [[Bruker:Ottawahitech|Ottawahitech]] ([[Brukerdiskusjon:Ottawahitech|diskusjon]]) 20. okt. 2026 kl. 16:26 (CEST) ::::::Thanks for the hint about the Wikimedia Statistics linke. I haven't been aware of this. ::::::Yes, it may seem surprising that Brazil is on the top of the list of Wikequote "users". ::::::Here are some observations and educated guesses: ::::::When I make updates in Wikipedia and Wikiquote, I have noted that search results on Google several times have referred to my updates within an hour after the updates. So the Google databases are at least in some cases or for some of the content following almost in real time what is happening on Wikipedia and Wikiquote. There are in principle two ways of achieving this: Either Wikipedia and Wikiquote can take initiative and inform Google more or less immediately when an update has been made, or the initiative can come from Google by reading some or all pages on Wikipedia or Wikiquote to check if there are any changes; a process called crawling. ::::::(The same argument applies for a handful of other search engines, in particular Microsoft Bing). ::::::I don't know which solution is being used in this case. But let me assume that crawling is being used. In this case, many or all pages will need to be crawled regularly. A crawler will for Wikipedia/Wikiquote seem to be in principle the same as a real human user who asks for a page by providing a URL, and gets a page as result. So a crawler "looks" like a user who "reads" a huge number of pages. ::::::I asked this question to the Google AI: "is some big internet search engine using crawlers placed in Brazil?" And this is the answer I got: ::::::Yes, major internet search engines explicitly route some of their crawling infrastructure through Brazil. ::::::While the vast majority of web crawling traffic originating from major engines traditionally comes from servers inside the United States, tech giants have expanded their localized global networks. ::::::• Microsoft (Bingbot): Microsoft explicitly states in its official Bing Webmaster Tools documentation that it utilizes designated IP blocks registered specifically to Brazil (such as the prefix 191.233.204.224/28) to run its crawler network. ::::::• Google (Googlebot): Google operates massive cloud data centers in São Paulo and has actively doubled its data center computing capacity in Brazil. While Google’s primary search crawlers generally route traffic from US-based endpoints, their unified crawling framework utilizes shared IP range feeds that dynamically draw from global edge locations, including Latin America. ::::::- - - - ::::::The next country on the top list on the statistics page you mentioned, is India. And when I asked the question I mentioned above for India, I got a similar answer. ::::::I don't really believe that thousands of humans in Brazil and India are extremely eagerly reading large parts of the Norwegian Wikipedia and Wikiquote, outnumbering Norwegians by a large factor. ::::::I feel 98 % certain that the "users" from Brazil and India are computers that are in a way "pretending" ("emulating" is the word used among technologists) to be real users, and I feel 90 % certain that this is for crawling (other options would be DDoS attacks or hackers trying to break in). ::::::[[Bruker:Joreberg|Joreberg]] ([[Brukerdiskusjon:Joreberg|diskusjon]]) 20. okt. 2026 kl. 18:14 (CEST) :::::::good point! I think, there is a breakdown somewhere of human :::::::/ bot contributions :::::::cheers [[Bruker:Ottawahitech|Ottawahitech]] ([[Brukerdiskusjon:Ottawahitech|diskusjon]]) 23. okt. 2026 kl. 18:58 (CEST) ::::::::Bot contributions TO Wiki* are well known and documented. These bots are made and monitored by Wikipedia editors and do good deeds, like including links to WaybackMachine to ensure that referenced web pages can be read even if they are deleted from their original web sites. ::::::::This is very different from bots/crawlers that pick up content FROM Wiki*, like the Brazilian and Indian search engine bots that were mentioned :-) ::::::::[[Bruker:Joreberg|Joreberg]] ([[Brukerdiskusjon:Joreberg|diskusjon]]) 26. okt. 2026 kl. 12:18 (CET) == Spring break (vårferie according to google translate) == Over at en-wikiversity we are talking about the connection between [[en:v:Talk:COVID-19#New_cases_spiking_across_the_world?|spring break and a potential rise in the number of COVID-19 cases]]. I was wondering how prevalent spring break is in the world and found this on [https://www.wikidata.org/wiki/Q1153162 wikidata], which has no entry for the Norwegian wikipedia. Any idea if [[en:w:spring break]] is widely celebrated in Norway? Cheers, [[Bruker:Ottawahitech|Ottawahitech]] ([[Brukerdiskusjon:Ottawahitech|diskusjon]]) 2. apr. 2021 kl. 20:51 (CEST) :The term "vårferie" is not common in Norway. But there are some vacation days connected with Easter, providing a long weekend from with vacation days from a Thursday to the following Monday, giving a week end with 5 days off instead of 2. The three days before the Thursday are referred to as "calm days" since many use some of their vacation days so they end up with a total of 11 days off from work, exploiting a combination of week ends, "calm days" and Easter. The schools are closed during the "calm days". [[w:Påskeferie]] :And May has several days off: Labor day May 1, the religious Ascencion day, and our Constitution day May 17. There is also another religious day celebrating something with Jesus again; I suspect an English name will involve something like Pentecost or Whitmonday. Most Norwegians are sufficiently religius to enjoy this Monday off from work, but not sufficiently religious to ask what is being celebrated :-) :You seem to have a surprisingly strong interest for Norway. Do you have some special connection to Norway? :[[Bruker:Joreberg|Joreberg]] ([[Brukerdiskusjon:Joreberg|diskusjon]]) 20. okt. 2026 kl. 18:35 (CEST) == Märtha Louise == Hi {{PAGENAME}}, Nice to see you around, it sure can get lonely here:) I have a question about [[Märtha Louise]]: do you know if I can I add [[:Kategori:Monarker]] to her page? My knowledge of monarchy issues is rather limited. Thanks in advance, [[Bruker:Ottawahitech|Ottawahitech]] ([[Brukerdiskusjon:Ottawahitech|diskusjon]]) 19. okt. 2026 kl. 16:32 (CEST) :Hi, [[User:Ottawahitech | Ottawahitech]]! Good to see that you are still around! :"Monarker" is plural of "monark". A monark is the ruling king or queen. Märtha Louise is absolutely not a monark :-) If there will ever be a significant risk that she will become monark, some say that Norwegian politicians will "quickly" change the Constitution and turn Norway into a republic :-) I believe she may be the third in the succession now, after Crown Princess Ingrid Alexandra and Prince Sverre. So far, Ingrid Alexandra seems to be well suited for the job, and also Prince Sverre is quite well behaved :-) :Märtha Louise is a part of "Kongefamilien", the Royal family in the sense of the extended family, based on kinship, but she is not a part of "Kongehuset", the set of Royals who open bridges and wave to people from the balcony of the Royal Palace on May 17. :Her husband and she have started a court case against people they claim have blemished their reputation by sharing personal information and perhaps also unsubstianted claims, partly in breach of Non Disclosure Agreements. They are demanding USD 80M+ in repairs. The allegations are mainly directed at some former friends and family members of him, but Wikipedia has also been mentioned in the court documents. So these days we should be extra careful to include only information that is very well proven. :Thank you for looking after things! :[[Bruker:Joreberg|Joreberg]] ([[Brukerdiskusjon:Joreberg|diskusjon]]) 19. okt. 2026 kl. 19:18 (CEST) == wikimedia errors == Hi {{PAGENAME}}, am I the only user getting very frequent wikimedia errors since yesterday? they show the logo of the wikimedia foundation and are followed by this text: :'''Error''' :'''This web service cannot be reached. Please contact a maintainer of this project...''' [[Bruker:Ottawahitech|Ottawahitech]] ([[Brukerdiskusjon:Ottawahitech|diskusjon]]) 22. okt. 2026 kl. 17:01 (CEST) :Answering my own question: :* '''Websites taken down worldwide as AI reveals critical cyber-security threat | BBC News''' :I finally figured out why I was experiencing so much trouble accessing wikimedia wikis. Google which I am sure I accessed during this time seemed to fare OK IIRC. Non of the wikimedia wikis showed me a banner with an explanation of what was going on; and I have not, yet, happened to see any talk pages that mention this. I have no idea, if my geographic region was hit harder of less than other regions. :btw talking about geographic regions, I got this message earlier today when trying to post a comment to a MediaWiki talk page: :* '''We are temporarily limiting... try again later.''' :Cheers, [[Bruker:Ottawahitech|Ottawahitech]] ([[Brukerdiskusjon:Ottawahitech|diskusjon]]) 24. okt. 2026 kl. 18:28 (CEST) == Order of categories == Hi {{PAGENAME}} I wonder if you think it is important to order categories at the bottom of articles alphabetically? If so, do you think this is something contributors here should be spending time on, or whether it is better to convince foundation developers to do it automatically (through a bot or whatever)? Thanks in advance, [[Bruker:Ottawahitech|Ottawahitech]] ([[Brukerdiskusjon:Ottawahitech|diskusjon]]) 2. nov. 2026 kl. 16:48 (CET) 5ufig08ys3f6tes13la1fohqeaux60x Recep Tayyip Erdoğan 0 5326 28619 27844 2026-11-02T20:26:04Z Ottawahitech 3667 added [[Category:Politikere]] using [[Help:Gadget-HotCat|HotCat]] 28619 wikitext text/x-wiki [[Image:Recep Tayyip Erdoğan 2021.jpg|thumb|right|Recep Tayyip Erdoğan (2021)]] '''Recep Tayyip Erdoğan''' (født 26. februar 1954 i [[w:Istanbul|Istanbul]]) er en [[w:Tyrkia|tyrkisk]] politiker. Han var [[w:Liste over Tyrkias statsministre|Tyrkias statsminister]] fra 14. mars 2003 til 28. august 2014, og har vært Tyrkias president siden 28. august 2014. Han var leder av [[w:Rettferdighets- og utviklingspartiet|Rettferdighets- og utviklingspartiet]] (AKP). 10. august 2014 ble han Tyrkias første valgte president etter å ha vunnet det første direkte presidentvalget i Tyrkia med 51,71 % av stemmene. == Sitater == * Skandinaviske land er som gjestehus for terrororganisasjoner. For å ta det enda lengre, har de til og med fått plass i nasjonalforsamlingene deres. ** Hevdet, uten framlagte bevis, sitert i [https://www.vg.no/nyheter/utenriks/i/v5BWol/skal-diskutere-svensk-finsk-nato-medlemskap-erdogan-er-skeptisk «Skal diskutere svensk-finsk Nato-medlemskap – Erdogan er skeptisk»], VG, 13. mai 2022 == Eksterne lenker == {{wikipedia}} {{Kategori:Politikk}} {{Kategori:Personer sortert etter nasjonalitet|Tyrkere}} [[Kategori:Biografier om levende personer]] [[Kategori:Politikere]] ojfifn4djw4ybcl5aa35wn8xulvg0nq 28620 28619 2026-11-02T20:26:54Z Ottawahitech 3667 added [[Category:Tyrkere]] using [[Help:Gadget-HotCat|HotCat]] 28620 wikitext text/x-wiki [[Image:Recep Tayyip Erdoğan 2021.jpg|thumb|right|Recep Tayyip Erdoğan (2021)]] '''Recep Tayyip Erdoğan''' (født 26. februar 1954 i [[w:Istanbul|Istanbul]]) er en [[w:Tyrkia|tyrkisk]] politiker. Han var [[w:Liste over Tyrkias statsministre|Tyrkias statsminister]] fra 14. mars 2003 til 28. august 2014, og har vært Tyrkias president siden 28. august 2014. Han var leder av [[w:Rettferdighets- og utviklingspartiet|Rettferdighets- og utviklingspartiet]] (AKP). 10. august 2014 ble han Tyrkias første valgte president etter å ha vunnet det første direkte presidentvalget i Tyrkia med 51,71 % av stemmene. == Sitater == * Skandinaviske land er som gjestehus for terrororganisasjoner. For å ta det enda lengre, har de til og med fått plass i nasjonalforsamlingene deres. ** Hevdet, uten framlagte bevis, sitert i [https://www.vg.no/nyheter/utenriks/i/v5BWol/skal-diskutere-svensk-finsk-nato-medlemskap-erdogan-er-skeptisk «Skal diskutere svensk-finsk Nato-medlemskap – Erdogan er skeptisk»], VG, 13. mai 2022 == Eksterne lenker == {{wikipedia}} {{Kategori:Politikk}} {{Kategori:Personer sortert etter nasjonalitet|Tyrkere}} [[Kategori:Biografier om levende personer]] [[Kategori:Politikere]] [[Kategori:Tyrkere]] i7az01dcf5jvv971zehu5hdcjhhg40a 28621 28620 2026-11-02T20:28:09Z Ottawahitech 3667 /* Eksterne lenker */ 28621 wikitext text/x-wiki [[Image:Recep Tayyip Erdoğan 2021.jpg|thumb|right|Recep Tayyip Erdoğan (2021)]] '''Recep Tayyip Erdoğan''' (født 26. februar 1954 i [[w:Istanbul|Istanbul]]) er en [[w:Tyrkia|tyrkisk]] politiker. Han var [[w:Liste over Tyrkias statsministre|Tyrkias statsminister]] fra 14. mars 2003 til 28. august 2014, og har vært Tyrkias president siden 28. august 2014. Han var leder av [[w:Rettferdighets- og utviklingspartiet|Rettferdighets- og utviklingspartiet]] (AKP). 10. august 2014 ble han Tyrkias første valgte president etter å ha vunnet det første direkte presidentvalget i Tyrkia med 51,71 % av stemmene. == Sitater == * Skandinaviske land er som gjestehus for terrororganisasjoner. For å ta det enda lengre, har de til og med fått plass i nasjonalforsamlingene deres. ** Hevdet, uten framlagte bevis, sitert i [https://www.vg.no/nyheter/utenriks/i/v5BWol/skal-diskutere-svensk-finsk-nato-medlemskap-erdogan-er-skeptisk «Skal diskutere svensk-finsk Nato-medlemskap – Erdogan er skeptisk»], VG, 13. mai 2022 == Eksterne lenker == {{wikipedia}} [[Kategori:Biografier om levende personer]] [[Kategori:Politikere]] [[Kategori:Tyrkere]] bxkw3sz7w59vsloho4b2rlknnn48p3s Abdul El-Sayed 0 5469 28613 2026-11-02T20:09:52Z Ottawahitech 3667 Ny side: [[w:Abdul El-Sayed|]] == Sitater == * Samme hva som hender i natt, har vi ansvaret for å sikre at vi står sammen i kampen mot Mike Rogers ** [https://www.nrk.no/urix/demokrater-vil-ha-noe-nytt-1.17979509 Mer enn et venstreopprør] NRK Publisert 5. aug, 2025 28613 wikitext text/x-wiki [[w:Abdul El-Sayed|Abdul El-Sayed]] == Sitater == * Samme hva som hender i natt, har vi ansvaret for å sikre at vi står sammen i kampen mot Mike Rogers ** [https://www.nrk.no/urix/demokrater-vil-ha-noe-nytt-1.17979509 Mer enn et venstreopprør] NRK Publisert 5. aug, 2025 7dl90cm6duflsd91l2hi6csd23d9sb1 28614 28613 2026-11-02T20:11:49Z Ottawahitech 3667 fra nowp 28614 wikitext text/x-wiki [[w:Abdul El-Sayed|Abdul El-Sayed]] ble født 31. oktober 1984 i Rochester Hills i Michigan i USA. Han er sønn av foreldre med egyptisk familiebakgrunn. El-Sayed ble uteksaminert fra University of Michigan med en bachelorgrad i biologi og statsvitenskap. Deretter fullførte El-Sayed en medisinsk grad ved Columbia University og senere en mastergrad, før han oppnådde en doktorgrad i folkehelse ved Oxford University. Han er muslim og snakker både engelsk og arabisk. == Sitater == * Samme hva som hender i natt, har vi ansvaret for å sikre at vi står sammen i kampen mot Mike Rogers ** [https://www.nrk.no/urix/demokrater-vil-ha-noe-nytt-1.17979509 Mer enn et venstreopprør] NRK Publisert 5. aug, 2025 6glenhbrh4jmx6m6n2jbh1bksar03m3 28615 28614 2026-11-02T20:12:16Z Ottawahitech 3667 added [[Category:Biografier om levende personer]] using [[Help:Gadget-HotCat|HotCat]] 28615 wikitext text/x-wiki [[w:Abdul El-Sayed|Abdul El-Sayed]] ble født 31. oktober 1984 i Rochester Hills i Michigan i USA. Han er sønn av foreldre med egyptisk familiebakgrunn. El-Sayed ble uteksaminert fra University of Michigan med en bachelorgrad i biologi og statsvitenskap. Deretter fullførte El-Sayed en medisinsk grad ved Columbia University og senere en mastergrad, før han oppnådde en doktorgrad i folkehelse ved Oxford University. Han er muslim og snakker både engelsk og arabisk. == Sitater == * Samme hva som hender i natt, har vi ansvaret for å sikre at vi står sammen i kampen mot Mike Rogers ** [https://www.nrk.no/urix/demokrater-vil-ha-noe-nytt-1.17979509 Mer enn et venstreopprør] NRK Publisert 5. aug, 2025 [[Kategori:Biografier om levende personer]] fgpeng9cu4q3bbvt7dnb54mvqrylt5g 28616 28615 2026-11-02T20:12:34Z Ottawahitech 3667 added [[Category:Politikere]] using [[Help:Gadget-HotCat|HotCat]] 28616 wikitext text/x-wiki [[w:Abdul El-Sayed|Abdul El-Sayed]] ble født 31. oktober 1984 i Rochester Hills i Michigan i USA. Han er sønn av foreldre med egyptisk familiebakgrunn. El-Sayed ble uteksaminert fra University of Michigan med en bachelorgrad i biologi og statsvitenskap. Deretter fullførte El-Sayed en medisinsk grad ved Columbia University og senere en mastergrad, før han oppnådde en doktorgrad i folkehelse ved Oxford University. Han er muslim og snakker både engelsk og arabisk. == Sitater == * Samme hva som hender i natt, har vi ansvaret for å sikre at vi står sammen i kampen mot Mike Rogers ** [https://www.nrk.no/urix/demokrater-vil-ha-noe-nytt-1.17979509 Mer enn et venstreopprør] NRK Publisert 5. aug, 2025 [[Kategori:Biografier om levende personer]] [[Kategori:Politikere]] 9daot97n59qq7rscu7lvf6t9un8z2qc 28617 28616 2026-11-02T20:12:48Z Ottawahitech 3667 added [[Category:Amerikanere]] using [[Help:Gadget-HotCat|HotCat]] 28617 wikitext text/x-wiki [[w:Abdul El-Sayed|Abdul El-Sayed]] ble født 31. oktober 1984 i Rochester Hills i Michigan i USA. Han er sønn av foreldre med egyptisk familiebakgrunn. El-Sayed ble uteksaminert fra University of Michigan med en bachelorgrad i biologi og statsvitenskap. Deretter fullførte El-Sayed en medisinsk grad ved Columbia University og senere en mastergrad, før han oppnådde en doktorgrad i folkehelse ved Oxford University. Han er muslim og snakker både engelsk og arabisk. == Sitater == * Samme hva som hender i natt, har vi ansvaret for å sikre at vi står sammen i kampen mot Mike Rogers ** [https://www.nrk.no/urix/demokrater-vil-ha-noe-nytt-1.17979509 Mer enn et venstreopprør] NRK Publisert 5. aug, 2025 [[Kategori:Biografier om levende personer]] [[Kategori:Politikere]] [[Kategori:Amerikanere]] 6hsydsu9oj2wu2w5hxa64e6c0g7cilz 28618 28617 2026-11-02T20:13:10Z Ottawahitech 3667 added [[Category:Fødsler i 1984]] using [[Help:Gadget-HotCat|HotCat]] 28618 wikitext text/x-wiki [[w:Abdul El-Sayed|Abdul El-Sayed]] ble født 31. oktober 1984 i Rochester Hills i Michigan i USA. Han er sønn av foreldre med egyptisk familiebakgrunn. El-Sayed ble uteksaminert fra University of Michigan med en bachelorgrad i biologi og statsvitenskap. Deretter fullførte El-Sayed en medisinsk grad ved Columbia University og senere en mastergrad, før han oppnådde en doktorgrad i folkehelse ved Oxford University. Han er muslim og snakker både engelsk og arabisk. == Sitater == * Samme hva som hender i natt, har vi ansvaret for å sikre at vi står sammen i kampen mot Mike Rogers ** [https://www.nrk.no/urix/demokrater-vil-ha-noe-nytt-1.17979509 Mer enn et venstreopprør] NRK Publisert 5. aug, 2025 [[Kategori:Biografier om levende personer]] [[Kategori:Politikere]] [[Kategori:Amerikanere]] [[Kategori:Fødsler i 1984]] op7opctilzd9tfe1qgkkybc1a833agj Kategori:Tyrkere 14 5470 28622 2026-11-02T20:31:05Z Ottawahitech 3667 Opprettet tom side 28622 wikitext text/x-wiki phoiac9h4m842xq45sp7s6u21eteeq1 28623 28622 2026-11-02T20:31:16Z Ottawahitech 3667 added [[Category::Personer sortert etter nasjonalitet]] using [[Help:Gadget-HotCat|HotCat]] 28623 wikitext text/x-wiki [[Kategori::Personer sortert etter nasjonalitet]] klszao0jgfs2i6kbytkk3tje8rp2kib