MediaWiki:Common.js: Difference between revisions

No edit summary
No edit summary
Line 109: Line 109:


}() );
}() );
mw.loader.using(['mediawiki.util']).then(function () {
  if (mw.config.get('wgPageName') !== 'Main_Page') return;
  var groups = mw.config.get('wgUserGroups') || [];
  var isAdmin = groups.indexOf('sysop') !== -1;
  if (!isAdmin) return;
  var container = document.querySelector('.vector-header-end');
  if (!container) return;
  var btn = document.createElement('button');
  btn.className = 'grantha-new-btn';
  btn.innerText = '+ New';
  btn.onclick = openCreateDialog;
  container.prepend(btn);
});
function openCreateDialog() {
function openCreateDialog() {


Line 137: Line 116:
   overlay.innerHTML = `
   overlay.innerHTML = `
     <div class="grantha-modal-box">
     <div class="grantha-modal-box">
       <div class="gm-title">Create New Document</div>
        
       <input type="text" id="gm-input" placeholder="Enter page name"/>
      <div class="gm-header">
        <div class="gm-title">New document</div>
        <div class="gm-sub">Create a new text</div>
      </div>
 
       <input  
        type="text"  
        id="gm-input"  
        placeholder="Untitled document"
        autofocus
      />
 
       <div class="gm-actions">
       <div class="gm-actions">
         <button id="gm-cancel">Cancel</button>
         <button class="gm-btn gm-cancel">Cancel</button>
         <button id="gm-create">Create</button>
         <button class="gm-btn gm-create">Create</button>
       </div>
       </div>
     </div>
     </div>
   `;
   `;
Line 148: Line 139:
   document.body.appendChild(overlay);
   document.body.appendChild(overlay);


   document.getElementById('gm-cancel').onclick = function () {
   var input = overlay.querySelector('#gm-input');
  input.focus();
 
  // Cancel
  overlay.querySelector('.gm-cancel').onclick = function () {
     overlay.remove();
     overlay.remove();
   };
   };


   document.getElementById('gm-create').onclick = function () {
   // Create
     var name = document.getElementById('gm-input').value.trim();
  overlay.querySelector('.gm-create').onclick = function () {
     var name = input.value.trim();
     if (!name) return;
     if (!name) return;


Line 159: Line 155:


     window.location.href = mw.util.getUrl(name, { action: 'edit' });
     window.location.href = mw.util.getUrl(name, { action: 'edit' });
  };
  // Enter key support
  input.addEventListener('keydown', function (e) {
    if (e.key === 'Enter') {
      overlay.querySelector('.gm-create').click();
    }
  });
  // Click outside to close
  overlay.onclick = function (e) {
    if (e.target === overlay) overlay.remove();
   };
   };
}
}