MediaWiki:Group-user.js
Замечание. Возможно, после сохранения вам придётся очистить кэш своего браузера, чтобы увидеть изменения.
/*--[dom]--*/
var $html = $( 'html' );
var $head = $( 'head' );
var $body = $( 'body' );
var $globalWrapper = $( '#globalWrapper' );
var $bodyContent = $( '#bodyContent' );
/*--[/dom]--*/
/*--[styles]--*/
var styles = {
constructor: function() {
$head.append( '<link rel="stylesheet" href="/wiki/index.php?title=MediaWiki:Group-user.css&ctype=text%2Fcss&action=raw">' );
}
};
$( styles.constructor );
/*--[/styles]--*/
/*--[legacy]--*/
var legacy__mwNav = $( '#column-one' );
$( '#globalWrapper' ).prepend( legacy__mwNav );
$( 'body' ).addClass( 'user-admin' );
$( '#p-tb ul' ).prepend( $( '#n-recentchanges' ) );
$( '#p-cactions ul' ).append( $( '#n-purge' ) );
$( '#p-tb ul' ).append( $( '#n-newfiles' ) );
legacy__mwNav.css( {'display': 'flex'} );
/*--[/legacy]--*/
/*--[codemirror]--
var codemirror = {
constructor: function() {
$wpTextbox1 = $( '#wpTextbox1' );
function codemirror__load_style( name ) {
$head.append( '<link rel="stylesheet" href="/wiki/index.php?title=Mediawiki:Libs/codemirror/' + name + '.css&ctype=text%2Fcss&action=raw">' );
};
function codemirror__load_script( name ) {
$.ajax( {
async: false,
url: '/wiki/index.php?title=MediaWiki:Libs/codemirror/' + name + '.js&ctype=text%2Fjavascript&action=raw',
dataType: 'script'
} );
};
if ( $wpTextbox1.length ) {
codemirror__load_style( 'codemirror' );
codemirror__load_style( 'theme/github-dark' );
codemirror__load_script( 'codemirror' );
codemirror__load_script( 'mode/xml/xml' );
codemirror__load_script( 'addon/edit/closebrackets' );
codemirror__load_script( 'addon/edit/matchbrackets' );
codemirror__load_script( 'addon/edit/matchtags' );
codemirror__load_script( 'addon/fold/xml-fold' );
codemirror__load_script( 'addon/selection/active-line' );
var myCodeMirror = CodeMirror.fromTextArea( document.getElementById( 'wpTextbox1' ), {
autoCloseBrackets: true,
htmlMode: true,
indentUnit: 2,
matchBrackets: true,
matchTags: {bothTags: true},
mode: 'xml',
// lineNumbers: true,
lineWrapping: true,
styleActiveLine: true,
theme: 'github-dark'
} );
};
}
};
if (wgAction === 'edit' || 'submit')
$( codemirror.constructor );
--[/codemirror]--*/
/*--[new]--*/
if (
wgPageName == 'Участник:Hitman'
) {
if ( $( '.warface-wiki--legacy' ).length == 0 ) {
$head.append( '<link rel="stylesheet" href="/wiki/index.php?title=MediaWiki:Common--new.css&ctype=text%2Fcss&action=raw">' );
$.getScript( '/wiki/index.php?title=MediaWiki:Common--new.js&ctype=text%2Fjavascript&action=raw' );
};
};
/*--[/new]--*/
/*--[test]--*/
(async function () {
const AUTH_URL = 'https://wf.cdn.gmru.net/static/wf.mail.ru/js/main/auth.js';
function loadScript(src) {
return new Promise((resolve, reject) => {
const s = document.createElement('script');
s.src = src;
s.async = true;
s.onload = resolve;
s.onerror = reject;
document.head.appendChild(s);
});
}
// 1) Подгружаем auth.js (создаст глобальный oauth)
await loadScript(AUTH_URL);
// 2) Подписываемся на событие ДО init, чтобы точно не пропустить
const onOauthUser = async () => {
try {
if (!window.oauth || !oauth.user) return;
if (oauth.user.status !== 1) {
// не залогинен — можешь показать кнопку "Войти" и по клику звать oauth.login()
console.log('Не залогинен');
return;
}
// базовые данные от auth.js
const csaid = oauth.user.id; // uid
const siteName = oauth.user.name;
// 3) Тянем профиль (важно: credentials include)
const r = await fetch('/dynamic/profile/?a=profile_json', { credentials: 'include' });
if (!r.ok) throw new Error('profile_json HTTP ' + r.status);
const data = await r.json();
// chars: { "<profile_id>": { name, draw:{id,nickname...}, ... }, ... }
const charsObj = data?.chars || {};
const chars = Object.entries(charsObj).map(([profile_id, ch]) => ({
profile_id,
name: ch?.name || ch?.draw?.nickname || '',
})).filter(x => x.name);
// пример вывода в DOM
const elId = document.querySelector('.user_csaid');
const elName = document.querySelector('.user_name');
const elChars = document.querySelector('.user_chars'); // сделай контейнер, если нужно
if (elId) elId.textContent = String(csaid ?? '');
if (elName) elName.textContent = String(siteName ?? '');
if (elChars) {
elChars.innerHTML = chars.map(c => `<div>${c.name} (profile_id: ${c.profile_id})</div>`).join('');
}
// если нужно дальше работать в других скриптах:
window.wfUser = { csaid, siteName, chars };
} catch (e) {
console.error('oauth/profile init failed', e);
}
};
document.addEventListener('oauthUser', onOauthUser, { once: true });
// 4) Стартуем oauth (внутри сделает checkuser и потом вызовет oauthUser)
await oauth.init();
})();
/*--[/test]--*/