c.palearn API リファレンスマニュアル (5. コンテンツ開発編 ) Panasonic Learning Systems Co., Ltd. Ver.1.1
目次 1 4 PaLearn API の概要... 4 PaLearn API の動作原理... 5 PaLearnLIB.js の役割... 6 API について... 6 LMSInitialize... 7 LMSGetValue... 7 LMSSetValue... 8 LMSCommit... 8 LMSFinish... 9 データモデルについて... 9 2 10 PaLearn データモデル...10 pls.course...11 pls.course.name...11 pls.course.term...11 pls.test...12 pls.test.count...12 pls.test.name...12 pls.test.status...12 pls.test.passed_date...12 pls.test.url...13 pls.enquete...14 pls.enquete.count...14 pls.enquete.name...14 pls.enquete.status...14 pls.enquete.enter_date...14 pls.enquete.url...14 pls.material...16 pls.material.count...16 pls.material.name...16 pls.material.status...16 pls.material.url...16 pls.bbs...18 pls.bbs.count...18 pls.bbs.name...18 pls.bbs.url...18 pls.lecture...20 pls.lecture.count...20 pls.lecture.status...20-2
pls.system... 21 pls.system.datetime... 21 3 22 SCORM 互換データモデル...22 cmi.core... 23 cmi.core.student_id...23 cmi.core.student_name... 23 cmi.core.lesson_location... 24 cmi.core.lesson_status... 24 cmi.suspend_data... 25 4 26 Tips&Tricks...26 表示内容の切り替え方法... 26 <!-- -- > の利用... 26 style.display の利用... 27 5 28 注意事項...28 データモデル名の表記... 28 フレームページ... 28-3
1 PaLearn API の概要 本書では PaLearn の WBT 機能で提供されている テスト アンケート 資料 掲示板 を WBT Object と説明します PaLearn API は PaLearn の WBT 機能で作成される WBT Object の受講状態をコンテンツが知る手段を提供しております WBT Object の状態を知ることにより コンテンツは状況に応じて表示する内容を動的に変化させたり 受講者へのメッセージを表示させたりするインタラクティブなコンテンツを作成することができます この章では PaLearn API について 次の順で紹介します PaLearn API の動作原理 PaLearn LIB.js の役割 API について データモデルについて - 4
PaLearn API の動作原理 PaLearn のコンテンツ画面は PaLearn が作るフレームページの中で表示されています 見えないフレームの中に API と命名されたフレームページがあります API フレームは PaLearn システムと通信するプログラムが組み込まれています API フレームにある JavaScript の関数を呼び出すことによって コンテンツ画面を閲覧している受講者の情報や WBT Object の状態などを得ることができます コンテンツのフレーム <script> function LMSinitialize(){ +++++++; +++++++++; function LMSGetValue(str,value){ ++++++; ++++++++++++; API のフレーム ( 実際には縦幅 0px で画面に見えない ) PaLearn のコンテンツ表示ウィンドウのイメージ - 5
PaLearnLIB.js の役割 PaLearn WBT Object Package に JavaScript を記述した PaLearnLIB.js ファイルが同梱されています PaLearnLIB.js は API フレームと対話するための関数が用意されています コンテンツの HTML ファイルに PaLearnLIB.js を組み込むことによって PaLearn API の利用を開始することができます <script language="javascript" src="palearnlib.js"></script> コンテンツに PaLearnLIB.js を組み込む PaLearn API の利用が開始されると 次の API が利用できます <script language="javascript"> </script> strstatus = LMSGetValue("pls.test.status","1"); API の利用例 LMSGetValue() は PaLearn からデータを受信する API です pls.test.status は WBT Object のデータモデルです 利用例では PaLearn からテスト No.1 の合否状態を取得しています API について PaLearn は 5 つの API を用意しております API LMSInitialize LMSGetValue LNSSetValue LMSCommit LMSFinish 機能 APIアダプタとの通信を確立します値を取得します APIアダプタに値をキャッシュします APIアダプタにキャッシュされている値を保存します終了します 同時に LMSCommit の処理も行われます - 6
LMSInitialize API アダプタに対して 通信の確立をします コンテンツは戻り値により API アダプタの状態を判別します LMSInitialize( ) は 正常時に True 異常時には False を文字列で返します <script language="javascript"> If( LMSInitialize("")!= "True" ) { </script> alert(" システムエラーです 管理者にご連絡下さい ") LMSInitialize の利用例 LMSGetValue API アダプタを通じて 値を取得します コンテンツのフレーム 値の取得 <script> APIのフレーム function LMSinitialize(){ +++++++; +++++++++; function LMSGetValue(str,value){ ++++++; ( 実際には縦幅 0pxで画面に見えない ) ++++++++++++; データモデルによっては API アダプタは必要に応じて PaLearn のサーバと通信し値を取得しています - 7
LMSSetValue API アダプタに値をキャッシュします コンテンツのフレーム 値のキャッ <script> function LMSinitialize(){ +++++++; +++++++++; function LMSGetValue(str,value){ ++++++; ++++++++++++; API のフレーム ( 実際には縦幅 0px で画面に見えない ) LMSSetValue は 正常時に True 異常時には False を文字列で返します PaLearn サーバに保存するには 次の LMSCommit が必要です LMSCommit API アダプタにキャッシュされている値を PaLearn サーバに保存します コンテンツのフレーム <script> function LMSinitialize(){ +++++++; +++++++++; function LMSGetValue(str,value){ ++++++; ++++++++++++; API のフレーム ( 実際には縦幅 0px で画面に見えない ) LMSCommit は 正常時に True 異常時には False を文字列で返します - 8
LMSFinish 終了します 同時に LMSCommit の処理も行われます データモデルについて WBT Object に関するデータモデル以外にも PaLearn の学習進捗機能に対応したデータモデルやサーバから現在の日時を得るデータモデルなども用意されています データモデルは PaLearn 独自のものと SCORM1.2 規格の互換性を配慮したものと 2 種類あります 詳細を次章から 2 節に分けて解説します - 9
2 PaLearn データモデル 文法 / 書式 LMSGetValue(, ); データモデル名 No. 指定 ( 数値 ) データモデルの説明 データ内容 戻り値の内容 データ型 戻り値のデータ型 値 No. 指定 No. 指定の必要有無 - 10
pls.course 講座に関するデータモデルです pls.course.name データ内容データ型 No. 指定 講座名称 String 128 文字無 document.write(lmssetvalue("pls.course.name")); pls.course.term ex. 講座名称を表示する データ内容データ型 No. 指定 受講期間 Vocabulary yyyy/mm/dd-yyyy/mm/dd 無 document.write(lmssetvalue("pls.course.term")); ex. 受講期間を表示する - 11
pls.test テストに関するデータモデルです pls.test.count 講座に登録されているテストの数を返します データ内容データ型 No. 指定テストの数 Int 無 pls.test.name 指定したテスト No. の名称を返します データ内容 データ型 No. 指定 テストの名称 String 64 文字 有 pls.test.status 指定したテスト No. の合否状態を返します データ内容データ型 No. 指定 テストの合否 Vocabulary passed 合格 有 failed 不合格 not attempted 未受験 pls.test.passed_date 指定した No. のテストの合格日を返します データ内容 データ型 No. 指定 合格日 Vocabulary yyyy/mm/dd HH:MM:SS 有 - 12
pls.test.url 指定したテスト No. のURLを返します データ内容 データ型 No. 指定 テストのURL String 256 文字 有 //******************************************************/ // 登録されている全てのテストを表示するリンクページ // // Sample Code 001 //******************************************************/ // テスト数を取得 ntestcount = parseint(lmsgetvalue('pls.test.count')); for(i=1;i<ntestcount+1;i++){ // テストのリンク document.write("<a href=" + LMSGetValue('pls.test.url',i)); document.write(" target=_blank>"); // テストの名称 document.write(lmsgetvalue('pls.test.name',i)); document.write("</a>"); // 合否の表示 if( LMSGetValue('pls.test.status',i) == 'passed'){ document.write("[ 合格 ]"); document.write(lmsgetvalue('pls.test.passed_date',i)); document.write("<br>"); ex. テストの合格表示とリンク - 13
pls.enquete アンケートに関するデータモデルです pls.enquete.count 講座に登録されているアンケートの数を返します データ内容データ型 No. 指定アンケートの数 Int 無 pls.enquete.name 指定したアンケート No. の名称を返します データ内容データ型 No. 指定 アンケートの名称 String 64 文字 有 pls.enquete.status 指定したアンケート No. の記入有無の状態を返します データ内容データ型 No. 指定 アンケートの記入有無 Vocabulary complete incomplete 完了 未完了 有 pls.enquete.enter_date 指定したアンケート No. の記入日を返します データ内容 データ型 No. 指定 合格日 Vocabulary yyyy/mm/dd 有 pls.enquete.url 指定したアンケート No. のURLを返します データ内容データ型 No. 指定アンケートのURL String 256 文字有 - 14
//******************************************************/ // 登録されている全てのアンケートを表示するリンクページ // // Sample Code 002 //******************************************************/ // アンケート数を取得 nenquetecount = parseint(lmsgetvalue('pls.enquete.count')); for(i=1;i<nenquetecount+1;i++){ // アンケートのリンク document.write("<a href=" + LMSGetValue('pls.enquete.url',i)); document.write(" target=_blank>"); // アンケートの名称 document.write(lmsgetvalue('pls.enquete.name',i)); document.write("</a>"); // 記入有無の表示 if( LMSGetValue('pls.enquete.status',i) == 'complete'){ document.write("[ 記入済み ]"); document.write(lmsgetvalue('pls.enquete.enter_date',i)); document.write("<br>"); ex. アンケートの記入有無とリンク ex. Sample Code 002 表示イメージ - 15
pls.material 資料に関するデータモデルです pls.material.count 講座に登録されている資料の数を返します データ内容データ型 No. 指定資料の数 Int 無 pls.material.name 指定した資料 No. の名称を返します データ内容 データ型 No. 指定 資料の名称 String 64 文字 有 pls.material.status 指定した資料 No. の閲覧有無の状態を返します データ内容データ型 No. 指定 資料の閲覧状況 Vocabulary browsed 閲覧済み 有 not attempted 未試行 pls.material.url 指定した資料 No. の URL を返します データ内容データ型 No. 指定 資料の URL String 256 文字有 - 16
//******************************************************/ // 登録されている全ての資料を表示するリンクページ // // Sample Code 003 //******************************************************/ // 資料の数を取得 nmaterialcount = parseint(lmsgetvalue('pls.material.count')); for(i=1;i<nmaterialcount+1;i++){ // 資料のリンク document.write("<a href="+lmsgetvalue('pls.material.url',i)); document.write(" >"); // 資料の名称 document.write(lmsgetvalue('pls.material.name',i)); document.write("</a>"); // 閲覧有無の表示 if( LMSGetValue('pls.material.status',i) == 'complete'){ document.write("[ 閲覧済み ]"); document.write("<br>"); ex. 資料の閲覧有無とリンク ex. Sample Code 003 表示イメージ - 17
pls.bbs 掲示板に関するデータモデルです pls.bbs.count 講座に登録されている掲示板の数を返します データ内容データ型 No. 指定掲示板の数 Int 無 pls.bbs.name 指定した掲示板 No. の名称を返します データ内容 データ型 No. 指定 掲示板の名称 String 64 文字 有 pls.bbs.url 指定した掲示板 No. のURLを返します データ内容データ型 No. 指定掲示板のURL String 256 文字有 - 18
//******************************************************/ // 登録されている全ての掲示板を表示するリンクページ // // Sample Code 004 //******************************************************/ // 掲示板の数を取得 nbbscount = parseint(lmsgetvalue('pls.bbs.count')); for(i=1;i<nbbscount+1;i++){ // 掲示板のリンク document.write("<a href="+lmsgetvalue('pls.bbs.url',i)); document.write(" target=_blank>"); // 掲示板の名称 document.write(lmsgetvalue('pls.bbs.name',i)); document.write("</a>"); document.write("<br>"); ex. 掲示板のリンク - 19
pls.lecture 講義進捗スクリプト設定に関するデータモデルです pls.lecture.count 設定されている章の数を返します データ内容 データ型 No. 指定 章の数 Int 無 pls.lecture.status 指定した章の進捗状態を返します No. 指定には章 又は章 _ 節を指定します データ内容データ型 No. 指定 章の進捗状況 Vocabulary complete 完了 有 incomplete 未完了 //******************************************************/ // 登録されている全ての章の閲覧状態を表示するページ // // Sample Code 005 //******************************************************/ // 掲示板の数を取得 nlecturecount = parseint(lmsgetvalue('pls.lecture.count')); for(i=1;i<nlecturecount+1;i++){ // 各章の状況表示 document.write(i + " 章 "); if(lmsgetvalue('pls.lecture.status',i) == 'complete'){ else{ document.write('[ 完了 ]'); document.write('[ 未完了 ]'); document.write("<br>"); ex. 章別の閲覧状況 - 20
pls.system サーバ (PaLearn システム ) に関するデータモデルです pls.system.datetime サーバ (PaLearn システム ) から 現在の日付 時間を返します データ内容 データ型 No. 指定 サーバの日付 時間 yyyy/mm/dd HH:MM:SS 無 - 21
3 SCORM 互換データモデル 文法 / 書式 PaLearn からデータを取得する場合 LMSGetValue( ); データモデル名 PaLearn へデータを設定する場合 LMSSetValue(, ); データモデル名 設定する値 データモデルの説明 データ内容 戻り値の内容 / 設定する内容 データ型 戻り値のデータ型 値 / 設定できるデータ型 値 Set LMSSetValue() の対応可否 - 22
cmi.core 受講者 受講に関するデータモデルです cmi.core.student_id 受講生のIDを返します データ内容 データ型 Set ID String 12 文字 cmi.core.student_name 受講生の氏名を返します データ内容 データ型 Set ログインID String 32 文字 document.write ("ID=" + LMSGetValue ("cmi.core.student_id ")); document.write (" 氏名 =" + LMSGetValue ("cmi.core.student_name ")); ex.id と氏名を表示する - 23
cmi.core.lesson_location 受講終了位置として URL などを設定 取得します 受講終了位置を記録し 次回の再開時に飛び先として参照して利用することでレジューム機能として利用できます データ内容データ型 Set 受講終了位置 String 255 文字 strurl=lmsgetvalue ("cmi.core.lesson_location"); if (strurl!= ""){ location.href = strurl; ex. 最後に記録されていた受講終了位置にジャンプする LMSSetValue ("cmi.core.lesson_location",location.href); LMSCommit (""); ex. 受講終了位置を表示しているページに設定する cmi.core.lesson_status 学習状況を設定 取得します データ内容データ型 Set 受講状況 Vocabulary passed complete failed incomplete 合格 完了 不合格 未完了 browsed 閲覧済み not attempted 未試行 PaLearnの学習進捗などには反映されません コンテンツ独自で利用するものになります - 24
cmi.suspend_data 学習再開のための情報 ( 前回中断時データ ) などを設定 取得します データ内容データ型 Set 学習再開のための情報 ( 前回中断時データ ) String 4096 文字 <html> <head> <title> メモ </title> <script type="text/javascript" src="palearnlib.js"></script> <script type="text/javascript"> function initmemo(){ document.memoarea.memo.value = LMSGetValue ("cmi.suspend_data"); function savememo(){ LMSSetValue ("cmi.suspend_data", document.memoarea.memo.value); LMSCommit (""); </script> </head> <body onload="initmemo();"> <form name="memoarea"> <textarea name="memo"></textarea> <button onclick="savememo();"> 保存 </button> </form> </body> </html> ex. テキストボックスでのメモ 受講再開時に前回保存していたメモを表示する - 25
4 Tips&Tricks この章では PaLearn API と組み合わせて良く利用する HTML JavaScript スタイルシート Flash(ActionScript) のテクニックを紹介いたします 表示内容の切り替え方法 <!-- -- > の利用 <script language="javascript"> if( LMSGetValue('pls.test.status',1) == 'passed'){ else{ strcommentstart = ""; strcommentend = ""; strcommentstart = "<!--"; strcommentend = "-->"; document.write(strcommentstart); </script> 合格おめでとうございます <br> 修了書は <a target="_blank" href="certificate.html> こちら </a> から印刷をしてください <br> <script language="javascript"> <!-- document.write(strcommentend); //--> </script> 上記のソースでは テストに合格していない場合には コメントタグを挿入することで 合格のメッセージ 修了書のリンクを表示しないように制御しています 最もシンプルで手軽に書ける画面の制御方法です - 26
style.display の利用 上図の画面では アンケートの記入有無によって 記入するリンク ボタンと 回答済 アイコンに切り替わる仕組みが入っています この仕組みは 次のようにして実現をしております <img src="img/t_enq.gif" name="enqon" style="display:none"> <img src="img/t_enq_done.gif" name="enqdone" style="display:none"> HTML ソースでは 記入するリンク ボタン (t_enq.gif) と 回答済 アイコン (t_enq_done.gif) の 2 つを並べています スタイル指定に display:none を指定することで 2 つとも最初は非表示にしています if(lmsgetvalue ("pls.enquete.status",1)=='complete'){ else{ // 回答済みアイコンを表示 document.enqdone.style.display = 'inline'; // 記入するリンクボタンを表示 document.enqdone.style.display = 'inline'; JavaScript ソースでは LMSGetValue ("pls.enquete.status",1) にてアンケートの記入有無を取得しています 記入有無によって 表示するほうに inline の指定をしています - 27
5 注意事項 データモデル名の表記 データモデル名は 全て小文字で記述します 大文字は対応しません フレームページ コンテンツは PaLearn が用意したフレームページの中で表示しています PaLearn が用意したフレームページの中に PaLearn の API アダプタがあります コンテンツからフレームページを指定する際には _top の指定を避けて作成して下さい _parent 指定でフレームページを指定するようにしてください - 28