Profil / Persönliche Daten...

Peer
Beiträge: 309
Registriert: Fr 9. Sep 2005, 17:22
Kontaktdaten:

Profil / Persönliche Daten...

Beitrag von Peer » Di 13. Dez 2005, 18:50

Hallo,

ich suche ein Modul wo User die sich auf die Seite Einloggen ihr Profil ... bearbeiten können.
Und von dem Profil sollen felder auch auf der Seite sichtbar sein.

Für Members (Foto, Name...)

Kann mir da jemand helfen ?

Vielen Dank im vorraus

Halchteranerin
Beiträge: 5478
Registriert: Di 2. Mär 2004, 21:11
Wohnort: Halchter, wo sonst? ;-)
Kontaktdaten:

Beitrag von Halchteranerin » Di 13. Dez 2005, 18:58

verschoben
Bitte keine unaufgeforderten Privatnachrichten mit Hilfegesuchen schicken. WENN ich helfen kann, dann mache ich das im Forum, da ich auch alle Postings lese. PN werden nicht beantwortet!

HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB » Di 13. Dez 2005, 20:28

Wie dringend?

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net

Peer
Beiträge: 309
Registriert: Fr 9. Sep 2005, 17:22
Kontaktdaten:

Beitrag von Peer » Mo 19. Dez 2005, 21:34

Hallo,

es ist nicht so dringent, ende Januar wer super.

Bis dann

Peer

Uwe
Beiträge: 258
Registriert: Mo 30. Jun 2003, 16:05
Wohnort: Konstanz
Kontaktdaten:

Beitrag von Uwe » Di 7. Feb 2006, 13:13

Hallo,

auch ich stehe vor der gleichen Aufgabe. Für einen Verein (Lebenshilfe Konstanz) erstelle ich gerade eine Seite.

Im FE sollen sich die Mitglieder einloggen können und auch ihre Daten ändern können (als Modul). Eigentlich genau so, wie in communido.net. Weiter sollen alle Mitglieder gelistet werden und per Klick werden alle Daten dieses Mitgliedes angezeigt (weiteres Modul). Auch Gruppen soll es geben, Vorstand und Mitglieder.

Wie auch bei communido soll es die Möglichkeit einer Anmeldung (Modul) geben. Diese Daten werden in die Standard-Gruppe (Mitglieder) eingetragen und erst durch den Admin bestätigt, der durch eine Mail von der Anmeldung in Kenntnis gesetzt wird.

Auch soll es Formulare geben, Mail an Mitglieder, Vorstand (auch Modul).

Derzeit habe ich die FE-Plugins Email, Homepage, Address integriert, was auch wunderbar funktioniert. Ich denke, dass ich auf dieser Basis auch weitere Optionen selbst einbauen kann (Konto, BLZ etc.).

Natürlich hätte ich gerne, dass das Formular zum Ändern der eigenen Daten genauso dynamisch reagiert (bei neuem Plugin), wie im BE.

Das zweite Problem ist sicher, dass die FEuser nicht automatisch Newsletter-Empfänger sind ...

Viele Wünsche, aber fragen kostet ja nix. Gibt es eine solche Lösung bereits (oder ähnlich) und stellt das der (die) jenige zur Verfügung. Das Budget ist denkbar knapp.

Nun bin ich ja mal gespannt,
viele Grüsse aus Konstanz, Uwe

HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB » Mi 8. Feb 2006, 03:05

Nun, wenn Du die Newsletter-Module zur Anmeldung nutzt, kann ein E-Mail-Account optional gleichzeitig als Newsletter-Empfäner und als FrontendUser-Account eingetragen werden (inkl. Aktivierung usw.). Siehe dazu die Informationen zu den Modulen (Signatur).

Allerdings wird der FE-User nur in die Standardgruppe eingetragen - zusätzliche Angaben muss man in das Modul einprogrammieren.

Bei Communido wird genau diese Technik verwendet, allerdings ist sie nicht dahingehend überprüft, ob sie mit der Plugin-Technik harmoniert (da muss man dann aber nur die eine oder andere Typkennung ändern):

Code: Alles auswählen

           if (!$frontendusers->userExists($email)) {
              if ($frontenduser = $frontendusers->create($email)) {
                 if ($_REQUEST["nickname"] != "") {
                    $nickname = $_REQUEST["nickname"];
                    $nickname = substr($nickname, 0, 200);
                 } else {
                    $nickname = "None";
                 }
                 $properties->setValue("frontenduser", $frontenduser->get("idfrontenduser"), "frontend", "nickname", $nickname);

                 if ($_REQUEST["attendees"] != "" && is_numeric($_REQUEST["attendees"])) {
                    $properties->setValue("frontenduser", $frontenduser->get("idfrontenduser"), "frontend", "attendees", $_REQUEST["attendees"]);
                 } else {
                    $properties->setValue("frontenduser", $frontenduser->get("idfrontenduser"), "frontend", "attendees", "0");
                 }
(nur der Code nach if (!$frontendusers->userExists($email)) { im Handler-Output, ergänzt um Felder für Nickname und Anzahl der Teilnehmer)

Das "Change Profile"-Modul kann ich auf Wunsch mal zur Verfügung stellen, das ist aber hier zu kompliziert zum posten.

Es sei erwähnt, dass ich mit dem Wissen heute das eine oder andere anders gestalten würde... (es ist also nicht perfekt).

Die Liste der Teilnehmer sieht z.B. so aus (nur Output):

Code: Alles auswählen

<?php
   $db = new DB_Contenido;
   $lngNicks = 0;
   $lngAttendees = 0;

   $sql = "SELECT DISTINCT tblProperties.value AS NickName, tblProperties2.value AS Attendees FROM " . 
          $cfg["tab"]["properties"] . " tblProperties, " . 
          $cfg["tab"]["properties"] . " tblProperties2, " . 
          $cfg["tab"]["frontendusers"] . " tblFrontendUsers, ".
          $cfg["tab"]["news_rcp"] . " tblRecipients, ".
          $cfg["tab"]["news_groupmembers"] . " tblGroupMembers ".
          "WHERE tblProperties.idclient = '" . $client . "' AND tblProperties2.idclient = '" . $client . "' AND " .
          "tblProperties.itemtype = 'frontenduser' AND tblProperties.type = 'frontend' AND " . 
          "tblProperties2.itemtype = 'frontenduser' AND tblProperties2.type = 'frontend' AND " . 
          "tblProperties.name = 'nickname' AND tblProperties.itemid = tblFrontendUsers.idfrontenduser AND " .
          "tblProperties2.name = 'attendees' AND tblProperties2.itemid = tblFrontendUsers.idfrontenduser AND " .
          "tblFrontendUsers.username = tblRecipients.email AND tblRecipients.confirmed = '1' AND " . 
          "tblRecipients.idnewsrcp = tblGroupMembers.idnewsrcp AND " .
          "tblGroupMembers.idnewsgroup = '13' ORDER BY tblProperties.value";

   $db->query($sql);

   while ($db->next_record()) {
      $lngNicks = $lngNicks + 1;
      $lngAttendees = $lngAttendees + $db->f("Attendees");

      $strNickName = urldecode($db->f("NickName"));
      echo $strNickName . "&nbsp;(" . $db->f("Attendees") . ")<br />";
   }

   echo "<br />Gesamt: ".$lngNicks." Teilnehmer mit ".$lngAttendees." Personen. Es werden nur Teilnehmer mit best&auml;tigter E-Mail-Adresse aufgef&uuml;hrt.";
?>
(idnewsgroup 13 ist die hartcodierte Angabe für "Teilnehmer", nun ja)

Das SQL-Statement ist so gewaltig, da die Newsletter-Empfänger und die FEUser via E-Mail-Adresse (beim FEUser als Name) verknüpft und gleichzeitig zwei Properties ausgegeben werden sollten (nickname und Anzahl der Teilnehmer). Auch das würde ich heute anders gestalten...

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net

Uwe
Beiträge: 258
Registriert: Mo 30. Jun 2003, 16:05
Wohnort: Konstanz
Kontaktdaten:

Beitrag von Uwe » Mi 8. Mär 2006, 12:46

Hallo,

hier der Uwe noch mal.

Nun habe ich zwei Anwendungen umzusetzen, in denen das gefragt ist. Gibt es denn schon eine Lösung (Ausgabe und bearbeitung der Daten von FEUser). Ich bin immer noch interessiert.

Viele Grüsse, Uwe

HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB » Mi 8. Mär 2006, 15:02

Und was hier drüber steht und der Hinweis auf die Frontend-User-Plugins genügt nicht als Ansatz?

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net

Uwe
Beiträge: 258
Registriert: Mo 30. Jun 2003, 16:05
Wohnort: Konstanz
Kontaktdaten:

Beitrag von Uwe » Sa 11. Mär 2006, 16:37

HerrB hat geschrieben:Und was hier drüber steht und der Hinweis auf die Frontend-User-Plugins genügt nicht als Ansatz?
Lieber HerrB,

ich muss gestehen, dass ich hier mit meinem Latein am Ende bin :oops:

Plugins habe ich angelegt und es funzt auch. Was mir fehlt ist die Ausgabe der Liste der FE-User als Tabelle und die Bearbeitung des eigenen Profils. Gerne würde ich Deine Unterstützung annehmen. Wenn Du willst, gebe ich Dir die Zugangsdaten zu dem Projekt, dass Du einen Überblick gewinnst und mir sagen kannst, was es kosten würde...

Viele Grüsse, Uwe

HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB » Sa 11. Mär 2006, 21:29

Schicke er PM... Braucht aber.

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net

Uwe
Beiträge: 258
Registriert: Mo 30. Jun 2003, 16:05
Wohnort: Konstanz
Kontaktdaten:

Beitrag von Uwe » So 26. Mär 2006, 18:15

Hallo HerrB (natürlich nicht nur HerrB),

ich habe mir die Liste mal angesehen und auf meine Anwendung umgestrickt. Und es funktioniert auch. Das habe ich schon mal:

Code: Alles auswählen

<?php
$db = new DB_Contenido;
$sql = "SELECT value, itemid FROM " .
	  $cfg["tab"]["properties"] .", ".
	  $cfg["tab"]["frontendusers"] . "
	  WHERE ".$cfg["tab"]["properties"].".itemid = ".$cfg["tab"]["frontendusers"].".idfrontenduser AND active = '1'";

$db->query($sql);

while ($db->next_record()) {
	$strg_value = urldecode($db->f("value"));	
	echo $strg_value." - ";
	echo "<br>";	
}
?>
Nun meine Frage: wie schaffe ich es, dass alle Daten mit einer ID auch in einer Zeile landen?

Viele Grüsse, Uwe

HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB » So 26. Mär 2006, 19:05

So, mal eine Hilfe:

Dieses Modul-Bruchstück gibt alle Frontend-Accounts (mit AIM-Nummer) einer bestimmten Gruppe aus. Die Gruppen-ID ist z.Z. manuell aus dem Backend zu ermitteln und im Code einzutragen (die 5 bei $oFEUsers->setWhere("FrontendGroupMemberCollection.idfrontendgroup", 5);).

Code: Alles auswählen

<?php
cInclude('classes', 'class.frontend.users.php');
cInclude('classes', 'class.template.php');

$oTpl = new Template;
$oTpl->reset();

$oFEUsers = new FrontendUserCollection;
$oFEUsers->link("FrontendGroupMemberCollection");
$oFEUsers->setWhere("FrontendGroupMemberCollection.idfrontendgroup", 5);
$oFEUsers->setOrder("FrontendUserCollection.username");
$oFEUsers->query();

while ($oFEUser = $oFEUsers->next()) {
   $oTpl->set('d', 'NAME',  $oFEUser->get("username"));
   $oTpl->set('d', 'AIM',   $oFEUser->getProperty("aim", "address"));
   
   $oTpl->next();
}

echo $oTpl->generate('templates/feuser_list.html');
?>
Das dazugehörige Template sieht so aus (Style -> HTML Editor, Name: feuser_list.html):

Code: Alles auswählen

   <table>
<!-- BEGIN:BLOCK -->
      <tr>
         <td>{NAME}</td>
         <td>{AIM}</td>
      </tr>
<!-- END:BLOCK -->
   </table>
Die notwendigen Angaben zu anderen Property-Feldern ($oFEUser->getProperty("aim", "address")) kann man dem Code der Plugin-Verzeichnisse entnehmen.

Noch ein Hinweis zum Eintragen bei Anmeldung via Newsletter-Anmeldung findet sich hier:
http://www.contenido.org/forum/viewtopi ... 5109#75109

Viel Erfolg.

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net

Uwe
Beiträge: 258
Registriert: Mo 30. Jun 2003, 16:05
Wohnort: Konstanz
Kontaktdaten:

Beitrag von Uwe » So 26. Mär 2006, 19:44

Danke HerrB. Sieht so aus, als ob ich nach Jahren wiedermal PHP und MySQL programmieren (lernen) muss. :roll:

Viele Grüsse vom Bodensee, Uwe

Uwe
Beiträge: 258
Registriert: Mo 30. Jun 2003, 16:05
Wohnort: Konstanz
Kontaktdaten:

Beitrag von Uwe » Mo 27. Mär 2006, 10:50

Uwe hat geschrieben:Danke HerrB. Sieht so aus, als ob ich nach Jahren wiedermal PHP und MySQL programmieren (lernen) muss. :roll:
Mit diesen tollen Funktionen muss man ja (fast) nicht meht programmieren können ;)
Da gibts so tolle Sachen und man weiss das garnicht ...

Uwe
Beiträge: 258
Registriert: Mo 30. Jun 2003, 16:05
Wohnort: Konstanz
Kontaktdaten:

Beitrag von Uwe » Do 30. Mär 2006, 11:47

Hallo,

Vielen Dank für das Beispiel, hat super funktioniert. Nun bin ich an der Aufgabe Daten bearbeiten. Hier habe ich das Problem, dass ich nicht weiss, wie man die Daten aktualisiert. Das wird vermutlich in das form-Tag eingetragen. Wenn Du mir da noch einmal helfen könntest :oops:

Das habe ich: Die Daten des eingeloggten Users werden in einem Formular angezeigt.

Code: Alles auswählen

<?php
cInclude('classes', 'class.frontend.users.php');
cInclude('classes', 'class.template.php');

$oTpl = new Template;
$oTpl->reset();

$oFEUsers = new FrontendUserCollection;
$oFEUsers->link("FrontendGroupMemberCollection");
#$oFEUsers->setWhere("FrontendGroupMemberCollection.idfrontendgroup", 5);
$oFEUsers->setWhere("FrontendGroupMemberCollection.idfrontenduser", $auth->auth["uid"]);
$oFEUsers->setOrder("FrontendUserCollection.username");
$oFEUsers->query();

while ($oFEUser = $oFEUsers->next()) {
   #$oTpl->set('d', 'NAME',  $oFEUser->get("username"));	
   $oTpl->set('d', 'TITEL',   $oFEUser->getProperty("titel", "address"));
   $oTpl->set('d', 'VORNAME',   $oFEUser->getProperty("vorname", "address"));
   $oTpl->set('d', 'NACHNAME',   $oFEUser->getProperty("nachname", "address"));
   $oTpl->set('d', 'STRASSE',   $oFEUser->getProperty("strasse", "address"));
   $oTpl->set('d', 'POSTLEITZAHL',   $oFEUser->getProperty("postleitzahl", "address"));
   $oTpl->set('d', 'ORT',   $oFEUser->getProperty("ort", "address"));
   $oTpl->set('d', 'GEBOREN',   $oFEUser->getProperty("geboren", "address"));
   $oTpl->set('d', 'TELEFON',   $oFEUser->getProperty("telefon", "address"));
   $oTpl->set('d', 'FAX',   $oFEUser->getProperty("fax", "address"));
   $oTpl->set('d', 'MOBIL',   $oFEUser->getProperty("mobil", "address"));
   $oTpl->set('d', 'EMAIL',   $oFEUser->getProperty("email", "address"));
   $oTpl->set('d', 'HOMEPAGE',   $oFEUser->getProperty("homepage", "address"));   
   
   $oTpl->next();
}
?>
<form method="post" action="<?php echo "front_content.php?idcatart=".$idcatart; ?>" name="frontend_save_user" id="frontend_save_user">
<?php
echo $oTpl->generate('templates/feuser-edit.html');
?>
</form>
Das ist das Template:

Code: Alles auswählen

<table width="" height="" cellpadding="3" cellspacing="0" border="0">
<!-- BEGIN:BLOCK -->	
		<tr><td class="textklein"><strong>Titel</strong></td><td class="textklein"><input type="text" name="Titel" id="titel" value="{TITEL}"></td></tr>
		<tr><td class="textklein"><strong>Vorname</strong></td><td class="textklein"><input type="text" name="Vorname" id="vorname" value="{VORNAME}"></td></tr>
		<tr><td class="textklein"><strong>Nachname</strong></td><td class="textklein"><input type="text" name="Nachname" id="nachname" value="{NACHNAME}"></td></tr>
		<tr><td class="textklein"><strong>Postleitzahl</strong></td><td class="textklein"><input type="text" name="Postleitzahl" id="postleitzahl" value="{POSTLEITZAHL}"></td></tr>
		<tr><td class="textklein"><strong>Ort</strong></td><td class="textklein"><input type="text" name="Ort" id="ort" value="{ORT}"></td></tr>
		<tr><td class="textklein"><strong>Strasse / Nr.</strong></td><td class="textklein"><input type="text" name="Strasse" id="strasse" value="{STRASSE}"></td></tr>
		<tr><td class="textklein"><strong>Geburtsdatum</strong></td><td class="textklein"><input type="text" name="Geboren" id="geboren" value="{GEBOREN}"></td></tr>
		<tr><td class="textklein"><strong>Telefon</strong></td><td class="textklein"><input type="text" name="Telefon" id="telefon" value="{TELEFON}"></td></tr>
		<tr><td class="textklein"><strong>Fax</strong></td><td class="textklein"><input type="text" name="Fax" id="fax" value="{FAX}"></td></tr>
		<tr><td class="textklein"><strong>Mobil</strong></td><td class="textklein"><input type="text" name="Mobil" id="mobil" value="{MOBIL}"></td></tr>
		<tr><td class="textklein"><strong>Email</strong></td><td class="textklein"><input type="text" name="eMail" id="email" value="{EMAIL}"></td></tr>
		<tr><td class="textklein"><strong>Homepage</strong></td><td class="textklein"><input type="text" name="Homepage" id="homepage" value="{HOMEPAGE}"></td></tr>
		<tr><td colspan="2" align="right"><input type="submit" value="speichern"/></td></tr>
<!-- END:BLOCK -->
</table>
Ich hoffe, ich bin nicht zu penetrant ...

Viele Grüsse aus Konstanz, Uwe

Gesperrt