You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@esme.apache.org by es...@apache.org on 2010/08/15 13:59:09 UTC

svn commit: r985659 - in /incubator/esme/trunk/server/src/main: resources/ESMEUI.properties scala/org/apache/esme/lib/AccessPoolMgr.scala scala/org/apache/esme/model/Privilege.scala webapp/pools_view/index.html

Author: esjewett
Date: Sun Aug 15 11:59:09 2010
New Revision: 985659

URL: http://svn.apache.org/viewvc?rev=985659&view=rev
Log:
[ESME-108] View my pools functionality
Patch by Imtiaz Ahmed Hajee Esmail

Modified:
    incubator/esme/trunk/server/src/main/resources/ESMEUI.properties
    incubator/esme/trunk/server/src/main/scala/org/apache/esme/lib/AccessPoolMgr.scala
    incubator/esme/trunk/server/src/main/scala/org/apache/esme/model/Privilege.scala
    incubator/esme/trunk/server/src/main/webapp/pools_view/index.html

Modified: incubator/esme/trunk/server/src/main/resources/ESMEUI.properties
URL: http://svn.apache.org/viewvc/incubator/esme/trunk/server/src/main/resources/ESMEUI.properties?rev=985659&r1=985658&r2=985659&view=diff
==============================================================================
--- incubator/esme/trunk/server/src/main/resources/ESMEUI.properties (original)
+++ incubator/esme/trunk/server/src/main/resources/ESMEUI.properties Sun Aug 15 11:59:09 2010
@@ -183,6 +183,10 @@ ui_tag_date=Date
 ui_streams_manage=Streams
 ui_public_title=Public
 
+ui_pool_list_mine_title=All My Pools & Roles
+ui_pool_list_mine_pool_name=Pool
+ui_pool_list_mine_role=My Role
+
 
 
 

Modified: incubator/esme/trunk/server/src/main/scala/org/apache/esme/lib/AccessPoolMgr.scala
URL: http://svn.apache.org/viewvc/incubator/esme/trunk/server/src/main/scala/org/apache/esme/lib/AccessPoolMgr.scala?rev=985659&r1=985658&r2=985659&view=diff
==============================================================================
--- incubator/esme/trunk/server/src/main/scala/org/apache/esme/lib/AccessPoolMgr.scala (original)
+++ incubator/esme/trunk/server/src/main/scala/org/apache/esme/lib/AccessPoolMgr.scala Sun Aug 15 11:59:09 2010
@@ -56,11 +56,12 @@ object AccessPoolMgr {
   val ifIsLoggedIn = If(loggedIn_? _, strFuncToFailMsg(() => S.?("base_error_not_logged_in")))
 
   val menuItems =
-  Menu(Loc("accessPools", List("pools_view", "index"), S.?("base_pool_menu"), ifIsLoggedIn,
+  Menu(Loc("accessPools", new Link("pools_view" :: Nil, true)/*List("pools_view", "index")*/, S.?("base_pool_menu"), ifIsLoggedIn,
            Loc.Snippet("addPool", addPool),
            Loc.Snippet("editPool", editPool),
            Loc.Snippet("poolUsers", displayPoolUsers),
   		   Loc.Snippet("poolDetail", displayPoolDetail)//regist snippet for pool detail display
+          ,Loc.Snippet("myPools", myPoolsWithRoles)          
   		)) ::
   Nil
 
@@ -68,8 +69,9 @@ object AccessPoolMgr {
   
   //update pool detail response 
   object updatePoolDetail extends RequestVar[() => JsCmd](() => Noop)
-  
-  
+
+  object poolsWithRoles extends RequestVar[() => JsCmd](() => Noop)
+
   object poolId extends RequestVar[Long](0)
 
 
@@ -78,12 +80,15 @@ object AccessPoolMgr {
   *
   */
   def addPool(in: NodeSeq): NodeSeq = {
+
+    // redisplay my pools and roles
+    val redisplayPoolsAndRoles = poolsWithRoles.is
   
     val theInput = "new_pool"
     val newPoolDescription = "new_pool_description";
     val user = User.currentUser
     var newPoolName = "";
-    
+
       
     //def addNewPool(name: String) = {
     def addNewPool(poolDescription: String) = {
@@ -118,6 +123,7 @@ object AccessPoolMgr {
                 SetValById(theInput, "")  &
                 ReplaceOptions("edit_pool", selectPools, Full(p.id.is.toString))  &
                 FireOnchangeById("edit_pool") &
+                redisplayPoolsAndRoles() &
                 //DisplayMessage("messages", <b>{S.?("base_pool_msg_new_pool",name)}</b>,  3 seconds, 2 seconds)
                 DisplayMessage("messages", <b>{S.?("base_pool_msg_new_pool",x)}</b>,  3 seconds, 2 seconds)
               } else
@@ -154,10 +160,13 @@ object AccessPoolMgr {
     // redisplay pool detail
     val redisplayPoolDetail = updatePoolDetail.is
 
+    val redisplayPoolsAndRoles = poolsWithRoles.is
+
     // redisplay pool users and pool detail
     def redisplay(): JsCmd = {
-      redisplayPoolDetail() & redisplayPool()
+      redisplayPoolDetail() & redisplayPool() & redisplayPoolsAndRoles()
     }
+
     var pool = ""
     var username = ""
     val editPoolName = "edit_pool"
@@ -214,7 +223,8 @@ object AccessPoolMgr {
         case _ => DisplayMessage("messages", <b>{S.?("base_error_general")}</b>,  3 seconds, 2 seconds)//S.error(S.?("base_error_general"))
       } ) & 
       //we needn't redisplay pool detail when add a new user
-      redisplayPool() & SetValById(editUsername, "") 
+      redisplayPool() & SetValById(editUsername, "") &
+      redisplayPoolsAndRoles()
     }
 
     /*
@@ -254,6 +264,39 @@ object AccessPoolMgr {
     )
   }
 
+  def myPoolsWithRoles(in: NodeSeq): NodeSeq = {
+
+    // get the span name to update
+    val spanName = S.attr("the_id") openOr "pool_membership_and_roles"
+
+    def doRender(): NodeSeq = {
+
+      val user = User.currentUser
+
+      val userPools =
+        (user match {
+          case Full(u)=> Privilege.findViewablePools(u.id).map(
+            p => (p, AccessPool.find(p).get.getName))
+          case _ => Nil
+        })
+
+      val userPerms = userPools.map((x: (Long, String)) => Privilege.getPermissionString(user.open_!.id, x._1));
+      val poolsAndRoles = userPools.map(_._2).zip(userPerms)
+
+      bind("myPool", in,
+          "pool" ->
+             (in1 =>
+                poolsAndRoles.flatMap((x: (String, String)) =>
+                                            bind("pool", in1,
+                                              "poolName" -> x._1,
+                                              "role" -> x._2
+               ))))
+    }
+
+    def updateSpan(): JsCmd = SetHtml(spanName, doRender())
+    poolsWithRoles.set(updateSpan)
+    doRender
+  }
 
   def displayPoolDetail(in: NodeSeq): NodeSeq = {
     import org.apache.esme.model.AccessPool

Modified: incubator/esme/trunk/server/src/main/scala/org/apache/esme/model/Privilege.scala
URL: http://svn.apache.org/viewvc/incubator/esme/trunk/server/src/main/scala/org/apache/esme/model/Privilege.scala?rev=985659&r1=985658&r2=985659&view=diff
==============================================================================
--- incubator/esme/trunk/server/src/main/scala/org/apache/esme/model/Privilege.scala (original)
+++ incubator/esme/trunk/server/src/main/scala/org/apache/esme/model/Privilege.scala Sun Aug 15 11:59:09 2010
@@ -71,6 +71,11 @@ object Privilege extends Privilege with 
     By(Privilege.user, userId),
     By(Privilege.permission, Permission.Admin)
   )(p => Full(p.pool.is)) :_*)
+
+  def getPermissionString(userId: Long, poolId: Long) : String = Privilege.find(
+    By(user, userId),
+    By(pool, poolId)
+  ).map(_.permission.is).open_!.toString 
 }
 
 /**
@@ -98,6 +103,7 @@ class Privilege extends LongKeyedMapper[
     By(user, userId),
     By(pool, poolId)
   ).map(_.permission.is >= permission).getOrElse(false)
+
 }
 
 /**

Modified: incubator/esme/trunk/server/src/main/webapp/pools_view/index.html
URL: http://svn.apache.org/viewvc/incubator/esme/trunk/server/src/main/webapp/pools_view/index.html?rev=985659&r1=985658&r2=985659&view=diff
==============================================================================
--- incubator/esme/trunk/server/src/main/webapp/pools_view/index.html (original)
+++ incubator/esme/trunk/server/src/main/webapp/pools_view/index.html Sun Aug 15 11:59:09 2010
@@ -92,8 +92,7 @@
                                      </fieldset>
 				</lift:poolDetail>
 			</div>
-			<div id="PoolSpan">
-			     
+			<div id="PoolSpan">  
 				<lift:ignore>
 					<!--  The poolUsers snippet *MUST* appear on the page before the editPool snippet                        -->
 				</lift:ignore>
@@ -137,7 +136,39 @@
 						<edit:pool class="tipelement" title="Select a pool to edit"/>
 					</lift:editPool>
 				</lift:form>
-			</div>
+			</div>      
+			<div id="pool_membership_and_roles" title="My Pool Roles" >
+        <lift:myPools the_id="pool_membership_and_roles">
+          <br/>
+          <br/>
+          <br/>
+          <b><lift:loc>ui_pool_list_mine_title</lift:loc></b>
+          <table id="esme-table" class="tablesorter">
+            <thead>
+              <tr>
+                <th>
+                  <lift:loc>ui_pool_list_mine_pool_name</lift:loc>
+                </th>
+                <th>
+                  <lift:loc>ui_pool_list_mine_role</lift:loc>
+                </th>
+              </tr>
+            </thead>
+            <tbody>
+              <myPool:pool>
+                <tr>
+                  <td>
+                    <pool:poolName/>
+                      </td>
+                      <td>
+                    <pool:role/>
+                  </td>
+                </tr>
+              </myPool:pool>
+            </tbody>
+          </table>
+        </lift:myPools>
+      </div>
 			<div id="dialog-form" title="Create new  pool" style="display: none">
 				<p class="validateTips">
 					<!--lift:loc>ui_form_all_fields_required</lift:loc-->