Page Menu
Home
WickedGov Phorge
Search
Configure Global Search
Log In
Files
F2751318
ext.uls.setlang.js
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
3 KB
Referenced Files
None
Subscribers
None
ext.uls.setlang.js
View Options
/*!
* Loaded when setlang query parameter is set on the page.
*
* @private
* @since 2020.01
*
* Copyright (C) 2019-2020 Alolita Sharma, Amir Aharoni, Arun Ganesh, Brandon Harris,
* Niklas Laxström, Pau Giner, Santhosh Thottingal, Siebrand Mazeland and other
* contributors. See CREDITS for a list.
*
* UniversalLanguageSelector is dual licensed GPLv2 or later and MIT. You don't
* have to do anything special to choose one license or the other and you don't
* have to notify anyone which license you are using. You are free to use
* UniversalLanguageSelector in commercial projects as long as the copyright
* header is left intact. See files GPL-LICENSE and MIT-LICENSE for details.
*
* @file
* @ingroup Extensions
* @licence GNU General Public Licence 2.0 or later
* @licence MIT License
*/
(
function
()
{
'use strict'
;
var
$cancelBtn
,
$acceptBtn
;
function
getHeading
(
languageName
)
{
return
$
(
'<h4>'
).
text
(
mw
.
msg
(
'ext-uls-setlang-heading'
,
languageName
)
);
}
function
getMessage
(
languageName
,
languageCode
)
{
return
$
(
'<p>'
).
append
(
mw
.
message
(
'ext-uls-setlang-message'
,
languageName
,
languageCode
).
parseDom
()
);
}
function
getButtons
()
{
$cancelBtn
=
$
(
'<button>'
)
.
addClass
(
'cdx-button uls-setlang-cancel'
)
.
text
(
mw
.
msg
(
'ext-uls-setlang-cancel'
)
);
$acceptBtn
=
$
(
'<button>'
)
.
addClass
(
'cdx-button cdx-button--type-primary cdx-button--action-progressive active uls-setlang-apply'
)
.
text
(
mw
.
msg
(
'ext-uls-setlang-accept'
)
);
return
$
(
'<div>'
)
.
addClass
(
'language-setlang-buttons'
)
.
append
(
$cancelBtn
,
$acceptBtn
);
}
function
toggleLoading
(
$btnSubmit
,
isLoading
)
{
$btnSubmit
.
text
(
mw
.
msg
(
isLoading
?
'ext-uls-setlang-loading'
:
'ext-uls-setlang-accept'
)
)
.
prop
(
'disabled'
,
isLoading
);
}
/**
* @return {string}
*/
function
currentUrlWithoutSetLang
()
{
var
url
=
new
URL
(
location
.
href
);
url
.
searchParams
.
delete
(
'setlang'
);
return
url
.
toString
();
}
function
removeSetLangFromHistory
()
{
if
(
new
URL
(
location
.
href
).
searchParams
.
has
(
'setlang'
)
)
{
history
.
replaceState
(
null
,
''
,
currentUrlWithoutSetLang
()
);
}
}
function
updateLanguage
(
langCode
)
{
var
api
=
new
mw
.
Api
();
return
api
.
postWithToken
(
'csrf'
,
{
action
:
'ulssetlang'
,
languagecode
:
langCode
,
formatversion
:
2
}
).
done
(
function
()
{
location
.
replace
(
currentUrlWithoutSetLang
()
);
}
).
fail
(
function
(
code
,
result
)
{
var
apiErrorInfo
=
result
.
error
&&
result
.
error
.
info
||
mw
.
msg
(
'ext-uls-setlang-unknown-error'
);
mw
.
notify
(
mw
.
msg
(
'ext-uls-setlang-error'
,
apiErrorInfo
),
{
type
:
'error'
,
tag
:
'uls-setlang-error'
}
);
}
);
}
function
createSetLangDialog
(
languageName
,
languageCode
)
{
return
$
(
'<div>'
)
.
addClass
(
'uls-setlang-dialog'
)
.
append
(
getHeading
(
languageName
),
getMessage
(
languageName
,
languageCode
),
getButtons
()
).
appendTo
(
document
.
body
);
}
function
addSetLangDialogEvents
(
ulsDialog
)
{
$acceptBtn
.
on
(
'click'
,
function
()
{
toggleLoading
(
$acceptBtn
,
true
);
updateLanguage
(
mw
.
config
.
get
(
'wgULSSetLangCode'
)
).
fail
(
function
()
{
toggleLoading
(
$acceptBtn
,
false
);
}
);
}
);
$cancelBtn
.
on
(
'click'
,
function
()
{
ulsDialog
.
close
();
}
);
}
$
(
function
()
{
var
setLangCode
=
mw
.
config
.
get
(
'wgULSSetLangCode'
),
setLangName
=
mw
.
config
.
get
(
'wgULSSetLangName'
),
currentLangCode
=
mw
.
config
.
get
(
'wgULSCurrentLangCode'
),
$ulsDialog
,
ulsSetLangDialog
;
if
(
currentLangCode
===
setLangCode
)
{
removeSetLangFromHistory
();
return
;
}
// Setup and show the dialog
$ulsDialog
=
createSetLangDialog
(
setLangName
,
setLangCode
);
ulsSetLangDialog
=
new
mw
.
uls
.
Dialog
(
{
container
:
$ulsDialog
,
hasOverlay
:
true
,
afterClose
:
removeSetLangFromHistory
}
);
addSetLangDialogEvents
(
ulsSetLangDialog
);
setTimeout
(
ulsSetLangDialog
.
open
);
}
);
}()
);
File Metadata
Details
Attached
Mime Type
text/x-asm
Expires
Fri, Jul 3, 18:17 (1 d, 9 h)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
36/1e/0c01435a076d24ad944141f2e248
Default Alt Text
ext.uls.setlang.js (3 KB)
Attached To
Mode
rMWPROD MediaWiki Production
Attached
Detach File
Event Timeline
Log In to Comment