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', [])
|
tokens = request.get('tokens', [])
|
||||||
for token in tokens:
|
for token in tokens:
|
||||||
parts = token.split(':')
|
parts = token.split(':')
|
||||||
token = parts[0]
|
cToken = parts[0]
|
||||||
if len(parts) > 1:
|
if len(parts) > 1:
|
||||||
relToken = parts[1]
|
relToken = parts[1]
|
||||||
concept = self.loopsRoot.loopsTraverse(token)
|
concept = self.loopsRoot.loopsTraverse(cToken)
|
||||||
if action == 'assign':
|
if action == 'assign':
|
||||||
assignAs = request.get('assignAs', 'child')
|
assignAs = request.get('assignAs', 'child')
|
||||||
predicate = request.get('predicate') or None
|
predicate = request.get('predicate') or None
|
||||||
|
@ -448,23 +448,40 @@ class ConceptConfigureView(ConceptView):
|
||||||
order, relevance)
|
order, relevance)
|
||||||
else:
|
else:
|
||||||
raise(BadRequest, 'Illegal assignAs parameter: %s.' % assignAs)
|
raise(BadRequest, 'Illegal assignAs parameter: %s.' % assignAs)
|
||||||
elif action == 'remove':
|
elif action in( 'remove',):
|
||||||
predicate = self.loopsRoot.loopsTraverse(relToken)
|
predicate = self.loopsRoot.loopsTraverse(relToken)
|
||||||
qualifier = request.get('qualifier')
|
qualifier = request.get('qualifier')
|
||||||
if qualifier == 'parents':
|
if 'form.button.submit' in request:
|
||||||
self.context.deassignParent(concept, [predicate])
|
if predicate == self.typePredicate:
|
||||||
elif qualifier == 'children':
|
continue
|
||||||
self.context.deassignChild(concept, [predicate])
|
if qualifier == 'parents':
|
||||||
elif qualifier == 'resources':
|
self.context.deassignParent(concept, [predicate])
|
||||||
self.context.deassignResource(concept, [predicate])
|
elif qualifier == 'children':
|
||||||
elif qualifier == 'concepts':
|
self.context.deassignChild(concept, [predicate])
|
||||||
self.context.deassignConcept(concept, [predicate])
|
elif qualifier == 'resources':
|
||||||
else:
|
self.context.deassignResource(concept, [predicate])
|
||||||
raise(BadRequest, 'Illegal qualifier: %s.' % qualifier)
|
elif qualifier == 'concepts':
|
||||||
|
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:
|
else:
|
||||||
raise(BadRequest, 'Illegal action: %s.' % action)
|
raise(BadRequest, 'Illegal action: %s.' % action)
|
||||||
return True
|
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):
|
def createAndAssign(self):
|
||||||
request = self.request
|
request = self.request
|
||||||
name = request.get('create.name')
|
name = request.get('create.name')
|
||||||
|
|
|
@ -5,7 +5,10 @@
|
||||||
|
|
||||||
<div metal:fill-slot="body">
|
<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;
|
<div tal:define="items view/parents;
|
||||||
action string:remove;
|
action string:remove;
|
||||||
|
|
|
@ -5,7 +5,10 @@
|
||||||
|
|
||||||
<div metal:fill-slot="body">
|
<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;
|
<div tal:define="items view/resources;
|
||||||
action string:remove;
|
action string:remove;
|
||||||
|
|
|
@ -749,5 +749,6 @@
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<include package=".skin" />
|
<include package=".skin" />
|
||||||
|
<include package=".lobo" />
|
||||||
|
|
||||||
</configure>
|
</configure>
|
||||||
|
|
|
@ -36,6 +36,11 @@
|
||||||
<td><span i18n:translate="">Creators</span>:</td>
|
<td><span i18n:translate="">Creators</span>:</td>
|
||||||
<td tal:content="item/creators"></td>
|
<td tal:content="item/creators"></td>
|
||||||
</tr>
|
</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>
|
<tr>
|
||||||
<td colspan="2"><br />
|
<td colspan="2"><br />
|
||||||
<input type="button" value="Close" onclick="closeDialog()"
|
<input type="button" value="Close" onclick="closeDialog()"
|
||||||
|
|
|
@ -48,7 +48,7 @@
|
||||||
<td class="field">
|
<td class="field">
|
||||||
<input class="formSelection"
|
<input class="formSelection"
|
||||||
type="checkbox" name="tokens:list" value=""
|
type="checkbox" name="tokens:list" value=""
|
||||||
tal:condition="not:item/isProtected|nothing"
|
xxtal:condition="not:item/isProtected|nothing"
|
||||||
tal:attributes="value item/token" />
|
tal:attributes="value item/token" />
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
|
@ -78,14 +78,16 @@
|
||||||
<span tal:condition="not:editable"
|
<span tal:condition="not:editable"
|
||||||
tal:content="item/order" />
|
tal:content="item/order" />
|
||||||
<input size="1"
|
<input size="1"
|
||||||
tal:attributes="value item/order"
|
tal:attributes="value item/order;
|
||||||
|
name string:order.${item/token}"
|
||||||
tal:condition="editable" />
|
tal:condition="editable" />
|
||||||
</td>
|
</td>
|
||||||
<td style="text-align: center">
|
<td style="text-align: center">
|
||||||
<span tal:condition="not:editable"
|
<span tal:condition="not:editable"
|
||||||
tal:content="item/relevance" />
|
tal:content="item/relevance" />
|
||||||
<input size="1"
|
<input size="1"
|
||||||
tal:attributes="value item/relevance"
|
tal:attributes="value item/relevance;
|
||||||
|
name string:relevance.${item/token}"
|
||||||
tal:condition="editable" />
|
tal:condition="editable" />
|
||||||
</td>
|
</td>
|
||||||
</tal:relation>
|
</tal:relation>
|
||||||
|
@ -97,10 +99,12 @@
|
||||||
i18n:attributes="value"
|
i18n:attributes="value"
|
||||||
tal:attributes="value buttonText" />
|
tal:attributes="value buttonText" />
|
||||||
<metal:buttons define-slot="specialButtons" />
|
<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"
|
<input class="context" type="submit" name="form.button.change_relations"
|
||||||
i18n:attributes="value" />-->
|
value="Change Relations"
|
||||||
|
i18n:attributes="value" />
|
||||||
|
</tal:change>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
|
@ -277,10 +277,10 @@ class ResourceConfigureView(ResourceView, ConceptConfigureView):
|
||||||
tokens = request.get('tokens', [])
|
tokens = request.get('tokens', [])
|
||||||
for token in tokens:
|
for token in tokens:
|
||||||
parts = token.split(':')
|
parts = token.split(':')
|
||||||
token = parts[0]
|
cToken = parts[0]
|
||||||
if len(parts) > 1:
|
if len(parts) > 1:
|
||||||
relToken = parts[1]
|
relToken = parts[1]
|
||||||
concept = self.loopsRoot.loopsTraverse(token)
|
concept = self.loopsRoot.loopsTraverse(cToken)
|
||||||
if action == 'assign':
|
if action == 'assign':
|
||||||
predicate = request.get('predicate') or None
|
predicate = request.get('predicate') or None
|
||||||
order = int(request.get('order') or 0)
|
order = int(request.get('order') or 0)
|
||||||
|
@ -290,9 +290,17 @@ class ResourceConfigureView(ResourceView, ConceptConfigureView):
|
||||||
self.loopsRoot.loopsTraverse(predicate))
|
self.loopsRoot.loopsTraverse(predicate))
|
||||||
self.context.assignConcept(removeSecurityProxy(concept), predicate,
|
self.context.assignConcept(removeSecurityProxy(concept), predicate,
|
||||||
order, relevance)
|
order, relevance)
|
||||||
elif action == 'remove':
|
elif action in ('remove',):
|
||||||
predicate = self.loopsRoot.loopsTraverse(relToken)
|
predicate = self.loopsRoot.loopsTraverse(relToken)
|
||||||
self.context.deassignConcept(concept, [predicate])
|
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
|
return True
|
||||||
|
|
||||||
def search(self):
|
def search(self):
|
||||||
|
|
Loading…
Add table
Reference in a new issue