Snippet: BBcodes für bestimmte Benutzer sperren/freigeben

Du hast Probleme beim Einbau oder bei der Benutzung eines Mods? In diesem Forum bist du richtig.
Forumsregeln
phpBB 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.0, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Antworten
Kami
Mitglied
Beiträge: 64
Registriert: 23.08.2007 22:25
Wohnort: Steinhude

Snippet: BBcodes für bestimmte Benutzer sperren/freigeben

Beitrag 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
Benutzeravatar
punkface
Mitglied
Beiträge: 3579
Registriert: 12.08.2004 23:37

Beitrag von punkface »

Nun ja, eine Farbe nur für bestimmte Benutzer zu erlauben ist nicht wirklich so einfach:
  1. gibt es unterschiedliche Rottöne
  2. kann die Farbwahrnehmung von Benutzer zu Benutzer eine unterschiedliche sein
  3. 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?
Kami
Mitglied
Beiträge: 64
Registriert: 23.08.2007 22:25
Wohnort: Steinhude

Beitrag 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
Benutzeravatar
punkface
Mitglied
Beiträge: 3579
Registriert: 12.08.2004 23:37

Beitrag 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.
Zuletzt geändert von punkface am 26.08.2007 14:41, insgesamt 1-mal geändert.
Kami
Mitglied
Beiträge: 64
Registriert: 23.08.2007 22:25
Wohnort: Steinhude

Beitrag von Kami »

thx punkface, funktioniert wo wie gewünscht

Gruß Kami
Antworten

Zurück zu „phpBB 2.0: Mod Support“