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 @@ - - - - - + + + + +
- -
+ Index: lams_tool_kaltura/web/pages/learning/commentlist.jsp =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -rff911101cbe92d6813691c20c292fa04519820b4 --- lams_tool_kaltura/web/pages/learning/commentlist.jsp (.../commentlist.jsp) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_tool_kaltura/web/pages/learning/commentlist.jsp (.../commentlist.jsp) (revision ff911101cbe92d6813691c20c292fa04519820b4) @@ -70,9 +70,9 @@
- +
Index: lams_tool_kaltura/web/pages/learning/defineLater.jsp =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -rff911101cbe92d6813691c20c292fa04519820b4 --- lams_tool_kaltura/web/pages/learning/defineLater.jsp (.../defineLater.jsp) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_tool_kaltura/web/pages/learning/defineLater.jsp (.../defineLater.jsp) (revision ff911101cbe92d6813691c20c292fa04519820b4) @@ -1,11 +1,35 @@ + <%@ include file="/common/taglibs.jsp"%> - - - - - - + + + + + + + + + + + <fmt:message key="activity.title" /> + + + + + + + + + + + + + + + + + + Index: lams_tool_kaltura/web/pages/learning/finish.jsp =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -rff911101cbe92d6813691c20c292fa04519820b4 --- lams_tool_kaltura/web/pages/learning/finish.jsp (.../finish.jsp) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_tool_kaltura/web/pages/learning/finish.jsp (.../finish.jsp) (revision ff911101cbe92d6813691c20c292fa04519820b4) @@ -1,3 +1,28 @@ - + +<%@ include file="/common/taglibs.jsp"%> + + + + + + + + + + + + <fmt:message key="activity.title" /> + + + + + + + + + + + + Index: lams_tool_kaltura/web/pages/learning/learning.jsp =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -rff911101cbe92d6813691c20c292fa04519820b4 --- lams_tool_kaltura/web/pages/learning/learning.jsp (.../learning.jsp) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_tool_kaltura/web/pages/learning/learning.jsp (.../learning.jsp) (revision ff911101cbe92d6813691c20c292fa04519820b4) @@ -1,433 +1,455 @@ + <%@ include file="/common/taglibs.jsp"%> - <%@ page import="org.lamsfoundation.lams.util.Configuration" %> <%@ page import="org.lamsfoundation.lams.util.ConfigurationKeys" %> -<%=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)%> - - - - - - - - - - - - - - - - - - - - - - - - + + + + + <%=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 = '
'; + if (toHide) { + $("#comment" + commentUid).addClass("item-hidden"); + commentHideText += '' + + '' + + '' + + ''; + } else { + $("#comment" + commentUid).removeClass("item-hidden"); + commentHideText += ''; + } + 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----------------------------------------------%> - - -
- <%@ include file="/pages/learning/commentlist.jsp"%> -
-
- -
- -
- -
- - <%--Reflection--------------------------------------------------%> - - -
-
-
- +
+ + + + +
- -
+ + + <%--Bottom buttons-------------------------------------------%> + + +
- - - - + + - + + + + + + + + + + + +
- - - - - - -
- -
- - <%--Bottom buttons-------------------------------------------%> + + + + + - -
- - - - - - - - - - - - - - - - - - - - - -
-
- - + + Index: lams_tool_kaltura/web/pages/learning/notebook.jsp =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -rff911101cbe92d6813691c20c292fa04519820b4 --- lams_tool_kaltura/web/pages/learning/notebook.jsp (.../notebook.jsp) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_tool_kaltura/web/pages/learning/notebook.jsp (.../notebook.jsp) (revision ff911101cbe92d6813691c20c292fa04519820b4) @@ -1,49 +1,73 @@ + <%@ include file="/common/taglibs.jsp"%> - - - - - + + + + + + + - - - + + + <fmt:message key="activity.title" /> + + + + + + + + + + + + + + + + + + + + + <%@ include file="/common/messages.jsp"%> + +
+ +
+ + + + + + + + + + + + + + + + +
+
+ +
- - <%@ include file="/common/messages.jsp"%> - -
- -
- - - - - - - - - - - - - - - - -
- Index: lams_tool_kaltura/web/pages/learning/submissionDeadline.jsp =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -rff911101cbe92d6813691c20c292fa04519820b4 --- lams_tool_kaltura/web/pages/learning/submissionDeadline.jsp (.../submissionDeadline.jsp) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_tool_kaltura/web/pages/learning/submissionDeadline.jsp (.../submissionDeadline.jsp) (revision ff911101cbe92d6813691c20c292fa04519820b4) @@ -1,49 +1,70 @@ + <%@ include file="/common/taglibs.jsp"%> - - - - - - - - - - - - - - - - - + + + + + + + - - - - + + + <fmt:message key="activity.title" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - Index: lams_tool_kaltura/web/pages/learning/uploaditem.jsp =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -rff911101cbe92d6813691c20c292fa04519820b4 --- lams_tool_kaltura/web/pages/learning/uploaditem.jsp (.../uploaditem.jsp) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_tool_kaltura/web/pages/learning/uploaditem.jsp (.../uploaditem.jsp) (revision ff911101cbe92d6813691c20c292fa04519820b4) @@ -135,9 +135,8 @@ function addItem(entryId, title, duration){ $.post( - "", + "", { - dispatch: "saveNewItem", sessionMapID: "${param.sessionMapID}", itemEntryId: entryId, itemTitle: title, @@ -151,7 +150,7 @@ function closeThickbox(){ if (lastUploadedItemUid != null) { - self.parent.location.href = '?dispatch=viewItem&sessionMapID=${param.sessionMapID}&itemUid=' + lastUploadedItemUid; + self.parent.location.href = '?sessionMapID=${param.sessionMapID}&itemUid=' + lastUploadedItemUid; } else { self.parent.tb_remove(); } Index: lams_tool_kaltura/web/pages/monitoring/daterestriction.jsp =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -rff911101cbe92d6813691c20c292fa04519820b4 --- lams_tool_kaltura/web/pages/monitoring/daterestriction.jsp (.../daterestriction.jsp) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_tool_kaltura/web/pages/monitoring/daterestriction.jsp (.../daterestriction.jsp) (revision ff911101cbe92d6813691c20c292fa04519820b4) @@ -14,9 +14,9 @@ - + - + Index: lams_tool_kaltura/web/pages/monitoring/editActivity.jsp =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -rff911101cbe92d6813691c20c292fa04519820b4 --- lams_tool_kaltura/web/pages/monitoring/editActivity.jsp (.../editActivity.jsp) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_tool_kaltura/web/pages/monitoring/editActivity.jsp (.../editActivity.jsp) (revision ff911101cbe92d6813691c20c292fa04519820b4) @@ -32,8 +32,8 @@ - + - + Index: lams_tool_kaltura/web/pages/monitoring/monitoring.jsp =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -rff911101cbe92d6813691c20c292fa04519820b4 --- lams_tool_kaltura/web/pages/monitoring/monitoring.jsp (.../monitoring.jsp) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_tool_kaltura/web/pages/monitoring/monitoring.jsp (.../monitoring.jsp) (revision ff911101cbe92d6813691c20c292fa04519820b4) @@ -1,19 +1,48 @@ + <%@ include file="/common/taglibs.jsp"%> <%@ page import="org.lamsfoundation.lams.tool.kaltura.util.KalturaConstants"%> - - - - - - + + + + + + + - - - - - - - + + + <fmt:message key="activity.title" /> + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: lams_tool_kaltura/web/pages/monitoring/summary.jsp =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -rff911101cbe92d6813691c20c292fa04519820b4 --- lams_tool_kaltura/web/pages/monitoring/summary.jsp (.../summary.jsp) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_tool_kaltura/web/pages/monitoring/summary.jsp (.../summary.jsp) (revision ff911101cbe92d6813691c20c292fa04519820b4) @@ -12,7 +12,7 @@ lams: '${lams}', submissionDeadline: '${submissionDeadline}', submissionDateString: '${submissionDateString}', - setSubmissionDeadlineUrl: '', + setSubmissionDeadlineUrl: '', toolContentID: '${param.toolContentID}', messageNotification: '', messageRestrictionSet: '', @@ -60,7 +60,7 @@ - ?dispatch=showGroupLearning&toolSessionID=${session.sessionID}&TB_iframe=true" class="btn btn-default btn-sm thickbox" title="${session.sessionName}"> + ?toolSessionID=${session.sessionID}&TB_iframe=true" class="btn btn-default btn-sm thickbox" title="${session.sessionName}"> ${session.sessionName}