Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // ==UserScript==
- // @name Seenthis Quotator
- // @namespace seenthis
- // @description Easy answering with quote
- // @include http://seenthis.net/*
- // @include https://seenthis.net/*
- // @version 3
- // @grant none
- // ==/UserScript==
- // Extrait le nom à afficher à partir de l'élément .auteur
- function extractAuthorTitle(elt){
- var name = elt.find('strong').first().text().trim();
- var login = elt.find('.login').first().text().trim();
- var nameRaw = name.toLowerCase();
- nameRaw = nameRaw.replace(RegExp('[ @_-]','g'), '');
- var loginRaw = login.toLowerCase();
- loginRaw = loginRaw.replace(RegExp('[ @_-]','g'), '');
- if(nameRaw == loginRaw)
- return login;
- else
- return name+' ('+login+')';
- }
- function getSelectedText() {
- var text = "";
- if (window.getSelection) {
- text = window.getSelection().toString();
- } else if (document.selection && document.selection.type != "Control") {
- text = document.selection.createRange().text;
- }
- return text.replace('▻','').replace('►','').replace(/^\s*\n/gm, "") ;
- }
- function scrollToElement(selector, time, verticalOffset) {
- time = typeof(time) != 'undefined' ? time : 1000;
- verticalOffset = typeof(verticalOffset) != 'undefined' ? verticalOffset : 0;
- element = $(selector);
- offset = element.offset();
- offsetTop = offset.top + verticalOffset;
- $('html, body').animate({
- scrollTop: offsetTop
- }, time);
- }
- function addSelectedTextInAnswer(){
- var selectedText = getSelectedText();
- console.log(selectedText);
- if(selectedText.length > 0){
- var selectNode = $(window.getSelection().anchorNode);
- var cont = selectNode.parents('.reponse');
- if(cont.length > 0){
- var article = cont.find('article');
- var textarea = article.parents('li[id^=message]').find('.formulaire_poster_message textarea');
- var author = extractAuthorTitle(article);
- insertAtTextareaCursor(textarea,author+' \n❝'+selectedText+'❞\n');
- }
- }
- }
- function insertAtTextareaCursor(elt,text) {
- var txtarea = elt[0];
- var scrollPos = txtarea.scrollTop;
- var strPos = 0;
- var br = ((txtarea.selectionStart || txtarea.selectionStart == '0') ?
- "ff" : (document.selection ? "ie" : false ) );
- if (br == "ie") {
- txtarea.focus();
- var range = document.selection.createRange();
- range.moveStart ('character', -txtarea.value.length);
- strPos = range.text.length;
- }
- else if (br == "ff") strPos = txtarea.selectionStart;
- var front = (txtarea.value).substring(0,strPos);
- var back = (txtarea.value).substring(strPos,txtarea.value.length);
- txtarea.value=front+text+back;
- strPos = strPos + text.length;
- if (br == "ie") {
- txtarea.focus();
- var range = document.selection.createRange();
- range.moveStart ('character', -txtarea.value.length);
- range.moveStart ('character', strPos);
- range.moveEnd ('character', 0);
- range.select();
- }
- else if (br == "ff") {
- txtarea.selectionStart = strPos;
- txtarea.selectionEnd = strPos;
- txtarea.focus();
- }
- txtarea.scrollTop = scrollPos;
- }
- function openCommentInput(elt){
- var textarea = elt.find('.formulaire_poster_message textarea').first();
- if(! textarea.is(":visible")){
- elt.find('.bouton_repondre a').click();
- }
- scrollToElement(textarea,500,-200);
- textarea.focus();
- }
- // Change le comportement de l'élément @login sous un commentaire
- // cliquer sur le login l'insert dans le champ de réponse
- $('li[id^=message]').find('.auteur a').click(function(){
- var login = extractAuthorTitle($(this).parent())+ ' ';
- var selTxt = getSelectedText();
- var areaTxt = login;
- if(selTxt.length>0){
- areaTxt += "\n❝"+ getSelectedText()+"❞";
- }
- openCommentInput($(this).parents('li[id^=message]'));
- insertAtTextareaCursor($(this).parents('li[id^=message]').find('.formulaire_poster_message textarea'),areaTxt);
- return false;
- });
- // Ajoute un comportement sur Ctrl + Alt + Shift + R
- // insert dans le champ de réponse le texte sélectionné ainsi que son auteur
- $(document).keydown(function(e) {
- if(e.which == 82 && e.altKey && e.ctrlKey) {
- var article = $(window.getSelection().anchorNode).parents('li[id^=message]');
- if(article.length > 0){
- addSelectedTextInAnswer();
- openCommentInput(article);
- }
- }
- });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement