Toggle menu
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.
Revision as of 05:07, 25 May 2026 by Bosco (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

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.
//<nowiki>
mw.loader.using(['mediawiki.api','mediawiki.util'],function(){
  $(function(){
    mw.util.addPortletLink('p-personal','#','Global Lock Report','pt-global-lock-report','Report user(s) to Steward requests');
    $('#pt-global-lock-report').on('click',function(e){
      e.preventDefault();
      var $form=$('<div id="globalLockForm">').css({padding:'1em',border:'1px solid #ccc',background:'#f9f9f9'});
      $form.append('<h3>Report user(s) for global lock</h3>');
      $form.append('<label>Section title: </label><input id="reportTitle" style="width:300px" placeholder="Username of user being locked"><br><br>');
      var $userContainer=$('<div id="userContainer">');$form.append($userContainer);
      $form.append('<button id="addUser">Add another username</button><br><br>');
      $form.append('<label>Reason: </label><input id="reason" style="width:300px" placeholder="Include your reason here"><br><br>');
      $form.append('<button id="submitReport">Submit report</button> <button id="cancelReport">Cancel</button>');
      $('#mw-content-text').prepend($form);

      function addUserField(){
        if($('#userContainer .userRow').length>=10){alert('MultiLock supports at most 10 usernames.');return;}
        var $row=$('<div class="userRow">').css({margin:'5px 0'});
        $row.append('<input class="username" style="width:200px" placeholder="username"> ');
        $row.append('<label><input type="checkbox" class="hideName"> Hide?</label>');
        $userContainer.append($row);
      }
      addUserField();
      $('#addUser').click(function(ev){ev.preventDefault();addUserField();});

      $('#submitReport').click(async function(){
        var title=$('#reportTitle').val().trim();
        var reason=$('#reason').val().trim()||'No reason provided';
        var users=[];
        $('#userContainer .userRow').each(function(){
          var uname=$(this).find('.username').val().trim();
          var hide=$(this).find('.hideName').is(':checked');
          if(uname)users.push({name:uname,hide:hide});
        });
        if(!title||users.length===0){alert('Please fill in the title and at least one username.');return;}

        var wikitext='== '+title+' ==\n{{status}}\n';
        if(users.length===1){
          var u=users[0];
          wikitext+='*{{LockHide|'+u.name+(u.hide?'|hidename=1':'')+'}}\n';
        }else{
          users.forEach(function(u){
            wikitext+='*{{MultiLock|'+u.name+(u.hide?'|hidename=1':'')+'}}\n';
          });
        }
        wikitext+='*:'+reason+' ~~~~';

        var targetTitle='Steward requests';

        if(mw.config.get('wgServer').includes('meta.wikioasis.org')){
          // On Meta: submit directly
          var api=new mw.Api();
          try{
            await api.postWithEditToken({action:'edit',title:targetTitle,appendtext:'\n'+wikitext+'\n',summary:'Reporting user(s) for global lock) ([[User:Bosco/ReportSRG.js|ReportSRG]]'});
            mw.notify('Report successfully submitted to Steward requests on Meta',{type:'success'});
          }catch(e){
            console.error(e);
            mw.notify('Error submitting report: '+e.toString(),{type:'error'});
          }
        }else{
          // On non‑Meta: show the wikitext and redirect to Meta source editor
          var $preview=$('<textarea readonly>').css({width:'100%',height:'150px'}).val(wikitext);
          $('#globalLockForm').append('<h4>Copy this wikitext and paste it on Meta:</h4>').append($preview);
          var url='https://meta.miraheze.org/wiki/'+encodeURIComponent(targetTitle)+'?veaction=editsource';
          window.open(url,'_blank');
          mw.notify('Redirecting to Meta in a new tab. Please paste your report there.',{type:'info'});
        }
      });

      $('#cancelReport').click(function(){$('#globalLockForm').remove();});
    });
  });
});
//</nowiki>
Cookies help us deliver our services. By using our services, you agree to our use of cookies.