Index: lams_bb_integration/WEB-INF/bb-manifest.xml =================================================================== diff -u -rf2da1da35475d9ae6c13914ce961e597a43800d1 -r355d2371b4fbb0a4f1da03c97e5328524d0751e2 --- lams_bb_integration/WEB-INF/bb-manifest.xml (.../bb-manifest.xml) (revision f2da1da35475d9ae6c13914ce961e597a43800d1) +++ lams_bb_integration/WEB-INF/bb-manifest.xml (.../bb-manifest.xml) (revision 355d2371b4fbb0a4f1da03c97e5328524d0751e2) @@ -35,6 +35,32 @@ + + + + application-def description goes here + + + + + + + + + + + + + + + + + + + + + + Index: lams_bb_integration/web/links/author.jsp =================================================================== diff -u --- lams_bb_integration/web/links/author.jsp (revision 0) +++ lams_bb_integration/web/links/author.jsp (revision 355d2371b4fbb0a4f1da03c97e5328524d0751e2) @@ -0,0 +1,21 @@ +<%@ page import="java.util.*, java.net.*, + org.lamsfoundation.ld.integration.blackboard.*" errorPage="error.jsp" %> +<%@ taglib uri="/bbData" prefix="bbData"%> +<%@ taglib uri="/bbNG" prefix="bbNG"%> + +<% + String authorURL = LamsSecurityUtil.generateRequestURL(ctx, "author", null); + authorURL = authorURL + "&isPostMessageToParent=true"; +%> + + + LAMS Author + + + + + + + To launch LAMS Author, please, click here. + + Index: lams_bb_integration/web/links/error.jsp =================================================================== diff -u --- lams_bb_integration/web/links/error.jsp (revision 0) +++ lams_bb_integration/web/links/error.jsp (revision 355d2371b4fbb0a4f1da03c97e5328524d0751e2) @@ -0,0 +1,19 @@ +<%@ taglib uri="/bbUI" prefix="bbUI"%> +<%@ page import="java.io.PrintWriter"%> +<%@ page isErrorPage = "true" %> +<% + String strException = exception.getMessage(); + response.setStatus(response.SC_INTERNAL_SERVER_ERROR); +%> + +<%=strException%> + + +<% + // now display a stack trace of the exception + PrintWriter pw = new PrintWriter( out ); + exception.printStackTrace( pw ); +%> + + + Index: lams_bb_integration/web/links/monitor.jsp =================================================================== diff -u --- lams_bb_integration/web/links/monitor.jsp (revision 0) +++ lams_bb_integration/web/links/monitor.jsp (revision 355d2371b4fbb0a4f1da03c97e5328524d0751e2) @@ -0,0 +1,208 @@ +<%@ page import="java.util.*, java.net.*, + java.text.SimpleDateFormat, + blackboard.data.*, + blackboard.persist.*, + blackboard.data.course.*, + blackboard.data.user.*, + blackboard.data.navigation.*, + blackboard.persist.course.*, + blackboard.persist.navigation.*, + blackboard.data.content.*, + blackboard.persist.content.*, + blackboard.db.*, + blackboard.base.*, + blackboard.platform.*, + blackboard.platform.plugin.*, + org.lamsfoundation.ld.integration.*, + org.lamsfoundation.ld.integration.blackboard.*" errorPage="error.jsp" %> +<%@ taglib uri="/bbNG" prefix="bbNG"%> +<%@ taglib uri="/bbData" prefix="bbData"%> + +<%! +public static String extractParameterValue(String url, String param) { + if (url != null && param != null) { + int quotationMarkIndex = url.indexOf("?"); + String queryPart = quotationMarkIndex > -1 ? url.substring(quotationMarkIndex + 1) : url; + String[] paramEntries = queryPart.split("&"); + for (String paramEntry : paramEntries) { + String[] paramEntrySplitted = paramEntry.split("="); + if ((paramEntrySplitted.length > 1) && param.equalsIgnoreCase(paramEntrySplitted[0])) { + return paramEntrySplitted[1]; + } + } + } + return null; +} + +public String getChild(Content f, ContentDbLoader cLoader) { + StringBuilder sb = new StringBuilder(); + try { + + if (f.getIsFolder()) { + + BbList cList = cLoader.loadChildren(f.getId()); + Content[] cArray = (Content[]) cList.toArray(new Content[0]); + String title = f.getTitle(); + if (title.indexOf("'") != -1) { + title = title.replace("'", "\\'"); + } + sb.append("{type:'Text', label:'" + title + "', id:0"); + + if (cArray.length == 0) { + sb.append(", expanded:0, children:[{type:'HTML', html:'null', id:0}]}"); + return sb.toString(); + + } else { + sb.append(", children:["); + sb.append(getChild(cArray[0], cLoader)); + for (int i = 1; i < cArray.length; i++) { + sb.append(", ").append(getChild(cArray[i], cLoader)); + } + sb.append("]}"); + } + return sb.toString(); + + } else { + + if (f.getContentHandler().equals("resource/x-lams-lamscontent")) { + String strUrl = f.getUrl(); + String strId = extractParameterValue(strUrl, "lsid"); + String strTitle = f.getTitle().replace("'", "\\'"); + sb.append("{type:'Text', label:'" + strTitle + "', id:'" + strId + "'}"); + // return sb.toString(); + + } else { + // sb.append("{type:'HTML', html:'null', id:0}"); + } + return sb.toString(); + } + + } catch (Exception e) { + return sb.toString(); + } +} +%> + +<% + //check permission + if (!PlugInUtil.authorizeForCourseControlPanel(request, response)) { + return; + } + + BbPersistenceManager bbPm = BbServiceManager.getPersistenceService().getDbPersistenceManager(); + Container bbContainer = bbPm.getContainer(); + + ContentDbLoader cLoader = (ContentDbLoader) bbPm.getLoader( ContentDbLoader.TYPE ); + + CourseTocDbLoader ctLoader = (CourseTocDbLoader) bbPm.getLoader(CourseTocDbLoader.TYPE); + Id courseId = new PkId(bbContainer, Course.DATA_TYPE, request.getParameter("course_id")); + Course course = ctx.getCourse(); + BbList ctList = ctLoader.loadByCourseId(courseId); + CourseToc[] courseTocs = (CourseToc[]) ctList.toArray(new CourseToc[0]); + String strOut = "[[]]"; + int idx = 0; + StringBuilder strB = new StringBuilder(); + strB.append("[{type:'Text', label:'" + course.getTitle().replace("'", "\\'") + "', id:0, children:["); + for (int i = 0; i < courseTocs.length; i++) { + if (courseTocs[i].getTargetType().compareTo(CourseToc.Target.CONTENT) == 0) { + Content cont = cLoader.loadByTocId(courseTocs[i].getId()); + strB.append(getChild(cont, cLoader)); + idx = i; + break; + } + } + for (int i = idx + 1; i < courseTocs.length; i++) { + if (courseTocs[i].getTargetType().compareTo(CourseToc.Target.CONTENT) == 0) { + Content cont = cLoader.loadByTocId(courseTocs[i].getId()); + strB.append(", ").append(getChild(cont, cLoader)); + } + } + strB.append("]}]"); + strOut = strB.toString(); + + String monitorURL = "monitoring.jsp?course_id=" + course.getId().toExternalString(); +%> + + + + + + + + + + + + LAMS Monitor + + + + + + <%-- Monitor Button --%> + + + + Monitor this lesson + + + + + + + + + + + \ No newline at end of file Index: lams_bb_integration/web/links/monitoring.jsp =================================================================== diff -u --- lams_bb_integration/web/links/monitoring.jsp (revision 0) +++ lams_bb_integration/web/links/monitoring.jsp (revision 355d2371b4fbb0a4f1da03c97e5328524d0751e2) @@ -0,0 +1,32 @@ +<%@ page import="java.util.*, java.net.*, + java.text.SimpleDateFormat, + blackboard.data.*, + blackboard.persist.*, + blackboard.data.course.*, + blackboard.data.user.*, + blackboard.data.navigation.*, + blackboard.persist.course.*, + blackboard.persist.navigation.*, + blackboard.data.content.*, + blackboard.persist.content.*, + blackboard.db.*, + blackboard.base.*, + blackboard.platform.*, + blackboard.platform.plugin.*, + org.lamsfoundation.ld.integration.*, + org.lamsfoundation.ld.integration.blackboard.*" errorPage="error.jsp" %> +<%@ taglib uri="/bbNG" prefix="bbNG"%> +<%@ taglib uri="/bbData" prefix="bbData"%> + +<% + String id = request.getParameter("lsid"); + //check permission + if (!PlugInUtil.authorizeForCourseControlPanel(request, response)) { + return; + } + + String monitorURL = LamsSecurityUtil.generateRequestURL(ctx, "monitor", id); + response.sendRedirect(monitorURL); +%> + + Index: lams_bb_integration/web/modules/preview.jsp =================================================================== diff -u -r6e9eb68ce0a5a3982f117119a09beb9e4425326e -r355d2371b4fbb0a4f1da03c97e5328524d0751e2 --- lams_bb_integration/web/modules/preview.jsp (.../preview.jsp) (revision 6e9eb68ce0a5a3982f117119a09beb9e4425326e) +++ lams_bb_integration/web/modules/preview.jsp (.../preview.jsp) (revision 355d2371b4fbb0a4f1da03c97e5328524d0751e2) @@ -65,7 +65,7 @@ } //redirect to preview lesson - String previewUrl = LamsSecurityUtil.generateRequestURL(ctx, "learnerStrictAuth", lsId); + String previewUrl = LamsSecurityUtil.generateRequestURL(ctx, "learnerStrictAuth", "" + lsId); response.sendRedirect(previewUrl); %>
+
+<% + // now display a stack trace of the exception + PrintWriter pw = new PrintWriter( out ); + exception.printStackTrace( pw ); +%> +