Zopistas, I would like to have some opinions on the following. I've just created my first ZClass, but I find the documentation on them a bit thin (as I've come to expect ;). Anyway, here is my current structure: Control Panel | |--Products | | | |--myProduct | | | | | |--Artist(ZClass) | | | | | | | |-- Track(ZClass) | | | |-- acl_users I've crated property sheets for both ZClasses, and modified the addForm methods and the add constructor to do what I want. (After some 6 hours of struggling with dtml last night - I might be on the verge of creating my first how-to :) Now for the questions: 1. I have a folder called "artists" where the Artist-objects should be instantiated as unique objects. I've managed to do this by copying the Artist_addForm method to the "artists" folder, but I suspect this is not how it should be done. My guess is that the factory is involved in some way, but how anonymous users should be able to access it from the context of the empty "artists" folder is a bit unclear at the moment. 2. I would really like to have two different "properties"-views on the instantiated class, one for the user, who does not need to be able to modify all of his attributes, and one for us administrators, which can be the standard properties view. How? 3. As you can see from the above questions, my knowledge is a bit incomplete. I've read through Zope Content Managers Guide, DTML Reference, and tried to find anything of value on zdp.zope.org. If anyone could point me to where I can find more relevant info and tutorials, I would be grateful. Banging one's head against the wall at 0500 in the morning after 6 hours struggle with basic concepts is not my idea of fun. Python and Java are easier to learn than this :) Regards, Alexander Limi.
Hi Alexander,
"Alexander" == Alexander Limi <alexander@limi.net> writes:
Alexander> Now for the questions: Alexander> 1. I have a folder called "artists" where the Alexander> Artist-objects should be instantiated as unique Alexander> objects. I've managed to do this by copying the Alexander> Artist_addForm method to the "artists" folder, but I Alexander> suspect this is not how it should be done. My guess is Alexander> that the factory is involved in some way, but how Alexander> anonymous users should be able to access it from the Alexander> context of the empty "artists" folder is a bit unclear Alexander> at the moment. First did you modify the wizardly created Artist_add method with the option of not redirecting to the management interface after being invoked? (see http://www.zope.org/Members/tazzzzz/addZClasses) It goes in Artist_add like this: (assuming you have named your propertysheet 'Basic') <!--#with "myProduct.createInObjectManager(REQUEST['id'], REQUEST)"--> <!--#call "propertysheets.Basic.manage_editProperties(REQUEST)"--> <!--#/with--> <!--#if noRedirect--> <!--#else--> <!--#if DestinationURL--> <!--#call "RESPONSE.redirect( DestinationURL+'/manage_workspace')"--> <!--#else--> <!--#call "RESPONSE.redirect( URL2+'/manage_workspace')"--> <!--#/if DestinationURL--> <!--#/if noRedirect--> Then from the parent folder of artists you could have a method called something like 'addArtist' that works like this (untested): <dtml-var standard_html_header> <H2><dtml-var document_title></H2> <center> Adding new artist... <br> <dtml-with artists> <dtml-with "manage_addProduct['myProduct']"> <dtml-call "REQUEST.set('id',codeToGenerateAnIDGoesHere)"> <dtml-call "Artist_add(_.None, _, noRedirect=1)"> </dtml-with manage_addProduct--> </dtml-with> <br> Your new artist has been added.<br> <br> <form action=&dtml-URL1;> <input type=submit value="OK"> </form> </center> <dtml-var standard_html_footer> Then you can make your own form to create a new artist that invokes addArtist with all the right stuff set. Alexander> 2. I would really like to have two different Alexander> "properties"-views on the instantiated class, one for Alexander> the user, who does not need to be able to modify all of Alexander> his attributes, and one for us administrators, which Alexander> can be the standard properties view. How? You can make your own 'edit_instance_form' and 'edit_instance' methods that can be methods of your ZClass. Here is what I usually use as a starting point for edit_instance: <!--#var standard_html_header--> <center> <dtml-call "propertysheets.Basic.manage_editProperties(REQUEST=REQUEST)"> <dtml-call "RESPONSE.redirect(URL1)"> </center> <!--#var standard_html_footer--> Just make your custom 'edit_instance_form' display just what you want to your user and invoke 'edit_instance' when it's done. If this is done in the context of the instance it should display the instances index_html when it's finished. Alexander> 3. As you can see from the above questions, my Alexander> knowledge is a bit incomplete. I've read through Zope Alexander> Content Managers Guide, DTML Reference, and tried to Alexander> find anything of value on zdp.zope.org. If anyone could Alexander> point me to where I can find more relevant info and Alexander> tutorials, I would be grateful. Banging one's head Alexander> against the wall at 0500 in the morning after 6 hours Alexander> struggle with basic concepts is not my idea of Alexander> fun. Python and Java are easier to learn than this :) I've found the all the HowTo's etc on www.zope.org helpful. Alexander> Regards, Alexander> Alexander Limi.
participants (2)
-
Alexander Limi -
Steve Spicklemire