Browse Source

create SCORM Sites template

master
Larry L 1 year ago
parent
commit
f0c098ae57
  1. 56
      core/src/main/java/com/mcaps/core/models/CourseModel.java
  2. 30
      core/src/main/java/com/mcaps/core/workflows/ScormExtractor.java
  3. 6
      ui.apps/src/main/content/jcr_root/apps/mcaps-site/components/blankpage/.content.xml
  4. 3
      ui.apps/src/main/content/jcr_root/apps/mcaps-site/components/blankpage/course-template.html
  5. 5
      ui.apps/src/main/content/jcr_root/apps/mcaps-site/components/blankpage/course.html
  6. 12
      ui.apps/src/main/content/jcr_root/apps/mcaps-site/components/blankpage/page.html
  7. 9
      ui.content/src/main/content/jcr_root/conf/mcaps-site/settings/wcm/templates/content-package-page/initial/.content.xml

56
core/src/main/java/com/mcaps/core/models/CourseModel.java

@ -0,0 +1,56 @@
package com.mcaps.core.models;
import static org.apache.sling.api.resource.ResourceResolver.PROPERTY_RESOURCE_TYPE;
import javax.annotation.PostConstruct;
import org.apache.sling.api.resource.Resource;
import org.apache.sling.api.resource.ResourceResolver;
import org.apache.sling.models.annotations.Default;
import org.apache.sling.models.annotations.Model;
import org.apache.sling.models.annotations.injectorspecific.InjectionStrategy;
import org.apache.sling.models.annotations.injectorspecific.OSGiService;
import org.apache.sling.models.annotations.injectorspecific.SlingObject;
import org.apache.sling.models.annotations.injectorspecific.ValueMapValue;
import com.day.cq.wcm.api.Page;
import com.day.cq.wcm.api.PageManager;
import java.util.Optional;
@Model(adaptables = Resource.class)
public class CourseModel {
@ValueMapValue(name=PROPERTY_RESOURCE_TYPE, injectionStrategy=InjectionStrategy.OPTIONAL)
@Default(values="No resourceType")
protected String resourceType;
@SlingObject
private Resource currentResource;
@SlingObject
private ResourceResolver resourceResolver;
private String message;
private String html;
@PostConstruct
protected void init() {
PageManager pageManager = resourceResolver.adaptTo(PageManager.class);
String currentPagePath = Optional.ofNullable(pageManager)
.map(pm -> pm.getContainingPage(currentResource))
.map(Page::getPath).orElse("");
message = "Hello World!\n"
+ "Resource type is: " + resourceType + "\n"
+ "Current page is: " + currentPagePath + "\n";
}
public String getMessage() {
return message;
}
public String getHtml() {
return "<body><h1>TESTING</h1></body>";
}
}

30
core/src/main/java/com/mcaps/core/workflows/ScormExtractor.java

@ -9,6 +9,14 @@ import java.io.InputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import javax.jcr.AccessDeniedException;
import javax.jcr.Node;
import javax.jcr.RepositoryException;
import javax.jcr.lock.LockException;
import javax.jcr.nodetype.ConstraintViolationException;
import javax.jcr.version.VersionException;
import org.apache.sling.api.resource.PersistenceException;
import org.apache.sling.api.resource.Resource;
import org.apache.sling.api.resource.ResourceResolver;
import org.osgi.framework.Constants;
@ -46,10 +54,26 @@ public class ScormExtractor implements WorkflowProcess {
log.warn("SCORM WORKFLOW: MetaDataMap args: " + mdm.get("PROCESS_ARGS", "string").toString());
String[] params = mdm.get("PROCESS_ARGS", "string").toString().split(",");
//String attachmentsPath = params[0];
String excludePath = params[0];
String saveToLocation = params[1];
String payloadPath = wi.getContentPath().replace("/jcr:content/renditions/original","");
unzipFile(payloadPath, saveToLocation);
//unzipFile(payloadPath, saveToLocation);
String nodePath = wi.getContentPath().replace(".zip/jcr:content/renditions/original","");
cleanup(nodePath, excludePath, resourceResolver);
}
private void cleanup(String path, String excludePath, ResourceResolver resourceResolver) {
log.warn("SCORM WORKFLOW: inside cleanup: path - " + path);
Resource resource = resourceResolver.getResource(path + File.separator + excludePath);
//Node zipNode = resource.adaptTo(Node.class);
try {
resourceResolver.delete(resource);
resourceResolver.commit();
} catch (PersistenceException e) {
e.printStackTrace();
}
}
private void unzipFile(String filePath, String outputFolder) {
@ -82,7 +106,7 @@ public class ScormExtractor implements WorkflowProcess {
log.warn("SCORM WORKFLOW: file extracted: " + zipFilePath);
}
}
zipIn.closeEntry();
entry = zipIn.getNextEntry();
}

6
ui.apps/src/main/content/jcr_root/apps/mcaps-site/components/blankpage/.content.xml

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
jcr:primaryType="cq:Component"
jcr:title="MCAPS Site Blank Page"
sling:resourceSuperType="core/wcm/components/page/v3/page"
componentGroup=".hidden"/>

3
ui.apps/src/main/content/jcr_root/apps/mcaps-site/components/blankpage/course-template.html

@ -0,0 +1,3 @@
<template data-sly-template.include="${@ statichtml}">
${statichtml}
</template>

5
ui.apps/src/main/content/jcr_root/apps/mcaps-site/components/blankpage/course.html

@ -0,0 +1,5 @@
<sly
data-sly-use.course="${'course-template.html'}"
data-sly-use.courseModel = "com.mcaps.core.models.CourseModel"
data-sly-call="${course.include @ statichtml = courseModel.html}"
/>

12
ui.apps/src/main/content/jcr_root/apps/mcaps-site/components/blankpage/page.html

@ -0,0 +1,12 @@
<!DOCTYPE HTML>
<html data-sly-use.page="com.adobe.cq.wcm.core.components.models.Page" lang="${page.language}"
data-sly-use.pwa="com.adobe.cq.wcm.core.components.models.PWA"
data-sly-use.head="head.html">
<head data-sly-call="${head.head @ page = page, pwa = pwa}"></head>
<body class="${page.cssClassNames}"
id="${page.id}">
<h1>SCORM Test</h1>
<sly data-sly-include="course.html"></sly>
</sly>
</body>
</html>

9
ui.content/src/main/content/jcr_root/conf/mcaps-site/settings/wcm/templates/content-package-page/initial/.content.xml

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:nt="http://www.jcp.org/jcr/nt/1.0"
jcr:primaryType="cq:Page">
<jcr:content
cq:template="/conf/mcaps-site/settings/wcm/templates/page-content"
jcr:primaryType="cq:PageContent"
sling:resourceType="mcaps-site/components/blankpage">
</jcr:content>
</jcr:root>
Loading…
Cancel
Save