Mit Drupal lassen sich nahezu alle erdenklichen Webprojekte umsetzen. Hauptsächlich wurde Drupal jedoch als Baukasten (CMS) für Communities entwickelt und gerade in diesem Bereich sind ettliche Module von Mitgliedern der Community veröffentlich worden. Mit dem überaus mächtigen Modul CCK, welches mit Drupal 7 auch in den Core integriert wurde lassen sich Nodes um Felder jeder Art erweitern. So kann jeder Node mit zusätzlichen Textfeldern Bild- und Dateiupload Feldern, Checkboxen etc. erweitert werden, was Drupal ein Höchstmaß an Flexibilität verleiht.
Da wir in einem vergangenen Intranet - CRM-Projekt Personen und Adressen mit CCK als Contenttypen abgebildet haben, kam die Anforderung auf, anhand bestimmter Felder eines Inhaltstypen zu Prüfen, ob solch ein Node bereits existiert oder nicht. Wichtig war auch, dass Tippfehler erkannt wurden. Es gibt bereits ein Modul, mit dem man definieren kann, welche Felder eindeutig sein müssen (habe ich auch erst gefunden, nachdem ich mein Modul dazu fertig hatte - http://drupal.org/project/unique_field) aber da diese Modul keine Schreibfehler bei der Überprüfung erkannte, konnten wir es leider nicht verwenden.
Bereits in einem etwas älteren Blogbeitrag hatte ich ein eigenes Modul vorgestellt, welches die Autocomplete-Funktion der Drupal Taxonomie (Terms) erweitert. Dort verwenden wir "Phonem" um auf Tippfehler beim Vergleichen der Usereingabe mit bereits verwendeten Tags auszuklammern. So wird z.B. das Wort "Weihnachten" auch erkannt, wenn man "Weinachten" eingibt und dem User vorgeschlagen. Und genau dieses Verhalten sollte auch in unserem CRM bei z.B. den Namen der Personen auftreten. Verglichen werden soll anhand des Vornamen und des Nachname. Wenn beide als gleich erkannt werden, gibt es einen Hinweis für den Benutzer. Der User kann sich dann aussuchen, ob er den Eintrag dennoch abspeichern möchte oder nicht.
Hier kurz eine Featureliste des Drupal-Moduls (ich habe es bs_uniquenode) getauft:
- Feldweise Einstellung, ob das Feld verglichen werden soll oder nicht
- Feldvergleich mit Phonem
- Feld- / Nodevergleich nur in den Nodes des aktuellen Users
- Feldvergleich nur in Nodes des gleichen Nodetypes (ein CCK Feld kann ja mehreren Nodetypen zugewiesen sein)
- Automatischer Aufbau eines Phonem-Indexes für bereits existierende Nodes im Hintergrund per Cron-Aufruf (die nachträglich mit diesem Modul auf Gleichheit geprüft werden sollen)
- Vergleich des Node Titles
- Erzwingen von eindeutigen Werten eines Feldes oder Benutzer Fragen, wie er fortfahren möchte
Alle Einstellungen werden direkt entweder im Inhaltstyp vorgenommen (wenn es um den Titel geht, da dieser ja kein CCK Feld ist) oder individuell in den Feldeinstellungen eines CCK Feldes.
Man kann ebenfals einstellen, ob ein Node immer eindeutig sein muss, oder ob der User entscheiden darf, was passieren soll, wenn ein Node oder ein ähnlicher Node bereits in der Datenbank existiert. So bekommt der Benutzer eine Checkbox angezeigt mit allen Nodes, die bs_uniquenode als bereits vorhanden erkannt hat, kann diese Nodes prüfen und ggf. die Checkbox anhaken, um den Node dennoch zu speichern.
Das Modul gibt es direkt hier:
Über Anregungen, Kritik und Verbesserungsvorschläge freue ich mich natürlich wie immer.
| Anhang | Größe |
|---|---|
| bs_uniquenode.zip | 8.82 KB |










Kommentar hinzufügen