Harmonized poms
This commit is contained in:
parent
308352d2f9
commit
af3993cfef
|
@ -29,13 +29,6 @@
|
||||||
|
|
||||||
<dependencyManagement>
|
<dependencyManagement>
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<dependency>
|
|
||||||
<groupId>org.gcube.distribution</groupId>
|
|
||||||
<artifactId>gcube-bom</artifactId>
|
|
||||||
<version>${gcube-bom-version}</version>
|
|
||||||
<type>pom</type>
|
|
||||||
<scope>import</scope>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.gcube.distribution</groupId>
|
<groupId>org.gcube.distribution</groupId>
|
||||||
<artifactId>gcube-smartgears-bom</artifactId>
|
<artifactId>gcube-smartgears-bom</artifactId>
|
||||||
|
|
|
@ -3,7 +3,6 @@
|
||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
<artifactId>concessioni-lifecycle</artifactId>
|
<artifactId>concessioni-lifecycle</artifactId>
|
||||||
<version>1.0.1-SNAPSHOT</version>
|
<version>1.0.1-SNAPSHOT</version>
|
||||||
<name>GNA Concessioni Lifecycle</name>
|
<name>GNA Concessioni Lifecycle</name>
|
||||||
|
@ -64,6 +63,7 @@
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.gcube.data.transfer</groupId>
|
<groupId>org.gcube.data.transfer</groupId>
|
||||||
<artifactId>data-transfer-library</artifactId>
|
<artifactId>data-transfer-library</artifactId>
|
||||||
|
<version>[1.2.1,2.0.0-SNAPSHOT)</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,10 +1,13 @@
|
||||||
package org.gcube.application.geoportal.client.legacy;
|
package org.gcube.application.geoportal.client.legacy;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Collections;
|
||||||
|
|
||||||
import javax.ws.rs.client.WebTarget;
|
import javax.ws.rs.client.WebTarget;
|
||||||
import javax.xml.ws.soap.Addressing;
|
import javax.xml.ws.soap.Addressing;
|
||||||
|
|
||||||
|
import com.sun.xml.internal.ws.api.addressing.AddressingPropertySet;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import org.gcube.application.geoportal.client.DefaultMongoConcessioni;
|
import org.gcube.application.geoportal.client.DefaultMongoConcessioni;
|
||||||
import org.gcube.application.geoportal.client.utils.Serialization;
|
import org.gcube.application.geoportal.client.utils.Serialization;
|
||||||
|
@ -64,12 +67,13 @@ public class StatefulMongoConcessioni extends DefaultMongoConcessioni implements
|
||||||
if(current.getImmaginiRappresentative()==null) current.setImmaginiRappresentative(new ArrayList<UploadedImage>());
|
if(current.getImmaginiRappresentative()==null) current.setImmaginiRappresentative(new ArrayList<UploadedImage>());
|
||||||
current.getImmaginiRappresentative().add(toAdd);
|
current.getImmaginiRappresentative().add(toAdd);
|
||||||
current =replace(current);
|
current =replace(current);
|
||||||
|
|
||||||
|
AddSectionToConcessioneRequest req = new AddSectionToConcessioneRequest();
|
||||||
|
req.setDestinationPath(Paths.imgByIndex(current.getImmaginiRappresentative().size()-1));
|
||||||
|
req.setStreams(Collections.singletonList(f));
|
||||||
|
|
||||||
|
|
||||||
|
current =super.registerFileSet(current.getMongo_id(), req);
|
||||||
current =super.registerFileSet(current.getMongo_id(),
|
|
||||||
Serialization.convert(
|
|
||||||
FileSets.build(Paths.imgByIndex(current.getImmaginiRappresentative().size()-1),null,null,f).getTheRequest(),
|
|
||||||
AddSectionToConcessioneRequest.class));
|
|
||||||
return current;
|
return current;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -79,11 +83,13 @@ public class StatefulMongoConcessioni extends DefaultMongoConcessioni implements
|
||||||
if(current.getPianteFineScavo()==null) current.setPianteFineScavo(new ArrayList<>());
|
if(current.getPianteFineScavo()==null) current.setPianteFineScavo(new ArrayList<>());
|
||||||
current.getPianteFineScavo().add(toAdd);
|
current.getPianteFineScavo().add(toAdd);
|
||||||
current =replace(current);
|
current =replace(current);
|
||||||
|
|
||||||
|
AddSectionToConcessioneRequest req = new AddSectionToConcessioneRequest();
|
||||||
current =super.registerFileSet(current.getMongo_id(),
|
req.setDestinationPath(Paths.piantaByIndex(current.getPianteFineScavo().size()-1));
|
||||||
Serialization.convert(
|
req.setStreams(Arrays.asList(files));
|
||||||
FileSets.build(Paths.piantaByIndex(current.getPianteFineScavo().size()-1),null,null,files).getTheRequest(),AddSectionToConcessioneRequest.class));
|
|
||||||
|
|
||||||
|
current =super.registerFileSet(current.getMongo_id(),req);
|
||||||
return current;
|
return current;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -92,10 +98,11 @@ public class StatefulMongoConcessioni extends DefaultMongoConcessioni implements
|
||||||
if(current ==null) throw new Exception("Invalid operation : current Concessione is null.");
|
if(current ==null) throw new Exception("Invalid operation : current Concessione is null.");
|
||||||
current.setPosizionamentoScavo(toSet);
|
current.setPosizionamentoScavo(toSet);
|
||||||
current =replace(current);
|
current =replace(current);
|
||||||
|
AddSectionToConcessioneRequest req = new AddSectionToConcessioneRequest();
|
||||||
|
req.setDestinationPath(Paths.POSIZIONAMENTO);
|
||||||
|
req.setStreams(Arrays.asList(files));
|
||||||
|
|
||||||
|
current =super.registerFileSet(current.getMongo_id(),req);
|
||||||
current =super.registerFileSet(current.getMongo_id(),
|
|
||||||
Serialization.convert(FileSets.build(Paths.POSIZIONAMENTO,null,null,files).getTheRequest(),AddSectionToConcessioneRequest.class));
|
|
||||||
return current;
|
return current;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -104,10 +111,12 @@ public class StatefulMongoConcessioni extends DefaultMongoConcessioni implements
|
||||||
if(current ==null) throw new Exception("Invalid operation : current Concessione is null.");
|
if(current ==null) throw new Exception("Invalid operation : current Concessione is null.");
|
||||||
current.setRelazioneScavo(toSet);
|
current.setRelazioneScavo(toSet);
|
||||||
current =replace(current);
|
current =replace(current);
|
||||||
|
|
||||||
|
AddSectionToConcessioneRequest req = new AddSectionToConcessioneRequest();
|
||||||
|
req.setDestinationPath(Paths.RELAZIONE);
|
||||||
|
req.setStreams(Arrays.asList(files));
|
||||||
|
|
||||||
|
current =super.registerFileSet(current.getMongo_id(),req);
|
||||||
current =super.registerFileSet(current.getMongo_id(),
|
|
||||||
Serialization.convert(FileSets.build(Paths.RELAZIONE,null,null,files).getTheRequest(),AddSectionToConcessioneRequest.class));
|
|
||||||
return current;
|
return current;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -117,8 +126,11 @@ public class StatefulMongoConcessioni extends DefaultMongoConcessioni implements
|
||||||
current.setAbstractRelazione(toSet);
|
current.setAbstractRelazione(toSet);
|
||||||
current =replace(current);
|
current =replace(current);
|
||||||
|
|
||||||
current =super.registerFileSet(current.getMongo_id(),
|
AddSectionToConcessioneRequest req = new AddSectionToConcessioneRequest();
|
||||||
Serialization.convert(FileSets.build(Paths.ABSTRACT_RELAZIONE,null,null,files).getTheRequest(),AddSectionToConcessioneRequest.class));
|
req.setDestinationPath(Paths.ABSTRACT_RELAZIONE);
|
||||||
|
req.setStreams(Arrays.asList(files));
|
||||||
|
|
||||||
|
current =super.registerFileSet(current.getMongo_id(),req);
|
||||||
return current;
|
return current;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -41,20 +41,23 @@ public class StatefulClientTests extends BasicVreTests {
|
||||||
Concessione source=TestConcessioniModel.prepareConcessione();
|
Concessione source=TestConcessioniModel.prepareConcessione();
|
||||||
|
|
||||||
|
|
||||||
UploadedImage toRegisterImg= source.getImmaginiRappresentative().get(0);
|
|
||||||
|
for(UploadedImage toRegisterImg : source.getImmaginiRappresentative()){
|
||||||
|
|
||||||
// TEMP Files are hosted in INFRASTRUCTURE's VOLATILE AREA
|
// TEMP Files are hosted in INFRASTRUCTURE's VOLATILE AREA
|
||||||
TempFile toUpload=storage.putOntoStorage(
|
TempFile toUpload=storage.putOntoStorage(
|
||||||
new File(TestConcessioniModel.getBaseFolder(),"immagine1.png"), "immagine.png");
|
new File(TestConcessioniModel.getBaseFolder(),"immagine1.png"), "immagine.png");
|
||||||
|
|
||||||
manager.addImmagineRappresentativa(toRegisterImg, toUpload);
|
manager.addImmagineRappresentativa(toRegisterImg, toUpload);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
//Alternative Method
|
|
||||||
InputStreamDescriptor isDesc=
|
// //Alternative Method
|
||||||
new InputStreamDescriptor(new FileInputStream(new File(TestConcessioniModel.getBaseFolder(),
|
// InputStreamDescriptor isDesc=
|
||||||
"immagine1.png")), "San Mauro_drone totale.JPG");
|
// new InputStreamDescriptor(new FileInputStream(new File(TestConcessioniModel.getBaseFolder(),
|
||||||
manager.addImmagineRappresentativa(toRegisterImg, isDesc);
|
// "immagine1.png")), "San Mauro_drone totale.JPG");
|
||||||
|
// manager.addImmagineRappresentativa(toRegisterImg, isDesc);
|
||||||
|
|
||||||
source.getRelazioneScavo().setPolicy(AccessPolicy.EMBARGOED);
|
source.getRelazioneScavo().setPolicy(AccessPolicy.EMBARGOED);
|
||||||
assertEquals(AccessPolicy.EMBARGOED,source.getRelazioneScavo().getPolicy());
|
assertEquals(AccessPolicy.EMBARGOED,source.getRelazioneScavo().getPolicy());
|
||||||
|
@ -68,8 +71,8 @@ public class StatefulClientTests extends BasicVreTests {
|
||||||
//Abstract
|
//Abstract
|
||||||
manager.setAbstractRelazioneScavo(
|
manager.setAbstractRelazioneScavo(
|
||||||
source.getAbstractRelazione(),
|
source.getAbstractRelazione(),
|
||||||
storage.putOntoStorage(new File(TestConcessioniModel.getBaseFolder(),"relazione.pdf"), "abstract_relazione_it.pdf"),
|
storage.putOntoStorage(new File(TestConcessioniModel.getBaseFolder(),"relazione.pdf"), "abstract.pdf"),
|
||||||
storage.putOntoStorage(new File(TestConcessioniModel.getBaseFolder(),"relazione.pdf"), "abstract_relazione_en.pdf"));
|
storage.putOntoStorage(new File(TestConcessioniModel.getBaseFolder(),"relazione.pdf"), "abstract.pdf"));
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -111,26 +111,4 @@
|
||||||
|
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
|
|
||||||
<build>
|
|
||||||
<plugins>
|
|
||||||
|
|
||||||
<plugin>
|
|
||||||
<groupId>org.apache.maven.plugins</groupId>
|
|
||||||
<artifactId>maven-assembly-plugin</artifactId>
|
|
||||||
<executions>
|
|
||||||
<execution>
|
|
||||||
<id>make-uberjar</id>
|
|
||||||
<phase>package</phase>
|
|
||||||
</execution>
|
|
||||||
<execution>
|
|
||||||
<id>make-servicearchive</id>
|
|
||||||
<phase>package</phase>
|
|
||||||
</execution>
|
|
||||||
</executions>
|
|
||||||
</plugin>
|
|
||||||
|
|
||||||
</plugins>
|
|
||||||
</build>
|
|
||||||
|
|
||||||
</project>
|
</project>
|
|
@ -6,8 +6,8 @@ public class InterfaceConstants {
|
||||||
|
|
||||||
public static final String APPLICATION_BASE_PATH="geoportal-service";
|
public static final String APPLICATION_BASE_PATH="geoportal-service";
|
||||||
public static final String APPLICATION_PATH="/srv";
|
public static final String APPLICATION_PATH="/srv";
|
||||||
public static final String SERVICE_CLASS="org.gcube.application";
|
public static String SERVICE_CLASS="org.gcube.application";
|
||||||
public static final String SERVICE_NAME="geoportal-service";
|
public static String SERVICE_NAME="geoportal-service";
|
||||||
|
|
||||||
public static final class Methods{
|
public static final class Methods{
|
||||||
public static final String UCD ="ucd";
|
public static final String UCD ="ucd";
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package org.gcube.application.geoportal.common.utils.tests;
|
package org.gcube.application.geoportal.common.utils.tests;
|
||||||
|
|
||||||
import org.gcube.application.geoportal.common.model.document.Project;
|
import org.gcube.application.geoportal.common.model.document.Project;
|
||||||
|
import org.gcube.application.geoportal.common.rest.InterfaceConstants;
|
||||||
|
|
||||||
public class GCubeTest {
|
public class GCubeTest {
|
||||||
|
|
||||||
|
@ -13,8 +14,11 @@ public class GCubeTest {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// testContext = "/pred4s/preprod/preVRE";
|
testContext = "/pred4s/preprod/preVRE";
|
||||||
testContext = "/gcube/devsec/devVRE";
|
InterfaceConstants.SERVICE_CLASS="Application";
|
||||||
|
InterfaceConstants.SERVICE_NAME="GeoPortal";
|
||||||
|
|
||||||
|
// testContext = "/gcube/devsec/devVRE";
|
||||||
|
|
||||||
|
|
||||||
System.out.println("TEST CONTEXT = "+testContext);
|
System.out.println("TEST CONTEXT = "+testContext);
|
||||||
|
|
16
pom.xml
16
pom.xml
|
@ -22,18 +22,18 @@
|
||||||
<gitBaseUrl>https://code-repo.d4science.org/gCubeSystem</gitBaseUrl>
|
<gitBaseUrl>https://code-repo.d4science.org/gCubeSystem</gitBaseUrl>
|
||||||
|
|
||||||
<!-- prod -->
|
<!-- prod -->
|
||||||
<!-- <gcube-bom-version>2.0.2</gcube-bom-version>
|
<!-- <gcube-bom-version>2.0.2</gcube-bom-version>-->
|
||||||
<gcube-smartgears-bom-version>2.1.1</gcube-smartgears-bom-version>
|
<!-- <gcube-smartgears-bom-version>2.1.1</gcube-smartgears-bom-version>-->
|
||||||
<gcube-portal-bom-version>3.6.3</gcube-portal-bom-version>
|
<!-- <gcube-portal-bom-version>3.6.3</gcube-portal-bom-version>-->
|
||||||
<storagehub-version-range>[1.0.0,2.0.0-SNAPSHOT)</storagehub-version-range>
|
<!-- <storagehub-version-range>[1.0.0,2.0.0-SNAPSHOT)</storagehub-version-range>-->
|
||||||
-->
|
<!-- <plugin-framework-version>1.0.1-SNAPSHOT</plugin-framework-version>-->
|
||||||
|
|
||||||
<!--dev -->
|
<!--dev -->
|
||||||
<gcube-bom-version>2.1.0-SNAPSHOT</gcube-bom-version>
|
<gcube-bom-version>2.1.0-SNAPSHOT</gcube-bom-version>
|
||||||
<gcube-smartgears-bom-version>2.2.0-SNAPSHOT</gcube-smartgears-bom-version>
|
<gcube-smartgears-bom-version>2.2.0-SNAPSHOT</gcube-smartgears-bom-version>
|
||||||
<gcube-portal-bom-version>3.7.0-SNAPSHOT</gcube-portal-bom-version>
|
<gcube-portal-bom-version>3.7.0-SNAPSHOT</gcube-portal-bom-version>
|
||||||
<!-- <storagehub-version-range>[2.0.0-SNAPSHOT,3.0.0-SNAPSHOT)</storagehub-version-range>-->
|
<storagehub-version-range>[2.0.0-SNAPSHOT,3.0.0-SNAPSHOT)</storagehub-version-range>
|
||||||
<storagehub-version-range>[1.0.0,2.0.0-SNAPSHOT)</storagehub-version-range>
|
<!-- <storagehub-version-range>[1.0.0,2.0.0-SNAPSHOT)</storagehub-version-range>-->
|
||||||
<plugin-framework-version>1.0.1-SNAPSHOT</plugin-framework-version>
|
<plugin-framework-version>1.0.1-SNAPSHOT</plugin-framework-version>
|
||||||
|
|
||||||
|
|
||||||
|
@ -292,4 +292,6 @@
|
||||||
</plugin>
|
</plugin>
|
||||||
</plugins>
|
</plugins>
|
||||||
</build>
|
</build>
|
||||||
|
|
||||||
|
|
||||||
</project>
|
</project>
|
|
@ -116,12 +116,12 @@
|
||||||
"filePaths": [
|
"filePaths": [
|
||||||
{
|
{
|
||||||
"gcubeProfileFieldName": "Carica Abstract Ita (in PDF)",
|
"gcubeProfileFieldName": "Carica Abstract Ita (in PDF)",
|
||||||
"fieldDefinition": "$.abstractRelazione.children[?(@.filesetIta)]",
|
"fieldDefinition": "$.abstractRelazione._children[?(@.filesetIta)]",
|
||||||
"fieldName": "filesetIta"
|
"fieldName": "filesetIta"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"gcubeProfileFieldName": "Carica Abstract Eng (in PDF)",
|
"gcubeProfileFieldName": "Carica Abstract Eng (in PDF)",
|
||||||
"fieldDefinition": "$.abstractRelazione.children[?(@.filesetEng)]",
|
"fieldDefinition": "$.abstractRelazione._children[?(@.filesetEng)]",
|
||||||
"fieldName": "filesetEng"
|
"fieldName": "filesetEng"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
@ -135,7 +135,7 @@
|
||||||
"filePaths": [
|
"filePaths": [
|
||||||
{
|
{
|
||||||
"gcubeProfileFieldName": "Relazione di fine scavo (in PDF)",
|
"gcubeProfileFieldName": "Relazione di fine scavo (in PDF)",
|
||||||
"fieldDefinition": "$.relazioneScavo.children[?(@.fileset)]",
|
"fieldDefinition": "$.relazioneScavo._children[?(@.fileset)]",
|
||||||
"fieldName": "fileset"
|
"fieldName": "fileset"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
@ -147,11 +147,11 @@
|
||||||
"sectionTitle": "Immagini Rappresentative",
|
"sectionTitle": "Immagini Rappresentative",
|
||||||
"minOccurs": 1,
|
"minOccurs": 1,
|
||||||
"maxOccurs": 8,
|
"maxOccurs": 8,
|
||||||
"parentName": "$.",
|
"parentName": "",
|
||||||
"filePaths": [
|
"filePaths": [
|
||||||
{
|
{
|
||||||
"gcubeProfileFieldName": "Immagine",
|
"gcubeProfileFieldName": "Immagine",
|
||||||
"fieldDefinition": "$.immaginiRappresentative.children[?(@.fileset)]",
|
"fieldDefinition": "$.immaginiRappresentative._children[?(@.fileset)]",
|
||||||
"fieldName": "fileset"
|
"fieldName": "fileset"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
@ -165,7 +165,7 @@
|
||||||
"filePaths": [
|
"filePaths": [
|
||||||
{
|
{
|
||||||
"gcubeProfileFieldName": "File",
|
"gcubeProfileFieldName": "File",
|
||||||
"fieldDefinition": "$.posizionamentoScavo.children[?(@.fileset)]",
|
"fieldDefinition": "$.posizionamentoScavo._children[?(@.fileset)]",
|
||||||
"fieldName": "fileset"
|
"fieldName": "fileset"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
@ -181,7 +181,7 @@
|
||||||
"filePaths": [
|
"filePaths": [
|
||||||
{
|
{
|
||||||
"gcubeProfileFieldName": "File",
|
"gcubeProfileFieldName": "File",
|
||||||
"fieldDefinition": "$.pianteFineScavo.children[?(@.fileset)]",
|
"fieldDefinition": "$.pianteFineScavo._children[?(@.fileset)]",
|
||||||
"fieldName": "fileset"
|
"fieldName": "fileset"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
|
@ -63,5 +63,29 @@
|
||||||
|
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
|
<!-- https://trustin.github.io/sphinx-maven-plugin/basic-usage.html#executing-within-normal-lifecycle-->
|
||||||
|
|
||||||
|
<reporting>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-project-info-reports-plugin</artifactId>
|
||||||
|
<version>2.9</version>
|
||||||
|
<reportSets>
|
||||||
|
<reportSet>
|
||||||
|
<reports />
|
||||||
|
</reportSet>
|
||||||
|
</reportSets>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<groupId>kr.motd.maven</groupId>
|
||||||
|
<artifactId>sphinx-maven-plugin</artifactId>
|
||||||
|
<version>2.10.0</version>
|
||||||
|
<configuration>
|
||||||
|
<builder>html</builder>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</reporting>
|
||||||
|
|
||||||
</project>
|
</project>
|
|
@ -0,0 +1,808 @@
|
||||||
|
.. _Anchor For ExampleRSTFile:
|
||||||
|
|
||||||
|
#################
|
||||||
|
Example .rst File
|
||||||
|
#################
|
||||||
|
|
||||||
|
If you work with edX documentation source files, you might find this file
|
||||||
|
helpful as a reference. This file contains examples of .rst formatting.
|
||||||
|
|
||||||
|
Explanations and more context for each type of element are provided in
|
||||||
|
:ref:`Work with edX Documentation Source Files`.
|
||||||
|
|
||||||
|
This file covers the following topics.
|
||||||
|
|
||||||
|
.. contents::
|
||||||
|
:local:
|
||||||
|
:depth: 1
|
||||||
|
|
||||||
|
***************
|
||||||
|
Heading Levels
|
||||||
|
***************
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
#############
|
||||||
|
Heading 1
|
||||||
|
#############
|
||||||
|
|
||||||
|
*************
|
||||||
|
Heading 2
|
||||||
|
*************
|
||||||
|
|
||||||
|
===========
|
||||||
|
Heading 3
|
||||||
|
===========
|
||||||
|
|
||||||
|
Heading 4
|
||||||
|
************
|
||||||
|
|
||||||
|
Heading 5
|
||||||
|
===========
|
||||||
|
|
||||||
|
Heading 6
|
||||||
|
~~~~~~~~~~~
|
||||||
|
|
||||||
|
************************************************
|
||||||
|
Paragraph Text and Commented Text
|
||||||
|
************************************************
|
||||||
|
|
||||||
|
This is an example of regular text in paragraph form. There are no indents. As
|
||||||
|
a best practice, break lines at about 80 characters, so that each line has its
|
||||||
|
own line number for commenting in reviews.
|
||||||
|
|
||||||
|
.. warning:: Throughout text and code examples, make sure double quotation
|
||||||
|
marks and apostrophes are straight (") or ('), not curly quotatation marks
|
||||||
|
and apostrophes, which might be introduced when text is cut and pasted from
|
||||||
|
other sources or editors.
|
||||||
|
|
||||||
|
Boldface is used for labels that are visible in the user interface. The UI
|
||||||
|
text is surrounded by double asterisks. For example, **bold**.
|
||||||
|
|
||||||
|
Italics are rarely used. Text surrounded by single asterisks is rendered in
|
||||||
|
*italics*.
|
||||||
|
|
||||||
|
Monospace text is used for ``code examples``. Text surrounded by double grave
|
||||||
|
accent characters is rendered in monospace font.
|
||||||
|
|
||||||
|
``.. comments can be added in a file by starting a line with 2 periods and a space.``
|
||||||
|
|
||||||
|
In English source files, look for comments addressed to translators from writers.
|
||||||
|
|
||||||
|
``.. Translators: In this code example, do not translate such and such.``
|
||||||
|
|
||||||
|
|
||||||
|
***************************************
|
||||||
|
Ordered and Unordered Lists
|
||||||
|
***************************************
|
||||||
|
|
||||||
|
Use hash symbols for ordered lists.
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
#. Select **Advanced Settings**.
|
||||||
|
#. Find the **Course Advertised Start Date** policy key.
|
||||||
|
#. Enter the value you want to display.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
Ordered lists usually use numerals. Nested ordered lists (ordered lists inside
|
||||||
|
other ordered lists) use letters.
|
||||||
|
|
||||||
|
Use asterisks for unordered (bulleted) lists.
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
* Who is teaching the course?
|
||||||
|
* What university or college is the course affiliated with?
|
||||||
|
* What topics and concepts are covered in your course?
|
||||||
|
* Why should a learner enroll in your course?
|
||||||
|
|
||||||
|
=======================
|
||||||
|
Nested Lists or Content
|
||||||
|
=======================
|
||||||
|
|
||||||
|
You can include content including additional lists and code examples inside
|
||||||
|
lists.
|
||||||
|
|
||||||
|
Unordered List inside Ordered List
|
||||||
|
***************************************
|
||||||
|
|
||||||
|
To include an unordered list inside an ordered list, indent the unordered list
|
||||||
|
three spaces. The first bullet in the unordered list must be flush with the
|
||||||
|
text in the ordered list.
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
#. Review your entry to verify that the key is accurate and that it is
|
||||||
|
surrounded by quotation marks. If there is a list of keys, they must be
|
||||||
|
comma separated.
|
||||||
|
|
||||||
|
* In this example, the key for the Annotation Problem tool is the only
|
||||||
|
value in the list.
|
||||||
|
|
||||||
|
* In this example, the key for the Annotation Problem tool is added at
|
||||||
|
the beginning of a list of other keys.
|
||||||
|
|
||||||
|
#. Select **Save Changes**.
|
||||||
|
|
||||||
|
.. image:: /Images/Lists_UL_inside_OL.png
|
||||||
|
:width: 500
|
||||||
|
:alt: An unordered (bulleted) list inside an ordered (numbered) list.
|
||||||
|
|
||||||
|
Ordered List inside Unordered List
|
||||||
|
***************************************
|
||||||
|
|
||||||
|
To include an ordered list inside an unordered list, indent the ordered list
|
||||||
|
two spaces. The first number or letter of the ordered list must be flush with
|
||||||
|
the text in the unordered list.
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
* Review your entry to verify that the key is accurate and that it is
|
||||||
|
surrounded by quotation marks. If there is a list of keys, they must be comma
|
||||||
|
separated.
|
||||||
|
|
||||||
|
#. In this example, the key for the Annotation Problem tool is the only
|
||||||
|
value in the list.
|
||||||
|
|
||||||
|
#. In this example, the key for the Annotation Problem tool is added at the
|
||||||
|
beginning of a list of other keys.
|
||||||
|
|
||||||
|
* Select **Save Changes**.
|
||||||
|
|
||||||
|
.. There isn't a screen shot of the above example yet because these lists don't
|
||||||
|
.. render correctly locally, and searching for an example in the built docs
|
||||||
|
.. online was taking too much time.
|
||||||
|
|
||||||
|
Unordered List inside Unordered List
|
||||||
|
***************************************
|
||||||
|
|
||||||
|
To include an unordered list inside another unordered list, indent the second
|
||||||
|
unordered list two spaces. The first bullet of the second unordered list must
|
||||||
|
be flush with the text in the unordered list.
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
* Review your entry to verify that the key is accurate and that it is
|
||||||
|
surrounded by quotation marks. If there is a list of keys, they must be
|
||||||
|
comma separated.
|
||||||
|
|
||||||
|
#. In this example, the key for the Annotation Problem tool is the only
|
||||||
|
value in the list.
|
||||||
|
|
||||||
|
#. In this example, the key for the Annotation Problem tool is added at the
|
||||||
|
beginning of a list of other keys.
|
||||||
|
|
||||||
|
* Select **Save Changes**.
|
||||||
|
|
||||||
|
.. image:: /Images/Lists_UL_inside_UL.png
|
||||||
|
:width: 500
|
||||||
|
:alt: An ordered (numbered) list inside an unordered (bulleted) list.
|
||||||
|
|
||||||
|
Ordered List inside Ordered List
|
||||||
|
***************************************
|
||||||
|
|
||||||
|
To include another ordered list inside an ordered list, indent the second
|
||||||
|
ordered list three spaces. The second ordered list must be flush with the text
|
||||||
|
in the numbered list. The first ordered list uses numerals, and the second
|
||||||
|
uses letters.
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
#. Review your entry to verify that the key is accurate and that it is
|
||||||
|
surrounded by quotation marks. If there is a list of keys, they must be
|
||||||
|
comma separated.
|
||||||
|
|
||||||
|
#. In this example, the key for the Annotation Problem tool is the only
|
||||||
|
value in the list.
|
||||||
|
|
||||||
|
#. In this example, the key for the Annotation Problem tool is added at
|
||||||
|
the beginning of a list of other keys.
|
||||||
|
|
||||||
|
#. Select **Save Changes**.
|
||||||
|
|
||||||
|
.. There isn't a screen shot of the above example yet because these lists don't
|
||||||
|
.. render correctly locally, and searching for an example in the built docs
|
||||||
|
.. online was taking too much time.
|
||||||
|
|
||||||
|
Code, Images, and Other Content inside Lists
|
||||||
|
*********************************************
|
||||||
|
|
||||||
|
To include content such as code or an image inside a list, position the code or
|
||||||
|
image directive flush with the text in the list. That is, indent three spaces
|
||||||
|
for ordered lists and two spaces for unordered lists.
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
#. In the ``lms.yml`` and ``studio.yml`` files, set the value of
|
||||||
|
``CERTIFICATES_HTML_VIEW`` within the ``FEATURES`` object to ``true``.
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
"FEATURES": {
|
||||||
|
...
|
||||||
|
'CERTIFICATES_HTML_VIEW': true,
|
||||||
|
...
|
||||||
|
}
|
||||||
|
|
||||||
|
#. Save the ``lms.yml`` and ``studio.yml`` files.
|
||||||
|
|
||||||
|
|
||||||
|
***************************************
|
||||||
|
Conditional Text
|
||||||
|
***************************************
|
||||||
|
|
||||||
|
To conditionalize a single paragraph, use either the ``only:: Partners`` or
|
||||||
|
the ``only:: Open_edX`` directive, and indent the paragraph under the
|
||||||
|
directive. You can add the conditional text as regular text or as a note.
|
||||||
|
|
||||||
|
Make sure to indent the paragraph under the directive.
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
.. only:: Partners
|
||||||
|
|
||||||
|
Data about course enrollment is available from edX Insights. You can access
|
||||||
|
Insights from the instructor dashboard for your live course: after you select
|
||||||
|
**Instructor**, follow the link in the banner at the top of each page. For
|
||||||
|
more information, see `Using edX Insights`_.
|
||||||
|
|
||||||
|
.. only:: Open_edX
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
If you want to require an entrance exam for your course, you also create
|
||||||
|
the exam in the course outline. Before you can create an exam, you must
|
||||||
|
set your course to require an entrance exam in Studio. For more
|
||||||
|
information, see :ref:`Require an Entrance Exam`.
|
||||||
|
|
||||||
|
To conditionalize more than a paragraph, use either the ``only:: Partners`` or
|
||||||
|
the ``only:: Open_edX`` directive, and then use an ``include::`` directive
|
||||||
|
indented under the only directive.
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
.. only:: Open_edX
|
||||||
|
|
||||||
|
.. include:: ../../../shared/building_and_running_chapters/running_course/Section_course_student.rst
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
*********************************
|
||||||
|
Notes and Warnings
|
||||||
|
*********************************
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
This is note text. If note text runs over a line, make sure the lines wrap
|
||||||
|
and are indented to the same level as the note tag. If formatting is
|
||||||
|
incorrect, part of the note might not render in the HTML output.
|
||||||
|
|
||||||
|
Notes can have more than one paragraph. Successive paragraphs must indent
|
||||||
|
to the same level as the rest of the note.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
This is note text. If note text runs over a line, make sure the lines wrap
|
||||||
|
and are indented to the same level as the note tag. If formatting is
|
||||||
|
incorrect, part of the note might not render in the HTML output.
|
||||||
|
|
||||||
|
Notes can have more than one paragraph. Successive paragraphs must indent to
|
||||||
|
the same level as the rest of the note.
|
||||||
|
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
.. warning::
|
||||||
|
Warnings are formatted in the same way as notes. In the same way, lines
|
||||||
|
must be broken and indented under the warning tag.
|
||||||
|
|
||||||
|
|
||||||
|
.. warning::
|
||||||
|
Warnings are formatted in the same way as notes. In the same way, lines must
|
||||||
|
be broken and indented under the warning tag.
|
||||||
|
|
||||||
|
|
||||||
|
****************************
|
||||||
|
Cross-References
|
||||||
|
****************************
|
||||||
|
|
||||||
|
In edX documents, you can include cross-references to other locations in the
|
||||||
|
same edX document, to locations in other edX documents (such as a cross-
|
||||||
|
reference from a location in the *Building and Running an edX Course* guide to
|
||||||
|
a location in the *EdX Learner's Guide*), to JIRA stories, and to external
|
||||||
|
websites. In this section, "EdX documents" refers to the resources, including
|
||||||
|
guides and tutorials, that are listed on docs.edx.org.
|
||||||
|
|
||||||
|
For more information about creating cross-references using RST and Sphinx, see
|
||||||
|
`Cross-referencing arbitrary locations`_ in the online Sphinx documentation.
|
||||||
|
|
||||||
|
==================================================
|
||||||
|
Cross-References to Locations in the Same Document
|
||||||
|
==================================================
|
||||||
|
|
||||||
|
Cross-references to locations in the same document use anchors that are located
|
||||||
|
above the heading for each topic or section. Anchors can contain numbers,
|
||||||
|
letters, spaces, underscores, and hyphens, but cannot include punctuation.
|
||||||
|
Anchors use the following syntax.
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
.. _Anchor Text:
|
||||||
|
|
||||||
|
The following example shows an anchor for a section, followed by the heading
|
||||||
|
for that section. ``SFD SN Keyboard Shortcuts`` is the anchor text.
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
.. _SFD SN Keyboard Shortcuts:
|
||||||
|
|
||||||
|
******************************
|
||||||
|
Keyboard Shortcuts for Notes
|
||||||
|
******************************
|
||||||
|
|
||||||
|
To create cross-references to locations in the same document, you can use the
|
||||||
|
anchor only, or you can use your own text. The anchor text is never visible in
|
||||||
|
output. It is replaced by the text of the heading that follows the anchor or
|
||||||
|
the text that you specify.
|
||||||
|
|
||||||
|
Cross-References Using the Anchor Only
|
||||||
|
********************************************
|
||||||
|
|
||||||
|
To add a cross-reference to a specific location in a document and use the text
|
||||||
|
of the heading for that location as link text, use ``:ref:`Anchor Text```
|
||||||
|
syntax, as in the following example.
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
For more information about using keyboard shortcuts, see :ref:`SFD SN
|
||||||
|
Keyboard Shortcuts`.
|
||||||
|
|
||||||
|
In this example, "SFD SN Keyboard Shortcuts" is the anchor text for a section
|
||||||
|
that is titled "Keyboard Shortcuts for Notes". Readers will see the following
|
||||||
|
text, and "Keyboard Shortcuts for Notes" will be an active link.
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
For more information about using keyboard shortcuts, see Keyboard Shortcuts
|
||||||
|
for Notes.
|
||||||
|
|
||||||
|
Cross-References Using Specified Link Text
|
||||||
|
*******************************************
|
||||||
|
|
||||||
|
For internal cross-references that use text other than the heading for the
|
||||||
|
section that you're linking to, use ``:ref:`specified text<Anchor Text>```
|
||||||
|
syntax, as in the following example.
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
If you want to, you can use :ref:`keyboard shortcuts<SFD SN Keyboard
|
||||||
|
Shortcuts>` to create, edit, and view notes.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
Do not include a space between the last word of the link text and the opening
|
||||||
|
angle bracket for the anchor text.
|
||||||
|
|
||||||
|
In this example, "keyboard shortcuts" is the link text, and "SFD SN Keyboard
|
||||||
|
Shortcuts" is the anchor text for a section that is titled "Keyboard Shortcuts
|
||||||
|
for Notes". Readers will see the following text, and "keyboard shortcuts" will
|
||||||
|
be an active link.
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
If you want to, you can use keyboard shortcuts to create, edit, and view your
|
||||||
|
notes.
|
||||||
|
|
||||||
|
==========================================================
|
||||||
|
Cross-References to Locations in Different edX Documents
|
||||||
|
==========================================================
|
||||||
|
|
||||||
|
You can create cross-references between different edX documents. For example,
|
||||||
|
you can create a link in *Building and Running an edX Course* to a topic in the
|
||||||
|
*EdX Learner's Guide*. To do this, you use the intersphinx map ID of the
|
||||||
|
document that you want to link to and the anchor text for the section you want.
|
||||||
|
The cross-reference uses the following syntax.
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
:ref:`intersphinx_map_ID:Anchor Name`
|
||||||
|
|
||||||
|
For example:
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
:ref:`partnercoursestaff:Release Dates`
|
||||||
|
|
||||||
|
To find the intersphinx map ID for the document that you want, follow these
|
||||||
|
steps.
|
||||||
|
|
||||||
|
#. Open the conf.py file in the `edx-documentation/shared`_ folder, and then
|
||||||
|
locate the following line.
|
||||||
|
|
||||||
|
``intersphinx_mapping = {``
|
||||||
|
|
||||||
|
#. In the list that follows this line, find the ID for the document that you
|
||||||
|
want. The text between the single quotation marks (') at the beginning of
|
||||||
|
each line is the intersphinx map ID for the document.
|
||||||
|
|
||||||
|
The following intersphinx map IDs are the most frequently used.
|
||||||
|
|
||||||
|
.. list-table::
|
||||||
|
:widths: 25 25 50
|
||||||
|
|
||||||
|
* - Map ID
|
||||||
|
- Document
|
||||||
|
* - ``partnercoursestaff``
|
||||||
|
- *Building and Running an edX Course*
|
||||||
|
* - ``opencoursestaff``
|
||||||
|
- *Building and Running an Open edX Course*
|
||||||
|
* - ``learners``
|
||||||
|
- *EdX Learner's Guide*
|
||||||
|
* - ``openlearners``
|
||||||
|
- *Open edX Learner's Guide*
|
||||||
|
* - ``data``
|
||||||
|
- *EdX Research Guide*
|
||||||
|
* - ``insights``
|
||||||
|
- *Using edX Insights*
|
||||||
|
* - ``installation``
|
||||||
|
- *Installing, Configuring, and Running the Open edX Platform*
|
||||||
|
* - ``opendevelopers``
|
||||||
|
- *Open edX Developer's Guide*
|
||||||
|
* - ``partnerreleasenotes``
|
||||||
|
- Partner release notes
|
||||||
|
* - ``openreleasenotes``
|
||||||
|
- Open edX release notes
|
||||||
|
|
||||||
|
============================================
|
||||||
|
Cross-References to JIRA
|
||||||
|
============================================
|
||||||
|
|
||||||
|
For cross-references to JIRA tickets, use the ``:jira:`PROJECT-ticketnumber```
|
||||||
|
syntax, as in the following example.
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
For more information, see :jira:`DOC-2316`.
|
||||||
|
|
||||||
|
Note that ``jira`` replaces ``ref`` for these links.
|
||||||
|
|
||||||
|
Readers will see the following text, and "DOC-2316" will be an active link.
|
||||||
|
|
||||||
|
``For more information, see DOC-2316.``
|
||||||
|
|
||||||
|
============================================
|
||||||
|
Cross-References to External Web Pages
|
||||||
|
============================================
|
||||||
|
|
||||||
|
A cross-reference to an external web page has several elements.
|
||||||
|
|
||||||
|
* The URL of the external web page.
|
||||||
|
* The text to use for the cross-reference. This text becomes an anchor in the
|
||||||
|
file that contains the cross-reference.
|
||||||
|
* An ``include`` directive in the file that contains the cross-reference to the
|
||||||
|
links.rst file that is located in the ``edx-documentation/en_us/links/``
|
||||||
|
folder.
|
||||||
|
* An entry in the links.rst file.
|
||||||
|
|
||||||
|
To create an external cross-reference, follow these steps.
|
||||||
|
|
||||||
|
#. In the paragraph where you want the cross-reference, add the text that you
|
||||||
|
want to use for the link, formatted as follows (where "Release Pages" is the
|
||||||
|
link text). This creates an anchor out of that text.
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
The edX engineering wiki `Release Pages`_ provide access to detailed
|
||||||
|
information about every change made to the edx-platform GitHub
|
||||||
|
repository.
|
||||||
|
|
||||||
|
#. In the file that contains the cross-reference, add an ``include`` directive
|
||||||
|
for the ``edx-documentation/en_us/links/links.rst`` file if one does not
|
||||||
|
already exist. These ``include`` directives are typically at the end of the
|
||||||
|
file.
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
.. include:: ../../links/links.rst
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
The path to the links.rst file depends on the location of the file where
|
||||||
|
you are creating the link. For example, the path might be
|
||||||
|
``../../../links/links.rst`` or ``../links/links.rst``.
|
||||||
|
|
||||||
|
#. In the ``edx-documentation/en_us/links/links.rst`` file, add an entry for
|
||||||
|
the anchor text and the URL of the external website, formatted as follows.
|
||||||
|
Make sure that the anchor text in this file matches the anchor text in the
|
||||||
|
file that contains the cross-reference exactly, including capitalization.
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
.. _Release Pages: https://openedx.atlassian.net/wiki/display/ENG/Release+Pages
|
||||||
|
|
||||||
|
Readers will see the following text. "Release Pages" will be an active link.
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
The edX engineering wiki Release Pages provide access to detailed
|
||||||
|
information about every change made to the edx-platform GitHub
|
||||||
|
repository.
|
||||||
|
|
||||||
|
|
||||||
|
****************************
|
||||||
|
Image References
|
||||||
|
****************************
|
||||||
|
|
||||||
|
Image references look like this.
|
||||||
|
::
|
||||||
|
|
||||||
|
.. image:: /Images/Course_Outline_LMS.png
|
||||||
|
:width: 100
|
||||||
|
:alt: A screen capture showing the elements of the course outline in the LMS.
|
||||||
|
|
||||||
|
|
||||||
|
Image links can include optional specifications such as height, width, or
|
||||||
|
scale. Alternative text for screen readers is required for each image. Provide
|
||||||
|
text that is useful to someone who might not be able to see the image.
|
||||||
|
|
||||||
|
|
||||||
|
.. _Examples of Tables:
|
||||||
|
|
||||||
|
************************************
|
||||||
|
Tables
|
||||||
|
************************************
|
||||||
|
|
||||||
|
Each example in this section shows the raw formatting for the table followed
|
||||||
|
by the table as it would render (if you are viewing this file as part of the
|
||||||
|
Style Guide).
|
||||||
|
|
||||||
|
======================================
|
||||||
|
Example of a table with an empty cell
|
||||||
|
======================================
|
||||||
|
|
||||||
|
The empty cell is the second column in the first row of this table.
|
||||||
|
::
|
||||||
|
|
||||||
|
.. list-table::
|
||||||
|
:widths: 25 25 50
|
||||||
|
|
||||||
|
* - Annotation Problem
|
||||||
|
-
|
||||||
|
- Annotation problems ask students to respond to questions about a
|
||||||
|
specific block of text. The question appears above the text when the
|
||||||
|
student hovers the mouse over the highlighted text so that students can
|
||||||
|
think about the question as they read.
|
||||||
|
* - Example Poll
|
||||||
|
- Conditional Module
|
||||||
|
- You can create a conditional module to control versions of content that
|
||||||
|
groups of students see. For example, students who answer "Yes" to a
|
||||||
|
poll question then see a different block of text from the students who
|
||||||
|
answer "No" to that question.
|
||||||
|
* - Example JavaScript Problem
|
||||||
|
- Custom JavaScript
|
||||||
|
- Custom JavaScript display and grading problems (also called *custom
|
||||||
|
JavaScript problems* or *JS input problems*) allow you to create a
|
||||||
|
custom problem or tool that uses JavaScript and then add the problem or
|
||||||
|
tool directly into Studio.
|
||||||
|
|
||||||
|
.. list-table::
|
||||||
|
:widths: 25 25 50
|
||||||
|
|
||||||
|
* - Annotation Problem
|
||||||
|
-
|
||||||
|
- Annotation problems ask students to respond to questions about a
|
||||||
|
specific block of text. The question appears above the text when the
|
||||||
|
student hovers the mouse over the highlighted text so that students can
|
||||||
|
think about the question as they read.
|
||||||
|
* - Example Poll
|
||||||
|
- Conditional Module
|
||||||
|
- You can create a conditional module to control versions of content that
|
||||||
|
groups of students see. For example, students who answer "Yes" to a
|
||||||
|
poll question then see a different block of text from the students who
|
||||||
|
answer "No" to that question.
|
||||||
|
* - Exampel JavaScript Problem
|
||||||
|
- Custom JavaScript
|
||||||
|
- Custom JavaScript display and grading problems (also called *custom
|
||||||
|
JavaScript problems* or *JS input problems*) allow you to create a
|
||||||
|
custom problem or tool that uses JavaScript and then add the problem or
|
||||||
|
tool directly into Studio.
|
||||||
|
|
||||||
|
====================================
|
||||||
|
Example of a table with a header row
|
||||||
|
====================================
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
.. list-table::
|
||||||
|
:widths: 15 15 70
|
||||||
|
:header-rows: 1
|
||||||
|
|
||||||
|
* - First Name
|
||||||
|
- Last Name
|
||||||
|
- Residence
|
||||||
|
* - Elizabeth
|
||||||
|
- Bennett
|
||||||
|
- Longbourne
|
||||||
|
* - Fitzwilliam
|
||||||
|
- Darcy
|
||||||
|
- Pemberley
|
||||||
|
|
||||||
|
|
||||||
|
.. list-table::
|
||||||
|
:widths: 15 15 70
|
||||||
|
:header-rows: 1
|
||||||
|
|
||||||
|
* - First Name
|
||||||
|
- Last Name
|
||||||
|
- Residence
|
||||||
|
* - Elizabeth
|
||||||
|
- Bennett
|
||||||
|
- Longbourne
|
||||||
|
* - Fitzwilliam
|
||||||
|
- Darcy
|
||||||
|
- Pemberley
|
||||||
|
|
||||||
|
|
||||||
|
===============================================
|
||||||
|
Example of a table with a boldface first column
|
||||||
|
===============================================
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
.. list-table::
|
||||||
|
:widths: 15 15 70
|
||||||
|
:stub-columns: 1
|
||||||
|
|
||||||
|
* - First Name
|
||||||
|
- Elizabeth
|
||||||
|
- Fitzwilliam
|
||||||
|
* - Last Name
|
||||||
|
- Bennett
|
||||||
|
- Darcy
|
||||||
|
* - Residence
|
||||||
|
- Longboure
|
||||||
|
- Pemberley
|
||||||
|
|
||||||
|
|
||||||
|
.. list-table::
|
||||||
|
:widths: 15 15 70
|
||||||
|
:stub-columns: 1
|
||||||
|
|
||||||
|
* - First Name
|
||||||
|
- Elizabeth
|
||||||
|
- Fitzwilliam
|
||||||
|
* - Last Name
|
||||||
|
- Bennett
|
||||||
|
- Darcy
|
||||||
|
* - Residence
|
||||||
|
- Longboure
|
||||||
|
- Pemberley
|
||||||
|
|
||||||
|
==============================================================
|
||||||
|
Example of a table with a cell that includes an unordered list
|
||||||
|
==============================================================
|
||||||
|
|
||||||
|
The blank lines before and after the unordered list are critical for the list
|
||||||
|
to render correctly.
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
.. list-table::
|
||||||
|
:widths: 15 15 60
|
||||||
|
:header-rows: 1
|
||||||
|
|
||||||
|
* - Field
|
||||||
|
- Type
|
||||||
|
- Details
|
||||||
|
* - ``correct_map``
|
||||||
|
- dict
|
||||||
|
- For each problem ID value listed by ``answers``, provides:
|
||||||
|
|
||||||
|
* ``correctness``: string; 'correct', 'incorrect'
|
||||||
|
* ``hint``: string; Gives optional hint. Nulls allowed.
|
||||||
|
* ``hintmode``: string; None, 'on_request', 'always'. Nulls allowed.
|
||||||
|
* ``msg``: string; Gives extra message response.
|
||||||
|
* ``npoints``: integer; Points awarded for this ``answer_id``. Nulls allowed.
|
||||||
|
* ``queuestate``: dict; None when not queued, else ``{key:'', time:''}``
|
||||||
|
where ``key`` is a secret string dump of a DateTime object in the form
|
||||||
|
'%Y%m%d%H%M%S'. Nulls allowed.
|
||||||
|
|
||||||
|
* - ``grade``
|
||||||
|
- integer
|
||||||
|
- Current grade value.
|
||||||
|
* - ``max_grade``
|
||||||
|
- integer
|
||||||
|
- Maximum possible grade value.
|
||||||
|
|
||||||
|
|
||||||
|
.. list-table::
|
||||||
|
:widths: 15 15 60
|
||||||
|
:header-rows: 1
|
||||||
|
|
||||||
|
* - Field
|
||||||
|
- Type
|
||||||
|
- Details
|
||||||
|
* - ``correct_map``
|
||||||
|
- dict
|
||||||
|
- For each problem ID value listed by ``answers``, provides:
|
||||||
|
|
||||||
|
* ``correctness``: string; 'correct', 'incorrect'
|
||||||
|
* ``hint``: string; Gives optional hint. Nulls allowed.
|
||||||
|
* ``hintmode``: string; None, 'on_request', 'always'. Nulls allowed.
|
||||||
|
* ``msg``: string; Gives extra message response.
|
||||||
|
* ``npoints``: integer; Points awarded for this ``answer_id``. Nulls allowed.
|
||||||
|
* ``queuestate``: dict; None when not queued, else ``{key:'', time:''}``
|
||||||
|
where ``key`` is a secret string dump of a DateTime object in the form
|
||||||
|
'%Y%m%d%H%M%S'. Nulls allowed.
|
||||||
|
|
||||||
|
* - ``grade``
|
||||||
|
- integer
|
||||||
|
- Current grade value.
|
||||||
|
* - ``max_grade``
|
||||||
|
- integer
|
||||||
|
- Maximum possible grade value.
|
||||||
|
|
||||||
|
|
||||||
|
*****************
|
||||||
|
Code Formatting
|
||||||
|
*****************
|
||||||
|
|
||||||
|
===========
|
||||||
|
Inline code
|
||||||
|
===========
|
||||||
|
|
||||||
|
In inline text, any text can be formatted as code (monospace font) by
|
||||||
|
enclosing the selection within a pair of double "grave accent" characters (`).
|
||||||
|
For example, ````these words```` are formatted in a monospace font when the
|
||||||
|
documentation is output as PDF or HTML.
|
||||||
|
|
||||||
|
===========
|
||||||
|
Code blocks
|
||||||
|
===========
|
||||||
|
|
||||||
|
|
||||||
|
To set text in a code block, end the previous paragaph with 2 colons, leave
|
||||||
|
one line before the intended code block, and make sure the code block is
|
||||||
|
indented beyond the first colon.
|
||||||
|
::
|
||||||
|
|
||||||
|
For example, this is the introductory paragraph
|
||||||
|
::
|
||||||
|
|
||||||
|
<p>and this is the code block following.</p>
|
||||||
|
|
||||||
|
|
||||||
|
Alternatively, use the code-block tag. Optionally, indicate the type of code
|
||||||
|
after the 2 colons in the tag, which results in the tags within the code block
|
||||||
|
being displayed in different colors.
|
||||||
|
::
|
||||||
|
|
||||||
|
.. code-block:: xml
|
||||||
|
|
||||||
|
<problem>
|
||||||
|
<annotationresponse>
|
||||||
|
<annotationinput>
|
||||||
|
<text>PLACEHOLDER: Text of annotation</text>
|
||||||
|
<comment>PLACEHOLDER: Text of question</comment>
|
||||||
|
<comment_prompt>PLACEHOLDER: Type your response below:</comment_prompt>
|
||||||
|
<tag_prompt>PLACEHOLDER: In your response to this question, which tag below
|
||||||
|
do you choose?</tag_prompt>
|
||||||
|
<options>
|
||||||
|
<option choice="incorrect">PLACEHOLDER: Incorrect answer (to make this
|
||||||
|
option a correct or partially correct answer, change choice="incorrect"
|
||||||
|
to choice="correct" or choice="partially-correct")</option>
|
||||||
|
<option choice="correct">PLACEHOLDER: Correct answer (to make this option
|
||||||
|
an incorrect or partially correct answer, change choice="correct" to
|
||||||
|
choice="incorrect" or choice="partially-correct")</option>
|
||||||
|
<option choice="partially-correct">PLACEHOLDER: Partially correct answer
|
||||||
|
(to make this option a correct or partially correct answer,
|
||||||
|
change choice="partially-correct" to choice="correct" or choice="incorrect")
|
||||||
|
</option>
|
||||||
|
</options>
|
||||||
|
</annotationinput>
|
||||||
|
</annotationresponse>
|
||||||
|
<solution>
|
||||||
|
<p>PLACEHOLDER: Detailed explanation of solution</p>
|
||||||
|
</solution>
|
||||||
|
</problem>
|
||||||
|
|
||||||
|
.. include:: ../../links/links.rst
|
|
@ -0,0 +1,22 @@
|
||||||
|
.. _suite:
|
||||||
|
|
||||||
|
###############
|
||||||
|
gCube CMS Suite
|
||||||
|
###############
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
The gCube CMS Suite is a gCube Application designed to manage the publication workflow of complex documents (i.e. comprising of multi-level extensible metadata, attachments.. ) called Projects.
|
||||||
|
It can manage the entire lifecycle of Projects, from their creation to access including :
|
||||||
|
|
||||||
|
- CRUD operations
|
||||||
|
- Role based access to Projects and lifecycle operations for moderation purposes
|
||||||
|
- Dataset Materialization (e.g. Image preview, SDI support)
|
||||||
|
- Dataset Indexing (e.g. ISO Metadata Catalogues, Centroids layers, CKAN)
|
||||||
|
- Dataset Processing (e.g. DataMiner)
|
||||||
|
- Customizable Insertion Forms, Navigation and Access GUIs
|
||||||
|
|
||||||
|
Every Project is associated to a Use Case Descriptor, which defines :
|
||||||
|
- Role based access and operation
|
||||||
|
- Project validation schema
|
||||||
|
- Involved plugins configuration (e.g. lifecycle type, materialization, GUIs)
|
Loading…
Reference in New Issue