Fisheye: Tag ff911101cbe92d6813691c20c292fa04519820b4 refers to a dead (removed) revision in file `lams_tool_kaltura/src/java/org/lamsfoundation/lams/tool/kaltura/web/actions/AuthoringAction.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag ff911101cbe92d6813691c20c292fa04519820b4 refers to a dead (removed) revision in file `lams_tool_kaltura/src/java/org/lamsfoundation/lams/tool/kaltura/web/actions/ClearSessionAction.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag ff911101cbe92d6813691c20c292fa04519820b4 refers to a dead (removed) revision in file `lams_tool_kaltura/src/java/org/lamsfoundation/lams/tool/kaltura/web/actions/LearningAction.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag ff911101cbe92d6813691c20c292fa04519820b4 refers to a dead (removed) revision in file `lams_tool_kaltura/src/java/org/lamsfoundation/lams/tool/kaltura/web/actions/MonitoringAction.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag ff911101cbe92d6813691c20c292fa04519820b4 refers to a dead (removed) revision in file `lams_tool_kaltura/src/java/org/lamsfoundation/lams/tool/kaltura/web/actions/PedagogicalPlannerAction.java'.
Fisheye: No comparison available. Pass `N' to diff?
Index: lams_tool_kaltura/src/java/org/lamsfoundation/lams/tool/kaltura/web/controller/AuthoringController.java
===================================================================
diff -u
--- lams_tool_kaltura/src/java/org/lamsfoundation/lams/tool/kaltura/web/controller/AuthoringController.java (revision 0)
+++ lams_tool_kaltura/src/java/org/lamsfoundation/lams/tool/kaltura/web/controller/AuthoringController.java (revision ff911101cbe92d6813691c20c292fa04519820b4)
@@ -0,0 +1,401 @@
+/****************************************************************
+ * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org)
+ * =============================================================
+ * License Information: http://lamsfoundation.org/licensing/lams/2.0/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
+ *
+ * http://www.gnu.org/licenses/gpl.txt
+ * ****************************************************************
+ */
+
+package org.lamsfoundation.lams.tool.kaltura.web.controller;
+
+import java.io.IOException;
+import java.sql.Timestamp;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Set;
+import java.util.SortedSet;
+import java.util.TreeSet;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpSession;
+
+import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang.math.NumberUtils;
+import org.apache.log4j.Logger;
+import org.lamsfoundation.lams.authoring.web.AuthoringConstants;
+import org.lamsfoundation.lams.tool.ToolAccessMode;
+import org.lamsfoundation.lams.tool.kaltura.model.Kaltura;
+import org.lamsfoundation.lams.tool.kaltura.model.KalturaItem;
+import org.lamsfoundation.lams.tool.kaltura.model.KalturaUser;
+import org.lamsfoundation.lams.tool.kaltura.service.IKalturaService;
+import org.lamsfoundation.lams.tool.kaltura.util.KalturaConstants;
+import org.lamsfoundation.lams.tool.kaltura.util.KalturaException;
+import org.lamsfoundation.lams.tool.kaltura.util.KalturaItemComparator;
+import org.lamsfoundation.lams.tool.kaltura.web.forms.AuthoringForm;
+import org.lamsfoundation.lams.usermanagement.dto.UserDTO;
+import org.lamsfoundation.lams.util.WebUtil;
+import org.lamsfoundation.lams.web.session.SessionManager;
+import org.lamsfoundation.lams.web.util.AttributeNames;
+import org.lamsfoundation.lams.web.util.SessionMap;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+
+/**
+ * @author Andrey Balan
+ *
+ *
+ *
+ *
+ *
+ *
+ */
+@Controller
+@RequestMapping("/authoring")
+public class AuthoringController {
+
+ private static Logger logger = Logger.getLogger(AuthoringController.class);
+
+ @Autowired
+ @Qualifier("kalturaService")
+ private IKalturaService kalturaService;
+
+ // Authoring SessionMap key names
+ private static final String KEY_TOOL_CONTENT_ID = "toolContentID";
+ private static final String KEY_CONTENT_FOLDER_ID = "contentFolderID";
+ private static final String KEY_MODE = "mode";
+
+ @RequestMapping("")
+ protected String unspecified(@ModelAttribute("authoringForm") AuthoringForm authoringForm,
+ HttpServletRequest request) {
+
+ // Extract toolContentID from parameters.
+ Long toolContentID = new Long(WebUtil.readLongParam(request, AttributeNames.PARAM_TOOL_CONTENT_ID));
+
+ String contentFolderID = WebUtil.readStrParam(request, AttributeNames.PARAM_CONTENT_FOLDER_ID);
+
+ ToolAccessMode mode = WebUtil.readToolAccessModeAuthorDefaulted(request);
+
+ // retrieving Kaltura with given toolContentID
+ Kaltura kaltura = kalturaService.getKalturaByContentId(toolContentID);
+ if (kaltura == null) {
+ kaltura = kalturaService.copyDefaultContent(toolContentID);
+ kaltura.setCreateDate(new Date());
+ kalturaService.saveOrUpdateKaltura(kaltura);
+ }
+
+ if (mode.isTeacher()) {
+ // Set the defineLater flag so that learners cannot use content
+ // while we
+ // are editing. This flag is released when updateContent is called.
+ kaltura.setDefineLater(true);
+ kalturaService.saveOrUpdateKaltura(kaltura);
+
+ //audit log the teacher has started editing activity in monitor
+ kalturaService.auditLogStartEditingActivityInMonitor(toolContentID);
+ }
+
+ // Set up the authForm.
+ authoringForm.setTitle(kaltura.getTitle());
+ authoringForm.setInstructions(kaltura.getInstructions());
+ authoringForm.setLockOnFinished(kaltura.isLockOnFinished());
+ authoringForm.setAllowContributeVideos(kaltura.isAllowContributeVideos());
+ authoringForm.setAllowSeeingOtherUsersRecordings(kaltura.isAllowSeeingOtherUsersRecordings());
+ authoringForm.setLearnerContributionLimit(kaltura.getLearnerContributionLimit());
+ authoringForm.setAllowComments(kaltura.isAllowComments());
+ authoringForm.setAllowRatings(kaltura.isAllowRatings());
+ authoringForm.setReflectOnActivity(kaltura.isReflectOnActivity());
+ authoringForm.setReflectInstructions(kaltura.getReflectInstructions());
+
+ // Set up sessionMap
+ SessionMap sessionMap = new SessionMap<>();
+ request.getSession().setAttribute(sessionMap.getSessionID(), sessionMap);
+ request.setAttribute(KalturaConstants.ATTR_SESSION_MAP, sessionMap);
+ authoringForm.setSessionMapID(sessionMap.getSessionID());
+
+ sessionMap.put(AuthoringController.KEY_MODE, mode);
+ sessionMap.put(AuthoringController.KEY_CONTENT_FOLDER_ID, contentFolderID);
+ sessionMap.put(AuthoringController.KEY_TOOL_CONTENT_ID, toolContentID);
+
+ Set items = kaltura.getKalturaItems();
+ // init taskList item list
+ SortedSet taskListItemList = getItemList(sessionMap);
+ taskListItemList.clear();
+ taskListItemList.addAll(items);
+
+ return "pages/authoring/authoring";
+ }
+
+ @RequestMapping(path = "/updateContent", method = RequestMethod.POST)
+ public String updateContent(@ModelAttribute("authoringForm") AuthoringForm authoringForm,
+ HttpServletRequest request) {
+
+ // get authForm and session map.
+ SessionMap sessionMap = getSessionMap(request, authoringForm);
+
+ // get kaltura content.
+ Long toolContentId = (Long) sessionMap.get(AuthoringController.KEY_TOOL_CONTENT_ID);
+ Kaltura kaltura = kalturaService.getKalturaByContentId(toolContentId);
+
+ // update kaltura content using form inputs
+ kaltura.setTitle(authoringForm.getTitle());
+ kaltura.setInstructions(authoringForm.getInstructions());
+ kaltura.setLockOnFinished(authoringForm.isLockOnFinished());
+ kaltura.setAllowContributeVideos(authoringForm.isAllowContributeVideos());
+ kaltura.setLearnerContributionLimit(authoringForm.getLearnerContributionLimit());
+ kaltura.setAllowSeeingOtherUsersRecordings(authoringForm.isAllowSeeingOtherUsersRecordings());
+ kaltura.setAllowComments(authoringForm.isAllowComments());
+ kaltura.setAllowRatings(authoringForm.isAllowRatings());
+ kaltura.setReflectOnActivity(authoringForm.isReflectOnActivity());
+ kaltura.setReflectInstructions(authoringForm.getReflectInstructions());
+
+ // *******************************Handle user*******************
+ HttpSession ss = SessionManager.getSession();
+ UserDTO user = (UserDTO) ss.getAttribute(AttributeNames.USER);
+ KalturaUser kalturaUser = kalturaService.getUserByUserIdAndContentId(new Long(user.getUserID().intValue()),
+ toolContentId);
+ if (kalturaUser == null) {
+ kalturaUser = new KalturaUser(user, kaltura);
+ }
+
+ kaltura.setCreatedBy(kalturaUser);
+
+ // ************************* Handle taskList items *******************
+ Set itemList = new LinkedHashSet();
+ SortedSet items = getItemList(sessionMap);
+ for (KalturaItem item : items) {
+ if (item != null) {
+ // This flushs user UID info to message if this user is a new user.
+ item.setCreatedBy(kalturaUser);
+ itemList.add(item);
+ }
+ }
+ kaltura.setKalturaItems(itemList);
+
+ // delete KalturaItems from database.
+ for (KalturaItem item : getDeletedItemList(sessionMap)) {
+ if (item.getUid() != null) {
+ kalturaService.deleteKalturaItem(item.getUid());
+ }
+ }
+
+ // set the update date
+ kaltura.setUpdateDate(new Date());
+
+ // releasing defineLater flag so that learner can start using the tool.
+ kaltura.setDefineLater(false);
+
+ kalturaService.saveOrUpdateKaltura(kaltura);
+
+ request.setAttribute(AuthoringConstants.LAMS_AUTHORING_SUCCESS_FLAG, Boolean.TRUE);
+
+ // add the sessionMapID to form
+ authoringForm.setSessionMapID(sessionMap.getSessionID());
+
+ request.setAttribute(KalturaConstants.ATTR_SESSION_MAP, sessionMap);
+
+ return "pages/authoring/authoring";
+ }
+
+ /**
+ * Stores uploaded entryId(s).
+ */
+
+ @RequestMapping("/addItem")
+ public String addItem(HttpServletRequest request) throws IOException {
+
+ String sessionMapID = WebUtil.readStrParam(request, KalturaConstants.ATTR_SESSION_MAP_ID);
+ SessionMap sessionMap = (SessionMap) request.getSession()
+ .getAttribute(sessionMapID);
+ request.setAttribute(KalturaConstants.ATTR_SESSION_MAP_ID, sessionMapID);
+
+ // check whether it is "edit(old item)" or "add(new item)"
+ SortedSet itemList = getItemList(sessionMap);
+ KalturaItem item = new KalturaItem();
+ item.setCreateDate(new Timestamp(new Date().getTime()));
+ int maxSeq = 1;
+ if (itemList != null && itemList.size() > 0) {
+ KalturaItem last = itemList.last();
+ maxSeq = last.getSequenceId() + 1;
+ }
+ item.setSequenceId(maxSeq);
+ itemList.add(item);
+
+ String title = WebUtil.readStrParam(request, KalturaConstants.PARAM_ITEM_TITLE, true);
+ if (StringUtils.isBlank(title)) {
+ String itemLocalized = kalturaService.getLocalisedMessage("label.authoring.item", null);
+ title = itemLocalized + " " + maxSeq;
+ }
+ item.setTitle(title);
+
+ int duration = WebUtil.readIntParam(request, KalturaConstants.PARAM_ITEM_DURATION);
+ item.setDuration(duration);
+
+ String entryId = WebUtil.readStrParam(request, KalturaConstants.PARAM_ITEM_ENTRY_ID);
+ if (StringUtils.isBlank(entryId)) {
+ String errorMsg = "Add item failed due to missing entityId (received from Kaltura server).";
+ logger.error(errorMsg);
+ throw new KalturaException(errorMsg);
+ }
+ item.setEntryId(entryId);
+
+ item.setCreateByAuthor(true);
+ item.setHidden(false);
+
+ return "pages/authoring/itemlist";
+ }
+
+ /**
+ * Preview uploaded entryId.
+ */
+ @RequestMapping("/preview")
+ public String preview(HttpServletRequest request) throws IOException {
+
+ // get back sessionMAP
+ String sessionMapID = WebUtil.readStrParam(request, KalturaConstants.ATTR_SESSION_MAP_ID);
+ SessionMap sessionMap = (SessionMap) request.getSession()
+ .getAttribute(sessionMapID);
+
+ int itemIdx = NumberUtils.stringToInt(request.getParameter(KalturaConstants.PARAM_ITEM_INDEX), -1);
+ if (itemIdx != -1) {
+ SortedSet itemList = getItemList(sessionMap);
+ List rList = new ArrayList<>(itemList);
+ KalturaItem item = rList.get(itemIdx);
+ request.setAttribute(KalturaConstants.ATTR_ITEM, item);
+ }
+
+ return "pages/authoring/preview";
+ }
+
+ /**
+ * Remove kaltura item from HttpSession list and update page display. As authoring rule, all persist only happen
+ * when user submit whole page. So this remove is just impact HttpSession values.
+ */
+ @RequestMapping("/removeItem")
+ public String removeItem(HttpServletRequest request) {
+
+ // get back sessionMAP
+ String sessionMapID = WebUtil.readStrParam(request, KalturaConstants.ATTR_SESSION_MAP_ID);
+ SessionMap sessionMap = (SessionMap) request.getSession()
+ .getAttribute(sessionMapID);
+ request.setAttribute(KalturaConstants.ATTR_SESSION_MAP_ID, sessionMapID);
+
+ int itemIdx = NumberUtils.stringToInt(request.getParameter(KalturaConstants.PARAM_ITEM_INDEX), -1);
+ if (itemIdx != -1) {
+ SortedSet itemList = getItemList(sessionMap);
+ List rList = new ArrayList<>(itemList);
+ KalturaItem item = rList.remove(itemIdx);
+ itemList.clear();
+ itemList.addAll(rList);
+ // add to delList
+ List delList = getDeletedItemList(sessionMap);
+ delList.add(item);
+ }
+
+ return "pages/authoring/itemlist";
+ }
+
+ /**
+ * Move up current item.
+ */
+ @RequestMapping("/upItem")
+ public String upItem(HttpServletRequest request) {
+ return switchItem(request, true);
+ }
+
+ /**
+ * Move down current item.
+ */
+ @RequestMapping("/downItem")
+ public String downItem(HttpServletRequest request) {
+ return switchItem(request, false);
+ }
+
+ private String switchItem(HttpServletRequest request, boolean up) {
+ // get back sessionMAP
+ String sessionMapID = WebUtil.readStrParam(request, KalturaConstants.ATTR_SESSION_MAP_ID);
+ SessionMap sessionMap = (SessionMap) request.getSession().getAttribute(sessionMapID);
+ request.setAttribute(KalturaConstants.ATTR_SESSION_MAP_ID, sessionMapID);
+
+ int itemIdx = NumberUtils.stringToInt(request.getParameter(KalturaConstants.PARAM_ITEM_INDEX), -1);
+ if (itemIdx != -1) {
+ SortedSet kalturaList = getItemList(sessionMap);
+ List rList = new ArrayList<>(kalturaList);
+ // get current and the target item, and switch their sequnece
+ KalturaItem item = rList.get(itemIdx);
+ KalturaItem repItem;
+ if (up) {
+ repItem = rList.get(--itemIdx);
+ } else {
+ repItem = rList.get(++itemIdx);
+ }
+ int upSeqId = repItem.getSequenceId();
+ repItem.setSequenceId(item.getSequenceId());
+ item.setSequenceId(upSeqId);
+
+ // put back list, it will be sorted again
+ kalturaList.clear();
+ kalturaList.addAll(rList);
+ }
+
+ return "pages/authoring/itemlist";
+ }
+
+ /**
+ * Retrieve the SessionMap from the HttpSession.
+ */
+ private SessionMap getSessionMap(HttpServletRequest request, AuthoringForm authForm) {
+ return (SessionMap) request.getSession().getAttribute(authForm.getSessionMapID());
+ }
+
+ /**
+ * List save current taskList items.
+ */
+ private SortedSet getItemList(SessionMap sessionMap) {
+ SortedSet list = (SortedSet) sessionMap.get(KalturaConstants.ATTR_ITEM_LIST);
+ if (list == null) {
+ list = new TreeSet<>(new KalturaItemComparator());
+ sessionMap.put(KalturaConstants.ATTR_ITEM_LIST, list);
+ }
+ return list;
+ }
+
+ /**
+ * List save deleted taskList items, which could be persisted or non-persisted items.
+ */
+ private List getDeletedItemList(SessionMap sessionMap) {
+ return getListFromSession(sessionMap, KalturaConstants.ATTR_DELETED_ITEM_LIST);
+ }
+
+ /**
+ * Get java.util.List
from HttpSession by given name.
+ */
+ private List getListFromSession(SessionMap sessionMap, String name) {
+ List list = (List) sessionMap.get(name);
+ if (list == null) {
+ list = new ArrayList();
+ sessionMap.put(name, list);
+ }
+ return list;
+ }
+}
Index: lams_tool_kaltura/src/java/org/lamsfoundation/lams/tool/kaltura/web/controller/ClearSessionController.java
===================================================================
diff -u
--- lams_tool_kaltura/src/java/org/lamsfoundation/lams/tool/kaltura/web/controller/ClearSessionController.java (revision 0)
+++ lams_tool_kaltura/src/java/org/lamsfoundation/lams/tool/kaltura/web/controller/ClearSessionController.java (revision ff911101cbe92d6813691c20c292fa04519820b4)
@@ -0,0 +1,67 @@
+/****************************************************************
+ * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org)
+ * =============================================================
+ * License Information: http://lamsfoundation.org/licensing/lams/2.0/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2.0
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
+ *
+ * http://www.gnu.org/licenses/gpl.txt
+ * ****************************************************************
+ */
+
+
+package org.lamsfoundation.lams.tool.kaltura.web.controller;
+
+import java.io.IOException;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
+
+import org.lamsfoundation.lams.authoring.web.LamsAuthoringFinishAction;
+import org.lamsfoundation.lams.authoring.web.LamsAuthoringFinishController;
+import org.lamsfoundation.lams.tool.ToolAccessMode;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.context.WebApplicationContext;
+
+/**
+ * This class give a chance to clear HttpSession when user save/close authoring page.
+ *
+ * @author Andrey Balan
+ *
+ *
+ *
+ */
+@Controller
+public class ClearSessionController extends LamsAuthoringFinishController {
+
+ @Autowired
+ private WebApplicationContext applicationContext;
+
+ @RequestMapping("/clearsession")
+ public void execute(HttpServletRequest request, HttpServletResponse response) throws IOException {
+ super.execute(request, response, applicationContext);
+ }
+
+ @Override
+ public void clearSession(String customiseSessionID, HttpSession session, ToolAccessMode mode) {
+ if (mode.isAuthor()) {
+ session.removeAttribute(customiseSessionID);
+ }
+ }
+
+}
Index: lams_tool_kaltura/src/java/org/lamsfoundation/lams/tool/kaltura/web/controller/LearningController.java
===================================================================
diff -u
--- lams_tool_kaltura/src/java/org/lamsfoundation/lams/tool/kaltura/web/controller/LearningController.java (revision 0)
+++ lams_tool_kaltura/src/java/org/lamsfoundation/lams/tool/kaltura/web/controller/LearningController.java (revision ff911101cbe92d6813691c20c292fa04519820b4)
@@ -0,0 +1,613 @@
+/****************************************************************
+ * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org)
+ * =============================================================
+ * License Information: http://lamsfoundation.org/licensing/lams/2.0/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
+ *
+ * http://www.gnu.org/licenses/gpl.txt
+ * ****************************************************************
+ */
+
+package org.lamsfoundation.lams.tool.kaltura.web.controller;
+
+import java.io.IOException;
+import java.sql.Timestamp;
+import java.util.Date;
+import java.util.Set;
+import java.util.TimeZone;
+import java.util.TreeSet;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
+
+import org.apache.commons.lang.StringUtils;
+import org.apache.log4j.Logger;
+import org.lamsfoundation.lams.learning.web.bean.ActivityPositionDTO;
+import org.lamsfoundation.lams.learning.web.util.LearningWebUtil;
+import org.lamsfoundation.lams.notebook.model.NotebookEntry;
+import org.lamsfoundation.lams.notebook.service.CoreNotebookConstants;
+import org.lamsfoundation.lams.tool.ToolAccessMode;
+import org.lamsfoundation.lams.tool.exception.ToolException;
+import org.lamsfoundation.lams.tool.kaltura.dto.AverageRatingDTO;
+import org.lamsfoundation.lams.tool.kaltura.model.Kaltura;
+import org.lamsfoundation.lams.tool.kaltura.model.KalturaComment;
+import org.lamsfoundation.lams.tool.kaltura.model.KalturaItem;
+import org.lamsfoundation.lams.tool.kaltura.model.KalturaSession;
+import org.lamsfoundation.lams.tool.kaltura.model.KalturaUser;
+import org.lamsfoundation.lams.tool.kaltura.service.IKalturaService;
+import org.lamsfoundation.lams.tool.kaltura.util.KalturaCommentComparator;
+import org.lamsfoundation.lams.tool.kaltura.util.KalturaConstants;
+import org.lamsfoundation.lams.tool.kaltura.util.KalturaException;
+import org.lamsfoundation.lams.tool.kaltura.util.KalturaItemComparator;
+import org.lamsfoundation.lams.tool.kaltura.web.forms.ReflectionForm;
+import org.lamsfoundation.lams.usermanagement.dto.UserDTO;
+import org.lamsfoundation.lams.util.DateUtil;
+import org.lamsfoundation.lams.util.MessageService;
+import org.lamsfoundation.lams.util.WebUtil;
+import org.lamsfoundation.lams.web.session.SessionManager;
+import org.lamsfoundation.lams.web.util.AttributeNames;
+import org.lamsfoundation.lams.web.util.SessionMap;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.stereotype.Controller;
+import org.springframework.util.LinkedMultiValueMap;
+import org.springframework.util.MultiValueMap;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.context.WebApplicationContext;
+
+import com.fasterxml.jackson.databind.node.JsonNodeFactory;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+
+/**
+ * @author Andrey Balan
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ */
+@Controller
+@RequestMapping("/learning")
+public class LearningController {
+
+ private static Logger log = Logger.getLogger(LearningController.class);
+
+ @Autowired
+ @Qualifier("kalturaService")
+ private IKalturaService kalturaService;
+
+ @Autowired
+ private WebApplicationContext applicationContext;
+
+ @Autowired
+ @Qualifier("kalturaMessageService")
+ private MessageService messageService;
+
+ @RequestMapping("")
+ public String unspecified(HttpServletRequest request) throws Exception {
+
+ // initialize Session Map
+ SessionMap sessionMap = new SessionMap<>();
+ String sessionMapId = sessionMap.getSessionID();
+ request.getSession().setAttribute(sessionMap.getSessionID(), sessionMap);
+ request.setAttribute(KalturaConstants.ATTR_SESSION_MAP_ID, sessionMapId);
+
+ // 'toolSessionID' and 'mode' paramters are expected to be present.
+ ToolAccessMode mode = WebUtil.readToolAccessModeParam(request, AttributeNames.PARAM_MODE, false);
+ sessionMap.put(AttributeNames.PARAM_MODE, mode);
+ Long toolSessionId = WebUtil.readLongParam(request, AttributeNames.PARAM_TOOL_SESSION_ID);
+ sessionMap.put(AttributeNames.PARAM_TOOL_SESSION_ID, toolSessionId);
+
+ // Retrieve the session and content.
+ KalturaSession kalturaSession = kalturaService.getSessionBySessionId(toolSessionId);
+ if (kalturaSession == null) {
+ throw new KalturaException("Cannot retrieve session with toolSessionID" + toolSessionId);
+ }
+ Kaltura kaltura = kalturaSession.getKaltura();
+ //init getCreatedBy to avoid session close error in proxy object
+ if (kaltura.getCreatedBy() != null) {
+ kaltura.getCreatedBy().getLoginName();
+ }
+
+ //if this parameter true - this request is sent when Monitoring Group
+ boolean isGroupMonitoring = WebUtil.readBooleanParam(request, KalturaConstants.ATTR_IS_GROUP_MONITORING, false);
+ sessionMap.put(KalturaConstants.ATTR_IS_GROUP_MONITORING, isGroupMonitoring);
+
+ KalturaUser user;
+ if (mode.equals(ToolAccessMode.TEACHER) && !isGroupMonitoring) {
+ Long userID = WebUtil.readLongParam(request, AttributeNames.PARAM_USER_ID, false);
+ user = kalturaService.getUserByUserIdAndSessionId(userID, toolSessionId);
+ } else {
+ //in case of lerning and group monitoring create new user
+ user = getCurrentUser(toolSessionId);
+ }
+
+ // check defineLater
+ if (kaltura.isDefineLater()) {
+ return "pages/learning/defineLater";
+ }
+
+ // Set the content in use flag.
+ if (!kaltura.isContentInUse()) {
+ kaltura.setContentInUse(new Boolean(true));
+ kalturaService.saveOrUpdateKaltura(kaltura);
+ }
+
+ ActivityPositionDTO activityPosition = LearningWebUtil.putActivityPositionInRequestByToolSessionId(
+ toolSessionId, request, applicationContext.getServletContext());
+ sessionMap.put(AttributeNames.ATTR_ACTIVITY_POSITION, activityPosition);
+
+ // reflection information
+ String entryText = new String();
+ NotebookEntry notebookEntry = kalturaService.getEntry(toolSessionId, user.getUserId().intValue());
+ if (notebookEntry != null) {
+ entryText = notebookEntry.getEntry();
+ }
+ sessionMap.put(KalturaConstants.ATTR_REFLECTION_ON, kaltura.isReflectOnActivity());
+ sessionMap.put(KalturaConstants.ATTR_REFLECTION_INSTRUCTION, kaltura.getReflectInstructions());
+ sessionMap.put(KalturaConstants.ATTR_REFLECTION_ENTRY, entryText);
+
+ // check whehter finish lock is on/off
+ boolean lockOnFinish = kaltura.isLockOnFinished() && user != null && user.isFinishedActivity();
+ sessionMap.put(KalturaConstants.ATTR_FINISHED_LOCK, lockOnFinish);
+ sessionMap.put(KalturaConstants.ATTR_LOCK_ON_FINISH, kaltura.isLockOnFinished());
+ sessionMap.put(KalturaConstants.ATTR_USER_FINISHED, user != null && user.isFinishedActivity());
+
+ // date and time restriction
+ Date submissionDeadline = kaltura.getSubmissionDeadline();
+ if (submissionDeadline != null) {
+ // store submission deadline to sessionMap
+ sessionMap.put(KalturaConstants.ATTR_SUBMISSION_DEADLINE, submissionDeadline);
+
+ HttpSession ss = SessionManager.getSession();
+ UserDTO learnerDto = (UserDTO) ss.getAttribute(AttributeNames.USER);
+ TimeZone learnerTimeZone = learnerDto.getTimeZone();
+ Date tzSubmissionDeadline = DateUtil.convertToTimeZoneFromDefault(learnerTimeZone, submissionDeadline);
+ Date currentLearnerDate = DateUtil.convertToTimeZoneFromDefault(learnerTimeZone, new Date());
+
+ // calculate whether deadline has passed, and if so forward to "submissionDeadline"
+ if (currentLearnerDate.after(tzSubmissionDeadline)) {
+ return "pages/learning/submissionDeadline";
+ }
+ }
+
+ sessionMap.put(KalturaConstants.ATTR_KALTURA, kaltura);
+ sessionMap.put(AttributeNames.USER, user);
+
+ TreeSet items = getItems(mode, kaltura, toolSessionId, user.getUserId());
+ //skip the next parameter if the tool doesn't contain videos
+ if (items.isEmpty()) {
+ KalturaItem item = new KalturaItem();
+ item.setUid(new Long(-1));
+ sessionMap.put(KalturaConstants.ATTR_ITEM, item);
+ sessionMap.put(KalturaConstants.ATTR_IS_ALLOW_UPLOADS, isAllowUpload(sessionMap, items));
+ return "pages/learning/learning";
+ }
+
+ String redirectURL = "redirect:learning/viewItem.do?";
+ redirectURL = WebUtil.appendParameterToURL(redirectURL, KalturaConstants.ATTR_SESSION_MAP_ID, sessionMapId);
+ redirectURL = WebUtil.appendParameterToURL(redirectURL, KalturaConstants.PARAM_ITEM_UID,
+ items.first().getUid().toString());
+ return redirectURL;
+ }
+
+ @RequestMapping("/viewItem")
+ public String viewItem(HttpServletRequest request) {
+
+ // get back SessionMap
+ String sessionMapID = request.getParameter(KalturaConstants.ATTR_SESSION_MAP_ID);
+ SessionMap sessionMap = (SessionMap) request.getSession().getAttribute(sessionMapID);
+ request.setAttribute(KalturaConstants.ATTR_SESSION_MAP_ID, sessionMap.getSessionID());
+ KalturaUser user = (KalturaUser) sessionMap.get(AttributeNames.USER);
+ Long userId = user.getUserId();
+ Long toolSessionId = (Long) sessionMap.get(AttributeNames.PARAM_TOOL_SESSION_ID);
+ Kaltura kaltura = (Kaltura) sessionMap.get(KalturaConstants.ATTR_KALTURA);
+ ToolAccessMode mode = (ToolAccessMode) sessionMap.get(AttributeNames.ATTR_MODE);
+
+ //get back item
+ Long itemUid = WebUtil.readLongParam(request, KalturaConstants.PARAM_ITEM_UID);
+ KalturaItem item = kalturaService.getKalturaItem(itemUid);
+ if (mode.isLearner()) {
+ kalturaService.logItemWatched(item.getUid(), userId, toolSessionId);
+ }
+
+ //items from DB
+ TreeSet items = getItems(mode, kaltura, toolSessionId, userId);
+
+ //filter comments and store current item comments to sessionMap
+ if (kaltura.isAllowComments()) {
+
+ //filter out comments from the other groups. We need this to display number of comments
+ for (KalturaItem dbItem : items) {
+ Set groupComments = getGroupComments(dbItem, toolSessionId, mode);
+ //set to groupComments to avoid session flushing changes to DB
+ dbItem.setGroupComments(groupComments);
+ }
+ }
+
+ if (kaltura.isAllowRatings()) {
+ boolean isUserItemAuthor = (item.getCreatedBy() == null) && (kaltura.getCreatedBy() != null)
+ && kaltura.getCreatedBy().getUserId().equals(userId)
+ || (item.getCreatedBy() != null) && item.getCreatedBy().equals(user);
+ sessionMap.put(KalturaConstants.ATTR_IS_USER_ITEM_AUTHOR, isUserItemAuthor);
+
+ for (KalturaItem dbItem : items) {
+ AverageRatingDTO averageRatingDto = kalturaService.getAverageRatingDto(dbItem.getUid(), toolSessionId);
+ dbItem.setAverageRatingDto(averageRatingDto);
+ }
+ }
+
+ sessionMap.put(KalturaConstants.ATTR_IS_ALLOW_UPLOADS, isAllowUpload(sessionMap, items));
+
+ //refresh items
+ items.remove(item);
+ sessionMap.put(KalturaConstants.ATTR_ITEM, item);
+ sessionMap.put(KalturaConstants.ATTR_ITEMS, items);
+
+ return "pages/learning/learning";
+ }
+
+ /**
+ * Stores uploaded entryId(s).
+ */
+ @RequestMapping(path = "/saveNewItem", method = RequestMethod.POST)
+ @ResponseBody
+ public String saveNewItem(HttpServletRequest request, HttpServletResponse response) throws IOException {
+
+ String sessionMapID = WebUtil.readStrParam(request, KalturaConstants.ATTR_SESSION_MAP_ID);
+ SessionMap sessionMap = (SessionMap) request.getSession()
+ .getAttribute(sessionMapID);
+ KalturaUser user = (KalturaUser) sessionMap.get(AttributeNames.USER);
+ Long toolSessionId = (Long) sessionMap.get(AttributeNames.PARAM_TOOL_SESSION_ID);
+
+ KalturaSession kalturaSession = kalturaService.getSessionBySessionId(toolSessionId);
+ Kaltura kaltura = kalturaSession.getKaltura();
+ TreeSet allItems = new TreeSet<>(new KalturaItemComparator());
+ allItems.addAll(kaltura.getKalturaItems());
+
+ // check user can upload item
+ boolean isAllowUpload = isAllowUpload(sessionMap, allItems);
+ if (!isAllowUpload) {
+ return null;
+ }
+
+ KalturaItem item = new KalturaItem();
+ item.setCreateDate(new Timestamp(new Date().getTime()));
+ int maxSeq = 1;
+ if (allItems != null && allItems.size() > 0) {
+ KalturaItem last = allItems.last();
+ maxSeq = last.getSequenceId() + 1;
+ }
+ item.setSequenceId(maxSeq);
+
+ String title = WebUtil.readStrParam(request, KalturaConstants.PARAM_ITEM_TITLE, true);
+ if (StringUtils.isBlank(title)) {
+ String itemLocalized = kalturaService.getLocalisedMessage("label.authoring.item", null);
+ title = itemLocalized + " " + maxSeq;
+ }
+ item.setTitle(title);
+
+ int duration = WebUtil.readIntParam(request, KalturaConstants.PARAM_ITEM_DURATION);
+ item.setDuration(duration);
+
+ String entryId = WebUtil.readStrParam(request, KalturaConstants.PARAM_ITEM_ENTRY_ID);
+ if (StringUtils.isBlank(entryId)) {
+ String errorMsg = "Add item failed due to missing entityId (received from Kaltura server).";
+ log.error(errorMsg);
+ throw new KalturaException(errorMsg);
+ }
+ item.setEntryId(entryId);
+
+ item.setCreatedBy(user);
+ item.setCreateByAuthor(false);
+ item.setHidden(false);
+ item.setKalturaUid(kaltura.getUid());
+ kalturaService.saveKalturaItem(item);
+
+ ObjectNode ObjectNode = JsonNodeFactory.instance.objectNode();
+ ObjectNode.put(KalturaConstants.PARAM_ITEM_UID, item.getUid());
+ response.setContentType("application/json;charset=utf-8");
+ return ObjectNode.toString();
+ }
+
+ /**
+ * Comment current item.
+ *
+ * @param mapping
+ * @param form
+ * @param request
+ * @param response
+ * @return
+ */
+ @RequestMapping("/commentItem")
+ public String commentItem(HttpServletRequest request) {
+ String sessionMapID = WebUtil.readStrParam(request, KalturaConstants.ATTR_SESSION_MAP_ID);
+ SessionMap sessionMap = (SessionMap) request.getSession()
+ .getAttribute(sessionMapID);
+ request.setAttribute(KalturaConstants.ATTR_SESSION_MAP_ID, sessionMapID);
+ Long toolSessionId = (Long) sessionMap.get(AttributeNames.PARAM_TOOL_SESSION_ID);
+ ToolAccessMode mode = (ToolAccessMode) sessionMap.get(AttributeNames.ATTR_MODE);
+ String commentMessage = WebUtil.readStrParam(request, KalturaConstants.ATTR_COMMENT, true);
+
+ if (StringUtils.isBlank(commentMessage)) {
+ MultiValueMap errorMap = new LinkedMultiValueMap<>();
+ errorMap.add("GLOBAL", messageService.getMessage(KalturaConstants.ERROR_MSG_COMMENT_BLANK));
+ request.setAttribute("errorMap", errorMap);
+ return "pages/learning/commentlist";
+ }
+
+ KalturaComment comment = new KalturaComment();
+ comment.setComment(commentMessage);
+ UserDTO user = (UserDTO) SessionManager.getSession().getAttribute(AttributeNames.USER);
+ KalturaUser kalturaUser = kalturaService.getUserByUserIdAndSessionId(new Long(user.getUserID().intValue()),
+ toolSessionId);
+ comment.setCreateBy(kalturaUser);
+ comment.setCreateDate(new Timestamp(new Date().getTime()));
+
+ // persist Kaltura changes in DB
+ Long currentItemUid = new Long(request.getParameter(KalturaConstants.PARAM_ITEM_UID));
+ KalturaItem item = kalturaService.getKalturaItem(currentItemUid);
+ Set dbComments = item.getComments();
+ dbComments.add(comment);
+ kalturaService.saveKalturaItem(item);
+
+ //refresh comments in the sessisonMap
+ KalturaItem sessionMapItem = (KalturaItem) sessionMap.get(KalturaConstants.ATTR_ITEM);
+ Set groupComments = getGroupComments(item, toolSessionId, mode);
+ sessionMapItem.setGroupComments(groupComments);
+
+ return "pages/learning/commentlist";
+ }
+
+ /**
+ * Rates items submitted by other learners.
+ *
+ * @param mapping
+ * @param form
+ * @param request
+ * @param response
+ * @return
+ * @throws JSONException
+ * @throws IOException
+ * @throws ServletException
+ * @throws ToolException
+ */
+ @RequestMapping("/rateItem")
+ @ResponseBody
+ public String rateItem(HttpServletRequest request, HttpServletResponse response) throws IOException {
+
+ String sessionMapID = WebUtil.readStrParam(request, KalturaConstants.ATTR_SESSION_MAP_ID);
+ SessionMap sessionMap = (SessionMap) request.getSession()
+ .getAttribute(sessionMapID);
+ Long toolSessionId = (Long) sessionMap.get(AttributeNames.PARAM_TOOL_SESSION_ID);
+ KalturaUser user = (KalturaUser) sessionMap.get(AttributeNames.USER);
+
+ float rating = Float.parseFloat(request.getParameter("rate"));
+ Long itemUid = WebUtil.readLongParam(request, "idBox");
+
+ AverageRatingDTO averageRatingDto = kalturaService.rateMessage(itemUid, user.getUserId(), toolSessionId,
+ rating);
+
+ //refresh averageRatingDto in sessionMap
+ KalturaItem item = (KalturaItem) sessionMap.get(KalturaConstants.ATTR_ITEM);
+ item.setAverageRatingDto(averageRatingDto);
+
+ ObjectNode ObjectNode = JsonNodeFactory.instance.objectNode();
+ ObjectNode.put("averageRating", averageRatingDto.getRating());
+ ObjectNode.put("numberOfVotes", averageRatingDto.getNumberOfVotes());
+ response.setContentType("application/json;charset=utf-8");
+ return ObjectNode.toString();
+ }
+
+ /**
+ * Display empty reflection form.
+ *
+ * @param mapping
+ * @param form
+ * @param request
+ * @param response
+ * @return
+ */
+ @RequestMapping("/newReflection")
+ public String newReflection(@ModelAttribute("messageForm") ReflectionForm messageForm, HttpServletRequest request) {
+
+ // get session value
+ String sessionMapID = WebUtil.readStrParam(request, KalturaConstants.ATTR_SESSION_MAP_ID);
+
+ HttpSession ss = SessionManager.getSession();
+ UserDTO user = (UserDTO) ss.getAttribute(AttributeNames.USER);
+
+ messageForm.setUserID(user.getUserID());
+ messageForm.setSessionMapID(sessionMapID);
+
+ SessionMap map = (SessionMap) request.getSession().getAttribute(sessionMapID);
+ Long toolSessionID = (Long) map.get(AttributeNames.PARAM_TOOL_SESSION_ID);
+ NotebookEntry entry = kalturaService.getEntry(toolSessionID, user.getUserID());
+
+ if (entry != null) {
+ messageForm.setEntryText(entry.getEntry());
+ }
+
+ return "pages/learning/notebook";
+ }
+
+ /**
+ * Submit reflection form input database.
+ *
+ * @param mapping
+ * @param form
+ * @param request
+ * @param response
+ * @return
+ */
+ @RequestMapping(path = "/submitReflection", method = RequestMethod.POST)
+ public String submitReflection(@ModelAttribute("messageForm") ReflectionForm messageForm,
+ HttpServletRequest request) {
+
+ Integer userId = messageForm.getUserID();
+
+ String sessionMapID = WebUtil.readStrParam(request, KalturaConstants.ATTR_SESSION_MAP_ID);
+ SessionMap sessionMap = (SessionMap) request.getSession()
+ .getAttribute(sessionMapID);
+ Long sessionId = (Long) sessionMap.get(AttributeNames.PARAM_TOOL_SESSION_ID);
+
+ // check for existing notebook entry
+ NotebookEntry entry = kalturaService.getEntry(sessionId, userId);
+
+ if (entry == null) {
+ // create new entry
+ kalturaService.createNotebookEntry(sessionId, CoreNotebookConstants.NOTEBOOK_TOOL,
+ KalturaConstants.TOOL_SIGNATURE, userId, messageForm.getEntryText());
+ } else {
+ // update existing entry
+ entry.setEntry(messageForm.getEntryText());
+ entry.setLastModified(new Date());
+ kalturaService.updateEntry(entry);
+ }
+
+ return finishActivity(messageForm, request);
+ }
+
+ @RequestMapping("/finishActivity")
+ public String finishActivity(@ModelAttribute("messageForm") ReflectionForm messageForm,
+ HttpServletRequest request) {
+
+ // get back SessionMap
+ String sessionMapID = request.getParameter(KalturaConstants.ATTR_SESSION_MAP_ID);
+ SessionMap sessionMap = (SessionMap) request.getSession()
+ .getAttribute(sessionMapID);
+
+ Long sessionId = (Long) sessionMap.get(AttributeNames.PARAM_TOOL_SESSION_ID);
+
+ // get sessionId from HttpServletRequest
+ String nextActivityUrl = null;
+ try {
+ HttpSession ss = SessionManager.getSession();
+ UserDTO userDTO = (UserDTO) ss.getAttribute(AttributeNames.USER);
+ Long userID = new Long(userDTO.getUserID().longValue());
+
+ nextActivityUrl = kalturaService.finishToolSession(sessionId, userID);
+ request.setAttribute(KalturaConstants.ATTR_NEXT_ACTIVITY_URL, nextActivityUrl);
+ } catch (KalturaException e) {
+ LearningController.log.error("Failed get next activity url:" + e.getMessage());
+ }
+
+ return "pages/learning/finish";
+ }
+
+ // *************************************************************************************
+ // Private methods
+ // *************************************************************************************
+
+ /**
+ * Gets items from the DB. IF the mode is learner filters them based on the group sessionId
+ */
+ private TreeSet getItems(ToolAccessMode mode, Kaltura kaltura, Long toolSessionId, Long userId) {
+
+ // Create set of images, along with this filtering out items added by users from other groups
+ TreeSet items = new TreeSet<>(new KalturaItemComparator());
+ items.addAll(kalturaService.getGroupItems(kaltura.getToolContentId(), toolSessionId, userId, mode.isTeacher()));
+
+ for (KalturaItem item : items) {
+ // initialize login name to avoid session close error in proxy object
+ if (item.getCreatedBy() != null) {
+ item.getCreatedBy().getLoginName();
+ }
+ }
+
+ return items;
+ }
+
+ /**
+ * Checks whether further upload is allowed.
+ */
+ private boolean isAllowUpload(SessionMap sessionMap, Set items) {
+ Kaltura kaltura = (Kaltura) sessionMap.get(KalturaConstants.ATTR_KALTURA);
+ ToolAccessMode mode = (ToolAccessMode) sessionMap.get(AttributeNames.ATTR_MODE);
+ KalturaUser user = (KalturaUser) sessionMap.get(AttributeNames.USER);
+
+ boolean isAllowUpload = false;
+ if (kaltura.isAllowContributeVideos() && !mode.equals(ToolAccessMode.TEACHER)) {
+ int numberOfUploadedItems = 0;
+ for (KalturaItem item : items) {
+ if (item.getCreatedBy() != null && item.getCreatedBy().equals(user)) {
+ numberOfUploadedItems++;
+ }
+ }
+ int learnerContributionLimit = kaltura.getLearnerContributionLimit();
+ isAllowUpload = (learnerContributionLimit == Kaltura.TYPE_LEARNER_CONTRIBUTION_LIMIT_UNLIMITED)
+ || (numberOfUploadedItems < kaltura.getLearnerContributionLimit());
+ }
+
+ return isAllowUpload;
+ }
+
+ /**
+ * Returns all comments done by teacher and learners of the specified group.
+ */
+ private Set getGroupComments(KalturaItem item, Long sessionId, ToolAccessMode mode) {
+ TreeSet comments = new TreeSet<>(new KalturaCommentComparator());
+ Set itemComments = item.getComments();
+
+ //only authored items can be seen by different groups
+ if (item.isCreateByAuthor()) {
+ for (KalturaComment comment : itemComments) {
+
+ //skip hidden comments
+ if (comment.isHidden() && mode.isLearner()) {
+ continue;
+
+ // if made by teacher - add
+ } else if (comment.getCreateBy() == null) {
+ comments.add(comment);
+
+ // if made by learner of the specified group - also add
+ } else if (comment.getCreateBy().getSession().getSessionId().equals(sessionId)) {
+ comments.add(comment);
+ }
+ }
+
+ } else {
+ comments.addAll(itemComments);
+ }
+
+ return comments;
+ }
+
+ private KalturaUser getCurrentUser(Long toolSessionId) {
+ UserDTO user = (UserDTO) SessionManager.getSession().getAttribute(AttributeNames.USER);
+
+ // attempt to retrieve user using userId and toolSessionId
+ KalturaUser kalturaUser = kalturaService.getUserByUserIdAndSessionId(new Long(user.getUserID().intValue()),
+ toolSessionId);
+
+ if (kalturaUser == null) {
+ KalturaSession kalturaSession = kalturaService.getSessionBySessionId(toolSessionId);
+ kalturaUser = kalturaService.createKalturaUser(user, kalturaSession);
+ }
+
+ return kalturaUser;
+ }
+}
Index: lams_tool_kaltura/src/java/org/lamsfoundation/lams/tool/kaltura/web/controller/MonitoringController.java
===================================================================
diff -u
--- lams_tool_kaltura/src/java/org/lamsfoundation/lams/tool/kaltura/web/controller/MonitoringController.java (revision 0)
+++ lams_tool_kaltura/src/java/org/lamsfoundation/lams/tool/kaltura/web/controller/MonitoringController.java (revision ff911101cbe92d6813691c20c292fa04519820b4)
@@ -0,0 +1,206 @@
+/****************************************************************
+ * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org)
+ * =============================================================
+ * License Information: http://lamsfoundation.org/licensing/lams/2.0/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
+ *
+ * http://www.gnu.org/licenses/gpl.txt
+ * ****************************************************************
+ */
+
+package org.lamsfoundation.lams.tool.kaltura.web.controller;
+
+import java.io.IOException;
+import java.util.Date;
+import java.util.List;
+import java.util.Set;
+import java.util.TimeZone;
+import java.util.TreeSet;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
+
+import org.apache.log4j.Logger;
+import org.lamsfoundation.lams.tool.kaltura.dto.KalturaSessionDTO;
+import org.lamsfoundation.lams.tool.kaltura.dto.NotebookEntryDTO;
+import org.lamsfoundation.lams.tool.kaltura.model.Kaltura;
+import org.lamsfoundation.lams.tool.kaltura.model.KalturaSession;
+import org.lamsfoundation.lams.tool.kaltura.service.IKalturaService;
+import org.lamsfoundation.lams.tool.kaltura.util.KalturaConstants;
+import org.lamsfoundation.lams.tool.kaltura.util.KalturaSessionDTOComparator;
+import org.lamsfoundation.lams.usermanagement.dto.UserDTO;
+import org.lamsfoundation.lams.util.DateUtil;
+import org.lamsfoundation.lams.util.WebUtil;
+import org.lamsfoundation.lams.web.session.SessionManager;
+import org.lamsfoundation.lams.web.util.AttributeNames;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+/**
+ * @author Andrey Balan
+ */
+@Controller
+@RequestMapping("/monitoring")
+public class MonitoringController {
+
+ private static Logger log = Logger.getLogger(MonitoringController.class);
+
+ @Autowired
+ @Qualifier("kalturaService")
+ private IKalturaService kalturaService;
+
+ @RequestMapping("")
+ public String unspecified(HttpServletRequest request) {
+
+ request.setAttribute("initialTabId", WebUtil.readLongParam(request, AttributeNames.PARAM_CURRENT_TAB, true));
+ Long toolContentID = WebUtil.readLongParam(request, AttributeNames.PARAM_TOOL_CONTENT_ID);
+ String contentFolderID = WebUtil.readStrParam(request, AttributeNames.PARAM_CONTENT_FOLDER_ID);
+
+ Kaltura kaltura = kalturaService.getKalturaByContentId(toolContentID);
+ boolean isGroupedActivity = kalturaService.isGroupedActivity(toolContentID);
+ request.setAttribute(KalturaConstants.ATTR_KALTURA, kaltura);
+ request.setAttribute("contentFolderID", contentFolderID);
+ request.setAttribute("isGroupedActivity", isGroupedActivity);
+
+ Set sessionDTOs = new TreeSet<>(new KalturaSessionDTOComparator());
+ for (KalturaSession session : (Set) kaltura.getKalturaSessions()) {
+ KalturaSessionDTO sessionDTO = new KalturaSessionDTO(session);
+ sessionDTOs.add(sessionDTO);
+ }
+ request.setAttribute("sessionDTOs", sessionDTOs);
+
+ // Create reflectList if reflection is enabled.
+ if (kaltura.isReflectOnActivity()) {
+ List reflectList = kalturaService.getReflectList(kaltura);
+ request.setAttribute(KalturaConstants.ATTR_REFLECT_LIST, reflectList);
+ }
+
+ Date submissionDeadline = kaltura.getSubmissionDeadline();
+ if (submissionDeadline != null) {
+ HttpSession ss = SessionManager.getSession();
+ UserDTO teacher = (UserDTO) ss.getAttribute(AttributeNames.USER);
+ TimeZone teacherTimeZone = teacher.getTimeZone();
+ Date tzSubmissionDeadline = DateUtil.convertToTimeZoneFromDefault(teacherTimeZone, submissionDeadline);
+ request.setAttribute(KalturaConstants.ATTR_SUBMISSION_DEADLINE, tzSubmissionDeadline.getTime());
+ // use the unconverted time, as convertToStringForJSON() does the timezone conversion if needed
+ request.setAttribute(KalturaConstants.ATTR_SUBMISSION_DEADLINE_DATESTRING,
+ DateUtil.convertToStringForJSON(submissionDeadline, request.getLocale()));
+ }
+ String dispatch = request.getParameter("dispatch");
+ if("markItem".equals(dispatch)) {
+ return markItem(request);
+ }
+
+
+
+ return "pages/monitoring/monitoring";
+ }
+
+ @RequestMapping("/showGroupLearning")
+ public String showGroupLearning(HttpServletRequest request) {
+
+ String toolSessionID = WebUtil.readStrParam(request, AttributeNames.PARAM_TOOL_SESSION_ID);
+ UserDTO user = (UserDTO) SessionManager.getSession().getAttribute(AttributeNames.USER);
+
+ String redirectURL = "redirect:/learning.do";
+ //to distinguish from opening learning page from monitor's Learners tab pass this parameter
+ redirectURL = WebUtil.appendParameterToURL(redirectURL, KalturaConstants.ATTR_IS_GROUP_MONITORING, "true");
+ redirectURL = WebUtil.appendParameterToURL(redirectURL, AttributeNames.PARAM_MODE, "teacher");
+ redirectURL = WebUtil.appendParameterToURL(redirectURL, AttributeNames.PARAM_TOOL_SESSION_ID, toolSessionID);
+ redirectURL = WebUtil.appendParameterToURL(redirectURL, AttributeNames.PARAM_USER_ID,
+ user.getUserID().toString());
+ return redirectURL;
+ }
+
+ /**
+ * Update item's mark. If it's not long then store 0.
+ */
+ @RequestMapping("/markItem")
+ @ResponseBody
+ public String markItem(HttpServletRequest request) {
+
+ String markStr = WebUtil.readStrParam(request, "content");
+ try {
+ Long mark = Long.parseLong(markStr);
+ Long itemUid = WebUtil.readLongParam(request, KalturaConstants.PARAM_ITEM_UID);
+ kalturaService.markItem(itemUid, mark);
+ } catch (NumberFormatException e) {
+ log.debug(e.getMessage());
+ }
+ return null;
+ }
+
+ @RequestMapping("/setItemVisibility")
+ @ResponseBody
+ public void setItemVisibility(HttpServletRequest request) {
+
+ Long itemUid = WebUtil.readLongParam(request, KalturaConstants.PARAM_ITEM_UID);
+ boolean isHide = WebUtil.readBooleanParam(request, KalturaConstants.PARAM_IS_HIDING);
+ kalturaService.hideItem(itemUid, isHide);
+
+ }
+
+ @RequestMapping("/setCommentVisibility")
+ @ResponseBody
+ public void setCommentVisibility(HttpServletRequest request) {
+
+ Long commentUid = WebUtil.readLongParam(request, KalturaConstants.PARAM_COMMENT_UID);
+ boolean isHide = WebUtil.readBooleanParam(request, KalturaConstants.PARAM_IS_HIDING);
+ kalturaService.hideComment(commentUid, isHide);
+
+ }
+
+ /**
+ * Set Submission Deadline
+ *
+ * @param mapping
+ * @param form
+ * @param request
+ * @param response
+ * @return
+ * @throws IOException
+ */
+ @RequestMapping("/setSubmissionDeadline")
+ @ResponseBody
+ public void setSubmissionDeadline(HttpServletRequest request, HttpServletResponse response) throws IOException {
+
+ Long contentID = WebUtil.readLongParam(request, AttributeNames.PARAM_TOOL_CONTENT_ID);
+
+ Kaltura kaltura = kalturaService.getKalturaByContentId(contentID);
+
+ Long dateParameter = WebUtil.readLongParam(request, KalturaConstants.ATTR_SUBMISSION_DEADLINE, true);
+ Date tzSubmissionDeadline = null;
+ String formattedDate = "";
+ if (dateParameter != null) {
+ Date submissionDeadline = new Date(dateParameter);
+ HttpSession ss = SessionManager.getSession();
+ org.lamsfoundation.lams.usermanagement.dto.UserDTO teacher = (org.lamsfoundation.lams.usermanagement.dto.UserDTO) ss
+ .getAttribute(AttributeNames.USER);
+ TimeZone teacherTimeZone = teacher.getTimeZone();
+ tzSubmissionDeadline = DateUtil.convertFromTimeZoneToDefault(teacherTimeZone, submissionDeadline);
+ formattedDate = DateUtil.convertToStringForJSON(tzSubmissionDeadline, request.getLocale());
+ }
+ kaltura.setSubmissionDeadline(tzSubmissionDeadline);
+ kalturaService.saveOrUpdateKaltura(kaltura);
+
+ response.setContentType("text/plain;charset=utf-8");
+ response.getWriter().print(formattedDate);
+ }
+}
Index: lams_tool_kaltura/src/java/org/lamsfoundation/lams/tool/kaltura/web/controller/PedagogicalPlannerController.java
===================================================================
diff -u
--- lams_tool_kaltura/src/java/org/lamsfoundation/lams/tool/kaltura/web/controller/PedagogicalPlannerController.java (revision 0)
+++ lams_tool_kaltura/src/java/org/lamsfoundation/lams/tool/kaltura/web/controller/PedagogicalPlannerController.java (revision ff911101cbe92d6813691c20c292fa04519820b4)
@@ -0,0 +1,103 @@
+/****************************************************************
+ * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org)
+ * =============================================================
+ * License Information: http://lamsfoundation.org/licensing/lams/2.0/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
+ *
+ * http://www.gnu.org/licenses/gpl.txt
+ * ****************************************************************
+ */
+
+package org.lamsfoundation.lams.tool.kaltura.web.controller;
+
+import java.io.IOException;
+
+import javax.servlet.http.HttpServletRequest;
+
+import org.apache.log4j.Logger;
+import org.lamsfoundation.lams.tool.kaltura.model.Kaltura;
+import org.lamsfoundation.lams.tool.kaltura.service.IKalturaService;
+import org.lamsfoundation.lams.tool.kaltura.web.forms.KalturaPedagogicalPlannerForm;
+import org.lamsfoundation.lams.util.MessageService;
+import org.lamsfoundation.lams.util.WebUtil;
+import org.lamsfoundation.lams.web.util.AttributeNames;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.stereotype.Controller;
+import org.springframework.util.MultiValueMap;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+
+/**
+ * @author Andrey Balan
+ *
+ *
+ *
+ *
+ *
+ */
+@Controller
+@RequestMapping("/pedagogicalPlanner")
+public class PedagogicalPlannerController {
+
+ private static Logger logger = Logger.getLogger(PedagogicalPlannerController.class);
+
+ @Autowired
+ @Qualifier("kalturaService")
+ private IKalturaService kalturaService;
+
+ @Autowired
+ @Qualifier("kalturaMessageService")
+ private MessageService messageService;
+
+ @RequestMapping("")
+ protected String unspecified(
+ @ModelAttribute("pedagogicalPlannerForm") KalturaPedagogicalPlannerForm pedagogicalPlannerForm,
+ HttpServletRequest request) {
+ return initPedagogicalPlannerForm(pedagogicalPlannerForm, request);
+ }
+
+ @RequestMapping("/initPedagogicalPlannerForm")
+ public String initPedagogicalPlannerForm(
+ @ModelAttribute("pedagogicalPlannerForm") KalturaPedagogicalPlannerForm pedagogicalPlannerForm,
+ HttpServletRequest request) {
+ Long toolContentID = WebUtil.readLongParam(request, AttributeNames.PARAM_TOOL_CONTENT_ID);
+ Kaltura kaltura = kalturaService.getKalturaByContentId(toolContentID);
+ pedagogicalPlannerForm.fillForm(kaltura);
+ String contentFolderId = WebUtil.readStrParam(request, AttributeNames.PARAM_CONTENT_FOLDER_ID);
+ pedagogicalPlannerForm.setContentFolderID(contentFolderId);
+ return "pages/authoring/pedagogicalPlannerForm";
+ }
+
+ @RequestMapping(path = "/saveOrUpdatePedagogicalPlannerForm", method = RequestMethod.POST)
+ public String saveOrUpdatePedagogicalPlannerForm(
+ @ModelAttribute("pedagogicalPlannerForm") KalturaPedagogicalPlannerForm pedagogicalPlannerForm,
+ HttpServletRequest request) throws IOException {
+ MultiValueMap errorMap = pedagogicalPlannerForm.validate(messageService);
+ if (errorMap.isEmpty()) {
+ String instructions = pedagogicalPlannerForm.getInstructions();
+ Long toolContentID = pedagogicalPlannerForm.getToolContentID();
+ Kaltura kaltura = kalturaService.getKalturaByContentId(toolContentID);
+ kaltura.setInstructions(instructions);
+ kalturaService.saveOrUpdateKaltura(kaltura);
+ } else {
+ request.setAttribute("errorMap", errorMap);
+ }
+ return "pages/authoring/pedagogicalPlannerForm";
+ }
+
+}
Index: lams_tool_kaltura/src/java/org/lamsfoundation/lams/tool/kaltura/web/forms/AuthoringForm.java
===================================================================
diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -rff911101cbe92d6813691c20c292fa04519820b4
--- lams_tool_kaltura/src/java/org/lamsfoundation/lams/tool/kaltura/web/forms/AuthoringForm.java (.../AuthoringForm.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80)
+++ lams_tool_kaltura/src/java/org/lamsfoundation/lams/tool/kaltura/web/forms/AuthoringForm.java (.../AuthoringForm.java) (revision ff911101cbe92d6813691c20c292fa04519820b4)
@@ -21,23 +21,14 @@
* ****************************************************************
*/
-
-
package org.lamsfoundation.lams.tool.kaltura.web.forms;
-import javax.servlet.http.HttpServletRequest;
-
-import org.apache.struts.action.ActionErrors;
-import org.apache.struts.action.ActionForm;
-import org.apache.struts.action.ActionMapping;
-import org.apache.struts.action.ActionMessage;
-import org.apache.struts.action.ActionMessages;
import org.lamsfoundation.lams.web.util.SessionMap;
/**
*
*/
-public class AuthoringForm extends ActionForm {
+public class AuthoringForm {
private static final long serialVersionUID = 3950453134542135495L;
@@ -61,8 +52,6 @@
private String currentTab;
- private String dispatch;
-
private String sessionMapID;
private Long deleteFileUuid;
@@ -73,14 +62,6 @@
private SessionMap sessionMap;
- @Override
- public ActionErrors validate(ActionMapping arg0, HttpServletRequest arg1) {
- ActionErrors ac = new ActionErrors();
- ac.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("this is an error"));
-
- return ac;
- }
-
public String getSessionMapID() {
return sessionMapID;
}
@@ -97,14 +78,6 @@
this.currentTab = currentTab;
}
- public String getDispatch() {
- return dispatch;
- }
-
- public void setDispatch(String dispatch) {
- this.dispatch = dispatch;
- }
-
public String getInstructions() {
return instructions;
}
Index: lams_tool_kaltura/src/java/org/lamsfoundation/lams/tool/kaltura/web/forms/KalturaPedagogicalPlannerForm.java
===================================================================
diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -rff911101cbe92d6813691c20c292fa04519820b4
--- lams_tool_kaltura/src/java/org/lamsfoundation/lams/tool/kaltura/web/forms/KalturaPedagogicalPlannerForm.java (.../KalturaPedagogicalPlannerForm.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80)
+++ lams_tool_kaltura/src/java/org/lamsfoundation/lams/tool/kaltura/web/forms/KalturaPedagogicalPlannerForm.java (.../KalturaPedagogicalPlannerForm.java) (revision ff911101cbe92d6813691c20c292fa04519820b4)
@@ -20,16 +20,15 @@
* ****************************************************************
*/
-
package org.lamsfoundation.lams.tool.kaltura.web.forms;
import org.lamsfoundation.lams.tool.kaltura.model.Kaltura;
-import org.lamsfoundation.lams.web.planner.PedagogicalPlannerActivityForm;
+import org.lamsfoundation.lams.web.planner.PedagogicalPlannerActivitySpringForm;
/**
*
*/
-public class KalturaPedagogicalPlannerForm extends PedagogicalPlannerActivityForm {
+public class KalturaPedagogicalPlannerForm extends PedagogicalPlannerActivitySpringForm {
String instructions;
String contentFolderID;
Index: lams_tool_kaltura/src/java/org/lamsfoundation/lams/tool/kaltura/web/forms/ReflectionForm.java
===================================================================
diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -rff911101cbe92d6813691c20c292fa04519820b4
--- lams_tool_kaltura/src/java/org/lamsfoundation/lams/tool/kaltura/web/forms/ReflectionForm.java (.../ReflectionForm.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80)
+++ lams_tool_kaltura/src/java/org/lamsfoundation/lams/tool/kaltura/web/forms/ReflectionForm.java (.../ReflectionForm.java) (revision ff911101cbe92d6813691c20c292fa04519820b4)
@@ -33,7 +33,7 @@
*
*
*/
-public class ReflectionForm extends ValidatorForm {
+public class ReflectionForm{
private static final long serialVersionUID = -9054365604649146735L;
private static Logger logger = Logger.getLogger(ReflectionForm.class.getName());
Index: lams_tool_kaltura/web/WEB-INF/spring-servlet.xml
===================================================================
diff -u
--- lams_tool_kaltura/web/WEB-INF/spring-servlet.xml (revision 0)
+++ lams_tool_kaltura/web/WEB-INF/spring-servlet.xml (revision ff911101cbe92d6813691c20c292fa04519820b4)
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
Index: lams_tool_kaltura/web/WEB-INF/tags/AuthoringButton.tag
===================================================================
diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -rff911101cbe92d6813691c20c292fa04519820b4
--- lams_tool_kaltura/web/WEB-INF/tags/AuthoringButton.tag (.../AuthoringButton.tag) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80)
+++ lams_tool_kaltura/web/WEB-INF/tags/AuthoringButton.tag (.../AuthoringButton.tag) (revision ff911101cbe92d6813691c20c292fa04519820b4)
@@ -32,7 +32,6 @@
<%@ tag body-content="scriptless" %>
<%@ taglib uri="tags-core" prefix="c" %>
<%@ taglib uri="tags-fmt" prefix="fmt" %>
-<%@ taglib uri="tags-html" prefix="html" %>
<%@ taglib uri="tags-lams" prefix="lams"%>
<%@ attribute name="formID" required="true" rtexprvalue="true" %>
@@ -123,11 +122,11 @@
}
\ No newline at end of file
Index: lams_tool_kaltura/web/WEB-INF/tags/AuthoringRatingAllStyleCriteria.tag
===================================================================
diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -rff911101cbe92d6813691c20c292fa04519820b4
--- lams_tool_kaltura/web/WEB-INF/tags/AuthoringRatingAllStyleCriteria.tag (.../AuthoringRatingAllStyleCriteria.tag) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80)
+++ lams_tool_kaltura/web/WEB-INF/tags/AuthoringRatingAllStyleCriteria.tag (.../AuthoringRatingAllStyleCriteria.tag) (revision ff911101cbe92d6813691c20c292fa04519820b4)
@@ -8,7 +8,6 @@
<%@ tag body-content="scriptless" %>
<%@ taglib uri="tags-core" prefix="c" %>
<%@ taglib uri="tags-fmt" prefix="fmt" %>
-<%@ taglib uri="tags-html" prefix="html" %>
<%@ taglib uri="tags-lams" prefix="lams"%>
<%@ taglib uri="tags-function" prefix="fn" %>
Index: lams_tool_kaltura/web/WEB-INF/tags/AuthoringRatingCriteria.tag
===================================================================
diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -rff911101cbe92d6813691c20c292fa04519820b4
--- lams_tool_kaltura/web/WEB-INF/tags/AuthoringRatingCriteria.tag (.../AuthoringRatingCriteria.tag) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80)
+++ lams_tool_kaltura/web/WEB-INF/tags/AuthoringRatingCriteria.tag (.../AuthoringRatingCriteria.tag) (revision ff911101cbe92d6813691c20c292fa04519820b4)
@@ -8,7 +8,6 @@
<%@ tag body-content="scriptless" %>
<%@ taglib uri="tags-core" prefix="c" %>
<%@ taglib uri="tags-fmt" prefix="fmt" %>
-<%@ taglib uri="tags-html" prefix="html" %>
<%@ taglib uri="tags-lams" prefix="lams"%>
<%@ taglib uri="tags-function" prefix="fn" %>
@@ -284,42 +283,42 @@
-
-
+
+
-
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
-
+
+ 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+ 10
+
-
-
+
+
-
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
-
+
+ 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+ 10
+
Index: lams_tool_kaltura/web/WEB-INF/tags/CommentsAuthor.tag
===================================================================
diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -rff911101cbe92d6813691c20c292fa04519820b4
--- lams_tool_kaltura/web/WEB-INF/tags/CommentsAuthor.tag (.../CommentsAuthor.tag) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80)
+++ lams_tool_kaltura/web/WEB-INF/tags/CommentsAuthor.tag (.../CommentsAuthor.tag) (revision ff911101cbe92d6813691c20c292fa04519820b4)
@@ -1,5 +1,4 @@
<%@ taglib uri="tags-core" prefix="c"%>
-<%@ taglib uri="tags-html" prefix="html"%>
<%@ taglib uri="tags-fmt" prefix="fmt"%>
<%@ taglib uri="tags-lams" prefix="lams"%>
@@ -42,23 +41,23 @@
-
-
+
+
Index: lams_tool_kaltura/web/WEB-INF/tags/Page.tag
===================================================================
diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -rff911101cbe92d6813691c20c292fa04519820b4
--- lams_tool_kaltura/web/WEB-INF/tags/Page.tag (.../Page.tag) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80)
+++ lams_tool_kaltura/web/WEB-INF/tags/Page.tag (.../Page.tag) (revision ff911101cbe92d6813691c20c292fa04519820b4)
@@ -4,6 +4,7 @@
<%@ taglib uri="tags-lams" prefix="lams"%>
<%@ attribute name="type" required="true" rtexprvalue="true"%>
+<%@ attribute name="formID" required="false" rtexprvalue="true"%>
<%@ attribute name="style" required="false" rtexprvalue="true"%>
<%@ attribute name="title" required="false" rtexprvalue="true"%>
<%@ attribute name="titleHelpURL" required="false" rtexprvalue="true"%>
@@ -88,8 +89,8 @@
-
-
+
+
${toolForm.toolSessionID}
Index: lams_tool_kaltura/web/WEB-INF/tags/Rating.tag
===================================================================
diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -rff911101cbe92d6813691c20c292fa04519820b4
--- lams_tool_kaltura/web/WEB-INF/tags/Rating.tag (.../Rating.tag) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80)
+++ lams_tool_kaltura/web/WEB-INF/tags/Rating.tag (.../Rating.tag) (revision ff911101cbe92d6813691c20c292fa04519820b4)
@@ -8,7 +8,6 @@
<%@ tag body-content="scriptless" %>
<%@ taglib uri="tags-core" prefix="c" %>
<%@ taglib uri="tags-fmt" prefix="fmt" %>
-<%@ taglib uri="tags-html" prefix="html" %>
<%@ taglib uri="tags-lams" prefix="lams"%>
<%@ taglib uri="tags-function" prefix="fn" %>
Index: lams_tool_kaltura/web/WEB-INF/tags/StyledRating.tag
===================================================================
diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -rff911101cbe92d6813691c20c292fa04519820b4
--- lams_tool_kaltura/web/WEB-INF/tags/StyledRating.tag (.../StyledRating.tag) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80)
+++ lams_tool_kaltura/web/WEB-INF/tags/StyledRating.tag (.../StyledRating.tag) (revision ff911101cbe92d6813691c20c292fa04519820b4)
@@ -8,7 +8,6 @@
<%@ tag body-content="scriptless" %>
<%@ taglib uri="tags-core" prefix="c" %>
<%@ taglib uri="tags-fmt" prefix="fmt" %>
-<%@ taglib uri="tags-html" prefix="html" %>
<%@ taglib uri="tags-lams" prefix="lams"%>
<%@ taglib uri="tags-function" prefix="fn" %>
Index: lams_tool_kaltura/web/WEB-INF/tags/TabBody.tag
===================================================================
diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -rff911101cbe92d6813691c20c292fa04519820b4
--- lams_tool_kaltura/web/WEB-INF/tags/TabBody.tag (.../TabBody.tag) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80)
+++ lams_tool_kaltura/web/WEB-INF/tags/TabBody.tag (.../TabBody.tag) (revision ff911101cbe92d6813691c20c292fa04519820b4)
@@ -34,7 +34,6 @@
<%@ attribute name="titleKey" required="false" rtexprvalue="true"%>
<%@ attribute name="page" required="false" rtexprvalue="true"%>
<%@ taglib uri="tags-core" prefix="c"%>
-<%@ taglib uri="tags-bean" prefix="bean"%>
Index: lams_tool_kaltura/web/WEB-INF/tags/TabBodyArea.tag
===================================================================
diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -rff911101cbe92d6813691c20c292fa04519820b4
--- lams_tool_kaltura/web/WEB-INF/tags/TabBodyArea.tag (.../TabBodyArea.tag) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80)
+++ lams_tool_kaltura/web/WEB-INF/tags/TabBodyArea.tag (.../TabBodyArea.tag) (revision ff911101cbe92d6813691c20c292fa04519820b4)
@@ -30,7 +30,6 @@
%>
<%@ taglib uri="tags-core" prefix="c"%>
-<%@ taglib uri="tags-bean" prefix="bean"%>
Index: lams_tool_kaltura/web/WEB-INF/tags/TextSearch.tag
===================================================================
diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -rff911101cbe92d6813691c20c292fa04519820b4
--- lams_tool_kaltura/web/WEB-INF/tags/TextSearch.tag (.../TextSearch.tag) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80)
+++ lams_tool_kaltura/web/WEB-INF/tags/TextSearch.tag (.../TextSearch.tag) (revision ff911101cbe92d6813691c20c292fa04519820b4)
@@ -32,12 +32,11 @@
<%@ tag body-content="scriptless" %>
<%@ taglib uri="tags-core" prefix="c" %>
<%@ taglib uri="tags-fmt" prefix="fmt" %>
-<%@ taglib uri="tags-html" prefix="html" %>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
<%@ taglib uri="tags-lams" prefix="lams" %>
<%-- Required attributes --%>
<%@ attribute name="sessionMapID" required="true" rtexprvalue="true" %>
-<%@ attribute name="wrapInFormTag" required="true" rtexprvalue="true" %>
<%-- Optional attributes --%>
<%@ attribute name="action" required="false" rtexprvalue="true" %>
@@ -53,10 +52,10 @@
<%-- Default value for message key --%>
-
+
-
+
@@ -85,52 +84,40 @@
-
-
-
-
-
-
-
-
- |
-
-
- |
-
-
-
-
- |
-
-
- |
-
-
-
-
- |
-
-
- |
-
-
-
-
- |
-
-
- |
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+ |
+
+
+ |
+
+
+
+
+ |
+
+
+ |
+
+
+
+
+ |
+
+
+ |
+
+
+
+
+ |
+
+
+ |
+
+
\ No newline at end of file
Index: lams_tool_kaltura/web/WEB-INF/web.xml
===================================================================
diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -rff911101cbe92d6813691c20c292fa04519820b4
--- lams_tool_kaltura/web/WEB-INF/web.xml (.../web.xml) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80)
+++ lams_tool_kaltura/web/WEB-INF/web.xml (.../web.xml) (revision ff911101cbe92d6813691c20c292fa04519820b4)
@@ -64,24 +64,10 @@
- action
- org.apache.struts.action.ActionServlet
-
- config
- /WEB-INF/struts-config.xml
-
-
- debug
- 999
-
-
- detail
- 2
-
-
- validate
- true
-
+ spring
+
+ org.springframework.web.servlet.DispatcherServlet
+
1
@@ -115,7 +101,7 @@
- action
+ spring
*.do
Index: lams_tool_kaltura/web/common/messages.jsp
===================================================================
diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -rff911101cbe92d6813691c20c292fa04519820b4
--- lams_tool_kaltura/web/common/messages.jsp (.../messages.jsp) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80)
+++ lams_tool_kaltura/web/common/messages.jsp (.../messages.jsp) (revision ff911101cbe92d6813691c20c292fa04519820b4)
@@ -1,8 +1,9 @@
<%-- Error Messages --%>
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
\ No newline at end of file
Index: lams_tool_kaltura/web/common/taglibs.jsp
===================================================================
diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -rff911101cbe92d6813691c20c292fa04519820b4
--- lams_tool_kaltura/web/common/taglibs.jsp (.../taglibs.jsp) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80)
+++ lams_tool_kaltura/web/common/taglibs.jsp (.../taglibs.jsp) (revision ff911101cbe92d6813691c20c292fa04519820b4)
@@ -1,12 +1,6 @@
<%@ page language="java" pageEncoding="UTF-8" contentType="text/html;charset=utf-8"%>
-
-<%@ taglib uri="tags-bean" prefix="bean"%>
-<%@ taglib uri="tags-logic" prefix="logic"%>
<%@ taglib uri="tags-function" prefix="fn" %>
-<%@ taglib uri="tags-tiles" prefix="tiles"%>
-<%@ taglib uri="tags-html" prefix="html"%>
<%@ taglib uri="tags-core" prefix="c"%>
<%@ taglib uri="tags-fmt" prefix="fmt"%>
<%@ taglib uri="tags-lams" prefix="lams"%>
-
-
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
Fisheye: Tag ff911101cbe92d6813691c20c292fa04519820b4 refers to a dead (removed) revision in file `lams_tool_kaltura/web/layouts/defaultLayout.jsp'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag ff911101cbe92d6813691c20c292fa04519820b4 refers to a dead (removed) revision in file `lams_tool_kaltura/web/layouts/learningLayout.jsp'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag ff911101cbe92d6813691c20c292fa04519820b4 refers to a dead (removed) revision in file `lams_tool_kaltura/web/layouts/tabLayout.jsp'.
Fisheye: No comparison available. Pass `N' to diff?
Index: lams_tool_kaltura/web/pages/authoring/advanced.jsp
===================================================================
diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -rff911101cbe92d6813691c20c292fa04519820b4
--- lams_tool_kaltura/web/pages/authoring/advanced.jsp (.../advanced.jsp) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80)
+++ lams_tool_kaltura/web/pages/authoring/advanced.jsp (.../advanced.jsp) (revision ff911101cbe92d6813691c20c292fa04519820b4)
@@ -1,5 +1,4 @@
<%@ include file="/common/taglibs.jsp"%>
-
+
+
+
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <%@ include file="/common/messages.jsp"%>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Index: lams_tool_kaltura/web/pages/authoring/basic.jsp
===================================================================
diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -rff911101cbe92d6813691c20c292fa04519820b4
--- lams_tool_kaltura/web/pages/authoring/basic.jsp (.../basic.jsp) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80)
+++ lams_tool_kaltura/web/pages/authoring/basic.jsp (.../basic.jsp) (revision ff911101cbe92d6813691c20c292fa04519820b4)
@@ -9,9 +9,8 @@
<%=Configuration.get(ConfigurationKeys.KALTURA_KCW_UI_CONF_ID)%>
<%=Configuration.get(ConfigurationKeys.KALTURA_KDP_UI_CONF_ID)%>
-
-
-
+
+
@@ -148,9 +147,8 @@
if (deletionConfirmed) {
$(itemListTargetDiv).load(
- "",
+ "",
{
- dispatch: "removeItem",
itemIndex: idx,
sessionMapID: "${sessionMapID}"
},
@@ -162,9 +160,8 @@
}
function addItem(entryId, title, duration){
$(itemListTargetDiv).load(
- "",
+ "",
{
- dispatch: "addItem",
sessionMapID: "${sessionMapID}",
itemEntryId: entryId,
itemTitle: title,
@@ -177,9 +174,8 @@
}
function upItem(idx){
$(itemListTargetDiv).load(
- "",
+ "",
{
- dispatch: "upItem",
itemIndex: idx,
sessionMapID: "${sessionMapID}"
},
@@ -190,9 +186,8 @@
}
function downItem(idx){
$(itemListTargetDiv).load(
- "",
+ "",
{
- dispatch: "downItem",
itemIndex: idx,
sessionMapID: "${sessionMapID}"
},
@@ -209,14 +204,14 @@
-
+
-
Index: lams_tool_kaltura/web/pages/authoring/itemlist.jsp
===================================================================
diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -rff911101cbe92d6813691c20c292fa04519820b4
--- lams_tool_kaltura/web/pages/authoring/itemlist.jsp (.../itemlist.jsp) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80)
+++ lams_tool_kaltura/web/pages/authoring/itemlist.jsp (.../itemlist.jsp) (revision ff911101cbe92d6813691c20c292fa04519820b4)
@@ -22,7 +22,7 @@
- ?dispatch=preview&sessionMapID=${sessionMapID}&itemIndex=${status.index}&KeepThis=true&TB_iframe=true
+ ?sessionMapID=${sessionMapID}&itemIndex=${status.index}&KeepThis=true&TB_iframe=true
">
Index: lams_tool_kaltura/web/pages/authoring/pedagogicalPlannerForm.jsp
===================================================================
diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -rff911101cbe92d6813691c20c292fa04519820b4
--- lams_tool_kaltura/web/pages/authoring/pedagogicalPlannerForm.jsp (.../pedagogicalPlannerForm.jsp) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80)
+++ lams_tool_kaltura/web/pages/authoring/pedagogicalPlannerForm.jsp (.../pedagogicalPlannerForm.jsp) (revision ff911101cbe92d6813691c20c292fa04519820b4)
@@ -21,20 +21,19 @@
-
-
-
-
-
+
+
+
+
+
-
-
+
|
+ <%=Configuration.get(ConfigurationKeys.KALTURA_SERVER)%>
+ <%=Configuration.get(ConfigurationKeys.KALTURA_PARTNER_ID)%>
+ <%=Configuration.get(ConfigurationKeys.KALTURA_SUB_PARTNER_ID)%>
+ <%=Configuration.get(ConfigurationKeys.KALTURA_USER_SECRET)%>
+ <%=Configuration.get(ConfigurationKeys.KALTURA_KCW_UI_CONF_ID)%>
+ <%=Configuration.get(ConfigurationKeys.KALTURA_KDP_UI_CONF_ID)%>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ function addNewComment(comment){
+ $("#comments-area").load(
+ "
",
+ {
+ itemUid: ${item.uid},
+ comment: comment,
+ sessionMapID: "${sessionMapID}"
+ }
+ );
+ }
-
+ function hideItem(itemUid, toHide){
+ $.post(
+ "
",
+ {
+ itemUid: itemUid,
+ isHiding: toHide
+ },
+ function(data) {
+
+ //replace item-hide span
+ var itemHideText = '
';
+ if (toHide) {
+ $("#previewItem" + itemUid).addClass("item-hidden");
+ itemHideText += '
' +
+ '' +
+ '' +
+ '';
+ } else {
+ $("#previewItem" + itemUid).removeClass("item-hidden");
+ itemHideText += '';
+ }
+ itemHideText += '';
+ $("#previewItem" + itemUid + " .item-hide-management").replaceWith(itemHideText);
+ }
+ );
+
+ return false;
+ }
- <%--"Check for new" and "Add new image" buttons---------------%>
-
-
-
-
-
-
-
+ function hideComment(commentUid, toHide){
+ $.post(
+ "
",
+ {
+ commentUid: commentUid,
+ isHiding: toHide
+ },
+ function(data) {
+
+ //replace comment-hide span
+ var commentHideText = '';
+ $("#comment" + commentUid + " .comment-hide-management").replaceWith(commentHideText);
+ }
+ );
-
-
-
+ return false;
+ }
+
+ $(document).ready(function(){
+ $(".rating-stars").jRating({
+ phpPath : "?sessionMapID=${sessionMapID}",
+ rateMax : 5,
+ decimalLength : 1,
+ onSuccess : function(data, itemUid){
+ $("#averageRating" + itemUid).html(data.averageRating);
+ $("#numberOfVotes" + itemUid).html(data.numberOfVotes);
+ },
+ onError : function(){
+ jError('Error submitting rating, please retry');
+ }
+ });
+ $(".rating-stars-disabled").jRating({
+ rateMax : 5,
+ isDisabled : true
+ });
+ $(".rating-stars-disabled-small").jRating({
+ rateMax : 5,
+ type: 'small',
+ isDisabled : true
+ });
+
+ //edit mark
+ setVarsForm("dispatch=markItem&itemUid=${item.uid}");
+ $('#editItemMark').click(function() {
+ editBox(document.getElementById( "itemMark" ));
+ });
+
+ });
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
-
+
- ${itemMark}
-
-
-
-
-
-
-
-
- <%@ include file="/pages/learning/ratingStars.jsp"%>
+
-
-
- <%--Comments area----------------------------------------------%>
-
-
-
-
-
-
-
-