Adressen in Plone
.
Einstieg verpasst? sonst weiter mit Step 1
.
Step 1
Voraussetzung: Du hast Zope installiert. Installiere zusaetzlich die Produkte AbracadabraObject, PropertyTools (ehmals: PropertyFolder und PropertyObject). Alle hier zu finden. Für dieses HowTo brauchst du ausserdem noch ein installiertes Plone und das CMFDynamicDocument um auch in Plone endlich mit TAL arbeiten zu können!!
Dann logge dich ueber einen Browser ein (z. B. localhost:8080/manage). Du befindest dich dann im ZMI (Zope Management Interface). Geh zu deinem Plone-Portal,
- suche in dem Menü "Folder" aus und lege den Folder daten an (Add).
- Klicke deinen neuen Ordner daten an und erzeuge in ihm einen weiteren Ordner Namens anschriften
- ...und geh anschliessend in den Ordner anschriften (anklicken)
Step 2
Du solltest jetzt in der Ansicht "../daten/anschriften" sein.
- Klick auf den Reiter oben im Menü "Properties" (Eigenschaften)
Step 3
In der Property-Ansicht des Ordners "../daten/anschriften" legen wir eine weitere Eigenschaft an:
- Name ist groups_ <-- ja mit Unterstrich
- Type ist lines
- Value leer lassen und "Add"
Step 4
In dem neu erstellten Property (Eigenschaft) gibst du jetzt die spaeteren Sortierkreterien ein
- GruppeA
- GruppeB
- GruppeC
-
GruppeD
- dann noch ein: save changes
- und zurueck auf den Reiter im Menue: "Contents"
- In dem Bild ist uebrigens ein Fehler. Der Cursor steht unter "GruppeD". Solche Leerzeilen sind zu vermeiden! ;)
Step 5
Wir sind wieder im "Contents"-Reiter des Ordners "..daten/anschriften" und
- ..legen einen weiteren Ordner an.
Step 6
Die uns inzwischen bekannte "Add Folder Eingabe" erscheint...
- Id (Name des Ordners): standard_object_folder
- und "Add" ;-)
- dann gehe in den standard_object_folder (click...)
- und lege ein PropertyObject an
- mit der ID "contact"
- dann wieder ein "Add", und du befindest dich in der "Properties" Ansicht
Step 7
Hier geben wir die gewuenschten Felder ein, die wir fuer ein Adressbuch brauchen...
- Name ist Name
- (achtung klein und grosschreibung beachten (name klein geschrieben hat noch mal eine sonderbedeutung!))
- type ist string
- value leerlassen
- "Add"
Step 8
Lege jetzt die unten aufgeführten "Strings" an. Der Letzte gehoert_zur_Gruppe wird vom Typ "Multiple Selection"! und Value = "groups_" erinnerst du dich noch an "groups_"? aber erst mal weiter :-) es wird wirklich(!) leichter, wenn man es zweimal versucht hat :-))
- Name als string
- Vorname als string
- eMail_1 als string
- eMail_2 als string
- telefon als string
- mobil als string
- gehoert_zur_Gruppe als Typ: multiple selection !!! und Value: groups_
Step 9
so sollte dein screen jetzt aussehen....
- Klick zur sicherheit noch mal auf "save changes" !
- Danach zurück zu dem "../daten/anschriften" - Folder
Step 10
Bist du noch richtig? Wir befinden uns jetzt wieder im Ordner "../daten/anschriften" ... und legen zur Abwechslung mal einen Ordner an! :)
- Diesmal PropertyFolder auswaehlen und "Add"
- mit der ID: personen
- anschliessend gehst du in den Ordner personen
- und waehlst dort nun das "AbracadabraObject" aus! :-) -->*Add
- Als Object: waehlen wir "contact" aus (na? clickert es? Noch nicht? OK, weiter! :))
- ID: henni
- "Add und Edit Properties"
Step 11
MAGIC - ABRACADABRA
Du siehst ein (noch nicht so schoenes Eingabefenster) aber das aendern wir noch spaeter. Erst muss das Grundgeruest stehen, bevor die Goldkante kommt
- lege so die erste Person an
- und save changes nicht vergessen
Step 12
Du bist im Ordner "../daten/anschriften/personen" und ein "Datensatz" ist angelegt.
- Lege nun ein paar Personen an. 5 bis 6 reichen fuer dieses Howto
- vergebe unterschiedliche Gruppenzugehoerigkeiten (Mehrfachauswahl mit Ctrl(Strg)+Maus moeglich, bzw. fuer Apple User: Apfel+Maus)
- -->abracadabraObject-->id=eindeutiger name--->edit properties--> ausfuellen und save nicht vergessen.
Zurueck in den ordner und wieder von vorne. bis du 5 bis 6 angelegt hast. (Das wird auch noch komfortabler. keine Angst. wir sind aber immer noch am Geruest:)
danach sollte dein Ordner ungefaehr so aussehen, und wir gehen nun zurueck zum Ordner "../daten/anschriften"
Hinweis: Die Icons dort sind keine PropertyObjects. Screenshot muss noch ausgetauscht werden.
Step 13
Wir legen im Ordner Anschriften nun ein Python-Script an.
- ID = getpersonal
Hinweis: Der Ordner "personen" ist im Screenshot noch kein PropertyFolder. Screenshot muss noch ausgetauscht werden.
Step 14
Bei Parameter List fügen wir den Wert whichMember ein und ...
...geben dann nachfolgenden Code ein:
# Import a standard function, and get the HTML request and response objects.
from Products.PythonScripts.standard import html_quote
request = container.REQUEST
RESPONSE = request.RESPONSE
result = []
if whichMember == None:
result = context.anschriften.personen.objectValues('PropertyObject')
else:
for personen in context.anschriften.personen.objectValues('PropertyObject'):
for memberType in personen.gehoert_zur_Gruppe:
if whichMember == memberType:
result.append(personen)
return sequence.sort(result,(('Name', 'cmp'),))
Step 15
Um das ganze zu testen, klickst du auf den Reiter Test und gibst dort zum Beispiel GruppeA ein.
Das Ergebnis sieht dann etwas seltsam aus, aber wir sehen, dass es funktioniert:
Step 16
Nun wollen wir das ganze in Plone darstellen und gehen dazu in die Oberfläche von Plone zur Redaktionsansicht (Ordneransicht).
Dort legen wir nun ein DynamicDocument an, welches uns erlaubt innerhalb Plones auch endlich TAL zu nutzen!!!
-
ID = personal
Step 17
Name | Vorname | Email 1 | Email 2 | Telefon | mobil | Gehoert zur Gruppe |
---|---|---|---|---|---|---|
tal:omit-tag=""> |
Step 18
So sollte Dein Adressbuch nun innerhalb Plone aussehen:
Oder die Ansicht aller der GruppeA zugehörigen Datensätze:
Konstruktive Kritik an
Erklärungen
Warum habe ich bei Step 3 geschrieben:
- Name ist groups_ <-- ja mit Unterstrich ?
- Es ist einfach eine Angewohnheit, die du übernehmen solltest. In dem Bereich ist es nicht schlecht die Properties zu kennzeichnen. Damit "kennzeichne" ich alle meine Values - und muss nicht noch mal nachgucken, wie ich das doch gleich benannt hatte.... Lese Step 3 und Step 8 noch mal und du weisst, was ich meine.
Bei Step 7 schrieb ich:
- Name ist Name (achtung klein und grosschreibung beachten (name klein geschrieben hat noch mal eine sonderbedeutung!))
Ja welche denn... Ich habe "Name" gross geschrieben, weil "name"-klein geschrieben irgendwie schon besetzt ist :-)
Beispiel: Wenn ich DTML nutzen wuerde (was wir in diesem HowTo nicht tun) und ich schreiben wuerde:
wird die Liste alphabetisch sortiert. Ich bekäme einen Fehler, wenn ich bei Step 7 "name" nutzen wuerde