Seite 1 von 1

Styledemo per Link: WIE?

Verfasst: 18.10.2007 22:05
von silverwolf
Hallo,

auf dieser Seite kann man einfach auf einen als "Link" definierten Eintrag klicken und phpbb3 wechselt dann durch den übergebenen Parameter "?style=<nr>" temporär das Aussehen.

Ich habe das versucht nachzustellen, indem ich Links definiert habe, die auf mein Forum selbst verweisen - mit dem oben genannten Parameter.

Solange ich als Admin angemeldet bin, klappt das auch wunderbar! Aber sobald sich ein normaler User daran versucht, funktioniert der Stilwechsel nicht mehr.

Weiß jemand hier, wie man das für alle Benutzer realiseren kann?

Verfasst: 18.10.2007 22:57
von silverwolf
@Dr.Death: Nur rein interessehalber: Warum wurde das Posting verschoben? Meine Anfrage ist doch recht eindeutig administrativer Natur und gehört weniger in den Bereich 'Mods und Styles'. ??

Verfasst: 18.10.2007 23:16
von nickvergessen
silverwolf hat geschrieben:@Dr.Death: Nur rein interessehalber: Warum wurde das Posting verschoben? Meine Anfrage ist doch recht eindeutig administrativer Natur und gehört weniger in den Bereich 'Mods und Styles'. ??
Es hat wohl offensichtlich etwas mit Styles zu tun, und außerdem ist dafür soweit ich weiß eine Modifikation nötig.

Nichts desto trotz glaube ich, davon schonmal auf phpbb.com gelesen zuhaben. Aber ich weiß leider nicht mehr, ob im Request (Nachfrage)-Forum oder im Entwicklerbereich. (Aber die Seite ist mir gerade zulangsam, als dass ich danach suchen würde). Da die Funktion aber schon vorhanden ist, dürfte die Änderung wohl nicht all zu groß sein. Allerdings weiß ich nicht in welcher Datei man da suchen könnte.

Verfasst: 19.10.2007 07:39
von Dr.Death
Moin,

ich habe es verschoben, weil die unmodifizierte phpBB3 Version nur den Admins erlaubt diesen "Switch" zu verwenden.

Um es allen Usern zu ermöglichen müssten Dateien modifiziert werden....


Die benötigte Änderung liegt in der includes/sessions.php:

SUCHE:

Code: Alles auswählen

		if (!empty($_GET['style']) && $auth->acl_get('a_styles'))
		{
			global $SID, $_EXTRA_URL;

			$style = request_var('style', 0);
			$SID .= '&style=' . $style;
			$_EXTRA_URL = array('style=' . $style);
		}
		else
		{
			// Set up style
			$style = ($style) ? $style : ((!$config['override_user_style']) ? $this->data['user_style'] : $config['default_style']);
		}
Die erste Zeile beinhaltet die Berechtigungsabfrage, wer den Schalter "style" in der URL benutzen darf.
if (!empty($_GET['style']) && $auth->acl_get('a_styles'))
Auf deutsch:

Wenn der Schalter " style=x " vorhanden ist und der Benutzer das Administrative recht hat Styles zu verändern, wird der folgende Code wirksam.

Möchtest Ihr es den Usern überlassen, sollte es so aussehen:

Code: Alles auswählen

if (!empty($_GET['style']))
Die Gefahr dabei:

Wenn jemand den Schalter " style=x " verwendet, und x ist eine Zahl, die nicht auf eine Style ID trifft, hagelt es Fehlermeldungen ;-)

Verfasst: 19.10.2007 08:26
von silverwolf
Ah! <Licht> Vielen Dank! :-)

Verfasst: 19.10.2007 15:08
von nickvergessen
Dr.Death hat geschrieben:Die Gefahr dabei:

Wenn jemand den Schalter " style=x " verwendet, und x ist eine Zahl, die nicht auf eine Style ID trifft, hagelt es Fehlermeldungen ;-)
betrifft aber derzeit auch Admins...
Ein kleiner Fix hier für:
finde:

Code: Alles auswählen

		{
			global $SID, $_EXTRA_URL;

			$style = request_var('style', 0);
			$SID .= '&style=' . $style;
			$_EXTRA_URL = array('style=' . $style);
		}
ersetze mit:

Code: Alles auswählen

		{
			global $SID, $_EXTRA_URL;

			$pre_style = $style;
			$style_exists = false;
			$style = request_var('style', 0);
			$sql = 'SELECT style_id
				FROM ' . STYLES_TABLE . '
				WHERE style_id = ' . $style;
			$result = $db->sql_query($sql);
			while ($row = $db->sql_fetchrow($result))
			{
				$style_exists = true;
			}
			if ($style_exists)
			{
				$SID .= '&style=' . $style;
				$_EXTRA_URL = array('style=' . $style);
			}
			else
			{
				$style = ($pre_style) ? $pre_style : ((!$config['override_user_style']) ? $this->data['user_style'] : $config['default_style']);
			}
		}
Es macht zwar eine zusätzliche SQL-Abfrage nötig, aber besser wie eine Fehlermeldung.

Dabei wird dann der Style aus dem ACP-geladen, bzw erst aus den Usereinstellungen.

Verfasst: 20.10.2007 11:28
von silverwolf
nickvergessen hat geschrieben:Es macht zwar eine zusätzliche SQL-Abfrage nötig, aber besser wie eine Fehlermeldung.
SEHR schön! Vielen Dank!