Author: carlucci
Date: Thu May  3 21:38:26 2012
New Revision: 1333637

URL: http://svn.apache.org/viewvc?rev=1333637&view=rev
Log:
RAVE-586: Break out navbar (supports RAVE-585: Break up the Rave UI into 
smaller reusable units to make customization easier).  Patch supplied by Chris 
Geer.

Modified:
    
rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/PageController.java
    
rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/ProfileController.java
    
rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/WidgetStoreController.java
    
rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/admin/AdminControllerUtil.java
    
rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/util/ControllerUtils.java
    
rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/model/NavigationItem.java
    
rave/trunk/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/controller/ProfileControllerTest.java
    
rave/trunk/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/model/NavigationItemTest.java
    
rave/trunk/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/model/NavigationMenuTest.java
    
rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/addwidget.jsp
    rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/page.jsp
    
rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/personProfile.jsp
    rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/store.jsp
    
rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/widget.jsp
    rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/tags/header.tag

Modified: 
rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/PageController.java
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/PageController.java?rev=1333637&r1=1333636&r2=1333637&view=diff
==============================================================================
--- 
rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/PageController.java
 (original)
+++ 
rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/PageController.java
 Thu May  3 21:38:26 2012
@@ -25,6 +25,8 @@ import org.apache.rave.portal.service.Pa
 import org.apache.rave.portal.service.PageService;
 import org.apache.rave.portal.service.UserService;
 import org.apache.rave.portal.web.controller.util.ControllerUtils;
+import org.apache.rave.portal.web.model.NavigationItem;
+import org.apache.rave.portal.web.model.NavigationMenu;
 import org.apache.rave.portal.web.util.ModelKeys;
 import org.apache.rave.portal.web.util.ViewNames;
 import org.slf4j.Logger;
@@ -41,13 +43,13 @@ import java.util.List;
 
 /**
  * Page Controller
- * 
+ *
  * @author carlucci
  */
 @Controller
 public class PageController {
     private final Logger logger = LoggerFactory.getLogger(getClass());
-         
+
     private PageService pageService;
     private UserService userService;
     private PageLayoutService pageLayoutService;
@@ -71,21 +73,25 @@ public class PageController {
         Page page = pageService.getDefaultPageFromList(pages);
         List<PageLayout> pageLayouts = 
pageLayoutService.getAllUserSelectable();
         addAttributesToModel(model, page, pages, pageLayouts);
-        return ControllerUtils.getDeviceAppropriateView(request, 
ViewNames.getPageView(page.getPageLayout().getCode()), ViewNames.MOBILE_HOME);
-    }          
-    
+        String view = ControllerUtils.getDeviceAppropriateView(request, 
ViewNames.getPageView(page.getPageLayout().getCode()), ViewNames.MOBILE_HOME);
+        ControllerUtils.addNavItemsToModel(view, model, page.getEntityId(), 
userService.getAuthenticatedUser());
+        return view;
+    }
+
     @RequestMapping(value = "/page/view/{pageId}", method = RequestMethod.GET)
     public String view(@PathVariable Long pageId, Model model, 
HttpServletRequest request) {
         User user = userService.getAuthenticatedUser();
         logger.debug("attempting to get pageId {} for {}", pageId, user);
-        
+
         List<Page> pages = getAllPagesForAuthenticatedUser();
         Page page = pageService.getPageFromList(pageId, pages);
         List<PageLayout> pageLayouts = 
pageLayoutService.getAllUserSelectable();
         addAttributesToModel(model, page, pages, pageLayouts);
-        return ControllerUtils.getDeviceAppropriateView(request, 
ViewNames.getPageView(page.getPageLayout().getCode()), ViewNames.MOBILE_HOME);
+        String view = ControllerUtils.getDeviceAppropriateView(request, 
ViewNames.getPageView(page.getPageLayout().getCode()), ViewNames.MOBILE_HOME);
+        ControllerUtils.addNavItemsToModel(view, model, page.getEntityId(), 
user);
+        return view;
     }
-    
+
     private List<Page> getAllPagesForAuthenticatedUser() {
         User user = userService.getAuthenticatedUser();
         long userId = user.getEntityId();
@@ -99,10 +105,12 @@ public class PageController {
         }
         return pages;
     }
-    
+
     private void addAttributesToModel(Model model, Page page, List<Page> 
pages, List<PageLayout> pageLayouts) {
         model.addAttribute(ModelKeys.PAGE, page);
         model.addAttribute(ModelKeys.PAGES, pages);
         model.addAttribute(ModelKeys.PAGE_LAYOUTS, pageLayouts);
     }
+
+
 }

Modified: 
rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/ProfileController.java
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/ProfileController.java?rev=1333637&r1=1333636&r2=1333637&view=diff
==============================================================================
--- 
rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/ProfileController.java
 (original)
+++ 
rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/ProfileController.java
 Thu May  3 21:38:26 2012
@@ -23,6 +23,8 @@ import org.apache.rave.portal.model.Page
 import org.apache.rave.portal.model.User;
 import org.apache.rave.portal.service.PageService;
 import org.apache.rave.portal.service.UserService;
+import org.apache.rave.portal.web.controller.util.ControllerUtils;
+import org.apache.rave.portal.web.model.NavigationMenu;
 import org.apache.rave.portal.web.util.ModelKeys;
 import org.apache.rave.portal.web.util.ViewNames;
 import org.slf4j.Logger;
@@ -39,7 +41,7 @@ import org.springframework.web.bind.anno
 public class ProfileController {
 
        private final Logger logger = LoggerFactory.getLogger(getClass());
-       
+
        private final UserService userService;
        private final PageService pageService;
 
@@ -64,15 +66,17 @@ public class ProfileController {
         Page personProfilePage = 
pageService.getPersonProfilePage(user.getEntityId());
         addAttributesToModel(model, user, referringPageId);
         model.addAttribute(ModelKeys.PAGE, personProfilePage);
-               return 
ViewNames.getPersonPageView(personProfilePage.getPageLayout().getCode());
+               String view =  
ViewNames.getPersonPageView(personProfilePage.getPageLayout().getCode());
+        addNavItemsToModel(view, model, referringPageId, user);
+        return view;
        }
-       
+
        /**
         * Updates the user's personal information
         *
         * @param model                                 {@link Model} map
         * @param referringPageId                       page reference id
-        * @param updatedUser                           Updated user 
information 
+        * @param updatedUser                           Updated user information
         * @return the view name of the user profile page
         */
     @RequestMapping(method = RequestMethod.POST)
@@ -99,7 +103,7 @@ public class ProfileController {
 
         return ViewNames.REDIRECT + "app/person/" + user.getUsername();
     }
-       
+
        /*
         * Function to add attributes to model map
         */
@@ -107,4 +111,10 @@ public class ProfileController {
        model.addAttribute(ModelKeys.USER_PROFILE, user);
        model.addAttribute(ModelKeys.REFERRING_PAGE_ID, referringPageId);
     }
+
+    public static void addNavItemsToModel(String view, ModelMap model, Long 
referringPageId, User user) {
+        long refPageId = referringPageId != null ? referringPageId : 0;
+        final NavigationMenu topMenu = ControllerUtils.getTopMenu(view, 
refPageId, user);
+        model.addAttribute(topMenu.getName(), topMenu);
+    }
 }

Modified: 
rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/WidgetStoreController.java
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/WidgetStoreController.java?rev=1333637&r1=1333636&r2=1333637&view=diff
==============================================================================
--- 
rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/WidgetStoreController.java
 (original)
+++ 
rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/WidgetStoreController.java
 Thu May  3 21:38:26 2012
@@ -19,11 +19,11 @@
 
 package org.apache.rave.portal.web.controller;
 
-import org.apache.rave.portal.model.PortalPreference;
-import org.apache.rave.portal.model.User;
-import org.apache.rave.portal.model.Widget;
-import org.apache.rave.portal.model.WidgetStatus;
+import org.apache.rave.portal.model.*;
 import org.apache.rave.portal.service.*;
+import org.apache.rave.portal.web.controller.util.ControllerUtils;
+import org.apache.rave.portal.web.model.NavigationItem;
+import org.apache.rave.portal.web.model.NavigationMenu;
 import org.apache.rave.portal.web.util.ModelKeys;
 import org.apache.rave.portal.web.util.PortalPreferenceKeys;
 import org.apache.rave.portal.web.util.ViewNames;
@@ -77,20 +77,22 @@ public class WidgetStoreController {
     @RequestMapping(method = RequestMethod.GET)
     public String view(Model model, @RequestParam long referringPageId,
             @RequestParam(required = false, defaultValue = "0") int offset) {
+        final String view = ViewNames.STORE;
         User user = userService.getAuthenticatedUser();
-        widgetStoreModelHelper(model, referringPageId, user);
+        widgetStoreModelHelper(model, referringPageId, user, view);
         model.addAttribute(ModelKeys.WIDGETS, 
widgetService.getPublishedWidgets(offset, getPageSize()));
-        return ViewNames.STORE;
+        return view;
     }
 
     @RequestMapping(method = RequestMethod.GET, value = "mine")
     public String viewMine(Model model, @RequestParam long referringPageId,
             @RequestParam(required = false, defaultValue = "0") int offset) {
+        final String view = ViewNames.STORE;
         User user = userService.getAuthenticatedUser();
-        widgetStoreModelHelper(model, referringPageId, user);
+        widgetStoreModelHelper(model, referringPageId, user, view);
         model.addAttribute(ModelKeys.WIDGETS,
                 widgetService.getWidgetsByOwner(user.getEntityId(), offset, 
getPageSize()));
-        return ViewNames.STORE;
+        return view;
     }
 
     /**
@@ -106,12 +108,13 @@ public class WidgetStoreController {
      */
     @RequestMapping(method = RequestMethod.GET, value = "widget/{widgetId}")
     public String viewWidget(Model model, @PathVariable long widgetId, 
@RequestParam long referringPageId) {
+        final String view = ViewNames.WIDGET;
         final User user = userService.getAuthenticatedUser();
-        widgetStoreModelHelper(model, referringPageId, user);
+        widgetStoreModelHelper(model, referringPageId, user, view);
         model.addAttribute(ModelKeys.WIDGET, 
widgetService.getWidget(widgetId));
         model.addAttribute(ModelKeys.WIDGET_STATISTICS, 
widgetService.getWidgetStatistics(widgetId, user.getEntityId()));
         model.addAttribute(ModelKeys.USER_PROFILE, user);
-        return ViewNames.WIDGET;
+        return view;
     }
 
     /**
@@ -130,13 +133,14 @@ public class WidgetStoreController {
     @RequestMapping(method = RequestMethod.GET, value = "search")
     public String viewSearchResult(Model model, @RequestParam long 
referringPageId, @RequestParam String searchTerm,
             @RequestParam(required = false, defaultValue = "0") int offset) {
+        final String view = ViewNames.STORE;
         User user = userService.getAuthenticatedUser();
-        widgetStoreModelHelper(model, referringPageId, user);
+        widgetStoreModelHelper(model, referringPageId, user, view);
         model.addAttribute(ModelKeys.WIDGETS,
                 widgetService.getPublishedWidgetsByFreeTextSearch(searchTerm, 
offset, getPageSize()));
         model.addAttribute(ModelKeys.SEARCH_TERM, searchTerm);
         model.addAttribute(ModelKeys.OFFSET, offset);
-        return ViewNames.STORE;
+        return view;
     }
 
     /**
@@ -155,20 +159,22 @@ public class WidgetStoreController {
     @RequestMapping(method = RequestMethod.GET, value = "tag")
     public String viewTagResult(Model model, @RequestParam long 
referringPageId, @RequestParam String keyword,
             @RequestParam(required = false, defaultValue = "0") int offset) {
+        final String view = ViewNames.STORE;
         User user = userService.getAuthenticatedUser();
-        widgetStoreModelHelper(model, referringPageId, user);
+        widgetStoreModelHelper(model, referringPageId, user, view);
         model.addAttribute(ModelKeys.WIDGETS, 
widgetService.getWidgetsByTag(keyword, offset, getPageSize()));
         model.addAttribute(ModelKeys.OFFSET, offset);
         model.addAttribute(ModelKeys.SELECTED_TAG, keyword);
-        return ViewNames.STORE;
+        return view;
     }
 
     @RequestMapping(method = RequestMethod.GET, value = "category")
     public String viewCategoryResult(@RequestParam(required = true) long 
referringPageId,
             @RequestParam(required = true) long categoryId,
             @RequestParam(required = false, defaultValue = "0") int offset, 
Model model) {
+        final String view = ViewNames.STORE;
         User authenticatedUser = userService.getAuthenticatedUser();
-        widgetStoreModelHelper(model, referringPageId, authenticatedUser);
+        widgetStoreModelHelper(model, referringPageId, authenticatedUser, 
view);
         if (categoryId > 0) {
             model.addAttribute(ModelKeys.WIDGETS, 
widgetService.getWidgetsByCategory(categoryId, offset, getPageSize()));
         } else {
@@ -176,7 +182,7 @@ public class WidgetStoreController {
         }
         model.addAttribute(ModelKeys.OFFSET, offset);
         model.addAttribute(ModelKeys.SELECTED_CATEGORY, categoryId);
-        return ViewNames.STORE;
+        return view;
     }
 
     /**
@@ -191,9 +197,11 @@ public class WidgetStoreController {
     @RequestMapping(method = RequestMethod.GET, value = "widget/add")
     public String viewAddWidgetForm(Model model, @RequestParam long 
referringPageId) {
         final Widget widget = new Widget();
-        model.addAttribute(ModelKeys.REFERRING_PAGE_ID, referringPageId);
+        final String view = ViewNames.ADD_WIDGET_FORM;
         model.addAttribute(ModelKeys.WIDGET, widget);
-        return ViewNames.ADD_WIDGET_FORM;
+        model.addAttribute(ModelKeys.REFERRING_PAGE_ID, referringPageId);
+        ControllerUtils.addNavItemsToModel(view, model, referringPageId, 
userService.getAuthenticatedUser());
+        return view;
     }
 
     /**
@@ -215,9 +223,11 @@ public class WidgetStoreController {
         User user = userService.getAuthenticatedUser();
         widgetValidator.validate(widget, results);
         if (results.hasErrors()) {
+            final String view = ViewNames.ADD_WIDGET_FORM;
             model.addAttribute(ModelKeys.WIDGET, widget);
             model.addAttribute(ModelKeys.REFERRING_PAGE_ID, referringPageId);
-            return ViewNames.ADD_WIDGET_FORM;
+            ControllerUtils.addNavItemsToModel(view, model, referringPageId, 
user);
+            return view;
         }
         widget.setWidgetStatus(WidgetStatus.PREVIEW);
         widget.setOwner(user);
@@ -236,11 +246,12 @@ public class WidgetStoreController {
      * @param user
      *            Current authenticated User
      */
-    private void widgetStoreModelHelper(Model model, long referringPageId, 
User user) {
+    private void widgetStoreModelHelper(Model model, long referringPageId, 
User user, String view) {
         model.addAttribute(ModelKeys.REFERRING_PAGE_ID, referringPageId);
         model.addAttribute(ModelKeys.WIDGETS_STATISTICS, 
widgetService.getAllWidgetStatistics(user.getEntityId()));
         model.addAttribute(ModelKeys.TAGS, tagService.getAllTags());
         model.addAttribute(ModelKeys.CATEGORIES, categoryService.getAll());
+        ControllerUtils.addNavItemsToModel(view, model, referringPageId, user);
     }
 
     public int getPageSize() {

Modified: 
rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/admin/AdminControllerUtil.java
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/admin/AdminControllerUtil.java?rev=1333637&r1=1333636&r2=1333637&view=diff
==============================================================================
--- 
rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/admin/AdminControllerUtil.java
 (original)
+++ 
rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/admin/AdminControllerUtil.java
 Thu May  3 21:38:26 2012
@@ -51,7 +51,7 @@ public final class AdminControllerUtil {
     static boolean isDeleteOrUpdate(String action) {
         return "update".equals(action) || "delete".equals(action);
     }
-    
+
     static boolean isCreateDeleteOrUpdate(String action){
         return "create".equals(action) || isDeleteOrUpdate(action);
     }
@@ -67,10 +67,10 @@ public final class AdminControllerUtil {
     private static NavigationMenu getTopMenu() {
         NavigationMenu menu = new NavigationMenu("topnav");
 
-        NavigationItem raveHome = new NavigationItem("page.general.back", "/");
+        NavigationItem raveHome = new NavigationItem("page.general.back", 
null, "/");
         menu.addNavigationItem(raveHome);
 
-        NavigationItem logout = new NavigationItem("page.general.logout", 
"/j_spring_security_logout");
+        NavigationItem logout = new NavigationItem("page.general.logout", 
null, "/j_spring_security_logout");
         menu.addNavigationItem(logout);
 
         return menu;
@@ -79,23 +79,23 @@ public final class AdminControllerUtil {
     private static NavigationMenu getTabMenu(String selectedItem) {
         NavigationMenu menu = new NavigationMenu("tabs");
 
-        NavigationItem home = new NavigationItem("admin.home.shorttitle", 
"/app/admin/");
+        NavigationItem home = new NavigationItem("admin.home.shorttitle", 
null, "/app/admin/");
         home.setSelected("home".equals(selectedItem));
         menu.addNavigationItem(home);
 
-        NavigationItem users = new NavigationItem("admin.users.shorttitle", 
"/app/admin/users");
+        NavigationItem users = new NavigationItem("admin.users.shorttitle", 
null, "/app/admin/users");
         users.setSelected("users".equals(selectedItem));
         menu.addNavigationItem(users);
 
-        NavigationItem widgets = new 
NavigationItem("admin.widgets.shorttitle", "/app/admin/widgets");
+        NavigationItem widgets = new 
NavigationItem("admin.widgets.shorttitle", null, "/app/admin/widgets");
         widgets.setSelected("widgets".equals(selectedItem));
         menu.addNavigationItem(widgets);
 
-        NavigationItem preferences = new 
NavigationItem("admin.preferences.shorttitle", "/app/admin/preferences");
+        NavigationItem preferences = new 
NavigationItem("admin.preferences.shorttitle", null, "/app/admin/preferences");
         preferences.setSelected("preferences".equals(selectedItem));
         menu.addNavigationItem(preferences);
 
-        NavigationItem categories = new 
NavigationItem("admin.category.shortTitle", "/app/admin/categories");
+        NavigationItem categories = new 
NavigationItem("admin.category.shortTitle", null, "/app/admin/categories");
         categories.setSelected("categories".equals(selectedItem));
         menu.addNavigationItem(categories);
 

Modified: 
rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/util/ControllerUtils.java
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/util/ControllerUtils.java?rev=1333637&r1=1333636&r2=1333637&view=diff
==============================================================================
--- 
rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/util/ControllerUtils.java
 (original)
+++ 
rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/util/ControllerUtils.java
 Thu May  3 21:38:26 2012
@@ -21,17 +21,23 @@ package org.apache.rave.portal.web.contr
 
 import javax.servlet.http.HttpServletRequest;
 
+import org.apache.rave.portal.model.Page;
+import org.apache.rave.portal.model.User;
+import org.apache.rave.portal.web.model.NavigationItem;
+import org.apache.rave.portal.web.model.NavigationMenu;
+import org.apache.rave.portal.web.util.ViewNames;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.mobile.device.DeviceUtils;
+import org.springframework.ui.Model;
 
 public class ControllerUtils {
     private static final Logger log = 
LoggerFactory.getLogger(ControllerUtils.class);
 
     /**
-     * Utility function to determine if this HttpServletRequest 
-     * is coming from a mobile client 
-     * 
+     * Utility function to determine if this HttpServletRequest
+     * is coming from a mobile client
+     *
      * @param request the HttpServletRequest from the client
      * @return true if the client is a mobile device, false if not mobile
      */
@@ -53,4 +59,81 @@ public class ControllerUtils {
         log.debug("viewName: " + viewName);
         return viewName;
     }
+
+    public static void addNavItemsToModel(String view, Model model, long 
referringPageId, User user) {
+        final NavigationMenu topMenu = getTopMenu(view, referringPageId, user);
+        model.addAttribute(topMenu.getName(), topMenu);
+    }
+
+    public static NavigationMenu getTopMenu(String view, long referringPageId, 
User user) {
+        NavigationMenu menu = new NavigationMenu("topnav");
+
+        if(view.startsWith(ViewNames.PAGE)) {
+            NavigationItem profile = new NavigationItem("page.profile.title", 
user.getDisplayName() != null ? user.getDisplayName() : user.getUsername(), 
"/app/person/" + user.getUsername() + "?referringPageId=" + referringPageId);
+            menu.addNavigationItem(profile);
+
+            NavigationItem store = new NavigationItem("page.store.title", 
null, "/app/store?referringPageId=" + referringPageId);
+            menu.addNavigationItem(store);
+
+            NavigationItem admin = getAdminItem();
+            menu.addNavigationItem(admin);
+
+            NavigationItem logout = getLogoutItem();
+            menu.addNavigationItem(logout);
+        } else if (view.startsWith(ViewNames.STORE)) {
+            NavigationItem addWidget = new 
NavigationItem("page.addwidget.title", null, 
"/app/store/widget/add?referringPageId=" + referringPageId);
+            menu.addNavigationItem(addWidget);
+
+            NavigationItem back = getBackItem(referringPageId);
+            menu.addNavigationItem(back);
+
+            NavigationItem admin = getAdminItem();
+            menu.addNavigationItem(admin);
+
+            NavigationItem logout = getLogoutItem();
+            menu.addNavigationItem(logout);
+        } else if (view.startsWith(ViewNames.PERSON_PROFILE)) {
+            NavigationItem back = getBackItem(referringPageId);
+            menu.addNavigationItem(back);
+
+            NavigationItem admin = getAdminItem();
+            menu.addNavigationItem(admin);
+
+            NavigationItem logout = getLogoutItem();
+            menu.addNavigationItem(logout);
+        } else if (view.startsWith(ViewNames.ADD_WIDGET_FORM) || 
view.startsWith(ViewNames.WIDGET)) {
+            NavigationItem addWidget = new 
NavigationItem("page.widget.backToStore", null, "/app/store?referringPageId=" + 
referringPageId);
+            menu.addNavigationItem(addWidget);
+
+            NavigationItem back = getBackItem(referringPageId);
+            menu.addNavigationItem(back);
+
+            NavigationItem admin = getAdminItem();
+            menu.addNavigationItem(admin);
+
+            NavigationItem logout = getLogoutItem();
+            menu.addNavigationItem(logout);
+        }
+
+        return menu;
+    }
+
+    private static NavigationItem getBackItem(long referringPageId) {
+        NavigationItem back = new NavigationItem();
+        back.setName("page.general.back");
+        if (referringPageId > 0) {
+            back.setUrl("/app/page/view/" + referringPageId);
+        } else {
+            back.setUrl("/");
+        }
+        return back;
+    }
+
+    private static NavigationItem getAdminItem() {
+        return new NavigationItem("page.general.toadmininterface", null, 
"/app/admin/");
+    }
+
+    private static NavigationItem getLogoutItem() {
+        return new NavigationItem("page.general.logout", null, 
"/j_spring_security_logout");
+    }
 }
\ No newline at end of file

Modified: 
rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/model/NavigationItem.java
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/model/NavigationItem.java?rev=1333637&r1=1333636&r2=1333637&view=diff
==============================================================================
--- 
rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/model/NavigationItem.java
 (original)
+++ 
rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/model/NavigationItem.java
 Thu May  3 21:38:26 2012
@@ -30,6 +30,7 @@ import java.util.Map;
 public class NavigationItem {
 
     private static final String PARAM_NAME = "name";
+    private static final String PARAM_NAME_PARAM = "name_param";
     private static final String PARAM_URL = "url";
 
     private Map<String, String> parameters;
@@ -38,17 +39,18 @@ public class NavigationItem {
     private boolean expanded;
 
     public NavigationItem() {
-        this(null, null);
+        this(null, null, null);
     }
 
-    public NavigationItem(String name, String url) {
+    public NavigationItem(String name, String nameParam, String url) {
         super();
 
         this.parameters = new HashMap<String, String>();
         this.childNavigationItems = new ArrayList<NavigationItem>();
-        
+
         this.setName(name);
         this.setUrl(url);
+        this.setNameParam(nameParam);
     }
 
     /**
@@ -63,6 +65,22 @@ public class NavigationItem {
     }
 
     /**
+     * @return parameter value
+     */
+    public String getNameParam() {
+        return parameters.get(PARAM_NAME_PARAM);
+    }
+
+    /**
+     * Sets the parameter value used to plug into the name field
+     *
+     * @param nameParam
+     */
+    public void setNameParam(String nameParam) {
+        this.parameters.put(PARAM_NAME_PARAM, nameParam);
+    }
+
+    /**
      * @return url the navigation item should link to
      */
     public String getUrl() {
@@ -73,7 +91,7 @@ public class NavigationItem {
         this.parameters.put(PARAM_URL, url);
     }
 
-    
+
     public Map<String, String> getParameters() {
         return parameters;
     }

Modified: 
rave/trunk/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/controller/ProfileControllerTest.java
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/controller/ProfileControllerTest.java?rev=1333637&r1=1333636&r2=1333637&view=diff
==============================================================================
--- 
rave/trunk/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/controller/ProfileControllerTest.java
 (original)
+++ 
rave/trunk/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/controller/ProfileControllerTest.java
 Thu May  3 21:38:26 2012
@@ -45,7 +45,7 @@ import java.util.List;
 public class ProfileControllerTest {
 
     private ProfileController profileController;
-       
+
        private UserService userService;
        private PageService pageService;
 
@@ -81,13 +81,13 @@ public class ProfileControllerTest {
         allPageLayouts = new ArrayList<PageLayout>();
         allPageLayouts.add(validPageLayout);
        }
-       
+
        @Test
        public void viewPerson_ShouldAddAttributeForUser() {
                //creating a mock user
                final User user = new User();
                final ModelMap model = new ModelMap();
-               final int modelSize = 3;
+               final int modelSize = 4;
                final String username="Canonical";
         user.setUsername(username);
         user.setEntityId(USER_ID);
@@ -96,28 +96,28 @@ public class ProfileControllerTest {
         PageLayout pageLayout = new PageLayout();
         pageLayout.setCode(VALID_PAGE_LAYOUT_CODE);
         personProfile.setPageLayout(pageLayout);
-               
+
                
expect(userService.getUserByUsername(username)).andReturn(user).once();
         
expect(pageService.getPersonProfilePage(user.getEntityId())).andReturn(personProfile);
 
                replay(userService, pageService);
 
                String view = profileController.viewProfile(username, model, 
null);
-               
+
                //assert that the model is not null
                assertThat(model, CoreMatchers.notNullValue());
-       
-               //assert that the model size is three
+
+               //assert that the model size is four
                assertThat(model.size(), CoreMatchers.equalTo(modelSize));
-               
+
                //assert that the model does contain an attribute associated 
with the authenticated user after setUpForm() is called
-               assertThat(model.containsAttribute(userProfile), 
CoreMatchers.equalTo(true)); 
-               
+               assertThat(model.containsAttribute(userProfile), 
CoreMatchers.equalTo(true));
+
                //assert that the model does not contain authenticated user as 
null
                assertThat(model.get(userProfile), CoreMatchers.notNullValue());
 
         assertThat(view, is(ViewNames.PERSON_PROFILE + "." + 
VALID_PAGE_LAYOUT_CODE));
-               
+
                verify(userService, pageService);
        }
 
@@ -150,7 +150,7 @@ public class ProfileControllerTest {
                final long referringPageId = 1L;
         final String USERNAME = "canonical";
                String userProfile = new String(ModelKeys.USER_PROFILE);
-               
+
                //creating a mock authenticated user
                final User authUser = new User();
         authUser.setUsername(USERNAME);
@@ -161,7 +161,7 @@ public class ProfileControllerTest {
                authUser.setFamilyName("Rave");
                authUser.setAboutMe("Test User");
                authUser.setEmail("[email protected]");
-               
+
                //creating a mock updated user
                final User updatedUser = new User();
                //set the updated status
@@ -170,32 +170,32 @@ public class ProfileControllerTest {
                updatedUser.setFamilyName("Rave");
                updatedUser.setAboutMe("Test User");
                updatedUser.setEmail("[email protected]");
-               
+
                
expect(userService.getAuthenticatedUser()).andReturn(authUser).anyTimes();
                userService.updateUserProfile(authUser);
                replay(userService);
-               
+
                String view = profileController.updateProfile(model, 
referringPageId, updatedUser);
-               
+
                //assert that the model is not null
                assertThat(model, CoreMatchers.notNullValue());
-       
+
                //assert that the model size is three
                assertThat(model.size(), CoreMatchers.equalTo(modelSize));
-               
+
                //assert that the model does contain an attribute associated 
with the authenticated user
-               assertThat(model.containsAttribute(userProfile), 
CoreMatchers.equalTo(true)); 
-               
+               assertThat(model.containsAttribute(userProfile), 
CoreMatchers.equalTo(true));
+
                //assert that the model does not contain authenticated user as 
null
                assertThat(model.get(userProfile), CoreMatchers.notNullValue());
-               
+
                //assert that the status of user is updated
                assertEquals(updatedUser.getStatus(), authUser.getStatus());
-        
+
         assertThat(view, is("redirect:/app/person/" + USERNAME));
-               
+
                verify(userService);
-               
+
        }
 
 }

Modified: 
rave/trunk/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/model/NavigationItemTest.java
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/model/NavigationItemTest.java?rev=1333637&r1=1333636&r2=1333637&view=diff
==============================================================================
--- 
rave/trunk/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/model/NavigationItemTest.java
 (original)
+++ 
rave/trunk/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/model/NavigationItemTest.java
 Thu May  3 21:38:26 2012
@@ -38,6 +38,7 @@ public class NavigationItemTest {
         assertNotNull(navigationItem);
         assertNull(navigationItem.getName());
         assertNull(navigationItem.getUrl());
+        assertNull(navigationItem.getNameParam());
         assertFalse(navigationItem.isExpanded());
         assertFalse(navigationItem.isSelected());
         assertTrue(navigationItem.getChildNavigationItems().isEmpty());
@@ -47,11 +48,13 @@ public class NavigationItemTest {
     @Test
     public void testNameUrlConstructor() throws Exception {
         String name = "Home";
+        String nameParams = "test1";
         String url="/index.html";
-        NavigationItem navigationItem = new NavigationItem(name, url);
+        NavigationItem navigationItem = new NavigationItem(name, nameParams, 
url);
         assertNotNull(navigationItem);
         assertEquals(name, navigationItem.getName());
         assertEquals(url, navigationItem.getUrl());
+        assertEquals(nameParams, navigationItem.getNameParam());
         assertFalse(navigationItem.isExpanded());
         assertFalse(navigationItem.isSelected());
         assertTrue(navigationItem.getChildNavigationItems().isEmpty());
@@ -61,18 +64,21 @@ public class NavigationItemTest {
     @Test
     public void testSettersGetters() throws Exception {
         String name = "Home";
+        String nameParams = "test1";
         String url="/index.html";
 
         NavigationItem navigationItem = new NavigationItem();
         navigationItem.setName(name);
+        navigationItem.setNameParam(nameParams);
         navigationItem.setUrl(url);
         navigationItem.setExpanded(true);
         navigationItem.setSelected(true);
-        NavigationItem childItem = new NavigationItem("About", 
"/about/index.html");
+        NavigationItem childItem = new NavigationItem("About", null, 
"/about/index.html");
         navigationItem.addChildNavigationItem(childItem);
 
         assertEquals(name, navigationItem.getName());
         assertEquals(url, navigationItem.getUrl());
+        assertEquals(nameParams, navigationItem.getNameParam());
         assertTrue(navigationItem.isExpanded());
         assertTrue(navigationItem.isSelected());
         assertEquals(childItem, 
navigationItem.getChildNavigationItems().get(0));

Modified: 
rave/trunk/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/model/NavigationMenuTest.java
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/model/NavigationMenuTest.java?rev=1333637&r1=1333636&r2=1333637&view=diff
==============================================================================
--- 
rave/trunk/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/model/NavigationMenuTest.java
 (original)
+++ 
rave/trunk/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/model/NavigationMenuTest.java
 Thu May  3 21:38:26 2012
@@ -44,7 +44,7 @@ public class NavigationMenuTest {
         navigationMenu.setName("footermenu");
         assertEquals("footermenu", navigationMenu.getName());
 
-        NavigationItem navigationItem = new NavigationItem("contact us", 
"/contact.html");
+        NavigationItem navigationItem = new NavigationItem("contact us", null, 
"/contact.html");
         navigationMenu.addNavigationItem(navigationItem);
         assertEquals(navigationItem, 
navigationMenu.getNavigationItems().get(0));
     }

Modified: 
rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/addwidget.jsp
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/addwidget.jsp?rev=1333637&r1=1333636&r2=1333637&view=diff
==============================================================================
--- 
rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/addwidget.jsp
 (original)
+++ 
rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/addwidget.jsp
 Thu May  3 21:38:26 2012
@@ -19,52 +19,8 @@
 <%@ page language="java" trimDirectiveWhitespaces="true" %>
 <%@ include file="/WEB-INF/jsp/includes/taglibs.jsp" %>
 <fmt:setBundle basename="messages"/>
-<div class="navbar navbar-fixed-top">
-    <div class="navbar-inner">
-        <div class="container">
-            <a class="btn btn-navbar" data-toggle="collapse" 
data-target=".nav-collapse">
-                <span class="icon-bar"></span>
-                <span class="icon-bar"></span>
-                <span class="icon-bar"></span>
-            </a>
-            <span class="brand"><fmt:message 
key="page.addwidget.title"/></span>
-            <div class="nav-collapse">
-                <ul class="nav pull-right">
-                    <c:if test="${not empty referringPageId}">
-                        <li>
-                            <a href="<spring:url 
value="/app/store?referringPageId=${referringPageId}" />">
-                            <fmt:message key="page.widget.backToStore"/>
-                            </a>
-                        </li>
-                    </c:if>
-
-                    <li>
-                        <c:choose>
-                            <c:when test="${empty referringPageId}">
-                                <spring:url value="/index.html" 
var="gobackurl"/>
-                            </c:when>
-                            <c:otherwise>
-                                <spring:url 
value="/app/page/view/${referringPageId}" var="gobackurl"/>
-                            </c:otherwise>
-                        </c:choose>
-                        <a href="<c:out value="${gobackurl}"/>"><fmt:message 
key="page.general.back"/></a>
-                    </li>
-                    <sec:authorize url="/app/admin/">
-                        <li>
-                            <a href="<spring:url value="/app/admin/"/>">
-                            <fmt:message key="page.general.toadmininterface"/>
-                            </a>
-                        </li>
-                    </sec:authorize>
-                    <li>
-                        <a href="<spring:url value="/j_spring_security_logout" 
htmlEscape="true" />">
-                        <fmt:message key="page.general.logout"/></a>
-                    </li>
-                </ul>
-            </div>
-        </div>
-    </div>
-</div>
+<fmt:message key="page.addwidget.title" var="pagetitle"/>
+<rave:header pageTitle="${pagetitle}"/>
 
 <div class="container">
     <h2><fmt:message key="page.addwidget.form.header"/></h2>

Modified: 
rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/page.jsp
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/page.jsp?rev=1333637&r1=1333636&r2=1333637&view=diff
==============================================================================
--- rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/page.jsp 
(original)
+++ rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/page.jsp 
Thu May  3 21:38:26 2012
@@ -23,56 +23,16 @@
 <jsp:useBean id="pages" 
type="java.util.List<org.apache.rave.portal.model.Page>" scope="request"/>
 <jsp:useBean id="pageLayouts" 
type="java.util.List<org.apache.rave.portal.model.PageLayout>" scope="request"/>
 <%--@elvariable id="page" type="org.apache.rave.portal.model.Page"--%>
-<div class="navbar navbar-fixed-top">
-    <div class="navbar-inner">
-        <div class="container">
-            <a class="btn btn-navbar" data-toggle="collapse" 
data-target=".nav-collapse">
-                <span class="icon-bar"></span>
-                <span class="icon-bar"></span>
-                <span class="icon-bar"></span>
-            </a>
-            <span class="brand">
-                <fmt:message key="page.home.welcome">
-                    <fmt:param>
-                        <c:choose>
-                            <c:when test="${not empty 
page.owner.displayName}"><c:out value="${page.owner.displayName}"/></c:when>
-                            <c:otherwise><c:out 
value="${page.owner.username}"/></c:otherwise>
-                        </c:choose>
-                    </fmt:param>
-                </fmt:message>
-            </span>
-            <div class="nav-collapse">
-                <ul class="nav pull-right">
-                    <li>
-                        <c:set 
var="profileUrl">/app/person/<sec:authentication 
property="principal.username"/>?referringPageId=${page.entityId}
-                        </c:set>
-                        <a href="<spring:url value="${profileUrl}" />">
-                        <fmt:message key="page.profile.title">
-                            <fmt:param><c:out 
value="${page.owner.displayName}"/></fmt:param>
-                        </fmt:message>
-                        </a>
-                    </li>
-                    <li>
-                        <a href="<spring:url 
value="/app/store?referringPageId=${page.entityId}" />">
-                        <fmt:message key="page.store.title"/>
-                        </a>
-                    </li>
-                    <sec:authorize url="/app/admin/">
-                        <li>
-                            <a href="<spring:url value="/app/admin/"/>">
-                            <fmt:message key="page.general.toadmininterface"/>
-                            </a>
-                        </li>
-                    </sec:authorize>
-                    <li>
-                        <a href="<spring:url value="/j_spring_security_logout" 
htmlEscape="true" />">
-                        <fmt:message key="page.general.logout"/></a>
-                    </li>
-                </ul>
-            </div>
-        </div>
-    </div>
-</div>
+
+<fmt:message key="page.home.welcome" var="pagetitle">
+    <fmt:param>
+        <c:choose>
+            <c:when test="${not empty page.owner.displayName}"><c:out 
value="${page.owner.displayName}"/></c:when>
+            <c:otherwise><c:out value="${page.owner.username}"/></c:otherwise>
+        </c:choose>
+    </fmt:param>
+</fmt:message>
+<rave:header pageTitle="${pagetitle}"/>
 
 <input id="currentPageId" type="hidden" value="${page.entityId}"/>
 <c:set var="hasOnlyOnePage" scope="request">

Modified: 
rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/personProfile.jsp
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/personProfile.jsp?rev=1333637&r1=1333636&r2=1333637&view=diff
==============================================================================
--- 
rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/personProfile.jsp
 (original)
+++ 
rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/personProfile.jsp
 Thu May  3 21:38:26 2012
@@ -41,53 +41,15 @@
 
 <!-- get the title of contact information -->
 <fmt:message key="page.personProfile.contact.info" var="contactInfo"/>
-<div class="navbar navbar-fixed-top">
-    <div class="navbar-inner">
-        <div class="container">
-            <a class="btn btn-navbar" data-toggle="collapse" 
data-target=".nav-collapse">
-                <span class="icon-bar"></span>
-                <span class="icon-bar"></span>
-                <span class="icon-bar"></span>
-            </a>
-            <span class="brand">
-                <fmt:message key="page.home.welcome">
-                    <fmt:param>
-                        <c:choose>
-                            <c:when test="${not empty 
page.owner.displayName}"><c:out value="${page.owner.displayName}"/></c:when>
-                            <c:otherwise><c:out 
value="${page.owner.username}"/></c:otherwise>
-                        </c:choose>
-                    </fmt:param>
-                </fmt:message>
-            </span>
-            <div class="nav-collapse">
-                <ul class="nav pull-right">
-                    <li>
-                        <c:choose>
-                            <c:when test="${empty referringPageId}">
-                                <spring:url value="/index.html" 
var="gobackurl"/>
-                            </c:when>
-                            <c:otherwise>
-                                <spring:url 
value="/app/page/view/${referringPageId}" var="gobackurl"/>
-                            </c:otherwise>
-                        </c:choose>
-                        <a href="<c:out value="${gobackurl}"/>"><fmt:message 
key="page.general.back"/></a>
-                    </li>
-                    <sec:authorize url="/app/admin/">
-                        <li>
-                            <a href="<spring:url value="/app/admin/"/>">
-                            <fmt:message key="page.general.toadmininterface"/>
-                            </a>
-                        </li>
-                    </sec:authorize>
-                    <li>
-                        <a href="<spring:url value="/j_spring_security_logout" 
htmlEscape="true" />">
-                        <fmt:message key="page.general.logout"/></a>
-                    </li>
-                </ul>
-            </div>
-        </div>
-    </div>
-</div>
+<fmt:message key="page.home.welcome" var="pagetitle">
+    <fmt:param>
+        <c:choose>
+            <c:when test="${not empty page.owner.displayName}"><c:out 
value="${page.owner.displayName}"/></c:when>
+            <c:otherwise><c:out value="${page.owner.username}"/></c:otherwise>
+        </c:choose>
+    </fmt:param>
+</fmt:message>
+<rave:header pageTitle="${pagetitle}"/>
 
 <div id="pageContent" class="container-fluid navbar-spacer">
     <div class="row-fluid">
@@ -197,4 +159,4 @@
             rave.personprofile.init();
         });
     </script>
-</portal:register-init-script>
\ No newline at end of file
+</portal:register-init-script>

Modified: 
rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/store.jsp
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/store.jsp?rev=1333637&r1=1333636&r2=1333637&view=diff
==============================================================================
--- 
rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/store.jsp 
(original)
+++ 
rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/store.jsp 
Thu May  3 21:38:26 2012
@@ -19,49 +19,7 @@
 <%@ page language="java" trimDirectiveWhitespaces="true" %>
 <%@ include file="/WEB-INF/jsp/includes/taglibs.jsp" %>
 <fmt:setBundle basename="messages"/>
-<div class="navbar navbar-fixed-top">
-    <div class="navbar-inner">
-        <div class="container">
-            <a class="btn btn-navbar" data-toggle="collapse" 
data-target=".nav-collapse">
-                <span class="icon-bar"></span>
-                <span class="icon-bar"></span>
-                <span class="icon-bar"></span>
-            </a>
-            <span class="brand">${pagetitle}</span>
-            <div class="nav-collapse">
-                <ul class="nav pull-right">
-                    <li>
-                        <a href="<spring:url 
value="/app/store/widget/add?referringPageId=${referringPageId}"/>"><fmt:message
-                            key="page.addwidget.title"/></a>
-                    </li>
-                    <li>
-                        <c:choose>
-                            <c:when test="${empty referringPageId}">
-                                <spring:url value="/index.html" 
var="gobackurl"/>
-                            </c:when>
-                            <c:otherwise>
-                                <spring:url 
value="/app/page/view/${referringPageId}" var="gobackurl"/>
-                            </c:otherwise>
-                        </c:choose>
-                        <a href="<c:out value="${gobackurl}"/>"><fmt:message 
key="page.general.back"/></a>
-                    </li>
-
-                    <sec:authorize url="/app/admin/">
-                        <li>
-                            <a href="<spring:url value="/app/admin/"/>">
-                            <fmt:message key="page.general.toadmininterface"/>
-                            </a>
-                        </li>
-                    </sec:authorize>
-                    <li>
-                        <a href="<spring:url value="/j_spring_security_logout" 
htmlEscape="true" />">
-                        <fmt:message key="page.general.logout"/></a>
-                    </li>
-                </ul>
-            </div>
-        </div>
-    </div>
-</div>
+<rave:header pageTitle="${pagetitle}"/>
 
 <div class="container-fluid navbar-spacer">
     <div class="row-fluid">

Modified: 
rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/widget.jsp
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/widget.jsp?rev=1333637&r1=1333636&r2=1333637&view=diff
==============================================================================
--- 
rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/widget.jsp 
(original)
+++ 
rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/widget.jsp 
Thu May  3 21:38:26 2012
@@ -19,51 +19,7 @@
 <%@ page language="java" trimDirectiveWhitespaces="true" %>
 <%@ include file="/WEB-INF/jsp/includes/taglibs.jsp" %>
 <fmt:setBundle basename="messages"/>
-<div class="navbar navbar-fixed-top">
-    <div class="navbar-inner">
-        <div class="container">
-            <a class="btn btn-navbar" data-toggle="collapse" 
data-target=".nav-collapse">
-                <span class="icon-bar"></span>
-                <span class="icon-bar"></span>
-                <span class="icon-bar"></span>
-            </a>
-            <span class="brand"><c:out value="${widget.title}"/></span>
-            <div class="nav-collapse">
-                <ul class="nav pull-right">
-                     <c:if test="${not empty referringPageId}">
-                        <li>
-                            <a href="<spring:url 
value="/app/store?referringPageId=${referringPageId}" />">
-                                <fmt:message key="page.widget.backToStore"/>
-                            </a>
-                        </li>
-                    </c:if>
-                    <li>
-                        <c:choose>
-                            <c:when test="${empty referringPageId}">
-                                <spring:url value="/index.html" 
var="gobackurl"/>
-                            </c:when>
-                            <c:otherwise>
-                                <spring:url 
value="/app/page/view/${referringPageId}" var="gobackurl"/>
-                            </c:otherwise>
-                        </c:choose>
-                        <a href="<c:out value="${gobackurl}"/>"><fmt:message 
key="page.general.back"/></a>
-                    </li>
-                    <sec:authorize url="/app/admin/">
-                        <li>
-                            <a href="<spring:url value="/app/admin/"/>">
-                                <fmt:message 
key="page.general.toadmininterface"/>
-                            </a>
-                        </li>
-                    </sec:authorize>
-                    <li>
-                        <a href="<spring:url value="/j_spring_security_logout" 
htmlEscape="true" />">
-                            <fmt:message key="page.general.logout"/></a>
-                    </li>
-                </ul>
-            </div>
-        </div>
-    </div>
-</div>
+<rave:header pageTitle="${widget.title}"/>
 
 <div id="na_content" class="container-fluid">
     <div class="row-fluid detail-widget">
@@ -291,4 +247,4 @@
             rave.store.initTags("<c:out value="${widget.entityId}"/>");
         });
     </script>
-</portal:register-init-script>
\ No newline at end of file
+</portal:register-init-script>

Modified: 
rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/tags/header.tag
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/tags/header.tag?rev=1333637&r1=1333636&r2=1333637&view=diff
==============================================================================
--- rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/tags/header.tag 
(original)
+++ rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/tags/header.tag 
Thu May  3 21:38:26 2012
@@ -19,6 +19,7 @@
 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"; %>
 <%@ taglib prefix="spring" uri="http://www.springframework.org/tags"; %>
 <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"; %>
+<%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags"; %>
 <%@ attribute name="pageTitle" required="false" description="The title of the 
page" %>
 <fmt:setBundle basename="messages"/>
 <c:if test="${not empty topnav}">
@@ -33,12 +34,22 @@
                 </a>
                 <span class="brand"><c:out value="${pageTitle}"/></span>
                 <div class="nav-collapse">
-                    <ul class="nav pull-right">
-                        <c:forEach items="${topnav.navigationItems}" 
var="navItem">
-                            <li><a href="<spring:url 
value="${navItem.url}"/>"><fmt:message key="${navItem.name}"/></a></li>
-                        </c:forEach>
-                    </ul>
-                </div>
+                     <ul class="nav pull-right">
+                        <%--@elvariable id="navItem" 
type="org.apache.rave.portal.web.model.NavigationItem"--%>
+                         <c:forEach items="${topnav.navigationItems}" 
var="navItem">
+                            <sec:authorize url="${navItem.url}">
+                                <c:choose>
+                                    <c:when test="${not empty 
navItem.nameParam}">
+                                        <li><a href="<spring:url 
value="${navItem.url}"/>"><fmt:message key="${navItem.name}">
+                                            <fmt:param><c:out 
value="${navItem.nameParam}"/></fmt:param>
+                                        </fmt:message></a></li>
+                                    </c:when>
+                                    <c:otherwise><li><a href="<spring:url 
value="${navItem.url}"/>"><fmt:message 
key="${navItem.name}"/></a></li></c:otherwise>
+                                </c:choose>
+                            </sec:authorize>
+                         </c:forEach>
+                     </ul>
+                 </div>
             </div>
         </div>
     </div>


Reply via email to