Search in sources :

Example 66 with IUserInstance

use of org.apereo.portal.user.IUserInstance in project uPortal by Jasig.

the class SingleTabUrlNodeSyntaxHelper method getDefaultLayoutNodeId.

@Override
public String getDefaultLayoutNodeId(HttpServletRequest httpServletRequest) {
    final IUserInstance userInstance = this.userInstanceManager.getUserInstance(httpServletRequest);
    final IUserPreferencesManager preferencesManager = userInstance.getPreferencesManager();
    final IUserLayoutManager userLayoutManager = preferencesManager.getUserLayoutManager();
    final IUserLayout userLayout = userLayoutManager.getUserLayout();
    // This logic is specific to tab/column layouts
    final String defaultTabIndex = this.getDefaultTabIndex(httpServletRequest);
    if (defaultTabIndex != null) {
        final String defaultTabId = this.getTabId(userLayout, defaultTabIndex);
        if (StringUtils.isNotEmpty(defaultTabId)) {
            return defaultTabId;
        }
    }
    this.logger.warn("Failed to find default tab id for '" + userInstance.getPerson().getUserName() + "' with default tab index " + defaultTabIndex + ". Index 1 will be tried as a fall-back.");
    final String firstTabId = getTabId(userLayout, "1");
    if (StringUtils.isNotEmpty(firstTabId)) {
        return firstTabId;
    }
    this.logger.warn("Failed to find default tab id for '" + userInstance.getPerson().getUserName() + "' with default tab index 1. The user has no tabs.");
    return userLayout.getRootId();
}
Also used : IUserInstance(org.apereo.portal.user.IUserInstance) IUserPreferencesManager(org.apereo.portal.IUserPreferencesManager) IUserLayout(org.apereo.portal.layout.IUserLayout) IUserLayoutManager(org.apereo.portal.layout.IUserLayoutManager)

Example 67 with IUserInstance

use of org.apereo.portal.user.IUserInstance in project uPortal by Jasig.

the class SingleTabUrlNodeSyntaxHelper method getFolderNamesForLayoutNode.

@RequestCache(keyMask = { false, true })
@Override
public List<String> getFolderNamesForLayoutNode(HttpServletRequest request, String layoutNodeId) {
    /*
         * Implementation note:
         * While the API allows one or more folder names, this implementation will only ever return
         * a List with zero or one element.  It's not entirely clear that a List with zero members
         * was allowed by the interface definition, but this implementation will return an empty
         * list if the layoutNodeId cannot be found in the layout.
         */
    final IUserInstance userInstance = this.userInstanceManager.getUserInstance(request);
    final IUserPreferencesManager preferencesManager = userInstance.getPreferencesManager();
    final IUserLayoutManager userLayoutManager = preferencesManager.getUserLayoutManager();
    final IUserLayout userLayout = userLayoutManager.getUserLayout();
    final String tabId = userLayout.findNodeId(new PortletTabIdResolver(layoutNodeId));
    if (StringUtils.isEmpty(tabId)) {
        return Collections.emptyList();
    }
    String externalId = stylesheetUserPreferencesService.getLayoutAttribute(request, PreferencesScope.STRUCTURE, tabId, EXTERNAL_ID_ATTR);
    if (externalId != null) {
        final Map<String, String> allNodesAndValuesForAttribute = stylesheetUserPreferencesService.getAllNodesAndValuesForAttribute(request, PreferencesScope.STRUCTURE, EXTERNAL_ID_ATTR);
        boolean appendNodeId = false;
        for (final Entry<String, String> nodeAttributeEntry : allNodesAndValuesForAttribute.entrySet()) {
            final String entryNodeId = nodeAttributeEntry.getKey();
            final String entryValue = nodeAttributeEntry.getValue();
            if (!tabId.equals(entryNodeId) && externalId.equals(entryValue)) {
                appendNodeId = true;
                break;
            }
        }
        if (!FunctionalNameType.isValid(externalId)) {
            logger.warn("ExternalId {} for tab {} is not a valid fname. It will be converted for use in the URL but this results in additional overhead", externalId, tabId);
            externalId = FunctionalNameType.makeValid(externalId);
        }
        if (appendNodeId) {
            externalId = externalId + PORTLET_PATH_ELEMENT_SEPERATOR + layoutNodeId;
        }
        logger.trace("Tab identified by {} resolved to externalId {} " + "so returning that externalId as the sole folder name for node.", layoutNodeId, externalId);
        return Arrays.asList(externalId);
    } else {
        logger.trace("Tab identified by {} had no externalId " + "so returning just {} as the sole folder name for node {}.", layoutNodeId, tabId, layoutNodeId);
        return Arrays.asList(tabId);
    }
}
Also used : IUserInstance(org.apereo.portal.user.IUserInstance) PortletTabIdResolver(org.apereo.portal.layout.PortletTabIdResolver) IUserPreferencesManager(org.apereo.portal.IUserPreferencesManager) IUserLayout(org.apereo.portal.layout.IUserLayout) IUserLayoutManager(org.apereo.portal.layout.IUserLayoutManager) RequestCache(org.apereo.portal.concurrency.caching.RequestCache)

Aggregations

IUserInstance (org.apereo.portal.user.IUserInstance)67 IUserLayoutManager (org.apereo.portal.layout.IUserLayoutManager)29 IUserPreferencesManager (org.apereo.portal.IUserPreferencesManager)28 IPerson (org.apereo.portal.security.IPerson)26 UserPreferencesManager (org.apereo.portal.UserPreferencesManager)16 PortalException (org.apereo.portal.PortalException)14 ModelAndView (org.springframework.web.servlet.ModelAndView)14 IUserLayoutNodeDescription (org.apereo.portal.layout.node.IUserLayoutNodeDescription)13 RequestMapping (org.springframework.web.bind.annotation.RequestMapping)13 IPortletEntity (org.apereo.portal.portlet.om.IPortletEntity)12 IPortletWindow (org.apereo.portal.portlet.om.IPortletWindow)12 HttpServletRequest (javax.servlet.http.HttpServletRequest)10 IUserProfile (org.apereo.portal.IUserProfile)10 Locale (java.util.Locale)9 IUserLayout (org.apereo.portal.layout.IUserLayout)8 IPortletDefinition (org.apereo.portal.portlet.om.IPortletDefinition)8 HashMap (java.util.HashMap)6 IPortletEntityId (org.apereo.portal.portlet.om.IPortletEntityId)6 IPortletWindowId (org.apereo.portal.portlet.om.IPortletWindowId)5 IAuthorizationPrincipal (org.apereo.portal.security.IAuthorizationPrincipal)5