Index: lams_bb_integration/WEB-INF/bb-manifest.xml =================================================================== diff -u -ra225f60e82f4197c7a2bf6dbb7200709d1e852d7 -rd77a5e0e31a43d80a8f8418e6525de0500624fed --- lams_bb_integration/WEB-INF/bb-manifest.xml (.../bb-manifest.xml) (revision a225f60e82f4197c7a2bf6dbb7200709d1e852d7) +++ lams_bb_integration/WEB-INF/bb-manifest.xml (.../bb-manifest.xml) (revision d77a5e0e31a43d80a8f8418e6525de0500624fed) @@ -31,9 +31,7 @@ - + @@ -42,32 +40,7 @@ - - - - application-def description goes here - - - - - - - - - - - - - - - - - - - - - - + Index: lams_bb_integration/WEB-INF/config/log4j.properties =================================================================== diff -u -ra225f60e82f4197c7a2bf6dbb7200709d1e852d7 -rd77a5e0e31a43d80a8f8418e6525de0500624fed --- lams_bb_integration/WEB-INF/config/log4j.properties (.../log4j.properties) (revision a225f60e82f4197c7a2bf6dbb7200709d1e852d7) +++ lams_bb_integration/WEB-INF/config/log4j.properties (.../log4j.properties) (revision d77a5e0e31a43d80a8f8418e6525de0500624fed) @@ -17,4 +17,4 @@ log4j.appender.LOGFILE.Append=true log4j.appender.LOGFILE.Threshold=INFO log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout -log4j.appender.LOGFILE.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n \ No newline at end of file +log4j.appender.LOGFILE.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n Index: lams_bb_integration/WEB-INF/lib/axis-ant.jar =================================================================== diff -u -ra225f60e82f4197c7a2bf6dbb7200709d1e852d7 -rd77a5e0e31a43d80a8f8418e6525de0500624fed Binary files differ Index: lams_bb_integration/WEB-INF/lib/axis.jar =================================================================== diff -u -ra225f60e82f4197c7a2bf6dbb7200709d1e852d7 -rd77a5e0e31a43d80a8f8418e6525de0500624fed Binary files differ Index: lams_bb_integration/WEB-INF/lib/commons-codec-1.3.jar =================================================================== diff -u -ra225f60e82f4197c7a2bf6dbb7200709d1e852d7 -rd77a5e0e31a43d80a8f8418e6525de0500624fed Binary files differ Index: lams_bb_integration/WEB-INF/lib/commons-discovery-0.2.jar =================================================================== diff -u -ra225f60e82f4197c7a2bf6dbb7200709d1e852d7 -rd77a5e0e31a43d80a8f8418e6525de0500624fed Binary files differ Index: lams_bb_integration/WEB-INF/lib/commons-logging-1.0.4.jar =================================================================== diff -u -ra225f60e82f4197c7a2bf6dbb7200709d1e852d7 -rd77a5e0e31a43d80a8f8418e6525de0500624fed Binary files differ Index: lams_bb_integration/WEB-INF/lib/jaxrpc.jar =================================================================== diff -u -ra225f60e82f4197c7a2bf6dbb7200709d1e852d7 -rd77a5e0e31a43d80a8f8418e6525de0500624fed Binary files differ Index: lams_bb_integration/WEB-INF/lib/log4j-1.2.8.jar =================================================================== diff -u -ra225f60e82f4197c7a2bf6dbb7200709d1e852d7 -rd77a5e0e31a43d80a8f8418e6525de0500624fed Binary files differ Index: lams_bb_integration/WEB-INF/lib/saaj.jar =================================================================== diff -u -ra225f60e82f4197c7a2bf6dbb7200709d1e852d7 -rd77a5e0e31a43d80a8f8418e6525de0500624fed Binary files differ Index: lams_bb_integration/WEB-INF/lib/wsdl4j-1.5.1.jar =================================================================== diff -u -ra225f60e82f4197c7a2bf6dbb7200709d1e852d7 -rd77a5e0e31a43d80a8f8418e6525de0500624fed Binary files differ Index: lams_bb_integration/WEB-INF/web.xml =================================================================== diff -u -ra225f60e82f4197c7a2bf6dbb7200709d1e852d7 -rd77a5e0e31a43d80a8f8418e6525de0500624fed --- lams_bb_integration/WEB-INF/web.xml (.../web.xml) (revision a225f60e82f4197c7a2bf6dbb7200709d1e852d7) +++ lams_bb_integration/WEB-INF/web.xml (.../web.xml) (revision d77a5e0e31a43d80a8f8418e6525de0500624fed) @@ -14,14 +14,14 @@ org.lamsfoundation.ld.integration.blackboard.LamsActionRequestServlet - + Index: lams_bb_integration/src/org/lamsfoundation/ld/integration/blackboard/BBDBManager.java =================================================================== diff -u --- lams_bb_integration/src/org/lamsfoundation/ld/integration/blackboard/BBDBManager.java (revision 0) +++ lams_bb_integration/src/org/lamsfoundation/ld/integration/blackboard/BBDBManager.java (revision d77a5e0e31a43d80a8f8418e6525de0500624fed) @@ -0,0 +1,70 @@ +/**************************************************************** + * Copyright (C) 2007 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2.0 + * as published by the Free Software Foundation. + * + * This program 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 this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ +package org.lamsfoundation.ld.integration.blackboard; + + +import blackboard.persist.DatabaseContainer; +import java.sql.Connection; +import java.sql.SQLException; +import java.sql.ResultSet; +import java.sql.PreparedStatement; +import blackboard.platform.BbServiceManager; + + + +public class BBDBManager +{ + // constructor + public BBDBManager() {} + + // get the Bb Database Connection + public Connection getBbDatabaseConnection() throws Exception + { + Connection conn = ((DatabaseContainer)BbServiceManager + .getPersistenceService().getDbPersistenceManager().getContainer()) + .getBbDatabase().getConnectionManager().getConnection(); + return conn; + } + + public boolean createTable(Connection connection) + { + return false; + } + + public boolean insertLearningDesign(Connection connection, String user) + { + return false; + } + + + // get a list of learning designs for monitor.jsp + public String[] learningDesigns(Connection connection, String user) + { + String[] learningDesigns; + + + return null; + } + + +} \ No newline at end of file Index: lams_bb_integration/src/org/lamsfoundation/ld/integration/blackboard/LamsActionRequestServlet.java =================================================================== diff -u -ra225f60e82f4197c7a2bf6dbb7200709d1e852d7 -rd77a5e0e31a43d80a8f8418e6525de0500624fed --- lams_bb_integration/src/org/lamsfoundation/ld/integration/blackboard/LamsActionRequestServlet.java (.../LamsActionRequestServlet.java) (revision a225f60e82f4197c7a2bf6dbb7200709d1e852d7) +++ lams_bb_integration/src/org/lamsfoundation/ld/integration/blackboard/LamsActionRequestServlet.java (.../LamsActionRequestServlet.java) (revision d77a5e0e31a43d80a8f8418e6525de0500624fed) @@ -92,36 +92,15 @@ BbSessionManagerService sessionService = BbServiceManager.getSessionManagerService(); BbSession bbSession = sessionService.getSession( request ); String username = bbSession.getUserName(); - - //attach the learningSessionId, learningDesignId or courseId to the redirect url - //String redirect = LamsSecurityUtil.generateRequestURL(username, p_method); + String redirect = LamsSecurityUtil.generateRequestURL(ctx, p_method); - - //redirect = LamsSecurityUtil.generateRequestURL(username, p_method); - /*if(p_learningSessionId!=null) - { - redirect += '&' + Constants.PARAM_LEARNING_SESSION_ID + '=' + p_learningSessionId; - //redirect1 += '&' + Constants.PARAM_LEARNING_SESSION_ID + '=' + p_learningSessionId; - } - if(p_learningDesignId!=null) - { - redirect += '&' + Constants.PARAM_LEARNING_DESIGN_ID + '=' + p_learningDesignId; - //redirect1 += '&' + Constants.PARAM_LEARNING_SESSION_ID + '=' + p_learningSessionId; - } + if(p_courseId!=null) { redirect += '&' + Constants.PARAM_COURSE_ID + '=' + p_courseId; //redirect1 += '&' + Constants.PARAM_LEARNING_SESSION_ID + '=' + p_learningSessionId; } - */ - - if(p_courseId!=null) - { - redirect += '&' + Constants.PARAM_COURSE_ID + '=' + p_courseId; - //redirect1 += '&' + Constants.PARAM_LEARNING_SESSION_ID + '=' + p_learningSessionId; - } - //response.sendRedirect(redirect1); response.sendRedirect(response.encodeRedirectURL(redirect)); Index: lams_bb_integration/src/org/lamsfoundation/ld/integration/blackboard/LamsSecurityUtil.java =================================================================== diff -u -ra225f60e82f4197c7a2bf6dbb7200709d1e852d7 -rd77a5e0e31a43d80a8f8418e6525de0500624fed --- lams_bb_integration/src/org/lamsfoundation/ld/integration/blackboard/LamsSecurityUtil.java (.../LamsSecurityUtil.java) (revision a225f60e82f4197c7a2bf6dbb7200709d1e852d7) +++ lams_bb_integration/src/org/lamsfoundation/ld/integration/blackboard/LamsSecurityUtil.java (.../LamsSecurityUtil.java) (revision d77a5e0e31a43d80a8f8418e6525de0500624fed) @@ -36,26 +36,29 @@ import java.util.Date; import java.util.Locale; import javax.xml.rpc.ServiceException; -import blackboard.platform.context.ContextManager; import blackboard.platform.context.Context; import org.apache.commons.codec.binary.Hex; -import org.lamsfoundation.lams.integrations.sakai.logic.impl.LamstwoUtils; -import org.lamsfoundation.lams.webservice.LessonManager; -import org.lamsfoundation.lams.webservice.LessonManagerService; -import org.lamsfoundation.lams.webservice.LessonManagerServiceLocator; +import javax.servlet.ServletException; + +//import org.lamsfoundation.lams.util.CentralConstants; import org.lamsfoundation.ld.integration.Constants; -import org.lamsfoundation.ld.webservice.*; +import org.lamsfoundation.ld.webservice.LessonManager; +import org.lamsfoundation.ld.webservice.LessonManagerService; +import org.lamsfoundation.ld.webservice.LessonManagerServiceLocator; + + import org.w3c.dom.Document; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.xml.sax.SAXException; import org.apache.log4j.Logger; -import java.io.*; + import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; + /** * @author Luke Foxton */ @@ -136,7 +139,6 @@ + "datetime=" + timestamp + "&username=" + URLEncoder.encode(username, "utf8") + "&serverId=" + URLEncoder.encode(serverId, "utf8") - + "&serverKey=" + URLEncoder.encode(serverKey, "utf8") + "&hashValue=" + hash + "&courseId=" + URLEncoder.encode(courseId, "UTF8") + "&country=" + country @@ -188,16 +190,17 @@ - /* - * TODO: - */ + + + + /* Scheduling is handled by blackboard public static Long scheduleLesson(Context ctx, long ldId, String title, String desc, String startDate) { String serverID = getServerID(); String serverAddress = getServerAddress(); String serverKey = getServerKey(); - + String courseId = ctx.getCourse().getCourseId(); String username = ctx.getUser().getUserName(); String siteId = getReqSrc(); @@ -207,9 +210,9 @@ } try { - + String datetime = new Date().toString(); - String hashValue = LamstwoUtils.generateAuthenticationHash(serverID, serverKey, username, datetime); + String hashValue = generateAuthenticationHash(serverID, serverKey, username, datetime); LessonManagerService service = new LessonManagerServiceLocator(); LessonManager lessonManager = service.getLessonManagerService(new URL(serverAddress + "/services/LessonManagerService")); @@ -230,81 +233,198 @@ } return null; } + */ - public static Long startLesson(Context ctx, long ldId, String title, String desc) { - - String serverID = getServerID(); - String serverAddress = getServerAddress(); + + /* + String serverId = request.getParameter(CentralConstants.PARAM_SERVER_ID); + String datetime = request.getParameter(CentralConstants.PARAM_DATE_TIME); + String hashValue = request.getParameter(CentralConstants.PARAM_HASH_VALUE); + String username = request.getParameter(CentralConstants.PARAM_USERNAME); + String courseId = request.getParameter(CentralConstants.PARAM_COURSE_ID); + String ldIdStr = request.getParameter(CentralConstants.PARAM_LEARNING_DESIGN_ID); + String lsIdStr = request.getParameter(CentralConstants.PARAM_LESSON_ID); + String country = request.getParameter(CentralConstants.PARAM_COUNTRY); + String title = request.getParameter(CentralConstants.PARAM_TITLE); + String desc = request.getParameter(CentralConstants.PARAM_DESC); + String startDate = request.getParameter(CentralConstants.PARAM_STARTDATE); + String lang = request.getParameter(CentralConstants.PARAM_LANG); + String method = request.getParameter(CentralConstants.PARAM_METHOD); + + serverId, + datetime, + hashValue, + username, + ldId, + courseId, + title, + desc, + country, + lang + + /lams//services/xml/LessonManager?serverId=lamsbb + &datetime=1186617857718 + &username=administrator + &hashValue=696e870fde732c1e14a6f79a2872f6eaff9be349 + &courseId=1 + &ldId=5 + &country=US + &lang=en + &method=start + &title=test + &desc=+%0D%0A + */ + + public static Long startLesson(Context ctx, long ldId, String title, String desc) + { + String serverId = getServerID(); + String serverAddr = getServerAddress(); String serverKey = getServerKey(); - + String courseId = ctx.getCourse().getCourseId(); String username = ctx.getUser().getUserName(); - String siteId = getReqSrc(); - if (serverID == null || serverAddress == null || serverKey == null ) { + if (serverId == null || serverAddr == null || serverKey == null ) { logger.error("Unable to retrieve learning designs from LAMS, one or more lams configuration properties is null"); return null; } try { - String datetime = new Date().toString(); - String hashValue = LamstwoUtils.generateAuthenticationHash(serverID, serverKey, username, datetime); + String timestamp = new Long(System.currentTimeMillis()).toString(); + String hash = generateAuthenticationHash(timestamp, username, serverId); - LessonManagerService service = new LessonManagerServiceLocator(); - LessonManager lessonManager = service.getLessonManagerService(new URL(serverAddress + "/services/LessonManagerService")); - Long lessonId = lessonManager.startLesson(serverID, datetime, hashValue, username, ldId, siteId, title, desc, "en", "US"); - - return lessonId; + // (serverId, datetime, hashValue, username, ldId, courseId, title, desc, country, lang) + + String serviceURL = serverAddr + "/services/xml/LessonManager?" + + "&serverId=" + URLEncoder.encode(serverId, "utf8") + + "&datetime=" + timestamp + + "&username=" + URLEncoder.encode(username, "utf8") + + "&hashValue=" + hash + + "&courseId=" + URLEncoder.encode(courseId, "utf8") + + "&ldId=" + new Long(ldId).toString() + + "&country=" + "US" + + "&lang=" + "en" + + "&method=" + "start" + + "&title=" + URLEncoder.encode(title, "utf8").trim() + + "&desc=" + URLEncoder.encode(desc, "utf8").trim(); + + System.out.println("START LESSON: " + serviceURL); + + URL url = new URL(serviceURL); + URLConnection conn = url.openConnection(); + if (!(conn instanceof HttpURLConnection)) { + logger.error("Unable to open connection to: " + serviceURL); + } + + HttpURLConnection httpConn = (HttpURLConnection)conn; + + if (httpConn.getResponseCode() != HttpURLConnection.HTTP_OK) { + logger.error("HTTP Response Code: " + httpConn.getResponseCode() + + ", HTTP Response Message: " + httpConn.getResponseMessage()); + } + + InputStream is = url.openConnection().getInputStream(); + + // parse xml response + DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); + DocumentBuilder db = dbf.newDocumentBuilder(); + Document document = db.parse(is); + + // get the lesson id from the response + return Long.parseLong(document.getElementsByTagName("Lesson").item(0).getAttributes().getNamedItem("lessonId").getTextContent()); + + } catch (MalformedURLException e) { logger.error("Unable to start LAMS lesson, bad URL: '" - + serverAddress - + "', please check sakai.properties"); - } catch (ServiceException e) { - logger.error("Unable to start LAMS lesson, RPC Service Exception"); + + serverAddr + + "', please check lams.properties"); e.printStackTrace(); } catch (RemoteException e) { logger.error("Unable to start LAMS lesson, RMI Remote Exception"); e.printStackTrace(); + } catch (UnsupportedEncodingException e) + { + logger.error("Unable to start LAMS lesson, Unsupported Encoding Exception"); + e.printStackTrace(); } + catch (Exception e) + { + logger.error("Unable to start LAMS lesson"); + e.printStackTrace(); + } + return null; } + /* * TODO: */ public static boolean deleteLesson(Context ctx, long lsId) { - String serverID = getServerID(); - String serverAddress = getServerAddress(); + String serverId = getServerID(); + String serverAddr = getServerAddress(); String serverKey = getServerKey(); - String username = ctx.getUser().getUserName(); - - - if (serverID == null || serverAddress == null || serverKey == null ) { - logger.error("Unable to delete LAMS lesson: lsid = " + lsId + ", one or more lams configuration properties is null"); + if (serverId == null || serverAddr == null || serverKey == null ) { + logger.error("Unable to retrieve learning designs from LAMS, one or more lams configuration properties is null"); return false; } try { - String datetime = new Date().toString(); - String hashValue = LamstwoUtils.generateAuthenticationHash(serverID, serverKey, username, datetime); - LessonManagerService service = new LessonManagerServiceLocator(); - LessonManager lessonManager = service.getLessonManagerService(new URL(serverAddress + "/services/LessonManagerService")); - lessonManager.deleteLesson(serverID, datetime, hashValue, username, lsId); - - return true; + String timestamp = new Long(System.currentTimeMillis()).toString(); + String hash = generateAuthenticationHash(serverId, serverKey, username, timestamp); + + // Boolean deleted = deleteLesson(serverId, datetime, hashValue, username, lsId); + + + String serviceURL = serverAddr + "/services/xml/LessonManager?" + + "datetime=" + timestamp + + "&username=" + URLEncoder.encode(username, "utf8") + + "&serverId=" + URLEncoder.encode(serverId, "utf8") + + "&serverKey=" + URLEncoder.encode(serverKey, "utf8") + + "&hashValue=" + hash + + "&lsId=" + new Long(lsId).toString() + + "&method=" + "delete"; + + URL url = new URL(serviceURL); + URLConnection conn = url.openConnection(); + if (!(conn instanceof HttpURLConnection)) { + logger.error("Unable to open connection to: " + serviceURL); + } + + HttpURLConnection httpConn = (HttpURLConnection)conn; + + if (httpConn.getResponseCode() != HttpURLConnection.HTTP_OK) { + logger.error("HTTP Response Code: " + httpConn.getResponseCode() + + ", HTTP Response Message: " + httpConn.getResponseMessage()); + } + + InputStream is = url.openConnection().getInputStream(); + + // parse xml response + DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); + DocumentBuilder db = dbf.newDocumentBuilder(); + Document document = db.parse(is); + + return Boolean.parseBoolean(document.getElementById("lesson").getAttribute("deleted")); + } catch (MalformedURLException e) { - logger.error("Unable to delete LAMS lesson, lsid = " + lsId + ": ', bad URL: '" - + serverAddress - + "', please check sakai.properties"); - } catch (ServiceException e) { - logger.error("Unable to start LAMS lesson, RPC Service Exception"); - e.printStackTrace(); + logger.error("Unable to delete LAMS lesson, bad URL: '" + + serverAddr + + "', please check lams.properties"); } catch (RemoteException e) { - logger.error("Unable to start LAMS lesson, RMI Remote Exception"); + logger.error("Unable to delete LAMS lesson, RMI Remote Exception"); e.printStackTrace(); + } catch (UnsupportedEncodingException e) + { + logger.error("Unable to delet LAMS lesson, Unsupported Encoding Exception"); + e.printStackTrace(); + } catch (Exception e) + { + logger.error("Unable to delete LAMS lesson"); + e.printStackTrace(); } return false; } @@ -434,4 +554,5 @@ throw new RuntimeException(e); } } + } Fisheye: Tag d77a5e0e31a43d80a8f8418e6525de0500624fed refers to a dead (removed) revision in file `lams_bb_integration/src/org/lamsfoundation/ld/integration/blackboard/LamsServiceUtil.java'. Fisheye: No comparison available. Pass `N' to diff? Index: lams_bb_integration/src/org/lamsfoundation/ld/webservice/LessonManager.java =================================================================== diff -u -ra225f60e82f4197c7a2bf6dbb7200709d1e852d7 -rd77a5e0e31a43d80a8f8418e6525de0500624fed --- lams_bb_integration/src/org/lamsfoundation/ld/webservice/LessonManager.java (.../LessonManager.java) (revision a225f60e82f4197c7a2bf6dbb7200709d1e852d7) +++ lams_bb_integration/src/org/lamsfoundation/ld/webservice/LessonManager.java (.../LessonManager.java) (revision d77a5e0e31a43d80a8f8418e6525de0500624fed) @@ -16,7 +16,7 @@ * by the Apache Axis 1.4 Apr 22, 2006 (06:55:48 PDT) WSDL2Java emitter. */ -package org.lamsfoundation.lams.webservice; +package org.lamsfoundation.ld.webservice; public interface LessonManager extends java.rmi.Remote { public java.lang.Long startLesson(java.lang.String serverId, java.lang.String datetime, java.lang.String hashValue, java.lang.String username, long ldId, java.lang.String courseId, java.lang.String title, java.lang.String desc, java.lang.String countryIsoCode, java.lang.String langIsoCode) throws java.rmi.RemoteException; Index: lams_bb_integration/src/org/lamsfoundation/ld/webservice/LessonManagerService.java =================================================================== diff -u -ra225f60e82f4197c7a2bf6dbb7200709d1e852d7 -rd77a5e0e31a43d80a8f8418e6525de0500624fed --- lams_bb_integration/src/org/lamsfoundation/ld/webservice/LessonManagerService.java (.../LessonManagerService.java) (revision a225f60e82f4197c7a2bf6dbb7200709d1e852d7) +++ lams_bb_integration/src/org/lamsfoundation/ld/webservice/LessonManagerService.java (.../LessonManagerService.java) (revision d77a5e0e31a43d80a8f8418e6525de0500624fed) @@ -16,12 +16,12 @@ * by the Apache Axis 1.4 Apr 22, 2006 (06:55:48 PDT) WSDL2Java emitter. */ -package org.lamsfoundation.lams.webservice; +package org.lamsfoundation.ld.webservice; public interface LessonManagerService extends javax.xml.rpc.Service { public java.lang.String getLessonManagerServiceAddress(); - public org.lamsfoundation.lams.webservice.LessonManager getLessonManagerService() throws javax.xml.rpc.ServiceException; + public org.lamsfoundation.ld.webservice.LessonManager getLessonManagerService() throws javax.xml.rpc.ServiceException; - public org.lamsfoundation.lams.webservice.LessonManager getLessonManagerService(java.net.URL portAddress) throws javax.xml.rpc.ServiceException; + public org.lamsfoundation.ld.webservice.LessonManager getLessonManagerService(java.net.URL portAddress) throws javax.xml.rpc.ServiceException; } Index: lams_bb_integration/src/org/lamsfoundation/ld/webservice/LessonManagerServiceLocator.java =================================================================== diff -u -ra225f60e82f4197c7a2bf6dbb7200709d1e852d7 -rd77a5e0e31a43d80a8f8418e6525de0500624fed --- lams_bb_integration/src/org/lamsfoundation/ld/webservice/LessonManagerServiceLocator.java (.../LessonManagerServiceLocator.java) (revision a225f60e82f4197c7a2bf6dbb7200709d1e852d7) +++ lams_bb_integration/src/org/lamsfoundation/ld/webservice/LessonManagerServiceLocator.java (.../LessonManagerServiceLocator.java) (revision d77a5e0e31a43d80a8f8418e6525de0500624fed) @@ -16,9 +16,9 @@ * by the Apache Axis 1.4 Apr 22, 2006 (06:55:48 PDT) WSDL2Java emitter. */ -package org.lamsfoundation.lams.webservice; +package org.lamsfoundation.ld.webservice; -public class LessonManagerServiceLocator extends org.apache.axis.client.Service implements org.lamsfoundation.lams.webservice.LessonManagerService { +public class LessonManagerServiceLocator extends org.apache.axis.client.Service implements org.lamsfoundation.ld.webservice.LessonManagerService { public LessonManagerServiceLocator() { } @@ -50,7 +50,7 @@ LessonManagerServiceWSDDServiceName = name; } - public org.lamsfoundation.lams.webservice.LessonManager getLessonManagerService() throws javax.xml.rpc.ServiceException { + public org.lamsfoundation.ld.webservice.LessonManager getLessonManagerService() throws javax.xml.rpc.ServiceException { java.net.URL endpoint; try { endpoint = new java.net.URL(LessonManagerService_address); @@ -61,9 +61,9 @@ return getLessonManagerService(endpoint); } - public org.lamsfoundation.lams.webservice.LessonManager getLessonManagerService(java.net.URL portAddress) throws javax.xml.rpc.ServiceException { + public org.lamsfoundation.ld.webservice.LessonManager getLessonManagerService(java.net.URL portAddress) throws javax.xml.rpc.ServiceException { try { - org.lamsfoundation.lams.webservice.LessonManagerServiceSoapBindingStub _stub = new org.lamsfoundation.lams.webservice.LessonManagerServiceSoapBindingStub(portAddress, this); + org.lamsfoundation.ld.webservice.LessonManagerServiceSoapBindingStub _stub = new org.lamsfoundation.ld.webservice.LessonManagerServiceSoapBindingStub(portAddress, this); _stub.setPortName(getLessonManagerServiceWSDDServiceName()); return _stub; } @@ -83,8 +83,8 @@ */ public java.rmi.Remote getPort(Class serviceEndpointInterface) throws javax.xml.rpc.ServiceException { try { - if (org.lamsfoundation.lams.webservice.LessonManager.class.isAssignableFrom(serviceEndpointInterface)) { - org.lamsfoundation.lams.webservice.LessonManagerServiceSoapBindingStub _stub = new org.lamsfoundation.lams.webservice.LessonManagerServiceSoapBindingStub(new java.net.URL(LessonManagerService_address), this); + if (org.lamsfoundation.ld.webservice.LessonManager.class.isAssignableFrom(serviceEndpointInterface)) { + org.lamsfoundation.ld.webservice.LessonManagerServiceSoapBindingStub _stub = new org.lamsfoundation.ld.webservice.LessonManagerServiceSoapBindingStub(new java.net.URL(LessonManagerService_address), this); _stub.setPortName(getLessonManagerServiceWSDDServiceName()); return _stub; } Index: lams_bb_integration/src/org/lamsfoundation/ld/webservice/LessonManagerServiceSoapBindingStub.java =================================================================== diff -u -ra225f60e82f4197c7a2bf6dbb7200709d1e852d7 -rd77a5e0e31a43d80a8f8418e6525de0500624fed --- lams_bb_integration/src/org/lamsfoundation/ld/webservice/LessonManagerServiceSoapBindingStub.java (.../LessonManagerServiceSoapBindingStub.java) (revision a225f60e82f4197c7a2bf6dbb7200709d1e852d7) +++ lams_bb_integration/src/org/lamsfoundation/ld/webservice/LessonManagerServiceSoapBindingStub.java (.../LessonManagerServiceSoapBindingStub.java) (revision d77a5e0e31a43d80a8f8418e6525de0500624fed) @@ -16,9 +16,9 @@ * by the Apache Axis 1.4 Apr 22, 2006 (06:55:48 PDT) WSDL2Java emitter. */ -package org.lamsfoundation.lams.webservice; +package org.lamsfoundation.ld.webservice; -public class LessonManagerServiceSoapBindingStub extends org.apache.axis.client.Stub implements org.lamsfoundation.lams.webservice.LessonManager { +public class LessonManagerServiceSoapBindingStub extends org.apache.axis.client.Stub implements org.lamsfoundation.ld.webservice.LessonManager { private java.util.Vector cachedSerClasses = new java.util.Vector(); private java.util.Vector cachedSerQNames = new java.util.Vector(); private java.util.Vector cachedSerFactories = new java.util.Vector(); Index: lams_bb_integration/web/modules/create.jsp =================================================================== diff -u -ra225f60e82f4197c7a2bf6dbb7200709d1e852d7 -rd77a5e0e31a43d80a8f8418e6525de0500624fed --- lams_bb_integration/web/modules/create.jsp (.../create.jsp) (revision a225f60e82f4197c7a2bf6dbb7200709d1e852d7) +++ lams_bb_integration/web/modules/create.jsp (.../create.jsp) (revision d77a5e0e31a43d80a8f8418e6525de0500624fed) @@ -33,13 +33,16 @@
+ + "> "> - + +
+
-
+
Fisheye: Tag d77a5e0e31a43d80a8f8418e6525de0500624fed refers to a dead (removed) revision in file `lams_bb_integration/web/modules/create_proc.jsp'. Fisheye: No comparison available. Pass `N' to diff? Index: lams_bb_integration/web/modules/learnermonitor.jsp =================================================================== diff -u --- lams_bb_integration/web/modules/learnermonitor.jsp (revision 0) +++ lams_bb_integration/web/modules/learnermonitor.jsp (revision d77a5e0e31a43d80a8f8418e6525de0500624fed) @@ -0,0 +1,207 @@ +<%@ page import="java.util.*, + java.util.Date, + java.text.SimpleDateFormat, + blackboard.data.*, + blackboard.persist.*, + blackboard.data.course.*, + blackboard.data.user.*, + blackboard.persist.course.*, + blackboard.data.content.*, + blackboard.persist.content.*, + blackboard.persist.navigation.CourseTocDbLoader, + blackboard.db.*, + blackboard.base.*, + org.lamsfoundation.ld.integration.blackboard.LamsSecurityUtil, + blackboard.platform.*, + blackboard.platform.plugin.*" + errorPage="/error.jsp" +%> +<%@ taglib uri="/bbUI" prefix="bbUI"%> +<%@ taglib uri="/bbData" prefix="bbData"%> + + +<% + String lsid = request.getParameter("lsid"); + String learnerUrl = LamsSecurityUtil.generateRequestURL(ctx, "learner") + "&lsid=" + lsid; + String monitorUrl = LamsSecurityUtil.generateRequestURL(ctx, "monitor") + "&lsid=" + lsid; + + String course_idstr = request.getParameter("course_id"); + + + BbPersistenceManager bbPm = BbServiceManager.getPersistenceService().getDbPersistenceManager(); + Id course_id = bbPm.generateId(Course.COURSE_DATA_TYPE, course_idstr); + User sessionUser = ctx.getUser(); + Id sessionUserId = sessionUser.getId(); + + + //get the membership data to determine the User's Role + CourseMembership courseMembership = null; + CourseMembership.Role courseRole = null; + CourseMembershipDbLoader sessionCourseMembershipLoader = + (CourseMembershipDbLoader) bbPm.getLoader(CourseMembershipDbLoader.TYPE); + try + { + courseMembership = sessionCourseMembershipLoader.loadByCourseAndUserId(course_id, sessionUserId); + courseRole = courseMembership.getRole(); + } + catch (KeyNotFoundException e) + { + // There is no membership record. + e.printStackTrace(); + + } + catch (PersistenceException pe) + { + // There is no membership record. + pe.printStackTrace(); + } + + boolean instructor=false; + boolean student=false; + + if (courseRole.equals(CourseMembership.Role.INSTRUCTOR)||courseRole.equals(CourseMembership.Role.TEACHING_ASSISTANT)) + { + // instructor or assistant + // can choose to redirect to monitor or learner + instructor=true; + } + else if (courseRole.equals(CourseMembership.Role.STUDENT)) + { + // student + // can only access learner pages + student=true; + } + else + { + response.sendRedirect("notAllowed.jsp"); + } + +%> + + + + + + + +
+ + + + + + + + + + + +<%! +static public String getRoleString(String type, Object role) { + // return a User Friendly String for the type Role passed in + String uRole = ""; + if ( type.equals( "COURSE" ) ) { + // get role based on coursemembershipRole (CourseMembership.Role) + if( (CourseMembership.Role)role == CourseMembership.Role.COURSE_BUILDER ) { + uRole="Course Builder"; + } else if ( (CourseMembership.Role)role == CourseMembership.Role.DEFAULT ){ + uRole="Student(Default)"; + } else if ( (CourseMembership.Role)role == CourseMembership.Role.GRADER ) { + uRole="Grader"; + } else if ( (CourseMembership.Role)role == CourseMembership.Role.GUEST ) { + uRole="Guest"; + } else if ( (CourseMembership.Role)role + == CourseMembership.Role.INSTRUCTOR ) { + uRole="Instructor"; + } else if ( (CourseMembership.Role)role == CourseMembership.Role.NONE) { + uRole="No explicit role (NONE)"; + } else if ( (CourseMembership.Role)role == CourseMembership.Role.STUDENT) { + uRole="Student"; + } else if ( (CourseMembership.Role)role + == CourseMembership.Role.TEACHING_ASSISTANT ) { + uRole="Teaching Assistant"; + } else { + uRole = "Cannot Identify Course Membership Role"; + } + } else if ( type.equals( "SYSTEM" ) ) { + // get role based on SystemRole + if( (User.SystemRole)role == User.SystemRole.ACCOUNT_ADMIN ) { + uRole="Account Administrator"; + } else if ( (User.SystemRole)role == User.SystemRole.COURSE_CREATOR ) { + uRole = "Course creator"; + } else if ( (User.SystemRole)role == User.SystemRole.COURSE_SUPPORT ) { + uRole = "Course support"; + } else if ( (User.SystemRole)role == User.SystemRole.DEFAULT ) { + uRole = "User"; + } else if ( (User.SystemRole)role == User.SystemRole.GUEST ) { + uRole = "Guest"; + } else if ( (User.SystemRole)role == User.SystemRole.NONE ) { + uRole = "No explicit role (NONE)"; + } else if ( (User.SystemRole)role == User.SystemRole.OBSERVER ) { + uRole = "Observer"; + } else if ( (User.SystemRole)role == User.SystemRole.SYSTEM_ADMIN ) { + uRole = "System Administrator"; + } else if ( (User.SystemRole)role == User.SystemRole.SYSTEM_SUPPORT ) { + uRole = "System support"; + } else if ( (User.SystemRole)role == User.SystemRole.USER ) { + uRole = "User"; + } else { + uRole = "Cannot Identify User System Role"; + } + } else { + uRole = "TYPE not qualified in method."; + } + + return uRole; +} + +%> Index: lams_bb_integration/web/modules/modify.jsp =================================================================== diff -u -ra225f60e82f4197c7a2bf6dbb7200709d1e852d7 -rd77a5e0e31a43d80a8f8418e6525de0500624fed --- lams_bb_integration/web/modules/modify.jsp (.../modify.jsp) (revision a225f60e82f4197c7a2bf6dbb7200709d1e852d7) +++ lams_bb_integration/web/modules/modify.jsp (.../modify.jsp) (revision d77a5e0e31a43d80a8f8418e6525de0500624fed) @@ -44,6 +44,7 @@ FormattedText desc = courseDoc.getBody(); String description = desc.getText().replaceFirst(NOT_AVAILABLE, ""); //remove the NOT_AVAILABLE substring + %> @@ -54,38 +55,64 @@ Modify LAMS - "> - "> - - - - + "> + "> + + + + + - + - - - + + + - >Yes - >No + >Yes + >No >Yes >No - - - + + +
+ + + +
- - + +
Index: lams_bb_integration/web/modules/modify_proc.jsp =================================================================== diff -u -ra225f60e82f4197c7a2bf6dbb7200709d1e852d7 -rd77a5e0e31a43d80a8f8418e6525de0500624fed --- lams_bb_integration/web/modules/modify_proc.jsp (.../modify_proc.jsp) (revision a225f60e82f4197c7a2bf6dbb7200709d1e852d7) +++ lams_bb_integration/web/modules/modify_proc.jsp (.../modify_proc.jsp) (revision d77a5e0e31a43d80a8f8418e6525de0500624fed) @@ -20,7 +20,8 @@ <% //check permission - if (!PlugInUtil.authorizeForCourseControlPanel(request, response)) + + if (!PlugInUtil.authorizeForCourseControlPanel(request, response)) return; BbPersistenceManager bbPm = BbServiceManager.getPersistenceService().getDbPersistenceManager(); @@ -36,23 +37,7 @@ myContent.setIsAvailable(request.getParameter("isAvailable").equals("true")?true:false); myContent.setIsTracked(request.getParameter("isTracked").equals("true")?true:false); - - //get descriptions entered - String descText = request.getParameter("descriptiontext"); - FormattedText.Type descType = FormattedText.Type.DEFAULT; //type of description (S|H|P) - switch(request.getParameter("descriptiontype").charAt(0)){ - case 'H': - descType = FormattedText.Type.HTML; break; - case 'S': - descType = FormattedText.Type.SMART_TEXT; break; - case 'P': - descType = FormattedText.Type.PLAIN_TEXT; break; - } - if(!myContent.getIsAvailable()){ - descText = "Item is not available.
" + descText; - } - FormattedText description = new FormattedText(descText,descType); - + FormattedText description = new FormattedText(request.getParameter("description"),FormattedText.Type.HTML); myContent.setBody(description); //Parse start/end Date from the @@ -62,6 +47,8 @@ cstart.setTime(formatter.parse(request.getParameter("startDate"))); cend.setTime(formatter.parse(request.getParameter("endDate"))); + + // Set Availability Dates myContent.setStartDate(cstart); if (request.getParameter("restrict_end") != null){ @@ -74,6 +61,9 @@ persister.persist( myContent ); String strReturnUrl = PlugInUtil.getEditableContentReturnURL(myContent.getParentId()); + + + %> @@ -86,7 +76,8 @@ + recallUrl="<%=strReturnUrl%>" + > Content successfully modified.
Index: lams_bb_integration/web/modules/notAllowed.jsp =================================================================== diff -u --- lams_bb_integration/web/modules/notAllowed.jsp (revision 0) +++ lams_bb_integration/web/modules/notAllowed.jsp (revision d77a5e0e31a43d80a8f8418e6525de0500624fed) @@ -0,0 +1,10 @@ +<%@ taglib uri="/bbUI" prefix="bbUI"%> +<%@ page import="java.io.PrintWriter"%> +<%@ page isErrorPage = "true" %> + + + + +

Your current user privileges do not allow you to access this content.

+ +

\ No newline at end of file Index: lams_bb_integration/web/modules/remove.jsp =================================================================== diff -u --- lams_bb_integration/web/modules/remove.jsp (revision 0) +++ lams_bb_integration/web/modules/remove.jsp (revision d77a5e0e31a43d80a8f8418e6525de0500624fed) @@ -0,0 +1,197 @@ + +<%@ page info="removeItem_proc.jsp" %> +<%@ page isThreadSafe="true" errorPage="../error.jsp" %> +<%@ page import=" + java.io.*, + java.util.*, + blackboard.platform.BbServiceManager, + blackboard.platform.intl.BundleManager, + blackboard.platform.intl.BbResourceBundle, + blackboard.platform.filesystem.*, + blackboard.platform.plugin.*, + blackboard.servlet.tags.TextboxTag, + blackboard.servlet.data.WysiwygText, + blackboard.db.DbUtil, + blackboard.base.*, + blackboard.persist.*, + blackboard.persist.content.*, + blackboard.persist.navigation.*, + blackboard.data.content.*, + blackboard.data.course.*, + blackboard.util.*, + blackboard.util.resolver.*, + blackboard.util.StringUtil, + blackboard.platform.plugin.PlugInUtil, + blackboard.platform.context.ContextUrlHandler, + blackboard.platform.log.*, + blackboard.platform.session.*, + blackboard.platform.security.* + "%> + +<%@ taglib uri="/bbData" prefix="bbData"%> +<%@ taglib uri="/bbUI" prefix="bbUI"%> + + +<% + // Authorization Check + try { + BbSessionManagerService sessionService = BbServiceManager.getSessionManagerService(); + BbSession bbSession = sessionService.getSession( request ); + AccessManagerService accessManager = (AccessManagerService) BbServiceManager.lookupService( AccessManagerService.class ); + + if( ! bbSession.isAuthenticated() ) { + accessManager.sendLoginRedirect(request,response); + } + if( ! SecurityUtil.userHasEntitlement( "course.content.DELETE" ) ) { + %><% + } + } + catch( Exception e ) { + throw new PlugInException("Authentication failed.", e); + } + + // Resource Bundle Load + + // + // Locale-based String Defs + // + + // + // Loaders and Managers + // + BbPersistenceManager bbPm = BbServiceManager.getPersistenceService().getDbPersistenceManager(); + ContentDbPersister persisterContent = ContentDbPersister.Default.getInstance(); + FileSystemService fileSysService = (FileSystemService)BbServiceManager.lookupService( FileSystemService.class ); + BbSessionManagerService sessionService = BbServiceManager.getSessionManagerService(); + BbSession bbSession = sessionService.getSession( request ); + + // + // Request Parameters + // + String strContentId = RequestUtil.getStringParameter(request,"content_id",null); + String strCourseId = RequestUtil.getStringParameter(request,"course_id",null); + + // Added because the Admin: Services Tab and Hot Links for any Tab uses the SYSTEM course + // to store the Content Items that are rendered in the portal. Used for navigation purposes + String strArea = RequestUtil.getStringParameter(request,"area",""); + String strTabId = RequestUtil.getStringParameter(request,"tab_id",""); + boolean bIsTabContent = (StringUtil.notEmpty(strArea)&&StringUtil.notEmpty(strTabId))?true:false; + String strHrefTabParams = ""; // will be blank for non tabcontent items + if (bIsTabContent) + { + strHrefTabParams = "&area="+strArea+"&tab_id="+strTabId; + } + + // + // Load Java Ids from pkIDs + // + Id idContent = bbPm.generateId(Content.DATA_TYPE, strContentId); + + // + // Page processing + // + try { + + if (idContent != null) { + + // Need to load the content object so that we can get the parent (needed for the return) + Id idParent = ContentDbLoader.Default.getInstance().loadById(bbPm.generateId(Content.DATA_TYPE,strContentId)).getParentId(); + + // if we are deleteing a folder, get a list of all of the contentIds under that folder + BbList folderContentIds = ContentDbLoader.Default.getInstance().loadListById(idContent); + // reverse order since we want to delete children before parents. + Collections.reverse(folderContentIds); + Iterator contentIter = folderContentIds.iterator(); + + while (contentIter.hasNext()) + { + + try { + + // load the content item + Content contentToRemove = (Content) contentIter.next(); + + try + { + // see if the content item handler has an additional remove processing event + ContentHandler cHandler = ContentHandlerDbLoader.Default.getInstance().loadByHandle(contentToRemove.getContentHandler()); + + // if the content handler is from a plugin and has a remove action defined AND is not the same removeItem_proc (to prevent circular references) + if (cHandler.getPlugInId().isSet() && StringUtil.notEmpty(cHandler.getHttpActionRemove())) + { + if (!cHandler.getHttpActionRemove().matches(".*removeItem_proc.jsp.*")) + { + try + { + StringTokenizer tokens = new StringTokenizer(cHandler.getHttpActionRemove(),"/"); + tokens.nextToken(); // skip /webapps/ part of url + String strWebApp = "/webapps/" + tokens.nextToken(); + String strRelPath = "/" + tokens.nextToken(" "); + + //Encodes url if @X@ signals are included. + + Resolver resolver = Resolver.getDefaultResolver(contentToRemove); + strRelPath = resolver.resolve(strRelPath); + + ServletContext ctxServlet = application.getContext(strWebApp); + RequestDispatcher rd = ctxServlet.getRequestDispatcher(strRelPath); + + //System.out.println("Dispatching content removal for Type: "+ cHandler.getHandle() +" URL is : "+ strRelPath); + + + // need to override response in case of output + HttpServletResponse wrappedResponse = new HttpServletResponseWrapper(response) { + public PrintWriter getWriter() throws IOException { + return new PrintWriter(new ByteArrayOutputStream()); + } + + }; + rd.include(request, wrappedResponse); + } + catch (Exception e) + { + // custom removal jsp file doesn't exist, so ignore + } + } + } + } + catch (Exception e) + { + // something else went wrong... + } + + // cleanup the filesystem + File contentDir = fileSysService.getContentDirectory(ctx.getCourse(), contentToRemove.getId()); + FileUtil.recycle(contentDir); + + // Remove from the database + persisterContent.deleteById(contentToRemove.getId()); + + //notify the cache on tab hot link content updats + if (bIsTabContent) { + TabLinkDbLoader tl = (TabLinkDbLoader) bbPm.getLoader(TabLinkDbLoader.TYPE); + tl.refreshCache(); + } + + } + catch (Exception e) + { + BbServiceManager.getLogService().logError("Error removing content", e); + } + + } + response.sendRedirect(PlugInUtil.getEditableContentReturnURL(idParent)+strHrefTabParams); + return; + } + + } catch (Exception e) + { + throw e; + } + + + +%> + + + Index: lams_bb_integration/web/modules/start_lesson.jsp =================================================================== diff -u -ra225f60e82f4197c7a2bf6dbb7200709d1e852d7 -rd77a5e0e31a43d80a8f8418e6525de0500624fed --- lams_bb_integration/web/modules/start_lesson.jsp (.../start_lesson.jsp) (revision a225f60e82f4197c7a2bf6dbb7200709d1e852d7) +++ lams_bb_integration/web/modules/start_lesson.jsp (.../start_lesson.jsp) (revision d77a5e0e31a43d80a8f8418e6525de0500624fed) @@ -13,7 +13,6 @@ <%@ page import="blackboard.platform.session.BbSession"%> <%@ page import="blackboard.platform.*"%> <%@ page import="blackboard.platform.plugin.PlugInUtil"%> -<%@ page import="org.lamsfoundation.ld.integration.blackboard.LamsServiceUtil"%> <%@ page import="org.lamsfoundation.ld.integration.blackboard.LamsPluginUtil"%> <%@ page import="org.lamsfoundation.ld.integration.Constants"%> @@ -23,23 +22,25 @@ <%@ taglib uri="/bbData" prefix="bbData"%> <% - String courseId = request.getParameter("course_id"); - String contentId = request.getParameter("content_id"); - String designId = request.getParameter("itemSequenceId"); String sequenceID = request.getParameter("sequence_id"); %> -
+ + + "> + "> + + - + @@ -56,7 +57,39 @@ - + +
+ + + + +
+ +
\ No newline at end of file Index: lams_bb_integration/web/modules/start_lesson_proc.jsp =================================================================== diff -u --- lams_bb_integration/web/modules/start_lesson_proc.jsp (revision 0) +++ lams_bb_integration/web/modules/start_lesson_proc.jsp (revision d77a5e0e31a43d80a8f8418e6525de0500624fed) @@ -0,0 +1,163 @@ +<%@ page import="java.util.Calendar"%> +<%@ page import="java.text.SimpleDateFormat"%> +<%@ page import="blackboard.base.FormattedText"%> +<%@ page import="blackboard.data.course.Course"%> +<%@ page import="blackboard.data.content.Content"%> +<%@ page import="blackboard.data.content.ContentFile"%> +<%@ page import="blackboard.data.content.ContentFolder"%> +<%@ page import="blackboard.data.content.CourseDocument"%> + +<%@ page import="blackboard.persist.Id"%> +<%@ page import="blackboard.persist.BbPersistenceManager"%> +<%@ page import="blackboard.persist.content.ContentDbPersister"%> +<%@ page import="blackboard.persist.content.ContentDbLoader"%> +<%@ page import="blackboard.platform.session.BbSessionManagerService"%> +<%@ page import="blackboard.platform.session.BbSession"%> +<%@ page import="blackboard.platform.*"%> +<%@ page import="blackboard.platform.plugin.PlugInUtil"%> +<%@ page import="org.lamsfoundation.ld.integration.blackboard.LamsSecurityUtil"%> +<%@ page import="org.lamsfoundation.ld.integration.blackboard.LamsPluginUtil"%> + +<%@ page errorPage="/error.jsp"%><%@ page import="org.lamsfoundation.ld.integration.Constants" %> + +<%@ taglib uri="/bbUI" prefix="bbUI"%> +<%@ taglib uri="/bbData" prefix="bbData"%> + + + + + + + + <% + String title = request.getParameter("title").trim(); + String description = request.getParameter("description").trim(); + + // TODO: Use bb text area instead + //String p_descText = request.getParameter("descriptiontext"); + //String p_descType = request.getParameter("descriptiontype"); + long ldId = Long.parseLong(request.getParameter("sequence_id").trim()); + //TODO: Get and validate dates and options + + //public static Long scheduleLesson(Context ctx, long ldId, String title, String desc, String startDate) //public static Long startLesson(Context ctx, long ldId, String title, String desc) + + // retrieve the Db persistence manager from the persistence service + BbPersistenceManager bbPm = BbServiceManager.getPersistenceService().getDbPersistenceManager(); + ContentDbPersister contentPersister = (ContentDbPersister) bbPm.getPersister( ContentDbPersister.TYPE ); + + // internal IDs for the course and parent content item + Id courseId = bbPm.generateId(Course.DATA_TYPE,request.getParameter("course_id")); + Id folderId = bbPm.generateId(CourseDocument.DATA_TYPE,request.getParameter("content_id")); + + // load parent content item + ContentDbLoader courseDocumentLoader = (ContentDbLoader) bbPm.getLoader( ContentDbLoader.TYPE ); + ContentFolder courseDocParent = (ContentFolder)courseDocumentLoader.loadById( folderId ); + + // get the session object to obtain the user and course object + BbSessionManagerService sessionService = BbServiceManager.getSessionManagerService(); + BbSession bbSession = sessionService.getSession( request ); + + // set LAMS content data + myContent.setTitle(title); + myContent.setIsAvailable(request.getParameter("isAvailable").equals("true")?true:false); + myContent.setIsTracked(request.getParameter("isTracked").equals("true")?true:false); + + //get descriptions entered + //FormattedText.Type descType = FormattedText.Type.DEFAULT; //type of description (S|H|P) + //switch(p_descType.charAt(0)){ + // case 'H': + // descType = FormattedText.Type.HTML; break; + // case 'S': + // descType = FormattedText.Type.SMART_TEXT; break; + // case 'P': + // descType = FormattedText.Type.PLAIN_TEXT; break; + //} + //if(!myContent.getIsAvailable()){ + // p_descText = "Item is not available.
" + p_descText; + //} + //FormattedText description = new FormattedText(p_descText,descType); + FormattedText fdescription = new FormattedText(description, FormattedText.Type.HTML); + + + + // set core course data + myContent.setContentHandler( LamsPluginUtil.CONTENT_HANDLE ); + myContent.setCourseId( courseId ); + myContent.setParentId( folderId ); + + // set LAMS content data + myContent.setRenderType(Content.RenderType.URL); + //myContent.setRenderType(Content.RenderType.LINK); + myContent.setBody(fdescription); + String learningSessionId = null; + + // tell lams to create the learning session using webservices + try{ + long lsId = LamsSecurityUtil.startLesson(ctx, ldId, title, description); + learningSessionId = Long.toString(lsId); + } catch (Exception e){ + throw new ServletException(e.getMessage(), e); + } + + int bbport = request.getServerPort(); + String bbportstr; + if (new Integer(bbport).equals(null) || bbport==0) + { + bbportstr = ""; + } + else + { + bbportstr = ":" + bbport; + } + + //String contentUrl = LamsSecurityUtil.generateRequestURL(ctx, "learner") + "&lsid=" + learningSessionId; + String contentUrl = "http://" + request.getServerName() + + bbportstr + + request.getContextPath() + + "/modules/learnermonitor.jsp?lsid=" + learningSessionId + + "&course_id=" + request.getParameter("course_id"); + + + + myContent.setUrl(contentUrl); + + + //myContent.setPosition(0); + //myContent.setLaunchInNewWindow(true); + + //Parse start/end Date from the + SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + Calendar cstart = Calendar.getInstance(); + Calendar cend = Calendar.getInstance(); + cstart.setTime(formatter.parse(request.getParameter("startDate"))); + cend.setTime(formatter.parse(request.getParameter("endDate"))); + + // Set Availability Dates + myContent.setStartDate(cstart); + if (request.getParameter("restrict_end") != null){ + if (request.getParameter("restrict_end").equals("1")){ + myContent.setEndDate(cend); + } + } + + + ContentDbPersister persister= (ContentDbPersister) bbPm.getPersister( ContentDbPersister.TYPE ); + persister.persist( myContent ); + + String strReturnUrl = PlugInUtil.getEditableContentReturnURL(myContent.getParentId()); + %> + + + + + LAMS + + + Content successfully added.
+
+
+ + +
+
+
\ No newline at end of file