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)
|
||||
>>> 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'
|
||||
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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):
|
||||
|
|
Loading…
Add table
Reference in a new issue