Index: lams_learning/src/java/org/lamsfoundation/lams/learning/export/web/action/MainExportServlet.java =================================================================== diff -u -rab215784681cde07a197bf4c94d349ffa8b4f751 -re0d5332ce37af3581780bd93b6a5730a32c97c31 --- lams_learning/src/java/org/lamsfoundation/lams/learning/export/web/action/MainExportServlet.java (.../MainExportServlet.java) (revision ab215784681cde07a197bf4c94d349ffa8b4f751) +++ lams_learning/src/java/org/lamsfoundation/lams/learning/export/web/action/MainExportServlet.java (.../MainExportServlet.java) (revision e0d5332ce37af3581780bd93b6a5730a32c97c31) @@ -33,14 +33,18 @@ import java.io.File; import java.io.FileInputStream; import java.io.FileWriter; +import java.io.FileOutputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.PrintWriter; import java.lang.StringBuffer; import java.net.MalformedURLException; +import java.util.Iterator; +import java.util.List; + import javax.servlet.ServletException; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; @@ -51,6 +55,7 @@ import org.lamsfoundation.lams.tool.ToolAccessMode; import org.lamsfoundation.lams.usermanagement.User; import org.lamsfoundation.lams.usermanagement.dto.UserDTO; +import org.lamsfoundation.lams.util.CSSThemeUtil; import org.lamsfoundation.lams.util.HttpUrlConnectionUtil; import org.lamsfoundation.lams.util.FileUtil; import org.lamsfoundation.lams.util.FileUtilException; @@ -64,15 +69,20 @@ import org.lamsfoundation.lams.learning.export.service.IExportPortfolioService; import org.lamsfoundation.lams.learning.export.service.ExportPortfolioService; import org.lamsfoundation.lams.learning.export.service.ExportPortfolioServiceProxy; +import org.lamsfoundation.lams.learning.service.ILearnerService; +import org.lamsfoundation.lams.learning.service.LearnerServiceProxy; import org.lamsfoundation.lams.learning.web.util.LearningWebUtil; import org.lamsfoundation.lams.lesson.LearnerProgress; import org.lamsfoundation.lams.lesson.Lesson; +import org.lamsfoundation.lams.themes.CSSThemeVisualElement; import org.lamsfoundation.lams.web.session.SessionManager; import org.lamsfoundation.lams.web.util.AttributeNames; +import org.apache.struts.util.MessageResources; + /** * @author mtruong * @@ -90,6 +100,7 @@ private static Logger log = Logger.getLogger(MainExportServlet.class); private String exportTmpDir; + private MessageResources resources = MessageResources.getMessageResources(ExportPortfolioConstants.MESSAGE_RESOURCE_CONFIG_PARAM); @@ -103,11 +114,14 @@ String htmlOutput=null; Portfolio portfolios = null; + Long lessonID = null; + String lessonDescription = null; /** Get the cookies that were sent along with this request, then pass it onto export service */ Cookie[] cookies = request.getCookies(); IExportPortfolioService exportService = ExportPortfolioServiceProxy.getExportPortfolioService(this.getServletContext()); + ILearnerService learnerService = LearnerServiceProxy.getLearnerService(this.getServletContext()); String mode = WebUtil.readStrParam(request, AttributeNames.PARAM_MODE); @@ -116,32 +130,37 @@ HttpSession session = SessionManager.getSession(); UserDTO userDto = (UserDTO)session.getAttribute(AttributeNames.USER); Integer userId = userDto.getUserID(); - - Long lessonID = new Long(WebUtil.readLongParam(request, AttributeNames.PARAM_LESSON_ID)); + lessonID = new Long(WebUtil.readLongParam(request, AttributeNames.PARAM_LESSON_ID)); portfolios = exportService.exportPortfolioForStudent(userId, lessonID, true, cookies); } else if(mode.equals(ToolAccessMode.TEACHER.toString())) { //done in the monitoring environment - Long lessonID = new Long(WebUtil.readLongParam(request,AttributeNames.PARAM_LESSON_ID)); - + lessonID = new Long(WebUtil.readLongParam(request,AttributeNames.PARAM_LESSON_ID)); portfolios = exportService.exportPortfolioForTeacher(lessonID, cookies); } + Lesson lesson = learnerService.getLesson(lessonID); + if (lesson != null) + lessonDescription = lesson.getLessonDescription(); + if (portfolios!= null) { exportTmpDir = portfolios.getExportTmpDir(); String mainFileName = exportTmpDir+ File.separator + ExportPortfolioConstants.MAIN_EXPORT_FILENAME; - htmlOutput = generateMainPage(portfolios); + htmlOutput = generateMainPage(portfolios, lessonDescription); //writing the file to the temp export folder. BufferedWriter fileout = new BufferedWriter(new FileWriter(mainFileName)); fileout.write(htmlOutput); - fileout.close(); + fileout.close(); + //bundle the stylesheet with the package + bundleStylesheetWithExportPackage(exportTmpDir, request, cookies); + //zip up the contents of the temp export folder String zipFilename = exportService.zipPortfolio(ExportPortfolioConstants.ZIP_FILENAME, exportTmpDir); @@ -161,37 +180,30 @@ * @param portfolios * @return */ - private String generateMainPage(Portfolio portfolio) + private String generateMainPage(Portfolio portfolio, String lessonDescriptionToDisplay) { ToolPortfolio[] portfolios = portfolio.getToolPortfolios(); - StringBuffer htmlPage = new StringBuffer(); + String htmlPage; if (portfolios != null) { - - htmlPage.append("Export Portfolio"); - htmlPage.append("

Portfolio

Activities

"); - htmlPage.append("
    "); - for (int i=0; i"); - htmlPage.append(portfolios[i].getActivityName()) - .append(" ") + htmlContent.append("
  1. "); + htmlContent.append(portfolios[i].getActivityName()) + .append(" ") .append(portfolios[i].getActivityDescription()).append(""); - htmlPage.append("
  2. "); + htmlContent.append(""); } - htmlPage.append("
"); - htmlPage.append(""); + htmlPage = resources.getMessage(ExportPortfolioConstants.EXPORT_MAINPAGE_KEY, lessonDescriptionToDisplay, htmlContent.toString()); + } else - { - htmlPage.append("Export Portfolio"); - htmlPage.append("

Export Portfolio Failed

"); - htmlPage.append("This sequence does not support portfolio exports"); - htmlPage.append(""); - } - return htmlPage.toString(); + htmlPage = resources.getMessage(ExportPortfolioConstants.EXPORT_FAILED_KEY); + return htmlPage; + } @@ -201,7 +213,30 @@ return absolutePath.substring(tempSysDirName.length()+1, absolutePath.length()); } + private void bundleStylesheetWithExportPackage(String directory, HttpServletRequest request, Cookie[] cookies) throws IOException + { + List themeList = CSSThemeUtil.getAllUserThemes(); + + Iterator i = themeList.iterator(); + + while (i.hasNext()) + { + String theme = (String)i.next(); + + String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort(); + String url = basePath + "/lams/css/" + theme + ".css"; + HttpUrlConnectionUtil.writeResponseToFile(url, directory, theme + ".css", cookies); //cookies aren't really needed here. + } + + + + + + + } + + /* * The method below is commented out, because it uses HttpUrlConnection to connect to export service. * It might be reverted back to this method, if we need to use jsp engine for the look and feel of things.