Skip to content

Commit 3e2c08b

Browse files
Version push
1 parent 60d4c5f commit 3e2c08b

83 files changed

Lines changed: 2609 additions & 296 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

LICENSE

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
MIT License
22

3-
Copyright (c) 2020 cloudinary-labs
3+
Copyright (c) 2020 Cloudinary
44

55
Permission is hereby granted, free of charge, to any person obtaining a copy
66
of this software and associated documentation files (the "Software"), to deal

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ Get your cloudname, api_key and api_secret from your Cloudinary account [as desc
1111
## Additional resources ##########################################################
1212

1313
Additional resources are available at:
14-
14+
* [Cloudinary extension in SAP store](https://store.sap.com/dcp/en/product/display-0000059939_live_v1/Cloudinary%20for%20SAP%20Commerce)
1515
* [Cloudinary Website](https://cloudinary.com)
1616
* [Cloudinary Documentation](https://cloudinary.com/documentation)
1717
* [Knowledge Base](https://support.cloudinary.com/hc/en-us)

ext-cloudinary/cloudinary/cloudinarymediaaddon/.project

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,20 @@
2525
<arguments>
2626
</arguments>
2727
</buildCommand>
28-
2928
</buildSpec>
3029
<natures>
3130
<nature>org.springframework.ide.eclipse.core.springnature</nature>
3231
<nature>org.eclipse.jdt.core.javanature</nature>
3332
</natures>
33+
<filteredResources>
34+
<filter>
35+
<id>1648658182311</id>
36+
<name></name>
37+
<type>30</type>
38+
<matcher>
39+
<id>org.eclipse.core.resources.regexFilterMatcher</id>
40+
<arguments>node_modules|.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__</arguments>
41+
</matcher>
42+
</filter>
43+
</filteredResources>
3444
</projectDescription>
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,19 @@
11
package uk.ptr.cloudinary.controllers.cms;
22

3+
import atg.taglib.json.util.JSONArray;
34
import atg.taglib.json.util.JSONException;
45
import atg.taglib.json.util.JSONObject;
56
import com.cloudinary.Cloudinary;
6-
import com.fasterxml.jackson.core.type.TypeReference;
7-
import com.fasterxml.jackson.databind.ObjectMapper;
87
import de.hybris.platform.addonsupport.controllers.cms.AbstractCMSAddOnComponentController;
8+
import de.hybris.platform.cms2.model.contents.ContentCatalogModel;
99
import de.hybris.platform.core.model.components.CloudinaryVideoComponentModel;
10-
import org.apache.commons.lang.BooleanUtils;
10+
import org.apache.commons.lang3.BooleanUtils;
11+
import org.apache.commons.lang3.StringUtils;
1112
import org.apache.log4j.Logger;
1213
import org.springframework.stereotype.Controller;
1314
import org.springframework.ui.Model;
1415
import org.springframework.web.bind.annotation.RequestMapping;
15-
import uk.ptr.cloudinary.controllers.pages.ProductPageController;
16+
import uk.ptr.cloudinary.constants.CloudinarymediacoreConstants;
1617
import uk.ptr.cloudinary.facades.CloudinaryConfigFacade;
1718
import uk.ptr.cloudinary.model.CloudinaryConfigModel;
1819

@@ -27,33 +28,118 @@ public class CloudinaryVideoComponentController extends
2728

2829
private static final Logger LOG = Logger.getLogger(CloudinaryVideoComponentController.class);
2930

31+
private static String PLAYER = "player";
32+
private static String SOURCE = "source";
33+
private static String SOURCE_TYPE = "sourceTypes";
34+
private static String PUBLIC_ID = "publicId";
35+
private static String RAW_TRANSFORMATION= "raw_transformation";
36+
private static String TRANSFORMATION= "transformation";
37+
3038
@Resource
3139
private CloudinaryConfigFacade cloudinaryConfigFacade;
3240

3341
@Override
3442
protected void fillModel(HttpServletRequest request, Model model, CloudinaryVideoComponentModel component) {
3543

3644
CloudinaryConfigModel cloudinaryConfigModel = cloudinaryConfigFacade.getCloudinaryConfig();
37-
String transformationString = component.getTransformation();
45+
if (BooleanUtils.isTrue(cloudinaryConfigModel.getEnableCloudinary()) && BooleanUtils.isTrue(cloudinaryConfigModel.getEnableCloudinaryVideoPlayer())) {
46+
47+
String transformationJson = cloudinaryConfigModel.getVideoPlayerTransformation();
48+
String transformationString = setTransformationString(component,model, cloudinaryConfigModel);
49+
50+
createJsonData(model, component, transformationJson, transformationString);
51+
52+
if (cloudinaryConfigModel.getCloudinaryURL() != null) {
53+
Cloudinary cloudinary = new Cloudinary(cloudinaryConfigModel.getCloudinaryURL());
54+
cloudinary.setUserAgent(CloudinarymediacoreConstants.CLOUDINARYSAPCC, CloudinarymediacoreConstants.CLOUDINARY_VERSION + "(SAPCC" + CloudinarymediacoreConstants.SAP_VERSION + ")");
55+
56+
model.addAttribute("cloudName", cloudinary.config.cloudName);
57+
}
58+
model.addAttribute("cloudinaryConfig", cloudinaryConfigModel);
59+
model.addAttribute("componentVideo", component.getCloudinaryVideo());
60+
model.addAttribute("showComponent", true);
61+
} else {
62+
model.addAttribute("showComponent", false);
63+
}
64+
}
65+
66+
private void createJsonData(Model model, CloudinaryVideoComponentModel component, String transformationJson, String transformationString) {
67+
try {
68+
preparePlayerJson(transformationJson, model);
69+
70+
JSONObject sourceJsonData = prepareSourceJson(transformationJson, model);
71+
if(component.getCloudinaryVideo() != null) {
72+
sourceJsonData.put(PUBLIC_ID, component.getCloudinaryVideo().getCloudinaryPublicId());
73+
}
74+
appendTransformationString(sourceJsonData, model, transformationString);
75+
model.addAttribute("sourceJsonData", sourceJsonData);
76+
}
77+
catch (JSONException e) {
78+
LOG.error("Exception occurred while formatting transformation value ", e);
79+
}
80+
}
81+
82+
private void appendTransformationString(JSONObject sourceJsonData, Model model, String transformationString) {
3883
try {
39-
if (transformationString != null) {
40-
String transformation = transformationString.replaceAll("\'", "\"");
84+
if (StringUtils.isNotEmpty(transformationString)) {
85+
JSONObject jsonObject =new JSONObject();
86+
JSONArray jsonArray = new JSONArray();
87+
88+
jsonObject.put(RAW_TRANSFORMATION, transformationString);
89+
jsonArray.put(jsonObject);
90+
sourceJsonData.put(TRANSFORMATION, jsonArray);
91+
model.addAttribute("sourceJsonData", sourceJsonData);
92+
}
93+
} catch (JSONException e) {
94+
LOG.error("Exception occurred while formatting transformation value ", e);
95+
}
96+
}
97+
98+
private void preparePlayerJson(String transformationJson, Model model) {
99+
try {
100+
if (transformationJson != null) {
101+
String transformation = transformationJson.replaceAll("\'", "\"");
41102
JSONObject jsonObj = new JSONObject(transformation);
42-
model.addAttribute("transformation", jsonObj);
103+
if (transformationJson.contains(PLAYER)) {
104+
JSONObject playerJsonData = jsonObj.getJSONObject(PLAYER);
105+
model.addAttribute("playerJsonData", playerJsonData);
106+
}
43107
}
44108
}
45-
catch (JSONException e){
109+
catch (JSONException e) {
46110
LOG.error("Exception occurred while formatting transformation value ", e);
47111
}
48-
if(BooleanUtils.isTrue(cloudinaryConfigModel.getEnableCloudinary()))
49-
{
50-
if(cloudinaryConfigModel.getCloudinaryURL()!= null){
51-
Cloudinary cloudinary = new Cloudinary(cloudinaryConfigModel.getCloudinaryURL());
52-
model.addAttribute("cloudName", cloudinary.config.cloudName);
112+
}
113+
114+
115+
private JSONObject prepareSourceJson(String transformationJson, Model model) {
116+
117+
JSONObject sourceJson = new JSONObject();
118+
try{
119+
if (transformationJson != null) {
120+
String transformation = transformationJson.replaceAll("\'", "\"");
121+
JSONObject jsonObj = new JSONObject(transformation);
122+
if (transformationJson.contains(SOURCE)) {
123+
JSONObject sourceJsonData = jsonObj.getJSONObject(SOURCE);
124+
if (sourceJsonData.get(SOURCE_TYPE) != null) {
125+
sourceJson.put(SOURCE_TYPE, sourceJsonData.get(SOURCE_TYPE));
126+
return sourceJson;
127+
}
128+
}
53129
}
54-
model.addAttribute("cloudinaryConfig", cloudinaryConfigModel);
55130
}
56-
model.addAttribute("componentVideo", component.getCloudinaryVideo());
131+
catch (JSONException e) {
132+
LOG.error("Exception occurred while formatting transformation value ", e);
133+
}
134+
return sourceJson;
135+
}
57136

137+
private String setTransformationString(CloudinaryVideoComponentModel component,Model model, CloudinaryConfigModel cloudinaryConfigModel) {
138+
139+
if (component.getCatalogVersion().getCatalog() instanceof ContentCatalogModel) {
140+
return cloudinaryConfigModel.getCloudinaryGlobalContentVideoTransformation();
141+
} else {
142+
return cloudinaryConfigModel.getCloudinaryGlobalVideoTransformation();
143+
}
58144
}
59-
}
145+
}

ext-cloudinary/cloudinary/cloudinarymediaaddon/acceleratoraddon/web/src/uk/ptr/cloudinary/controllers/pages/ProductPageController.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -419,6 +419,8 @@ protected void populateProductDetailForDisplay(final String productCode, final M
419419
if (BooleanUtils.isTrue(cloudinaryConfigModel.getEnableCloudinary()) && BooleanUtils.isTrue(cloudinaryConfigModel.getEnableCloudinaryGalleryWidget())) {
420420
if (cloudinaryConfigModel.getCloudinaryURL() != null) {
421421
Cloudinary cloudinary = new Cloudinary(cloudinaryConfigModel.getCloudinaryURL());
422+
cloudinary.setUserAgent(CloudinarymediacoreConstants.CLOUDINARYSAPCC, CloudinarymediacoreConstants.CLOUDINARY_VERSION + "(SAPCC" + CloudinarymediacoreConstants.SAP_VERSION + ")");
423+
422424
model.addAttribute("cloudName", cloudinary.config.cloudName);
423425
model.addAttribute("cName", cloudinary.config.cname);
424426
}

ext-cloudinary/cloudinary/cloudinarymediaaddon/acceleratoraddon/web/src/uk/ptr/cloudinary/interceptors/beforeview/CloudinaryBeforeViewHandler.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import org.apache.commons.lang.BooleanUtils;
77
import org.apache.log4j.Logger;
88
import org.springframework.web.servlet.ModelAndView;
9+
import uk.ptr.cloudinary.constants.CloudinarymediacoreConstants;
910
import uk.ptr.cloudinary.facades.CloudinaryConfigFacade;
1011
import uk.ptr.cloudinary.model.CloudinaryConfigModel;
1112

@@ -33,6 +34,8 @@ public void beforeView(final HttpServletRequest request, final HttpServletRespon
3334
if(BooleanUtils.isTrue(cloudinaryConfig.getEnableCloudinary()) && BooleanUtils.isTrue(cloudinaryConfig.getCloudinaryResponsive()) && cloudinaryConfig.getCloudinaryURL()!= null) {
3435

3536
Cloudinary cloudinary = new Cloudinary(cloudinaryConfig.getCloudinaryURL());
37+
cloudinary.setUserAgent(CloudinarymediacoreConstants.CLOUDINARYSAPCC, CloudinarymediacoreConstants.CLOUDINARY_VERSION + "(SAPCC" + CloudinarymediacoreConstants.SAP_VERSION + ")");
38+
3639
modelAndView.addObject("cloudName", cloudinary.config.cloudName);
3740
modelAndView.addObject("max", cloudinaryConfig.getCloudinaryImageWidthLimitMax());
3841
modelAndView.addObject("min", cloudinaryConfig.getCloudinaryImageWidthLimitMin());

ext-cloudinary/cloudinary/cloudinarymediaaddon/acceleratoraddon/web/webroot/WEB-INF/views/responsive/cms/cloudinarygallerycomponent.jsp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
<input id="c_name" type="hidden" value="${cName}"/>
1111
<input id="cloudinaryGalleryConfigJsonString" type="hidden" value='${cloudinaryConfig.cloudinaryGalleryConfigJsonString}'/>
1212

13-
<div class="image-gallery js-gallery">
13+
<div class="image-gallery-cloudinary js-gallery">
1414
<span class="image-gallery__zoom-icon glyphicon glyphicon-resize-full"></span>
1515
<div id="my-gallery" style="max-width:80%;margin:auto">
1616
</div>
@@ -65,6 +65,7 @@
6565
var galleryBaseJson = {
6666
"container": "#my-gallery",
6767
"cloudName": cloudName,
68+
"queryParam": "AJ",
6869
6970
"mediaAssets": media_assets,
7071
...galleryConfigJson
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
<%@ page trimDirectiveWhitespaces="true"%>
2+
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
23
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
34

45
<html>
@@ -9,20 +10,17 @@
910
<script src="https://unpkg.com/cloudinary-video-player@1.5.1/dist/cld-video-player.min.js"
1011
type="text/javascript"></script>
1112

12-
<video
13-
id="cloudinaryVideoPlayer"
14-
controls
15-
muted
16-
class="cld-video-player cld-video-player-skin-dark"
17-
data-cld-source-types='["mp4", "ogg", "webm"]'
18-
data-cld-public-id="${componentVideo.cloudinaryPublicId}"
19-
data-cld-source-transformation= '${transformation}'>
20-
</video>
21-
22-
<script type="text/javascript">
23-
var cld = cloudinary.Cloudinary.new({ cloud_name: "${cloudName}", secure: true});
24-
var player = cld.videoPlayer('cloudinaryVideoPlayer');
25-
</script>
26-
13+
<c:choose>
14+
<c:when test="${showComponent}">
15+
<video id="cloudinaryVideoPlayer" playsinline controls muted autoplay class="cld-video-player">
16+
</video>
17+
<script type="text/javascript">
18+
var cld = cloudinary.Cloudinary.new({ cloud_name: "${cloudName}", secure: true});
19+
var player = cld.videoPlayer('cloudinaryVideoPlayer', ${playerJsonData});
20+
player.source(${sourceJsonData});
21+
</script>
22+
</c:when>
23+
<c:otherwise></c:otherwise>
24+
</c:choose>
2725
</body>
2826
</html>

ext-cloudinary/cloudinary/cloudinarymediaaddon/resources/cloudinarymediaaddon-items.xml

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,6 @@
2323
<modifiers read="true" write="true" search="true" optional="true" initial="true"/>
2424
<persistence type="property"/>
2525
</attribute>
26-
<attribute qualifier="transformation" type="java.lang.String">
27-
<description>Cloudinary Video Transformation String</description>
28-
<modifiers read="true" write="true" search="true" optional="true" initial="true"/>
29-
<persistence type="property"/>
30-
</attribute>
3126
</attributes>
3227
</itemtype>
3328

ext-cloudinary/cloudinary/cloudinarymediaaddon/resources/localization/cloudinarymediaaddon-locales_en.properties

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,4 +23,3 @@ type.CloudinaryGalleryComponent.name=Cloudinary Gallery
2323

2424
type.CloudinaryVideoComponent.name=Cloudinary Video
2525
type.CloudinaryVideoComponent.cloudinaryVideo.name=Video
26-
type.CloudinaryVideoComponent.transformation.name=Video Transformation

0 commit comments

Comments
 (0)