Index: lams_central/conf/language/lams/ApplicationResources.properties =================================================================== diff -u -r24961a0e4692ce893e1903a9ab498f34aaf012b8 -r5637d8bff3d19e970c3c9aa92a5895b4897f9cef --- lams_central/conf/language/lams/ApplicationResources.properties (.../ApplicationResources.properties) (revision 24961a0e4692ce893e1903a9ab498f34aaf012b8) +++ lams_central/conf/language/lams/ApplicationResources.properties (.../ApplicationResources.properties) (revision 5637d8bff3d19e970c3c9aa92a5895b4897f9cef) @@ -878,6 +878,8 @@ outcome.authoring.input =Search and select by outcome name or code outcome.authoring.existing =Added outcomes outcome.authoring.existing.none =none +outcome.export.date =Exported on: +outcome.export =Export authoring.enable.confidence.levels=Enable confidence levels #=================== Specific to Team Based Learning (TBL) =========================# authoring.tbl.template.title=Team Based Learning Index: lams_central/src/java/org/lamsfoundation/lams/web/outcome/OutcomeAction.java =================================================================== diff -u -r24961a0e4692ce893e1903a9ab498f34aaf012b8 -r5637d8bff3d19e970c3c9aa92a5895b4897f9cef --- lams_central/src/java/org/lamsfoundation/lams/web/outcome/OutcomeAction.java (.../OutcomeAction.java) (revision 24961a0e4692ce893e1903a9ab498f34aaf012b8) +++ lams_central/src/java/org/lamsfoundation/lams/web/outcome/OutcomeAction.java (.../OutcomeAction.java) (revision 5637d8bff3d19e970c3c9aa92a5895b4897f9cef) @@ -24,10 +24,13 @@ import java.util.Date; import java.util.HashSet; +import java.util.LinkedHashMap; import java.util.LinkedHashSet; import java.util.List; import java.util.Set; +import javax.servlet.ServletOutputStream; +import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; @@ -57,6 +60,10 @@ import org.lamsfoundation.lams.usermanagement.User; import org.lamsfoundation.lams.usermanagement.dto.UserDTO; import org.lamsfoundation.lams.usermanagement.service.IUserManagementService; +import org.lamsfoundation.lams.util.ExcelCell; +import org.lamsfoundation.lams.util.ExcelUtil; +import org.lamsfoundation.lams.util.FileUtil; +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; @@ -70,6 +77,7 @@ private static IUserManagementService userManagementService; private static ISecurityService securityService; private static IOutcomeService outcomeService; + private static MessageService messageService; public ActionForward outcomeManage(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { @@ -652,6 +660,32 @@ return mapping.findForward("scaleEdit"); } + public ActionForward scaleExport(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response) throws Exception { + UserDTO user = getUserDTO(); + getSecurityService().isSysadmin(user.getUserID(), "export outcome scales", true); + + LinkedHashMap dataToExport = getOutcomeService().exportScales(); + + String fileName = "lams_outcome_scales.xlsx"; + fileName = FileUtil.encodeFilenameForDownload(request, fileName); + + response.setContentType("application/x-download"); + response.setHeader("Content-Disposition", "attachment;filename=" + fileName); + + // set cookie that will tell JS script that export has been finished + String downloadTokenValue = WebUtil.readStrParam(request, "downloadTokenValue"); + Cookie fileDownloadTokenCookie = new Cookie("fileDownloadToken", downloadTokenValue); + fileDownloadTokenCookie.setPath("/"); + response.addCookie(fileDownloadTokenCookie); + + // Code to generate file and write file contents to response + ServletOutputStream out = response.getOutputStream(); + ExcelUtil.createExcel(out, dataToExport, getMessageService().getMessage("outcome.export.date"), true); + + return null; + } + private UserDTO getUserDTO() { HttpSession ss = SessionManager.getSession(); return (UserDTO) ss.getAttribute(AttributeNames.USER); @@ -708,4 +742,13 @@ } return OutcomeAction.outcomeService; } + + private MessageService getMessageService() { + if (OutcomeAction.messageService == null) { + WebApplicationContext ctx = WebApplicationContextUtils + .getRequiredWebApplicationContext(getServlet().getServletContext()); + OutcomeAction.messageService = (MessageService) ctx.getBean("centralMessageService"); + } + return messageService; + } } \ No newline at end of file Index: lams_central/web/css/outcome.scss =================================================================== diff -u -r846f7b4c76f01650ce4a2df946772bafc4228dcf -r5637d8bff3d19e970c3c9aa92a5895b4897f9cef --- lams_central/web/css/outcome.scss (.../outcome.scss) (revision 846f7b4c76f01650ce4a2df946772bafc4228dcf) +++ lams_central/web/css/outcome.scss (.../outcome.scss) (revision 5637d8bff3d19e970c3c9aa92a5895b4897f9cef) @@ -14,6 +14,11 @@ height: 16px; } +#exportButton { + float: left; + margin: 20px 0 10px 10px; +} + #addButton { float: right; margin: 20px 10px 10px 0; Index: lams_central/web/includes/javascript/outcome.js =================================================================== diff -u -r846f7b4c76f01650ce4a2df946772bafc4228dcf -r5637d8bff3d19e970c3c9aa92a5895b4897f9cef --- lams_central/web/includes/javascript/outcome.js (.../outcome.js) (revision 846f7b4c76f01650ce4a2df946772bafc4228dcf) +++ lams_central/web/includes/javascript/outcome.js (.../outcome.js) (revision 5637d8bff3d19e970c3c9aa92a5895b4897f9cef) @@ -66,4 +66,20 @@ function submitScale(){ CKEDITOR.instances.description.updateElement(); document.getElementById("scaleForm"); -} \ No newline at end of file +} + +function exportScale(){ + var exportButton = $('#exportButton').button('loading'), + token = new Date().getTime(), + fileDownloadCheckTimer = window.setInterval(function () { + var cookieValue = $.cookie('fileDownloadToken'); + if (cookieValue == token) { + //unBlock export button + window.clearInterval(fileDownloadCheckTimer); + $.cookie('fileDownloadToken', null); //clears this cookie value + exportButton.button('reset'); + } + }, 1000); + document.location.href = LAMS_URL + 'outcome.do?method=scaleExport&downloadTokenValue=' + token; + return false; +} \ No newline at end of file Index: lams_central/web/outcome/scaleManage.jsp =================================================================== diff -u -r24961a0e4692ce893e1903a9ab498f34aaf012b8 -r5637d8bff3d19e970c3c9aa92a5895b4897f9cef --- lams_central/web/outcome/scaleManage.jsp (.../scaleManage.jsp) (revision 24961a0e4692ce893e1903a9ab498f34aaf012b8) +++ lams_central/web/outcome/scaleManage.jsp (.../scaleManage.jsp) (revision 5637d8bff3d19e970c3c9aa92a5895b4897f9cef) @@ -14,6 +14,7 @@ +