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