[gelöst] Daten aus Userprofil automatisch übernehmen
am 22.02.2012 - 14:05 Uhr in
Moin!
Ich versuche im Moment mit Drupals CCK und Views eine zentrale Verwaltung für dezentrale Datenbestände aufzubauen. Diese sollen in den Views später nach Standorten gefiltert werden können. Den Benutzerprofilen habe ich ein neues Feld "Standort" beigefügt. Der Inhalt soll jetzt automatisch jedem neu erstellten Datensatz des Benutzers beigefügt werden, damit es nur einmal beim Benutzerprofil und nicht ein paar hundertmal beim Eintragen der Datensätze eingetippt werden muss.
Also im neu erstellten Inhaltstyp "Eingabe" neben den übrigen benötigten Feldern ebenfalls ein Feld "Standort". Nur soll dieses nicht mit angezeigt werden, sondern im verborgenen mit den Daten aus dem im Benutzerprofil vorhandenen Feld gefüttert werden.
Leider habe ich bisher keine Möglichkeit gefunden, genau dies zu realisieren. Oder denke ich da zu festgefahren und der Weg wäre ein anderer? Bin für Denkanstösse dankbar. ;)
LG, Sven
- Anmelden oder Registrieren um Kommentare zu schreiben
Rules
am 24.02.2012 - 08:07 Uhr
Das geht mit Rules:
---------aus dem Rules-Interface kopiert-----------
Create a new entity
Parameter: Entity type: Node, Inhaltstyp: Eingabe, Titel: [account:profile-standort-profil…, Autor: [site:current-user]
Provides variables: ...
Save entity
Parameter: Entity: [eingabe], Force saving immediately: true
Page redirect
Parameter: URL: [eingabe:edit
--------------Zitat Ende-----------------------------------
"Eingabe" ist ein selbst definierter Inhaltstyp.
Hinter "account:profile-standort-profil… verbergen sich die Daten aus dem User-Profil. Dieses ist mit Profil2 ebenfalls selbst angelegt und heißt "Standort".
3 Dinge passieren:
1. Entity (=Node) wird angelegt, dabei werden Daten aus dem Benutzer-Profil eingefügt
2. Entity speichern
3. User auf die Edit-Seite der Entity umlenken, damit er seine weiteren eingaben machen kann.
Web und Text mit Hand und Fuß
Vielen Dank ...
am 23.02.2012 - 16:42 Uhr
... für Deine Ausführungen. Da muss ich mich nochmal intensiv mit beschäftigen. Im Moment verstehe ich grösstenteils Bahnhof. Aber jetzt habe ich zumindest eine Richtung. Also werde ich mir mal ein paar Tutorials zum Thema Rules raussuchen und durcharbeiten. Dann verstehe ich vielleicht auch Deine Ausführungen. :O
LG, Sven
sskibba schrieb ... für Deine
am 23.02.2012 - 20:16 Uhr
... für Deine Ausführungen. Da muss ich mich nochmal intensiv mit beschäftigen. Im Moment verstehe ich grösstenteils Bahnhof. Aber jetzt habe ich zumindest eine Richtung. Also werde ich mir mal ein paar Tutorials zum Thema Rules raussuchen und durcharbeiten. Dann verstehe ich vielleicht auch Deine Ausführungen. :O LG, Sven
Zum Thema rules bietet die Learning Library von nodeone eigentlich genügend "Lernstoff":
http://dev.nodeone.se/en/learning-library?field_nc_learning_version_tid=...
Da lohnt es sich mal durchzuscrollen ;)
SteffenR
http://www.twitter.com/_steffenr
Drupal-Initiative e.V.
Gute Quelle
am 23.02.2012 - 21:59 Uhr
Ja, das habe ich auch schon gefunden. Trotzdem danke. Nachdem die Reihe über Views schon sehr lehrreich war, werde ich mich da morgen drauf stürzen. Nach allem was ich bisher so erarbeitet habe, scheint das Drupal-Mantra des Johan Falk bestehend aus Views, Rules und Page Manager auch für meine weitere Arbeit mit Drupal existentiell zu werden.
LG, Sven
sskibba schrieb ...Dann
am 24.02.2012 - 08:03 Uhr
...Dann verstehe ich vielleicht auch Deine Ausführungen.
Sorry, meine Stichworte waren wirklich arg knapp. Hab's überarbeitet um es etwas klarer zu machen. Klick einfach mal im Rules-Interface rum, dann wirst du schnell verstehen, wie diese Regelsätze aufgebaut sind. Oder frag nochmal konkreter nach.
Web und Text mit Hand und Fuß
Kein Problem
am 24.02.2012 - 10:34 Uhr
Damit wollte ich auch nur erläutern, warum der Thread nicht 5 min nach Deiner Antwort auf gelöst stand. Sollte keine Kritik an Deiner Hilfestellung sein. Wie gesagt, mir fehlten da doch einige Grundlagen.Hole ich ja gerade alles nach und werde wohl spätestens am Wochenende dazu kommen Deine hilfreiche Antwort umzusetzen und dann demenstprechend hier ein [gelöst] vorzusetzen. Jedenfalls noch einmal vielen Dank für den Schubs in die Richtung des Rules-Modules. Genau das, was ich für die Lösung der weiteren Problemstellungen bei meinem Projekt benötige.
LG, Sven
Kann doch so schwer nicht sein
am 25.02.2012 - 13:07 Uhr
Sollte man zumindest meinen ;) Bei mir hakt es leider immer noch.
Ich habe in einer Testumgebung Drupal 7.12 DE neu aufgesetzt und folgende Module deaktiviert:
Dashboard, Overlay, Toolbar
Dafür folgende aktiviert:
Administration menu, Administration menu Toolbar style, Entity API, Entity tokens, Localization Update, Masquerade, MenuBlock, Module filter, Rules, Rules UI, Rules Scheduler, Token, Views, Views UI
Als erstes füge ich unter Configuration>People>Account settings>Manage fields ein neues Benutzerfeld "Standort" hinzu. Dann wir ein TestUser angelegt, Standort ist München.
Danach füge ich einen neuen content type "Eingabe" hinzu. Die Felder sind Titel, Hersteller, Produktname, Seriennummer und Standort als Field-Alias.
Link "Eingabe" im Hauptmenü auf node/add/eingabe.
Berechtigungen für neuen content type setzen.
Jetzt wird eine neue Rule erzeugt:
Event: Before saving content
Condition: Content is of type Parameter: Content: [node], Content types: Eingabe
Actions:
1: Create a new entity
Parameter: Entity type: Node, Content type: Eingabe, Title: [node:author:field-standort], Author: [site:current-user]
Provides variables: Eingabe (eingabe)
2: Save entity
Parameter: Entity: [eingabe], Force saving immediately: true
3: Page redirect
Parameter: URL: [eingabe:edit-url]
Wenn ich jetzt über Masquerade auf den TestUser switche und auf den Menüpunkt Eingabe gehe, wir mir die Eingabemaske ganz normal leer angezeigt. Erst wenn ich diese abspeicher erscheint eine neue Eingabemaske mit "München" als vorausgefüllter Titel. Irgendwie nah dran und doch meilenweit von dem gewünschten Ergebnis entfernt. Eigentlich soll er ja direkt beim Aufruf von node/add/eingabe die Aktionen der Rule durchlaufen und "München" bei Standort und nicht als Titel eintragen. Was mache ich falsch?
LG, Sven
sskibba schrieb...Was mache
am 25.02.2012 - 20:13 Uhr
...Was mache ich falsch?
Falscher Trigger. Ich habe dafür eine Lösung gebaut, die zwar nicht elegant ist, aber funktioniert:
Event: Content is viewed
Condition: Title=neue_standort_info
Actions: Entity erzeugen, mit vorgegebenen Infos befüllen, speichern, User zur Edit-Seite des neuen Contents weiterleiten.
Dazu habe ich eine Einfache Seite mit dem Titel "neue_standort_info" angelegt und im Menü als "Neue Standort-Info" verlinkt. Diese Seite soll nie angezeigt werden, sie dient nur als Trigger.
Ich fände einen eleganteren Trigger nett, aber wie gesagt: so geht's.
Wie du die Info "Standort" jetzt an die richtige Stelle kriegst, dazu fällt mir grad nix ein...
Falls noch was hakt, frag nach.
Achim
Web und Text mit Hand und Fuß
Lösung
am 25.02.2012 - 23:21 Uhr
Manchmal hilft doch immer wieder etwas Abstand nehmen und einen neuen Blickwinkel einnehmen.
Der Tipp mit Rules war wirklich Gold wert. Hier die saubere Lösung. Eigentlich ganz einfach. Erst einmal wie gehabt:
Als erstes füge ich unter Configuration>People>Account settings>Manage fields ein neues Benutzerfeld "Standort" hinzu. Dann wir ein TestUser angelegt, Standort ist München.
Danach füge ich einen neuen content type "Eingabe" hinzu. Die Felder sind Titel, Hersteller, Produktname, Seriennummer und Standort als Field-Alias.
Link "Eingabe" im Hauptmenü auf node/add/eingabe.
Berechtigungen für neuen content type setzen.
Jetzt wird eine neue Rule erzeugt:
Event: Before saving content
Condition: Content is of type Parameter: Content: [node], Content types: Eingabe
Doch dann war es einfach zu kompliziert gedacht. Denn unter
Actions: Set a data value
Parameter: Data: [node:field-standort], Value: [node:author:field-standort]
gesetzt.
Das wars schon. Der User kann ganz normal seine Eingaben machen und das Feld Standort wird automatisch ausgefüllt. Damit der User nicht trotzdem einen eigenen Wert einträgt für das Feld über das Modul "Field Extra Widgets" das Widget auf Hidden gesetzt. Fertig!
Beteiligte Module: Rules, Field Extra Widget, Tokens (nicht wirklich notwendig, vereinfacht aber das Auffinden der richtigen Paramater)
Damit habe ich jetzt die von mir gewünschte "saubere" Lösung zu dem Problem. Vielen Dank für die Schubser auf den rechten Pfad.
Ergänzung
am 27.02.2012 - 19:05 Uhr
Eine Ergänzung noch:
Wir haben jetzt 2 Lösungen für 2 verschiedene Use Cases:
Web und Text mit Hand und Fuß