Index: lams_bb_integration/RELEASE_NOTES.TXT =================================================================== diff -u -r382abafa488aec73ecd574dc2f13cde47d2bf8d6 -ra930db13eb2e9bd50802f65516c169da454e9030 --- lams_bb_integration/RELEASE_NOTES.TXT (.../RELEASE_NOTES.TXT) (revision 382abafa488aec73ecd574dc2f13cde47d2bf8d6) +++ lams_bb_integration/RELEASE_NOTES.TXT (.../RELEASE_NOTES.TXT) (revision a930db13eb2e9bd50802f65516c169da454e9030) @@ -4,13 +4,13 @@ All Jira bug references can be found at: https://bugs.lamsfoundation.org/browse/ -1.0.1 Release -============= +1.0.1 Release Fixes +=================== * LDEV-1326 Implement "return to Blackboard" message * LDEV-1331 Monitoring and Learning windows open in the same window -1.0.2 Release -============= +1.0.2 Release Fixes +=================== * LDEV-1342 Live edit wont start when using the Blackboard integration * LDEV-1345 When selecting a sequence, the next button wont work with IE6 * LDEV-1350 Start lesson in Blackboard 7.1 throws NoSuchMethodError Index: lams_bb_integration/WEB-INF/bb-manifest.xml =================================================================== diff -u -r01bff541ab9e8724006329eb69455e7e232111cd -ra930db13eb2e9bd50802f65516c169da454e9030 --- lams_bb_integration/WEB-INF/bb-manifest.xml (.../bb-manifest.xml) (revision 01bff541ab9e8724006329eb69455e7e232111cd) +++ lams_bb_integration/WEB-INF/bb-manifest.xml (.../bb-manifest.xml) (revision a930db13eb2e9bd50802f65516c169da454e9030) @@ -60,6 +60,9 @@ - + + + + Index: lams_bb_integration/web/modules/gradeit.jsp =================================================================== diff -u --- lams_bb_integration/web/modules/gradeit.jsp (revision 0) +++ lams_bb_integration/web/modules/gradeit.jsp (revision a930db13eb2e9bd50802f65516c169da454e9030) @@ -0,0 +1,115 @@ +<%// Discussion Grader, Copyright 2004 Joliet Junior College +// Home Page : http://www.jjc.edu/distance/ +// Author : Jeff Nuckles jnuckles@jjc.edu +%> +<%@ page import="java.util.*, + java.text.*, + blackboard.data.*, + blackboard.data.course.*, + blackboard.data.user.*, + blackboard.persist.*, + blackboard.persist.course.*, + blackboard.persist.user.*, + blackboard.persist.gradebook.*, + blackboard.data.gradebook.*, + blackboard.base.*, + blackboard.platform.*, + blackboard.platform.log.*, + blackboard.platform.session.*, + blackboard.platform.persistence.*, + blackboard.platform.BbServiceManager.*, + blackboard.platform.context.*, + blackboard.base.BbList.*, + blackboard.platform.plugin.PlugInUtil, + java.util.Calendar, + java.lang.*, + blackboard.platform.security.*" + errorPage="/error.jsp" + %> +<%@ taglib uri="/bbData" prefix="bbData"%> +<%@ taglib uri="/bbUI" prefix="bbUI"%> + + +<% +if (request.getParameter("score") != null) { +%> +<% +BbPersistenceManager bbPm = BbServiceManager.getPersistenceService().getDbPersistenceManager(); +UserDbLoader uLoader = UserDbLoader.Default.getInstance(); +CourseDbLoader cLoader = CourseDbLoader.Default.getInstance(); +CourseMembershipDbLoader memLoader =(CourseMembershipDbLoader) bbPm.getLoader(CourseMembershipDbLoader.TYPE); +ScoreDbLoader scoreLoader = (ScoreDbLoader) bbPm.getLoader(ScoreDbLoader.TYPE); +ScoreDbPersister scorePersister = (ScoreDbPersister) bbPm.getPersister(ScoreDbPersister.TYPE); +String cid = request.getParameter("course_id"); +String lid = request.getParameter("lineitem_pk1"); +String fid = request.getParameter("forum_pk1"); +String uid = request.getParameter("UserId"); +String gid = null; +if (request.getParameter("group_pk1") != null){ + gid = request.getParameter("group_pk1"); +} + + +Course courseId = cLoader.loadById(Id.generateId(new DataType(Course.class),cid)); +User user = uLoader.loadById(Id.generateId(new DataType(User.class),uid)); +CourseMembership cms = memLoader.loadByCourseAndUserId(courseId.getId(), user.getId()); +Score current_score = null; +try { +current_score = scoreLoader.loadByCourseMembershipIdAndLineitemId(cms.getId(),Id.generateId(new DataType(Lineitem.class),lid)); +} catch (KeyNotFoundException c){ +current_score = new Score(); +current_score.setLineitemId(Id.generateId(new DataType(Lineitem.class),lid)); +current_score.setCourseMembershipId(cms.getId()); +} + +String current_points = current_score.getGrade(); +current_score.setGrade(request.getParameter("score")); +try { +current_score.validate(); +scorePersister.persist(current_score); +%> + +GRADE CHANGE + +Discussion Grader + + + + + + +
+ + + + + + + + + + + +
+A grade has been successfully entered into the gradebook for <%=user.getGivenName()%> <%=user.getFamilyName()%>. +
+
+<%=(new Date()).toString()%> +
+OK + +
+ + +<% +} catch (ValidationException e) { +%>Invalid Score <%=e%> +<% +} +} +%> +
+
+ + + Index: lams_bb_integration/web/modules/index.jsp =================================================================== diff -u --- lams_bb_integration/web/modules/index.jsp (revision 0) +++ lams_bb_integration/web/modules/index.jsp (revision a930db13eb2e9bd50802f65516c169da454e9030) @@ -0,0 +1,101 @@ +<%// Discussion Grader, Copyright 2004 Joliet Junior College +// Home Page : http://www.jjc.edu/distance/ +// Author : Jeff Nuckles jnuckles@jjc.edu +%> +<%@ page import="java.util.*, + java.text.*, + blackboard.data.*, + blackboard.data.course.*, + blackboard.persist.*, + blackboard.persist.course.*, + blackboard.base.*, + blackboard.platform.*, + blackboard.platform.log.*, + blackboard.platform.session.*, + blackboard.platform.persistence.*, + blackboard.platform.BbServiceManager.*, + blackboard.platform.context.*, + blackboard.base.BbList.*, + blackboard.platform.plugin.PlugInUtil, + java.util.Calendar, + java.lang.*, + blackboard.persist.discussionboard.*, + blackboard.data.discussionboard.*, + blackboard.platform.security.*" + errorPage="/error.jsp" + %> +<%@ taglib uri="/bbData" prefix="bbData"%> +<%@ taglib uri="/bbUI" prefix="bbUI"%> + + +<% +BbSessionManagerService sessionService = BbServiceManager.getSessionManagerService(); +BbSession bbSession = sessionService.getSession( request ); +Course course = ctx.getCourse(); +Id courseId = course.getId(); +String cidString = courseId.toExternalString(); +cidString = cidString.substring(1,cidString.lastIndexOf("_")); +ConferenceDbLoader cfLoader = ConferenceDbLoader.Default.getInstance(); +Conference cf = cfLoader.loadByCourseId(courseId); +Id cfId = cf.getId(); +ForumDbLoader fLoader = ForumDbLoader.Default.getInstance(); +BbList forum = fLoader.loadByConferenceId(cfId); +BbList.Iterator forumListIter = forum.getFilteringIterator(); +GroupDbLoader gLoader = GroupDbLoader.Default.getInstance(); +BbList gList = gLoader.loadByCourseId(courseId); +BbList.Iterator groupListIter = gList.getFilteringIterator(); +%> + + + + + + + +Discussion Grader + + +Select the discussion forum that you wish to grade from the list below. + + + + + <% +while (forumListIter.hasNext()) { + Forum cForum = (Forum)forumListIter.next(); + String fid = cForum.getId().toExternalString(); + fid = fid.substring(1,fid.lastIndexOf("_")); + %> + +<%}%> +
<%=cForum.getTitle()%>
<%=cForum.getDescription().getText()%>
+<%if (gList.size() > 0){%> + +Select a group discussion forum that you wish to grade from the list below. + + + + <% +while (groupListIter.hasNext()) { + Group group = (Group)groupListIter.next(); + Conference conf = cfLoader.loadByGroupId(group.getId()); + BbList frmList = fLoader.loadByConferenceId(conf.getId()); + BbList.Iterator fListIter = frmList.getFilteringIterator(); + while (fListIter.hasNext()) { + Forum cForum = (Forum)fListIter.next(); + String fid = cForum.getId().toExternalString(); + fid = fid.substring(1,fid.lastIndexOf("_")); + String gid = group.getId().toExternalString(); + gid = gid.substring(1,gid.lastIndexOf("_")); + %> + +<%}%> +
<%=group.getTitle()%> - <%=cForum.getTitle()%>
<%=cForum.getDescription().getText()%>
+<%}}%> + + +
+
+ + + Index: lams_bb_integration/web/modules/learnermonitor.jsp =================================================================== diff -u -rfb8ca0f2bd535731334235c19819744f4712fad0 -ra930db13eb2e9bd50802f65516c169da454e9030 --- lams_bb_integration/web/modules/learnermonitor.jsp (.../learnermonitor.jsp) (revision fb8ca0f2bd535731334235c19819744f4712fad0) +++ lams_bb_integration/web/modules/learnermonitor.jsp (.../learnermonitor.jsp) (revision a930db13eb2e9bd50802f65516c169da454e9030) @@ -26,7 +26,22 @@ String monitorUrl = LamsSecurityUtil.generateRequestURL(ctx, "monitor") + "&lsid=" + lsid; String liveEditUrl = LamsSecurityUtil.generateRequestURL(ctx, "author"); +// add port to the url if the port is in the blackboard url. + int bbport = request.getServerPort(); + String bbportstr = bbport != 0 ? ":" + bbport : ""; + //String contentUrl = LamsSecurityUtil.generateRequestURL(ctx, "learner") + "&lsid=" + learningSessionId; + String updateGradesUrl = "\"" + request.getScheme() + + "://" + + request.getServerName() + + bbportstr + + request.getContextPath() + + "/modules/updateGrades.jsp?lsid=" + lsid + + "&course_id=" + request.getParameter("course_id") + + "&lineitem_id=" + request.getParameter("lineitem_id") + + "\""; + + String course_idstr = request.getParameter("course_id"); BbPersistenceManager bbPm = BbServiceManager.getPersistenceService().getDbPersistenceManager(); @@ -131,6 +146,11 @@ } } + function updateGrades() + { + window.location = <%=updateGradesUrl%> + } + function openAuthorForEditOnFly( learningDesignID ) { liveEditUrl= '<%=liveEditUrl%>' + '&layout=editonfly&learningDesignID=' + learningDesignID; @@ -144,6 +164,8 @@ monitorWin.focus(); } } + + //--> @@ -163,8 +185,9 @@ Please Choose an Option

     - + + Index: lams_bb_integration/web/modules/newlineitem.jsp =================================================================== diff -u --- lams_bb_integration/web/modules/newlineitem.jsp (revision 0) +++ lams_bb_integration/web/modules/newlineitem.jsp (revision a930db13eb2e9bd50802f65516c169da454e9030) @@ -0,0 +1,207 @@ +<%// Discussion Grader, Copyright 2004 Joliet Junior College +// Home Page : http://www.jjc.edu/distance/ +// Author : Jeff Nuckles jnuckles@jjc.edu +%> +<%@ page import="java.util.*, + java.text.*, + blackboard.data.*, + blackboard.data.user.*, + blackboard.data.course.*, + blackboard.data.gradebook.*, + blackboard.persist.*, + blackboard.persist.user.*, + blackboard.persist.course.*, + blackboard.persist.gradebook.*, + blackboard.persist.gradebook.impl.*, + blackboard.data.gradebook.impl.*, + blackboard.base.*, + blackboard.base.BbList.*, + blackboard.platform.*, + blackboard.platform.session.*, + blackboard.platform.persistence.*, + blackboard.platform.security.*, + blackboard.platform.plugin.PlugInUtil" + errorPage="/error.jsp" + %> +<%@ taglib uri="/bbData" prefix="bbData"%> +<%@ taglib uri="/bbUI" prefix="bbUI"%> + + +<% +Course course = ctx.getCourse(); +Id courseId = ctx.getCourse().getId(); +String cidString = courseId.toExternalString(); +String fid = request.getParameter("forum_pk1"); +BbPersistenceManager bbPm = BbServiceManager.getPersistenceService().getDbPersistenceManager(); +blackboard.persist.gradebook.impl.OutcomeDefinitionCategoryDbLoader ocdloader = (blackboard.persist.gradebook.impl.OutcomeDefinitionCategoryDbLoader) bbPm.getLoader( blackboard.persist.gradebook.impl.OutcomeDefinitionCategoryDbLoader.TYPE ); +BbList ocdlist = ocdloader.loadByCourseId(courseId); +BbList.Iterator ocdListIter = ocdlist.getFilteringIterator(); +blackboard.persist.gradebook.impl.OutcomeDefinitionScaleDbLoader ocdcloader = (blackboard.persist.gradebook.impl.OutcomeDefinitionScaleDbLoader) bbPm.getLoader( blackboard.persist.gradebook.impl.OutcomeDefinitionScaleDbLoader.TYPE ); +BbList ocdclist = (BbList) ocdcloader.loadByCourseId(courseId); +BbList.Iterator ocdcListIter = ocdclist.getFilteringIterator(); +OutcomeDefinitionDbLoader ocdLoader = (OutcomeDefinitionDbLoader)bbPm.getLoader(OutcomeDefinitionDbLoader.TYPE); +OutcomeDefinitionScaleDbLoader ods2Loader = (OutcomeDefinitionScaleDbLoader)bbPm.getLoader(OutcomeDefinitionScaleDbLoader.TYPE); +OutcomeDefinitionDbPersister ocdPersister = (OutcomeDefinitionDbPersister)bbPm.getPersister(OutcomeDefinitionDbPersister.TYPE); +Calendar cur_date= Calendar.getInstance(); +%> + + + + +Add/Modify Gradebook Item + +Add/Modify Gradebook Item + + +<%if (request.getParameter("title") == null) {%> + +
+ + + + + + + + + + + + + + + + + + + + + + + + Select No for the first option to make this Gradebook item unavailable in the Student Gradebook. Select No for the second option to exclude this Gradebook item from summary calculations. Gradebook items excluded from summary calculations are also excluded from weighting. Also note that if some weighted items are included in calculations and other weighted items are not, grade weight calculations will be skewed. + + + Yes + No + + + Yes + No + + + + + "/> + +<% } else { %> +<% +String result="A new discussion gradebook entry has been created and assigned to this forum."; +try{ + +LineitemDbLoader liLoader = (LineitemDbLoader) bbPm.getLoader(LineitemDbLoader.TYPE); +LineitemDbPersister liPersister = (LineitemDbPersister) bbPm.getPersister(LineitemDbPersister.TYPE); +Lineitem li = new Lineitem(); + +li.setCourseId(courseId); +li.setName(request.getParameter("title")); +li.setType(request.getParameter("categoryId")); +li.setAssessmentLocation( Lineitem.AssessmentLocation.EXTERNAL ); +li.setAssessmentId(request.getParameter("forum_pk1"),Lineitem.AssessmentLocation.EXTERNAL); +li.setAnalysisHandlerUrl("/webapps/jjde-jjcdd-bb_bb60/modules/index.jsp"); +li.setPointsPossible((new Float(request.getParameter("possible"))).floatValue()); +li.setDateAdded(); +li.setColumnOrder(3000); +if (request.getParameter("visible").equals("true")){ +li.setIsAvailable(true); +} else { +li.setIsAvailable(false); +} +li.validate(); +liPersister.persist(li); + +OutcomeDefinition ocd = li.getOutcomeDefinition(); +if (request.getParameter("scorable").equals("true")){ +ocd.setScorable(true); +} else { +ocd.setScorable(false); +} +ocd.setDescription(request.getParameter("description")); +OutcomeDefinitionScale ods; +try{ +ods = ods2Loader.loadByCourseIdAndTitle(courseId,request.getParameter("DisplayAs")); +} catch (Exception e){ +ods = ods2Loader.loadByCourseIdAndTitle(courseId,request.getParameter("DisplayAs")+".title"); +} +ocd.setScale(ods); + +SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); +Calendar cstart = Calendar.getInstance(); +cstart.setTime(formatter.parse(request.getParameter("start_date_0"))); +ocd.setDueDate(cstart); +ocdPersister.persist(ocd); +} catch (java.lang.NumberFormatException e){ +result = "Sorry, some required fields may have been left blank, please return the previous page to correct this situations and submit the form again."; +} +%> + + + + + +
+ + + + + + + + + + + +
+<%=result%> +
+
+<%=(new Date()).toString()%> +
+OK + +
+<%}%> + + + + +
+ +
\ No newline at end of file Index: lams_bb_integration/web/modules/start_lesson_proc.jsp =================================================================== diff -u -raa794f99945f14ceaa049f206ccf55e23b1926db -ra930db13eb2e9bd50802f65516c169da454e9030 --- lams_bb_integration/web/modules/start_lesson_proc.jsp (.../start_lesson_proc.jsp) (revision aa794f99945f14ceaa049f206ccf55e23b1926db) +++ lams_bb_integration/web/modules/start_lesson_proc.jsp (.../start_lesson_proc.jsp) (revision a930db13eb2e9bd50802f65516c169da454e9030) @@ -14,6 +14,8 @@ <%@ page import="blackboard.platform.session.BbSession"%> <%@ page import="blackboard.platform.*"%> <%@ page import="blackboard.platform.plugin.PlugInUtil"%> +<%@ page import="blackboard.data.gradebook.Lineitem" %> +<%@ page import="blackboard.persist.gradebook.LineitemDbPersister" %> <%@ page import="org.lamsfoundation.ld.integration.blackboard.LamsSecurityUtil"%> <%@ page import="org.lamsfoundation.ld.integration.blackboard.LamsPluginUtil"%> @@ -24,10 +26,12 @@ + + <% String title = request.getParameter("title").trim(); String description = request.getParameter("description").trim(); @@ -92,21 +96,38 @@ throw new ServletException(e.getMessage(), e); } - // add port to the url if the port is in the blackboard url. + + // Creating the gradebook row for this lesson + Id lineitemId = bbPm.generateId(Lineitem.LINEITEM_DATA_TYPE,learningSessionId); + + Lineitem lineitem = new Lineitem(); + lineitem.setCourseId(courseId); + lineitem.setName("LAMS Lesson: " + title); + lineitem.setId(lineitemId); + lineitem.setAssessmentId(learningSessionId,Lineitem.AssessmentLocation.EXTERNAL); + lineitem.setAssessmentLocation( Lineitem.AssessmentLocation.EXTERNAL ); + lineitem.setDateAdded(); + lineitem.setIsAvailable(true); + lineitem.setType("LAMS"); + lineitem.setColumnOrder(3000); + lineitem.validate(); + lineitem.setPointsPossible(1); + + + + // add port to the url if the port is in the blackboard url. int bbport = request.getServerPort(); String bbportstr = bbport != 0 ? ":" + bbport : ""; - - - //String contentUrl = LamsSecurityUtil.generateRequestURL(ctx, "learner") + "&lsid=" + learningSessionId; String contentUrl = request.getScheme() + "://" + request.getServerName() + bbportstr + request.getContextPath() + "/modules/learnermonitor.jsp?lsid=" + learningSessionId + - "&course_id=" + request.getParameter("course_id"); + "&course_id=" + request.getParameter("course_id") + + "&lineitem_id=" + lineitemId.getExternalString(); myContent.setUrl(contentUrl); //Parse start/end Date from the @@ -125,6 +146,13 @@ } + + + //LineitemDbLoader liLoader = (LineitemDbLoader) bbPm.getLoader(LineitemDbLoader.TYPE); + LineitemDbPersister lineItempersist = (LineitemDbPersister) bbPm.getPersister(LineitemDbPersister.TYPE); + lineItempersist.persist(lineitem); + + ContentDbPersister persister= (ContentDbPersister) bbPm.getPersister( ContentDbPersister.TYPE ); persister.persist( myContent ); Index: lams_bb_integration/web/modules/updateGrades.jsp =================================================================== diff -u --- lams_bb_integration/web/modules/updateGrades.jsp (revision 0) +++ lams_bb_integration/web/modules/updateGrades.jsp (revision a930db13eb2e9bd50802f65516c169da454e9030) @@ -0,0 +1,59 @@ +<%@ page import="java.util.*, + java.text.*, + blackboard.data.*, + blackboard.data.course.*, + blackboard.data.user.*, + blackboard.persist.*, + blackboard.persist.course.*, + blackboard.persist.user.*, + blackboard.persist.gradebook.*, + blackboard.data.gradebook.*, + blackboard.base.*, + blackboard.platform.*, + blackboard.platform.log.*, + blackboard.platform.session.*, + blackboard.platform.persistence.*, + blackboard.platform.BbServiceManager.*, + blackboard.platform.context.*, + blackboard.base.BbList.*, + blackboard.platform.plugin.PlugInUtil, + java.util.Calendar, + org.lamsfoundation.ld.integration.blackboard.LamsSecurityUtil, + blackboard.platform.security.*" + errorPage="/error.jsp" + %> +<%@ taglib uri="/bbUI" prefix="bbUI"%> +<%@ taglib uri="/bbData" prefix="bbData"%> + + + +<% + BbPersistenceManager bbPm = BbServiceManager.getPersistenceService().getDbPersistenceManager(); + UserDbLoader uLoader = UserDbLoader.Default.getInstance(); + CourseDbLoader cLoader = CourseDbLoader.Default.getInstance(); + CourseMembershipDbLoader memLoader =(CourseMembershipDbLoader) bbPm.getLoader(CourseMembershipDbLoader.TYPE); + ScoreDbLoader scoreLoader = (ScoreDbLoader) bbPm.getLoader(ScoreDbLoader.TYPE); + ScoreDbPersister scorePersister = (ScoreDbPersister) bbPm.getPersister(ScoreDbPersister.TYPE); + String courseId = request.getParameter("course_id"); + String lineitemId = request.getParameter("lineitem_id"); + + +%> + + + + + + + + + LAMS Update Grades + +LAMS Update Grades + +LAMS user progress data successfully updated in GradeBook + + + + +