mirror of
https://github.com/moodle/moodle.git
synced 2025-04-30 05:18:55 +02:00
Added Blackboard restore using XSLT. Works with BB 5.5 and BB 6.0.
Completely untested by me but it LOOKS like it should work. It's quite standalone, and is basically a single function call during the restore precheck which looks in the backup to see if it's a BB file, then converts it using XSLT. Apart from a little tidyup and renaming, I added a check so that it should just silently fail if XSLT functions aren't available Many thanks to Ziba Scott <ziba@linuxbox.com> who wrote it!
This commit is contained in:
parent
9c41fb8eb4
commit
9ff5e44a93
73
backup/bb/README.txt
Normal file
73
backup/bb/README.txt
Normal file
@ -0,0 +1,73 @@
|
||||
Ziba Scott <ziba@linuxbox.com> 11/19/04
|
||||
|
||||
This is a beta demonstration of a utility to convert Blackboard
|
||||
Course export zip files into Moodle course export zip files. It
|
||||
has been successfully tested with Blackboard 5.5 and
|
||||
Moodle 1.4.1 and Moodle CVS. There is minimal Blackboard 6 support.
|
||||
It will convert:
|
||||
|
||||
* Course Name/Title
|
||||
* Forum Topics
|
||||
* Course Documents
|
||||
* Assignments
|
||||
* External Links
|
||||
|
||||
The current status of this project is
|
||||
exploration/proof-of-concept. We have successfully converted
|
||||
basic Blackboard course information as well as course documents
|
||||
and forum topics using the XSLT methods described above.
|
||||
|
||||
AUTOMATED OPERATION:
|
||||
|
||||
REQUIREMENTS FOR WEB INTERFACE:
|
||||
*Moodle 1.4.1 or greater
|
||||
*PHP compiled with --enable-xslt --with-xslt-sablot options
|
||||
(Check php.net for instructions on enabling xslt for your platform)
|
||||
|
||||
INSTALLATION:
|
||||
*Unpack this file into the "backup" directory
|
||||
|
||||
|
||||
|
||||
MANUAL OPERATION:
|
||||
|
||||
REQUIREMENTS:
|
||||
|
||||
*An XSLT 1.0 processor (like Sablotron)
|
||||
*A zipping utility
|
||||
|
||||
REQUIREMENTS FOR WEB INTERFACE:
|
||||
|
||||
*Linux/Unix
|
||||
*PHP compiled with --enable-xslt --with-xslt-sablot options.
|
||||
*Apache with write access to /tmp
|
||||
*A commandline zipping utility
|
||||
|
||||
COMMAND LINE INSTRUCTIONS:
|
||||
|
||||
1) Download and uncompress the Blackboard export into a directory.
|
||||
|
||||
2) Copy bb2moodle.xslt into the Blackboard course directory.
|
||||
|
||||
3) Run your XSLT processor on imsmanifest.xml with bb2moodle.xslt
|
||||
as the input and moodle.xml as the output. If you are using
|
||||
Sablotron on linux, this command will look like this:
|
||||
sabcmd bb2moodle.xslt imsmanifest.xml > moodle.xml
|
||||
|
||||
4) Create a moodle zip file with this structure:
|
||||
moodle.xml
|
||||
user_files/
|
||||
course_files/
|
||||
|
||||
5) Copy every subdirectory and its contents from the Blackboard
|
||||
export directory into the course_files directory. This does
|
||||
not include the Blackboard XML files, only the course
|
||||
documents. Your moodle zip file will now look similar to
|
||||
this:
|
||||
moodle.xml
|
||||
user_files/
|
||||
course_files/res0009/myfile.doc
|
||||
course_files/res0010/myotherfile.doc
|
||||
course_files/res0010/mypicture.jpg
|
||||
|
||||
6) Upload and restore your moodle zip file
|
737
backup/bb/bb5.5_to_moodle.xsl
Normal file
737
backup/bb/bb5.5_to_moodle.xsl
Normal file
@ -0,0 +1,737 @@
|
||||
<?xml version='1.0'?>
|
||||
<xsl:stylesheet version="1.0"
|
||||
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
|
||||
<xsl:template match="/">
|
||||
<MOODLE_BACKUP>
|
||||
<INFO>
|
||||
<NAME>backup-from-blackboard.zip</NAME>
|
||||
<MOODLE_VERSION>2004083100</MOODLE_VERSION>
|
||||
<MOODLE_RELEASE>1.4</MOODLE_RELEASE>
|
||||
<BACKUP_VERSION>2004083100</BACKUP_VERSION>
|
||||
<BACKUP_RELEASE>1.4</BACKUP_RELEASE>
|
||||
<DATE>1094240862</DATE>
|
||||
<ORIGINAL_WWWROOT>INSERT URL HERE</ORIGINAL_WWWROOT>
|
||||
<DETAILS>
|
||||
<MOD>
|
||||
<NAME>assignment</NAME>
|
||||
<INCLUDED>true</INCLUDED>
|
||||
<USERINFO>true</USERINFO>
|
||||
</MOD>
|
||||
<MOD>
|
||||
<NAME>chat</NAME>
|
||||
<INCLUDED>true</INCLUDED>
|
||||
<USERINFO>true</USERINFO>
|
||||
</MOD>
|
||||
<MOD>
|
||||
<NAME>choice</NAME>
|
||||
<INCLUDED>true</INCLUDED>
|
||||
<USERINFO>true</USERINFO>
|
||||
</MOD>
|
||||
<MOD>
|
||||
<NAME>forum</NAME>
|
||||
<INCLUDED>true</INCLUDED>
|
||||
<USERINFO>true</USERINFO>
|
||||
</MOD>
|
||||
<MOD>
|
||||
<NAME>glossary</NAME>
|
||||
<INCLUDED>true</INCLUDED>
|
||||
<USERINFO>true</USERINFO>
|
||||
</MOD>
|
||||
<MOD>
|
||||
<NAME>journal</NAME>
|
||||
<INCLUDED>true</INCLUDED>
|
||||
<USERINFO>true</USERINFO>
|
||||
</MOD>
|
||||
<MOD>
|
||||
<NAME>label</NAME>
|
||||
<INCLUDED>true</INCLUDED>
|
||||
<USERINFO>true</USERINFO>
|
||||
</MOD>
|
||||
<MOD>
|
||||
<NAME>lesson</NAME>
|
||||
<INCLUDED>true</INCLUDED>
|
||||
<USERINFO>true</USERINFO>
|
||||
</MOD>
|
||||
<MOD>
|
||||
<NAME>quiz</NAME>
|
||||
<INCLUDED>true</INCLUDED>
|
||||
<USERINFO>true</USERINFO>
|
||||
</MOD>
|
||||
<MOD>
|
||||
<NAME>resource</NAME>
|
||||
<INCLUDED>true</INCLUDED>
|
||||
<USERINFO>true</USERINFO>
|
||||
</MOD>
|
||||
<MOD>
|
||||
<NAME>scorm</NAME>
|
||||
<INCLUDED>true</INCLUDED>
|
||||
<USERINFO>true</USERINFO>
|
||||
</MOD>
|
||||
<MOD>
|
||||
<NAME>survey</NAME>
|
||||
<INCLUDED>true</INCLUDED>
|
||||
<USERINFO>true</USERINFO>
|
||||
</MOD>
|
||||
<MOD>
|
||||
<NAME>wiki</NAME>
|
||||
<INCLUDED>true</INCLUDED>
|
||||
<USERINFO>true</USERINFO>
|
||||
</MOD>
|
||||
<MOD>
|
||||
<NAME>workshop</NAME>
|
||||
<INCLUDED>true</INCLUDED>
|
||||
<USERINFO>true</USERINFO>
|
||||
</MOD>
|
||||
<USERS>course</USERS>
|
||||
<LOGS>false</LOGS>
|
||||
<USERFILES>true</USERFILES>
|
||||
<COURSEFILES>true</COURSEFILES>
|
||||
</DETAILS>
|
||||
</INFO>
|
||||
<COURSE>
|
||||
<!-- Get course specific information -->
|
||||
<xsl:apply-templates select="document('res00001.dat')//COURSE"/>
|
||||
|
||||
|
||||
<SECTIONS>
|
||||
<!-- Create a title section -->
|
||||
<xsl:for-each select="document('res00001.dat')" >
|
||||
<xsl:call-template name="title_section" />
|
||||
</xsl:for-each>
|
||||
|
||||
|
||||
<!-- Create a topic for each top level Bb item and add section modules ONE folder deep -->
|
||||
<xsl:for-each select="manifest/organizations/tableofcontents/item">
|
||||
<xsl:variable name="section_number" select="position()"/>
|
||||
<xsl:call-template name="sections">
|
||||
<xsl:with-param name="section_number" select="$section_number"/>
|
||||
<xsl:with-param name="recurse" >false</xsl:with-param>
|
||||
</xsl:call-template>
|
||||
</xsl:for-each>
|
||||
|
||||
<!-- Create a topic for each second level Bb item which is a folder, recursively make section modules -->
|
||||
<xsl:for-each select="manifest/organizations/tableofcontents/item/item">
|
||||
<xsl:sort order="descending" select="document(concat(@identifierref,'.dat'))/CONTENT/FLAGS/ISFOLDER/@value"/>
|
||||
<xsl:if test="document(concat(@identifierref,'.dat'))/CONTENT/FLAGS/ISFOLDER/@value = 'true'">
|
||||
<xsl:variable name="prev_sections" select="count(/manifest/organizations/tableofcontents/item)"/>
|
||||
<xsl:variable name="section_number" select="position()+$prev_sections"/>
|
||||
<xsl:call-template name="sections">
|
||||
<xsl:with-param name="section_number" select="$section_number"/>
|
||||
<xsl:with-param name="recurse" >true</xsl:with-param>
|
||||
</xsl:call-template>
|
||||
</xsl:if>
|
||||
</xsl:for-each>
|
||||
</SECTIONS>
|
||||
|
||||
<MODULES>
|
||||
<xsl:call-template name="modules" />
|
||||
</MODULES>
|
||||
|
||||
</COURSE>
|
||||
</MOODLE_BACKUP>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="COURSE">
|
||||
<HEADER>
|
||||
<ID>2</ID>
|
||||
<CATEGORY>
|
||||
<ID></ID>
|
||||
<NAME><xsl:value-of select="CATEGORIES/CATEGORY/@value"/></NAME>
|
||||
</CATEGORY>
|
||||
<PASSWORD></PASSWORD>
|
||||
<IDNUMBER>4</IDNUMBER>
|
||||
<FORMAT>topics</FORMAT>
|
||||
<SHOWGRADES>1</SHOWGRADES>
|
||||
<BLOCKINFO>participants,activity_modules,search_forums,admin,course_list:news_items,calendar_upcoming,recent_activity</BLOCKINFO>
|
||||
<NEWSITEMS>5</NEWSITEMS>
|
||||
<TEACHER>Teacher</TEACHER>
|
||||
<TEACHERS>Teachers</TEACHERS>
|
||||
<STUDENT>Student</STUDENT>
|
||||
<STUDENTS>Students</STUDENTS>
|
||||
<GUEST>0</GUEST>
|
||||
<STARTDATE>1094270400</STARTDATE>
|
||||
<ENROLPERIOD>0</ENROLPERIOD>
|
||||
<NUMSECTIONS>10</NUMSECTIONS>
|
||||
<MAXBYTES>2097152</MAXBYTES>
|
||||
<SHOWREPORTS>0</SHOWREPORTS>
|
||||
<GROUPMODE>0</GROUPMODE>
|
||||
<GROUPMODEFORCE>0</GROUPMODEFORCE>
|
||||
<LANG></LANG>
|
||||
<COST></COST>
|
||||
<MARKER>0</MARKER>
|
||||
<VISIBLE>1</VISIBLE>
|
||||
<HIDDENSECTIONS>0</HIDDENSECTIONS>
|
||||
<TIMECREATED>1094240775</TIMECREATED>
|
||||
<TIMEMODIFIED>1094240775</TIMEMODIFIED>
|
||||
<SUMMARY><xsl:value-of select="DESCRIPTION"/></SUMMARY>
|
||||
<SHORTNAME><xsl:value-of select="COURSEID/@value"/></SHORTNAME>
|
||||
<FULLNAME><xsl:value-of select="TITLE/@value"/></FULLNAME>
|
||||
</HEADER>
|
||||
</xsl:template>
|
||||
|
||||
<!-- ############# Sections ############# -->
|
||||
|
||||
<xsl:template name="title_section" match="resource">
|
||||
<SECTION>
|
||||
<ID>0</ID>
|
||||
<NUMBER>0</NUMBER>
|
||||
<SUMMARY><div style="text-align: center;"><font size="5" style="font-family: arial,helvetica,sans-serif;"><xsl:value-of select="COURSE/TITLE/@value"/></font></div>
|
||||
<xsl:value-of select="COURSE/DESCRIPTION"/>
|
||||
</SUMMARY>
|
||||
<VISIBLE>1</VISIBLE>
|
||||
<MODS>
|
||||
<xsl:call-template name="news_forum_section_mod" >
|
||||
<xsl:with-param name="mod_number">1</xsl:with-param>
|
||||
</xsl:call-template>
|
||||
</MODS>
|
||||
</SECTION>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="sections" match="resource">
|
||||
<xsl:param name="section_number">1. </xsl:param>
|
||||
<xsl:param name="recurse"/>
|
||||
<SECTION>
|
||||
<ID><xsl:value-of select="$section_number"/></ID>
|
||||
<NUMBER><xsl:value-of select="$section_number"/></NUMBER>
|
||||
<SUMMARY><span style="font-weight: bold;"><xsl:value-of select="@title"/></span></SUMMARY>
|
||||
<VISIBLE>1</VISIBLE>
|
||||
<MODS>
|
||||
|
||||
<xsl:if test="$recurse = 'true'">
|
||||
<xsl:variable name="mod_number" select="substring-after(@identifierref,'res')"/>
|
||||
<xsl:call-template name="item_recurse_files" >
|
||||
<xsl:with-param name="mod_number" select="$mod_number"/>
|
||||
<xsl:with-param name="indent" >0</xsl:with-param>
|
||||
<xsl:with-param name="recurse" select="$recurse" />
|
||||
</xsl:call-template>
|
||||
|
||||
</xsl:if>
|
||||
|
||||
<xsl:if test="$recurse = 'false'">
|
||||
<xsl:for-each select="item">
|
||||
<xsl:variable name="mod_number" select="substring-after(@identifierref,'res')"/>
|
||||
<xsl:if test="document(concat(@identifierref,'.dat'))/CONTENT/FLAGS/ISFOLDER/@value != 'true' or document(concat(@identifierref,'.dat'))/EXTERNALLINK/DESCRIPTION/FLAGS/ISHTML/@value ='true'">
|
||||
<!-- Create one section-mod -->
|
||||
<xsl:for-each select="document(concat(@identifierref,'.dat'))">
|
||||
<xsl:call-template name="section_mod">
|
||||
<xsl:with-param name="mod_number" select="$mod_number"/>
|
||||
<xsl:with-param name="indent" select="0"/>
|
||||
</xsl:call-template>
|
||||
</xsl:for-each>
|
||||
|
||||
</xsl:if>
|
||||
</xsl:for-each>
|
||||
</xsl:if>
|
||||
|
||||
|
||||
</MODS>
|
||||
</SECTION>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="item_recurse_files">
|
||||
<xsl:param name="mod_number">1. </xsl:param>
|
||||
<xsl:param name="indent">1. </xsl:param>
|
||||
<xsl:param name="recurse"/>
|
||||
|
||||
|
||||
<!-- Create one section-mod -->
|
||||
<xsl:for-each select="document(concat(@identifierref,'.dat'))">
|
||||
<xsl:call-template name="section_mod">
|
||||
<xsl:with-param name="mod_number" select="$mod_number"/>
|
||||
<xsl:with-param name="indent" select="$indent"/>
|
||||
</xsl:call-template>
|
||||
</xsl:for-each>
|
||||
|
||||
<!-- Depth first recursion to preserve order -->
|
||||
<xsl:for-each select="item">
|
||||
<xsl:variable name="m_number" select="substring-after(@identifierref,'res')"/>
|
||||
<xsl:call-template name="item_recurse_files" >
|
||||
<xsl:with-param name="mod_number" select="$m_number"/>
|
||||
<xsl:with-param name="indent" select="$indent + 1"/>
|
||||
</xsl:call-template>
|
||||
</xsl:for-each>
|
||||
|
||||
</xsl:template>
|
||||
|
||||
|
||||
<!-- Determines the type of section mod entry and calls the appropriate creation template -->
|
||||
<xsl:template name="section_mod" >
|
||||
<xsl:param name="mod_number">1. </xsl:param>
|
||||
<xsl:param name="contenttype" />
|
||||
<xsl:param name="indent">1. </xsl:param>
|
||||
|
||||
<!-- Every file will have a label module describing it -->
|
||||
<xsl:choose>
|
||||
<!-- Detected one or more files -->
|
||||
<xsl:when test="CONTENT/FILES/FILEREF/RELFILE/@value != ''">
|
||||
|
||||
<!-- Create a label -->
|
||||
<xsl:call-template name="section_mod_generic">
|
||||
<xsl:with-param name="mod_number" ><xsl:value-of select="$mod_number"/></xsl:with-param>
|
||||
<xsl:with-param name="indent" ><xsl:value-of select="$indent"/></xsl:with-param>
|
||||
<xsl:with-param name="type" >label</xsl:with-param>
|
||||
</xsl:call-template>
|
||||
|
||||
<!-- Create a resource for each file -->
|
||||
<xsl:for-each select="CONTENT/FILES/FILEREF">
|
||||
<xsl:call-template name="section_mod_generic">
|
||||
<xsl:with-param name="mod_number" ><xsl:value-of select="$mod_number"/>0<xsl:value-of select="position()"/></xsl:with-param>
|
||||
<xsl:with-param name="indent" select="$indent + 1"/>
|
||||
<xsl:with-param name="type" >resource</xsl:with-param>
|
||||
</xsl:call-template>
|
||||
</xsl:for-each>
|
||||
|
||||
</xsl:when>
|
||||
|
||||
|
||||
<!-- Detected a folder -->
|
||||
<xsl:when test="CONTENT/FLAGS/ISFOLDER/@value = 'true'">
|
||||
<!-- Create a label -->
|
||||
<xsl:call-template name="section_mod_generic">
|
||||
<xsl:with-param name="mod_number" select="$mod_number"/>
|
||||
<xsl:with-param name="indent" select="$indent"/>
|
||||
<xsl:with-param name="type" >label</xsl:with-param>
|
||||
</xsl:call-template>
|
||||
</xsl:when>
|
||||
|
||||
<!-- Detected text -->
|
||||
<xsl:when test="CONTENT/MAINDATA/FLAGS/ISHTML/@value = 'true'">
|
||||
<!-- Create a resource -->
|
||||
<xsl:call-template name="section_mod_generic">
|
||||
<xsl:with-param name="mod_number" select="$mod_number"/>
|
||||
<xsl:with-param name="indent" select="$indent"/>
|
||||
<xsl:with-param name="type" >resource</xsl:with-param>
|
||||
</xsl:call-template>
|
||||
</xsl:when>
|
||||
|
||||
<!-- Detected external link -->
|
||||
<xsl:when test="EXTERNALLINK/TITLE/@value != '' ">
|
||||
<!-- Create a label -->
|
||||
<xsl:call-template name="section_mod_generic">
|
||||
<xsl:with-param name="mod_number" select="$mod_number"/>
|
||||
<xsl:with-param name="indent" select="$indent"/>
|
||||
<xsl:with-param name="type" >label</xsl:with-param>
|
||||
</xsl:call-template>
|
||||
|
||||
<!-- Create a resource -->
|
||||
<xsl:call-template name="section_mod_generic">
|
||||
<xsl:with-param name="mod_number" select="$mod_number"/>
|
||||
<xsl:with-param name="indent" select="$indent"/>
|
||||
<xsl:with-param name="type" >resource</xsl:with-param>
|
||||
</xsl:call-template>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
</xsl:otherwise>
|
||||
|
||||
</xsl:choose>
|
||||
|
||||
|
||||
</xsl:template>
|
||||
|
||||
<!-- ############# Section Modules ############# -->
|
||||
<!-- Creates one section module entry.
|
||||
Works for types: label, resource (text), resource (externallink)
|
||||
-->
|
||||
<xsl:template name="section_mod_generic" >
|
||||
<xsl:param name="mod_number">1. </xsl:param>
|
||||
<xsl:param name="indent">1. </xsl:param>
|
||||
<xsl:param name="type"/>
|
||||
|
||||
<MOD>
|
||||
<ID><xsl:if test="$type = 'label'">1</xsl:if><xsl:value-of select="$mod_number"/>0</ID>
|
||||
<ZIBA_NAME>
|
||||
<xsl:value-of select="CONTENT/TITLE"/>
|
||||
<xsl:value-of select="EXTERNALLINK/TITLE/@value"/>
|
||||
</ZIBA_NAME>
|
||||
<TYPE><xsl:value-of select="$type"/></TYPE>
|
||||
<INSTANCE><xsl:value-of select="$mod_number"/></INSTANCE>
|
||||
<ADDED>1094240775</ADDED>
|
||||
<DELETED>0</DELETED>
|
||||
<SCORE>0</SCORE>
|
||||
<INDENT><xsl:value-of select="$indent"/></INDENT>
|
||||
<VISIBLE>1</VISIBLE>
|
||||
<GROUPMODE>0</GROUPMODE>
|
||||
</MOD>
|
||||
|
||||
</xsl:template>
|
||||
|
||||
<!-- ############# Modules ############# -->
|
||||
<!-- Creates a module-label entry -->
|
||||
<xsl:template name="module_label" >
|
||||
<xsl:param name="mod_number">1. </xsl:param>
|
||||
<MOD>
|
||||
<ID><xsl:value-of select="$mod_number"/></ID>
|
||||
<LABELFOUND></LABELFOUND>
|
||||
<MODTYPE>label</MODTYPE>
|
||||
<NAME>
|
||||
<!-- for CONTENT text -->
|
||||
<xsl:value-of select="TITLE"/>
|
||||
<!-- for EXTERNALLINK text -->
|
||||
<xsl:value-of select="TITLE/@value"/>
|
||||
</NAME>
|
||||
<CONTENT>
|
||||
<span style="font-style: italic;">
|
||||
<!-- for CONTENT text -->
|
||||
<xsl:value-of select="TITLE"/>
|
||||
<!-- for EXTERNALLINK text -->
|
||||
<xsl:value-of select="TITLE/@value"/>
|
||||
:</span>
|
||||
<!-- for CONTENT text -->
|
||||
<xsl:value-of select="MAINDATA/TEXT"/>
|
||||
<!-- for EXTERNALLINK text -->
|
||||
<xsl:value-of select="DESCRIPTION/TEXT"/>
|
||||
</CONTENT>
|
||||
<TIMEMODIFIED>1094240775</TIMEMODIFIED>
|
||||
</MOD>
|
||||
</xsl:template>
|
||||
|
||||
<!-- Creates one module-file entry -->
|
||||
<xsl:template name="module_file" >
|
||||
<xsl:param name="mod_number">1. </xsl:param>
|
||||
<MOD>
|
||||
<ID><xsl:value-of select="$mod_number"/></ID>
|
||||
<MODTYPE>resource</MODTYPE>
|
||||
<NAME>
|
||||
<!-- <xsl:value-of select="FILES/FILEREF/RELFILE/@value"/> -->
|
||||
<xsl:value-of select="RELFILE/@value"/>
|
||||
</NAME>
|
||||
<TYPE>file</TYPE>
|
||||
<REFERENCE>
|
||||
<!-- <xsl:value-of select="FILES/FILEREF/CONTENTID/@value"/>/<xsl:value-of select="FILES/FILEREF/RELFILE/@value"/> -->
|
||||
<xsl:value-of select="CONTENTID/@value"/>/<xsl:value-of select="RELFILE/@value"/>
|
||||
</REFERENCE>
|
||||
<SUMMARY>
|
||||
summary broken
|
||||
<xsl:value-of select="MAINDATA/TEXT"/>
|
||||
</SUMMARY>
|
||||
<ALLTEXT></ALLTEXT>
|
||||
<POPUP></POPUP>
|
||||
<OPTIONS>frame</OPTIONS>
|
||||
<TIMEMODIFIED>1094240775</TIMEMODIFIED>
|
||||
</MOD>
|
||||
</xsl:template>
|
||||
|
||||
<!-- Creates one module-text entry -->
|
||||
<xsl:template name="module_text" >
|
||||
<xsl:param name="mod_number">1. </xsl:param>
|
||||
<MOD>
|
||||
<ID><xsl:value-of select="$mod_number"/></ID>
|
||||
<MODTYPE>resource</MODTYPE>
|
||||
<NAME>
|
||||
<xsl:value-of select="TITLE"/>
|
||||
<!-- For announcements -->
|
||||
<xsl:value-of select="TITLE/@value"/>
|
||||
</NAME>
|
||||
<TYPE>text</TYPE>
|
||||
<REFERENCE></REFERENCE>
|
||||
<SUMMARY>
|
||||
<xsl:value-of select="TITLE"/>
|
||||
<!-- For announcements -->
|
||||
<xsl:value-of select="TITLE/@value"/>
|
||||
</SUMMARY>
|
||||
<ALLTEXT>
|
||||
<xsl:value-of select="MAINDATA/TEXT"/>
|
||||
<!-- For announcements -->
|
||||
<xsl:value-of select="DESCRIPTION/TEXT"/>
|
||||
</ALLTEXT>
|
||||
<POPUP></POPUP>
|
||||
<OPTIONS></OPTIONS>
|
||||
<TIMEMODIFIED>1094240775</TIMEMODIFIED>
|
||||
</MOD>
|
||||
</xsl:template>
|
||||
|
||||
<!-- Creates one module-link entry -->
|
||||
<xsl:template name="module_link" >
|
||||
<xsl:param name="mod_number">1. </xsl:param>
|
||||
<MOD>
|
||||
<ID><xsl:value-of select="$mod_number"/></ID>
|
||||
<MODTYPE>resource</MODTYPE>
|
||||
<NAME>
|
||||
<xsl:value-of select="URL/@value"/>
|
||||
</NAME>
|
||||
<TYPE>file</TYPE>
|
||||
<REFERENCE>
|
||||
<xsl:value-of select="URL/@value"/>
|
||||
</REFERENCE>
|
||||
<SUMMARY>
|
||||
<xsl:value-of select="TITLE/@value"/><br/>
|
||||
<xsl:value-of select="URL/@value"/>
|
||||
</SUMMARY>
|
||||
<ALLTEXT>
|
||||
<xsl:value-of select="DESCRIPTION/TEXT"/>
|
||||
</ALLTEXT>
|
||||
<POPUP></POPUP>
|
||||
<OPTIONS>frame</OPTIONS>
|
||||
<TIMEMODIFIED>1094240775</TIMEMODIFIED>
|
||||
</MOD>
|
||||
</xsl:template>
|
||||
|
||||
<!-- ############# Modules Decisions ############# -->
|
||||
|
||||
<!-- Creates all module entries -->
|
||||
<xsl:template name="modules" match="resource">
|
||||
<!-- Create the News Forum Module -->
|
||||
<xsl:call-template name="news_forum_mod">
|
||||
<xsl:with-param name="mod_number" >1</xsl:with-param>
|
||||
</xsl:call-template>
|
||||
<!-- Create all other modules -->
|
||||
<xsl:for-each select="//resource">
|
||||
<xsl:variable name="mod_number" select="substring-after(@identifier,'res')"/>
|
||||
<xsl:for-each select="document(concat('',@file))">
|
||||
<xsl:apply-templates select="//FORUM">
|
||||
<xsl:with-param name="mod_number" select="$mod_number"/>
|
||||
</xsl:apply-templates>
|
||||
<xsl:apply-templates select="//CONTENT">
|
||||
<xsl:with-param name="mod_number" select="$mod_number"/>
|
||||
</xsl:apply-templates>
|
||||
<xsl:apply-templates select="//EXTERNALLINK">
|
||||
<xsl:with-param name="mod_number" select="$mod_number"/>
|
||||
</xsl:apply-templates>
|
||||
</xsl:for-each>
|
||||
</xsl:for-each>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
<!-- Create an EXTERNALLINK module entry -->
|
||||
<xsl:template match="EXTERNALLINK">
|
||||
<xsl:param name="mod_number">1. </xsl:param>
|
||||
<!-- Every link module will have a label module describing it -->
|
||||
<xsl:call-template name="module_label">
|
||||
<xsl:with-param name="mod_number" select="$mod_number"/>
|
||||
</xsl:call-template>
|
||||
|
||||
<xsl:call-template name="module_link">
|
||||
<xsl:with-param name="mod_number" select="$mod_number"/>
|
||||
</xsl:call-template>
|
||||
|
||||
</xsl:template>
|
||||
|
||||
<!-- Create a CONTENT module entry -->
|
||||
<xsl:template match="CONTENT">
|
||||
<xsl:param name="mod_number">1. </xsl:param>
|
||||
|
||||
<xsl:choose>
|
||||
<!-- Detected a file -->
|
||||
<xsl:when test="FILES/FILEREF/RELFILE/@value != ''">
|
||||
|
||||
<!-- Every file module will have a label module describing it -->
|
||||
<xsl:call-template name="module_label">
|
||||
<xsl:with-param name="mod_number" select="$mod_number"/>
|
||||
</xsl:call-template>
|
||||
|
||||
<xsl:for-each select="FILES/FILEREF">
|
||||
<xsl:call-template name="module_file">
|
||||
<xsl:with-param name="mod_number" ><xsl:value-of select="$mod_number"/>0<xsl:value-of select="position()"/></xsl:with-param>
|
||||
</xsl:call-template>
|
||||
</xsl:for-each>
|
||||
|
||||
</xsl:when>
|
||||
|
||||
<!-- Detected a folder -->
|
||||
<xsl:when test="FLAGS/ISFOLDER/@value = 'true'">
|
||||
|
||||
<xsl:call-template name="module_label">
|
||||
<xsl:with-param name="mod_number" select="$mod_number"/>
|
||||
</xsl:call-template>
|
||||
|
||||
</xsl:when>
|
||||
|
||||
<!-- Detected text -->
|
||||
<xsl:when test="MAINDATA/FLAGS/ISHTML/@value = 'true'">
|
||||
|
||||
<xsl:call-template name="module_text">
|
||||
<xsl:with-param name="mod_number" select="$mod_number"/>
|
||||
</xsl:call-template>
|
||||
|
||||
</xsl:when>
|
||||
|
||||
<xsl:otherwise>
|
||||
<UNKNOWN>
|
||||
<xsl:value-of select="TITLE"/>
|
||||
</UNKNOWN>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
|
||||
</xsl:template>
|
||||
<!-- ############# Forum conversion ################# -->
|
||||
|
||||
<xsl:template match="FORUM">
|
||||
<xsl:param name="mod_number">1. </xsl:param>
|
||||
<MOD>
|
||||
<ID><xsl:value-of select="$mod_number"/></ID>
|
||||
<MODTYPE>forum</MODTYPE>
|
||||
<TYPE>general</TYPE>
|
||||
<NAME>
|
||||
<xsl:value-of select="TITLE/@value"/>
|
||||
</NAME>
|
||||
<INTRO>
|
||||
<xsl:value-of select="DESCRIPTION/TEXT"/>
|
||||
</INTRO>
|
||||
<OPEN>2</OPEN>
|
||||
<ASSESSED>0</ASSESSED>
|
||||
<ASSESSPUBLIC>0</ASSESSPUBLIC>
|
||||
<ASSESSTIMESTART>0</ASSESSTIMESTART>
|
||||
<ASSESSTIMEFINISH>0</ASSESSTIMEFINISH>
|
||||
<MAXBYTES>0</MAXBYTES>
|
||||
<SCALE>0</SCALE>
|
||||
<FORCESUBSCRIBE>0</FORCESUBSCRIBE>
|
||||
<RSSTYPE>0</RSSTYPE>
|
||||
<RSSARTICLES>0</RSSARTICLES>
|
||||
<TIMEMODIFIED></TIMEMODIFIED>
|
||||
<!--
|
||||
<DISCUSSIONS>
|
||||
<xsl:for-each select="MESSAGETHREADS/MSG">
|
||||
<xsl:variable name="discussion_id" select="position()"/>
|
||||
<DISCUSSION>
|
||||
<ID>
|
||||
<xsl:value-of select="$mod_number"/>0<xsl:value-of select="$discussion_id"/>
|
||||
</ID>
|
||||
<NAME>
|
||||
<xsl:value-of select="TITLE/@value"/>
|
||||
</NAME>
|
||||
<FIRSTPOST>2</FIRSTPOST>
|
||||
<USERID>1</USERID>
|
||||
<GROUPID>-1</GROUPID>
|
||||
<ASSESSED>1</ASSESSED>
|
||||
<TIMEMODIFIED>1094748430</TIMEMODIFIED>
|
||||
<USERMODIFIED>1</USERMODIFIED>
|
||||
<POSTS>
|
||||
<xsl:call-template name="MSG">
|
||||
<xsl:with-param name="parent" select="0"/>
|
||||
<xsl:with-param name="post_id">
|
||||
<xsl:value-of select="$mod_number"/>0<xsl:value-of select="$discussion_id"/>0<xsl:value-of select="position()"/>
|
||||
</xsl:with-param>
|
||||
</xsl:call-template>
|
||||
</POSTS>
|
||||
</DISCUSSION>
|
||||
</xsl:for-each>
|
||||
</DISCUSSIONS>
|
||||
-->
|
||||
</MOD>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="MSG" match="MSG">
|
||||
<xsl:param name="parent" select="1"/>
|
||||
<xsl:param name="post_id" select="1"/>
|
||||
<POST>
|
||||
<ID><xsl:value-of select="$post_id"/></ID>
|
||||
<PARENT> <xsl:value-of select="$parent"/></PARENT>
|
||||
<USERID>1</USERID>
|
||||
<CREATED>1094748430</CREATED>
|
||||
<MODIFIED>1094748430</MODIFIED>
|
||||
<MAILED>1</MAILED>
|
||||
<SUBJECT><xsl:value-of select="TITLE/@value"/></SUBJECT>
|
||||
<MESSAGE><xsl:value-of select="MESSAGETEXT"/></MESSAGE>
|
||||
<FORMAT>1</FORMAT>
|
||||
<ATTACHMENT></ATTACHMENT>
|
||||
<TOTALSCORE>0</TOTALSCORE>
|
||||
</POST>
|
||||
|
||||
<xsl:for-each select="MSG">
|
||||
<xsl:call-template name="MSG">
|
||||
<xsl:with-param name="parent" select="$post_id"/>
|
||||
<xsl:with-param name="post_id">
|
||||
<xsl:value-of select="$post_id"/>0<xsl:value-of select="position()"/>
|
||||
</xsl:with-param>
|
||||
</xsl:call-template>
|
||||
</xsl:for-each>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="news_forum_section_mod" >
|
||||
<xsl:param name="mod_number">1. </xsl:param>
|
||||
<MOD>
|
||||
<ID>1</ID>
|
||||
<ZIBA_NAME>
|
||||
News forum
|
||||
</ZIBA_NAME>
|
||||
<TYPE>news</TYPE>
|
||||
<INSTANCE>1</INSTANCE>
|
||||
<ADDED>1094240775</ADDED>
|
||||
<DELETED>0</DELETED>
|
||||
<SCORE>0</SCORE>
|
||||
<INDENT>0</INDENT>
|
||||
<VISIBLE>1</VISIBLE>
|
||||
<GROUPMODE>0</GROUPMODE>
|
||||
</MOD>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="news_forum_mod" >
|
||||
<xsl:param name="mod_number">1. </xsl:param>
|
||||
<MOD>
|
||||
<ID><xsl:value-of select="$mod_number"/></ID>
|
||||
<MODTYPE>forum</MODTYPE>
|
||||
<TYPE>news</TYPE>
|
||||
<NAME>News forum</NAME>
|
||||
<INTRO>General news and announcements</INTRO>
|
||||
<OPEN>2</OPEN>
|
||||
<ASSESSED>0</ASSESSED>
|
||||
<ASSESSPUBLIC>0</ASSESSPUBLIC>
|
||||
<ASSESSTIMESTART>0</ASSESSTIMESTART>
|
||||
<ASSESSTIMEFINISH>0</ASSESSTIMEFINISH>
|
||||
<MAXBYTES>0</MAXBYTES>
|
||||
<SCALE>0</SCALE>
|
||||
<FORCESUBSCRIBE>0</FORCESUBSCRIBE>
|
||||
<RSSTYPE>0</RSSTYPE>
|
||||
<RSSARTICLES>0</RSSARTICLES>
|
||||
<TIMEMODIFIED></TIMEMODIFIED>
|
||||
<DISCUSSIONS>
|
||||
<xsl:for-each select="//resource">
|
||||
<xsl:variable name="m_number" select="substring-after(@identifier,'res')"/>
|
||||
<xsl:variable name="discussion_id" select="position()"/>
|
||||
<xsl:for-each select="document(concat('',@file))">
|
||||
<xsl:if test="//ANNOUNCEMENT/TITLE/@value != ''">
|
||||
<xsl:call-template name="ANNOUNCEMENT">
|
||||
<xsl:with-param name="discussion_id" select="$discussion_id"/>
|
||||
</xsl:call-template>
|
||||
</xsl:if>
|
||||
</xsl:for-each>
|
||||
</xsl:for-each>
|
||||
|
||||
</DISCUSSIONS>
|
||||
</MOD>
|
||||
</xsl:template>
|
||||
|
||||
<!-- Create an ANNOUNCEMENT forum entry -->
|
||||
<xsl:template name="ANNOUNCEMENT" >
|
||||
<xsl:param name="discussion_id">1. </xsl:param>
|
||||
<DISCUSSION>
|
||||
<ID>
|
||||
<xsl:value-of select="$discussion_id"/>
|
||||
</ID>
|
||||
<NAME><xsl:value-of select="//ANNOUNCEMENT/TITLE/@value"/></NAME>
|
||||
<FIRSTPOST><xsl:value-of select="$discussion_id"/></FIRSTPOST>
|
||||
<USERID>1</USERID>
|
||||
<GROUPID>-1</GROUPID>
|
||||
<ASSESSED>1</ASSESSED>
|
||||
<TIMEMODIFIED>1094748430</TIMEMODIFIED>
|
||||
<USERMODIFIED>1</USERMODIFIED>
|
||||
<POSTS>
|
||||
<POST>
|
||||
<ID><xsl:value-of select="$discussion_id"/></ID>
|
||||
<PARENT>0</PARENT>
|
||||
<USERID>1</USERID>
|
||||
<CREATED>1094748430</CREATED>
|
||||
<MODIFIED>1094748430</MODIFIED>
|
||||
<MAILED>1</MAILED>
|
||||
<SUBJECT><xsl:value-of select="//ANNOUNCEMENT/TITLE/@value"/></SUBJECT>
|
||||
<MESSAGE><xsl:value-of select="//ANNOUNCEMENT/DESCRIPTION/TEXT"/></MESSAGE>
|
||||
<FORMAT>1</FORMAT>
|
||||
<ATTACHMENT></ATTACHMENT>
|
||||
<TOTALSCORE>0</TOTALSCORE>
|
||||
</POST>
|
||||
</POSTS>
|
||||
</DISCUSSION>
|
||||
|
||||
<!--
|
||||
<xsl:call-template name="MSG">
|
||||
<xsl:with-param name="parent" select="0"/>
|
||||
<xsl:with-param name="post_id">
|
||||
<xsl:value-of select="$mod_number"/>0<xsl:value-of select="$discussion_id"/>0<xsl:value-of select="position()"/>
|
||||
</xsl:with-param>
|
||||
</xsl:call-template>
|
||||
-->
|
||||
</xsl:template>
|
||||
|
||||
|
||||
</xsl:stylesheet>
|
||||
|
690
backup/bb/bb6_to_moodle.xsl
Normal file
690
backup/bb/bb6_to_moodle.xsl
Normal file
@ -0,0 +1,690 @@
|
||||
<?xml version='1.0'?>
|
||||
<xsl:stylesheet version="1.0"
|
||||
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||||
>
|
||||
<xsl:template match="/">
|
||||
<MOODLE_BACKUP>
|
||||
<INFO>
|
||||
<NAME>backup-from-blackboard.zip</NAME>
|
||||
<MOODLE_VERSION>2004083100</MOODLE_VERSION>
|
||||
<MOODLE_RELEASE>1.4</MOODLE_RELEASE>
|
||||
<BACKUP_VERSION>2004083100</BACKUP_VERSION>
|
||||
<BACKUP_RELEASE>1.4</BACKUP_RELEASE>
|
||||
<DATE>1094240862</DATE>
|
||||
<ORIGINAL_WWWROOT>INSERT URL HERE</ORIGINAL_WWWROOT>
|
||||
<DETAILS>
|
||||
<MOD>
|
||||
<NAME>assignment</NAME>
|
||||
<INCLUDED>true</INCLUDED>
|
||||
<USERINFO>true</USERINFO>
|
||||
</MOD>
|
||||
<MOD>
|
||||
<NAME>chat</NAME>
|
||||
<INCLUDED>true</INCLUDED>
|
||||
<USERINFO>true</USERINFO>
|
||||
</MOD>
|
||||
<MOD>
|
||||
<NAME>choice</NAME>
|
||||
<INCLUDED>true</INCLUDED>
|
||||
<USERINFO>true</USERINFO>
|
||||
</MOD>
|
||||
<MOD>
|
||||
<NAME>forum</NAME>
|
||||
<INCLUDED>true</INCLUDED>
|
||||
<USERINFO>true</USERINFO>
|
||||
</MOD>
|
||||
<MOD>
|
||||
<NAME>glossary</NAME>
|
||||
<INCLUDED>true</INCLUDED>
|
||||
<USERINFO>true</USERINFO>
|
||||
</MOD>
|
||||
<MOD>
|
||||
<NAME>journal</NAME>
|
||||
<INCLUDED>true</INCLUDED>
|
||||
<USERINFO>true</USERINFO>
|
||||
</MOD>
|
||||
<MOD>
|
||||
<NAME>label</NAME>
|
||||
<INCLUDED>true</INCLUDED>
|
||||
<USERINFO>true</USERINFO>
|
||||
</MOD>
|
||||
<MOD>
|
||||
<NAME>lesson</NAME>
|
||||
<INCLUDED>true</INCLUDED>
|
||||
<USERINFO>true</USERINFO>
|
||||
</MOD>
|
||||
<MOD>
|
||||
<NAME>quiz</NAME>
|
||||
<INCLUDED>true</INCLUDED>
|
||||
<USERINFO>true</USERINFO>
|
||||
</MOD>
|
||||
<MOD>
|
||||
<NAME>resource</NAME>
|
||||
<INCLUDED>true</INCLUDED>
|
||||
<USERINFO>true</USERINFO>
|
||||
</MOD>
|
||||
<MOD>
|
||||
<NAME>scorm</NAME>
|
||||
<INCLUDED>true</INCLUDED>
|
||||
<USERINFO>true</USERINFO>
|
||||
</MOD>
|
||||
<MOD>
|
||||
<NAME>survey</NAME>
|
||||
<INCLUDED>true</INCLUDED>
|
||||
<USERINFO>true</USERINFO>
|
||||
</MOD>
|
||||
<MOD>
|
||||
<NAME>wiki</NAME>
|
||||
<INCLUDED>true</INCLUDED>
|
||||
<USERINFO>true</USERINFO>
|
||||
</MOD>
|
||||
<MOD>
|
||||
<NAME>workshop</NAME>
|
||||
<INCLUDED>true</INCLUDED>
|
||||
<USERINFO>true</USERINFO>
|
||||
</MOD>
|
||||
<USERS>course</USERS>
|
||||
<LOGS>false</LOGS>
|
||||
<USERFILES>true</USERFILES>
|
||||
<COURSEFILES>true</COURSEFILES>
|
||||
</DETAILS>
|
||||
</INFO>
|
||||
<COURSE>
|
||||
<!-- Get course specific information -->
|
||||
<xsl:apply-templates select="document('res00001.dat')//COURSE"/>
|
||||
|
||||
<xsl:call-template name="modules" />
|
||||
|
||||
<SECTIONS>
|
||||
<!-- Create a title section -->
|
||||
<xsl:for-each select="document('res00001.dat')" >
|
||||
<xsl:call-template name="title_section" />
|
||||
</xsl:for-each>
|
||||
|
||||
|
||||
<!-- Create a topic for each top level Bb item and add section modules ONE folder deep -->
|
||||
<xsl:for-each select="manifest/organizations/organization/item">
|
||||
<xsl:variable name="section_number" select="position()"/>
|
||||
<xsl:call-template name="sections">
|
||||
<xsl:with-param name="section_number" select="$section_number"/>
|
||||
<xsl:with-param name="recurse" >false</xsl:with-param>
|
||||
</xsl:call-template>
|
||||
</xsl:for-each>
|
||||
|
||||
<!-- Create a topic for each second level Bb item which is a folder, recursively make section modules -->
|
||||
<xsl:for-each select="manifest/organizations/organization/item/item">
|
||||
<xsl:sort order="descending" select="document(concat(@identifierref,'.dat'))/CONTENT/FLAGS/ISFOLDER/@value"/>
|
||||
<xsl:if test="document(concat(@identifierref,'.dat'))/CONTENT/FLAGS/ISFOLDER/@value = 'true'">
|
||||
<xsl:variable name="prev_sections" select="count(/manifest/organizations/tableofcontents/item)"/>
|
||||
<xsl:variable name="section_number" select="position()+$prev_sections"/>
|
||||
<xsl:call-template name="sections">
|
||||
<xsl:with-param name="section_number" select="$section_number"/>
|
||||
<xsl:with-param name="recurse" >true</xsl:with-param>
|
||||
</xsl:call-template>
|
||||
</xsl:if>
|
||||
</xsl:for-each>
|
||||
</SECTIONS>
|
||||
|
||||
</COURSE>
|
||||
</MOODLE_BACKUP>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="COURSE">
|
||||
<HEADER>
|
||||
<ID>2</ID>
|
||||
<CATEGORY>
|
||||
<ID></ID>
|
||||
<NAME><xsl:value-of select="CATEGORIES/CATEGORY/@value"/></NAME>
|
||||
</CATEGORY>
|
||||
<PASSWORD></PASSWORD>
|
||||
<IDNUMBER>4</IDNUMBER>
|
||||
<FORMAT>topics</FORMAT>
|
||||
<SHOWGRADES>1</SHOWGRADES>
|
||||
<BLOCKINFO>participants,activity_modules,search_forums,admin,course_list:news_items,calendar_upcoming,recent_activity</BLOCKINFO>
|
||||
<NEWSITEMS>5</NEWSITEMS>
|
||||
<TEACHER>Teacher</TEACHER>
|
||||
<TEACHERS>Teachers</TEACHERS>
|
||||
<STUDENT>Student</STUDENT>
|
||||
<STUDENTS>Students</STUDENTS>
|
||||
<GUEST>0</GUEST>
|
||||
<STARTDATE>1094270400</STARTDATE>
|
||||
<ENROLPERIOD>0</ENROLPERIOD>
|
||||
<NUMSECTIONS>10</NUMSECTIONS>
|
||||
<MAXBYTES>2097152</MAXBYTES>
|
||||
<SHOWREPORTS>0</SHOWREPORTS>
|
||||
<GROUPMODE>0</GROUPMODE>
|
||||
<GROUPMODEFORCE>0</GROUPMODEFORCE>
|
||||
<LANG></LANG>
|
||||
<COST></COST>
|
||||
<MARKER>0</MARKER>
|
||||
<VISIBLE>1</VISIBLE>
|
||||
<HIDDENSECTIONS>0</HIDDENSECTIONS>
|
||||
<TIMECREATED>1094240775</TIMECREATED>
|
||||
<TIMEMODIFIED>1094240775</TIMEMODIFIED>
|
||||
<SUMMARY><xsl:value-of select="DESCRIPTION"/></SUMMARY>
|
||||
<SHORTNAME><xsl:value-of select="COURSEID/@value"/></SHORTNAME>
|
||||
<FULLNAME><xsl:value-of select="TITLE/@value"/></FULLNAME>
|
||||
</HEADER>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="title_section" match="resource">
|
||||
<SECTION>
|
||||
<ID>0</ID>
|
||||
<NUMBER>0</NUMBER>
|
||||
<SUMMARY><div style="text-align: center;"><font size="5" style="font-family: arial,helvetica,sans-serif;"><xsl:value-of select="COURSE/TITLE/@value"/></font></div>
|
||||
<xsl:value-of select="COURSE/DESCRIPTION"/>
|
||||
</SUMMARY>
|
||||
<VISIBLE>1</VISIBLE>
|
||||
<MODS>
|
||||
</MODS>
|
||||
</SECTION>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="sections" match="resource">
|
||||
<xsl:param name="section_number">1. </xsl:param>
|
||||
<xsl:param name="recurse"/>
|
||||
<SECTION>
|
||||
<ID><xsl:value-of select="$section_number"/></ID>
|
||||
<NUMBER><xsl:value-of select="$section_number"/></NUMBER>
|
||||
<SUMMARY><span style="font-weight: bold;"><xsl:value-of select="title"/></span></SUMMARY>
|
||||
<VISIBLE>1</VISIBLE>
|
||||
<MODS>
|
||||
|
||||
<xsl:if test="$recurse = 'true'">
|
||||
<xsl:variable name="mod_number" select="substring-after(@identifierref,'res')"/>
|
||||
<xsl:call-template name="item_recurse_files" >
|
||||
<xsl:with-param name="mod_number" select="$mod_number"/>
|
||||
<xsl:with-param name="indent" >0</xsl:with-param>
|
||||
<xsl:with-param name="recurse" select="$recurse" />
|
||||
</xsl:call-template>
|
||||
|
||||
</xsl:if>
|
||||
|
||||
<xsl:if test="$recurse = 'false'">
|
||||
<xsl:for-each select="item">
|
||||
<xsl:variable name="mod_number" select="substring-after(@identifierref,'res')"/>
|
||||
<xsl:call-template name="item" >
|
||||
<xsl:with-param name="mod_number" select="$mod_number"/>
|
||||
<xsl:with-param name="indent" >0</xsl:with-param>
|
||||
</xsl:call-template>
|
||||
</xsl:for-each>
|
||||
</xsl:if>
|
||||
|
||||
|
||||
</MODS>
|
||||
</SECTION>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="item_recurse_files">
|
||||
<xsl:param name="mod_number">1. </xsl:param>
|
||||
<xsl:param name="indent">1. </xsl:param>
|
||||
<xsl:param name="recurse"/>
|
||||
|
||||
|
||||
<!-- Create one section-mod -->
|
||||
<xsl:for-each select="document(concat(@identifierref,'.dat'))">
|
||||
<xsl:call-template name="section_mod">
|
||||
<xsl:with-param name="mod_number" select="$mod_number"/>
|
||||
<xsl:with-param name="indent" select="$indent"/>
|
||||
</xsl:call-template>
|
||||
</xsl:for-each>
|
||||
|
||||
<!-- Depth first recursion to preserve order -->
|
||||
<xsl:for-each select="item">
|
||||
<xsl:variable name="m_number" select="substring-after(@identifierref,'res')"/>
|
||||
<xsl:call-template name="item_recurse_files" >
|
||||
<xsl:with-param name="mod_number" select="$m_number"/>
|
||||
<xsl:with-param name="indent" select="$indent + 1"/>
|
||||
</xsl:call-template>
|
||||
</xsl:for-each>
|
||||
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="item">
|
||||
<xsl:param name="mod_number">1. </xsl:param>
|
||||
<xsl:param name="indent">1. </xsl:param>
|
||||
|
||||
<GETHERE></GETHERE>
|
||||
<xsl:if test="document(concat(@identifierref,'.dat'))/CONTENT/FLAGS/ISFOLDER/@value != 'true' or document(concat(@identifierref,'.dat'))/EXTERNALLINK/DESCRIPTION/FLAGS/ISHTML/@value ='true'">
|
||||
<!-- Create one section-mod -->
|
||||
<xsl:for-each select="document(concat(@identifierref,'.dat'))">
|
||||
<xsl:call-template name="section_mod">
|
||||
<xsl:with-param name="mod_number" select="$mod_number"/>
|
||||
<xsl:with-param name="indent" select="$indent"/>
|
||||
</xsl:call-template>
|
||||
</xsl:for-each>
|
||||
</xsl:if>
|
||||
|
||||
|
||||
</xsl:template>
|
||||
|
||||
<!-- Determines the type of section mod entry and calls the appropriate creation template -->
|
||||
<xsl:template name="section_mod" >
|
||||
<xsl:param name="mod_number">1. </xsl:param>
|
||||
<xsl:param name="contenttype" />
|
||||
<xsl:param name="indent">1. </xsl:param>
|
||||
|
||||
<!-- Every file will have a label module describing it -->
|
||||
<xsl:choose>
|
||||
<!-- Detected a file -->
|
||||
<xsl:when test="CONTENT/FILE/@id != '' or CONTENT/FILES/FILE/NAME != ''">
|
||||
<!-- Create a label -->
|
||||
<xsl:call-template name="section_mod_label">
|
||||
<xsl:with-param name="mod_number" select="$mod_number"/>
|
||||
<xsl:with-param name="indent" select="$indent"/>
|
||||
</xsl:call-template>
|
||||
|
||||
<!-- Create a resource -->
|
||||
<xsl:call-template name="section_mod_resource">
|
||||
<xsl:with-param name="mod_number" select="$mod_number"/>
|
||||
<xsl:with-param name="indent" select="$indent"/>
|
||||
</xsl:call-template>
|
||||
|
||||
</xsl:when>
|
||||
|
||||
<!-- Detected a folder -->
|
||||
<xsl:when test="CONTENT/FLAGS/ISFOLDER/@value = 'true'">
|
||||
<MAKINGLABEL></MAKINGLABEL>
|
||||
<!-- Create a label -->
|
||||
<xsl:call-template name="section_mod_label">
|
||||
<xsl:with-param name="mod_number" select="$mod_number"/>
|
||||
<xsl:with-param name="indent" select="$indent"/>
|
||||
</xsl:call-template>
|
||||
</xsl:when>
|
||||
|
||||
<!-- Detected text -->
|
||||
<xsl:when test="CONTENT/MAINDATA/FLAGS/ISHTML/@value = 'true' or CONTENT/BODY/TYPE/@value = 'H' ">
|
||||
<MAKINGTEXT></MAKINGTEXT>
|
||||
<!-- Create a resource -->
|
||||
<xsl:call-template name="section_mod_resource">
|
||||
<xsl:with-param name="mod_number" select="$mod_number"/>
|
||||
<xsl:with-param name="indent" select="$indent"/>
|
||||
</xsl:call-template>
|
||||
</xsl:when>
|
||||
|
||||
<!-- Detected external link -->
|
||||
<xsl:when test="EXTERNALLINK/TITLE/@value != '' ">
|
||||
<!-- Create a label -->
|
||||
<xsl:call-template name="section_mod_label">
|
||||
<xsl:with-param name="mod_number" select="$mod_number"/>
|
||||
<xsl:with-param name="indent" select="$indent"/>
|
||||
</xsl:call-template>
|
||||
|
||||
<!-- Create a resource -->
|
||||
<xsl:call-template name="section_mod_externallink">
|
||||
<xsl:with-param name="mod_number" select="$mod_number"/>
|
||||
<xsl:with-param name="indent" select="$indent"/>
|
||||
</xsl:call-template>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<UNKNOWN>
|
||||
</UNKNOWN>
|
||||
</xsl:otherwise>
|
||||
|
||||
</xsl:choose>
|
||||
|
||||
|
||||
</xsl:template>
|
||||
|
||||
<!-- Creates one section-mod-label -->
|
||||
<xsl:template name="section_mod_label" >
|
||||
<xsl:param name="mod_number">1. </xsl:param>
|
||||
<xsl:param name="indent">1. </xsl:param>
|
||||
<MOD>
|
||||
<ID>1<xsl:value-of select="$mod_number"/>0</ID>
|
||||
<ZIBA_NAME>
|
||||
<!-- BB5.5 -->
|
||||
<xsl:value-of select="CONTENT/TITLE"/>
|
||||
<!-- BB6 -->
|
||||
<xsl:value-of select="CONTENT/TITLE/@value"/>
|
||||
</ZIBA_NAME>
|
||||
<TYPE>label</TYPE>
|
||||
<INSTANCE><xsl:value-of select="$mod_number"/></INSTANCE>
|
||||
<ADDED>1094240775</ADDED>
|
||||
<DELETED>0</DELETED>
|
||||
<SCORE>0</SCORE>
|
||||
<INDENT><xsl:value-of select="$indent"/></INDENT>
|
||||
<VISIBLE>1</VISIBLE>
|
||||
<GROUPMODE>0</GROUPMODE>
|
||||
</MOD>
|
||||
|
||||
</xsl:template>
|
||||
|
||||
<!-- Creates one section-mod-resource -->
|
||||
<xsl:template name="section_mod_resource" >
|
||||
<xsl:param name="mod_number">1. </xsl:param>
|
||||
<xsl:param name="indent">1. </xsl:param>
|
||||
<MOD>
|
||||
<ID><xsl:value-of select="$mod_number"/>0</ID>
|
||||
<ZIBA_NAME>
|
||||
<!-- BB5.5 -->
|
||||
<xsl:value-of select="CONTENT/TITLE"/>
|
||||
<!-- BB6 -->
|
||||
<xsl:value-of select="CONTENT/TITLE/@value"/>
|
||||
</ZIBA_NAME>
|
||||
<TYPE>resource</TYPE>
|
||||
<INSTANCE><xsl:value-of select="$mod_number"/></INSTANCE>
|
||||
<ADDED>1094240775</ADDED>
|
||||
<DELETED>0</DELETED>
|
||||
<SCORE>0</SCORE>
|
||||
<INDENT><xsl:value-of select="$indent"/></INDENT>
|
||||
<VISIBLE>1</VISIBLE>
|
||||
<GROUPMODE>0</GROUPMODE>
|
||||
</MOD>
|
||||
|
||||
</xsl:template>
|
||||
|
||||
<!-- Creates one section-mod-externallink -->
|
||||
<xsl:template name="section_mod_externallink" >
|
||||
<xsl:param name="mod_number">1. </xsl:param>
|
||||
<xsl:param name="indent">1. </xsl:param>
|
||||
<MOD>
|
||||
<ID><xsl:value-of select="$mod_number"/>0</ID>
|
||||
<ZIBA_NAME>
|
||||
<xsl:value-of select="EXTERNALLINK/TITLE/@value"/>
|
||||
</ZIBA_NAME>
|
||||
<TYPE>resource</TYPE>
|
||||
<INSTANCE><xsl:value-of select="$mod_number"/></INSTANCE>
|
||||
<ADDED>1094240775</ADDED>
|
||||
<DELETED>0</DELETED>
|
||||
<SCORE>0</SCORE>
|
||||
<INDENT><xsl:value-of select="$indent"/></INDENT>
|
||||
<VISIBLE>1</VISIBLE>
|
||||
<GROUPMODE>0</GROUPMODE>
|
||||
</MOD>
|
||||
|
||||
</xsl:template>
|
||||
|
||||
<!-- Creates a module-label entry -->
|
||||
<xsl:template name="module_label" >
|
||||
<xsl:param name="mod_number">1. </xsl:param>
|
||||
<MOD>
|
||||
<ID><xsl:value-of select="$mod_number"/></ID>
|
||||
<MODTYPE>label</MODTYPE>
|
||||
<NAME>
|
||||
<!-- for CONTENT text -->
|
||||
<xsl:value-of select="TITLE"/>
|
||||
<!-- for EXTERNALLINK text -->
|
||||
<xsl:value-of select="TITLE/@value"/>
|
||||
</NAME>
|
||||
<CONTENT>
|
||||
<span style="font-style: italic;">
|
||||
<!-- for CONTENT text -->
|
||||
<xsl:value-of select="TITLE"/>
|
||||
<!-- for EXTERNALLINK text -->
|
||||
<xsl:value-of select="TITLE/@value"/>
|
||||
:</span>
|
||||
<!-- for CONTENT text -->
|
||||
<xsl:value-of select="MAINDATA/TEXT"/>
|
||||
<!-- for EXTERNALLINK text -->
|
||||
<xsl:value-of select="DESCRIPTION/TEXT"/>
|
||||
<!-- for BB6 text -->
|
||||
<xsl:value-of select="BODY/TEXT"/>
|
||||
</CONTENT>
|
||||
<TIMEMODIFIED>1094240775</TIMEMODIFIED>
|
||||
</MOD>
|
||||
</xsl:template>
|
||||
|
||||
<!-- Creates one module-file entry -->
|
||||
<xsl:template name="module_file" >
|
||||
<xsl:param name="mod_number">1. </xsl:param>
|
||||
<xsl:param name="identifier"/>
|
||||
<MOD>
|
||||
<ID><xsl:value-of select="$mod_number"/></ID>
|
||||
<MODTYPE>resource</MODTYPE>
|
||||
<NAME>
|
||||
<!-- BB5 -->
|
||||
<xsl:value-of select="FILES/FILEREF/RELFILE/@value"/>
|
||||
<!-- BB6 -->
|
||||
<xsl:value-of select="FILES/FILE/NAME"/>
|
||||
</NAME>
|
||||
<TYPE>file</TYPE>
|
||||
<REFERENCE><!-- BB5 --><xsl:value-of select="FILES/FILEREF/CONTENTID/@value"/><!-- BB6 --><xsl:value-of select="$identifier"/>/<!-- BB5 --><xsl:value-of select="FILES/FILEREF/RELFILE/@value"/><!-- BB6 --><xsl:value-of select="FILES/FILE/NAME"/></REFERENCE>
|
||||
<SUMMARY>
|
||||
<xsl:value-of select="MAINDATA/TEXT"/>
|
||||
</SUMMARY>
|
||||
<ALLTEXT></ALLTEXT>
|
||||
<POPUP></POPUP>
|
||||
<OPTIONS>frame</OPTIONS>
|
||||
<TIMEMODIFIED>1094240775</TIMEMODIFIED>
|
||||
</MOD>
|
||||
</xsl:template>
|
||||
|
||||
<!-- Creates one module-text entry -->
|
||||
<xsl:template name="module_text" >
|
||||
<xsl:param name="mod_number">1. </xsl:param>
|
||||
<MOD>
|
||||
<ID><xsl:value-of select="$mod_number"/></ID>
|
||||
<MODTYPE>resource</MODTYPE>
|
||||
<NAME>
|
||||
<!-- BB5.5 -->
|
||||
<xsl:value-of select="TITLE"/>
|
||||
<!-- BB6 -->
|
||||
<xsl:value-of select="TITLE/@value"/>
|
||||
</NAME>
|
||||
<TYPE>text</TYPE>
|
||||
<REFERENCE></REFERENCE>
|
||||
<SUMMARY>
|
||||
<!-- BB5.5 -->
|
||||
<xsl:value-of select="TITLE"/>
|
||||
<!-- BB6 -->
|
||||
<xsl:value-of select="TITLE/@value"/>
|
||||
</SUMMARY>
|
||||
<ALLTEXT>
|
||||
<!-- BB5.5 -->
|
||||
<xsl:value-of select="MAINDATA/TEXT"/>
|
||||
<!-- BB6 -->
|
||||
<xsl:value-of select="BODY/TEXT"/>
|
||||
</ALLTEXT>
|
||||
<POPUP></POPUP>
|
||||
<OPTIONS></OPTIONS>
|
||||
<TIMEMODIFIED>1094240775</TIMEMODIFIED>
|
||||
</MOD>
|
||||
</xsl:template>
|
||||
|
||||
<!-- Creates one module-link entry -->
|
||||
<xsl:template name="module_link" >
|
||||
<xsl:param name="mod_number">1. </xsl:param>
|
||||
<MOD>
|
||||
<ID><xsl:value-of select="$mod_number"/></ID>
|
||||
<MODTYPE>resource</MODTYPE>
|
||||
<NAME>
|
||||
<xsl:value-of select="URL/@value"/>
|
||||
</NAME>
|
||||
<TYPE>file</TYPE>
|
||||
<REFERENCE>
|
||||
<xsl:value-of select="URL/@value"/>
|
||||
</REFERENCE>
|
||||
<SUMMARY>
|
||||
<xsl:value-of select="TITLE/@value"/><br/>
|
||||
<xsl:value-of select="URL/@value"/>
|
||||
</SUMMARY>
|
||||
<ALLTEXT>
|
||||
<xsl:value-of select="DESCRIPTION/TEXT"/>
|
||||
</ALLTEXT>
|
||||
<POPUP></POPUP>
|
||||
<OPTIONS>frame</OPTIONS>
|
||||
<TIMEMODIFIED>1094240775</TIMEMODIFIED>
|
||||
</MOD>
|
||||
</xsl:template>
|
||||
|
||||
<!-- Create a CONTENT module entries -->
|
||||
<xsl:template match="EXTERNALLINK">
|
||||
<xsl:param name="mod_number">1. </xsl:param>
|
||||
<!-- Every link module will have a label module describing it -->
|
||||
<xsl:call-template name="module_label">
|
||||
<xsl:with-param name="mod_number" select="$mod_number"/>
|
||||
</xsl:call-template>
|
||||
|
||||
<xsl:call-template name="module_link">
|
||||
<xsl:with-param name="mod_number" select="$mod_number"/>
|
||||
</xsl:call-template>
|
||||
|
||||
</xsl:template>
|
||||
|
||||
<!-- Create a CONTENT module entries -->
|
||||
<xsl:template match="CONTENT">
|
||||
<xsl:param name="mod_number">1. </xsl:param>
|
||||
<xsl:param name="identifier"/>
|
||||
|
||||
<xsl:choose>
|
||||
<!-- Detected a file
|
||||
|
||||
<FILEFOUND></FILEFOUND>
|
||||
-->
|
||||
<xsl:when test="FILES/FILE/@id != ''">
|
||||
|
||||
<!-- Every file module will have a label module describing it -->
|
||||
<xsl:call-template name="module_label">
|
||||
<xsl:with-param name="mod_number" select="$mod_number"/>
|
||||
</xsl:call-template>
|
||||
|
||||
<xsl:call-template name="module_file">
|
||||
<xsl:with-param name="mod_number" select="$mod_number"/>
|
||||
<xsl:with-param name="identifier" select="$identifier"/>
|
||||
</xsl:call-template>
|
||||
|
||||
</xsl:when>
|
||||
|
||||
<!-- Detected a folder
|
||||
<FOLDERFOUND></FOLDERFOUND>
|
||||
-->
|
||||
<xsl:when test="FLAGS/ISFOLDER/@value = 'true'">
|
||||
|
||||
<xsl:call-template name="module_label">
|
||||
<xsl:with-param name="mod_number" select="$mod_number"/>
|
||||
</xsl:call-template>
|
||||
|
||||
</xsl:when>
|
||||
|
||||
<!-- Detected text
|
||||
<TEXTFOUND></TEXTFOUND>
|
||||
-->
|
||||
<xsl:when test="MAINDATA/FLAGS/ISHTML/@value = 'true' or BODY/TYPE/@value = 'H' ">
|
||||
|
||||
<xsl:call-template name="module_text">
|
||||
<xsl:with-param name="mod_number" select="$mod_number"/>
|
||||
</xsl:call-template>
|
||||
|
||||
</xsl:when>
|
||||
|
||||
<xsl:otherwise>
|
||||
<UNKNOWN>
|
||||
<xsl:value-of select="TITLE"/>
|
||||
</UNKNOWN>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
|
||||
</xsl:template>
|
||||
|
||||
|
||||
<!-- Creates all module entries -->
|
||||
<xsl:template name="modules" match="resource">
|
||||
<MODULES>
|
||||
<xsl:for-each select="//resource">
|
||||
<xsl:variable name="mod_number" select="substring-after(@identifier,'res')"/>
|
||||
<xsl:variable name="identifier" select="@identifier"/>
|
||||
<xsl:for-each select="document(concat(@identifier,'.dat'))">
|
||||
<xsl:apply-templates select="//FORUM">
|
||||
<xsl:with-param name="mod_number" select="$mod_number"/>
|
||||
</xsl:apply-templates>
|
||||
<xsl:apply-templates select="//CONTENT">
|
||||
<xsl:with-param name="mod_number" select="$mod_number"/>
|
||||
<xsl:with-param name="identifier" select="$identifier"/>
|
||||
</xsl:apply-templates>
|
||||
<xsl:apply-templates select="//EXTERNALLINK">
|
||||
<xsl:with-param name="mod_number" select="$mod_number"/>
|
||||
</xsl:apply-templates>
|
||||
</xsl:for-each>
|
||||
</xsl:for-each>
|
||||
</MODULES>
|
||||
</xsl:template>
|
||||
|
||||
<!-- ############# Forum conversion ################# -->
|
||||
|
||||
<xsl:template match="FORUM">
|
||||
<xsl:param name="mod_number">1. </xsl:param>
|
||||
<MOD>
|
||||
<ID><xsl:value-of select="$mod_number"/></ID>
|
||||
<MODTYPE>forum</MODTYPE>
|
||||
<TYPE>general</TYPE>
|
||||
<NAME>
|
||||
<xsl:value-of select="TITLE/@value"/>
|
||||
</NAME>
|
||||
<INTRO>
|
||||
<xsl:value-of select="DESCRIPTION/TEXT"/>
|
||||
</INTRO>
|
||||
<OPEN>2</OPEN>
|
||||
<ASSESSED>0</ASSESSED>
|
||||
<ASSESSPUBLIC>0</ASSESSPUBLIC>
|
||||
<ASSESSTIMESTART>0</ASSESSTIMESTART>
|
||||
<ASSESSTIMEFINISH>0</ASSESSTIMEFINISH>
|
||||
<MAXBYTES>0</MAXBYTES>
|
||||
<SCALE>0</SCALE>
|
||||
<FORCESUBSCRIBE>0</FORCESUBSCRIBE>
|
||||
<RSSTYPE>0</RSSTYPE>
|
||||
<RSSARTICLES>0</RSSARTICLES>
|
||||
<TIMEMODIFIED></TIMEMODIFIED>
|
||||
<!--
|
||||
<DISCUSSIONS>
|
||||
<xsl:for-each select="MESSAGETHREADS/MSG">
|
||||
<xsl:variable name="discussion_id" select="position()"/>
|
||||
<DISCUSSION>
|
||||
<ID>
|
||||
<xsl:value-of select="$mod_number"/>0<xsl:value-of select="$discussion_id"/>
|
||||
</ID>
|
||||
<NAME>
|
||||
<xsl:value-of select="TITLE/@value"/>
|
||||
</NAME>
|
||||
<FIRSTPOST>2</FIRSTPOST>
|
||||
<USERID>1</USERID>
|
||||
<GROUPID>-1</GROUPID>
|
||||
<ASSESSED>1</ASSESSED>
|
||||
<TIMEMODIFIED>1094748430</TIMEMODIFIED>
|
||||
<USERMODIFIED>1</USERMODIFIED>
|
||||
<POSTS>
|
||||
<xsl:call-template name="MSG">
|
||||
<xsl:with-param name="parent" select="0"/>
|
||||
<xsl:with-param name="post_id">
|
||||
<xsl:value-of select="$mod_number"/>0<xsl:value-of select="$discussion_id"/>0<xsl:value-of select="position()"/>
|
||||
</xsl:with-param>
|
||||
</xsl:call-template>
|
||||
</POSTS>
|
||||
</DISCUSSION>
|
||||
</xsl:for-each>
|
||||
</DISCUSSIONS>
|
||||
-->
|
||||
</MOD>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="MSG" match="MSG">
|
||||
<xsl:param name="parent" select="1"/>
|
||||
<xsl:param name="post_id" select="1"/>
|
||||
<POST>
|
||||
<ID><xsl:value-of select="$post_id"/></ID>
|
||||
<PARENT> <xsl:value-of select="$parent"/></PARENT>
|
||||
<USERID>1</USERID>
|
||||
<CREATED>1094748430</CREATED>
|
||||
<MODIFIED>1094748430</MODIFIED>
|
||||
<MAILED>1</MAILED>
|
||||
<SUBJECT><xsl:value-of select="TITLE/@value"/></SUBJECT>
|
||||
<MESSAGE><xsl:value-of select="MESSAGETEXT"/></MESSAGE>
|
||||
<FORMAT>1</FORMAT>
|
||||
<ATTACHMENT></ATTACHMENT>
|
||||
<TOTALSCORE>0</TOTALSCORE>
|
||||
</POST>
|
||||
|
||||
<xsl:for-each select="MSG">
|
||||
<xsl:call-template name="MSG">
|
||||
<xsl:with-param name="parent" select="$post_id"/>
|
||||
<xsl:with-param name="post_id">
|
||||
<xsl:value-of select="$post_id"/>0<xsl:value-of select="position()"/>
|
||||
</xsl:with-param>
|
||||
</xsl:call-template>
|
||||
</xsl:for-each>
|
||||
</xsl:template>
|
||||
</xsl:stylesheet>
|
||||
|
||||
|
||||
|
||||
|
81
backup/bb/restore_bb.php
Normal file
81
backup/bb/restore_bb.php
Normal file
@ -0,0 +1,81 @@
|
||||
<?php
|
||||
// This file facilitates the conversion of a Blackboard course export
|
||||
// into a Moodle course export. It assumes an unzipped directory and makes in-place alterations.
|
||||
|
||||
// Ziba Scott <ziba@linuxbox.com> 10-25-04
|
||||
|
||||
function get_subdirs($directory){
|
||||
$opendirectory = opendir( $directory );
|
||||
while($filename = readdir($opendirectory)) {
|
||||
if (is_dir($directory.$filename) and $filename != ".." and $filename != "."){
|
||||
$subdirs[] = $filename;
|
||||
}
|
||||
}
|
||||
closedir($opendirectory);
|
||||
return $subdirs;
|
||||
}
|
||||
|
||||
|
||||
function choose_bb_xsl($manifest){
|
||||
$f = fopen($manifest,"r");
|
||||
$buffer = fgets($f, 400);
|
||||
$buffer = fgets($f, 400);
|
||||
fclose($f);
|
||||
if (strstr($buffer,"xmlns:bb=\"http://www.blackboard.com/content-packaging/\"")){
|
||||
return "bb6_to_moodle.xsl";
|
||||
}
|
||||
return "bb5.5_to_moodle.xsl";
|
||||
}
|
||||
|
||||
|
||||
function blackboard_convert($dir){
|
||||
global $CFG;
|
||||
|
||||
if (!function_exists('xslt_create')) { // XSLT MUST be installed for this to work
|
||||
return true;
|
||||
}
|
||||
|
||||
// Check for a Blackboard manifest file
|
||||
if(is_file($dir."/imsmanifest.xml")){
|
||||
|
||||
//Select the proper XSL file
|
||||
$xslt_file = choose_bb_xsl($dir."/imsmanifest.xml");
|
||||
|
||||
//TODO: Use the get_string function
|
||||
echo "<li>Converting Blackboard export</li>";
|
||||
|
||||
// The XSL file must be in the same directory as the Blackboard files when it is processed
|
||||
copy($CFG->dirroot."/backup/bb/$xslt_file", "$dir/$xslt_file");
|
||||
$startdir = getcwd();
|
||||
chdir($dir);
|
||||
|
||||
|
||||
// Process the Blackboard XML files with the chosen XSL file.
|
||||
// The imsmanifest contains all the XML files and their relationships.
|
||||
// The XSL processor will open them as needed.
|
||||
$xsltproc = xslt_create();
|
||||
if (!xslt_process($xsltproc, "imsmanifest.xml", $xslt_file, "$dir/moodle.xml")) {
|
||||
dump("Failed writing xml file");
|
||||
chdir($startdir);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
// Copy the Blackboard course files into the moodle course_files structure
|
||||
$subdirs = get_subdirs($dir."/");
|
||||
mkdir("$dir/course_files");
|
||||
foreach ($subdirs as $subdir){
|
||||
rename($subdir, "course_files/$subdir");
|
||||
}
|
||||
|
||||
chdir($startdir);
|
||||
|
||||
// Blackboard export successfully converted
|
||||
return true;
|
||||
}
|
||||
// This is not a Blackboard export
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
?>
|
@ -9,6 +9,7 @@
|
||||
require_once ("../course/lib.php");
|
||||
require_once ("lib.php");
|
||||
require_once ("restorelib.php");
|
||||
require_once ("bb/restore_bb.php");
|
||||
require_once("$CFG->libdir/blocklib.php");
|
||||
|
||||
//Optional
|
||||
|
@ -3525,6 +3525,13 @@
|
||||
notify("Error unzipping backup file. Invalid zip file.");
|
||||
}
|
||||
}
|
||||
|
||||
//Check for Blackboard backups and convert
|
||||
if ($status){
|
||||
require_once("$CFG->dirroot/backup/bb/restore_bb.php");
|
||||
echo "<li>".get_string("checkingforbbexport");
|
||||
$status = blackboard_convert($CFG->dataroot."/temp/backup/".$backup_unique_code);
|
||||
}
|
||||
|
||||
//Now check for the moodle.xml file
|
||||
if ($status) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user