CCM NG: Site Admin UI

git-svn-id: https://svn.libreccm.org/ccm/ccm_ng@5097 8810af33-2d31-482b-a856-94f89814c4df
jensp 2017-11-01 18:53:47 +00:00
parent 47ee7c1817
commit fd7cda38ef
9 changed files with 60 additions and 12 deletions

View File

@ -65,7 +65,7 @@ class SitesController implements Serializable {
@Transactional(Transactional.TxType.REQUIRED) @Transactional(Transactional.TxType.REQUIRED)
protected boolean isUnique(final String domainOfSite) { protected boolean isUnique(final String domainOfSite) {
return sitesRepo.findByDomain(domainOfSite).isPresent(); return !sitesRepo.findByDomain(domainOfSite).isPresent();
} }
@Transactional(Transactional.TxType.REQUIRED) @Transactional(Transactional.TxType.REQUIRED)

View File

@ -100,14 +100,12 @@ public class SitesForm extends Form {
domainOfSiteField.setLabel(new GlobalizedMessage( domainOfSiteField.setLabel(new GlobalizedMessage(
"ui.admin.sites.domain_of_site", "ui.admin.sites.domain_of_site",
ADMIN_BUNDLE)); ADMIN_BUNDLE));
domainOfSiteField
.addValidationListener(new NotEmptyValidationListener());
super.add(domainOfSiteField); super.add(domainOfSiteField);
defaultSiteCheckbox = new CheckboxGroup(DEFAULT_SITE); defaultSiteCheckbox = new CheckboxGroup(DEFAULT_SITE);
defaultSiteCheckbox.addOption(new Option("isDefault", defaultSiteCheckbox
new Label( .addOption(new Option("isDefault",
new GlobalizedMessage( new Label(new GlobalizedMessage(
"ui.admin.sites.is_default_site", "ui.admin.sites.is_default_site",
ADMIN_BUNDLE)))); ADMIN_BUNDLE))));
super.add(defaultSiteCheckbox); super.add(defaultSiteCheckbox);
@ -157,6 +155,17 @@ public class SitesForm extends Form {
final String domainOfSite = data.getString(DOMAIN_OF_SITE); final String domainOfSite = data.getString(DOMAIN_OF_SITE);
if (domainOfSite == null
|| domainOfSite.isEmpty()
|| domainOfSite.matches("\\s*")) {
data.addError(
DOMAIN_OF_SITE,
new GlobalizedMessage(
"ui.admin.sites.domain_of_site.error.empty",
ADMIN_BUNDLE));
}
final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
final SitesController controller = cdiUtil final SitesController controller = cdiUtil
.findBean(SitesController.class); .findBean(SitesController.class);
@ -164,7 +173,7 @@ public class SitesForm extends Form {
data.addError( data.addError(
DOMAIN_OF_SITE, DOMAIN_OF_SITE,
new GlobalizedMessage( new GlobalizedMessage(
"ui.admin.sites.domain_of_site.error.not:unique", "ui.admin.sites.domain_of_site.error.not_unique",
ADMIN_BUNDLE)); ADMIN_BUNDLE));
} }
} }
@ -232,7 +241,11 @@ public class SitesForm extends Form {
if (selectedSiteIdStr == null || selectedSiteIdStr.isEmpty()) { if (selectedSiteIdStr == null || selectedSiteIdStr.isEmpty()) {
site = new Site(); site = new Site();
site.setDomainOfSite(domainOfSite); site.setDomainOfSite(domainOfSite);
if (defaultSite == null || defaultSite.length == 0) {
site.setDefaultSite(false);
} else {
site.setDefaultSite(defaultSite[0]); site.setDefaultSite(defaultSite[0]);
}
site.setDefaultTheme(defaultTheme); site.setDefaultTheme(defaultTheme);
} else { } else {
site = siteRepo site = siteRepo

View File

@ -36,6 +36,7 @@ import static com.arsdigita.ui.admin.AdminUiConstants.*;
public class SitesTab extends LayoutPanel { public class SitesTab extends LayoutPanel {
private final ParameterSingleSelectionModel<String> selectedSiteId; private final ParameterSingleSelectionModel<String> selectedSiteId;
private final ActionLink addNewSite;
private final SitesTable sitesTable; private final SitesTable sitesTable;
private final SitesForm sitesForm; private final SitesForm sitesForm;
@ -52,7 +53,7 @@ public class SitesTab extends LayoutPanel {
sitesTable = new SitesTable(this, selectedSiteId); sitesTable = new SitesTable(this, selectedSiteId);
sitesForm = new SitesForm(this, selectedSiteId); sitesForm = new SitesForm(this, selectedSiteId);
final ActionLink addNewSite = new ActionLink(new GlobalizedMessage( addNewSite = new ActionLink(new GlobalizedMessage(
"ui.admin.sites.add_new_site_link", "ui.admin.sites.add_new_site_link",
ADMIN_BUNDLE)); ADMIN_BUNDLE));
addNewSite addNewSite
@ -76,16 +77,19 @@ public class SitesTab extends LayoutPanel {
page.addGlobalStateParam(selectedSiteId.getStateParameter()); page.addGlobalStateParam(selectedSiteId.getStateParameter());
page.setVisibleDefault(addNewSite, true);
page.setVisibleDefault(sitesTable, true); page.setVisibleDefault(sitesTable, true);
page.setVisibleDefault(sitesForm, false); page.setVisibleDefault(sitesForm, false);
} }
protected void showSiteForm(final PageState state) { protected void showSiteForm(final PageState state) {
addNewSite.setVisible(state, false);
sitesTable.setVisible(state, false); sitesTable.setVisible(state, false);
sitesForm.setVisible(state, true); sitesForm.setVisible(state, true);
} }
protected void hideSiteForm(final PageState state) { protected void hideSiteForm(final PageState state) {
addNewSite.setVisible(state, true);
sitesTable.setVisible(state, true); sitesTable.setVisible(state, true);
sitesForm.setVisible(state, false); sitesForm.setVisible(state, false);
} }

View File

@ -211,7 +211,7 @@ public class SitesTable extends Table {
switch (columnIndex) { switch (columnIndex) {
case COL_SITE_DOMAIN: case COL_SITE_DOMAIN:
return currentRow.getSiteId(); return currentRow.getDomainOfSite();
case COL_IS_DEFAULT_SITE: case COL_IS_DEFAULT_SITE:
return currentRow.isDefaultSite(); return currentRow.isDefaultSite();
case COL_DEFAULT_THEME: case COL_DEFAULT_THEME:

View File

@ -23,6 +23,7 @@ import org.libreccm.core.CoreConstants;
import org.libreccm.security.RequiresPrivilege; import org.libreccm.security.RequiresPrivilege;
import java.util.Optional; import java.util.Optional;
import java.util.UUID;
import javax.enterprise.context.RequestScoped; import javax.enterprise.context.RequestScoped;
import javax.persistence.NoResultException; import javax.persistence.NoResultException;
@ -75,6 +76,7 @@ public class SiteRepository extends AbstractEntityRepository<Long, Site> {
} }
@RequiresPrivilege(CoreConstants.PRIVILEGE_ADMIN) @RequiresPrivilege(CoreConstants.PRIVILEGE_ADMIN)
@Transactional(Transactional.TxType.REQUIRED)
@Override @Override
public void save(final Site site) { public void save(final Site site) {
super.save(site); super.save(site);
@ -96,4 +98,9 @@ public class SiteRepository extends AbstractEntityRepository<Long, Site> {
return site.getObjectId() == 0; return site.getObjectId() == 0;
} }
@Override
public void initNewEntity(final Site site) {
site.setUuid(UUID.randomUUID().toString());
}
} }

View File

@ -625,3 +625,9 @@ ui.admin.sites.table.columns.applications.header=Applications
ui.admin.sites.table.columns.delete.header=Delete ui.admin.sites.table.columns.delete.header=Delete
ui.admin.sites.delete.confirm=Are you sure to delete this site? ui.admin.sites.delete.confirm=Are you sure to delete this site?
ui.admin.sites.table.columns.remove.label=Delete ui.admin.sites.table.columns.remove.label=Delete
ui.admin.sites.create_new=Create new site
ui.admin.sites.edit=Edit Site
ui.admin.sites.domain_of_site=Domain of Site
ui.admin.sites.is_default_site=Is default site?
ui.admin.sites.domain_of_site.error.not_unique=The domain of the Site is not unique.
ui.admin.sites.domain_of_site.error.empty=The domain of a Site can't be empty.

View File

@ -629,3 +629,9 @@ ui.admin.sites.table.columns.applications.header=Applications
ui.admin.sites.table.columns.delete.header=L\u00f6schen ui.admin.sites.table.columns.delete.header=L\u00f6schen
ui.admin.sites.delete.confirm=Sind Sie sicher, dass Sie diese Site l\u00f6schen wollen? ui.admin.sites.delete.confirm=Sind Sie sicher, dass Sie diese Site l\u00f6schen wollen?
ui.admin.sites.table.columns.remove.label=L\u00f6schen ui.admin.sites.table.columns.remove.label=L\u00f6schen
ui.admin.sites.create_new=Neue Site anlegen
ui.admin.sites.edit=Seite bearbeiten
ui.admin.sites.domain_of_site=Domain der Site
ui.admin.sites.is_default_site=Ist Standard Site?
ui.admin.sites.domain_of_site.error.not_unique=Die Domain der Site ist nicht eindeutig.
ui.admin.sites.domain_of_site.error.empty=The Domain einer Site darf nicht leer sein.

View File

@ -622,3 +622,9 @@ ui.admin.sites.table.columns.applications.header=Applications
ui.admin.sites.table.columns.delete.header=Delete ui.admin.sites.table.columns.delete.header=Delete
ui.admin.sites.delete.confirm=Are you sure to delete this site? ui.admin.sites.delete.confirm=Are you sure to delete this site?
ui.admin.sites.table.columns.remove.label=Delete ui.admin.sites.table.columns.remove.label=Delete
ui.admin.sites.create_new=Create new site
ui.admin.sites.edit=Edit Site
ui.admin.sites.domain_of_site=Domain of Site
ui.admin.sites.is_default_site=Is default site?
ui.admin.sites.domain_of_site.error.not_unique=The domain of the Site is not unique.
ui.admin.sites.domain_of_site.error.empty=The domain of a Site can't be empty.

View File

@ -613,3 +613,9 @@ ui.admin.sites.table.columns.applications.header=Applications
ui.admin.sites.table.columns.delete.header=Delete ui.admin.sites.table.columns.delete.header=Delete
ui.admin.sites.delete.confirm=Are you sure to delete this site? ui.admin.sites.delete.confirm=Are you sure to delete this site?
ui.admin.sites.table.columns.remove.label=Delete ui.admin.sites.table.columns.remove.label=Delete
ui.admin.sites.create_new=Create new site
ui.admin.sites.edit=Edit Site
ui.admin.sites.domain_of_site=Domain of Site
ui.admin.sites.is_default_site=Is default site?
ui.admin.sites.domain_of_site.error.not_unique=The domain of the Site is not unique.
ui.admin.sites.domain_of_site.error.empty=The domain of a Site can't be empty.