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:
parent
b974605dfb
commit
8be994c2f0
6 changed files with 52 additions and 18 deletions
|
@ -662,7 +662,7 @@ on data provided in this form:
|
||||||
>>> view = NodeView(m112, request)
|
>>> view = NodeView(m112, request)
|
||||||
>>> cont = CreateObject(view, request)
|
>>> cont = CreateObject(view, request)
|
||||||
>>> cont.update()
|
>>> cont.update()
|
||||||
True
|
False
|
||||||
>>> sorted(resources.keys())
|
>>> sorted(resources.keys())
|
||||||
[...u'test_note'...]
|
[...u'test_note'...]
|
||||||
>>> resources['test_note'].title
|
>>> resources['test_note'].title
|
||||||
|
@ -681,7 +681,7 @@ created object:
|
||||||
>>> view = NodeView(m112, request)
|
>>> view = NodeView(m112, request)
|
||||||
>>> cont = CreateObject(view, request)
|
>>> cont = CreateObject(view, request)
|
||||||
>>> cont.update()
|
>>> cont.update()
|
||||||
True
|
False
|
||||||
>>> sorted(resources.keys())
|
>>> sorted(resources.keys())
|
||||||
[...u'test_note-2'...]
|
[...u'test_note-2'...]
|
||||||
>>> note = resources['test_note-2']
|
>>> note = resources['test_note-2']
|
||||||
|
@ -711,7 +711,7 @@ Editing an Object
|
||||||
>>> view = NodeView(m112, request)
|
>>> view = NodeView(m112, request)
|
||||||
>>> cont = EditObject(view, request)
|
>>> cont = EditObject(view, request)
|
||||||
>>> cont.update()
|
>>> cont.update()
|
||||||
True
|
False
|
||||||
>>> resources['test_note'].title
|
>>> resources['test_note'].title
|
||||||
u'Test Note - changed'
|
u'Test Note - changed'
|
||||||
|
|
||||||
|
|
|
@ -257,16 +257,19 @@ class BaseView(GenericView):
|
||||||
|
|
||||||
@Lazy
|
@Lazy
|
||||||
def versionId(self):
|
def versionId(self):
|
||||||
context = self.context
|
versionable = IVersionable(self.context, None)
|
||||||
versionable = IVersionable(context, None)
|
|
||||||
return versionable and versionable.versionId or ''
|
return versionable and versionable.versionId or ''
|
||||||
|
|
||||||
@Lazy
|
@Lazy
|
||||||
def currentVersionId(self):
|
def currentVersionId(self):
|
||||||
context = self.context
|
versionable = IVersionable(self.context, None)
|
||||||
versionable = IVersionable(context, None)
|
|
||||||
return versionable and versionable.currentVersion.versionId or ''
|
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
|
@Lazy
|
||||||
def versionInfo(self):
|
def versionInfo(self):
|
||||||
if not self.useVersioning:
|
if not self.useVersioning:
|
||||||
|
|
|
@ -257,7 +257,9 @@ class EditObject(FormController):
|
||||||
self.view.virtualTargetObject = obj
|
self.view.virtualTargetObject = obj
|
||||||
self.request.annotations['loops.view']['target'] = obj
|
self.request.annotations['loops.view']['target'] = obj
|
||||||
self.updateFields(obj)
|
self.updateFields(obj)
|
||||||
return True
|
self.request.response.redirect(self.view.virtualTargetUrl)
|
||||||
|
return False
|
||||||
|
#return True
|
||||||
|
|
||||||
@Lazy
|
@Lazy
|
||||||
def loopsRoot(self):
|
def loopsRoot(self):
|
||||||
|
@ -351,5 +353,7 @@ class CreateObject(EditObject):
|
||||||
obj.resourceType = self.loopsRoot.loopsTraverse(tc)
|
obj.resourceType = self.loopsRoot.loopsTraverse(tc)
|
||||||
notify(ObjectCreatedEvent(obj))
|
notify(ObjectCreatedEvent(obj))
|
||||||
self.updateFields(obj)
|
self.updateFields(obj)
|
||||||
return True
|
self.request.response.redirect(self.view.virtualTargetUrl)
|
||||||
|
return False
|
||||||
|
#return True
|
||||||
|
|
||||||
|
|
|
@ -159,7 +159,7 @@
|
||||||
<input dojoType="comboBox" mode="remote" autoComplete="False"
|
<input dojoType="comboBox" mode="remote" autoComplete="False"
|
||||||
name="concept.search.text" id="concept.search.text"
|
name="concept.search.text" id="concept.search.text"
|
||||||
tal:attributes="dataUrl
|
tal:attributes="dataUrl
|
||||||
string:${context/@@absolute_url}/listConceptsForComboBox.js?searchString=%{searchString}&searchType=" />
|
string:listConceptsForComboBox.js?searchString=%{searchString}&searchType=" />
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<input type="button" value="Select"
|
<input type="button" value="Select"
|
||||||
|
|
|
@ -29,24 +29,44 @@ function submitReplacing(targetId, formId, actionUrl) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function inlineEdit(id, saveUrl) {
|
function inlineEdit(id, saveUrl) {
|
||||||
//dojo.require('dojo.widget.Editor');
|
|
||||||
var iconNode = dojo.byId('inlineedit_icon');
|
var iconNode = dojo.byId('inlineedit_icon');
|
||||||
iconNode.style.visibility = 'hidden';
|
iconNode.style.visibility = 'hidden';
|
||||||
//var editor = dojo.widget.fromScript('Editor',
|
|
||||||
editor = dojo.widget.createWidget('Editor',
|
editor = dojo.widget.createWidget('Editor',
|
||||||
{items: ['save', '|', 'formatblock', '|',
|
{items: ['save', '|', 'formatblock', '|',
|
||||||
'insertunorderedlist', 'insertorderedlist', '|',
|
'insertunorderedlist', 'insertorderedlist', '|',
|
||||||
'bold', 'italic', '|', 'createLink', 'insertimage'],
|
'bold', 'italic', '|', 'createLink', 'insertimage'],
|
||||||
saveUrl: saveUrl,
|
saveUrl: saveUrl,
|
||||||
closeOnSave: true,
|
//closeOnSave: true,
|
||||||
htmlEditing: true,
|
htmlEditing: true
|
||||||
//onClose: function() {
|
//onClose: function() {
|
||||||
onSave: function() {
|
/* onSave: function() {
|
||||||
this.disableToolbar(true);
|
this.disableToolbar(true);
|
||||||
iconNode.style.visibility = 'visible';
|
iconNode.style.visibility = 'visible';
|
||||||
//window.location.reload();
|
//window.location.reload();
|
||||||
}
|
}*/
|
||||||
}, dojo.byId(id));
|
}, 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");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -342,7 +342,8 @@ class NodeView(BaseView):
|
||||||
cm = self.controller.macros
|
cm = self.controller.macros
|
||||||
jsCall = 'dojo.require("dojo.widget.Editor")'
|
jsCall = 'dojo.require("dojo.widget.Editor")'
|
||||||
cm.register('js-execute', jsCall, jsCall=jsCall)
|
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):
|
def externalEdit(self):
|
||||||
target = self.virtualTargetObject
|
target = self.virtualTargetObject
|
||||||
|
@ -383,6 +384,9 @@ class InlineEdit(NodeView):
|
||||||
|
|
||||||
def save(self):
|
def save(self):
|
||||||
target = self.virtualTargetObject
|
target = self.virtualTargetObject
|
||||||
|
ti = IType(target).typeInterface
|
||||||
|
if ti is not None:
|
||||||
|
target = ti(target)
|
||||||
data = self.request.form['editorContent']
|
data = self.request.form['editorContent']
|
||||||
if type(data) != unicode:
|
if type(data) != unicode:
|
||||||
try:
|
try:
|
||||||
|
@ -393,6 +397,9 @@ class InlineEdit(NodeView):
|
||||||
# data = data.decode('UTF-8')
|
# data = data.decode('UTF-8')
|
||||||
target.data = data
|
target.data = data
|
||||||
notify(ObjectModifiedEvent(target, Attributes(IResource, '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):
|
class CreateObject(NodeView, Form):
|
||||||
|
|
Loading…
Add table
Reference in a new issue