@Override
  protected void formInnerEvent(UserRequest ureq, FormItem source, FormEvent event) {
    if (source instanceof MultipleSelectionElement) {
      MultipleSelectionElement publishCheckbox = (MultipleSelectionElement) source;
      if (publishCheckbox.isEnabled()) {
        boolean enabled = publishCheckbox.isAtLeastSelected(1);
        String propName = (String) publishCheckbox.getUserObject();

        // load and update config
        HomePageConfig conf = hpcm.loadConfigFor(identityToModify.getName());
        conf.setEnabled(propName, enabled);
        hpcm.saveConfigTo(identityToModify.getName(), conf);
        updatePreview(ureq, conf);
      }
    }
    super.formInnerEvent(ureq, source, event);
  }
  @Override
  protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) {
    boolean firstGroup = true;

    List<UserPropertyHandler> homepagePropertyHanders =
        userManager.getUserPropertyHandlersFor(
            HomePageConfig.class.getCanonicalName(), isAdministrativeUser);

    Map<String, FormLayoutContainer> groupContainerMap = new HashMap<>();
    HomePageConfig conf = hpcm.loadConfigFor(identityToModify.getName());
    for (UserPropertyHandler userPropertyHandler : userPropertyHandlers) {
      if (userPropertyHandler == null) {
        continue;
      }

      // add spacer if necessary (i.e. when group name changes)
      String group = userPropertyHandler.getGroup();
      FormLayoutContainer groupContainer;
      if (groupContainerMap.containsKey(group)) {
        groupContainer = groupContainerMap.get(group);
      } else {
        groupContainer =
            FormLayoutContainer.createDefaultFormLayout("group." + group, getTranslator());
        groupContainer.setFormTitle(translate("form.group." + group));
        formLayout.add(groupContainer);
        groupContainerMap.put(group, groupContainer);
        if (firstGroup) {
          groupContainer.setFormContextHelp("Configuration");
          firstGroup = false;
        }
      }

      if (homepagePropertyHanders.contains(userPropertyHandler)) {
        // add checkbox to container if configured for homepage usage identifier
        String checkboxName = userPropertyHandler.getName();
        MultipleSelectionElement publishCheckbox =
            uifactory.addCheckboxesHorizontal(
                checkboxName,
                userPropertyHandler.i18nFormElementLabelKey(),
                groupContainer,
                checkKeys,
                checkValues);

        boolean isEnabled = conf.isEnabled(userPropertyHandler.getName());
        publishCheckbox.select(checkKeys[0], isEnabled);
        publishCheckbox.setUserObject(userPropertyHandler.getName());

        // Mandatory homepage properties can not be changed by user
        if (userManager.isMandatoryUserProperty(
            HomePageConfig.class.getCanonicalName(), userPropertyHandler)) {
          publishCheckbox.select(checkKeys[0], true);
          publishCheckbox.setEnabled(false);
        } else {
          publishCheckbox.addActionListener(FormEvent.ONCHANGE);
        }
      }
    }

    String previewPage = velocity_root + "/homepage_preview.html";
    previewContainer =
        FormLayoutContainer.createCustomFormLayout("preview", getTranslator(), previewPage);
    previewContainer.setFormTitle(translate("tab.preview"));
    previewContainer.setRootForm(mainForm);
    formLayout.add(previewContainer);
    updatePreview(ureq);
  }
 protected void updatePreview(UserRequest ureq) {
   HomePageConfig conf = hpcm.loadConfigFor(identityToModify.getName());
   updatePreview(ureq, conf);
 }