Index: lams_admin/src/java/org/lamsfoundation/lams/admin/web/LibraryManageAction.java =================================================================== diff -u -r31e4dcdab8a38a651f89ca4e13b5c7f951d5c13f -r870373d635bc769aee2dc271e6ff12818fcfcea6 --- lams_admin/src/java/org/lamsfoundation/lams/admin/web/LibraryManageAction.java (.../LibraryManageAction.java) (revision 31e4dcdab8a38a651f89ca4e13b5c7f951d5c13f) +++ lams_admin/src/java/org/lamsfoundation/lams/admin/web/LibraryManageAction.java (.../LibraryManageAction.java) (revision 870373d635bc769aee2dc271e6ff12818fcfcea6) @@ -6,6 +6,7 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; import org.apache.commons.lang.StringUtils; import org.apache.struts.action.Action; @@ -17,8 +18,11 @@ import org.lamsfoundation.lams.learningdesign.dto.LearningLibraryDTO; import org.lamsfoundation.lams.learningdesign.dto.LibraryActivityDTO; import org.lamsfoundation.lams.learningdesign.service.ILearningDesignService; +import org.lamsfoundation.lams.usermanagement.dto.UserDTO; import org.lamsfoundation.lams.usermanagement.service.IUserManagementService; import org.lamsfoundation.lams.util.WebUtil; +import org.lamsfoundation.lams.web.session.SessionManager; +import org.lamsfoundation.lams.web.util.AttributeNames; import org.springframework.web.context.WebApplicationContext; import org.springframework.web.context.support.WebApplicationContextUtils; @@ -40,7 +44,13 @@ public static final String PARAM_LIBRARY_ID = "libraryID"; public static final String PARAM_ACTION = "action"; public static final String ERROR_MSG_NO_PRIVILEDGE = "error.no.sysadmin.priviledge"; - + + private String getUserLanguage() { + HttpSession ss = SessionManager.getSession(); + UserDTO user = (UserDTO) ss.getAttribute(AttributeNames.USER); + return user != null ? user.getLocaleLanguage() : ""; + } + /** * Entry of STRUST action */ @@ -62,7 +72,7 @@ // --------------------------- // Display all libraries ILearningDesignService ldService = getLearningDesignService(); - List lds = ldService.getAllLearningLibraryDetails(false); + List lds = ldService.getAllLearningLibraryDetails(false, getUserLanguage()); //handle multiple activities library: only left on activity which has learning_libarayIid populated for (LearningLibraryDTO libraryDTO : lds) { Index: lams_admin/src/java/org/lamsfoundation/lams/admin/web/ToolContentListAction.java =================================================================== diff -u -r54f5e17d1a5e8baae23bb9332f83ad8d8e5ac405 -r870373d635bc769aee2dc271e6ff12818fcfcea6 --- lams_admin/src/java/org/lamsfoundation/lams/admin/web/ToolContentListAction.java (.../ToolContentListAction.java) (revision 54f5e17d1a5e8baae23bb9332f83ad8d8e5ac405) +++ lams_admin/src/java/org/lamsfoundation/lams/admin/web/ToolContentListAction.java (.../ToolContentListAction.java) (revision 870373d635bc769aee2dc271e6ff12818fcfcea6) @@ -28,6 +28,7 @@ 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; @@ -40,6 +41,9 @@ import org.lamsfoundation.lams.learningdesign.dto.LibraryActivityDTO; import org.lamsfoundation.lams.learningdesign.service.ILearningDesignService; import org.lamsfoundation.lams.usermanagement.Role; +import org.lamsfoundation.lams.usermanagement.dto.UserDTO; +import org.lamsfoundation.lams.web.session.SessionManager; +import org.lamsfoundation.lams.web.util.AttributeNames; import org.springframework.web.context.WebApplicationContext; import org.springframework.web.context.support.WebApplicationContextUtils; @@ -57,6 +61,12 @@ //private static Logger log = Logger.getLogger(ToolContentListAction.class); + private String getUserLanguage() { + HttpSession ss = SessionManager.getSession(); + UserDTO user = (UserDTO) ss.getAttribute(AttributeNames.USER); + return user != null ? user.getLocaleLanguage() : ""; + } + public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, @@ -73,7 +83,7 @@ WebApplicationContext ctx = WebApplicationContextUtils.getRequiredWebApplicationContext(getServlet().getServletContext()); ILearningDesignService learningDesignService = (ILearningDesignService)ctx.getBean("learningDesignService"); - List learningLibraryDTOs = learningDesignService.getAllLearningLibraryDetails(); + List learningLibraryDTOs = learningDesignService.getAllLearningLibraryDetails(getUserLanguage()); ArrayList activeTools = filterActiveTools(learningLibraryDTOs); request.setAttribute("activeTools", activeTools); Index: lams_build/lib/lams/lams.jar =================================================================== diff -u -rccff89f320766710d4f6e333564ed838d76ca23d -r870373d635bc769aee2dc271e6ff12818fcfcea6 Binary files differ Index: lams_central/src/java/org/lamsfoundation/lams/authoring/service/AuthoringService.java =================================================================== diff -u -r56f0a9dbc1b2eab52b3b798c891b4bb5794d4f0d -r870373d635bc769aee2dc271e6ff12818fcfcea6 --- lams_central/src/java/org/lamsfoundation/lams/authoring/service/AuthoringService.java (.../AuthoringService.java) (revision 56f0a9dbc1b2eab52b3b798c891b4bb5794d4f0d) +++ lams_central/src/java/org/lamsfoundation/lams/authoring/service/AuthoringService.java (.../AuthoringService.java) (revision 870373d635bc769aee2dc271e6ff12818fcfcea6) @@ -334,12 +334,12 @@ } /** - * @see org.lamsfoundation.lams.authoring.service.IAuthoringService#getLearningDesignDetails(java.lang.Long) + * @see org.lamsfoundation.lams.authoring.service.IAuthoringService#getLearningDesignDetails(java.lang.Long, java.lang.Long) */ - public String getLearningDesignDetails(Long learningDesignID)throws IOException{ + public String getLearningDesignDetails(Long learningDesignID, String languageCode)throws IOException{ FlashMessage flashMessage= null; - LearningDesignDTO learningDesignDTO = learningDesignService.getLearningDesignDTO(learningDesignID); + LearningDesignDTO learningDesignDTO = learningDesignService.getLearningDesignDTO(learningDesignID, languageCode); if(learningDesignDTO==null) flashMessage = FlashMessage.getNoSuchLearningDesignExists("getLearningDesignDetails",learningDesignID); @@ -1155,7 +1155,7 @@ return listOfValidationErrorDTOs; } - public Vector getToolActivities(Long learningDesignId) { + public Vector getToolActivities(Long learningDesignId, String languageCode) { LearningDesign learningDesign = learningDesignDAO.getLearningDesignById(learningDesignId); Vector listOfAuthoringActivityDTOs = new Vector(); @@ -1169,7 +1169,7 @@ // but we don't need to in this case as it is only doing it for tool activities, and the extra parameter is only // used for branching activities ToolActivity toolActivity = (ToolActivity) activityDAO.getActivityByActivityId(currentActivity.getActivityId()); - AuthoringActivityDTO activityDTO = new AuthoringActivityDTO(toolActivity, null); + AuthoringActivityDTO activityDTO = new AuthoringActivityDTO(toolActivity, null, languageCode); listOfAuthoringActivityDTOs.add(activityDTO); } catch (ToolException e) { String error = "" @@ -1224,8 +1224,8 @@ * (non-Javadoc) * @see org.lamsfoundation.lams.authoring.service.IAuthoringService#getAllLearningLibraryDetails() */ - public String getAllLearningLibraryDetails()throws IOException{ - FlashMessage flashMessage = new FlashMessage("getAllLearningLibraryDetails",learningDesignService.getAllLearningLibraryDetails()); + public String getAllLearningLibraryDetails(String languageCode)throws IOException{ + FlashMessage flashMessage = new FlashMessage("getAllLearningLibraryDetails",learningDesignService.getAllLearningLibraryDetails(languageCode)); return flashMessage.serializeMessage(); } Index: lams_central/src/java/org/lamsfoundation/lams/authoring/service/IAuthoringService.java =================================================================== diff -u -r053f4adbf9e3b8f5eca3e67b4fba0350e65e78fc -r870373d635bc769aee2dc271e6ff12818fcfcea6 --- lams_central/src/java/org/lamsfoundation/lams/authoring/service/IAuthoringService.java (.../IAuthoringService.java) (revision 053f4adbf9e3b8f5eca3e67b4fba0350e65e78fc) +++ lams_central/src/java/org/lamsfoundation/lams/authoring/service/IAuthoringService.java (.../IAuthoringService.java) (revision 870373d635bc769aee2dc271e6ff12818fcfcea6) @@ -133,7 +133,7 @@ * @return String The requested LearningDesign in WDDX format * @throws Exception */ - public String getLearningDesignDetails(Long learningDesignID)throws IOException; + public String getLearningDesignDetails(Long learningDesignID, String languageCode)throws IOException; /** * This method saves a new Learning Design to the database. @@ -166,7 +166,7 @@ * @param learningDesignId * @return */ - public Vector getToolActivities(Long learningDesignId); + public Vector getToolActivities(Long learningDesignId, String languageCode); /** * This method returns a output definitions of the Tool @@ -210,7 +210,7 @@ * @return String The required information in WDDX format * @throws IOException */ - public String getAllLearningLibraryDetails()throws IOException; + public String getAllLearningLibraryDetails(String languageCode)throws IOException; /** * Returns a string representing the new tool content id in Index: lams_central/src/java/org/lamsfoundation/lams/authoring/web/AuthoringAction.java =================================================================== diff -u -r309a597eada52a4079f2985e0d97beedf9adda42 -r870373d635bc769aee2dc271e6ff12818fcfcea6 --- lams_central/src/java/org/lamsfoundation/lams/authoring/web/AuthoringAction.java (.../AuthoringAction.java) (revision 309a597eada52a4079f2985e0d97beedf9adda42) +++ lams_central/src/java/org/lamsfoundation/lams/authoring/web/AuthoringAction.java (.../AuthoringAction.java) (revision 870373d635bc769aee2dc271e6ff12818fcfcea6) @@ -76,6 +76,12 @@ return user != null ? user.getUserID() : null; } + private String getUserLanguage() { + HttpSession ss = SessionManager.getSession(); + UserDTO user = (UserDTO) ss.getAttribute(AttributeNames.USER); + return user != null ? user.getLocaleLanguage() : ""; + } + /** Output the supplied WDDX packet. If the request parameter USE_JSP_OUTPUT * is set, then it sets the session attribute "parameterName" to the wddx packet string. * If USE_JSP_OUTPUT is not set, then the packet is written out to the @@ -121,7 +127,7 @@ try { Long learningDesignID = WebUtil.readLongParam(request,"learningDesignID",false); - wddxPacket = authoringService.getLearningDesignDetails(learningDesignID); + wddxPacket = authoringService.getLearningDesignDetails(learningDesignID, getUserLanguage()); } catch (Exception e) { wddxPacket = handleException(e, "getLearningDesignDetails", authoringService).serializeMessage(); } @@ -186,7 +192,7 @@ String wddxPacket; IAuthoringService authoringService = getAuthoringService(); try { - wddxPacket = authoringService.getAllLearningLibraryDetails(); + wddxPacket = authoringService.getAllLearningLibraryDetails(getUserLanguage()); } catch (Exception e) { wddxPacket = handleException(e, "getAllLearningLibraryDetails", authoringService).serializeMessage(); } Index: lams_central/src/java/org/lamsfoundation/lams/authoring/web/StoreLDServlet.java =================================================================== diff -u -r309a597eada52a4079f2985e0d97beedf9adda42 -r870373d635bc769aee2dc271e6ff12818fcfcea6 --- lams_central/src/java/org/lamsfoundation/lams/authoring/web/StoreLDServlet.java (.../StoreLDServlet.java) (revision 309a597eada52a4079f2985e0d97beedf9adda42) +++ lams_central/src/java/org/lamsfoundation/lams/authoring/web/StoreLDServlet.java (.../StoreLDServlet.java) (revision 870373d635bc769aee2dc271e6ff12818fcfcea6) @@ -26,15 +26,19 @@ import java.util.Vector; import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpSession; import org.apache.log4j.Logger; import org.lamsfoundation.lams.authoring.dto.StoreLearningDesignResultsDTO; import org.lamsfoundation.lams.authoring.service.IAuthoringService; import org.lamsfoundation.lams.learningdesign.dto.ValidationErrorDTO; import org.lamsfoundation.lams.learningdesign.dto.AuthoringActivityDTO; +import org.lamsfoundation.lams.usermanagement.dto.UserDTO; import org.lamsfoundation.lams.util.wddx.FlashMessage; import org.lamsfoundation.lams.web.servlet.AbstractStoreWDDXPacketServlet; +import org.lamsfoundation.lams.web.session.SessionManager; +import org.lamsfoundation.lams.web.util.AttributeNames; import org.springframework.web.context.WebApplicationContext; import org.springframework.web.context.support.WebApplicationContextUtils; @@ -51,6 +55,12 @@ private static final long serialVersionUID = -2298959991408815691L; private static Logger log = Logger.getLogger(StoreLDServlet.class); + private String getUserLanguage() { + HttpSession ss = SessionManager.getSession(); + UserDTO user = (UserDTO) ss.getAttribute(AttributeNames.USER); + return user != null ? user.getLocaleLanguage() : ""; + } + public IAuthoringService getAuthoringService(){ WebApplicationContext webContext = WebApplicationContextUtils.getRequiredWebApplicationContext(getServletContext()); return (IAuthoringService) webContext.getBean(AuthoringConstants.AUTHORING_SERVICE_BEAN_NAME); @@ -65,7 +75,7 @@ try { Long learningDesignID = authoringService.storeLearningDesignDetails(designDetails); - Vector activityDTOS = authoringService.getToolActivities(learningDesignID); + Vector activityDTOS = authoringService.getToolActivities(learningDesignID, getUserLanguage()); Vector validationDTOS = authoringService.validateLearningDesign(learningDesignID); FlashMessage flashMessage = null; if ( validationDTOS != null &&validationDTOS.size()>0) { Index: lams_central/src/java/org/lamsfoundation/lams/web/tag/HelpTag.java =================================================================== diff -u -r318dcc5e962fefb2c358783041dce518387434c6 -r870373d635bc769aee2dc271e6ff12818fcfcea6 --- lams_central/src/java/org/lamsfoundation/lams/web/tag/HelpTag.java (.../HelpTag.java) (revision 318dcc5e962fefb2c358783041dce518387434c6) +++ lams_central/src/java/org/lamsfoundation/lams/web/tag/HelpTag.java (.../HelpTag.java) (revision 870373d635bc769aee2dc271e6ff12818fcfcea6) @@ -41,6 +41,7 @@ import org.lamsfoundation.lams.web.filter.LocaleFilter; import org.lamsfoundation.lams.util.Configuration; import org.lamsfoundation.lams.util.ConfigurationKeys; +import org.lamsfoundation.lams.util.HelpUtil; import org.springframework.web.context.WebApplicationContext; import org.springframework.web.context.support.WebApplicationContextUtils; @@ -56,10 +57,6 @@ */ public class HelpTag extends TagSupport { - private static final String LAMSFOUNDATION_TEXT = "lamsfoundation"; - private static final String LAMSDOCS = "lamsdocs"; - private static final String ENGLISH_LANGUAGE = "en"; - private static final Logger log = Logger.getLogger(HelpTag.class); private String module = null; private String page = null; @@ -75,8 +72,6 @@ public int doStartTag() throws JspException { try { - String helpURL = null; - String fullURL = null; JspWriter writer = pageContext.getOut(); if (StringUtils.equals(style, "no-tabs")) { @@ -86,27 +81,27 @@ } try { + HttpSession session = ((HttpServletRequest) this.pageContext.getRequest()).getSession(); + Locale locale = (Locale) session.getAttribute(LocaleFilter.PREFERRED_LOCALE_KEY); + String languageCode = locale != null ? locale.getLanguage() : ""; + if(toolSignature != null && module != null) { + // retrieve help URL for tool ILamsToolService toolService = (ILamsToolService) getContext().getBean(AuthoringConstants.TOOL_SERVICE_BEAN_NAME); IToolVO tool = toolService.getToolBySignature(toolSignature); + + String fullURL = HelpUtil.constructToolURL(tool.getHelpUrl(), toolSignature, module, languageCode ); - helpURL = tool.getHelpUrl(); - - if(helpURL == null) + if(fullURL == null) return SKIP_BODY; - // construct link - helpURL = addLanguageToURL(helpURL); - fullURL = helpURL + module + "#" + toolSignature + module; - writer.println(""); } else if(page != null){ - helpURL = addLanguageToURL(Configuration.get(ConfigurationKeys.HELP_URL)); - fullURL = helpURL+page; + String fullURL = HelpUtil.constructPageURL(page, languageCode); writer.println(""); @@ -129,22 +124,6 @@ return SKIP_BODY; } - private String addLanguageToURL(String helpURL) { - - HttpSession session = ((HttpServletRequest) this.pageContext.getRequest()).getSession(); - Locale locale = (Locale) session.getAttribute(LocaleFilter.PREFERRED_LOCALE_KEY); - if ( locale != null ) { - String language = locale.getLanguage(); - - if ( ! ENGLISH_LANGUAGE.equals(language) && helpURL.indexOf(LAMSFOUNDATION_TEXT) != -1 ) { - // points to the LAMS Foundation site, so add the language to the path. - return helpURL.replace(LAMSDOCS, LAMSDOCS+language); - } - } - - return helpURL; - } - public int doEndTag() { return EVAL_PAGE; } Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/Activity.java =================================================================== diff -u -r309a597eada52a4079f2985e0d97beedf9adda42 -r870373d635bc769aee2dc271e6ff12818fcfcea6 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/Activity.java (.../Activity.java) (revision 309a597eada52a4079f2985e0d97beedf9adda42) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/Activity.java (.../Activity.java) (revision 870373d635bc769aee2dc271e6ff12818fcfcea6) @@ -995,15 +995,15 @@ /** Get the authoring DTO for this activity. Overidden by ComplexActivity. */ - public Set getAuthoringActivityDTOSet(ArrayList branchMappings) + public Set getAuthoringActivityDTOSet(ArrayList branchMappings, String languageCode) { Set dtoSet = new TreeSet(new ActivityDTOOrderComparator()); - dtoSet.add(new AuthoringActivityDTO(this, branchMappings)); + dtoSet.add(new AuthoringActivityDTO(this, branchMappings, languageCode)); return dtoSet; } - public LibraryActivityDTO getLibraryActivityDTO(){ - return new LibraryActivityDTO(this); + public LibraryActivityDTO getLibraryActivityDTO(String languageCode){ + return new LibraryActivityDTO(this, languageCode); } /** Create a deep copy of the this activity. It should return the same Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/ComplexActivity.java =================================================================== diff -u -r309a597eada52a4079f2985e0d97beedf9adda42 -r870373d635bc769aee2dc271e6ff12818fcfcea6 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/ComplexActivity.java (.../ComplexActivity.java) (revision 309a597eada52a4079f2985e0d97beedf9adda42) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/ComplexActivity.java (.../ComplexActivity.java) (revision 870373d635bc769aee2dc271e6ff12818fcfcea6) @@ -212,16 +212,16 @@ } - public Set getAuthoringActivityDTOSet(ArrayList branchMappings) + public Set getAuthoringActivityDTOSet(ArrayList branchMappings, String languageCode) { Set dtoSet = new TreeSet(new ActivityDTOOrderComparator()); - dtoSet.add(new AuthoringActivityDTO(this, branchMappings)); //add parent activity + dtoSet.add(new AuthoringActivityDTO(this, branchMappings, languageCode)); //add parent activity //add the DTO for all child activities for(Iterator i = this.getActivities().iterator();i.hasNext();) { Activity child = (Activity)i.next(); - dtoSet.addAll(child.getAuthoringActivityDTOSet(branchMappings)); + dtoSet.addAll(child.getAuthoringActivityDTOSet(branchMappings, languageCode)); } return dtoSet; Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/LearningLibrary.java =================================================================== diff -u -r920894ca746cba5e080023c5cc80167d64d1653d -r870373d635bc769aee2dc271e6ff12818fcfcea6 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/LearningLibrary.java (.../LearningLibrary.java) (revision 920894ca746cba5e080023c5cc80167d64d1653d) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/LearningLibrary.java (.../LearningLibrary.java) (revision 870373d635bc769aee2dc271e6ff12818fcfcea6) @@ -191,13 +191,9 @@ public void setValidLibrary(Boolean validLibrary) { this.validLibrary = validLibrary; } - public LearningLibraryDTO getLearningLibraryDTO(){ - return new LearningLibraryDTO(this); + public LearningLibraryDTO getLearningLibraryDTO(List templateActivities, String languageCode) { + return new LearningLibraryDTO(this, templateActivities, languageCode); } - public LearningLibraryDTO getLearningLibraryDTO(List templateActivities) { - return new LearningLibraryDTO(this, templateActivities); - } - } Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/dto/AuthoringActivityDTO.java =================================================================== diff -u -rac99dd8a79daaa42b1e6cdbe9b1a5fd197107b83 -r870373d635bc769aee2dc271e6ff12818fcfcea6 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/dto/AuthoringActivityDTO.java (.../AuthoringActivityDTO.java) (revision ac99dd8a79daaa42b1e6cdbe9b1a5fd197107b83) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/dto/AuthoringActivityDTO.java (.../AuthoringActivityDTO.java) (revision 870373d635bc769aee2dc271e6ff12818fcfcea6) @@ -42,6 +42,7 @@ import org.lamsfoundation.lams.learningdesign.SynchGateActivity; import org.lamsfoundation.lams.learningdesign.SystemGateActivity; import org.lamsfoundation.lams.learningdesign.ToolActivity; +import org.lamsfoundation.lams.util.HelpUtil; import org.lamsfoundation.lams.util.wddx.WDDXTAGS; /** * @author Manpreet Minhas @@ -234,11 +235,13 @@ private Integer endXCoord; private Integer endYCoord; - + /** Used for I18N the URLS. Does not need to be sent to clients, so no getter exists. */ + private String languageCode; + /***************************************************************************** * Constructors *****************************************************************************/ - public AuthoringActivityDTO(Activity activity, ArrayList branchMappings){ + public AuthoringActivityDTO(Activity activity, ArrayList branchMappings, String languageCode){ this.activityID = activity.getActivityId(); this.activityUIID = activity.getActivityUIID(); this.description = activity.getDescription(); @@ -282,6 +285,8 @@ this.inputActivities = activity.getInputActivityUIIDs(); this.toolActivityUIID = activity.getToolInputActivityUIID(); + this.languageCode = languageCode; + processActivityType(activity, branchMappings); } @@ -355,10 +360,12 @@ this.monitoringURL = toolActivity.getTool().getMonitorUrl(); this.contributeURL = toolActivity.getTool().getContributeUrl(); this.moderationURL = toolActivity.getTool().getModerationUrl(); - this.helpURL = toolActivity.getTool().getHelpUrl(); this.adminURL = toolActivity.getTool().getAdminUrl(); this.toolDisplayName = toolActivity.getTool().getToolDisplayName(); this.toolVersion = toolActivity.getTool().getToolVersion(); + + this.helpURL = HelpUtil.constructToolURL(toolActivity.getTool().getHelpUrl(), toolSignature, "", languageCode); + } private void addGateActivityAttributes(Object activity){ if(activity instanceof SynchGateActivity) Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/dto/LearningDesignDTO.java =================================================================== diff -u -r245c3e8e3ffd8e00786cd143f3467990b838ed9e -r870373d635bc769aee2dc271e6ff12818fcfcea6 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/dto/LearningDesignDTO.java (.../LearningDesignDTO.java) (revision 245c3e8e3ffd8e00786cd143f3467990b838ed9e) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/dto/LearningDesignDTO.java (.../LearningDesignDTO.java) (revision 870373d635bc769aee2dc271e6ff12818fcfcea6) @@ -148,7 +148,7 @@ this.transitions = new ArrayList(); this.branchMappings = new ArrayList(); } - public LearningDesignDTO(LearningDesign learningDesign, ActivityDAO activityDAO, GroupingDAO groupingDAO){ + public LearningDesignDTO(LearningDesign learningDesign, ActivityDAO activityDAO, GroupingDAO groupingDAO, String languageCode){ this.learningDesignID = learningDesign.getLearningDesignId(); this.learningDesignUIID = learningDesign.getLearningDesignUIID(); this.description = learningDesign.getDescription(); @@ -204,7 +204,7 @@ this.lastModifiedDateTime = learningDesign.getLastModifiedDateTime(); this.branchMappings = new ArrayList(); // data will be set up by populateGroupings this.groupings = populateGroupings(learningDesign,groupingDAO); - this.activities = populateActivities(learningDesign); + this.activities = populateActivities(learningDesign, languageCode); this.transitions = populateTransitions(learningDesign); } @@ -416,7 +416,7 @@ return groupingList; } - public ArrayList populateActivities(LearningDesign design) { + public ArrayList populateActivities(LearningDesign design, String languageCode) { //ArrayList childActivities = null; //To use sorted set again: in getAuthoringActivityDTOSet() it will already be sorted, here is just double warranty Set dtoSet = new TreeSet(new ActivityDTOOrderComparator()); @@ -426,7 +426,7 @@ //getAuthoringActivityDTOSet() method will: //for complex activity: It already populate its children activities. //for other activity: only get itself DTO object. - dtoSet.addAll(object.getAuthoringActivityDTOSet(branchMappings)); + dtoSet.addAll(object.getAuthoringActivityDTOSet(branchMappings, languageCode)); } return new ArrayList(dtoSet); } Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/dto/LearningLibraryDTO.java =================================================================== diff -u -r117b4f3d433dec684bdde042c051f7b2831ad54a -r870373d635bc769aee2dc271e6ff12818fcfcea6 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/dto/LearningLibraryDTO.java (.../LearningLibraryDTO.java) (revision 117b4f3d433dec684bdde042c051f7b2831ad54a) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/dto/LearningLibraryDTO.java (.../LearningLibraryDTO.java) (revision 870373d635bc769aee2dc271e6ff12818fcfcea6) @@ -65,23 +65,23 @@ } - public LearningLibraryDTO(LearningLibrary learningLibrary){ + public LearningLibraryDTO(LearningLibrary learningLibrary, String languageCode){ this.learningLibraryID = learningLibrary.getLearningLibraryId(); this.description = learningLibrary.getDescription(); this.title = learningLibrary.getTitle(); this.validFlag = learningLibrary.getValidLibrary(); this.createDateTime = learningLibrary.getCreateDateTime(); - this.templateActivities = populateActivities(learningLibrary.getActivities().iterator()); + this.templateActivities = populateActivities(learningLibrary.getActivities().iterator(), languageCode); } - public LearningLibraryDTO(LearningLibrary learningLibrary, List templateActivity) + public LearningLibraryDTO(LearningLibrary learningLibrary, List templateActivity, String languageCode) { this.learningLibraryID = learningLibrary.getLearningLibraryId(); this.description = learningLibrary.getDescription(); this.title = learningLibrary.getTitle(); this.validFlag = learningLibrary.getValidLibrary(); this.createDateTime = learningLibrary.getCreateDateTime(); - this.templateActivities = populateActivities(templateActivity.iterator()); + this.templateActivities = populateActivities(templateActivity.iterator(), languageCode); } @@ -127,7 +127,7 @@ } */ - public Vector populateActivities(Iterator iterator) + public Vector populateActivities(Iterator iterator, String languageCode) { Vector activities = new Vector(); Vector childActivities = null; @@ -140,12 +140,12 @@ childActivities = new Vector(); while(childIterator.hasNext()){ Activity activity =(Activity)childIterator.next(); - childActivities.add(activity.getLibraryActivityDTO()); + childActivities.add(activity.getLibraryActivityDTO(languageCode)); } - activities.add(complexActivity.getLibraryActivityDTO()); + activities.add(complexActivity.getLibraryActivityDTO(languageCode)); activities.addAll(childActivities); }else{ - activities.add(object.getLibraryActivityDTO()); + activities.add(object.getLibraryActivityDTO(languageCode)); } } return activities; Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/dto/LibraryActivityDTO.java =================================================================== diff -u -r7efa578ce72af7ff6590cb101d82c4053b967322 -r870373d635bc769aee2dc271e6ff12818fcfcea6 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/dto/LibraryActivityDTO.java (.../LibraryActivityDTO.java) (revision 7efa578ce72af7ff6590cb101d82c4053b967322) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/dto/LibraryActivityDTO.java (.../LibraryActivityDTO.java) (revision 870373d635bc769aee2dc271e6ff12818fcfcea6) @@ -37,6 +37,7 @@ import org.lamsfoundation.lams.learningdesign.SynchGateActivity; import org.lamsfoundation.lams.learningdesign.ToolActivity; import org.lamsfoundation.lams.tool.Tool; +import org.lamsfoundation.lams.util.HelpUtil; public class LibraryActivityDTO extends BaseDTO { @@ -98,7 +99,10 @@ private Date gateStartDateTime; private Date gateEndDateTime; - public LibraryActivityDTO (Activity activity) + /** Used for I18N the URLS. Does not need to be sent to clients, so no getter exists. */ + private String languageCode; + + public LibraryActivityDTO (Activity activity, String languageCode) { this.activityTypeID = activity.getActivityTypeId(); this.activityID = activity.getActivityId(); @@ -124,6 +128,8 @@ this.createDateTime = activity.getCreateDateTime(); this.groupingSupportType = activity.getGroupingSupportType(); this.languageFile = activity.getLanguageFile(); + + this.languageCode = languageCode; processActivityType(activity); } @@ -186,7 +192,8 @@ this.supportsContribute = new Boolean(tool.getSupportsContribute()); this.authoringURL = tool.getAuthorUrl(); this.adminURL = tool.getAdminUrl(); - this.helpURL = tool.getHelpUrl(); + + this.helpURL = HelpUtil.constructToolURL(tool.getHelpUrl(), toolSignature, "", languageCode); } } Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/service/ExportToolContentService.java =================================================================== diff -u -rd933e9944392244d0cef43de8bbe7dd022deffb5 -r870373d635bc769aee2dc271e6ff12818fcfcea6 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/service/ExportToolContentService.java (.../ExportToolContentService.java) (revision d933e9944392244d0cef43de8bbe7dd022deffb5) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/service/ExportToolContentService.java (.../ExportToolContentService.java) (revision 870373d635bc769aee2dc271e6ff12818fcfcea6) @@ -434,7 +434,7 @@ // get learning desing and serialize it to XML file. Update the version to reflect the // version now, rather than the version when it was saved. ILearningDesignService service = getLearningDesignService(); - LearningDesignDTO ldDto = service.getLearningDesignDTO(learningDesignId); + LearningDesignDTO ldDto = service.getLearningDesignDTO(learningDesignId, ""); ldDto.setVersion(Configuration.get(ConfigurationKeys.SERVER_VERSION_NUMBER)); if(format == PACKAGE_FORMAT_IMS) Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/service/ILearningDesignService.java =================================================================== diff -u -r117b4f3d433dec684bdde042c051f7b2831ad54a -r870373d635bc769aee2dc271e6ff12818fcfcea6 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/service/ILearningDesignService.java (.../ILearningDesignService.java) (revision 117b4f3d433dec684bdde042c051f7b2831ad54a) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/service/ILearningDesignService.java (.../ILearningDesignService.java) (revision 870373d635bc769aee2dc271e6ff12818fcfcea6) @@ -41,9 +41,10 @@ /** * Get the learning design DTO, suitable to send to Flash via WDDX * @param learningDesignId + * @param languageCode Two letter language code needed to I18N the help url * @return LearningDesignDTO */ - public LearningDesignDTO getLearningDesignDTO(Long learningDesignID); + public LearningDesignDTO getLearningDesignDTO(Long learningDesignID, String languageCode); /** * This method calls other validation methods which apply the validation @@ -59,14 +60,14 @@ * @return list of LearningLibraryDTO * @throws IOException */ - public ArrayList getAllLearningLibraryDetails() throws IOException; + public ArrayList getAllLearningLibraryDetails(String languageCode) throws IOException; /** * Get the DTO list of all learning libraries whatever it is valid or not. * @param valid * @return * @throws IOException */ - public ArrayList getAllLearningLibraryDetails(boolean valid) throws IOException; + public ArrayList getAllLearningLibraryDetails(boolean valid, String languageCode) throws IOException; /** * Set valid flag to learning library. Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/service/LearningDesignService.java =================================================================== diff -u -r4c352cf0804999ea588bd5871dd6ebd17cc7d88a -r870373d635bc769aee2dc271e6ff12818fcfcea6 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/service/LearningDesignService.java (.../LearningDesignService.java) (revision 4c352cf0804999ea588bd5871dd6ebd17cc7d88a) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/service/LearningDesignService.java (.../LearningDesignService.java) (revision 870373d635bc769aee2dc271e6ff12818fcfcea6) @@ -139,11 +139,12 @@ /** * Get the learning design DTO, suitable to send to Flash via WDDX * @param learningDesignId + * @param languageCode Two letter language code needed to I18N the help url * @return LearningDesignDTO */ - public LearningDesignDTO getLearningDesignDTO(Long learningDesignID) { + public LearningDesignDTO getLearningDesignDTO(Long learningDesignID, String languageCode) { LearningDesign design = learningDesignID!=null ? learningDesignDAO.getLearningDesignById(learningDesignID) : null; - return design != null ? new LearningDesignDTO(design,activityDAO,groupingDAO) : null; + return design != null ? new LearningDesignDTO(design,activityDAO,groupingDAO, languageCode) : null; } /** @@ -165,11 +166,11 @@ learningLibraryDAO.update(library); } - public ArrayList getAllLearningLibraryDetails()throws IOException{ + public ArrayList getAllLearningLibraryDetails(String languageCode)throws IOException{ //only return valid learning library - return getAllLearningLibraryDetails(true); + return getAllLearningLibraryDetails(true, languageCode); } - public ArrayList getAllLearningLibraryDetails(boolean valid)throws IOException{ + public ArrayList getAllLearningLibraryDetails(boolean valid, String languageCode)throws IOException{ Iterator iterator= learningLibraryDAO.getAllLearningLibraries(valid).iterator(); ArrayList libraries = new ArrayList(); while(iterator.hasNext()){ @@ -181,7 +182,7 @@ log.error("Learning Library with ID " + learningLibrary.getLearningLibraryId() + " does not have a template activity"); } // convert library to DTO format - LearningLibraryDTO libraryDTO = learningLibrary.getLearningLibraryDTO(templateActivities); + LearningLibraryDTO libraryDTO = learningLibrary.getLearningLibraryDTO(templateActivities, languageCode); internationaliseActivities(libraryDTO.getTemplateActivities()); libraries.add(libraryDTO); } Index: lams_common/src/java/org/lamsfoundation/lams/util/HelpUtil.java =================================================================== diff -u --- lams_common/src/java/org/lamsfoundation/lams/util/HelpUtil.java (revision 0) +++ lams_common/src/java/org/lamsfoundation/lams/util/HelpUtil.java (revision 870373d635bc769aee2dc271e6ff12818fcfcea6) @@ -0,0 +1,77 @@ +/**************************************************************** + * 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.util; + +/** + * Utility methods for handling the Help URLS. + */ +public class HelpUtil { + + private static final String LAMSFOUNDATION_TEXT = "lamsfoundation"; + private static final String LAMSDOCS = "lamsdocs"; + private static final String ENGLISH_LANGUAGE = "en"; + + /** Build an I18N'd tool url, based on the tool url in the database. If this is for a particular module, such as "authoring", then the + * module must be included and it will be converted to the wiki anchor format. + * + * @param baseToolURL Mandatory + * @param toolSignature Mandatory + * @param module Optional + * @param languageCode Optional + * @return + */ + public static String constructToolURL(String baseToolURL, String toolSignature, String module, String languageCode ) { + + if ( baseToolURL == null ) + return null; + + String helpURL = addLanguageToURL(baseToolURL, languageCode); + + if(module != null && module.length()>0) + helpURL = helpURL + module + "#" + toolSignature + module; + + return helpURL; + } + + /** Build an I18N'd url, based on the url in the configuration table. This is normally used for admin module urls. + * + * @param page Mandatory + * @param languageCode Optional + * @return + */ + public static String constructPageURL(String page, String languageCode) { + return addLanguageToURL(Configuration.get(ConfigurationKeys.HELP_URL), languageCode) + page; + } + + private static String addLanguageToURL(String helpURL, String languageCode) { + + if ( languageCode != null && ! languageCode.equals(ENGLISH_LANGUAGE) && helpURL != null && helpURL.indexOf(LAMSFOUNDATION_TEXT) != -1 ) { + // points to the LAMS Foundation site, so add the language to the path. + return helpURL.replace(LAMSDOCS, LAMSDOCS+languageCode); + } + + return helpURL; + } + +} \ No newline at end of file Index: lams_common/test/java/org/lamsfoundation/lams/learningdesign/dao/TestLearningDesignDAO.java =================================================================== diff -u -rb25a6d2d1cebe3c69d4af018aa14198533a0d4c5 -r870373d635bc769aee2dc271e6ff12818fcfcea6 --- lams_common/test/java/org/lamsfoundation/lams/learningdesign/dao/TestLearningDesignDAO.java (.../TestLearningDesignDAO.java) (revision b25a6d2d1cebe3c69d4af018aa14198533a0d4c5) +++ lams_common/test/java/org/lamsfoundation/lams/learningdesign/dao/TestLearningDesignDAO.java (.../TestLearningDesignDAO.java) (revision 870373d635bc769aee2dc271e6ff12818fcfcea6) @@ -70,7 +70,7 @@ } public void testGetLearningDesignDTO() throws Exception{ learningDesign = learningDesignDAO.getLearningDesignById(new Long(1)); - LearningDesignDTO learningDesignDTO = new LearningDesignDTO(learningDesign,activityDAO,groupingDAO); + LearningDesignDTO learningDesignDTO = new LearningDesignDTO(learningDesign,activityDAO,groupingDAO,"en"); String str = WDDXProcessor.serialize(learningDesignDTO); System.out.println(str); }