Seite 1 von 1
Snippet: BBcodes für bestimmte Benutzer sperren/freigeben
Verfasst: 23.08.2007 22:29
von Kami
Hallo zusammen!
Kann man den Snippet "BBcodes für bestimmte Benutzer sperren/freigeben" evtl auch so ändern, daß z.B. die Textfarbe rot nur für Mods und Admins verfügbar ist?
Danke für Eure Hilfe
Gruß Kami
Verfasst: 24.08.2007 01:07
von punkface
Nun ja, eine Farbe nur für bestimmte Benutzer zu erlauben ist nicht wirklich so einfach:
- gibt es unterschiedliche Rottöne
- kann die Farbwahrnehmung von Benutzer zu Benutzer eine unterschiedliche sein
- kann die Farbdarstellung auf dem Bildschirm von System zu System eine unterschiedliche sein
Kurz: Rot ist nicht gleich rot
Worauf ich damit hinaus will: Beim phpBB kannst du die Farbe nicht nur als Farbname (red) sondern auch als hexadezimalen RGB-Wert (#ff0000) angeben.
siehe dazu:
http://www.phpbb.de/faq.php?mode=bbcode#2
http://www.w3.org/TR/CSS21/syndata.html#color-units
http://de.wikipedia.org/wiki/RGB-Farbraum
Das
Rot (Farbname red) was du beim Beitrag erstellen aus der Auswahlliste auswählen kannst, entspricht der hexadezimalen Darstellung
#ff0000. Klar könntest du red und #ff0000 ausfiltern, doch - und jetzt komm ich zurück auf die anfängliche Liste - gibt es verschiedene Rottöne die man mittels hexadezimaler Angabe darstellen kann. Bspw. könnte man auch
#fe1601 angeben. Selbst wenn du zwischen den beiden Farben einen Unterschied bemerken würdest (was ich bezweifel), können das auch deine Benutzer?
Wenn du also wirklich sichergehen willst, das nur bestimmte Benutzer rot verwenden können, müsstest du entweder die Angabe von RGB-Werten unterbinden oder aber ein bestimmtes Spektrum an hexadezimaler RGB-Werte verbieten. Ersteres ist einfach, letzteres würd ich persönlich nicht zustande bringen.
Was willst du also machen (um mal zum Schluß zu kommen): Das ganze sein lassen oder die Angabe von hexad. Werten unterbinden und nur Admins und Mods die Angabe von red als Farbname erlauben?
Verfasst: 24.08.2007 14:14
von Kami
Hallo punkface.
Das mit den Rottönen und so kenne ich, ich fluche seber stöändig, wenn ich eine bestimmte "Schattierung" für html suche.
Aber btt: So wie ich das verstanden habe, kann ich unterbinden, dass man beim Schreiben eines Beitrages durch [ color=#xxxxxx] die Farbe wählt, aber aus der Auswahlliste geht das dann noch? Insofern käme dann für mich die Alternative
punkface hat geschrieben:oder die Angabe von hexad. Werten unterbinden und nur Admins und Mods die Angabe von red als Farbname erlauben?
in Frage, nur das die Farbe "Rot" dann nur bei Admins und Mods auftauchen sollte... Ich hoffe nur, dass das nicht zu aufwendig ist.
Gruß Kami
Verfasst: 24.08.2007 15:03
von punkface
Das ist wie gesagt ziehmlich einfach.
functions_post.php
suche
Code: Alles auswählen
$message = bbencode_first_pass($message, $bbcode_uid);
füge davor ein
Code: Alles auswählen
// Snippet: Rot nur für Admins und Moderatoren erlauben
// siehe: http://www.phpbb.de/viewtopic.php?t=153739
$GLOBALS['__uid'] = $bbcode_uid;
bbcode.php
suche
Code: Alles auswählen
$text = preg_replace("#\[color=(\#[0-9A-F]{6}|[a-z\-]+)\](.*?)\[/color\]#si", "[color=\\1:$uid]\\2[/color:$uid]", $text);
ersetzte das mit
Code: Alles auswählen
// Snippet: Rot nur für Admins und Moderatoren erlauben
// siehe: http://www.phpbb.de/viewtopic.php?t=153739
//$text = preg_replace("#\[color=(\#[0-9A-F]{6}|[a-z\-]+)\](.*?)\[/color\]#si", "[color=\\1:$uid]\\2[/color:$uid]", $text);
function color_filter($ary) {
if (strtolower($ary[1]) == 'red' and $GLOBALS['userdata']['user_level'] < ADMIN) {
return $ary[2];
}
return sprintf('[color=%2$s:%1$s]%3$s[/color:%1$s]', $GLOBALS['__uid'], $ary[1], $ary[2]);
}
$text = preg_replace_callback("#\[color=([a-z\-]{3,19})\](.*?)\[/color\]#si", 'color_filter', $text);
Das wirkt sich allerdings nicht auf schon geschriebene Beiträge aus.
Verfasst: 26.08.2007 14:04
von Kami
thx punkface, funktioniert wo wie gewünscht
Gruß Kami