- In the root pom.xml configure in the properties a version for the plugin, make sure to include the required repository in the repositories section and add the bellow dependency both in the dependencyManagement and dependencies section
<properties>
<brxm.s3.manager.version>x.y.z</brxm.s3.manager.version>
</properties>
<repositories>
<!-- SNIP -->
<repository>
<id>bloomreach-maven2-forge</id>
<name>Bloomreach Maven 2 Repository</name>
<url>https://maven.bloomreach.com/repository/maven2-forge/</url>
</repository>
<!-- SNIP -->
</repositories>
<dependencyManagement>
<dependencies>
<!--SNIP-->
<dependency>
<groupId>com.bloomreach.xm.manager</groupId>
<artifactId>brxm-s3-manager-common</artifactId>
<version>${brxm.s3.manager.version}</version>
<scope>provided</scope>
</dependency>
<!--SNIP-->
</dependencies>
</dependencyManagement>
<dependencies>
<!--SNIP-->
<dependency>
<groupId>com.bloomreach.xm.manager</groupId>
<artifactId>brxm-s3-manager-common</artifactId>
<version>${brxm.s3.manager.version}</version>
<scope>provided</scope>
</dependency>
<!--SNIP-->
</dependencies>- In the root pom.xml under the profile cargo run and in the
<build>
<plugins>
<plugin>
<groupId>org.codehaus.cargo</groupId>
<artifactId>cargo-maven3-plugin</artifactId>
<!--SNIP-->
<configuration>
<container>
<!--SNIP-->
<dependencies>
<!--SNIP-->
<dependency>
<groupId>com.bloomreach.xm.manager</groupId>
<artifactId>brxm-s3-manager-common</artifactId>
<classpath>shared</classpath>
</dependency>
<!--SNIP-->
</dependencies>
</container>
</configuration
</plugin>
</plugins>
</build- In the
src/main/assembly/shared-lib-component.xmladd the below entry
<include>com.bloomreach.xm.manager:brxm-s3-manager-common</include>- Add the below dependencies in the
cms-dependencies/pom.xml
<dependency>
<groupId>com.bloomreach.xm.manager</groupId>
<artifactId>brxm-s3-manager-common</artifactId>
</dependency>
<dependency>
<groupId>com.bloomreach.xm.manager</groupId>
<artifactId>brxm-s3-manager-api</artifactId>
<version>${brxm.s3.manager.version}</version>
</dependency>
<dependency>
<groupId>com.bloomreach.xm.manager</groupId>
<artifactId>brxm-s3-manager-repository</artifactId>
<version>${brxm.s3.manager.version}</version>
</dependency>
<dependency>
<groupId>com.bloomreach.xm.manager</groupId>
<artifactId>brxm-s3-manager-frontend-app</artifactId>
<version>${brxm.s3.manager.version}</version>
</dependency>- Add the below dependencies in the
site/components/pom.xml
<dependency>
<groupId>com.bloomreach.xm.manager</groupId>
<artifactId>brxm-s3-manager-common</artifactId>
</dependency>
<dependency>
<groupId>com.bloomreach.xm.manager</groupId>
<artifactId>brxm-s3-manager-site</artifactId>
<version>${brxm.s3.manager.version}</version>
</dependency>- In the
site/webapp/src/main/webapp/WEB-INF/web.xmladd to the hst-beans-annotated-classes parameter (comma separated value) the value below
classpath*:com/bloomreach/xm/manager/**/*.class- In the content bean of the document type that you have enabled the S3 compound add a getter similar to this
@HippoEssentialsGenerated(internalName = "demo:assets", allowModifications = false)
public S3managerpicker getAssets() {
return getBean("demo:assets", S3managerpicker.class);
}The configuration of the S3 manager daemon module can be accessed and modified from the Console under /hippo:configuration/hippo:modules/s3manager
Note : The daemon module can be reconfigured while the application is running.The changes will be picked up without the need to restart it. However, all uploads in progress will be aborted.
| property | type | default value | required | description | notes |
|---|---|---|---|---|---|
| accessKey | string | none | yes | your S3 access key | Optionally, if required this property can be passed as an environment variable or system property with the name XM_S3_ACCESS_KEY. In this case the module configuration property is not required. The order we check the configuration is environment, system and module. |
| secretKey | string | none | yes | your S3 secret key | Optionally, if required this property can be passed as an environment variable or system property with the name XM_S3_SECRET_KEY. In this case the module configuration property is not required. The order we check the configuration is environment, system and module. |
| region | string | none | yes | the appropriate AWS region for your account. For a full list of the available regions please visit this page | |
| bucket | string | none | yes | your S3 bucket name | |
| presigned | boolean | false | yes | flag to generate either static or presigned URLs during rendering | |
| aclEnabled | boolean | true | no | flag for ACL enabled buckets | |
| expirationTime | long | none | no | used with presigned true and value is expiration in minutes | the default signing algorithm requires a minimum expiration of 1 second and a maximum expiration of 7 days |
| allowedExtensions | multi string | null | no | optionally define the list of allowed mime types or extensions for the upload operation Eg.: image/*, application/pdf, .psd |
|
| maxFileSize | long | 160000 | no | the maximum allowed file size in MB. | |
| chunkSize | long | 5 | no | the size of chunks in MB for a multi part upload. | |
| timeout | long | 0 | no | the time a call will timeout in milliseconds. 0 is the value for no timeout. |
The plugin provides 4 different user roles.
| role | description |
|---|---|
| xm.s3manager.user | General role that gives the right to utilise the plugin and make selections. |
| xm.s3manager-create.user | Role that grants the create folder right. |
| xm.s3manager-upload.user | Role that grants the upload files to S3 right. |
| xm.s3manager-delete.user | Role that grants delete rights on any folder/asset. |
| xm.s3manager-view.* | Since version 4.0.0 Role that grants view permission on the directory defined. Where * should be a directory path (segments must be separated by dots eg. xm.s3manager-view.level1) |
| xm.s3manager-exclude.* | Since version 4.0.0 Role that removes view permission from the directory defined. Where * should be a directory path (segments must be separated by dots eg. xm.s3manager-view.level1.level2) |
If you are editing directly a yaml file, configure the below property on the /cluster.options: node of an RTF field in a document type of your project or on global level /hippo:namespaces/system/Html/editor:templates/_default_
ckeditor.config.overlayed.json: '{ extraPlugins: ''iframedialog,s3manager'' }'If configuring the document via Console or CMS document editor
ckeditor.config.overlayed.json: { extraPlugins: 'iframedialog,s3manager' }-
Add custom content rewriter for RTF
In your project add the below line in
site/webapp/src/main/webapp/WEB-INF/hst-config.properties
default.hst.contentrewriter.class = com.bloomreach.xm.manager.rewriter.S3AssetsLinkRewriter- S3 asset manager as compound on document level.
- S3 asset manager as ckeditor plugin for RTF field.
- Add selected assets collection to documents field.
- Selected assets after addition become disabled to avoid duplicate selection.
- Manage currently selected assets.
- Delete selected assets directly from your S3.
- Create a new folder in your S3 in the current directory.
- Upload new assets directly to your S3 in the current directory from your local storage.
Note : ckeditor though uses the same UI operates as a single select.
The plugin supports two possible operations
- anchor tag generation with
hrefto S3 asset - img tag generation with
srcto S3 asset
- S3 plugin icon
- Selected text that was transformed to an anchor with
hrefto an S3 asset. - Image tag that was generated with
srcfrom an S3 image asset.
Anchor generation
- Select the desired text from the RTF field and click on the S3 icon.
- Select an asset, add it to the collection and click OK.
Image generation
- Without selecting any text click on the S3 icon.
- Select an image asset, add it to the collection and click OK.
| CMS Version | XM S3 Manager Version | Release Notes |
|---|---|---|
| 16.x.x | 4.0.0 3.1.0 |
4.0.0 - Add support for role based folder access 3.1.0 - Upgrade from v1 to v2 of the AWS S3 SDK 3.0.0 - Upgrade to BrXM version 16.x |
| 15.x.x | 2.0.1 | 2.0.1 - Fix creation of S3 links in CK editor 2.0.0 - Fix multipart upload, Add backwards compatible support for ACL enabled backets, Added basic operations audit logging (AwsS3ProxyController log level info) 1.0.0 - Upgrade to BrXM version 15.x |
| 14.x.x | 0.5.0 | Minor bug fixes |


