<%-- 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="blackboard.platform.persistence.*"%> <%@ page import="blackboard.portal.servlet.*"%> <%@ page import="blackboard.portal.data.*"%> <%@ page import="org.lamsfoundation.ld.integration.util.*"%> <%@ page import="org.lamsfoundation.ld.integration.dto.LearnerProgressDTO"%> <%@ page errorPage="/error.jsp"%> <%@ taglib uri="/bbNG" prefix="bbNG"%> <% BbPersistenceManager bbPm = PersistenceServiceFactory.getInstance().getDbPersistenceManager(); CourseMembershipDbLoader sessionCourseMembershipLoader = CourseMembershipDbLoader.Default.getInstance(); // Authorise current user for Course Access (automatic redirect) try{ if (!PlugInUtil.authorizeForCourse(request, response)) return; } catch(PlugInException e) { throw new RuntimeException(e); } String strLessonId = request.getParameter("lsid").trim(); long lessonId = Long.parseLong(strLessonId); String courseIdParam = request.getParameter("course_id"); // Get Course ID and User ID Id course_id = bbPm.generateId(Course.DATA_TYPE, courseIdParam); Id userId = ctx.getUser().getId(); // Get the membership data to determine the User's Role CourseMembership courseMembership = null; CourseMembership.Role courseRole = null; boolean isActive = false; try { courseMembership = sessionCourseMembershipLoader.loadByCourseAndUserId(course_id, userId); 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 (CourseMembership.Role.INSTRUCTOR.equals(courseRole) || CourseMembership.Role.TEACHING_ASSISTANT.equals(courseRole) || CourseMembership.Role.COURSE_BUILDER.equals(courseRole)) { instructorstr=true; } else if (!CourseMembership.Role.STUDENT.equals(courseRole)) { // 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); } //Get lessson's title and description String title = ""; String description = ""; String strLineitemId = null; String position = "unknown"; //contentId is available in versions after 1.2.3 String contentIdParam = request.getParameter("content_id"); if (contentIdParam != null) { Container bbContainer = bbPm.getContainer(); Id contentId = new PkId(bbContainer, CourseDocument.DATA_TYPE, contentIdParam); ContentDbLoader courseDocumentLoader = (ContentDbLoader) bbPm.getLoader(ContentDbLoader.TYPE); Content courseDoc = (Content) courseDocumentLoader.loadById(contentId); title = courseDoc.getTitle(); description = courseDoc.getBody().getFormattedText(); position = String.valueOf(courseDoc.getPosition()); //get lineitemid from the storage Lineitem lineitem = LineitemUtil.getLineitem(contentIdParam, userId, strLessonId); } else { title = (request.getParameter("title") != null) ? request.getParameter("title") : "LAMS Options"; description = request.getParameter("description"); strLineitemId = request.getParameter("lineitemid"); } //display learning design image String strIsDisplayDesignImage = request.getParameter("isDisplayDesignImage"); boolean isDisplayDesignImage = "true".equals(strIsDisplayDesignImage) ? true : false; String learningDesignImageUrl = ""; if (isDisplayDesignImage) { String username = ctx.getUser().getUserName(); learningDesignImageUrl = LamsSecurityUtil.generateRequestLearningDesignImage(username, false) + "&lsId=" + lessonId; } //check whether user has score for this lesson Score current_score = null; if (strLineitemId != null) { // there won't be "lineitemid" parameter in case lesson had been created in LAMS building block version prior to 1.2 //check if it was created in old versions (e.g. 1.2.1) where lineitemId parameter had the following format "PkId(key=_XXXX_1, %20dataType=blackboard.data.gradebook.impl.OutcomeDefinition, %20container=blackboard.persist.DatabaseContainer@xxxx)" //in which case transform it to the more regular one if (strLineitemId.contains("key=")) { int pos1 = strLineitemId.indexOf("key=") + 4; int pos2 = strLineitemId.indexOf(",", pos1); if (pos1 != -1 && pos2 != -1 && pos1 <= pos2 && pos2 <= strLineitemId.length()) { strLineitemId = strLineitemId.substring(pos1, pos2); } } 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); //prepare learnerProgressDto for displaying on jsp LearnerProgressDTO learnerProgressDto = LamsSecurityUtil.getLearnerProgress(ctx, lessonId); %> <%-- Page Header --%> <%-- Action Control Bar --%> <%-- Access the Lesson as a Learner --%> <% if(instructorstr) { %> <%-- Access the Monitor --%> <% } %> <%-- Cancel (Go Back) --%> <% if((description != "") && (description != null)) { %>
<%=description%>
<% } %> <% if(isDisplayDesignImage) { %>
<% } %> <% if(learnerProgressDto.getAttemptedActivities() > 0 || learnerProgressDto.getLessonComplete()) { %>
Your Lesson Progress
<% if(!learnerProgressDto.getLessonComplete()) { %>

Lesson is not yet completed.

You have completed: <%=learnerProgressDto.getActivitiesCompleted()%> out of approximately <%=learnerProgressDto.getActivityCount()%> activities [*]

* Total activities depend on your learning path.
<% } else { %>

You have completed this lesson.

<% } %>
<% } %>