Benutzerspezifische Werkzeuge
Sie sind hier: Startseite Members Ralf's Homepage Zope-SESSIONS zum Speichern von Message Meldungen verwenden.

Zope-SESSIONS zum Speichern von Message Meldungen verwenden.

von Ralf LüdickeZuletzt verändert: 27.06.2006 19:37

In diesem How-To möchte ich zeigen, wie man mit Hilfe von Zope-SESSIONS schnell und unkompliziert Statusmeldungen an Formulare weiterleiten kann. Besonders schön finde ich, dass die Verwendung von SESSION einfach und threadfest ist und man auf das Anhängen von Parametern in der URL verzichten kann. Dies ist mir besonders wichtig, da beim Aktualisieren des Browsers unter Umständen der Meldungsparameter an der URL "kleben bleibt" und der Statustext dadurch immer wieder ausgewertet wird.

Benötigt wird als erstes ein kleiner Pythonscript, welcher im Context aller in Frage kommenden Objekte liegen muss. Da keine Parameter übergeben werden und auch sonst keine Schadenswirkung zu erwarten ist, kann man diesen Schript meiner Meinung problemlos in die "Zope-Root" packen.

Ich habe den Script "getMsgBox.py" genannt.

##Script (Python) "getMsgBox"
##bind container=container
##bind context=context
##bind namespace=
##bind script=script
##bind subpath=traverse_subpath
##parameters=
##title=Prueft auf Text in der MessageBox
##
# Dieser Script liefert den Messagetext aus der laufenden Session # und löscht ihn danach wieder
request = context.REQUEST session = request.SESSION
result = ''
if session.has_key('MSG'): result = session['MSG'] session.set('MSG','')
return result

Als nächstes bauen wir in das Main Template folgende Zeile ein. Da ich kein DTML kann - hier als ZPT.
<span id="msgbox" tal:define="msg here/getMsgBox|nothing"
                  tal:condition="msg"
                  tal:content="structure msg" />

und hier das zugehörige StyleSheet:

#msgbox {
  background-color: #faf0f0;
  border: 1px dotted red;
  color: #000;
  padding: 2px 0px 2px 15px;
  margin-bottom:15px;
  display: block;
  font-size: 90%;
  font-style:italic;
}

Jetzt kann in jedem beliebigen Pythonscript der Meldungstext gesetzt werden. Er wird dann nach Rückkehr zum Main-Template genau einmal ausgewertet und angezeigt.


## Script (Python) "TestScript" ##bind container=container ##bind context=context ##bind namespace= ##bind script=script ##bind subpath=traverse_subpath ##parameters= ##title=Testscript ## request = context.REQUEST session = request.SESSION response = request.RESPONSE
msg='Hallo Welt'
session.set('MSG',msg)
response.redirect(container.mainfrm.absolute_url())

That's all....