Участник:Hotcat/newpages.js
Материал из Викиреальностя
Замечание. Возможно, после сохранения вам придётся очистить кеш своего браузера, чтобы увидеть изменения.
- Firefox / Safari: Удерживая клавишу Shift, нажмите на панели инструментов Обновить, или нажмите Ctrl-F5 или Ctrl-R (⌘-R на Mac)
- Google Chrome: Нажмите Ctrl-Shift-R (⌘-Shift-R на Mac)
- Internet Explorer: Удерживая Ctrl нажмите Обновить, или нажмите Ctrl-F5
- Opera: Выберите очистку кеша в меню Инструменты → Настройки
// Источник: http://ru.wikipedia.org/wiki/Участник:Js/NewPagePatrol.js // Текст доступен на условиях лицензии CC-BY-SA (http://creativecommons.org/licenses/by-sa/3.0/) var npp_http; var npp_enabled; var npp_num_pages; var npp_refresh; addOnloadHook( npp_init ); /* инициализация */ function npp_init() { // разрешить пользовательские настройки if(npp_enabled == null) { npp_enabled = false; } if(npp_num_pages == null) { npp_num_pages = 10; } if(npp_refresh == null) { npp_refresh = 5; } // ограничения на запросы if (npp_num_pages > 50) { npp_num_pages = 50; } if (npp_num_pages < 1) { npp_num_pages = 1; } if (npp_refresh < 2) { npp_refresh = 2; } // читаем cookie if (document.cookie.length > 0) { var c_start = document.cookie.indexOf("npp_show_box="); if (c_start != -1) { c_start = c_start + 13; var c_end = document.cookie.indexOf(";", c_start); if (c_end == -1) { c_end = document.cookie.length; } if (document.cookie.substring(c_start, c_end) == "yes") { npp_enabled = true; } else { npp_enabled = false; } } } if (npp_enabled == true) { npp_ajax_request(); } else { npp_draw_disabled_box(); } } /* init ajax */ function npp_create_request() { try { npp_http = new XMLHttpRequest(); } catch (e) { try { npp_http = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { npp_http = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) { alert("Ваш браузер не поддерживает AJAX!"); return false; } } } npp_http.onreadystatechange = function() { if(npp_http.readyState == 4) npp_ajax_response(); } return true; } /* make a request */ function npp_ajax_request() { // check we are enabled if (npp_enabled == false) return; // firstly, inform the user var cur_box = document.getElementById('p-newpages'); if (cur_box != null) { cur_box.firstChild.firstChild.data = 'новые статьи...'; } if (npp_create_request () == false) { if (cur_box != null) { cur_box.firstChild.firstChild.data = 'новые статьи (ошибка)'; } else { alert ("Используйте браузер Mozilla Firefox!"); } } // Then make the request npp_http.open("GET", "/w/api.php?action=query&format=xml&list=recentchanges&rcshow=!bot&rctype=new&rcnamespace=0&rclimit=" + npp_num_pages, true); npp_http.send(null); } /* при получении ответа */ function npp_ajax_response() { var items = npp_http.responseXML.getElementsByTagName('rc'); // create the div that holds all the newpage links var link_div = document.createElement('div'); link_div.className = 'pBody'; var list = document.createElement('ul'); link_div.appendChild(list); // populate the list with 10 links. for (var i = 0; i < items.length; i++) { var item_name = items[i].getAttribute('title'); var rcid = items[i].getAttribute('rcid'); var item_url = 'http://wikireality.ru/w/index.php?title=' + item_name + '&rcid=' + rcid + '&redirect=no'; a = document.createElement('a'); a.setAttribute('href', item_url); a.appendChild(document.createTextNode(item_name)); var li = document.createElement('li'); li.appendChild(a); list.appendChild(li); } // создаём слой var div = document.createElement('div'); div.setAttribute('id', 'p-newpages'); div.className = 'portlet'; var heading = document.createElement('h5'); heading.appendChild(document.createTextNode('новые статьи')); div.appendChild(heading); div.appendChild(link_div); // отключить ссылку var p = document.createElement('p'); p.style.fontSize = 'x-small'; p.style.margin = '0px'; p.style.textAlign = 'right'; p.style.cursor = 'pointer'; a = document.createElement('a'); a.appendChild(document.createTextNode('отключить')); a.onclick = npp_disable_box; p.appendChild(a); link_div.appendChild(p); // замена слоя var old_div = document.getElementById('p-newpages'); var side_col = document.getElementById('column-one'); if (old_div != null) { side_col.replaceChild(div, old_div); } else { var node = document.getElementById('p-search'); side_col.insertBefore(div, node); } // автообновление setTimeout("npp_ajax_request()", npp_refresh * 1000); } function npp_disable_box() { npp_enabled = false; npp_draw_disabled_box(); document.cookie = "npp_show_box=no; path=/"; } function npp_enable_box() { npp_enabled = true; document.cookie = "npp_show_box=yes; path=/"; npp_ajax_request(); } function npp_draw_disabled_box() { // Создание слоя var link_div = document.createElement('div'); link_div.className = 'pBody'; var div = document.createElement('div'); div.setAttribute('id', 'p-newpages'); div.className = 'portlet'; var heading = document.createElement('h5'); heading.appendChild(document.createTextNode('новые статьи')); div.appendChild(heading); div.appendChild(link_div); // активация ссылки var p = document.createElement('p'); p.style.fontSize = 'x-small'; p.style.margin = '0px'; p.style.cursor = 'pointer'; var a = document.createElement('a'); a.appendChild(document.createTextNode('включить')); a.onclick = npp_enable_box; p.appendChild(a); link_div.appendChild(p); // замена слоя var old_div = document.getElementById('p-newpages'); var side_col = document.getElementById('column-one'); if (old_div != null) { side_col.replaceChild(div, old_div); } else { var node = document.getElementById('p-search'); side_col.insertBefore(div, node); } }