(bug 19496) New pages don't have yellow background. Moving rules for .not-patrolled...
[lhc/web/wiklou.git] / skins / common / history.js
1 function historyRadios(parent) {
2 var inputs = parent.getElementsByTagName('input');
3 var radios = [];
4 for (var i = 0; i < inputs.length; i++) {
5 if (inputs[i].name == "diff" || inputs[i].name == "oldid") {
6 radios[radios.length] = inputs[i];
7 }
8 }
9 return radios;
10 }
11
12 function deleteCheck(parent) {
13 var inputs = parent.getElementsByTagName('input');
14 for (var i = 0; i < inputs.length; i++) {
15 if (inputs[i].name == "showhiderevisions") {
16 return inputs[i];
17 }
18 }
19 return null;
20 }
21
22 // check selection and tweak visibility/class onclick
23 function diffcheck() {
24 var dli = false; // the li where the diff radio is checked
25 var oli = false; // the li where the oldid radio is checked
26 var hf = document.getElementById('pagehistory');
27 if (!hf) {
28 return true;
29 }
30 var lis = hf.getElementsByTagName('li');
31 for (var i=0;i<lis.length;i++) {
32 var inputs = historyRadios(lis[i]);
33 if (inputs[1] && inputs[0]) {
34 if (inputs[1].checked || inputs[0].checked) { // this row has a checked radio button
35 if (inputs[1].checked && inputs[0].checked && inputs[0].value == inputs[1].value) {
36 return false;
37 }
38 if (oli) { // it's the second checked radio
39 if (inputs[1].checked) {
40 if ( (typeof oli.className) != 'undefined') {
41 oli.classNameOriginal = oli.className.replace( 'selected', '' );
42 } else {
43 oli.classNameOriginal = '';
44 }
45
46 oli.className = "selected "+oli.classNameOriginal;
47 return false;
48 }
49 } else if (inputs[0].checked) {
50 return false;
51 }
52 if (inputs[0].checked) {
53 dli = lis[i];
54 }
55 if (!oli) {
56 inputs[0].style.visibility = 'hidden';
57 }
58 if (dli) {
59 inputs[1].style.visibility = 'hidden';
60 }
61 if ( (typeof lis[i].className) != 'undefined') {
62 lis[i].classNameOriginal = lis[i].className.replace( 'selected', '' );
63 } else {
64 lis[i].classNameOriginal = '';
65 }
66
67 lis[i].className = "selected "+lis[i].classNameOriginal;
68 oli = lis[i];
69 } else { // no radio is checked in this row
70 if (!oli) {
71 inputs[0].style.visibility = 'hidden';
72 } else {
73 inputs[0].style.visibility = 'visible';
74 }
75 if (dli) {
76 inputs[1].style.visibility = 'hidden';
77 } else {
78 inputs[1].style.visibility = 'visible';
79 }
80 if ( typeof lis[i].classNameOriginal != 'undefined' ) {
81 lis[i].className = lis[i].classNameOriginal;
82 }
83 }
84 }
85 }
86 return true;
87 }
88
89 // Attach event handlers to the input elements on history page
90 function histrowinit() {
91 var hf = document.getElementById('pagehistory');
92 if (!hf) return;
93 var df = document.getElementById('mw-history-revdeleteform');
94 if( df ) df.style.visibility = 'visible'; // Enable JS form
95 var lis = hf.getElementsByTagName('li');
96 for (var i = 0; i < lis.length; i++) {
97 var inputs = historyRadios(lis[i]);
98 if (inputs[0] && inputs[1]) {
99 inputs[0].onclick = diffcheck;
100 inputs[1].onclick = diffcheck;
101 }
102 var check = deleteCheck(lis[i]);
103 if( df && check ) {
104 check.style.display = 'inline'; // Enable JS form
105 }
106 }
107 diffcheck();
108 }
109
110 // Multi-item revision delete. 'checked' is the *previous* state.
111 function updateShowHideForm( oldid, checked ) {
112 var formOldids = document.getElementById('revdel-oldid');
113 if( !formOldids ) return;
114 if( checked ) { // add on oldid if checked
115 if( formOldids.value ) {
116 formOldids.value += ',' + oldid;
117 } else {
118 formOldids.value = oldid;
119 }
120 } else if( formOldids.value ) { // remove oldid if unchecked
121 var reg = new RegExp( '(^|,)'+oldid+'($|,)' );
122 formOldids.value = formOldids.value.replace( reg, '' );
123 }
124 }
125
126 hookEvent("load", histrowinit);