Χρήστης:ArielGlenn/karteles.js
Σημείωση: μετά την δημοσίευση, ίσως χρειαστεί να παρακάμψετε την προσωρινή μνήμη του προγράμματος περιήγησής σας για να δείτε τις αλλαγές.
- Firefox / Safari: Κρατήστε πατημένο το Shift κάνοντας ταυτόχρονα κλικ στο κουμπί Ανανέωση ή πιέστε Ctrl-F5 ή Ctrl-R (⌘-R σε Mac)
- Google Chrome: Πιέστε Ctrl-Shift-R (⌘-Shift-R σε Mac)
- Internet Explorer / Edge: Κρατήστε πατημένο το Ctrl κάνοντας ταυτόχρονα κλικ στο κουμπί Ανανέωση, ή πιέστε Ctrl-F5
- Opera: Πιέστε Ctrl-F5.
// πηγή: en.wikt MediaWiki:Common.js
// τροποποιήσεις και πρόσθετες λειτουργίες: el wikt
/**
* Create a new DOM node for the current document.
* Basic usage: var mySpan = newNode('span', "Hello World!")
* Supports attributes and event handlers*: var mySpan = newNode('span', {style:"color: red", focus: function(){alert(this)}, id:"hello"}, "World, Hello!")
* Also allows nesting to create trees: var myPar = newNode('p', newNode('b',{style:"color: blue"},"Hello"), mySpan)
*
* *event handlers, there are some issues with IE6 not registering event handlers on some nodes that are not yet attached to the DOM,
* it may be safer to add event handlers later manually.
**/
function newNode(tagname){
var node = document.createElement(tagname);
for( var i=1;i<arguments.length;i++ ){
if(typeof arguments[i] == 'string'){ //Text
node.appendChild( document.createTextNode(arguments[i]) );
}else if(typeof arguments[i] == 'object'){
if(arguments[i].nodeName){ //If it is a DOM Node
node.appendChild(arguments[i]);
}else{ //Attributes (hopefully)
for(var j in arguments[i]){
if(j == 'class'){ //Classname different because...
node.className = arguments[i][j];
}else if(j == 'style'){ //Style is special
node.style.cssText = arguments[i][j];
}else if(typeof arguments[i][j] == 'function'){ //Basic event handlers
try{ node.addEventListener(j,arguments[i][j],false); //W3C
}catch(e){try{ node.attachEvent('on'+j,arguments[i][j],"Language"); //MSIE
}catch(e){ node['on'+j]=arguments[i][j]; }}; //Legacy
}else{
node.setAttribute(j,arguments[i][j]); //Normal attributes
}
}
}
}
}
return node;
}
/* Cross browser CSS - yurk */
var p_styleSheet=false;
window.addCSSRule = function (selector,cssText){
if(!p_styleSheet) return setupCSS(selector,cssText);
if(p_styleSheet.insertRule){
p_styleSheet.insertRule( selector+' { '+cssText+' }', p_styleSheet.cssRules.length );
}else if(p_styleSheet.addRule){ //Guess who...
p_styleSheet.addRule(selector,cssText);
}
function setupCSS(selector,cssText){
if(document.styleSheets){
var i = document.styleSheets.length-1;
while(i>=0){
try{ //This loop tries to get around the irritation that some extensions
//include external, and thus read-only, stylesheets. Bah.
p_styleSheet = document.styleSheets[i];
var media = p_styleSheet.media.mediaType?p_styleSheet.media.mediaType:p_styleSheet.media;
if( media.indexOf('screen') > -1 || media == '' ){
addCSSRule(selector,cssText);
return true;
}
}catch(e){ i--; }
}
}
//Ok document.stylesheets isn't an option :(... take this for hacky
//It might be better to create one <style> element and write into it
// but it doesn't work :(
window.addCSSRule = function(sel,css){
var head = document.getElementsByTagName('head')[0];
var text = sel + '{' + css + '}';
try { head.innerHTML += '<style type="text/css">' + text + '</style>'; }
catch(e) {
var style = document.createElement('style');
style.setAttribute('type', 'text/css');
style.appendChild(document.createTextNode(text));
head.appendChild(style);
}
}
addCSSRule(selector,cssText);
}
}
// πηγή: atg
$(function() {
if (wgNamespaceNumber != 0) {
return;
}
addCSSRule('.ns-0 #toc','float: right; clear: right; margin-left: 7px; margin-bottom: 6px; display: inline;');
var BodyContent = document.getElementById('bodyContent');
var ContentStart = document.getElementById('contentSub');
var Toc = document.getElementById('toc');
if (!Toc) {
return;
}
var TocListItems = Toc.getElementsByTagName('li');
if (!TocListItems) {
return;
}
var TabHolder = newNode('table', { 'style': 'background:#F8FCFF; text-align:center; border-collapse:collapse; border-width:0px;', 'id':'atgtabholder' } );
var TabHolderRow = newNode('tr', '');
var Count = 0;
for (var i=0; i< TocListItems.length; i++) {
var TocListEntry = TocListItems[i];
if (TocListEntry.className.search(/^toclevel-1( |$)/) == 0) {
// <a ...><span>nn</span><span>text</span>...</a>
var TocListEntryHrefSpanText = TocListEntry.childNodes[0].innerHTML;
TocListEntryHrefSpanText.match(/(\(.+\))/); // get the lang code in the parens?
TocListEntryHrefSpanText = RegExp.$1;
// now get all the links and look for the ones with pos
var TocListEntryLinks = TocListEntry.getElementsByTagName('a');
for (j=0; j<TocListEntryLinks.length; j++) {
var TocListEntryLinkSpanStuff = TocListEntryLinks[j].innerHTML;
TocListEntryLinkSpanStuff.match(/<span[^>]*>([^0-9.<]+)( [0-9]+)?<\/span>/);
var TocListEntryLinkSpanText = RegExp.$1;
if ( TocListEntryLinkSpanText == 'Ουσιαστικό' ||
TocListEntryLinkSpanText == 'Πρόθεση' ||
TocListEntryLinkSpanText == 'Αντωνυμία' ||
TocListEntryLinkSpanText == 'Άρθρο' ||
TocListEntryLinkSpanText == 'Μετοχή' ||
TocListEntryLinkSpanText == 'Μόριο' ||
TocListEntryLinkSpanText == 'Ρήμα' ||
TocListEntryLinkSpanText == 'Επίθετο' ||
TocListEntryLinkSpanText == 'Επίρρημα' ||
TocListEntryLinkSpanText == 'Αριθμητικό' ||
TocListEntryLinkSpanText == 'Χαρακτήρας' ||
TocListEntryLinkSpanText == 'Έκφραση' ||
TocListEntryLinkSpanText == 'Επιθετική έκφραση' ||
TocListEntryLinkSpanText == 'Επίθημα' ||
TocListEntryLinkSpanText == 'Επιρρηματική έκφραση' ||
TocListEntryLinkSpanText == 'Επιφώνημα' ||
TocListEntryLinkSpanText == 'Κύριο όνομα' ||
TocListEntryLinkSpanText == 'Κατάληξη επιρρημάτων' ||
TocListEntryLinkSpanText == 'Κατάληξη θηλυκών ουσιαστικών' ||
TocListEntryLinkSpanText == 'Κατάληξη ουδέτερων ουσιαστικών' ||
TocListEntryLinkSpanText == 'Κατάληξη ρημάτων' ||
TocListEntryLinkSpanText == 'Κατάληξη αρσενικών επιθέτων' ||
TocListEntryLinkSpanText == 'Συγχώνευση' ||
TocListEntryLinkSpanText == 'Συντομομορφή' ||
TocListEntryLinkSpanText == 'Σύνδεσμος' ||
TocListEntryLinkSpanText == 'Πρόθημα' ||
TocListEntryLinkSpanText == 'Πολυλεκτικός όρος' ||
TocListEntryLinkSpanText == 'Κατάληξη αρσενικών ουσιαστικών' ||
TocListEntryLinkSpanText == 'Σύμβολο' ||
TocListEntryLinkSpanText == 'Κατάληξη αρσενικών και θηλυκών ουσιαστικών' ) {
if (Count == 0) {
BodyContent.insertBefore(TabHolder,ContentStart);
TabHolder.appendChild(TabHolderRow);
}
else {
var TabNode = newNode('td', { 'style': 'padding:0px; border-bottom:2px solid #A3B1BF; width:3px;'} );
TabHolderRow.appendChild(TabNode);
}
TabCellStyle='padding:0.5em; background-color:#CEE0F2; font-size:90%; line-height:0.95em; border:1px solid #A3B1BF; border-bottom:solid 2px #A3B1BF;';
// <a ...><span>nn</span><span>text</span>...</a>
var TabNode = newNode('td', { 'style': TabCellStyle } );
if (Count%10 == 0 && Count > 0) {
// καινούργια γραμμή μετά από 10 καρτέλες
TabHolderRow = newNode('tr', '');
TabHolder.appendChild(TabHolderRow);
}
Count++;
TabHolderRow.appendChild(TabNode);
var TabNodeLink = newNode('a', { 'href': TocListEntryLinks[j].href } );
TabNode.appendChild(TabNodeLink);
TabNodeLinkText = newNode('span', Count + ". " + TocListEntryLinkSpanText + " " + TocListEntryHrefSpanText );
TabNodeLink.appendChild(TabNodeLinkText);
}
}
}
}
if ( Count == 1 ) {
// σβήνουμε την μοναδική καρτέλα :-P
var TabHolder = document.getElementById('atgtabholder');
BodyContent.removeChild(TabHolder);
}
});