CCM NG/ccm-cms: AssetManager current status

git-svn-id: https://svn.libreccm.org/ccm/ccm_ng@4409 8810af33-2d31-482b-a856-94f89814c4df
pull/2/head
jensp 2016-10-25 18:54:02 +00:00
parent 0e4b8ed5c2
commit f2f6f6c3f6
8 changed files with 618 additions and 454 deletions

View File

@ -82,8 +82,9 @@ public class AssetManager {
* @param name The name of the new {@link Asset}.
* @param attachments The {@link AttachmentList} to which the new
* {@link Asset} is added.
* @param type The type of the new {@link Asset}. Must be a subclass of the
* {@link Asset} class.
* @param type The type of the new {@link Asset}. Must be a subclass
* of the {@link Asset} class.
*
* @return The new {@link Asset}.
*/
@AuthorizationRequired
@ -106,8 +107,9 @@ public class AssetManager {
* @param <T> Type variable for the type of the {@link Asset} to create.
* @param name The name of the new {@link Asset}.
* @param folder The {@link Folder} in which the {@link Asset} is created.
* @param type The type of the new {@link Asset}. Must be a subclass of the
* {@link Asset} class.
* @param type The type of the new {@link Asset}. Must be a subclass of
* the {@link Asset} class.
*
* @return The new {@link Asset}.
*/
@AuthorizationRequired
@ -137,12 +139,13 @@ public class AssetManager {
* @param <T> Type variable for the type of the {@link Asset}.
* @param name The name of the new {@link Asset}.
* @param folder Optional folder in which the new {@link Asset} is placed.
* @param type The type of the new {@link Asset}. Must be a subclass of the
* {@link Asset} class.
* @param type The type of the new {@link Asset}. Must be a subclass of
* the {@link Asset} class.
*
* @return The new {@link Asset}. Note: If no {@link Folder} is provided and
* the and the returned {@link Asset} is not added to an
* {@link AttachmentList} the new {@code Asset} will become orphaned and
* can't be accessed by any method.
* {@link AttachmentList} the new {@code Asset} will become orphaned
* and can't be accessed by any method.
*/
@Transactional(Transactional.TxType.REQUIRED)
public <T extends Asset> T createAsset(final String name,
@ -158,7 +161,14 @@ public class AssetManager {
@Transactional(Transactional.TxType.REQUIRED)
@RequiresPrivilege(CoreConstants.PRIVILEGE_ADMIN)
public void cleanOrphanedAssets() {
throw new UnsupportedOperationException("Not implemented yet.");
final List<Asset> assets = assetRepo.findAll();
final List<Asset> orphaned = assets.stream()
.filter(asset -> asset.getCategories().isEmpty()
&& asset.getItemAttachments().isEmpty())
.collect(Collectors.toList());
orphaned.forEach(orphan -> assetRepo.delete(orphan));
}
/**
@ -197,6 +207,7 @@ public class AssetManager {
* member of at least one {@link AttachmentList}.
*
* @param asset The {@link Asset} to check for usage.
*
* @return {@code true} if the {@link Asset} is in use, {@link false} if
* not.
*/
@ -211,6 +222,7 @@ public class AssetManager {
* with the name of the asset. The path is relative to the content section.
*
* @param asset The {@link Assset} for which the path is generated.
*
* @return The path of the {@link Asset}. If the {@link Asset} is a non
* shared asset the path is empty.
*
@ -223,9 +235,11 @@ public class AssetManager {
/**
* Returns the path of an item as String.
*
* @param asset The {@link Asset} for which the path is generated.
* @param asset The {@link Asset} for which the path is
* generated.
* @param withContentSection Whether to include the content section into the
* path or not.
*
* @return The path of the asset. For non shared assets this is an empty
* string.
*
@ -247,17 +261,17 @@ public class AssetManager {
tokens.add(asset.getDisplayName());
Category current = result.get(0).getCategory();
tokens.add(current.getName());
while (current.getParentCategory() != null) {
current = current.getParentCategory();
tokens.add(current.getName());
current = current.getParentCategory();
}
Collections.reverse(tokens);
final String path = String.join("/", tokens);
if (withContentSection) {
final String sectionName = ((Folder) result.get(0).getCategory()).
final String sectionName
= ((Folder) result.get(0).getCategory()).
getSection().getDisplayName();
return String.format("%s:/%s", sectionName, path);
} else {
@ -270,17 +284,58 @@ public class AssetManager {
* Creates a list of the folder in which an asset is placed.
*
* @param asset
*
* @return A list of the folders which form the path of the asset. For non
* shared assets an empty list is returned.
*/
public List<Folder> getAssetFolders(final Asset asset) {
throw new UnsupportedOperationException("Not implemented yet.");
final List<Categorization> result = asset.getCategories().stream()
.filter(categorization -> {
return CATEGORIZATION_TYPE_FOLDER.equals(categorization
.getType());
})
.collect(Collectors.toList());
final List<Folder> folders = new ArrayList<>();
if (!result.isEmpty()) {
Category current = result.get(0).getCategory();
if (current instanceof Folder) {
folders.add((Folder) current);
} else {
throw new IllegalArgumentException(String.format(
"The asset %s is assigned to the category %s with the"
+ "categorization type \"%s\", but the Category is not"
+ "a folder. This is no supported.",
asset.getUuid(),
current.getUuid(),
CATEGORIZATION_TYPE_FOLDER));
}
while (current.getParentCategory() != null) {
current = current.getParentCategory();
if (current instanceof Folder) {
folders.add((Folder) current);
} else {
throw new IllegalArgumentException(String.format(
"The asset %s is assigned to the category %s with the"
+ "categorization type \"%s\", but the Category is not"
+ "a folder. This is no supported.",
asset.getUuid(),
current.getUuid(),
CATEGORIZATION_TYPE_FOLDER));
}
}
}
Collections.reverse(folders);
return folders;
}
/**
* Gets the folder in which an asset is placed.
*
* @param asset The asset.
*
* @return The folder in which the asset is placed. If the asset is a non
* shared asset an empty {@link Optional} is returned.
*/
@ -295,4 +350,5 @@ public class AssetManager {
})
.findFirst();
}
}

View File

@ -61,6 +61,9 @@ public class AssetRepository
@Inject
private CategoryManager categoryManager;
@Inject
private AssetManager assetManager;
@Override
public Long getEntityId(final Asset asset) {
return asset.getObjectId();
@ -116,7 +119,10 @@ public class AssetRepository
@RequiresPrivilege(AssetPrivileges.DELETE)
final Asset asset) {
if (asset.getItemAttachments().isEmpty()) {
if (assetManager.isAssetInUse(asset)) {
throw new AssetInUseException(String.format("Asset %s is in use.",
asset.getUuid()));
} else {
final List<Category> categories = asset.getCategories()
.stream()
.map(categorization -> categorization.getCategory())
@ -131,9 +137,6 @@ public class AssetRepository
}
ccmObjectRepo.delete(asset);
} else {
throw new AssetInUseException(String.format("Asset %s is in use.",
asset.getUuid()));
}
}

View File

@ -161,7 +161,8 @@ public class ContentItemManager {
*
* @param <T> The type of the content item.
* @param name The name (URL stub) of the new content item.
* @param section The content section in which the item is generated.
* @param section The content section in which the item is
* generated.
* @param folder The folder in which in the item is stored.
* @param workflowTemplate The template for the workflow to apply to the new
* item.
@ -311,8 +312,9 @@ public class ContentItemManager {
*
* @param item The item to copy.
* @param targetFolder The folder in which the copy is created. If the
* target folder is the same folder as the folder of the original item an
* index is appended to the name of the item.
* target folder is the same folder as the folder of the
* original item an index is appended to the name of the
* item.
*
* @return The copy of the item
*/
@ -901,9 +903,9 @@ public class ContentItemManager {
* @param type Type of the content item.
*
* @return The live version of an item. If the item provided is already the
* live version the provided item is returned, otherwise the live version is
* returned. If there is no live version an empty {@link Optional} is
* returned.
* live version the provided item is returned, otherwise the live
* version is returned. If there is no live version an empty
* {@link Optional} is returned.
*/
@AuthorizationRequired
@Transactional(Transactional.TxType.REQUIRED)
@ -961,10 +963,10 @@ public class ContentItemManager {
* @param type Type of the item.
*
* @return The draft version of the provided content item. If the provided
* item is the draft version the provided item is simply returned. Otherwise
* the draft version is retrieved from the database and is returned. Each
* content item has a draft version (otherwise something is seriously wrong
* with the database) this method will
* item is the draft version the provided item is simply returned.
* Otherwise the draft version is retrieved from the database and is
* returned. Each content item has a draft version (otherwise
* something is seriously wrong with the database) this method will
* <b>never</b> return {@code null}.
*/
@AuthorizationRequired
@ -1047,10 +1049,9 @@ public class ContentItemManager {
tokens.add(item.getDisplayName());
Category current = result.get(0).getCategory();
tokens.add(current.getName());
while (current.getParentCategory() != null) {
current = current.getParentCategory();
tokens.add(current.getName());
current = current.getParentCategory();
}
Collections.reverse(tokens);
@ -1075,8 +1076,8 @@ public class ContentItemManager {
* @return
*/
public List<Folder> getItemFolders(final ContentItem item) {
final List<Categorization> result = item.getCategories().stream().
filter(categorization -> {
final List<Categorization> result = item.getCategories().stream()
.filter(categorization -> {
return CATEGORIZATION_TYPE_FOLDER.equals(
categorization.getType());
})

View File

@ -123,14 +123,14 @@ public class AssetManagerTest {
.addClass(com.arsdigita.kernel.KernelConfig.class)
.addClass(com.arsdigita.runtime.CCMResourceManager.class)
.addClass(
com.arsdigita.ui.admin.applications.AbstractAppInstanceForm.class).
addClass(
com.arsdigita.ui.admin.applications.AbstractAppSettingsPane.class).
addClass(
com.arsdigita.ui.admin.applications.DefaultApplicationInstanceForm.class).
addClass(
com.arsdigita.ui.admin.applications.DefaultApplicationSettingsPane.class).
addClass(com.arsdigita.cms.dispatcher.ItemResolver.class)
com.arsdigita.ui.admin.applications.AbstractAppInstanceForm.class)
.addClass(
com.arsdigita.ui.admin.applications.AbstractAppSettingsPane.class)
.addClass(
com.arsdigita.ui.admin.applications.DefaultApplicationInstanceForm.class)
.addClass(
com.arsdigita.ui.admin.applications.DefaultApplicationSettingsPane.class)
.addClass(com.arsdigita.cms.dispatcher.ItemResolver.class)
.addPackage(com.arsdigita.util.Lockable.class.getPackage())
.addPackage(com.arsdigita.web.BaseServlet.class.getPackage())
.addPackage(org.librecms.Cms.class.getPackage())
@ -342,10 +342,10 @@ public class AssetManagerTest {
@ShouldMatchDataSet(
value = "datasets/org/librecms/assets/AssetManagerTest/"
+ "after-clean-orphaned.xml",
excludeColumns = {"object_id",
"uuid"})
excludeColumns = {"timestamp"},
orderBy = {"asset_titles_aud.asset_id"})
public void cleanOrphanedAssets() {
fail();
assetManager.cleanOrphanedAssets();
}
/**
@ -571,15 +571,15 @@ public class AssetManagerTest {
assertThat(catalog, is(not(nullValue())));
assertThat(assetManager.getAssetPath(header),
is(equalTo("/media/header.png")));
is(equalTo("/media/images/header.png")));
assertThat(assetManager.getAssetPath(phb),
is(equalTo("/media/the-phb.png")));
is(equalTo("/media/images/the-phb.png")));
assertThat(assetManager.getAssetPath(servicesHeader),
is(equalTo("/media/services-header.png")));
assertThat(assetManager.getAssetPath(product1Datasheet),
is(equalTo("")));
assertThat(assetManager.getAssetPath(catalog),
is(equalTo("/media/catalog.pdf")));
is(equalTo("/media/downloads/catalog.pdf")));
}
/**
@ -605,15 +605,15 @@ public class AssetManagerTest {
assertThat(catalog, is(not(nullValue())));
assertThat(assetManager.getAssetPath(header, true),
is(equalTo("info:/media/header.png")));
is(equalTo("info:/media/images/header.png")));
assertThat(assetManager.getAssetPath(phb, true),
is(equalTo("info:/media/the-phb.png")));
is(equalTo("info:/media/images/the-phb.png")));
assertThat(assetManager.getAssetPath(servicesHeader, true),
is(equalTo("info:/media/services-header.png")));
assertThat(assetManager.getAssetPath(product1Datasheet, true),
is(equalTo("")));
assertThat(assetManager.getAssetPath(catalog, true),
is(equalTo("info:/media/catalog.pdf")));
is(equalTo("info:/media/downloads/catalog.pdf")));
}
/**
@ -639,7 +639,12 @@ public class AssetManagerTest {
assertThat(catalog, is(not(nullValue())));
final Folder media = folderRepo.findById(-400L);
final Folder images = folderRepo.findById(-410L);
final Folder downloads = folderRepo.findById(-420L);
assertThat(media, is(not(nullValue())));
assertThat(images, is(not(nullValue())));
assertThat(downloads, is(not(nullValue())));
final Optional<Folder> headerFolder = assetManager
.getAssetFolder(header);
@ -658,10 +663,10 @@ public class AssetManagerTest {
assertThat(product1DatasheetFolder.isPresent(), is(false));
assertThat(catalogFolder.isPresent(), is(true));
assertThat(headerFolder.get(), is(equalTo(media)));
assertThat(phbFolder.get(), is(equalTo(media)));
assertThat(headerFolder.get(), is(equalTo(images)));
assertThat(phbFolder.get(), is(equalTo(images)));
assertThat(servicesHeaderFolder.get(), is(equalTo(media)));
assertThat(catalogFolder.get(), is(equalTo(media)));
assertThat(catalogFolder.get(), is(equalTo(downloads)));
}
/**
@ -688,14 +693,18 @@ public class AssetManagerTest {
final Folder infoAssets = folderRepo.findById(-300L);
final Folder media = folderRepo.findById(-400L);
final Folder images = folderRepo.findById(-410L);
final Folder downloads = folderRepo.findById(-420L);
assertThat(infoAssets, is(not(nullValue())));
assertThat(media, is(not(nullValue())));
assertThat(images, is(not(nullValue())));
assertThat(downloads, is(not(nullValue())));
final List<Folder> headerFolders = assetManager.getAssetFolders(header);
final List<Folder> phbFolders = assetManager.getAssetFolders(phb);
final List<Folder> servicesHeaderFolders = assetManager.getAssetFolders(
phb);
servicesHeader);
final List<Folder> product1DatasheetFolders = assetManager.
getAssetFolders(product1Datasheet);
final List<Folder> catalogFolders = assetManager.
@ -713,23 +722,26 @@ public class AssetManagerTest {
assertThat(product1DatasheetFolders.isEmpty(), is(true));
assertThat(catalogFolders.isEmpty(), is(false));
assertThat(headerFolders.size(), is(2));
assertThat(phbFolders.size(), is(2));
assertThat(headerFolders.size(), is(3));
assertThat(phbFolders.size(), is(3));
assertThat(servicesHeaderFolders.size(), is(2));
assertThat(product1DatasheetFolders.size(), is(0));
assertThat(catalogFolders.size(), is(2));
assertThat(catalogFolders.size(), is(3));
assertThat(headerFolders.get(0), is(equalTo(infoAssets)));
assertThat(headerFolders.get(1), is(equalTo(media)));
assertThat(headerFolders.get(2), is(equalTo(images)));
assertThat(phbFolders.get(0), is(equalTo(infoAssets)));
assertThat(phbFolders.get(1), is(equalTo(media)));
assertThat(phbFolders.get(2), is(equalTo(images)));
assertThat(servicesHeaderFolders.get(0), is(equalTo(infoAssets)));
assertThat(servicesHeaderFolders.get(1), is(equalTo(media)));
assertThat(catalogFolders.get(0), is(equalTo(infoAssets)));
assertThat(catalogFolders.get(1), is(equalTo(media)));
assertThat(catalogFolders.get(2), is(equalTo(downloads)));
}

View File

@ -10,6 +10,8 @@
<ccm_core.ccm_revisions id="0"
timestamp="1451602800" />
<ccm_core.ccm_revisions id="1"
timestamp="1451602800" />
<ccm_core.ccm_objects object_id="-100"
display_name="info"
@ -23,6 +25,12 @@
<ccm_core.ccm_objects object_id="-400"
display_name="media"
uuid="f8546369-4d06-47ea-9138-345d29ab8d68" />
<ccm_core.ccm_objects object_id="-410"
display_name="images"
uuid="713d857d-dd0e-4fc5-85d6-d85d25279a10" />
<ccm_core.ccm_objects object_id="-420"
display_name="downloads"
uuid="9d89913d-759e-4de9-b2fb-c6f58e55de09" />
<ccm_core.ccm_objects object_id="-500"
display_name="data"
uuid="18fbc7f4-ce7e-45d6-8dad-02887164b99d" />
@ -44,9 +52,6 @@
<ccm_core.ccm_objects object_id="-1100"
display_name="catalog.pdf"
uuid="cee702ad-79f7-4f78-b93d-46932d958c1c" />
<ccm_core.ccm_objects object_id="-1150"
display_name="orphan.png"
uuid="978849a8-6f2d-4746-bec0-05eccf53fc30" />
<ccm_core.ccm_objects object_id="-1200"
display_name="org.librecms.contenttypes.Article"
uuid="bd061ab6-9c4f-45ff-ab69-f521008eeac3" />
@ -94,6 +99,9 @@
rev="0"
revtype="0"
display_name="orphan.png" />
<ccm_core.ccm_objects_aud object_id="-1150"
rev="1"
revtype="2" />
<ccm_core.categories object_id="-200"
unique_id="82014239-9c06-486d-ae8c-4ae47f52a699"
@ -111,13 +119,31 @@
category_order="1"/>
<ccm_core.categories object_id="-400"
unique_id="f8546369-4d06-47ea-9138-345d29ab8d68"
parent_category_id="-300"
name="media"
enabled="true"
visible="true"
abstract_category="false"
category_order="1"/>
<ccm_core.categories object_id="-410"
unique_id="713d857d-dd0e-4fc5-85d6-d85d25279a10"
parent_category_id="-400"
name="images"
enabled="true"
visible="true"
abstract_category="false"
category_order="1" />
<ccm_core.categories object_id="-420"
unique_id="9d89913d-759e-4de9-b2fb-c6f58e55de09"
parent_category_id="-400"
name="downloads"
enabled="true"
visible="true"
abstract_category="false"
category_order="1" />
<ccm_core.categories object_id="-500"
unique_id="18fbc7f4-ce7e-45d6-8dad-02887164b99d"
parent_category_id="-300"
name="data"
enabled="true"
visible="true"
@ -139,6 +165,7 @@
category_order="1" />
<ccm_core.categories object_id="-1600"
unique_id="ec3f0d51-5d9b-440e-bb5a-5fac7da94af1"
parent_category_id="-1500"
name="media"
enabled="true"
visible="true"
@ -146,6 +173,7 @@
category_order="1" />
<ccm_core.categories object_id="-1700"
unique_id="80086df3-d682-42bb-9939-8cc04a300575"
parent_category_id="-1500"
name="data"
enabled="true"
visible="true"
@ -161,6 +189,12 @@
<ccm_core.category_titles object_id="-400"
locale="en"
localized_value="media" />
<ccm_core.category_titles object_id="-410"
locale="en"
localized_value="images" />
<ccm_core.category_titles object_id="-420"
locale="en"
localized_value="downloads" />
<ccm_core.category_titles object_id="-500"
locale="en"
localized_value="data" />
@ -196,6 +230,10 @@
type="ASSETS_FOLDER" />
<ccm_cms.folders object_id="-400"
type="ASSETS_FOLDER" />
<ccm_cms.folders object_id="-410"
type="ASSETS_FOLDER" />
<ccm_cms.folders object_id="-420"
type="ASSETS_FOLDER" />
<ccm_cms.folders object_id="-500"
type="ASSETS_FOLDER" />
<ccm_cms.folders object_id="-1400"
@ -222,6 +260,10 @@
content_section_id="-100" />
<ccm_cms.folder_content_section_map folder_id="-400"
content_section_id="-100" />
<ccm_cms.folder_content_section_map folder_id="-410"
content_section_id="-100" />
<ccm_cms.folder_content_section_map folder_id="-420"
content_section_id="-100" />
<ccm_cms.folder_content_section_map folder_id="-500"
content_section_id="-100" />
<ccm_cms.folder_content_section_map folder_id="-1400"
@ -247,7 +289,6 @@
<ccm_cms.assets object_id="-900" />
<ccm_cms.assets object_id="-1000" />
<ccm_cms.assets object_id="-1100" />
<ccm_cms.assets object_id="-1150" />
<ccm_cms.assets_aud object_id="-700"
rev="0" />
@ -261,6 +302,9 @@
rev="0" />
<ccm_cms.assets_aud object_id="-1150"
rev="0" />
<ccm_cms.assets_aud object_id="-1150"
rev="1" />
<ccm_cms.asset_titles asset_id="-700"
localized_value="header.png"
@ -275,10 +319,7 @@
localized_value="product1-datasheet.pdf"
locale="en" />
<ccm_cms.asset_titles asset_id="-1100"
localized_value="catelog.pdf"
locale="en" />
<ccm_cms.asset_titles asset_id="-1150"
localized_value="orphan.pdf"
localized_value="catalog.pdf"
locale="en" />
<ccm_cms.binary_assets object_id="-700"
@ -301,10 +342,6 @@
filename="catalog.pdf"
mime_type="application/pdf"
data_size="0"/>
<ccm_cms.binary_assets object_id="-1150"
filename="orphan.png"
mime_type="image/png"
data_size="0"/>
<ccm_cms.binary_assets_aud object_id="-700"
rev="0"
@ -336,6 +373,9 @@
filename="orphan.png"
mime_type="image/png"
data_size="0" />
<ccm_cms.binary_assets_aud object_id="-1150"
rev="1" />
<ccm_cms.images object_id="-700"
height="0"
@ -346,9 +386,6 @@
<ccm_cms.images object_id="-900"
height="0"
width="0" />
<ccm_cms.images object_id="-1150"
height="0"
width="0" />
<ccm_cms.images_aud object_id="-700"
rev="0"
@ -366,6 +403,9 @@
rev="0"
height="0"
width="0" />
<ccm_cms.images_aud object_id="-1150"
rev="1" />
<ccm_cms.files object_id="-1000" />
<ccm_cms.files object_id="-1100" />
@ -375,33 +415,41 @@
<ccm_cms.files_aud object_id="-1100"
rev="0" />
<ccm_cms.asset_titles_aud asset_id="-700"
<ccm_cms.asset_titles_aud asset_id="-1100"
rev="0"
revtype="0"
localized_value="header.png"
localized_value="catalog.pdf"
locale="en" />
<ccm_cms.asset_titles_aud asset_id="-800"
<ccm_cms.asset_titles_aud asset_id="-1150"
rev="0"
revtype="0"
localized_value="the-phb.png"
localized_value="orphan.pdf"
locale="en" />
<ccm_cms.asset_titles_aud asset_id="-1150"
rev="1"
revtype="2" />
<ccm_cms.asset_titles_aud asset_id="-1000"
rev="0"
revtype="0"
localized_value="product1-datasheet.pdf"
locale="en" />
<ccm_cms.asset_titles_aud asset_id="-900"
rev="0"
revtype="0"
localized_value="services-header.png"
locale="en" />
<ccm_cms.asset_titles_aud asset_id="-1000"
<ccm_cms.asset_titles_aud asset_id="-800"
rev="0"
revtype="0"
localized_value="product1-datasheet.pdf"
localized_value="the-phb.png"
locale="en" />
<ccm_cms.asset_titles_aud asset_id="-1100"
<ccm_cms.asset_titles_aud asset_id="-700"
rev="0"
revtype="0"
localized_value="catelog.pdf"
localized_value="header.png"
locale="en" />
<ccm_cms.content_items_aud object_id="-600"
rev="0"
item_uuid="aed4b402-1180-46c6-b42d-7245f4dca248"
@ -454,14 +502,14 @@
category_index="false"
type="folder" />
<ccm_core.categorizations categorization_id="-30200"
category_id="-400"
category_id="-410"
object_id="-700"
category_order="1"
object_order="2"
category_index="false"
type="folder" />
<ccm_core.categorizations categorization_id="-30300"
category_id="-400"
category_id="-410"
object_id="-800"
category_order="1"
object_order="3"
@ -475,7 +523,7 @@
category_index="false"
type="folder" />
<ccm_core.categorizations categorization_id="-30600"
category_id="-400"
category_id="-420"
object_id="-1100"
category_order="1"
object_order="6"

View File

@ -23,6 +23,12 @@
<ccm_core.ccm_objects object_id="-400"
display_name="media"
uuid="f8546369-4d06-47ea-9138-345d29ab8d68" />
<ccm_core.ccm_objects object_id="-410"
display_name="images"
uuid="713d857d-dd0e-4fc5-85d6-d85d25279a10" />
<ccm_core.ccm_objects object_id="-420"
display_name="downloads"
uuid="9d89913d-759e-4de9-b2fb-c6f58e55de09" />
<ccm_core.ccm_objects object_id="-500"
display_name="data"
uuid="18fbc7f4-ce7e-45d6-8dad-02887164b99d" />
@ -111,13 +117,31 @@
category_order="1"/>
<ccm_core.categories object_id="-400"
unique_id="f8546369-4d06-47ea-9138-345d29ab8d68"
parent_category_id="-300"
name="media"
enabled="true"
visible="true"
abstract_category="false"
category_order="1"/>
<ccm_core.categories object_id="-410"
unique_id="713d857d-dd0e-4fc5-85d6-d85d25279a10"
parent_category_id="-400"
name="images"
enabled="true"
visible="true"
abstract_category="false"
category_order="1" />
<ccm_core.categories object_id="-420"
unique_id="9d89913d-759e-4de9-b2fb-c6f58e55de09"
parent_category_id="-400"
name="downloads"
enabled="true"
visible="true"
abstract_category="false"
category_order="1" />
<ccm_core.categories object_id="-500"
unique_id="18fbc7f4-ce7e-45d6-8dad-02887164b99d"
parent_category_id="-300"
name="data"
enabled="true"
visible="true"
@ -139,6 +163,7 @@
category_order="1" />
<ccm_core.categories object_id="-1600"
unique_id="ec3f0d51-5d9b-440e-bb5a-5fac7da94af1"
parent_category_id="-1500"
name="media"
enabled="true"
visible="true"
@ -146,6 +171,7 @@
category_order="1" />
<ccm_core.categories object_id="-1700"
unique_id="80086df3-d682-42bb-9939-8cc04a300575"
parent_category_id="-1500"
name="data"
enabled="true"
visible="true"
@ -161,6 +187,12 @@
<ccm_core.category_titles object_id="-400"
locale="en"
localized_value="media" />
<ccm_core.category_titles object_id="-410"
locale="en"
localized_value="images" />
<ccm_core.category_titles object_id="-420"
locale="en"
localized_value="downloads" />
<ccm_core.category_titles object_id="-500"
locale="en"
localized_value="data" />
@ -196,6 +228,10 @@
type="ASSETS_FOLDER" />
<ccm_cms.folders object_id="-400"
type="ASSETS_FOLDER" />
<ccm_cms.folders object_id="-410"
type="ASSETS_FOLDER" />
<ccm_cms.folders object_id="-420"
type="ASSETS_FOLDER" />
<ccm_cms.folders object_id="-500"
type="ASSETS_FOLDER" />
<ccm_cms.folders object_id="-1400"
@ -222,6 +258,10 @@
content_section_id="-100" />
<ccm_cms.folder_content_section_map folder_id="-400"
content_section_id="-100" />
<ccm_cms.folder_content_section_map folder_id="-410"
content_section_id="-100" />
<ccm_cms.folder_content_section_map folder_id="-420"
content_section_id="-100" />
<ccm_cms.folder_content_section_map folder_id="-500"
content_section_id="-100" />
<ccm_cms.folder_content_section_map folder_id="-1400"
@ -275,7 +315,7 @@
localized_value="product1-datasheet.pdf"
locale="en" />
<ccm_cms.asset_titles asset_id="-1100"
localized_value="catelog.pdf"
localized_value="catalog.pdf"
locale="en" />
<ccm_cms.asset_titles asset_id="-1150"
localized_value="orphan.pdf"
@ -398,9 +438,13 @@
<ccm_cms.asset_titles_aud asset_id="-1100"
rev="0"
revtype="0"
localized_value="catelog.pdf"
localized_value="catalog.pdf"
locale="en" />
<ccm_cms.asset_titles_aud asset_id="-1150"
rev="0"
revtype="0"
localized_value="orphan.pdf"
locale="en" />
<ccm_cms.content_items_aud object_id="-600"
rev="0"
@ -454,14 +498,14 @@
category_index="false"
type="folder" />
<ccm_core.categorizations categorization_id="-30200"
category_id="-400"
category_id="-410"
object_id="-700"
category_order="1"
object_order="2"
category_index="false"
type="folder" />
<ccm_core.categorizations categorization_id="-30300"
category_id="-400"
category_id="-410"
object_id="-800"
category_order="1"
object_order="3"
@ -475,7 +519,7 @@
category_index="false"
type="folder" />
<ccm_core.categorizations categorization_id="-30600"
category_id="-400"
category_id="-420"
object_id="-1100"
category_order="1"
object_order="6"

View File

@ -177,7 +177,7 @@
localized_value="product1-datasheet.pdf"
locale="en" />
<ccm_cms.asset_titles asset_id="-1100"
localized_value="catelog.pdf"
localized_value="catalog.pdf"
locale="en" />
<ccm_cms.binary_assets object_id="-700"
@ -278,7 +278,7 @@
<ccm_cms.asset_titles_aud asset_id="-1100"
rev="0"
revtype="0"
localized_value="catelog.pdf"
localized_value="catalog.pdf"
locale="en" />
<ccm_cms.asset_titles_aud asset_id="-800"
rev="1"

View File

@ -177,7 +177,7 @@
localized_value="product1-datasheet.pdf"
locale="en" />
<ccm_cms.asset_titles asset_id="-1100"
localized_value="catelog.pdf"
localized_value="catalog.pdf"
locale="en" />
<ccm_cms.binary_assets object_id="-700"
@ -280,7 +280,7 @@
<ccm_cms.asset_titles_aud asset_id="-1100"
rev="0"
revtype="0"
localized_value="catelog.pdf"
localized_value="catalog.pdf"
locale="en" />