[Zope-Checkins] CVS: Zope3/lib/python/Zope/App/OFS - FolderAdder.py:1.1.2.1
Tres Seaver
tseaver@zope.com
Tue, 20 Nov 2001 17:54:45 -0500
Update of /cvs-repository/Zope3/lib/python/Zope/App/OFS
In directory cvs.zope.org:/tmp/cvs-serv2541/lib/python/Zope/App/OFS
Added Files:
Tag: Zope-3x-branch
FolderAdder.py
Log Message:
- Yeehaw! FolderAdder works!
=== Added File Zope3/lib/python/Zope/App/OFS/FolderAdder.py ===
# This software is subject to the provisions of the Zope Public License,
# Version 1.1 (ZPL). A copy of the ZPL should accompany this distribution.
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
# FOR A PARTICULAR PURPOSE.
"""
Define adder component for folders.
"""
import os
from Zope.Publisher.Browser.AttributePublisher import AttributePublisher
from Zope.Publisher.Browser.IBrowserPublisher import IBrowserPublisher
from Zope.PageTemplate.PageTemplateFile import PageTemplateFile
from Zope.App.ZMI.Addable import getAddables
from Zope.ComponentArchitecture import createObject, getPresentation
class FolderAdder( AttributePublisher ):
__implements__ = AttributePublisher.__implements__
def __init__( self, folder ):
self._folder = folder
def _extractAdderInfo( self, addable ):
info = {}
info['id'] = addable.id
info[ 'title' ] = addable.title
info[ 'desc' ] = addable.description
# XXX: We will fake this stuff out for now
info['icon'] = None
return info
def listAddableInfo( self ):
"""
Return a sequence of mappings for the addables for our
folder.
"""
return map( self._extractAdderInfo, getAddables( self._folder ) )
def action( self, id, type_name ):
"""
Instantiate an object and put it in our folder.
"""
self._folder.setObject( id, createObject( self._folder, type_name ) )
# XXX: This is horribly broken, but I can't do better until
# we have a way to compute absolute URLs.
return getPresentation( self._folder.getObject( id ),
'', IBrowserPublisher ).index()
#
# Make it possible for 'index' to find the folder.
#
def getContext( self ):
return self._folder
index = PageTemplateFile( 'folder_add.pt'
, '%s/www' % os.path.dirname(__file__)
)