Commit 44758d11 authored by Bastien Bascou's avatar Bastien Bascou

Transformation FramindmapToCanoprof directement

parent 4c930410
.ant-targets-mindMapping2Hdoc.ant
result/**
temp/**
This diff is collapsed.
Mindmapping to Opale
=================
Conversion of Freemind file(s) (.mm) to Opale (.scar)
## Licence
-------------------------------
http://www.gnu.org/licenses/gpl-3.0.txt
## Credits
-------------------------------
This section has been written by
* Thibault BROCHETON
* Bastien FREMONDIERE
* Amélie PERDRIAUD
* Quentin KEUNEBROEK
* Alexandre GUTH
It is based on the work of Guillaume GOMEZ in 2014.
## Presentation
The project aims at converting Freemind files in Opale files. If you use another tool to create mindmapping files, you can probably export it to a .mm file and use it in this converter.
## Dependence
-------------------------------
In dependence with mindmapping_to_hdoc and hdoc_to_opale
## User documentation
-------------------------------
* Use a terminal and go to the root of the folder (mindmapping_to_opale).
* Please refer to the part *Rules to follow* to understand the rules that can help you to personalize the output
* Put your files in a folder 'mindmapping_to_opale/input'
* Enter the command line corresponding to your OS :
* On Linux : 'sh run.sh'
* On Windows : 'run.bat'
If you want to convert one specific file that is in the input folder, use the parameters ' -DinputPath input/<yourFilename>' (ex : 'sh run.sh -DinputPath input/<yourFilename>')
*You will find the result of the conversion in the folder mindmapping_to_opale/output*
*You can find a sample file il the folder /samples.*
### Rules to follow
You can use the native formating in order to complete your Module :
* By using the "Text Bold" option, you will get an emphasis.
* By using the "Text Italic" option, you will get a quote.
You can use special rules in Freemind to personnalize your Scenari Module :
* By default, a "Division" is created with the name of the main node of your MindMap
* Then :
* A node without children is transformed in **grain content**
* A node with children is transformed in **division**
* You can add introduction and conclusion using the hashtag **#intro** and **#conclu** on all the node that has no child
* You can use **#p** to create a paragraph, and **#a** to create a link
* You can use some hashtags to create specific contents :
* **#rmk** : a remark
* **#adv** : an advice
* **#emph** : an emphasis
* **#compl** : a complement
* **#wrng** : a warning
* **#ex** : an example
* **#def** : a definition
* **#question** : a MCQ
* **#singlechoicequestion** : a QCU
* **#choice-qcu** : an answer within a QCU
* **#solution** : a solution associated to a single choice within a QCU (matches an integer)
* **#choice-correct** : a correct answer within a MCQ
* **#choice-incorrect** : an incorrect answer within a MCQ
* **#explanation** : an explanation of the answers within a MCQ
* *Then you can add some **#p** inside these node to create the content*
- You can arrange the order of the node usine the hashtag **#1, #2, #3** etc.
## Unsupported
* Convert colors
* Convert icon into summary elements
* HTML node
## Known bugs
## TODO
* Develop new hashtags to create other type of Opale contents (such as QCM, self-evaluation etc.)
## Technicals notes
### Preamble
This subsection will explain precisely how the conversion process works. If you are reading this, we assume you are familiar with XML technologies seen in NF29 (i.e. ANT scripts, XSL-XSLT transformations and Hdoc format). We also recommend you to open sources files and read the comments.
Besides, the converter have been tested on recent ANT versions (> 1.7.0) only. It depends on hdoc_to_opale module.
### How does the converter works
This converter is using standard NF29 conversion project structure : a main ANT file (mindmapping_to_opale.ant), which handles routine tasks (zipping archives, copying files, order tasks), XSL-XSLT transformation scripts calls. This main ANT file is composed of several targets, and supports both Windows or Linux platforms.
This ant file is called by a script (run.sh or run.bat), with ou without parameters.
### Hdoc files
During the conversion process, the converter is using the converter mindmapping_to_hodc. The result of this conversion is also available in the folder output.
### What does the main ANT file do ?
* Delete and create folder temp, output, output/hdoc and output/scar
* Check if the OS is Windows or Mac, and call the appropriate target
* If there is no input path in parameters, it converts all the files present in the input folder
* It calls the converter mindmapping_to_hdoc to convert .mm files in .hdoc files.
* Copy the results of the conversion in the folder /output/hdoc
* It calls the converter hdoc_to_opale to convert .hdoc files in .scar files
* Copy the results of the conversion in the folder /output/scar
* Finally, clean temporary files
## Capitalization
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project basedir="." default="default">
<property name="module" value="default"/>
<property name="in" location="${basedir}/input"/>
<property name="out" value="${basedir}/output"/>
<property name="resultFile" value="${basedir}/output"/>
<taskdef resource="net/sf/antcontrib/antlib.xml">
<classpath>
<pathelement location="${basedir}/lib/ant-contrib.jar"/>
</classpath>
</taskdef>
<taskdef resource="net/sf/antcontrib/antcontrib.properties">
<classpath>
<pathelement location="${basedir}/lib/ant-contrib.jar"/>
</classpath>
</taskdef>
<target name="default" depends="preparation">
<echo>----------------------------Begin of
conversion----------------------------------</echo>
<antcall target="conversion"/>
<echo>----------------------------End of conversion----------------------------------</echo>
</target>
<target depends="ifOSWindows, ifOSUnix" name="conversion"/>
<condition property="isOSUnix">
<os family="unix" />
</condition>
<condition property="isOSWindows">
<os family="windows" />
</condition>
<!-- if the OS is windows call the target run.script.windows -->
<target name="ifOSWindows" if="isOSWindows">
<echo>is Windows........</echo>
<echo>InputPath : ${inputPath}</echo>
<if>
<isset property="inputPath"/>
<then>
<antcall target="conversion.windows.input-path"/>
</then>
<else>
<antcall target="conversion.windows.no-input-path"/>
</else>
</if>
</target>
<!-- if the OS is not windows call the target run.script.unix-->
<target name="ifOSUnix" if="isOSUnix">
<echo>is Unix........</echo>
<echo>InputPath : ${inputPath}</echo>
<if>
<isset property="inputPath"/>
<then>
<antcall target="conversion.linux.input-path"/>
</then>
<else>
<antcall target="conversion.linux.no-input-path"/>
</else>
</if>
</target>
<target name="conversion.windows.input-path">
<basename property="filename" file="${inputPath}" suffix=".mm"/>
<echo>There is an input path in parameter : conversion of this file</echo>
<!-- Conversion from mm to hdoc -->
<exec dir="${basedir}/../mindmapping_to_hdoc" executable="cmd">
<arg value="${basedir}/../mindmapping_to_hdoc/run.bat"/>
<arg line="-DinputPath ./../mindmapping_to_canoprof/input/${filename}.mm"/>
</exec>
<copy file="${basedir}/../mindmapping_to_hdoc/output/${filename}.hdoc" todir="${resultFile}/hdoc"/>
<!-- Conversion from hdoc to scar -->
<!-- Files have to be copied in hdoc_to_canoprof in order to be treated -->
<copy file="${basedir}/../mindmapping_to_hdoc/output/${filename}.hdoc" todir="${basedir}/../hdoc_to_canoprof/input"/>
<exec dir="${basedir}/../hdoc_to_canoprof" executable="cmd">
<arg value="${basedir}/../hdoc_to_canoprof/run.bat"/>
</exec>
<copy todir="${resultFile}/scar/${filename}">
<fileset dir="${basedir}/../hdoc_to_canoprof/output/${filename}"/>
</copy>
</target>
<target name="conversion.windows.no-input-path">
<echo>There is no input path in parameter : conversion of all the files in ./input</echo>
<for param="inputFile">
<path>
<fileset dir="${in}" includes="**/*.mm"/>
</path>
<sequential>
<local name="filename"/>
<basename property="filename" file="@{inputFile}" suffix=".mm"/>
<!-- Conversion from mm to hdoc -->
<!-- Conversion script is call with the file in parameter (no copy of files in minmapping_to_hdoc) -->
<exec dir="${basedir}/../mindmapping_to_hdoc" executable="cmd">
<arg value="${basedir}/../mindmapping_to_hdoc/run.bat"/>
<arg line="-DinputPath ./../mindmapping_to_canoprof/input/${filename}.mm"/>
</exec>
<property name="filename" value="${filename}"/>
<copy file="${basedir}/../mindmapping_to_hdoc/output/${filename}.hdoc" todir="${resultFile}/hdoc"/>
<!-- Conversion from hdoc to scar -->
<!-- Files have to be copied in hdoc_to_canoprof in order to be treated -->
<copy file="${basedir}/../mindmapping_to_hdoc/output/${filename}.hdoc" todir="${basedir}/../hdoc_to_canoprof/input"/>
<exec dir="${basedir}/../hdoc_to_canoprof" executable="cmd">
<arg value="${basedir}/../hdoc_to_canoprof/run.bat"/>
</exec>
<copy todir="${resultFile}/scar/${filename}">
<fileset dir="${basedir}/../hdoc_to_canoprof/output/${filename}"/>
</copy>
</sequential>
</for>
</target>
<target name="conversion.linux.input-path">
<basename property="filename" file="${inputPath}" suffix=".mm"/>
<echo>There is an input path in parameter : conversion of the file ${inputPath}</echo>
<!-- Conversion from mm to hdoc -->
<exec dir="${basedir}/../mindmapping_to_hdoc" executable="/bin/sh">
<arg value="${basedir}/../mindmapping_to_hdoc/run.sh"/>
<arg line="-DinputPath ./../mindmapping_to_canoprof/input/${filename}.mm"/>
</exec>
<copy file="${basedir}/../mindmapping_to_hdoc/output/${filename}.hdoc" todir="${resultFile}/hdoc"/>
<!-- Conversion from hdoc to scar -->
<!-- Files have to be copied in hdoc_to_canoprof in order to be treated -->
<copy file="${basedir}/../mindmapping_to_hdoc/output/${filename}.hdoc" todir="${basedir}/../hdoc_to_canoprof/input"/>
<exec dir="${basedir}/../hdoc_to_canoprof" executable="/bin/sh">
<arg value="${basedir}/../hdoc_to_canoprof/run.sh"/>
</exec>
<copy todir="${resultFile}/scar/${filename}">
<fileset dir="${basedir}/../hdoc_to_canoprof/output/${filename}"/>
</copy>
</target>
<target name="conversion.linux.no-input-path">
<echo>There is no input path in parameter : conversion of all the files in ./input</echo>
<for param="inputFile">
<path>
<fileset dir="${in}" includes="**/*.mm"/>
</path>
<sequential>
<local name="filename"/>
<basename property="filename" file="@{inputFile}" suffix=".mm"/>
<!-- Conversion from mm to hdoc -->
<!-- Conversion script is call with the file in parameter (no copy of files in minmapping_to_hdoc) -->
<exec dir="${basedir}/../mindmapping_to_hdoc" executable="/bin/sh">
<arg value="${basedir}/../mindmapping_to_hdoc/run.sh"/>
<arg line="-DinputPath ./../mindmapping_to_canoprof/input/${filename}.mm"/>
</exec>
<property name="filename" value="${filename}"/>
<copy file="${basedir}/../mindmapping_to_hdoc/output/${filename}.hdoc" todir="${resultFile}/hdoc"/>
<!-- Conversion from hdoc to scar -->
<!-- Files have to be copied in hdoc_to_canoprof in order to be treated -->
<copy file="${basedir}/../mindmapping_to_hdoc/output/${filename}.hdoc" todir="${basedir}/../hdoc_to_canoprof/input"/>
<exec dir="${basedir}/../hdoc_to_canoprof" executable="/bin/sh">
<arg value="${basedir}/../hdoc_to_canoprof/run.sh"/>
</exec>
<copy todir="${resultFile}/scar/${filename}">
<fileset dir="${basedir}/../hdoc_to_canoprof/output/${filename}"/>
</copy>
</sequential>
</for>
</target>
<target name="preparation">
<echo>Setting up the conversion</echo>
<delete dir="${basedir}/temp"/>
<mkdir dir="${basedir}/temp"/>
<delete dir="${basedir}/output"/>
<mkdir dir="${basedir}/output"/>
<delete dir="${resultFile}/hdoc"></delete>
<mkdir dir="${resultFile}/hdoc" />
<delete dir="${resultFile}/scar"></delete>
<mkdir dir="${resultFile}/scar" />
<echo>--- End ----</echo>
</target>
</project>
@echo off
set lib=lib
set ant=mindmapping_to_canoprof.ant
set antparam=-Dprogram.param=%1
set scJarList=%lib%\*
java.exe -classpath "%scJarList%" -Xmx150m org.apache.tools.ant.Main -buildfile %ant% %antparam%
pause
REM start /MIN java.exe -classpath "%scJarList%" -Xmx150m org.apache.tools.ant.Main -buildfile %ant% %antparam%
\ No newline at end of file
#!/bin/sh
lib="lib"
ant="mindmapping_to_canoprof.ant"
antparam="-Dprogram.param=$1"
inputPath="$2"
#Recherche de java et controle que se soit une version SUN
vJavaCmd="java"
xCheckJava () {
vInputVarName=\$"$1"
vInputVarVal=`eval "expr \"$vInputVarName\" "`
if [ -z "$vInputVarVal" ];then
eval "$1=false"
return
fi
vSunJavaFound=`$vInputVarVal -version 2>&1 | grep -Eo -m 1 "(HotSpot)|(OpenJDK)"`
if [ "$vSunJavaFound" != "HotSpot" ] && [ "$vSunJavaFound" != "OpenJDK" ] ; then
eval "$1=false"
return
fi
}
xCheckJava vJavaCmd
if [ "$vJavaCmd" = "false" ]; then
vJavaCmd="$JAVA_HOME/bin/java"
xCheckJava vJavaCmd
if [ "$vJavaCmd" = "false" ]; then
echo "ERREUR: JRE de SUN introuvable. Veuillez déclarer la variable d'environnement JAVA_HOME."
exit 1
fi
fi
#Lancer la commande
scJarList="$lib/*"
if [ -z "$inputPath" ] ; then
echo "Appel sans paramètre"
$vJavaCmd -classpath "$scJarList:" -Xmx150m org.apache.tools.ant.Main -buildfile $ant $antparam
else
echo "Appel avec paramètre"
$vJavaCmd -classpath "$scJarList:" -Xmx150m org.apache.tools.ant.Main -buildfile $ant $antparam -DinputPath $inputPath
fi
\ No newline at end of file
<map version="1.0.1">
<node ID="ID_1" TEXT="Framindmap To Canoprof">
<node ID="ID_5" POSITION="right" STYLE="fork" TEXT="#2 S&#233;ance 2">
<node ID="ID_6" POSITION="right" STYLE="fork" TEXT="#def D&#233;finition titre">
<node ID="ID_13" POSITION="right" STYLE="fork" TEXT="#p Definition contenu"/>
</node>
<node ID="ID_20" POSITION="right" STYLE="fork" TEXT="#ex Exemple titre">
<node ID="ID_27" POSITION="right" STYLE="fork" TEXT="#p Exemple contenu : En recherche du moyen de mettre tout les types de contenus similaires &#224; d&#233;finition dans le m&#234;me template"/>
</node>
</node>
<node ID="ID_4" POSITION="left" STYLE="fork" TEXT="#1 S&#233;ance 1">
<node ID="ID_29" POSITION="left" STYLE="fork" TEXT="#p Ici probl&#232;me, l'activit&#233; cr&#233;&#233;e devrait &#234;tre de type description courte"/>
</node>
</node>
</map>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment