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-->