diff --git a/browser/concept.py b/browser/concept.py
index c1992fb..3e003d1 100644
--- a/browser/concept.py
+++ b/browser/concept.py
@@ -99,6 +99,8 @@ class ConceptConfigureView(ConceptView):
self.context.deassignChild(concept, [predicate])
elif qualifier == 'resources':
self.context.deassignResource(concept, [predicate])
+ elif qualifier == 'concepts':
+ self.context.deassignConcept(concept, [predicate])
else:
raise(BadRequest, 'Illegal qualifier: %s.' % qualifier)
else:
diff --git a/browser/configure.zcml b/browser/configure.zcml
index 49b10a3..bb3c7bb 100644
--- a/browser/configure.zcml
+++ b/browser/configure.zcml
@@ -177,8 +177,8 @@
permission="zope.ManageContent">
@@ -373,14 +373,14 @@
diff --git a/browser/node.py b/browser/node.py
index 4e970c8..3c21bf8 100644
--- a/browser/node.py
+++ b/browser/node.py
@@ -49,6 +49,18 @@ class NodeView(object):
self.context = context
self.request = request
+ @Lazy
+ def title(self):
+ return self.context.title
+
+ @Lazy
+ def nodeType(self):
+ return self.context.nodeType
+
+ @Lazy
+ def url(self):
+ return zapi.absoluteURL(self.context, self.request)
+
def render(self, text=None):
if text is None:
text = self.context.body
@@ -111,10 +123,6 @@ class NodeView(object):
return 'imagebody'
return 'filebody'
- @Lazy
- def url(self):
- return zapi.absoluteURL(self.context, self.request)
-
@Lazy
def editable(self):
return canWrite(self.context, 'body')
diff --git a/browser/node_target.pt b/browser/node_target.pt
index 6b2065b..7aa055e 100644
--- a/browser/node_target.pt
+++ b/browser/node_target.pt
@@ -14,7 +14,7 @@
Currently assigned target:
Document xy
diff --git a/browser/resource.py b/browser/resource.py
index aa6a3c6..e7e5a6e 100644
--- a/browser/resource.py
+++ b/browser/resource.py
@@ -33,6 +33,7 @@ from zope.security.proxy import removeSecurityProxy
from loops.interfaces import IDocument, IMediaAsset
from loops.browser.common import BaseView
from loops.browser.concept import ConceptRelationView, ConceptConfigureView
+from loops.browser.node import NodeView
renderingFactories = {
'text/plain': 'zope.source.plaintext',
@@ -49,6 +50,10 @@ class ResourceView(BaseView):
for r in self.context.getConceptRelations():
yield ConceptRelationView(r, self.request)
+ def clients(self):
+ for node in self.context.getClients():
+ yield NodeView(node, self.request)
+
class ResourceConfigureView(ResourceView, ConceptConfigureView):
diff --git a/browser/resource_concepts.pt b/browser/resource_configure.pt
similarity index 69%
rename from browser/resource_concepts.pt
rename to browser/resource_configure.pt
index 14edff1..c6383e3 100644
--- a/browser/resource_concepts.pt
+++ b/browser/resource_configure.pt
@@ -9,15 +9,39 @@
+ buttonText string:Remove Concepts;"
+ style="float:left; padding-right:20px">
+
+
+
+