Plugin greift nicht bei jeder Benutzergruppe

28.07.2024 00:47
#1 Plugin greift nicht bei jeder Benutzergruppe
TW
Mitglied

Hi ihr,

ich mal wieder mit folgenden Problem:

Mein Plugin funktioniert für Administratoren einwandfrei; bei der Benutzergruppe, die von Xobor automatisch bei Erstellung erstellt ist, Mitglieder meines Wissens nach, funktioniert nur das Lesen von dem Gif; bei allen restlichen Benutzergruppen funktioniert es gar nicht. Aktuell hab ich noch keine Gruppenrechte im Code eingefügt, allerdings sollte es ja dann doch bei allen greifen.

Meine Frage wäre daher einerseits, weswegen es nicht bei allen Benutzergruppen greift und andererseits wie ich das per Code abändern kann, sodass es für alle nutzbar ist.

Der Code wäre folgender:

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
 
<br id="conditionalBr" style="display: none;">
{{user_admin==true.start}}
<button id="myCustomButtonGif" style="display: none;">Gif löschen</button>
{{user_admin==true.end}}
 
{{user_admin==true.start}}
<button id="myCustomButtonQuote" style="display: none;">Quote löschen</button>
{{user_admin==true.end}}
<div id="image-container"></div>
 
<div id="quoteContainer" style="max-width: 290px; display: none;">
<span id="quoteText" name="quote_profil" style="overflow-wrap: break-word; word-wrap: break-word;"></span>
</div>
<br id="conditionalBr" style="display: none;"><br id="conditionalBr" style="display: none;">
<hr id="conditionalHr" style="display: none;">
 
<script>
document.addEventListener('DOMContentLoaded', function() {
let gifExists = false;
let quoteExists = false;
 
function showGif() {
xobor.plugin("gifandquote").getDataVar('profil_gif_datavar', 3, '{{userid}}', function(res) {
if (res) {
showImage(res);
gifExists = true;
document.getElementById('myCustomButtonGif').style.display = 'inline-block';
}
checkElements();
});
 
document.getElementById('myCustomButtonGif').addEventListener('click', function() {
var confirmation = confirm('Sind Sie sicher, dass Sie das Gif löschen wollen?');
if (confirmation) {
xobor.plugin("gifandquote").delDataVar('profil_gif_datavar', 3, '{{userid}}', function(success) {
if (success) {
alert('Das Gif wurde gelöscht!');
gifExists = false;
var element = document.getElementById('image-container');
element.innerHTML = '';
document.getElementById('image-container').style.display = 'none';
document.getElementById('myCustomButtonGif').style.display = 'none';
checkElements();
} else {
alert('Fehler beim Löschen der Daten.');
}
});
} else {
alert('Löschvorgang abgebrochen.');
}
});
}
 
function showImage(url) {
var img = new Image();
img.onload = function() {
img.className = 'loaded-image';
img.alt = 'Profilbild';
var container = document.getElementById('image-container');
container.innerHTML = '';
container.appendChild(img);
};
 
img.onerror = function() {
console.error('Fehler beim Laden des Bildes: ' + url);
var container = document.getElementById('image-container');
container.innerHTML = '';
};
 
img.src = url;
}
 
function showQuote() {
xobor.plugin("gifandquote").getDataVar('profile_quote_datavar', 3, '{{userid}}', function(res) {
if (res) {
var quoteText = document.getElementById('quoteText');
var decodedText = decodeHtmlEntities(res);
quoteText.innerHTML = decodedText;
quoteExists = true;
document.getElementById('quoteContainer').style.display = 'block';
document.getElementById('myCustomButtonQuote').style.display = 'inline-block';
}
checkElements();
});
 
document.getElementById('myCustomButtonQuote').addEventListener('click', function() {
var confirmation = confirm('Sind Sie sicher, dass Sie das Zitat löschen wollen?');
if (confirmation) {
xobor.plugin("gifandquote").delDataVar('profile_quote_datavar', 3, '{{userid}}', function(success) {
if (success) {
alert('Das Zitat wurde gelöscht!');
quoteExists = false;
var element = document.getElementById('quoteText');
element.innerHTML = '';
document.getElementById('quoteContainer').style.display = 'none';
document.getElementById('myCustomButtonQuote').style.display = 'none';
checkElements();
} else {
alert('Fehler beim Löschen der Daten.');
}
});
} else {
alert('Löschvorgang abgebrochen.');
}
});
}
 
function decodeHtmlEntities(text) {
var textArea = document.createElement('textarea');
textArea.innerHTML = text;
return textArea.value;
}
 
function checkElements() {
var brElement = document.getElementById('conditionalBr');
var hrElement = document.getElementById('conditionalHr');
if (!gifExists && !quoteExists) {
brElement.style.display = 'none';
hrElement.style.display = 'none';
} else {
brElement.style.display = 'block';
hrElement.style.display = 'block';
}
}
 
showGif();
showQuote();
});
</script>
 
<style>
.loaded-image {
max-width: 299px;
max-height: 650px;
object-fit: cover;
}
 
#myCustomButtonGif, #myCustomButtonQuote {
background-color: {{global_post_bg}};
border: none;
color: {{global_link_color}};
padding: 2px 5px;
text-align: center;
text-decoration: none;
display: inline-block;
font-size: 12px;
margin: 2px;
cursor: pointer;
border-radius: 5px;
height: 18px;
width: auto;
margin: 10px;
}
 
#myCustomButtonGif:hover, #myCustomButtonQuote:hover {
background-color: {{global_button_bg_hover}};
}
 
/* Initial hiding of the <br> and <hr> */
#conditionalBr, #conditionalHr {
display: none;
}
</style>
 



Wäre echt lieb, wenn mir jemand helfen kann. Ich wollte das Plugin gerade ins Hauptforum ziehen, aber dort hat es eben nur semi geklappt, da wir im Musterforum nur per Admin und den normalen Mitgliedern getestet hatten, aber nicht mit eigens angelegten Benutzergruppen, schließlich rechnet man nicht mit so einem Bug Sitz gerade seit drei Stunden an der Problemlösung und bin dezent am verzweifeln...

LG Grace


 Antworten

 Beitrag melden
28.07.2024 16:10
#2 RE: Plugin greift nicht bei jeder Benutzergruppe
TW
Mitglied

Kleines Update:

das Gif wird jetzt bei allen angezeigt, das lag tatsächlich an der Einstellung der Data Variable. Allerdings wird nun das Zitat nur noch für Admins angezeigt und egal was ich versuche, nichts hilft...

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
169
170
 
{{user_admin==true.start}}
<button id="myCustomButtonGif" style="display: none;">Gif löschen</button>
{{user_admin==true.end}}
 
{{user_admin==true.start}}
<button id="myCustomButtonQuote" style="display: none;">Quote löschen</button>
{{user_admin==true.end}}
<div id="image-container"></div>
 
<div id="quoteContainer" style="max-width: 290px; overflow-wrap: break-word; word-wrap: break-word;">
<div id="quoteText"></div>
</div>
 

<br id="conditionalBr" style="display: none;"><br id="conditionalBr" style="display: none;">
<hr id="conditionalHr" style="display: none;">
 
<script>
document.addEventListener('DOMContentLoaded', function() {
let gifExists = false;
let quoteExists = false;
 
// Funktion zur Anzeige der Gif-Daten
function showGif() {
xobor.plugin("gifandquotetwd").getDataVar('profil_gif_datavar', 3, '{{userid}}', function(res) {
if (res) {
showImage(res);
gifExists = true;
document.getElementById('myCustomButtonGif').style.display = 'inline-block';
}
checkElements();
});
 
document.getElementById('myCustomButtonGif').addEventListener('click', function() {
var confirmation = confirm('Sind Sie sicher, dass Sie das Gif löschen wollen?');
if (confirmation) {
xobor.plugin("gifandquotetwd").delDataVar('profil_gif_datavar', 3, '{{userid}}', function(success) {
if (success) {
alert('Das Gif wurde gelöscht!');
gifExists = false;
var element = document.getElementById('image-container');
element.innerHTML = '';
document.getElementById('image-container').style.display = 'none';
document.getElementById('myCustomButtonGif').style.display = 'none';
checkElements();
} else {
alert('Fehler beim Löschen der Daten.');
}
});
} else {
alert('Löschvorgang abgebrochen.');
}
});
}
 
// Funktion zur Anzeige eines Bildes
function showImage(url) {
var img = new Image();
img.onload = function() {
img.className = 'loaded-image';
img.alt = 'Profilbild';
var container = document.getElementById('image-container');
container.innerHTML = '';
container.appendChild(img);
};
 
img.onerror = function() {
console.error('Fehler beim Laden des Bildes: ' + url);
var container = document.getElementById('image-container');
container.innerHTML = '';
};
 
img.src = url;
}
 
// Funktion zur Anzeige der Zitat-Daten
function showQuote() {
xobor.plugin("gifandquotetwd").getDataVar('profile_quote_datavar', 3, '{{userid}}', function(res) {
if (res) {
var quoteText = document.getElementById('quoteText');
var decodedText = decodeHtmlEntities(res);
quoteText.innerHTML = decodedText.replace(/\n/g, '<br>');
quoteExists = true;
document.getElementById('quoteContainer').style.display = 'block';
document.getElementById('myCustomButtonQuote').style.display = 'inline-block';
}
checkElements();
});
 
document.getElementById('myCustomButtonQuote').addEventListener('click', function() {
var confirmation = confirm('Sind Sie sicher, dass Sie das Zitat löschen wollen?');
if (confirmation) {
xobor.plugin("gifandquotetwd").delDataVar('profile_quote_datavar', 3, '{{userid}}', function(success) {
if (success) {
alert('Das Zitat wurde gelöscht!');
quoteExists = false;
var element = document.getElementById('quoteText');
element.innerHTML = '';
document.getElementById('quoteContainer').style.display = 'none';
document.getElementById('myCustomButtonQuote').style.display = 'none';
checkElements();
} else {
alert('Fehler beim Löschen der Daten.');
}
});
} else {
alert('Löschvorgang abgebrochen.');
}
});
}
 
// Funktion zum Dekodieren von HTML-Entities
function decodeHtmlEntities(text) {
var textArea = document.createElement('textarea');
textArea.innerHTML = text;
return textArea.value;
}
 
// Überprüfung, ob Elemente angezeigt werden sollen
function checkElements() {
var brElement = document.getElementById('conditionalBr');
var hrElement = document.getElementById('conditionalHr');
if (!gifExists && !quoteExists) {
brElement.style.display = 'none';
hrElement.style.display = 'none';
} else {
brElement.style.display = 'block';
hrElement.style.display = 'block';
}
}
 
showGif();
showQuote();
});
</script>
 
<style>
.loaded-image {
max-width: 299px;
max-height: 650px;
object-fit: cover;
}
 
#myCustomButtonGif, #myCustomButtonQuote {
background-color: {{global_post_bg}};
border: none;
color: {{global_link_color}};
padding: 2px 5px;
text-align: center;
text-decoration: none;
display: inline-block;
font-size: 12px;
margin: 2px;
cursor: pointer;
border-radius: 5px;
height: 18px;
width: auto;
margin: 10px;
}
 
#myCustomButtonGif:hover, #myCustomButtonQuote:hover {
background-color: {{global_button_bg_hover}};
}
 
/* Initial hiding of the <br> and <hr> */
#conditionalBr, #conditionalHr {
display: none;
}
</style>
 
 



Das wäre der aktuelle Code. Kann mir da jemand helfen und erklären, wieso das Zitat bzw die Data Variable "profile_quote_datavar" nur bei Admins ausgegeben wird?

Alle Benutzergruppe, außer Gäste können es aktuell lesen und schreiben (die Einstellungen pass ich an, sobald alles einwandfrei funktioniert). Deswegen sollte es an irgendeinem Teil im Code liegen, denke ich zumindest.

Vielen Dank schon einmal

LG Grace


 Antworten

 Beitrag melden
28.07.2024 23:14
#3 RE: Plugin greift nicht bei jeder Benutzergruppe
l2
Mitglied

Freut mich, dass du schon so weit gekommen bist.
Neulich wollte ich schon fragen, ob du mit debuggen und der Fehlerkonsole vertraut bist?https://wiki.selfhtml.org/wiki/JavaScript/Console_API

ein paar "console.log'-aufrufe mehr, Breakpoints setzen und durch die Funktionen steppen bringen dich vielleicht weiter...





... würde es „Fussball spielen” heissen

vG Bernd‍

 Antworten

 Beitrag melden
29.07.2024 13:29
#4 RE: Plugin greift nicht bei jeder Benutzergruppe
TW
Mitglied

Hi @l2otbart_57

tatsächlich hab ich das schon mal gemacht, nur nicht daran gedacht, das zu machen
Nach ein paar Stunden Kampf mit dem Code konnte ich den Fehler nun auch beheben.

Vielen lieben Dank!

LG Grace


 Antworten

 Beitrag melden
Bereits Mitglied?
Jetzt anmelden!
Mitglied werden?
Jetzt registrieren!