Author: bblfish
Date: Thu May 19 11:59:09 2011
New Revision: 1124695
URL: http://svn.apache.org/viewvc?rev=1124695&view=rev
Log:
because of changes to CLEREZZA-531 one must now move the fetching of relations
that can be found in remote graphs into the graph sent to the rendering engine.
This was discussed as part of CLEREZZA-447 which is why the $[WebProxy]
functionality had been added, allowing a very minimal graph to be returned by
JSR311 code which could be followed by linked data code. Fixed some html in the
person in a box view, but can't get the table to take up the whole width of the
page. How does one make a page compact?
Modified:
incubator/clerezza/trunk/parent/platform.accountcontrolpanel/platform.accountcontrolpanel.core/src/main/resources/CLEREZZA-INF/web-resources/account-control-panel/style/profile.css
incubator/clerezza/trunk/parent/platform.accountcontrolpanel/platform.accountcontrolpanel.core/src/main/scala/org/apache/clerezza/platform/accountcontrolpanel/PersonPanel.scala
incubator/clerezza/trunk/parent/platform.accountcontrolpanel/platform.accountcontrolpanel.core/src/main/scala/org/apache/clerezza/platform/accountcontrolpanel/PingBack.scala
incubator/clerezza/trunk/parent/platform.accountcontrolpanel/platform.accountcontrolpanel.core/src/main/scala/org/apache/clerezza/platform/accountcontrolpanel/ProfilePanel.scala
incubator/clerezza/trunk/parent/platform.accountcontrolpanel/platform.accountcontrolpanel.core/src/main/scala/org/apache/clerezza/platform/accountcontrolpanel/pages/person_panel.scala
incubator/clerezza/trunk/parent/platform.accountcontrolpanel/platform.accountcontrolpanel.core/src/main/scala/org/apache/clerezza/platform/accountcontrolpanel/pages/profile_panel.scala
Modified:
incubator/clerezza/trunk/parent/platform.accountcontrolpanel/platform.accountcontrolpanel.core/src/main/resources/CLEREZZA-INF/web-resources/account-control-panel/style/profile.css
URL:
http://svn.apache.org/viewvc/incubator/clerezza/trunk/parent/platform.accountcontrolpanel/platform.accountcontrolpanel.core/src/main/resources/CLEREZZA-INF/web-resources/account-control-panel/style/profile.css?rev=1124695&r1=1124694&r2=1124695&view=diff
==============================================================================
---
incubator/clerezza/trunk/parent/platform.accountcontrolpanel/platform.accountcontrolpanel.core/src/main/resources/CLEREZZA-INF/web-resources/account-control-panel/style/profile.css
(original)
+++
incubator/clerezza/trunk/parent/platform.accountcontrolpanel/platform.accountcontrolpanel.core/src/main/resources/CLEREZZA-INF/web-resources/account-control-panel/style/profile.css
Thu May 19 11:59:09 2011
@@ -19,4 +19,12 @@ td.formlabel:first-child {
td.multiline:first-child {
vertical-align: text-top;
+}
+
+img.mugshot {
+ width: 80px;
+}
+
+td.personInABox {
+ width: 100px;
}
\ No newline at end of file
Modified:
incubator/clerezza/trunk/parent/platform.accountcontrolpanel/platform.accountcontrolpanel.core/src/main/scala/org/apache/clerezza/platform/accountcontrolpanel/PersonPanel.scala
URL:
http://svn.apache.org/viewvc/incubator/clerezza/trunk/parent/platform.accountcontrolpanel/platform.accountcontrolpanel.core/src/main/scala/org/apache/clerezza/platform/accountcontrolpanel/PersonPanel.scala?rev=1124695&r1=1124694&r2=1124695&view=diff
==============================================================================
---
incubator/clerezza/trunk/parent/platform.accountcontrolpanel/platform.accountcontrolpanel.core/src/main/scala/org/apache/clerezza/platform/accountcontrolpanel/PersonPanel.scala
(original)
+++
incubator/clerezza/trunk/parent/platform.accountcontrolpanel/platform.accountcontrolpanel.core/src/main/scala/org/apache/clerezza/platform/accountcontrolpanel/PersonPanel.scala
Thu May 19 11:59:09 2011
@@ -27,8 +27,6 @@ import javax.ws.rs._
import javax.ws.rs.core.Context
import javax.ws.rs.core.UriInfo
import org.apache.clerezza.rdf.scala.utils.{EasyGraph, RichGraphNode}
-import javax.xml.crypto.dsig.keyinfo.KeyName
-import sun.awt.SunHints.Value
import collection.JavaConversions._
import org.slf4j.scala._
import org.apache.clerezza.rdf.ontologies._
@@ -68,31 +66,7 @@ class PersonPanel extends Logging {
inference.addType(kn.getSubject,FOAF.Person)
}
- //get extra info about an agent as found on the remote
profiles, to help put things in context
-/*
- This takes too much time: because TcManager is not threaded, but also
because one can't just get
- specify to only get cahced graphs. Being able to do that would allow one to
point for example to people
- who are friends of people one already knows.
-
- val extraInfo = for (kn: Triple <- profile.filter(null,
RDF.`type`, FOAF.Person)
- if kn.getSubject.isInstanceOf[UriRef];
- subj = kn.getSubject.asInstanceOf[UriRef]
- ) yield {
- try {
- tcManager.getGraph(subj)
- new RichGraphNode(subj,
tcManager.getGraph(subj)).getNodeContext
- } catch {
- case e => {
- logger.info("cought exception trying to
fetch graph "+subj,e)
- new
EasyGraph().add(subj,SKOS.note,"problem with fetching this node: "+e)
- }
- }
- }
- val result = new EasyGraph(new
UnionMGraph(inference::extraInfo.toList :_*))
-
-*/
-
-
+ //todo: if possible get a bit more info about remote profiles,
if these are in the db
//Here we make a BNode the subject of the properties as a
workaround to CLEREZZA-447
return ( inference(uriInfo.getRequestUri()) â
PLATFORM.HeadedPage
Modified:
incubator/clerezza/trunk/parent/platform.accountcontrolpanel/platform.accountcontrolpanel.core/src/main/scala/org/apache/clerezza/platform/accountcontrolpanel/PingBack.scala
URL:
http://svn.apache.org/viewvc/incubator/clerezza/trunk/parent/platform.accountcontrolpanel/platform.accountcontrolpanel.core/src/main/scala/org/apache/clerezza/platform/accountcontrolpanel/PingBack.scala?rev=1124695&r1=1124694&r2=1124695&view=diff
==============================================================================
---
incubator/clerezza/trunk/parent/platform.accountcontrolpanel/platform.accountcontrolpanel.core/src/main/scala/org/apache/clerezza/platform/accountcontrolpanel/PingBack.scala
(original)
+++
incubator/clerezza/trunk/parent/platform.accountcontrolpanel/platform.accountcontrolpanel.core/src/main/scala/org/apache/clerezza/platform/accountcontrolpanel/PingBack.scala
Thu May 19 11:59:09 2011
@@ -26,15 +26,13 @@ import org.apache.clerezza.platform.Cons
import java.security.{PrivilegedAction, AccessController}
import javax.ws.rs.core.{Response, Context, UriInfo}
import org.apache.clerezza.rdf.scala.utils.{EasyGraphNode, EasyGraph}
-import java.util.Iterator
import java.net._
import org.slf4j.scala.Logger
import javax.ws.rs._
-import java.io.{StringWriter, IOException, OutputStreamWriter}
+import java.io.{IOException, OutputStreamWriter}
import collection.JavaConversions._
-import java.lang.Appendable
-import org.apache.clerezza.rdf.ontologies.{FOAF, SIOC, PLATFORM, RDF}
-import org.apache.clerezza.rdf.core.{UriRef, Triple, MGraph}
+import org.apache.clerezza.rdf.ontologies.{SIOC, PLATFORM, RDF}
+import org.apache.clerezza.rdf.core.{UriRef, MGraph}
import org.apache.clerezza.rdf.utils.{UnionMGraph, GraphNode}
import org.apache.clerezza.rdf.core.impl.SimpleMGraph
Modified:
incubator/clerezza/trunk/parent/platform.accountcontrolpanel/platform.accountcontrolpanel.core/src/main/scala/org/apache/clerezza/platform/accountcontrolpanel/ProfilePanel.scala
URL:
http://svn.apache.org/viewvc/incubator/clerezza/trunk/parent/platform.accountcontrolpanel/platform.accountcontrolpanel.core/src/main/scala/org/apache/clerezza/platform/accountcontrolpanel/ProfilePanel.scala?rev=1124695&r1=1124694&r2=1124695&view=diff
==============================================================================
---
incubator/clerezza/trunk/parent/platform.accountcontrolpanel/platform.accountcontrolpanel.core/src/main/scala/org/apache/clerezza/platform/accountcontrolpanel/ProfilePanel.scala
(original)
+++
incubator/clerezza/trunk/parent/platform.accountcontrolpanel/platform.accountcontrolpanel.core/src/main/scala/org/apache/clerezza/platform/accountcontrolpanel/ProfilePanel.scala
Thu May 19 11:59:09 2011
@@ -33,12 +33,7 @@ import org.apache.clerezza.platform.conf
import org.apache.clerezza.platform.usermanager.UserManager
import org.apache.clerezza.rdf.core._
import access.TcManager
-import org.apache.clerezza.rdf.core.impl.SimpleMGraph
-import org.apache.clerezza.rdf.core.impl.TripleImpl
-import org.apache.clerezza.rdf.ontologies.DC
-import org.apache.clerezza.rdf.ontologies.FOAF
-import org.apache.clerezza.rdf.ontologies.PLATFORM
-import org.apache.clerezza.rdf.ontologies.RDF
+import impl.{SimpleMGraph, TripleImpl}
import org.apache.clerezza.rdf.utils.GraphNode
import org.apache.clerezza.rdf.utils.UnionMGraph
import org.osgi.service.component.ComponentContext
@@ -53,11 +48,11 @@ import java.math.BigInteger
import java.security.AccessController
import java.security.PrivilegedAction
import java.security.interfaces.RSAPublicKey
-import org.apache.clerezza.rdf.ontologies.RDFS
import org.apache.clerezza.ssl.keygen.KeygenService
import org.apache.clerezza.platform.users.WebIdGraphsService
import java.net.URI
-import org.apache.clerezza.rdf.scala.utils.{EasyGraphNode, EasyGraph}
+import org.apache.clerezza.rdf.scala.utils.{RichGraphNode, EasyGraphNode,
EasyGraph}
+import org.apache.clerezza.rdf.ontologies._
object ProfilePanel {
private val logger: Logger =
LoggerFactory.getLogger(classOf[ProfilePanel])
@@ -85,6 +80,7 @@ object ProfilePanel {
class ProfilePanel {
import ProfilePanel.logger
+ import collection.JavaConversions._
import EasyGraph._
@@ -92,19 +88,20 @@ class ProfilePanel {
def getPersonalProfilePage(@Context uriInfo: UriInfo,
@PathParam(value = "id") userName: String):
GraphNode = {
TrailingSlash.enforceNotPresent(uriInfo)
- var resultNode: GraphNode = getPersonalProfile(userName,
uriInfo)
- resultNode.addProperty(RDF.`type`, PLATFORM.HeadedPage)
- resultNode.addProperty(RDF.`type`, CONTROLPANEL.ProfilePage)
+ val resultNode= getPersonalProfile(userName, uriInfo)
+
return resultNode
}
//todo: there is a bit of repetition in the graphs, and it is not clear
why these relations should not go straight into the DB. What should, what
should not?
- private def getPersonalProfile(userName: String,
- profile: UriInfo): EasyGraphNode = {
+ private def getPersonalProfile(userName: String, info: UriInfo):
EasyGraphNode = {
val profileDocUri = getSuggestedPPDUri(userName)
- return AccessController.doPrivileged(new
PrivilegedAction[EasyGraphNode] {
+
+ val userInSysGraph = userManager.getUserInSystemGraph(userName)
+
+
+ val profile: EasyGraphNode = AccessController.doPrivileged(new
PrivilegedAction[EasyGraphNode] {
def run: EasyGraphNode = {
- val userInSysGraph =
userManager.getUserInSystemGraph(userName)
userInSysGraph.getNode match {
case blank: BNode => { //user does not
have a webId yet
val g = new EasyGraph()
@@ -120,13 +117,35 @@ class ProfilePanel {
(res â
CONTROLPANEL.isLocalProfile â¶ webIDInfo.isLocal
â FOAF.primaryTopic
â¶ webid)
if (webIDInfo.isLocal) {
- res â PINGBACK.to â¶
new UriRef(PingBack.pingCollUri(userName,profile))
+ //the reason we need to
call pingCollUri is we need a full URI because lack of support for relative URIs
+ res â PINGBACK.to â¶
new UriRef(PingBack.pingCollUri(userName,info))
}
res
}
}
}
})
+
+ val friendInfo = for (kn: Triple <-
profile.getGraph.filter(userInSysGraph.getNode.asInstanceOf[NonLiteral],
FOAF.knows, null)
+ if kn.getObject.isInstanceOf[UriRef];
+ friend = kn.getObject.asInstanceOf[UriRef]
+ if
(friend != profileDocUri)
+ ) yield {
+ try {
+ tcManager.getGraph(friend)
+ new RichGraphNode(friend,
tcManager.getGraph(friend)).getNodeContext
+ } catch {
+ case e => {
+ logger.warn("cought exception trying to
fetch graph - these graphs should already be in store "+friend,e)
+ new
EasyGraph().add(friend,SKOS.note,"problem with fetching this node: "+e)
+ }
+ }
+ }
+
+ for (g <- friendInfo) profile.graph.addAll(g)
+
+ (profile â PLATFORM.HeadedPage
+ â CONTROLPANEL.ProfilePage)
}
/**
Modified:
incubator/clerezza/trunk/parent/platform.accountcontrolpanel/platform.accountcontrolpanel.core/src/main/scala/org/apache/clerezza/platform/accountcontrolpanel/pages/person_panel.scala
URL:
http://svn.apache.org/viewvc/incubator/clerezza/trunk/parent/platform.accountcontrolpanel/platform.accountcontrolpanel.core/src/main/scala/org/apache/clerezza/platform/accountcontrolpanel/pages/person_panel.scala?rev=1124695&r1=1124694&r2=1124695&view=diff
==============================================================================
---
incubator/clerezza/trunk/parent/platform.accountcontrolpanel/platform.accountcontrolpanel.core/src/main/scala/org/apache/clerezza/platform/accountcontrolpanel/pages/person_panel.scala
(original)
+++
incubator/clerezza/trunk/parent/platform.accountcontrolpanel/platform.accountcontrolpanel.core/src/main/scala/org/apache/clerezza/platform/accountcontrolpanel/pages/person_panel.scala
Thu May 19 11:59:09 2011
@@ -67,11 +67,11 @@ object person_panel {
* assumes the p is WebID node (can change later)
*/
def getAgentPix(p: RichGraphNode) = {
- val pix = firstOf(p, FOAF.depiction, FOAF.logo).getNode match {
+ val pix = firstOf(p, FOAF.depiction, FOAF.logo,
FOAF.img).getNode match {
case uri: UriRef => uri.getUnicodeString
case _ =>
"http://upload.wikimedia.org/wikipedia/commons/0/0a/Gnome-stock_person.svg"
}
- <a href={"people?uri="+encode(p*)}><img src={pix} width="70px"
/></a>
+ <a href={"people?uri="+encode(p*)}><img class="mugshot"
src={pix}/></a>
}
def personInABox(p: RichGraphNode): NodeSeq = {
@@ -83,7 +83,9 @@ object person_panel {
}
case _ => emptyText
} else emptyText
- return pixml ++ new Text(getName(p)) ++ pingXML
+ return <table><tr><td>{pixml}</td></tr>
+ <tr><td>{new Text(getName(p))}<br/>{pingXML}</td></tr>
+ </table>
}
def encode(url: String): String = URLEncoder.encode(url,"UTF8")
Modified:
incubator/clerezza/trunk/parent/platform.accountcontrolpanel/platform.accountcontrolpanel.core/src/main/scala/org/apache/clerezza/platform/accountcontrolpanel/pages/profile_panel.scala
URL:
http://svn.apache.org/viewvc/incubator/clerezza/trunk/parent/platform.accountcontrolpanel/platform.accountcontrolpanel.core/src/main/scala/org/apache/clerezza/platform/accountcontrolpanel/pages/profile_panel.scala?rev=1124695&r1=1124694&r2=1124695&view=diff
==============================================================================
---
incubator/clerezza/trunk/parent/platform.accountcontrolpanel/platform.accountcontrolpanel.core/src/main/scala/org/apache/clerezza/platform/accountcontrolpanel/pages/profile_panel.scala
(original)
+++
incubator/clerezza/trunk/parent/platform.accountcontrolpanel/platform.accountcontrolpanel.core/src/main/scala/org/apache/clerezza/platform/accountcontrolpanel/pages/profile_panel.scala
Thu May 19 11:59:09 2011
@@ -30,7 +30,6 @@ import java.text._
import org.apache.clerezza.rdf.core.UriRef
import org.apache.clerezza.platform.accountcontrolpanel.ontologies.CONTROLPANEL
import org.apache.clerezza.rdf.ontologies.{RDFS, DC, FOAF}
-import javax.ws.rs.core.MediaType
class profile_panel extends SRenderlet {
override def getRdfType() = CONTROLPANEL.ProfilePage
@@ -153,23 +152,11 @@ class ProfilePanelXHTML(arguments: XmlRe
<table>{ var i =0
val friends = for (friend <- agent/FOAF.knows) yield {
import person_panel._
- val node = personInABox(friend)
- /*added in CLEREZZA-473, no longer working as no such
WebRenderingService available
-
- val node = friend.getNode() match {
- case uri: UriRef => $[WebProxy].fetchSemantics(uri)
match {
- case Some(grp) => personInABox(grp)
- case None => emptyText
- }
- case _ => emptyText //one could show info with bnodes
too...
- }*/
- <td>{node}</td>
+ <td class="personInABox">{personInABox(friend)}</td>
}
for (row <- friends.grouped(5)) yield <tr>{row}</tr>
- }<tr> <td><input type="submit" value="add contact" /></td>
- <td><input type="text" name="uri" size="80"/><!-- human input
forms cannot require precise WebIds-->
- </td></tr>
- </table>
+ }</table>
+ <input type="text" name="uri" size="80"/><input type="submit"
value="add contact" />
</form>
<h3>Key and Certificate Creation</h3>