From 57d9e586e81a539e57663b0e5c89095fca80a620 Mon Sep 17 00:00:00 2001 From: Petr Skoda Date: Sat, 6 Feb 2010 19:44:58 +0000 Subject: [PATCH] MDL-21400 imscp module converted to new JS coding style --- mod/imscp/dummyapi.js | 34 +++++ mod/imscp/functions.js | 279 ----------------------------------------- mod/imscp/lib.php | 2 +- mod/imscp/locallib.php | 2 +- mod/imscp/module.js | 266 +++++++++++++++++++++++++++++++++++++++ mod/imscp/view.php | 10 +- 6 files changed, 303 insertions(+), 290 deletions(-) create mode 100644 mod/imscp/dummyapi.js delete mode 100644 mod/imscp/functions.js create mode 100644 mod/imscp/module.js diff --git a/mod/imscp/dummyapi.js b/mod/imscp/dummyapi.js new file mode 100644 index 00000000000..b056f489578 --- /dev/null +++ b/mod/imscp/dummyapi.js @@ -0,0 +1,34 @@ +// This file is part of Moodle - http://moodle.org/ +// +// Moodle is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// Moodle is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with Moodle. If not, see . + +/** + * IMS Content Package module including dummy SCORM API. + * + * @package mod-imscp + * @copyright 2009 Petr Skoda (http://skodak.org) + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +/** Dummy SCORM API adapter */ +var API = new function () { + this.LMSCommit = function (parameter) {return "true";}; + this.LMSFinish = function (parameter) {return "true";}; + this.LMSGetDiagnostic = function (errorCode) {return "n/a";}; + this.LMSGetErrorString = function (errorCode) {return "n/a";}; + this.LMSGetLastError = function () {return "0";}; + this.LMSGetValue = function (element) {return "";}; + this.LMSInitialize = function (parameter) {return "true";}; + this.LMSSetValue = function (element, value) {return "true";}; +}; \ No newline at end of file diff --git a/mod/imscp/functions.js b/mod/imscp/functions.js deleted file mode 100644 index 2439a5ec67a..00000000000 --- a/mod/imscp/functions.js +++ /dev/null @@ -1,279 +0,0 @@ -// This file is part of Moodle - http://moodle.org/ -// -// Moodle is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// Moodle is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with Moodle. If not, see . - -/** - * Javascript helper function for IMS Content Package module including - * dummy SCORM API. - * - * @package mod-imscp - * @copyright 2009 Petr Skoda (http://skodak.org) - * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later - */ - -/** Dummy SCORM API adapter */ -var API = new function () { - this.LMSCommit = function (parameter) {return "true";}; - this.LMSFinish = function (parameter) {return "true";}; - this.LMSGetDiagnostic = function (errorCode) {return "n/a";}; - this.LMSGetErrorString = function (errorCode) {return "n/a";}; - this.LMSGetLastError = function () {return "0";}; - this.LMSGetValue = function (element) {return "";}; - this.LMSInitialize = function (parameter) {return "true";}; - this.LMSSetValue = function (element, value) {return "true";}; -}; - -var imscp_layout_widget; -var imscp_current_node; -var imscp_buttons = []; -var imscp_bloody_labelclick = false; -var imscp_panel; - -function imscp_init() { - YAHOO.util.Event.onDOMReady(function () { - imscp_setup(); - }); -} - -function imscp_setup() { - // layout - YAHOO.widget.LayoutUnit.prototype.STR_COLLAPSE = mstr.moodle.hide; - YAHOO.widget.LayoutUnit.prototype.STR_EXPAND = mstr.moodle.show; - - imscp_layout_widget = new YAHOO.widget.Layout('imscp_layout', { - minWidth: 600, - minHeight: 400, - units: [ - { position: 'left', body: 'imscp_toc', header: mstr.imscp.toc, width: 250, resize: true, gutter: '2px 5px 5px 2px', collapse: true, minWidth:150}, - { position: 'center', body: '
', gutter: '2px 5px 5px 2px', scroll: true} - ] - }); - imscp_layout_widget.render(); - var left = imscp_layout_widget.getUnitByPosition('left'); - left.on('collapse', function() { - imscp_resize_frame(); - }); - left.on('expand', function() { - imscp_resize_frame(); - }); - - // ugly resizing hack that works around problems with resizing of iframes and objects - left._resize.on('startResize', function() { - var obj = YAHOO.util.Dom.get('imscp_object'); - obj.style.display = 'none'; - }); - left._resize.on('endResize', function() { - var obj = YAHOO.util.Dom.get('imscp_object'); - obj.style.display = 'block'; - imscp_resize_frame(); - }); - - // TOC tree - var tree = new YAHOO.widget.TreeView('imscp_tree'); - tree.singleNodeHighlight = true; - tree.subscribe('labelClick', function(node) { - imscp_activate_item(node); - if (node.children.length) { - imscp_bloody_labelclick = true; - } - }); - tree.subscribe('collapse', function(node) { - if (imscp_bloody_labelclick) { - imscp_bloody_labelclick = false; - return false; - } - }); - tree.subscribe('expand', function(node) { - if (imscp_bloody_labelclick) { - imscp_bloody_labelclick = false; - return false; - } - }); - tree.expandAll(); - tree.render(); - - // navigation - imscp_panel = new YAHOO.widget.Panel('imscp_navpanel', { visible:true, draggable:true, close:false, - context: ['page', 'bl', 'bl', ["windowScroll", "textResize", "windowResize"]], constraintoviewport:true} ); - imscp_panel.setHeader(mstr.imscp.navigation); - //TODO: make some better&accessible buttons - imscp_panel.setBody(''); - imscp_panel.render(); - imscp_buttons[0] = new YAHOO.widget.Button('nav_skipprev'); - imscp_buttons[1] = new YAHOO.widget.Button('nav_prev'); - imscp_buttons[2] = new YAHOO.widget.Button('nav_up'); - imscp_buttons[3] = new YAHOO.widget.Button('nav_next'); - imscp_buttons[4] = new YAHOO.widget.Button('nav_skipnext'); - imscp_buttons[0].on('click', function(ev) { - imscp_activate_item(imscp_skipprev(imscp_current_node)); - }); - imscp_buttons[1].on('click', function(ev) { - imscp_activate_item(imscp_prev(imscp_current_node)); - }); - imscp_buttons[2].on('click', function(ev) { - imscp_activate_item(imscp_up(imscp_current_node)); - }); - imscp_buttons[3].on('click', function(ev) { - imscp_activate_item(imscp_next(imscp_current_node)); - }); - imscp_buttons[4].on('click', function(ev) { - imscp_activate_item(imscp_skipnext(imscp_current_node)); - }); - imscp_panel.render(); - - // finally activate the first item - imscp_activate_item(tree.getRoot().children[0]); - - // resizing - imscp_resize_layout(false); - - // fix layout if window resized - window.onresize = function() { - imscp_resize_layout(true); - }; -} - - -function imscp_activate_item(node) { - if (!node) { - return; - } - imscp_current_node = node; - imscp_current_node.highlight(); - - var content = new YAHOO.util.Element('imscp_content'); - try { - // first try IE way - it can not set name attribute later - // and also it has some restrictions on DOM access from object tag - var obj = document.createElement('