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
+
+
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");
%>
-
+
+
\ 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