diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/sites/SitesController.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/sites/SitesController.java index f6d7ff3c3..4522375e7 100644 --- a/ccm-core/src/main/java/com/arsdigita/ui/admin/sites/SitesController.java +++ b/ccm-core/src/main/java/com/arsdigita/ui/admin/sites/SitesController.java @@ -65,7 +65,7 @@ class SitesController implements Serializable { @Transactional(Transactional.TxType.REQUIRED) protected boolean isUnique(final String domainOfSite) { - return sitesRepo.findByDomain(domainOfSite).isPresent(); + return !sitesRepo.findByDomain(domainOfSite).isPresent(); } @Transactional(Transactional.TxType.REQUIRED) diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/sites/SitesForm.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/sites/SitesForm.java index a411fb08d..0fcc01c27 100644 --- a/ccm-core/src/main/java/com/arsdigita/ui/admin/sites/SitesForm.java +++ b/ccm-core/src/main/java/com/arsdigita/ui/admin/sites/SitesForm.java @@ -100,16 +100,14 @@ public class SitesForm extends Form { domainOfSiteField.setLabel(new GlobalizedMessage( "ui.admin.sites.domain_of_site", ADMIN_BUNDLE)); - domainOfSiteField - .addValidationListener(new NotEmptyValidationListener()); super.add(domainOfSiteField); defaultSiteCheckbox = new CheckboxGroup(DEFAULT_SITE); - defaultSiteCheckbox.addOption(new Option("isDefault", - new Label( - new GlobalizedMessage( - "ui.admin.sites.is_default_site", - ADMIN_BUNDLE)))); + defaultSiteCheckbox + .addOption(new Option("isDefault", + new Label(new GlobalizedMessage( + "ui.admin.sites.is_default_site", + ADMIN_BUNDLE)))); super.add(defaultSiteCheckbox); defaultThemeSelect = new SingleSelect(THEME_SELECT); @@ -157,6 +155,17 @@ public class SitesForm extends Form { 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 SitesController controller = cdiUtil .findBean(SitesController.class); @@ -164,7 +173,7 @@ public class SitesForm extends Form { data.addError( DOMAIN_OF_SITE, new GlobalizedMessage( - "ui.admin.sites.domain_of_site.error.not:unique", + "ui.admin.sites.domain_of_site.error.not_unique", ADMIN_BUNDLE)); } } @@ -232,7 +241,11 @@ public class SitesForm extends Form { if (selectedSiteIdStr == null || selectedSiteIdStr.isEmpty()) { site = new Site(); site.setDomainOfSite(domainOfSite); - site.setDefaultSite(defaultSite[0]); + if (defaultSite == null || defaultSite.length == 0) { + site.setDefaultSite(false); + } else { + site.setDefaultSite(defaultSite[0]); + } site.setDefaultTheme(defaultTheme); } else { site = siteRepo diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/sites/SitesTab.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/sites/SitesTab.java index 0df79b296..915f9158c 100644 --- a/ccm-core/src/main/java/com/arsdigita/ui/admin/sites/SitesTab.java +++ b/ccm-core/src/main/java/com/arsdigita/ui/admin/sites/SitesTab.java @@ -36,6 +36,7 @@ import static com.arsdigita.ui.admin.AdminUiConstants.*; public class SitesTab extends LayoutPanel { private final ParameterSingleSelectionModel selectedSiteId; + private final ActionLink addNewSite; private final SitesTable sitesTable; private final SitesForm sitesForm; @@ -52,7 +53,7 @@ public class SitesTab extends LayoutPanel { sitesTable = new SitesTable(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", ADMIN_BUNDLE)); addNewSite @@ -76,16 +77,19 @@ public class SitesTab extends LayoutPanel { page.addGlobalStateParam(selectedSiteId.getStateParameter()); + page.setVisibleDefault(addNewSite, true); page.setVisibleDefault(sitesTable, true); page.setVisibleDefault(sitesForm, false); } protected void showSiteForm(final PageState state) { + addNewSite.setVisible(state, false); sitesTable.setVisible(state, false); sitesForm.setVisible(state, true); } protected void hideSiteForm(final PageState state) { + addNewSite.setVisible(state, true); sitesTable.setVisible(state, true); sitesForm.setVisible(state, false); } diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/sites/SitesTable.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/sites/SitesTable.java index 8105242a5..3b3256f3e 100644 --- a/ccm-core/src/main/java/com/arsdigita/ui/admin/sites/SitesTable.java +++ b/ccm-core/src/main/java/com/arsdigita/ui/admin/sites/SitesTable.java @@ -211,7 +211,7 @@ public class SitesTable extends Table { switch (columnIndex) { case COL_SITE_DOMAIN: - return currentRow.getSiteId(); + return currentRow.getDomainOfSite(); case COL_IS_DEFAULT_SITE: return currentRow.isDefaultSite(); case COL_DEFAULT_THEME: diff --git a/ccm-core/src/main/java/org/libreccm/sites/SiteRepository.java b/ccm-core/src/main/java/org/libreccm/sites/SiteRepository.java index 91676f8c1..724c29b6d 100644 --- a/ccm-core/src/main/java/org/libreccm/sites/SiteRepository.java +++ b/ccm-core/src/main/java/org/libreccm/sites/SiteRepository.java @@ -23,6 +23,7 @@ import org.libreccm.core.CoreConstants; import org.libreccm.security.RequiresPrivilege; import java.util.Optional; +import java.util.UUID; import javax.enterprise.context.RequestScoped; import javax.persistence.NoResultException; @@ -75,6 +76,7 @@ public class SiteRepository extends AbstractEntityRepository { } @RequiresPrivilege(CoreConstants.PRIVILEGE_ADMIN) + @Transactional(Transactional.TxType.REQUIRED) @Override public void save(final Site site) { super.save(site); @@ -95,5 +97,10 @@ public class SiteRepository extends AbstractEntityRepository { public boolean isNew(final Site site) { return site.getObjectId() == 0; } + + @Override + public void initNewEntity(final Site site) { + site.setUuid(UUID.randomUUID().toString()); + } } diff --git a/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources.properties b/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources.properties index bbd26aa4d..8b8f6a47b 100644 --- a/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources.properties +++ b/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources.properties @@ -625,3 +625,9 @@ ui.admin.sites.table.columns.applications.header=Applications ui.admin.sites.table.columns.delete.header=Delete ui.admin.sites.delete.confirm=Are you sure to delete this site? 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. diff --git a/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources_de.properties b/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources_de.properties index 912a54293..3d6446ec7 100644 --- a/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources_de.properties +++ b/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources_de.properties @@ -629,3 +629,9 @@ ui.admin.sites.table.columns.applications.header=Applications 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.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. diff --git a/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources_en.properties b/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources_en.properties index a54391731..eb37797aa 100755 --- a/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources_en.properties +++ b/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources_en.properties @@ -622,3 +622,9 @@ ui.admin.sites.table.columns.applications.header=Applications ui.admin.sites.table.columns.delete.header=Delete ui.admin.sites.delete.confirm=Are you sure to delete this site? 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. diff --git a/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources_fr.properties b/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources_fr.properties index 4e7788c21..e5814fbc0 100755 --- a/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources_fr.properties +++ b/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources_fr.properties @@ -613,3 +613,9 @@ ui.admin.sites.table.columns.applications.header=Applications ui.admin.sites.table.columns.delete.header=Delete ui.admin.sites.delete.confirm=Are you sure to delete this site? 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.