Refactoring: move main/newscorm/ to main/lp/ and related folders (except code for migration from 1.9 and 1.10)

ofaj
Yannick Warnier 10 years ago
parent ba818ee23e
commit 21e47bca07
  1. 4
      .htaccess
  2. 2
      app/Resources/public/css/scorm.css
  3. 2
      composer.json
  4. 42
      documentation/changelog.html
  5. 2
      documentation/installation_guide.html
  6. 2
      documentation/installation_guide_es_ES.html
  7. 2
      documentation/installation_guide_fr_FR.html
  8. 4
      main/course_home/course_home.php
  9. 2
      main/exercise/exercise_admin.php
  10. 2
      main/exercise/exercise_result.php
  11. 2
      main/exercise/exercise_show.php
  12. 2
      main/exercise/exercise_submit_modal.php
  13. 4
      main/exercise/export/scorm/scorm_classes.php
  14. 2
      main/exercise/upload_exercise.php
  15. 2
      main/forum/index.php
  16. 2
      main/gamification/my_progress.php
  17. 4
      main/gradebook/exercise_jump.php
  18. 2
      main/gradebook/lib/be/learnpathlink.class.php
  19. 6
      main/inc/ajax/course_home.ajax.php
  20. 2
      main/inc/lib/add_course.lib.inc.php
  21. 4
      main/inc/lib/api.lib.php
  22. 2
      main/inc/lib/document.lib.php
  23. 2
      main/inc/lib/exercise.lib.php
  24. 2
      main/inc/lib/search/tool_processors/learnpath_processor.class.php
  25. 4
      main/inc/lib/tracking.lib.php
  26. 0
      main/lp/README.txt
  27. 0
      main/lp/aicc.class.php
  28. 0
      main/lp/aiccBlock.class.php
  29. 0
      main/lp/aiccItem.class.php
  30. 0
      main/lp/aiccObjective.class.php
  31. 0
      main/lp/aiccResource.class.php
  32. 2
      main/lp/aicc_api.php
  33. 0
      main/lp/aicc_hacp.php
  34. 0
      main/lp/audiorecorder.inc.php
  35. 0
      main/lp/blank.php
  36. 0
      main/lp/content_makers.inc.php
  37. 0
      main/lp/display_audiorecorder.php
  38. 0
      main/lp/download.php
  39. 0
      main/lp/embed.php
  40. 0
      main/lp/final_item_template/template.html
  41. 0
      main/lp/index.php
  42. 0
      main/lp/js/HOWTO-storageapi
  43. 0
      main/lp/js/api_wrapper.js
  44. 0
      main/lp/js/documentapi.js
  45. 0
      main/lp/js/storageapi.js
  46. 18
      main/lp/learnpath.class.php
  47. 0
      main/lp/learnpathItem.class.php
  48. 2
      main/lp/learnpathList.class.php
  49. 0
      main/lp/learnpath_functions.inc.php
  50. 2
      main/lp/lp_add.php
  51. 2
      main/lp/lp_add_audio.php
  52. 0
      main/lp/lp_add_category.php
  53. 0
      main/lp/lp_add_item.php
  54. 0
      main/lp/lp_admin_view.php
  55. 0
      main/lp/lp_ajax_initialize.php
  56. 0
      main/lp/lp_ajax_save_item.php
  57. 0
      main/lp/lp_ajax_save_objectives.php
  58. 0
      main/lp/lp_ajax_start_timer.php
  59. 0
      main/lp/lp_ajax_switch_item.php
  60. 0
      main/lp/lp_ajax_switch_item_toc.php
  61. 0
      main/lp/lp_build.php
  62. 2
      main/lp/lp_content.php
  63. 0
      main/lp/lp_controller.php
  64. 0
      main/lp/lp_edit.php
  65. 0
      main/lp/lp_edit_item.php
  66. 0
      main/lp/lp_edit_item_prereq.php
  67. 0
      main/lp/lp_final_item.php
  68. 0
      main/lp/lp_impress.php
  69. 2
      main/lp/lp_list.php
  70. 0
      main/lp/lp_list_search.css
  71. 2
      main/lp/lp_list_search.php
  72. 0
      main/lp/lp_move_item.php
  73. 0
      main/lp/lp_nav.php
  74. 4
      main/lp/lp_report.php
  75. 0
      main/lp/lp_save.php
  76. 0
      main/lp/lp_stats.php
  77. 0
      main/lp/lp_subscribe_users.php
  78. 0
      main/lp/lp_subscribe_users_to_category.php
  79. 0
      main/lp/lp_upload.php
  80. 0
      main/lp/lp_view.lib.js
  81. 4
      main/lp/lp_view.php
  82. 2
      main/lp/lp_view_item.php
  83. 0
      main/lp/openoffice_document.class.php
  84. 0
      main/lp/openoffice_presentation.class.php
  85. 0
      main/lp/openoffice_text.class.php
  86. 0
      main/lp/openoffice_text_document.class.php
  87. 218
      main/lp/packaging/adlcp_rootv1p2.xsd
  88. 4420
      main/lp/packaging/ims_qtiasiv1p2.xsd
  89. 48
      main/lp/packaging/ims_xml.xsd
  90. 690
      main/lp/packaging/imscp_rootv1p1p2.xsd
  91. 1146
      main/lp/packaging/imsmd_rootv1p2p1.xsd
  92. 0
      main/lp/packaging/xml.xsd
  93. 4
      main/lp/resourcelinker.inc.php
  94. 4
      main/lp/resourcelinker.php
  95. 0
      main/lp/scorm.class.php
  96. 0
      main/lp/scormItem.class.php
  97. 0
      main/lp/scormMetadata.class.php
  98. 0
      main/lp/scormOrganization.class.php
  99. 0
      main/lp/scormResource.class.php
  100. 0
      main/lp/scorm_api.php
  101. Some files were not shown because too many files have changed in this diff Show More

@ -47,4 +47,6 @@ RewriteRule ^skill/(\d{1,})/user/(\d{1,}) main/badge/issued_all.php?skill=$1&use
RewriteRule ^badge/(\d{1,})/user/(\d{1,}) main/badge/issued_all.php?skill=$1&user=$2 [L]
# Support old URLs using the exercice (with a c) folder rather than exercise
RewriteRule ^main/exercice/(.*)$ main/exercise/$1 [QSA,L]
RewriteRule ^main/exercice/(.*)$ main/exercise/$1 [QSA,L]
# Support old URLs using the newscorm folder rather than lp
RewriteRule ^main/newscorm/(.*)$ main/lp/$1 [QSA,L]

@ -109,7 +109,7 @@ See https://support.chamilo.org/issues/6976
}
.inner_lp_toc .scorm_item_section .scorm_item:before {
content : url('../../main/img/lp_section.png'); /* path from main/newscorm/lp_controller.php file */
content : url('../../main/img/lp_section.png'); /* path from main/lp/lp_controller.php file */
vertical-align: text-top;
margin-right : 5px;
}

@ -24,7 +24,7 @@
"main/dropbox",
"main/exercise",
"main/gradebook/lib",
"main/newscorm",
"main/lp",
"main/inc/lib",
"plugin",
"main/install",

@ -47,6 +47,48 @@
<p><i>Note: most #wxyz references are issue numbers you can find in <a href="http://support.chamilo.org/projects/chamilo-18/issues" target="_blank">our public bug tracking system</a>. Some references marked BT#xyz are developments made externally for BeezNest customers and integrated into Chamilo. The details of these tasks cannot be seen for confidentiality reasons, but the code change is public and can be reviewed by anyone.</i></p>
<p>&nbsp;</p>
<a name="1.11.0"></a>
<h1>Chamilo 1.11.0 - tobenamed, xxth of July 2016</h1>
<h3>Release notes - summary</h3>
<p>Chamilo 1.11.0 is a major release of the 1.11.x branch. It is meant as a transition between 1.10 and 2.0 versions.</p>
<h3>Release name</h3>
<p><a href="http://www.openstreetmap.org/#map="></a> </p>
<h3>Security fixes</h3>
<p>None in this version.</p>
<h3>Possibly breaking changes</h3>
<p>None in this version.</p>
<h3>Notable new Features</h3>
<h4>For end-users, teachers and Chamilo admins</h4>
<ul>
</ul>
<h4>For developers and sysadmins</h4>
<ul>
</ul>
<h3>Stylesheets and theming</h3>
<ul>
</ul>
<h3>Files structure</h3>
<ul>
<li>The main/exercice/ folder has been renamed main/exercise/</li>
<li>The main/newscorm/ folder has been renamed main/lp/ (for Learning Path)</li>
</ul>
<h3>Web services</h3>
<ul>
</ul>
<h3>Removals</h3>
<ul>
</ul>
<h3>Known issues</h3>
<ul>
<li>IMS/QTI import/export has issues</li>
<li>In Internet Explorer 9, learning paths might not show other pages than the first to be opened. We lacked computers with IE9 at the time of release of 1.10.4. Guaranteeing IE9 support will likely require additional services. See <a href="https://support.chamilo.org/issues/8075">the corresponding bug report</a></li>
<li>The text-to-speech converter based on Google now requires an API key</li>
<li>The Xapian search module is broken. We'll fix that soon, but not a lot of people use it</li>
<li>Encoding issues when importing accentuated characters from MS-Office-generated .xlsx files (for example when importing exercises). This isn't really a Chamilo issue, but since some users might have issues with that, we've decided to report it to avoid any surprise.</li>
</ul>
<a name="1.10.6"></a>
<h1>Chamilo 1.10.6 - Zacatecas, 24th of May 2016</h1>

@ -681,6 +681,7 @@ If you have issues with files taking a long time to download, make sure you reco
RewriteRule ^session/(\d{1,})/about/?$ main/session/about.php?session_id=$1 [L]
RewriteRule ^badge/(\d{1,})/user/(\d{1,}) main/badge/issued.php?skill=$1&user=$2 [L]
RewriteRule ^main/exercice/(.+)$ main/exercise/$1 [QSA,L]
RewriteRule ^main/newscorm/(.*)$ main/lp/$1 [QSA,L]
&lt;/Directory&gt;
</pre>
<h3>Nginx</h3>
@ -720,6 +721,7 @@ If you have issues with files taking a long time to download, make sure you reco
rewrite ^/courses/([^/]+)/index.php$ /main/course_home/course_home.php?cDir=$1 last;
rewrite ^/session/([^/]+)/about/?$ /main/session/about.php?session_id=$1 last;
rewrite ^/main/exercice/(.+)$ /main/exercise/$1 last;
rewrite ^/main/newscorm/(.+)$ /main/lp/$1 last;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_split_path_info ^(.+\.php)(/.*)$;

@ -712,6 +712,7 @@ por ejemplo. El efecto debería ser inmediato.
rewrite ^/courses/([^/]+)/index.php$ /main/course_home/course_home.php?cDir=$1 last;
rewrite ^/session/([^/]+)/about/?$ /main/session/about.php?session_id=$1 last;
rewrite ^/main/exercice/(.+)$ /main/exercise/$1 last;
rewrite ^/main/newscorm/(.+)$ /main/lp/$1 last;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
@ -779,6 +780,7 @@ Apache2: La configuración para nuestro sitio de ejemplo my.chamilo10.net sería
RewriteRule ^session/(\d{1,})/about/?$ main/session/about.php?session_id=$1 [L]
RewriteRule ^badge/(\d{1,})/user/(\d{1,}) main/badge/issued.php?skill=$1&user=$2 [L]
RewriteRule ^main/exercice/(.+)$ main/exercise/$1 [QSA,L]
RewriteRule ^main/newscorm/(.*)$ main/lp/$1 [QSA,L]
&lt;/Directory&gt;
php_value display_errors Off

@ -740,6 +740,7 @@ ou, si vous travaillez avec Apache 2.4, la syntaxe est légèrement différente
RewriteRule ^session/(\d{1,})/about/?$ main/session/about.php?session_id=$1 [L]
RewriteRule "^badge/(\d{1,})/user/(\d{1,})$" main/badge/issued.php?skill=$1&user=$2 [L]
RewriteRule ^main/exercice/(.+)$ main/exercise/$1 [QSA,L]
RewriteRule ^main/newscorm/(.*)$ main/lp/$1 [QSA,L]
&lt;/Directory&gt;
</pre>
<h3>Nginx</h3>
@ -779,6 +780,7 @@ Ce sont uniquement les redirections à placer dans un bloc server{}, comme les a
rewrite ^/courses/([^/]+)/index.php$ /main/course_home/course_home.php?cDir=$1 last;
rewrite ^/session/([^/]+)/about/?$ /main/session/about.php?session_id=$1 last;
rewrite ^/main/exercice/(.+)$ /main/exercise/$1 last;
rewrite ^/main/newscorm/(.+)$ /main/lp/$1 last;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_split_path_info ^(.+\.php)(/.*)$;

@ -209,7 +209,7 @@ if (!empty($auto_launch)) {
$session_key = 'lp_autolaunch_'.$session_id.'_'.api_get_course_int_id().'_'.api_get_user_id();
if (!isset($_SESSION[$session_key])) {
//redirecting to the LP
$url = api_get_path(WEB_CODE_PATH).'newscorm/lp_controller.php?'.api_get_cidreq().'&id_session='.$session_id;
$url = api_get_path(WEB_CODE_PATH) . 'lp/lp_controller.php?' . api_get_cidreq() . '&id_session=' . $session_id;
$_SESSION[$session_key] = true;
header("Location: $url");
exit;
@ -246,7 +246,7 @@ if (!empty($auto_launch)) {
$session_key = 'lp_autolaunch_'.$session_id.'_'.api_get_course_int_id().'_'.api_get_user_id();
if (!isset($_SESSION[$session_key])) {
//redirecting to the LP
$url = api_get_path(WEB_CODE_PATH).'newscorm/lp_controller.php?'.api_get_cidreq().'&action=view&lp_id='.$lp_data['id'];
$url = api_get_path(WEB_CODE_PATH) . 'lp/lp_controller.php?' . api_get_cidreq() . '&action=view&lp_id=' . $lp_data['id'];
$_SESSION[$session_key] = true;
header("Location: $url");

@ -197,7 +197,7 @@ if ($form->validate()) {
} else {
$lp_id = intval($_GET['lp_id']);
}
echo "<a href=\"../newscorm/lp_controller.php?".api_get_cidreq()."&gradebook=&action=add_item&type=step&lp_id=".$lp_id."#resource_tab-2\">".Display::return_icon('back.png', get_lang("BackTo").' '.get_lang("LearningPaths"),'',ICON_SIZE_MEDIUM)."</a>";
echo "<a href=\"../lp/lp_controller.php?".api_get_cidreq()."&gradebook=&action=add_item&type=step&lp_id=".$lp_id."#resource_tab-2\">".Display::return_icon('back.png', get_lang("BackTo").' '.get_lang("LearningPaths"),'',ICON_SIZE_MEDIUM)."</a>";
} else {
echo '<a href="exercise.php?'.api_get_cidreq().'">' .
Display :: return_icon('back.png', get_lang('BackToExercisesList'), '', ICON_SIZE_MEDIUM).

@ -204,7 +204,7 @@ if ($origin != 'learnpath') {
Display::display_footer();
} else {
$lp_mode = isset($_SESSION['lp_mode']) ? $_SESSION['lp_mode'] : null;
$url = '../newscorm/lp_controller.php?'.api_get_cidreq().'&action=view&lp_id='.$learnpath_id.'&lp_item_id='.$learnpath_item_id.'&exeId='.$exercise_stat_info['exe_id'].'&fb_type='.$objExercise->feedback_type;
$url = '../lp/lp_controller.php?'.api_get_cidreq().'&action=view&lp_id='.$learnpath_id.'&lp_item_id='.$learnpath_item_id.'&exeId='.$exercise_stat_info['exe_id'].'&fb_type='.$objExercise->feedback_type;
$href = ($lp_mode == 'fullscreen')?' window.opener.location.href="'.$url.'" ':' top.location.href="'.$url.'"';
if (api_is_allowed_to_session_edit()) {

@ -919,7 +919,7 @@ if ($origin != 'learnpath') {
} else {
if (!isset($_GET['fb_type'])) {
$lp_mode = $_SESSION['lp_mode'];
$url = '../newscorm/lp_controller.php?' . api_get_cidreq() . '&';
$url = '../lp/lp_controller.php?' . api_get_cidreq() . '&';
$url .= http_build_url([
'action' => 'view',
'lp_id' => $learnpath_id,

@ -513,7 +513,7 @@ if (isset($try) && $try==1) {
// the link to theory (a learning path)
if (!empty($lp)) {
$lp_url= api_get_path(WEB_CODE_PATH).'newscorm/lp_controller.php?'.api_get_cidreq().'&action=view&lp_id='.$lp;
$lp_url= api_get_path(WEB_CODE_PATH) . 'lp/lp_controller.php?'.api_get_cidreq().'&action=view&lp_id='.$lp;
$list = new LearnpathList(api_get_user_id());
$flat_list = $list->get_flat_list();
$links.= Display :: return_icon('theory.gif', '', array ('style' => 'padding-left:0px;padding-right:5px;')).'<a target="_blank" href="'.$lp_url.'">'.get_lang('SeeTheory').'</a><br />';

@ -757,7 +757,7 @@ class ScormAssessmentItem
*/
function common_js()
{
$js = file_get_contents('../newscorm/js/api_wrapper.js');
$js = file_get_contents('../lp/js/api_wrapper.js');
$js .= 'var questions = new Array();' . "\n";
$js .= 'var questions_answers = new Array();' . "\n";
$js .= 'var questions_answers_correct = new Array();' . "\n";
@ -998,7 +998,7 @@ class ScormSection
{
$js = "\n";
$js .= file_get_contents('../inc/lib/javascript/hotspot/js/hotspot.js');
$js .= file_get_contents('../newscorm/js/api_wrapper.js');
$js .= file_get_contents('../lp/js/api_wrapper.js');
$js .= 'var questions = new Array();' . "\n";
$js .= 'var questions_answers = new Array();' . "\n";
$js .= 'var questions_answers_correct = new Array();' . "\n";

@ -618,7 +618,7 @@ function lp_upload_quiz_action_handling() {
// Add a Quiz as Lp Item
$_SESSION['oLP']->add_item($parent, $previous, TOOL_QUIZ, $quiz_id, $quiz_title, '');
// Redirect to home page for add more content
header('location: ../newscorm/lp_controller.php?'.api_get_cidreq().'&action=add_item&type=step&lp_id='.Security::remove_XSS($_GET['lp_id']));
header('location: ../lp/lp_controller.php?'.api_get_cidreq().'&action=add_item&type=step&lp_id='.Security::remove_XSS($_GET['lp_id']));
exit;
} else {
// header('location: exercise.php?' . api_get_cidreq());

@ -180,7 +180,7 @@ echo '<div class="actions">';
//if is called from learning path
if (!empty($_GET['lp_id']) || !empty($_POST['lp_id'])) {
echo "<a href=\"../newscorm/lp_controller.php?"
echo "<a href=\"../lp/lp_controller.php?"
. api_get_cidreq()
. "&gradebook=&action=add_item&type=step&lp_id=$lp_id#resource_tab-5\">"
. Display::return_icon(

@ -116,7 +116,7 @@ if ($currentSession) {
foreach ($learningPathList->list as $learningPathId => $learningPath) {
$courseData['stats'][] = [
$learningPath['lp_name'],
'newscorm/lp_controller.php?' . http_build_query([
'lp/lp_controller.php?' . http_build_query([
'action' => 'stats',
'cidReq' => $course->getCode(),
'id_session' => $currentSession->getId(),

@ -58,11 +58,11 @@ if (isset($_GET['doexercise'])) {
// If the exercise was added once redirect to the LP
$firstLp = current($exercise->lpList);
if (isset($firstLp['lp_id'])) {
$url = api_get_path(WEB_CODE_PATH) . 'newscorm/lp_controller.php?' . api_get_cidreq() . '&lp_id=' . $firstLp['lp_id'] . '&action=view&isStudentView=true';
$url = api_get_path(WEB_CODE_PATH) . 'lp/lp_controller.php?' . api_get_cidreq() . '&lp_id=' . $firstLp['lp_id'] . '&action=view&isStudentView=true';
}
} else {
// If the exercise was added multiple times show the LP list
$url = api_get_path(WEB_CODE_PATH) . 'newscorm/lp_controller.php?' . api_get_cidreq().'&action=list';
$url = api_get_path(WEB_CODE_PATH) . 'lp/lp_controller.php?' . api_get_cidreq().'&action=list';
}
}
}

@ -173,7 +173,7 @@ class LearnpathLink extends AbstractLink
public function get_link()
{
$session_id = api_get_session_id();
$url = api_get_path(WEB_PATH).'main/newscorm/lp_controller.php?'.api_get_cidreq_params($this->get_course_code(), $session_id).'&gradebook=view';
$url = api_get_path(WEB_CODE_PATH) . 'lp/lp_controller.php?'.api_get_cidreq_params($this->get_course_code(), $session_id).'&gradebook=view';
if (!api_is_allowed_to_edit() || $this->calc_score(api_get_user_id()) == null) {
$url .= '&action=view&lp_id='.$this->get_ref_id();

@ -150,7 +150,7 @@ switch ($action) {
continue;
}
$lp_url = api_get_path(WEB_CODE_PATH).'newscorm/lp_controller.php?cidReq='.$item['code'].'&id_session='.$session_id.'&lp_id='.$lp_id.'&action=view';
$lp_url = api_get_path(WEB_CODE_PATH) . 'lp/lp_controller.php?cidReq='.$item['code'].'&id_session='.$session_id.'&lp_id='.$lp_id.'&action=view';
$last_date = Tracking::get_last_connection_date_on_the_course(
api_get_user_id(),
@ -283,7 +283,7 @@ switch ($action) {
foreach ($flat_list as $lp_id => $lp_item) {
$temp[$count]['id']= $lp_id;
$lp_url = api_get_path(WEB_CODE_PATH).'newscorm/lp_controller.php?cidReq='.$item['code'].'&id_session='.$session_id.'&lp_id='.$lp_id.'&action=view';
$lp_url = api_get_path(WEB_CODE_PATH) . 'lp/lp_controller.php?cidReq='.$item['code'].'&id_session='.$session_id.'&lp_id='.$lp_id.'&action=view';
$last_date = Tracking::get_last_connection_date_on_the_course(
api_get_user_id(),
@ -414,7 +414,7 @@ switch ($action) {
);
foreach($flat_list as $lp_id => $lp_item) {
$temp[$count]['id']= $lp_id;
$lp_url = api_get_path(WEB_CODE_PATH).'newscorm/lp_controller.php?cidReq='.$item['code'].'&id_session='.$session_id.'&lp_id='.$lp_id.'&action=view';
$lp_url = api_get_path(WEB_CODE_PATH) . 'lp/lp_controller.php?cidReq='.$item['code'].'&id_session='.$session_id.'&lp_id='.$lp_id.'&action=view';
$last_date = Tracking::get_last_connection_date_on_the_course(
api_get_user_id(),
$item,

@ -507,7 +507,7 @@ class AddCourse
);
Database::query(
"INSERT INTO $tbl_course_homepage (c_id, id, name, link, image, visibility, admin, address, added_tool, target, category, session_id)
VALUES ($course_id, 4, '" . TOOL_LEARNPATH . "','newscorm/lp_controller.php','scorms.gif','" . self::string2binary(
VALUES ($course_id, 4, '" . TOOL_LEARNPATH . "','lp/lp_controller.php','scorms.gif','" . self::string2binary(
api_get_setting('course_create_active_tools', 'learning_path')
) . "','0','squaregrey.gif',0,'_self','authoring','0')"
);

@ -2895,12 +2895,12 @@ function api_display_tool_view_option() {
}
// Uncomment to remove student view link from document view page
if (strpos($_SERVER['REQUEST_URI'], 'newscorm/lp_header.php') !== false) {
if (strpos($_SERVER['REQUEST_URI'], 'lp/lp_header.php') !== false) {
if (empty($_GET['lp_id'])) {
return '';
}
$sourceurl = substr($_SERVER['REQUEST_URI'], 0, strpos($_SERVER['REQUEST_URI'], '?'));
$sourceurl = str_replace('newscorm/lp_header.php', 'newscorm/lp_controller.php?'.api_get_cidreq().'&action=view&lp_id='.intval($_GET['lp_id']).'&isStudentView='.($_SESSION['studentview']=='studentview' ? 'false' : 'true'), $sourceurl);
$sourceurl = str_replace('lp/lp_header.php', 'lp/lp_controller.php?'.api_get_cidreq().'&action=view&lp_id='.intval($_GET['lp_id']).'&isStudentView='.($_SESSION['studentview']=='studentview' ? 'false' : 'true'), $sourceurl);
//showinframes doesn't handle student view anyway...
//return '';
$is_framed = true;

@ -3619,7 +3619,7 @@ class DocumentManager
// Show the "image name" not the filename of the image.
if ($lp_id) {
// LP URL
$url = api_get_path(WEB_CODE_PATH).'newscorm/lp_controller.php?'.api_get_cidreq().'&amp;action=add_item&amp;type=' . TOOL_DOCUMENT . '&amp;file=' . $documentId . '&amp;lp_id=' . $lp_id;
$url = api_get_path(WEB_CODE_PATH) . 'lp/lp_controller.php?'.api_get_cidreq().'&amp;action=add_item&amp;type=' . TOOL_DOCUMENT . '&amp;file=' . $documentId . '&amp;lp_id=' . $lp_id;
if (!empty($overwrite_url)) {
$url = $overwrite_url . '&cidReq=' . $course_info['code'] . '&id_session=' . $session_id . '&document_id=' . $documentId.'';
}

@ -1855,7 +1855,7 @@ HOTSPOT;
if ($lp_obj) {
$url = api_get_path(
WEB_CODE_PATH
) . 'newscorm/lp_controller.php?' . api_get_cidreq() . '&action=view&lp_id=' . $results[$i]['orig_lp_id'];
) . 'lp/lp_controller.php?' . api_get_cidreq() . '&action=view&lp_id=' . $results[$i]['orig_lp_id'];
$lp_name = Display::url(
$lp_obj['lp_name'],
$url,

@ -52,7 +52,7 @@ class learnpath_processor extends search_processor {
$visibility = api_get_item_visibility(api_get_course_info($courseid), TOOL_LEARNPATH, $lp_id);
if ($visibility) {
list($thumbnail, $image, $name, $author) = $this->get_information($courseid, $lp_id, $lp['has_document_id']);
$url = api_get_path(WEB_PATH) . 'main/newscorm/lp_controller.php?cidReq=%s&action=view&lp_id=%s';
$url = api_get_path(WEB_CODE_PATH) . 'lp/lp_controller.php?cidReq=%s&action=view&lp_id=%s';
$url = sprintf($url, $courseid, $lp_id);
$result = array(
'toolid' => TOOL_LEARNPATH,

@ -4951,7 +4951,7 @@ class Tracking
$time_spent_in_lp = api_time_to_hms($time_spent_in_lp);
$html .= '<tr class="row_even">';
$url = api_get_path(WEB_CODE_PATH)."newscorm/lp_controller.php?cidReq={$course_code}&id_session=$session_id&lp_id=$lp_id&action=view";
$url = api_get_path(WEB_CODE_PATH) . "lp/lp_controller.php?cidReq={$course_code}&id_session=$session_id&lp_id=$lp_id&action=view";
if ($learnpath['lp_visibility'] == 0) {
$html .= Display::tag('td', $learnpath['lp_name']);
@ -6087,7 +6087,7 @@ class TrackingCourseLog
break;
case 'learnpath':
$table_name = TABLE_LP_MAIN;
$link_tool = 'newscorm/lp_controller.php';
$link_tool = 'lp/lp_controller.php';
$id_tool = 'id';
break;
case 'quiz':

@ -427,7 +427,7 @@ function load_item(item_id,url){
*/
function chamilo_save_asset(){
//var linkparams = 'id='+lms_item_id+'&score='+score+'&max='+max+'&min='+min+'&lesson_status='+lesson_status+'&time='+session_time+'&suspend_data='+suspend_data;
//var url = "<?php echo api_get_path(WEB_CODE_PATH).'newscorm/lp_controller.php'; ?>?action=save&" + linkparams + "";
//var url = "<?php echo api_get_path(WEB_CODE_PATH).'lp/lp_controller.php'; ?>?action=save&" + linkparams + "";
logit_lms('chamilo_save_asset: '+url,0);
//frames["message_name"].src = url;
xajax_save_item(lms_lp_id, lms_user_id, lms_view_id, lms_item_id, score, max, min, lesson_status, session_time, suspend_data, lesson_location);

@ -1111,7 +1111,7 @@ class learnpath
}
$tbl_tool = Database :: get_course_table(TABLE_TOOL_LIST);
$link = 'newscorm/lp_controller.php?action=view&lp_id='.$this->lp_id;
$link = 'lp/lp_controller.php?action=view&lp_id='.$this->lp_id;
// Delete tools
$sql = "DELETE FROM $tbl_tool
WHERE c_id = ".$course_id." AND (link LIKE '$link%' AND image='scormbuilder.gif')";
@ -3432,10 +3432,10 @@ class learnpath
case 'link':
if (Link::is_youtube_link($file)) {
$src = Link::get_youtube_video_id($file);
$file = api_get_path(WEB_CODE_PATH).'newscorm/embed.php?type=youtube&source='.$src;
$file = api_get_path(WEB_CODE_PATH) . 'lp/embed.php?type=youtube&source='.$src;
} elseif (Link::isVimeoLink($file)) {
$src = Link::getVimeoLinkId($file);
$file = api_get_path(WEB_CODE_PATH).'newscorm/embed.php?type=vimeo&source='.$src;
$file = api_get_path(WEB_CODE_PATH) . 'lp/embed.php?type=vimeo&source='.$src;
} else {
// If the current site is HTTPS and the link is
// HTTP, browsers will refuse opening the link
@ -3448,7 +3448,7 @@ class learnpath
//this is the special intervention case
$file = api_get_path(
WEB_CODE_PATH
).'newscorm/embed.php?type=nonhttps&source='.urlencode($file);
) . 'lp/embed.php?type=nonhttps&source='.urlencode($file);
}
}
}
@ -3589,7 +3589,7 @@ class learnpath
error_log('New LP - In learnpath::get_link() ' . __LINE__ . ' - Item type: ' . $lp_item_type, 0);
}
// Formatting AICC HACP append URL.
$aicc_append = '?aicc_sid=' . urlencode(session_id()) . '&aicc_url=' . urlencode(api_get_path(WEB_CODE_PATH) . 'newscorm/aicc_hacp.php') . '&';
$aicc_append = '?aicc_sid=' . urlencode(session_id()) . '&aicc_url=' . urlencode(api_get_path(WEB_CODE_PATH) . 'lp/aicc_hacp.php') . '&';
if (!empty($lp_item_params)) {
$aicc_append .= $lp_item_params . '&';
}
@ -4219,7 +4219,7 @@ class learnpath
$session_condition = api_get_session_condition($session_id);
$tbl_tool = Database :: get_course_table(TABLE_TOOL_LIST);
$link = 'newscorm/lp_controller.php?action=view&lp_id='.$lp_id.'&id_session='.$session_id;
$link = 'lp/lp_controller.php?action=view&lp_id='.$lp_id.'&id_session='.$session_id;
$sql = "SELECT * FROM $tbl_tool
WHERE
c_id = ".$course_id." AND
@ -4590,7 +4590,7 @@ class learnpath
$session_id = api_get_session_id();
$session_condition = api_get_session_condition($session_id);
$tbl_tool = Database :: get_course_table(TABLE_TOOL_LIST);
$link = 'newscorm/lp_controller.php?action=view&lp_id=' . $lp_id.'&id_session='.$session_id;
$link = 'lp/lp_controller.php?action=view&lp_id=' . $lp_id.'&id_session='.$session_id;
$sql = "UPDATE $tbl_tool SET name = '$this->name'
WHERE
c_id = $course_id AND
@ -9995,7 +9995,7 @@ EOD;
file_put_contents($archive_path.$temp_dir_short.'/document/non_exportable.html', $file_content);
// Add the extra files that go along with a SCORM package.
$main_code_path = api_get_path(SYS_CODE_PATH).'newscorm/packaging/';
$main_code_path = api_get_path(SYS_CODE_PATH) . 'lp/packaging/';
$extra_files = scandir($main_code_path);
foreach ($extra_files as $extra_file) {
if (strpos($extra_file, '.') === 0)
@ -11019,7 +11019,7 @@ EOD;
*/
private function getFinalItemTemplate()
{
return file_get_contents(api_get_path(SYS_CODE_PATH) . 'newscorm/final_item_template/template.html');
return file_get_contents(api_get_path(SYS_CODE_PATH) . 'lp/final_item_template/template.html');
}
/**

@ -110,7 +110,7 @@ class LearnpathList
// it prevents ' to be slashed and the input (done by learnpath.class.php::toggle_visibility())
// is done using domesticate()
$myname = domesticate($row['name']);
$mylink = 'newscorm/lp_controller.php?action=view&lp_id='.$row['id'].'&id_session='.$session_id;
$mylink = 'lp/lp_controller.php?action=view&lp_id='.$row['id'].'&id_session='.$session_id;
$sql2 = "SELECT * FROM $tbl_tool
WHERE

@ -97,7 +97,7 @@ if ($_POST AND empty($_REQUEST['lp_name'])) {
$form = new FormValidator(
'lp_add',
'post',
api_get_path(WEB_CODE_PATH).'newscorm/lp_controller.php?'.api_get_cidreq()
api_get_path(WEB_CODE_PATH) . 'lp/lp_controller.php?'.api_get_cidreq()
);
// Form title

@ -141,7 +141,7 @@ if (!empty($file)) {
Display::getMediaPlayer($file, array('url' => $urlFile)).
"</div>";
$form->addElement('label', get_lang('Listen'), $audioPlayer);
$url = api_get_path(WEB_CODE_PATH).'newscorm/lp_controller.php?lp_id='.$_SESSION['oLP']->get_id().'&action=add_audio&id='.$lp_item_id.'&delete_file=1&'.api_get_cidreq();
$url = api_get_path(WEB_CODE_PATH) . 'lp/lp_controller.php?lp_id='.$_SESSION['oLP']->get_id().'&action=add_audio&id='.$lp_item_id.'&delete_file=1&'.api_get_cidreq();
$form->addElement('label', null, Display::url(get_lang('RemoveAudio'), $url, array('class' => 'btn btn-danger')));
} else {
$form->addElement('file', 'file');

@ -106,7 +106,7 @@ if (!empty($gradebook) && $gradebook == 'view') {
// Define the 'doc.inc.php' as language file.
$nameTools = $_SESSION['oLP']->get_name();
$interbreadcrumb[] = array(
'url' => api_get_path(WEB_CODE_PATH).'newscorm/lp_list.php?'.api_get_cidreq(),
'url' => api_get_path(WEB_CODE_PATH) . 'lp/lp_list.php?'.api_get_cidreq(),
'name' => get_lang('Doc'),
);
// Update global setting to avoid displaying right menu.

@ -646,7 +646,7 @@ foreach ($categories as $item) {
if ($details['subscribe_users'] == 1) {
$subscribeUsers = Display::url(
Display::return_icon('user.png', get_lang('SubscribeUsersToLp')),
api_get_path(WEB_CODE_PATH)."newscorm/lp_subscribe_users.php?lp_id=$id&".api_get_cidreq()
api_get_path(WEB_CODE_PATH) . "lp/lp_subscribe_users.php?lp_id=$id&".api_get_cidreq()
);
}

@ -15,7 +15,7 @@ require api_get_path(LIBRARY_PATH).'search/ChamiloQuery.php';
require_once api_get_path(LIBRARY_PATH).'search/IndexableChunk.class.php';
require_once api_get_path(LIBRARY_PATH).'specific_fields_manager.lib.php';
$htmlHeadXtra[] = '<link rel="stylesheet" type="text/css" href="'. api_get_path(WEB_PATH) .'main/newscorm/lp_list_search.css" />';
$htmlHeadXtra[] = '<link rel="stylesheet" type="text/css" href="'. api_get_path(WEB_CODE_PATH) .'lp/lp_list_search.css" />';
Event::event_access_tool(TOOL_SEARCH);
if (isset($_SESSION['gradebook'])){

@ -106,7 +106,7 @@ if (!empty($users)) {
// View
$interbreadcrumb[] = [
'url' => api_get_path(WEB_CODE_PATH) . 'newscorm/lp_controller.php?'.api_get_cidreq(),
'url' => api_get_path(WEB_CODE_PATH) . 'lp/lp_controller.php?'.api_get_cidreq(),
'name' => get_lang('LearningPaths')
];
@ -117,7 +117,7 @@ $actions = Display::url(
array(),
ICON_SIZE_MEDIUM
),
api_get_path(WEB_CODE_PATH) . 'newscorm/lp_controller.php?' . api_get_cidreq()
api_get_path(WEB_CODE_PATH) . 'lp/lp_controller.php?' . api_get_cidreq()
);
$template = new Template(get_lang('StudentScore'));

@ -118,7 +118,7 @@ if ($_SESSION['oLP']->mode == 'embedframe' || $_SESSION['oLP']->get_hide_toc_fra
//Impress js
if ($_SESSION['oLP']->mode == 'impress') {
$lp_id = $_SESSION['oLP']->get_id();
$url = api_get_path(WEB_CODE_PATH) . "newscorm/lp_impress.php?lp_id=$lp_id&" . api_get_cidreq();
$url = api_get_path(WEB_CODE_PATH) . "lp/lp_impress.php?lp_id=$lp_id&" . api_get_cidreq();
header("Location: $url");
exit;
}
@ -191,7 +191,7 @@ if (!isset($src)) {
isset($file_info['extension']) &&
api_strtolower(substr($file_info['extension'], 0, 3) == 'pdf')
) {
$src = api_get_path(WEB_CODE_PATH).'newscorm/lp_view_item.php?lp_item_id='.$lp_item_id.'&'.api_get_cidreq();
$src = api_get_path(WEB_CODE_PATH).'lp/lp_view_item.php?lp_item_id='.$lp_item_id.'&'.api_get_cidreq();
}
$src = $_SESSION['oLP']->fixBlockedLinks($src);

@ -86,7 +86,7 @@ if (api_is_in_gradebook()) {
}
$interbreadcrumb[] = array(
'url' => api_get_path(WEB_CODE_PATH).'newscorm/lp_controller.php?action=list&'.api_get_cidreq(),
'url' => api_get_path(WEB_CODE_PATH).'lp/lp_controller.php?action=list&'.api_get_cidreq(),
'name' => get_lang('LearningPaths')
);
$interbreadcrumb[] = array(

@ -1,110 +1,110 @@
<?xml version="1.0"?>
<!-- filename=adlcp_rootv1p2.xsd -->
<!-- Conforms to w3c http://www.w3.org/TR/xmlschema-1/ 2000-10-24-->
<xsd:schema xmlns="http://www.adlnet.org/xsd/adlcp_rootv1p2"
targetNamespace="http://www.adlnet.org/xsd/adlcp_rootv1p2"
xmlns:xml="http://www.w3.org/XML/1998/namespace"
xmlns:imscp="http://www.imsproject.org/xsd/imscp_rootv1p1p2"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
elementFormDefault="unqualified"
version="ADL Version 1.2">
<xsd:import namespace="http://www.imsproject.org/xsd/imscp_rootv1p1p2"
schemaLocation="imscp_rootv1p1p2.xsd"/>
<xsd:element name="location" type="locationType"/>
<xsd:element name="prerequisites" type="prerequisitesType"/>
<xsd:element name="maxtimeallowed" type="maxtimeallowedType"/>
<xsd:element name="timelimitaction" type="timelimitactionType"/>
<xsd:element name="datafromlms" type="datafromlmsType"/>
<xsd:element name="masteryscore" type="masteryscoreType"/>
<xsd:element name="schema" type="newSchemaType"/>
<xsd:simpleType name="newSchemaType">
<xsd:restriction base="imscp:schemaType">
<xsd:enumeration value="ADL SCORM"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:element name="schemaversion" type="newSchemaversionType"/>
<xsd:simpleType name="newSchemaversionType">
<xsd:restriction base="imscp:schemaversionType">
<xsd:enumeration value="1.2"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:attribute name="scormtype">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="asset"/>
<xsd:enumeration value="sco"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
<xsd:simpleType name="locationType">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="2000"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="prerequisitesType">
<xsd:simpleContent>
<xsd:extension base="prerequisiteStringType">
<xsd:attributeGroup ref="attr.prerequisitetype"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
<xsd:attributeGroup name="attr.prerequisitetype">
<xsd:attribute name="type" use="required">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="aicc_script"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:attributeGroup>
<xsd:simpleType name="maxtimeallowedType">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="13"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="timelimitactionType">
<xsd:restriction base="stringType">
<xsd:enumeration value="exit,no message"/>
<xsd:enumeration value="exit,message"/>
<xsd:enumeration value="continue,no message"/>
<xsd:enumeration value="continue,message"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="datafromlmsType">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="255"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="masteryscoreType">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="200"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="stringType">
<xsd:restriction base="xsd:string"/>
</xsd:simpleType>
<xsd:simpleType name="prerequisiteStringType">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="200"/>
</xsd:restriction>
</xsd:simpleType>
<?xml version="1.0"?>
<!-- filename=adlcp_rootv1p2.xsd -->
<!-- Conforms to w3c http://www.w3.org/TR/xmlschema-1/ 2000-10-24-->
<xsd:schema xmlns="http://www.adlnet.org/xsd/adlcp_rootv1p2"
targetNamespace="http://www.adlnet.org/xsd/adlcp_rootv1p2"
xmlns:xml="http://www.w3.org/XML/1998/namespace"
xmlns:imscp="http://www.imsproject.org/xsd/imscp_rootv1p1p2"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
elementFormDefault="unqualified"
version="ADL Version 1.2">
<xsd:import namespace="http://www.imsproject.org/xsd/imscp_rootv1p1p2"
schemaLocation="imscp_rootv1p1p2.xsd"/>
<xsd:element name="location" type="locationType"/>
<xsd:element name="prerequisites" type="prerequisitesType"/>
<xsd:element name="maxtimeallowed" type="maxtimeallowedType"/>
<xsd:element name="timelimitaction" type="timelimitactionType"/>
<xsd:element name="datafromlms" type="datafromlmsType"/>
<xsd:element name="masteryscore" type="masteryscoreType"/>
<xsd:element name="schema" type="newSchemaType"/>
<xsd:simpleType name="newSchemaType">
<xsd:restriction base="imscp:schemaType">
<xsd:enumeration value="ADL SCORM"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:element name="schemaversion" type="newSchemaversionType"/>
<xsd:simpleType name="newSchemaversionType">
<xsd:restriction base="imscp:schemaversionType">
<xsd:enumeration value="1.2"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:attribute name="scormtype">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="asset"/>
<xsd:enumeration value="sco"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
<xsd:simpleType name="locationType">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="2000"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="prerequisitesType">
<xsd:simpleContent>
<xsd:extension base="prerequisiteStringType">
<xsd:attributeGroup ref="attr.prerequisitetype"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
<xsd:attributeGroup name="attr.prerequisitetype">
<xsd:attribute name="type" use="required">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="aicc_script"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:attributeGroup>
<xsd:simpleType name="maxtimeallowedType">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="13"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="timelimitactionType">
<xsd:restriction base="stringType">
<xsd:enumeration value="exit,no message"/>
<xsd:enumeration value="exit,message"/>
<xsd:enumeration value="continue,no message"/>
<xsd:enumeration value="continue,message"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="datafromlmsType">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="255"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="masteryscoreType">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="200"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="stringType">
<xsd:restriction base="xsd:string"/>
</xsd:simpleType>
<xsd:simpleType name="prerequisiteStringType">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="200"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:schema>

@ -1,24 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- filename=ims_xml.xsd -->
<xsd:schema xmlns="http://www.w3.org/XML/1998/namespace"
targetNamespace="http://www.w3.org/XML/1998/namespace"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<!-- 2001-02-22 edited by Thomas Wason IMS Global Learning Consortium, Inc. -->
<xsd:annotation>
<xsd:documentation>In namespace-aware XML processors, the &quot;xml&quot; prefix is bound to the namespace name http://www.w3.org/XML/1998/namespace.</xsd:documentation>
<xsd:documentation>Do not reference this file in XML instances</xsd:documentation>
<xsd:documentation>Schawn Thropp: Changed the uriReference type to string type</xsd:documentation>
</xsd:annotation>
<xsd:attribute name="lang" type="xsd:language">
<xsd:annotation>
<xsd:documentation>Refers to universal XML 1.0 lang attribute</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="base" type="xsd:string">
<xsd:annotation>
<xsd:documentation>Refers to XML Base: http://www.w3.org/TR/xmlbase</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="link" type="xsd:string"/>
</xsd:schema>
<?xml version="1.0" encoding="UTF-8"?>
<!-- filename=ims_xml.xsd -->
<xsd:schema xmlns="http://www.w3.org/XML/1998/namespace"
targetNamespace="http://www.w3.org/XML/1998/namespace"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<!-- 2001-02-22 edited by Thomas Wason IMS Global Learning Consortium, Inc. -->
<xsd:annotation>
<xsd:documentation>In namespace-aware XML processors, the &quot;xml&quot; prefix is bound to the namespace name http://www.w3.org/XML/1998/namespace.</xsd:documentation>
<xsd:documentation>Do not reference this file in XML instances</xsd:documentation>
<xsd:documentation>Schawn Thropp: Changed the uriReference type to string type</xsd:documentation>
</xsd:annotation>
<xsd:attribute name="lang" type="xsd:language">
<xsd:annotation>
<xsd:documentation>Refers to universal XML 1.0 lang attribute</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="base" type="xsd:string">
<xsd:annotation>
<xsd:documentation>Refers to XML Base: http://www.w3.org/TR/xmlbase</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="link" type="xsd:string"/>
</xsd:schema>

@ -1,345 +1,345 @@
<?xml version="1.0"?>
<!-- edited with XML Spy v3.5 (http://www.xmlspy.com) by Thomas Wason (private) -->
<!-- filename=ims_cp_rootv1p1p2.xsd -->
<!-- Copyright (2) 2001 IMS Global Learning Consortium, Inc. -->
<!-- edited by Thomas Wason -->
<!-- Conforms to w3c http://www.w3.org/TR/xmlschema-1/ 2000-10-24-->
<xsd:schema xmlns="http://www.imsproject.org/xsd/imscp_rootv1p1p2"
targetNamespace="http://www.imsproject.org/xsd/imscp_rootv1p1p2"
xmlns:xml="http://www.w3.org/XML/1998/namespace"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
elementFormDefault="unqualified" version="IMS CP 1.1.2">
<!-- ******************** -->
<!-- ** Change History ** -->
<!-- ******************** -->
<xsd:annotation>
<xsd:documentation xml:lang="en">DRAFT XSD for IMS Content Packaging version 1.1 DRAFT</xsd:documentation>
<xsd:documentation> Copyright (c) 2001 IMS GLC, Inc. </xsd:documentation>
<xsd:documentation>2000-04-21, Adjustments by T.D. Wason from CP 1.0.</xsd:documentation>
<xsd:documentation>2001-02-22, T.D.Wason: Modify for 2000-10-24 XML-Schema version. Modified to support extension.</xsd:documentation>
<xsd:documentation>2001-03-12, T.D.Wason: Change filename, target and meta-data namespaces and meta-data fielname. Add meta-data to itemType, fileType and organizationType.</xsd:documentation>
<xsd:documentation>Do not define namespaces for xml in XML instances generated from this xsd.</xsd:documentation>
<xsd:documentation>Imports IMS meta-data xsd, lower case element names. </xsd:documentation>
<xsd:documentation>This XSD provides a reference to the IMS meta-data root element as imsmd:record</xsd:documentation>
<xsd:documentation>If the IMS meta-data is to be used in the XML instance then the instance must define an IMS meta-data prefix with a namespace. The meta-data targetNamespace should be used. </xsd:documentation>
<xsd:documentation>2001-03-20, Thor Anderson: Remove manifestref, change resourceref back to identifierref, change manifest back to contained by manifest. --Tom Wason: manifest may contain _none_ or more manifests.</xsd:documentation>
<xsd:documentation>2001-04-13 Tom Wason: corrected attirbute name structure. Was misnamed type. </xsd:documentation>
<xsd:documentation>2001-05-14 Schawn Thropp: Made all complexType extensible with the group.any</xsd:documentation>
<xsd:documentation>Added the anyAttribute to all complexTypes. Changed the href attribute on the fileType and resourceType to xsd:string</xsd:documentation>
<xsd:documentation>Changed the maxLength of the href, identifierref, parameters, structure attributes to match the Information model.</xsd:documentation>
<xsd:documentation>2001-07-25 Schawn Thropp: Changed the namespace for the Schema of Schemas to the 5/2/2001 W3C XML Schema</xsd:documentation>
<xsd:documentation>Recommendation. attributeGroup attr.imsmd deleted, was not used anywhere. Any attribute declarations that have</xsd:documentation>
<xsd:documentation>use = "default" changed to use="optional" - attr.structure.req.</xsd:documentation>
<xsd:documentation>Any attribute declarations that have value="somevalue" changed to default="somevalue",</xsd:documentation>
<xsd:documentation>attr.structure.req (hierarchical). Removed references to IMS MD Version 1.1.</xsd:documentation>
<xsd:documentation>Modified attribute group "attr.resourcetype.req" to change use from optional</xsd:documentation>
<xsd:documentation>to required to match the information model. As a result the default value also needed to be removed</xsd:documentation>
<xsd:documentation>Name change for XSD. Changed to match version of CP Spec </xsd:documentation>
</xsd:annotation>
<xsd:annotation>
<xsd:documentation>Inclusions and Imports</xsd:documentation>
</xsd:annotation>
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="ims_xml.xsd"/>
<xsd:annotation>
<xsd:documentation>Attribute Declarations</xsd:documentation>
</xsd:annotation>
<!-- **************************** -->
<!-- ** Attribute Declarations ** -->
<!-- **************************** -->
<xsd:attributeGroup name="attr.base">
<xsd:attribute ref="xml:base" use="optional"/>
</xsd:attributeGroup>
<xsd:attributeGroup name="attr.default">
<xsd:attribute name="default" type="xsd:IDREF" use="optional"/>
</xsd:attributeGroup>
<xsd:attributeGroup name="attr.href">
<xsd:attribute name="href" use="optional">
<xsd:simpleType>
<xsd:restriction base="xsd:anyURI">
<xsd:maxLength value="2000"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:attributeGroup>
<xsd:attributeGroup name="attr.href.req">
<xsd:attribute name="href" use="required">
<xsd:simpleType>
<xsd:restriction base="xsd:anyURI">
<xsd:maxLength value="2000"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:attributeGroup>
<xsd:attributeGroup name="attr.identifier.req">
<xsd:attribute name="identifier" type="xsd:ID" use="required"/>
</xsd:attributeGroup>
<xsd:attributeGroup name="attr.identifier">
<xsd:attribute name="identifier" type="xsd:ID" use="optional"/>
</xsd:attributeGroup>
<xsd:attributeGroup name="attr.isvisible">
<xsd:attribute name="isvisible" type="xsd:boolean" use="optional"/>
</xsd:attributeGroup>
<xsd:attributeGroup name="attr.parameters">
<xsd:attribute name="parameters" use="optional">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="1000"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:attributeGroup>
<xsd:attributeGroup name="attr.identifierref">
<xsd:attribute name="identifierref" use="optional">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="2000"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:attributeGroup>
<xsd:attributeGroup name="attr.identifierref.req">
<xsd:attribute name="identifierref" use="required">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="2000"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:attributeGroup>
<xsd:attributeGroup name="attr.resourcetype.req">
<xsd:attribute name="type" use="required">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="1000"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:attributeGroup>
<xsd:attributeGroup name="attr.structure.req">
<xsd:attribute name="structure" use="optional" default="hierarchical">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="200"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:attributeGroup>
<xsd:attributeGroup name="attr.version">
<xsd:attribute name="version" use="optional">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="20"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:attributeGroup>
<xsd:annotation>
<xsd:documentation>element groups</xsd:documentation>
</xsd:annotation>
<xsd:group name="grp.any">
<xsd:annotation>
<xsd:documentation>Any namespaced element from any namespace may be included within an &quot;any&quot; element. The namespace for the imported element must be defined in the instance, and the schema must be imported. </xsd:documentation>
</xsd:annotation>
<xsd:sequence>
<xsd:any namespace="##other" processContents="strict" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:group>
<!-- ************************** -->
<!-- ** Element Declarations ** -->
<!-- ************************** -->
<xsd:element name="dependency" type="dependencyType"/>
<xsd:element name="file" type="fileType"/>
<xsd:element name="item" type="itemType"/>
<xsd:element name="manifest" type="manifestType"/>
<xsd:element name="metadata" type="metadataType"/>
<xsd:element name="organization" type="organizationType"/>
<xsd:element name="organizations" type="organizationsType"/>
<xsd:element name="resource" type="resourceType"/>
<xsd:element name="resources" type="resourcesType"/>
<xsd:element name="schema" type="schemaType"/>
<xsd:element name="schemaversion" type="schemaversionType"/>
<xsd:element name="title" type="titleType"/>
<!-- ******************* -->
<!-- ** Complex Types ** -->
<!-- ******************* -->
<!-- **************** -->
<!-- ** dependency ** -->
<!-- **************** -->
<xsd:complexType name="dependencyType">
<xsd:sequence>
<xsd:group ref="grp.any"/>
</xsd:sequence>
<xsd:attributeGroup ref="attr.identifierref.req"/>
<xsd:anyAttribute namespace="##other" processContents="strict"/>
</xsd:complexType>
<!-- ********** -->
<!-- ** file ** -->
<!-- ********** -->
<xsd:complexType name="fileType">
<xsd:sequence>
<xsd:element ref="metadata" minOccurs="0"/>
<xsd:group ref="grp.any"/>
</xsd:sequence>
<xsd:attributeGroup ref="attr.href.req"/>
<xsd:anyAttribute namespace="##other" processContents="strict"/>
</xsd:complexType>
<!-- ********** -->
<!-- ** item ** -->
<!-- ********** -->
<xsd:complexType name="itemType">
<xsd:sequence>
<xsd:element ref="title" minOccurs="0"/>
<xsd:element ref="item" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="metadata" minOccurs="0"/>
<xsd:group ref="grp.any"/>
</xsd:sequence>
<xsd:attributeGroup ref="attr.identifier.req"/>
<xsd:attributeGroup ref="attr.identifierref"/>
<xsd:attributeGroup ref="attr.isvisible"/>
<xsd:attributeGroup ref="attr.parameters"/>
<xsd:anyAttribute namespace="##other" processContents="strict"/>
</xsd:complexType>
<!-- ************** -->
<!-- ** manifest ** -->
<!-- ************** -->
<xsd:complexType name="manifestType">
<xsd:sequence>
<xsd:element ref="metadata" minOccurs="0"/>
<xsd:element ref="organizations"/>
<xsd:element ref="resources"/>
<xsd:element ref="manifest" minOccurs="0" maxOccurs="unbounded"/>
<xsd:group ref="grp.any"/>
</xsd:sequence>
<xsd:attributeGroup ref="attr.identifier.req"/>
<xsd:attributeGroup ref="attr.version"/>
<xsd:attribute ref="xml:base"/>
<xsd:anyAttribute namespace="##other" processContents="strict"/>
</xsd:complexType>
<!-- ************** -->
<!-- ** metadata ** -->
<!-- ************** -->
<xsd:complexType name="metadataType">
<xsd:sequence>
<xsd:element ref="schema" minOccurs="0"/>
<xsd:element ref="schemaversion" minOccurs="0"/>
<xsd:group ref="grp.any"/>
</xsd:sequence>
</xsd:complexType>
<!-- ******************* -->
<!-- ** organizations ** -->
<!-- ******************* -->
<xsd:complexType name="organizationsType">
<xsd:sequence>
<xsd:element ref="organization" minOccurs="0" maxOccurs="unbounded"/>
<xsd:group ref="grp.any"/>
</xsd:sequence>
<xsd:attributeGroup ref="attr.default"/>
<xsd:anyAttribute namespace="##other" processContents="strict"/>
</xsd:complexType>
<!-- ****************** -->
<!-- ** organization ** -->
<!-- ****************** -->
<xsd:complexType name="organizationType">
<xsd:sequence>
<xsd:element ref="title" minOccurs="0"/>
<xsd:element ref="item" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="metadata" minOccurs="0"/>
<xsd:group ref="grp.any"/>
</xsd:sequence>
<xsd:attributeGroup ref="attr.identifier.req"/>
<xsd:attributeGroup ref="attr.structure.req"/>
<xsd:anyAttribute namespace="##other" processContents="strict"/>
</xsd:complexType>
<!-- *************** -->
<!-- ** resources ** -->
<!-- *************** -->
<xsd:complexType name="resourcesType">
<xsd:sequence>
<xsd:element ref="resource" minOccurs="0" maxOccurs="unbounded"/>
<xsd:group ref="grp.any"/>
</xsd:sequence>
<xsd:attributeGroup ref="attr.base"/>
<xsd:anyAttribute namespace="##other" processContents="strict"/>
</xsd:complexType>
<!-- ************** -->
<!-- ** resource ** -->
<!-- ************** -->
<xsd:complexType name="resourceType">
<xsd:sequence>
<xsd:element ref="metadata" minOccurs="0"/>
<xsd:element ref="file" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="dependency" minOccurs="0" maxOccurs="unbounded"/>
<xsd:group ref="grp.any"/>
</xsd:sequence>
<xsd:attributeGroup ref="attr.identifier.req"/>
<xsd:attributeGroup ref="attr.resourcetype.req"/>
<xsd:attributeGroup ref="attr.base"/>
<xsd:attributeGroup ref="attr.href"/>
<xsd:anyAttribute namespace="##other" processContents="strict"/>
</xsd:complexType>
<!-- ****************** -->
<!-- ** Simple Types ** -->
<!-- ****************** -->
<!-- ************ -->
<!-- ** schema ** -->
<!-- ************ -->
<xsd:simpleType name="schemaType">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="100"/>
</xsd:restriction>
</xsd:simpleType>
<!-- ******************* -->
<!-- ** schemaversion ** -->
<!-- ******************* -->
<xsd:simpleType name="schemaversionType">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="20"/>
</xsd:restriction>
</xsd:simpleType>
<!-- *********** -->
<!-- ** title ** -->
<!-- *********** -->
<xsd:simpleType name="titleType">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="200"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:schema>
<?xml version="1.0"?>
<!-- edited with XML Spy v3.5 (http://www.xmlspy.com) by Thomas Wason (private) -->
<!-- filename=ims_cp_rootv1p1p2.xsd -->
<!-- Copyright (2) 2001 IMS Global Learning Consortium, Inc. -->
<!-- edited by Thomas Wason -->
<!-- Conforms to w3c http://www.w3.org/TR/xmlschema-1/ 2000-10-24-->
<xsd:schema xmlns="http://www.imsproject.org/xsd/imscp_rootv1p1p2"
targetNamespace="http://www.imsproject.org/xsd/imscp_rootv1p1p2"
xmlns:xml="http://www.w3.org/XML/1998/namespace"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
elementFormDefault="unqualified" version="IMS CP 1.1.2">
<!-- ******************** -->
<!-- ** Change History ** -->
<!-- ******************** -->
<xsd:annotation>
<xsd:documentation xml:lang="en">DRAFT XSD for IMS Content Packaging version 1.1 DRAFT</xsd:documentation>
<xsd:documentation> Copyright (c) 2001 IMS GLC, Inc. </xsd:documentation>
<xsd:documentation>2000-04-21, Adjustments by T.D. Wason from CP 1.0.</xsd:documentation>
<xsd:documentation>2001-02-22, T.D.Wason: Modify for 2000-10-24 XML-Schema version. Modified to support extension.</xsd:documentation>
<xsd:documentation>2001-03-12, T.D.Wason: Change filename, target and meta-data namespaces and meta-data fielname. Add meta-data to itemType, fileType and organizationType.</xsd:documentation>
<xsd:documentation>Do not define namespaces for xml in XML instances generated from this xsd.</xsd:documentation>
<xsd:documentation>Imports IMS meta-data xsd, lower case element names. </xsd:documentation>
<xsd:documentation>This XSD provides a reference to the IMS meta-data root element as imsmd:record</xsd:documentation>
<xsd:documentation>If the IMS meta-data is to be used in the XML instance then the instance must define an IMS meta-data prefix with a namespace. The meta-data targetNamespace should be used. </xsd:documentation>
<xsd:documentation>2001-03-20, Thor Anderson: Remove manifestref, change resourceref back to identifierref, change manifest back to contained by manifest. --Tom Wason: manifest may contain _none_ or more manifests.</xsd:documentation>
<xsd:documentation>2001-04-13 Tom Wason: corrected attirbute name structure. Was misnamed type. </xsd:documentation>
<xsd:documentation>2001-05-14 Schawn Thropp: Made all complexType extensible with the group.any</xsd:documentation>
<xsd:documentation>Added the anyAttribute to all complexTypes. Changed the href attribute on the fileType and resourceType to xsd:string</xsd:documentation>
<xsd:documentation>Changed the maxLength of the href, identifierref, parameters, structure attributes to match the Information model.</xsd:documentation>
<xsd:documentation>2001-07-25 Schawn Thropp: Changed the namespace for the Schema of Schemas to the 5/2/2001 W3C XML Schema</xsd:documentation>
<xsd:documentation>Recommendation. attributeGroup attr.imsmd deleted, was not used anywhere. Any attribute declarations that have</xsd:documentation>
<xsd:documentation>use = "default" changed to use="optional" - attr.structure.req.</xsd:documentation>
<xsd:documentation>Any attribute declarations that have value="somevalue" changed to default="somevalue",</xsd:documentation>
<xsd:documentation>attr.structure.req (hierarchical). Removed references to IMS MD Version 1.1.</xsd:documentation>
<xsd:documentation>Modified attribute group "attr.resourcetype.req" to change use from optional</xsd:documentation>
<xsd:documentation>to required to match the information model. As a result the default value also needed to be removed</xsd:documentation>
<xsd:documentation>Name change for XSD. Changed to match version of CP Spec </xsd:documentation>
</xsd:annotation>
<xsd:annotation>
<xsd:documentation>Inclusions and Imports</xsd:documentation>
</xsd:annotation>
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="ims_xml.xsd"/>
<xsd:annotation>
<xsd:documentation>Attribute Declarations</xsd:documentation>
</xsd:annotation>
<!-- **************************** -->
<!-- ** Attribute Declarations ** -->
<!-- **************************** -->
<xsd:attributeGroup name="attr.base">
<xsd:attribute ref="xml:base" use="optional"/>
</xsd:attributeGroup>
<xsd:attributeGroup name="attr.default">
<xsd:attribute name="default" type="xsd:IDREF" use="optional"/>
</xsd:attributeGroup>
<xsd:attributeGroup name="attr.href">
<xsd:attribute name="href" use="optional">
<xsd:simpleType>
<xsd:restriction base="xsd:anyURI">
<xsd:maxLength value="2000"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:attributeGroup>
<xsd:attributeGroup name="attr.href.req">
<xsd:attribute name="href" use="required">
<xsd:simpleType>
<xsd:restriction base="xsd:anyURI">
<xsd:maxLength value="2000"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:attributeGroup>
<xsd:attributeGroup name="attr.identifier.req">
<xsd:attribute name="identifier" type="xsd:ID" use="required"/>
</xsd:attributeGroup>
<xsd:attributeGroup name="attr.identifier">
<xsd:attribute name="identifier" type="xsd:ID" use="optional"/>
</xsd:attributeGroup>
<xsd:attributeGroup name="attr.isvisible">
<xsd:attribute name="isvisible" type="xsd:boolean" use="optional"/>
</xsd:attributeGroup>
<xsd:attributeGroup name="attr.parameters">
<xsd:attribute name="parameters" use="optional">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="1000"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:attributeGroup>
<xsd:attributeGroup name="attr.identifierref">
<xsd:attribute name="identifierref" use="optional">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="2000"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:attributeGroup>
<xsd:attributeGroup name="attr.identifierref.req">
<xsd:attribute name="identifierref" use="required">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="2000"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:attributeGroup>
<xsd:attributeGroup name="attr.resourcetype.req">
<xsd:attribute name="type" use="required">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="1000"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:attributeGroup>
<xsd:attributeGroup name="attr.structure.req">
<xsd:attribute name="structure" use="optional" default="hierarchical">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="200"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:attributeGroup>
<xsd:attributeGroup name="attr.version">
<xsd:attribute name="version" use="optional">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="20"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:attributeGroup>
<xsd:annotation>
<xsd:documentation>element groups</xsd:documentation>
</xsd:annotation>
<xsd:group name="grp.any">
<xsd:annotation>
<xsd:documentation>Any namespaced element from any namespace may be included within an &quot;any&quot; element. The namespace for the imported element must be defined in the instance, and the schema must be imported. </xsd:documentation>
</xsd:annotation>
<xsd:sequence>
<xsd:any namespace="##other" processContents="strict" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:group>
<!-- ************************** -->
<!-- ** Element Declarations ** -->
<!-- ************************** -->
<xsd:element name="dependency" type="dependencyType"/>
<xsd:element name="file" type="fileType"/>
<xsd:element name="item" type="itemType"/>
<xsd:element name="manifest" type="manifestType"/>
<xsd:element name="metadata" type="metadataType"/>
<xsd:element name="organization" type="organizationType"/>
<xsd:element name="organizations" type="organizationsType"/>
<xsd:element name="resource" type="resourceType"/>
<xsd:element name="resources" type="resourcesType"/>
<xsd:element name="schema" type="schemaType"/>
<xsd:element name="schemaversion" type="schemaversionType"/>
<xsd:element name="title" type="titleType"/>
<!-- ******************* -->
<!-- ** Complex Types ** -->
<!-- ******************* -->
<!-- **************** -->
<!-- ** dependency ** -->
<!-- **************** -->
<xsd:complexType name="dependencyType">
<xsd:sequence>
<xsd:group ref="grp.any"/>
</xsd:sequence>
<xsd:attributeGroup ref="attr.identifierref.req"/>
<xsd:anyAttribute namespace="##other" processContents="strict"/>
</xsd:complexType>
<!-- ********** -->
<!-- ** file ** -->
<!-- ********** -->
<xsd:complexType name="fileType">
<xsd:sequence>
<xsd:element ref="metadata" minOccurs="0"/>
<xsd:group ref="grp.any"/>
</xsd:sequence>
<xsd:attributeGroup ref="attr.href.req"/>
<xsd:anyAttribute namespace="##other" processContents="strict"/>
</xsd:complexType>
<!-- ********** -->
<!-- ** item ** -->
<!-- ********** -->
<xsd:complexType name="itemType">
<xsd:sequence>
<xsd:element ref="title" minOccurs="0"/>
<xsd:element ref="item" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="metadata" minOccurs="0"/>
<xsd:group ref="grp.any"/>
</xsd:sequence>
<xsd:attributeGroup ref="attr.identifier.req"/>
<xsd:attributeGroup ref="attr.identifierref"/>
<xsd:attributeGroup ref="attr.isvisible"/>
<xsd:attributeGroup ref="attr.parameters"/>
<xsd:anyAttribute namespace="##other" processContents="strict"/>
</xsd:complexType>
<!-- ************** -->
<!-- ** manifest ** -->
<!-- ************** -->
<xsd:complexType name="manifestType">
<xsd:sequence>
<xsd:element ref="metadata" minOccurs="0"/>
<xsd:element ref="organizations"/>
<xsd:element ref="resources"/>
<xsd:element ref="manifest" minOccurs="0" maxOccurs="unbounded"/>
<xsd:group ref="grp.any"/>
</xsd:sequence>
<xsd:attributeGroup ref="attr.identifier.req"/>
<xsd:attributeGroup ref="attr.version"/>
<xsd:attribute ref="xml:base"/>
<xsd:anyAttribute namespace="##other" processContents="strict"/>
</xsd:complexType>
<!-- ************** -->
<!-- ** metadata ** -->
<!-- ************** -->
<xsd:complexType name="metadataType">
<xsd:sequence>
<xsd:element ref="schema" minOccurs="0"/>
<xsd:element ref="schemaversion" minOccurs="0"/>
<xsd:group ref="grp.any"/>
</xsd:sequence>
</xsd:complexType>
<!-- ******************* -->
<!-- ** organizations ** -->
<!-- ******************* -->
<xsd:complexType name="organizationsType">
<xsd:sequence>
<xsd:element ref="organization" minOccurs="0" maxOccurs="unbounded"/>
<xsd:group ref="grp.any"/>
</xsd:sequence>
<xsd:attributeGroup ref="attr.default"/>
<xsd:anyAttribute namespace="##other" processContents="strict"/>
</xsd:complexType>
<!-- ****************** -->
<!-- ** organization ** -->
<!-- ****************** -->
<xsd:complexType name="organizationType">
<xsd:sequence>
<xsd:element ref="title" minOccurs="0"/>
<xsd:element ref="item" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="metadata" minOccurs="0"/>
<xsd:group ref="grp.any"/>
</xsd:sequence>
<xsd:attributeGroup ref="attr.identifier.req"/>
<xsd:attributeGroup ref="attr.structure.req"/>
<xsd:anyAttribute namespace="##other" processContents="strict"/>
</xsd:complexType>
<!-- *************** -->
<!-- ** resources ** -->
<!-- *************** -->
<xsd:complexType name="resourcesType">
<xsd:sequence>
<xsd:element ref="resource" minOccurs="0" maxOccurs="unbounded"/>
<xsd:group ref="grp.any"/>
</xsd:sequence>
<xsd:attributeGroup ref="attr.base"/>
<xsd:anyAttribute namespace="##other" processContents="strict"/>
</xsd:complexType>
<!-- ************** -->
<!-- ** resource ** -->
<!-- ************** -->
<xsd:complexType name="resourceType">
<xsd:sequence>
<xsd:element ref="metadata" minOccurs="0"/>
<xsd:element ref="file" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="dependency" minOccurs="0" maxOccurs="unbounded"/>
<xsd:group ref="grp.any"/>
</xsd:sequence>
<xsd:attributeGroup ref="attr.identifier.req"/>
<xsd:attributeGroup ref="attr.resourcetype.req"/>
<xsd:attributeGroup ref="attr.base"/>
<xsd:attributeGroup ref="attr.href"/>
<xsd:anyAttribute namespace="##other" processContents="strict"/>
</xsd:complexType>
<!-- ****************** -->
<!-- ** Simple Types ** -->
<!-- ****************** -->
<!-- ************ -->
<!-- ** schema ** -->
<!-- ************ -->
<xsd:simpleType name="schemaType">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="100"/>
</xsd:restriction>
</xsd:simpleType>
<!-- ******************* -->
<!-- ** schemaversion ** -->
<!-- ******************* -->
<xsd:simpleType name="schemaversionType">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="20"/>
</xsd:restriction>
</xsd:simpleType>
<!-- *********** -->
<!-- ** title ** -->
<!-- *********** -->
<xsd:simpleType name="titleType">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="200"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:schema>

@ -1638,7 +1638,7 @@ function rl_get_resource_link_for_learnpath($course_id, $learnpath_id, $id_in_pa
$link = '';
switch ($type) {
case 'dokeos_chapter':
$link .= $main_dir_path.'newscorm/blank.php';
$link .= $main_dir_path . 'lp/blank.php';
case TOOL_CALENDAR_EVENT:
$link .= $main_dir_path.'calendar/agenda.php?origin='.$origin.'&agenda_id='.$id;
break;
@ -1732,7 +1732,7 @@ function rl_get_resource_link_for_learnpath($course_id, $learnpath_id, $id_in_pa
Session::write('officedoc',$officedoc);
break;
case TOOL_LP_FINAL_ITEM:
$link .= api_get_path(WEB_CODE_PATH).'newscorm/lp_final_item.php?'.api_get_cidreq().'&id='.$id.'&lp_id='.$learnpath_id;
$link .= api_get_path(WEB_CODE_PATH) . 'lp/lp_final_item.php?'.api_get_cidreq().'&id='.$id.'&lp_id='.$learnpath_id;
break;
case 'assignments':
$link .= $main_dir_path.'work/work.php?origin='.$origin;

@ -410,8 +410,8 @@ if ($from_learnpath != 'yes') {
$from_learnpath = 'yes';
session_register('from_learnpath');
$interbreadcrumb[] = array ('url' => "../newscorm/lp_controller.php?action=list", 'name' => get_lang('LearningPath'));
$interbreadcrumb[] = array ('url' => "../newscorm/lp_controller.php?action=admin_view&lp_id=$learnpath_id", 'name' => stripslashes("{$therow['name']}"));
$interbreadcrumb[] = array ('url' => "../lp/lp_controller.php?action=list", 'name' => get_lang('LearningPath'));
$interbreadcrumb[] = array ('url' => "../lp/lp_controller.php?action=admin_view&lp_id=$learnpath_id", 'name' => stripslashes("{$therow['name']}"));
$interbreadcrumb[] = array ('url' => api_get_self()."?action=$action&lp_id=$learnpath_id&parent_item_id=$chapter_id&originalresource=no", 'name' => "{$therow2['title']}");
}

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save