Thread Verfasser: TBR
Thread ID: 1296
Thread Info
Es gibt 17 Beiträge zu diesem Thema, und es wurde 2236 Mal angesehen.  Ausserdem wurden Dateien angehängt.
 Thema drucken
Profilfeld zum Pflichtfeld machen.
TBR
Hallo zusammen,

wenn eine Infusion nicht die Option anbietet es zum Pflichtfeld zu machen, kann man es nachträglich zum Pflichtfeld machen und wie?
 
husker
Hi;

schau mal in das Userfield : user_birthdate_include.php
Dieses Userfield läßt sich zum Pflichtfeld machen.

Eigentlich sollte es möglich sein, auch ein anderes Userfield auf selben Wege zum Pflichtfeld zu machen.

Gruß
Husker
 
Septron
Hallo,

einfach unter includes/user_fields/user_xYz__include_var.php
öffnen:

suche:

Code 

if (!defined("IN_FUSION")) { die("Access Denied"); }



füge darunter:

Code 

// Version of the user fields api
$user_field_api_version = "1.01.00";



hochladen

ggf. feld wieder deaktivierenoder einfach bearbeiten
deaktivieren ist aber die bessere lösung feld neu hinzufügen
und siehe da es sin ein paar felder mehr

- Pflichtfeld
- Registration
- Log

lg Septron
Rechtschreibfehler und Fehlende Satzzeichen sind eine Sünde meiner
Gedanklichen Tastatur wer alle findet darf sie behalten.
Domain Owner of: SGI Fusion | PHPFusion-SupportClub | PHPFusion Germany
 
TBR
Hallo,


Beim Geburtsdatum geht es, nur bei der Geschlechtauswahl nicht, obwohl man es als Pflichtfeld einstellen kann, was ich auch habe.

Habe es jetzt mehrmals deaktiviert und wieder aktiviert und sogar neu instaliert.

Im Anhang die Bilder.
TBR hat folgende Datei angehängt:
Du hast nicht die Berechtigung die Anhäge dieses Themas zu sehen.
 
Systemweb
Das Userfield muss zuerst deaktiviert werden, BEVOR also die API festgelegt wird.
Auserdem muss man prüfen, ob in gleicher Datei für das DB Field eine Definition eingetragen ist, z. B. "CHAR(1) NOT NULL DEFAULT '-'"

Erst danach darf das inaktive Userfield aktiviert werden. Wenn man ein aktives Field verändert und erst danach deaktiviert und wieder reaktiviert führt das in der Regel zu Fehlern.
 
TBR
hab es so drinne

Code 

if (!defined("IN_FUSION")) { die("Access Denied"); }

// Version of the user fields api
$user_field_api_version = "1.01.00";

$user_field_name = $locale['uf_gender'];
$user_field_desc = $locale['uf_gender_desc'];
$user_field_dbname = "user_gender";
$user_field_group = 2;
$user_field_dbinfo = "TINYINT(1) NOT NULL DEFAULT '0'";
?>




er will einfach kein pflichtfeld daraus machen
 
Systemweb
Schau mal ob in der Tabelle fusionXXX_users noch eine Spalte für user_gender vorhanden ist, wenn das Userfield Geschlecht deaktiviert wurde. Falls ja lösche diese Spalte und aktiviere dann.
Dabei muss die Spalte neu angelegt werden.

Wenn das nicht hilft stimmt mit deinem Userfield Script etwas nicht.

Nachtrag: Zeigt er nur das rote * nicht an oder wird tatsächlich ohne Beanstandung bei Nichtangabe fortgefahren?
Bearbeitet von Systemweb am 30.06.2017 um 07:12
 
TBR
Also es funktioniert tatsächlich nicht als Pflichtfeld.
Hab alles durchgeschaut
hat zufällig jemand einen link wo man die Geschlechterauswahl mit funktionierenden Pflichtfeld runterladen kann?

Wenn man was am Theme ändern will, reicht es im css des Theme die Änderungen zu speichern, oder übersehe ich was und muss noch in einem anderen Ordner Änderungen vornehmen?

Die Seite übernimmt das Logo und neue Farben nicht.Sad
 
GUL-Sonic
Hallo TBR,
Zitat: hat zufällig jemand einen link wo man die Geschlechterauswahl mit funktionierenden Pflichtfeld runterladen kann?


z.B. hier auf der Seite
https://www.phpfusion-deutschland.de/...load_id=97
M.f.G.
GUL-Sonic

Merke:
Wirklichkeit ist niemals so konsistent wie ein solider Wahn!
Wink
 
TBR
Super, vielen Dank für eure Hilfe.

Zusammengefügt am 13. Juli 2017 um 06:07:23:
Hallo zusammen,

da folgende Infusion mir doch eher zusagt, wollte ich nochmal fragen, was fehlt um es als Pflichtfeld bei der Registrierung einzustellen? Ich kann zwar bei Pflichtfeld und Registrierung einen Haken setzen, aber man kann sich weiter ohne es anzugeben registrieren.

user_gender_include

Code 

<?php
/*-------------------------------------------------------+
| PHP-Fusion Content Management System
| Copyright © 2002 - 2008 Nick Jones
| http://www.php-fusion.co.uk/
+--------------------------------------------------------+
| Filename: user_gender_include.php
| Author: Gr@n@dE
| Homepage: www.granade.eu
+--------------------------------------------------------+
| This program is released as free software under the
| Affero GPL license. You can redistribute it and/or
| modify it under the terms of this license which you
| can read by viewing the included agpl.txt or online
| at www.gnu.org/licenses/agpl.html. Removal of this
| copyright header is strictly prohibited without
| written permission from the original author(s).
+--------------------------------------------------------*/
if (!defined("IN_FUSION")) { die("Access Denied"); }

if ($profile_method == "input") {
   echo "<tr>\n";
   echo "<td class='tbl'>".$locale['uf_gender_001'].":</td>\n";
   echo "<td class='tbl'>";
   echo "<input type='radio' name='user_gender' value='0'".(IsSeT($user_data['user_gender']) && $user_data['user_gender'] == "0" ? " checked='checked'" : "")." /> ".$locale['uf_gender_004']." ";
   echo "<input type='radio' name='user_gender' value='1'".(IsSeT($user_data['user_gender']) && $user_data['user_gender'] == "1" ? " checked='checked'" : "")." /> ".$locale['uf_gender_002']." ";
   echo "<input type='radio' name='user_gender' value='2'".(IsSeT($user_data['user_gender']) && $user_data['user_gender'] == "2" ? " checked='checked'" : "")." /> ".$locale['uf_gender_003']."</td>\n";
   echo "</tr>\n";
} elseif ($profile_method == "display") {
   if ($user_data['user_gender'] && ($user_data['user_gender'] == 1 || $user_data['user_gender'] == 2)) {
      echo "<tr>\n";
      echo "<td width='1%' class='tbl1' style='white-space:nowrap'>".$locale['uf_gender_001']."</td>\n";
      echo "<td align='right' class='tbl1'>".($user_data['user_gender'] == 1 ? $locale['uf_gender_002'] : ($user_data['user_gender'] == 2 ? $locale['uf_gender_003'] : $locale['uf_gender_004']));
      echo "</td>\n</tr>\n";
   }
} elseif ($profile_method == "validate_insert") {
   $db_fields .= ", user_gender";
   $db_values .= ", '".(isset($_POST['user_gender']) && isnum($_POST['user_gender']) ? $_POST['user_gender'] : "0")."'";
} elseif ($profile_method == "validate_update") {
   $db_values .= ", user_gender='".(isset($_POST['user_gender']) && isnum($_POST['user_gender']) ? $_POST['user_gender'] : "0")."'";
}
?>





user_gender_include_var

Code 

<?php
/*-------------------------------------------------------+
| PHP-Fusion Content Management System
| Copyright © 2002 - 2008 Nick Jones
| http://www.php-fusion.co.uk/
+--------------------------------------------------------+
| Filename: user_gender_include_var.php
| Author: Gr@n@dE
| Homepage: www.granade.eu
+--------------------------------------------------------+
| This program is released as free software under the
| Affero GPL license. You can redistribute it and/or
| modify it under the terms of this license which you
| can read by viewing the included agpl.txt or online
| at www.gnu.org/licenses/agpl.html. Removal of this
| copyright header is strictly prohibited without
| written permission from the original author(s).
+--------------------------------------------------------*/
if (!defined("IN_FUSION")) { die("Access Denied"); }

// Version of the user fields api
$user_field_api_version = "1.01.00";
$user_field_name = $locale['uf_gender'];
$user_field_desc = $locale['uf_gender_desc'];
$user_field_dbname = "user_gender";
$user_field_group = 2;
$user_field_dbinfo = "TINYINT(1) NOT NULL DEFAULT '0'";
?>





local-german-userfield

Code 

<?php
$locale['uf_gender'] = "Geschlechtsanzeige";
$locale['uf_gender_desc'] = "Geschlechter Auswahl";
$locale['uf_gender_001'] = "Geschlecht";
$locale['uf_gender_002'] = "Weiblich";
$locale['uf_gender_003'] = "M&auml;nnlich";
$locale['uf_gender_004'] = "Nicht Angegeben";
?>


Bearbeitet von TBR am 13.07.2017 um 06:07
 
David
Im Grunde genommen sind es nur kleine Änderungen, welche vorgenommen werden müssen.

Die Frage ist allerdings, wenn du das Feld als "Pflichtfeld" haben möchtest, wähle ich als Benutzer doch einfach "Nicht angegeben", damit du dennoch das Geschlecht nicht erfährst.

Oder verstehe ich den Zweck nun falsch?
Liebe Grüße, David Smile

PHP-Fusion Österreich
 
TBR
Diese Auswahl lösche ich natürlich. Stimmt, sonst wäre ein Pflichtfeld natürlich ziemlich sinnfreiDickeslachen

Am Ende soll man nur zwischen männlich und weiblich auswählen können.
 
David
Gut, ich habe mir mal die Mühe gemacht und es angepasst.

Getestet habe ich dass ganze unter PHP-Fusion 7.02.07, also sollte es auch funktionieren.

user_gender_include.php

Code 


<?php

/*-------------------------------------------------------+
| PHP-Fusion Content Management System
| Copyright © 2002 - 2008 Nick Jones
| http://www.php-fusion.co.uk/
+--------------------------------------------------------+
| Filename: user_gender_include.php
| Author: Gr@n@dE
| Homepage: www.granade.eu
+--------------------------------------------------------+
| This program is released as free software under the
| Affero GPL license. You can redistribute it and/or
| modify it under the terms of this license which you
| can read by viewing the included agpl.txt or online
| at www.gnu.org/licenses/agpl.html. Removal of this
| copyright header is strictly prohibited without
| written permission from the original author(s).
+--------------------------------------------------------*/

// Check Access
if (!defined("IN_FUSION")) { die("Access Denied"); }

// Handle Input
if ($profile_method == "input") {
   $user_gender = isset($user_data['user_gender']) ? $user_data['user_gender'] : "0";
   if ($this -> isError()) {
      $user_gender = (isset($_POST['user_gender']) && isNum($_POST['user_gender']) && $_POST['user_gender'] && $_POST['user_gender'] <= 2) ? $_POST['user_gender'] : $user_gender;
   }
   echo "<tr>\n";
   echo "<td class='tbl".$this -> getErrorClass("user_gender")."'>".$locale['uf_gender_001']."</td>\n";
   echo "<td class='tbl".$this -> getErrorClass("user_gender")."'>\n";
   echo "<label><input type='radio' name='user_gender' value='1'".($user_gender == "1" ? " checked='checked'" : "")." /> ".$locale['uf_gender_002']."</label>&nbsp;&nbsp;";
   echo "<label><input type='radio' name='user_gender' value='2'".($user_gender == "2" ? " checked='checked'" : "")." /> ".$locale['uf_gender_003']."</label>";
   echo "\n</td>\n";
   echo "</tr>\n";
   
// Handle Display
} elseif ($profile_method == "display") {
   if ($user_data['user_gender'] && $user_data['user_gender'] <= 2) {
      echo "<tr>\n";
      echo "<td width='1%' class='tbl1' style='white-space:nowrap'>".$locale['uf_gender_001']."</td>\n";
      echo "<td align='right' class='tbl1'>".($user_data['user_gender'] == 1 ? $locale['uf_gender_002'] : $locale['uf_gender_003'])."</td>\n";
      echo "</tr>\n";
   }
   
// Handle Register and Update
} elseif ($profile_method == "validate_insert"  || $profile_method == "validate_update") {
   if ((isset($_POST['user_gender']) && isNum($_POST['user_gender']) && $_POST['user_gender'] && $_POST['user_gender'] <= 2) || $this -> _isNotRequired("user_gender")) {
      $this -> _setDBValue("user_gender", $_POST['user_gender']);
   } else {
      $this -> _setError("user_gender", $locale['uf_gender_error'], true);
   }
}

?>



user_gender_include_var.php

Code 


<?php

/*-------------------------------------------------------+
| PHP-Fusion Content Management System
| Copyright © 2002 - 2008 Nick Jones
| http://www.php-fusion.co.uk/
+--------------------------------------------------------+
| Filename: user_gender_include_var.php
| Author: Gr@n@dE
| Homepage: www.granade.eu
+--------------------------------------------------------+
| This program is released as free software under the
| Affero GPL license. You can redistribute it and/or
| modify it under the terms of this license which you
| can read by viewing the included agpl.txt or online
| at www.gnu.org/licenses/agpl.html. Removal of this
| copyright header is strictly prohibited without
| written permission from the original author(s).
+--------------------------------------------------------*/

// Check Access
if (!defined("IN_FUSION")) { die("Access Denied"); }

// Version of the user fields api
$user_field_api_version = "1.01.00";
$user_field_name        = $locale['uf_gender'];
$user_field_desc        = $locale['uf_gender_desc'];
$user_field_dbname      = "user_gender";
$user_field_group       = 2;
$user_field_dbinfo      = "TINYINT(1) NOT NULL DEFAULT '0'";

?>



user_gender.php

Code 


<?php

// Locale
$locale['uf_gender'] = "Geschlecht";
$locale['uf_gender_desc'] = "Zeigt das Geschlecht eines Benutzers an.";
$locale['uf_gender_001'] = "Geschlecht";
$locale['uf_gender_002'] = "Weiblich";
$locale['uf_gender_003'] = "M&auml;nnlich";
$locale['uf_gender_error'] = "Du musst dein Geschlecht angeben!";

?>


Liebe Grüße, David Smile

PHP-Fusion Österreich
 
TBR
Da musstes du aber etwas mehr anpassen.

WOOW, vielen Dank für die Mühe und es funktioniert einwandfrei,David. :YAHOO:

Nur fürs Verständnis, diese setError- Geschichte ist relevant, damit es als Pflichtfeld auch funktioniert?
 
David
Naja soviel war es nicht zu ändern :D.

Also, die folgenden eingebauten Funktionen tun folgendes.

$this -> isError() gibt ein (bool)true zurück, wenn bei der Aktualisierung des Profiles oder bei Absenden der Registrierung ein Fehler aufgetreten ist. Innerhalb dieser IF-Anwendung ist eine Abfrage, welche die Auswahl des Feldes "zwischenspeichert" bzw. verarbeitet, so dass die Auswahl gespeichert bleibt, bis das Formular korrekt abgesendet ist.

$this -> getErrorClass("user_gender") gibt die Style-Klasse zurück, wenn das Profilfeld (in diesem Falle "user_gender") fehlerhaft ausgefüllt wurde, bzw. garnicht ausgefüllt wurde. Die Style-Klasse müsste tbl-error sein wenn ich mich korrekt erinnere.

$this -> _setError("user_gender", $locale['uf_gender_error'], true) setzt die Fehlermeldung für das Profilfeld. Hierbei gilt, erste Angabe das Feld, zweite Angabe die Fehlermeldung, dritte Angabe ob das Feld leer ist oder nicht.

$this -> _isNotRequired("user_gender") prüft ob das Feld ein Pflichtfeld ist oder nicht. Rückgabewert (bool)false bedeutet, es ist ein Pflichtfeld, (bool)true bedeutet, es ist kein Pflichtfeld.

Ich Hoffe ich konnte dir weiterhelfen - Sollten noch Fragen offen sein immer gerne ;)
Liebe Grüße, David Smile

PHP-Fusion Österreich
 
TBR
Vielen Dank für die Erklärung, David
Für mich als PHP-Neuling, hilft das ungemein es Schritt für Schritt mehr zu verstehen.

*beideDaumenhoch*Smile
 
David
Freut mich wenn ich dir helfen konnte Wink.
Liebe Grüße, David Smile

PHP-Fusion Österreich
 
Springe ins Forum: