Benutzer mit Zusatzfeldern aus node erstellen und Werte übergeben
am 26.10.2012 - 12:27 Uhr in
Hallo,
ich suche mir gerade einen Wolf für folgendes Problem:
ich habe einen Inhaltstyp, der auch bestehende Benutzer referenzieren soll (user reference). Nun kann es aber sein, dass es den gewünschten Kontakt noch nicht im System gibt. Der "normale" Seitebesucher DARF aber keine Benutzer anlegen - weshalb ich für diesen Fall die ganzen Kontaktfelder für die Eingabe mit in den Inhaltstyp gepackt habe. Durch die Verwendung eines fieldset kann man diese Felder dann anzeigen, wenn man sie auch braucht.
Meine Frage ist nun: ich würde gerne in der Ansicht des zuvor erstellten Inhalts einen Button / Link erstellen, der mir die ausgefüllten Felder automatisch in einen Benutzer konvertiert. Wichtig ist mir dabei, dass auch die Zusatzfelder für das Benutzerprofil (erstellt über die core-Feldfunktion) mit ausgefüllt werden.
Geht das auch ohne das Prepopulate Modul (da wird mir die URL wohl zu lang, da ich ca. 12 Felder zu übergeben habe ...)??
Viele Grüße
- Anmelden oder Registrieren um Kommentare zu schreiben
Feeds
am 26.10.2012 - 13:23 Uhr
Wenn ich das richtig verstanden habe, könnte ich mir vorstellen, dass es über den User-Import des Feeds-Moduls gehen könnte.
Hi Oteno, Danke für den Tipp.
am 26.10.2012 - 13:59 Uhr
Hi Oteno,
Danke für den Tipp. Wäre eigentlich nicht schlecht - ich kann hier aber keinen solchen Automatismus einrichten, da wir selber entscheiden müssen, ob tatsächlich ein neuer User angelegt wird oder nicht. Oder kann ich über eine Knopf feeds anstoßen, dass er die Daten aus dem aktuellen node übernimmt?
Viele Grüße und ein schönes Wochenende
Das müsste schon gehen. Ich
am 26.10.2012 - 14:08 Uhr
Das müsste schon gehen. Ich könnte mir z.B. auch vorstellen, dass man über ein Optionsfeld und View, die Nodes auswählt aus denen man User importieren will und dann einen Import-Lauf macht.
feeds bisher kein voller Erfolg
am 09.11.2012 - 10:00 Uhr
Hallo,
also das mit den Feeds ist bei mir keine gute Lösung. Ich muss normalen Benutzern die Möglichkeit geben, die Daten aus dem node in einen Benutzer zu konvertieren. Da ist das mit den Feeds einfach zu kompliziert - Schade eigentlich, denn es ist an sich eine schöne Lösung. Ich bräuchte aber irgendwie die Möglichkeit die Konvertierung über einen Knopf (z.B. in einem Seitenblock) direkt aus dem node anzustoßen. Der User soll dabei auch wirklich nur die aktuell angezeigten Daten konvertieren können.
In Drupal 6 konnte man da ja mit URL-Parametern und dem $GET in den Standardfeldwert-Einstellungen arbeiten. Geht das nicht doch auch irgendwie in Drupal 7?
Irgedwie verstehe ich es
am 09.11.2012 - 10:16 Uhr
Irgendwie verstehe ich es nicht ganz. Oben steht:
Der "normale" Seitebesucher DARF aber keine Benutzer anlegen
unten steht:
Ich muss normalen Benutzern die Möglichkeit geben, die Daten aus dem node in einen Benutzer zu konvertieren
Wer darf jetzt Benutzer anlegen?
Du hast recht, das ist
am 09.11.2012 - 11:56 Uhr
Du hast recht, das ist missverständlich:
also, es gibt Gäste, die dürfen einen node anlegen, der auch Kontaktdaten enthält. Diese node müssen von einem Kernteam freigegeben werden. Dieses Kernteam besteht aus "normalen" (in Bezug auf das Know-How) Benutzern. Das Kernteam soll prüfen, ob die angegebene Adresse bereits im user-Bereich angelegt wurde. Wenn nicht, dann soll das Kernteam im node auf einen Button klicken, um die vom Gast angegebenen Adressdaten in einen User zu konvertieren.
Ich fürchte, dass der feeds-Weg für die meisten Benutzer aus dem Kernteam zu kompliziert wird, zumal da nicht ständig mit gearbeitet wird (ich denke, da kommen momentan nur ca. 10 nodes pro Monat rein ...).
Du könntest, dann eine
am 09.11.2012 - 12:06 Uhr
Du könntest, dann ein Optionsfeld miteinfügen, mit dem das Kernteam den User für einen Account freigibt, für den Feed kannst Du nach diesem Kriterium filtern, den Rest macht dann cron.
Hi, habe das ganze gelöst.
am 22.11.2012 - 10:07 Uhr
Hi, habe das ganze gelöst. Vielen Dank für die Denkanstöße! Ich habe es nun nicht mit feeds, sondern mit rules gelöst. Das Optionsfeld war dafür ein wichtiger Tipp!
Viele Grüße
Hallo vistree, könntest Du
am 22.11.2012 - 10:17 Uhr
Hallo vistree, könntest Du noch kurz beschreiben, wie, und dann den Beitrag als [gelöst] markieren?
[gelöst]
am 22.11.2012 - 11:17 Uhr
Klar kann ich:
System: Drupal 7
Also, ich habe einen Inhaltstyp (Antrag), in dem auch Kontaktdaten erfasst werden (s.o.). Dabei habe ich u.a. die folgenden Pflichtfelder definiert (dürfen nicht leer sein!)
Vorname, Nachname und E-Mail-Adresse
Bei Bedarf sollen diese Kontaktdaten in einen User konvertiert werden.
Dazu gibt es in dem Inhaltstyp ein Text-Listenfeld (field-adresse-konvertieren) mit genau einer Option: konvertieren. Das Feld ist auf "unendliche Werte" eingestellt, damit man eine checkbox bekommt, die man an- und abwählen kann. Dieses Feld ist nur für das Team sichtbar (über Workflow-Fields realisiert).
In dem Inhaltstyp gibt es schließlich noch ein userreference-Feld (field_ansprechpartner), der einen bestehenden Benutzer oder den neu angelegten Benutzer referenzieren soll. Dieses Feld ist nur für das Team sichtbar (über Workflow-Fields realisiert).
Nun habe ich in rules eine neue Regel angelegt, mit dem Event: Nach dem Aktualisieren bestehenden Inhalts
Dazu dann verschiedenen Bedingungen:
a) Inhalt hat den Typ: Antrag
b) Datenvergleich:
Daten zum Vergleich: node:field-adresse-konvertieren:0
Operator: gleich
Datenwert: konvertieren
c) Eigenen PHP-Code ausführen: (um zu prüfen, ob bereits ein Benutzer mit dem Namen aus den Feldern Vorname + Leerzeichen + Nachname exitiert - sonst gibt es Fehlermeldungen!!!!)
PHP-CODE:
<?php
$name = '[node:field-vorname] [node:field-name]';
$user = user_load_by_name($name);
if(!$user){
return TRUE;
}
else {
return FALSE;
}
?>
Dann habe ich noch folgende Aktionen angelegt:
a) Erstellen Sie eine neue Entität:
Element-Typ: Benutzer
Name: [node:field-vorname] [node:field-name]
E-Mail: [node:field-e-mail]
b) Einen Wert setzen (das muss man für alle gewünschten Benutzerfelder wiederholen!):
Daten: entity-created:field-vorname
Wert: [node:field-vorname]
c) Entität speichern (da man sonst noch nicht auf die Benutzer-UID zugreifen kann, die ich für d) brauche)
Entität: entity-created
Bei "Sofort speichern" einen Haken
d) Eigenen PHP-Code ausführen (um das userreference-Feld field_ansprechpartner auf den zuvor angelegten Benutzer zu setzen)
PHP-CODE:
<?php
$node->field_ansprechpartner[und][0]['uid'] = $entity_created->uid;
?>
e) Einen Wert setzen (um den Haken im Originalnode bei konvertieren entfernen)
Daten: node:field-adresse-konvertieren
Wert: leer lassen
Das war es. Das ganze lässt sich sicherlich noch verfeinern und erweitern.