Skip to content

Instantly share code, notes, and snippets.

@Veejay
Created July 11, 2012 09:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Veejay/3089311 to your computer and use it in GitHub Desktop.
Save Veejay/3089311 to your computer and use it in GitHub Desktop.
Script VireMoi
// ==UserScript==
// @name Script VireMoi
// @description Met des bouton pour virer ou garder, mais virer c'est mieux hein
// @namespace rien
// @include http://flickr.com/photos/*
// @include http://www.flickr.com/photos/*
// ==/UserScript==
(function() {
// On teste que la photo courante est bien dans le pool du groupe VireMoi
var re = new RegExp(/\/in\/pool-[viremoi|27179042@N00]/);
if (re.test(document.location.href)) {
// Où en est-on dans le vote (virelas et gardelas) ??
var currentDeleteCount = 1;
var currentSaveCount = 1;
// Parcourir les tags, pour chaque tag qui matche /gardela/ et /virela/ on incrémente les variables pertinentes
var allTags = document.querySelectorAll('a[data-ywa-name="Tag(s)"]');
for(var i = 0, l = allTags.length; i < l; i++){
if(allTags[i].innerHTML.substr(0, 6) == "virela"){
currentDeleteCount++;
}
if(allTags[i].innerHTML.substr(0, 7) == "gardela"){
currentSaveCount++;
}
}
// Si personne n'a encore voté on enlève le 1 à la fin du vote (gardela1 et virela1 n'existent pas)
if (currentSaveCount==1) {
currentSaveCount='';
}
if (currentDeleteCount==1) {
currentDeleteCount='';
}
var req = new XMLHttpRequest();
// Méthode fastidieuse, mais propre
var deleteButton = document.createElement("input");
deleteButton.id = "vm-delete";
deleteButton.type = "button";
// Permet de bénéficier des styles définis par Flickr/Yahoo (coins arrondis, etc.)
deleteButton.className = "Butt";
// Devrait être défini dans une feuille de style associée, mais on a pas vraiment de document ici
deleteButton.style.cssText = "background-color: #F00; font-weight: bold";
deleteButton.value = "VIRER";
deleteButton.addEventListener("click", function(){
// Quelqu'un vient de cliquer sur le bouton pour rajouter un virela, on a besoin de :
// 1) Compléter le champ de saisie avec le vote
var commentBox = document.querySelector("textarea#message");
commentBox.value += "\n\n- C'est trop moche virela" + currentDeleteCount + " (par le groupe <a href=\"http://www.flickr.com/groups/viremoi/\">VireMoi!</a>)";
// 2) Rajouter le tag
var tagAdderForm = document.querySelector("form#tagadderform");
tagAdderForm.querySelector("input#addtagbox").setAttribute("value", "virela" + currentDeleteCount);
req.open("POST", tagAdderForm.action);
req.send(new FormData(tagAdderForm));
});
// Très répétitif, mais on a aussi besoin d'un bouton pour garder...
var saveButton = document.createElement("input");
saveButton.id = "vm-save";
saveButton.type = "button";
// Permet de bénéficier des styles définis par Flickr/Yahoo (coins arrondis, etc.)
saveButton.className = "Butt";
// Devrait être défini dans une feuille de style associée, mais on a pas vraiment de document ici
saveButton.style.cssText = "font-weight: bold; margin-left: 8px";
saveButton.value = "GARDER";
saveButton.addEventListener("click", function(){
// Quelqu'un vient de cliquer sur le bouton pour rajouter un gardela, on a besoin de :
// 1) Compléter le champ de saisie avec le vote
var commentBox = document.querySelector("textarea#message");
commentBox.value += "\n\n- C'est trop beau gardela" + currentSaveCount + " (par le groupe <a href=\"http://www.flickr.com/groups/viremoi/\">VireMoi!</a>)";
// 2) Rajouter le tag
var tagAdderForm = document.querySelector("form#tagadderform");
tagAdderForm.querySelector("input#addtagbox").setAttribute("value", "gardela" + currentSaveCount);
req.open("POST", tagAdderForm.action);
req.send(new FormData(tagAdderForm));
});
var wrapper = document.createElement("div");
// Minimum de CSS pour le layout
wrapper.style.cssText = "padding: 8px 0";
wrapper.appendChild(deleteButton);
wrapper.appendChild(saveButton);
// On rajoute les boutons pour garder et virer
document.querySelector("form#comment-form").appendChild(wrapper);
}
else {
return;
}
})();
@Veejay
Copy link
Author

Veejay commented Jul 17, 2012

TODO:

  • Refactor duplicate on buttons (extraneous variables tagAdderForm and commentBox should be out of the closure).
  • Create 3,4 functions to break the core of the script into more manageable bits
  • Have the script listed on gmscripts.org to ease management (built-in update system).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment