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
parent
23c922aa1f
commit
9410daebbb
|
|
@ -20,11 +20,9 @@ package com.arsdigita.ui.admin.sites;
|
||||||
|
|
||||||
import org.libreccm.sites.Site;
|
import org.libreccm.sites.Site;
|
||||||
import org.libreccm.sites.SiteRepository;
|
import org.libreccm.sites.SiteRepository;
|
||||||
import org.libreccm.web.CcmApplication;
|
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Objects;
|
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import javax.enterprise.context.RequestScoped;
|
import javax.enterprise.context.RequestScoped;
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,6 @@ import com.arsdigita.bebop.form.CheckboxGroup;
|
||||||
import com.arsdigita.bebop.form.Option;
|
import com.arsdigita.bebop.form.Option;
|
||||||
import com.arsdigita.bebop.form.SingleSelect;
|
import com.arsdigita.bebop.form.SingleSelect;
|
||||||
import com.arsdigita.bebop.form.TextField;
|
import com.arsdigita.bebop.form.TextField;
|
||||||
import com.arsdigita.bebop.parameters.NotEmptyValidationListener;
|
|
||||||
import com.arsdigita.globalization.GlobalizedMessage;
|
import com.arsdigita.globalization.GlobalizedMessage;
|
||||||
|
|
||||||
import org.libreccm.cdi.utils.CdiUtil;
|
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 DEFAULT_SITE = "defaultSite";
|
||||||
private static final String THEME_SELECT = "themeSelect";
|
private static final String THEME_SELECT = "themeSelect";
|
||||||
|
|
||||||
|
private static final String IS_DEFAULT = "isDefault";
|
||||||
|
|
||||||
private final SitesTab sitesTab;
|
private final SitesTab sitesTab;
|
||||||
private final ParameterSingleSelectionModel<String> selectedSiteId;
|
private final ParameterSingleSelectionModel<String> selectedSiteId;
|
||||||
|
|
||||||
|
|
@ -104,7 +105,7 @@ public class SitesForm extends Form {
|
||||||
|
|
||||||
defaultSiteCheckbox = new CheckboxGroup(DEFAULT_SITE);
|
defaultSiteCheckbox = new CheckboxGroup(DEFAULT_SITE);
|
||||||
defaultSiteCheckbox
|
defaultSiteCheckbox
|
||||||
.addOption(new Option("isDefault",
|
.addOption(new Option(IS_DEFAULT,
|
||||||
new Label(new GlobalizedMessage(
|
new Label(new GlobalizedMessage(
|
||||||
"ui.admin.sites.is_default_site",
|
"ui.admin.sites.is_default_site",
|
||||||
ADMIN_BUNDLE))));
|
ADMIN_BUNDLE))));
|
||||||
|
|
@ -152,29 +153,51 @@ public class SitesForm extends Form {
|
||||||
if (saveCancelSection.getSaveButton().isSelected(state)) {
|
if (saveCancelSection.getSaveButton().isSelected(state)) {
|
||||||
|
|
||||||
final FormData data = event.getFormData();
|
final FormData data = event.getFormData();
|
||||||
|
|
||||||
final String domainOfSite = data.getString(DOMAIN_OF_SITE);
|
final String domainOfSite = data.getString(DOMAIN_OF_SITE);
|
||||||
|
|
||||||
if (domainOfSite == null
|
final String selectedSiteIdStr = selectedSiteId
|
||||||
|| domainOfSite.isEmpty()
|
.getSelectedKey(state);
|
||||||
|| domainOfSite.matches("\\s*")) {
|
final boolean domainEditedOrNewSite;
|
||||||
|
|
||||||
data.addError(
|
if (selectedSiteIdStr == null || selectedSiteIdStr.isEmpty()) {
|
||||||
DOMAIN_OF_SITE,
|
domainEditedOrNewSite = true;
|
||||||
new GlobalizedMessage(
|
} else {
|
||||||
"ui.admin.sites.domain_of_site.error.empty",
|
final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
|
||||||
ADMIN_BUNDLE));
|
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);
|
||||||
}
|
}
|
||||||
|
|
||||||
final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
|
if (domainEditedOrNewSite) {
|
||||||
final SitesController controller = cdiUtil
|
if (domainOfSite == null
|
||||||
.findBean(SitesController.class);
|
|| domainOfSite.isEmpty()
|
||||||
if (!controller.isUnique(domainOfSite)) {
|
|| domainOfSite.matches("\\s*")) {
|
||||||
data.addError(
|
|
||||||
DOMAIN_OF_SITE,
|
data.addError(
|
||||||
new GlobalizedMessage(
|
DOMAIN_OF_SITE,
|
||||||
"ui.admin.sites.domain_of_site.error.not_unique",
|
new GlobalizedMessage(
|
||||||
ADMIN_BUNDLE));
|
"ui.admin.sites.domain_of_site.error.empty",
|
||||||
|
ADMIN_BUNDLE));
|
||||||
|
}
|
||||||
|
|
||||||
|
final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
|
||||||
|
final SitesController controller = cdiUtil
|
||||||
|
.findBean(SitesController.class);
|
||||||
|
if (!controller.isUnique(domainOfSite)) {
|
||||||
|
data.addError(
|
||||||
|
DOMAIN_OF_SITE,
|
||||||
|
new GlobalizedMessage(
|
||||||
|
"ui.admin.sites.domain_of_site.error.not_unique",
|
||||||
|
ADMIN_BUNDLE));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -205,8 +228,10 @@ public class SitesForm extends Form {
|
||||||
selectedSiteIdStr)));
|
selectedSiteIdStr)));
|
||||||
|
|
||||||
domainOfSiteField.setValue(state, site.getDomainOfSite());
|
domainOfSiteField.setValue(state, site.getDomainOfSite());
|
||||||
defaultSiteCheckbox
|
if (site.isDefaultSite()) {
|
||||||
.setValue(state, new Boolean[]{site.isDefaultSite()});
|
defaultSiteCheckbox.setValue(state,
|
||||||
|
new String[]{IS_DEFAULT});
|
||||||
|
}
|
||||||
defaultThemeSelect.setValue(state, site.getDefaultTheme());
|
defaultThemeSelect.setValue(state, site.getDefaultTheme());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -226,8 +251,8 @@ public class SitesForm extends Form {
|
||||||
final FormData data = event.getFormData();
|
final FormData data = event.getFormData();
|
||||||
|
|
||||||
final String domainOfSite = data.getString(DOMAIN_OF_SITE);
|
final String domainOfSite = data.getString(DOMAIN_OF_SITE);
|
||||||
final Boolean[] defaultSite = ((Boolean[]) data
|
final String[] defaultSite = ((String[]) data
|
||||||
.get(DEFAULT_SITE));
|
.get(DEFAULT_SITE));
|
||||||
final String defaultTheme = data.getString(THEME_SELECT);
|
final String defaultTheme = data.getString(THEME_SELECT);
|
||||||
|
|
||||||
final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
|
final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
|
||||||
|
|
@ -240,13 +265,6 @@ public class SitesForm extends Form {
|
||||||
final Site site;
|
final Site site;
|
||||||
if (selectedSiteIdStr == null || selectedSiteIdStr.isEmpty()) {
|
if (selectedSiteIdStr == null || selectedSiteIdStr.isEmpty()) {
|
||||||
site = new Site();
|
site = new Site();
|
||||||
site.setDomainOfSite(domainOfSite);
|
|
||||||
if (defaultSite == null || defaultSite.length == 0) {
|
|
||||||
site.setDefaultSite(false);
|
|
||||||
} else {
|
|
||||||
site.setDefaultSite(defaultSite[0]);
|
|
||||||
}
|
|
||||||
site.setDefaultTheme(defaultTheme);
|
|
||||||
} else {
|
} else {
|
||||||
site = siteRepo
|
site = siteRepo
|
||||||
.findById(Long.parseLong(selectedSiteIdStr))
|
.findById(Long.parseLong(selectedSiteIdStr))
|
||||||
|
|
@ -254,9 +272,17 @@ public class SitesForm extends Form {
|
||||||
.format("No Site with ID %s in in the database.",
|
.format("No Site with ID %s in in the database.",
|
||||||
selectedSiteIdStr)));
|
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);
|
siteRepo.save(site);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
selectedSiteId.clearSelection(state);
|
||||||
sitesTab.hideSiteForm(state);
|
sitesTab.hideSiteForm(state);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -71,23 +71,28 @@ public class SitesTable extends Table {
|
||||||
columnModel.add(new TableColumn(
|
columnModel.add(new TableColumn(
|
||||||
COL_SITE_DOMAIN,
|
COL_SITE_DOMAIN,
|
||||||
new Label(new GlobalizedMessage(
|
new Label(new GlobalizedMessage(
|
||||||
"ui.admin.sites.table.columns.domain.header"))));
|
"ui.admin.sites.table.columns.domain.header",
|
||||||
|
ADMIN_BUNDLE))));
|
||||||
columnModel.add(new TableColumn(
|
columnModel.add(new TableColumn(
|
||||||
COL_IS_DEFAULT_SITE,
|
COL_IS_DEFAULT_SITE,
|
||||||
new Label(new GlobalizedMessage(
|
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(
|
columnModel.add(new TableColumn(
|
||||||
COL_DEFAULT_THEME,
|
COL_DEFAULT_THEME,
|
||||||
new Label(new GlobalizedMessage(
|
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(
|
columnModel.add(new TableColumn(
|
||||||
COL_APPLICATIONS,
|
COL_APPLICATIONS,
|
||||||
new Label(new GlobalizedMessage(
|
new Label(new GlobalizedMessage(
|
||||||
"ui.admin.sites.table.columns.applications.header"))));
|
"ui.admin.sites.table.columns.applications.header",
|
||||||
|
ADMIN_BUNDLE))));
|
||||||
columnModel.add(new TableColumn(
|
columnModel.add(new TableColumn(
|
||||||
COL_APPLICATIONS,
|
COL_REMOVE,
|
||||||
new Label(new GlobalizedMessage(
|
new Label(new GlobalizedMessage(
|
||||||
"ui.admin.sites.table.columns.delete.header"))));
|
"ui.admin.sites.table.columns.delete.header",
|
||||||
|
ADMIN_BUNDLE))));
|
||||||
|
|
||||||
columnModel
|
columnModel
|
||||||
.get(COL_SITE_DOMAIN)
|
.get(COL_SITE_DOMAIN)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue