Projet:Copyvio/Le gadget copier coller sourcé
Projet Copyvio
Motivation/proposition
Ajouter un sourcage sur les copier-coller faits à partir de Wikipédia.
Un plus pour la connaissance des licences libres et le respect de la citation dans les centaines/milliers de copier-coller faits à partir de Wikipédia chaque jour.
En clair, lorsque l'on ferait un copier-coller d'un long morceau de texte de Wikipédia, il s'ajouterait automatiquement à la fin du copier-coller quelques mots, par exemple :
"extrait de l'article de Wikipédia Pomme, sous licence CC-by-sa"
Possibilités techniques ouvertes - questions
- est-ce faisable ?
- oui, voir code ci-dessous.
- est-il possible de l'appliquer pour les IP ?
- oui si le gadget est activé par défaut = consensus. Et après, soit pour les IP uniquement, soit aussi pour les nouveaux éditeurs, soit pour tout le monde.. selon le paramètre groupeUtilisateurExclu
- quelles sont les conséquences en terme de charge serveur ?
- aucune le code est exécuté par le client (si le js est activé), la consommation CPU doit être très faible (uniquement lors d'un copier-coller, quelques lignes)
- à quel point peut-on paramétrer cette fonction ?
- Ne pas activer au dessous d'un certain nombre de mots copiés
- fait dans le code nbreMotsMinimum = 7 (à discuter, comme tous les paramètres)
- Gêne dans les copié-collés successifs de contenus à des fins de citation.
- fait dans le code nbreCopieLimite=2 un deuxième copier-coller n'affiche plus la réf, changer d'article remet le compteur à 0
- Gêne dans le copié-collé de syntaxe wiki
- fait dans le code = activé uniquement sur l'espace encyclopédique et pas en mode édition
- Faire des variantes du message selon la quantité de texte copiée ?
- mettre une référence plus extensive si la citation est longue ? possible ? utile ?
- Peut-on utiliser un autre système (à la sélection, se voir proposer une boîte surgissante avec des boutons pour bien citer ?).
- sans doute possible mais un peu lourd ?
- il y a de gros risques quand on modifie le comportement du navigateur au clic droit pour remplacer le menu contextuel par défaut du navigateur par un menu spécifique. Ce sera bientôt d'actualité sur Wikipédia, car c'est le comportement de l'extension MathJax qui va bientôt faire son apparition dans les articles comportant des formules mathématiques (Lgd)
- Ne pas activer au dessous d'un certain nombre de mots copiés
problème : un copier-coller avec la mise en forme montre que la typographie change : dans le copier-coller sourcé, la mise en forme est effacée alors que "de Wikipédia, sous " est dans une mise en forme différente
mise en place sur fr.wp
- Quel serait le processus de mise en place sur fr.wp ?
- phase de test avec Projet:JavaScript puis sondage par une prise de décision Condorcet ? (Un Condorcet permet de trancher entre x variantes de messages par exemple).
- Quelles questions à trancher ?
- Mise en place ou non ? Ou inclure "pas de message" dans les messages possibles ?
- Nature du message affiché (lien/permalien vers l'article ? explication de la licence ? autre ?)
- Est-ce adaptable aux autres projets wikiversité, en.wp ... ?
Historique
Idée : Ofol (moi . ✍), discussion sur la liste @tech de wikimédia fr le 13 février 2012, idée soumise à @discussions de WMFr le 21 mars, mise au point et publication du code par une équipe-projet de l'Ecole Centrale de Lille sur Projet:Copyvio/Le gadget copier coller sourcé le 12/04
Comment tester le gadget ?
importScript('Projet:Copyvio/copier-coller_sourcé.js');
Code
Ici vous pouvez consulter le code du gadget.
/**
* Copier-coller sourcé
*
* Ce script permet d'ajouter la source (lien vers l'article + licence) à un copier-coller effectué à partir de Wikipédia.
*
* Auteurs : Kojemiaka et HKza
* Date de dernière révision : 10/04/12
*/
// Documentation du script :
//
//////////////////////ZONE PERSONNALISABLE//////////////////////
var nbreMotsMinimum=7;//Nombre de mots minimum à copier pour que la source s'affiche
var groupeUtilisateurExclu=4;
/*Groupes d'utilisateurs pour qui le gadget n'est pas activé. ex: si groupeUtilisateurExclu=3, alors le sourçage ne sera pas ajoutée aux copier-coller des "autopatrolled"*/
/*
0:"*":tout le monde, (pas d'intérêt)
1:"user":utilisateur enregistré,
2:"autoconfirmed":>4j,
3:"autopatrolled":>90j + >500 edit
4:personne
*/
var numeroEspace=0;// Namespace où le gadget est activé : ici, seulement dans l'espace encyclopédique
/*
"média": -2,
"spécial": -1,
"": 0,
"discussion": 1,
"utilisateur": 2,
"discussion_utilisateur": 3,
"wikipédia": 4,
"discussion_wikipédia": 5,
"fichier": 6,
"discussion_fichier": 7,
"mediawiki": 8,
"discussion_mediawiki": 9,
"modèle": 10,
"discussion_modèle": 11,
"aide": 12,
"discussion_aide": 13,
"catégorie": 14,
"discussion_catégorie": 15,
"portail": 100,
"discussion_portail": 101,
"projet": 102,
"discussion_projet": 103,
"référence": 104,
"discussion_référence": 105,
*/
var nbreCopieLimite=2;// Nombre de copier-coller successifs à partir duquel le sourçage ne s'affiche plus en bas des copier-coller - se remet à 0 si on change d'article
/////////////////FIN DE LA ZONE PERSONNALISABLE/////////////////
function ajouterSource () {
var compteur=0;//Pour compter le nombre de copier-coller successifs
if(mw.config.get('wgAction')=="view" && mw.config.get('wgNamespaceNumber')==numeroEspace /*&& !(wgUserGroups[groupeUtilisateurExclu])*/) { //On teste si le script doit être activé - 3ème test temporairement supprimé pour test
document.oncopy = function () {
compteur ++;
if(compteur < nbreCopieLimite){ //On teste le nombre de copier-coller successifs
var selection = window.getSelection();
if(selection.toString().split(' ').length > nbreMotsMinimum) { // On compte le nombre de mots copiés
var permalink = $('#t-permalink a').attr('href');
var source = "<br/><br/>Source : article <a href=" + permalink + ">" + mw.config.get('wgPageName') + "<a/> de Wikipédia, sous <a href='http://creativecommons.org/licenses/by-sa/3.0/deed.fr'>licence Creative Commons by-sa<a/>"; // Source à ajouter au copier-coller
var copytext = selection + source;
var newdiv = document.createElement('div');
newdiv.style.position='absolute';
newdiv.style.left='-99999px';
$(newdiv).appendTo('body');
newdiv.innerHTML = copytext; // On récupère la sélection et la source dans un div créé dans le body
selection.selectAllChildren(newdiv);
window.setTimeout(function() {
$(newdiv).remove(); // On supprime le div
},0);
}
}
}
}
}
addOnloadHook(ajouterSource);//