<%-- 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.portal.servlet.*"%> <%@ page import="blackboard.portal.data.*"%> <%@ page import="org.lamsfoundation.ld.integration.blackboard.LamsSecurityUtil"%> <%@ page import="org.lamsfoundation.ld.integration.dto.LearnerProgressDTO"%> <%@ page errorPage="/error.jsp"%> <%@ taglib uri="/bbNG" prefix="bbNG"%> <% // Authorise current user for Course Access (automatic redirect) try{ if (!PlugInUtil.authorizeForCourse(request, response)) return; } catch(PlugInException e) { throw new RuntimeException(e); } // 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 (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 contentIdStr = request.getParameter("content_id"); String title = ""; String description = ""; String strLineitemId = null; String position = "unknown"; //contentId is available in versions after 1.2.3 if (contentIdStr != null) { Container bbContainer = bbPm.getContainer(); Id contentId = new PkId( bbContainer, CourseDocument.DATA_TYPE, request.getParameter("content_id") ); 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 (bbContentId -> lineitemid) PortalExtraInfo pei = PortalUtil.loadPortalExtraInfo(null, null, "LamsLineitemStorage"); ExtraInfo ei = pei.getExtraInfo(); strLineitemId = ei.getValue(contentIdStr); } 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 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; 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); String strLessonId = request.getParameter("lsid").trim(); long lessonId = Long.parseLong(strLessonId); 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.

<% } %>
<% } %>