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>


Reply via email to