Käyttäjä:Hunsvotti/Gadget-määritelmät.js

Hei, olet tullut tänne etsimään sanan Käyttäjä:Hunsvotti/Gadget-määritelmät.js merkitystä. DICTIOUS-sanakirjasta löydät paitsi kaikki sanan Käyttäjä:Hunsvotti/Gadget-määritelmät.js sanakirjamerkitykset, myös sen etymologian, ominaisuudet ja sen, miten Käyttäjä:Hunsvotti/Gadget-määritelmät.js sanotaan yksikössä ja monikossa. Kaikki mitä sinun tarvitsee tietää sanasta Käyttäjä:Hunsvotti/Gadget-määritelmät.js on tässä. Sanan Käyttäjä:Hunsvotti/Gadget-määritelmät.js määritelmä auttaa sinua olemaan täsmällisempi ja oikeampi puhuessasi tai kirjoittaessasi tekstejäsi. Kun tunnet sananKäyttäjä:Hunsvotti/Gadget-määritelmät.js määritelmän sekä muiden sanojen määritelmät, rikastutat sanavarastoasi ja saat lisää ja parempia kielellisiä resursseja.
/*
 * Lomakkeidenkäsittelyskripti, joka ladataan getScriptillä tarvittaessa.
 */
var yhteinen_lomakkeet = "//fi.wiktionary.orghttps://fi.wiktionary.org/w/index.php?title=Käyttäjä:Hunsvotti/Yhteinen.js";


(function(w){


    /*
     * Kehys kielilomakkesta irrotettavan määritelmän lisäys -osan ympärille
     */
    var maaritelmalomake_its = '\
<fieldset id="gm_its_maaritelma" style="background-color: #ddf; border: 3px solid #aaf; border-radius: 5px; padding: 0.5em; font-size: normal; margin-left: -1.5em;">\n\
<legend>Uusi määritelmä</legend>\n\
<div style="text-align: right; margin-top: -1em; "><a href="#" id="gm_piilotanappi" style="font-size: x-small; margin: 0 0 0 0; "></a></div>\n\
<span style="color: red;">Huom! Tämä toiminnallisuus on kokeellinen, eikä välttämättä toimi oikein. Palautetta voi laittaa <a href="https://fi.wiktionary.orghttps://fi.wiktionary.org/w/index.php?title=Keskustelu_k%C3%A4ytt%C3%A4j%C3%A4st%C3%A4:Hunsvotti/Gadget-m%C3%A4%C3%A4ritelm%C3%A4t.js">keskustelusivulle</a>.</span>\n\
<div id="gm_inline_maaritelma"/>\n\
<p style="clear: both;">\n\
<input type="button" id="gm_generointi" value="Generoi wikiteksti &larr;"/>\n\
</p>\n\
</fieldset>\n\
';

    /*
     * Kehys kielilomakkesta irrotettavan sanaluokan lisäys -osan ympärille
     */
    var sanalklomake_its = '\
<fieldset id="gm_its_sanalk" style="background-color: #ddf; border: 3px solid #aaf; border-radius: 5px; padding: 0.5em; font-size: normal; ">\n\
<div style="text-align: right; margin-top: -1em; "><a href="#" id="gm_piilotanappi" style="font-size: x-small;"></a></div>\n\
<span style="color: red;">Huom! Tämä toiminnallisuus on kokeellinen, eikä välttämättä toimi oikein. Palautetta voi laittaa <a href="https://fi.wiktionary.orghttps://fi.wiktionary.org/w/index.php?title=Keskustelu_k%C3%A4ytt%C3%A4j%C3%A4st%C3%A4:Hunsvotti/Gadget-m%C3%A4%C3%A4ritelm%C3%A4t.js">keskustelusivulle</a>.</span>\n\
<legend>Uusi sanaluokkaotsikko</legend>\n\
<div id="gm_inline_sanalk"><!-- sanalklomake tänne --></div>\n\
<p style="clear: both;">\n\
<input type="button" id="gm_generointi" value="Generoi wikiteksti &larr;"/>\n\
</p>\n\
</fieldset>\n\
';


    function main($) {

        /*
         * Näkymätön lomake, jolla tiedot lähetetään. Peräisin HotCatin koodista.
         */
        var tallennuslomake = '<form id="commitForm" method="post" enctype="multipart/form-data" action="\
' + wgScript + '?title=' + encodeURIComponent (wgPageName) + '\
&action=edit">\
' + '<input type="hidden" name="wpTextbox1" />\
' + '<input type="hidden" name="wpSummary" value="" />\
' + '<input type="hidden" name="wpMinoredit" value="0" />\
' + '<input type="hidden" name="wpWatchthis" value="0" />\
' + '<input type="hidden" name="wpAutoSummary" value="" />\
' + '<input type="hidden" name="wpEdittime" />\
' + '<input type="hidden" name="wpStarttime" />\
' + '<input type="hidden" name="wpEditToken" />\
' + '<input type="hidden" name="wpDiff" value="wpDiff" />\
' + '<input type="hidden" name="oldid" value="0" />\
' + '</form>';
	
	
	
        /*
         * Muotoilee aikaleiman tämänhetkisestä ajasta. Peräisin HotCatin koodista.
         */
        function currentTimestamp () {
            var now = new Date();
            var ts  = "" + now.getUTCFullYear();
            function two (s) { return s.substr (s.length - 2); }
            ts = ts + two ('0' + (now.getUTCMonth() + 1)) + two ('0' + now.getUTCDate()) + two ('00' + now.getUTCHours()) + two ('00' + now.getUTCMinutes()) + two ('00' + now.getUTCSeconds());
            return ts;
        }
	
        /*
         * Muotoilee urlista absoluuttisen. Peräisin HotCatin koodista.
         */
        function armorUri (uri) {
            // Avoid protocol-relative URIs, IE7 has a bug with them in Ajax calls
            if (uri.length >= 2 && uri.substring(0, 2) == '//') { return document.location.protocol + uri; }
            return uri;
        }

	/*
	 * Purkaa palvelimen palauttamat tiedot. Muutettu HotCatin koodista.
	 * json: apin palauttama wikitekstin sisältävä json-olio
	 * return (string): sivun wikiteksti
	 */
	function setPage (json) {
	    var pageText = null;
	    //alertJSON.stringify(json, undefined, 2));
	    var startTime = null;
	    if (json && json.query) {
		if (json.query.pages) {
		    //var page = json.query.pages;
		    var page = json.query.pages];
		    if (page) {
			if (page.revisions && page.revisions.length > 0) {
			    // Revisions are sorted by revision ID, hence  is the one we asked for, and possibly there's a  if we're
			    // not on the latest revision (edit conflicts and such).
			    pageText = page.revisions;
			    if (page.revisions.timestamp) { pageTime = page.revisions.timestamp.replace (/\D/g, ""); }
			    if (page.revisions.revid) { pageTextRevId = page.revisions.revid; }
			    if (page.revisions.length > 1) { conflictingUser = page.revisions.user; }
			}
			if (page.lastrevid) { lastRevId = page.lastrevid; }
			if (page.starttimestamp) { startTime = page.starttimestamp.replace (/\D/g, ""); }
			pageWatched = typeof (page.watched) == 'string';
			editToken = page.edittoken;            
		    }
		}
	    }
	    return pageText;
	}
	

        /*
         * Callback-funktio, jota kutsutaan kun sivun wikiteksti on ladattu.
         */
        function wikiteksti_ladattu(json) {
	    var pageText = setPage(json);
	    var a = data.kasittele_teksti(pageText, function(teksti, selite) {
		alert("SELITE: " + selite + "\n\n" + teksti);
		//laheta(teksti, selite);
	    });
	}

	
        /*
         * Lähettää apille kyselyn. Muutettu HotCatin koodista.
         */
        function getPage () {
            // apin latauskripti joka kutsuu callbackia palautetulla arvolla
            var url = mw.config.get('wgServer') + mw.config.get('wgScriptPath') + '\
/api.php?format=json&callback=gadget_maaritelma.wikiteksti_ladattu&action=query&titles=\
' + encodeURIComponent (wgPageName) + '&prop=info%7Crevisions&rvprop=content%7Ctimestamp%7Cids&meta=siteinfo&rvlimit=1&rvstartid=\
' + wgCurRevisionId;
            var s = document.createElement('script');
            s.src = armorUri(url);
            s.type = 'text/javascript';
            document.getElementsByTagName ('head').appendChild (s);
            // callback näkyväksi api-skripitille
            window.gadget_maaritelma.wikiteksti_ladattu = wikiteksti_ladattu; 
        }
	
	
	
        /************
         * Alustus. *
         ************/  
        (function() {
	    
            // Lisätyt tyylit ja käyttöyhteydet
            var yhteys = new Array();
	    
            window.gadget_maaritelma = {};
            // Avatun lisäyslaatikon numero. Laatikot numeroidaan 0:sta alkaen.
            window.gadget_maaritelma.numero = -1;
            window.gadget_maaritelma.tyyppi = -1;
	    var avattu = null;

            /*
             * Tallenna uusi määritelmä.
             */
            function tallennusnappi_m_onclick(numero) {
		// kaikille lisäyksille yhteiset tiedot, jotka välitetään callback-funktiolle
		data.lue_yhteiset_tiedot(numero);

		var $ol = $("#gm_its_maaritelma").closest("ol");
		// Haetaan kieli.
                window.gadget_maaritelma.kieli = 
                    $ol.prevAll("h2").children(".mw-headline").first().text();

                // Haetaan sanaluokka edellisestä h3-otsikosta (muutoskommenttiin).
		var $sanalk_h3 = $ol.prevAll("h3").children(".mw-headline").first();
                window.gadget_maaritelma.sanalk = $sanalk_h3.text();
                window.gadget_maaritelma.sanalk_ankkuri = $sanalk_h3.prop("id");
		
		////console.log("sanalk: " + sanalk_h3.text());

                // lisättävän määritelmän numero
                window.gadget_maaritelma.uuden_num = $ol.children("li").length + 1;
		////console.log("uuden numero: " + window.gadget_maaritelma.uuden_num);

                window.gadget_maaritelma.lisattava = "määritelmä";

                if ( !data.on_puutteita() ) {
                    // lisätään palautuslomake
                    $("#mw-content-text").prepend(tallennuslomake);
                    getPage();
                }
            }

            /*
             * Tallenna uusi sanaluokkamääritelmä.
             */
            function tallennusnappi_l_onclick(numero) {
		////console.log("numero: " + numero);
		// kaikille lisäyksille yhteiset tiedot, jotka välitetään callback-funktiolle
		data.lue_yhteiset_tiedot(numero);

                // Haetaan kieli edellisestä h2 otsikosta
                var kieli = window.gadget_maaritelma.kieli =
                    $("#gm_its_sanalk").parent().prevAll("h2").children(".mw-headline").first().text();

                var sanalk = window.gadget_maaritelma.sanalk = $("#gm_sanalkotsikko").prop('value');

                window.gadget_maaritelma.uuden_num = 1;
                window.gadget_maaritelma.lisattava = "sanaluokka";
		
                if ( !data.on_puutteita() ) {
		    // tallennetaan sanaluokka cookiehen
                    jQuery.cookie( 'gm_edellinen_sanalk', sanalk, { expires: 1,  path: '/' } );
                    // lisätään palautuslomake
                    $("#mw-content-text").prepend(tallennuslomake);
                    getPage();
                }
            }

            /*
             * Tallenna uusi kielimääritelmä.
             */
            function tallennusnappi_onclick(numero) {
		// kaikille lisäyksille yhteiset tiedot, jotka välitetään callback-funktiolle
		data.lue_yhteiset_tiedot(numero);

                var kieli = window.gadget_maaritelma.kieli = $("#gm_kieliotsikko").prop('value');
                var sanalk = window.gadget_maaritelma.sanalk = $("#gm_sanalkotsikko").prop('value');

                window.gadget_maaritelma.uuden_num = 1;
                window.gadget_maaritelma.lisattava = "kieli";
		
                if ( !data.on_puutteita() ) {
		    // tallennetaan sanaluokka cookiehen
                    jQuery.cookie( 'gm_edellinen_kieli', kieli, { expires: 1,  path: '/' } );
                    jQuery.cookie( 'gm_edellinen_sanalk', sanalk, { expires: 1,  path: '/' } );

                    // lisätään palautuslomake
                    $("#mw-content-text").prepend(tallennuslomake);
                    getPage();
                }
            }



	    function piilota() {
		if ( window.gadget_maaritelma.numero != -1 ) {
		    ////console.log("avattu: " + $(avattu).html());
		    if ( window.gadget_maaritelma.tyyppi == 1 ) {
			$("#gm_its_maaritelma").replaceWith(avattu);
		    } else if  ( window.gadget_maaritelma.tyyppi == 2 ) {
			$("#gm_sanalklomake" + gadget_maaritelma.numero).html("");
		    } else if ( window.gadget_maaritelma.tyyppi == 3 ) {
			$("#gm_kielilomake" + gadget_maaritelma.numero).html("");
		    }

		    window.gadget_maaritelma.avattu = null; 
		    window.gadget_maaritelma.numero = -1; 
		    window.gadget_maaritelma.tyyppi = -1;
		}
		return false;
	    }

	    function avaa_maaritelma_onclick(num) {
		// piilotetaan mahdollinen edellinen avonainen
		piilota();
		window.gadget_maaritelma.numero = num;
		window.gadget_maaritelma.tyyppi = 1;

		avattu = $("#gm_maaritelmalomake" + num).children("*");

		$.getScript(yhteinen_lomakkeet).done(function () {
		    $kielilomake = data.tee_kielilomake(true, num);
		    var $lomake = $(maaritelmalomake_its);
		    $lomake.find("#gm_piilotanappi").on('click', piilota);
		    $lomake.find("#gm_inline_maaritelma").replaceWith($kielilomake.find("#gm_inline_maaritelma"));
		    $lomake.find("#gm_generointi").on('click', function() { tallennusnappi_m_onclick(num); });
		    // vaihdetaan nuolen suunta
		    $lomake.find("#gm_generointi").attr('value', "Generoi wikiteksti →");

		    $("#gm_maaritelmalomake" + num).html($lomake);

		    $("#gm_maaritelma").focus();
		});
	    }

	    /*
	     * Avaa lisäyslomakkeen.
	     */
	    function avaa_sanalk_onclick(num) {
		// piilotetaan mahdollinen edellinen avonainen
		piilota();
		window.gadget_maaritelma.numero = num;
		window.gadget_maaritelma.tyyppi = 2;
		
		avattu = $("#gm_sanalklomake" + num).children("*");

		$.getScript(yhteinen_lomakkeet).done(function () {
		    var $kielilomake = data.tee_kielilomake(true, num);

		    var $lomake = $(sanalklomake_its);
		    $lomake.find("#gm_piilotanappi").on('click', piilota);
		    $lomake.find("#gm_inline_sanalk").replaceWith($kielilomake.find("#gm_inline_sanalk"));
		    $lomake.find("#gm_generointi").on('click', function() { tallennusnappi_l_onclick(num); });
		    // vaihdetaan nuolen suunta
		    $lomake.find("#gm_generointi").attr('value', "Generoi wikiteksti →");

		    $("#gm_sanalklomake" + num).html($lomake);
		    console.log("ed. kieli: " + jQuery.cookie('gm_edellinen_kieli') + ", ed. sanalk: " + jQuery.cookie('gm_edellinen_sanalk'));

		    $("#gm_sanalkluettelo").val(jQuery.cookie('gm_edellinen_sanalk'));
		    $("#gm_sanalkotsikko").val(jQuery.cookie('gm_edellinen_sanalk'));
		    $("#gm_sanalkluettelo").focus();
		});
	    }


	    function avaa_kieli_onclick(num) {
		// piilotetaan mahdollinen edellinen avonainen

		piilota();
		window.gadget_maaritelma.numero = num;
		window.gadget_maaritelma.tyyppi = 3;
		
		avattu = $("#gm_kielilomake" + num);

		$.getScript(yhteinen_lomakkeet).done(function () {
		    var $kielilomake = data.tee_kielilomake(true, num);

		    // lisätään piilotusnappi
		    $kielilomake.prepend('<div style="text-align: right; margin-top: -1em; "><a href="#" id="gm_piilotanappi" style="font-size: x-small; "></a></div>\n');
		    $kielilomake.find("#gm_piilotanappi").on('click', piilota);

		    // vaihdetaan nuolen suunta
		    $kielilomake.find("#gm_generointi").attr('value', "Generoi wikiteksti →");
		    $kielilomake.find("#gm_generointi").on('click', function() { tallennusnappi_onclick(num); });

		    $("#gm_kielilomake" + num).html($kielilomake);
		    console.log("ed. kieli: " + jQuery.cookie('gm_edellinen_kieli') + ", ed. sanalk: " + jQuery.cookie('gm_edellinen_sanalk'));

		    $("#gm_kieliluettelo").val(jQuery.cookie('gm_edellinen_kieli'));
		    $("#gm_kieliotsikko").val(jQuery.cookie('gm_edellinen_kieli'));
		    $("#gm_sanalkluettelo").val(jQuery.cookie('gm_edellinen_sanalk'));
		    $("#gm_sanalkotsikko").val(jQuery.cookie('gm_edellinen_sanalk'));
		    $("#gm_kieliluettelo").focus();
		});
	    }

	    
	    //    console.log("hello: "+ gadget_maaritelma.avaa_kieli_onclick);
	    
	    function tee_nappi(teksti, title, id, func, flt) {
		var i = document.createElement("input");
		i.type = "button";
		i.title = title;
		i.setAttribute("style", "font-size: x-small; border: 3px solid #aaf; border-radius: 5px;");
		i.value = teksti;
		i.onclick = func;
		var d = document.createElement("span");
		d.appendChild(i);
		d.setAttribute("class", "gm_nappikehys");
		d.setAttribute("style", "text-align: right; clear: both; vertical-align: middle; margin-left: 1px; margin-right: 1px; float: " + flt + ";");
		return d;
	    }


            // lisätään kaikkien ol-listojen, jotka seuraavat h3 ja p elementtejä, perään
            $("h3").next("p").next( "ol" ).each(function( index ) {
                //////console.log( index + ": " + $(this).text() );
		var n = tee_nappi("+ määritelmä...", "Lisää uusi määritelmä.", 
				  "gm_maaritelmalomake" + index, function () { avaa_maaritelma_onclick(index); }, "none");

                $(this).append('<div id="gm_maaritelmalomake' + index + '"/>');
		var d = $("#gm_maaritelmalomake" + index);
		$(n).children(".gm_nappikehys").css("margin-left", "0");
		$(n).children(".gm_nappikehys").css("margin-top", "0");
		$(n).css("margin-left", "-1.5em");
		$(n).css("margin-top", "0");
		$(d).append(n);
            });

            // Lisätään kaikkien h2-otsikoiden, paitsi Viitteet-otsikon, perään. (Sisällysluettelon otsikko yms.??
	    // ei sisällä span.wm-headline-elementtiä)
            $( "h2:has(span.mw-headline)" ).not("#Viitteet").each(function( index ) {
                //////console.log( index + ": " + $(this).text() );
                $(this).children(".mw-editsection").prepend(
		    tee_nappi("+ sanaluokka...", "Lisää määritelmä sanalle uuteen sanaluokkaan.", 
			      "gm_sanalklomake" + index, function () { avaa_sanalk_onclick(index); }, "none"));
		$(this).after('<div id="gm_sanalklomake' + index + '"/>');
            });

            // pääotsikon perään
            $( "h1#firstHeading" ).each(function( index ) {
                //////console.log( index + ": " + $(this).text() );
                $(this).append(tee_nappi("+ kieli...", "Lisää sanalle määritelmä uudella kielellä", 
					 "gm_kielilomake" + index, function () { avaa_kieli_onclick(index); }, "right"));
		$(this).after('<div id="gm_kielilomake' + index + '"/>');
            });

	    // $("body").prepend("<button onclick='gadget_maaritelma.testaa_onclick();'>Testaa</button>");

        })(); // alustus
    } // main
    
    if ( wgAction == "view" ) {
	// Ladattujen getScript-skriptien cachetus.
	jQuery.ajaxSetup({
	    cache: true
	});
        jQuery(document).ready(main);
    }
    
})(window);