Hi,
normal ist es so, das ich bisher alle templates wie z.B. "search_for_members", "personalize_form" usw. im container plone/portal_skins/... gefunden hab und verändern konnte.
Jetzt kann man doch Ordner erstellen auf der Hauptseite von Plone und da kann man doch wählen z.B. "neuen Artikel hinzufügen" da wähle ich "Seite" aus und da öffnet sich ja so eine Seite wo ich den Titel, Beschreibung, Haupttext und referenz und so eintragen kann. Aber das Template will ich jetzt verändern, ein Feld einfügen und allgemein das Template anpassen aber wo liegt das ? Oder ist das etwas besonderes ?
mfg mitch
template vorlage für "dokument"
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hi mitch!mitch hat geschrieben:das Template will ich jetzt verändern, ein Feld einfügen und allgemein das Template anpassen aber wo liegt das? Oder ist das etwas besonderes?
Erstens -- bitte verwende einen weniger animierten und evt. auch kleineren Banner für deine Signatur.
Zweitens -- jetzt wirds komplizierter
Seit den letzten Plone-Versionen (auch Plone 2.5) werden die Standard-Contenttypen mit **Archetypes** erstellt.
Du kannst also einen eigenen Archetypes-Contenttypen erstellen, also ein eigenes Plone-Produkt programmieren und damit neue Content-Typen erstellen.
- http://plone.org/products/archetypes/do ... loperGuide
- http://plone.org/products/archetypes/do ... l/quickref
- http://www.derstappen-it.de/dokumentati ... /ch13.rst/
- (deutsch) http://docs.neuroinf.de/PloneBook/ch13.rst
Die andere Variante ist, eine Seite (Pagetemplate) über das ZMI zu erstellen. Diese Seite ist dann aber von Plone aus nicht bearbeitbar. Es ist aber die einfachste Art, benutzerdefinierte Seiten ins Plone einzufügen.
Dafür kannst du dir einfach den Code aus der Pagetemplate ``portal_skins/plone_content/document_view`` kopieren und anpassen.
Willst du einen eigenen Content-Type erstellen, damit die Plone-Benutzer ohne dein Zutun neue (benutzerdefinierte) Seiten erstellen können, dann solltest du dich mit Archetypes anfreunden. -- Allerdings ist das nicht so einfach wie das Erstellen einer einzelnen Pagetemplate.
lg
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Hi gerold,
hab mir schon so was gedacht mit archtypes...
also ich hab mir Archetypes-1.4.0-final-Bundle.tar.gz runtergeladen und in den Products ordner entpackt... aber gebracht hat es nicht viel..
Der Seite zu folge, die du mir geschickt hast ist da irgendwo ein Beispiel namens "Article.py" dabei. Das hab ich irgendwie nicht gefunden bzw. war nicht dabei. Aber das sei ja auch mal dahin gestellt... ich will ja nur dieses Dokument "Seite" bearbeiten aber ich finde einfach diesen Archtyp nicht ...
Wo kann den der sein ? Ich steh da irgendwie voll auf dem Schlauch und komm nicht weiter! Kann mir da jemand helfen?
mfg mitch
hab mir schon so was gedacht mit archtypes...
also ich hab mir Archetypes-1.4.0-final-Bundle.tar.gz runtergeladen und in den Products ordner entpackt... aber gebracht hat es nicht viel..
Der Seite zu folge, die du mir geschickt hast ist da irgendwo ein Beispiel namens "Article.py" dabei. Das hab ich irgendwie nicht gefunden bzw. war nicht dabei. Aber das sei ja auch mal dahin gestellt... ich will ja nur dieses Dokument "Seite" bearbeiten aber ich finde einfach diesen Archtyp nicht ...
Wo kann den der sein ? Ich steh da irgendwie voll auf dem Schlauch und komm nicht weiter! Kann mir da jemand helfen?
mfg mitch
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hi mitch!mitch hat geschrieben:also ich hab mir Archetypes-1.4.0-final-Bundle.tar.gz runtergeladen und in den Products ordner entpackt...
Archetypes ist bei Plone schon mit dabei. Das darfst/solltest du nicht überschreiben. Es ist besser, wenn du das wieder rückgängig machst.
lg
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hi mitch!mitch hat geschrieben:Der Seite zu folge, die du mir geschickt hast ist da irgendwo ein Beispiel namens "Article.py" dabei.
Das ändert sich ständig. Das Beispiel an sich finde ich auch nicht, aber im Ordner (im Dateisystem) ``Products\Archetypes\docs`` befindet sich die HTML-Seite ``archetypes_paper.html``. In dieser wird ein komplettes Beispiel erklärt. Mit dieser Hilfe sollte es nicht mehr so schwer sein, einen eigenen Archetypes-Contenttype zu erstellen.
lg
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hi mitch!mitch hat geschrieben:ich will ja nur dieses Dokument "Seite" bearbeiten aber ich finde einfach diesen Archtyp nicht ...
Wenn du diesen Standard-Contenttyp änderst, dann wird ein Update auf eine neue Plone-Version mehr als schwierig.
Wenn du nur die Anzeige der Daten ändern möchtest, dann ist das ein relativ simples Unterfangen. Möchtest du aber zusätzliche Daten mit der "Seite" (Page) speichern, dann müsstest du direkt in den Plone-Quellcode eingreifen. Glaube mir -- das möchtest du nicht!!!
Mit Archetypes kannst du Content-Typen erstellen, die sich gleich oder ähnlich wie der Content-Typ "Document" verhält. Damit schießt du dir nicht bei jedem Plone-Update ins Bein.
lg
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Hi,
danke gerold für deine Antworten. Hab mir schon gedacht, dass dieses unterfangen mit viel Problemen behaftet sein wird!
Okay, ich hab mir mal so ein ArchExample runtergeladen und versuche das jetzt so zu gestallten wie ich das brauche! Da muss ich zumindest kein Standard Dokument verändern!
Die Datei nennt sich Article.py ! Da versuche ich jetzt ein dropdown feld zu mache, wo alle members drin stehen! Aber das klappt nicht so wie ich will ! Ich bin ja noch ein frischling, was Archetypes angeht, vielleicht kannst du mir da auch helfen, wenn du eine Methode kennst die mir die Members ausliest! Die article.py liegt im Verzeichniss C:\programme\plone 2\data\products\archexamples\article.py falls dir/euch das hilft! Bin nur am rum probieren, weil es da kaum ordentliche aktuelle seiten drüber gibt! Das nervt mich mittlerweile!
mfg mitch
danke gerold für deine Antworten. Hab mir schon gedacht, dass dieses unterfangen mit viel Problemen behaftet sein wird!
Okay, ich hab mir mal so ein ArchExample runtergeladen und versuche das jetzt so zu gestallten wie ich das brauche! Da muss ich zumindest kein Standard Dokument verändern!
Die Datei nennt sich Article.py ! Da versuche ich jetzt ein dropdown feld zu mache, wo alle members drin stehen! Aber das klappt nicht so wie ich will ! Ich bin ja noch ein frischling, was Archetypes angeht, vielleicht kannst du mir da auch helfen, wenn du eine Methode kennst die mir die Members ausliest! Die article.py liegt im Verzeichniss C:\programme\plone 2\data\products\archexamples\article.py falls dir/euch das hilft! Bin nur am rum probieren, weil es da kaum ordentliche aktuelle seiten drüber gibt! Das nervt mich mittlerweile!
mfg mitch
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hi Mitch!mitch hat geschrieben:weil es da kaum ordentliche aktuelle seiten drüber gibt!
Wenn du etwas am Code änderst, dann musst du Zope neu starten, das Produkt, welches du verändert hast, im ``portal_quickinstaller`` neu installieren und erst dann siehst du das Ergebnis der Änderung.
Ich schreibe gerade an einer kleinen Anleitung. Allerdings ist sie noch nicht ganz fertig, aber hier ist schon mal das was ich bis jetzt zusammengeschrieben habe:
http://gelb.bcom.at/trac/misc/wiki/Tuto ... tErstellen
lg
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
So langsam beginnt die Anleitung Form anzunehmen. Es sollte ab jetzt schon recht deutlich hervorkommen, wie man ein Archetypes-Produkt für Plone erstellen und die Anzeige anpassen kann.gerold hat geschrieben:Ich schreibe gerade an einer kleinen Anleitung. Allerdings ist sie noch nicht ganz fertig
http://gelb.bcom.at/trac/misc/wiki/Tuto ... tErstellen
Es fehlt zwar noch die Listenanzeige, aber das ist nicht mehr notwendig um AT zu verstehen.
lg
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Hi gerold,
dank, ich hab dein tutorial mal durch gearbeitet aber leider konnte ich damit meine Frage auch nicht beantworten.
Wie oben schon geschrieben, will ich in ein archetype (bei mir ist das die article.py) so ein listen Feld erstellen, wo automatisch beim öffnen des dokumentes alle Mitarbeiter ausgelesen werden und in so ein listen Feld rein geschrieben werden.
Mein wille ist es ja, ein Ordner namens "Projekt" zu erstellen und darin werden dann Projekte erstellt (vorzugsweiße mit der article.py die ich auch später noch umbennen werde). Nun soll es möglich sein, dass pro projekt 5 Mitarbeiter beschäftig sein können und deshalb auch 5 solche listenfelder wo jeweils alle mitarbeiter drin stehen.
Wenn ich dann das projekt speichere, sollen der Name des Projektes auch noch bei dem jeweiligen Mitarbeiter eingetragen werden! Daran geh ich zur Zeit ein bisschen kaputt dran.
Deshalb will ich erstmal die Mitarbeiter da rein lesen und dann weiter sehen!
Ich wäre sehr froh über jede Hilfe!
mfg mitch ...
dank, ich hab dein tutorial mal durch gearbeitet aber leider konnte ich damit meine Frage auch nicht beantworten.
Wie oben schon geschrieben, will ich in ein archetype (bei mir ist das die article.py) so ein listen Feld erstellen, wo automatisch beim öffnen des dokumentes alle Mitarbeiter ausgelesen werden und in so ein listen Feld rein geschrieben werden.
Mein wille ist es ja, ein Ordner namens "Projekt" zu erstellen und darin werden dann Projekte erstellt (vorzugsweiße mit der article.py die ich auch später noch umbennen werde). Nun soll es möglich sein, dass pro projekt 5 Mitarbeiter beschäftig sein können und deshalb auch 5 solche listenfelder wo jeweils alle mitarbeiter drin stehen.
Wenn ich dann das projekt speichere, sollen der Name des Projektes auch noch bei dem jeweiligen Mitarbeiter eingetragen werden! Daran geh ich zur Zeit ein bisschen kaputt dran.
Deshalb will ich erstmal die Mitarbeiter da rein lesen und dann weiter sehen!
Ich wäre sehr froh über jede Hilfe!
mfg mitch ...
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hi mitch!mitch hat geschrieben:alle Mitarbeiter ausgelesen werden
Das mit dem Auslesen der in Plone eingetragenen Mitglieder funktioniert so:
Code: Alles auswählen
## Script (Python) "get_members"
##bind container=container
##bind context=context
##bind namespace=
##bind script=script
##bind subpath=traverse_subpath
##parameters=
##title=
##
ms = container.portal_membership
retlist = []
members = ms.searchForMembers()
if members:
for member in members:
new = {"username": member.getUserName()}
new["fullname"] = member.getProperty("fullname")
retlist.append(new)
return retlist
lg
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hi mitch!
``from Products.ATTest.config import PROJECTNAME`` --> ATTest ist der Ordner in dem das Produkt liegt. Das musst du natürlich an deine Gegebenheiten anpassen.
lg
Gerold
Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from Products.ATTest.config import PROJECTNAME
from Products.Archetypes.atapi import registerType
from Products.Archetypes.atapi import BaseContent, Schema
from Products.Archetypes.atapi import StringField
from Products.Archetypes.atapi import SelectionWidget
class Member5(BaseContent):
"""Member5"""
portal_type = "Member5"
meta_type = "Member5"
archetype_name = "Member5"
schema = BaseContent.schema.copy() + Schema(
(
StringField(
"member1",
required = True,
vocabulary = "get_members",
enforceVocabulary = True,
index = "KeywordIndex", # erstellt autom. einen Index mit diesem Feld
widget = SelectionWidget(
label = "Erster Mitarbeiter",
description = "Erster Mitarbeiter",
format = "select",
),
),
StringField(
"member2",
required = False,
vocabulary = "get_members",
enforceVocabulary = True,
index = "KeywordIndex", # erstellt autom. einen Index mit diesem Feld
widget = SelectionWidget(
label = "Zweiter Mitarbeiter",
description = "Zweiter Mitarbeiter",
format = "select",
),
),
),
)
def get_members(self):
ms = self.portal_membership
retlist = []
members = ms.searchForMembers()
if members:
for member in members:
retlist.append(
(
member.getUserName(),
member.getProperty("fullname")
)
)
return retlist
# Klasse registrieren
registerType(Member5, PROJECTNAME)
lg
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Code: Alles auswählen
## Script (Python) "get_projects"
##bind container=container
##bind context=context
##bind namespace=
##bind script=script
##bind subpath=traverse_subpath
##parameters=username
##title=
##
cat = container.portal_catalog
return (
cat.searchResults(getMember1 = username) +
cat.searchResults(getMember2 = username)
)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Code: Alles auswählen
<?xml version="1.0"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
</head>
<body>
<h1>Projekte bei denen Benutzer "aaaa" mitwirkt</h1>
<tal:block tal:define="projects python:context.get_projects(username = 'aaaa')">
<table border="1" tal:condition="projects">
<tr>
<th>Titel</th>
<th>Id</th>
<th>Url</th>
</tr>
<tal:block tal:repeat="project projects">
<tr tal:define="project_object project/getObject">
<td tal:content="project_object/Title" />
<td tal:content="project_object/getId" />
<td tal:content="project_object/absolute_url" />
</tr>
</tal:block>
</table>
</tal:block>
</body>
</html>
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Hi gerold,
das mit dem Benutzer hatte ich mir auch schon so gedacht wie du das gemacht hast aber ich wusste halt null wo und wie ich da anfangen sollte!
So jetzt speicher ich dieses Objekt in mein Ordner Projekte ab, der auf der gleichen Ebene wie der Membersordner liegt.
Bsp.: Titel = Projekt SEK 3
Kurz Beschreibung = Personalmanagement Tool
Lange Beschreibung = bla bla bla bla
Mitarbeiter1 = mike brune
Mitarbeiter2 = adriano blasa
Wenn ich das so abspeichern will drücke ich ja einfach nur auf den "speichern" Button. Ich will den Button aber jetzt so bearbeiten, dass er den Titel und die beiden Mitarbeiter ausließt und bei den Persönlichen Einstellungen der Mitarbeiter das Feld "Projektbeteiligung" mit dem "Title" des Projektes füllt! Aber welches Script ist dafür verantwortlich bzw. wo liegt das Script für den gewissen "Speicher- Button" und wie mache ich das, dass ich die Einstellungen von dem Mitarbeiter Objekt überschreibe?
Ich hoffe du verstehst mein anliegen gerold ?!
mfg mitch
PS: Mein Chef versucht sich jetzt auch mal an deinem Tutorial!
das mit dem Benutzer hatte ich mir auch schon so gedacht wie du das gemacht hast aber ich wusste halt null wo und wie ich da anfangen sollte!
So jetzt speicher ich dieses Objekt in mein Ordner Projekte ab, der auf der gleichen Ebene wie der Membersordner liegt.
Bsp.: Titel = Projekt SEK 3
Kurz Beschreibung = Personalmanagement Tool
Lange Beschreibung = bla bla bla bla
Mitarbeiter1 = mike brune
Mitarbeiter2 = adriano blasa
Wenn ich das so abspeichern will drücke ich ja einfach nur auf den "speichern" Button. Ich will den Button aber jetzt so bearbeiten, dass er den Titel und die beiden Mitarbeiter ausließt und bei den Persönlichen Einstellungen der Mitarbeiter das Feld "Projektbeteiligung" mit dem "Title" des Projektes füllt! Aber welches Script ist dafür verantwortlich bzw. wo liegt das Script für den gewissen "Speicher- Button" und wie mache ich das, dass ich die Einstellungen von dem Mitarbeiter Objekt überschreibe?
Ich hoffe du verstehst mein anliegen gerold ?!
mfg mitch
PS: Mein Chef versucht sich jetzt auch mal an deinem Tutorial!
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hi Mitch!mitch hat geschrieben:das mit dem Benutzer hatte ich mir auch schon so gedacht wie du das gemacht hast aber ich wusste halt null wo und wie ich da anfangen sollte!
Das kann ich dir erklären.
Ich suche mir im ZMI oder im Plone die Stelle, an der die Information die ich suche (oder ähnliche Informationen) bereits angezeigt werden. In diesem Fall ist das so, dass alle Mitglieder aufgelistet werden, wenn man im Plone auf den Tab "members" klickt und dann, ohne einen Suchbegriff einzugeben, auf die Schaltfläche ``suche`` klickt.
Wenn man sich den "Members"-Ordner im ZMI ansieht, dann findet man die Seite ``index_html``. In dieser Seite wird das Objekt ``member_search_form`` aufgerufen. Dieses Objekt findet man im ZMI unter ``portal_skins/plone_forms/member_search_form``.
Wenn man sich ``member_search_form`` ansieht, dann findet man die Formular-Aktion (action) ``member_search_results``. Also wird das was im Formular eingegeben wird, an ``member_search_results`` weitergereicht. Also suche ich nach ``member_search_results``. (Im Karteikartenreiter ``find`` findest du die Suche. )
Im Objekt ``member_search_results`` findet man die Zeile
Code: Alles auswählen
tal:define="results python:mtool.searchForMembers(request);
Wie auch immer... So bin ich drauf gekommen, dass sich hinter der Variable ``mtool`` das Modul ``MembershipTool.py`` befindet. Dieses ist in Plone über ``portal_membership`` eingebunden. In einem Python-Skript kommt man mit ``context.portal_membership`` oder ``container.portal_membership`` zu diesem Tool. Der Rest war einfach.
lg
Gerold
Zuletzt geändert von gerold am Sonntag 15. Oktober 2006, 11:46, insgesamt 1-mal geändert.
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hi mitch!mitch hat geschrieben:Bsp.: Titel = Projekt SEK 3
Kurz Beschreibung = Personalmanagement Tool
Lange Beschreibung = bla bla bla bla
Mitarbeiter1 = mike brune
Mitarbeiter2 = adriano blasa
Wenn ich das so abspeichern will drücke ich ja einfach nur auf den "speichern" Button. Ich will den Button aber jetzt so bearbeiten, dass er den Titel und die beiden Mitarbeiter ausließt und bei den Persönlichen Einstellungen der Mitarbeiter das Feld "Projektbeteiligung" mit dem "Title" des Projektes füllt!
In meinem Beispielcode habe ich den Hinweis gegeben, dass die zugewiesenen Mitarbeiter in einem Index, also im ``portal_catalog`` abgelegt werden. Somit ist eine Suche danach möglich. Wenn z.B. das Feld den namen "member1" hat, dann wird im ``portal_catalog`` der Index ``getMember1`` erzeugt. Du kannst also mit der normalen Katalogsuche
Code: Alles auswählen
container.portal_catalog.searchResults(getMember1 = "ein_benutzername")
Die Projekte des Mitarbeiters noch einmal irgendwo abzuspeichern ist doppelt gemoppelt und bringt keinen Vorteil.
Die Suche, die ich im Beispiel "get_projects" aufzeige, sucht genau so in den Indizes ``getMember1`` und ``getMember2`` nach den Projekten des übergebenen Mitarbeiters ``username``.
Such dir das Formular, mit dem ein Benutzer bearbeitet wird und arbeite dort den XHTML-Code ein, den ich weiter oben in einem anderen Beitrag schon aufgezeigt habe.
Das Formular, das zum Bearbeiten eines Benutzers verwendet wird ist wahrscheinlich ``portal_skins/plone_prefs/prefs_user_details``.
lg
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Hi,
ein riesengroßes DANKE gerold, jetzt funktionieren zumdinest mal alle Funktionen die für eine Prototypen gebraucht werden, denke ich mal, wenn mein chef nicht schon wieder noch mehr will !
Bloß das mit dem getMember1 in den index schreiben hat irgendwie nicht funktioniert! Ich hab dann die dann selber in den Index eingetragen bei portal_catalog, ich hoffe das ist auch möglich, zumindest funktioniert es!
Tja und das hat irgendwie doch keinen Index autom. erzeugt, weißt du wieso?
Ach ja und nun soll es so sein, dass ein Mitarbeiter nicht in mehr als 5 Projekten gleichzeitig sein darf!
Kann ich mir da eine Methode in dem Archetype (neuesProjekt.py hab ich es mal genannt) erzeugen, welche beim Speichern abfragt in wievielen Projekten der Mitarbeiter zur Zeit arbeitet und sobald er in schon 5 Projekten ist und das 6. dazu kommt, soll die Seite neu aufgebaut werden und daruf hingewießen werden, dass der Mitarbeit schon ausgeplant ist.
Soll ungefähr so aussehen wie mit diesem:
"required = True"
wo doch das Feld zum "Mussfeld" wird und wenn nix eingetragen wird, es einen Fehler bringt.
mfg mitch
[/code]
ein riesengroßes DANKE gerold, jetzt funktionieren zumdinest mal alle Funktionen die für eine Prototypen gebraucht werden, denke ich mal, wenn mein chef nicht schon wieder noch mehr will !
Bloß das mit dem getMember1 in den index schreiben hat irgendwie nicht funktioniert! Ich hab dann die dann selber in den Index eingetragen bei portal_catalog, ich hoffe das ist auch möglich, zumindest funktioniert es!
Code: Alles auswählen
StringField(
"member2",
required = False,
vocabulary = "get_members",
enforceVocabulary = True,
index = "KeywordIndex", # erstellt autom. einen Index mit diesem Feld
widget = SelectionWidget(
label = "Zweiter Mitarbeiter",
description = "Zweiter Mitarbeiter",
format = "select",
),
),
Ach ja und nun soll es so sein, dass ein Mitarbeiter nicht in mehr als 5 Projekten gleichzeitig sein darf!
Kann ich mir da eine Methode in dem Archetype (neuesProjekt.py hab ich es mal genannt) erzeugen, welche beim Speichern abfragt in wievielen Projekten der Mitarbeiter zur Zeit arbeitet und sobald er in schon 5 Projekten ist und das 6. dazu kommt, soll die Seite neu aufgebaut werden und daruf hingewießen werden, dass der Mitarbeit schon ausgeplant ist.
Soll ungefähr so aussehen wie mit diesem:
"required = True"
wo doch das Feld zum "Mussfeld" wird und wenn nix eingetragen wird, es einen Fehler bringt.
mfg mitch
[/code]
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hi mitch!mitch hat geschrieben:Bloß das mit dem getMember1 in den index schreiben hat irgendwie nicht funktioniert! Ich hab dann die dann selber in den Index eingetragen bei portal_catalog,
Was bringt es dir, wenn es sich nicht selber einträgt???
Gründe, warum es evt. nicht funktioniert haben könnte:
- Zope nicht neu gestartet
- Produkt nicht neu registriert
- Es wurden Projekte angelegt, noch bevor es den Schemaeintrag ``index = "KeywordIndex",`` gab.
Wie auch immer. Man kann den Katalog neu aufbauen lassen.
Im ``archetype_tool`` kannst du über den Reiter ``Catalogs`` die zugehörigen Kataloge auswählen und auch "Updaten". Dann
kannst du noch Template-Bindings neu aufbauen lassen, UID´s neu indizieren und alte Schemadefinitionen auf den neuesten Stand bringen.
Beim Entwickeln von Archetypes -- wenn irgendetwas nicht so wie gewünscht funktioniert, dann sollte man es mit dem ``archetype_tool`` versuchen.
mfg
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Hi,
ich glaube wir haben gerade aneinander vorbei geredet gerold.
Ich dachte, diese Methode "getMember1" automatisch in Index erzeugt wird aber dem war ja nicht so. Als hab ich die beiden Methoden getMember1 und getMember2 als Index erzeugt im portal_catalog.
Jetzt kann ich mit Hilfe der beiden Methoden auch auf die Member zugreifen die ich beim erstellen des Dokumentes gespeichert hab.
Nur ich hab halt gedacht, dass auch "getMember" dirket mit im Index erzeugt wurde!
mfg mitch
ich glaube wir haben gerade aneinander vorbei geredet gerold.
Ich dachte, diese Methode "getMember1" automatisch in Index erzeugt wird aber dem war ja nicht so. Als hab ich die beiden Methoden getMember1 und getMember2 als Index erzeugt im portal_catalog.
Jetzt kann ich mit Hilfe der beiden Methoden auch auf die Member zugreifen die ich beim erstellen des Dokumentes gespeichert hab.
Nur ich hab halt gedacht, dass auch "getMember" dirket mit im Index erzeugt wurde!
mfg mitch