CCM NG: ContentSectionManager now passes all tests

git-svn-id: https://svn.libreccm.org/ccm/ccm_ng@4204 8810af33-2d31-482b-a856-94f89814c4df
pull/2/head
jensp 2016-07-21 14:15:36 +00:00
parent 45501fedb8
commit fb35554553
13 changed files with 243 additions and 2757 deletions

View File

@ -41,6 +41,8 @@ import javax.persistence.Table;
import org.libreccm.web.ApplicationType; import org.libreccm.web.ApplicationType;
import java.util.ArrayList;
import javax.persistence.NamedQueries; import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery; import javax.persistence.NamedQuery;
@ -52,11 +54,17 @@ import static org.librecms.CmsConstants.*;
*/ */
@Entity @Entity
@Table(name = "CONTENT_SECTIONS", schema = DB_SCHEMA) @Table(name = "CONTENT_SECTIONS", schema = DB_SCHEMA)
@NamedQueries( @NamedQueries({
@NamedQuery( @NamedQuery(
name = "ContentSection.findByLabel", name = "ContentSection.findByLabel",
query = "SELECT s FROM ContentSection s WHERE s.label = :label") query = "SELECT s FROM ContentSection s WHERE s.label = :label"),
) @NamedQuery(
name = "ContentSection.findPermissions",
query = "SELECT p FROM Permission p "
+ "WHERE (p.object = :section "
+ " OR p.object = :rootDocumentsFolder) "
+ "AND p.grantee = :role")
})
@ApplicationType( @ApplicationType(
name = CONTENT_SECTION_APP_TYPE, name = CONTENT_SECTION_APP_TYPE,
descBundle = "org.librecms.contentsection.ContentSectionResources", descBundle = "org.librecms.contentsection.ContentSectionResources",
@ -113,6 +121,10 @@ public class ContentSection extends CcmApplication implements Serializable {
@Column(name = "DEFAULT_LOCALE") @Column(name = "DEFAULT_LOCALE")
private Locale defaultLocale; private Locale defaultLocale;
public ContentSection() {
roles = new ArrayList<>();
}
public String getLabel() { public String getLabel() {
return label; return label;
} }
@ -182,7 +194,20 @@ public class ContentSection extends CcmApplication implements Serializable {
} }
protected void removeRole(final Role role) { protected void removeRole(final Role role) {
roles.remove(role);
int index = -1;
for (int i = 0; i < roles.size(); i++) {
if (roles.get(i).getName().equals(role.getName())) {
index = i;
}
}
if (index == -1) {
//Role not part of ContentSection
return;
}
roles.remove(index);
} }
public Locale getDefaultLocale() { public Locale getDefaultLocale() {

View File

@ -18,18 +18,28 @@
*/ */
package org.librecms.contentsection; package org.librecms.contentsection;
import com.arsdigita.kernel.KernelConfig;
import org.libreccm.categorization.Category; import org.libreccm.categorization.Category;
import org.libreccm.categorization.CategoryRepository; import org.libreccm.categorization.CategoryRepository;
import org.libreccm.configuration.ConfigurationManager;
import org.libreccm.core.CoreConstants; import org.libreccm.core.CoreConstants;
import org.libreccm.security.AuthorizationRequired; import org.libreccm.security.AuthorizationRequired;
import org.libreccm.security.Permission;
import org.libreccm.security.PermissionManager; import org.libreccm.security.PermissionManager;
import org.libreccm.security.RequiresPrivilege; import org.libreccm.security.RequiresPrivilege;
import org.libreccm.security.Role; import org.libreccm.security.Role;
import org.libreccm.security.RoleManager;
import org.libreccm.security.RoleRepository; import org.libreccm.security.RoleRepository;
import java.util.List;
import java.util.Locale;
import java.util.UUID;
import java.util.stream.Stream;
import javax.enterprise.context.RequestScoped; import javax.enterprise.context.RequestScoped;
import javax.inject.Inject; import javax.inject.Inject;
import javax.persistence.EntityManager;
import javax.persistence.TypedQuery;
import javax.transaction.Transactional; import javax.transaction.Transactional;
import static org.librecms.CmsConstants.*; import static org.librecms.CmsConstants.*;
@ -43,6 +53,9 @@ import static org.librecms.contentsection.ContentSection.*;
@RequestScoped @RequestScoped
public class ContentSectionManager { public class ContentSectionManager {
@Inject
private EntityManager entityManager;
@Inject @Inject
private ContentSectionRepository sectionRepo; private ContentSectionRepository sectionRepo;
@ -52,12 +65,14 @@ public class ContentSectionManager {
@Inject @Inject
private RoleRepository roleRepo; private RoleRepository roleRepo;
@Inject // @Inject
private RoleManager roleManager; // private RoleManager roleManager;
@Inject @Inject
private PermissionManager permissionManager; private PermissionManager permissionManager;
@Inject
private ConfigurationManager confManager;
/** /**
* Creates a new content section including the default roles. * Creates a new content section including the default roles.
* *
@ -74,14 +89,33 @@ public class ContentSectionManager {
"The name of a ContentSection can't be blank."); "The name of a ContentSection can't be blank.");
} }
final KernelConfig kernelConfig = confManager.findConfiguration(
KernelConfig.class);
final Locale defautLocale
= new Locale(kernelConfig.getDefaultLanguage());
final ContentSection section = new ContentSection(); final ContentSection section = new ContentSection();
section.setLabel(name); section.setLabel(name);
section.setDisplayName(name);
section.setPrimaryUrl(name);
section.getTitle().addValue(defautLocale, name);
final Category rootFolder = new Category(); final Category rootFolder = new Category();
rootFolder.setName(String.format("%s_root", name)); rootFolder.setName(String.format("%s_root", name));
rootFolder.getTitle().addValue(defautLocale, rootFolder.getName());
rootFolder.setDisplayName(rootFolder.getName());
rootFolder.setUuid(UUID.randomUUID().toString());
rootFolder.setUniqueId(rootFolder.getUuid());
rootFolder.setCategoryOrder(1L);
final Category rootAssetFolder = new Category(); final Category rootAssetFolder = new Category();
rootFolder.setName(String.format("%s_assets", name)); rootAssetFolder.setName(String.format("%s_assets", name));
rootAssetFolder.getTitle().addValue(defautLocale,
rootAssetFolder.getName());
rootAssetFolder.setDisplayName(rootAssetFolder.getName());
rootAssetFolder.setUuid(UUID.randomUUID().toString());
rootAssetFolder.setUniqueId(rootAssetFolder.getUuid());
rootAssetFolder.setCategoryOrder(1L);
section.setRootDocumentFolder(rootFolder); section.setRootDocumentFolder(rootFolder);
section.setRootAssetsFolder(rootAssetFolder); section.setRootAssetsFolder(rootAssetFolder);
@ -109,7 +143,7 @@ public class ContentSectionManager {
PRIVILEGE_ITEMS_VIEW_PUBLISHED, PRIVILEGE_ITEMS_VIEW_PUBLISHED,
PRIVILEGE_ITEMS_PREVIEW); PRIVILEGE_ITEMS_PREVIEW);
addRoleToContentSection(section, addRoleToContentSection(section,
MANAGER, name, MANAGER,
PRIVILEGE_ADMINISTER_ROLES, PRIVILEGE_ADMINISTER_ROLES,
PRIVILEGE_ADMINISTER_WORKFLOW, PRIVILEGE_ADMINISTER_WORKFLOW,
PRIVILEGE_ADMINISTER_LIFECYLES, PRIVILEGE_ADMINISTER_LIFECYLES,
@ -124,7 +158,7 @@ public class ContentSectionManager {
PRIVILEGE_ITEMS_VIEW_PUBLISHED, PRIVILEGE_ITEMS_VIEW_PUBLISHED,
PRIVILEGE_ITEMS_PREVIEW); PRIVILEGE_ITEMS_PREVIEW);
addRoleToContentSection(section, addRoleToContentSection(section,
PUBLISHER, name, PUBLISHER,
PRIVILEGE_ITEMS_CATEGORIZE, PRIVILEGE_ITEMS_CATEGORIZE,
PRIVILEGE_ITEMS_CREATE_NEW, PRIVILEGE_ITEMS_CREATE_NEW,
PRIVILEGE_ITEMS_EDIT, PRIVILEGE_ITEMS_EDIT,
@ -134,7 +168,7 @@ public class ContentSectionManager {
PRIVILEGE_ITEMS_VIEW_PUBLISHED, PRIVILEGE_ITEMS_VIEW_PUBLISHED,
PRIVILEGE_ITEMS_PREVIEW); PRIVILEGE_ITEMS_PREVIEW);
addRoleToContentSection(section, addRoleToContentSection(section,
CONTENT_READER, name, CONTENT_READER,
PRIVILEGE_ITEMS_VIEW_PUBLISHED); PRIVILEGE_ITEMS_VIEW_PUBLISHED);
return section; return section;
@ -142,7 +176,9 @@ public class ContentSectionManager {
/** /**
* Renames a content section and all roles associated with it (roles * Renames a content section and all roles associated with it (roles
* starting with the name of the content section). * starting with the name of the content section). Note that you have to
* rename the localised titles of the content section and the root folders
* manually
* *
* @param section The section to rename. * @param section The section to rename.
* *
@ -156,6 +192,8 @@ public class ContentSectionManager {
final String oldName = section.getLabel(); final String oldName = section.getLabel();
section.setLabel(name); section.setLabel(name);
section.setDisplayName(name);
section.setPrimaryUrl(name);
section.getRoles().forEach(r -> renameSectionRole(r, oldName, name)); section.getRoles().forEach(r -> renameSectionRole(r, oldName, name));
} }
@ -197,9 +235,28 @@ public class ContentSectionManager {
final ContentSection contentSection, final ContentSection contentSection,
final Role role) { final Role role) {
if (contentSection == null) {
throw new IllegalArgumentException(
"Can't remove role from ContentSection null");
}
if (role == null) {
throw new IllegalArgumentException("Role to delete can't be null.");
}
contentSection.removeRole(role); contentSection.removeRole(role);
sectionRepo.save(contentSection); sectionRepo.save(contentSection);
roleRepo.delete(role);
final TypedQuery<Permission> query = entityManager
.createNamedQuery("ContentSection.findPermissions",
Permission.class);
query.setParameter("section", contentSection);
query.setParameter("rootDocumentsFolder",
contentSection.getRootDocumentsFolder());
query.setParameter("role", role);
final List<Permission> permissions = query.getResultList();
permissions.forEach(p -> entityManager.remove(p));
} }
@AuthorizationRequired @AuthorizationRequired

View File

@ -23,6 +23,8 @@ import org.libreccm.core.CoreConstants;
import org.libreccm.security.AuthorizationRequired; import org.libreccm.security.AuthorizationRequired;
import org.libreccm.security.RequiresPrivilege; import org.libreccm.security.RequiresPrivilege;
import java.util.UUID;
import javax.enterprise.context.RequestScoped; import javax.enterprise.context.RequestScoped;
import javax.persistence.TypedQuery; import javax.persistence.TypedQuery;
import javax.transaction.Transactional; import javax.transaction.Transactional;
@ -64,6 +66,11 @@ public class ContentSectionRepository
@Transactional(Transactional.TxType.REQUIRED) @Transactional(Transactional.TxType.REQUIRED)
@Override @Override
public void save(final ContentSection section) { public void save(final ContentSection section) {
if(isNew(section)) {
section.setUuid(UUID.randomUUID().toString());
section.setApplicationType(ContentSection.class.getName());
}
super.save(section); super.save(section);
} }

View File

@ -18,6 +18,8 @@
*/ */
package org.librecms.contentsection; package org.librecms.contentsection;
import com.arsdigita.kernel.KernelConfig;
import org.jboss.arquillian.container.test.api.Deployment; import org.jboss.arquillian.container.test.api.Deployment;
import org.jboss.arquillian.junit.Arquillian; import org.jboss.arquillian.junit.Arquillian;
import org.jboss.arquillian.junit.InSequence; import org.jboss.arquillian.junit.InSequence;
@ -41,6 +43,8 @@ import org.junit.BeforeClass;
import org.junit.Test; import org.junit.Test;
import org.junit.experimental.categories.Category; import org.junit.experimental.categories.Category;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.libreccm.categorization.CategoryRepository;
import org.libreccm.configuration.ConfigurationManager;
import org.libreccm.security.Role; import org.libreccm.security.Role;
import org.libreccm.security.RoleRepository; import org.libreccm.security.RoleRepository;
import org.libreccm.tests.categories.IntegrationTest; import org.libreccm.tests.categories.IntegrationTest;
@ -48,6 +52,7 @@ import org.libreccm.tests.categories.IntegrationTest;
import java.io.File; import java.io.File;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Locale;
import java.util.stream.IntStream; import java.util.stream.IntStream;
import javax.inject.Inject; import javax.inject.Inject;
@ -76,6 +81,12 @@ public class ContentSectionManagerTest {
@Inject @Inject
private RoleRepository roleRepository; private RoleRepository roleRepository;
@Inject
private ConfigurationManager confManager;
@Inject
private CategoryRepository categoryRepo;
public ContentSectionManagerTest() { public ContentSectionManagerTest() {
} }
@ -197,7 +208,17 @@ public class ContentSectionManagerTest {
@ShouldMatchDataSet( @ShouldMatchDataSet(
value = "datasets/org/librecms/contentsection/" value = "datasets/org/librecms/contentsection/"
+ "ContentSectionManagerTest/after-create.xml", + "ContentSectionManagerTest/after-create.xml",
excludeColumns = {"object_id"}) excludeColumns = {"object_id",
"root_assets_folder_id",
"root_documents_folder_id",
"permission_id",
"role_id",
"grantee_id",
"unique_id",
"uuid",
"created",
"section_id",
"creation_date"})
@InSequence(100) @InSequence(100)
public void createSection() { public void createSection() {
manager.createContentSection("test"); manager.createContentSection("test");
@ -215,6 +236,27 @@ public class ContentSectionManagerTest {
final ContentSection section = repository.findByLabel("info"); final ContentSection section = repository.findByLabel("info");
manager.renameContentSection(section, "content"); manager.renameContentSection(section, "content");
final KernelConfig kernelConfig = confManager.findConfiguration(
KernelConfig.class);
final Locale defaultLocale = new Locale(kernelConfig
.getDefaultLanguage());
section.getTitle().addValue(defaultLocale, "content");
repository.save(section);
section.getRootDocumentsFolder().setName("content_root");
section.getRootDocumentsFolder().setDisplayName("content_root");
section.getRootDocumentsFolder().getTitle().addValue(
defaultLocale, "content_root");
section.getRootAssetsFolder().setName("content_assets");
section.getRootAssetsFolder().setDisplayName("content_assets");
section.getRootAssetsFolder().getTitle().addValue(
defaultLocale, "content_assets");
categoryRepo.save(section.getRootDocumentsFolder());
categoryRepo.save(section.getRootAssetsFolder());
} }
@Test @Test
@ -223,7 +265,11 @@ public class ContentSectionManagerTest {
@ShouldMatchDataSet( @ShouldMatchDataSet(
value = "datasets/org/librecms/contentsection/" value = "datasets/org/librecms/contentsection/"
+ "ContentSectionManagerTest/after-add-role.xml", + "ContentSectionManagerTest/after-add-role.xml",
excludeColumns = {"object_id"}) excludeColumns = {"object_id",
"role_id",
"permission_id",
"creation_date",
"grantee_id"})
@InSequence(300) @InSequence(300)
public void addRole() { public void addRole() {
final ContentSection section = repository.findByLabel("info"); final ContentSection section = repository.findByLabel("info");

View File

@ -1,5 +1,5 @@
DROP SCHEMA IF EXISTS ccm_shortcuts;
DROP SCHEMA IF EXISTS ccm_cms; DROP SCHEMA IF EXISTS ccm_cms;
DROP SCHEMA IF EXISTS ccm_core;
DROP SEQUENCE IF EXISTS hibernate_sequence; DROP SEQUENCE IF EXISTS hibernate_sequence;

File diff suppressed because it is too large Load Diff

View File

@ -16,13 +16,15 @@
name="info_root" name="info_root"
enabled="true" enabled="true"
visible="true" visible="true"
abstract_category="false" /> abstract_category="false"
category_order="1" />
<ccm_core.categories object_id="-2200" <ccm_core.categories object_id="-2200"
unique_id="b163f73c-9ac2-44d7-a037-de621f5ca828" unique_id="b163f73c-9ac2-44d7-a037-de621f5ca828"
name="info_assets" name="info_assets"
enabled="true" enabled="true"
visible="true" visible="true"
abstract_category="false"/> abstract_category="false"
category_order="1" />
<ccm_core.category_titles object_id="-2100" <ccm_core.category_titles object_id="-2100"
locale="en" locale="en"
@ -37,9 +39,9 @@
locale="en" locale="en"
localized_value="info" /> localized_value="info" />
<ccm_core.resource_descriptions object_id="-1100" <!--<ccm_core.resource_descriptions object_id="-1100"
locale="en" locale="en"
localized_value="Initial content section" /> localized_value="Initial content section" />-->
<ccm_core.applications object_id="-1100" <ccm_core.applications object_id="-1100"
application_type="org.librecms.contentsection.ContentSection" application_type="org.librecms.contentsection.ContentSection"
@ -126,7 +128,7 @@
grantee_id="-3300" grantee_id="-3300"
creation_date="2016-07-15"/> creation_date="2016-07-15"/>
<ccm_core.permissions permission_id="-4250" <ccm_core.permissions permission_id="-4250"
granted_privilege="delete_item" granted_privilege="delete_items"
object_id="-2100" object_id="-2100"
grantee_id="-3300" grantee_id="-3300"
creation_date="2016-07-15"/> creation_date="2016-07-15"/>
@ -161,7 +163,7 @@
grantee_id="-3400" grantee_id="-3400"
creation_date="2016-07-15"/> creation_date="2016-07-15"/>
<ccm_core.permissions permission_id="-4350" <ccm_core.permissions permission_id="-4350"
granted_privilege="administer_content_items" granted_privilege="administer_content_types"
object_id="-1100" object_id="-1100"
grantee_id="-3400" grantee_id="-3400"
creation_date="2016-07-15"/> creation_date="2016-07-15"/>
@ -191,7 +193,7 @@
grantee_id="-3400" grantee_id="-3400"
creation_date="2016-07-15"/> creation_date="2016-07-15"/>
<ccm_core.permissions permission_id="-4410" <ccm_core.permissions permission_id="-4410"
granted_privilege="delete_item" granted_privilege="delete_items"
object_id="-2100" object_id="-2100"
grantee_id="-3400" grantee_id="-3400"
creation_date="2016-07-15"/> creation_date="2016-07-15"/>
@ -231,7 +233,7 @@
grantee_id="-3500" grantee_id="-3500"
creation_date="2016-07-15"/> creation_date="2016-07-15"/>
<ccm_core.permissions permission_id="-4560" <ccm_core.permissions permission_id="-4560"
granted_privilege="delete_item" granted_privilege="delete_items"
object_id="-2100" object_id="-2100"
grantee_id="-3500" grantee_id="-3500"
creation_date="2016-07-15"/> creation_date="2016-07-15"/>

View File

@ -25,25 +25,29 @@
name="info_root" name="info_root"
enabled="true" enabled="true"
visible="true" visible="true"
abstract_category="false" /> abstract_category="false"
category_order="1" />
<ccm_core.categories object_id="-2200" <ccm_core.categories object_id="-2200"
unique_id="b163f73c-9ac2-44d7-a037-de621f5ca828" unique_id="b163f73c-9ac2-44d7-a037-de621f5ca828"
name="info_assets" name="info_assets"
enabled="true" enabled="true"
visible="true" visible="true"
abstract_category="false"/> abstract_category="false"
category_order="1" />
<ccm_core.categories object_id="-2300" <ccm_core.categories object_id="-2300"
unique_id="1c423126-1e45-4fd9-9690-35d85d535e75" unique_id="1c423126-1e45-4fd9-9690-35d85d535e75"
name="info_root" name="test_root"
enabled="true" enabled="true"
visible="true" visible="true"
abstract_category="false" /> abstract_category="false"
category_order="1" />
<ccm_core.categories object_id="-2400" <ccm_core.categories object_id="-2400"
unique_id="b393da77-df18-4eef-aa58-1f11599d82d0" unique_id="b393da77-df18-4eef-aa58-1f11599d82d0"
name="info_assets" name="test_assets"
enabled="true" enabled="true"
visible="true" visible="true"
abstract_category="false"/> abstract_category="false"
category_order="1" />
<ccm_core.category_titles object_id="-2100" <ccm_core.category_titles object_id="-2100"
locale="en" locale="en"
@ -70,12 +74,12 @@
locale="en" locale="en"
localized_value="test" /> localized_value="test" />
<ccm_core.resource_descriptions object_id="-1100" <!--<ccm_core.resource_descriptions object_id="-1100"
locale="en" locale="en"
localized_value="Initial content section" /> localized_value="Initial content section" />
<ccm_core.resource_descriptions object_id="-1200" <ccm_core.resource_descriptions object_id="-1200"
locale="en" locale="en"
localized_value="Test content section" /> localized_value="Test content section" />-->
<ccm_core.applications object_id="-1100" <ccm_core.applications object_id="-1100"
application_type="org.librecms.contentsection.ContentSection" application_type="org.librecms.contentsection.ContentSection"
@ -189,7 +193,7 @@
grantee_id="-3300" grantee_id="-3300"
creation_date="2016-07-15"/> creation_date="2016-07-15"/>
<ccm_core.permissions permission_id="-4250" <ccm_core.permissions permission_id="-4250"
granted_privilege="delete_item" granted_privilege="delete_items"
object_id="-2100" object_id="-2100"
grantee_id="-3300" grantee_id="-3300"
creation_date="2016-07-15"/> creation_date="2016-07-15"/>
@ -224,7 +228,7 @@
grantee_id="-3400" grantee_id="-3400"
creation_date="2016-07-15"/> creation_date="2016-07-15"/>
<ccm_core.permissions permission_id="-4350" <ccm_core.permissions permission_id="-4350"
granted_privilege="administer_content_items" granted_privilege="administer_content_types"
object_id="-2100" object_id="-2100"
grantee_id="-3400" grantee_id="-3400"
creation_date="2016-07-15"/> creation_date="2016-07-15"/>
@ -255,7 +259,7 @@
grantee_id="-3400" grantee_id="-3400"
creation_date="2016-07-15"/> creation_date="2016-07-15"/>
<ccm_core.permissions permission_id="-4410" <ccm_core.permissions permission_id="-4410"
granted_privilege="delete_item" granted_privilege="delete_items"
object_id="-2100" object_id="-2100"
grantee_id="-3400" grantee_id="-3400"
creation_date="2016-07-15"/> creation_date="2016-07-15"/>
@ -295,7 +299,7 @@
grantee_id="-3500" grantee_id="-3500"
creation_date="2016-07-15"/> creation_date="2016-07-15"/>
<ccm_core.permissions permission_id="-4560" <ccm_core.permissions permission_id="-4560"
granted_privilege="delete_item" granted_privilege="delete_items"
object_id="-2100" object_id="-2100"
grantee_id="-3500" grantee_id="-3500"
creation_date="2016-07-15"/> creation_date="2016-07-15"/>
@ -360,7 +364,7 @@
grantee_id="-33000" grantee_id="-33000"
creation_date="2016-07-15"/> creation_date="2016-07-15"/>
<ccm_core.permissions permission_id="-42500" <ccm_core.permissions permission_id="-42500"
granted_privilege="delete_item" granted_privilege="delete_items"
object_id="-2300" object_id="-2300"
grantee_id="-33000" grantee_id="-33000"
creation_date="2016-07-15"/> creation_date="2016-07-15"/>
@ -395,7 +399,7 @@
grantee_id="-34000" grantee_id="-34000"
creation_date="2016-07-15"/> creation_date="2016-07-15"/>
<ccm_core.permissions permission_id="-43500" <ccm_core.permissions permission_id="-43500"
granted_privilege="administer_content_items" granted_privilege="administer_content_types"
object_id="-1200" object_id="-1200"
grantee_id="-34000" grantee_id="-34000"
creation_date="2016-07-15"/> creation_date="2016-07-15"/>
@ -425,7 +429,7 @@
grantee_id="-34000" grantee_id="-34000"
creation_date="2016-07-15"/> creation_date="2016-07-15"/>
<ccm_core.permissions permission_id="-44100" <ccm_core.permissions permission_id="-44100"
granted_privilege="delete_item" granted_privilege="delete_items"
object_id="-2300" object_id="-2300"
grantee_id="-34000" grantee_id="-34000"
creation_date="2016-07-15"/> creation_date="2016-07-15"/>
@ -465,7 +469,7 @@
grantee_id="-35000" grantee_id="-35000"
creation_date="2016-07-15"/> creation_date="2016-07-15"/>
<ccm_core.permissions permission_id="-45600" <ccm_core.permissions permission_id="-45600"
granted_privilege="delete_item" granted_privilege="delete_items"
object_id="-2300" object_id="-2300"
grantee_id="-35000" grantee_id="-35000"
creation_date="2016-07-15"/> creation_date="2016-07-15"/>

View File

@ -20,10 +20,10 @@
view_published_items, preview_items view_published_items, preview_items
info_editor: categorize_items, create_new_items,, edit_items, approve_items, info_editor: categorize_items, create_new_items,, edit_items, approve_items,
delete_items, view_published_items, preview_items delete_itemss, view_published_items, preview_items
info_manager: administer_roles, administer_workflow, administer_lifecyles, info_manager: administer_roles, administer_workflow, administer_lifecyles,
administer_categories, administer_content_items, administer_categories, administer_content_types,
categorize_items, create_new_items, edit_items, categorize_items, create_new_items, edit_items,
approve_items, publish_items, delete-items, approve_items, publish_items, delete-items,
view_published_items, preview_items view_published_items, preview_items
@ -51,13 +51,15 @@
name="info_root" name="info_root"
enabled="true" enabled="true"
visible="true" visible="true"
abstract_category="false" /> abstract_category="false"
category_order="1" />
<ccm_core.categories object_id="-2200" <ccm_core.categories object_id="-2200"
unique_id="b163f73c-9ac2-44d7-a037-de621f5ca828" unique_id="b163f73c-9ac2-44d7-a037-de621f5ca828"
name="info_assets" name="info_assets"
enabled="true" enabled="true"
visible="true" visible="true"
abstract_category="false"/> abstract_category="false"
category_order="1" />
<ccm_core.category_titles object_id="-2100" <ccm_core.category_titles object_id="-2100"
locale="en" locale="en"
@ -72,9 +74,9 @@
locale="en" locale="en"
localized_value="info" /> localized_value="info" />
<ccm_core.resource_descriptions object_id="-1100" <!--<ccm_core.resource_descriptions object_id="-1100"
locale="en" locale="en"
localized_value="Initial content section" /> localized_value="Initial content section" />-->
<ccm_core.applications object_id="-1100" <ccm_core.applications object_id="-1100"
application_type="org.librecms.contentsection.ContentSection" application_type="org.librecms.contentsection.ContentSection"
@ -93,6 +95,8 @@
name="info_editor" /> name="info_editor" />
<ccm_core.ccm_roles role_id="-3400" <ccm_core.ccm_roles role_id="-3400"
name="info_manager" /> name="info_manager" />
<ccm_core.ccm_roles role_id="-3500"
name="info_publisher" />
<ccm_core.ccm_roles role_id="-3600" <ccm_core.ccm_roles role_id="-3600"
name="info_content_reader" /> name="info_content_reader" />
@ -153,7 +157,7 @@
grantee_id="-3300" grantee_id="-3300"
creation_date="2016-07-15"/> creation_date="2016-07-15"/>
<ccm_core.permissions permission_id="-4250" <ccm_core.permissions permission_id="-4250"
granted_privilege="delete_item" granted_privilege="delete_items"
object_id="-2100" object_id="-2100"
grantee_id="-3300" grantee_id="-3300"
creation_date="2016-07-15"/> creation_date="2016-07-15"/>
@ -188,7 +192,7 @@
grantee_id="-3400" grantee_id="-3400"
creation_date="2016-07-15"/> creation_date="2016-07-15"/>
<ccm_core.permissions permission_id="-4350" <ccm_core.permissions permission_id="-4350"
granted_privilege="administer_content_items" granted_privilege="administer_content_types"
object_id="-1100" object_id="-1100"
grantee_id="-3400" grantee_id="-3400"
creation_date="2016-07-15"/> creation_date="2016-07-15"/>
@ -218,7 +222,7 @@
grantee_id="-3400" grantee_id="-3400"
creation_date="2016-07-15"/> creation_date="2016-07-15"/>
<ccm_core.permissions permission_id="-4410" <ccm_core.permissions permission_id="-4410"
granted_privilege="delete_item" granted_privilege="delete_items"
object_id="-2100" object_id="-2100"
grantee_id="-3400" grantee_id="-3400"
creation_date="2016-07-15"/> creation_date="2016-07-15"/>

View File

@ -16,13 +16,15 @@
name="content_root" name="content_root"
enabled="true" enabled="true"
visible="true" visible="true"
abstract_category="false" /> abstract_category="false"
category_order="1" />
<ccm_core.categories object_id="-2200" <ccm_core.categories object_id="-2200"
unique_id="b163f73c-9ac2-44d7-a037-de621f5ca828" unique_id="b163f73c-9ac2-44d7-a037-de621f5ca828"
name="content_assets" name="content_assets"
enabled="true" enabled="true"
visible="true" visible="true"
abstract_category="false"/> abstract_category="false"
category_order="1" />
<ccm_core.category_titles object_id="-2100" <ccm_core.category_titles object_id="-2100"
locale="en" locale="en"
@ -37,9 +39,9 @@
locale="en" locale="en"
localized_value="content" /> localized_value="content" />
<ccm_core.resource_descriptions object_id="-1100" <!--<ccm_core.resource_descriptions object_id="-1100"
locale="en" locale="en"
localized_value="Initial content section" /> localized_value="Initial content section" />-->
<ccm_core.applications object_id="-1100" <ccm_core.applications object_id="-1100"
application_type="org.librecms.contentsection.ContentSection" application_type="org.librecms.contentsection.ContentSection"
@ -64,7 +66,7 @@
name="content_content_reader" /> name="content_content_reader" />
<ccm_cms.content_section_roles role_id="-3100" <ccm_cms.content_section_roles role_id="-3100"
section_id="-1100" /> section_id="-1100" />
<ccm_cms.content_section_roles role_id="-3200" <ccm_cms.content_section_roles role_id="-3200"
section_id="-1100" /> section_id="-1100" />
<ccm_cms.content_section_roles role_id="-3300" <ccm_cms.content_section_roles role_id="-3300"
@ -122,7 +124,7 @@
grantee_id="-3300" grantee_id="-3300"
creation_date="2016-07-15"/> creation_date="2016-07-15"/>
<ccm_core.permissions permission_id="-4250" <ccm_core.permissions permission_id="-4250"
granted_privilege="delete_item" granted_privilege="delete_items"
object_id="-2100" object_id="-2100"
grantee_id="-3300" grantee_id="-3300"
creation_date="2016-07-15"/> creation_date="2016-07-15"/>
@ -157,7 +159,7 @@
grantee_id="-3400" grantee_id="-3400"
creation_date="2016-07-15"/> creation_date="2016-07-15"/>
<ccm_core.permissions permission_id="-4350" <ccm_core.permissions permission_id="-4350"
granted_privilege="administer_content_items" granted_privilege="administer_content_types"
object_id="-1100" object_id="-1100"
grantee_id="-3400" grantee_id="-3400"
creation_date="2016-07-15"/> creation_date="2016-07-15"/>
@ -187,7 +189,7 @@
grantee_id="-3400" grantee_id="-3400"
creation_date="2016-07-15"/> creation_date="2016-07-15"/>
<ccm_core.permissions permission_id="-4410" <ccm_core.permissions permission_id="-4410"
granted_privilege="delete_item" granted_privilege="delete_items"
object_id="-2100" object_id="-2100"
grantee_id="-3400" grantee_id="-3400"
creation_date="2016-07-15"/> creation_date="2016-07-15"/>
@ -227,7 +229,7 @@
grantee_id="-3500" grantee_id="-3500"
creation_date="2016-07-15"/> creation_date="2016-07-15"/>
<ccm_core.permissions permission_id="-4560" <ccm_core.permissions permission_id="-4560"
granted_privilege="delete_item" granted_privilege="delete_items"
object_id="-2100" object_id="-2100"
grantee_id="-3500" grantee_id="-3500"
creation_date="2016-07-15"/> creation_date="2016-07-15"/>

View File

@ -20,10 +20,10 @@
view_published_items, preview_items view_published_items, preview_items
info_editor: categorize_items, create_new_items,, edit_items, approve_items, info_editor: categorize_items, create_new_items,, edit_items, approve_items,
delete_items, view_published_items, preview_items delete_itemss, view_published_items, preview_items
info_manager: administer_roles, administer_workflow, administer_lifecyles, info_manager: administer_roles, administer_workflow, administer_lifecyles,
administer_categories, administer_content_items, administer_categories, administer_content_types,
categorize_items, create_new_items, edit_items, categorize_items, create_new_items, edit_items,
approve_items, publish_items, delete-items, approve_items, publish_items, delete-items,
view_published_items, preview_items view_published_items, preview_items
@ -51,13 +51,15 @@
name="info_root" name="info_root"
enabled="true" enabled="true"
visible="true" visible="true"
abstract_category="false" /> abstract_category="false"
category_order="1" />
<ccm_core.categories object_id="-2200" <ccm_core.categories object_id="-2200"
unique_id="b163f73c-9ac2-44d7-a037-de621f5ca828" unique_id="b163f73c-9ac2-44d7-a037-de621f5ca828"
name="info_assets" name="info_assets"
enabled="true" enabled="true"
visible="true" visible="true"
abstract_category="false"/> abstract_category="false"
category_order="1" />
<ccm_core.category_titles object_id="-2100" <ccm_core.category_titles object_id="-2100"
locale="en" locale="en"
@ -72,9 +74,9 @@
locale="en" locale="en"
localized_value="info" /> localized_value="info" />
<ccm_core.resource_descriptions object_id="-1100" <!--<ccm_core.resource_descriptions object_id="-1100"
locale="en" locale="en"
localized_value="Initial content section" /> localized_value="Initial content section" />-->
<ccm_core.applications object_id="-1100" <ccm_core.applications object_id="-1100"
application_type="org.librecms.contentsection.ContentSection" application_type="org.librecms.contentsection.ContentSection"
@ -157,7 +159,7 @@
grantee_id="-3300" grantee_id="-3300"
creation_date="2016-07-15"/> creation_date="2016-07-15"/>
<ccm_core.permissions permission_id="-4250" <ccm_core.permissions permission_id="-4250"
granted_privilege="delete_item" granted_privilege="delete_items"
object_id="-2100" object_id="-2100"
grantee_id="-3300" grantee_id="-3300"
creation_date="2016-07-15"/> creation_date="2016-07-15"/>
@ -192,7 +194,7 @@
grantee_id="-3400" grantee_id="-3400"
creation_date="2016-07-15"/> creation_date="2016-07-15"/>
<ccm_core.permissions permission_id="-4350" <ccm_core.permissions permission_id="-4350"
granted_privilege="administer_content_items" granted_privilege="administer_content_types"
object_id="-1100" object_id="-1100"
grantee_id="-3400" grantee_id="-3400"
creation_date="2016-07-15"/> creation_date="2016-07-15"/>
@ -222,7 +224,7 @@
grantee_id="-3400" grantee_id="-3400"
creation_date="2016-07-15"/> creation_date="2016-07-15"/>
<ccm_core.permissions permission_id="-4410" <ccm_core.permissions permission_id="-4410"
granted_privilege="delete_item" granted_privilege="delete_items"
object_id="-2100" object_id="-2100"
grantee_id="-3400" grantee_id="-3400"
creation_date="2016-07-15"/> creation_date="2016-07-15"/>
@ -262,7 +264,7 @@
grantee_id="-3500" grantee_id="-3500"
creation_date="2016-07-15"/> creation_date="2016-07-15"/>
<ccm_core.permissions permission_id="-4560" <ccm_core.permissions permission_id="-4560"
granted_privilege="delete_item" granted_privilege="delete_items"
object_id="-2100" object_id="-2100"
grantee_id="-3500" grantee_id="-3500"
creation_date="2016-07-15"/> creation_date="2016-07-15"/>

View File

@ -1,3 +1,5 @@
DELETE FROM ccm_cms.content_section_roles;
DELETE FROM ccm_cms.content_sections; DELETE FROM ccm_cms.content_sections;
DELETE FROM ccm_core.settings_string_list; DELETE FROM ccm_core.settings_string_list;
@ -14,10 +16,18 @@ DELETE FROM ccm_core.categorizations;
DELETE FROM ccm_core.category_domains; DELETE FROM ccm_core.category_domains;
DELETE FROM ccm_core.category_titles;
DELETE FROM ccm_core.categories; DELETE FROM ccm_core.categories;
DELETE FROM ccm_core.permissions; DELETE FROM ccm_core.permissions;
DELETE FROM ccm_core.applications;
DELETE FROM ccm_core.resource_titles;
DELETE FROM ccm_core.resources;
DELETE FROM ccm_core.ccm_objects; DELETE FROM ccm_core.ccm_objects;
DELETE FROM ccm_core.role_memberships; DELETE FROM ccm_core.role_memberships;

View File

@ -24,6 +24,7 @@ import org.libreccm.l10n.LocalizedString;
import org.libreccm.web.CcmApplication; import org.libreccm.web.CcmApplication;
import java.io.Serializable; import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
@ -108,6 +109,12 @@ public class Resource extends CcmObject implements Serializable {
@ManyToOne @ManyToOne
private Resource parent; private Resource parent;
public Resource() {
title = new LocalizedString();
description = new LocalizedString();
childs = new ArrayList<>();
}
// @Column(name = "resource_type") // @Column(name = "resource_type")
// private String resourceType; // private String resourceType;
public LocalizedString getTitle() { public LocalizedString getTitle() {