Benutzer:D/toggleVisibility

aus Wikisource, der freien Quellensammlung

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

Vorlage:Br {{{1}}}|

Vorlage:Lbr {{{1}}}

Die Dokumentation für diese Vorlage ist auf der Diskussionsseite zu finden.

Fragen zum Zweck und zur Verwendungsweise sollten dort gestellt werden.

Allgemeine Hinweise zur Erstellung und Benutzung von Vorlagen sind unter Hilfe:Vorlagen erreichbar.

// see Vorlage:Br and Vorlage:Lbr aOnloadFunctions[aOnloadFunctions.length] = showHideToggle(

       "span",                         // tagName
       "LineBreak",                    // className
       "t-linebreakdisplay",           // linkId
       "DisplayLineBreaks",            // cookieName
       "Zeilenumbrüche einblenden",    // showLabel
       "Zeilenumbrüche ausblenden");   // hideLabel

//================================================================================

/*

#bodyContent.hide-PageNumber .PageNumber { display:none !important; }
#bodyContent.hide-LineBreak  .LineBreak  { display:none !important; }
#bodyContent.hide-Annotation .Annotation { display:none !important; }
  • /

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

// weg! man fummle mir nicht dazwischen...
aOnloadFunctions = [];

/** remove whitespace from both ends */
String.prototype.trim = function() {
    return this.replace(/^\s+/, "")
               .replace(/\s+$/, "");
};
/** escapes characters to make them usable as a literal in a regexp */
RegExp.escape = function(s) {
    return s.replace(/([{}()|.?*+^$\[\]\\])/g, "\\$1");
};
/** CSS-class helper */
CSS = {
   /** creates a RegExp matching a className */
   classNameRE: function(className) {
       return new RegExp("(^|\\s+)" + RegExp.escape(className) + "(\\s+|$)");
   },
   /** returns whether an element has a class */
   hasClass: function(element, className) {
       if (!element.className) return false;
       var re  = this.classNameRE(className);
       return re.test(element.className);
       // return (" " + element.className + " ").indexOf(" " + className + " ") != -1;
   },
   /** adds a class to an element, maybe a second time */
   addClass: function(element, className) {
       if (this.hasClass(element, className))  return;
       var old = element.className ? element.className : "";
       element.className = (old + " " + className).trim();
   },
   /** removes a class to an element */
   removeClass: function(element, className) {
       var re  = this.classNameRE(className);
       var old = element.className ? element.className : "";
       element.className = old.replace(re, "");
   },
};

/** allows showing or hiding tags of a given class */ function showHideToggle(className, linkId, cookieName, showLabel, hideLabel) {

   var show	= true;

var link;

   /** initialize everything, to be called onload */
   function init() {
       var cookie  = GetCookie(cookieName);
       if (cookie) show    = cookie == "true";
       
       link   = document.createElement("a");
       link.appendChild(document.createTextNode(""));
       // TODO IE-memleak?
       link.onclick    = toggle;
       
       var item   = document.createElement("li");
       item.setAttribute('id', linkId);
       item.appendChild(link);
       
       var specialPages = document.getElementById('t-specialpages');
       if (specialPages) {
           specialPages.parentNode.appendChild(item);
       }
       
       update();
   }

function toggle() { show = !show; SetCookie(cookieName, show);

       update();

}

   /** show or hide elements and change toggle link accordingly */
   function update() {
       link.firstChild.data    = show ? hideLabel : showLabel;

var bodyContent = document.getElementById('bodyContent'); if (show) CSS.removeClass(bodyContent, className); else CSS.addClass(bodyContent, className);

   }
   
   return init;

}

// see Vorlage:Seite aOnloadFunctions[aOnloadFunctions.length] = showHideToggle(

       "hide-PageNumber",              // className
       "t-pagenumbers",                // linkId
       "DisplayPageNumbers",           // cookieName
       "Seitenzahlen einblenden",      // showLabel
       "Seitenzahlen ausblenden");     // hideLabel

// see Vorlage:An aOnloadFunctions[aOnloadFunctions.length] = showHideToggle(

       "hide-Annotation",              // className
       "t-annotationdisplay",          // linkId
       "DisplayAnnotations",           // cookieName
       "Anmerkungen einblenden",       // showLabel
       "Anmerkungen ausblenden");      // hideLabel

// see Vorlage:Br and Vorlage:Lbr aOnloadFunctions[aOnloadFunctions.length] = showHideToggle(

       "hide-LineBreak",               // className
       "t-linebreakdisplay",           // linkId
       "DisplayLineBreaks",            // cookieName
       "Zeilenumbrüche einblenden",    // showLabel
       "Zeilenumbrüche ausblenden");   // hideLabel