MediaWiki:DiacriticsPoll.js
Notă: După salvare, trebuie să treceți peste cache-ul browser-ului pentru a vedea modificările.
- Mozilla, Google Chrome, Safari, Konqueror: țineți apăsat Shift în timp ce apăsați butonul Reload (sau apăsați Ctrl-Shift-R).
- Internet Explorer: apăsați Ctrl-F5.
- Opera: apăsați F5.
/**
* This script contains the code needed for a diacritics poll.
* It has 2 components:
* - one that is designed to determine objectively if displaying the correct
* diacritics has any effects on the user experience
* - the second is a poll to be displayed to logged-in users and is designed
* to gather information about how many users still use the old diacritics
* on their keyboards
*
* © Copyright 2016 Utilizator:Strainu
* This code is licensed under the MIT license
*/
var logEvent = function(schema, revision, event, cookieName) {
var payload = {
schema: schema,
revision: revision,
wiki: 'metawiki',
event: event
};
var url = 'https://meta.wikimedia.org/beacon/event' + '?' + encodeURIComponent(JSON.stringify(payload));
document.createElement( 'img' ).src = url;
enddate = new Date("June 8, 2016 00:00:00");
mw.cookie.set( cookieName, event, {expires: 604800} );
};
// Copyright (c) 2010 Cristian Adam <cristian.adam@gmail.com>
// Adapted for Wikipedia by [[User:Strainu]]
// License: MIT
function diacriticsPollConfigureTextElement(element, text) {
element.innerHTML = text;
element.style.width = "auto";
element.style.visibility = "hidden";
element.style.position = "absolute";
element.style.fontSize = "96px";
}
function diacriticsVisibility() {
var userAgent = navigator.userAgent.toLowerCase();
if (userAgent.indexOf("bot") != -1 ||
userAgent.indexOf("crawl") != -1 ||
userAgent.indexOf("slurp") != -1 ||
userAgent.indexOf("archive") != -1) {
return false;
}
var normalTextS = document.createElement("div");
diacriticsPollConfigureTextElement(normalTextS, "sSsS");
var normalTextT = document.createElement("div");
diacriticsPollConfigureTextElement(normalTextT, "tTtT");
var diacriticsTextS = document.createElement("div");
diacriticsPollConfigureTextElement(diacriticsTextS, "șȘșȘ");
var diacriticsTextT = document.createElement("div");
diacriticsPollConfigureTextElement(diacriticsTextT, "țȚțȚ");
document.body.insertBefore(normalTextS, document.body.firstChild);
document.body.insertBefore(diacriticsTextS, document.body.firstChild);
document.body.insertBefore(normalTextT, document.body.firstChild);
document.body.insertBefore(diacriticsTextT, document.body.firstChild);
// Sometimes at various zoom settings there is a +1 difference
var doChangeS = (Math.abs(normalTextS.offsetWidth - diacriticsTextS.offsetWidth) > 1);
var doChangeT = (Math.abs(normalTextT.offsetWidth - diacriticsTextT.offsetWidth) > 1);
// Pocket Internet Explorer on Windows Mobile 6.5 returns 0
if (normalTextS.offsetWidth === 0 &&
diacriticsTextS.offsetWidth === 0) {
doChangeS = true;
}
if (normalTextT.offsetWidth === 0 &&
diacriticsTextT.offsetWidth === 0) {
doChangeT = true;
}
document.body.removeChild(normalTextS);
document.body.removeChild(normalTextT);
document.body.removeChild(diacriticsTextS);
document.body.removeChild(diacriticsTextT);
var issues = 0;
if (doChangeS) {
issues += 1;
}
if (doChangeT) {
issues += 2;
}
if (mw.cookie.get('diacriticsLog') === null)
{
if (mw.geoIP === undefined)
logEvent( 'DiacriticsVisibility', 15606222, {"issues": issues, "country": "Unknown"}, 'diacriticsLog' );
else {
var promise = mw.geoIP.getPromise();
promise.then(function(result) {
logEvent( 'DiacriticsVisibility', 15606222, {"issues": issues, "country": window.Geo.country}, 'diacriticsLog' );
}, function(err) {
logEvent( 'DiacriticsVisibility', 15606222, {"issues": issues, "country": "Unknown"}, 'diacriticsLog' );
});
}
}
}
function diacriticsPollSubmit() {
var word = document.getElementById('word');
var response = word.value;
var poll_table = document.getElementById('dia_sondaj');
poll_table.style.display = "none";
logEvent( 'DiacriticsPoll', 15630673, {"text": response, "country": window.Geo.country}, 'diacriticsPoll' );
}
function diacriticsPoll() {
if (mw.cookie.get('diacriticsPoll') === null)
{
var pollHTML = '<div id="dia_sondaj" style="margin-left: auto; margin-right: auto; padding: 1em; font-size: 9pt; text-align: left; line-height: 1.3; color: white; overflow: auto; border-radius: 1em; background-color: rgb(255, 127, 80);"><div style="font-size:120%"><b><i>Sondaj diacritice</i></b></div>Dorim să aflăm numărul de utilizatori care încă nu pot scrie cu <a style="color: white; font-weight: bold; text-decoration: underline;" href="https://ro.wikipedia.org/wiki/Wikipedia:Diacritice#Caracterele_.C8.98_.C8.99i_.C8.9A">diacriticele corecte</a>. Vă rugăm participați la acest sondaj, este important pentru Wikipedia în limba română! Nu vom publica date personale. [<a style="color: white; font-weight: bold; text-decoration: underline;" href="https://meta.wikimedia.org/wiki/Privacy_policy/ro">Detalii</a>]<div id="dia_content"><p style="font-size:120%">Vă rugăm introduceți <u>de la tastatură</u> cuvântul <span style="font-size:120%"><b>arșiță</b></span> în căsuța de mai jos și apăsați butonul <i>Trimite</i>.</p><div><form lpformnum="12"><input name="word" id="word" style="width:200px" type="text"><input name="submit" value="Trimite" onclick="javascript:diacriticsPollSubmit()" type="button"></form></div></div></div>';
var sitenotice = document.getElementById('siteNotice');
sitenotice.innerHTML = pollHTML;
}
}
jQuery(document).ready(function ($) {
diacriticsVisibility();
diacriticsPoll();
});