Wie kann ich direkt untergeordnete Elemente meines Containertyps in Plone veröffentlichen?

8

Ich habe einen benutzerdefinierten Ordner-Dexterity-Inhaltstyp in Plone. Es kann nur Dokumente als Kinder haben. Ich möchte, dass diese Dokumente direkt bei ihrer Erstellung veröffentlicht werden.

Ich kann dies leicht erreichen, indem ich einen geeigneten Workflow für den Dokumenttyp einstelle, aber das würde jedes Dokument in meiner Site betreffen. Ich möchte nur die innerhalb meines Containertyps direkt veröffentlichen.

Zwei Möglichkeiten kommen mir in den Sinn:

Benutzerdefinierte Seite

Erstellen Sie im Grunde genommen nur eine Kopie des ursprünglichen Dokumenttyps und legen Sie seinen Arbeitsablauf auf etwas fest, das nur den Status published hat.

Ereignis

Fügen Sie das IObjectAdded-Ereignis für Dokumente hinzu und prüfen Sie, ob das übergeordnete Element des neuen Dokuments mein Containertyp ist, und führen Sie eine manuelle Veröffentlichung im Python-Code durch.

Weder klingt zu schön. Habe ich andere Möglichkeiten?

    
Epeli 13.07.2011, 13:18
quelle

3 Antworten

10

Sie möchten nur das Produkt "Workflow Policy Support (CMFPlacefulWorkflow)" (es ist ein Standardteil von Plone):

%Vor%

Sie können den Workflow für einzelne Ordner oder für diesen Ordner und alle darunter liegenden Ordner festlegen.

    
Auspex 13.07.2011, 18:26
quelle
4

Erstellen Sie einen neuen automatischen Übergang in dem von Ihnen verwendeten Arbeitsablauf mit dem Schutz:

python:container.meta_type == 'ATFolder'

Dies wird nur dann ausgelöst, wenn das übergeordnete Objekt vom Standardtyp "Ordner" ist (beachten Sie, dass der Meta-Typ und der Typname nicht identisch sind).

Der Nachteil davon ist, dass es relativ früh im Erstellungsprozess ausgelöst wird, so dass der Benutzer eine Fehlermeldung sehen wird, wenn er nicht genug Berechtigungen hat, um die Erstellung für das veröffentlichte Objekt abzuschließen.

Wenn dies nicht dem entspricht, was du willst, denke ich, dass das Event deine nächste Wette ist.

    
MatthewWilkes 13.07.2011 13:49
quelle
2

Verwenden Sie einen Ereignis-Abonnenten, um einen automatischen Workflow-Übergang auszulösen (z. B. indem Sie IObjectInitializedEvent abonnieren und auf IYourDexterityFolderishType.providedBy(aq_parent(obj)) prüfen - siehe plone community developer docs )

    
Christoph Böhner 13.07.2011 13:47
quelle

Tags und Links