[Zope3-Users] Add and Edit form

Cliff Ford Cliff.Ford at ed.ac.uk
Fri May 12 10:56:29 EDT 2006


This is an example mextURL function that I used to add a folder 
containing a page, and then go to the folder. Going to the page is just 
an addition to the last line.

HTH

Cliff

     def nextURL(self):

         """ This function is called for redirection after folder creation.
         We can use it to fill out metadata collected from a custom add 
form.
         """

         # get the folder object we just created
         theObject = \
             self.__parent__.__parent__.get(self.request['add_input_name'])

         # set the folder title to the title collected from the input form
         ICMFDublinCore(theObject).title = self.request['dctitle']

         # create default content for an index.html page
         msg = u"<h3>%s</h3>\n\n<p>Example Paragraph</p>" \
             % (self.request['dctitle'])

         # create a page template
         page = MontiPage()
         notify(ObjectCreatedEvent(page))

         # set the page content
         page.source = msg

         # insert the page into the folder
         content = theObject.__setitem__('index.html', page)

         # set the page metadata from the form fields
         ICMFDublinCore(page).title = self.request['dctitle']
         ICMFDublinCore(page).description = self.request['dcdescription']
         ICMFDublinCore(page).subjects = [self.request['dcsubjects'],]
         ICMFDublinCore(page).creators = [self.request['dcauthor'],]

         # set the default menu
         msg = ['index.html', self.request['dctitle'], 'Folder index page']

         #  any call to annotations here sets the folder annotations
         IMontiFolderAnnotations(theObject).menulist = [msg]

         # in the zmi we need to return to the folder we were called from
         if self.request['referer'].find('@@contents.html') >= 0:
             return self.request['referer']

         # all done - now go to the index page in the newly created folder
         return  '../%s' % self.request['add_input_name']

John Smith wrote:
> Problem:
>  
>  Would like to add an object to a container and jump to the edit screen for the newly created object immediately. Currently, adding an object to a container takes me to the container's content list. When there are 10 or 15 people all adding objects, finding the one I entered in order to edit it is a usability issue.
>  
>  Solutions:
>  a) there is something already in zope3 that I don't know about :)
>  b) create an "Add and Edit" button to go beside the "Refresh" and "Add" buttons in the standard template and create some handler for this.
>  
>  Thanks in advance for any pointers.
>  
>  John Smith
>  
> 		
> ---------------------------------
>   Yahoo! Cars NEW - sell your car and browse thousands of new and used cars online search now  
> ---------------------------------
>   
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> Zope3-users mailing list
> Zope3-users at zope.org
> http://mail.zope.org/mailman/listinfo/zope3-users


More information about the Zope3-users mailing list