Создание закладок LMS, Moodle SCORM

Привет, я ищу способ добавить страницу в закладки с помощью JavaScript, чтобы, когда пользователь повторно открывает курс, он запоминал страницу, на которой он или она находится, отправляя ее в SCORM/Moodle.

есть идеи, ребята?

используя scorm 1.2 и Moodle 1.9 :)

Огромное спасибо

<!-- ================ -->
<!-- Bookmarking start -->
<!-- ================ -->
<script type="text/javascript" src="SCORM_API_wrapper.js"></script>
<script type="text/javascript">
//Using pipwerks namespace, SCORM 1.2

var success = pipwerks.SCORM.init();

if(success){
  var status = pipwerks.SCORM.get("cmi.core.lesson_status");
  if(status != "completed"){
    success = pipwerks.SCORM.get("cmi.core.lesson_status", "completed");
    if(success){
       pipwerks.SCORM.quit();
    }
  }
}

function setbookMark() {
    var setlessonLocation = scorm.set("cmi.core.lesson_location", "2");
}

function showbookMark() {
    alert(scorm.get("cmi.core.lesson_location"));
}

window.onload = function (){
    init();
    setbookMark();
}


</script>
<!-- ================ -->
<!-- Bookmarking End -->
<!-- ================ -->

Первая индексная страница, которая загружается

<script type="text/javascript" src="SCORM_API_wrapper.js"></script>
<script type="text/javascript">
var scorm = pipwerks.SCORM;


function init(){

    //Specify SCORM 1.2:
    scorm.version = "1.2";

    var callSucceeded = scorm.init();
}

function end(){

    var callSucceeded = scorm.quit();
}


function bookMark() {
    var lessonLocation = scorm.get("cmi.core.lesson_location");
    if (lessonLocation == "1") {
        window.location = "1.html";
        }
    else if(lessonLocation == "2") {
        window.location = "2.html";
        }
    else if(lessonLocation == "3") {
        window.location = "3.html";
        }
    else if(lessonLocation == "4") {
        window.location = "4.html";
        }
    else if(lessonLocation == "5") {
        window.location = "5.html";
        }
    else if(lessonLocation == "6") {
        window.location = "6.html";
        }
    else if(lessonLocation == "") {
        window.location = "1.html";
        }
}

window.onload = function (){
    init();
    bookMark();
}

window.onunload = function (){
    end();
}
</script>

person Ma9ic    schedule 29.02.2012    source источник
comment
Разве это (теоретически) не должно быть сделано со стороны Moodle? т.е. написать плагин/компонент, который отслеживает последнюю страницу, на которой был пользователь, и возвращает ее, когда пользователь снова входит в систему.   -  person Marvin Pinto    schedule 29.02.2012
comment
Должна иметь возможность добавлять JavaScript на каждую страницу, которая отправляет закладку в SCORM.   -  person Ma9ic    schedule 29.02.2012


Ответы (2)


Настройка lesson_location эквивалентна созданию файла cookie браузера... вам нужно написать JavaScript в своем курсе, который анализирует сохраненную строку и использует ее.

Вам нужно изменить свой код в нескольких местах - код, который вы предоставили, является примером, который устанавливает ваш курс для завершения в момент его инициализации. Это не совсем то, что вы ищете.

Вот краткое руководство по началу курса и поиску закладки:

var bookmark, initialized, status;
var scorm = pipwerks.SCORM; //shortcut for easier typing

function jumpToPage(url){

    //write some code that navigates to the specified url

    //Save whatever URL was just used as the bookmark
    //each time the function is invoked.
    scorm.set("cmi.core.lesson_location", url);

}

function init(){

    //the default URL in case no bookmark is found
    //or when course is launched for first time
    var url = "url_of_first_page.html";

    initialized = scorm.init();

    if(!initialized){ alert("Course failed to initialize"); return false; }

    //Get the lesson status from the LMS
    status = scorm.get("cmi.core.lesson_status");

    if(status === "completed"){

        //You're already done, get out of here
        scorm.quit();
        return; //exit init() function

    } else if(status === "ab-initio"){

        //this is the very first launch, no bookmark will be found in LMS
        //do nothing

    } else {

        //Check for a bookmark
        bookmark = scorm.get("cmi.core.lesson_location");

        //If a bookmark is found, use its value as the target URL
        if(bookmark){ 
            url = bookmark;
        }

    }        

    jumpToPage(url);

}


window.onload = init;
person pipwerks    schedule 02.03.2012
comment
Так что мне все еще нужно включить вышеуказанную страницу? - person Ma9ic; 02.03.2012
comment
Нет, он не очень хорошо сформирован. Вам нужна HTML-страница, которая будет выступать в качестве родительской страницы — она должна содержать всю логику навигации и отслеживания курса. Затем вы отображаете содержимое курса внутри iframe. Для навигации между страницами вы устанавливаете src для iframe, вы не используете window.location. Я предлагаю начать с функционального примера из уважаемого источника, такого как scorm.com, у них есть много бесплатных примеров. - person pipwerks; 03.03.2012

Вы можете использовать cmi.core.lesson_location, чтобы сохранить текущее местоположение учащихся в курсе. Если вам нужно хранить более сложную информацию, такую ​​как текущее состояние учащихся в курсе, используйте cmi.suspend_data. Это оба свойства чтения/записи, которые вы можете прочитать, когда курс впервые загружается и подключается к LMS, а затем переходите к соответствующему местоположению в курсе.

Краткий справочник по свойствам CMI можно найти в разделе «Модель данных»: http://scorm.com/scorm-explained/technical-scorm/run-time/run-time-reference/

person Matt Shooks    schedule 29.02.2012
comment
Спасибо, пока у меня есть вышеперечисленное, но я все еще застрял: есть идеи? - person Ma9ic; 01.03.2012
comment
Установка Lesson_Location не заставляет проигрыватель курса автоматически перемещаться в это место при следующей загрузке курса. Это просто контейнер для значения. Ваш курс по-прежнему должен получить это значение при первой загрузке и определить, нужно ли воздействовать на него, перейдя в определенное место. - person Matt Shooks; 01.03.2012