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/03/19 08:11:53 UTC

svn commit: r925107 - in /incubator/esme/trunk/server/src/main: resources/ scala/bootstrap/liftweb/ scala/org/apache/esme/lib/ webapp/action_view/ webapp/pools_view/ webapp/templates-hidden/ webapp/track_view/

Author: rhirsch
Date: Fri Mar 19 07:11:52 2010
New Revision: 925107

URL: http://svn.apache.org/viewvc?rev=925107&view=rev
Log:
[ESME-100] Finish web UI
Daily hour

Modified:
    incubator/esme/trunk/server/src/main/resources/ESMEBase.properties
    incubator/esme/trunk/server/src/main/resources/ESMEUI.properties
    incubator/esme/trunk/server/src/main/scala/bootstrap/liftweb/Boot.scala
    incubator/esme/trunk/server/src/main/scala/org/apache/esme/lib/AccessPoolMgr.scala
    incubator/esme/trunk/server/src/main/scala/org/apache/esme/lib/ActionMgr.scala
    incubator/esme/trunk/server/src/main/scala/org/apache/esme/lib/TrackMgr.scala
    incubator/esme/trunk/server/src/main/webapp/action_view/index.html
    incubator/esme/trunk/server/src/main/webapp/pools_view/index.html
    incubator/esme/trunk/server/src/main/webapp/templates-hidden/message.html
    incubator/esme/trunk/server/src/main/webapp/track_view/index.html

Modified: incubator/esme/trunk/server/src/main/resources/ESMEBase.properties
URL: http://svn.apache.org/viewvc/incubator/esme/trunk/server/src/main/resources/ESMEBase.properties?rev=925107&r1=925106&r2=925107&view=diff
==============================================================================
--- incubator/esme/trunk/server/src/main/resources/ESMEBase.properties (original)
+++ incubator/esme/trunk/server/src/main/resources/ESMEBase.properties Fri Mar 19 07:11:52 2010
@@ -36,9 +36,9 @@ base_menu_logout_error=You must be logge
 base_menu_sign_up_error=You can't sign up when you are already logged in
 
 base_pool_menu=Pools
-base_pool_error_name_short=Pool name is too short
-base_pool_msg_new_pool=A new pool has been created.
-base_pool_msg_duplicate_name_pool=A pool with this name already exists. Please choose a different one
+base_pool_error_name_short=The pool name is too short. Pool names must have a length of at least 3 characters!
+base_pool_msg_new_pool=A new pool '%s' has been created.
+base_pool_msg_duplicate_name_pool=A pool with this name '%s' already exists. Please choose a different one
 base_pool_msg_choose_pool=--choose pool--
 base_pool_err_user_not_found=User not found
 base_pool_err_pool_not_found=Pool not found
@@ -47,6 +47,7 @@ base_pool_ui_empty_date=NA
 base_pool_err_no_admin_users=No other admin users in pool!
 base_pool_err_dup_name=A pool with this name already exists
 base_pool_err_dup_name_in_realm=A pool with this name '%s' already exists in realm '%s'
+base_pool_msg_no_permission=You don't have permission to edit this pool
 
 base_urlstore_err_too_short=The minimum URL length is 3 characters
 
@@ -78,7 +79,8 @@ base_token_msg_new_token=A new token '%s
 base_token_msg_removed=Action '%s' removed
 
 base_track_menu=Tracks
-base_track_error_name_short=Track is too short!
+base_track_error_name_short=The track is too short. Tracks must have a length of at least 3 characters!
+base_track_error_name_long=The track is too long. Tracks must have a length less than l30 characters!
 base_track_msg_success=Now tracking '%s'
 base_track_msg_removed=Track '%s' removed
 base_track_msg_active=Active state of the track '%s' changed: %b

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=925107&r1=925106&r2=925107&view=diff
==============================================================================
--- incubator/esme/trunk/server/src/main/resources/ESMEUI.properties (original)
+++ incubator/esme/trunk/server/src/main/resources/ESMEUI.properties Fri Mar 19 07:11:52 2010
@@ -124,6 +124,7 @@ ui_login_password=Password
 
 ui_open_id_title=OpenID
 
+ui_messages_share=Share with
 ui_messages_your_timeline=Your timeline
 ui_messages_message_label_author=Author
 ui_messages_message_label_message=Message

Modified: incubator/esme/trunk/server/src/main/scala/bootstrap/liftweb/Boot.scala
URL: http://svn.apache.org/viewvc/incubator/esme/trunk/server/src/main/scala/bootstrap/liftweb/Boot.scala?rev=925107&r1=925106&r2=925107&view=diff
==============================================================================
--- incubator/esme/trunk/server/src/main/scala/bootstrap/liftweb/Boot.scala (original)
+++ incubator/esme/trunk/server/src/main/scala/bootstrap/liftweb/Boot.scala Fri Mar 19 07:11:52 2010
@@ -82,6 +82,14 @@ class Boot {
         if r.param("token").isDefined =>
         () => RestAPI.sendMsgWithToken(r)
     }
+    
+    //Added exceptions to the log
+    LiftRules.exceptionHandler.prepend {
+      case (_, _, exception) => {
+        Log.error(exception.getStackTrace.toString)
+        RedirectResponse("/")
+      }
+    } 
 
     LiftRules.dispatch.append(ESMEOpenIDVendor.dispatchPF)
 

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=925107&r1=925106&r2=925107&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 Fri Mar 19 07:11:52 2010
@@ -21,9 +21,12 @@ package org.apache.esme.lib
 
 import net.liftweb._
 import http._
-import SHtml._
 import js._
-import JsCmds._
+import js.jquery._
+import http.jquery._
+import JqJsCmds._
+import JsCmds._ 
+import SHtml._
 import JE._
 
 import sitemap._
@@ -74,22 +77,24 @@ object AccessPoolMgr {
   def addPool(in: NodeSeq): NodeSeq = {
     val theInput = "new_pool"
     val user = User.currentUser 
-    
+    val redisplayPool = updatePool.is
+       
     def addNewPool(name: String) = {
       name.trim match {
-        case x if x.length < 3 => S.error(S.?("base_pool_error_name_short"))
+        case x if x.length < 3 => DisplayMessage("messages", <b>{S.?("base_pool_error_name_short")}</b>,  3 seconds, 3 seconds)
         case x => {
           val pool = AccessPool.create.realm(AccessPool.Native).setName(name)
           pool match {
-            case Failure(_,_,_) => S.error(S.?("base_pool_msg_duplicate_name_pool"))
+            case Failure(_,_,_) => DisplayMessage("messages", <b>{S.?("base_pool_msg_duplicate_name_pool",name)}</b>,  3 seconds, 2 seconds)
             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)
-                S.notice(S.?("base_pool_msg_new_pool"))
+                Distributor ! Distributor.AllowUserInPool(user.get.id.is, p.id.is)         
                 logger.info("ACCESS: " + S.?("base_pool_msg_new_pool") + " " + name)
+                SetValById(theInput, "")
+                DisplayMessage("messages", <b>{S.?("base_pool_msg_new_pool",name)}</b>,  3 seconds, 2 seconds) 
               } else
-                S.error(S.?("base_error_general"))
+                DisplayMessage("messages", <b>{S.?("base_pool_msg_no_permission")}</b>,  3 seconds, 2 seconds)
             case _ => S.error(S.?("base_error_general"))
           }
         }
@@ -132,15 +137,18 @@ object AccessPoolMgr {
     def addPoolUser(permission: String): JsCmd = {
       val r: Box[Boolean] = 
       for (admin <- adminUser;
-           p <- AccessPool.find(pool) ?~ S.?("base_pool_err_pool_not_found");
-           user <- User.findFromWeb(username) ?~ S.?("base_pool_err_user_not_found")
+           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 {
           Privilege.create.user(user).pool(p).permission(Permission(permission.toInt)).save
         } catch {
           case _: Exception => false
         }
-        if (result) Distributor ! Distributor.AllowUserInPool(user.id.is, p.id.is)
+        if (result) {
+        	Distributor ! Distributor.AllowUserInPool(user.id.is, p.id.is)
+        	DisplayMessage("messages", <b>{S.?("base_pool_msg_permission_set")}</b>,  3 seconds, 2 seconds)
+       }
         result
       } else false // "User has no permission to administer pool"
       r match {

Modified: incubator/esme/trunk/server/src/main/scala/org/apache/esme/lib/ActionMgr.scala
URL: http://svn.apache.org/viewvc/incubator/esme/trunk/server/src/main/scala/org/apache/esme/lib/ActionMgr.scala?rev=925107&r1=925106&r2=925107&view=diff
==============================================================================
--- incubator/esme/trunk/server/src/main/scala/org/apache/esme/lib/ActionMgr.scala (original)
+++ incubator/esme/trunk/server/src/main/scala/org/apache/esme/lib/ActionMgr.scala Fri Mar 19 07:11:52 2010
@@ -21,9 +21,12 @@ package org.apache.esme.lib
 
 import net.liftweb._
 import http._
-import SHtml._
 import js._
-import JsCmds._
+import js.jquery._
+import http.jquery._
+import JqJsCmds._
+import JsCmds._ 
+import SHtml._
 import JE._
 
 import sitemap._
@@ -36,6 +39,10 @@ import common._
 import Helpers._
 
 import model._
+import JqJsCmds._
+import JsCmds._ 
+import SHtml._
+
 
 import java.util.Date
 import java.text.{DateFormat,SimpleDateFormat}
@@ -66,13 +73,15 @@ object ActionMgr {
    }
 
   def displayActions(in: NodeSeq): NodeSeq = {
+  
     // get the span name to update
     val spanName = S.attr("the_id") openOr "TokenSpan"
     // get the current user
     val user = User.currentUser
 
     // bind the dynamic content to the incoming nodeseq
-    def doRender(): NodeSeq =
+    
+    def doRender(): NodeSeq =   
     Action.findAll(By(Action.user, user), By(Action.removed, false),
                    OrderBy(Action.id, Ascending)) match {
       case Nil => NodeSeq.Empty
@@ -81,14 +90,16 @@ object ActionMgr {
                       (lst => xs.flatMap(i => bind("item", lst,
                                                    "name" -> i.name.is,
                                                    "enabled" -> ajaxCheckbox(!i.disabled,
-                                                                             e => {i.disabled(!e).save; S.notice(S.?("base_action_msg_active")); Noop} ),
+                                                                             e => {i.disabled(!e).save; DisplayMessage("messages", <b>Action activity changed</b>,  3 seconds, 3 seconds); Noop} ),
                                                    "test" -> i.testText,
                                                    "action" -> i.actionText,
                                                    "createdDate" -> getDateHtml(i.createdDate),
                                                    "remove" -> 
                                                    ((bt: NodeSeq) => 
-                  ajaxButton(bt, () => {i.removed(true).save ; S.notice(S.?("base_action_msg_removed", i.name.is)); updateSpan()}))
+                  ajaxButton(bt, () => {i.removed(true).save ; DisplayMessage("messages", <b>Action removed</b>,  3 seconds, 3 seconds); updateSpan()}))
               ))))
+   
+
     }
 
     def updateSpan(): JsCmd = SetHtml(spanName, doRender())
@@ -115,15 +126,16 @@ object ActionMgr {
              a2 <- a1.setTest(test))
         yield a2.validate
 
+
+          
         act match {
           case Full(Nil) =>
             toSave.save 
-            S.notice(S.?("base_action_msg_new_action", name))
             redisplay() &
             SetValById(mainName, "") &
             SetValById(mainAction, "") &
-            SetValById(mainTest, "")
-
+            SetValById(mainTest, "") &
+            DisplayMessage("messages", <b>{S.?("base_action_msg_new_action",name)}</b>,  3 seconds, 3 seconds) 
           case Full(xs) => S.error(xs); Noop
           case Failure(msg, _, _) => S.error(msg) ; Noop
           case _ => Noop

Modified: incubator/esme/trunk/server/src/main/scala/org/apache/esme/lib/TrackMgr.scala
URL: http://svn.apache.org/viewvc/incubator/esme/trunk/server/src/main/scala/org/apache/esme/lib/TrackMgr.scala?rev=925107&r1=925106&r2=925107&view=diff
==============================================================================
--- incubator/esme/trunk/server/src/main/scala/org/apache/esme/lib/TrackMgr.scala (original)
+++ incubator/esme/trunk/server/src/main/scala/org/apache/esme/lib/TrackMgr.scala Fri Mar 19 07:11:52 2010
@@ -21,9 +21,12 @@ package org.apache.esme.lib
 
 import net.liftweb._
 import http._
-import SHtml._
 import js._
-import JsCmds._
+import js.jquery._
+import http.jquery._
+import JqJsCmds._
+import JsCmds._ 
+import SHtml._
 import JE._
 
 import sitemap._
@@ -71,10 +74,10 @@ object TrackMgr {
                       (lst => xs.flatMap(i => bind("item", lst,
                                                    "pattern" -> i.pattern,
                                                    "enabled" -> ajaxCheckbox(!i.disabled,
-                                                                             e => {i.disabled(!e).save; S.notice(S.?("base_track_msg_active", i.pattern, e)); Noop} ),
+                                                                             e => {i.disabled(!e).save;  Noop} ),
                                                    "remove" -> 
                                                    ((bt: NodeSeq) => 
-                  ajaxButton(bt, () => { S.notice(S.?("base_track_msg_removed", i.pattern)); i.removed(true).save ; updateSpan()}))
+                  ajaxButton(bt, () => { i.removed(true).save ; updateSpan(); }))
               ))))
     }
 
@@ -91,12 +94,17 @@ object TrackMgr {
     
     def addTrack(what: String): JsCmd = {
       what.trim match {
-        case x if x.length < 3 => S.error(S.?("base_track_error_name_short"))
-        case x => Tracking.create.regex(x).user(user).saveMe
-          S.notice(S.?("base_track_msg_success", x))
+        case x if x.length < 3 => DisplayMessage("messages", <b>{S.?("base_track_error_name_short")}</b>,  3 seconds, 3 seconds)
+        case x if x.length > 30 => DisplayMessage("messages", <b>{S.?("base_track_error_name_long")}</b>,  3 seconds, 3 seconds)  
+        case x => Tracking.create.regex(x).user(user).saveMe 
+        redisplayTracking()
+        SetValById(theInput, "")
+        DisplayMessage("messages", <b>{S.?("base_track_msg_success", x)}</b>,  3 seconds, 3 seconds)
+        
+          
       }
 
-      redisplayTracking() & SetValById(theInput, "")
+      
     }
 
     bind("main", in,

Modified: incubator/esme/trunk/server/src/main/webapp/action_view/index.html
URL: http://svn.apache.org/viewvc/incubator/esme/trunk/server/src/main/webapp/action_view/index.html?rev=925107&r1=925106&r2=925107&view=diff
==============================================================================
--- incubator/esme/trunk/server/src/main/webapp/action_view/index.html (original)
+++ incubator/esme/trunk/server/src/main/webapp/action_view/index.html Fri Mar 19 07:11:52 2010
@@ -35,6 +35,7 @@
 	<script type="text/javascript" src="../scripts/jquery-ui-1.7.2.custom.min.js"></script>
 	<script type="text/javascript" src="../scripts/esme.js"></script>
 	<script type="text/javascript" src="../scripts/esme_table_sorter.js"></script>
+	 <div id="messages"></div>
 	<div class="demo">
 		<div class="ui-tabs ui-widget ui-widget-content ui-corner-all" id="tabs">
 			<ul class="ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all">

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=925107&r1=925106&r2=925107&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 Fri Mar 19 07:11:52 2010
@@ -30,6 +30,7 @@
     </script>
     <script type="text/javascript" src="../scripts/esme_table_sorter.js">
     </script>
+    <div id="messages"></div>
     <div class="demo">
         <div class="ui-tabs ui-widget ui-widget-content ui-corner-all" id="tabs">
             <ul class="ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all">

Modified: incubator/esme/trunk/server/src/main/webapp/templates-hidden/message.html
URL: http://svn.apache.org/viewvc/incubator/esme/trunk/server/src/main/webapp/templates-hidden/message.html?rev=925107&r1=925106&r2=925107&view=diff
==============================================================================
--- incubator/esme/trunk/server/src/main/webapp/templates-hidden/message.html (original)
+++ incubator/esme/trunk/server/src/main/webapp/templates-hidden/message.html Fri Mar 19 07:11:52 2010
@@ -26,8 +26,9 @@
 					<lift:loc>ui_messages_message_label_message_request</lift:loc>
 				</h3>
 				<div id="form-update">
+				         <div id="messages"></div>
 					<div class="post-form-row">
-						<label>                                            Share with                                        </label>
+						<label><lift:loc>ui_messages_share</lift:loc></label>
 						<select id="vPool" class="inputBox2">
 							<option value="0">
 								<lift:loc>ui_messages_message_label_message_pool_public</lift:loc>

Modified: incubator/esme/trunk/server/src/main/webapp/track_view/index.html
URL: http://svn.apache.org/viewvc/incubator/esme/trunk/server/src/main/webapp/track_view/index.html?rev=925107&r1=925106&r2=925107&view=diff
==============================================================================
--- incubator/esme/trunk/server/src/main/webapp/track_view/index.html (original)
+++ incubator/esme/trunk/server/src/main/webapp/track_view/index.html Fri Mar 19 07:11:52 2010
@@ -37,6 +37,7 @@
 	<script type="text/javascript" src="../scripts/dialog_test.js">    </script>
 	<script type="text/javascript" src="../scripts/esme.js">    </script>
 	<script type="text/javascript" src="../scripts/esme_table_sorter.js">    </script>
+	<div id="messages"></div>
 	<div class="demo">
 		<div class="ui-tabs ui-widget ui-widget-content ui-corner-all" id="tabs">
 			<ul class="ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all">