# PanDocElectron/Wiki2Reveal

Wiki2Reveal is one cross-compilation pair of PanDocElectron as HTML5-WebApp for on-the-fly generation of webbased presentation from a given article in Wikiversity. Wiki2Reveal convert a Wikiversity page
* from the INPUT format in a MediaWiki
* to the OUTPUT format RevealJS.
          Test Wiki2Reveal On-the-fly-Converter - Convert a Wikiversity article into a webbased presentation.
| Source Article | Wiki2Reveal Presentation |
| Demo Article as Example | Wiki2Reveal with Math and Embedded Video |
| Mathematical Topology Demo Lecture | Wiki2Reveal with german Audio Comments - Normen, Metrik, Topologie |
The transcoding of the input format runs totally in the web-browser on the client side. The implementation was designed for the use in Wikiversity as learning resource, but it can also applied on Wikipedia pages but the sections contain mostly to much text to displayed on single slide.
* (Start Wiki2Reveal) can select article name as link parameter of Wiki2Reveal,
* (Fetch Article) download the Wiki sources e.g. from Wikiversity by wtf_wikipedia,
* (RevealJS/DZSlides) convert the wiki sources to RevealJS or DZSlides syntax for the slides,
* (Audio - Firefox) Use embedded audio files in OGG-format as slide content (see Wiki2Reveal Demo with Audio Slide Show and
* (On the fly Slide Generation) display the converted slides in the browser on the fly.
The objective of this HTML5-WebApp is, that e.g. lectures can use Wikiversity articles directly as slides in a course as presentations.

## Current Status

* Wiki2Reveal Link Creator and Starter implemented
* Wiki2Reveal is a currently a beta-Version
* Firefox and Chrome play the OGG audio comments if are added to the article.
* DZSlides as alternative HTML presentation enviroment added to Wiki2Reveal
* Proof of Concept with demo page that includes audio comments

## Demo Links for Wiki2Reveal

The Wiki2Reveal-Presentations are aggregated with a category in the German Wikiversity, this can be performed in the english Wikiversity as well:
* Basic Wiki2Reveal Demo in Wikiversity: Wiki2Reveal Demo - (Audio/Video Slides Demo)
* German Mathematics Lecture in Wikiversity: Topology Demo Lecture - (Audio/Video Slides Demo)

## Create your own Wiki2Reveal Presentation

* You need create an article in Wikiversity that you want to create as Wiki2Reveal presentation. Create the page as usual and enter the comment "created as Wiki2Reveal presentation". Now the page exists.
* Start Wiki2Reveal and enter the article name of your presentation "My First Presentation" and select the Wikiversity language
* Check with "Display Wiki Source" button if your article already exists. If page already exists try to adapt the URL so that you create article as new page.
* Then press in Wiki2Reveal the button "Create Demo Page" and copy the generated footer and demo section to your new page and start to fill the slides with content.
* Sections in this page are treated as slides and therefore do not place too much content per section.
If you already have a page that you want to transform into a Wiki2Reveal presentation then just create the "Wiki2Reveal Footer" for that page. If creates the footer with the corresponding Wiki2Reveal start link.

## Workflow

To convert a MediaWiki source document e.g. in Wikiversity into a Reveal Presentation it is necessary to perform the following 3 steps.
* the first step is the cross-origine call to retrieve the wiki source text of an article in the MediaWiki.
* the second step is to transcode the wiki syntax to HTML body of the RevealJS presentation and
* render the RevealJS presentation if the Wiki source text was fetched successfully from the MediaWiki server.

## Audio Recordings for Slides

Multiple recordings of audio comments can be uploaded with Commonist. It has to be checked if multiple uploads of 15 audio files and more lead to blocking mechanism for account for further uploads with the software Commonist or if that is a problem with Commonist itself! Currently it is recommended in this phase of a proof of concept for Wiki2Reveal to upload audio comment in smaller bundles of 5 files and wait some time until you upload the next 5 audio comments in OGG format.

## Try Wiki2Reveal

Wiki2Reveal-Online-Demo
* (1 - Article Select) Select an article name, that was designed as presentation (i.e. small section, with text that fit on single slide - see Wikiversity:Topologie. Topologie
* (Language Select) Select a Language (e.g. German in the user interface) for which you want to download the article as Reveak presentation.
* (2 - Domain Select)Select a Wiki domain from which you want to download the presentation (mostly Wikiversity or Wikipedia)
* (3 - Start Online Demo of Wiki2Reveal)Start Wiki2Reveal-Online-Demo and adjust the default settings for your article.
* (4 - On-the-Fly-Download and Convert to Presentation) Press download presentation in Wiki2Reveal-Online-Demo.
* (5 - Fullscreen Presentation) Press (F) for Fullscreen presentation.
* (6 - Comment on Slide) Press (C) to comment slide with stylus on tablet or with mouse on PC. Comment on slide are only available during browser session
* (7 - Blackboard for each slide) Press (B) for blackboard to have separate empty blackboard for each slide for further comments that you want write down durch the lecture or seminar with stylus on tablet.
* (Optional: Link Copy of Presentation) AfterRemember the wiki2reveal.html link the browser. You can copy this link and any time you click on the link you will get the current presentation generated on-the-fly from the article in the MediaWiki.
    Those links can be inserted at bottom of Wikiversity articles that were designed as PanDoc-Presentations. The wiki2reveal.html is just an HTML file with Javascript libraries. If this concept reaches the level of Proof-of-Concept and assessed as useful the HTML5 App can be placed on web server of your choice or even integrated in the Wiki server infrastructure as service. You can start the HTML files from your computer locally with e.g. by

## Audio Slides

Wiki2Reveal is able to fetch the OGG-Audio comment from Wiki Commons and play the recorded audio comment as comment for the slides. The audio comments are embedded as regular OGG files at the end of the sections of each block. Start Wiki2Reveal with the parameter
       &audioslids=yes.
With the Wiki2Reveal Starter you can interactively select the Wikiversity Page for Wiki2Reveal and further more you can select the settings for Audio Comments. When start the Wiki2Real Presentation with the user interface of Wiki2Real a link is created that you can also copy into the source Wikiversity page, so that users can start the presentation from the Wikiversity page as well.

## Core Library

Wiki2Reveal is a based on work of Spencer Kelly, who created wtf_wikipedia. Without his work Wiki2Reveal as support for learning resources in Wikiversity would not exist and implemented as a proof of concept. Currently some work is to do to create robust parsing and especially implementing the export format from an Abstract Syntax Tree (AST) into Office products like LibreOffice, PDF and presentations. Reveal is just one example of output formats that can be used. Furthermore the current application of the Book Creator in a Wikipedia and Wikiversity is very demanding on the server side. HTML5 application run in a browser and could take over the performance of conversion. The underlying structure of wtf_wikipedia could be a key component for such a HTML5 based software design, because it has incorporated the following underlying steps, i.e. in nutshell:
* (fetch) fetching a one or number of articles with a call of the MediaWiki API.
* (parse) creates an Abstract Syntax Tree (AST) from the wiki markdown source.
* (output) take the AST as input and generate a specific output format like office documents, PDF, HTML or e-Book formats from the AST.

## Learning Task

* Explore the concept of an Abstract Syntax Tree in the library Uglify and AST created by parsing a HTML page!
* What are the challenges parsing a Wiki markdown source and/or HTML in comparison to a programming language like C++.

## Features

* Wiki2Reveal is an AppLSAC, i.e. runs totally in your browser and does not need a software installed on your computer.
* Download the HTML-files in the GitHub repository https://www.github.com/niebert/Wiki2Reveal and unzip on you harddrive. Explore the code in /docs before. Start the file docs/index.html in your browser.

## Wiki2Reveal Footer and Transparency

The following section is about transparency of any output format conversion of the Wikiversity source of which the Wiki2Reveal approach is just one example (PDF-export of the Wikiversity page is an other one). It is very important that a Wikiversity learning resource that is used by Wiki2Reveal (e.g. as lecture slides or as online presentation for a WikiJournal articles) needs the following adaptation as kind of Wiki2Reveal-policy in the following way:
* (References to Wiki2Reveal) Wikiversity article that are used with Wiki2Reveal must include a reference at the end of the article, that indicate that the article/learning resource was designed for Wiki2Reveal,
* (Compare Wikiversity Source and Wiki2Reveal Presentation) the footer link allows the learner/teacher to start the presentation from the Wikiversity source. With the footer link the community ca check, if the generated Wiki2Reveal presentation has the same content of the source article in Wikiversity, it was generated from. This is important that users of the Wiki2Reveal presentation can validate that the generate content was not manipulated. The footer link can be created with Wiki2Reveal-Starter by entering the Wiki Source details and language and press on the Wiki-Footer-button.
* (Wikiversity back-reference from Wiki2Reveal presentation) The a generated output format like Wiki2Reveal must contain a reference back to Wikiversity source, so that someone who just displays the Wiki2Reveal presentation is also able to validate that source content in Wikiversity and Wiki2Reveal presentation (for Wiki2Reveal the title page contains a link back to Wikiversity Source by default.
* (Wiki2Reveal Footer) a Wiki2Reveal footer is currently not added to the Wikiversity source by default. I started to add the footer for all lectures slides in Mathematics.
** (Small Section that fit on page) With the Wiki2Reveal footer on the page users can understand that the sections of the page in a Wikiversity a designed in way that they fit on slide. Without this information users might add more information to a section (good faith edit) but the content will not be visible on the RevealJS slides.
** (Open Source Code for Wiki2Reveal) A converter like Wiki2Reveal for the Wikiversity learning source must be Open Source and the community must be able to check the source code to validate that does what it pretends to do. Futhermore the comminity should be able to use and modify the tool according to the requirements and constraints the learning resouce in Wikiversity is used in (e.g. Wiki2Reveal for Mathematics lectures or an added Wiki2Reveal presentation for a WikiJournal article).
* (Teachers & Lecturers)
** WikiReveal presentation should be available to teachers/lectures without administations rights.
** Lectures and teacher should be aware of the fact that the annotation of slides do not have an impact on the Wikiversity source or were recorded by Wikiversity servers. The annotation are temporarily available during the browser session on the client. Other calls of the Wiki2Reveal presentation will not see the annotations on the slides and with the next call of the Wiki2Reveal presentation all annotations are gone.
--Bert Niehaus (discuss • contribs) 09:31, 15 December 2019 (UTC)