User:Dtrebbien/monobook.js

/** * Based on TheDJ's HotCat script (http://en.wikipedia.org/wiki/User:TheDJ/Gadget-HotCat.js), this * places links for commonly-added Categories in the Categories section, which, when clicked, will add the * category to the current page. * * @author Magnus Manske, TheDJ, D. Trebbien * @last-modified 2008-August-23 */ var common_normal_categories = new Array ( "Words on Korpusbasierte Wortgrundformenliste DeReWo, v-30000g-2007-12-31-0.1" );

function addCategory(cat) { //window.alert(cat); var url = document.getElementById('ca-edit').getElementsByTagName('a')[0].href + "&hotcat_newcat=" + encodeURIComponent( cat ) ; document.location = url ; }

function getParameter(name) { var cmdRe=RegExp('[&?]'+name+'=([^&]*)'); var m=cmdRe.exec(document.location.href); if (m) { try { return decodeURIComponent(m[1]); } catch (e) {} } return null; }

// New. Code by Lupo & Superm401, added by Lupo, 2008-02-2007 function hotcat_find_category (wikitext, category) { var cat_name  = category.replace(/([\\\^\$\.\?\*\+\(\)])/g, "\\$1"); var initial  = cat_name.substr (0, 1); var cat_regex = new RegExp ("\\[\\[\\s*[Cc]ategory\\s*:\\s*"                             + (initial == "\\" ? initial : "[" + initial.toUpperCase + initial.toLowerCase + "]")                             + cat_name.substring (1).replace (/[ _]/g, "[ _]")                              + "\\s*(\\|.*?)?\\]\\]", "g"                             ); var result = new Array ; var curr_match = null; while ((curr_match = cat_regex.exec (wikitext)) != null) { result [result.length] = {match : curr_match}; } return result; // An array containing all matches, with positions, in result[i].match }

// New. Code by TheDJ, 2008-03-12 function hotcat_find_ins ( wikitext ) { var re = /\[\[(?:Category):[^\]]+\]\]/ig var index = -1; while( re.exec(wikitext) != null ) index = re.lastIndex; if( index > -1) return index; //we should try to find interwiki links here, but that's for later. return -1; }

$(function { var cat_add = getParameter("hotcat_newcat");  if(cat_add != null && cat_add.length > 0) {    var t = document.editform.wpTextbox1.value ;    var summary = new Array  ;    var ret = 0;

var matches = hotcat_find_category (t, cat_add); if (matches && matches.length > 0) { alert ('Category "' + cat_add + '" already exists; not added.'); //prevent_autocommit = 1; } else { var insertionpoint = hotcat_find_ins( t ); var newcatstring = '\n\[\[Category:' + cat_add + '\]\]'; if( insertionpoint > -1 ) { t = t.substring(0, insertionpoint ) + newcatstring + t.substring( insertionpoint ); } else { t = t + newcatstring; }     summary.push ( "Quick-adding category \"" + cat_add + "\"" ) ; var t2 = t.replace(/\{\{[Uu]ncategorized[^}]*\}\}/g, ""); // Remove "uncategorized" template if (t2.length != t.length) { t = t2; summary.push ( "removed " ) ; }     ret = 1; }   if (ret) { document.editform.wpTextbox1.value = t ; document.editform.wpSummary.value = summary.join( "; " ) + " (using User:Dtrebbien/monobook.js)" ; document.editform.wpMinoredit.checked = true ; //if (!prevent_autocommit) { // Hide the entire edit section so as not to tempt the user into editing... var bodyContentId = document.getElementById("bodyContent") || document.getElementById("mw_contentholder"); bodyContentId.style.display = "none"; document.editform.submit; //}   }    return; }

if( wgAction != "view" || document.getElementById('ca-viewsource' ) != null ||     wgNamespaceNumber == -1 || wgNamespaceNumber == 10 ) return; // If we have no Categories div, then add one // TheDJ, 2008-02-28 var normal_catlinks = document.getElementById ('mw-normal-catlinks'); var hidden_catlinks = document.getElementById ('mw-hidden-catlinks'); if ( normal_catlinks == null || typeof( normal_catlinks ) == 'undefined' ) { d3 = document.createElement ( "div" ); d3.id = "mw-normal-catlinks"; d3.innerHTML = 'Categories: '; normal_catlinks = d3; if ( hidden_catlinks ) { // There are hidden categories. hidden_catlinks.parentNode.insertBefore( d3, hidden_catlinks ); hidden_catlinks.parentNode.className = "catlinks"; } else { // This page has no categories at all, let's create a section where we can add them. var footer = getElementsByClassName ( document, "div" , "printfooter" ) [0]; if( !footer ) return; // We have no idea where we should add this. d1 = document.createElement ( "div" ); d1.id = "catlinks"; d1.className = "catlinks"; d1.appendChild ( d3 ); footer.parentNode.insertBefore( d1, footer.nextSibling ); }  }

for(var i in common_normal_categories) { var sep = document.createElement ( "br" ) ; normal_catlinks.appendChild ( sep ) ;

var cat = common_normal_categories[i]; var a = document.createElement ( "a" ) ; a.href = "javascript:addCategory('" + cat + "');"; a.innerHTML = "+ " + cat; a.style.color = "#800080"; //a.class = ""; normal_catlinks.appendChild ( a ) ; } });