provide editing of relation properties (order, relevance) in management interface
git-svn-id: svn://svn.cy55.de/Zope3/src/loops/trunk@3955 fd906abe-77d9-0310-91a1-e0d9ade77398
This commit is contained in:
parent
59ea8b368c
commit
ae534d7bfc
7 changed files with 67 additions and 26 deletions
|
@ -425,10 +425,10 @@ class ConceptConfigureView(ConceptView):
|
|||
tokens = request.get('tokens', [])
|
||||
for token in tokens:
|
||||
parts = token.split(':')
|
||||
token = parts[0]
|
||||
cToken = parts[0]
|
||||
if len(parts) > 1:
|
||||
relToken = parts[1]
|
||||
concept = self.loopsRoot.loopsTraverse(token)
|
||||
concept = self.loopsRoot.loopsTraverse(cToken)
|
||||
if action == 'assign':
|
||||
assignAs = request.get('assignAs', 'child')
|
||||
predicate = request.get('predicate') or None
|
||||
|
@ -448,9 +448,12 @@ class ConceptConfigureView(ConceptView):
|
|||
order, relevance)
|
||||
else:
|
||||
raise(BadRequest, 'Illegal assignAs parameter: %s.' % assignAs)
|
||||
elif action == 'remove':
|
||||
elif action in( 'remove',):
|
||||
predicate = self.loopsRoot.loopsTraverse(relToken)
|
||||
qualifier = request.get('qualifier')
|
||||
if 'form.button.submit' in request:
|
||||
if predicate == self.typePredicate:
|
||||
continue
|
||||
if qualifier == 'parents':
|
||||
self.context.deassignParent(concept, [predicate])
|
||||
elif qualifier == 'children':
|
||||
|
@ -461,10 +464,24 @@ class ConceptConfigureView(ConceptView):
|
|||
self.context.deassignConcept(concept, [predicate])
|
||||
else:
|
||||
raise(BadRequest, 'Illegal qualifier: %s.' % qualifier)
|
||||
elif 'form.button.change_relations' in request:
|
||||
self.changeRelation(concept, predicate, qualifier,
|
||||
request.get('order.' + token),
|
||||
request.get('relevance.' + token))
|
||||
else:
|
||||
raise(BadRequest, 'Illegal action: %s.' % action)
|
||||
return True
|
||||
|
||||
def changeRelation(self, target, predicate, qualifier, order, relevance):
|
||||
methodNames = dict(parents='getParentRelations',
|
||||
children='getChildRelations',
|
||||
resources='getResourceRelations',
|
||||
concepts='getConceptRelations')
|
||||
method = getattr(self.context, methodNames[qualifier])
|
||||
for r in method([predicate], target):
|
||||
r.order = int(order or 0)
|
||||
r.relevance = float(relevance or 1.0)
|
||||
|
||||
def createAndAssign(self):
|
||||
request = self.request
|
||||
name = request.get('create.name')
|
||||
|
|
|
@ -5,7 +5,10 @@
|
|||
|
||||
<div metal:fill-slot="body">
|
||||
|
||||
<h1 tal:content="context/title">Concept Title</h1><br />
|
||||
<h1 tal:content="context/title">Concept Title</h1>
|
||||
<div tal:condition="not:request/edit_relations|nothing">
|
||||
[<a href="?edit_relations=yes"
|
||||
i18n:translate="">Edit Relations</a>]</div><br />
|
||||
|
||||
<div tal:define="items view/parents;
|
||||
action string:remove;
|
||||
|
|
|
@ -5,7 +5,10 @@
|
|||
|
||||
<div metal:fill-slot="body">
|
||||
|
||||
<h1 tal:content="context/title">Concept Title</h1><br />
|
||||
<h1 tal:content="context/title">Concept Title</h1>
|
||||
<div tal:condition="not:request/edit_relations|nothing">
|
||||
[<a href="?edit_relations=yes"
|
||||
i18n:translate="">Edit Relations</a>]</div><br />
|
||||
|
||||
<div tal:define="items view/resources;
|
||||
action string:remove;
|
||||
|
|
|
@ -749,5 +749,6 @@
|
|||
/>
|
||||
|
||||
<include package=".skin" />
|
||||
<include package=".lobo" />
|
||||
|
||||
</configure>
|
||||
|
|
|
@ -36,6 +36,11 @@
|
|||
<td><span i18n:translate="">Creators</span>:</td>
|
||||
<td tal:content="item/creators"></td>
|
||||
</tr>
|
||||
<tr tal:repeat="info item/additionalInfos">
|
||||
<td><span i18n:translate=""
|
||||
tal:content="info/label">Creators</span>:</td>
|
||||
<td tal:content="info/value"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2"><br />
|
||||
<input type="button" value="Close" onclick="closeDialog()"
|
||||
|
|
|
@ -48,7 +48,7 @@
|
|||
<td class="field">
|
||||
<input class="formSelection"
|
||||
type="checkbox" name="tokens:list" value=""
|
||||
tal:condition="not:item/isProtected|nothing"
|
||||
xxtal:condition="not:item/isProtected|nothing"
|
||||
tal:attributes="value item/token" />
|
||||
</td>
|
||||
<td>
|
||||
|
@ -78,14 +78,16 @@
|
|||
<span tal:condition="not:editable"
|
||||
tal:content="item/order" />
|
||||
<input size="1"
|
||||
tal:attributes="value item/order"
|
||||
tal:attributes="value item/order;
|
||||
name string:order.${item/token}"
|
||||
tal:condition="editable" />
|
||||
</td>
|
||||
<td style="text-align: center">
|
||||
<span tal:condition="not:editable"
|
||||
tal:content="item/relevance" />
|
||||
<input size="1"
|
||||
tal:attributes="value item/relevance"
|
||||
tal:attributes="value item/relevance;
|
||||
name string:relevance.${item/token}"
|
||||
tal:condition="editable" />
|
||||
</td>
|
||||
</tal:relation>
|
||||
|
@ -97,10 +99,12 @@
|
|||
i18n:attributes="value"
|
||||
tal:attributes="value buttonText" />
|
||||
<metal:buttons define-slot="specialButtons" />
|
||||
<!--
|
||||
<tal:change condition="python: showPredicate and editable">
|
||||
|
||||
<input class="context" type="submit" name="form.button.change_relations"
|
||||
value="Change Relations"
|
||||
i18n:attributes="value" />-->
|
||||
i18n:attributes="value" />
|
||||
</tal:change>
|
||||
</div>
|
||||
</form>
|
||||
</fieldset>
|
||||
|
|
|
@ -277,10 +277,10 @@ class ResourceConfigureView(ResourceView, ConceptConfigureView):
|
|||
tokens = request.get('tokens', [])
|
||||
for token in tokens:
|
||||
parts = token.split(':')
|
||||
token = parts[0]
|
||||
cToken = parts[0]
|
||||
if len(parts) > 1:
|
||||
relToken = parts[1]
|
||||
concept = self.loopsRoot.loopsTraverse(token)
|
||||
concept = self.loopsRoot.loopsTraverse(cToken)
|
||||
if action == 'assign':
|
||||
predicate = request.get('predicate') or None
|
||||
order = int(request.get('order') or 0)
|
||||
|
@ -290,9 +290,17 @@ class ResourceConfigureView(ResourceView, ConceptConfigureView):
|
|||
self.loopsRoot.loopsTraverse(predicate))
|
||||
self.context.assignConcept(removeSecurityProxy(concept), predicate,
|
||||
order, relevance)
|
||||
elif action == 'remove':
|
||||
elif action in ('remove',):
|
||||
predicate = self.loopsRoot.loopsTraverse(relToken)
|
||||
if 'form.button.submit' in request:
|
||||
if predicate != self.typePredicate:
|
||||
self.context.deassignConcept(concept, [predicate])
|
||||
elif 'form.button.change_relations' in request:
|
||||
order = request.get('order.' + token)
|
||||
relevance = request.get('relevance.' + token)
|
||||
for r in self.context.getConceptRelations([predicate], concept):
|
||||
r.order = int(order or 0)
|
||||
r.relevance = float(relevance or 1.0)
|
||||
return True
|
||||
|
||||
def search(self):
|
||||
|
|
Loading…
Add table
Reference in a new issue