private void _init(
      HttpServletRequest request, DLFileEntryType dlFileEntryType, FileEntry fileEntry)
      throws PortalException {

    _request = request;
    _dlFileEntryType = dlFileEntryType;
    _fileEntry = fileEntry;

    ThemeDisplay themeDisplay = (ThemeDisplay) request.getAttribute(WebKeys.THEME_DISPLAY);

    PortletDisplay portletDisplay = themeDisplay.getPortletDisplay();

    _dlPortletInstanceSettings =
        DLPortletInstanceSettings.getInstance(themeDisplay.getLayout(), portletDisplay.getId());
    _fileEntryDisplayContextHelper =
        new FileEntryDisplayContextHelper(themeDisplay.getPermissionChecker(), _fileEntry);

    if ((_dlFileEntryType == null) && (_fileEntry != null)) {
      _dlFileEntryType = _fileEntryDisplayContextHelper.getDLFileEntryType();
    }

    if (fileEntry != null) {
      _fileVersion = fileEntry.getFileVersion();
    }

    _fileVersionDisplayContextHelper = new FileVersionDisplayContextHelper(_fileVersion);
  }
  @Override
  public String getPortletFileEntryURL(
      ThemeDisplay themeDisplay, FileEntry fileEntry, String queryString, boolean absoluteURL) {

    StringBundler sb = new StringBundler(10);

    if (themeDisplay != null) {
      if (absoluteURL) {
        sb.append(themeDisplay.getPortalURL());
      }
    }

    sb.append(PortalUtil.getPathContext());
    sb.append("/documents/");
    sb.append(WebServerServlet.PATH_PORTLET_FILE_ENTRY);
    sb.append(StringPool.SLASH);
    sb.append(fileEntry.getGroupId());
    sb.append(StringPool.SLASH);

    String title = fileEntry.getTitle();

    if (fileEntry.isInTrash()) {
      title = TrashUtil.getOriginalTitle(fileEntry.getTitle());
    }

    sb.append(HttpUtil.encodeURL(HtmlUtil.unescape(title)));

    sb.append(StringPool.SLASH);
    sb.append(HttpUtil.encodeURL(fileEntry.getUuid()));

    if (themeDisplay != null) {
      PortletDisplay portletDisplay = themeDisplay.getPortletDisplay();

      if (portletDisplay != null) {
        String portletId = portletDisplay.getId();

        if (portletId.equals(PortletKeys.TRASH) && !queryString.contains("status=")) {

          if (Validator.isNotNull(queryString)) {
            queryString += StringPool.AMPERSAND;
          }

          queryString += "status=" + WorkflowConstants.STATUS_IN_TRASH;
        }
      }
    }

    if (Validator.isNotNull(queryString)) {
      sb.append(StringPool.QUESTION);
      sb.append(queryString);
    }

    String portletFileEntryURL = sb.toString();

    if ((themeDisplay != null) && themeDisplay.isAddSessionIdToURL()) {
      return PortalUtil.getURLWithSessionId(portletFileEntryURL, themeDisplay.getSessionId());
    }

    return portletFileEntryURL;
  }
Example #3
0
  protected String getAssetPublisherURL(PortletRequest portletRequest) throws Exception {

    ThemeDisplay themeDisplay = (ThemeDisplay) portletRequest.getAttribute(WebKeys.THEME_DISPLAY);

    Layout layout = themeDisplay.getLayout();

    PortletDisplay portletDisplay = themeDisplay.getPortletDisplay();

    StringBundler sb = new StringBundler(7);

    String layoutFriendlyURL =
        GetterUtil.getString(PortalUtil.getLayoutFriendlyURL(layout, themeDisplay));

    if (!layoutFriendlyURL.startsWith(Http.HTTP_WITH_SLASH)
        && !layoutFriendlyURL.startsWith(Http.HTTPS_WITH_SLASH)) {

      sb.append(themeDisplay.getPortalURL());
    }

    sb.append(layoutFriendlyURL);
    sb.append(Portal.FRIENDLY_URL_SEPARATOR);
    sb.append("asset_publisher/");
    sb.append(portletDisplay.getInstanceId());
    sb.append(StringPool.SLASH);

    return sb.toString();
  }
  protected String[] getAllowedFileExtensions(
      PortletConfig portletConfig, PortletRequest portletRequest, PortletResponse portletResponse)
      throws PortalException {

    String portletName = portletConfig.getPortletName();

    if (!portletName.equals(DLPortletKeys.MEDIA_GALLERY_DISPLAY)) {
      return PrefsPropsUtil.getStringArray(PropsKeys.DL_FILE_EXTENSIONS, StringPool.COMMA);
    } else {
      ThemeDisplay themeDisplay = (ThemeDisplay) portletRequest.getAttribute(WebKeys.THEME_DISPLAY);

      PortletDisplay portletDisplay = themeDisplay.getPortletDisplay();

      DLPortletInstanceSettings dlPortletInstanceSettings =
          DLPortletInstanceSettings.getInstance(themeDisplay.getLayout(), portletDisplay.getId());

      Set<String> extensions = new HashSet<>();

      String[] mimeTypes = dlPortletInstanceSettings.getMimeTypes();

      for (String mimeType : mimeTypes) {
        extensions.addAll(MimeTypesUtil.getExtensions(mimeType));
      }

      return extensions.toArray(new String[extensions.size()]);
    }
  }
  public DLEntryListDisplayContext(
      HttpServletRequest request, DLPortletInstanceSettings dlPortletInstanceSettings) {

    _dlPortletInstanceSettings = dlPortletInstanceSettings;

    _dlActionsDisplayContext = new DLActionsDisplayContext(request, dlPortletInstanceSettings);

    ThemeDisplay themeDisplay = (ThemeDisplay) request.getAttribute(WebKeys.THEME_DISPLAY);

    _portletDisplay = themeDisplay.getPortletDisplay();
  }
  public String getRSSName() {
    if (_rssName == null) {
      ThemeDisplay themeDisplay = (ThemeDisplay) _request.getAttribute(WebKeys.THEME_DISPLAY);

      PortletDisplay portletDisplay = themeDisplay.getPortletDisplay();

      _rssName = _portletPreferences.getValue("rssName", portletDisplay.getTitle());
    }

    return _rssName;
  }
  @Override
  public void setTitle(String title) {
    _title = title;

    // See LEP-2188

    ThemeDisplay themeDisplay =
        (ThemeDisplay) _portletRequestImpl.getAttribute(WebKeys.THEME_DISPLAY);

    PortletDisplay portletDisplay = themeDisplay.getPortletDisplay();

    portletDisplay.setTitle(_title);
  }
  public AssetCategoriesNavigationDisplayContext(HttpServletRequest request)
      throws SettingsException {

    _request = request;

    ThemeDisplay themeDisplay = (ThemeDisplay) request.getAttribute(WebKeys.THEME_DISPLAY);

    PortletDisplay portletDisplay = themeDisplay.getPortletDisplay();

    _assetCategoriesNavigationPortletInstanceConfiguration =
        portletDisplay.getPortletInstanceConfiguration(
            AssetCategoriesNavigationPortletInstanceConfiguration.class);
  }
  @Override
  public boolean isVisible(User user, User selUser) {
    ServiceContext serviceContext = ServiceContextThreadLocal.getServiceContext();

    ThemeDisplay themeDisplay = serviceContext.getThemeDisplay();

    PortletDisplay portletDisplay = themeDisplay.getPortletDisplay();

    String portletName = portletDisplay.getPortletName();

    if ((selUser != null) && portletName.equals(PortletKeys.MY_ACCOUNT)) {
      return false;
    }

    return true;
  }
Example #10
0
  public static Map<String, String> getEmailFromDefinitionTerms(PortletRequest portletRequest) {

    ThemeDisplay themeDisplay = (ThemeDisplay) portletRequest.getAttribute(WebKeys.THEME_DISPLAY);

    Map<String, String> definitionTerms = new LinkedHashMap<>();

    definitionTerms.put(
        "[$COMPANY_ID$]",
        LanguageUtil.get(
            themeDisplay.getLocale(), "the-company-id-associated-with-the-message-board"));
    definitionTerms.put(
        "[$COMPANY_MX$]",
        LanguageUtil.get(
            themeDisplay.getLocale(), "the-company-mx-associated-with-the-message-board"));
    definitionTerms.put(
        "[$COMPANY_NAME$]",
        LanguageUtil.get(
            themeDisplay.getLocale(), "the-company-name-associated-with-the-message-board"));

    if (PropsValues.POP_SERVER_NOTIFICATIONS_ENABLED) {
      definitionTerms.put(
          "[$MAILING_LIST_ADDRESS$]",
          LanguageUtil.get(themeDisplay.getLocale(), "the-email-address-of-the-mailing-list"));
    }

    definitionTerms.put(
        "[$MESSAGE_USER_ADDRESS$]",
        LanguageUtil.get(
            themeDisplay.getLocale(), "the-email-address-of-the-user-who-added-the-message"));
    definitionTerms.put(
        "[$MESSAGE_USER_NAME$]",
        LanguageUtil.get(themeDisplay.getLocale(), "the-user-who-added-the-message"));

    PortletDisplay portletDisplay = themeDisplay.getPortletDisplay();

    definitionTerms.put("[$PORTLET_NAME$]", HtmlUtil.escape(portletDisplay.getTitle()));

    definitionTerms.put(
        "[$SITE_NAME$]",
        LanguageUtil.get(
            themeDisplay.getLocale(), "the-site-name-associated-with-the-message-board"));

    return definitionTerms;
  }
  protected WikiPortletInstanceSettings getWikiPortletInstanceSettings(ActionRequest actionRequest)
      throws PortalException {

    ThemeDisplay themeDisplay = (ThemeDisplay) actionRequest.getAttribute(WebKeys.THEME_DISPLAY);

    PortletDisplay portletDisplay = themeDisplay.getPortletDisplay();

    WikiWebSettingsProvider wikiWebSettingsProvider =
        WikiWebSettingsProvider.getWikiWebSettingsProvider();

    PortletInstanceSettingsProvider<WikiPortletInstanceSettings> portletIntanceSettingsProvider =
        wikiWebSettingsProvider.getPortletInstanceSettingsProvider();

    WikiPortletInstanceSettings wikiPortletInstanceSettings =
        portletIntanceSettingsProvider.getPortletInstanceSettings(
            themeDisplay.getLayout(), portletDisplay.getId());

    return wikiPortletInstanceSettings;
  }
  protected void addPortletTitleAddCategoryMenuItem(
      List<MenuItem> menuItems,
      long categoryId,
      ThemeDisplay themeDisplay,
      PortletRequest portletRequest)
      throws PortalException {

    if (!containsPermission(
        themeDisplay.getPermissionChecker(),
        themeDisplay.getScopeGroupId(),
        categoryId,
        ActionKeys.ADD_CATEGORY)) {

      return;
    }

    URLMenuItem urlMenuItem = new URLMenuItem();

    String key = "category[message-board]";

    if (categoryId != MBCategoryConstants.DEFAULT_PARENT_CATEGORY_ID) {
      key = "subcategory[message-board]";
    }

    urlMenuItem.setLabel(LanguageUtil.get(PortalUtil.getHttpServletRequest(portletRequest), key));

    PortletDisplay portletDisplay = themeDisplay.getPortletDisplay();

    PortletURL portletURL =
        PortletURLFactoryUtil.create(
            portletRequest,
            portletDisplay.getId(),
            themeDisplay.getPlid(),
            PortletRequest.RENDER_PHASE);

    portletURL.setParameter("mvcRenderCommandName", "/message_boards/edit_category");
    portletURL.setParameter("redirect", PortalUtil.getCurrentURL(portletRequest));
    portletURL.setParameter("parentCategoryId", String.valueOf(categoryId));

    urlMenuItem.setURL(portletURL.toString());

    menuItems.add(urlMenuItem);
  }
  protected JSONArray getJSONArray(HttpServletRequest request) throws PortalException {

    JSONArray jsonArray = JSONFactoryUtil.createJSONArray();

    ThemeDisplay themeDisplay = (ThemeDisplay) request.getAttribute(WebKeys.THEME_DISPLAY);

    PortletDisplay portletDisplay = themeDisplay.getPortletDisplay();

    SocialInteractionsConfiguration socialInteractionsConfiguration =
        SocialInteractionsConfigurationUtil.getSocialInteractionsConfiguration(
            themeDisplay.getCompanyId(), portletDisplay.getId());

    String query = ParamUtil.getString(request, "query");

    List<User> users =
        MentionsUserFinderUtil.getUsers(
            themeDisplay.getCompanyId(),
            themeDisplay.getUserId(),
            query,
            socialInteractionsConfiguration);

    for (User user : users) {
      if (user.isDefaultUser() || (themeDisplay.getUserId() == user.getUserId())) {

        continue;
      }

      JSONObject jsonObject = JSONFactoryUtil.createJSONObject();

      jsonObject.put("fullName", user.getFullName());
      jsonObject.put("portraitURL", user.getPortraitURL(themeDisplay));
      jsonObject.put("profileURL", user.getDisplayURL(themeDisplay));
      jsonObject.put("screenName", user.getScreenName());

      jsonArray.put(jsonObject);
    }

    return jsonArray;
  }
  protected void addPortletTitleAddMessageMenuItem(
      List<MenuItem> menuItems,
      long categoryId,
      ThemeDisplay themeDisplay,
      PortletRequest portletRequest)
      throws PortalException {

    if (!containsPermission(
        themeDisplay.getPermissionChecker(),
        themeDisplay.getScopeGroupId(),
        categoryId,
        ActionKeys.ADD_MESSAGE)) {

      return;
    }

    URLMenuItem urlMenuItem = new URLMenuItem();

    urlMenuItem.setLabel(
        LanguageUtil.get(PortalUtil.getHttpServletRequest(portletRequest), "thread"));

    PortletDisplay portletDisplay = themeDisplay.getPortletDisplay();

    PortletURL portletURL =
        PortletURLFactoryUtil.create(
            portletRequest,
            portletDisplay.getId(),
            themeDisplay.getPlid(),
            PortletRequest.RENDER_PHASE);

    portletURL.setParameter("mvcRenderCommandName", "/message_boards/edit_message");
    portletURL.setParameter("redirect", PortalUtil.getCurrentURL(portletRequest));
    portletURL.setParameter("mbCategoryId", String.valueOf(categoryId));

    urlMenuItem.setURL(portletURL.toString());

    menuItems.add(urlMenuItem);
  }
Example #15
0
  @Override
  public int doStartTag() {
    HttpServletRequest request = (HttpServletRequest) pageContext.getRequest();

    ThemeDisplay themeDisplay = (ThemeDisplay) request.getAttribute(WebKeys.THEME_DISPLAY);

    if (_direction == null) {
      if (_align.equals("left")) {
        _direction = "right";
      } else {
        _direction = "left";
      }
    }

    if (_icon == null) {
      _icon = themeDisplay.getPathThemeImages() + "/common/tool.png";
    }

    if (Validator.isNull(_id)) {
      String randomKey = PortalUtil.generateRandomKey(request, IconMenuTag.class.getName());

      _id = randomKey + StringPool.UNDERLINE + "menu";
    } else {
      PortletDisplay portletDisplay = themeDisplay.getPortletDisplay();

      String namespace = portletDisplay.getNamespace();

      _id = namespace.concat(_id);
    }

    request.setAttribute("liferay-ui:icon-menu:icon-count", new IntegerWrapper());
    request.setAttribute(
        "liferay-ui:icon-menu:showWhenSingleIcon", String.valueOf(_showWhenSingleIcon));

    return EVAL_BODY_BUFFERED;
  }
  private void _doServeResource(
      HttpServletRequest request, HttpServletResponse response, Portlet portlet) throws Exception {

    HttpServletRequest ownerLayoutRequest = getOwnerLayoutRequestWrapper(request, portlet);

    Layout ownerLayout = (Layout) ownerLayoutRequest.getAttribute(WebKeys.LAYOUT);

    boolean allowAddPortletDefaultResource =
        PortalUtil.isAllowAddPortletDefaultResource(ownerLayoutRequest, portlet);

    if (!allowAddPortletDefaultResource) {
      String url = null;

      LastPath lastPath = (LastPath) request.getAttribute(WebKeys.LAST_PATH);

      if (lastPath != null) {
        StringBundler sb = new StringBundler(3);

        sb.append(PortalUtil.getPortalURL(request));
        sb.append(lastPath.getContextPath());
        sb.append(lastPath.getPath());

        url = sb.toString();
      } else {
        url = String.valueOf(request.getRequestURI());
      }

      response.setHeader(HttpHeaders.CACHE_CONTROL, HttpHeaders.CACHE_CONTROL_NO_CACHE_VALUE);
      response.setStatus(HttpServletResponse.SC_BAD_REQUEST);

      _log.error("Reject serveResource for " + url + " on " + portlet.getPortletId());

      return;
    }

    WindowState windowState = (WindowState) request.getAttribute(WebKeys.WINDOW_STATE);

    PortletMode portletMode =
        PortletModeFactory.getPortletMode(ParamUtil.getString(request, "p_p_mode"));

    PortletPreferencesIds portletPreferencesIds =
        PortletPreferencesFactoryUtil.getPortletPreferencesIds(request, portlet.getPortletId());

    PortletPreferences portletPreferences =
        PortletPreferencesLocalServiceUtil.getPreferences(portletPreferencesIds);

    ServletContext servletContext = (ServletContext) request.getAttribute(WebKeys.CTX);

    InvokerPortlet invokerPortlet = PortletInstanceFactoryUtil.create(portlet, servletContext);

    PortletConfig portletConfig = PortletConfigFactoryUtil.create(portlet, servletContext);
    PortletContext portletContext = portletConfig.getPortletContext();

    ThemeDisplay themeDisplay = (ThemeDisplay) request.getAttribute(WebKeys.THEME_DISPLAY);

    PortletDisplay portletDisplay = themeDisplay.getPortletDisplay();

    Layout layout = (Layout) request.getAttribute(WebKeys.LAYOUT);

    String portletPrimaryKey =
        PortletPermissionUtil.getPrimaryKey(layout.getPlid(), portlet.getPortletId());

    portletDisplay.setId(portlet.getPortletId());
    portletDisplay.setRootPortletId(portlet.getRootPortletId());
    portletDisplay.setInstanceId(portlet.getInstanceId());
    portletDisplay.setResourcePK(portletPrimaryKey);
    portletDisplay.setPortletName(portletConfig.getPortletName());
    portletDisplay.setNamespace(PortalUtil.getPortletNamespace(portlet.getPortletId()));

    WebDAVStorage webDAVStorage = portlet.getWebDAVStorageInstance();

    if (webDAVStorage != null) {
      portletDisplay.setWebDAVEnabled(true);
    } else {
      portletDisplay.setWebDAVEnabled(false);
    }

    ResourceRequestImpl resourceRequestImpl =
        ResourceRequestFactory.create(
            request,
            portlet,
            invokerPortlet,
            portletContext,
            windowState,
            portletMode,
            portletPreferences,
            layout.getPlid());

    long companyId = PortalUtil.getCompanyId(request);

    ResourceResponseImpl resourceResponseImpl =
        ResourceResponseFactory.create(
            resourceRequestImpl, response, portlet.getPortletId(), companyId);

    resourceRequestImpl.defineObjects(portletConfig, resourceResponseImpl);

    try {
      ServiceContext serviceContext = ServiceContextFactory.getInstance(resourceRequestImpl);

      ServiceContextThreadLocal.pushServiceContext(serviceContext);

      PermissionChecker permissionChecker = PermissionThreadLocal.getPermissionChecker();

      long scopeGroupId = themeDisplay.getScopeGroupId();

      boolean access =
          PortletPermissionUtil.hasAccessPermission(
              permissionChecker, scopeGroupId, ownerLayout, portlet, portletMode);

      if (access) {
        invokerPortlet.serveResource(resourceRequestImpl, resourceResponseImpl);

        resourceResponseImpl.transferHeaders(response);
      }
    } finally {
      ServiceContextThreadLocal.popServiceContext();
    }
  }
  private void _doRender(HttpServletRequest request, HttpServletResponse response, Portlet portlet)
      throws Exception {

    if ((portlet != null) && portlet.isInstanceable() && !portlet.isAddDefaultResource()) {

      String instanceId = portlet.getInstanceId();

      if (!Validator.isPassword(instanceId)) {
        if (_log.isDebugEnabled()) {
          _log.debug(
              "Portlet "
                  + portlet.getPortletId()
                  + " is instanceable but does not have a valid "
                  + "instance id");
        }

        portlet = null;
      }
    }

    if (portlet == null) {
      return;
    }

    // Capture the current portlet's settings to reset them once the child
    // portlet is rendered

    ThemeDisplay themeDisplay = (ThemeDisplay) request.getAttribute(WebKeys.THEME_DISPLAY);

    PortletDisplay portletDisplay = themeDisplay.getPortletDisplay();

    PortletDisplay portletDisplayClone = PortletDisplayFactory.create();

    portletDisplay.copyTo(portletDisplayClone);

    PortletConfig portletConfig =
        (PortletConfig) request.getAttribute(JavaConstants.JAVAX_PORTLET_CONFIG);

    PortletRequest portletRequest =
        (PortletRequest) request.getAttribute(JavaConstants.JAVAX_PORTLET_REQUEST);

    if (!(portletRequest instanceof RenderRequest)) {
      portletRequest = null;
    }

    PortletResponse portletResponse =
        (PortletResponse) request.getAttribute(JavaConstants.JAVAX_PORTLET_RESPONSE);

    if (!(portletResponse instanceof RenderResponse)) {
      portletResponse = null;
    }

    String lifecycle = (String) request.getAttribute(PortletRequest.LIFECYCLE_PHASE);

    request.setAttribute(WebKeys.RENDER_PORTLET, portlet);

    String path = (String) request.getAttribute(WebKeys.RENDER_PATH);

    if (path == null) {
      path = "/html/portal/render_portlet.jsp";
    }

    RequestDispatcher requestDispatcher =
        DirectRequestDispatcherFactoryUtil.getRequestDispatcher(request, path);

    BufferCacheServletResponse bufferCacheServletResponse = null;

    boolean writeOutput = false;

    if (response instanceof BufferCacheServletResponse) {
      bufferCacheServletResponse = (BufferCacheServletResponse) response;
    } else {
      writeOutput = true;
      bufferCacheServletResponse = new BufferCacheServletResponse(response);
    }

    try {
      requestDispatcher.include(request, bufferCacheServletResponse);

      Boolean portletConfiguratorVisibility =
          (Boolean) request.getAttribute(WebKeys.PORTLET_CONFIGURATOR_VISIBILITY);

      if (portletConfiguratorVisibility != null) {
        request.removeAttribute(WebKeys.PORTLET_CONFIGURATOR_VISIBILITY);

        Layout layout = themeDisplay.getLayout();

        if (!layout.isTypeControlPanel()
            && !LayoutPermissionUtil.contains(
                themeDisplay.getPermissionChecker(), layout, ActionKeys.UPDATE)
            && !PortletPermissionUtil.contains(
                themeDisplay.getPermissionChecker(),
                layout,
                portlet.getPortletId(),
                ActionKeys.CONFIGURATION)) {

          bufferCacheServletResponse.setCharBuffer(null);

          return;
        }
      }

      if (writeOutput) {
        Writer writer = response.getWriter();

        writer.write(bufferCacheServletResponse.getString());
      }
    } finally {
      portletDisplay.copyFrom(portletDisplayClone);

      portletDisplayClone.recycle();

      if (portletConfig != null) {
        request.setAttribute(JavaConstants.JAVAX_PORTLET_CONFIG, portletConfig);
      }

      if (portletRequest != null) {
        request.setAttribute(JavaConstants.JAVAX_PORTLET_REQUEST, portletRequest);
      }

      if (portletResponse != null) {
        request.setAttribute(JavaConstants.JAVAX_PORTLET_RESPONSE, portletResponse);
      }

      if (lifecycle != null) {
        request.setAttribute(PortletRequest.LIFECYCLE_PHASE, lifecycle);
      }

      request.removeAttribute(WebKeys.RENDER_PORTLET);
    }
  }
Example #18
0
  @Override
  public String getPreviewURL(
      FileEntry fileEntry,
      FileVersion fileVersion,
      ThemeDisplay themeDisplay,
      String queryString,
      boolean appendVersion,
      boolean absoluteURL) {

    StringBundler sb = new StringBundler(17);

    if (themeDisplay != null) {
      if (absoluteURL) {
        sb.append(themeDisplay.getPortalURL());
      }
    }

    sb.append(PortalUtil.getPathContext());
    sb.append("/documents/");
    sb.append(fileEntry.getRepositoryId());
    sb.append(StringPool.SLASH);
    sb.append(fileEntry.getFolderId());
    sb.append(StringPool.SLASH);

    String title = fileEntry.getTitle();

    if (fileEntry.isInTrash()) {
      title = TrashUtil.getOriginalTitle(fileEntry.getTitle());
    }

    sb.append(HttpUtil.encodeURL(HtmlUtil.unescape(title)));

    sb.append(StringPool.SLASH);
    sb.append(fileEntry.getUuid());

    if (appendVersion) {
      sb.append("?version=");
      sb.append(fileVersion.getVersion());
    }

    if (ImageProcessorUtil.isImageSupported(fileVersion)) {
      if (appendVersion) {
        sb.append("&t=");
      } else {
        sb.append("?t=");
      }

      Date modifiedDate = fileVersion.getModifiedDate();

      sb.append(modifiedDate.getTime());
    }

    sb.append(queryString);

    if (themeDisplay != null) {
      PortletDisplay portletDisplay = themeDisplay.getPortletDisplay();

      if (portletDisplay != null) {
        String portletId = portletDisplay.getId();

        if (portletId.equals(PortletKeys.TRASH)) {
          sb.append("&status=");
          sb.append(WorkflowConstants.STATUS_IN_TRASH);
        }
      }
    }

    String previewURL = sb.toString();

    if ((themeDisplay != null) && themeDisplay.isAddSessionIdToURL()) {
      return PortalUtil.getURLWithSessionId(previewURL, themeDisplay.getSessionId());
    }

    return previewURL;
  }
Example #19
0
  public static Map<String, String> getEmailDefinitionTerms(
      PortletRequest portletRequest, String emailFromAddress, String emailFromName) {

    ThemeDisplay themeDisplay = (ThemeDisplay) portletRequest.getAttribute(WebKeys.THEME_DISPLAY);

    Map<String, String> definitionTerms = new LinkedHashMap<>();

    definitionTerms.put(
        "[$CATEGORY_NAME$]",
        LanguageUtil.get(
            themeDisplay.getLocale(), "the-category-in-which-the-message-has-been-posted"));
    definitionTerms.put(
        "[$COMPANY_ID$]",
        LanguageUtil.get(
            themeDisplay.getLocale(), "the-company-id-associated-with-the-message-board"));
    definitionTerms.put(
        "[$COMPANY_MX$]",
        LanguageUtil.get(
            themeDisplay.getLocale(), "the-company-mx-associated-with-the-message-board"));
    definitionTerms.put(
        "[$COMPANY_NAME$]",
        LanguageUtil.get(
            themeDisplay.getLocale(), "the-company-name-associated-with-the-message-board"));
    definitionTerms.put("[$FROM_ADDRESS$]", HtmlUtil.escape(emailFromAddress));
    definitionTerms.put("[$FROM_NAME$]", HtmlUtil.escape(emailFromName));

    if (PropsValues.POP_SERVER_NOTIFICATIONS_ENABLED) {
      definitionTerms.put(
          "[$MAILING_LIST_ADDRESS$]",
          LanguageUtil.get(themeDisplay.getLocale(), "the-email-address-of-the-mailing-list"));
    }

    definitionTerms.put(
        "[$MESSAGE_BODY$]", LanguageUtil.get(themeDisplay.getLocale(), "the-message-body"));
    definitionTerms.put(
        "[$MESSAGE_ID$]", LanguageUtil.get(themeDisplay.getLocale(), "the-message-id"));
    definitionTerms.put(
        "[$MESSAGE_SUBJECT$]", LanguageUtil.get(themeDisplay.getLocale(), "the-message-subject"));
    definitionTerms.put(
        "[$MESSAGE_URL$]", LanguageUtil.get(themeDisplay.getLocale(), "the-message-url"));
    definitionTerms.put(
        "[$MESSAGE_USER_ADDRESS$]",
        LanguageUtil.get(
            themeDisplay.getLocale(), "the-email-address-of-the-user-who-added-the-message"));
    definitionTerms.put(
        "[$MESSAGE_USER_NAME$]",
        LanguageUtil.get(themeDisplay.getLocale(), "the-user-who-added-the-message"));

    Company company = themeDisplay.getCompany();

    definitionTerms.put("[$PORTAL_URL$]", company.getVirtualHostname());

    PortletDisplay portletDisplay = themeDisplay.getPortletDisplay();

    definitionTerms.put("[$PORTLET_NAME$]", HtmlUtil.escape(portletDisplay.getTitle()));

    definitionTerms.put(
        "[$SITE_NAME$]",
        LanguageUtil.get(
            themeDisplay.getLocale(), "the-site-name-associated-with-the-message-board"));

    if (!PropsValues.MESSAGE_BOARDS_EMAIL_BULK) {
      definitionTerms.put(
          "[$TO_ADDRESS$]",
          LanguageUtil.get(themeDisplay.getLocale(), "the-address-of-the-email-recipient"));
      definitionTerms.put(
          "[$TO_NAME$]",
          LanguageUtil.get(themeDisplay.getLocale(), "the-name-of-the-email-recipient"));
    }

    return definitionTerms;
  }
  protected FileEntry updateFileEntry(
      PortletConfig portletConfig, ActionRequest actionRequest, ActionResponse actionResponse)
      throws Exception {

    UploadPortletRequest uploadPortletRequest = PortalUtil.getUploadPortletRequest(actionRequest);

    ThemeDisplay themeDisplay = (ThemeDisplay) actionRequest.getAttribute(WebKeys.THEME_DISPLAY);

    String cmd = ParamUtil.getString(uploadPortletRequest, Constants.CMD);

    long fileEntryId = ParamUtil.getLong(uploadPortletRequest, "fileEntryId");

    long repositoryId = ParamUtil.getLong(uploadPortletRequest, "repositoryId");
    long folderId = ParamUtil.getLong(uploadPortletRequest, "folderId");
    String sourceFileName = uploadPortletRequest.getFileName("file");
    String title = ParamUtil.getString(uploadPortletRequest, "title");
    String description = ParamUtil.getString(uploadPortletRequest, "description");
    String changeLog = ParamUtil.getString(uploadPortletRequest, "changeLog");
    boolean majorVersion = ParamUtil.getBoolean(uploadPortletRequest, "majorVersion");

    if (folderId > 0) {
      Folder folder = _dlAppService.getFolder(folderId);

      if (folder.getGroupId() != themeDisplay.getScopeGroupId()) {
        throw new NoSuchFolderException("{folderId=" + folderId + "}");
      }
    }

    InputStream inputStream = null;

    try {
      String contentType = uploadPortletRequest.getContentType("file");
      long size = uploadPortletRequest.getSize("file");

      if ((cmd.equals(Constants.ADD) || cmd.equals(Constants.ADD_DYNAMIC)) && (size == 0)) {

        contentType = MimeTypesUtil.getContentType(title);
      }

      if (cmd.equals(Constants.ADD) || cmd.equals(Constants.ADD_DYNAMIC) || (size > 0)) {

        String portletName = portletConfig.getPortletName();

        if (portletName.equals(DLPortletKeys.MEDIA_GALLERY_DISPLAY)) {
          PortletDisplay portletDisplay = themeDisplay.getPortletDisplay();

          DLPortletInstanceSettings dlPortletInstanceSettings =
              DLPortletInstanceSettings.getInstance(
                  themeDisplay.getLayout(), portletDisplay.getId());

          String[] mimeTypes = dlPortletInstanceSettings.getMimeTypes();

          if (Arrays.binarySearch(mimeTypes, contentType) < 0) {
            throw new FileMimeTypeException(contentType);
          }
        }
      }

      inputStream = uploadPortletRequest.getFileAsStream("file");

      ServiceContext serviceContext =
          ServiceContextFactory.getInstance(DLFileEntry.class.getName(), uploadPortletRequest);

      FileEntry fileEntry = null;

      if (cmd.equals(Constants.ADD) || cmd.equals(Constants.ADD_DYNAMIC)) {

        // Add file entry

        fileEntry =
            _dlAppService.addFileEntry(
                repositoryId,
                folderId,
                sourceFileName,
                contentType,
                title,
                description,
                changeLog,
                inputStream,
                size,
                serviceContext);

        if (cmd.equals(Constants.ADD_DYNAMIC)) {
          JSONObject jsonObject = JSONFactoryUtil.createJSONObject();

          jsonObject.put("fileEntryId", fileEntry.getFileEntryId());

          JSONPortletResponseUtil.writeJSON(actionRequest, actionResponse, jsonObject);
        }
      } else if (cmd.equals(Constants.UPDATE_AND_CHECKIN)) {

        // Update file entry and checkin

        fileEntry =
            _dlAppService.updateFileEntryAndCheckIn(
                fileEntryId,
                sourceFileName,
                contentType,
                title,
                description,
                changeLog,
                majorVersion,
                inputStream,
                size,
                serviceContext);
      } else {

        // Update file entry

        fileEntry =
            _dlAppService.updateFileEntry(
                fileEntryId,
                sourceFileName,
                contentType,
                title,
                description,
                changeLog,
                majorVersion,
                inputStream,
                size,
                serviceContext);
      }

      return fileEntry;
    } catch (Exception e) {
      UploadException uploadException =
          (UploadException) actionRequest.getAttribute(WebKeys.UPLOAD_EXCEPTION);

      if (uploadException != null) {
        if (uploadException.isExceededLiferayFileItemSizeLimit()) {
          throw new LiferayFileItemException();
        } else if (uploadException.isExceededSizeLimit()) {
          throw new FileSizeException(uploadException.getCause());
        }
      }

      throw e;
    } finally {
      StreamUtil.cleanUp(inputStream);
    }
  }
  private void _doServeResource(
      HttpServletRequest request, HttpServletResponse response, Portlet portlet) throws Exception {

    WindowState windowState = (WindowState) request.getAttribute(WebKeys.WINDOW_STATE);

    PortletMode portletMode =
        PortletModeFactory.getPortletMode(ParamUtil.getString(request, "p_p_mode"));

    PortletPreferencesIds portletPreferencesIds =
        PortletPreferencesFactoryUtil.getPortletPreferencesIds(request, portlet.getPortletId());

    PortletPreferences portletPreferences =
        PortletPreferencesLocalServiceUtil.getStrictPreferences(portletPreferencesIds);

    ServletContext servletContext = (ServletContext) request.getAttribute(WebKeys.CTX);

    InvokerPortlet invokerPortlet = PortletInstanceFactoryUtil.create(portlet, servletContext);

    PortletConfig portletConfig = PortletConfigFactoryUtil.create(portlet, servletContext);
    PortletContext portletContext = portletConfig.getPortletContext();

    ThemeDisplay themeDisplay = (ThemeDisplay) request.getAttribute(WebKeys.THEME_DISPLAY);

    PortletDisplay portletDisplay = themeDisplay.getPortletDisplay();

    Layout layout = (Layout) request.getAttribute(WebKeys.LAYOUT);

    String portletPrimaryKey =
        PortletPermissionUtil.getPrimaryKey(layout.getPlid(), portlet.getPortletId());

    portletDisplay.setControlPanelCategory(portlet.getControlPanelEntryCategory());
    portletDisplay.setId(portlet.getPortletId());
    portletDisplay.setInstanceId(portlet.getInstanceId());
    portletDisplay.setNamespace(PortalUtil.getPortletNamespace(portlet.getPortletId()));
    portletDisplay.setPortletName(portletConfig.getPortletName());
    portletDisplay.setResourcePK(portletPrimaryKey);
    portletDisplay.setRootPortletId(portlet.getRootPortletId());

    WebDAVStorage webDAVStorage = portlet.getWebDAVStorageInstance();

    if (webDAVStorage != null) {
      portletDisplay.setWebDAVEnabled(true);
    } else {
      portletDisplay.setWebDAVEnabled(false);
    }

    ResourceRequestImpl resourceRequestImpl =
        ResourceRequestFactory.create(
            request,
            portlet,
            invokerPortlet,
            portletContext,
            windowState,
            portletMode,
            portletPreferences,
            layout.getPlid());

    long companyId = PortalUtil.getCompanyId(request);

    ResourceResponseImpl resourceResponseImpl =
        ResourceResponseFactory.create(
            resourceRequestImpl, response, portlet.getPortletId(), companyId);

    resourceRequestImpl.defineObjects(portletConfig, resourceResponseImpl);

    try {
      ServiceContext serviceContext = ServiceContextFactory.getInstance(resourceRequestImpl);

      ServiceContextThreadLocal.pushServiceContext(serviceContext);

      invokerPortlet.serveResource(resourceRequestImpl, resourceResponseImpl);

      resourceResponseImpl.transferHeaders(response);
    } finally {
      ServiceContextThreadLocal.popServiceContext();
    }
  }
Example #22
0
  public static PortletURL getAddPortletURL(
      LiferayPortletRequest liferayPortletRequest,
      LiferayPortletResponse liferayPortletResponse,
      long groupId,
      String className,
      long classTypeId,
      long[] allAssetCategoryIds,
      String[] allAssetTagNames,
      String redirect)
      throws Exception {

    ThemeDisplay themeDisplay =
        (ThemeDisplay) liferayPortletRequest.getAttribute(WebKeys.THEME_DISPLAY);

    AssetRendererFactory<?> assetRendererFactory =
        AssetRendererFactoryRegistryUtil.getAssetRendererFactoryByClassName(className);

    if ((assetRendererFactory == null)
        || !assetRendererFactory.hasAddPermission(
            themeDisplay.getPermissionChecker(), groupId, classTypeId)) {

      return null;
    }

    PortletURL addPortletURL =
        assetRendererFactory.getURLAdd(liferayPortletRequest, liferayPortletResponse, classTypeId);

    if (addPortletURL == null) {
      return null;
    }

    if (redirect != null) {
      addPortletURL.setParameter("redirect", redirect);
    }

    String referringPortletResource = ParamUtil.getString(liferayPortletRequest, "portletResource");

    if (Validator.isNotNull(referringPortletResource)) {
      addPortletURL.setParameter("referringPortletResource", referringPortletResource);
    } else {
      PortletDisplay portletDisplay = themeDisplay.getPortletDisplay();

      addPortletURL.setParameter("referringPortletResource", portletDisplay.getId());

      if (allAssetCategoryIds != null) {
        Map<Long, String> assetVocabularyAssetCategoryIds = new HashMap<>();

        for (long assetCategoryId : allAssetCategoryIds) {
          AssetCategory assetCategory =
              AssetCategoryLocalServiceUtil.fetchAssetCategory(assetCategoryId);

          if (assetCategory == null) {
            continue;
          }

          long assetVocabularyId = assetCategory.getVocabularyId();

          if (assetVocabularyAssetCategoryIds.containsKey(assetVocabularyId)) {

            String assetCategoryIds = assetVocabularyAssetCategoryIds.get(assetVocabularyId);

            assetVocabularyAssetCategoryIds.put(
                assetVocabularyId, assetCategoryIds + StringPool.COMMA + assetCategoryId);
          } else {
            assetVocabularyAssetCategoryIds.put(assetVocabularyId, String.valueOf(assetCategoryId));
          }
        }

        for (Map.Entry<Long, String> entry : assetVocabularyAssetCategoryIds.entrySet()) {

          long assetVocabularyId = entry.getKey();
          String assetCategoryIds = entry.getValue();

          addPortletURL.setParameter("assetCategoryIds_" + assetVocabularyId, assetCategoryIds);
        }
      }

      if (allAssetTagNames != null) {
        addPortletURL.setParameter("assetTagNames", StringUtil.merge(allAssetTagNames));
      }
    }

    addPortletURL.setPortletMode(PortletMode.VIEW);
    addPortletURL.setWindowState(LiferayWindowState.POP_UP);

    return addPortletURL;
  }
  protected Portlet processPortletRequest(
      HttpServletRequest request, HttpServletResponse response, String lifecycle) throws Exception {

    HttpSession session = request.getSession();

    long companyId = PortalUtil.getCompanyId(request);
    User user = PortalUtil.getUser(request);
    Layout layout = (Layout) request.getAttribute(WebKeys.LAYOUT);

    String portletId = ParamUtil.getString(request, "p_p_id");

    if (Validator.isNull(portletId)) {
      return null;
    }

    Portlet portlet = PortletLocalServiceUtil.getPortletById(companyId, portletId);

    if (portlet == null) {
      return null;
    }

    ThemeDisplay themeDisplay = (ThemeDisplay) request.getAttribute(WebKeys.THEME_DISPLAY);

    themeDisplay.setScopeGroupId(PortalUtil.getScopeGroupId(request, portletId));

    ServletContext servletContext = (ServletContext) request.getAttribute(WebKeys.CTX);

    InvokerPortlet invokerPortlet = PortletInstanceFactoryUtil.create(portlet, servletContext);

    if (user != null) {
      InvokerPortletImpl.clearResponse(
          session, layout.getPrimaryKey(), portletId, LanguageUtil.getLanguageId(request));
    }

    PortletConfig portletConfig = PortletConfigFactoryUtil.create(portlet, servletContext);
    PortletContext portletContext = portletConfig.getPortletContext();

    WindowState windowState =
        WindowStateFactory.getWindowState(ParamUtil.getString(request, "p_p_state"));

    if (layout.isTypeControlPanel()
        && ((windowState == null)
            || windowState.equals(WindowState.NORMAL)
            || (Validator.isNull(windowState.toString())))) {

      windowState = WindowState.MAXIMIZED;
    }

    PortletMode portletMode =
        PortletModeFactory.getPortletMode(ParamUtil.getString(request, "p_p_mode"));

    PortletPreferencesIds portletPreferencesIds =
        PortletPreferencesFactoryUtil.getPortletPreferencesIds(request, portletId);

    PortletPreferences portletPreferences =
        PortletPreferencesLocalServiceUtil.getPreferences(portletPreferencesIds);

    processPublicRenderParameters(request, layout, portlet);

    if (lifecycle.equals(PortletRequest.ACTION_PHASE)) {
      String contentType = request.getHeader(HttpHeaders.CONTENT_TYPE);

      if (_log.isDebugEnabled()) {
        _log.debug("Content type " + contentType);
      }

      UploadServletRequest uploadRequest = null;

      try {
        if ((contentType != null) && (contentType.startsWith(ContentTypes.MULTIPART_FORM_DATA))) {

          PortletConfigImpl invokerPortletConfigImpl =
              (PortletConfigImpl) invokerPortlet.getPortletConfig();

          if (invokerPortlet.isStrutsPortlet()
              || ((invokerPortletConfigImpl != null) && (!invokerPortletConfigImpl.isWARFile()))) {

            uploadRequest = new UploadServletRequestImpl(request);

            request = uploadRequest;
          }
        }

        if (PropsValues.AUTH_TOKEN_CHECK_ENABLED && invokerPortlet.isCheckAuthToken()) {

          AuthTokenUtil.check(request);
        }

        ActionRequestImpl actionRequestImpl =
            ActionRequestFactory.create(
                request,
                portlet,
                invokerPortlet,
                portletContext,
                windowState,
                portletMode,
                portletPreferences,
                layout.getPlid());

        ActionResponseImpl actionResponseImpl =
            ActionResponseFactory.create(
                actionRequestImpl, response, portletId, user, layout, windowState, portletMode);

        actionRequestImpl.defineObjects(portletConfig, actionResponseImpl);

        ServiceContext serviceContext = ServiceContextFactory.getInstance(actionRequestImpl);

        ServiceContextThreadLocal.pushServiceContext(serviceContext);

        invokerPortlet.processAction(actionRequestImpl, actionResponseImpl);

        actionResponseImpl.transferHeaders(response);

        RenderParametersPool.put(
            request, layout.getPlid(), portletId, actionResponseImpl.getRenderParameterMap());

        List<LayoutTypePortlet> layoutTypePortlets = null;

        if (!actionResponseImpl.getEvents().isEmpty()) {
          if (PropsValues.PORTLET_EVENT_DISTRIBUTION_LAYOUT_SET) {
            layoutTypePortlets =
                getLayoutTypePortlets(layout.getGroupId(), layout.isPrivateLayout());
          } else {
            if (layout.isTypePortlet()) {
              LayoutTypePortlet layoutTypePortlet = (LayoutTypePortlet) layout.getLayoutType();

              layoutTypePortlets = new ArrayList<LayoutTypePortlet>();

              layoutTypePortlets.add(layoutTypePortlet);
            }
          }

          processEvents(actionRequestImpl, actionResponseImpl, layoutTypePortlets);

          actionRequestImpl.defineObjects(portletConfig, actionResponseImpl);
        }
      } finally {
        if (uploadRequest != null) {
          uploadRequest.cleanUp();
        }

        ServiceContextThreadLocal.popServiceContext();
      }
    } else if (lifecycle.equals(PortletRequest.RENDER_PHASE)
        || lifecycle.equals(PortletRequest.RESOURCE_PHASE)) {

      PortalUtil.updateWindowState(portletId, user, layout, windowState, request);

      PortalUtil.updatePortletMode(portletId, user, layout, portletMode, request);
    }

    if (lifecycle.equals(PortletRequest.RESOURCE_PHASE)) {
      PortletDisplay portletDisplay = themeDisplay.getPortletDisplay();

      String portletPrimaryKey = PortletPermissionUtil.getPrimaryKey(layout.getPlid(), portletId);

      portletDisplay.setId(portletId);
      portletDisplay.setRootPortletId(portlet.getRootPortletId());
      portletDisplay.setInstanceId(portlet.getInstanceId());
      portletDisplay.setResourcePK(portletPrimaryKey);
      portletDisplay.setPortletName(portletConfig.getPortletName());
      portletDisplay.setNamespace(PortalUtil.getPortletNamespace(portletId));

      ResourceRequestImpl resourceRequestImpl =
          ResourceRequestFactory.create(
              request,
              portlet,
              invokerPortlet,
              portletContext,
              windowState,
              portletMode,
              portletPreferences,
              layout.getPlid());

      ResourceResponseImpl resourceResponseImpl =
          ResourceResponseFactory.create(resourceRequestImpl, response, portletId, companyId);

      resourceRequestImpl.defineObjects(portletConfig, resourceResponseImpl);

      try {
        ServiceContext serviceContext = ServiceContextFactory.getInstance(resourceRequestImpl);

        ServiceContextThreadLocal.pushServiceContext(serviceContext);

        invokerPortlet.serveResource(resourceRequestImpl, resourceResponseImpl);
      } finally {
        ServiceContextThreadLocal.popServiceContext();
      }
    }

    return portlet;
  }