Index: lams_bb_integration/WEB-INF/bb-manifest.xml =================================================================== diff -u -rc1dcc2fb17839727fa637150ed8fffc388d7616c -refced1f751a9f688a5f99a75cf6592120260428e --- lams_bb_integration/WEB-INF/bb-manifest.xml (.../bb-manifest.xml) (revision c1dcc2fb17839727fa637150ed8fffc388d7616c) +++ lams_bb_integration/WEB-INF/bb-manifest.xml (.../bb-manifest.xml) (revision efced1f751a9f688a5f99a75cf6592120260428e) @@ -5,7 +5,7 @@ - + Index: lams_bb_integration/build.xml =================================================================== diff -u -rd1bd46656c685991413555e26f4efe3a9c4db39f -refced1f751a9f688a5f99a75cf6592120260428e --- lams_bb_integration/build.xml (.../build.xml) (revision d1bd46656c685991413555e26f4efe3a9c4db39f) +++ lams_bb_integration/build.xml (.../build.xml) (revision efced1f751a9f688a5f99a75cf6592120260428e) @@ -2,7 +2,7 @@ - + Index: lams_bb_integration/src/org/lamsfoundation/ld/integration/blackboard/GradebookServlet.java =================================================================== diff -u -r8ee0de626969fdca9991edf123916a3381fff3f3 -refced1f751a9f688a5f99a75cf6592120260428e --- lams_bb_integration/src/org/lamsfoundation/ld/integration/blackboard/GradebookServlet.java (.../GradebookServlet.java) (revision 8ee0de626969fdca9991edf123916a3381fff3f3) +++ lams_bb_integration/src/org/lamsfoundation/ld/integration/blackboard/GradebookServlet.java (.../GradebookServlet.java) (revision efced1f751a9f688a5f99a75cf6592120260428e) @@ -34,6 +34,7 @@ import java.security.NoSuchAlgorithmException; import java.text.DecimalFormat; import java.util.List; +import java.util.Set; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; @@ -51,23 +52,22 @@ import org.w3c.dom.NodeList; import org.xml.sax.SAXException; +import blackboard.data.content.Content; +import blackboard.data.content.CourseDocument; import blackboard.data.course.Course; import blackboard.data.course.CourseMembership; import blackboard.data.gradebook.Lineitem; import blackboard.data.gradebook.Score; -import blackboard.data.gradebook.impl.Outcome; -import blackboard.data.gradebook.impl.OutcomeDefinition.CalculationType; -import blackboard.data.gradebook.impl.OutcomeDefinitionCategory; -import blackboard.data.gradebook.impl.OutcomeDefinitionScale; import blackboard.data.user.User; import blackboard.persist.BbPersistenceManager; +import blackboard.persist.Container; +import blackboard.persist.Id; import blackboard.persist.KeyNotFoundException; -import blackboard.persist.PersistenceException; import blackboard.persist.PkId; +import blackboard.persist.content.ContentDbLoader; import blackboard.persist.course.CourseDbLoader; import blackboard.persist.course.CourseMembershipDbLoader; import blackboard.persist.gradebook.LineitemDbLoader; -import blackboard.persist.gradebook.LineitemDbPersister; import blackboard.persist.gradebook.ScoreDbLoader; import blackboard.persist.gradebook.ScoreDbPersister; import blackboard.persist.user.UserDbLoader; @@ -103,26 +103,52 @@ String userName = request.getParameter(Constants.PARAM_USER_ID); String timeStamp = request.getParameter(Constants.PARAM_TIMESTAMP); String hash = request.getParameter(Constants.PARAM_HASH); - String lessonIdStr = request.getParameter(Constants.PARAM_LESSON_ID); + String lessonId = request.getParameter(Constants.PARAM_LESSON_ID); - // check paramaeters - if (userName == null || timeStamp == null || hash == null) { + // check parameters + if (userName == null || timeStamp == null || hash == null || lessonId == null) { response.sendError(HttpServletResponse.SC_UNAUTHORIZED, "missing expected parameters"); return; } + //check user rights String secretKey = LamsPluginUtil.getSecretKey(); String serverId = LamsPluginUtil.getServerId(); - if (!sha1( timeStamp.toLowerCase() + userName.toLowerCase() + serverId.toLowerCase() + secretKey.toLowerCase()).equals(hash)) { response.sendError(HttpServletResponse.SC_UNAUTHORIZED, "authentication failed"); } + + //check if isGradebookcenter + PortalExtraInfo pei = PortalUtil.loadPortalExtraInfo(null, null, "LamsStorage"); + ExtraInfo ei = pei.getExtraInfo(); + Set internalLessonIds = ei.getKeys(); + String internalLessonId = null; + for (String internalLessonIdIter : internalLessonIds) { + String externalLessonId = ei.getValue(internalLessonIdIter); + if (lessonId.equals(externalLessonId)) { + internalLessonId = internalLessonIdIter; + break; + } + } + + // exit method as it was created in version prior to 1.2.1 and thus don't have lineitem + if (internalLessonId == null) { + return; + } + + // check if we need to store mark in Gradebook + BbPersistenceManager bbPm = BbServiceManager.getPersistenceService().getDbPersistenceManager(); + Container bbContainer = bbPm.getContainer(); + Id contentId = new PkId( bbContainer, CourseDocument.DATA_TYPE, internalLessonId ); + ContentDbLoader courseDocumentLoader = (ContentDbLoader) bbPm.getLoader( ContentDbLoader.TYPE ); + Content modifiedLesson = (Content)courseDocumentLoader.loadById( contentId ); + if (!modifiedLesson.getIsDescribed()) { + //isDescribed field is used for storing isGradecenter parameter and thus if it's false it means don't store mark to Gradecenter + return; + } - // get the persistence manager - BbPersistenceManager bbPm = BbServiceManager.getPersistenceService().getDbPersistenceManager(); - // get user list, but no role info since there are no course info UserDbLoader userLoader = (UserDbLoader) bbPm.getLoader(UserDbLoader.TYPE); User user = userLoader.loadByUserName(userName); @@ -136,7 +162,7 @@ Document document = null; String serviceURL = serverAddr + "/services/xml/LessonManager?" + LamsSecurityUtil.generateAuthenticateParameters(ctx) + "&courseId=" - + "&method=toolOutputsUser&lsId=" + lessonIdStr + "&outputsUser=" + + "&method=toolOutputsUser&lsId=" + lessonId + "&outputsUser=" + URLEncoder.encode(userName, "UTF8"); URL url = new URL(serviceURL); @@ -201,7 +227,7 @@ List lineitems = lineitemLoader.loadByCourseId(userCourse.getId()); for (Lineitem lineitemIter : lineitems) { - if (lineitemIter.getAssessmentId() != null && lineitemIter.getAssessmentId().equals(lessonIdStr)) { + if (lineitemIter.getAssessmentId() != null && lineitemIter.getAssessmentId().equals(lessonId)) { lineitem = lineitemIter; break; } Index: lams_bb_integration/web/modules/create.jsp =================================================================== diff -u -r7ad1566649545d95c6bdfe73b2874f98e6006cd9 -refced1f751a9f688a5f99a75cf6592120260428e --- lams_bb_integration/web/modules/create.jsp (.../create.jsp) (revision 7ad1566649545d95c6bdfe73b2874f98e6006cd9) +++ lams_bb_integration/web/modules/create.jsp (.../create.jsp) (revision efced1f751a9f688a5f99a75cf6592120260428e) @@ -27,7 +27,6 @@ <% - // SECURITY! // Authorise current user for Course Control Panel (automatic redirect) try{ if (!PlugInUtil.authorizeForCourseControlPanel(request, response)) @@ -141,7 +140,6 @@ No - Yes No Index: lams_bb_integration/web/modules/delete.jsp =================================================================== diff -u -r6d7366cc28dad4b552e601d5d178996468178d1b -refced1f751a9f688a5f99a75cf6592120260428e --- lams_bb_integration/web/modules/delete.jsp (.../delete.jsp) (revision 6d7366cc28dad4b552e601d5d178996468178d1b) +++ lams_bb_integration/web/modules/delete.jsp (.../delete.jsp) (revision efced1f751a9f688a5f99a75cf6592120260428e) @@ -36,7 +36,6 @@ <% - // SECURITY! // Authorise current user for Course Access (automatic redirect) try { if (!PlugInUtil.authorizeForCourse(request, response)) @@ -77,8 +76,12 @@ throw new ServletException("lineitem not found"); } + //delete lineitem (can't delete it simply doing linePersister.deleteById(lineitem.getId()) due to BB9 bug) + PkId lineitemPkId = (PkId) lineitem.getId(); + String lineitemIdStr = "_" + lineitemPkId.getPk1() + "_" + lineitemPkId.getPk2(); + Id lineitemId = bbPm.generateId(Lineitem.LINEITEM_DATA_TYPE, lineitemIdStr.trim()); LineitemDbPersister linePersister = (LineitemDbPersister) bbPm.getPersister(LineitemDbPersister.TYPE); - linePersister.deleteById(lineitem.getId()); + linePersister.deleteById(lineitemId); %> <%-- Page Header --%> Index: lams_bb_integration/web/modules/learnermonitor.jsp =================================================================== diff -u -r945b2cfd06b7a6fa1c28ca66f09f43349fdb1169 -refced1f751a9f688a5f99a75cf6592120260428e --- lams_bb_integration/web/modules/learnermonitor.jsp (.../learnermonitor.jsp) (revision 945b2cfd06b7a6fa1c28ca66f09f43349fdb1169) +++ lams_bb_integration/web/modules/learnermonitor.jsp (.../learnermonitor.jsp) (revision efced1f751a9f688a5f99a75cf6592120260428e) @@ -33,7 +33,6 @@ <% - // SECURITY! // Authorise current user for Course Access (automatic redirect) try{ if (!PlugInUtil.authorizeForCourse(request, response)) @@ -87,9 +86,29 @@ PlugInUtil.sendAccessDeniedRedirect(request, response); } + //Get lessson's title and description + String contentIdStr = request.getParameter("content_id"); + String title = ""; + String description = ""; + //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().getText(); + } else { + + title = request.getParameter("title"); + description = request.getParameter("description"); + } + + //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(); @@ -111,7 +130,6 @@ //no score availalbe } } - boolean isScoreAvailable = (current_score != null); %> @@ -122,7 +140,7 @@ <%-- Page Header --%> - + <%-- Action Control Bar --%> @@ -134,15 +152,9 @@ <%-- Cancel (Go Back) --%> - <% if(request.getParameter("title") != null) { %> -

- <%=request.getParameter("title")%> -

- <% } %> - - <% if(request.getParameter("description") != null) { %> + <% if((description != "") && (description != null)) { %>

- <%=request.getParameter("description")%> + <%=description%>

<% } %> @@ -157,7 +169,6 @@ You have completed this lesson. <% } %> -