MediaWiki:Gadget-Koordinatar.js

Frå Wikipedia – det frie oppslagsverket

Merk: Etter lagring vil det kanskje vera naudsynt at nettlesaren slettar mellomlageret sitt for at endringane skal tre i kraft.

  • Firefox og Safari: Haldt nede Shift medan du klikkar på Oppdater, eller trykk anten Ctrl-F5 eller Ctrl-R (⌘-R på Mac)
  • Google Chrome: Trykk Ctrl-Shift-R (⌘-Shift-R på Mac)
  • Internet Explorer og Edge: Haldt nede Ctrl medan du klikkar Oppdater, eller trykk Ctrl-F5
  • Opera: Tøm mellomlageret i Verktøy → Innstillingar
// frå [[nb:MediaWiki:Gadget-Koordinater.js]] som vidare har kopiert det frå [[:commons:User:Dschwen/coordinates.js]] 
//
// Script to embed Coordinate template generation in MediaWiki's edit page
// inspired by [[:en:User:Pilaf/livepreview.js]]

(function(mw, $){

    // Defaults
    var coord_templatename = 'koord',
        accuracy = 5,
        defaulttype = 'landmark';

    function parseQuerystring(url, delimiter) {
        var result = {}, 
        queryString = url.substring(url.indexOf(delimiter) + 1),
        re = /([^&=]+)=([^&]*)/g, m;
    
        while (m = re.exec(queryString)) {
            result[decodeURIComponent(m[1])] = decodeURIComponent(m[2]);
        }
        return result;
    }
    
    function insertCoords() {
        var coordbox = $('#CoordinateBox').val(),
            coordstr = '',
            latlon = '',
            source = '(ukjend)',
            qs = '';
        
        mw.log("Check");
        try {
            // Google Maps
            if(coordbox.match(/^(http|https):\/\/maps\.google\./) || coordbox.match(/(http|https):\/\/(www\.)?google\.([a-zA-Z]+)\/maps/) ) {
                source = 'Google Maps';
                qs = parseQuerystring(coordbox, '?');
                latlon = qs.ll.split(',');
    
            // Bing Maps
            } else if ( coordbox.match(/^(http|https):\/\/(www\.)?bing\.com\/maps/) ) {
                source = 'Bing Maps';
                qs = parseQuerystring(coordbox, '?');
                mw.log(qs.cp);
                latlon = qs.cp.split('~');
        
            // Wikimapia
            } else if ( coordbox.match(/^(http|https):\/\/(www\.)?wikimapia\.org/) ) {
                source = 'Wikimapia';
                qs = parseQuerystring(coordbox, '#');
                latlon = [qs.lat, qs.lon];
    
            // OpenStreetMap
            } else if ( coordbox.match(/^(http|https):\/\/(www\.)?openstreetmap\.org/) ) {
                source = 'OpenStreetMap';
                qs = parseQuerystring(coordbox, '?');
                latlon = [qs.lat, qs.lon];
            } else {
                alert("Klarte diverre ikkje å tolka URL-en. Meld gjerne frå om vansken på Samfunnshuset om du trur URL-en er gild.");             
            }
            
        } catch (err) {
            alert("Klarte diverre ikkje å tolka URL-en frå " + source + ". Meld gjerne frå om vansken på Samfunnshuset om du trur URL-en er gild."); 
            return;
        }
    
        var mark_ns = (latlon[0] < 0) ? 'S' : 'N',
            mark_ew = (latlon[1] < 0) ? 'W' : 'E',
            lat = Math.abs(latlon[0]),
            lon = Math.abs(latlon[1]),
            lat_m = ( lat - Math.floor(lat) ) * 60.0,
            lon_m = ( lon - Math.floor(lon) ) * 60.0,
            lat_s = ( lat_m - Math.floor(lat_m) ) * 60.0,
            lon_s = ( lon_m - Math.floor(lon_m) ) * 60.0;
    
        coordstr =
            '{{'+coord_templatename
            + '|' + Math.floor(lat)
            + '|' + Math.floor(lat_m)
            + '|' + lat_s.toPrecision(accuracy)
            + '|' + mark_ns
            + '|' + Math.floor(lon)
            + '|' + Math.floor(lon_m)
            + '|' + lon_s.toPrecision(accuracy)
            + '|' + mark_ew
            + '|type:' + defaulttype
            + '|vising=tittel}}\n';
        
        var editbox = $('#wpTextbox1'),
            first_section = (editbox.val()).indexOf('\n=='),
            first_template = (editbox.val()).indexOf('\n{{');
    
        if (first_template >-1 && (first_section>-1 ? first_section >=first_template : true)) {
            var editbox_content_1 = (editbox.val()).substr(0,first_template);
            var editbox_content_2 = (editbox.val()).substr(first_template);
            editbox.val(editbox_content_1 + coordstr + editbox_content_2);
        } else {
            var editbox_content = editbox.val();
            editbox.val(coordstr + editbox_content);
        }

        var sumbox = $('#wpSummary');
        
        var sumstr = sumbox.val().replace(/\s*legg til koordinatar*$/, '');
        if (sumstr.length && !/[.!?]$/.test(sumstr)) sumstr += '.';
        if (sumstr.length) sumstr += ' ';
        sumstr += 'legg til koordinatar frå ' + source + ', sjå [[Hjelp:Koordinatar.js]]';
        sumbox.val(sumstr);
    }

    $(function(){
        
        // Insert the coordinate Form into the edit box.
        $('#editpage-copywarn').each(function(i, copywarn){
            var CoordinatesHTML =  '<div style="border: 1px solid gray; padding: 3px; margin-top: 2px; margin-bottom:2px;">'
            CoordinatesHTML += '<input type="button" id="InterpretCoordinates" value="Set inn '+coord_templatename+'" /> ';
            CoordinatesHTML += '<input type="text" size="80" id="CoordinateBox" />';
            CoordinatesHTML += '&nbsp;&nbsp;&nbsp;(<a href="//nn.wikipedia.org/w/index.php?title=Hjelp:Koordinatar.js">Rettleiing</a>)</div>';
            $(copywarn).prepend(CoordinatesHTML);
        });
    
        // Coordinate interpretation
        $('#InterpretCoordinates').click(insertCoords);
        
    });
    
})(mediaWiki, jQuery);