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]--*/
 
Профиль