CCM NG: Sites Admin UI
git-svn-id: https://svn.libreccm.org/ccm/ccm_ng@5098 8810af33-2d31-482b-a856-94f89814c4df
parent
fd7cda38ef
commit
7476e7f365
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Reference in New Issue