improvements on form handling and inline editing

git-svn-id: svn://svn.cy55.de/Zope3/src/loops/trunk@1667 fd906abe-77d9-0310-91a1-e0d9ade77398
This commit is contained in:
helmutm 2007-03-26 10:43:15 +00:00
parent b974605dfb
commit 8be994c2f0
6 changed files with 52 additions and 18 deletions

View file

@ -662,7 +662,7 @@ on data provided in this form:
>>> view = NodeView(m112, request)
>>> cont = CreateObject(view, request)
>>> cont.update()
True
False
>>> sorted(resources.keys())
[...u'test_note'...]
>>> resources['test_note'].title
@ -681,7 +681,7 @@ created object:
>>> view = NodeView(m112, request)
>>> cont = CreateObject(view, request)
>>> cont.update()
True
False
>>> sorted(resources.keys())
[...u'test_note-2'...]
>>> note = resources['test_note-2']
@ -711,7 +711,7 @@ Editing an Object
>>> view = NodeView(m112, request)
>>> cont = EditObject(view, request)
>>> cont.update()
True
False
>>> resources['test_note'].title
u'Test Note - changed'

View file

@ -257,16 +257,19 @@ class BaseView(GenericView):
@Lazy
def versionId(self):
context = self.context
versionable = IVersionable(context, None)
versionable = IVersionable(self.context, None)
return versionable and versionable.versionId or ''
@Lazy
def currentVersionId(self):
context = self.context
versionable = IVersionable(context, None)
versionable = IVersionable(self.context, None)
return versionable and versionable.currentVersion.versionId or ''
@Lazy
def hasVersions(self):
versionable = IVersionable(self.context, None)
return versionable and len(versionable.versions) > 1 or False
@Lazy
def versionInfo(self):
if not self.useVersioning:

View file

@ -257,7 +257,9 @@ class EditObject(FormController):
self.view.virtualTargetObject = obj
self.request.annotations['loops.view']['target'] = obj
self.updateFields(obj)
return True
self.request.response.redirect(self.view.virtualTargetUrl)
return False
#return True
@Lazy
def loopsRoot(self):
@ -351,5 +353,7 @@ class CreateObject(EditObject):
obj.resourceType = self.loopsRoot.loopsTraverse(tc)
notify(ObjectCreatedEvent(obj))
self.updateFields(obj)
return True
self.request.response.redirect(self.view.virtualTargetUrl)
return False
#return True

View file

@ -159,7 +159,7 @@
<input dojoType="comboBox" mode="remote" autoComplete="False"
name="concept.search.text" id="concept.search.text"
tal:attributes="dataUrl
string:${context/@@absolute_url}/listConceptsForComboBox.js?searchString=%{searchString}&searchType=" />
string:listConceptsForComboBox.js?searchString=%{searchString}&searchType=" />
</td>
<td>
<input type="button" value="Select"

View file

@ -29,24 +29,44 @@ function submitReplacing(targetId, formId, actionUrl) {
}
function inlineEdit(id, saveUrl) {
//dojo.require('dojo.widget.Editor');
var iconNode = dojo.byId('inlineedit_icon');
iconNode.style.visibility = 'hidden';
//var editor = dojo.widget.fromScript('Editor',
editor = dojo.widget.createWidget('Editor',
{items: ['save', '|', 'formatblock', '|',
'insertunorderedlist', 'insertorderedlist', '|',
'bold', 'italic', '|', 'createLink', 'insertimage'],
saveUrl: saveUrl,
closeOnSave: true,
htmlEditing: true,
//onClose: function() {
onSave: function() {
//closeOnSave: true,
htmlEditing: true
//onClose: function() {
/* onSave: function() {
this.disableToolbar(true);
iconNode.style.visibility = 'visible';
//window.location.reload();
}*/
}, dojo.byId(id));
editor._save = function (e) {
if (!this._richText.isClosed) {
if (this.saveUrl.length) {
var content = {};
this._richText.contentFilters = [];
content[this.saveArgName] = this.getHtml();
content['version'] = 'this';
dojo.io.bind({method:this.saveMethod,
url:this.saveUrl,
content:content,
handle:function(type, data, ti, kwargs) {
location.reload(false);
}
}); //alert('save');
} else {
dojo.debug("please set a saveUrl for the editor");
}
if (this.closeOnSave) {
this._richText.close(e.getName().toLowerCase() == "save");
}
}
}, dojo.byId(id));
}
return false;
}

View file

@ -342,7 +342,8 @@ class NodeView(BaseView):
cm = self.controller.macros
jsCall = 'dojo.require("dojo.widget.Editor")'
cm.register('js-execute', jsCall, jsCall=jsCall)
return 'return inlineEdit("%s", "%s/inline_save")' % (id, self.virtualTargetUrl)
return ('return inlineEdit("%s", "%s/inline_save")'
% (id, self.virtualTargetUrl))
def externalEdit(self):
target = self.virtualTargetObject
@ -383,6 +384,9 @@ class InlineEdit(NodeView):
def save(self):
target = self.virtualTargetObject
ti = IType(target).typeInterface
if ti is not None:
target = ti(target)
data = self.request.form['editorContent']
if type(data) != unicode:
try:
@ -393,6 +397,9 @@ class InlineEdit(NodeView):
# data = data.decode('UTF-8')
target.data = data
notify(ObjectModifiedEvent(target, Attributes(IResource, 'data')))
#versionParam = self.hasVersions and '?version=this' or ''
#self.request.response.redirect(self.virtualTargetUrl + versionParam)
return 'OK'
class CreateObject(NodeView, Form):