A markdown presentation viewer for OpenCloud and oCIS using the reveal.js library.
It allows users to:
- create slide presentations directly from markdown files
- share the slides using public links
- Demonstation page (OpenCloud)
- Click on
Open in Presentation Viewerto view the slides

-
Download the zip file from the releases page
For example:
mdpresentation-viewer-<server>-x.x.x.zip -
Extract the zip file to the
appsdirectory of the OpenCloud/oCIS server.Apps directory is set using the
WEB_ASSET_APPS_PATHenvironment variable.
App Installation With OpenCloud or oCIS Deployment
- Copy the
ymlfile that corresponds with your server (OpenCloud or oCIS) fromdeployments/into theweb_extensionssubfolder. - Add
MDPRESENTATION_VIEWER=:web_extensions/mdpresentation-viewer-<your-server>.ymlto theWeb Extensionssection of the.envfile of your installation and append it to theCOMPOSE_FILEvariable.MDPRESENTATION_VIEWER=:web_extensions/mdpresentation-viewer-<your-server>.yml COMPOSE_FILE=docker-compose.yml${...}${MDPRESENTATION_VIEWER:-}
- Run
docker compose upto run the server with the extensions
Please, refer to the documentation for more information about creating a presentation using markdown.
This app has the following default slide separators:
- Horizontal separator:
---(← →) - Vertical separator:
--(↓ ↑)
To use the templates in the presentation viewer, use the front matter to provide default metadata followed by slide contents.
The front matter is used to define the default values for the presentation and will be applied to every slides. The default metadata can be defined as below:
---
slide: <default-slide-type>
presenter: <name-of-the-presenter>
logo: <path-to-logo>
color: <font-color-for-slide-title>
footer: <footer-content>
aboutUs:
- title: <about-us-title1>
text: <text-for-title1>
- title: <about-us-title2>
text: <text-for-title2>
- title: <about-us-title3>
text: <text-for-title3>
---These are the supported metadata required for the presentation template.
| Default Metadata | Description |
|---|---|
slide |
Default slide for presentation. Most used slide template can be given in the default metadata. |
presenter |
Name of the presenter. |
logo |
Logo appears on the top right corner of the slide. The logo path should be relative to the markdown file. |
color |
Font color of the slide title. |
footer |
Content to be shown in the footer of the slide. |
aboutUs |
Column wise content to be shown in the about-us slide. Use this metadata only if about-us slide is used for the presentation. More here |
aboutUs:title |
Title for each column in about-us slide. |
aboutUs:text |
Text under each title for column in about-us slide. |
Following the front matter, create slides as described in Creating Presentation
Besides default metadata, you can also provide inline metadata for each slide. This will be useful when you want to override the default metadata for a specific slide and this will be applied to that slide only. The inline metadata can be defined by adding metadata directly on the slide title as below:
# Title of the slide ::metadata_key_1:metadata_value_1 ::metadata_key_2:metadata_value_2Example:
# Title of slide ::slide:title-content-image ::logo:logo.pngFor this slide, the slide template will be set to title-content-image, and the logo will be set to logo.png.
The slide template should be provided in the default metadata. The slide type set in the default metadata will be used as the default. The mostly used slide template can be set as default. When you set a slide template in the default metadata, you don’t need to specify the slide type again in the inline metadata for slides that are already defined in the default metadata.
| Slide Template | Desctiption | Usage |
|---|---|---|
cover |
This slide template can be used for cover slide | ::slide:cover |
title-content |
A slide with a title and some content (the content can also be an image) | ::slide:title-content |
title-content-image |
A slide with a title, and content on the left side and an image on the right side | ::slide:title-content-image |
about-us |
The slide with about-us info (e.g., Values, mission, Vision) | ::slide:about-us |
Code:
# TITLE ::slide:coverPreview:
┌────────────────────────────────────────────────────┐
│ │
│ │
│ LOGO │
│ TITLE │
│ PRESENTER NAME │
│ │
│ │
├────────────────────────────────────────────────────┤
│ LOGO │
└────────────────────────────────────────────────────┘
Code:
# TITLE ::slide:title-content
CONTENTPreview:
┌────────────────────────────────────────────────────┐
│ TITLE LOGO │
├────────────────────────────────────────────────────┤
│ │
│ │
│ CONTENT │
│ │
│ │
├────────────────────────────────────────────────────┤
│ FOOTER PAGENR │
└────────────────────────────────────────────────────┘
Image can also be included in the content of the slide.
Code:
# TITLE ::slide:title-content
CONTENT
Preview:
┌────────────────────────────────────────────────────┐
│ TITLE LOGO │
├────────────────────────────────────────────────────┤
│ CONTENT │
├────────────────────────────────────────────────────┤
│ │
│ IMAGE │
│ │
├────────────────────────────────────────────────────┤
│ FOOTER PAGENR │
└────────────────────────────────────────────────────┘
Code:
# TITLE ::slide:title-content-image
CONTENT
Preview:
┌────────────────────────────────────────────────────┐
│ TITLE LOGO │
├──────────────────────────┬─────────────────────────┤
│ │ │
│ │ │
│ CONTENT │ IMAGE │
│ │ │
│ │ │
├──────────────────────────┴─────────────────────────┤
│ FOOTER PAGENR │
└────────────────────────────────────────────────────┘
Code:
# TITLE ::slide:about-us
CONTENTThe title and text can be provided via default metadata in front matter as:
---
aboutUs:
- title: Title 1
text: Some text under title 1
- title: Title 2
text: Some text under title 2
- title: Title 3
text: Some text under title 3
---Preview:
┌────────────────────────────────────────────────────┐
│ TITLE LOGO │
├────────────────────────────────────────────────────┤
│ │
│ ┌────────────────────────────────────────────┐ │
│ │ CONTENT │ │
│ └────────────────────────────────────────────┘ │
│ ┌────────┐ │ ┌────────┐ │ ┌────────┐ │
│ │ TITLE │ │ │ TITLE │ │ │ TITLE │ │
│ │ TEXT │ │ │ TEXT │ │ │ TEXT │ │
│ └────────┘ │ └────────┘ │ └────────┘ │
│ │
├────────────────────────────────────────────────────┤
│ FOOTER PAGENR │
└────────────────────────────────────────────────────┘
[!IMPORTANT] When switching between OpenCloud and oCIS, make sure to clean the browser cache! [!CAUTION] Before commiting changes run
make installOcisandmake clean
For OpenCloud:
make installOpencloudFor oCIS:
make installOcisFor development, build with watch.
pnpm build:wRun the server with the extension:
For OpenCloud:
docker compose -f docker-compose-opencloud.yml upFor oCIS:
docker compose -f docker-compose-ocis.yml upserver URL: localhost:9200
For oCIS:
pnpm run test:e2e <path_to_feature_file>For OpenCloud:
TARGET_SERVER=opencloud pnpm run test:e2e <path_to_feature_file>For OpenCloud:
docker build --build-arg server=Opencloud -t jankaritech/mdpresentation-viewer-opencloud:<version> .For Ocis:
docker build --build-arg server=Ocis -t jankaritech/mdpresentation-viewer-ocis:<version> .