[Zope] linuxworld article and auto-form generation

Kapil Thangavelu kvthan@wm.edu
Sun, 16 Jul 2000 14:55:38 -0700


I played around with some auto-form generating ZClasses a couple months
ago. Just thought i should share since it seems to be something people
want, and i saw it used as a feature-lack against zope on linuxworld.
basically it just spits out an html page where you pick a property sheet
and then it spits up an edit form for that sheet. i use em for quick
testing of a zclass and as a template(ala view source) for more
customized forms.

i generally use it a base zclass on a project and just make my other
zclasses inherit from it. to view the forms after you've created the
methods (in your the Products folder of your ZClass) just go to
http://YourZopeSite.zope/YouObject/edit_properties


this stuff will be on my members page, soon:)
http://www.zope.org/Members/k_vertigo

standard_disclaimer -ie it works for me. use at your own risk.

raw dtml - sorry i'm sure the formatting blows

edit_properties :: dtml_method

<dtml-var standard_html_header>
<center><b>Please Pick A Property Category</b></center>
<table align="center">
<form action="edit_propertyCategory" method="POST">
<tr><td>
	<SELECT name="PropertyCategory">
<dtml-in "propertysheets.items()">
	<OPTION value="<dtml-var sequence-key>"><dtml-var
sequence-key></OPTION>
</dtml-in>
	</SELECT>
</tr></td>
<tr><td><INPUT TYPE="SUBMIT" value="Edit Properties"></td></tr>
</form>
</table>
<dtml-var standard_html_footer>

edit_propertyCategory :: dtml_method

<dtml-var standard_html_header>


<dtml-if "REQUEST.has_key('PropertyCategory')">

<dtml-in "propertysheets.items()">
<dtml-let y=sequence-key>

<dtml-if "REQUEST.PropertyCategory==y">
	<dtml-let x=sequence-item>

	<table border="1" align="center" cellspacing="0" cellpadding="4">
	<tr><th colspan="2" align="center">Edit <dtml-var y>
Properties</th></tr>
	
	<form action="edit_propertiesChange" method="POST">
	<dtml-in "x.propertyItems()">
		<tr><td>
		<dtml-var sequence-key>
		</td><td>
		<input type="text" name="<dtml-var sequence-key>" value="<dtml-var
sequence-item>">
		</td></tr>
	</dtml-in>

	<tr><td colspan="2" align="center"><input type="SUBMIT" value="Change
Properties"></td></tr>
	<input type=hidden name="PropertyCategory" value="<dtml-var
PropertyCategory>">
	</form>
	</table>
	</dtml-let>
</dtml-if>
	
</dtml-let>
</dtml-in>

<dtml-else>
You have reached this page in error
</dtml-if>

<dtml-var standard_html_footer>


edit_propertiesChange :: dtml_method

<dtml-var standard_html_header>

<dtml-if "REQUEST.has_key('PropertyCategory')">

<dtml-in "propertysheets.items()">
<dtml-let y=sequence-key>

<dtml-if "REQUEST.PropertyCategory==y">
	<dtml-let x=sequence-item>
	<dtml-call "x.manage_changeProperties(REQUEST)">
	<dtml-var PropertyCategory> Properties Changed<br>
	<a href="<dtml-var URL1>">Back To Object</a><br>
	<a href="<dtml-var URL2>">Back To Container</a>
	</dtml-let>
</dtml-if>
	
</dtml-let>
</dtml-in>

<dtml-else>
You have reached this page in error
</dtml-if>

<dtml-var standard_html_footer>


Cheers

Kapil
http://lostworld.imeme.net