-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathhfr_postal_recall.user.js
More file actions
168 lines (151 loc) · 7.33 KB
/
Copy pathhfr_postal_recall.user.js
File metadata and controls
168 lines (151 loc) · 7.33 KB
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
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
// ==UserScript==
// @name [HFR] Postal Recall
// @version 3.0.2
// @namespace roger21.free.fr
// @description Rajoute le nom du posteur en bas sur la partie gauche des posts, permet de savoir qui est l'auteur du post sur les posts longs sans avoir à revenir en haut du post.
// @icon data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAilBMVEX%2F%2F%2F8AAADxjxvylSrzmzf5wYLzmjb%2F9er%2F%2Fv70nj32q1b5woT70qT82rT827b%2F%2B%2FjxkSHykybykyfylCjylCnzmDDzmjX0nTv1o0b1qFH2qVL2qlT3tGn4tmz4uHD4uXL5vHf83Lf83Lj937394MH%2B587%2B69f%2F8%2BX%2F8%2Bf%2F9On%2F9uz%2F%2BPH%2F%2BvT%2F%2FPmRE1AgAAAAwElEQVR42s1SyRbCIAysA7W2tdZ93%2Ff1%2F39PEtqDEt6rXnQOEMhAMkmC4E9QY9j9da1OkP%2BtTiBo1caOjGisDLRDANCk%2FVIHwwkBZGReh9avnGj2%2FWFg%2Feg5hD1bLZTwqdgU%2FlTSdrqZJWN%2FKImPOnGjiBJKhYqMvikxtlhLNTuz%2FgkxjmJRRza5mbcXpbz4zldLJ0lVEBY5nRL4CJx%2FMEfXE4L9j4Qr%2BZakpiandMpX6FO7%2FaPxxUTJI%2FsJ4cd4AoSOBgZnPvgtAAAAAElFTkSuQmCC
// @include https://forum.hardware.fr/*
// @author roger21
// @updateURL https://raw.githubusercontent.com/roger21/hfr/master/hfr_postal_recall.user.js
// @installURL https://raw.githubusercontent.com/roger21/hfr/master/hfr_postal_recall.user.js
// @downloadURL https://raw.githubusercontent.com/roger21/hfr/master/hfr_postal_recall.user.js
// @supportURL https://forum.hardware.fr/hfr/Discussions/Viepratique/sujet_116015_1.htm
// @homepageURL http://roger21.free.fr/hfr/
// @noframes
// @grant none
// ==/UserScript==
/*
Copyright © 2015-2022, 2025 roger21@free.fr
This program is free software: you can redistribute it and/or modify it under the
terms of the GNU Affero General Public License as published by the Free Software
Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License along
with this program. If not, see <https://www.gnu.org/licenses/agpl.txt>.
*/
// $Rev: 4194 $
// historique :
// 3.0.2 (06/04/2025) :
// - ammélioration de la gestion de l'affichage pour le mode smooth_display
// 3.0.1 (14/07/2022) :
// - suppression du @require vers le polyfill de l'intersection observer
// 3.0.0 (06/02/2022) :
// - ajout d'options en dur pour la position et l'affichage du nom rajouté
// 2.0.0 (23/03/2021) :
// - recodage en css position sticky
// 1.4.3 (13/02/2020) :
// - utilisation d'une url en data pour l'icône du script et changement d'hébergeur (free.fr -> github.com)
// 1.4.2 (02/10/2019) :
// - suppression de la directive "@inject-into" (mauvaise solution, changer solution)
// 1.4.1 (18/09/2019) :
// - ajout de la directive "@inject-into content" pour isoler le script sous violentmonkey
// 1.4.0 (29/11/2018) :
// - nouveau nom : [HFR] postal recall -> [HFR] Postal Recall
// - ajout de l'avis de licence AGPL v3+
// - ajout de la metadata @author (roger21)
// - réécriture de la metadata @description
// 1.3.2 (17/05/2018) :
// - suppression des @grant inutiles (tous)
// - maj de la metadata @homepageURL
// - passage de la hauteur minimal à 250
// 1.3.1 (28/11/2017) :
// - passage au https
// 1.3.0 (31/01/2016) :
// - meilleure gestion de la détection de la scrollbar horizontale
// - suppression des logs et du code commenté (nettoyage quoi)
// 1.2.0 (30/12/2015) :
// - meilleure gestion de la taille minimale pour l'ajout du recall
// - activation du script au lancement (pas seulement au scroll)
// 1.1.0 (29/12/2015) :
// - ajout d'une tempo (5sec) avant le lancement du script ->
// -> permet une meilleur gestion des zooms et de la présence ou non de la scrollbar
// 1.0.1 (27/12/2015) :
// - completement différent
// 0.9.0 (29/11/2015) :
// - création
/* -------------- */
/* options en dur */
/* -------------- */
// position du nom rajouté par rapport au bas de la page (défaut : 4) :
// - soit "center" (avec les "") pour centrer verticalement le pseudo sur la page
// - soit un nombre de pixels (exemple : 30)
const position_page = 4;
// position du nom rajouté par rapport au bas des messages (défaut : 4) :
// un nombre de pixels (exemple : 30)
const position_bottom = 4;
// toujours afficher le nom rajouté (true ou false, défaut : true) :
// - à true le nom rajouté est toujours présent si le message est assez haut
// - à false le nom rajouté disparait quand le nom d'en haut apparaît complètement
const always_display = true;
// ajouter un effet de transition pour l'affichage du nom rajouté (true ou false, défaut : false) :
// n'est pris en compte que si always_display est à false
// - à true le nom rajouté passe progressivement d'un état à l'autre (visible ou invisible)
// - à false le nom rajouté disparaît et apparaît immédiatement
const smooth_display = false;
/* ---- */
/* code */
/* ---- */
function pseudal_recall(pseudals) {
pseudals.forEach(pseudal => {
if(pseudal.intersectionRatio === 1) {
pseudal.target.parentElement.parentElement.querySelector("div[postalrecall]").style.opacity = "0";
} else {
pseudal.target.parentElement.parentElement.querySelector("div[postalrecall]").style.opacity = "1";
}
});
}
let l_observer = new IntersectionObserver(pseudal_recall, {
root: null,
threshold: 1
});
window.setTimeout(function() {
var posters = document.getElementById("mesdiscussions").querySelectorAll("table.messagetable td.messCase1");
for(let poster of posters) {
if(poster.clientHeight > 196 + position_bottom) {
poster.style.position = "relative";
if(!always_display) {
l_observer.observe(poster.querySelector("div > b.s2"));
}
let pr_div = document.createElement("div");
pr_div.setAttribute("postalrecall", "postalrecall");
pr_div.style.position = "absolute";
pr_div.style.padding = "0 0 " + position_bottom + "px 4px";
pr_div.style.bottom = "0";
pr_div.style.left = "0";
pr_div.style.boxSizing = "border-box";
pr_div.style.height = "calc(100% - 180px)";
if(!always_display) {
pr_div.style.opacity = "0";
if(smooth_display) {
pr_div.style.transition = "opacity 0.3s ease 0s";
pr_div.addEventListener("transitionend", function(p_event) {
if(this.style.opacity === "0") {
this.style.visibility = "hidden";
}
});
pr_div.addEventListener("transitionstart", function(p_event) {
this.style.visibility = "visible";
});
}
}
if(position_page !== "center") {
pr_div.style.display = "flex";
pr_div.style.flexDirection = "column";
pr_div.style.justifyContent = "flex-end";
}
let pr_b = document.createElement("b");
pr_b.setAttribute("class", "s2");
pr_b.style.position = "sticky";
if(position_page === "center") {
pr_b.style.top = "50%";
} else {
pr_b.style.bottom = position_page + "px";
}
pr_b.appendChild(document.createTextNode(poster.querySelector("div > b.s2").textContent));
pr_div.appendChild(pr_b);
poster.appendChild(pr_div);
}
}
}, 5000);