CCM NG: Sites Admin UI

git-svn-id: https://svn.libreccm.org/ccm/ccm_ng@5098 8810af33-2d31-482b-a856-94f89814c4df

Former-commit-id: 7476e7f365
pull/2/head
jensp 2017-11-02 06:13:20 +00:00
parent 23c922aa1f
commit 9410daebbb
3 changed files with 68 additions and 39 deletions

View File

@ -20,11 +20,9 @@ package com.arsdigita.ui.admin.sites;
import org.libreccm.sites.Site;
import org.libreccm.sites.SiteRepository;
import org.libreccm.web.CcmApplication;
import java.io.Serializable;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
import javax.enterprise.context.RequestScoped;

View File

@ -34,7 +34,6 @@ import com.arsdigita.bebop.form.CheckboxGroup;
import com.arsdigita.bebop.form.Option;
import com.arsdigita.bebop.form.SingleSelect;
import com.arsdigita.bebop.form.TextField;
import com.arsdigita.bebop.parameters.NotEmptyValidationListener;
import com.arsdigita.globalization.GlobalizedMessage;
import org.libreccm.cdi.utils.CdiUtil;
@ -59,6 +58,8 @@ public class SitesForm extends Form {
private static final String DEFAULT_SITE = "defaultSite";
private static final String THEME_SELECT = "themeSelect";
private static final String IS_DEFAULT = "isDefault";
private final SitesTab sitesTab;
private final ParameterSingleSelectionModel<String> selectedSiteId;
@ -104,7 +105,7 @@ public class SitesForm extends Form {
defaultSiteCheckbox = new CheckboxGroup(DEFAULT_SITE);
defaultSiteCheckbox
.addOption(new Option("isDefault",
.addOption(new Option(IS_DEFAULT,
new Label(new GlobalizedMessage(
"ui.admin.sites.is_default_site",
ADMIN_BUNDLE))));
@ -152,9 +153,30 @@ public class SitesForm extends Form {
if (saveCancelSection.getSaveButton().isSelected(state)) {
final FormData data = event.getFormData();
final String domainOfSite = data.getString(DOMAIN_OF_SITE);
final String selectedSiteIdStr = selectedSiteId
.getSelectedKey(state);
final boolean domainEditedOrNewSite;
if (selectedSiteIdStr == null || selectedSiteIdStr.isEmpty()) {
domainEditedOrNewSite = true;
} else {
final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
final SiteRepository siteRepo = cdiUtil
.findBean(SiteRepository.class);
final Site site = siteRepo
.findById(Long.parseLong(selectedSiteIdStr))
.orElseThrow(() -> new IllegalArgumentException(String
.format("No Site with ID %s in in the database.",
selectedSiteIdStr)));
domainEditedOrNewSite = !site
.getDomainOfSite()
.equals(domainOfSite);
}
if (domainEditedOrNewSite) {
if (domainOfSite == null
|| domainOfSite.isEmpty()
|| domainOfSite.matches("\\s*")) {
@ -178,6 +200,7 @@ public class SitesForm extends Form {
}
}
}
}
}
@ -205,8 +228,10 @@ public class SitesForm extends Form {
selectedSiteIdStr)));
domainOfSiteField.setValue(state, site.getDomainOfSite());
defaultSiteCheckbox
.setValue(state, new Boolean[]{site.isDefaultSite()});
if (site.isDefaultSite()) {
defaultSiteCheckbox.setValue(state,
new String[]{IS_DEFAULT});
}
defaultThemeSelect.setValue(state, site.getDefaultTheme());
}
}
@ -226,7 +251,7 @@ public class SitesForm extends Form {
final FormData data = event.getFormData();
final String domainOfSite = data.getString(DOMAIN_OF_SITE);
final Boolean[] defaultSite = ((Boolean[]) data
final String[] defaultSite = ((String[]) data
.get(DEFAULT_SITE));
final String defaultTheme = data.getString(THEME_SELECT);
@ -240,13 +265,6 @@ public class SitesForm extends Form {
final Site site;
if (selectedSiteIdStr == null || selectedSiteIdStr.isEmpty()) {
site = new Site();
site.setDomainOfSite(domainOfSite);
if (defaultSite == null || defaultSite.length == 0) {
site.setDefaultSite(false);
} else {
site.setDefaultSite(defaultSite[0]);
}
site.setDefaultTheme(defaultTheme);
} else {
site = siteRepo
.findById(Long.parseLong(selectedSiteIdStr))
@ -254,9 +272,17 @@ public class SitesForm extends Form {
.format("No Site with ID %s in in the database.",
selectedSiteIdStr)));
}
site.setDomainOfSite(domainOfSite);
if (defaultSite == null || defaultSite.length == 0) {
site.setDefaultSite(false);
} else {
site.setDefaultSite(defaultSite[0].equals(IS_DEFAULT));
}
site.setDefaultTheme(defaultTheme);
siteRepo.save(site);
}
selectedSiteId.clearSelection(state);
sitesTab.hideSiteForm(state);
}

View File

@ -71,23 +71,28 @@ public class SitesTable extends Table {
columnModel.add(new TableColumn(
COL_SITE_DOMAIN,
new Label(new GlobalizedMessage(
"ui.admin.sites.table.columns.domain.header"))));
"ui.admin.sites.table.columns.domain.header",
ADMIN_BUNDLE))));
columnModel.add(new TableColumn(
COL_IS_DEFAULT_SITE,
new Label(new GlobalizedMessage(
"ui.admin.sites.table.columns.default_site.header"))));
"ui.admin.sites.table.columns.default_site.header",
ADMIN_BUNDLE))));
columnModel.add(new TableColumn(
COL_DEFAULT_THEME,
new Label(new GlobalizedMessage(
"ui.admin.sites.table.columns.default_theme.header"))));
"ui.admin.sites.table.columns.default_theme.header",
ADMIN_BUNDLE))));
columnModel.add(new TableColumn(
COL_APPLICATIONS,
new Label(new GlobalizedMessage(
"ui.admin.sites.table.columns.applications.header"))));
"ui.admin.sites.table.columns.applications.header",
ADMIN_BUNDLE))));
columnModel.add(new TableColumn(
COL_APPLICATIONS,
COL_REMOVE,
new Label(new GlobalizedMessage(
"ui.admin.sites.table.columns.delete.header"))));
"ui.admin.sites.table.columns.delete.header",
ADMIN_BUNDLE))));
columnModel
.get(COL_SITE_DOMAIN)