docs: @RequestMapping(method = RequestMethod.POST, params = "action=moveTab")
      public ModelAndView moveTab(
              HttpServletRequest request,
              HttpServletResponse response,
              @RequestParam(value = "sourceID") String sourceId,
              @RequestParam String method,
              @RequestParam(value = "elementID") String destinationId)
              throws IOException {
  
          IUserInstance ui = userInstanceManager.getUserInstance(request);
  
          UserPreferencesManager upm = (UserPreferencesManager) ui.getPreferencesManager();
          IUserLayoutManager ulm = upm.getUserLayoutManager();
          final Locale locale = RequestContextUtils.getLocale(request);
  
          // 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
              if (!ulm.moveNode(sourceId, ulm.getParentId(destinationId), siblingId)) {
                  logger.warn("Failed to move tab in user layout. moveNode returned false");
                  response.setStatus(HttpServletResponse.SC_FORBIDDEN);
                  return new ModelAndView(
                          "jsonView",
                          Collections.singletonMap(
                                  "response",
                                  getMessage(
                                          "error.move.tab",
                                          "There was an issue moving the tab, please refresh the page and try again.",
                                          locale)));
              }
              ulm.saveUserLayout();
          } catch (PortalException e) {
              return handlePersistError(request, response, e);
          }
  
          return new ModelAndView(
                  "jsonView",
                  Collections.singletonMap(
                          "response",
                          getMessage("success.move.tab", "Tab moved successfully", locale)));
      }