Instead of ... <dtml-call "manage_delObjects('REQUEST['id_to_delete']')"> try <dtml-call "manage_delObjects('REQUEST.id_to_delete')"> Chip Johansen
From: "Bowyer, Alex" <BowyerA@logica.com> To: "'zope@zope.org'" <zope@zope.org> Subject: [Zope] Help wanted on Zope ZClasses/DTML please. Date: Fri, 3 Nov 2000 16:05:49 +1100
Hi,
I have only just started developing in Zope over this last week. I like it a lot, but I am having problems finding solutions to some of my more specific problems in the various zope documentations. I am hoping that if I describe my problems, one of you more-experienced Zope users out there will be able to help me.
First some background:
Basically I have written a news page which allows you to add/edit/delete articles from it. It is similar in some ways to the Zope HowTo "Build a searchable job board". It revolves around two classes:
(UA stands for Update Australia, the name of the news page)
UAArticle : A single article, to be included on the page. --------- Properties: article_title,article_author and article_text (self-explanatory) DTML Methods: index_html - renders the data from the three properties into HTML ready for inclusion in the news page edit - a page with a form to allow you to modify the content, submits to "update" update - processes the form results from "edit", updates the properties and redirects
UAPage : the page itself, inherits from ObjectManager and has Add UAArticle permission defined. Each instance contains 0 or more UAArticles. ------ Properties: issue_date, issue_number, intro_text (self-explanatory) Methods: index_html - renders the page to HTML, both from these properties and by calling the index_html of each subcomponent UAArticle. edit - a set of forms for modifications to edit the above three properties and add a new article, or select an article to edit or delete. update - processes updates to the UAPage properties that have been made on the edit page. edit_article - once an article is selected and the Edit button is clicked, this finds the article, calls the edit method and gives feedback. add_article - a form to create a new article and add it to the UAPage. create_article - processes the data from the add_article form and actually makes the object and adds it. delete_article - once an article is selected and the Delete button is clicked, this finds the article, deletes it and gives feedback.
Now to the problems I have got:
1) I cannot get my delete_article method to work. I figured I need to use manage_delObjects, but I can't find a working example to copy from and my code doesn't seem to do anything. The following code gets called by a form with a field called article_to_delete which is the title of the article we want to delete:
<dtml-var standard_html_header> <!-- set a flag to NULL, change it if found --> <dtml-call "REQUEST.set('id_to_delete','NULL')"> <!-- get the title of the article to delete --> <dtml-let the_match="REQUEST['article_to_delete']"> <!-- search for the article --> <dtml-in objectValues> <dtml-with sequence-item><dtml-with propertysheets><dtml-with UAArticleClassPropertySheet> <dtml-if expr="article_title==the_match"> <dtml-call "REQUEST.set('id_to_delete',title_or_id)"> <!-- found it, update the flag --> </dtml-if> </dtml-with></dtml-with></dtml-with> </dtml-in> <!-- test the flag to see if found --> <dtml-if expr="REQUEST['id_to_delete']=='NULL'"> <!-- not found --> <h2>Article not found</h2> <P>Could not find the article to delete.</P><P><A HREF=edit>Return to maintenance page</A></P> <dtml-else> <!-- found --> <dtml-let the_id="REQUEST['id_to_delete']"> <!-- do the deletion - this is the bit that doesn't work --> <dtml-call "manage_delObjects('the_id')"> <h2>Article deleted</h2> <P>Deleted article '&dtml-the_match;' (id='&dtml-the_id;').</P><P><A HREF=edit>Return to maintenance page</A></P> </dtml-let> </dtml-if> </dtml-let> <dtml-var standard_html_footer>
This gets an error that the_id does not exist. But I can't put <dtml-call "manage_delObjects('REQUEST['id_to_delete']')"> because that is quotes within quotes within quotes. I also tried <dtml-with the_id><dtml-call "manage_delObjects()"></dtml-with> but that doesn't seem to do anything. What is the correct way to use manage_delObjects?
2) I need to be able to make a "Back" button on the UAArticle's edit page that will return to the UAPage's edit page. The problem is that if I use <A HREF=edit> it just goes to the edit page of the object, because our current location is within the UAArticle not the UAPage. Is there a way to get the name of an object's parent (or its own name for that matter) and use it to construct a URL?
3) When redirecting or linking to a page I have already visited, how can I force a refresh? I tried the JavaScript window.location.reload(true) but I think that is only supported by Netscape. It didn't work in IE5 for me anyway.
4) What is the best way to handle security with ZClasses. In my example I want the index_html pages to be public but everything else to require a password. I managed to require a password for a particular instance of the UAPage, but that affects both the index_html and the edit pages.
Thanks very much for taking the time to read this - I hope someone can put me out of my misery! - I have been fiddling around with the code for ages, getting nowhere fast, and the documentation wasn't much help in these areas. It just seems to cover the basics of ZClasses.
Regards,
Alex
================================== Alex Bowyer IT Contractor, Logica Australasia Tel : +61 2 9202 8130 Fax : +61 2 9922 7466 E-mail : bowyera@logica.com WWW : http://www.logica.com.au/ ==================================
_______________________________________________ Zope maillist - Zope@zope.org http://lists.zope.org/mailman/listinfo/zope ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope-dev )
_________________________________________________________________________ Get Your Private, Free E-mail from MSN Hotmail at http://www.hotmail.com. Share information about yourself, create your own public profile at http://profiles.msn.com.