forked from 0x2620/pandora
make per item document info editable if user can edit item
This commit is contained in:
parent
c19f80f2e5
commit
df44b0daf4
4 changed files with 11 additions and 6 deletions
|
@ -98,12 +98,13 @@ class Document(models.Model):
|
||||||
def get_id(self):
|
def get_id(self):
|
||||||
return ox.toAZ(self.id)
|
return ox.toAZ(self.id)
|
||||||
|
|
||||||
def editable(self, user):
|
def editable(self, user, item=None):
|
||||||
if not user or user.is_anonymous():
|
if not user or user.is_anonymous():
|
||||||
return False
|
return False
|
||||||
if self.user == user or \
|
if self.user == user or \
|
||||||
user.is_staff or \
|
user.is_staff or \
|
||||||
user.get_profile().capability('canEditDocuments') == True:
|
user.get_profile().capability('canEditDocuments') == True or \
|
||||||
|
(item and item.editable(user)):
|
||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
|
@ -82,8 +82,8 @@ def editDocument(request):
|
||||||
item = 'item' in data and Item.objects.get(itemId=data['item']) or None
|
item = 'item' in data and Item.objects.get(itemId=data['item']) or None
|
||||||
if data['id']:
|
if data['id']:
|
||||||
document = models.Document.get(data['id'])
|
document = models.Document.get(data['id'])
|
||||||
if document.editable(request.user):
|
if document.editable(request.user, item):
|
||||||
document.edit(data, request.user, item=item)
|
document.edit(data, request.user, item)
|
||||||
document.save()
|
document.save()
|
||||||
response['data'] = document.json(user=request.user, item=item)
|
response['data'] = document.json(user=request.user, item=item)
|
||||||
else:
|
else:
|
||||||
|
|
|
@ -520,7 +520,8 @@ pandora.ui.documentsPanel = function(options) {
|
||||||
var $name, $description,
|
var $name, $description,
|
||||||
item = $list.value($list.options('selected')[0]),
|
item = $list.value($list.options('selected')[0]),
|
||||||
editable = item.user == pandora.user.username
|
editable = item.user == pandora.user.username
|
||||||
|| pandora.site.capabilities.canEditDocuments[pandora.user.level],
|
|| pandora.site.capabilities.canEditDocuments[pandora.user.level]
|
||||||
|
|| options.editable,
|
||||||
labelWidth = 80,
|
labelWidth = 80,
|
||||||
width = ui.documentSize - 16 - Ox.UI.SCROLLBAR_SIZE;
|
width = ui.documentSize - 16 - Ox.UI.SCROLLBAR_SIZE;
|
||||||
return isItemView
|
return isItemView
|
||||||
|
|
|
@ -68,7 +68,10 @@ pandora.ui.item = function() {
|
||||||
} else if (pandora.user.ui.itemView == 'documents') {
|
} else if (pandora.user.ui.itemView == 'documents') {
|
||||||
|
|
||||||
pandora.$ui.contentPanel.replaceElement(1,
|
pandora.$ui.contentPanel.replaceElement(1,
|
||||||
pandora.$ui.documents = pandora.ui.documentsPanel({isItemView: true})
|
pandora.$ui.documents = pandora.ui.documentsPanel({
|
||||||
|
editable: result.data.editable,
|
||||||
|
isItemView: true
|
||||||
|
})
|
||||||
);
|
);
|
||||||
|
|
||||||
} else if (pandora.user.ui.itemView == 'player') {
|
} else if (pandora.user.ui.itemView == 'player') {
|
||||||
|
|
Loading…
Reference in a new issue