Index: lams_admin/conf/language/lams/ApplicationResources_en_AU.properties =================================================================== diff -u -rd0b6f213cba1026b0c9fdbdaa5dd44a49eddd3aa -r4248afaa041552a4c2d026140e1b1704e98d7ed1 --- lams_admin/conf/language/lams/ApplicationResources_en_AU.properties (.../ApplicationResources_en_AU.properties) (revision d0b6f213cba1026b0c9fdbdaa5dd44a49eddd3aa) +++ lams_admin/conf/language/lams/ApplicationResources_en_AU.properties (.../ApplicationResources_en_AU.properties) (revision 4248afaa041552a4c2d026140e1b1704e98d7ed1) @@ -1,9 +1,6 @@ appName = admin #language code: en #locale code: AU - - - #=================== labels for LAMS Administration =================# audit.organisation.change =Changed {0} for organisation: {1} from: {2} to: {3} @@ -521,7 +518,13 @@ tool.groups.save.error =Error while saving groups config.live.edit =Enable live edit config.export.portfolio =Enable export portfolio - sysadmin.extGroupsUrl =External groups URL +label.create.lesson =Create new lesson +label.manage.tool.consumers =Maintain LTI Tool Consumers +label.edit.tool.consumer =Edit tool consumer details +label.add.tool.consumer =Add new tool consumer +sysadmin.serversecret =Secret +label.tool.consumers.count =LTI Tool Consumers(s) in total + #======= End labels: Exported 515 labels for en AU ===== Index: lams_admin/conf/xdoclet/struts-forms.xml =================================================================== diff -u -rf0068567e57c2d2da0ebdc6cd43091d564d3b493 -r4248afaa041552a4c2d026140e1b1704e98d7ed1 --- lams_admin/conf/xdoclet/struts-forms.xml (.../struts-forms.xml) (revision f0068567e57c2d2da0ebdc6cd43091d564d3b493) +++ lams_admin/conf/xdoclet/struts-forms.xml (.../struts-forms.xml) (revision 4248afaa041552a4c2d026140e1b1704e98d7ed1) @@ -86,6 +86,18 @@ + + + + + + + + + + + + Index: lams_admin/src/java/org/lamsfoundation/lams/admin/service/AdminServiceProxy.java =================================================================== diff -u -rd0b6f213cba1026b0c9fdbdaa5dd44a49eddd3aa -r4248afaa041552a4c2d026140e1b1704e98d7ed1 --- lams_admin/src/java/org/lamsfoundation/lams/admin/service/AdminServiceProxy.java (.../AdminServiceProxy.java) (revision d0b6f213cba1026b0c9fdbdaa5dd44a49eddd3aa) +++ lams_admin/src/java/org/lamsfoundation/lams/admin/service/AdminServiceProxy.java (.../AdminServiceProxy.java) (revision 4248afaa041552a4c2d026140e1b1704e98d7ed1) @@ -42,9 +42,9 @@ import org.springframework.web.context.support.WebApplicationContextUtils; /** + * Common class to make it easier to get the Spring beans. + * * @author jliew - * - * Common class to make it easier to get the Spring beans. */ public class AdminServiceProxy { Index: lams_admin/src/java/org/lamsfoundation/lams/admin/web/ServerListAction.java =================================================================== diff -u -r45dd45991655ace968c10e54e3e0d641882e52f5 -r4248afaa041552a4c2d026140e1b1704e98d7ed1 --- lams_admin/src/java/org/lamsfoundation/lams/admin/web/ServerListAction.java (.../ServerListAction.java) (revision 45dd45991655ace968c10e54e3e0d641882e52f5) +++ lams_admin/src/java/org/lamsfoundation/lams/admin/web/ServerListAction.java (.../ServerListAction.java) (revision 4248afaa041552a4c2d026140e1b1704e98d7ed1) @@ -36,18 +36,10 @@ import org.lamsfoundation.lams.integration.ExtServerOrgMap; /** - *

- * View Source - *

* * @author Fei Yang - */ - -/** - * struts doclets * * @struts.action path="/serverlist" validate="false" - * * @struts.action-forward name="serverlist" path=".serverlist" */ public class ServerListAction extends Action { Index: lams_admin/src/java/org/lamsfoundation/lams/admin/web/ServerSaveAction.java =================================================================== diff -u -r45dd45991655ace968c10e54e3e0d641882e52f5 -r4248afaa041552a4c2d026140e1b1704e98d7ed1 --- lams_admin/src/java/org/lamsfoundation/lams/admin/web/ServerSaveAction.java (.../ServerSaveAction.java) (revision 45dd45991655ace968c10e54e3e0d641882e52f5) +++ lams_admin/src/java/org/lamsfoundation/lams/admin/web/ServerSaveAction.java (.../ServerSaveAction.java) (revision 4248afaa041552a4c2d026140e1b1704e98d7ed1) @@ -157,6 +157,7 @@ map = new ExtServerOrgMap(); BeanUtils.copyProperties(map, serverOrgMapForm); map.setSid(null); + map.setServerTypeId(ExtServerOrgMap.LTI_CONSUMER_SERVER_TYPE); } else { map = service.getExtServerOrgMap(sid); BeanUtils.copyProperties(map, serverOrgMapForm); Index: lams_admin/src/java/org/lamsfoundation/lams/admin/web/action/LtiConsumerManagementAction.java =================================================================== diff -u --- lams_admin/src/java/org/lamsfoundation/lams/admin/web/action/LtiConsumerManagementAction.java (revision 0) +++ lams_admin/src/java/org/lamsfoundation/lams/admin/web/action/LtiConsumerManagementAction.java (revision 4248afaa041552a4c2d026140e1b1704e98d7ed1) @@ -0,0 +1,194 @@ +package org.lamsfoundation.lams.admin.web.action; + +import java.util.Collections; +import java.util.List; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.commons.beanutils.BeanUtils; +import org.apache.commons.lang.StringUtils; +import org.apache.log4j.Logger; +import org.apache.struts.action.ActionForm; +import org.apache.struts.action.ActionForward; +import org.apache.struts.action.ActionMapping; +import org.apache.struts.action.ActionMessage; +import org.apache.struts.action.ActionMessages; +import org.apache.struts.action.DynaActionForm; +import org.lamsfoundation.lams.admin.service.AdminServiceProxy; +import org.lamsfoundation.lams.integration.ExtServerOrgMap; +import org.lamsfoundation.lams.integration.service.IIntegrationService; +import org.lamsfoundation.lams.integration.util.LtiUtils; +import org.lamsfoundation.lams.usermanagement.service.IUserManagementService; +import org.lamsfoundation.lams.util.MessageService; +import org.lamsfoundation.lams.util.WebUtil; +import org.lamsfoundation.lams.web.action.LamsDispatchAction; + +/** + * @author Andrey Balan + * + * @struts:action path="/ltiConsumerManagement" input=".ltiConsumer" name="LtiConsumerForm" scope="request" + * parameter="method" validate="false" + * + * @struts:action-forward name="ltiConsumer" path=".ltiConsumer" + * @struts:action-forward name="ltiConsumerList" path=".ltiConsumerList" + */ +public class LtiConsumerManagementAction extends LamsDispatchAction { + + private static Logger log = Logger.getLogger(LtiConsumerManagementAction.class); + private IUserManagementService userManagementService; + private MessageService messageService; + private IIntegrationService integrationService; + + private void initServices() { + if (userManagementService == null) { + userManagementService = AdminServiceProxy.getService(getServlet().getServletContext()); + } + if (messageService == null) { + messageService = AdminServiceProxy.getMessageService(getServlet().getServletContext()); + } + if (integrationService == null) { + integrationService = AdminServiceProxy.getIntegrationService(getServlet().getServletContext()); + } + } + + /** + * Shows all available LTI tool consumers + */ + @Override + public ActionForward unspecified(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response) { + initServices(); + + List ltiConsumers = integrationService.getAllToolConsumers(); + Collections.sort(ltiConsumers); + request.setAttribute("ltiConsumers", ltiConsumers); + + return mapping.findForward("ltiConsumerList"); + } + + /** + * Edits specified LTI tool consumer + */ + public ActionForward edit(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response) throws Exception { + + initServices(); + + DynaActionForm ltiConsumerForm = (DynaActionForm) form; + Integer sid = WebUtil.readIntParam(request, "sid", true); + + // editing a tool consumer + if (sid != null) { + ExtServerOrgMap ltiConsumer = integrationService.getExtServerOrgMap(sid); + BeanUtils.copyProperties(ltiConsumerForm, ltiConsumer); + String lessonFinishUrl = ltiConsumer.getLessonFinishUrl() == null ? "-" : ltiConsumer.getLessonFinishUrl(); + request.setAttribute("lessonFinishUrl", lessonFinishUrl); + + // create a tool consumer + } else { + //do nothing + } + + return mapping.findForward("ltiConsumer"); + } + + /** + * Disables or enables (depending on "disable" parameter) specified LTI tool consumer + */ + public ActionForward disable(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response) throws Exception { + + initServices(); + + Integer sid = WebUtil.readIntParam(request, "sid", true); + boolean disable = WebUtil.readBooleanParam(request, "disable"); + ExtServerOrgMap ltiConsumer = integrationService.getExtServerOrgMap(sid); + ltiConsumer.setDisabled(disable); + integrationService.saveExtServerOrgMap(ltiConsumer); + + return unspecified(mapping, form, request, response); + } + + /** + * Removes specified LTI tool consumer + */ + public ActionForward delete(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response) throws Exception { + + initServices(); + + Integer sid = WebUtil.readIntParam(request, "sid", true); + userManagementService.deleteById(ExtServerOrgMap.class, sid); + + return unspecified(mapping, form, request, response); + } + + /** + * Stores in the DB a new or edited LTI tool consumer + */ + public ActionForward save(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response) throws Exception { + + initServices(); + + if (isCancelled(request)) { + //show LTI consumer list page + return unspecified(mapping, form, request, response); + } + + DynaActionForm serverOrgMapForm = (DynaActionForm) form; + ActionMessages errors = new ActionMessages(); + String[] requiredFields = { "serverid", "serverkey", "servername", "prefix" }; + for (String requiredField : requiredFields) { + if (StringUtils.trimToNull(serverOrgMapForm.getString(requiredField)) == null) { + errors.add(requiredField, + new ActionMessage("error.required", messageService.getMessage("sysadmin." + requiredField))); + } + } + + Integer sid = (Integer) serverOrgMapForm.get("sid"); + //check duplication + if (errors.isEmpty()) { + String[] uniqueFields = { "serverid", "prefix" }; + for (String uniqueField : uniqueFields) { + List list = userManagementService.findByProperty(ExtServerOrgMap.class, uniqueField, + serverOrgMapForm.get(uniqueField)); + if (list != null && list.size() > 0) { + if (sid.equals(0)) {//new map + errors.add(uniqueField, new ActionMessage("error.not.unique", + messageService.getMessage("sysadmin." + uniqueField))); + } else { + ExtServerOrgMap map = list.get(0); + if (!map.getSid().equals(sid)) { + errors.add(uniqueField, new ActionMessage("error.not.unique", + messageService.getMessage("sysadmin." + uniqueField))); + } + } + + } + } + } + if (errors.isEmpty()) { + ExtServerOrgMap map = null; + if (sid.equals(0)) { + map = new ExtServerOrgMap(); + BeanUtils.copyProperties(map, serverOrgMapForm); + map.setSid(null); + map.setServerTypeId(ExtServerOrgMap.LTI_CONSUMER_SERVER_TYPE); + map.setUserinfoUrl("blank"); + map.setTimeoutUrl("blank"); + } else { + map = integrationService.getExtServerOrgMap(sid); + BeanUtils.copyProperties(map, serverOrgMapForm); + } + integrationService.saveExtServerOrgMap(map); + return unspecified(mapping, form, request, response); + + } else { + saveErrors(request, errors); + return mapping.getInputForward(); + } + } + +} Index: lams_admin/src/java/org/lamsfoundation/lams/admin/web/action/SysAdminStartAction.java =================================================================== diff -u -rb17119b936035f92dffe540c83c05ba4079fcf63 -r4248afaa041552a4c2d026140e1b1704e98d7ed1 --- lams_admin/src/java/org/lamsfoundation/lams/admin/web/action/SysAdminStartAction.java (.../SysAdminStartAction.java) (revision b17119b936035f92dffe540c83c05ba4079fcf63) +++ lams_admin/src/java/org/lamsfoundation/lams/admin/web/action/SysAdminStartAction.java (.../SysAdminStartAction.java) (revision 4248afaa041552a4c2d026140e1b1704e98d7ed1) @@ -67,6 +67,7 @@ links.add(new LinkBean("disabledmanage.do", "admin.list.disabled.users")); links.add(new LinkBean("loginmaintain.do", "sysadmin.maintain.loginpage")); links.add(new LinkBean("serverlist.do", "sysadmin.maintain.external.servers")); + links.add(new LinkBean("ltiConsumerManagement.do", "label.manage.tool.consumers")); links.add(new LinkBean("register.do", "sysadmin.register.server")); links.add(new LinkBean("statistics.do", "admin.statistics.title")); links.add(new LinkBean("signupManagement.do", "admin.signup.title")); Index: lams_admin/web/WEB-INF/tiles-defs.xml =================================================================== diff -u -r1edbb81f16cedfcc1326e4eca6e520b5b48cbddc -r4248afaa041552a4c2d026140e1b1704e98d7ed1 --- lams_admin/web/WEB-INF/tiles-defs.xml (.../tiles-defs.xml) (revision 1edbb81f16cedfcc1326e4eca6e520b5b48cbddc) +++ lams_admin/web/WEB-INF/tiles-defs.xml (.../tiles-defs.xml) (revision 4248afaa041552a4c2d026140e1b1704e98d7ed1) @@ -122,6 +122,16 @@ + + + + + + + + + + Index: lams_admin/web/lti/ltiConsumer.jsp =================================================================== diff -u --- lams_admin/web/lti/ltiConsumer.jsp (revision 0) +++ lams_admin/web/lti/ltiConsumer.jsp (revision 4248afaa041552a4c2d026140e1b1704e98d7ed1) @@ -0,0 +1,101 @@ +<%@ include file="/taglibs.jsp"%> + + + + + + +

+ + + : + + + +

+ + + + + +

+ + + + + + + +

+ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
: *
: *
: *
:
: *
:
:${lessonFinishUrl}
+ +
+ + + + + + +
+
Index: lams_admin/web/lti/ltiConsumerList.jsp =================================================================== diff -u --- lams_admin/web/lti/ltiConsumerList.jsp (revision 0) +++ lams_admin/web/lti/ltiConsumerList.jsp (revision 4248afaa041552a4c2d026140e1b1704e98d7ed1) @@ -0,0 +1,73 @@ +<%@ include file="/taglibs.jsp"%> + +

+ + + +

+

+ +

+ +

+ +

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + +   + + + + + + + + + + + + +   + + + +
+ +

${fn:length(ltiConsumers)}

Index: lams_admin/web/serverlist.jsp =================================================================== diff -u -r16cfe3769f94872a900cc625ead3f3ab207eff00 -r4248afaa041552a4c2d026140e1b1704e98d7ed1 --- lams_admin/web/serverlist.jsp (.../serverlist.jsp) (revision 16cfe3769f94872a900cc625ead3f3ab207eff00) +++ lams_admin/web/serverlist.jsp (.../serverlist.jsp) (revision 4248afaa041552a4c2d026140e1b1704e98d7ed1) @@ -1,10 +1,20 @@ <%@ include file="/taglibs.jsp"%> -

-

+

+ + + +

+

+ +

-

- +

+ +

+ +
@@ -15,39 +25,47 @@ + - - - - - - - - - - + + + + + + + + + +
- - - - - - - - - - -   - - - - - - - - -   - -
+ + + + + + + + + + + + +   + + + + + + + + + + + + +   + +
+

${fn:length(servers)}

Index: lams_admin/web/servermaintain.jsp =================================================================== diff -u -rd27ed028b0e16c263776418b7bce22099fed4eed -r4248afaa041552a4c2d026140e1b1704e98d7ed1 --- lams_admin/web/servermaintain.jsp (.../servermaintain.jsp) (revision d27ed028b0e16c263776418b7bce22099fed4eed) +++ lams_admin/web/servermaintain.jsp (.../servermaintain.jsp) (revision 4248afaa041552a4c2d026140e1b1704e98d7ed1) @@ -9,17 +9,25 @@

- : - + + + : + + +

-

+

+ +


- - + + + + @@ -93,12 +101,20 @@
+
- - - + + + + + + + + +
+