How to install z3ext.statusmessage
- Download and install ActivePython
- Open Command Prompt
- Type
pypm install z3ext.statusmessage
Depended by
- z3ext.authentication
- z3ext.banner
- z3ext.blogger
- z3ext.company
- z3ext.content.browser
- z3ext.content.discussion
- z3ext.content.documents
- z3ext.content.draft
- z3ext.content.ext.marker
- z3ext.content.forms
- z3ext.content.model
- z3ext.content.models.container
- z3ext.content.notifications
- z3ext.content.permissions
- z3ext.content.schema
- z3ext.content.space
- z3ext.content.workflow
- z3ext.formulator
- z3ext.forum
- z3ext.groups
- z3ext.homefolder
- z3ext.layoutform
- z3ext.members
- z3ext.memcached
- z3ext.messaging
- z3ext.persistent.fields
- z3ext.persistentlayout
- z3ext.persistentpageelement
- z3ext.persistentresource
- z3ext.personal.blogger
- z3ext.personal.content
- z3ext.personal.invitation
- z3ext.personal.photo
- z3ext.personal.profile
- z3ext.personal.space
- z3ext.photoalbum
- z3ext.portlets.amazonewidget
- z3ext.portlets.amazonwidget
- z3ext.portlets.recent
- z3ext.preferences
- z3ext.principal.ban
- z3ext.principal.groups
- z3ext.principal.invite
- z3ext.principal.management
- z3ext.principal.password
- z3ext.principal.profile
- z3ext.principal.registration
- z3ext.principal.users
- z3ext.principalfolder
- z3ext.product
- z3ext.project
- z3ext.session
- z3ext.subscription
- z3ext.teamfolder
- z3ext.theme.default
- z3ext.topcontributors
- z3ext.ui.breadcrumbs
- z3ext.ui.logo
- z3ext.ui.portaltabs
- z3ext.ui.searching
- z3ext.ui.simplettw
- z3ext.ui.skin
- z3ext.wiki
- z3ext.wizard
- z3ext.workflow
Lastest release
Portal status message
Instead include notification messages directly to template, developer can use messaging service.
Main interface is IStatusMessage, it is adapter for IBrowserRequest so we can have different implementations, for example cookie based or session.
By default only session based service implemented.
>>> from zope import interface, component >>> from zope.interface.verify import verifyClass
>>> from z3ext.statusmessage import interfaces, session, message
>>> verifyClass(interfaces.IStatusMessage, session.MessageService) True
>>> component.provideAdapter(session.getMessageService)
>>> from zope.publisher.browser import TestRequest >>> request = TestRequest()
>>> service = interfaces.IStatusMessage(request)
>>> bool(service) False
>>> service.add('Test message') Traceback (most recent call last): ... ComponentLookupError: ...
>>> service.clear() ()
Before we can use message service we need register message type.
>>> component.provideAdapter(message.InformationMessage, name='info')
>>> msg = component.getAdapter(request, interfaces.IMessage, 'info') >>> print msg.render('Test message') <div class="statusMessage">Test message</div>
Now we can add messages.
>>> service.add('Test message')
>>> bool(service) True
>>> for msg in service.messages(): ... print msg <div class="statusMessage">Test message</div>
Let's register another message type.
>>> component.provideAdapter(message.WarningMessage, name='warning')
>>> service.add('Warning message', 'warning')
>>> for msg in service.messages(): ... print msg <div class="statusMessage">Test message</div> <div class="statusWarningMessage">Warning message</div>
Error message, we can add exception object
>>> component.provideAdapter(message.ErrorMessage, name='error')
>>> service.add(Exception('Error message'), 'error')
or text message
>>> service.add('Error message', 'error')
>>> for msg in service.messages(): ... print msg <div class="statusMessage">Test message</div> <div class="statusWarningMessage">Warning message</div> <div class="statusStopMessage">Exception: Error message</div> <div class="statusStopMessage">Error message</div>
Serive will oppress duplicated messages:
>>> service.add('Error message', 'error') >>> for msg in service.messages(): ... print msg <div class="statusMessage">Test message</div> <div class="statusWarningMessage">Warning message</div> <div class="statusStopMessage">Exception: Error message</div> <div class="statusStopMessage">Error message</div>
Clearing service
clear() method return all messages and clear service.
>>> for msg in service.clear(): ... print msg <div class="statusMessage">Test message</div> <div class="statusWarningMessage">Warning message</div> <div class="statusStopMessage">Exception: Error message</div> <div class="statusStopMessage">Error message</div>
>>> bool(service) False
CHANGES
1.4.0 (2009-08-11)
- Use AfterCallEvent from z3ext.cacheheaders package
1.3.9 (2009-07-15)
- Oppress duplicated messages
1.3.8 (2009-06-23)
- Better checks for session service availability
1.3.7 (2009-06-04)
- Added null status message service
1.3.6 (2009-06-01)
- Fix publication afterCall handler
1.3.5 (2009-04-15)
- Do not use z3c.autoinclude
1.3.4 (2009-03-12)
- Added default css styles
1.3.3 (2008-11-27)
- Handle error if session is not available
1.3.2 (2008-11-23)
- Fixed tests agains zope3.4
1.3.1 (2008-11-21)
- Fixed UnicodeEncodeError
1.3.0 (2008-11-20)
- API refactored
- Allow add messages at any stage of page processing
1.2.1 (2008-05-14)
- Replace 'autoinclude' with 'includeDependendcies'
1.2.0 (2008-03-21)
- rename to z3ext.statusmessage
- moved to svn.zope.org
1.1.0 (2008-03-18)
- Use z3c.autoinclude
- Code cleanup
1.0.0 (2007-12-08)
- Initial release.