From Wikipedia, the free encyclopedia
Note: After saving, you have to bypass your browser's cache to see the changes. Google Chrome, Firefox, Microsoft Edge and Safari: Hold down the ⇧ Shift key and click the Reload toolbar button. For details and instructions about other browsers, see Wikipedia:Bypass your cache.

// [[User:^demon/csd.js]] adapted for page protection use



// <pre><nowiki>



if ( wgAction = 'protect' ) {

     var protform = {

				FillSelect:function(sel, arr){

					if(arr && arr.length>0){

						if(arr.length>1){

							var FirstOpt = new Option("Protection reasons", "");

							// catches stupid IE error

							if(FirstOpt.innerHTML != "Protection reasons"){

								FirstOpt.innerHTML = "Protection reasons";

							}

							sel.appendChild(FirstOpt);

							sel.options0].style.color = "gray"

						}

						sel.disabled = false;

						for(var i=0;i<arr.length;i++){

							var opt = new Option(arri].display, arri].value);

							// catches stupid IE error

							if(opt.innerHTML != arri].display){

								opt.innerHTML = arri].display;

							}

							sel.appendChild(opt);

						}

					}else{

						sel.options0 = new Option("No Options Available", "");

						// catches stupid IE error

						if(sel.options0].innerHTML != "No Options Available"){

							sel.options0].innerHTML = "No Options Available";

						}

						sel.disabled = true;

						return false;

					}

					return true;

				},

				ValueArray:

					{"value":"Edit warring","display":"Edit warring"},

					{"value":"Heavy IP vandalism","display":"IP vandalism"},

					{"value":"Linkspam","display":"Linkspam"},				

					{"value":"[[WP:BLP]] concerns","display":"WP:BLP concerns"},	

					{"value":"Evasion from blocked/banned user\(s\)","display":"Block/ban evasion"},

					{"value":"Pagemove war","display":"Move war"},

					{"value":"{{[[Template:Unblock|unblock]]}} abuse","display":"Unblock abuse"},

					{"value":"High risk template","display":"High risk template"},



					{"value":"Unprotecting per [[WP:RFPP]] request","display":"Unprot per WP:RFPP"},

					{"value":"Page protected for a while\; hopefully protection is no longer necessary","display":"Time..."}

				],



				addEvent:function(obj, evType, fn, useCapture){

					//alert(obj);

					if (obj.addEventListener){

						obj.addEventListener(evType, fn, useCapture);

						return true;

					} else if (obj.attachEvent){

						var r = obj.attachEvent("on"+evType, fn);

						return r;

					} else {

						alert("Handler could not be attached");

					}

				}

			}

			function addSelectAfter(){

    				var obj = document.getElementById('mwProtect-reason');

    			        // create select using included array

				var sel = document.createElement("SELECT");

				protform .FillSelect(sel, protform .ValueArray);

				// name it

				sel.name = "proOptions";

				sel.id = "proOptions";

                                sel.style.marginLeft = "10px";

                                protform .addEvent(sel, "change", protChangeBox, false);

				// check for next sibling and insert before it or at the end

				if(obj.nextSibling){

					obj.parentNode.insertBefore(sel,obj.nextSibling);

				}else{

					obj.parentNode.appendChild(sel);

				}

			}

			try{

				// add one on load

				protform.addEvent(window, "load", addSelectAfter, false);

			}catch(err){}

}



function protChangeBox() {

                                                         var obj = document.getElementById('mwProtect-reason');

                                                         obj.value = document.getElementById('proOptions').value;

                                                         }



// ---------------------------------------------------------------------------------------------------------------



if ( wgAction = 'protect' ) {

     var protform2 = {

				FillSelect:function(sel, arr){

					if(arr && arr.length>0){

						if(arr.length>1){

							var FirstOpt = new Option("Protection expiries", "");

							// catches stupid IE error

							if(FirstOpt.innerHTML != "Protection expiries"){

								FirstOpt.innerHTML = "Protection expiries";

							}

							sel.appendChild(FirstOpt);

							sel.options0].style.color = "gray"

						}

						sel.disabled = false;

						for(var i=0;i<arr.length;i++){

							var opt = new Option(arri].display, arri].value);

							// catches stupid IE error

							if(opt.innerHTML != arri].display){

								opt.innerHTML = arri].display;

							}

							sel.appendChild(opt);

						}

					}else{

						sel.options0 = new Option("No Options Available", "");

						// catches stupid IE error

						if(sel.options0].innerHTML != "No Options Available"){

							sel.options0].innerHTML = "No Options Available";

						}

						sel.disabled = true;

						return false;

					}

					return true;

				},

				ValueArray:

					{"value":"1 day","display":"1 day"},

					{"value":"2 days","display":"2 days"},

					{"value":"3 days","display":"3 days"},

					{"value":"5 days","display":"5 days"},

					{"value":"1 week","display":"1 week"},

					{"value":"2 weeks","display":"2 weeks"},

					{"value":"3 weeks","display":"3 weeks"},

					{"value":"4 weeks","display":"4 weeks"},

					{"value":"6 weeks","display":"6 weeks"}

				],



				addEvent:function(obj, evType, fn, useCapture){

					//alert(obj);

					if (obj.addEventListener){

						obj.addEventListener(evType, fn, useCapture);

						return true;

					} else if (obj.attachEvent){

						var r = obj.attachEvent("on"+evType, fn);

						return r;

					} else {

						alert("Handler could not be attached");

					}

				}

			}

			function addSelectAfter(){

    				var obj = document.getElementById('expires');

    			        // create select using included array

				var sel = document.createElement("SELECT");

				protform2 .FillSelect(sel, protform2 .ValueArray);

				// name it

				sel.name = "proExpires";

				sel.id = "proExpires";

                                sel.style.marginLeft = "10px";

                                protform2 .addEvent(sel, "change", protChangeBox2, false);

				// check for next sibling and insert before it or at the end

				if(obj.nextSibling){

					obj.parentNode.insertBefore(sel,obj.nextSibling);

				}else{

					obj.parentNode.appendChild(sel);

				}

			}

			try{

				// add one on load

				protform2.addEvent(window, "load", addSelectAfter, false);

			}catch(err){}

}



function protChangeBox2() {

                                                         var obj = document.getElementById('expires');

                                                         obj.value = document.getElementById('proExpires').value;

                                                         }



// </nowiki></pre>