Seite 1 von 5

Geburtstag/Alter als Pflichtfeld

Verfasst: 15.12.2007 17:50
von Swat
Hi

würde gern neben dem Wohnort auch das Alter als Pflichtfeld machen. Habe mir den Prime Birthdate Require angesehen dieser ist mir aber zu groß.

Alternativ wäre ein universelles snippet hilfreich wie man dies umstellen kann.

Verfasst: 17.12.2007 23:42
von Swat
*schieb*

Verfasst: 20.12.2007 00:42
von ups
würd mich auch interessieren ;-)

ups

Verfasst: 26.12.2007 17:15
von Adm_Cascal
Das würde mich auch interessieren.

Verfasst: 26.12.2007 23:17
von Tifker
Im ACP> Benutzer und Gruppen > Benutzerdefinierte Profilfelder kann man doch Felder im Profil hinzufügen und diese auch bei der Registrierung als Pflichtfeld machen!

Verfasst: 27.12.2007 01:31
von redbull254
Tifker hat geschrieben:Im ACP> Benutzer und Gruppen > Benutzerdefinierte Profilfelder kann man doch Felder im Profil hinzufügen und diese auch bei der Registrierung als Pflichtfeld machen!
Man kann zwar zusätzlich Felder anlegen, aber diese nicht zum Pflichtfeld machen. Dazu muss eine Mod her. :wink:

In diesem Fall eben die Mod "Prime Birthdate Require"

Verfasst: 27.12.2007 10:51
von Tifker
redbull254 hat geschrieben:
Tifker hat geschrieben:Im ACP> Benutzer und Gruppen > Benutzerdefinierte Profilfelder kann man doch Felder im Profil hinzufügen und diese auch bei der Registrierung als Pflichtfeld machen!
Man kann zwar zusätzlich Felder anlegen, aber diese nicht zum Pflichtfeld machen. Dazu muss eine Mod her. :wink:

In diesem Fall eben die Mod "Prime Birthdate Require"
Aber beim anlegen eines Profilfeldes hat man die Möglichkeit dies auszuwählen! >
Erforderliches Feld:
Zwingt die Benutzer, dieses Feld auszufüllen oder eine Option auszuwählen. Macht das Feld bei der Registrierung und im persönlichen Bereich sichtbar.
Ist das nun kein Pflichtfeld?

EDIT: Hab dies soeben getestet und das Feld wird als Pflichtfeld erkannt! Somit muss man dies bei der Registrierung ausfüllen.

Gruß Tifker :wink:

Verfasst: 27.12.2007 14:07
von redbull254
Hallo, Tifker :wink:

wo Du recht hast, hast Du recht. :grin:

Man kann Pflichtfelder anlegen. Ich habe mich vertan und nehme alles mit dem Ausdruck des größten Bedauerns zurück.

Ich habe die Mod zum eintragen eines Wohnort als Pflichtfeld von "Nickvergessen" und die Mod Prime Birthdate Require bei mir eingebaut. Das hatte aber andere Gründe, die ich jetzt dabei vergessen hatte. :oops:

Die Mod von "Nickvergessen war notwendig, damit nicht zweimal im Profilfeld "Wohnort" erscheint und die Mod Prime Birthdate Require hatte ich wegen dem erweiterten Möglichkeiten zum Geburtstags-Pflichtfeld eingebaut.

Mea Culpa

Verfasst: 27.12.2007 19:52
von Swat
Habe mir diesen "Prime Birthdate Require" auch angesehen nur stört mich da das ich bei der Zustimmung schon das Pflichtfeld habe wollte es genauso haben wie beim Wohnort von Nickvergessen

Verfasst: 31.12.2007 01:10
von Swat
hab mich jetzt mal versucht

7 Dateien sind zu bearbeiten:
includes/ucp/ucp_profile.php
includes/ucp/ucp_register.php
styles/prosilver/ucp_register.htm
styles/prosilver/ucp_profile_profile_info.htm
styles/subsilver2/ucp_register.htm
styles/subsilver2/ucp_profile_profile_info.htm
language/de/common.php
öffne: includes/ucp/ucp_profile.php
suche

Code: Alles auswählen

// validate custom profile fields
					$cp->submit_cp_field('profile', $user->get_iso_lang_id(), $cp_data, $cp_error);
davor einfügen

Code: Alles auswählen

if ($data['bday_day'] == '0' or $data['bday_month'] == '0' or $data['bday_year'] == '0')
				   	{
                 	 	$error[] = $user->lang['NO_BDAY'];
               		}		
um eine Prüfung hinzuzufügen die auf den 30 und 31.02. prüft dies noch danach einfügen

Code: Alles auswählen

if(($data['bday_day'] == '30' or $data['bday_day'] == '31') and $data['bday_month'] == '2')
      {
          $error[] = $user->lang['NO_BDAY'];
      }
öffne: includes/ucp/ucp_register.php
suche

Code: Alles auswählen

'tz'				=> request_var('tz', (float) $config['board_timezone']), 
danach einfügen

Code: Alles auswählen

'bday_day' 			=> request_var('bday_day', '', true),
					'bday_month' 		=> request_var('bday_month', '', true),
					'bday_year' 		=> request_var('bday_year', '', true),
suche

Code: Alles auswählen

'tz'				=> request_var('tz', (float) $timezone),
danach einfügen

Code: Alles auswählen

'bday_day' 			=> request_var('bday_day', '', true),
			'bday_month' 		=> request_var('bday_month', '', true),
			'bday_year' 		=> request_var('bday_year', '', true),
suche

Code: Alles auswählen

'tz'				=> array('num', false, -14, 14),
'lang'				=> array('match', false, '#^[a-z_\-]{2,}$#i'),
danach einfügen

Code: Alles auswählen

'bday_day'		=> array('num', true, 1, 31),
'bday_month'	=> array('num', true, 1, 12),
'bday_year'		=> array('num', true, 1901, gmdate('Y', time()) + 50),
suche

Code: Alles auswählen

// Replace "error" strings with their real, localised form
			$error = preg_replace('#^([A-Z_]+)$#e', "(!empty(\$user->lang['\\1'])) ? \$user->lang['\\1'] : '\\1'", $error);
davor einfügen

Code: Alles auswählen

if ($data['bday_day'] == '0' or $data['bday_month'] == '0' or $data['bday_year'] == '0')
		 {
			$error[] = $user->lang['NO_BDAY'];
		 }
suche

Code: Alles auswählen

'user_regdate'			=> time(),
'user_inactive_reason'	=> $user_inactive_reason,
'user_inactive_time'	=> $user_inactive_time,
danach einfügen

Code: Alles auswählen

'user_birthday'			=> sprintf('%2d-%2d-%4d', $data['bday_day'], $data['bday_month'], $data['bday_year']),
suche

Code: Alles auswählen

//
		$l_reg_cond = '';
		switch ($config['require_activation'])
		{
			case USER_ACTIVATION_SELF:
				$l_reg_cond = $user->lang['UCP_EMAIL_ACTIVATE'];
			break;

			case USER_ACTIVATION_ADMIN:
				$l_reg_cond = $user->lang['UCP_ADMIN_ACTIVATE'];
			break;
		}
danach einfügen

Code: Alles auswählen

if ($config['allow_birthdays'])
		{
			$s_birthday_day_options = '<option value="0"' . ((!$data['bday_day']) ? ' selected="selected"' : '') . '>--</option>';
			for ($i = 1; $i < 32; $i++)
			{
				$selected = ($i == $data['bday_day']) ? ' selected="selected"' : '';
				$s_birthday_day_options .= "<option value=\"$i\"$selected>$i</option>";
			}

			$s_birthday_month_options = '<option value="0"' . ((!$data['bday_month']) ? ' selected="selected"' : '') . '>--</option>';
			for ($i = 1; $i < 13; $i++)
			{
				$selected = ($i == $data['bday_month']) ? ' selected="selected"' : '';
				$s_birthday_month_options .= "<option value=\"$i\"$selected>$i</option>";
			}
			$s_birthday_year_options = '';

			$now = getdate();
			$s_birthday_year_options = '<option value="0"' . ((!$data['bday_year']) ? ' selected="selected"' : '') . '>--</option>';
			for ($i = $now['year']-1; $i > $now['year'] -100; $i--)
			{
				$selected = ($i == $data['bday_year']) ? ' selected="selected"' : '';
				$s_birthday_year_options .= "<option value=\"$i\"$selected>$i</option>";
			}
			unset($now);

			$template->assign_vars(array(
				'S_BIRTHDAY_DAY_OPTIONS'	=> $s_birthday_day_options,
				'S_BIRTHDAY_MONTH_OPTIONS'	=> $s_birthday_month_options,
				'S_BIRTHDAY_YEAR_OPTIONS'	=> $s_birthday_year_options,
				'S_BIRTHDAYS_ENABLED'		=> true,
			));
		}
öffne: styles/prosilver/ucp_register.htm
suche

Code: Alles auswählen

<dl>
      <dt><label for="user_from">{L_LOCATION}: </label></dt>
      <dd><input type="text" tabindex="3" name="user_from" id="user_from" size="25" maxlength="100" value="{USER_FROM}" class="inputbox autowidth" title="{L_LOCATION}" /></dd>
   </dl>
danach einfügen

Code: Alles auswählen

		<dl>
			<dt><label for="bday_day">{L_BIRTHDAY}: *</label><br /><span>{L_BIRTHDAY_EXPLAIN}</span></dt>
			<dd>
				<label for="bday_day">{L_DAY}: <select name="bday_day" id="bday_day" style="width: 4em;">{S_BIRTHDAY_DAY_OPTIONS}</select></label> 
				<label for="bday_month">{L_MONTH}: <select name="bday_month" id="bday_month" style="width: 4em;">{S_BIRTHDAY_MONTH_OPTIONS}</select></label> 
				<label for="bday_year">{L_YEAR}: <select name="bday_year" id="bday_year" style="width: 6em;">{S_BIRTHDAY_YEAR_OPTIONS}</select></label>
			</dd>
		</dl>
öffnen: styles/prosilver/ucp_profile_profile_info.htm
suche

Code: Alles auswählen

<dt><label for="bday_day">{L_BIRTHDAY}:</label><br /><span>{L_BIRTHDAY_EXPLAIN}</span></dt>
ersetze mit

Code: Alles auswählen

<dt><label for="bday_day">{L_BIRTHDAY}: *</label><br /><span>{L_BIRTHDAY_EXPLAIN}</span></dt>
öffne: styles/subsilver2/ucp_register.htm
suche

Code: Alles auswählen

<!-- BEGIN profile_fields -->
davor einfügen

Code: Alles auswählen

<!-- IF S_BIRTHDAYS_ENABLED -->
	<tr> 
		<td class="row1" width="35%"><b class="genmed">{L_BIRTHDAY}: *</b><br /><span class="gensmall">{L_BIRTHDAY_EXPLAIN}</span></td>
		<td class="row2"><span class="genmed">{L_DAY}:</span> <select name="bday_day">{S_BIRTHDAY_DAY_OPTIONS}</select> <span class="genmed">{L_MONTH}:</span> <select name="bday_month">{S_BIRTHDAY_MONTH_OPTIONS}</select> <span class="genmed">{L_YEAR}:</span> <select name="bday_year">{S_BIRTHDAY_YEAR_OPTIONS}</select></td>
	</tr>
<!-- ENDIF -->
öffnen: styles/subsilver2/ucp_profile_profile_info.htm
suche

Code: Alles auswählen

<td class="row1" width="35%"><b class="genmed">{L_BIRTHDAY}: </b><br /><span class="gensmall">{L_BIRTHDAY_EXPLAIN}</span></td>
ersetze mit

Code: Alles auswählen

<td class="row1" width="35%"><b class="genmed">{L_BIRTHDAY}: *</b><br /><span class="gensmall">{L_BIRTHDAY_EXPLAIN}</span></td>
öffnen: language/de/common.php
suche

Code: Alles auswählen

'NO_BIRTHDAYS'				=> 'Heute hat kein Mitglied Geburtstag',
danach einfügen

Code: Alles auswählen

'NO_BDAY'					=> 'Bitte gebe dein Geburtsdatum ein',


so das war es ;) ich hoffe ich habe nichts vergessen
hab es auch leider nur für Prosilver da ich subsilver2 nicht nutze

Natürlich liegt es in eurer Verantwortung ob ihr so viele Daten von euren Users sammeln wollt (Datensparsamkeit)

EDIT: hab es mal ein weinig systematischer aufgeschrieben

EDIT2: subsilver2 hinzugefügt