-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy patheBay Auto Feedback Revisited.user.js
110 lines (105 loc) · 5.05 KB
/
eBay Auto Feedback Revisited.user.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
// ==UserScript==
// @name eBay Auto Feedback Revisited
// @namespace https://openuserjs.org/users/moped
// @license GPL-3.0+; http://www.gnu.org/licenses/gpl-3.0.txt
// @copyright Dec 19, 2005, Blake West
// @copyright Nov 11, 2017, moped
// @author moped
// @description Fetches random feedback from The eBay Feedback Generator (http://thesurrealist.co.uk/feedback) and fills in the comment field on eBay feedback pages.
// @include https://www.ebay.com/fdbk/*
// @include https://www.ebay.co.uk/fdbk/*
// @version 1.0.2
// @connect thesurrealist.co.uk
// @grant GM_xmlhttpRequest
// ==/UserScript==
/* Configuration */
var frivolous = false; //set to true if you want frivolous vocabulary
var quality = true; //set to true to enable content about item quality in message
var packing = false; //set to true to enable content about item packaginging in message
var speed = false; //set to true to enable content about item speed in message
var rating = true; //set to true to enable content about rating in message
/* Init */
var commentField = document.querySelectorAll('[name=OVERALL_EXPERIENCE_COMMENT]');
if(commentField) addCommentLink();
/* Fetch feedback */
function getFeedback(e) {
var experience_name = e.target.getAttribute('name').replace(/PARTY/,'OVERALL_EXPERIENCE');
var commentFieldId = e.target.getAttribute('name').replace(/PARTY/,'pnnComment');
var mood_radio = document.querySelector('[name='+experience_name+']:checked');
var party_name = e.target.getAttribute('name');
var party = e.target.value;
if(mood_radio === null) {
alert('Please select a Positive, Negative or Neutral rating, and try fetching a message again.');
return false;
}
else {
switch(mood_radio.value) {
case 'NEGATIVE':
mood = 'negative';
starRating(1);
break;
case 'NEUTRAL':
mood = 'indifferent';
starRating(3);
break;
default:
starRating(5);
mood = 'positive';
}
var currentCommentInput = document.getElementById(commentFieldId);
GM_xmlhttpRequest({
method: 'GET',
url: 'http://thesurrealist.co.uk/feedback?who='+party+(quality?'&quality=on':'')+(speed?'&speed=on':'')+(packing?'&packing=on':'')+(rating?'&rating=on':'')+'&maxlen=79&mood='+mood+(frivolous?'&vocab=frivolous':'&vocab=basic'),
onreadystatechange: function(responseDetails) {
currentCommentInput.value = 'Fetching comment...';
},
onerror: function(responseDetails) {
currentCommentInput.value = 'Error fetching comment...';
},
onload: function(responseDetails) {
var details = responseDetails.responseText;
var tt = details.slice(details.indexOf('<tt>')+4,details.indexOf('</tt>'));
var feedback = tt.split('<br>');
currentCommentInput.value = feedback[0].trim();
currentCommentInput.dispatchEvent(new Event('change'));
currentCommentInput.focus();
}
});
}
}
/* Add new elements to page */
function addCommentLink() {
var blocks = document.querySelectorAll('div.feedback_template');
for(i=0;i<blocks.length;i++) {
var wrapper = document.createElement('div');
var item_transaction = blocks[i].getAttribute('id').replace(/single-feedback-template-module/, '');
wrapper.setAttribute('id', 'OVERALL_EXPERIENCE_PARTY-'+item_transaction);
wrapper.setAttribute('class', 'section pnn_section');
wrapper.innerHTML = '<div class="grid__group grid__group-sm"><div class="grid__cell grid__cell--two-fifth grid__cell--all"></div><div class="grid__cell grid__cell--three-fifth grid__cell--all"></div></div>';
var wrapper_nodes = wrapper.firstChild.childNodes;
wrapper_nodes[0].innerHTML = '<p class="section-title">Feedback is intended for?</p><p class="section-subtitle">Select who you are giving feedback to.</p>';
wrapper_nodes[1].innerHTML = '<fieldset class="no-style-fieldset otdRadioGroup">'+
'<input type="radio" value="seller" class="rating_radio" id="OVERALL_EXPERIENCE_PARTY_SELLER'+item_transaction+'" name="PARTY'+item_transaction+'">' +
'<label for="OVERALL_EXPERIENCE_PARTY_SELLER'+item_transaction+'">Seller</label>' +
'<input type="radio" value="buyer" class="rating_radio" id="OVERALL_EXPERIENCE_PARTY_BUYER'+item_transaction+'" name="PARTY'+item_transaction+'">' +
'<label for="OVERALL_EXPERIENCE_PARTY_BUYER'+item_transaction+'">Buyer</label>' +
'</fieldset>';
var current = document.querySelector('div#OVERALL_EXPERIENCE_COMMENT_MODULE'+item_transaction);
current.parentNode.insertBefore(wrapper, current);
}
var radios = document.querySelectorAll('.rating_radio');
for(i=0;i<radios.length;i++) {
radios[i].addEventListener('click',getFeedback,false);
}
}
/* set star rating after selecting feedback type */
function starRating(s) {
var rows = document.querySelectorAll('fieldset.starrating');
for(i=0;i<rows.length;i++) {
var stars = rows[i].querySelectorAll('input');
for(j=0;j<s;j++) {
stars[j].checked = true;
stars[j].dispatchEvent(new Event('click'));
}
}
}