Bräuchte Hilfe um kleinen Country MOD zu erweitern

Allgemeiner Support zum phpBB 2 Board und phpBB 2 Modifikationen
Forumsregeln
Auch wenn hier der Support für phpBB 2 weiterhin aufrecht erhalten bleibt, weisen wir darauf hin, dass das phpBB 2 nicht mehr offiziell unterstützt und weiterentwickelt wird!
Antworten
schmidtedv
Beiträge: 607
Registriert: So 13.Feb, 2005 10:46
Wohnort: St. Blasien (seit 01.06)
Kontaktdaten:

Bräuchte Hilfe um kleinen Country MOD zu erweitern

Beitrag von schmidtedv »

Habe hier einen kleinen, aber netten Country MOD gefunden, den ich ein wenig angepasst habe.

Der MOD fügt in die USERS-Tabelle ein Feld user_country mit dem Standardwert NULL ein. In der admin_users.php hat er hierfür die Zeile

Code: Alles auswählen

$user_country = ( $HTTP_POST_VARS['country'] ) ? $HTTP_POST_VARS['country'] : 'nospec';
und in der usercp_register.php

Code: Alles auswählen

if ( !empty($HTTP_POST_VARS['country']) )
	{
		if ( preg_match('/^[a-z_]+$/i', $HTTP_POST_VARS['country']) )
		{
			$user_country = htmlspecialchars($HTTP_POST_VARS['country']);
		}
		else
		{
			$error = true;
			$error_msg = $country['Fields_empty'];
		}
	}
	else
	{
		$user_country = 'nospec';
	}
Desweiteren setzt er in die functions_select.php

Code: Alles auswählen

function country_select($default, $select_name = "country")
{
	global $phpEx, $phpbb_root_path;
$country=array();
$countrydir = opendir($phpbb_root_path . 'images/flags/');
    while ($file = readdir($countrydir)) { 
		if ($file != "." && $file != "..") {
			$filename = $file;
			$displayname = trim(str_replace(".gif", "", $filename));
			$country[$displayname] = $displayname;
        }
    }
   closedir($countrydir);
   	
   	@asort($country);
	@reset($country);

	$country_select = '<select name="' . $select_name . '">';
	while ( list($displayname, $filename) = @each($country) )
	{
		$selected = ( strtolower($default) == strtolower($filename) ) ? ' selected="selected"' : '';
		$country_select .= '<option value="' . $displayname . '"' . $selected . '>' . ucwords($displayname) . '</option>';
	}
	$country_select .= '</select>';

	return $country_select;
}
und hat in der usercp_vieprofile.php zwecks Ansicht folgende Variablen drin

Code: Alles auswählen

'COUNTRY' => ( $profiledata['user_country'] ) ? $profiledata['user_country'] . "&nbsp;&nbsp;&nbsp;<img SRC=" . $phpbb_root_path . "images/flags/" . $profiledata['user_country'] . ".gif align=ABSMIDDLE> " : '&nbsp;',
Das Problem hierbei ist Folgendes:

Sofern der Benutzer kein oder noch kein Land angegeben hat erscheint in der profile_view_body.tpl und in der user_edit_body.tpl nur Land: NULL <X> (X steht für nicht gefundenes Bild). Ich würde gerne das ganze so verändern, das es wie beim Birthday MOD als Standardoption in der auswahl und somit natürlich auch in der Datenbank eine $lang-Variable gibt, die dann stattdessen Land: Nicht angegeben daraus macht. Ich denke mal (hab mal in die Zeile vom Birthday MOD geschaut, das zum einen an den 'nospec'-Zeilen und zum anderen im SQL-Standard NULL anzusetzen wäre, bzw. die Zeile für das kreieren der Anzeige (in meinem Fall) Länderkürzel <Länderbild> eben eine Standardoption Nicht angegeben <spacer.gif> eingefügt werden müssten. Nur leider weiß ich an der Stelle nicht, wie!!??

Ich hänge mal den MOD an, da er wirklich nicht groß ist...wenn jemand so nett wäre da rein zu schauen, wäre ich wirklich dankbar, denn so sachen wie IP Country Flags MOD etc. sind für meine Bedürfnisse einfach zu groß...und unnütz :-)

PS: Habe nur die EU-Staaten bisher reingenommen, daher auch der flags-Ordner schön klein :-)
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Du musst doch nur in der Zeile

Code: Alles auswählen

'COUNTRY' => ( $profiledata['user_country'] ) ? $profiledata['user_country'] . "&nbsp;&nbsp;&nbsp;<img SRC=" . $phpbb_root_path . "images/flags/" . $profiledata['user_country'] . ".gif align=ABSMIDDLE> " : '&nbsp;',
das Bild anstelle '%nbsp;' einsetzen.
Also die Zeile z.B. so ändern:

Code: Alles auswählen

'COUNTRY' => ( $profiledata['user_country'] ) ? $profiledata['user_country'] . "&nbsp;&nbsp;&nbsp;<img SRC=" . $phpbb_root_path . "images/flags/" . $profiledata['user_country'] . ".gif align=ABSMIDDLE> " : '<img src="images/spacer.gif" border="0" />',
Dabei kann "images/spacer.gif" jedes x-beliebige Bild sein.
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
schmidtedv
Beiträge: 607
Registriert: So 13.Feb, 2005 10:46
Wohnort: St. Blasien (seit 01.06)
Kontaktdaten:

Beitrag von schmidtedv »

Hab's anders als deine Variante auch schon etwas weiter gebracht...deine Variante setzt falsch an...ich habe zunächst mal der SQL-Zeile statt 'NULL' ein '' verpasst, denn, soweit hab ich's nun raus, die NULL wäre eine Standardvorgabe, sofern nachträglich eingebaut wie bei mir, für ein sog. NULL.gif...also weg damit... :-) Zweiter Part ist das ominöse 'nospec' welches, wie ich inzwischen raus habe auch ne Standardangabe ist für nospec.gif ...raus damit und wir sind einen Schritt weiter...allerding muss nun bei der Registrierung ein Land gewählt werden und da wäre natürlich eine Option für Nicht angegeben nicht schlecht bzw besser, als hier einfach ein 0.gif einzuschummeln, welches dann quasi als erste Option erscheint und bei nicht ändern ein 0 <0.gif> ergeben würde...

EDIT: ich würde mal annehmen, das ich eine derartige Option hier reinfummeln müßte:

Code: Alles auswählen

function country_select($default, $select_name = "country")
{
	global $phpEx, $phpbb_root_path;
$country=array();
$countrydir = opendir($phpbb_root_path . 'images/flags/');
    while ($file = readdir($countrydir)) { 
		if ($file != "." && $file != "..") {
			$filename = $file;
			$displayname = trim(str_replace(".gif", "", $filename));
			$country[$displayname] = $displayname;
        }
    }
   closedir($countrydir);
   	
   	@asort($country);
	@reset($country);

	$country_select = '<select name="' . $select_name . '">';
	while ( list($displayname, $filename) = @each($country) )
	{
		$selected = ( strtolower($default) == strtolower($filename) ) ? ' selected="selected"' : '';
		$country_select .= '<option value="' . $displayname . '"' . $selected . '>' . ucwords($displayname) . '</option>';
	}
	$country_select .= '</select>';

	return $country_select;
}
Zuletzt geändert von schmidtedv am Do 28.Jul, 2005 13:23, insgesamt 1-mal geändert.
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Wenn dann hinter

Code: Alles auswählen

$country_select = '<select name="' . $select_name . '">';
noch

Code: Alles auswählen

$country_select .= '<option value="0">&nbsp;</option>';
einfügen.
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
schmidtedv
Beiträge: 607
Registriert: So 13.Feb, 2005 10:46
Wohnort: St. Blasien (seit 01.06)
Kontaktdaten:

Beitrag von schmidtedv »

Wow, wenn man es weiß, isses wieder mal ganz einfach, dankedankdanke!

Ich wollte jetzt schon vorschlagen statt auswahlfeld einfach ein Eingabefeld mit 2 Buchstaben draus zu machen und das damit zu umgehen, aber so isses ja unnötig und das Ding läuft völlig meinen Wünschen gemäß :-) Muß ich nur noch ein paar Länder hinzufügen...soll ja auch Leute aus Brasilien auf einem deutschen Board geben, löl
Rettet den Wald, esst mehr Specht!

Forum [ sofern im Beitrag darauf verwiesen :-) ]
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Jo, dann noch viel Spaß mit Deinen Ländern.
Und eine freudige Überraschung, wo die alle herkommen ;)
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Antworten