Index: lams_admin/conf/language/lams/ApplicationResources_en_AU.properties =================================================================== diff -u -r51fb2a37254f24bb2a805d4ffd54482c779f43fa -rf4e34e708b87e42dea1b6d667135f09840d79aa3 --- lams_admin/conf/language/lams/ApplicationResources_en_AU.properties (.../ApplicationResources_en_AU.properties) (revision 51fb2a37254f24bb2a805d4ffd54482c779f43fa) +++ lams_admin/conf/language/lams/ApplicationResources_en_AU.properties (.../ApplicationResources_en_AU.properties) (revision f4e34e708b87e42dea1b6d667135f09840d79aa3) @@ -522,5 +522,11 @@ config.live.edit =Enable live edit config.export.portfolio =Enable export portfolio +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/src/java/org/lamsfoundation/lams/admin/service/AdminServiceProxy.java =================================================================== diff -u -r51fb2a37254f24bb2a805d4ffd54482c779f43fa -rf4e34e708b87e42dea1b6d667135f09840d79aa3 --- lams_admin/src/java/org/lamsfoundation/lams/admin/service/AdminServiceProxy.java (.../AdminServiceProxy.java) (revision 51fb2a37254f24bb2a805d4ffd54482c779f43fa) +++ lams_admin/src/java/org/lamsfoundation/lams/admin/service/AdminServiceProxy.java (.../AdminServiceProxy.java) (revision f4e34e708b87e42dea1b6d667135f09840d79aa3) @@ -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 -rc92ea51a973dc03ece970c057dd9369eda6a8c24 -rf4e34e708b87e42dea1b6d667135f09840d79aa3 --- lams_admin/src/java/org/lamsfoundation/lams/admin/web/ServerListAction.java (.../ServerListAction.java) (revision c92ea51a973dc03ece970c057dd9369eda6a8c24) +++ lams_admin/src/java/org/lamsfoundation/lams/admin/web/ServerListAction.java (.../ServerListAction.java) (revision f4e34e708b87e42dea1b6d667135f09840d79aa3) @@ -36,20 +36,9 @@ import org.lamsfoundation.lams.integration.ExtServerOrgMap; /** - *

- * View Source - *

* * @author Fei Yang */ - -/** - * struts doclets - * - * - * - * - */ public class ServerListAction extends Action { @Override Index: lams_admin/src/java/org/lamsfoundation/lams/admin/web/ServerMaintainAction.java =================================================================== diff -u -rc92ea51a973dc03ece970c057dd9369eda6a8c24 -rf4e34e708b87e42dea1b6d667135f09840d79aa3 --- lams_admin/src/java/org/lamsfoundation/lams/admin/web/ServerMaintainAction.java (.../ServerMaintainAction.java) (revision c92ea51a973dc03ece970c057dd9369eda6a8c24) +++ lams_admin/src/java/org/lamsfoundation/lams/admin/web/ServerMaintainAction.java (.../ServerMaintainAction.java) (revision f4e34e708b87e42dea1b6d667135f09840d79aa3) @@ -52,13 +52,6 @@ * * @author Fei Yang */ -/** - * struts doclets - * - * - * - * - */ public class ServerMaintainAction extends LamsDispatchAction { @SuppressWarnings("unchecked") Index: lams_admin/src/java/org/lamsfoundation/lams/admin/web/ServerSaveAction.java =================================================================== diff -u -rc92ea51a973dc03ece970c057dd9369eda6a8c24 -rf4e34e708b87e42dea1b6d667135f09840d79aa3 --- lams_admin/src/java/org/lamsfoundation/lams/admin/web/ServerSaveAction.java (.../ServerSaveAction.java) (revision c92ea51a973dc03ece970c057dd9369eda6a8c24) +++ lams_admin/src/java/org/lamsfoundation/lams/admin/web/ServerSaveAction.java (.../ServerSaveAction.java) (revision f4e34e708b87e42dea1b6d667135f09840d79aa3) @@ -60,9 +60,6 @@ *

* * @author Fei Yang - * - * - * */ public class ServerSaveAction extends Action { @@ -157,6 +154,7 @@ map = new ExtServerOrgMap(); BeanUtils.copyProperties(map, serverOrgMapForm); map.setSid(null); + map.setServerTypeId(ExtServerOrgMap.INTEGRATION_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 f4e34e708b87e42dea1b6d667135f09840d79aa3) @@ -0,0 +1,188 @@ +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 + */ +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 extServerForm = (DynaActionForm) form; + ActionMessages errors = new ActionMessages(); + String[] requiredFields = { "serverid", "serverkey", "servername", "prefix" }; + for (String requiredField : requiredFields) { + if (StringUtils.trimToNull(extServerForm.getString(requiredField)) == null) { + errors.add(requiredField, + new ActionMessage("error.required", messageService.getMessage("sysadmin." + requiredField))); + } + } + + Integer sid = (Integer) extServerForm.get("sid"); + //check duplication + if (errors.isEmpty()) { + String[] uniqueFields = { "serverid", "prefix" }; + for (String uniqueField : uniqueFields) { + List list = userManagementService.findByProperty(ExtServerOrgMap.class, uniqueField, + extServerForm.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 ltiConsumer = list.get(0); + if (!ltiConsumer.getSid().equals(sid)) { + errors.add(uniqueField, new ActionMessage("error.not.unique", + messageService.getMessage("sysadmin." + uniqueField))); + } + } + + } + } + } + if (errors.isEmpty()) { + ExtServerOrgMap ltiConsumer = null; + if (sid.equals(0)) { + ltiConsumer = new ExtServerOrgMap(); + BeanUtils.copyProperties(ltiConsumer, extServerForm); + ltiConsumer.setSid(null); + ltiConsumer.setServerTypeId(ExtServerOrgMap.LTI_CONSUMER_SERVER_TYPE); + ltiConsumer.setUserinfoUrl("blank"); + ltiConsumer.setTimeoutUrl("blank"); + } else { + ltiConsumer = integrationService.getExtServerOrgMap(sid); + BeanUtils.copyProperties(ltiConsumer, extServerForm); + } + integrationService.saveExtServerOrgMap(ltiConsumer); + 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 -rfba2480356aa5ddda0c8308eb917d72d16aa32eb -rf4e34e708b87e42dea1b6d667135f09840d79aa3 --- lams_admin/src/java/org/lamsfoundation/lams/admin/web/action/SysAdminStartAction.java (.../SysAdminStartAction.java) (revision fba2480356aa5ddda0c8308eb917d72d16aa32eb) +++ lams_admin/src/java/org/lamsfoundation/lams/admin/web/action/SysAdminStartAction.java (.../SysAdminStartAction.java) (revision f4e34e708b87e42dea1b6d667135f09840d79aa3) @@ -40,8 +40,6 @@ /** * @author jliew * - * - * */ public class SysAdminStartAction extends Action { @@ -62,6 +60,7 @@ links.add(new LinkBean("loginmaintain.do", "sysadmin.maintain.loginpage")); links.add(new LinkBean("signupManagement.do", "admin.signup.title")); 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("toolcontentlist.do", "sysadmin.tool.management")); links.add(new LinkBean("themeManagement.do", "admin.themes.title")); Index: lams_admin/web/WEB-INF/struts-config.xml =================================================================== diff -u -rfba2480356aa5ddda0c8308eb917d72d16aa32eb -rf4e34e708b87e42dea1b6d667135f09840d79aa3 --- lams_admin/web/WEB-INF/struts-config.xml (.../struts-config.xml) (revision fba2480356aa5ddda0c8308eb917d72d16aa32eb) +++ lams_admin/web/WEB-INF/struts-config.xml (.../struts-config.xml) (revision f4e34e708b87e42dea1b6d667135f09840d79aa3) @@ -121,6 +121,18 @@ + + + + + + + + + + + + @@ -224,6 +236,27 @@ /> + + + + + + + + + + + + + + Index: lams_admin/web/lti/ltiConsumer.jsp =================================================================== diff -u --- lams_admin/web/lti/ltiConsumer.jsp (revision 0) +++ lams_admin/web/lti/ltiConsumer.jsp (revision f4e34e708b87e42dea1b6d667135f09840d79aa3) @@ -0,0 +1,91 @@ +<%@ 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 f4e34e708b87e42dea1b6d667135f09840d79aa3) @@ -0,0 +1,67 @@ +<%@ include file="/taglibs.jsp"%> + +

+ + + +

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

${fn:length(ltiConsumers)} 

+ +