Index: lams_tool_whiteboard/db/sql/create_lams_tool_whiteboard.sql =================================================================== diff -u -r90e5fd15f6474eb56d0b497d1b73e14bda75e262 -rb1bfbd4d153f417655f051047d69a0dbb3582d11 --- lams_tool_whiteboard/db/sql/create_lams_tool_whiteboard.sql (.../create_lams_tool_whiteboard.sql) (revision 90e5fd15f6474eb56d0b497d1b73e14bda75e262) +++ lams_tool_whiteboard/db/sql/create_lams_tool_whiteboard.sql (.../create_lams_tool_whiteboard.sql) (revision b1bfbd4d153f417655f051047d69a0dbb3582d11) @@ -55,6 +55,13 @@ CONSTRAINT FK_tl_lawhiteboard11_time_limit_2 FOREIGN KEY (user_id) REFERENCES lams_user (user_id) ON DELETE CASCADE ON UPDATE CASCADE ); +CREATE TABLE tl_lawhiteboard11_configuration ( + uid TINYINT UNSIGNED NOT NULL AUTO_INCREMENT, + config_key varchar(30) NOT NULL, + config_value varchar(255), + PRIMARY KEY (uid), + UNIQUE KEY UQ_tl_lawhiteboard11_configuration_config_key (config_key) +) ENGINE=InnoDB; ALTER TABLE tl_lawhiteboard11_whiteboard ADD CONSTRAINT FK_tl_lawhiteboard11_whiteboard_1 FOREIGN KEY (create_by) REFERENCES tl_lawhiteboard11_user (uid) ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE tl_lawhiteboard11_session ADD CONSTRAINT FK_tl_lawhiteboard11_session_2 FOREIGN KEY (whiteboard_uid) REFERENCES tl_lawhiteboard11_whiteboard (uid) ON DELETE CASCADE ON UPDATE CASCADE; @@ -68,4 +75,8 @@ `instructions`, `content_in_use`, `define_later`, `content_id`, `use_select_leader_tool_ouput`, `reflect_on_activity`) VALUES (1,NULL,NULL,NULL,'Whiteboard','0','Instructions',0,0,${default_content_id},0,0); +INSERT INTO tl_lawhiteboard11_configuration (config_key, config_value) VALUES +('ServerURL', ':9003'); + + SET FOREIGN_KEY_CHECKS=1; \ No newline at end of file Index: lams_tool_whiteboard/src/java/org/lamsfoundation/lams/tool/whiteboard/dao/WhiteboardConfigItemDAO.java =================================================================== diff -u --- lams_tool_whiteboard/src/java/org/lamsfoundation/lams/tool/whiteboard/dao/WhiteboardConfigItemDAO.java (revision 0) +++ lams_tool_whiteboard/src/java/org/lamsfoundation/lams/tool/whiteboard/dao/WhiteboardConfigItemDAO.java (revision b1bfbd4d153f417655f051047d69a0dbb3582d11) @@ -0,0 +1,32 @@ +/**************************************************************** + * 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.whiteboard.dao; + +import org.lamsfoundation.lams.dao.IBaseDAO; +import org.lamsfoundation.lams.tool.whiteboard.model.WhiteboardConfigItem; + +public interface WhiteboardConfigItemDAO extends IBaseDAO { + void saveOrUpdate(WhiteboardConfigItem toConfig); + + WhiteboardConfigItem getConfigItemByKey(String configKey); +} Index: lams_tool_whiteboard/src/java/org/lamsfoundation/lams/tool/whiteboard/dao/hibernate/WhiteboardConfigItemDAOHibernate.java =================================================================== diff -u --- lams_tool_whiteboard/src/java/org/lamsfoundation/lams/tool/whiteboard/dao/hibernate/WhiteboardConfigItemDAOHibernate.java (revision 0) +++ lams_tool_whiteboard/src/java/org/lamsfoundation/lams/tool/whiteboard/dao/hibernate/WhiteboardConfigItemDAOHibernate.java (revision b1bfbd4d153f417655f051047d69a0dbb3582d11) @@ -0,0 +1,45 @@ +/**************************************************************** + * 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.whiteboard.dao.hibernate; + +import org.lamsfoundation.lams.dao.hibernate.LAMSBaseDAO; +import org.lamsfoundation.lams.tool.whiteboard.dao.WhiteboardConfigItemDAO; +import org.lamsfoundation.lams.tool.whiteboard.model.WhiteboardConfigItem; +import org.springframework.stereotype.Repository; + +@Repository +public class WhiteboardConfigItemDAOHibernate extends LAMSBaseDAO implements WhiteboardConfigItemDAO { + private static final String LOAD_CONFIG_ITEM_BY_KEY = "FROM WhiteboardConfigItem WHERE configKey=:key"; + + @Override + public WhiteboardConfigItem getConfigItemByKey(final String configKey) { + return getSession().createQuery(LOAD_CONFIG_ITEM_BY_KEY, WhiteboardConfigItem.class) + .setParameter("key", configKey).uniqueResult(); + } + + @Override + public void saveOrUpdate(WhiteboardConfigItem mdlForumConfigItem) { + getSession().saveOrUpdate(mdlForumConfigItem); + getSession().flush(); + } +} \ No newline at end of file Index: lams_tool_whiteboard/src/java/org/lamsfoundation/lams/tool/whiteboard/model/WhiteboardConfigItem.java =================================================================== diff -u --- lams_tool_whiteboard/src/java/org/lamsfoundation/lams/tool/whiteboard/model/WhiteboardConfigItem.java (revision 0) +++ lams_tool_whiteboard/src/java/org/lamsfoundation/lams/tool/whiteboard/model/WhiteboardConfigItem.java (revision b1bfbd4d153f417655f051047d69a0dbb3582d11) @@ -0,0 +1,76 @@ +/**************************************************************** + * 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.whiteboard.model; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Table; + +@Entity +@Table(name = "tl_lawhiteboard11_configuration") +public class WhiteboardConfigItem implements java.io.Serializable { + private static final long serialVersionUID = -891433833076259141L; + + public static final String KEY_SERVER_URL = "ServerURL"; + public static final String KEY_ACCESS_TOKEN = "AccessToken"; + + public static final String SERVER_URL_PLACEHOLDER = ""; + + @Id + @Column(name = "uid") + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long uid; + + @Column(name = "config_key") + private String configKey; + + @Column(name = "config_value") + private String configValue; + + public Long getUid() { + return uid; + } + + public void setUid(Long id) { + this.uid = id; + } + + public String getConfigKey() { + return configKey; + } + + public void setConfigKey(String configKey) { + this.configKey = configKey; + } + + public String getConfigValue() { + return configValue; + } + + public void setConfigValue(String configValue) { + this.configValue = configValue; + } +} \ No newline at end of file Index: lams_tool_whiteboard/src/java/org/lamsfoundation/lams/tool/whiteboard/service/IWhiteboardService.java =================================================================== diff -u -r90e5fd15f6474eb56d0b497d1b73e14bda75e262 -rb1bfbd4d153f417655f051047d69a0dbb3582d11 --- lams_tool_whiteboard/src/java/org/lamsfoundation/lams/tool/whiteboard/service/IWhiteboardService.java (.../IWhiteboardService.java) (revision 90e5fd15f6474eb56d0b497d1b73e14bda75e262) +++ lams_tool_whiteboard/src/java/org/lamsfoundation/lams/tool/whiteboard/service/IWhiteboardService.java (.../IWhiteboardService.java) (revision b1bfbd4d153f417655f051047d69a0dbb3582d11) @@ -32,6 +32,7 @@ import org.lamsfoundation.lams.tool.service.ICommonToolService; import org.lamsfoundation.lams.tool.whiteboard.dto.ReflectDTO; import org.lamsfoundation.lams.tool.whiteboard.model.Whiteboard; +import org.lamsfoundation.lams.tool.whiteboard.model.WhiteboardConfigItem; import org.lamsfoundation.lams.tool.whiteboard.model.WhiteboardSession; import org.lamsfoundation.lams.tool.whiteboard.model.WhiteboardUser; import org.lamsfoundation.lams.usermanagement.User; @@ -125,4 +126,8 @@ void changeLeaderForGroup(long toolSessionId, long leaderUserId); Grouping getGrouping(long toolContentId); + + WhiteboardConfigItem getConfigItem(String key); + + void saveOrUpdateScratchieConfigItem(WhiteboardConfigItem item); } \ No newline at end of file Index: lams_tool_whiteboard/src/java/org/lamsfoundation/lams/tool/whiteboard/service/WhiteboardService.java =================================================================== diff -u -r90e5fd15f6474eb56d0b497d1b73e14bda75e262 -rb1bfbd4d153f417655f051047d69a0dbb3582d11 --- lams_tool_whiteboard/src/java/org/lamsfoundation/lams/tool/whiteboard/service/WhiteboardService.java (.../WhiteboardService.java) (revision 90e5fd15f6474eb56d0b497d1b73e14bda75e262) +++ lams_tool_whiteboard/src/java/org/lamsfoundation/lams/tool/whiteboard/service/WhiteboardService.java (.../WhiteboardService.java) (revision b1bfbd4d153f417655f051047d69a0dbb3582d11) @@ -61,11 +61,13 @@ import org.lamsfoundation.lams.tool.exception.ToolException; import org.lamsfoundation.lams.tool.service.ILamsToolService; import org.lamsfoundation.lams.tool.whiteboard.WhiteboardConstants; +import org.lamsfoundation.lams.tool.whiteboard.dao.WhiteboardConfigItemDAO; import org.lamsfoundation.lams.tool.whiteboard.dao.WhiteboardDAO; import org.lamsfoundation.lams.tool.whiteboard.dao.WhiteboardSessionDAO; import org.lamsfoundation.lams.tool.whiteboard.dao.WhiteboardUserDAO; import org.lamsfoundation.lams.tool.whiteboard.dto.ReflectDTO; import org.lamsfoundation.lams.tool.whiteboard.model.Whiteboard; +import org.lamsfoundation.lams.tool.whiteboard.model.WhiteboardConfigItem; import org.lamsfoundation.lams.tool.whiteboard.model.WhiteboardSession; import org.lamsfoundation.lams.tool.whiteboard.model.WhiteboardUser; import org.lamsfoundation.lams.tool.whiteboard.web.controller.LearningWebsocketServer; @@ -86,6 +88,8 @@ private WhiteboardSessionDAO whiteboardSessionDao; + private WhiteboardConfigItemDAO whiteboardConfigItemDao; + private IToolContentHandler whiteboardToolContentHandler; private MessageService messageService; @@ -425,6 +429,16 @@ learnerService.createCommandForLearners(whiteboard.getContentId(), userIds, jsonCommand.toString()); } + @Override + public WhiteboardConfigItem getConfigItem(String key) { + return whiteboardConfigItemDao.getConfigItemByKey(key); + } + + @Override + public void saveOrUpdateScratchieConfigItem(WhiteboardConfigItem item) { + whiteboardConfigItemDao.saveOrUpdate(item); + } + // ***************************************************************************** // private methods // ***************************************************************************** @@ -765,6 +779,10 @@ this.whiteboardSessionDao = whiteboardSessionDao; } + public void setWhiteboardConfigItemDao(WhiteboardConfigItemDAO whiteboardConfigItemDao) { + this.whiteboardConfigItemDao = whiteboardConfigItemDao; + } + public void setWhiteboardToolContentHandler(IToolContentHandler whiteboardToolContentHandler) { this.whiteboardToolContentHandler = whiteboardToolContentHandler; } Index: lams_tool_whiteboard/src/java/org/lamsfoundation/lams/tool/whiteboard/web/controller/AuthoringController.java =================================================================== diff -u -rd1f3bf74f099d80552eecac477aa993d23389a37 -rb1bfbd4d153f417655f051047d69a0dbb3582d11 --- lams_tool_whiteboard/src/java/org/lamsfoundation/lams/tool/whiteboard/web/controller/AuthoringController.java (.../AuthoringController.java) (revision d1f3bf74f099d80552eecac477aa993d23389a37) +++ lams_tool_whiteboard/src/java/org/lamsfoundation/lams/tool/whiteboard/web/controller/AuthoringController.java (.../AuthoringController.java) (revision b1bfbd4d153f417655f051047d69a0dbb3582d11) @@ -32,12 +32,15 @@ import javax.servlet.http.HttpSession; import org.apache.commons.beanutils.PropertyUtils; +import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; import org.lamsfoundation.lams.tool.ToolAccessMode; import org.lamsfoundation.lams.tool.whiteboard.WhiteboardConstants; import org.lamsfoundation.lams.tool.whiteboard.model.Whiteboard; +import org.lamsfoundation.lams.tool.whiteboard.model.WhiteboardConfigItem; import org.lamsfoundation.lams.tool.whiteboard.model.WhiteboardUser; import org.lamsfoundation.lams.tool.whiteboard.service.IWhiteboardService; +import org.lamsfoundation.lams.tool.whiteboard.service.WhiteboardApplicationException; import org.lamsfoundation.lams.tool.whiteboard.web.form.WhiteboardForm; import org.lamsfoundation.lams.usermanagement.dto.UserDTO; import org.lamsfoundation.lams.util.CommonConstants; @@ -139,16 +142,19 @@ sessionMap.put(WhiteboardConstants.ATTR_RESOURCE_FORM, authoringForm); request.getSession().setAttribute(AttributeNames.PARAM_NOTIFY_CLOSE_URL, request.getParameter(AttributeNames.PARAM_NOTIFY_CLOSE_URL)); + return "pages/authoring/start"; } /** * Display same entire authoring page content from HttpSession variable. + * + * @throws WhiteboardApplicationException */ @RequestMapping("/init") private String initPage(@ModelAttribute("authoringForm") WhiteboardForm authoringForm, HttpServletRequest request) - throws ServletException { + throws ServletException, WhiteboardApplicationException { String sessionMapID = WebUtil.readStrParam(request, WhiteboardConstants.ATTR_SESSION_MAP_ID); SessionMap sessionMap = (SessionMap) request.getSession() .getAttribute(sessionMapID); @@ -164,6 +170,31 @@ request.setAttribute(AttributeNames.ATTR_MODE, mode.toString()); authoringForm.setMode(mode.toString()); + WhiteboardConfigItem whiteboardServerUrlConfigItem = whiteboardService + .getConfigItem(WhiteboardConfigItem.KEY_SERVER_URL); + if (whiteboardServerUrlConfigItem == null + || StringUtils.isBlank(whiteboardServerUrlConfigItem.getConfigValue())) { + throw new WhiteboardApplicationException( + "Whiteboard server URL is not configured on sysadmin tool management page"); + } + String whiteboardServerUrl = whiteboardServerUrlConfigItem.getConfigValue(); + if (whiteboardServerUrl.contains(WhiteboardConfigItem.SERVER_URL_PLACEHOLDER)) { + String lamsServerUrl = WebUtil.getBaseServerURL(); + if (lamsServerUrl.contains(":")) { + lamsServerUrl = lamsServerUrl.substring(0, lamsServerUrl.lastIndexOf(':')); + } + whiteboardServerUrl = whiteboardServerUrl.replace(WhiteboardConfigItem.SERVER_URL_PLACEHOLDER, + lamsServerUrl); + } + request.setAttribute("whiteboardServerUrl", whiteboardServerUrl); + + WhiteboardConfigItem whiteboardAccessTokenConfigItem = whiteboardService + .getConfigItem(WhiteboardConfigItem.KEY_ACCESS_TOKEN); + if (whiteboardAccessTokenConfigItem != null + && StringUtils.isNotBlank(whiteboardAccessTokenConfigItem.getConfigValue())) { + request.setAttribute("whiteboardAccessToken", whiteboardAccessTokenConfigItem.getConfigValue()); + } + return "pages/authoring/authoring"; } Index: lams_tool_whiteboard/src/java/org/lamsfoundation/lams/tool/whiteboard/whiteboardApplicationContext.xml =================================================================== diff -u -r90e5fd15f6474eb56d0b497d1b73e14bda75e262 -rb1bfbd4d153f417655f051047d69a0dbb3582d11 --- lams_tool_whiteboard/src/java/org/lamsfoundation/lams/tool/whiteboard/whiteboardApplicationContext.xml (.../whiteboardApplicationContext.xml) (revision 90e5fd15f6474eb56d0b497d1b73e14bda75e262) +++ lams_tool_whiteboard/src/java/org/lamsfoundation/lams/tool/whiteboard/whiteboardApplicationContext.xml (.../whiteboardApplicationContext.xml) (revision b1bfbd4d153f417655f051047d69a0dbb3582d11) @@ -30,6 +30,11 @@ + + + + + @@ -51,6 +56,9 @@ + + + Index: lams_tool_whiteboard/web/pages/authoring/basic.jsp =================================================================== diff -u -rd1f3bf74f099d80552eecac477aa993d23389a37 -rb1bfbd4d153f417655f051047d69a0dbb3582d11 --- lams_tool_whiteboard/web/pages/authoring/basic.jsp (.../basic.jsp) (revision d1f3bf74f099d80552eecac477aa993d23389a37) +++ lams_tool_whiteboard/web/pages/authoring/basic.jsp (.../basic.jsp) (revision b1bfbd4d153f417655f051047d69a0dbb3582d11) @@ -17,5 +17,5 @@ \ No newline at end of file