Jump to content

MediaWiki:Common.js: Difference between revisions

no edit summary
mNo edit summary
No edit summary
Line 12: Line 12:
// each operation is a two element array, the first being the type, the second a class name or array of elements
// each operation is a two element array, the first being the type, the second a class name or array of elements
// operation types are strings like "_reset" or "" for the default toggle operation
// operation types are strings like "_reset" or "" for the default toggle operation
var togglers = [];    
var togglers = [];  
var togglerStates = []; 
var allClasses = {}; // associative map of class names to page elements
var allClasses = {}; // associative map of class names to page elements


Line 53: Line 54:
                 // Toggle
                 // Toggle
                 for (j = 0; j < toggles.length; j++)
                 for (j = 0; j < toggles.length; j++)
                    toggles[j].style.display = ((toggles[j].style.display == 'none') ? '' : 'none');
togglerStates[id] = !togglerStates[id];
if (togglerStates[id] || !togglerStates[id] && areAllTogglersOff(toggles[j]))
toggles[j].style.display = (togglerStates[id] ? '' : 'none');
                 break;
                 break;
         }
         }
     }
     }
}
function areAllTogglersOff(elem)
{
    for (var i = 0; i < allClasses.length; i++)
    {
if (allClasses[toggles[i]].includes(elem) && togglerStates[i] === true)
{
return false;
}
}
return true;
}
}


Line 76: Line 91:


     // initialize/clear any old information
     // initialize/clear any old information
     togglers = [];    
     togglers = [];  
togglerStates = [];
     allClasses = {};
     allClasses = {};
          
          
Line 89: Line 105:
         elem._toggle_original_display = elem.style.display;
         elem._toggle_original_display = elem.style.display;
         var togglerID = -1;
         var togglerID = -1;
var togglerState = true;
         var elemClasses = elem.className.split(' '); // get list of classes
         var elemClasses = elem.className.split(' '); // get list of classes
         for (var j = 0; j < elemClasses.length; j++)
         for (var j = 0; j < elemClasses.length; j++)
Line 94: Line 111:
             var elemClass = elemClasses[j];
             var elemClass = elemClasses[j];
// all the special classes begin with _toggle
// all the special classes begin with _toggle
             if (elemClass.substring(0, 7) != "_toggle")
             if (elemClass.substring(0, 7) != "_toggle")
                 continue;
                 continue;
Line 136: Line 153:
                 togglers[togglerID].push(new Array(op, toBeToggled));
                 togglers[togglerID].push(new Array(op, toBeToggled));
togglerStates[togglerID].push(togglerState);
             }
             }
         }
         }