User:DPMaid/common.js

/** Returns the content of a parameter passed via URL. Does not * treat booleans in a dedicated manner, returning their string * content instead. If the parameter is not found, returns either * a default value (iDefaultValue) or an empty string. * Based on Wiktionary's MediaWiki:Edit.js. */ function getURLParameter(parameterName, /*optional*/ iDefaultValue) { var defaultValue = typeof iDefaultValue != 'undefined' ? iDefaultValue : ""; if (! (window.location.search && window.location.search.split("?")[1])) return defaultValue; try { urlParts=window.location.search.split("?")[1].split("&"); } catch (e) { return defaultValue; } //not an edit page for (var k = 0; k < urlParts.length; ++k) { pair=urlParts[k].split("="); if (pair[0]==parameterName) return decodeURIComponent(pair[1].replace(/\+/gi," ")); }   return defaultValue; } /** Alerts the user by adding a new div to the center of the page rather than * via a pop up. */ function divAlert(message) { var div = document.createElement("div"); div.style.position = "fixed"; div.style.zIndex = 100; div.style.top = "40%"; div.style.left = "30%"; div.style.marginRight = "30%"; div.style.padding = "15pt"; div.style.backgroundColor = "brown"; div.style.color = "white"; div.style.fontSize = "15pt"; div.innerHTML = message; document.body.appendChild(div); }

/** Adds further reading (former "external links") unless present. Supports Czech, Slovak, and some other languages. Does not check whether the target page of the link actually exists. buttonToPress: wpSave, wpPreview, wpDiff */ function addExternalLinks(language, buttonToPress) { if (language=="") { divAlert("The language or language code is missing. No action done."); return; }

dictionaryLink=""; dictionaryLink2=""; if (language=="Czech") { dictionaryLink = ""; dictionaryLink2 = ""; } if (language=="Malagasy") dictionaryLink = ""; if (language=="Slovak") dictionaryLink = ""; if (language=="Polish") dictionaryLink = ""; if (language=="Romanian") dictionaryLink = ""; if (language=="Turkish") dictionaryLink = "";

if (dictionaryLink=="") { divAlert("Language "+language+" not supported. No action done."); return; }

var content=document.getElementById("wpTextbox1").value; var i = content.indexOf("==" + language,0); if (i<0) { divAlert("Language section was not found on the page: \""+gloss+"\". No further reading added."); //console.log("The gloss was not found on the page: \""+gloss+"\". No translation added."); Does not seem to do anything. return; }

if (content.indexOf(dictionaryLink,0)>=0) { divAlert("Further reading for "+language+" already there. No action taken."); return; }

langSectionCategoryBeginning=0; insertionPointFound=false; while (i<content.length && !insertionPointFound) { i=i+1; fourNext = content.substring(i,i+4); manyNext = content.substring(i,i+20); if (fourNext=="") // looking at the end of a language section insertionPointFound=true; if (fourNext.match(/^==[A-Z]/) && content.substring(i-1,i)!="=") // looking at language section without preceding insertionPointFound=true; if (manyNext.match(/^\[\^:\*:/) &&       !manyNext.match(/^\[\[File:/) &&        !manyNext.match(/^\[\[Image:/)) // looking at interwiki, like word or word, but not at [[File:image.png]] insertionPointFound=true; if (langSectionCategoryBeginning==0 && content.substring(i,i+10)=="[[Category")     langSectionCategoryBeginning=i;  }  //var j = content.indexOf("",i);  if (langSectionCategoryBeginning!=0)    insertionPoint=langSectionCategoryBeginning;  else    insertionPoint=i;  var part1 = content.substring(0,insertionPoint);  var part2 = content.substring(insertionPoint,content.length);  twoCharsBeforeInsertion = content.substring(insertionPoint-2,insertionPoint);  insertedPart = "===Further reading===\n* " + dictionaryLink;  if (dictionaryLink2!="")    insertedPart += "\n* " + dictionaryLink2;  if (insertionPoint<content.length)    insertedPart+="\n\n";  if (twoCharsBeforeInsertion!="\n\n") {    // Not empty line before insertion point    insertedPart = "\n" + insertedPart; }  document.getElementById("wpTextbox1").value=part1+insertedPart+part2;  var summary = "/* "+ language +" */ Add further reading";  document.getElementById("wpSummary").value=summary;  if (buttonToPress)    document.getElementById(buttonToPress).click;  // buttonToPress: "wpSave", "wpPreview", "wpDiff" }

function enableAddingExternalLinks { if (getURLParameter("task")=="addel") addExternalLinks(getURLParameter("language"), getURLParameter("buttonToPress")); // Example URL to add external links, showing edit preview rather than directly saving: //https://en.wiktionary.org/wiki/beh?action=edit&task=addel&language=Slovak&buttonToPress=wpPreview }

$(enableAddingExternalLinks);