You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@esme.apache.org by rh...@apache.org on 2010/07/05 09:06:33 UTC

svn commit: r960461 - in /incubator/esme/trunk/server/src/main: scala/org/apache/esme/lib/AccessPoolMgr.scala scala/org/apache/esme/snippet/UserSnip.scala webapp/templates-hidden/base.html

Author: rhirsch
Date: Mon Jul  5 07:06:33 2010
New Revision: 960461

URL: http://svn.apache.org/viewvc?rev=960461&view=rev
Log:
[ESME-180] Creating a new pool doesn't lead to a ajax-based refresh
[ESME-216] Creating a new pool doesn't lead to a ajax-based refresh
Patch by Imtiaz Ahmed Hajee Esmail 

Modified:
    incubator/esme/trunk/server/src/main/scala/org/apache/esme/lib/AccessPoolMgr.scala
    incubator/esme/trunk/server/src/main/scala/org/apache/esme/snippet/UserSnip.scala
    incubator/esme/trunk/server/src/main/webapp/templates-hidden/base.html

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=960461&r1=960460&r2=960461&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 Mon Jul  5 07:06:33 2010
@@ -87,6 +87,7 @@ object AccessPoolMgr {
       
     //def addNewPool(name: String) = {
     def addNewPool(poolDescription: String) = {
+
       /*
       name.trim match {
         case x if x.length < 3 => DisplayMessage("messages", <b>{S.?("base_pool_error_name_short")}</b>,  3 seconds, 3 seconds)
@@ -95,6 +96,7 @@ object AccessPoolMgr {
       (newPoolName.trim, poolDescription.trim) match {
         case (x, y) if x.length < 3 => DisplayMessage("messages", <b>{S.?("base_pool_error_name_short")}</b>,  3 seconds, 3 seconds)
         case (x, y) => {
+          import org.apache.esme.model.AccessPool
           //val pool = AccessPool.create.realm(AccessPool.Native).setName(name)
           val pool = AccessPool.create.realm(AccessPool.Native).setUpAccessPool(x, y)
           pool match {
@@ -103,10 +105,19 @@ object AccessPoolMgr {
             case Full(p: AccessPool) => val privilegeSaved =
               Privilege.create.pool(p.saveMe).user(user).permission(Permission.Admin).save
               if(privilegeSaved && user.isDefined) {
-                Distributor ! Distributor.AllowUserInPool(user.get.id.is, p.id.is)         
+                import org.apache.esme.model.{Privilege, User}
+                Distributor ! Distributor.AllowUserInPool(user.get.id.is, p.id.is)
                 //logger.info("ACCESS: " + S.?("base_pool_msg_new_pool",name))
                 logger.info("ACCESS: " + S.?("base_pool_msg_new_pool",x))
+                val selectPools = ("0", S.?("base_pool_msg_choose_pool")) ::
+                (User.currentUser match {
+                  case Full(u)=> Privilege.findViewablePools(u.id).map(
+                    p => (p.toString, AccessPool.find(p).get.getName)).toList
+                  case _ => Nil
+                }).sort(_._2 < _._2)
                 SetValById(theInput, "")  &
+                ReplaceOptions("edit_pool", selectPools, Full(p.id.is.toString))  &
+                FireOnchangeById("edit_pool") &
                 //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
@@ -118,27 +129,34 @@ object AccessPoolMgr {
 
     }
 
+    case class FireOnchangeById(domElemId: String) extends JsCmd {
+      def toJsCmd =
+        """document.getElementById(""" + domElemId.encJs + """).onchange();"""
+    }
+
     bind("add", in,
          //"poolName" -%> text("", addNewPool, "id" -> theInput),
          "poolName" -%> text("", newPoolName = _ , "id" -> theInput),
          "poolDescription" -%> textarea("", addNewPool, "id" -> newPoolDescription, "cols" -> "33", "rows" -> "2"))
-    
+
   }
 
+  var lastSelPool = "";
+
   /*
   * Function for editing pools
   *
   */
   def editPool(in: NodeSeq): NodeSeq = {
-
+    import org.apache.esme.model.{AccessPool, User}
     val redisplayPool = updatePool.is
-    
+
     // redisplay pool detail
     val redisplayPoolDetail = updatePoolDetail.is
-    
+
     // redisplay pool users and pool detail
     def redisplay(): JsCmd = {
-      redisplayPoolDetail() & redisplayPool() 
+      redisplayPoolDetail() & redisplayPool()
     }
     var pool = ""
     var username = ""
@@ -146,28 +164,30 @@ object AccessPoolMgr {
     val editUsername = "edit_username"
     val editPermission = "edit_permission"
     val adminUser = User.currentUser
-    
+
     val adminPools = ("0", S.?("base_pool_msg_choose_pool")) ::
     (adminUser match {
       case Full(u)=> Privilege.findViewablePools(u.id).map(
         p => (p.toString, AccessPool.find(p).get.getName)).toList
       case _ => Nil
     })
-      
+
     val permissions = Permission.map(perm => (perm.id.toString, perm.toString)).collect
-    
-    
+
+
       /*
        * Function for adding a user to a pool
        *
        */
     def addPoolUser(permission: String): JsCmd = {
-      val r: Box[Boolean] = 
+      pool = lastSelPool;
+      val r: Box[Boolean] =
       for (admin <- adminUser;
            p <- AccessPool.find(pool) ?~ DisplayMessage("messages", <b>{S.?("base_pool_err_pool_not_found")}</b>,  3 seconds, 2 seconds);
            user <- User.findFromWeb(username) ?~ DisplayMessage("messages", <b>{S.?("base_pool_err_pool_not_found")}</b>,  3 seconds, 2 seconds)
       ) yield if(Privilege.hasPermission(admin.id.is, p.id.is, Permission.Admin)) {
         val result = try {
+          import org.apache.esme.model.Permission
           Privilege.create.user(user).pool(p).permission(Permission(permission.toInt)).save
         } catch {
           case _: Exception => false
@@ -183,13 +203,14 @@ object AccessPoolMgr {
         case Full(true) => S.notice(S.?("base_pool_msg_permission_set"))
         case _ => S.error(S.?("base_error_general"))
       }
-      
+
       poolId.set(pool.toLong)
-      
+
       //we needn't redisplay pool detail when add a new user
       redisplayPool() & SetValById(editUsername, "")
     }
 
+    /*
     bind("edit", in,
          "pool" -%> ajaxSelect(adminPools, Empty, p => {pool = p;
                                                        poolId.set(p.toLong);
@@ -199,29 +220,54 @@ object AccessPoolMgr {
          "username" -%> text(username, username = _, "id" -> editUsername),
          "permission" -%> select(permissions, Empty, addPoolUser, "id" -> editPermission)
     )
-    
+    */
+
+    /*
+    bind("edit", in,
+         "pool" -%> org.apache.esme.liftwebext.SHtml.ajaxUntrustedSelect(adminPools, Empty, (p:String) => {lastSelPool = p;  pool = p;
+                                                       poolId.set(p.toLong);
+                                                       redisplay() //redisplay pooluser and pool detail
+                                                       },
+                                                 "id" -> editPoolName),
+         "username" -%> text(username, username = _, "id" -> editUsername),
+         "permission" -%> select(permissions, Empty, addPoolUser, "id" -> editPermission)
+    )
+    */
+
+    bind("edit", in,
+         "pool" -%> org.apache.esme.liftwebext.SHtml.ajaxUntrustedSortedSelect(adminPools,
+                                                       true,
+                                                       Empty, (p:String) => {lastSelPool = p;  pool = p;
+                                                       poolId.set(p.toLong);
+                                                       redisplay() //redisplay pooluser and pool detail
+                                                       },
+                                                 "id" -> editPoolName),
+         "username" -%> text(username, username = _, "id" -> editUsername),
+         "permission" -%> select(permissions, Empty, addPoolUser, "id" -> editPermission)
+    )
   }
-  
-  
+
+
   def displayPoolDetail(in: NodeSeq): NodeSeq = {
+    import org.apache.esme.model.AccessPool
     // get the span name to update
     val spanName = S.attr("the_pool_id") openOr "PoolDetailSpan"
-    
+
     //XXX display date, should we have a common dateFormat?
     val dateFormat = new SimpleDateFormat("yyyy/MM/dd")
     def getDateHtml(date: Date) : Text = date match {
      case null => Text(S.?("base_pool_ui_empty_date"))
      case d => Text(dateFormat.format(d))
    }
-    
+
     def displayUserName(uid: Long): NodeSeq = {
       User.find(uid) match {
         case Full(user) => <span>{user.nickname}</span>
         case _ => NodeSeq.Empty
       }
     }
-    
-    def doRender(): NodeSeq = 
+
+    def doRender(): NodeSeq =
        AccessPool.find(By(AccessPool.id, poolId.is)) match {
         case Full(ap) => bind(
         "pool", in,

Modified: incubator/esme/trunk/server/src/main/scala/org/apache/esme/snippet/UserSnip.scala
URL: http://svn.apache.org/viewvc/incubator/esme/trunk/server/src/main/scala/org/apache/esme/snippet/UserSnip.scala?rev=960461&r1=960460&r2=960461&view=diff
==============================================================================
--- incubator/esme/trunk/server/src/main/scala/org/apache/esme/snippet/UserSnip.scala (original)
+++ incubator/esme/trunk/server/src/main/scala/org/apache/esme/snippet/UserSnip.scala Mon Jul  5 07:06:33 2010
@@ -161,7 +161,7 @@ class UserSnip extends DispatchSnippet {
     
     Text(User.currentUser.map(_.image_url) openOr "")
   }
-
+  /*
   def accessPools(in: NodeSeq): NodeSeq = {
     for(user <- User.currentUser.toSeq;
         p    <- Privilege.findWritablePools(user.id))
@@ -170,6 +170,18 @@ class UserSnip extends DispatchSnippet {
               {AccessPool.find(p).get.getName}
             </option>
   }
+  */
+
+  def accessPools(in: NodeSeq): NodeSeq = {
+    (for(user <- User.currentUser.toSeq;
+        p    <- Privilege.findWritablePools(user.id))
+        // slow?
+      yield p)
+        .map( p => {val pool = AccessPool.find(p); (pool.toString, pool.get.getName)} )
+        .toList
+        .sort(_._2 < _._2)
+        .map(p => <option value={p._1}>{p._2}</option>)
+  }
   
   def postScript(in: NodeSeq): NodeSeq =
   <xml:group>

Modified: incubator/esme/trunk/server/src/main/webapp/templates-hidden/base.html
URL: http://svn.apache.org/viewvc/incubator/esme/trunk/server/src/main/webapp/templates-hidden/base.html?rev=960461&r1=960460&r2=960461&view=diff
==============================================================================
--- incubator/esme/trunk/server/src/main/webapp/templates-hidden/base.html (original)
+++ incubator/esme/trunk/server/src/main/webapp/templates-hidden/base.html Mon Jul  5 07:06:33 2010
@@ -155,6 +155,6 @@
                 <lift:loc>ui_default_footer</lift:loc>
           <br />
          </div> 
-         </div> 
+         </div>
     </body>
 </html>
\ No newline at end of file