MediaWiki:Gadget-Bookmarks.js
Материал из ЕЖЕВИКИ - EJWiki.org - Академической Вики-энциклопедии по еврейским и израильским темам
Замечание. Возможно, после сохранения вам придётся очистить кэш своего браузера, чтобы увидеть изменения.
- Firefox / Safari: Удерживая клавишу Shift, нажмите на панели инструментов Обновить либо нажмите Ctrl-F5 или Ctrl-R (⌘-R на Mac)
- Google Chrome: Нажмите Ctrl-Shift-R (⌘-Shift-R на Mac)
- Internet Explorer: Удерживая Ctrl, нажмите Обновить либо нажмите Ctrl-F5
- Opera: Выберите очистку кэша в меню Инструменты → Настройки
if (!window.myBkmPage) myBkmPage = '/Закладки'; if (myBkmPage.charAt(0)=='/') myBkmPage = 'User:' + wgUserName + myBkmPage; var myBkmURL = wgServer + wgArticlePath.replace('$1','') + myBkmPage; addOnloadHook(function () { var obj_id = window.myBkmPlace || 'p-personal'; var obj = document.getElementById(obj_id); if (!obj) return; var bkmLink; if (obj.className && obj.className == 'portlet') { addPortletLink(obj_id, myBkmURL, window.myBkmName || 'закладки', 't-bkmmenu'); obj = document.getElementById('t-bkmmenu') } if (window.myBkmShowOnHover != 2) addEvent(obj, 'click', myBookmarks) if (window.myBkmShowOnHover) addEvent(obj, 'mouseover', myBookmarks); }); function myBookmarks(e){ if (e.preventDefault) e.preventDefault(); else e.returnValue = false; //do not follow the link if (!window.bkmMenu) myBookmarksIni(); bkmMenu.ShowHide(e); } function myBookmarksIni(){ var ht = sajax_init_object(); ht.open('GET', myBkmURL + '?action=render', false); ht.send(null); bkmMenu = new mnuObj('papka', ht.responseText, (window.myBkmHideOnHover!=2), window.myBkmHideOnHover); if (window.myBkmNewWin){ var links = bkmMenu.div.getElementsByTagName('a'); for (var i=0; i<links.length; i++) links[i].target = '_blank'; } bkmMenu.div.innerHTML += '<div style="text-align:right">[<a href="' + myBkmURL + '">page</a>]' + ' [<a href="' + myBkmURL + '?action=edit">edit</a>]</div>'; } /* MENU */ function mnuObj(id, html, isMouseUp, isMouseOut) { var d = document.createElement('div'); d.id=id; d.className = 'menudiv'; d.innerHTML=html; d.style.display='none'; d.style.position='absolute'; d.style.padding='5px'; d.style.border='3px outset'; d.style.zIndex = '50'; d.style.backgroundColor='#EEEEEE' document.body.appendChild(d); this.div = d; this.div.obj = this; //backlink this.Hide = function (){ this.div.style.display = 'none'; } this.ShowHide = function (e){ if (this.div.style.display == 'block') this.Hide() else this.Show(e) } this.Show = function (e){ this.div.style.display = 'block'; var e = e || window.event; if (!e) return; var coords = getMousePos(e); var posx = coords[0], posy = coords[1]; this.div.style.top = posy + 5 + 'px'; posx -= elementWidth(this.div)/2; if (posx + elementWidth(this.div) > windowWidth()) posx = windowWidth() - elementWidth(this.div) - 20 else if (posx < 0) posx = 10; this.div.style.left = posx + 'px'; } this.hideOnMouseUp = function (e){ var e = e || window.event; if ((e.which && e.which == 3) || (e.button && e.button == 2)) return; //except right-click var targ = e.srcElement || e.target; while (targ && (!targ.className || targ.className != 'menudiv')) targ = targ.parentNode; if (!targ) return; targ.style.display = 'none'; } this.hideOnMouseOut = function(e){ var e = e || window.event; var targ = e.srcElement || e.target; while (targ && (!targ.className || targ.className != 'menudiv')) targ = targ.parentNode; if (!targ) return; var toEl = e.toElement || e.relatedTarget; while (toEl && toEl != targ && toEl.nodeName != 'BODY') toEl = toEl.parentNode; if (toEl == targ) return; targ.style.display = 'none'; } if (isMouseUp) addEvent(this.div, 'mouseup', this.hideOnMouseUp) if (isMouseOut) addEvent(this.div, 'mouseout', this.hideOnMouseOut); } /*API */ function addEvent(obj, event, func) { if (obj.addEventListener) obj.addEventListener( event, func, false ); else if (obj.attachEvent) obj.attachEvent ('on'+event, func) } function windowWidth(){ if (self.innerWidth) // all except Explorer return self.innerWidth else if (document.documentElement && document.documentElement.clientWidth)// Explorer 6 Strict Mode return document.documentElement.clientWidth else if (document.body) // other Explorers return document.body.clientWidth; else return 0; } function getMousePos(ev){ var posx = 0; var posy = 0; if (ev.pageX) return [ev.pageX, ev.pageY] else if (ev.clientX) return [ev.clientX + document.body.scrollLeft + document.documentElement.scrollLeft, ev.clientY + document.body.scrollTop + document.documentElement.scrollTop] else return null }