added popup form for creating resources for JavaScript bookmark
git-svn-id: svn://svn.cy55.de/Zope3/src/loops/trunk@2263 fd906abe-77d9-0310-91a1-e0d9ade77398
This commit is contained in:
parent
433d930315
commit
8577b09913
4 changed files with 65 additions and 8 deletions
|
@ -551,6 +551,13 @@
|
||||||
permission="zope.ManageContent"
|
permission="zope.ManageContent"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
<page
|
||||||
|
name="create_object_popup.html"
|
||||||
|
for="loops.interfaces.INode"
|
||||||
|
class="loops.browser.form.CreateObjectPopup"
|
||||||
|
permission="zope.ManageContent"
|
||||||
|
/>
|
||||||
|
|
||||||
<page
|
<page
|
||||||
name="edit_object.html"
|
name="edit_object.html"
|
||||||
for="loops.interfaces.INode"
|
for="loops.interfaces.INode"
|
||||||
|
|
|
@ -61,6 +61,8 @@ from loops.util import _
|
||||||
from loops.versioning.interfaces import IVersionable
|
from loops.versioning.interfaces import IVersionable
|
||||||
|
|
||||||
|
|
||||||
|
popupTemplate = ViewPageTemplateFile('popup.pt')
|
||||||
|
|
||||||
# forms
|
# forms
|
||||||
|
|
||||||
class ObjectForm(NodeView):
|
class ObjectForm(NodeView):
|
||||||
|
@ -78,6 +80,11 @@ class ObjectForm(NodeView):
|
||||||
# the same object as the context (the object the view was created for)
|
# the same object as the context (the object the view was created for)
|
||||||
self.target = context
|
self.target = context
|
||||||
|
|
||||||
|
@Lazy
|
||||||
|
def closeAction(self):
|
||||||
|
return (self.isInnerHtml and 'dialogs["%s"].hide()' % self.dialog_name
|
||||||
|
or 'window.close()')
|
||||||
|
|
||||||
@Lazy
|
@Lazy
|
||||||
def item(self):
|
def item(self):
|
||||||
# show this view on the page instead of the node's view
|
# show this view on the page instead of the node's view
|
||||||
|
@ -115,6 +122,7 @@ class ObjectForm(NodeView):
|
||||||
instance = self.instance
|
instance = self.instance
|
||||||
instance.template = self.schema
|
instance.template = self.schema
|
||||||
data = instance.applyTemplate(mode='edit')
|
data = instance.applyTemplate(mode='edit')
|
||||||
|
form = self.request.form
|
||||||
for k, v in data.items():
|
for k, v in data.items():
|
||||||
#overwrite data with values from request.form
|
#overwrite data with values from request.form
|
||||||
if k in self.request.form:
|
if k in self.request.form:
|
||||||
|
@ -256,6 +264,23 @@ class CreateObjectForm(ObjectForm):
|
||||||
return ()
|
return ()
|
||||||
|
|
||||||
|
|
||||||
|
class CreateObjectPopup(CreateObjectForm):
|
||||||
|
|
||||||
|
isInnerHtml = False
|
||||||
|
|
||||||
|
def update(self):
|
||||||
|
super(ObjectForm, self).update()
|
||||||
|
self.registerDojo()
|
||||||
|
cm = self.controller.macros
|
||||||
|
jsCall = ('dojo.require("dojo.widget.Dialog");'
|
||||||
|
'dojo.require("dojo.widget.ComboBox");')
|
||||||
|
cm.register('js-execute', jsCall, jsCall=jsCall)
|
||||||
|
return True
|
||||||
|
|
||||||
|
def pageBody(self):
|
||||||
|
return popupTemplate(self)
|
||||||
|
|
||||||
|
|
||||||
class CreateConceptForm(CreateObjectForm):
|
class CreateConceptForm(CreateObjectForm):
|
||||||
|
|
||||||
defaultTitle = u'Create Concept, Type = '
|
defaultTitle = u'Create Concept, Type = '
|
||||||
|
|
|
@ -223,17 +223,12 @@
|
||||||
|
|
||||||
|
|
||||||
<tr metal:define-macro="buttons" i18n:domain="">
|
<tr metal:define-macro="buttons" i18n:domain="">
|
||||||
<td colspan="5"
|
<td colspan="5">
|
||||||
tal:define="dlgName view/dialog_name">
|
|
||||||
<input value="Save" type="submit"
|
<input value="Save" type="submit"
|
||||||
i18n:attributes="value"
|
i18n:attributes="value"
|
||||||
xtal:attributes="onClick
|
tal:attributes="onClick view/closeAction">
|
||||||
string:return submitReplacingOrReloading(
|
|
||||||
'form_fields', 'dialog_form',
|
|
||||||
'${view/virtualTargetUrl}/@@inner_form.html')"
|
|
||||||
tal:attributes="onClick string:dialogs['$dlgName'].hide()">
|
|
||||||
<input type="button" value="Cancel" onClick="dlg.hide();"
|
<input type="button" value="Cancel" onClick="dlg.hide();"
|
||||||
i18n:attributes="value"
|
i18n:attributes="value"
|
||||||
tal:attributes="onClick string:dialogs['$dlgName'].hide()">
|
tal:attributes="onClick view/closeAction">
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
30
browser/popup.pt
Normal file
30
browser/popup.pt
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
<tal:block i18n:domain="loops">
|
||||||
|
<div class="body"
|
||||||
|
metal:define-macro="body"
|
||||||
|
tal:define="controller nocall:view/controller;
|
||||||
|
resourceBase controller/resourceBase;">
|
||||||
|
|
||||||
|
<div id="content" metal:define-macro="content" style="padding-left: 2em">
|
||||||
|
<div metal:define-slot="actions"></div>
|
||||||
|
<div metal:define-slot="message"></div>
|
||||||
|
<metal:content define-slot="content">
|
||||||
|
<tal:content define="item nocall:view/item;
|
||||||
|
level level|python: 1;
|
||||||
|
macro item/macro;"
|
||||||
|
condition="macro">
|
||||||
|
<metal:block use-macro="macro" />
|
||||||
|
</tal:content>
|
||||||
|
</metal:content>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="footer" class="footer" define-macro="footer">
|
||||||
|
<metal:footer define-slot="footer">
|
||||||
|
Powered by <b><a href="http://www.python.org">Python</a></b> ·
|
||||||
|
<b><a href="http://wiki.zope.org/zope3">Zope 3</a></b> ·
|
||||||
|
<b><a href="http://loops.cy55.de">
|
||||||
|
loops</a></b>.
|
||||||
|
</metal:footer>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</tal:block>
|
Loading…
Add table
Reference in a new issue