Search in sources :

Example 16 with UserPreferencesManager

use of org.apereo.portal.UserPreferencesManager in project uPortal by Jasig.

the class FavoritesEditController method initializeView.

/**
     * Handles all Favorites portlet EDIT mode renders. Populates model with user's favorites and
     * selects a view to display those favorites.
     *
     * <p>View selection:
     *
     * <p>Returns "jsp/Favorites/edit" in the normal case where the user has at least one favorited
     * portlet or favorited collection.
     *
     * <p>Returns "jsp/Favorites/edit_zero" in the edge case where the user has zero favorited
     * portlets AND zero favorited collections.
     *
     * <p>Model: marketPlaceFname --> String functional name of Marketplace portlet, or null if not
     * available. collections --> List of favorited collections (IUserLayoutNodeDescription s)
     * favorites --> List of favorited individual portlets (IUserLayoutNodeDescription s)
     * successMessageCode --> String success message bundle key, or null if none errorMessageCode
     * --> String error message bundle key, or null if none nameOfFavoriteActedUpon --> Name of
     * favorite acted upon, intended as parameter to success or error message
     *
     * @param model . Spring model. This method adds five model attributes.
     * @return jsp/Favorites/edit[_zero]
     */
@RenderMapping
public String initializeView(Model model, RenderRequest renderRequest) {
    IUserInstance ui = userInstanceManager.getUserInstance(portalRequestUtils.getCurrentPortalRequest());
    UserPreferencesManager upm = (UserPreferencesManager) ui.getPreferencesManager();
    IUserLayoutManager ulm = upm.getUserLayoutManager();
    IUserLayout userLayout = ulm.getUserLayout();
    // TODO: the portlet could predicate including a non-null marketplace portlet fname
    // on the accessing user having permission to render the portlet referenced by that fname
    // so that portlet would gracefully degrade when configured with bad marketplace portlet fname
    // and also gracefully degrade when the accessing user doesn't have permission to access an otherwise
    // viable configured marketplace.  This complexity may not be worth it.  Anyway it is not yet implemented.
    model.addAttribute("marketplaceFname", this.marketplaceFName);
    List<IUserLayoutNodeDescription> collections = FavoritesUtils.getFavoriteCollections(userLayout);
    model.addAttribute("collections", collections);
    List<IUserLayoutNodeDescription> favorites = FavoritesUtils.getFavoritePortlets(userLayout);
    model.addAttribute("favorites", favorites);
    model.addAttribute("successMessageCode", renderRequest.getParameter("successMessageCode"));
    model.addAttribute("errorMessageCode", renderRequest.getParameter("errorMessageCode"));
    model.addAttribute("nameOfFavoriteActedUpon", renderRequest.getParameter("nameOfFavoriteActedUpon"));
    // default to the regular old edit view
    String viewName = "jsp/Favorites/edit";
    if (collections.isEmpty() && favorites.isEmpty()) {
        // use the special case view
        viewName = "jsp/Favorites/edit_zero";
    }
    logger.trace("Favorites Portlet EDIT mode built model [{}] and selected view {}.", model, viewName);
    return viewName;
}
Also used : IUserInstance(org.apereo.portal.user.IUserInstance) IUserLayoutNodeDescription(org.apereo.portal.layout.node.IUserLayoutNodeDescription) IUserLayout(org.apereo.portal.layout.IUserLayout) IUserLayoutManager(org.apereo.portal.layout.IUserLayoutManager) UserPreferencesManager(org.apereo.portal.UserPreferencesManager) IUserPreferencesManager(org.apereo.portal.IUserPreferencesManager) RenderMapping(org.springframework.web.portlet.bind.annotation.RenderMapping)

Aggregations

UserPreferencesManager (org.apereo.portal.UserPreferencesManager)16 IUserLayoutManager (org.apereo.portal.layout.IUserLayoutManager)16 IUserInstance (org.apereo.portal.user.IUserInstance)14 PortalException (org.apereo.portal.PortalException)13 RequestMapping (org.springframework.web.bind.annotation.RequestMapping)11 ModelAndView (org.springframework.web.servlet.ModelAndView)11 IUserLayoutNodeDescription (org.apereo.portal.layout.node.IUserLayoutNodeDescription)8 IPerson (org.apereo.portal.security.IPerson)8 UserLayoutFolderDescription (org.apereo.portal.layout.node.UserLayoutFolderDescription)5 HashMap (java.util.HashMap)4 Locale (java.util.Locale)4 IUserLayoutFolderDescription (org.apereo.portal.layout.node.IUserLayoutFolderDescription)4 XPathExpressionException (javax.xml.xpath.XPathExpressionException)3 IUserLayoutChannelDescription (org.apereo.portal.layout.node.IUserLayoutChannelDescription)3 UserLayoutChannelDescription (org.apereo.portal.layout.node.UserLayoutChannelDescription)3 IPortletDefinition (org.apereo.portal.portlet.om.IPortletDefinition)3 IOException (java.io.IOException)2 InvocationTargetException (java.lang.reflect.InvocationTargetException)2 IUserLayout (org.apereo.portal.layout.IUserLayout)2 DistributedUserLayout (org.apereo.portal.layout.dlm.DistributedUserLayout)2