Hi,

I have implemented the optional CMA that is described in the
Ext . User Management proposal (http://tinyurl.com/28br55).

I have attached the svn diff file from my workspace.
Please let me know if you have any comments.
Thanks.
   Shing Wai Chan
Index: apps/weblogger/src/java/org/apache/roller/weblogger/config/roller.properties
===================================================================
--- apps/weblogger/src/java/org/apache/roller/weblogger/config/roller.properties	(revision 578204)
+++ apps/weblogger/src/java/org/apache/roller/weblogger/config/roller.properties	(working copy)
@@ -358,6 +358,9 @@
 passwds.encryption.enabled=true
 passwds.encryption.algorithm=SHA
 
+# Enable container managed authentication
+authentication.cma.enabled=false
+
 # Role to globbal permissions mappings
 role.names=anonymous,editor,admin
 role.action.anonymous=comment
Index: apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/admin/ModifyUser.java
===================================================================
--- apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/admin/ModifyUser.java	(revision 578204)
+++ apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/admin/ModifyUser.java	(working copy)
@@ -24,6 +24,7 @@
 import org.apache.roller.weblogger.WebloggerException;
 import org.apache.roller.weblogger.business.WebloggerFactory;
 import org.apache.roller.weblogger.business.UserManager;
+import org.apache.roller.weblogger.config.WebloggerConfig;
 import org.apache.roller.weblogger.pojos.User;
 import org.apache.roller.weblogger.ui.core.RollerContext;
 import org.apache.roller.weblogger.ui.struts2.util.UIAction;
@@ -35,6 +36,8 @@
 public class ModifyUser extends UIAction {
     
     private static Log log = LogFactory.getLog(ModifyUser.class);
+
+    private static final boolean isCMA = WebloggerConfig.getBooleanProperty("authentication.cma.enabled");
     
     // user we are modifying
     private User user = new User();
@@ -150,7 +153,9 @@
                     
                 }
             
-                RollerContext.flushAuthenticationUserCache(getUser().getUserName());
+                if (!isCMA) {
+                    RollerContext.flushAuthenticationUserCache(getUser().getUserName());
+                }
 
                 // save the updated profile
                 mgr.saveUser(getUser());
Index: apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/core/Register.java
===================================================================
--- apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/core/Register.java	(revision 578204)
+++ apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/core/Register.java	(working copy)
@@ -90,7 +90,8 @@
             // and retrieve custom user data to pre-populate form.
             boolean usingSSO = WebloggerConfig.getBooleanProperty("users.sso.enabled");
             if(usingSSO) {
-                User fromSSO = CustomUserRegistry.getUserDetailsFromAuthentication();
+                User fromSSO = CustomUserRegistry.getUserDetailsFromAuthentication(getServletRequest());
+
                 if(fromSSO != null) {
                     getBean().copyFrom(fromSSO);
                     setFromSS0(true);
@@ -245,7 +246,8 @@
         boolean usingSSO = WebloggerConfig.getBooleanProperty("users.sso.enabled");
         if(usingSSO) {
             boolean storePassword = WebloggerConfig.getBooleanProperty("users.sso.passwords.saveInRollerDb");
-            User fromSSO = CustomUserRegistry.getUserDetailsFromAuthentication();
+            User fromSSO = CustomUserRegistry.getUserDetailsFromAuthentication(getServletRequest());
+
             if(fromSSO != null) {
                 String password = WebloggerConfig.getProperty("users.sso.passwords.defaultValue", "<unknown>");
                 if(storePassword) {
Index: apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/RollerSession.java
===================================================================
--- apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/RollerSession.java	(revision 578204)
+++ apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/RollerSession.java	(working copy)
@@ -82,7 +82,7 @@
                         // provisioning enabled, get provisioner and execute
                         AutoProvision provisioner = RollerContext.getAutoProvision();
                         if(provisioner != null) {
-                            boolean userProvisioned = provisioner.execute();
+                            boolean userProvisioned = provisioner.execute(request);
                             if(userProvisioned) {
                                 // try lookup again real quick
                                 user = umgr.getUserByUserName(principal.getName());
Index: apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/CmaRollerContext.java
===================================================================
--- apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/CmaRollerContext.java	(revision 0)
+++ apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/CmaRollerContext.java	(revision 0)
@@ -0,0 +1,45 @@
+/*
+ *  Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ *  Use is subject to license terms.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License"); you
+ *  may not use this file except in compliance with the License. You may
+ *  obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or  implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+package org.apache.roller.weblogger.ui.core;
+
+import javax.servlet.ServletContext;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+
+/**
+ * Initialize the Roller web application/context for container managed
+ * authentication.
+ *
+ * @author Shing Wai Chan
+ */
+public class CmaRollerContext extends RollerContext { 
+    
+    private static Log log = LogFactory.getLog(CmaRollerContext.class);
+    
+    public CmaRollerContext() {
+        super();
+    }
+    
+    /**
+     * Setup Acegi security features.
+     */
+    protected void initializeSecurityFeatures(ServletContext context) { 
+        // no need to setup Acegi security
+    }
+}
Index: apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/security/AutoProvision.java
===================================================================
--- apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/security/AutoProvision.java	(revision 578204)
+++ apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/security/AutoProvision.java	(working copy)
@@ -17,8 +17,10 @@
 */
 package org.apache.roller.weblogger.ui.core.security;
 
+import javax.servlet.http.HttpServletRequest;
+
 public interface AutoProvision {
 
-  public boolean execute();
+  public boolean execute(HttpServletRequest request);
   
 }
Index: apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/security/BasicUserAutoProvision.java
===================================================================
--- apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/security/BasicUserAutoProvision.java	(revision 578204)
+++ apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/security/BasicUserAutoProvision.java	(working copy)
@@ -17,6 +17,8 @@
 */
 package org.apache.roller.weblogger.ui.core.security;
 
+import javax.servlet.http.HttpServletRequest;
+
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.roller.weblogger.WebloggerException;
@@ -37,8 +39,8 @@
    * 
    * @see org.apache.roller.weblogger.ui.core.security.AutoProvision#execute()
    */
-  public boolean execute() {
-    User ud = CustomUserRegistry.getUserDetailsFromAuthentication();
+  public boolean execute(HttpServletRequest request) {
+    User ud = CustomUserRegistry.getUserDetailsFromAuthentication(request);
     
     if(ud != null) {
       UserManager mgr;
Index: apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/security/CustomUserRegistry.java
===================================================================
--- apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/security/CustomUserRegistry.java	(revision 578204)
+++ apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/security/CustomUserRegistry.java	(working copy)
@@ -18,11 +18,13 @@
 package org.apache.roller.weblogger.ui.core.security;
 
 import java.util.Locale;
+import java.util.Set;
 import java.util.TimeZone;
 
 import javax.naming.NamingException;
 import javax.naming.directory.Attribute;
 import javax.naming.directory.Attributes;
+import javax.servlet.http.HttpServletRequest;
 
 import org.acegisecurity.Authentication;
 import org.acegisecurity.context.SecurityContextHolder;
@@ -39,21 +41,24 @@
  */
 public class CustomUserRegistry {
     
-    private static Log log = LogFactory.getLog(CustomUserRegistry.class);
+    private static final Log log = LogFactory.getLog(CustomUserRegistry.class);
+
+    private static final String DEFAULT_SNAME_LDAP_ATTRIBUTE = "screenname";
+    private static final String DEFAULT_UID_LDAP_ATTRIBUTE = "uid";
+    private static final String DEFAULT_NAME_LDAP_ATTRIBUTE = "cn";
+    private static final String DEFAULT_EMAIL_LDAP_ATTRIBUTE = "mail";
+    private static final String DEFAULT_LOCALE_LDAP_ATTRIBUTE = "locale";
+    private static final String DEFAULT_TIMEZONE_LDAP_ATTRIBUTE = "timezone";
     
-    private static String DEFAULT_SNAME_LDAP_ATTRIBUTE = "screenname";
-    private static String DEFAULT_NAME_LDAP_ATTRIBUTE = "cn";
-    private static String DEFAULT_EMAIL_LDAP_ATTRIBUTE = "mail";
-    private static String DEFAULT_LOCALE_LDAP_ATTRIBUTE = "locale";
-    private static String DEFAULT_TIMEZONE_LDAP_ATTRIBUTE = "timezone";
-    
-    private static String SNAME_LDAP_PROPERTY = "users.sso.registry.ldap.attributes.screenname";
-    private static String NAME_LDAP_PROPERTY = "users.sso.registry.ldap.attributes.name";
-    private static String EMAIL_LDAP_PROPERTY = "users.sso.registry.ldap.attributes.email";
-    private static String LOCALE_LDAP_PROPERTY = "users.sso.registry.ldap.attributes.locale";
-    private static String TIMEZONE_LDAP_PROPERTY = "users.sso.registry.ldap.attributes.timezone";
-    
-    public static User getUserDetailsFromAuthentication() {
+    private static final String SNAME_LDAP_PROPERTY = "users.sso.registry.ldap.attributes.screenname";
+    private static final String UID_LDAP_PROPERTY = "users.sso.registry.ldap.attributes.uid";
+    private static final String NAME_LDAP_PROPERTY = "users.sso.registry.ldap.attributes.name";
+    private static final String EMAIL_LDAP_PROPERTY = "users.sso.registry.ldap.attributes.email";
+    private static final String LOCALE_LDAP_PROPERTY = "users.sso.registry.ldap.attributes.locale";
+    private static final String TIMEZONE_LDAP_PROPERTY = "users.sso.registry.ldap.attributes.timezone";
+
+    public static User getUserDetailsFromAuthentication(HttpServletRequest request) {
+
         boolean usingSSO = WebloggerConfig.getBooleanProperty("users.sso.enabled");
         if(!usingSSO) {
             log.info("SSO is not enabled. Skipping CustomUserRegistry functionality.");
@@ -62,82 +67,107 @@
         
         Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
         
+        User ud = new User();
+        // setting default
+        ud.setId(null);
+        ud.setLocale(Locale.getDefault().toString());
+        ud.setTimeZone(TimeZone.getDefault().getID());
+        ud.setDateCreated(new java.util.Date());
+
+        String userName = null;
+        String password = null;
+        String fullName = null;
+        String email = null;
+        String screenName = null;
+        String locale = null;
+        String timezone = null;
+        boolean enabled = false;
+
         if(authentication == null) {
-            log.warn("No Authentication found in SecurityContextHolder.");
-            return null;
-        }
+            // Try to get SSO data from HttpServletRequest
+            userName = getRequestAttribute(request, WebloggerConfig.getProperty(UID_LDAP_PROPERTY, DEFAULT_SNAME_LDAP_ATTRIBUTE));
+
+            screenName = getRequestAttribute(request, WebloggerConfig.getProperty(SNAME_LDAP_PROPERTY, DEFAULT_SNAME_LDAP_ATTRIBUTE));
+
+            fullName = getRequestAttribute(request, WebloggerConfig.getProperty(NAME_LDAP_PROPERTY, DEFAULT_NAME_LDAP_ATTRIBUTE));
+
+            email = getRequestAttribute(request, WebloggerConfig.getProperty(EMAIL_LDAP_PROPERTY, DEFAULT_EMAIL_LDAP_ATTRIBUTE));
+
+            locale = getRequestAttribute(request, WebloggerConfig.getProperty(LOCALE_LDAP_PROPERTY, DEFAULT_LOCALE_LDAP_ATTRIBUTE));
+
+            timezone = getRequestAttribute(request, WebloggerConfig.getProperty(TIMEZONE_LDAP_PROPERTY, DEFAULT_TIMEZONE_LDAP_ATTRIBUTE));
+
+ 
+            if (userName == null && fullName == null && screenName == null &&
+                    email == null && locale == null && timezone == null) {
+
+                log.warn("No Authentication found in SecurityContextHolder and HttpServletRequest.");
+                return null;
+            } else {
+                enabled = true;
+            }
+        } else {
         
-        Object oPrincipal = authentication.getPrincipal();
+            Object oPrincipal = authentication.getPrincipal();
         
-        if(oPrincipal == null) {
-            log.warn("Principal is null. Skipping auto-registration.");
-            return null;
-        }
+            if(oPrincipal == null) {
+                log.warn("Principal is null. Skipping auto-registration.");
+                return null;
+            }
         
-        if (!(oPrincipal instanceof UserDetails)) {
-            log.warn("Unsupported Principal type in Authentication. Skipping auto-registration.");
-            return null;
-        }
+            if (!(oPrincipal instanceof UserDetails)) {
+                log.warn("Unsupported Principal type in Authentication. Skipping auto-registration.");
+                return null;
+            }
         
-        UserDetails userDetails = (UserDetails) oPrincipal;
+            UserDetails userDetails = (UserDetails) oPrincipal;
         
-        String userName = userDetails.getUsername();
-        String password = userDetails.getPassword();
-        boolean enabled = userDetails.isEnabled();
+            userName = userDetails.getUsername();
+            password = userDetails.getPassword();
+            enabled = userDetails.isEnabled();
         
-        User ud = new User();
-        ud.setId(null);
-        ud.setUserName(userName);
         
+            if(userDetails instanceof RollerUserDetails) {
+                RollerUserDetails rollerDetails = (RollerUserDetails) userDetails;
+
+                screenName = rollerDetails.getScreenName();
+                fullName = rollerDetails.getFullName();
+                email = rollerDetails.getEmailAddress();
+                locale = rollerDetails.getLocale();
+                timezone = rollerDetails.getTimeZone();
+            
+            } else if(userDetails instanceof LdapUserDetails) {
+                LdapUserDetails ldapDetails = (LdapUserDetails) userDetails;
+
+                Attributes attributes = ldapDetails.getAttributes();
+                screenName = getLdapAttribute(attributes, WebloggerConfig.getProperty(SNAME_LDAP_PROPERTY, DEFAULT_SNAME_LDAP_ATTRIBUTE));
+                fullName = getLdapAttribute(attributes, WebloggerConfig.getProperty(NAME_LDAP_PROPERTY, DEFAULT_NAME_LDAP_ATTRIBUTE));
+                email = getLdapAttribute(attributes, WebloggerConfig.getProperty(EMAIL_LDAP_PROPERTY, DEFAULT_EMAIL_LDAP_ATTRIBUTE));
+                locale = getLdapAttribute(attributes, WebloggerConfig.getProperty(LOCALE_LDAP_PROPERTY, DEFAULT_LOCALE_LDAP_ATTRIBUTE));
+                timezone = getLdapAttribute(attributes, WebloggerConfig.getProperty(TIMEZONE_LDAP_PROPERTY, DEFAULT_TIMEZONE_LDAP_ATTRIBUTE));
+            
+            }
+        }
+
         boolean storePassword = WebloggerConfig.getBooleanProperty("users.sso.passwords.save");
         if(!storePassword) {
             password = WebloggerConfig.getProperty("users.sso.passwords.defaultValue","<unknown>");
         }
+
         ud.setPassword(password);
         ud.setEnabled(enabled ? Boolean.TRUE : Boolean.FALSE);
-        ud.setLocale(Locale.getDefault().toString());
-        ud.setTimeZone(TimeZone.getDefault().getID());
-        ud.setDateCreated(new java.util.Date());
-        
-        if(userDetails instanceof RollerUserDetails) {
-            RollerUserDetails rollerDetails = (RollerUserDetails) userDetails;
-            
-            ud.setScreenName(rollerDetails.getScreenName());
-            
-            ud.setFullName(rollerDetails.getFullName());
 
-            //TODO: Bug here as setting email addy to a full name value?
-            ud.setEmailAddress(rollerDetails.getFullName());
-            if(rollerDetails.getTimeZone() != null) {
-                ud.setTimeZone(rollerDetails.getTimeZone());
-            }
-            
-            if(rollerDetails.getLocale() != null) {
-                ud.setLocale(rollerDetails.getLocale());
-            }
-            
-        } else if(userDetails instanceof LdapUserDetails) {
-            LdapUserDetails ldapDetails = (LdapUserDetails) userDetails;
-            Attributes attributes = ldapDetails.getAttributes();
-            String sname = getLdapAttribute(attributes, WebloggerConfig.getProperty(SNAME_LDAP_PROPERTY, DEFAULT_SNAME_LDAP_ATTRIBUTE));
-            String name = getLdapAttribute(attributes, WebloggerConfig.getProperty(NAME_LDAP_PROPERTY, DEFAULT_NAME_LDAP_ATTRIBUTE));
-            String email = getLdapAttribute(attributes, WebloggerConfig.getProperty(EMAIL_LDAP_PROPERTY, DEFAULT_EMAIL_LDAP_ATTRIBUTE));
+        ud.setUserName(userName);
+        ud.setFullName(fullName);
+        ud.setEmailAddress(email);
+        ud.setScreenName(screenName);
+        if (locale != null) {
+            ud.setLocale(locale);
+        }
+        if (timezone != null) {
+            ud.setTimeZone(timezone);
+        }
 
-            ud.setScreenName(sname);
-            ud.setFullName(name);
-            ud.setEmailAddress(email);
-            
-            String locale = getLdapAttribute(attributes, WebloggerConfig.getProperty(LOCALE_LDAP_PROPERTY, DEFAULT_LOCALE_LDAP_ATTRIBUTE));
-            String timezone = getLdapAttribute(attributes, WebloggerConfig.getProperty(TIMEZONE_LDAP_PROPERTY, DEFAULT_TIMEZONE_LDAP_ATTRIBUTE));
-            
-            if(locale != null) {
-                ud.setLocale(locale);
-            }
-            if(timezone != null) {
-                ud.setTimeZone(timezone);
-            }
-        }
-        
         return ud;
     }
     
@@ -165,5 +195,21 @@
         
         return oValue.toString();
     }
+
+    private static String getRequestAttribute(HttpServletRequest request, String attributeName) {
+
+        String attr = null;
+        Object attrObj = request.getAttribute(attributeName);
+        if (attrObj instanceof String) {
+            attr = (String)attrObj;
+        } else if (attrObj instanceof Set) {
+            Set attrSet = (Set)attrObj;           
+            if (!attrSet.isEmpty()) {
+                attr = (String)attrSet.iterator().next();
+            }
+        }
+
+        return attr;
+    }
     
 }
Index: apps/weblogger/build.properties
===================================================================
--- apps/weblogger/build.properties	(revision 578204)
+++ apps/weblogger/build.properties	(working copy)
@@ -9,7 +9,7 @@
 build.debug=true
 build.sourcelevel=1.5
 build.deprecation=false
-junit.haltonerror=false
+junit.haltonerror=true
 
 # automated testing contorls
 
Index: apps/weblogger/web/themes/frontpage/Weblog.vm
===================================================================
--- apps/weblogger/web/themes/frontpage/Weblog.vm	(revision 578204)
+++ apps/weblogger/web/themes/frontpage/Weblog.vm	(working copy)
@@ -1,4 +1,4 @@
-#includeTemplate($model.weblog "_header") 
+#includeTemplate($model.weblog "_header")  
 
 #set($maxResults = 25)
 #set($since = 365)
@@ -155,23 +155,49 @@
                 <br />		
             </div>
             
+
+
             <br />
             <div class="sidebarBodyHead">
                 <div class="menu-tr">
                     <div class="menu-tl">
-                       <h3>Hot Tags</h3>		
+                       <h3>SocialFish Services</h3>		
                     </div>
                 </div>
             </div>	
 
+            <div class="sidebarBody">  
+
+               #set($services = $disco.getServiceRegistry().getServices()) 
+               #foreach($service in $services)
+                  $service.name<br />
+                  #set($link = $service.getMainLink("text/html").getHref())
+                  &nbsp;&nbsp;&nbsp;<a href="$link">$link</a><br />
+               #end
+               <br />	
+	
+            </div>
+            
+
+
+
+            <br />
+            <div class="sidebarBodyHead">
+                <div class="menu-tr">
+                    <div class="menu-tl">
+                       <h3>SocialFish-wide Tags</h3>		
+                    </div>
+                </div>
+            </div>	
+
             <div id="tagbin" class="sidebarBody">  
-                #set($sitetags = $site.getPopularTags(-1, 100))
-                #foreach ($tag in $sitetags)
-                    #if ($tag.count > 4)
-                        <a class="tag s${tag.intensity}" href="$url.tag($tag.name)"
-                            title="$tag.count">$tag.name</a>
-                    #end
+
+                #set($tags = $tagCloud.getCombinedTags())
+                #foreach($tag in $tags)
+                    $tag.name#foreach($subtag in $tag.tags)[<a href="$subtag.href" 
+                       title="$subtag.sourceName">$subtag.count</a>]#end
                 #end
+
             </div>
             
 
Index: apps/weblogger/web/themes/frontpage/_css.vm
===================================================================
--- apps/weblogger/web/themes/frontpage/_css.vm	(revision 578204)
+++ apps/weblogger/web/themes/frontpage/_css.vm	(working copy)
@@ -5,9 +5,9 @@
 body {
 margin: 0px;
 padding: 0px;
-background-color: white;
-color: black;
-font-family: Arial, Helvetica, sans-serif;
+background-color: #FFF;
+color: #333;
+font-family:  sans-serif;
 font-size: 12px;
 }
 p.subtitle {
@@ -19,20 +19,23 @@
     margin: 0px 0px 15px 0px;
 }
 h1 {
-    background: transparent;
-    font-size: 20px;
+    font-family:sans-serif; 
+ #   background: transparent;
+    font-size: 18px;
     font-weight: bold;
 }
 h2 {
-    background: transparent;
-    font-size: large;
+    font-family:sans-serif;
+#    background: transparent;
+    font-size: 15px;
     font-weight: bold;
-    letter-spacing: 0.2em;
+#    letter-spacing: 0.2em;
 }
 h3 {
 	letter-spacing: normal;
-	font-family: Arial, Helvetica, sans-serif;
+	font-family: sans-serif;
 	font-size: 12px;
+	font-weight: bold;
 	text-decoration: none;
 	margin: 0px;
 }
@@ -50,15 +53,19 @@
     text-decoration: none;
 }
 a:link {
+    color:#003399;
     text-decoration: none;
 }
 a:visited {
-    text-decoration: none;
+    color:#003399;
+     text-decoration: none;
 }
 a:hover {
-    text-decoration: underline;
+      color:#003399;    
+       text-decoration: underline;
 }
 a:active {
+    color:#003399;
     text-decoration: underline;
 }
 
@@ -82,7 +89,8 @@
 }
 
 div.entries {
-    padding: 15px;
+    padding: 10px;
+#    padding: 15px;
 }
 
 div.entry {
@@ -129,7 +137,7 @@
    padding: 5px;
 }
 div.entriesBox {
-   font-family: Arial, Helvetica, sans-serif;
+   font-family: sans-serif;
    border-bottom-width: thin;
    border-bottom-style: solid;
    padding: 4px;
@@ -137,7 +145,7 @@
 div.entryBoxPinned {
 }
 .entryTitle {
-    font-family: Arial, Helvetica, sans-serif;
+    font-family: sans-serif;
     font-weight: bold;
     text-decoration: none;
     font-size:130%;
@@ -145,7 +153,7 @@
     padding:0px;
 }
 .entryDetails {
-    font-family: Arial, Helvetica, sans-serif;
+    font-family: sans-serif;
     text-decoration: none;
     color: #777;
     font-size:80%;
@@ -153,7 +161,7 @@
     padding:0px;
 }
 .entryDescription {
-    font-family: Arial, Helvetica, sans-serif;
+    font-family: sans-serif;
     text-decoration: none;
 }
 
@@ -164,7 +172,7 @@
 }
 input.searchButton {
     cursor: hand;
-    font-family: lucida,arial,sans-serif;
+    font-family: sans-serif;
     height: 1.4em;
     font-weight: bold;
     font-size: 11px;
@@ -251,7 +259,8 @@
 -------------------------------------------------------- */
 
 #logobackground {
-    background: #ad3431 !important; 
+ #   background: #ad3431 !important; 
+    background: #FFF !important; 
 }
 .bannerBox {
     background: url("$url.resource("tan-banner.gif")") repeat-x top;
@@ -261,30 +270,38 @@
     color: white;
 }
 .bannerStatusBox a {
-    color: white;
+color:#003399;
+#    color: white;
 }
 .bannerStatusBox a:link {
-    color: white;
+color:#003399; 
+#   color: white;
 }
 .bannerStatusBox a:visited {
-    color: white;
+color:#003399;
+#    color: white;
 }
 h1 {
-    color: #ad3537;
+color:#333;
+#    color: #ad3537;
 }
 h2 {
-    color: #ad3537;
+color:#333;
+ #   color: #ad3537;
 }
 h3 {
     background: transparent;
-    color: #ad3537;
+color:#333;  
+#  color: #ad3537;
     font-weight: bold;
 }
 a:link {
-    color: #ad3537;
+color:#003399;
+#    color: #ad3537;
 }
 a:visited {
-    color: #ad3537;
+color:#003399; 
+ #  color: #ad3537;
 }
 
 div.yourWeblogBox {
@@ -292,7 +309,8 @@
 }
 input.searchButton {
     color: white;
-    background: #ad3431;
+    background: #FFF;
+#    background: #ad3431;
 }
 .sidebarBodyHead {
     background: #ad3431;
@@ -470,4 +488,4 @@
 a.s2, a.s2:visited { font-size: 115%; color: #deafad ! important; }
 a.s1, a.s1:visited { font-size: 110%; color: #f1dbdb ! important; }
 
-/* end css */
+/* end css */
\ No newline at end of file
Index: apps/weblogger/web/themes/frontpage/_footer.vm
===================================================================
--- apps/weblogger/web/themes/frontpage/_footer.vm	(revision 578204)
+++ apps/weblogger/web/themes/frontpage/_footer.vm	(working copy)
@@ -1,5 +1,5 @@
 <div id="footer">
-Powered by <a href="http://roller.apache.org";>Apache Roller</a> $config.rollerVersion |
+Powered by SocialFish (based on <a href="http://roller.apache.org";>Apache Roller</a> $config.rollerVersion) |
 <a href="http://opensource2.atlassian.com/projects/roller/";>
 Report an Issue</a> | 
 <a href="http://cwiki.apache.org/confluence/display/ROLLER/Roller+User+Documentation";>
Index: apps/weblogger/web/WEB-INF/jsps/core/Login.jsp
===================================================================
--- apps/weblogger/web/WEB-INF/jsps/core/Login.jsp	(revision 578204)
+++ apps/weblogger/web/WEB-INF/jsps/core/Login.jsp	(working copy)
@@ -17,13 +17,26 @@
 -->
 
 <%-- Body of the login page, invoked from login.jsp --%>
-
+<%@ page import="org.apache.roller.weblogger.config.WebloggerConfig" %>
 <%@ include file="/WEB-INF/jsps/taglibs-struts2.jsp" %>
 
+<%!
+String securityCheckUrl = null;
+boolean cmaEnabled = WebloggerConfig.getBooleanProperty("authentication.cma.enabled");
+%>
+
+<%
+if (cmaEnabled) {
+    securityCheckUrl = "/j_security_check";
+} else {
+    securityCheckUrl = "/roller_j_security_check";
+}
+%>
+
 <p><s:text name="loginPage.prompt" /></p>
 
 <form method="post" id="loginForm" 
-      action="<c:url value="/roller_j_security_check"/>"
+      action="<c:url value="<%= securityCheckUrl %>"/>"
       onsubmit="saveUsername(this)">
       
     <table>
Index: apps/weblogger/web/WEB-INF/classes/ApplicationResources.properties
===================================================================
--- apps/weblogger/web/WEB-INF/classes/ApplicationResources.properties	(revision 578204)
+++ apps/weblogger/web/WEB-INF/classes/ApplicationResources.properties	(working copy)
@@ -88,7 +88,6 @@
 bookmarksForm.delete.confirm=Delete selected bookmarks?
 bookmarksForm.description=Description
 bookmarksForm.folder=Bookmark Folder
-bookmarksForm.priority=Priority
 bookmarksForm.edit=Edit
 bookmarksForm.edit.tip=Click to edit this folder or bookmark
 bookmarksForm.move=Move selected
@@ -290,7 +289,6 @@
 commentManagement.bulkDeletePrompt1=Your query matched {0} comments, 
 commentManagement.bulkDeletePrompt2=delete them all?
 commentManagement.confirmBulkDelete=Are you sure you want to delete all {0} selected by your query?
-commentManagement.deleteSuccess=Successfully deleted {0} comments
 
 commentManagement.pendingStatus=Pending status
 commentManagement.onlyPending=Pending only
@@ -633,7 +631,7 @@
 
 # ---------------------------------------------------------------------- Footer
 
-footer.productName=Powered by <a href="http://roller.apache.org";>Apache Roller Weblogger</a> Version {0}
+footer.productName=Powered by SocialFish (based on <a href="http://roller.apache.org";>Apache Roller</a> {0})
 footer.reportIssue=Report an Issue
 footer.userGuide=User Guide
 footer.macros=Macros
@@ -641,7 +639,7 @@
 
 # ------------------------------------------------------ index / setup page
 
-index.heading=Welcome to Roller!
+index.heading=Welcome to SocialFish!
 index.prompt=Follow these steps to finalize your Roller installation:
 
 index.error=ERROR quering the Roller database, are you sure you ran the \
@@ -740,7 +738,6 @@
 installer.bannerTitleRight=Auto-Installer
 
 # database error
-installer.error.connection.pageTitle=Database connection error
 installer.cannotConnectToDatabase=Cannot connect to database
 installer.whatHappened=What happened?
 installer.whatHappenedDatabaseConnectionError=\
@@ -756,7 +753,6 @@
 To help you debug the problem, here is the stack trace for that exception:
 
 # unknown error
-installer.error.unknown.pageTitle=Unknown error
 installer.unknownError=An unknown error has occurred
 installer.whatHappenedUnknown=An unknown and unexpected error occured when \
 Roller tried to check database status or bootstrap itself. Roller can''t \
@@ -764,10 +760,9 @@
 and diagnose the problem yourself. Follow the instructons on the Roller wiki \
 and seek help from the <a href=\
 "http://cwiki.apache.org/confluence/display/ROLLER/Roller+Mailing+Lists";> \
-Roller user mailing list</a>.
+Roller user mailing list.
 
 # create tables
-installer.database.creation.pageTitle=Database table creation
 installer.noDatabaseTablesFound=No database tables found
 installer.noDatabaseTablesExplanation=\
 Roller is able to connect to your database of type [{0}], but found no tables. 
@@ -787,7 +782,6 @@
 issued during the creation process:
 
 # upgrade tables
-installer.database.upgrade.pageTitle=Database table upgrade
 installer.databaseUpgradeNeeded=Database tables need to be upgraded
 installer.databaseUpgradeNeededExplanation=\
 Roller is able to connect to your database of type [{0}] and found tables, \
@@ -839,7 +833,6 @@
 macro.searchresults.hits_2=try this same search</a> on \
 <a href="http://google.com";>Google</a>.</em>
 macro.searchresults.again=Search Again
-macro.searchresults.incategory=- In Category -
 
 error.searchProblem=There was a problem with your search.
 
@@ -1201,9 +1194,6 @@
 ConfigForm.proxyHost=Proxy host for feed fetcher
 ConfigForm.proxyPort=Proxy port for feed fetcher
 
-ConfigForm.message.saveSucceeded=Saved Planet configuration
-ConfigForm.error.saveFailed=Error saving Planet configuration
-
 planetConfig.title.control=Experimental Planet Control
 planetConfig.prompt.control=Launch background tasks (for testing purposes only)
 
@@ -1758,17 +1748,16 @@
 weblogEdit.trackbackErrorParsing=Trackback failed, url indicated success but response message was improperly formatted.  Response was: {0}
 weblogEdit.trackbackError404=Trackback failed, could not reach trackback url.  Are you sure you put in the right url?
 
-weblogEdit.hasComments=<a href="{0}">Comments [{1}]</a>
+weblogEdit.hasComments=Comments [{0}]
 
 weblogEdit.enclosureURL=Enclosure URL
 weblogEdit.enclosureType=Type
-weblogEdit.enclosureLength=Length
+weblogEdit.encosureLegnth=Length
 weblogEdit.encosureInvalid=Enclosure URL is invalid
 weblogEdit.mediaCastFailedFetchingInfo=Unable to reach the enclosure. Check the hostname in the URL.
 weblogEdit.mediaCastUrlMalformed=The enclosure URL was malformed.
 weblogEdit.mediaCastResponseError=The enclosure server returned an error. Do you have the right URL?
 weblogEdit.mediaCastLacksContentTypeOrLength=Unable to use enclosure URL. Server provided no content type or no length.
-weblogEdit.mediaCastErrorRemoving=Error removing MediaCast from weblog entry
 weblogEdit.error.incompleteEntry=Entry must have a title
 
 # errors from validation
@@ -1955,7 +1944,7 @@
 websiteSettings.commentSettings=Comments
 websiteSettings.allowComments=Allow Comments for your weblog?
 websiteSettings.moderateComments=Moderate comments
-websiteSettings.emailComments=Email notification of comments?
+websiteSettings.emailComments=Email Comments?
 websiteSettings.emailFromAddress=Default <em>from</em> e-mail address for notifications
 websiteSettings.commentsOffForInactiveWeblog=Turned comments off for inactive weblog
 
@@ -1969,8 +1958,8 @@
 # --- Weblog API
 
 websiteSettings.bloggerApi=Weblog Client API
-websiteSettings.enableBloggerApi=Enable weblog client support?
-websiteSettings.bloggerApiCategory=Category for posts received via clients
+websiteSettings.enableBloggerApi=Enable Blogger and MetaWeblog APIs for your weblog?
+websiteSettings.bloggerApiCategory=Category for posts received via Blogger API 
 
 # --- Formatting
 
@@ -2027,7 +2016,7 @@
 
 # ------------------------------------------------------------- Welcome new user
 
-welcome.title=Welcome to Roller
+welcome.title=Welcome to SocialFish 
 welcome.accountCreated=Your new user account has been created.
 welcome.addressIs=Your new Weblog''s address is
 welcome.rssAddressIs=Your main newsfeed address is
@@ -2047,7 +2036,7 @@
 # ---------------------------------------------------------------- Your Weblogs
 
 yourWebsites.title=Main Menu
-yourWebsites.subtitle=Welcome to Roller
+yourWebsites.subtitle=Welcome to SocialFish
  
 yourWebsites.actions=Actions
 
Index: apps/weblogger/web/roller-ui/theme/sun/colors.css
===================================================================
--- apps/weblogger/web/roller-ui/theme/sun/colors.css	(revision 578204)
+++ apps/weblogger/web/roller-ui/theme/sun/colors.css	(working copy)
@@ -20,11 +20,25 @@
 /* ------------------------------------------------------------------------ */
 /* add colors and images to roller.css */
 
+BODY, TH, TD, P, DIV, SPAN, INPUT, SELECT, TEXTAREA, FORM, B, STRONG, I, U, H1, H2, H3, H4, H5, H6, 
+ DL, DD, DT, UL, LI, OL, OPTION, OPTGROUP, A {font-family:sans-serif;font-size:12px}
+H1 {font-family:sans-serif;font-weight:bold;font-size:18px}
+H2 {font-family:sans-serif;font-weight:bold;font-size:15px}
+H3, H4 {font-family:sans-serif;font-weight:bold;font-size:12px}
+H5, H6 {font-family:sans-serif;font-weight:bold;font-size:11px}
+.DefBdy {color:#333;background-color:#FFF;margin:0px}
+a:link {color:#003399;text-decoration:none}
+a:visited {color:#003399;text-decoration:none}
+a:hover {color:#003399;text-decoration:underline}
+a:active {color:#003399;text-decoration:none}
+.ConMgn {margin:0px 10px}
+
 #logobackground {
     background: #e77100 !important; 
 }
+
 .bannerBox {
-    background: url("two-banner.gif") repeat-x top;
+    background: url("dot.gif") repeat-x top;
     border-bottom: 2px black solid;
     color: #666666;
 }
@@ -36,54 +50,28 @@
     border: none; 
     color: #5d7992;
 }
-h1 {
-    color: #e77100;
-}
-h2 {
-    color: #e77100;
-}
-h3 {
-    color: black;
-}
+
 p.subtitle {
     color: #000000;
 }
 .subtitle span {
     color: #52829c;
 }
-a {
-	color: #35556B;
-}
-a:link {
-	color: #35556B;
-}
-a:visited {
-	color: #35556B;
-}
-a:hover {
-	color: #35556B;
-}
-a:active {
-	color: #35556B;
-}
-table.rollertable th, table.rollertable th {
-    background: #52829c;
-}
-table.rollertable td, table.rollertable tbody td {
-    border: 1px solid #52829c;
-}
-div.centerTitle {
-    background: #dee7ef;
-}
-div.control {
-    background: #dee7ef; 
-}
-div.controlToggle {
-    background: url("two-togglegrey.gif") repeat-x top; 
-}
+
+/* TABLE */
+table.rollertable{background-color:#BEC7CC;color:#333;width:100%;padding:6px;border-right:none;border-bottom:none;empty-cells:show}
+table.rollertable tbody td, table.rollertable td {border-right:solid 1px #BEC7CC;border-bottom:solid 1px #BEC7CC;border-left:none;border-top:none;padding:4px 5px 1px 5px;background-color:#fff}
+table.rollertable th{border-right:solid 1px #BEC7CC;border-bottom:solid 1px #BEC7CC;border-left:none;border-top:none;padding:3px 5px 1px 5px;background-color:#fff;font-weight:normal}
+
+div.centerTitle {background-color:#CCC}
+
+div.control {padding-left:10px;padding-top:5px;padding-bottom:3px}
+div.controlToggle {padding-left:7px;padding-right:3px;padding-bottom:2px;border-left:3px solid #E5E5E5;border-top:3px solid #E5E5E5;border-right:3px solid #E5E5E5}
+
 div.entriesBox {
    background: #e3e3e3;
 }
+
 div.entryTitleBox {
     color: #35556B; 
     background: #dee7ef; 

Reply via email to