Index: lams_build/common.properties
===================================================================
diff -u -r9737423f5e8e1d83315339bc0fe8330946845759 -r1b036cb2e23c7358b8b44b47c4a131853d2075d1
--- lams_build/common.properties (.../common.properties) (revision 9737423f5e8e1d83315339bc0fe8330946845759)
+++ lams_build/common.properties (.../common.properties) (revision 1b036cb2e23c7358b8b44b47c4a131853d2075d1)
@@ -18,7 +18,7 @@
# http://www.gnu.org/licenses/gpl.txt
# put into EAR MANIFEST.MF file
-project.version=3.0
+project.version=3.1
# is HTTPS in use? if so, set it to true, so JSESSIONID cookie is secured
secure.cookie=false
Index: lams_build/lib/lams/lams-gradebook.jar
===================================================================
diff -u -rc3db10fe6622ab0bb74375275547f75608241c65 -r1b036cb2e23c7358b8b44b47c4a131853d2075d1
Binary files differ
Index: lams_build/lib/lams/lams.jar
===================================================================
diff -u -r5bcac6182758458fcd994b9bda8c6620a9493265 -r1b036cb2e23c7358b8b44b47c4a131853d2075d1
Binary files differ
Index: lams_build/unix.properties
===================================================================
diff -u -r9737423f5e8e1d83315339bc0fe8330946845759 -r1b036cb2e23c7358b8b44b47c4a131853d2075d1
--- lams_build/unix.properties (.../unix.properties) (revision 9737423f5e8e1d83315339bc0fe8330946845759)
+++ lams_build/unix.properties (.../unix.properties) (revision 1b036cb2e23c7358b8b44b47c4a131853d2075d1)
@@ -33,7 +33,7 @@
contentrepository.base=/var/opt/lams
#JBoss deploy directory (Unix)
-server.home=/usr/local/wildfly-8.2/
+server.home=/usr/local/wildfly-10.1/
#Sass executable.
sass_exec_file=/usr/local/bin/sass
Index: lams_central/src/java/org/lamsfoundation/lams/web/IndexAction.java
===================================================================
diff -u -r5bcac6182758458fcd994b9bda8c6620a9493265 -r1b036cb2e23c7358b8b44b47c4a131853d2075d1
--- lams_central/src/java/org/lamsfoundation/lams/web/IndexAction.java (.../IndexAction.java) (revision 5bcac6182758458fcd994b9bda8c6620a9493265)
+++ lams_central/src/java/org/lamsfoundation/lams/web/IndexAction.java (.../IndexAction.java) (revision 1b036cb2e23c7358b8b44b47c4a131853d2075d1)
@@ -37,9 +37,6 @@
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
-import org.apache.tomcat.util.json.JSONArray;
-import org.apache.tomcat.util.json.JSONException;
-import org.apache.tomcat.util.json.JSONObject;
import org.lamsfoundation.lams.index.IndexLinkBean;
import org.lamsfoundation.lams.integration.service.IIntegrationService;
import org.lamsfoundation.lams.integration.service.IntegrationService;
@@ -59,6 +56,10 @@
import org.springframework.web.context.support.WebApplicationContextUtils;
import org.springframework.web.util.HtmlUtils;
+import com.fasterxml.jackson.databind.node.ArrayNode;
+import com.fasterxml.jackson.databind.node.JsonNodeFactory;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+
/**
*
* @author Fei Yang
@@ -77,7 +78,7 @@
public ActionForward unspecified(ActionMapping mapping, ActionForm form, HttpServletRequest request,
HttpServletResponse response) throws Exception {
- setHeaderLinks(request);
+ IndexAction.setHeaderLinks(request);
setAdminLinks(request);
// check if this is user's first login; some action (like displaying a dialog for disabling tutorials) can be
@@ -114,7 +115,7 @@
return mapping.findForward("editprofile");
} else if (StringUtils.equals(method, "password")) {
return mapping.findForward("password");
- } else if (StringUtils.equals(method, "portrait")) {
+ } else if (StringUtils.equals(method, "portrait")) {
return mapping.findForward("portrait");
} else if (StringUtils.equals(method, "lessons")) {
return mapping.findForward("lessons");
@@ -135,23 +136,24 @@
return null;
}
}
-
+
// only show the growl warning the first time after a user has logged in & if turned on in configuration
Boolean tzWarning = Configuration.getAsBoolean(ConfigurationKeys.SHOW_TIMEZONE_WARNING);
request.setAttribute("showTimezoneWarning", tzWarning);
request.setAttribute("showTimezoneWarningPopup", false);
- if ( tzWarning ) {
+ if (tzWarning) {
Boolean ssWarningShown = (Boolean) ss.getAttribute("timezoneWarningShown");
- if ( ! Boolean.TRUE.equals(ssWarningShown) ) {
+ if (!Boolean.TRUE.equals(ssWarningShown)) {
ss.setAttribute("timezoneWarningShown", Boolean.TRUE);
request.setAttribute("showTimezoneWarningPopup", true);
}
}
-
- List favoriteOrganisations = userManagementService.getFavoriteOrganisationsByUser(userDTO.getUserID());
+
+ List favoriteOrganisations = userManagementService
+ .getFavoriteOrganisationsByUser(userDTO.getUserID());
request.setAttribute("favoriteOrganisations", favoriteOrganisations);
request.setAttribute("activeOrgId", user.getLastVisitedOrganisationId());
-
+
boolean isSysadmin = request.isUserInRole(Role.SYSADMIN);
int userCoursesCount = userManagementService.getCountActiveCoursesByUser(userDTO.getUserID(), isSysadmin, null);
request.setAttribute("isCourseSearchOn", userCoursesCount > 10);
@@ -160,9 +162,9 @@
}
private static void setHeaderLinks(HttpServletRequest request) {
- List headerLinks = new ArrayList();
+ List headerLinks = new ArrayList<>();
if (request.isUserInRole(Role.AUTHOR)) {
- if (isPedagogicalPlannerAvailable()) {
+ if (IndexAction.isPedagogicalPlannerAvailable()) {
headerLinks.add(new IndexLinkBean("index.planner", "javascript:openPedagogicalPlanner()"));
}
headerLinks.add(new IndexLinkBean("index.author", "javascript:showAuthoringDialog()"));
@@ -178,7 +180,7 @@
}
private void setAdminLinks(HttpServletRequest request) {
- List adminLinks = new ArrayList();
+ List adminLinks = new ArrayList<>();
if (request.isUserInRole(Role.SYSADMIN) || request.isUserInRole(Role.GROUP_ADMIN)
|| request.isUserInRole(Role.GROUP_MANAGER)) {
adminLinks.add(new IndexLinkBean("index.courseman", "javascript:openOrgManagement("
@@ -194,10 +196,10 @@
* Returns list of organisations for user. Used by offcanvas tablesorter on main.jsp.
*/
public ActionForward getOrgs(ActionMapping mapping, ActionForm form, HttpServletRequest request,
- HttpServletResponse res) throws IOException, ServletException, JSONException {
+ HttpServletResponse res) throws IOException, ServletException {
getUserManagementService();
User loggedInUser = getUserManagementService().getUserByLogin(request.getRemoteUser());
-
+
Integer userId = loggedInUser.getUserId();
boolean isSysadmin = request.isUserInRole(Role.SYSADMIN);
String searchString = WebUtil.readStrParam(request, "fcol[1]", true);
@@ -218,27 +220,28 @@
//
// }
- List orgDtos = userManagementService.getActiveCoursesByUser(userId, isSysadmin, page, size, searchString);
+ List orgDtos = userManagementService.getActiveCoursesByUser(userId, isSysadmin, page, size,
+ searchString);
- JSONObject responcedata = new JSONObject();
- responcedata.put("total_rows", userManagementService.getCountActiveCoursesByUser(userId, isSysadmin, searchString));
+ ObjectNode responcedata = JsonNodeFactory.instance.objectNode();
+ responcedata.put("total_rows",
+ userManagementService.getCountActiveCoursesByUser(userId, isSysadmin, searchString));
- JSONArray rows = new JSONArray();
+ ArrayNode rows = JsonNodeFactory.instance.arrayNode();
for (OrganisationDTO orgDto : orgDtos) {
-
- JSONObject responseRow = new JSONObject();
+ ObjectNode responseRow = JsonNodeFactory.instance.objectNode();
responseRow.put("id", orgDto.getOrganisationID());
String orgName = orgDto.getName() == null ? "" : orgDto.getName();
responseRow.put("name", HtmlUtils.htmlEscape(orgName));
- rows.put(responseRow);
+ rows.add(responseRow);
}
- responcedata.put("rows", rows);
+ responcedata.set("rows", rows);
res.setContentType("application/json;charset=utf-8");
res.getWriter().print(new String(responcedata.toString()));
return null;
}
-
+
/**
* Toggles whether organisation is marked as favorite.
*/
@@ -254,18 +257,18 @@
List favoriteOrganisations = userManagementService.getFavoriteOrganisationsByUser(userId);
request.setAttribute("favoriteOrganisations", favoriteOrganisations);
-
+
String activeOrgId = request.getParameter("activeOrgId");
request.setAttribute("activeOrgId", activeOrgId);
return mapping.findForward("favoriteOrganisations");
}
-
+
/**
* Saves to DB last visited organisation. It's required for displaying some org on main.jsp next time user logs in.
*/
- public ActionForward storeLastVisitedOrganisation(ActionMapping mapping, ActionForm form, HttpServletRequest request,
- HttpServletResponse res) throws IOException, ServletException {
+ public ActionForward storeLastVisitedOrganisation(ActionMapping mapping, ActionForm form,
+ HttpServletRequest request, HttpServletResponse res) throws IOException, ServletException {
getUserManagementService();
Integer lastVisitedOrganisationId = WebUtil.readIntParam(request, "orgId", false);
@@ -278,13 +281,13 @@
return null;
}
-
+
private Integer getUserId() {
HttpSession ss = SessionManager.getSession();
UserDTO learner = (UserDTO) ss.getAttribute(AttributeNames.USER);
return learner != null ? learner.getUserID() : null;
}
-
+
private IIntegrationService getIntegrationService() {
if (integrationService == null) {
integrationService = (IntegrationService) WebApplicationContextUtils
Index: lams_central/src/java/org/lamsfoundation/lams/web/RatingServlet.java
===================================================================
diff -u -r7665ade66b927eb4b1fa6cb20ad55f3c1d7c2778 -r1b036cb2e23c7358b8b44b47c4a131853d2075d1
--- lams_central/src/java/org/lamsfoundation/lams/web/RatingServlet.java (.../RatingServlet.java) (revision 7665ade66b927eb4b1fa6cb20ad55f3c1d7c2778)
+++ lams_central/src/java/org/lamsfoundation/lams/web/RatingServlet.java (.../RatingServlet.java) (revision 1b036cb2e23c7358b8b44b47c4a131853d2075d1)
@@ -20,7 +20,6 @@
* ****************************************************************
*/
-
package org.lamsfoundation.lams.web;
import java.io.IOException;
@@ -37,8 +36,6 @@
import org.apache.commons.lang.StringEscapeUtils;
import org.apache.log4j.Logger;
-import org.apache.tomcat.util.json.JSONException;
-import org.apache.tomcat.util.json.JSONObject;
import org.lamsfoundation.lams.rating.dto.ItemRatingCriteriaDTO;
import org.lamsfoundation.lams.rating.model.LearnerItemRatingCriteria;
import org.lamsfoundation.lams.rating.model.RatingCriteria;
@@ -51,6 +48,9 @@
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;
+import com.fasterxml.jackson.databind.node.JsonNodeFactory;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+
/**
* Stores rating.
*
@@ -67,7 +67,7 @@
@Override
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
- JSONObject JSONObject = new JSONObject();
+ ObjectNode responseJSON = JsonNodeFactory.instance.objectNode();
getRatingService();
String objectId = WebUtil.readStrParam(request, "idBox");
@@ -78,83 +78,82 @@
UserDTO user = (UserDTO) SessionManager.getSession().getAttribute(AttributeNames.USER);
Integer userId = user.getUserID();
-
+
// get rating value as either float or comment String
- try {
- boolean doSave = true;
- boolean ratingLimitsByCriteria = WebUtil.readBooleanParam(request, "ratingLimitsByCriteria", false);
+ boolean doSave = true;
+ boolean ratingLimitsByCriteria = WebUtil.readBooleanParam(request, "ratingLimitsByCriteria", false);
- Long maxRatingsForItem = WebUtil.readLongParam(request, "maxRatingsForItem", true);
+ Long maxRatingsForItem = WebUtil.readLongParam(request, "maxRatingsForItem", true);
// log.debug("RatingServlet: Check Max rates for an item reached. Item " + itemId + " criteria id "
// + criteria.getRatingCriteriaId() + " maxRatingsForItem " + maxRatingsForItem);
- if (maxRatingsForItem != null && maxRatingsForItem > 0) {
- if (!ToolActivityRatingCriteria.class.isInstance(criteria)) {
- log.error(
- "Unable to enforce max ratings on a non ToolActivityRatingCritera class. Need tool content id to do the db lookup!");
- } else {
- ToolActivityRatingCriteria toolCriteria = (ToolActivityRatingCriteria) criteria;
- List itemIds = new LinkedList();
- itemIds.add(itemId);
- Map itemIdToRatedUsersCountMap = ratingLimitsByCriteria ?
- ratingService.countUsersRatedEachItemByCriteria(ratingCriteriaId, toolSessionId, itemIds, userId) :
- ratingService.countUsersRatedEachItem(toolCriteria.getToolContentId(), toolSessionId, itemIds, userId);
+ if (maxRatingsForItem != null && maxRatingsForItem > 0) {
+ if (!ToolActivityRatingCriteria.class.isInstance(criteria)) {
+ log.error(
+ "Unable to enforce max ratings on a non ToolActivityRatingCritera class. Need tool content id to do the db lookup!");
+ } else {
+ ToolActivityRatingCriteria toolCriteria = (ToolActivityRatingCriteria) criteria;
+ List itemIds = new LinkedList<>();
+ itemIds.add(itemId);
+ Map itemIdToRatedUsersCountMap = ratingLimitsByCriteria
+ ? ratingService.countUsersRatedEachItemByCriteria(ratingCriteriaId, toolSessionId, itemIds,
+ userId)
+ : ratingService.countUsersRatedEachItem(toolCriteria.getToolContentId(), toolSessionId, itemIds,
+ userId);
- Long currentRatings = itemIdToRatedUsersCountMap.get(itemId);
- if (currentRatings != null && maxRatingsForItem.compareTo(currentRatings) <= 0) {
- JSONObject.put("error", true);
- JSONObject.put("message",
- "Maximum number of ratings for this item has been reached. No more may be saved.");
+ Long currentRatings = itemIdToRatedUsersCountMap.get(itemId);
+ if (currentRatings != null && maxRatingsForItem.compareTo(currentRatings) <= 0) {
+ responseJSON.put("error", true);
+ responseJSON.put("message",
+ "Maximum number of ratings for this item has been reached. No more may be saved.");
// log.debug("RatingServlet: Max rates for an item reached. Item " + itemId + " criteria id "
// + criteria.getRatingCriteriaId() + " count " + currentRatings);
- doSave = false;
- }
+ doSave = false;
}
}
+ }
- if (doSave) {
- if (criteria.isCommentsEnabled()) {
- // can have but do not have to have comment
- String comment = WebUtil.readStrParam(request, "comment", true);
- if ( comment != null ) {
- ratingService.commentItem(criteria, toolSessionId, userId, itemId, comment);
- JSONObject.put("comment", StringEscapeUtils.escapeCsv(comment));
- }
- }
-
- String floatString = request.getParameter("rate");
- if ( floatString != null && floatString.length() > 0 ) {
- float rating = Float.parseFloat(request.getParameter("rate"));
+ if (doSave) {
+ if (criteria.isCommentsEnabled()) {
+ // can have but do not have to have comment
+ String comment = WebUtil.readStrParam(request, "comment", true);
+ if (comment != null) {
+ ratingService.commentItem(criteria, toolSessionId, userId, itemId, comment);
+ responseJSON.put("comment", StringEscapeUtils.escapeCsv(comment));
+ }
+ }
- ItemRatingCriteriaDTO averageRatingDTO = ratingService.rateItem(criteria, toolSessionId, userId, itemId, rating);
+ String floatString = request.getParameter("rate");
+ if (floatString != null && floatString.length() > 0) {
+ float rating = Float.parseFloat(request.getParameter("rate"));
- NumberFormat numberFormat = NumberFormat.getInstance(Locale.US);
- numberFormat.setMaximumFractionDigits(1);
- JSONObject.put("userRating", averageRatingDTO.getUserRating());
- JSONObject.put("averageRating", averageRatingDTO.getAverageRating());
- JSONObject.put("numberOfVotes", averageRatingDTO.getNumberOfVotes());
- }
+ ItemRatingCriteriaDTO averageRatingDTO = ratingService.rateItem(criteria, toolSessionId, userId, itemId,
+ rating);
- boolean hasRatingLimits = WebUtil.readBooleanParam(request, "hasRatingLimits", false);
+ NumberFormat numberFormat = NumberFormat.getInstance(Locale.US);
+ numberFormat.setMaximumFractionDigits(1);
+ responseJSON.put("userRating", averageRatingDTO.getUserRating());
+ responseJSON.put("averageRating", averageRatingDTO.getAverageRating());
+ responseJSON.put("numberOfVotes", averageRatingDTO.getNumberOfVotes());
+ }
- // refresh countRatedItems in case there is rating limit set
- // Preview tool counts rated items on a criteria basis, other tools on a set of criteria basis!
- if (hasRatingLimits) {
- // as long as this can be requested only for LEARNER_ITEM_CRITERIA_TYPE type, cast Criteria
- LearnerItemRatingCriteria learnerItemRatingCriteria = (LearnerItemRatingCriteria) criteria;
- Long toolContentId = learnerItemRatingCriteria.getToolContentId();
+ boolean hasRatingLimits = WebUtil.readBooleanParam(request, "hasRatingLimits", false);
- int countRatedItems = ratingLimitsByCriteria ?
- ratingService.getCountItemsRatedByUserByCriteria(ratingCriteriaId, userId) :
- ratingService.getCountItemsRatedByUser(toolContentId, userId);
- JSONObject.put("countRatedItems", countRatedItems);
- }
+ // refresh countRatedItems in case there is rating limit set
+ // Preview tool counts rated items on a criteria basis, other tools on a set of criteria basis!
+ if (hasRatingLimits) {
+ // as long as this can be requested only for LEARNER_ITEM_CRITERIA_TYPE type, cast Criteria
+ LearnerItemRatingCriteria learnerItemRatingCriteria = (LearnerItemRatingCriteria) criteria;
+ Long toolContentId = learnerItemRatingCriteria.getToolContentId();
+
+ int countRatedItems = ratingLimitsByCriteria
+ ? ratingService.getCountItemsRatedByUserByCriteria(ratingCriteriaId, userId)
+ : ratingService.getCountItemsRatedByUser(toolContentId, userId);
+ responseJSON.put("countRatedItems", countRatedItems);
}
- } catch (JSONException e) {
- throw new ServletException(e);
}
response.setContentType("application/json;charset=utf-8");
- response.getWriter().print(JSONObject);
+ response.getWriter().print(responseJSON);
}
@Override
Index: lams_central/src/java/org/lamsfoundation/lams/web/action/LtiAction.java
===================================================================
diff -u -r7d42c3a0d64c5e7a30a7fd895ab73aa4ad109074 -r1b036cb2e23c7358b8b44b47c4a131853d2075d1
--- lams_central/src/java/org/lamsfoundation/lams/web/action/LtiAction.java (.../LtiAction.java) (revision 7d42c3a0d64c5e7a30a7fd895ab73aa4ad109074)
+++ lams_central/src/java/org/lamsfoundation/lams/web/action/LtiAction.java (.../LtiAction.java) (revision 1b036cb2e23c7358b8b44b47c4a131853d2075d1)
@@ -22,8 +22,6 @@
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionRedirect;
-import org.apache.tomcat.util.json.JSONException;
-import org.apache.tomcat.util.json.JSONObject;
import org.imsglobal.lti.BasicLTIConstants;
import org.imsglobal.lti.BasicLTIUtil;
import org.lamsfoundation.lams.contentrepository.exception.RepositoryCheckedException;
@@ -58,11 +56,14 @@
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;
+import com.fasterxml.jackson.databind.node.JsonNodeFactory;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+
import net.oauth.OAuth;
/**
* Shows either addLesson.jsp or learnerMonitor.jsp pages.
- *
+ *
* @author Andrey Balan
*/
public class LtiAction extends LamsDispatchAction {
@@ -80,15 +81,16 @@
* Single entry point to LAMS LTI processing mechanism. It determines here whether to show author or learnerMonitor
* pages
*/
+ @Override
public ActionForward unspecified(ActionMapping mapping, ActionForm form, HttpServletRequest request,
- HttpServletResponse response) throws IOException, UserAccessDeniedException, JSONException,
- RepositoryCheckedException, UserInfoFetchException, UserInfoValidationException {
+ HttpServletResponse response) throws IOException, UserAccessDeniedException, RepositoryCheckedException,
+ UserInfoFetchException, UserInfoValidationException {
initServices();
String consumerKey = request.getParameter(LtiUtils.OAUTH_CONSUMER_KEY);
String resourceLinkId = request.getParameter(BasicLTIConstants.RESOURCE_LINK_ID);
String tcGradebookId = request.getParameter(BasicLTIConstants.LIS_RESULT_SOURCEDID);
String extUserId = request.getParameter(BasicLTIConstants.USER_ID);
-
+
ExtServerLessonMap lesson = integrationService.getLtiConsumerLesson(consumerKey, resourceLinkId);
//support for ContentItemSelectionRequest. If lesson was created during such request, update its ExtServerLesson's resourceLinkId for the first time
boolean isContentItemSelection = WebUtil.readBooleanParam(request, "custom_isContentItemSelection", false);
@@ -98,7 +100,7 @@
lesson.setResourceLinkId(resourceLinkId);
userManagementService.save(lesson);
}
-
+
//update lessonFinishCallbackUrl. We store it one time during the very first call to LAMS and it stays the same all the time afterwards
String lessonFinishCallbackUrl = request.getParameter(BasicLTIConstants.LIS_OUTCOME_SERVICE_URL);
ExtServer extServer = integrationService.getExtServer(consumerKey);
@@ -118,13 +120,13 @@
return mapping.findForward("error");
}
- //determine whether to show author or learnerMonitor pages
+ //determine whether to show author or learnerMonitor pages
if (lesson == null) {
return addLesson(mapping, form, request, response);
-
+
} else {
- //as per LTI spec we need to update tool consumer's gradebook id on every LTI call
+ //as per LTI spec we need to update tool consumer's gradebook id on every LTI call
ExtUserUseridMap extUserMap = integrationService.getExistingExtUserUseridMap(extServer, extUserId);
extUserMap.setTcGradebookId(tcGradebookId);
userManagementService.save(extUserMap);
@@ -139,8 +141,8 @@
* design and start a lesson.
*/
private ActionForward addLesson(ActionMapping mapping, ActionForm form, HttpServletRequest request,
- HttpServletResponse response) throws IOException, UserAccessDeniedException, JSONException,
- RepositoryCheckedException, UserInfoFetchException, UserInfoValidationException {
+ HttpServletResponse response) throws IOException, UserAccessDeniedException, RepositoryCheckedException,
+ UserInfoFetchException, UserInfoValidationException {
initServices();
Integer userId = getUser().getUserID();
String contextId = request.getParameter(BasicLTIConstants.CONTEXT_ID);
@@ -167,7 +169,7 @@
request.setAttribute(BasicLTIConstants.CONTEXT_ID, contextId);
request.setAttribute(CentralConstants.PARAM_TITLE, resourceLinkTitle);
request.setAttribute(CentralConstants.PARAM_DESC, resourceLinkDescription);
-
+
//support for ContentItemSelectionRequest
String ltiMessageType = request.getParameter(BasicLTIConstants.LTI_MESSAGE_TYPE);
if (LtiUtils.LTI_MESSAGE_TYPE_CONTENTITEMSELECTIONREQUEST.equals(ltiMessageType)) {
@@ -177,11 +179,11 @@
"ContentItemSelectionRequest is missing content_item_return_url parameter");
return null;
}
-
+
request.setAttribute(BasicLTIConstants.LTI_MESSAGE_TYPE, ltiMessageType);
request.setAttribute(LtiUtils.CONTENT_ITEM_RETURN_URL, contentItemReturnUrl);
request.setAttribute("title", request.getParameter("title"));
- request.setAttribute("desc", request.getParameter("text").replaceAll("\\<[^>]*>",""));
+ request.setAttribute("desc", request.getParameter("text").replaceAll("\\<[^>]*>", ""));
request.setAttribute("data", request.getParameter("data"));
}
@@ -192,8 +194,8 @@
* Starts a lesson. Then prompts to learnerMonitor page or autosubmitForm (in case of ContentItemSelectionRequest).
*/
public ActionForward startLesson(ActionMapping mapping, ActionForm form, HttpServletRequest request,
- HttpServletResponse response) throws IOException, UserAccessDeniedException, JSONException,
- RepositoryCheckedException, UserInfoValidationException, UserInfoFetchException {
+ HttpServletResponse response) throws IOException, UserAccessDeniedException, RepositoryCheckedException,
+ UserInfoValidationException, UserInfoFetchException {
initServices();
Integer userId = getUser().getUserID();
User user = getRealUser(getUser());
@@ -206,7 +208,7 @@
String contextId = request.getParameter(BasicLTIConstants.CONTEXT_ID);
Integer organisationId = new Integer(WebUtil.readIntParam(request, CentralConstants.ATTR_COURSE_ID));
boolean enableLessonIntro = WebUtil.readBooleanParam(request, "enableLessonIntro", false);
-
+
//only monitors are allowed to create lesson
if (!securityService.isGroupMonitor(organisationId, userId, "add lesson", false)) {
response.sendError(HttpServletResponse.SC_FORBIDDEN, "User is not a monitor in the organisation");
@@ -218,8 +220,8 @@
// 1. init lesson
Lesson lesson = monitoringService.initializeLesson(title, desc, new Long(ldIdStr),
- organisation.getOrganisationId(), user.getUserId(), null, false, enableLessonIntro, false, false,
- true, true, false, false, true, null, null);
+ organisation.getOrganisationId(), user.getUserId(), null, false, enableLessonIntro, false, false, true,
+ true, false, false, true, null, null);
// 2. create lessonClass for lesson
List staffList = new LinkedList();
staffList.add(user);
@@ -234,13 +236,13 @@
monitoringService.startLesson(lesson.getLessonId(), user.getUserId());
// store information which extServer has started the lesson
integrationService.createExtServerLessonMap(lesson.getLessonId(), resourceLinkId, extServer);
-
+
//support for ContentItemSelectionRequest
String ltiMessageType = request.getParameter(BasicLTIConstants.LTI_MESSAGE_TYPE);
String contentItemReturnUrl = request.getParameter(LtiUtils.CONTENT_ITEM_RETURN_URL);
if (LtiUtils.LTI_MESSAGE_TYPE_CONTENTITEMSELECTIONREQUEST.equals(ltiMessageType)) {
String opaqueTCData = request.getParameter("data");
-
+
// Get the post data for the placement
String returnValues = postLaunchHTML(extServer, lesson, contentItemReturnUrl, opaqueTCData);
@@ -262,8 +264,8 @@
out.println("