%--
Original Version: 2007 LAMS Foundation
Updated for Blackboard 9.1 SP6 (including new bbNG tag library) 2011
Richard Stals (www.stals.com.au)
Edith Cowan University, Western Australia
--%>
<%--
Handle LAMS Lesson Access
Students - access lesson only
Staff - additionally access the Lesson Monitor
--%>
<%@ page import="java.util.*"%>
<%@ page import="java.util.Date"%>
<%@ page import="java.text.SimpleDateFormat"%>
<%@ page import="blackboard.data.*"%>
<%@ page import="blackboard.persist.*"%>
<%@ page import="blackboard.data.course.*"%>
<%@ page import="blackboard.data.user.*"%>
<%@ page import="blackboard.persist.course.*"%>
<%@ page import="blackboard.data.content.*"%>
<%@ page import="blackboard.persist.content.*"%>
<%@ page import="blackboard.persist.navigation.CourseTocDbLoader"%>
<%@ page import="blackboard.persist.gradebook.*"%>
<%@ page import="blackboard.data.gradebook.*"%>
<%@ page import="blackboard.db.*"%>
<%@ page import="blackboard.base.*"%>
<%@ page import="blackboard.platform.*"%>
<%@ page import="blackboard.platform.plugin.*"%>
<%@ page import="org.lamsfoundation.ld.integration.blackboard.LamsSecurityUtil"%>
<%@ page errorPage="/error.jsp"%>
<%@ taglib uri="/bbNG" prefix="bbNG"%>
<%
// SECURITY!
// Authorise current user for Course Access (automatic redirect)
try{
if (!PlugInUtil.authorizeForCourse(request, response))
return;
} catch(PlugInException e) {
throw new RuntimeException(e);
}
// Get the LAMS access URLs
String lsid = request.getParameter("lsid");
String learnerUrl = LamsSecurityUtil.generateRequestURL(ctx, "learner") + "&lsid=" + lsid;
String monitorUrl = LamsSecurityUtil.generateRequestURL(ctx, "monitor") + "&lsid=" + lsid;
String liveEditUrl = LamsSecurityUtil.generateRequestURL(ctx, "author");
// Get Course ID and Session User ID
BbPersistenceManager bbPm = BbServiceManager.getPersistenceService().getDbPersistenceManager();
String course_idstr = request.getParameter("course_id");
Id course_id = bbPm.generateId(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;
boolean isActive = false;
CourseMembershipDbLoader sessionCourseMembershipLoader = (CourseMembershipDbLoader) bbPm.getLoader(CourseMembershipDbLoader.TYPE);
try {
courseMembership = sessionCourseMembershipLoader.loadByCourseAndUserId(course_id, sessionUserId);
courseRole = courseMembership.getRole();
isActive = courseMembership.getIsAvailable();
} catch (KeyNotFoundException e) {
// There is no membership record.
e.printStackTrace();
} catch (PersistenceException pe) {
// There is no membership record.
pe.printStackTrace();
}
// Is the User an Instructor of Teaching Assistant
boolean instructorstr=false;
if (courseRole.equals(CourseMembership.Role.INSTRUCTOR)||courseRole.equals(CourseMembership.Role.TEACHING_ASSISTANT)) {
instructorstr=true;
} else if (!courseRole.equals(CourseMembership.Role.STUDENT)) {
// The user is not an Instructor, Teaching Assistant or Student - Access Denied
response.sendRedirect("notAllowed.jsp");
}
// Are they active in the course? If not let Blackboard handle the redirect
if (!isActive) {
PlugInUtil.sendAccessDeniedRedirect(request, response);
}
String strIsDisplayDesignImage = request.getParameter("isDisplayDesignImage");
boolean isDisplayDesignImage = "true".equals(strIsDisplayDesignImage)?true:false;
String learningDesignImageUrl = "";
if (isDisplayDesignImage) {
String strLearningDesignId = request.getParameter("ldid").trim();
long learningDesignId = Long.parseLong(strLearningDesignId);
learningDesignImageUrl = LamsSecurityUtil.generateRequestLearningDesignImage(ctx, false) + "&ldId=" + learningDesignId;
}
//check whether user has score for this lesson
Score current_score = null;
String strLineitemId = request.getParameter("lineitemid");
if (strLineitemId != null) { // there won't be "lineitemid" parameter in case lesson had been created in LAMS building block version prior to 1.2
Id lineitemId = bbPm.generateId(Lineitem.LINEITEM_DATA_TYPE, strLineitemId.trim());
ScoreDbLoader scoreLoader = (ScoreDbLoader) bbPm.getLoader(ScoreDbLoader.TYPE);
try {
current_score = scoreLoader.loadByCourseMembershipIdAndLineitemId(courseMembership.getId(), lineitemId);
} catch (KeyNotFoundException c) {
//no score availalbe
}
}
boolean isScoreAvailable = (current_score != null);
%>
<%-- Breadcrumbs --%>
<%-- Page Header --%>
<%-- Action Control Bar --%>
<%-- Access the Lesson as a Learner --%>
<% if(instructorstr) { %>
<%-- Access the Monitor --%>
<% } %>
<%-- Cancel (Go Back) --%>
<% if(request.getParameter("title") != null) { %>
<%=request.getParameter("title")%>
<% } %>
<% if(request.getParameter("description") != null) { %>
<%=request.getParameter("description")%>
<% } %>
<% if(isDisplayDesignImage) { %>
<% } %>
<% if(isScoreAvailable) { %>
You have completed this lesson.
<% } %>