Ergebnis 1 bis 10 von 10

Thema: Neue Herausforderung: "Nachricht hinzufügen" Formular anpassen

  1. #1
    Teeny
    Registriert seit
    20.10.2009
    Beiträge
    27
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard Neue Herausforderung: "Nachricht hinzufügen" Formular anpassen

    Hallo,

    gleich noch eine neue Herausforderung meinereiner ....

    ich versuche verzweifelt bei "Nachricht/Termin erstellen" das "description" Feld anzupassen.
    Ich möchte hierbei keine freie Textwahl zulassen sondern ein PullDown Menü mit vorgegebenen Einträgen einfügen.

    Nachdem ich nun herausgefunden, dass es das Formular (news_item/edit) nicht gibt
    (es wird wohl immer erst beim Aufruf generiert), stell ich mich auch wieder etwas bescheiden an,
    um eine Lösung zu finden.
    Ich hab das Produkt PloneFormGen installiert und hoffte dort nun die Lösung zu finden, aber genau dieses
    Feld ist damit nicht editierbar.

    Gibts da eine Lösung um mit überschaubaren Aufwand das hinzubekommen?

    Hier noch die Versionsübersicht:
    Plone 3.3.5
    CMF 2.1.2
    Zope (unreleased version, python 2.4.4, win32)

    Vielen Dank euch wiedermal
    Das Müllerchen
    Achtung: Dies ist ein alter Thread im HTML und Webmaster Forum
    Diese Diskussion ist älter als 90 Tage. Die darin enthaltenen Informationen sind möglicherweise nicht mehr aktuell. Erstelle bitte zu deiner Frage ein neues Thema im Forum !!!!!

  2. #2
    Meister(in)
    Registriert seit
    14.02.2008
    Ort
    München
    Beiträge
    456
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard AW: Neue Herausforderung: "Nachricht hinzufügen" Formular anpassen

    Hallo,

    Products.schemaextender ist hier der richtige Ansatz. Da du ein Feld eines AT-Contenttypes verändern möchtest. AT generiert die Felder immer zur Laufzeit, PFG ist eine gute Erweiterung, kann aber leider nicht die AT-Felder überschreiben wie der SchemaExtender

    Gruss Pumukel
    Die beste Informationsquelle sind Leute, die versprochen haben, nichts weiterzuerzählen.

    Marcel Mart
    frz. Schriftsteller

  3. #3
    Teeny
    Themenstarter

    Registriert seit
    20.10.2009
    Beiträge
    27
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard AW: Neue Herausforderung: "Nachricht hinzufügen" Formular anpassen

    Hallo Pumukel

    danke für deine schnelle Antwort. Leider finde ich Products.schemaextender so nicht auf plone.org.
    Ich hab aber durch Google folgende Seite gefunden: http://pypi.python.org/pypi/archetypes.schemaextender ... ist es das was du meinst?

    Grüße
    Müllerchen
    "Man kann die Realität ignorieren, aber man kann nicht die Konsequenzen der ignorierten Realität ignorieren"
    - Ayn Rand, 1905-1982 -

  4. #4
    Meister(in)
    Registriert seit
    14.02.2008
    Ort
    München
    Beiträge
    456
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard AW: Neue Herausforderung: "Nachricht hinzufügen" Formular anpassen

    Hallo,

    entschuldige, natürlich archetypes.schemaextender,

    Gruss Pumukel
    Die beste Informationsquelle sind Leute, die versprochen haben, nichts weiterzuerzählen.

    Marcel Mart
    frz. Schriftsteller

  5. #5
    Teeny
    Themenstarter

    Registriert seit
    20.10.2009
    Beiträge
    27
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard AW: Neue Herausforderung: "Nachricht hinzufügen" Formular anpassen

    Hallo Pumukel

    hab heut endlich die Zeit gehabt das archetypes.schemaextender zu installieren, leider werd ich da schon mit Fehlermeldungen abgewürgt. Da ich noch kein rechter Freak in Plone bin, hab ich auch ein README zu einer korrekten Installation vermisst. Ich habs in der buildout.cfg unter:

    Code:
    eggs =
            archetypes.schemaextender  >= 2.1
    installiert.

    Das Buildout läuft außer einer Warnmeldung durch. Nachdem ich den PloneController neu gestartet habe, zeigt meine Seite ... taataa ... TraversalError.


    Folgende Augabe lieferte bin\buildout

    Code:
    C:\Programme\Plone>bin\buildout
    Uninstalling zopepy.
    Uninstalling instance.
    Updating zope2.
    Updating fake eggs
    Updating productdistros.
    Installing instance
    Getting distribution for 'archetypes.schemaextender >=2.1'.
    Got archetypes.schemaextender 2.1.1.
    Getting distribution for 'plone-uuid'.
    warning: no previously-included files matching '*pyc' found anywhere in distribution
    Got plone.uuid 1.0.2.
    Generated script 'C:\\Programme\\Plone\\bin\\instance'.
    Updating controller.
    Installing zopepy.
    Generated interpreter 'C:\\Programme\\Plone\\bin\\zopepy'.
    Updating zopeskel.
    Updating backup.
    Updating unifiedinstaller
    Hier noch ein Auszug aus der Plone Seite:

    Code:
    Site Error
    
    An error was encountered while publishing this resource. 
    
    TraversalError
     Sorry, a site error occurred.
    
    
    Traceback (innermost last): 
     Module ZPublisher.Publish, line 202, in publish_module_standard
     Module ZPublisher.Publish, line 150, in publish
     Module Zope2.App.startup, line 221, in zpublisher_exception_hook
     Module ZPublisher.Publish, line 119, in publish
     Module ZPublisher.mapply, line 88, in mapply
     Module ZPublisher.Publish, line 42, in call_object
     Module Shared.DC.Scripts.Bindings, line 313, in __call__
     Module Shared.DC.Scripts.Bindings, line 350, in _bindAndExec
     Module Products.PageTemplates.ZopePageTemplate, line 330, in _exec
     Module Products.PageTemplates.ZopePageTemplate, line 427, in pt_render
     Module Products.PageTemplates.PageTemplate, line 98, in pt_render
     Module zope.pagetemplate.pagetemplate, line 117, in pt_render
    Warning: Macro expansion failed
    Warning: zope.traversing.interfaces.TraversalError: 
    ...

    kannst du mit diesen Fehlermeldungen was anfangen? Ich stochere hier ziemlich im Nebel, will aber auf dieses Feature nicht verzichten. Vielen Dank noch mal für deine Zeit.

    Grüße Müllerchen
    "Man kann die Realität ignorieren, aber man kann nicht die Konsequenzen der ignorierten Realität ignorieren"
    - Ayn Rand, 1905-1982 -

  6. #6
    Teeny
    Themenstarter

    Registriert seit
    20.10.2009
    Beiträge
    27
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard AW: Neue Herausforderung: "Nachricht hinzufügen" Formular anpassen

    Hallo

    Hab das ganze jetzt doch noch hinbekommen. Das Problem war bei mir, dass die Version 2.1.1 immer den Traversal Error erzeugt. Ich hab jetzt mit der 2.1er Version probiert, dass hat dann ohne Fehler funktioniert.

    Ich hab dann auch später mitbekommen, dass das archetypes.extender nicht in der Plonekonfiguration unter Zusatzprodukte als installierbares Produkt angezeigt wird. Ich habs dort vergeblich gesucht und die Installation des extenders mehrfach wiederholt. Bis ich dann mal dahintergestiegen bin und die Anleitung so nach und nach verstanden hab.

    Vielleicht bin ich auch nur einer der wenigen, der da so ziemlich an den Basics kratzt, aber ich würde das hier noch mal kurz “für dummies” wie ich einer bin, wiederholen. Ich hoffe nicht, das ich das Niveau hier dermaßen drücke

    1. archtypes.extender installieren, dazu in der buildout.cfg unter

    Code:
    [buildout]
    
    eggs =
           archtype.extender = 2.1 #da 2.1.1 den Fehler hervorrief
    
    zcml =
           archtype.extender
    eintragen und buildout starten. Archtype.extender ist nun installiert. Wichtig zu wissen, es gibt keine grafische Oberfläche für archetype.extender .... alles funktioniert über folgende zwei Dateien, welche angepasst werden müssen. Diese sind zu finden unter:

    Code:
    C:\Programme\Plone\buildout-cache\eggs\archetypes.schemaextender-2.1-py2.4.egg\archetypes\schemaextender
    folgende Dateien werden angepasst

    Code:
    extender.py 
    configure.zcml
    soweit sogut, ich habe das simple example aus der archetype Doku ausprobiert und es funktionierte tatsächlich. Dieses Boolean Feld war aber nur bei einer neu zu erstellenden Nachricht vorhanden. Bei nem Termin hat es das BooleanFeld nicht angezeigt.

    Mit folgendem Code wird für das Beispiel das Feld erzeugt:

    Code:
    from Products.Archetypes.public import BooleanField
         from archetypes.schemaextender.field import ExtensionField
    
         class MyBooleanField(ExtensionField, BooleanField):
             """A trivial field."""
    der darauffolgende Code erzeugt lt. Anleitung den Adapter:

    Code:
    from zope.component import adapts
        from zope.interface import implements
        from archetypes.schemaextender.interfaces import ISchemaExtender
        from Products.Archetypes.public import BooleanWidget
        from Products.ATContentTypes.interface import IATDocument
    
        class PageExtender(object):
            adapts(IATDocument)
            implements(ISchemaExtender)
    
    
            fields = [
                MyBooleanField("super_power",
                widget = BooleanWidget(
                    label="This page has super powers")),
                    ]
    
            def __init__(self, context):
                self.context = context
    
            def getFields(self):
                return self.fields
    schließlich löst der folgende Code in der configure.zcml die Registrierung aus:

    Code:
    <configure xmlns="http://namespaces.zope.org/zope"
                   xmlns:five="http://namespaces.zope.org/five">
    
            <include package="archetypes.schemaextender" />
            <adapter factory=".extender.PageExtender" />
        </configure>
    Ich weiß nun nicht recht wie ich mich verständlich ausdrücken soll, aber aus dem Code kann ich nicht rauslesen, warum nur in ner neuen Nachricht das Feld drin ist, nicht aber in einem neuen zu erstellenden Termin. Hab leider grad nicht sehr viel Zeit für mein PloneProjekt aber würds gern verstehen. Gibts da vielleicht auch ne Doku für Dummies dazu?

    P.S. Bitte verbessert mich, falls ich hier falsche Sachen poste ...

    Danke euch im Voraus.
    Das Müllerchen
    "Man kann die Realität ignorieren, aber man kann nicht die Konsequenzen der ignorierten Realität ignorieren"
    - Ayn Rand, 1905-1982 -

  7. #7
    Meister(in)
    Registriert seit
    14.02.2008
    Ort
    München
    Beiträge
    456
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard AW: Neue Herausforderung: "Nachricht hinzufügen" Formular anpassen

    Hallo,

    der SchemaExtender ist eine der komplexeren Modifikationsmechanismen in Plone. Daher ist es nicht verwunderlich das jemand an der Dokumentation und der Umsetzung Probleme bekommen kann. Prinzipiell wird von den meisten Entwicklern Kenntnisse mit Archetypes vorausgesetzt wenn man mit dem SchemaExtender arbeitet, was es wirklich extrem vereinfacht, da dann viele Fragen sehr logisch sind.

    Erstmal zu der Grundsätzlichen Frage warum nur neue Nachrichten das Feld haben:
    1. Auch normale Seiten / Dokumente haben das Feld.
    2. der Codeabschnitt
    Code:
    class PageExtender(object):         
        adapts(IATDocument)         
        implements(ISchemaExtender)
    bestimmt für welche Überklasse von Content-Objekten diese anpassungen gelten, würdest du hier IATEvent stehen haben würde es für alle Termine gelten.

    Da du hier ohne umfängliche Archetypes-Kentnisse angefangen hast, ist dein Ergebnis eigentlich sehr gut, leider hast du trotzdem einige Sachen gemacht die man nie machen sollte:
    - Editieren in einem Quell-Egg,
    - Direktes binden der Version vom SchemaExtender,
    - Arbeiten ohne eigenes Development-Egg/Produkt.

    Es gibt drei Empfehlungen:
    1. Kauf dir das Buch "Professional Plone 4 Development" von Martin Aspeli,
    2. Besuche eine der DZUG/Plone User Gruppen in deiner Nähe (zu finden auf plone.de)
    3. Komm zur Deutschsprachigen Plone Konferenz München 2012 vom 22.02.-24.02. und den folgenden Sprints am Wochenende 25./26.02. (konferenz.plone.de)
    Alle drei möglichkeiten werden dir bei deinem Projekt und der Entwicklung von Plone Portalen helfen.

    Viele Grüße
    Pumukel
    Die beste Informationsquelle sind Leute, die versprochen haben, nichts weiterzuerzählen.

    Marcel Mart
    frz. Schriftsteller

  8. #8
    Teeny
    Themenstarter

    Registriert seit
    20.10.2009
    Beiträge
    27
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard AW: Neue Herausforderung: "Nachricht hinzufügen" Formular anpassen

    Hallo Pumukel

    ich danke dir für die Antwort. Ich seh schon, dass ich ohne weiterführende Kenntnisse nicht so recht weiterkomme. Ich werd mir jetzt erst mal das Buch besorgen, welches du vorschlägst. Leider auf Englisch, aber wird schon irgendwie gehen.

    Ich werd nun erstma in mich gehen und weiterlernen. Falls ich nicht weiterkomme, kann ich ja zur Not den Thread noch mal hochholen

    Danke und Grüße
    Müllerchen
    "Man kann die Realität ignorieren, aber man kann nicht die Konsequenzen der ignorierten Realität ignorieren"
    - Ayn Rand, 1905-1982 -

  9. #9
    Teeny
    Themenstarter

    Registriert seit
    20.10.2009
    Beiträge
    27
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard AW: Neue Herausforderung: "Nachricht hinzufügen" Formular anpassen

    Hallo

    ich hoffe ich falle nich in Ungnade, dass ich nen alten Thread wieder hochhole, es passt halt immer noch hier dazu ...


    Inzwischen sehe ich einiges klarer, Archtypes sind (hoffentlich) verstanden auch der Schema.Extender ist mir nicht
    mehr so fremd. Doch es bleiben Unklarheiten und ich hoffe, dass Ihr mir noch ein bisschen weiterhelfen könnt ...

    Bei mir ging es um das Abändern des "Description" Feldes in einem Edit-Formular, anstatt dessen wollte ich gern ein Pulldown
    Menü mit vorgegebenen Einträgen einfügen.
    http://www.plone-entwicklerhandbuch....rchetypes.html

    Ich habe das ganze nun im Schema.Extender mit einem LinesField gelöst. Zusammen mit dem MultiSelectionWidget bekomme
    ich das gewünschte Ergebnis. Zumindest das Feld erscheint. Mit "vokabulary" kann ich dann die Einträge definieren,
    welche in dem Menu erscheinen sollen.

    Code:
      from Products.Archetypes.public import LinesField
      from archetypes.schemaextender.field import ExtensionField
      from zope.component import adapts
      from zope.interface import implements
      from archetypes.schemaextender.interfaces import ISchemaExtender
      from Products.Archetypes.public import MultiSelectionWidget
      from Products.ATContentTypes.interface import IATDocument
      from zope import schema
      from zope.schema.vocabulary import SimpleVocabulary
      
      eintraege = ("Eintrag1", "Eintrag2", "Eintrag3")
    
    
    
      class MultiSelectionField(ExtensionField, LinesField):
             """Testfeld"""
    
             
      class PageExtender(object):
            adapts(IATDocument)
            implements(ISchemaExtender)
    
            fields = [
                MultiSelectionField("DropDownMenu",
                widget = MultiSelectionWidget(
                    vocabulary=SimpleVocabulary(eintraege)), default="Eintrag1"),
                    ]
    
            def __init__(self, context):
                self.context = context
    
            def getFields(self):
                return self.fields
    Auch gibts da ne wunderbare Doku dazu, leider funktioniert das bei mir alles gar nicht, d.h. Es
    sind in dem Menu keine Einträge sichtbar. Ich möchte aber kein dictonary, sondern ne einfache Liste reicht aus.
    http://collective-docs.readthedocs.o...abularies.html

    Weiter kann ich mit dem Schema.Extender zwar Felder erzeugen, aber irgendwie immer nur zusätzlich anhängen. Es muss ja dann
    doch irgend n Script geben, in welcher die Infos für das Zusammenstellen des Formulars sind. Ich wäre zwar schon mal froh, wenn es zusätzlich funktioniert,
    aber schlussendlich will ich ja das Description Feld ersetzen.

    Danke für eure Hilfe
    Müllerchen
    "Man kann die Realität ignorieren, aber man kann nicht die Konsequenzen der ignorierten Realität ignorieren"
    - Ayn Rand, 1905-1982 -

  10. #10
    Meister(in)
    Registriert seit
    14.02.2008
    Ort
    München
    Beiträge
    456
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard AW: Neue Herausforderung: "Nachricht hinzufügen" Formular anpassen

    Hallo,

    da es heute schon spät ist keine lange Antwort.

    das mit dem vocabulary ist ein Übertragungsfehler bei dir, das Vocabulary muss im Field nicht im widget definiert sein.

    Das mit dem SchemaExtender und einem Feld zu überschreiben geht nicht so ohne weiteres, der Trick ist entweder das ursprüngliche Feld zu holen und zu überschreiben, dazu muss du dir das Schema der zu veränderenden Klasse nehmen und dann das Feld manipulieren.

    Einfacher:

    IATDocument.schema()["description"].widget.visible = {"edit": "invisible", "view": "invisible"}
    und dein neues Feld an die Stelle schieben.

    schema.moveField('newfield', before = 'description')
    Ich hoffe es hilft weiter, nur nicht verzagen, irgendwann wird es was.

    Gruss Pumukel
    Die beste Informationsquelle sind Leute, die versprochen haben, nichts weiterzuerzählen.

    Marcel Mart
    frz. Schriftsteller

Ähnliche Themen

  1. site_actions eine CSS-Klasse "current" hinzufügen
    Von mlotze im Forum Zope & Plone - das deutsche Hilfeforum
    Antworten: 1
    Letzter Beitrag: 16.02.2010, 11:04
  2. Artikeltyp "Link" hinzufügen
    Von ullistein im Forum Zope & Plone - das deutsche Hilfeforum
    Antworten: 6
    Letzter Beitrag: 08.08.2008, 12:54
  3. "Startbild" an jeweiligen Nutzer anpassen
    Von Paraneuros im Forum HTML & CSS Forum
    Antworten: 13
    Letzter Beitrag: 21.02.2007, 19:08
  4. Problem: Datei hinzufügen in "Eintragen"im Gästebu
    Von Tilata im Forum Forum-Hilfe.de intern
    Antworten: 2
    Letzter Beitrag: 27.05.2006, 22:45
  5. "Nachricht von SAM" ;-)
    Von Rocco im Forum Computer - Internet Forum
    Antworten: 3
    Letzter Beitrag: 09.12.2005, 13:34

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •