Index: lams_tool_spreadsheet/src/java/org/lamsfoundation/lams/tool/spreadsheet/util/SpreadsheetBundler.java =================================================================== diff -u --- lams_tool_spreadsheet/src/java/org/lamsfoundation/lams/tool/spreadsheet/util/SpreadsheetBundler.java (revision 0) +++ lams_tool_spreadsheet/src/java/org/lamsfoundation/lams/tool/spreadsheet/util/SpreadsheetBundler.java (revision 961ab730601111c25f9d6dfc93584f685e985d54) @@ -0,0 +1,156 @@ +/**************************************************************** + * 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 + * **************************************************************** + */ + +/* $Id$ */ +package org.lamsfoundation.lams.tool.spreadsheet.util; + +import java.io.File; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.net.MalformedURLException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.servlet.http.Cookie; +import javax.servlet.http.HttpServletRequest; + +import org.apache.commons.lang.ArrayUtils; +import org.apache.log4j.Logger; +import org.lamsfoundation.lams.learning.export.web.action.Bundler; +import org.lamsfoundation.lams.learning.export.web.action.ImageBundler; +import org.lamsfoundation.lams.themes.CSSThemeVisualElement; +import org.lamsfoundation.lams.tool.spreadsheet.SpreadsheetConstants; +import org.lamsfoundation.lams.util.Configuration; +import org.lamsfoundation.lams.util.ConfigurationKeys; +import org.lamsfoundation.lams.util.HttpUrlConnectionUtil; +import org.lamsfoundation.lams.web.filter.LocaleFilter; + +public class SpreadsheetBundler extends Bundler { + + public SpreadsheetBundler() {} + + /** + * This method bundles the files to the given output dir + * + * @param request the request for the export + * @param cookies cookies for the request + * @param outputDirectory the location where the files should be written + * @param toolImageUrlDir the url location of the images directory + * @param fileNames an array of file-names (not paths) you wish to include in the bundle + * @throws Exception + */ + public void bundle(HttpServletRequest request, Cookie[] cookies, String outputDirectory) throws Exception + { + bundleViaHTTP(request, cookies, outputDirectory); + } + + /** + * See bundle + * + * @param request + * @param cookies + * @param outputDirectory + * @param toolImageUrlDir + * @param fileNames + * @throws MalformedURLException + * @throws FileNotFoundException + * @throws IOException + */ + private void bundleViaHTTP(HttpServletRequest request, Cookie[] cookies, String outputDirectory) throws MalformedURLException, FileNotFoundException, IOException{ + +// String toolImageUrlDir = getImagesUrlDir(); + + String[] directoriesNames = { + "translations", + "tinymce" + File.separator + "langs", + "tinymce" + File.separator + "utils", + "tinymce" + File.separator + "plugins" + File.separator + "paste" + File.separator + "css", + "tinymce" + File.separator + "plugins" + File.separator + "paste" + File.separator + "images", + "tinymce" + File.separator + "plugins" + File.separator + "paste" + File.separator + "jscripts", + "tinymce" + File.separator + "plugins" + File.separator + "paste" + File.separator + "langs", + "tinymce" + File.separator + "themes" + File.separator + "advanced" + File.separator + "css", + "tinymce" + File.separator + "themes" + File.separator + "advanced" + File.separator + "images", + "tinymce" + File.separator + "themes" + File.separator + "advanced" + File.separator + "jscripts", + "tinymce" + File.separator + "themes" + File.separator + "advanced" + File.separator + "langs"}; + + List directories = new ArrayList(); + for (String directoryName : directoriesNames) { + directories.add(outputDirectory + File.separator + "simple_spreadsheet" + File.separator + directoryName); + } + this.createDirectories(directories); + + Map filesNames = new HashMap(); + filesNames.put("", new String [] {"changelog.txt", "editor.htm", "index_offline.html", "keycodes.html", "LICENSE.txt", "manual.html", "print.css", "print_noline.css", "spreadsheet.js", "spreadsheet_exported.html", "spreadsheet_offline.html", "styles.css", "styles_noline.css"}); + filesNames.put(File.separator + "translations", new String [] {"cz.js", "da.js", "de.js", "en.js", "enUK.js", "es.js", "fr.js", "hr.js", "hu.js", "it.js", "nl.js", "pl.js", "ptBR.js", "ru.js", "se.js", "sk.js", "tr.js"}); + filesNames.put(File.separator + "tinymce", new String [] {"blank.htm", "index.html", "license.txt", "test.html", "tiny_mce.js", "tiny_mce_popup.js"}); + filesNames.put(File.separator + "tinymce" + File.separator + "langs", new String [] {"en.js"}); + filesNames.put(File.separator + "tinymce" + File.separator + "utils", new String [] {"editable_selects.js", "form_utils.js", "mclayer.js", "mctabs.js", "validate.js"}); + filesNames.put(File.separator + "tinymce" + File.separator + "plugins" + File.separator + "paste", new String [] {"blank.htm", "editor_plugin.js", "pastetext.htm", "pasteword.htm"}); + filesNames.put(File.separator + "tinymce" + File.separator + "plugins" + File.separator + "paste" + File.separator + "css", new String [] {"blank.css", "pasteword.css"}); + filesNames.put(File.separator + "tinymce" + File.separator + "plugins" + File.separator + "paste" + File.separator + "images", new String [] {"pastetext.gif", "pasteword.gif", "selectall.gif"}); + filesNames.put(File.separator + "tinymce" + File.separator + "plugins" + File.separator + "paste" + File.separator + "jscripts", new String [] {"pastetext.js", "pasteword.js"}); + filesNames.put(File.separator + "tinymce" + File.separator + "plugins" + File.separator + "paste" + File.separator + "langs", new String [] {"en.js"}); + + filesNames.put(File.separator + "tinymce" + File.separator + "themes" + File.separator + "advanced", new String [] {"about.htm", "anchor.htm", "charmap.htm", "color_picker.htm", "editor_template.js", "image.htm", "link.htm", "source_editor.htm"}); + + filesNames.put(File.separator + "tinymce" + File.separator + "themes" + File.separator + "advanced" + File.separator + "css", new String [] {"editor_content.css", "editor_popup.css", "editor_ui.css"}); + filesNames.put(File.separator + "tinymce" + File.separator + "themes" + File.separator + "advanced" + File.separator + "images", new String [] {"anchor.gif", "anchor_symbol.gif", "backcolor.gif", "bold.gif", "bold_de_se.gif", "bold_es.gif", "bold_fr.gif", "bold_ru.gif", "bold_tw.gif", "browse.gif", "bullist.gif", "button_menu.gif", "buttons.gif", "cancel_button_bg.gif", "charmap.gif", "cleanup.gif", "close.gif", "code.gif", "color.gif", "copy.gif", "custom_1.gif", "cut.gif", "forecolor.gif", "help.gif", "hr.gif", "image.gif", "indent.gif", "insert_button_bg.gif", "italic.gif", "italic_de_se.gif", "italic_es.gif", "italic_ru.gif", "italic_tw.gif", "justifycenter.gif", "justifyfull.gif", "justifyleft.gif", "justifyright.gif", "link.gif", "menu_check.gif", "newdocument.gif", "numlist.gif", "opacity.png", "outdent.gif", "paste.gif", "redo.gif", "removeformat.gif", "separator.gif", "spacer.gif", "statusbar_resize.gif", "strikethrough.gif", "sub.gif", "sup.gif", "underline.gif", "underline_es.gif", "underline_fr.gif", "underline_ru.gif", "underline_tw.gif", "undo.gif", "unlink.gif", "visualaid.gif"}); + filesNames.put(File.separator + "tinymce" + File.separator + "themes" + File.separator + "advanced" + File.separator + "jscripts", new String [] {"about.js", "anchor.js", "charmap.js", "color_picker.js", "image.js", "link.js", "source_editor.js"}); + filesNames.put(File.separator + "tinymce" + File.separator + "themes" + File.separator + "advanced" + File.separator + "langs", new String [] {"en.js"}); + + + + + + + + for (String filePath: filesNames.keySet()) { + for(String fileName : filesNames.get(filePath)) { + + String urlToConnectTo = getImagesUrlDir() + filePath + File.separator + fileName; + String directoryToStoreFile = outputDirectory + File.separator + "simple_spreadsheet" + filePath; + HttpUrlConnectionUtil.writeResponseToFile(urlToConnectTo, directoryToStoreFile, fileName , cookies); //cookies aren't really needed here. + + log.debug("Copying image from source: " + urlToConnectTo + "to desitnation: " + directoryToStoreFile); + } + } + + } + + private String getImagesUrlDir() { + String spreadsheetUrlPath = Configuration.get(ConfigurationKeys.SERVER_URL); + if (spreadsheetUrlPath == null) { + log.error("Unable to get path to the LAMS Spreadsheet URL from the configuration table. Spreadsheet javascript files export failed"); + return ""; + } else { + spreadsheetUrlPath = spreadsheetUrlPath + File.separator + "tool" + File.separator + SpreadsheetConstants.TOOL_SIGNATURE + File.separator + "includes" + File.separator + "javascript" + File.separator + "simple_spreadsheet"; + return spreadsheetUrlPath; + } + } + +} + + \ No newline at end of file Index: lams_tool_spreadsheet/src/java/org/lamsfoundation/lams/tool/spreadsheet/web/action/ViewItemAction.java =================================================================== diff -u -ra7fed1be51941ace379dbb695d52bd08a315dae6 -r961ab730601111c25f9d6dfc93584f685e985d54 --- lams_tool_spreadsheet/src/java/org/lamsfoundation/lams/tool/spreadsheet/web/action/ViewItemAction.java (.../ViewItemAction.java) (revision a7fed1be51941ace379dbb695d52bd08a315dae6) +++ lams_tool_spreadsheet/src/java/org/lamsfoundation/lams/tool/spreadsheet/web/action/ViewItemAction.java (.../ViewItemAction.java) (revision 961ab730601111c25f9d6dfc93584f685e985d54) @@ -140,10 +140,6 @@ } request.setAttribute(SpreadsheetConstants.ATTR_CODE, code); - - - - return mapping.findForward(SpreadsheetConstants.SUCCESS); } Index: lams_tool_spreadsheet/src/java/org/lamsfoundation/lams/tool/spreadsheet/web/servlet/ExportServlet.java =================================================================== diff -u -r969c6dbe2dfdd2f86096a05d3c59b8ab5f0ef21d -r961ab730601111c25f9d6dfc93584f685e985d54 --- lams_tool_spreadsheet/src/java/org/lamsfoundation/lams/tool/spreadsheet/web/servlet/ExportServlet.java (.../ExportServlet.java) (revision 969c6dbe2dfdd2f86096a05d3c59b8ab5f0ef21d) +++ lams_tool_spreadsheet/src/java/org/lamsfoundation/lams/tool/spreadsheet/web/servlet/ExportServlet.java (.../ExportServlet.java) (revision 961ab730601111c25f9d6dfc93584f685e985d54) @@ -40,6 +40,7 @@ import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; +import org.lamsfoundation.lams.learning.export.web.action.CustomToolImageBundler; import org.lamsfoundation.lams.notebook.model.NotebookEntry; import org.lamsfoundation.lams.notebook.service.CoreNotebookConstants; import org.lamsfoundation.lams.tool.ToolAccessMode; @@ -53,7 +54,10 @@ import org.lamsfoundation.lams.tool.spreadsheet.service.SpreadsheetApplicationException; import org.lamsfoundation.lams.tool.spreadsheet.service.SpreadsheetServiceProxy; import org.lamsfoundation.lams.tool.spreadsheet.util.ReflectDTOComparator; +import org.lamsfoundation.lams.tool.spreadsheet.util.SpreadsheetBundler; import org.lamsfoundation.lams.tool.spreadsheet.util.SpreadsheetToolContentHandler; +import org.lamsfoundation.lams.util.Configuration; +import org.lamsfoundation.lams.util.ConfigurationKeys; import org.lamsfoundation.lams.util.FileUtil; import org.lamsfoundation.lams.web.servlet.AbstractExportPortfolioServlet; import org.lamsfoundation.lams.web.util.AttributeNames; @@ -71,7 +75,7 @@ private static final long serialVersionUID = -4529093489007108143L; private static Logger logger = Logger.getLogger(ExportServlet.class); - + private final String FILENAME = "spreadsheet_main.html"; private SpreadsheetToolContentHandler handler; @@ -103,6 +107,15 @@ } String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + request.getContextPath(); + + // Attempting to export required images + try { + SpreadsheetBundler imageBundler = new SpreadsheetBundler(); + imageBundler.bundle(request, cookies, directoryName); + } catch (Exception e) { + logger.error("Could not export spreadsheet javascript files, some files may be missing in export portfolio", e); + } + writeResponseToFile(basePath + "/pages/export/exportportfolio.jsp?sessionMapID=" + sessionMap.getSessionID(), directoryName, FILENAME, cookies); return FILENAME; @@ -265,4 +278,6 @@ } return reflectDTO; } + + } Fisheye: Tag 961ab730601111c25f9d6dfc93584f685e985d54 refers to a dead (removed) revision in file `lams_tool_spreadsheet/web/includes/javascript/simple_spreadsheet/examples/features_de.js'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 961ab730601111c25f9d6dfc93584f685e985d54 refers to a dead (removed) revision in file `lams_tool_spreadsheet/web/includes/javascript/simple_spreadsheet/examples/features_de_offline.js'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 961ab730601111c25f9d6dfc93584f685e985d54 refers to a dead (removed) revision in file `lams_tool_spreadsheet/web/includes/javascript/simple_spreadsheet/examples/features_en.js'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 961ab730601111c25f9d6dfc93584f685e985d54 refers to a dead (removed) revision in file `lams_tool_spreadsheet/web/includes/javascript/simple_spreadsheet/examples/features_en_offline.js'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 961ab730601111c25f9d6dfc93584f685e985d54 refers to a dead (removed) revision in file `lams_tool_spreadsheet/web/includes/javascript/simple_spreadsheet/examples/survey.js'. Fisheye: No comparison available. Pass `N' to diff? Index: lams_tool_spreadsheet/web/includes/javascript/simple_spreadsheet/spreadsheet_exported.html =================================================================== diff -u --- lams_tool_spreadsheet/web/includes/javascript/simple_spreadsheet/spreadsheet_exported.html (revision 0) +++ lams_tool_spreadsheet/web/includes/javascript/simple_spreadsheet/spreadsheet_exported.html (revision 961ab730601111c25f9d6dfc93584f685e985d54) @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + + +
+ +


+ +

+ +
+ + +
+ +
+ +


+ + + + +
+ Close +
+ +
+ + + + + + + + + Fisheye: Tag 961ab730601111c25f9d6dfc93584f685e985d54 refers to a dead (removed) revision in file `lams_tool_spreadsheet/web/includes/javascript/simple_spreadsheet/w.htm'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 961ab730601111c25f9d6dfc93584f685e985d54 refers to a dead (removed) revision in file `lams_tool_spreadsheet/web/includes/javascript/w.htm'. Fisheye: No comparison available. Pass `N' to diff? Index: lams_tool_spreadsheet/web/pages/export/exportportfolio.jsp =================================================================== diff -u -r969c6dbe2dfdd2f86096a05d3c59b8ab5f0ef21d -r961ab730601111c25f9d6dfc93584f685e985d54 --- lams_tool_spreadsheet/web/pages/export/exportportfolio.jsp (.../exportportfolio.jsp) (revision 969c6dbe2dfdd2f86096a05d3c59b8ab5f0ef21d) +++ lams_tool_spreadsheet/web/pages/export/exportportfolio.jsp (.../exportportfolio.jsp) (revision 961ab730601111c25f9d6dfc93584f685e985d54) @@ -9,6 +9,11 @@ + @@ -26,6 +31,16 @@
+ + + + + + + + + +

${title} Index: lams_tool_spreadsheet/web/pages/export/summarylist.jsp =================================================================== diff -u -r969c6dbe2dfdd2f86096a05d3c59b8ab5f0ef21d -r961ab730601111c25f9d6dfc93584f685e985d54 --- lams_tool_spreadsheet/web/pages/export/summarylist.jsp (.../summarylist.jsp) (revision 969c6dbe2dfdd2f86096a05d3c59b8ab5f0ef21d) +++ lams_tool_spreadsheet/web/pages/export/summarylist.jsp (.../summarylist.jsp) (revision 961ab730601111c25f9d6dfc93584f685e985d54) @@ -5,6 +5,8 @@

${summary.sessionName}

+ + @@ -13,7 +15,21 @@ - + + + + + + + + + + ${user.loginName} + + + ${user.loginName} + + Index: lams_tool_spreadsheet/web/pages/reviewitem/reviewitem.jsp =================================================================== diff -u -r7f9f772433a7fd55c4475241d4e3bc0765f474e8 -r961ab730601111c25f9d6dfc93584f685e985d54 --- lams_tool_spreadsheet/web/pages/reviewitem/reviewitem.jsp (.../reviewitem.jsp) (revision 7f9f772433a7fd55c4475241d4e3bc0765f474e8) +++ lams_tool_spreadsheet/web/pages/reviewitem/reviewitem.jsp (.../reviewitem.jsp) (revision 961ab730601111c25f9d6dfc93584f685e985d54) @@ -42,6 +42,6 @@
- +