Example usage for com.liferay.portal.kernel.model LayoutConstants CUSTOMIZABLE_LAYOUT

List of usage examples for com.liferay.portal.kernel.model LayoutConstants CUSTOMIZABLE_LAYOUT

Introduction

In this page you can find the example usage for com.liferay.portal.kernel.model LayoutConstants CUSTOMIZABLE_LAYOUT.

Prototype

String CUSTOMIZABLE_LAYOUT

To view the source code for com.liferay.portal.kernel.model LayoutConstants CUSTOMIZABLE_LAYOUT.

Click Source Link

Usage

From source file:com.liferay.layout.admin.web.internal.portlet.action.EditLayoutMVCActionCommand.java

License:Open Source License

@Override
protected void doProcessAction(ActionRequest actionRequest, ActionResponse actionResponse) throws Exception {

    UploadPortletRequest uploadPortletRequest = _portal.getUploadPortletRequest(actionRequest);

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

    long groupId = ParamUtil.getLong(actionRequest, "groupId");
    long liveGroupId = ParamUtil.getLong(actionRequest, "liveGroupId");
    long stagingGroupId = ParamUtil.getLong(actionRequest, "stagingGroupId");
    boolean privateLayout = ParamUtil.getBoolean(actionRequest, "privateLayout");
    long layoutId = ParamUtil.getLong(actionRequest, "layoutId");
    Map<Locale, String> nameMap = LocalizationUtil.getLocalizationMap(actionRequest, "name");
    Map<Locale, String> titleMap = LocalizationUtil.getLocalizationMap(actionRequest, "title");
    Map<Locale, String> descriptionMap = LocalizationUtil.getLocalizationMap(actionRequest, "description");
    Map<Locale, String> keywordsMap = LocalizationUtil.getLocalizationMap(actionRequest, "keywords");
    Map<Locale, String> robotsMap = LocalizationUtil.getLocalizationMap(actionRequest, "robots");
    String type = ParamUtil.getString(uploadPortletRequest, "type");
    boolean hidden = ParamUtil.getBoolean(uploadPortletRequest, "hidden");
    Map<Locale, String> friendlyURLMap = LocalizationUtil.getLocalizationMap(actionRequest, "friendlyURL");
    boolean deleteLogo = ParamUtil.getBoolean(actionRequest, "deleteLogo");

    byte[] iconBytes = null;

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

    if (fileEntryId > 0) {
        FileEntry fileEntry = _dlAppLocalService.getFileEntry(fileEntryId);

        iconBytes = FileUtil.getBytes(fileEntry.getContentStream());
    }/*from   w w w .  ja  v  a2 s  . co  m*/

    ServiceContext serviceContext = ServiceContextFactory.getInstance(Layout.class.getName(), actionRequest);

    Layout layout = _layoutLocalService.getLayout(groupId, privateLayout, layoutId);

    String currentType = layout.getType();

    layout = _layoutService.updateLayout(groupId, privateLayout, layoutId, layout.getParentLayoutId(), nameMap,
            titleMap, descriptionMap, keywordsMap, robotsMap, type, hidden, friendlyURLMap, !deleteLogo,
            iconBytes, serviceContext);

    themeDisplay.clearLayoutFriendlyURL(layout);

    UnicodeProperties layoutTypeSettingsProperties = layout.getTypeSettingsProperties();

    UnicodeProperties formTypeSettingsProperties = PropertiesParamUtil.getProperties(actionRequest,
            "TypeSettingsProperties--");

    String linkToLayoutUuid = ParamUtil.getString(actionRequest, "linkToLayoutUuid");

    if (Validator.isNotNull(linkToLayoutUuid)) {
        Layout linkToLayout = _layoutLocalService.getLayoutByUuidAndGroupId(linkToLayoutUuid, groupId,
                privateLayout);

        formTypeSettingsProperties.put("linkToLayoutId", String.valueOf(linkToLayout.getLayoutId()));
    }

    LayoutTypePortlet layoutTypePortlet = (LayoutTypePortlet) layout.getLayoutType();

    if (type.equals(LayoutConstants.TYPE_PORTLET)) {
        String layoutTemplateId = ParamUtil.getString(uploadPortletRequest, "layoutTemplateId",
                PropsValues.DEFAULT_LAYOUT_TEMPLATE_ID);

        layoutTypePortlet.setLayoutTemplateId(themeDisplay.getUserId(), layoutTemplateId);

        layoutTypeSettingsProperties.putAll(formTypeSettingsProperties);

        boolean layoutCustomizable = GetterUtil
                .getBoolean(layoutTypeSettingsProperties.get(LayoutConstants.CUSTOMIZABLE_LAYOUT));

        if (!layoutCustomizable) {
            layoutTypePortlet.removeCustomization(layoutTypeSettingsProperties);
        }

        layout = _layoutService.updateLayout(groupId, privateLayout, layoutId,
                layoutTypeSettingsProperties.toString());

        if (!currentType.equals(LayoutConstants.TYPE_PORTLET)) {
            _portletPreferencesLocalService.deletePortletPreferences(0, PortletKeys.PREFS_OWNER_TYPE_LAYOUT,
                    layout.getPlid());
        }
    } else {
        layoutTypeSettingsProperties.putAll(formTypeSettingsProperties);

        layoutTypeSettingsProperties.putAll(layout.getTypeSettingsProperties());

        layout = _layoutService.updateLayout(groupId, privateLayout, layoutId,
                layoutTypeSettingsProperties.toString());
    }

    HttpServletResponse response = _portal.getHttpServletResponse(actionResponse);

    EventsProcessorUtil.process(PropsKeys.LAYOUT_CONFIGURATION_ACTION_UPDATE,
            layoutTypePortlet.getConfigurationActionUpdate(), uploadPortletRequest, response);

    _actionUtil.updateLookAndFeel(actionRequest, themeDisplay.getCompanyId(), liveGroupId, stagingGroupId,
            privateLayout, layout.getLayoutId(), layout.getTypeSettingsProperties());

    String redirect = ParamUtil.getString(actionRequest, "redirect");

    if (Validator.isNull(redirect)) {
        redirect = _portal.getLayoutFullURL(layout, themeDisplay);
    }

    String portletResource = ParamUtil.getString(actionRequest, "portletResource");

    MultiSessionMessages.add(actionRequest, portletResource + "layoutUpdated", layout);

    actionRequest.setAttribute(WebKeys.REDIRECT, redirect);
}