Examples of IUserLayoutManager


Examples of org.jasig.portal.layout.IUserLayoutManager

    @Override
    @RequestCache(keyMask = {false})
    public Set<IPortletWindow> getAllPortletWindows(HttpServletRequest request) {
        final IUserInstance userInstance = this.userInstanceManager.getUserInstance(request);
        final IUserPreferencesManager preferencesManager = userInstance.getPreferencesManager();
        final IUserLayoutManager userLayoutManager = preferencesManager.getUserLayoutManager();
        final Set<String> allSubscribedChannels = userLayoutManager.getAllSubscribedChannels();
       
        final Set<IPortletWindow> allLayoutWindows = new LinkedHashSet<IPortletWindow>(allSubscribedChannels.size());

        for (final String channelSubscribeId : allSubscribedChannels) {
            final IPortletEntity portletEntity = this.portletEntityRegistry.getOrCreatePortletEntity(request, userInstance, channelSubscribeId);
View Full Code Here

Examples of org.jasig.portal.layout.IUserLayoutManager

        }
       
        //Determine the appropriate portlet window ID for the definition
        final IUserInstance userInstance = this.userInstanceManager.getUserInstance(request);
        final IUserPreferencesManager preferencesManager = userInstance.getPreferencesManager();
        final IUserLayoutManager userLayoutManager = preferencesManager.getUserLayoutManager();
       
        //Determine the subscribe ID
        final String portletFName = portletDefinition.getFName();
        final String layoutNodeId = userLayoutManager.getSubscribeId(portletFName);
        if (layoutNodeId == null) {
            throw new IllegalArgumentException("No layout node ID found for fname '" + portletFName + "'.");
        }
       
        this.logger.trace("Found layout node {} for portlet definition {}", layoutNodeId, portletFName);
View Full Code Here

Examples of org.jasig.portal.layout.IUserLayoutManager

    }
   
    @Override
    public IPortletEntity getOrCreatePortletEntity(HttpServletRequest request, IUserInstance userInstance, String layoutNodeId) {
        final IUserPreferencesManager preferencesManager = userInstance.getPreferencesManager();
        final IUserLayoutManager userLayoutManager = preferencesManager.getUserLayoutManager();
       
        //Find the channel and portlet definitions
        final IUserLayoutChannelDescription channelNode = (IUserLayoutChannelDescription)userLayoutManager.getNode(layoutNodeId);
        if (channelNode == null) {
            this.logger.warn("No layout node exists for id " + layoutNodeId + ", no portlet entity will be returned.");
            return null;
        }
       
View Full Code Here

Examples of org.jasig.portal.layout.IUserLayoutManager

    }
   
    @Override
    public IPortletEntity getOrCreatePortletEntityByFname(HttpServletRequest request, IUserInstance userInstance, String fname) {
        final IUserPreferencesManager preferencesManager = userInstance.getPreferencesManager();
        final IUserLayoutManager userLayoutManager = preferencesManager.getUserLayoutManager();
        final String subscribeId = userLayoutManager.getSubscribeId(fname);
        return this.getOrCreatePortletEntity(request, userInstance, subscribeId);
    }
View Full Code Here

Examples of org.jasig.portal.layout.IUserLayoutManager

        }
        final IPortletDefinitionId portletDefinitionId = portletDefinition.getPortletDefinitionId();
       
        final IUserInstance userInstance = this.userInstanceManager.getUserInstance(request);
        final IUserPreferencesManager preferencesManager = userInstance.getPreferencesManager();
        final IUserLayoutManager userLayoutManager = preferencesManager.getUserLayoutManager();
       
        //Verify non-delegate layout node id exists and is for a portlet
        final String layoutNodeId = idParts[1];
        if (!layoutNodeId.startsWith(DELEGATE_LAYOUT_NODE_ID_PREFIX)) {
            final IUserLayoutNodeDescription node = userLayoutManager.getNode(layoutNodeId);
            if (node == null || node.getType() != LayoutNodeType.PORTLET) {
                throw new IllegalArgumentException("No portlet layout node found for " + layoutNodeId + " from entity id string: " + consistentEntityIdString);
            }
       
            //TODO is this doable for delegation?
View Full Code Here

Examples of org.jasig.portal.layout.IUserLayoutManager

        IUserInstance ui = userInstanceManager.getUserInstance(request);
        IPerson per = getPerson(ui, response);

        UserPreferencesManager upm = (UserPreferencesManager) ui.getPreferencesManager();
        IUserLayoutManager ulm = upm.getUserLayoutManager();

        try {

            // if the element ID starts with the fragment prefix and is a folder,
            // attempt first to treat it as a pulled fragment subscription
            String elementId = request.getParameter("elementID");
            if (elementId != null && elementId.startsWith(Constants.FRAGMENT_ID_USER_PREFIX) &&
                    ulm.getNode( elementId ) instanceof org.jasig.portal.layout.node.UserLayoutFolderDescription) {

                removeSubscription(per, elementId, ulm);

            } else {
                // Delete the requested element node.  This code is the same for
                // all node types, so we can just have a generic action.
               ulm.deleteNode(elementId);
            }

            ulm.saveUserLayout();

            return new ModelAndView("jsonView", Collections.EMPTY_MAP);

        } catch (Exception e) {
            log.warn("Failed to remove element from layout", e);
View Full Code Here

Examples of org.jasig.portal.layout.IUserLayoutManager

        IUserInstance ui = userInstanceManager.getUserInstance(request);
        IPerson per = getPerson(ui, response);

        UserPreferencesManager upm = (UserPreferencesManager) ui.getPreferencesManager();
        IUserLayoutManager ulm = upm.getUserLayoutManager();

        // Get the fragment owner's name from the request and construct
        // an IPerson object representing that user
        String fragmentOwnerName = request.getParameter("sourceID");
        if (StringUtils.isBlank(fragmentOwnerName)) {
            log.warn("Attempted to subscribe to tab with null owner ID");
            response.sendError(HttpServletResponse.SC_BAD_REQUEST);
            return null;
        }
        RestrictedPerson fragmentOwner = PersonFactory.createRestrictedPerson();
        fragmentOwner.setUserName(fragmentOwnerName);

        // Mark the currently-authenticated user as subscribed to this fragment.
        // If an inactivated fragment registration already exists, update it
        // as an active subscription.  Otherwise, create a new fragment
        // subscription.
        IUserFragmentSubscription userFragmentInfo = userFragmentInfoDao
            .getUserFragmentInfo(per, fragmentOwner);
        if (userFragmentInfo == null) {
            userFragmentInfo = userFragmentInfoDao.createUserFragmentInfo(per,
                    fragmentOwner);
        } else {
            userFragmentInfo.setActive(true);
            userFragmentInfoDao.updateUserFragmentInfo(userFragmentInfo);
        }

        try {
            // reload user layout and stylesheet to incorporate new DLM fragment
            ulm.loadUserLayout(true);

            // get the target node this new tab should be moved after
            String destinationId = request.getParameter("elementID");

            // get the user layout for the currently-authenticated user
            int uid = userIdentityStore.getPortalUID(fragmentOwner, false);
            final DistributedUserLayout userLayout = userLayoutStore.getUserLayout(per, upm.getUserProfile());
            Document layoutDocument = userLayout.getLayout();

            // attempt to find the new subscribed tab in the layout so we can
            // move it
            StringBuilder expression = new StringBuilder("//folder[@type='root']/folder[starts-with(@ID,'")
                                       .append(Constants.FRAGMENT_ID_USER_PREFIX)
                                       .append(uid)
                                       .append("')]");
            XPathFactory fac = XPathFactory.newInstance();
            XPath xpath = fac.newXPath();
            NodeList nodes = (NodeList) xpath.evaluate(expression.toString(), layoutDocument,  XPathConstants.NODESET);
            String sourceId = nodes.item(0).getAttributes().getNamedItem("ID").getTextContent();
            ulm.moveNode(sourceId, ulm.getParentId(destinationId), destinationId);

            ulm.saveUserLayout();

            return new ModelAndView("jsonView", Collections.singletonMap("tabId", sourceId));

        } catch (Exception e) {
            log.warn("Error subscribing to fragment owned by "
View Full Code Here

Examples of org.jasig.portal.layout.IUserLayoutManager

        IUserInstance ui = userInstanceManager.getUserInstance(request);
        IPerson per = getPerson(ui, response);
        final Locale locale = RequestContextUtils.getLocale(request);

        UserPreferencesManager upm = (UserPreferencesManager) ui.getPreferencesManager();
        IUserLayoutManager ulm = upm.getUserLayoutManager();

    // portlet to be moved
    String sourceId = request.getParameter("sourceID");

    // Either "insertBefore" or "appendAfter".
    String method = request.getParameter("method");

    // Target element to move the source element in front of.  This parameter
    // isn't actually relevant if we're appending the source element.
    String destinationId = request.getParameter("elementID");


    if (isTab(ulm, destinationId)) {
      // if the target is a tab type node, move the portlet to
      // the end of the first column
        @SuppressWarnings("unchecked")
      Enumeration<String> columns = ulm.getChildIds(destinationId);
      if (columns.hasMoreElements()) {
        ulm.moveNode(sourceId, columns.nextElement(), null);
      } else {

        IUserLayoutFolderDescription newColumn = new UserLayoutFolderDescription();
        newColumn.setName("Column");
        newColumn.setId("tbd");
        newColumn
            .setFolderType(IUserLayoutFolderDescription.REGULAR_TYPE);
        newColumn.setHidden(false);
        newColumn.setUnremovable(false);
        newColumn.setImmutable(false);

        // add the column to our layout
        IUserLayoutNodeDescription col = ulm.addNode(newColumn,
            destinationId, null);

        // move the channel
        ulm.moveNode(sourceId, col.getId(), null);
      }

    } else if (ulm.getRootFolderId().equals(
      // if the target is a column type node, we need to just move the portlet
      // to the end of the column
      ulm.getParentId(ulm.getParentId(destinationId)))) {
      ulm.moveNode(sourceId, destinationId, null);

    } else {
      // If we're moving this element before another one, we need
      // to know what the target is. If there's no target, just
      // assume we're moving it to the very end of the column.
      String siblingId = null;
      if (method.equals("insertBefore"))
        siblingId = destinationId;

      // move the node as requested and save the layout
      ulm.moveNode(sourceId, ulm.getParentId(destinationId), siblingId);
    }

    try {
      // save the user's layout
            ulm.saveUserLayout();
    } catch (Exception e) {
      log.warn("Error saving layout", e);
            return new ModelAndView("jsonView",
                    Collections.singletonMap("response", getMessage("error.move.portlet",
                    "There was an issue moving this portlet, please refresh the page and try again.", locale)));
View Full Code Here

Examples of org.jasig.portal.layout.IUserLayoutManager

        IUserInstance ui = userInstanceManager.getUserInstance(request);
        IPerson per = getPerson(ui, response);

        UserPreferencesManager upm = (UserPreferencesManager) ui.getPreferencesManager();
        IUserLayoutManager ulm = upm.getUserLayoutManager();

    int newColumnCount = widths.length;

    // build a list of the current columns for this tab
        @SuppressWarnings("unchecked")
    Enumeration<String> columns = ulm.getChildIds(tabId);
    List<String> columnList = new ArrayList<String>();
    while (columns.hasMoreElements()) {
      columnList.add(columns.nextElement());
    }
        int oldColumnCount = columnList.size();

        Map<String, Object> model = new HashMap<String, Object>();

        // if the new layout has more columns
    if (newColumnCount > oldColumnCount) {
          List<String> newColumnIds = new ArrayList<String>();
      for (int i = columnList.size(); i < newColumnCount; i++) {

        // create new column element
        IUserLayoutFolderDescription newColumn = new UserLayoutFolderDescription();
        newColumn.setName("Column");
        newColumn.setId("tbd");
        newColumn
            .setFolderType(IUserLayoutFolderDescription.REGULAR_TYPE);
        newColumn.setHidden(false);
        newColumn.setUnremovable(false);
        newColumn.setImmutable(false);

        // add the column to our layout
        IUserLayoutNodeDescription node = ulm.addNode(newColumn, tabId,
            null);
        newColumnIds.add(node.getId());

              model.put("newColumnIds", newColumnIds);
        columnList.add(node.getId());

      }

    }

    // if the new layout has fewer columns
    else if (deleted != null && deleted.length > 0) {

          if (columnList.size() != widths.length + deleted.length) {
              // TODO: error?
          }

        for (String columnId : deleted) {

                // move all channels in the current column to the last valid column
                @SuppressWarnings("unchecked")
                Enumeration channels = ulm.getChildIds(columnId);
                while (channels.hasMoreElements()) {
                    ulm.addNode(ulm.getNode((String) channels.nextElement()),
                            acceptor, null);
                }

                // delete the column from the user's layout
                ulm.deleteNode(columnId);

                columnList.remove(columnId);
            }
    }

    int count = 0;
    for (String columnId : columnList) {
        this.stylesheetUserPreferencesService.setLayoutAttribute(request, PreferencesScope.STRUCTURE, columnId, "width", widths[count] + "%");
      try {
        // This sets the column attribute in memory but doesn't persist it.  Comment says saves changes "prior to persisting"
              Element folder = ulm.getUserLayoutDOM().getElementById(columnId);
        UserPrefsHandler.setUserPreference(folder, "width", per);
      } catch (Exception e) {
        log.error("Error saving new column widths", e);
      }
      count++;
    }

    try {
        ulm.saveUserLayout();
    } catch (Exception e) {
      log.warn("Error saving layout", e);
    }

        return new ModelAndView("jsonView", model);
View Full Code Here

Examples of org.jasig.portal.layout.IUserLayoutManager

      HttpServletResponse response) throws IOException {

        IUserInstance ui = userInstanceManager.getUserInstance(request);

        UserPreferencesManager upm = (UserPreferencesManager) ui.getPreferencesManager();
        IUserLayoutManager ulm = upm.getUserLayoutManager();
        final Locale locale = RequestContextUtils.getLocale(request);

    // gather the parameters we need to move a channel
    String destinationId = request.getParameter("elementID");
    String sourceId = request.getParameter("sourceID");
    String method = request.getParameter("method");

    // If we're moving this element before another one, we need
    // to know what the target is. If there's no target, just
    // assume we're moving it to the very end of the list.
    String siblingId = null;
    if ("insertBefore".equals(method))
      siblingId = destinationId;

        try {
            // move the node as requested and save the layout
            ulm.moveNode(sourceId, ulm.getParentId(destinationId), siblingId);
            ulm.saveUserLayout();
    } catch (Exception e) {
      log.warn("Failed to move tab in user layout", e);
      response.sendError(HttpServletResponse.SC_BAD_REQUEST);
            return new ModelAndView("jsonView",
                    Collections.singletonMap("response", getMessage("error.move.tab",
View Full Code Here
TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.