Benutzer:Forrester/düp-setzen-monobook.js

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen

Hinweis: Leere nach dem Veröffentlichen den Browser-Cache, um die Änderungen sehen zu können.

  • Firefox/Safari: Umschalttaste drücken und gleichzeitig Aktualisieren anklicken oder entweder Strg+F5 oder Strg+R (⌘+R auf dem Mac) drücken
  • Google Chrome: Umschalttaste+Strg+R (⌘+Umschalttaste+R auf dem Mac) drücken
  • Internet Explorer/Edge: Strg+F5 drücken oder Strg drücken und gleichzeitig Aktualisieren anklicken
  • Opera: Strg+F5
mw.loader.getScript('https://de.wikipedia.org/w/index.php?title=Benutzer:Forrester/d%C3%BCp-helperfunctions-monobook.js&action=raw&ctype=text/javascript').then(function () {

// DÜP-Template overlay
    var DuepTemplate = {
        name:   "Dateiüberprüfung",
        rows:   [
            { element: 'duep_quelle',       field: "Quelle",                title: "Wenn nicht deutlich wird, woher der Uploader die Datei hat"                                 },  
            { element: 'duep_urheber',      field: "Urheber",               title: "Wenn nicht deutlich wird, wer der Urheber der Datei ist"                                    },
            { element: 'duep_lizenz',       field: "Lizenz",                title: "Wenn die Datei nicht unter einer freien Lizenz veröffentlicht wurde"                        },
            { element: 'duep_freigabe',     field: "Freigabe",              title: "Wenn nicht deutlich wird, dass der Urheber einer freien Lizenz zugestimmt hat"              },
            { element: 'duep_gezeigtes',    field: "Gezeigtes Werk",        title: "Wenn nicht klar ist, dass der Urheber des Originalwerks einer freien Lizenz zugestimmt hat" },
            { element: 'duep_besonderer',   field: "Besonderer Fall",       title: "Wenn ein besonderer Fall vorliegt (persönliche Benachrichtigung)"                           }
        ],
        eachRow: function(it) { 
            for (var i=0; i<this.rows.length; i++) {
                it(this.rows[i]);
            }
        }
    };

    /** add the form overlay */
    function addForm() {
        var overlay = document.createElement("div");
        overlay.setAttribute("id", "overlay-duep");
        overlay.style.cssText   = "position:absolute; "
                                + "top:200px; "
                                + "left:200px; "
                                + "border:2px solid black; "
                                + "background-color:#DDDDDD; "
                                + "z-index:99999; "
                                + "padding:10px; "
                                + "font-size:12pt;";
                                
        var form = document.createElement("form");
        form.setAttribute("id", "duep_overlay_form");
        DuepTemplate.eachRow(function(row) {
            var input   = document.createElement("input");
            input.setAttribute("id",        row.element);           
            input.setAttribute("type",      "checkbox");
            input.setAttribute("checked",   "checked");
            form.appendChild(input);
            
            var label = document.createElement("label");
            label.setAttribute("for", row.element);
            label.setAttribute("title", row.title);
            label.textContent   = row.field;
            form.appendChild(label);
            
            form.appendChild(document.createElement("br"));
        });
        form.appendChild(document.createElement("br"));
        form.appendChild(MiniUtil.jsLink("Ok",       execute));
        form.appendChild(document.createTextNode(" "));
        form.appendChild(MiniUtil.jsLink("Clear",    clearForm));
        form.appendChild(document.createTextNode(" "));
        form.appendChild(MiniUtil.jsLink("Cancel",   removeForm));
        
        overlay.appendChild(form);
        document.getElementsByTagName("body")[0]
                .appendChild(overlay);
    }
	
	/** remove the form overlay */
    function removeForm() {
        MiniUtil.removeNode(
            document.getElementById("overlay-duep"));
    }

	/** reset checkboxes in the form overlay */
    function clearForm() {
        DuepTemplate.eachRow(function(row) {
            document.getElementById(row.element).checked    = false;
        });
    }

	/** change the current page by replacing duep-templates with new ones */
    function execute() {
        var newText = compile();
    
        function change(text) { 
            var out1 = text.replace(/\{\{Dateiüberprüfung.*\}\}/, newText);
            var out2 = text.replace(/\{\{DÜP.*\}\}/,              newText);
            return out1 != text ? out1 : 
                    out2 != text ? out2 : 
                    newText + "\n\n" + text; 
        }
        MiniWiki.changeText(mw.config.get('wgPageName'), change, "Dateiüberprüfung", MiniUtil.reloader());
        
        removeForm();
    }
	
	/** compile checkboxes into a template string */
	function compile() {
		var newText = "{{" + DuepTemplate.name;
        DuepTemplate.eachRow(function(row) {
            if (document.getElementById(row.element).checked)
                    newText += "|" + row.field;
        });
        newText += "}}";
		return newText;
	}
    
    //------------------------------------------------------------------------------
    //## init
    
    if (MiniUtil.imageView()) {
        MiniUtil.addJsTab("DÜP", addForm);
    }
});