Note:
After publishing, you may have to bypass your browser's cache to see the changes.
- Firefox / Safari:
Hold
Shift
while clicking
Reload
, or press either
Ctrl-F5
or
Ctrl-R
(
?-R
on a Mac)
- Google Chrome:
Press
Ctrl-Shift-R
(
?-Shift-R
on a Mac)
- Edge:
Hold
Ctrl
while clicking
Refresh
, or press
Ctrl-F5
.
/**
* MediaWiki:Common.js - Any JavaScript here will be loaded for all users on every page load.
**/
$
(
function
()
{
mw
.
loader
.
using
(
[
'mediawiki.util'
,
'mediawiki.Uri'
]
).
done
(
function
()
{
// If Jimmy tweets a bare link to https://donate.wikimedia.org/w/index.php?title=Special:LandingPage
// we are gonna have a bad time as geolocation doesn't happen. Do a redirect to send them round again
try
{
var
uri
=
new
mw
.
Uri
(
window
.
location
.
href
);
if
(
uri
.
query
.
title
===
'Special:LandingPage'
&&
uri
.
query
.
country
===
undefined
&&
uri
.
query
.
retried
===
undefined
)
{
console
.
log
(
'redirecting to pick up country parameter'
);
uri
.
path
=
''
;
uri
.
query
.
retried
=
1
;
// only do this once
delete
uri
.
query
.
title
;
window
.
location
.
href
=
uri
.
toString
();
}
}
catch
(
error
)
{
console
.
warn
(
'Error parsing URL. Possibly due to unreplaced % signs?'
);
}
// Disable logo link
$
(
'#p-logo a'
).
attr
(
{
href
:
'#'
,
title
:
''
}
);
// Code for donation forms - https://donate.wikimedia.org/wiki/MediaWiki:DonationForm.js
if
(
document
.
forms
[
'donateForm'
]
)
{
var
formJS
=
mw
.
util
.
getParamValue
(
'formJS'
);
if
(
formJS
&&
formJS
.
match
(
/^MediaWiki:[^&<>=%#]*\.js$/
)
)
{
mw
.
loader
.
load
(
'/w/index.php?title='
+
formJS
+
'&action=raw&ctype=text/javascript'
);
}
else
{
mw
.
loader
.
load
(
'/w/index.php?title=MediaWiki:DonationForm.js&action=raw&ctype=text/javascript'
);
}
// Load monthly convert JS
// TODO: allow loading different JS variants, either here or defined in the Template
mw
.
loader
.
load
(
'/w/index.php?title=MediaWiki:MonthlyConvert.js&action=raw&ctype=text/javascript'
);
}
// Allow manual country selection and reload
// Run this only when needed
var
enableCountrySelect
=
function
()
{
var
language
=
mw
.
config
.
get
(
'wgPageContentLanguage'
),
countrySelect
=
document
.
getElementById
(
'country-select'
);
// Translations
if
(
language
!==
'en'
&&
language
!==
'en-gb'
)
{
const
translationsUrl
=
'https://donate.wikimedia.org/wiki/Module:Country_links/data.json?action=raw'
;
$
.
getJSON
(
translationsUrl
,
function
(
translations
)
{
if
(
translations
[
language
]
)
{
var
list
=
Array
.
from
(
countrySelect
.
options
);
list
.
forEach
(
option
=>
{
option
.
innerText
=
translations
[
language
][
option
.
value
]
||
option
.
innerText
;
});
// Sort for new language
list
.
sort
(
function
(
a
,
b
)
{
return
a
.
innerText
.
localeCompare
(
b
.
innerText
);
});
for
(
var
i
=
0
;
i
<
list
.
length
;
i
++
)
{
list
[
i
].
parentNode
.
appendChild
(
list
[
i
]
);
}
}
});
}
document
.
getElementById
(
'country-select-go'
).
addEventListener
(
'click'
,
function
(
e
)
{
if
(
countrySelect
.
value
)
{
mw
.
loader
.
using
(
[
'mediawiki.Uri'
]
).
done
(
function
()
{
var
uri
=
new
mw
.
Uri
(
document
.
location
.
href
);
uri
.
query
.
country
=
countrySelect
.
value
;
document
.
location
=
uri
.
toString
();
});
}
});
};
if
(
document
.
getElementById
(
'country-change'
)
)
{
document
.
getElementById
(
'country-change'
).
addEventListener
(
'click'
,
function
(
e
)
{
document
.
getElementById
(
'country-change-select'
).
style
.
display
=
'block'
;
enableCountrySelect
();
});
}
if
(
document
.
getElementById
(
'geolocate-error'
)
)
{
enableCountrySelect
();
}
// Code for Thank You pages - https://donate.wikimedia.org/wiki/MediaWiki:ThankYouPage.js
if
(
mw
.
config
.
get
(
'wgTitle'
).
indexOf
(
'Thank You'
)
!==
-
1
)
{
mw
.
loader
.
load
(
'/w/index.php?title=MediaWiki:ThankYouPage.js&action=raw&ctype=text/javascript'
);
}
// Code for support pages - https://donate.wikimedia.org/wiki/MediaWiki:SupportPage.js
// TODO: have a better way to trigger this
var
supportPages
=
[
'Ways to Give'
,
'Problems donating'
,
'Cancel or change recurring giving'
,
'Matching Gifts'
,
'Support Page'
,
'FAQ'
,
'Tax deductibility'
,
'US State Solicitation Disclosures'
,
'Draft:FAQ'
];
if
(
supportPages
.
indexOf
(
mw
.
config
.
get
(
'wgTitle'
).
split
(
'/'
)[
0
]
)
!==
-
1
)
{
mw
.
loader
.
load
(
'/w/index.php?title=MediaWiki:SupportPage.js&action=raw&ctype=text/javascript'
);
}
// Load some tools for editors - https://donate.wikimedia.org/wiki/MediaWiki:EditTemplates.js
if
(
mw
.
config
.
get
(
'wgUserName'
)
!==
null
)
{
mw
.
loader
.
load
(
'/w/index.php?title=MediaWiki:EditTemplates.js&action=raw&ctype=text/javascript'
);
}
/**
* @source www.mediawiki.org/wiki/Snippets/Load_JS_and_CSS_by_URL
* @rev 6
*/
var
extraCSS
=
mw
.
util
.
getParamValue
(
'withCSS'
),
extraJS
=
mw
.
util
.
getParamValue
(
'withJS'
);
if
(
extraCSS
)
{
if
(
extraCSS
.
match
(
/^MediaWiki:[^&<>=%#]*\.css$/
)
)
{
mw
.
loader
.
load
(
'/w/index.php?title='
+
extraCSS
+
'&action=raw&ctype=text/css'
,
'text/css'
);
}
else
{
mw
.
notify
(
'Only pages from the MediaWiki namespace are allowed.'
,
{
title
:
'Invalid withCSS value'
}
);
}
}
if
(
extraJS
)
{
if
(
extraJS
.
match
(
/^MediaWiki:[^&<>=%#]*\.js$/
)
)
{
mw
.
loader
.
load
(
'/w/index.php?title='
+
extraJS
+
'&action=raw&ctype=text/javascript'
);
}
else
{
mw
.
notify
(
'Only pages from the MediaWiki namespace are allowed.'
,
{
title
:
'Invalid withJS value'
}
);
}
}
/* HACK to run certain inline scripts when document ready (e.g. so jquery is avaliable)
TODO: Make suitable for multiple scripts. Or figure out a better way to do this.
*/
if
(
typeof
inlineScriptWhenReady
!==
'undefined'
)
{
inlineScriptWhenReady
();
}
}
);
});