[gen] Improved performance of the Ref field and added an icon for dissociating referred objects.
This commit is contained in:
parent
872b77208b
commit
9954edf71a
9 changed files with 71 additions and 19 deletions
|
@ -16,7 +16,7 @@ except ImportError:
|
|||
_noroles = []
|
||||
|
||||
# Errors -----------------------------------------------------------------------
|
||||
jsMessages = ('no_elem_selected', 'delete_confirm')
|
||||
jsMessages = ('no_elem_selected', 'delete_confirm', 'unlink_confirm')
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
class ToolMixin(BaseMixin):
|
||||
|
|
|
@ -106,6 +106,7 @@ class BaseMixin:
|
|||
self.getParentNode().manage_delObjects([self.id])
|
||||
|
||||
def onDelete(self):
|
||||
'''Called when an object deletion is triggered from the ui.'''
|
||||
rq = self.REQUEST
|
||||
self.delete()
|
||||
if self.getUrl(rq['HTTP_REFERER'],mode='raw') ==self.getUrl(mode='raw'):
|
||||
|
@ -117,6 +118,18 @@ class BaseMixin:
|
|||
self.say(self.translate('delete_done'))
|
||||
self.goto(urlBack)
|
||||
|
||||
def onUnlink(self):
|
||||
'''Called when an object unlinking is triggered from the ui.'''
|
||||
rq = self.REQUEST
|
||||
tool = self.getTool()
|
||||
sourceObject = tool.getObject(rq['sourceUid'])
|
||||
targetObject = tool.getObject(rq['targetUid'])
|
||||
field = sourceObject.getAppyType(rq['fieldName'])
|
||||
field.unlinkObject(sourceObject, targetObject)
|
||||
urlBack = self.getUrl(rq['HTTP_REFERER'])
|
||||
self.say(self.translate('unlink_done'))
|
||||
self.goto(urlBack)
|
||||
|
||||
def onCreate(self):
|
||||
'''This method is called when a user wants to create a root object in
|
||||
the "data" folder or an object through a reference field. A temporary
|
||||
|
@ -1006,7 +1019,7 @@ class BaseMixin:
|
|||
return True
|
||||
|
||||
def mayDelete(self):
|
||||
'''May the currently logged user delete this object?.'''
|
||||
'''May the currently logged user delete this object?'''
|
||||
res = self.allows('Delete objects')
|
||||
if not res: return
|
||||
# An additional, user-defined condition, may refine the base permission.
|
||||
|
@ -1014,9 +1027,10 @@ class BaseMixin:
|
|||
if hasattr(appyObj, 'mayDelete'): return appyObj.mayDelete()
|
||||
return True
|
||||
|
||||
def mayEdit(self):
|
||||
'''May the currently logged user edit this object?.'''
|
||||
res = self.allows('Modify portal content')
|
||||
def mayEdit(self, permission='Modify portal content'):
|
||||
'''May the currently logged user edit this object? p_perm can be a
|
||||
field-specific permission.'''
|
||||
res = self.allows(permission)
|
||||
if not res: return
|
||||
# An additional, user-defined condition, may refine the base permission.
|
||||
appyObj = self.appy()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue