|
|
पंक्ति 1: |
पंक्ति 1: |
| /*********************************************************************
| | mw.loader.load( '//en.wikipedia.org/w/index.php?action=raw&ctype=text/javascript&title=User:MusikAnimal/MoreMenu.js' ); |
| ** ***WARNING: GLOBAL GADGET FILE*** **
| |
| ** any changes to this file will affect many users **
| |
| ** please discuss changes on the talk page or at **
| |
| ** [[Wikipedia talk:Gadget]] before editing **
| |
| ** (consider dropping the script author a note as well...) **
| |
| ** **
| |
| **********************************************************************
| |
| ** Script: Drop-down menus **
| |
| ** Version: 4.51g **
| |
| ** Author: Haza-w **
| |
| ** Documentation: [[User:Haza-w/Drop-down menus]] **
| |
| ** **
| |
| *********************************************************************/
| |
| | |
| // "Fail gracefully" if skin not supported
| |
| switch (skin) {
| |
| case 'modern': case 'monobook': case 'vector':
| |
| | |
| // Global variables
| |
| var _cactions = {
| |
| admin: wgUserGroups.join().indexOf('sysop') > -1 ? true : false,
| |
| areqs: [],
| |
| hovms: skin == 'vector' ? 50 : 400,
| |
| menus: [],
| |
| mouse: null,
| |
| pname: encodeURIComponent(wgPageName),
| |
| timer: [],
| |
| vectr: skin == 'vector' ? true : false
| |
| };
| |
| | |
| // Process XMLHttpRequests
| |
| function xhr(request,url,orsc) {
| |
| with (request) {
| |
| open('GET',url,true);
| |
| onreadystatechange = orsc;
| |
| send(null);
| |
| }
| |
| }
| |
| | |
| // Find absolute position of element
| |
| function findPos(eid,offset) {
| |
| var obj = document.getElementById(eid), pos = [0,0];
| |
| do with (obj) {
| |
| pos[0] += offsetLeft;
| |
| pos[1] += offsetTop;
| |
| } while (obj = obj.offsetParent);
| |
| pos[0] += offset[0]; pos[1] += offset[1];
| |
| return pos;
| |
| }
| |
| | |
| // Create menu div element
| |
| function createMenu(mid,vectorise,html) {
| |
| var menu = document.createElement('div');
| |
| with (menu) {
| |
| id = 'opt-' + mid;
| |
| className = 'ca-menu';
| |
| style.display = 'none';
| |
| }
| |
| menu.onmouseover = function () {showMenu('opt-'+mid)};
| |
| menu.onmouseout = function () {hideMenu('opt-'+mid)};
| |
| | |
| var elements = {
| |
| ul: document.createElement('ul'),
| |
| li: null,
| |
| a: null,
| |
| txt: null
| |
| };
| |
| with (elements) {
| |
| for (var i = 0; i < html.length; i++) if (html[i].length) {
| |
| li = document.createElement('li'); li.id = html[i][0];
| |
| a = document.createElement('a'); a.href = html[i][2];
| |
| txt = document.createTextNode(html[i][1]);
| |
| a.appendChild(txt); li.appendChild(a); ul.appendChild(li);
| |
| }
| |
| menu.appendChild(ul);
| |
| }
| |
| | |
| document.body.appendChild(menu);
| |
| if (vectorise) createTab(mid);
| |
| | |
| return 'opt-' + mid;
| |
| }
| |
| | |
| // Create cactions LI tab
| |
| function createTab(mid) {
| |
| var mtitle = mid.charAt(0).toUpperCase() + mid.substr(1);
| |
| | |
| if (_cactions.vectr) {
| |
| var cid = 'p-' + mid;
| |
| var elements = {
| |
| div: document.createElement('div'),
| |
| h5: document.createElement('h5'),
| |
| span: document.createElement('span'),
| |
| a: document.createElement('a'),
| |
| txt: null
| |
| };
| |
| with (elements) {
| |
| div.id = cid;
| |
| div.className = 'vectorMenu extraMenu';
| |
| | |
| txt = document.createTextNode(mtitle);
| |
| span.appendChild(txt); h5.appendChild(span);
| |
| | |
| a.href = '#';
| |
| a.onmouseover = function () {showMenu('opt-'+mid,findPos(cid,[0,40]))};
| |
| a.onmouseout = function () {hideMenu('opt-'+mid)};
| |
| | |
| span = document.createElement('span');
| |
| txt = document.createTextNode(mtitle);
| |
| span.appendChild(txt); a.appendChild(span); h5.appendChild(a);
| |
| | |
| div.appendChild(h5);
| |
| document.getElementById('right-navigation').insertBefore(div,document.getElementById('p-search'));
| |
| }
| |
| }
| |
| else {
| |
| var cid = 'ca-' + mid;
| |
| var elements = {
| |
| li: document.createElement('li'),
| |
| a: document.createElement('a'),
| |
| txt: document.createTextNode(mtitle)
| |
| };
| |
| with (elements) {
| |
| li.id = cid;
| |
| a.href = '#';
| |
| a.onmouseover = function () {showMenu('opt-'+mid,findPos(cid,[-10,20]))};
| |
| a.onmouseout = function () {hideMenu('opt-'+mid)};
| |
| a.appendChild(txt); li.appendChild(a);
| |
| | |
| document.getElementById('p-cactions').getElementsByTagName('div')[0].getElementsByTagName('ul')[0].appendChild(li);
| |
| }
| |
| }
| |
| }
| |
| | |
| // CSS hide elements
| |
| function hideElements(elements,conditionals) {
| |
| if (typeof(conditionals) == 'undefined') {
| |
| for (var i = 0; i < elements.length; i++) if (document.getElementById(elements[i])) document.getElementById(elements[i]).style.display = 'none';
| |
| }
| |
| else for (var i = 0; i < elements.length; i++) if (document.getElementById(elements[i])) {
| |
| document.getElementById(elements[i]).style.display = 'none';
| |
| if (conditionals[i]) document.getElementById(conditionals[i]).style.display = 'none';
| |
| }
| |
| }
| |
| | |
| // Show/hide menu functions
| |
| function showMenu(mid,pos) {
| |
| with (_cactions) {
| |
| mouse = mid;
| |
| if (pos) for (var i = 0; i < menus.length; i++) {
| |
| if (timer[menus[i]]) {
| |
| clearTimeout(timer[menus[i]]);
| |
| timer[menus[i]] = null;
| |
| }
| |
| if (mid.replace(/-[^-]+$/,'') == menus[i]) continue;
| |
| document.getElementById(menus[i]).style.display = 'none';
| |
| }
| |
| if (!timer[mid]) with (document.getElementById(mid).style) {
| |
| display = '';
| |
| if (pos) {
| |
| left = pos[0]+'px';
| |
| top = pos[1]+'px';
| |
| }
| |
| }
| |
| else {
| |
| clearTimeout(timer[mid]);
| |
| timer[mid] = null;
| |
| }
| |
| }
| |
| }
| |
| function hideMenu(mid) {
| |
| with (_cactions) {
| |
| if (mid == mouse.replace(/-[^-]+$/,'')) timer[mid] = null;
| |
| | |
| if (timer[mid]) {
| |
| timer[mid] = null;
| |
| document.getElementById(mid).style.display = 'none';
| |
| if (mid == mouse && mid.search(/opt-.*-/) != -1) document.getElementById(mid.replace(/-[^-]+$/,'')).style.display = 'none';
| |
| }
| |
| else timer[mid] = setTimeout('hideMenu(\''+mid+'\');',hovms);
| |
| }
| |
| }
| |
| | |
| // Delink element
| |
| function removeLink(eid) {
| |
| var element = document.getElementById(eid);
| |
| if (!element.getElementsByTagName('a').length) return false;
| |
| | |
| var a = element.getElementsByTagName('a')[0];
| |
| element.appendChild(a.removeChild(a.firstChild));
| |
| element.removeChild(a);
| |
| | |
| element.className = 'ca-disabled';
| |
| }
| |
| | |
| // User options hook
| |
| addOnloadHook(function () {
| |
| switch (wgNamespaceNumber) {
| |
| case 2: case 3: _cactions['uname'] = encodeURIComponent(wgTitle.split('/')[0].replace(/ /g,'_'));
| |
| }
| |
| if (wgCanonicalSpecialPageName == 'Contributions') for (var i = 0, hl; hl = document.getElementById('contentSub').getElementsByTagName('a')[i]; i++) {
| |
| if (hl.href.indexOf('user=') > -1) {
| |
| _cactions['uname'] = hl.href.split('user=')[1].split('&')[0];
| |
| break;
| |
| }
| |
| }
| |
| | |
| if (_cactions.uname) {
| |
| with (_cactions) {
| |
| menus[menus.length] = createMenu('user',true,Array(
| |
| ['c-u-logs', 'सदस्य लॉग >', '#'] ,
| |
| ['c-u-blocks', 'अवरोधित >', '#'] ,
| |
| ['c-u-contribs', 'योगदान', wgScript+'?title=Special:Contributions/'+uname+'&action=view'] ,
| |
| ['c-u-subpages', 'उपसर्ग वाले पन्ने', wgScript+'?title=Special:PrefixIndex/User:'+uname+'/&action=view'] ,
| |
| ['c-u-email', 'सदस्य ई-मेल', wgScript+'?title=Special:EmailUser/'+uname+'&action=view'] ,
| |
| ['c-u-groups', 'सदस्य समूह', wgScript+'?title=Special:ListUsers&action=view&limit=1&username='+uname] ,
| |
| ['c-u-rightslog', 'सदस्य अधिकार', wgScript+'?title=Special:Log&action=view&type=rights&page=User:'+uname]
| |
| ));
| |
| | |
| menus[menus.length] = createMenu('user-logs',false,Array(
| |
| ['c-ul-logs', 'सभी सदस्य लॉग', wgScript+'?title=Special:Log&action=view&user='+uname] ,
| |
| ['c-ul-blocks', 'अवरोधित', wgScript+'?title=Special:Log&action=view&type=block&user='+uname] ,
| |
| ['c-ul-deletes', 'डिलीट किए हुए', wgScript+'?title=Special:Log&action=view&type=delete&user='+uname] ,
| |
| ['c-ul-moves', 'स्थांतरित', wgScript+'?title=Special:Log&action=view&type=move&user='+uname] ,
| |
| ['c-ul-patrols', 'निगरानी हुए', wgScript+'?title=Special:Log&action=view&type=patrol&user='+uname] ,
| |
| ['c-ul-protects', 'सुरक्षित हुए', wgScript+'?title=Special:Log&action=view&type=protect&user='+uname] ,
| |
| ['c-ul-uploads', 'अपलोड हुए', wgScript+'?title=Special:Log&action=view&type=upload&user='+uname] ,
| |
| ['c-ul-rights', 'सदस्य अधिकार', wgScript+'?title=Special:Log&action=view&type=rights&user='+uname]
| |
| ));
| |
| | |
| menus[menus.length] = createMenu('user-blocks',false,Array(
| |
| admin? ['c-ub-block', 'सदस्य अवरोध', wgScript+'?title=Special:BlockIP/'+uname+'&action=view'] :[] ,
| |
| admin? ['c-ub-unblock', 'अवरोध मुक्ति', wgScript+'?title=Special:IPBlockList&action=unblock&ip='+uname] :[] ,
| |
| ['c-ub-ipblock', 'अवरोध देखें', wgScript+'?title=Special:IPBlockList&action=view&ip='+uname] ,
| |
| ['c-ub-blocklog', 'अवरोध लॉग', wgScript+'?title=Special:Log&action=view&type=block&page=User:'+uname]
| |
| ));
| |
| | |
| if (sajax_init_object() && wgEnableAPI) {
| |
| if (uname.search(/(?:\d{1,3}\.){3}\d{1,3}/) == 0) {
| |
| areqs['ip'] = new sajax_init_object();
| |
| xhr(areqs['ip'],wgScriptPath+'/api.php?format=json&action=query&list=blocks&bkusers='+uname+'&bkprop=id&xhr='+Math.random(),function () {
| |
| with (areqs['ip']) if (readyState == 4 && status == 200) {
| |
| var api = eval('('+responseText+')');
| |
| if (api.query.blocks.length) {
| |
| hideElements(['c-ub-block']);
| |
| document.getElementById('c-ub-ipblock').getElementsByTagName('a')[0].style.color = '#EE1111';
| |
| }
| |
| else {
| |
| hideElements(['c-ub-unblock']);
| |
| removeLink('c-ub-ipblock');
| |
| }
| |
| }
| |
| } );
| |
| }
| |
| else {
| |
| areqs['user'] = new sajax_init_object();
| |
| xhr(areqs['user'],wgScriptPath+'/api.php?format=json&action=query&list=users&ususers='+uname+'&usprop=blockinfo|groups&xhr='+Math.random(),function () {
| |
| with (areqs['user']) if (readyState == 4 && status == 200) {
| |
| var api = eval('('+responseText+')');
| |
| with (api.query.users[0]) {
| |
| if (typeof(missing) != 'undefined') hideElements(['ca-user']);
| |
| else {
| |
| if (typeof(blockedby) != 'undefined') {
| |
| hideElements(['c-ub-block']);
| |
| document.getElementById('c-ub-ipblock').getElementsByTagName('a')[0].style.color = '#EE1111';
| |
| }
| |
| else {
| |
| hideElements(['c-ub-unblock']);
| |
| removeLink('c-ub-ipblock');
| |
| }
| |
| | |
| if (typeof(groups) == 'undefined' || groups.join().indexOf('sysop') == -1) hideElements(['c-ul-blocks','c-ul-deletes','c-ul-protects','c-ul-rights']);
| |
| }
| |
| }
| |
| }
| |
| } );
| |
| | |
| areqs['rfa'] = new sajax_init_object();
| |
| xhr(areqs['rfa'],wgScriptPath+'/api.php?format=json&action=query&list=allpages&apprefix=Requests_for_adminship%2F'+uname+'&apnamespace=4&aplimit=1&xhr='+Math.random(),function () {
| |
| with (areqs['rfa']) if (readyState == 4 && status == 200) {
| |
| var api = eval('('+responseText+')');
| |
| if (!api.query.allpages.length) removeLink('c-ux-rfa');
| |
| }
| |
| } );
| |
| | |
| areqs['rfb'] = new sajax_init_object();
| |
| xhr(areqs['rfb'],wgScriptPath+'/api.php?format=json&action=query&list=allpages&apprefix=Requests_for_bureaucratship%2F'+uname+'&apnamespace=4&aplimit=1&xhr='+Math.random(),function () {
| |
| with (areqs['rfb']) if (readyState == 4 && status == 200) {
| |
| var api = eval('('+responseText+')');
| |
| if (!api.query.allpages.length) removeLink('c-ux-rfb');
| |
| }
| |
| } );
| |
| | |
| areqs['uspace'] = new sajax_init_object();
| |
| xhr(areqs['uspace'],wgScriptPath+'/api.php?format=json&action=query&list=allpages&apprefix='+uname+'%2F&apnamespace=2&aplimit=1&xhr='+Math.random(),function () {
| |
| with (areqs['uspace']) if (readyState == 4 && status == 200) {
| |
| var api = eval('('+responseText+')');
| |
| if (!api.query.allpages.length) removeLink('c-u-subpages');
| |
| }
| |
| } );
| |
| }
| |
| | |
| areqs['ublocks'] = new sajax_init_object();
| |
| xhr(areqs['ublocks'],wgScriptPath+'/api.php?format=json&action=query&list=logevents&letype=block&letitle=User:'+uname+'&lelimit=1&xhr='+Math.random(),function () {
| |
| with (areqs['ublocks']) if (readyState == 4 && status == 200) {
| |
| var api = eval('('+responseText+')');
| |
| if (!api.query.logevents.length) removeLink('c-ub-blocklog');
| |
| }
| |
| } );
| |
| }
| |
| else hideElements(['c-ub-ipblock','c-ul-blocks','c-ul-deletes','c-ul-protects','c-ul-rights']);
| |
| }
| |
| | |
| hideElements(['t-contributions','t-log','t-emailuser']);
| |
| | |
| document.getElementById('c-u-logs').onmouseover = function () {showMenu('opt-user-logs',findPos('c-u-logs',[40,0]))};
| |
| document.getElementById('c-u-logs').onmouseout = function () {hideMenu('opt-user-logs')};
| |
| document.getElementById('c-u-logs').style.fontWeight = 'bold';
| |
| document.getElementById('c-u-blocks').onmouseover = function () {showMenu('opt-user-blocks',findPos('c-u-blocks',[40,0]))};
| |
| document.getElementById('c-u-blocks').onmouseout = function () {hideMenu('opt-user-blocks')};
| |
| document.getElementById('c-u-blocks').style.fontWeight = 'bold';
| |
| | |
| if (_cactions.uname.search(/(?:\d{1,3}\.){3}\d{1,3}/) == 0) hideElements(['c-u-logs','c-ux-rfa','c-ux-rfb','c-u-editcount','c-u-editsum','c-u-wcuser','c-u-subpages','c-u-email','c-u-groups','c-u-rightslog']);
| |
| }
| |
| } );
| |
| | |
| // Page options hook
| |
| addOnloadHook(function () {
| |
| if (!wgCanonicalSpecialPageName) {
| |
| with (_cactions) {
| |
| menus[menus.length] = createMenu('page',true,Array(
| |
| ['c-p-logs', 'लॉग >', '#'],
| |
| wgArticleId? ['c-p-history', 'इतिहास', wgScript+'?title='+pname+'&action=history'] :[] ,
| |
| wgArticleId? ['c-p-move', 'स्थानांतरण करें', wgScript+'?title=Special:Movepage/'+pname+'&action=view'] :[] ,
| |
| !vectr? ['c-p-watch', 'ध्यान रखें', wgScript+'?title='+pname+'&action=watch'] :[] ,
| |
| !vectr? ['c-p-unwatch', 'ध्यान हटायें', wgScript+'?title='+pname+'&action=unwatch'] :[] ,
| |
| admin? ['c-p-protect', 'सुरक्षित करें', wgScript+'?title='+pname+'&action=protect'] :[] ,
| |
| admin? ['c-p-unprotect', 'सुरक्षा हटायें', wgScript+'?title='+pname+'&action=unprotect'] :[] ,
| |
| admin? ['c-p-delete', 'मिटायें', wgScript+'?title='+pname+'&action=delete'] :[] ,
| |
| admin? ['c-p-undelete', 'मिटे को वापस लायें', wgScript+'?title=Special:Undelete/'+pname+'&action=view'] :[] ,
| |
| wgArticleId? ['c-p-diff', 'ताज़ा अंतर', wgScript+'?title='+pname+'&action=view&diff='+wgCurRevisionId] :[] ,
| |
| wgArticleId? ['c-p-editzero', 'प्रथम विभाग का सम्पादन', wgScript+'?title='+pname+'&action=edit§ion=0'] :[] ,
| |
| wgArticleId? ['c-p-wcpage', 'पन्ने का विश्लेषण', 'http://en.wikichecker.com/article/?a='+pname] :[] ,
| |
| ['c-p-purge', 'कॅश ख़ाली करें', wgScript+'?title='+pname+'&action=purge']
| |
| ));
| |
| | |
| menus[menus.length] = createMenu('page-logs',false,Array(
| |
| ['c-pl-logs', 'सभी पन्नों के लॉग', wgScript+'?title=Special:Log&action=view&page='+pname] ,
| |
| ['c-pl-deletes', 'मिटायें पन्नों के लॉग', wgScript+'?title=Special:Log&type=delete&page='+pname] ,
| |
| ['c-pl-moves', 'स्थानांतरण लॉग', wgScript+'?title=Special:Log&action=view&type=move&page='+pname] ,
| |
| wgArticleId? ['c-pl-patrols', 'निगरानी लॉग', wgScript+'?title=Special:Log&action=view&type=patrol&page='+pname] :[] ,
| |
| ['c-pl-protects', 'सुरक्षा लॉग', wgScript+'?title=Special:Log&action=view&type=protect&page='+pname] ,
| |
| wgNamespaceNumber == 6? ['c-pl-uploads', 'Upload log', wgScript+'?title=Special:Log&action=view&type=upload&page='+pname] :[]
| |
| ));
| |
| }
| |
| | |
| hideElements(['ca-protect','ca-unprotect','ca-delete','ca-undelete','ca-history','ca-move'],['c-p-unprotect','c-p-protect','c-p-undelete','p-c-delete']);
| |
| if (!_cactions.vectr) hideElements(['ca-watch','ca-unwatch'],['c-p-unwatch','c-p-watch']);
| |
| | |
| document.getElementById('c-p-logs').onmouseover = function () {showMenu('opt-page-logs',findPos('c-p-logs',[40,0]))};
| |
| document.getElementById('c-p-logs').onmouseout = function () {hideMenu('opt-page-logs')};
| |
| document.getElementById('c-p-logs').style.fontWeight = 'bold';
| |
| }
| |
| } );
| |
| }
| |