Seite 1 von 2
[Profil] Checkbox statt Ja/Nein-Buttons?
Verfasst: 08.01.2004 13:30
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?

Verfasst: 08.01.2004 16:50
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
Verfasst: 08.01.2004 21:48
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.

Verfasst: 08.01.2004 22:30
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>
<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" />
<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)

Verfasst: 08.01.2004 22:34
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.

Verfasst: 09.01.2004 00:19
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?
Verfasst: 09.01.2004 14:50
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.

Verfasst: 09.01.2004 18:30
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>
<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
Verfasst: 10.01.2004 19:53
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?

Verfasst: 10.01.2004 20:22
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.