diff options
author | Pierre Schmitz <pierre@archlinux.de> | 2008-08-15 01:29:47 +0200 |
---|---|---|
committer | Pierre Schmitz <pierre@archlinux.de> | 2008-08-15 01:29:47 +0200 |
commit | 370e83bb0dfd0c70de268c93bf07ad5ee0897192 (patch) | |
tree | 491674f4c242e4d6ba0d04eafa305174c35a3391 /skins/common/history.js | |
parent | f4debf0f12d0524d2b2427c55ea3f16b680fad97 (diff) |
Update auf 1.13.0
Diffstat (limited to 'skins/common/history.js')
-rw-r--r-- | skins/common/history.js | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/skins/common/history.js b/skins/common/history.js new file mode 100644 index 00000000..57e61849 --- /dev/null +++ b/skins/common/history.js @@ -0,0 +1,83 @@ +function historyRadios(parent) { + var inputs = parent.getElementsByTagName('input'); + var radios = []; + for (var i = 0; i < inputs.length; i++) { + if (inputs[i].name == "diff" || inputs[i].name == "oldid") { + radios[radios.length] = inputs[i]; + } + } + return radios; +} + +// check selection and tweak visibility/class onclick +function diffcheck() { + var dli = false; // the li where the diff radio is checked + var oli = false; // the li where the oldid radio is checked + var hf = document.getElementById('pagehistory'); + if (!hf) { + return true; + } + var lis = hf.getElementsByTagName('li'); + for (var i=0;i<lis.length;i++) { + var inputs = historyRadios(lis[i]); + if (inputs[1] && inputs[0]) { + if (inputs[1].checked || inputs[0].checked) { // this row has a checked radio button + if (inputs[1].checked && inputs[0].checked && inputs[0].value == inputs[1].value) { + return false; + } + if (oli) { // it's the second checked radio + if (inputs[1].checked) { + oli.className = "selected"; + return false; + } + } else if (inputs[0].checked) { + return false; + } + if (inputs[0].checked) { + dli = lis[i]; + } + if (!oli) { + inputs[0].style.visibility = 'hidden'; + } + if (dli) { + inputs[1].style.visibility = 'hidden'; + } + lis[i].className = "selected"; + oli = lis[i]; + } else { // no radio is checked in this row + if (!oli) { + inputs[0].style.visibility = 'hidden'; + } else { + inputs[0].style.visibility = 'visible'; + } + if (dli) { + inputs[1].style.visibility = 'hidden'; + } else { + inputs[1].style.visibility = 'visible'; + } + lis[i].className = ""; + } + } + } + return true; +} + +// page history stuff +// attach event handlers to the input elements on history page +function histrowinit() { + var hf = document.getElementById('pagehistory'); + if (!hf) { + return; + } + var lis = hf.getElementsByTagName('li'); + for (var i = 0; i < lis.length; i++) { + var inputs = historyRadios(lis[i]); + if (inputs[0] && inputs[1]) { + inputs[0].onclick = diffcheck; + inputs[1].onclick = diffcheck; + } + } + diffcheck(); +} + +hookEvent("load", histrowinit); |