[Profil] Checkbox statt Ja/Nein-Buttons?

In diesem Forum können Mod-Autoren ihre Mods vorstellen, die sich noch im Entwicklungsstatus befinden. Der Einbau in Foren im produktiven Betrieb wird nicht empfohlen.
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.
Screw Driver
Mitglied
Beiträge: 38
Registriert: 07.01.2004 10:49

[Profil] Checkbox statt Ja/Nein-Buttons?

Beitrag von Screw Driver »

Ich würde es gerne so machen, dass man im Profil statt ja oder Nein anzuklicken ein einzelnes Kästchen hat in dem man dann ein Häkchen macht oder nicht.

Wie geht das? :(
Benutzeravatar
MrMind
Mitglied
Beiträge: 464
Registriert: 29.11.2003 17:14
Wohnort: Darmstadt/Odw
Kontaktdaten:

Beitrag von MrMind »

In der templates/SubSilver/profile_add_body.tpl musst du nur an den gewünschten Punkten statt

<input type="radio"

ändern in

<input type="checkbox"


Mfg
MrMind
Selbst ist der Coder
Coder unter Linux
Screw Driver
Mitglied
Beiträge: 38
Registriert: 07.01.2004 10:49

Beitrag von Screw Driver »

Das ist Quatsch was du sagst. Mit deiner Lösung wäre danach Ja und Nein anklickbar, also Unfug.

Ich brauche eine andere Lösung, kann doch nicht so schwer sein. :(
Benutzeravatar
oxpus
Ehemaliges Teammitglied
Beiträge: 5394
Registriert: 03.02.2003 12:33
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Screw Driver hat geschrieben:Das ist Quatsch was du sagst. Mit deiner Lösung wäre danach Ja und Nein anklickbar, also Unfug.

Ich brauche eine andere Lösung, kann doch nicht so schwer sein. :(
Nein, das ist schon richtig. Dann kann man definieren, dass eine aktivierte Checkbox "Ja" und eine nicht aktivierte Checkbox "Nein" bedeutet. Natürlich muss der Code im Template angepasst und ein Input entfernt werden. So z.B. aus der admin/user_edit_body.tpl

Code: Alles auswählen

Radio:
	<tr>
	  <td class="row1"><span class="gen">{L_PUBLIC_VIEW_EMAIL}</span></td>
	  <td class="row2">
		<input type="radio" name="viewemail" value="1" {VIEW_EMAIL_YES} />
		<span class="gen">{L_YES}</span>&nbsp;&nbsp;
		<input type="radio" name="viewemail" value="0" {VIEW_EMAIL_NO} />
		<span class="gen">{L_NO}</span></td>
	</tr>

Checkbox:
			<td align="center"><span class="gensmall">{L_CURRENT_IMAGE}</span><br />
			  {AVATAR}<br />
			  <input type="checkbox" name="avatardel" />
			  &nbsp;<span class="gensmall">{L_DELETE_AVATAR}</span></td>
Bei radio setzt man die Werte, bei checkbox kann man abfragen, ob aktiv (also Haken gesetzt = true) oder nicht aktiv (Kein Haken gesetz = false) ;)
Grüße
OXPUS
Kein Support bei unaufgeforderten PNs, E-Mails oder auf anderem Weg!!
Screw Driver
Mitglied
Beiträge: 38
Registriert: 07.01.2004 10:49

Beitrag von Screw Driver »

Diese Idee hatte ich natürlich auch schon. Aber das funktioniert nicht, teste es mal selbst. So einfach geht das nicht.

Muss man evtl. was in der profile.php ändern? Wo sind die Experten, muss doch lösbar sein. :(
Benutzeravatar
oxpus
Ehemaliges Teammitglied
Beiträge: 5394
Registriert: 03.02.2003 12:33
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Also noch einmal:

Code: Alles auswählen

<input type="checkbox" name="hide_email" value="ja" {CHECKED}> {L_HIDE_EMAIL}
erstellt eine Checkbox mit dem Namen "hide_email". Daneben wird dann ein Text angegeben.
In einem Script, z.B. der usercp_register.php, müsste dann mit

Code: Alles auswählen

$HTTP_POST_VARS['hide_email'] (oder $HTTP_GET_VARS['hide_email'] - je nach Formulartyp)
überprüft werden, ob der Inhalt "ja" vorhanden ist.
So z.B.:

Code: Alles auswählen

if ( $HTTP_POST_VARS['hide_email'] == 'ja' || $HTTP_GET_VARS['hide_email'] == 'ja' )
{
$hide_email = TRUE;
}
else
{
$hide_email = FALSE;
}
Damit wird zunächst die Checkbox ausgelesen und geprüft, ob der Wert "ja" vorhanden ist. Dann kann man eine Aktion auslösen, eine Schleife durchlaufen oder, wie in meinem Beispiel, einer Variable einen Wert zuweisen.
Vorher müsste noch abgefragt werden, ob das betreffende Feld in dem Datensatz z.b. auf 0 oder 1 steht, um die Variable 'CHECKED' dem Formular zu übergeben, also den Haken in der Checkbox zu setzen oder eben nicht. Das könnte dann folgendermaßen aussehen:

Code: Alles auswählen

$template->assign_vars(array(
'CHECKED' => ( $hide_email == 1 ) ? 'checked=\"checked\"' : '')
);
Jetzt klarer?
Grüße
OXPUS
Kein Support bei unaufgeforderten PNs, E-Mails oder auf anderem Weg!!
Screw Driver
Mitglied
Beiträge: 38
Registriert: 07.01.2004 10:49

Beitrag von Screw Driver »

Leider nein, kannst du es anhand eines der Felder im Profil erklären wie ich es machen muss? Denke, dass ich es dann bei den restlichen Feldern selbst schaffe. :(
Benutzeravatar
oxpus
Ehemaliges Teammitglied
Beiträge: 5394
Registriert: 03.02.2003 12:33
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Hier dann mal eine kleine Mod-Anleitung für das Feld "Popup bei neuer PM":

Code: Alles auswählen

#
#-----[ OPEN ]-----
#
includes/usercp_register.php

#
#-----[ FIND ]-----
#
	$popup_pm = ( isset($HTTP_POST_VARS['popup_pm']) ) ? ( ($HTTP_POST_VARS['popup_pm']) ? TRUE : 0 ) : TRUE;

#
#-----[ REPLACE WITH ]-----
#
	$popup_pm = ( $HTTP_POST_VARS['popup_pm'] == '1' ) ? TRUE : 0;

#
#-----[ FIND ]-----
#
		'POPUP_PM_YES' => ( $popup_pm ) ? 'checked="checked"' : '',
		'POPUP_PM_NO' => ( !$popup_pm ) ? 'checked="checked"' : '',

#
#-----[ REPLACE WITH ]-----
#
		'POPUP_PM' => ( $popup_pm == TRUE ) ? 'checked="checked"' : '',

#
#-----[ OPEN ]-----
#
templates/xxx/profile_add_body.tpl

#
#-----[ FIND ]-----
#
		<input type="radio" name="popup_pm" value="1" {POPUP_PM_YES} />
		<span class="gen">{L_YES}</span>&nbsp;&nbsp; 
		<input type="radio" name="popup_pm" value="0" {POPUP_PM_NO} />
		<span class="gen">{L_NO}</span></td>

#
#-----[ REPLACE WITH ]-----
#
		<input type="checkbox" name="popup_pm" value="1" {POPUP_PM} />


#
#-----[ SAVE/CLOSE ALL FILES ]------------------------------------------
#
# EoM
Grüße
OXPUS
Kein Support bei unaufgeforderten PNs, E-Mails oder auf anderem Weg!!
Screw Driver
Mitglied
Beiträge: 38
Registriert: 07.01.2004 10:49

Beitrag von Screw Driver »

Super hat bisher alles geklappt. Nur wie mache ich es oben bei

Code: Alles auswählen

$attachsig = ( isset($HTTP_POST_VARS['attachsig']) ) ? ( ($HTTP_POST_VARS['attachsig']) ? TRUE : 0 ) : $board_config['allow_sig'];
Also wenn neue User sich registerieren. So wie ich es bis jetzt habe (einfach wie beim Profile) ist bei den Checkboxen beim Registreiren keines der Kästchen gecheckt.

So wie es beim Registrieren ist wird es auch übernommen wie ich festgestellt habe, das klappt also. Nur es sind nicht die entsprechend voreingestellten Kästchen angeklickt wie es sein sollte.

Kannst mir dazu noch kurz helfen? :roll:
Benutzeravatar
oxpus
Ehemaliges Teammitglied
Beiträge: 5394
Registriert: 03.02.2003 12:33
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Code: Alles auswählen

Finde
	$template->assign_vars(array(
			'USERNAME' => $username,

und davor einfügen

	if ($mode == 'register')
	{
		$popup_pm = TRUE // Oder 0 je nach gewünschter Voreinstellung
	}
Hab ich jetzt nicht getestet, aber an der Stelle sollte es funktioniern.
Grüße
OXPUS
Kein Support bei unaufgeforderten PNs, E-Mails oder auf anderem Weg!!
Antworten

Zurück zu „phpBB 2.0: Mods in Entwicklung“