Index: lams_signup/.classpath =================================================================== diff -u --- lams_signup/.classpath (revision 0) +++ lams_signup/.classpath (revision 56f7147f7f0d441c3362d1187ed1551654ede1d4) @@ -0,0 +1,13 @@ + + + + + + + + + + + + + Index: lams_signup/.cvsignore =================================================================== diff -u --- lams_signup/.cvsignore (revision 0) +++ lams_signup/.cvsignore (revision 56f7147f7f0d441c3362d1187ed1551654ede1d4) @@ -0,0 +1 @@ +build \ No newline at end of file Index: lams_signup/.project =================================================================== diff -u --- lams_signup/.project (revision 0) +++ lams_signup/.project (revision 56f7147f7f0d441c3362d1187ed1551654ede1d4) @@ -0,0 +1,17 @@ + + + lams_signup + + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + + Index: lams_signup/README =================================================================== diff -u --- lams_signup/README (revision 0) +++ lams_signup/README (revision 56f7147f7f0d441c3362d1187ed1551654ede1d4) @@ -0,0 +1,25 @@ +LAMS Signup + +Tested with LAMS 2.3.3 and LAMS 2.3.4. Shouldn't require too much if any +modification to work with 2.4. + +Installation +------------ + +Drop jar and war into lams.ear. Modify lams.ear/META-INF/application.xml and +add the following; + + + + lams-signup.war + /lams/signup + + + + lams-signup.jar + + +TODO +---- +- full i18n +- maintain pretty urls between POSTs \ No newline at end of file Index: lams_signup/build.properties =================================================================== diff -u --- lams_signup/build.properties (revision 0) +++ lams_signup/build.properties (revision 56f7147f7f0d441c3362d1187ed1551654ede1d4) @@ -0,0 +1,3 @@ +name=lams_signup +product=lams-signup +version=0.1 Index: lams_signup/build.xml =================================================================== diff -u --- lams_signup/build.xml (revision 0) +++ lams_signup/build.xml (revision 56f7147f7f0d441c3362d1187ed1551654ede1d4) @@ -0,0 +1,195 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + You must download several jar files before you can build + Middlegen. Execute the "download-deps" target. Then try to + build again. + + If you are behind a proxy, you should define the properties + http.proxyHost and http.proxyPort. Example: + + ant -Dhttp.proxyHost=foo.com -Dhttp.proxyPort=8080 + + It's also possible to download the jars manually. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: lams_signup/conf/jar/META-INF/MANIFEST.MF =================================================================== diff -u --- lams_signup/conf/jar/META-INF/MANIFEST.MF (revision 0) +++ lams_signup/conf/jar/META-INF/MANIFEST.MF (revision 56f7147f7f0d441c3362d1187ed1551654ede1d4) @@ -0,0 +1,3 @@ +Implementation-Title: LAMS - Signup +Implementation-Version: 0.1 +Implementation-Vendor: LAMS Foundation (http://lamsfoundation.org) Index: lams_signup/conf/language/lams/ApplicationResources.properties =================================================================== diff -u --- lams_signup/conf/language/lams/ApplicationResources.properties (revision 0) +++ lams_signup/conf/language/lams/ApplicationResources.properties (revision 56f7147f7f0d441c3362d1187ed1551654ede1d4) @@ -0,0 +1,16 @@ +title.lams.signup = LAMS Signup +errors.header = +errors.footer = +errors.suffix =
+error.course.keys.unequal = Course keys didn't match +error.context.exists = This URL context is taken +error.username.blank = Username can't be blank +error.username.exists = Username is taken +error.first.name.blank = First name can't be blank +error.last.name.blank = Last name can't be blank +error.password.blank = Password can't be blank +error.passwords.unequal = Passwords didn't match +error.email.blank = Email can't be blank +error.emails.unequal = Email addresses didn't match +error.email.invalid.format = Email format is invalid +error.course.key.invalid = This course key is incorrect Index: lams_signup/conf/war/META-INF/MANIFEST.MF =================================================================== diff -u --- lams_signup/conf/war/META-INF/MANIFEST.MF (revision 0) +++ lams_signup/conf/war/META-INF/MANIFEST.MF (revision 56f7147f7f0d441c3362d1187ed1551654ede1d4) @@ -0,0 +1,3 @@ +Implementation-Title: LAMS - Signup +Implementation-Version: 0.1 +Implementation-Vendor: LAMS Foundation (http://lamsfoundation.org) \ No newline at end of file Index: lams_signup/conf/xdoclet/error-pages.xml =================================================================== diff -u --- lams_signup/conf/xdoclet/error-pages.xml (revision 0) +++ lams_signup/conf/xdoclet/error-pages.xml (revision 56f7147f7f0d441c3362d1187ed1551654ede1d4) @@ -0,0 +1,13 @@ + + 500 + /error.jsp + + + 403 + /403.jsp + + + 404 + /404.jsp + + \ No newline at end of file Index: lams_signup/conf/xdoclet/filter-mappings.xml =================================================================== diff -u --- lams_signup/conf/xdoclet/filter-mappings.xml (revision 0) +++ lams_signup/conf/xdoclet/filter-mappings.xml (revision 56f7147f7f0d441c3362d1187ed1551654ede1d4) @@ -0,0 +1,16 @@ + + SystemSessionFilter + /* + + + LocaleFilter + /* + + + HibernateFilter + /* + + + UrlRewriteFilter + /* + \ No newline at end of file Index: lams_signup/conf/xdoclet/filters.xml =================================================================== diff -u --- lams_signup/conf/xdoclet/filters.xml (revision 0) +++ lams_signup/conf/xdoclet/filters.xml (revision 56f7147f7f0d441c3362d1187ed1551654ede1d4) @@ -0,0 +1,35 @@ + + SystemSessionFilter + + org.lamsfoundation.lams.web.session.SystemSessionFilter + + + + HibernateFilter + + org.lamsfoundation.lams.util.CustomizedOpenSessionInViewFilter + + + sessionFactoryBeanName + coreSessionFactory + + + singleSession + true + + + + LocaleFilter + + org.lamsfoundation.lams.web.filter.LocaleFilter + + + encoding + UTF-8 + + + + UrlRewriteFilter + org.tuckey.web.filters.urlrewrite.UrlRewriteFilter + + Index: lams_signup/conf/xdoclet/global-exceptions.xml =================================================================== diff -u --- lams_signup/conf/xdoclet/global-exceptions.xml (revision 0) +++ lams_signup/conf/xdoclet/global-exceptions.xml (revision 56f7147f7f0d441c3362d1187ed1551654ede1d4) @@ -0,0 +1,8 @@ + + + \ No newline at end of file Index: lams_signup/conf/xdoclet/global-forwards.xml =================================================================== diff -u --- lams_signup/conf/xdoclet/global-forwards.xml (revision 0) +++ lams_signup/conf/xdoclet/global-forwards.xml (revision 56f7147f7f0d441c3362d1187ed1551654ede1d4) @@ -0,0 +1,3 @@ + + + Index: lams_signup/conf/xdoclet/listeners.xml =================================================================== diff -u --- lams_signup/conf/xdoclet/listeners.xml (revision 0) +++ lams_signup/conf/xdoclet/listeners.xml (revision 56f7147f7f0d441c3362d1187ed1551654ede1d4) @@ -0,0 +1,10 @@ + + + org.springframework.web.context.ContextLoaderListener + + + + + org.lamsfoundation.lams.web.session.SetMaxTimeoutListener + + \ No newline at end of file Index: lams_signup/conf/xdoclet/servlet-mappings.xml =================================================================== diff -u --- lams_signup/conf/xdoclet/servlet-mappings.xml (revision 0) +++ lams_signup/conf/xdoclet/servlet-mappings.xml (revision 56f7147f7f0d441c3362d1187ed1551654ede1d4) @@ -0,0 +1,6 @@ + + action + *.do + + + \ No newline at end of file Index: lams_signup/conf/xdoclet/servlets.xml =================================================================== diff -u --- lams_signup/conf/xdoclet/servlets.xml (revision 0) +++ lams_signup/conf/xdoclet/servlets.xml (revision 56f7147f7f0d441c3362d1187ed1551654ede1d4) @@ -0,0 +1,21 @@ + + action + org.apache.struts.action.ActionServlet + + config + /WEB-INF/struts/struts-config.xml + + + debug + 999 + + + detail + 2 + + + validate + true + + 1 + \ No newline at end of file Index: lams_signup/conf/xdoclet/struts-actions.xml =================================================================== diff -u --- lams_signup/conf/xdoclet/struts-actions.xml (revision 0) +++ lams_signup/conf/xdoclet/struts-actions.xml (revision 56f7147f7f0d441c3362d1187ed1551654ede1d4) @@ -0,0 +1 @@ \ No newline at end of file Index: lams_signup/conf/xdoclet/struts-forms.xml =================================================================== diff -u --- lams_signup/conf/xdoclet/struts-forms.xml (revision 0) +++ lams_signup/conf/xdoclet/struts-forms.xml (revision 56f7147f7f0d441c3362d1187ed1551654ede1d4) @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + Index: lams_signup/conf/xdoclet/struts-message-resources.xml =================================================================== diff -u --- lams_signup/conf/xdoclet/struts-message-resources.xml (revision 0) +++ lams_signup/conf/xdoclet/struts-message-resources.xml (revision 56f7147f7f0d441c3362d1187ed1551654ede1d4) @@ -0,0 +1,2 @@ + + Index: lams_signup/conf/xdoclet/struts-plugins.xml =================================================================== diff -u --- lams_signup/conf/xdoclet/struts-plugins.xml (revision 0) +++ lams_signup/conf/xdoclet/struts-plugins.xml (revision 56f7147f7f0d441c3362d1187ed1551654ede1d4) @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file Index: lams_signup/conf/xdoclet/taglibs.xml =================================================================== diff -u --- lams_signup/conf/xdoclet/taglibs.xml (revision 0) +++ lams_signup/conf/xdoclet/taglibs.xml (revision 56f7147f7f0d441c3362d1187ed1551654ede1d4) @@ -0,0 +1,61 @@ + + + + + + + tags-bean + /WEB-INF/struts/tlds/struts-bean.tld + + + + + tags-html + /WEB-INF/struts/tlds/struts-html.tld + + + + + tags-logic + /WEB-INF/struts/tlds/struts-logic.tld + + + + + tags-tiles + /WEB-INF/struts/tlds/struts-tiles.tld + + + + + + + + tags-fmt + /WEB-INF/jstl/tlds/fmt.tld + + + + tags-core + /WEB-INF/jstl/tlds/c.tld + + + + tags-function + /WEB-INF/jstl/tlds/fn.tld + + + + tags-xml + /WEB-INF/jstl/tlds/x.tld + + + + + + + tags-lams + /WEB-INF/lams.tld + + + \ No newline at end of file Index: lams_signup/conf/xdoclet/web-security.xml =================================================================== diff -u --- lams_signup/conf/xdoclet/web-security.xml (revision 0) +++ lams_signup/conf/xdoclet/web-security.xml (revision 56f7147f7f0d441c3362d1187ed1551654ede1d4) @@ -0,0 +1,25 @@ + + + + Secure Content + /admin.do + + + SYSADMIN + + + + + + FORM + LAMS + + /login.jsp + /login.jsp?failed=y + + + + + SYSADMIN + + \ No newline at end of file Index: lams_signup/conf/xdoclet/web-settings.xml =================================================================== diff -u --- lams_signup/conf/xdoclet/web-settings.xml (revision 0) +++ lams_signup/conf/xdoclet/web-settings.xml (revision 56f7147f7f0d441c3362d1187ed1551654ede1d4) @@ -0,0 +1,24 @@ +LAMS + +Learning Activity Management System + + + javax.servlet.jsp.jstl.fmt.localizationContext + org.lamsfoundation.lams.tool.signup.ApplicationResources + + + + + contextConfigLocation + classpath:/org/lamsfoundation/lams/tool/signup/dbupdates/autopatchContext.xml + + + + locatorFactorySelector + classpath*:/org/lamsfoundation/lams/**/beanRefContext.xml + + + + parentContextKey + context.central + Index: lams_signup/src/java/org/lamsfoundation/lams/tool/signup/action/AdminAction.java =================================================================== diff -u --- lams_signup/src/java/org/lamsfoundation/lams/tool/signup/action/AdminAction.java (revision 0) +++ lams_signup/src/java/org/lamsfoundation/lams/tool/signup/action/AdminAction.java (revision 56f7147f7f0d441c3362d1187ed1551654ede1d4) @@ -0,0 +1,168 @@ +package org.lamsfoundation.lams.tool.signup.action; + +import java.util.Date; +import java.util.List; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.commons.lang.StringUtils; +import org.apache.log4j.Logger; +import org.apache.struts.action.Action; +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.tool.signup.model.SignupOrganisation; +import org.lamsfoundation.lams.tool.signup.service.SignupService; +import org.lamsfoundation.lams.usermanagement.Organisation; +import org.lamsfoundation.lams.util.WebUtil; +import org.springframework.web.context.WebApplicationContext; +import org.springframework.web.context.support.WebApplicationContextUtils; + +/** + * @struts:action path="/admin" name="AdminForm" scope="request" + * validate="false" parameter="method" + * + * @struts:action-forward name="admin-list" path=".admin-list" + * @struts:action-forward name="admin-add" path=".admin-add" + * @struts:action-forward name="admin" path="/admin.do?method=list" + */ +public class AdminAction extends Action { + + private static Logger log = Logger.getLogger(AdminAction.class); + private static SignupService signupService = null; + + public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response) { + + try { + if (signupService == null) { + WebApplicationContext wac = WebApplicationContextUtils.getRequiredWebApplicationContext(getServlet() + .getServletContext()); + signupService = (SignupService) wac.getBean("signupService"); + } + + String method = WebUtil.readStrParam(request, "method", true); + + if (StringUtils.equals(method, "edit")) { + return edit(mapping, form, request, response); + } else if (StringUtils.equals(method, "add")) { + return add(mapping, form, request, response); + } else if (StringUtils.equals(method, "delete")) { + return delete(mapping, form, request, response); + } else if (StringUtils.equals(method, "list")) { + // do nothing + } + + List signupOrganisations = signupService.getSignupDAO().getSignupOrganisations(); + request.setAttribute("signupOrganisations", signupOrganisations); + } catch (Exception e) { + log.error(e.getMessage(), e); + request.setAttribute("error", e.getMessage()); + } + + return mapping.findForward("admin-list"); + } + + public ActionForward edit(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response) throws Exception { + + Integer soid = WebUtil.readIntParam(request, "soid", false); + + if (soid != null && soid > 0) { + SignupOrganisation signup = (SignupOrganisation) signupService.getSignupDAO().find( + SignupOrganisation.class, soid); + if (signup != null) { + DynaActionForm adminForm = (DynaActionForm) form; + adminForm.set("signupOrganisationId", signup.getSignupOrganisationId()); + adminForm.set("organisationId", signup.getOrganisation().getOrganisationId()); + adminForm.set("addToLessons", signup.getAddToLessons()); + adminForm.set("addAsStaff", signup.getAddAsStaff()); + adminForm.set("addWithAuthor", signup.getAddWithAuthor()); + adminForm.set("addWithMonitor", signup.getAddWithMonitor()); + adminForm.set("courseKey", signup.getCourseKey()); + adminForm.set("blurb", signup.getBlurb()); + adminForm.set("disabled", signup.getDisabled()); + adminForm.set("context", signup.getContext()); + + List organisations = signupService.getSignupDAO().getOrganisationCandidates(); + request.setAttribute("organisations", organisations); + + return mapping.findForward("admin-add"); + } + } + return null; + } + + public ActionForward add(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response) throws Exception { + + DynaActionForm adminForm = (DynaActionForm) form; + + // check if form submitted + if (adminForm.get("organisationId") != null && (Integer) adminForm.get("organisationId") > 0) { + ActionMessages errors = new ActionMessages(); + + // validate + if (!StringUtils.equals(adminForm.getString("courseKey"), adminForm.getString("confirmCourseKey"))) { + errors.add("courseKey", new ActionMessage("error.course.keys.unequal")); + } + if (signupService.getSignupDAO().contextExists((Integer) adminForm.get("signupOrganisationId"), + adminForm.getString("context"))) { + errors.add("context", new ActionMessage("error.context.exists")); + } + + if (!errors.isEmpty()) { + saveErrors(request, errors); + } else { + // proceed + SignupOrganisation signup; + if (adminForm.get("signupOrganisationId") != null + && (Integer) adminForm.get("signupOrganisationId") > 0) { + // form was editing existing + signup = (SignupOrganisation) signupService.getSignupDAO().find(SignupOrganisation.class, + (Integer) adminForm.get("signupOrganisationId")); + } else { + signup = new SignupOrganisation(); + signup.setCreateDate(new Date()); + } + signup.setAddToLessons((Boolean) adminForm.get("addToLessons")); + signup.setAddAsStaff((Boolean) adminForm.get("addAsStaff")); + signup.setAddWithAuthor((Boolean)adminForm.get("addWithAuthor")); + signup.setAddWithMonitor((Boolean)adminForm.get("addWithMonitor")); + signup.setDisabled((Boolean) adminForm.get("disabled")); + signup.setOrganisation((Organisation) signupService.getSignupDAO().find(Organisation.class, + (Integer) adminForm.get("organisationId"))); + signup.setCourseKey(adminForm.getString("courseKey")); + signup.setBlurb(adminForm.getString("blurb")); + signup.setContext(adminForm.getString("context")); + signupService.getSignupDAO().insertOrUpdate(signup); + + return mapping.findForward("admin"); + } + } else { + // form not submitted, default values + adminForm.set("blurb", "Register your LAMS account for this group using the form below."); + } + + List organisations = signupService.getSignupDAO().getOrganisationCandidates(); + request.setAttribute("organisations", organisations); + + return mapping.findForward("admin-add"); + } + + public ActionForward delete(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response) throws Exception { + + Integer soid = WebUtil.readIntParam(request, "soid"); + + if (soid != null && soid > 0) { + signupService.getSignupDAO().deleteById(SignupOrganisation.class, soid); + } + + return mapping.findForward("admin"); + } +} Index: lams_signup/src/java/org/lamsfoundation/lams/tool/signup/action/RegisterAction.java =================================================================== diff -u --- lams_signup/src/java/org/lamsfoundation/lams/tool/signup/action/RegisterAction.java (revision 0) +++ lams_signup/src/java/org/lamsfoundation/lams/tool/signup/action/RegisterAction.java (revision 56f7147f7f0d441c3362d1187ed1551654ede1d4) @@ -0,0 +1,145 @@ +package org.lamsfoundation.lams.tool.signup.action; + +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.commons.lang.StringUtils; +import org.apache.log4j.Logger; +import org.apache.struts.action.Action; +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.tool.signup.model.SignupOrganisation; +import org.lamsfoundation.lams.tool.signup.service.SignupService; +import org.lamsfoundation.lams.usermanagement.User; +import org.lamsfoundation.lams.util.Configuration; +import org.lamsfoundation.lams.util.ConfigurationKeys; +import org.lamsfoundation.lams.util.Emailer; +import org.lamsfoundation.lams.util.HashUtil; +import org.lamsfoundation.lams.util.WebUtil; +import org.springframework.web.context.WebApplicationContext; +import org.springframework.web.context.support.WebApplicationContextUtils; + +/** + * @struts:action path="/register" name="RegisterForm" scope="request" + * validate="false" parameter="method" + * + * @struts:action-forward name="register" path=".register" + * @struts:action-forward name="index" path="/" + * @struts:action-forward name="success" path=".success" + */ +public class RegisterAction extends Action { + + private static Logger log = Logger.getLogger(RegisterAction.class); + private static SignupService signupService = null; + + public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response) throws Exception { + + try { + if (signupService == null) { + WebApplicationContext wac = WebApplicationContextUtils.getRequiredWebApplicationContext(getServlet() + .getServletContext()); + signupService = (SignupService) wac.getBean("signupService"); + } + + String context = WebUtil.readStrParam(request, "context", true); + if (StringUtils.isNotBlank(context)) { + SignupOrganisation signupOrganisation = signupService.getSignupDAO().getSignupOrganisation(context); + request.setAttribute("signupOrganisation", signupOrganisation); + } + + DynaActionForm registerForm = (DynaActionForm) form; + + if (registerForm.get("submitted") != null && (Boolean) registerForm.get("submitted")) { + // validation + ActionMessages errors = validate(registerForm); + if (!errors.isEmpty()) { + saveErrors(request, errors); + return mapping.findForward("register"); + } else { + // proceed with signup + User user = new User(); + user.setLogin(registerForm.getString("username")); + user.setFirstName(registerForm.getString("firstName")); + user.setLastName(registerForm.getString("lastName")); + user.setEmail(registerForm.getString("email")); + user.setPassword(HashUtil.sha1(registerForm.getString("password"))); + signupService.signupUser(user, registerForm.getString("context")); + + // send email + try { + String subject = "Your LAMS account details"; + String body = "Hi there,\n\n"; + body += "You've successfully registered an account with username " + user.getLogin(); + body += " on the LAMS server at " + Configuration.get(ConfigurationKeys.SERVER_URL); + body += ". If you ever forget your password, you can reset it via this URL " + + Configuration.get(ConfigurationKeys.SERVER_URL) + "/forgotPassword.jsp."; + body += "\n\n"; + body += "Regards,\n"; + body += "LAMS Signup System"; + + Emailer.sendFromSupportEmail(subject, user.getEmail(), body); + } catch (Exception e) { + log.error(e.getMessage(), e); + request.setAttribute("error", e.getMessage()); + } + + return mapping.findForward("success"); + } + } else { + // no context and unsubmitted form means it's the initial + // request + return mapping.findForward("register"); + } + } catch (Exception e) { + log.error(e.getMessage(), e); + request.setAttribute("error", e.getMessage()); + } + + return mapping.findForward("index"); + } + + private ActionMessages validate(DynaActionForm registerForm) { + ActionMessages errors = new ActionMessages(); + if (StringUtils.isBlank(registerForm.getString("username"))) { + errors.add("username", new ActionMessage("error.username.blank")); + } else if (signupService.getSignupDAO().usernameExists(registerForm.getString("username"))) { + errors.add("username", new ActionMessage("error.username.exists")); + } + if (StringUtils.isBlank(registerForm.getString("firstName"))) { + errors.add("firstName", new ActionMessage("error.first.name.blank")); + } + if (StringUtils.isBlank(registerForm.getString("lastName"))) { + errors.add("lastName", new ActionMessage("error.last.name.blank")); + } + if (StringUtils.isBlank(registerForm.getString("password"))) { + errors.add("password", new ActionMessage("error.password.blank")); + } else if (!StringUtils.equals(registerForm.getString("password"), registerForm.getString("confirmPassword"))) { + errors.add("password", new ActionMessage("error.passwords.unequal")); + } + if (StringUtils.isBlank(registerForm.getString("email"))) { + errors.add("email", new ActionMessage("error.email.blank")); + } else { + if (!StringUtils.equals(registerForm.getString("email"), registerForm.getString("confirmEmail"))) { + errors.add("email", new ActionMessage("error.emails.unequal")); + } + Pattern p = Pattern.compile(".+@.+\\.[a-z]+"); + Matcher m = p.matcher(registerForm.getString("email")); + if (!m.matches()) { + errors.add("email", new ActionMessage("error.email.invalid.format")); + } + } + if (!signupService.getSignupDAO().courseKeyIsValid(registerForm.getString("context"), + registerForm.getString("courseKey"))) { + errors.add("courseKey", new ActionMessage("error.course.key.invalid")); + } + return errors; + } +} Index: lams_signup/src/java/org/lamsfoundation/lams/tool/signup/applicationContext.xml =================================================================== diff -u --- lams_signup/src/java/org/lamsfoundation/lams/tool/signup/applicationContext.xml (revision 0) +++ lams_signup/src/java/org/lamsfoundation/lams/tool/signup/applicationContext.xml (revision 56f7147f7f0d441c3362d1187ed1551654ede1d4) @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + + + + PROPAGATION_REQUIRED + + + + Index: lams_signup/src/java/org/lamsfoundation/lams/tool/signup/dao/SignupDAO.java =================================================================== diff -u --- lams_signup/src/java/org/lamsfoundation/lams/tool/signup/dao/SignupDAO.java (revision 0) +++ lams_signup/src/java/org/lamsfoundation/lams/tool/signup/dao/SignupDAO.java (revision 56f7147f7f0d441c3362d1187ed1551654ede1d4) @@ -0,0 +1,67 @@ +package org.lamsfoundation.lams.tool.signup.dao; + +import java.util.List; + +import org.lamsfoundation.lams.dao.hibernate.BaseDAO; +import org.lamsfoundation.lams.tool.signup.model.SignupOrganisation; +import org.lamsfoundation.lams.usermanagement.OrganisationState; +import org.lamsfoundation.lams.usermanagement.OrganisationType; +import org.lamsfoundation.lams.usermanagement.User; + +public class SignupDAO extends BaseDAO { + + public SignupOrganisation getSignupOrganisation(String context) { + List list = getHibernateTemplate().find( + "from SignupOrganisation s where s.disabled=" + Boolean.FALSE + " and s.context=?", context); + if (list != null && list.size() > 0) { + return (SignupOrganisation) list.get(0); + } + return null; + } + + public List getSignupOrganisations() { + return super.findAll(SignupOrganisation.class); + } + + public List getOrganisationCandidates() { + String query = "from Organisation o where o.organisationState.organisationStateId=" + OrganisationState.ACTIVE; + query += " and o.organisationType.organisationTypeId!=" + OrganisationType.ROOT_TYPE; + return getHibernateTemplate().find(query); + } + + public void insertOrUpdate(Object object) { + super.insertOrUpdate(object); + } + + public boolean usernameExists(String username) { + List list = super.findByProperty(User.class, "login", username); + if (list != null && list.size() > 0) + return true; + else + return false; + } + + public boolean contextExists(Integer soid, String context) { + String query = "from SignupOrganisation s where s.signupOrganisationId!=? and s.context=?"; + Object[] values = new Object[2]; + values[0] = soid; + values[1] = context; + List list = getHibernateTemplate().find(query, values); + if (list != null && list.size() > 0) + return true; + else + return false; + } + + public boolean courseKeyIsValid(String context, String courseKey) { + String query = "from SignupOrganisation s where s.context=? and s.courseKey=?"; + Object[] values = new Object[2]; + values[0] = context; + values[1] = courseKey; + List list = getHibernateTemplate().find(query, values); + if (list != null && list.size() > 0) + return true; + else + return false; + } +} Index: lams_signup/src/java/org/lamsfoundation/lams/tool/signup/dbupdates/autopatchContext.xml =================================================================== diff -u --- lams_signup/src/java/org/lamsfoundation/lams/tool/signup/dbupdates/autopatchContext.xml (revision 0) +++ lams_signup/src/java/org/lamsfoundation/lams/tool/signup/dbupdates/autopatchContext.xml (revision 56f7147f7f0d441c3362d1187ed1551654ede1d4) @@ -0,0 +1,12 @@ + + + + + + + + + + Index: lams_signup/src/java/org/lamsfoundation/lams/tool/signup/dbupdates/patch20100218.sql =================================================================== diff -u --- lams_signup/src/java/org/lamsfoundation/lams/tool/signup/dbupdates/patch20100218.sql (revision 0) +++ lams_signup/src/java/org/lamsfoundation/lams/tool/signup/dbupdates/patch20100218.sql (revision 56f7147f7f0d441c3362d1187ed1551654ede1d4) @@ -0,0 +1,21 @@ +CREATE TABLE lams_signup_organisation ( + signup_organisation_id bigint(20) not null auto_increment, + organisation_id bigint(20) not null, + add_to_lessons tinyint(1) default 1, + add_as_staff tinyint(1) default 0, + course_key varchar(255), + blurb text, + create_date datetime, + disabled tinyint(1) default 0, + context varchar(255) unique, + primary key (signup_organisation_id), + index (organisation_id) +)TYPE=InnoDB; + +CREATE TABLE lams_signup_user ( + signup_user_id bigint(20) not null auto_increment, + user_id bigint(20) not null, + organisation_id bigint(20) not null, + signup_date datetime not null, + primary key (signup_user_id) +)TYPE=InnoDB; \ No newline at end of file Index: lams_signup/src/java/org/lamsfoundation/lams/tool/signup/dbupdates/patch20100223.sql =================================================================== diff -u --- lams_signup/src/java/org/lamsfoundation/lams/tool/signup/dbupdates/patch20100223.sql (revision 0) +++ lams_signup/src/java/org/lamsfoundation/lams/tool/signup/dbupdates/patch20100223.sql (revision 56f7147f7f0d441c3362d1187ed1551654ede1d4) @@ -0,0 +1,2 @@ +ALTER TABLE lams_signup_organisation ADD COLUMN add_with_author tinyint(1) DEFAULT 0 AFTER add_as_staff; +ALTER TABLE lams_signup_organisation ADD COLUMN add_with_monitor tinyint(1) DEFAULT 0 AFTER add_with_author; Index: lams_signup/src/java/org/lamsfoundation/lams/tool/signup/model/SignupOrganisation.hbm.xml =================================================================== diff -u --- lams_signup/src/java/org/lamsfoundation/lams/tool/signup/model/SignupOrganisation.hbm.xml (revision 0) +++ lams_signup/src/java/org/lamsfoundation/lams/tool/signup/model/SignupOrganisation.hbm.xml (revision 56f7147f7f0d441c3362d1187ed1551654ede1d4) @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file Index: lams_signup/src/java/org/lamsfoundation/lams/tool/signup/model/SignupOrganisation.java =================================================================== diff -u --- lams_signup/src/java/org/lamsfoundation/lams/tool/signup/model/SignupOrganisation.java (revision 0) +++ lams_signup/src/java/org/lamsfoundation/lams/tool/signup/model/SignupOrganisation.java (revision 56f7147f7f0d441c3362d1187ed1551654ede1d4) @@ -0,0 +1,113 @@ +package org.lamsfoundation.lams.tool.signup.model; + +import java.util.Date; + +import org.lamsfoundation.lams.usermanagement.Organisation; + +public class SignupOrganisation { + + private Integer signupOrganisationId; + private Organisation organisation; + private Boolean addToLessons; + private Boolean addAsStaff; + private Boolean addWithAuthor; + private Boolean addWithMonitor; + private String courseKey; + private String blurb; + private Date createDate; + private Boolean disabled; + private String context; + + public SignupOrganisation() { + + } + + public Integer getSignupOrganisationId() { + return signupOrganisationId; + } + + public void setSignupOrganisationId(Integer signupOrganisationId) { + this.signupOrganisationId = signupOrganisationId; + } + + public Organisation getOrganisation() { + return organisation; + } + + public void setOrganisation(Organisation organisation) { + this.organisation = organisation; + } + + public Boolean getAddToLessons() { + return addToLessons; + } + + public void setAddToLessons(Boolean addToLessons) { + this.addToLessons = addToLessons; + } + + public Boolean getAddAsStaff() { + return addAsStaff; + } + + public void setAddAsStaff(Boolean addAsStaff) { + this.addAsStaff = addAsStaff; + } + + public Boolean getAddWithAuthor() { + return addWithAuthor; + } + + public void setAddWithAuthor(Boolean addWithAuthor) { + this.addWithAuthor = addWithAuthor; + } + + public Boolean getAddWithMonitor() { + return addWithMonitor; + } + + public void setAddWithMonitor(Boolean addWithMonitor) { + this.addWithMonitor = addWithMonitor; + } + + public String getCourseKey() { + return courseKey; + } + + public void setCourseKey(String courseKey) { + this.courseKey = courseKey; + } + + public String getBlurb() { + return blurb; + } + + public void setBlurb(String blurb) { + this.blurb = blurb; + } + + public Date getCreateDate() { + return createDate; + } + + public void setCreateDate(Date createDate) { + this.createDate = createDate; + } + + public Boolean getDisabled() { + return disabled; + } + + public void setDisabled(Boolean disabled) { + this.disabled = disabled; + } + + public String getContext() { + return context; + } + + public void setContext(String context) { + this.context = context; + } + +} Index: lams_signup/src/java/org/lamsfoundation/lams/tool/signup/model/SignupUser.hbm.xml =================================================================== diff -u --- lams_signup/src/java/org/lamsfoundation/lams/tool/signup/model/SignupUser.hbm.xml (revision 0) +++ lams_signup/src/java/org/lamsfoundation/lams/tool/signup/model/SignupUser.hbm.xml (revision 56f7147f7f0d441c3362d1187ed1551654ede1d4) @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file Index: lams_signup/src/java/org/lamsfoundation/lams/tool/signup/model/SignupUser.java =================================================================== diff -u --- lams_signup/src/java/org/lamsfoundation/lams/tool/signup/model/SignupUser.java (revision 0) +++ lams_signup/src/java/org/lamsfoundation/lams/tool/signup/model/SignupUser.java (revision 56f7147f7f0d441c3362d1187ed1551654ede1d4) @@ -0,0 +1,51 @@ +package org.lamsfoundation.lams.tool.signup.model; + +import java.util.Date; + +import org.lamsfoundation.lams.usermanagement.Organisation; +import org.lamsfoundation.lams.usermanagement.User; + +public class SignupUser { + + private Integer signupUserId; + private User user; + private Organisation organisation; + private Date signupDate; + + public SignupUser() { + + } + + public Integer getSignupUserId() { + return signupUserId; + } + + public void setSignupUserId(Integer signupUserId) { + this.signupUserId = signupUserId; + } + + public User getUser() { + return user; + } + + public void setUser(User user) { + this.user = user; + } + + public Organisation getOrganisation() { + return organisation; + } + + public void setOrganisation(Organisation organisation) { + this.organisation = organisation; + } + + public Date getSignupDate() { + return signupDate; + } + + public void setSignupDate(Date signupDate) { + this.signupDate = signupDate; + } + +} Index: lams_signup/src/java/org/lamsfoundation/lams/tool/signup/service/SignupService.java =================================================================== diff -u --- lams_signup/src/java/org/lamsfoundation/lams/tool/signup/service/SignupService.java (revision 0) +++ lams_signup/src/java/org/lamsfoundation/lams/tool/signup/service/SignupService.java (revision 56f7147f7f0d441c3362d1187ed1551654ede1d4) @@ -0,0 +1,158 @@ +package org.lamsfoundation.lams.tool.signup.service; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.Date; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import org.apache.commons.lang.StringUtils; +import org.lamsfoundation.lams.lesson.Lesson; +import org.lamsfoundation.lams.lesson.service.ILessonService; +import org.lamsfoundation.lams.tool.signup.dao.SignupDAO; +import org.lamsfoundation.lams.tool.signup.model.SignupOrganisation; +import org.lamsfoundation.lams.tool.signup.model.SignupUser; +import org.lamsfoundation.lams.usermanagement.AuthenticationMethod; +import org.lamsfoundation.lams.usermanagement.Role; +import org.lamsfoundation.lams.usermanagement.SupportedLocale; +import org.lamsfoundation.lams.usermanagement.User; +import org.lamsfoundation.lams.usermanagement.service.IUserManagementService; +import org.lamsfoundation.lams.util.Configuration; +import org.lamsfoundation.lams.util.ConfigurationKeys; +import org.lamsfoundation.lams.util.LanguageUtil; + +public class SignupService { + + private SignupDAO signupDAO; + private IUserManagementService userManagementService; + private ILessonService lessonService; + + public SignupDAO getSignupDAO() { + return signupDAO; + } + + public void setSignupDAO(SignupDAO signupDAO) { + this.signupDAO = signupDAO; + } + + public IUserManagementService getUserManagementService() { + return userManagementService; + } + + public void setUserManagementService(IUserManagementService userManagementService) { + this.userManagementService = userManagementService; + } + + public ILessonService getLessonService() { + return lessonService; + } + + public void setLessonService(ILessonService lessonService) { + this.lessonService = lessonService; + } + + public AuthenticationMethod getAuthenticationMethod(Integer id) { + return (AuthenticationMethod) signupDAO.find(AuthenticationMethod.class, id); + } + + // replicating LanguageUtil method here because it's service bean injection + // method doesn't work from here + public SupportedLocale getDefaultLocale() { + String localeName = Configuration.get(ConfigurationKeys.SERVER_LANGUAGE); + String langIsoCode = LanguageUtil.DEFAULT_LANGUAGE; + String countryIsoCode = LanguageUtil.DEFAULT_COUNTRY; + if (StringUtils.isNotBlank(localeName) && localeName.length() > 2) { + langIsoCode = localeName.substring(0, 2); + countryIsoCode = localeName.substring(3); + } + + SupportedLocale locale = null; + locale = getSupportedLocaleOrNull(langIsoCode, countryIsoCode); + if (locale == null) { + locale = getSupportedLocaleOrNull(LanguageUtil.DEFAULT_LANGUAGE, LanguageUtil.DEFAULT_COUNTRY); + } + + return locale; + } + + // replicating LanguageUtil method here because it's service bean injection + // method doesn't work from here + private SupportedLocale getSupportedLocaleOrNull(String langIsoCode, String countryIsoCode) { + SupportedLocale locale = null; + + Map properties = new HashMap(); + + if (StringUtils.isNotBlank(countryIsoCode)) { + properties.put("countryIsoCode", countryIsoCode.trim()); + } + if (StringUtils.isNotBlank(langIsoCode)) { + properties.put("languageIsoCode", langIsoCode.trim()); + } + + if (properties.isEmpty()) { + return null; + } + + List list = signupDAO.findByProperties(SupportedLocale.class, properties); + if (list != null && list.size() > 0) { + Collections.sort(list); + locale = (SupportedLocale) list.get(0); + } else { + locale = null; + } + return locale; + } + + public void signupUser(User user, String context) { + // save User + user.setFlashTheme(userManagementService.getDefaultFlashTheme()); + user.setHtmlTheme(userManagementService.getDefaultHtmlTheme()); + user.setDisabledFlag(false); + user.setAuthenticationMethod(getAuthenticationMethod(AuthenticationMethod.DB)); + user.setLocale(getDefaultLocale()); + user.setCreateDate(new Date()); + signupDAO.insert(user); + + // add to org + SignupOrganisation signup = signupDAO.getSignupOrganisation(context); + + ArrayList rolesList = new ArrayList(); + rolesList.add(Role.ROLE_LEARNER.toString()); + if (signup.getAddAsStaff()) { + rolesList.add(Role.ROLE_MONITOR.toString()); + rolesList.add(Role.ROLE_AUTHOR.toString()); + } else if (signup.getAddWithAuthor()) { + rolesList.add(Role.ROLE_AUTHOR.toString()); + } else if (signup.getAddWithMonitor()) { + rolesList.add(Role.ROLE_MONITOR.toString()); + } + + userManagementService + .setRolesForUserOrganisation(user, signup.getOrganisation().getOrganisationId(), rolesList); + + if (signup.getAddToLessons()) { + // add to lessons + user = userManagementService.getUserByLogin(user.getLogin()); + + Set lessonSet = signup.getOrganisation().getLessons(); + Iterator lessonIterator = lessonSet.iterator(); + while (lessonIterator.hasNext()) { + Lesson lesson = (Lesson) lessonIterator.next(); + lessonService.addLearner(lesson.getLessonId(), user.getUserId()); + if (signup.getAddAsStaff()) { + lessonService.addStaffMember(lesson.getLessonId(), user.getUserId()); + } + } + } + + // add record of signup + SignupUser sUser = new SignupUser(); + sUser.setOrganisation(signup.getOrganisation()); + sUser.setUser(user); + sUser.setSignupDate(new Date()); + signupDAO.insert(sUser); + } +} Index: lams_signup/web/WEB-INF/jstl/tlds/c.tld =================================================================== diff -u --- lams_signup/web/WEB-INF/jstl/tlds/c.tld (revision 0) +++ lams_signup/web/WEB-INF/jstl/tlds/c.tld (revision 56f7147f7f0d441c3362d1187ed1551654ede1d4) @@ -0,0 +1,563 @@ + + + + + JSTL 1.1 core library + JSTL core + 1.1 + c + http://java.sun.com/jsp/jstl/core + + + + Provides core validation features for JSTL tags. + + + org.apache.taglibs.standard.tlv.JstlCoreTLV + + + + + + Catches any Throwable that occurs in its body and optionally + exposes it. + + catch + org.apache.taglibs.standard.tag.common.core.CatchTag + JSP + + +Name of the exported scoped variable for the +exception thrown from a nested action. The type of the +scoped variable is the type of the exception thrown. + + var + false + false + + + + + + Simple conditional tag that establishes a context for + mutually exclusive conditional operations, marked by + <when> and <otherwise> + + choose + org.apache.taglibs.standard.tag.common.core.ChooseTag + JSP + + + + + Simple conditional tag, which evalutes its body if the + supplied condition is true and optionally exposes a Boolean + scripting variable representing the evaluation of this condition + + if + org.apache.taglibs.standard.tag.rt.core.IfTag + JSP + + +The test condition that determines whether or +not the body content should be processed. + + test + true + true + boolean + + + +Name of the exported scoped variable for the +resulting value of the test condition. The type +of the scoped variable is Boolean. + + var + false + false + + + +Scope for var. + + scope + false + false + + + + + + Retrieves an absolute or relative URL and exposes its contents + to either the page, a String in 'var', or a Reader in 'varReader'. + + import + org.apache.taglibs.standard.tag.rt.core.ImportTag + org.apache.taglibs.standard.tei.ImportTEI + JSP + + +The URL of the resource to import. + + url + true + true + + + +Name of the exported scoped variable for the +resource's content. The type of the scoped +variable is String. + + var + false + false + + + +Scope for var. + + scope + false + false + + + +Name of the exported scoped variable for the +resource's content. The type of the scoped +variable is Reader. + + varReader + false + false + + + +Name of the context when accessing a relative +URL resource that belongs to a foreign +context. + + context + false + true + + + +Character encoding of the content at the input +resource. + + charEncoding + false + true + + + + + + The basic iteration tag, accepting many different + collection types and supporting subsetting and other + functionality + + forEach + org.apache.taglibs.standard.tag.rt.core.ForEachTag + org.apache.taglibs.standard.tei.ForEachTEI + JSP + + +Collection of items to iterate over. + + items + false + true + java.lang.Object + + + +If items specified: +Iteration begins at the item located at the +specified index. First item of the collection has +index 0. +If items not specified: +Iteration begins with index set at the value +specified. + + begin + false + true + int + + + +If items specified: +Iteration ends at the item located at the +specified index (inclusive). +If items not specified: +Iteration ends when index reaches the value +specified. + + end + false + true + int + + + +Iteration will only process every step items of +the collection, starting with the first one. + + step + false + true + int + + + +Name of the exported scoped variable for the +current item of the iteration. This scoped +variable has nested visibility. Its type depends +on the object of the underlying collection. + + var + false + false + + + +Name of the exported scoped variable for the +status of the iteration. Object exported is of type +javax.servlet.jsp.jstl.core.LoopTagStatus. This scoped variable has nested +visibility. + + varStatus + false + false + + + + + + Iterates over tokens, separated by the supplied delimeters + + forTokens + org.apache.taglibs.standard.tag.rt.core.ForTokensTag + JSP + + +String of tokens to iterate over. + + items + true + true + java.lang.String + + + +The set of delimiters (the characters that +separate the tokens in the string). + + delims + true + true + java.lang.String + + + +Iteration begins at the token located at the +specified index. First token has index 0. + + begin + false + true + int + + + +Iteration ends at the token located at the +specified index (inclusive). + + end + false + true + int + + + +Iteration will only process every step tokens +of the string, starting with the first one. + + step + false + true + int + + + +Name of the exported scoped variable for the +current item of the iteration. This scoped +variable has nested visibility. + + var + false + false + + + +Name of the exported scoped variable for the +status of the iteration. Object exported is of +type +javax.servlet.jsp.jstl.core.LoopTag +Status. This scoped variable has nested +visibility. + + varStatus + false + false + + + + + + Like <%= ... >, but for expressions. + + out + org.apache.taglibs.standard.tag.rt.core.OutTag + JSP + + +Expression to be evaluated. + + value + true + true + + + +Default value if the resulting value is null. + + default + false + true + + + +Determines whether characters <,>,&,'," in the +resulting string should be converted to their +corresponding character entity codes. Default value is +true. + + escapeXml + false + true + + + + + + + Subtag of <choose> that follows <when> tags + and runs only if all of the prior conditions evaluated to + 'false' + + otherwise + org.apache.taglibs.standard.tag.common.core.OtherwiseTag + JSP + + + + + Adds a parameter to a containing 'import' tag's URL. + + param + org.apache.taglibs.standard.tag.rt.core.ParamTag + JSP + + +Name of the query string parameter. + + name + true + true + + + +Value of the parameter. + + value + false + true + + + + + + Redirects to a new URL. + + redirect + org.apache.taglibs.standard.tag.rt.core.RedirectTag + JSP + + +The URL of the resource to redirect to. + + url + false + true + + + +Name of the context when redirecting to a relative URL +resource that belongs to a foreign context. + + context + false + true + + + + + + Removes a scoped variable (from a particular scope, if specified). + + remove + org.apache.taglibs.standard.tag.common.core.RemoveTag + empty + + +Name of the scoped variable to be removed. + + var + true + false + + + +Scope for var. + + scope + false + false + + + + + + Sets the result of an expression evaluation in a 'scope' + + set + org.apache.taglibs.standard.tag.rt.core.SetTag + JSP + + +Name of the exported scoped variable to hold the value +specified in the action. The type of the scoped variable is +whatever type the value expression evaluates to. + + var + false + false + + + +Expression to be evaluated. + + value + false + true + + + +Target object whose property will be set. Must evaluate to +a JavaBeans object with setter property property, or to a +java.util.Map object. + + target + false + true + + + +Name of the property to be set in the target object. + + property + false + true + + + +Scope for var. + + scope + false + false + + + + + + Creates a URL with optional query parameters. + + url + org.apache.taglibs.standard.tag.rt.core.UrlTag + JSP + + +Name of the exported scoped variable for the +processed url. The type of the scoped variable is +String. + + var + false + false + + + +Scope for var. + + scope + false + false + + + +URL to be processed. + + value + false + true + + + +Name of the context when specifying a relative URL +resource that belongs to a foreign context. + + context + false + true + + + + + + Subtag of <choose> that includes its body if its + condition evalutes to 'true' + + when + org.apache.taglibs.standard.tag.rt.core.WhenTag + JSP + + +The test condition that determines whether or not the +body content should be processed. + + test + true + true + boolean + + + + Index: lams_signup/web/WEB-INF/jstl/tlds/fmt.tld =================================================================== diff -u --- lams_signup/web/WEB-INF/jstl/tlds/fmt.tld (revision 0) +++ lams_signup/web/WEB-INF/jstl/tlds/fmt.tld (revision 56f7147f7f0d441c3362d1187ed1551654ede1d4) @@ -0,0 +1,671 @@ + + + + + JSTL 1.1 i18n-capable formatting library + JSTL fmt + 1.1 + fmt + http://java.sun.com/jsp/jstl/fmt + + + + Provides core validation features for JSTL tags. + + + org.apache.taglibs.standard.tlv.JstlFmtTLV + + + + + + Sets the request character encoding + + requestEncoding + org.apache.taglibs.standard.tag.rt.fmt.RequestEncodingTag + empty + + +Name of character encoding to be applied when +decoding request parameters. + + value + false + true + + + + + + Stores the given locale in the locale configuration variable + + setLocale + org.apache.taglibs.standard.tag.rt.fmt.SetLocaleTag + empty + + +A String value is interpreted as the +printable representation of a locale, which +must contain a two-letter (lower-case) +language code (as defined by ISO-639), +and may contain a two-letter (upper-case) +country code (as defined by ISO-3166). +Language and country codes must be +separated by hyphen (-) or underscore +(_). + + value + true + true + + + +Vendor- or browser-specific variant. +See the java.util.Locale javadocs for +more information on variants. + + variant + false + true + + + +Scope of the locale configuration variable. + + scope + false + false + + + + + + Specifies the time zone for any time formatting or parsing actions + nested in its body + + timeZone + org.apache.taglibs.standard.tag.rt.fmt.TimeZoneTag + JSP + + +The time zone. A String value is interpreted as +a time zone ID. This may be one of the time zone +IDs supported by the Java platform (such as +"America/Los_Angeles") or a custom time zone +ID (such as "GMT-8"). See +java.util.TimeZone for more information on +supported time zone formats. + + value + true + true + + + + + + Stores the given time zone in the time zone configuration variable + + setTimeZone + org.apache.taglibs.standard.tag.rt.fmt.SetTimeZoneTag + empty + + +The time zone. A String value is interpreted as +a time zone ID. This may be one of the time zone +IDs supported by the Java platform (such as +"America/Los_Angeles") or a custom time zone +ID (such as "GMT-8"). See java.util.TimeZone for +more information on supported time zone +formats. + + value + true + true + + + +Name of the exported scoped variable which +stores the time zone of type +java.util.TimeZone. + + var + false + false + + + +Scope of var or the time zone configuration +variable. + + scope + false + false + + + + + + Loads a resource bundle to be used by its tag body + + bundle + org.apache.taglibs.standard.tag.rt.fmt.BundleTag + JSP + + +Resource bundle base name. This is the bundle's +fully-qualified resource name, which has the same +form as a fully-qualified class name, that is, it uses +"." as the package component separator and does not +have any file type (such as ".class" or ".properties") +suffix. + + basename + true + true + + + +Prefix to be prepended to the value of the message +key of any nested <fmt:message> action. + + prefix + false + true + + + + + + Loads a resource bundle and stores it in the named scoped variable or + the bundle configuration variable + + setBundle + org.apache.taglibs.standard.tag.rt.fmt.SetBundleTag + empty + + +Resource bundle base name. This is the bundle's +fully-qualified resource name, which has the same +form as a fully-qualified class name, that is, it uses +"." as the package component separator and does not +have any file type (such as ".class" or ".properties") +suffix. + + basename + true + true + + + +Name of the exported scoped variable which stores +the i18n localization context of type +javax.servlet.jsp.jstl.fmt.LocalizationC +ontext. + + var + false + false + + + +Scope of var or the localization context +configuration variable. + + scope + false + false + + + + + + Maps key to localized message and performs parametric replacement + + message + org.apache.taglibs.standard.tag.rt.fmt.MessageTag + JSP + + +Message key to be looked up. + + key + false + true + + + +Localization context in whose resource +bundle the message key is looked up. + + bundle + false + true + + + +Name of the exported scoped variable +which stores the localized message. + + var + false + false + + + +Scope of var. + + scope + false + false + + + + + + Supplies an argument for parametric replacement to a containing + <message> tag + + param + org.apache.taglibs.standard.tag.rt.fmt.ParamTag + JSP + + +Argument used for parametric replacement. + + value + false + true + + + + + + Formats a numeric value as a number, currency, or percentage + + formatNumber + org.apache.taglibs.standard.tag.rt.fmt.FormatNumberTag + JSP + + +Numeric value to be formatted. + + value + false + true + + + +Specifies whether the value is to be +formatted as number, currency, or +percentage. + + type + false + true + + + +Custom formatting pattern. + + pattern + false + true + + + +ISO 4217 currency code. Applied only +when formatting currencies (i.e. if type is +equal to "currency"); ignored otherwise. + + currencyCode + false + true + + + +Currency symbol. Applied only when +formatting currencies (i.e. if type is equal +to "currency"); ignored otherwise. + + currencySymbol + false + true + + + +Specifies whether the formatted output +will contain any grouping separators. + + groupingUsed + false + true + + + +Maximum number of digits in the integer +portion of the formatted output. + + maxIntegerDigits + false + true + + + +Minimum number of digits in the integer +portion of the formatted output. + + minIntegerDigits + false + true + + + +Maximum number of digits in the +fractional portion of the formatted output. + + maxFractionDigits + false + true + + + +Minimum number of digits in the +fractional portion of the formatted output. + + minFractionDigits + false + true + + + +Name of the exported scoped variable +which stores the formatted result as a +String. + + var + false + false + + + +Scope of var. + + scope + false + false + + + + + + Parses the string representation of a number, currency, or percentage + + parseNumber + org.apache.taglibs.standard.tag.rt.fmt.ParseNumberTag + JSP + + +String to be parsed. + + value + false + true + + + +Specifies whether the string in the value +attribute should be parsed as a number, +currency, or percentage. + + type + false + true + + + +Custom formatting pattern that determines +how the string in the value attribute is to be +parsed. + + pattern + false + true + + + +Locale whose default formatting pattern (for +numbers, currencies, or percentages, +respectively) is to be used during the parse +operation, or to which the pattern specified +via the pattern attribute (if present) is +applied. + + parseLocale + false + true + + + +Specifies whether just the integer portion of +the given value should be parsed. + + integerOnly + false + true + + + +Name of the exported scoped variable which +stores the parsed result (of type +java.lang.Number). + + var + false + false + + + +Scope of var. + + scope + false + false + + + + + + Formats a date and/or time using the supplied styles and pattern + + formatDate + org.apache.taglibs.standard.tag.rt.fmt.FormatDateTag + empty + + +Date and/or time to be formatted. + + value + true + true + + + +Specifies whether the time, the date, or both +the time and date components of the given +date are to be formatted. + + type + false + true + + + +Predefined formatting style for dates. Follows +the semantics defined in class +java.text.DateFormat. Applied only +when formatting a date or both a date and +time (i.e. if type is missing or is equal to +"date" or "both"); ignored otherwise. + + dateStyle + false + true + + + +Predefined formatting style for times. Follows +the semantics defined in class +java.text.DateFormat. Applied only +when formatting a time or both a date and +time (i.e. if type is equal to "time" or "both"); +ignored otherwise. + + timeStyle + false + true + + + +Custom formatting style for dates and times. + + pattern + false + true + + + +Time zone in which to represent the formatted +time. + + timeZone + false + true + + + +Name of the exported scoped variable which +stores the formatted result as a String. + + var + false + false + + + +Scope of var. + + scope + false + false + + + + + + Parses the string representation of a date and/or time + + parseDate + org.apache.taglibs.standard.tag.rt.fmt.ParseDateTag + JSP + + +Date string to be parsed. + + value + false + true + + + +Specifies whether the date string in the +value attribute is supposed to contain a +time, a date, or both. + + type + false + true + + + +Predefined formatting style for days +which determines how the date +component of the date string is to be +parsed. Applied only when formatting a +date or both a date and time (i.e. if type +is missing or is equal to "date" or "both"); +ignored otherwise. + + dateStyle + false + true + + + +Predefined formatting styles for times +which determines how the time +component in the date string is to be +parsed. Applied only when formatting a +time or both a date and time (i.e. if type +is equal to "time" or "both"); ignored +otherwise. + + timeStyle + false + true + + + +Custom formatting pattern which +determines how the date string is to be +parsed. + + pattern + false + true + + + +Time zone in which to interpret any time +information in the date string. + + timeZone + false + true + + + +Locale whose predefined formatting styles +for dates and times are to be used during +the parse operation, or to which the +pattern specified via the pattern +attribute (if present) is applied. + + parseLocale + false + true + + + +Name of the exported scoped variable in +which the parsing result (of type +java.util.Date) is stored. + + var + false + false + + + +Scope of var. + + scope + false + false + + + + Index: lams_signup/web/WEB-INF/jstl/tlds/fn.tld =================================================================== diff -u --- lams_signup/web/WEB-INF/jstl/tlds/fn.tld (revision 0) +++ lams_signup/web/WEB-INF/jstl/tlds/fn.tld (revision 56f7147f7f0d441c3362d1187ed1551654ede1d4) @@ -0,0 +1,207 @@ + + + + + JSTL 1.1 functions library + JSTL functions + 1.1 + fn + http://java.sun.com/jsp/jstl/functions + + + + Tests if an input string contains the specified substring. + + contains + org.apache.taglibs.standard.functions.Functions + boolean contains(java.lang.String, java.lang.String) + + <c:if test="${fn:contains(name, searchString)}"> + + + + + + Tests if an input string contains the specified substring in a case insensitive way. + + containsIgnoreCase + org.apache.taglibs.standard.functions.Functions + boolean containsIgnoreCase(java.lang.String, java.lang.String) + + <c:if test="${fn:containsIgnoreCase(name, searchString)}"> + + + + + + Tests if an input string ends with the specified suffix. + + endsWith + org.apache.taglibs.standard.functions.Functions + boolean endsWith(java.lang.String, java.lang.String) + + <c:if test="${fn:endsWith(filename, ".txt")}"> + + + + + + Escapes characters that could be interpreted as XML markup. + + escapeXml + org.apache.taglibs.standard.functions.Functions + java.lang.String escapeXml(java.lang.String) + + ${fn:escapeXml(param:info)} + + + + + + Returns the index withing a string of the first occurrence of a specified substring. + + indexOf + org.apache.taglibs.standard.functions.Functions + int indexOf(java.lang.String, java.lang.String) + + ${fn:indexOf(name, "-")} + + + + + + Joins all elements of an array into a string. + + join + org.apache.taglibs.standard.functions.Functions + java.lang.String join(java.lang.String[], java.lang.String) + + ${fn:join(array, ";")} + + + + + + Returns the number of items in a collection, or the number of characters in a string. + + length + org.apache.taglibs.standard.functions.Functions + int length(java.lang.Object) + + You have ${fn:length(shoppingCart.products)} in your shopping cart. + + + + + + Returns a string resulting from replacing in an input string all occurrences + of a "before" string into an "after" substring. + + replace + org.apache.taglibs.standard.functions.Functions + java.lang.String replace(java.lang.String, java.lang.String, java.lang.String) + + ${fn:replace(text, "-", "•")} + + + + + + Splits a string into an array of substrings. + + split + org.apache.taglibs.standard.functions.Functions + java.lang.String[] split(java.lang.String, java.lang.String) + + ${fn:split(customerNames, ";")} + + + + + + Tests if an input string starts with the specified prefix. + + startsWith + org.apache.taglibs.standard.functions.Functions + boolean startsWith(java.lang.String, java.lang.String) + + <c:if test="${fn:startsWith(product.id, "100-")}"> + + + + + + Returns a subset of a string. + + substring + org.apache.taglibs.standard.functions.Functions + java.lang.String substring(java.lang.String, int, int) + + P.O. Box: ${fn:substring(zip, 6, -1)} + + + + + + Returns a subset of a string following a specific substring. + + substringAfter + org.apache.taglibs.standard.functions.Functions + java.lang.String substringAfter(java.lang.String, java.lang.String) + + P.O. Box: ${fn:substringAfter(zip, "-")} + + + + + + Returns a subset of a string before a specific substring. + + substringBefore + org.apache.taglibs.standard.functions.Functions + java.lang.String substringBefore(java.lang.String, java.lang.String) + + Zip (without P.O. Box): ${fn:substringBefore(zip, "-")} + + + + + + Converts all of the characters of a string to lower case. + + toLowerCase + org.apache.taglibs.standard.functions.Functions + java.lang.String toLowerCase(java.lang.String) + + Product name: ${fn.toLowerCase(product.name)} + + + + + + Converts all of the characters of a string to upper case. + + toUpperCase + org.apache.taglibs.standard.functions.Functions + java.lang.String toUpperCase(java.lang.String) + + Product name: ${fn.UpperCase(product.name)} + + + + + + Removes white spaces from both ends of a string. + + trim + org.apache.taglibs.standard.functions.Functions + java.lang.String trim(java.lang.String) + + Name: ${fn.trim(name)} + + + + Index: lams_signup/web/WEB-INF/jstl/tlds/x.tld =================================================================== diff -u --- lams_signup/web/WEB-INF/jstl/tlds/x.tld (revision 0) +++ lams_signup/web/WEB-INF/jstl/tlds/x.tld (revision 56f7147f7f0d441c3362d1187ed1551654ede1d4) @@ -0,0 +1,448 @@ + + + + + JSTL 1.1 XML library + JSTL XML + 1.1 + x + http://java.sun.com/jsp/jstl/xml + + + + Provides validation features for JSTL XML tags. + + + org.apache.taglibs.standard.tlv.JstlXmlTLV + + + + + + Simple conditional tag that establishes a context for + mutually exclusive conditional operations, marked by + <when> and <otherwise> + + choose + org.apache.taglibs.standard.tag.common.core.ChooseTag + JSP + + + + + Like <%= ... >, but for XPath expressions. + + out + org.apache.taglibs.standard.tag.rt.xml.ExprTag + empty + + +XPath expression to be evaluated. + + select + true + false + + + +Determines whether characters <,>,&,'," in the +resulting string should be converted to their +corresponding character entity codes. Default +value is true. + + escapeXml + false + true + + + + + + XML conditional tag, which evalutes its body if the + supplied XPath expression evalutes to 'true' as a boolean + + if + org.apache.taglibs.standard.tag.common.xml.IfTag + JSP + + +The test condition that tells whether or not the +body content should be processed. + + select + true + false + + + +Name of the exported scoped variable for the +resulting value of the test condition. The type +of the scoped variable is Boolean. + + var + false + false + + + +Scope for var. + + scope + false + false + + + + + + XML iteration tag. + + forEach + org.apache.taglibs.standard.tag.common.xml.ForEachTag + JSP + + +Name of the exported scoped variable for the +current item of the iteration. This scoped variable +has nested visibility. Its type depends on the +result of the XPath expression in the select +attribute. + + var + false + false + + + +XPath expression to be evaluated. + + select + true + false + + + +Iteration begins at the item located at the +specified index. First item of the collection has +index 0. + + begin + false + true + int + + + +Iteration ends at the item located at the specified +index (inclusive). + + end + false + true + int + + + +Iteration will only process every step items of +the collection, starting with the first one. + + step + false + true + int + + + +Name of the exported scoped variable for the +status of the iteration. Object exported is of type +javax.servlet.jsp.jstl.core.LoopTagStatus. This scoped variable has nested visibility. + + varStatus + false + false + + + + + + Subtag of <choose> that follows <when> tags + and runs only if all of the prior conditions evaluated to + 'false' + + otherwise + org.apache.taglibs.standard.tag.common.core.OtherwiseTag + JSP + + + + + Adds a parameter to a containing 'transform' tag's Transformer + + param + org.apache.taglibs.standard.tag.rt.xml.ParamTag + JSP + + +Name of the transformation parameter. + + name + true + true + + + +Value of the parameter. + + value + false + true + + + + + + Parses XML content from 'source' attribute or 'body' + + parse + org.apache.taglibs.standard.tag.rt.xml.ParseTag + org.apache.taglibs.standard.tei.XmlParseTEI + JSP + + +Name of the exported scoped variable for +the parsed XML document. The type of the +scoped variable is implementation +dependent. + + var + false + false + + + +Name of the exported scoped variable for +the parsed XML document. The type of the +scoped variable is +org.w3c.dom.Document. + + varDom + false + false + + + +Scope for var. + + scope + false + false + + + +Scope for varDom. + + scopeDom + false + false + + + +Deprecated. Use attribute 'doc' instead. + + xml + false + true + + + +Source XML document to be parsed. + + doc + false + true + + + +The system identifier (URI) for parsing the +XML document. + + systemId + false + true + + + +Filter to be applied to the source +document. + + filter + false + true + + + + + + Saves the result of an XPath expression evaluation in a 'scope' + + set + org.apache.taglibs.standard.tag.common.xml.SetTag + empty + + +Name of the exported scoped variable to hold +the value specified in the action. The type of the +scoped variable is whatever type the select +expression evaluates to. + + var + true + false + + + +XPath expression to be evaluated. + + select + false + false + + + +Scope for var. + + scope + false + false + + + + + + Conducts a transformation given a source XML document + and an XSLT stylesheet + + transform + org.apache.taglibs.standard.tag.rt.xml.TransformTag + org.apache.taglibs.standard.tei.XmlTransformTEI + JSP + + +Name of the exported +scoped variable for the +transformed XML +document. The type of the +scoped variable is +org.w3c.dom.Document. + + var + false + false + + + +Scope for var. + + scope + false + false + + + +Result +Object that captures or +processes the transformation +result. + + result + false + true + + + +Deprecated. Use attribute +'doc' instead. + + xml + false + true + + + +Source XML document to be +transformed. (If exported by +<x:set>, it must correspond +to a well-formed XML +document, not a partial +document.) + + doc + false + true + + + +Deprecated. Use attribute +'docSystemId' instead. + + xmlSystemId + false + true + + + +The system identifier (URI) +for parsing the XML +document. + + docSystemId + false + true + + + +javax.xml.transform.Source +Transformation stylesheet as +a String, Reader, or +Source object. + + xslt + false + true + + + +The system identifier (URI) +for parsing the XSLT +stylesheet. + + xsltSystemId + false + true + + + + + + Subtag of <choose> that includes its body if its + expression evalutes to 'true' + + when + org.apache.taglibs.standard.tag.common.xml.WhenTag + JSP + + +The test condition that tells whether or +not the body content should be +processed + + select + true + false + + + + Index: lams_signup/web/WEB-INF/lams.tld =================================================================== diff -u --- lams_signup/web/WEB-INF/lams.tld (revision 0) +++ lams_signup/web/WEB-INF/lams.tld (revision 56f7147f7f0d441c3362d1187ed1551654ede1d4) @@ -0,0 +1,421 @@ + + + + + 1.0 + lams + + LAMSTags + + + + + Output the Server URL as defined in the lams.xml configuration file. + LAMS URL + + + LAMSURL + org.lamsfoundation.lams.web.tag.LAMSURLTag + empty + + + + + Converts text from \n or \r\n to <BR> before rendering + Converts text from \n or \r\n to <BR> before rendering + + + out + org.lamsfoundation.lams.web.tag.MultiLinesOutputTag + empty + + + Converts text from \n or \r\n to <BR> before rendering + value + true + + true + + + + Converts text from \n or \r\n to <BR> before rendering + escapeHtml + false + + true + + + + + + + Render html tag with direction and language + Render html tag with direction and language + + + html + org.lamsfoundation.lams.web.tag.HtmlTag + JSP + + + Render html tag with direction and language + xhtml + false + + true + + + + + + + Get the configuration value for the specified key + Configuration value + + + Configuration + org.lamsfoundation.lams.web.tag.ConfigurationTag + empty + + + Get the configuration value for the specified key + key + false + + true + + + + + + + Output a random number for the learner and passon flash movies to communicate directly. + generate unique ID + + + generateID + org.lamsfoundation.lams.web.tag.GenerateIDTag + empty + + + Output a random number for the learner and passon flash movies to communicate directly. + id + false + + true + + + + + + + Output the basic URL for the current webapp. e.g. http://server/lams/tool/nb11/ + Base URL for the current web app + + + WebAppURL + org.lamsfoundation.lams.web.tag.WebAppURLTag + empty + + + + + Converts role name into form usable as message resources key + Converts role name into form usable as message resources key + + + role + org.lamsfoundation.lams.web.tag.RoleTag + empty + + + Converts role name into form usable as message resources key + role + true + + true + + + + + + + Help tag + Help tag + + + help + org.lamsfoundation.lams.web.tag.HelpTag + empty + + + Help tag + module + false + + true + + + + Help tag + toolSignature + false + + true + + + + Help tag + page + false + + true + + + + Help tag + style + false + + true + + + + + + + Output details from the shared session UserDTO object + user details + + + user + org.lamsfoundation.lams.web.tag.UserTag + empty + + + Output details from the shared session UserDTO object + property + true + + true + + + + + + + Output stylesheet based on the user preferences. + User's chosen stylesheet + + + css + org.lamsfoundation.lams.web.tag.CssTag + empty + + + Output stylesheet based on the user preferences. + localLinkPath + false + + true + + + + Output stylesheet based on the user preferences. + style + false + + true + + + + + + + STRUTS-textarea + org.lamsfoundation.lams.web.tag.MultiLinesTextareaTag + empty + + accesskey + false + true + + + alt + false + true + + + altKey + false + true + + + bundle + false + true + + + cols + false + true + + + disabled + false + true + + + errorKey + false + true + + + errorStyle + false + true + + + errorStyleClass + false + true + + + errorStyleId + false + true + + + indexed + false + true + + + name + false + true + + + onblur + false + true + + + onchange + false + true + + + onclick + false + true + + + ondblclick + false + true + + + onfocus + false + true + + + onkeydown + false + true + + + onkeypress + false + true + + + onkeyup + false + true + + + onmousedown + false + true + + + onmousemove + false + true + + + onmouseout + false + true + + + onmouseover + false + true + + + onmouseup + false + true + + + property + true + true + + + readonly + false + true + + + rows + false + true + + + style + false + true + + + styleClass + false + true + + + styleId + false + true + + + tabindex + false + true + + + title + false + true + + + titleKey + false + true + + + value + false + true + + + + head + /WEB-INF/tags/Head.tag + + Index: lams_signup/web/WEB-INF/lib/urlrewrite-2.6.0.jar =================================================================== diff -u Binary files differ Index: lams_signup/web/WEB-INF/struts/struts-config.xml =================================================================== diff -u --- lams_signup/web/WEB-INF/struts/struts-config.xml (revision 0) +++ lams_signup/web/WEB-INF/struts/struts-config.xml (revision 56f7147f7f0d441c3362d1187ed1551654ede1d4) @@ -0,0 +1,125 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: lams_signup/web/WEB-INF/struts/tiles-defs.xml =================================================================== diff -u --- lams_signup/web/WEB-INF/struts/tiles-defs.xml (revision 0) +++ lams_signup/web/WEB-INF/struts/tiles-defs.xml (revision 56f7147f7f0d441c3362d1187ed1551654ede1d4) @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file Index: lams_signup/web/WEB-INF/struts/tlds/struts-bean.tld =================================================================== diff -u --- lams_signup/web/WEB-INF/struts/tlds/struts-bean.tld (revision 0) +++ lams_signup/web/WEB-INF/struts/tlds/struts-bean.tld (revision 56f7147f7f0d441c3362d1187ed1551654ede1d4) @@ -0,0 +1,382 @@ + + + + + + + + + + +1.2 +1.1 +bean +http://struts.apache.org/tags-bean + +cookie +org.apache.struts.taglib.bean.CookieTag +org.apache.struts.taglib.bean.CookieTei +empty + +id +true +false + + +multiple +false +true + + +name +true +true + + +value +false +true + + + +define +org.apache.struts.taglib.bean.DefineTag +org.apache.struts.taglib.bean.DefineTei +JSP + +id +true +false + + +name +false +true + + +property +false +true + + +scope +false +true + + +toScope +false +true + + +type +false +true + + +value +false +true + + + +header +org.apache.struts.taglib.bean.HeaderTag +org.apache.struts.taglib.bean.HeaderTei +empty + +id +true +false + + +multiple +false +true + + +name +true +true + + +value +false +true + + + +include +org.apache.struts.taglib.bean.IncludeTag +org.apache.struts.taglib.bean.IncludeTei +empty + +anchor +false +true + + +forward +false +true + + +href +false +true + + +id +true +false + + +name +false +true + + +page +false +true + + +transaction +false +true + + + +message +org.apache.struts.taglib.bean.MessageTag +empty + +arg0 +false +true + + +arg1 +false +true + + +arg2 +false +true + + +arg3 +false +true + + +arg4 +false +true + + +bundle +false +true + + +key +false +true + + +locale +false +true + + +name +false +true + + +property +false +true + + +scope +false +true + + + +page +org.apache.struts.taglib.bean.PageTag +org.apache.struts.taglib.bean.PageTei +empty + +id +true +false + + +property +true +true + + + +parameter +org.apache.struts.taglib.bean.ParameterTag +org.apache.struts.taglib.bean.ParameterTei +empty + +id +true +false + + +multiple +false +true + + +name +true +true + + +value +false +true + + + +resource +org.apache.struts.taglib.bean.ResourceTag +org.apache.struts.taglib.bean.ResourceTei +empty + +id +true +false + + +input +false +true + + +name +true +true + + + +size +org.apache.struts.taglib.bean.SizeTag +org.apache.struts.taglib.bean.SizeTei +empty + +collection +false +true + + +id +true +false + + +name +false +true + + +property +false +true + + +scope +false +true + + + +struts +org.apache.struts.taglib.bean.StrutsTag +org.apache.struts.taglib.bean.StrutsTei +empty + +id +true +false + + +formBean +false +true + + +forward +false +true + + +mapping +false +true + + + +write +org.apache.struts.taglib.bean.WriteTag +empty + +bundle +false +true + + +filter +false +true + + +format +false +true + + +formatKey +false +true + + +ignore +false +true + + +locale +false +true + + +name +true +true + + +property +false +true + + +scope +false +true + + + + + + Index: lams_signup/web/WEB-INF/struts/tlds/struts-html.tld =================================================================== diff -u --- lams_signup/web/WEB-INF/struts/tlds/struts-html.tld (revision 0) +++ lams_signup/web/WEB-INF/struts/tlds/struts-html.tld (revision 56f7147f7f0d441c3362d1187ed1551654ede1d4) @@ -0,0 +1,3302 @@ + + + + + + + + + + +1.2 +1.1 +html +http://struts.apache.org/tags-html + +base +org.apache.struts.taglib.html.BaseTag +empty + +target +false +true + + +server +false +true + + + +button +org.apache.struts.taglib.html.ButtonTag + +accesskey +false +true + + +alt +false +true + + +altKey +false +true + + +bundle +false +true + + +disabled +false +true + + +indexed +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +property +true +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + +cancel +org.apache.struts.taglib.html.CancelTag + +accesskey +false +true + + +alt +false +true + + +altKey +false +true + + +bundle +false +true + + +disabled +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +property +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + +checkbox +org.apache.struts.taglib.html.CheckboxTag + +accesskey +false +true + + +alt +false +true + + +altKey +false +true + + +bundle +false +true + + +disabled +false +true + + +errorKey +false +true + + +errorStyle +false +true + + +errorStyleClass +false +true + + +errorStyleId +false +true + + +indexed +false +true + + +name +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +property +true +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + +errors +org.apache.struts.taglib.html.ErrorsTag +empty + +bundle +false +true + + +footer +false +true + + +header +false +true + + +locale +false +true + + +name +false +true + + +prefix +false +true + + +property +false +true + + +suffix +false +true + + + +file +org.apache.struts.taglib.html.FileTag + +accesskey +false +true + + +accept +false +true + + +alt +false +true + + +altKey +false +true + + +bundle +false +true + + +disabled +false +true + + +errorKey +false +true + + +errorStyle +false +true + + +errorStyleClass +false +true + + +errorStyleId +false +true + + +indexed +false +true + + +maxlength +false +true + + +name +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +property +true +true + + +size +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + +form +org.apache.struts.taglib.html.FormTag +JSP + +action +true +true + + +acceptCharset +false +true + + +disabled +false +true + + +enctype +false +true + + +focus +false +true + + +focusIndex +false +true + + +method +false +true + + +onreset +false +true + + +onsubmit +false +true + + +readonly +false +true + + +scriptLanguage +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +target +false +true + + + +frame +org.apache.struts.taglib.html.FrameTag + +bundle +false +true + + +action +false +true + + +module +false +true + + +anchor +false +true + + +forward +false +true + + +frameborder +false +true + + +frameName +false +true + + +href +false +true + + +longdesc +false +true + + +marginheight +false +true + + +marginwidth +false +true + + +name +false +true + + +noresize +false +true + + +page +false +true + + +paramId +false +true + + +paramName +false +true + + +paramProperty +false +true + + +paramScope +false +true + + +property +false +true + + +scope +false +true + + +scrolling +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +title +false +true + + +titleKey +false +true + + +transaction +false +true + + + +hidden +org.apache.struts.taglib.html.HiddenTag +empty + +accesskey +false +true + + +alt +false +true + + +altKey +false +true + + +bundle +false +true + + +disabled +false +true + + +indexed +false +true + + +name +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +property +true +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + +write +false +true + + + +html +org.apache.struts.taglib.html.HtmlTag +JSP + +lang +false +true + + +locale +false +true + + +xhtml +false +true + + + +image +org.apache.struts.taglib.html.ImageTag + +accesskey +false +true + + +align +false +true + + +alt +false +true + + +altKey +false +true + + +border +false +true + + +bundle +false +true + + +disabled +false +true + + +indexed +false +true + + +locale +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +page +false +true + + +pageKey +false +true + + +property +false +true + + +src +false +true + + +srcKey +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + +img +org.apache.struts.taglib.html.ImgTag +empty + +align +false +true + + +alt +false +true + + +altKey +false +true + + +border +false +true + + +bundle +false +true + + +contextRelative +false +true + + +height +false +true + + +hspace +false +true + + +imageName +false +true + + +ismap +false +true + + +locale +false +true + + +lowsrc +false +true + + +name +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +paramId +false +true + + +page +false +true + + +pageKey +false +true + + +action +false +true + + +module +false +true + + +paramName +false +true + + +paramProperty +false +true + + +paramScope +false +true + + +property +false +true + + +scope +false +true + + +src +false +true + + +srcKey +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +title +false +true + + +titleKey +false +true + + +useLocalEncoding +false +true + + +usemap +false +true + + +vspace +false +true + + +width +false +true + + + +javascript +org.apache.struts.taglib.html.JavascriptValidatorTag +empty + +cdata +false +true + + +dynamicJavascript +false +false + + +formName +false +true + + +method +false +true + + +page +false +true + + +scriptLanguage +false +true + + +src +false +true + + +staticJavascript +false +false + + +htmlComment +false +true + + +bundle +false +true + + + +link +org.apache.struts.taglib.html.LinkTag + +accesskey +false +true + + +action +false +true + + +module +false +true + + +anchor +false +true + + +forward +false +true + + +href +false +true + + +indexed +false +true + + +indexId +false +true + + +bundle +false +true + + +linkName +false +true + + +name +false +true + + +onblur +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +page +false +true + + +paramId +false +true + + +paramName +false +true + + +paramProperty +false +true + + +paramScope +false +true + + +property +false +true + + +scope +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +target +false +true + + +title +false +true + + +titleKey +false +true + + +transaction +false +true + + +useLocalEncoding +false +true + + + +messages +org.apache.struts.taglib.html.MessagesTag +org.apache.struts.taglib.html.MessagesTei +JSP + +id +true +false + + +bundle +false +true + + +locale +false +true + + +name +false +true + + +property +false +true + + +header +false +true + + +footer +false +true + + +message +false +true + + + +multibox +org.apache.struts.taglib.html.MultiboxTag + +accesskey +false +true + + +alt +false +true + + +altKey +false +true + + +bundle +false +true + + +disabled +false +true + + +errorKey +false +true + + +errorStyle +false +true + + +errorStyleClass +false +true + + +errorStyleId +false +true + + +name +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +property +true +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + +option +org.apache.struts.taglib.html.OptionTag + +bundle +false +true + + +disabled +false +true + + +key +false +true + + +locale +false +true + + +style +false +true + + +styleId +false +true + + +styleClass +false +true + + +value +true +true + + + +options +org.apache.struts.taglib.html.OptionsTag +empty + +collection +false +true + + +filter +false +true + + +labelName +false +true + + +labelProperty +false +true + + +name +false +true + + +property +false +true + + +style +false +true + + +styleClass +false +true + + + +optionsCollection +org.apache.struts.taglib.html.OptionsCollectionTag +empty + +filter +false +true + + +label +false +true + + +name +false +true + + +property +false +true + + +style +false +true + + +styleClass +false +true + + +value +false +true + + + +password +org.apache.struts.taglib.html.PasswordTag + +accesskey +false +true + + +alt +false +true + + +altKey +false +true + + +bundle +false +true + + +disabled +false +true + + +errorKey +false +true + + +errorStyle +false +true + + +errorStyleClass +false +true + + +errorStyleId +false +true + + +indexed +false +true + + +maxlength +false +true + + +name +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +property +true +true + + +readonly +false +true + + +redisplay +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +size +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + +radio +org.apache.struts.taglib.html.RadioTag + +accesskey +false +true + + +alt +false +true + + +altKey +false +true + + +bundle +false +true + + +disabled +false +true + + +errorKey +false +true + + +errorStyle +false +true + + +errorStyleClass +false +true + + +errorStyleId +false +true + + +indexed +false +true + + +name +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +property +true +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +true +true + + +idName +false +true + + + +reset +org.apache.struts.taglib.html.ResetTag + +accesskey +false +true + + +alt +false +true + + +altKey +false +true + + +bundle +false +true + + +disabled +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +property +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + +rewrite +org.apache.struts.taglib.html.RewriteTag +empty + +action +false +true + + +module +false +true + + +anchor +false +true + + +forward +false +true + + +href +false +true + + +name +false +true + + +page +false +true + + +paramId +false +true + + +paramName +false +true + + +paramProperty +false +true + + +paramScope +false +true + + +property +false +true + + +scope +false +true + + +transaction +false +true + + +useLocalEncoding +false +true + + + +select +org.apache.struts.taglib.html.SelectTag +JSP + +alt +false +true + + +altKey +false +true + + +bundle +false +true + + +disabled +false +true + + +errorKey +false +true + + +errorStyle +false +true + + +errorStyleClass +false +true + + +errorStyleId +false +true + + +indexed +false +true + + +multiple +false +true + + +name +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +property +true +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +size +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + +submit +org.apache.struts.taglib.html.SubmitTag + +accesskey +false +true + + +alt +false +true + + +altKey +false +true + + +bundle +false +true + + +disabled +false +true + + +indexed +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +property +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + +text +org.apache.struts.taglib.html.TextTag + +accesskey +false +true + + +alt +false +true + + +altKey +false +true + + +bundle +false +true + + +disabled +false +true + + +errorKey +false +true + + +errorStyle +false +true + + +errorStyleClass +false +true + + +errorStyleId +false +true + + +indexed +false +true + + +maxlength +false +true + + +name +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +property +true +true + + +readonly +false +true + + +size +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + +textarea +org.apache.struts.taglib.html.TextareaTag + +accesskey +false +true + + +alt +false +true + + +altKey +false +true + + +bundle +false +true + + +cols +false +true + + +disabled +false +true + + +errorKey +false +true + + +errorStyle +false +true + + +errorStyleClass +false +true + + +errorStyleId +false +true + + +indexed +false +true + + +name +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +property +true +true + + +readonly +false +true + + +rows +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + +xhtml +org.apache.struts.taglib.html.XhtmlTag +empty + + + Index: lams_signup/web/WEB-INF/struts/tlds/struts-logic.tld =================================================================== diff -u --- lams_signup/web/WEB-INF/struts/tlds/struts-logic.tld (revision 0) +++ lams_signup/web/WEB-INF/struts/tlds/struts-logic.tld (revision 56f7147f7f0d441c3362d1187ed1551654ede1d4) @@ -0,0 +1,652 @@ + + + + + + + + + +1.2 +1.1 +logic +http://struts.apache.org/tags-logic + +empty +org.apache.struts.taglib.logic.EmptyTag +JSP + +name +false +true + + +property +false +true + + +scope +false +true + + + +equal +org.apache.struts.taglib.logic.EqualTag +JSP + +cookie +false +true + + +header +false +true + + +name +false +true + + +parameter +false +true + + +property +false +true + + +scope +false +true + + +value +true +true + + + +forward +org.apache.struts.taglib.logic.ForwardTag +empty + +name +true +true + + + +greaterEqual +org.apache.struts.taglib.logic.GreaterEqualTag +JSP + +cookie +false +true + + +header +false +true + + +name +false +true + + +parameter +false +true + + +property +false +true + + +scope +false +true + + +value +true +true + + + +greaterThan +org.apache.struts.taglib.logic.GreaterThanTag +JSP + +cookie +false +true + + +header +false +true + + +name +false +true + + +parameter +false +true + + +property +false +true + + +scope +false +true + + +value +true +true + + + +iterate +org.apache.struts.taglib.logic.IterateTag +org.apache.struts.taglib.logic.IterateTei +JSP + +collection +false +true + + +id +true +false + + +indexId +false +false + + +length +false +true + + +name +false +true + + +offset +false +true + + +property +false +true + + +scope +false +true + + +type +false +true + + + +lessEqual +org.apache.struts.taglib.logic.LessEqualTag +JSP + +cookie +false +true + + +header +false +true + + +name +false +true + + +parameter +false +true + + +property +false +true + + +scope +false +true + + +value +true +true + + + +lessThan +org.apache.struts.taglib.logic.LessThanTag +JSP + +cookie +false +true + + +header +false +true + + +name +false +true + + +parameter +false +true + + +property +false +true + + +scope +false +true + + +value +true +true + + + +match +org.apache.struts.taglib.logic.MatchTag +JSP + +cookie +false +true + + +header +false +true + + +location +false +true + + +name +false +true + + +parameter +false +true + + +property +false +true + + +scope +false +true + + +value +true +true + + + +messagesNotPresent +org.apache.struts.taglib.logic.MessagesNotPresentTag +JSP + +name +false +true + + +property +false +true + + +message +false +true + + + +messagesPresent +org.apache.struts.taglib.logic.MessagesPresentTag +JSP + +name +false +true + + +property +false +true + + +message +false +true + + + +notEmpty +org.apache.struts.taglib.logic.NotEmptyTag +JSP + +name +false +true + + +property +false +true + + +scope +false +true + + + +notEqual +org.apache.struts.taglib.logic.NotEqualTag +JSP + +cookie +false +true + + +header +false +true + + +name +false +true + + +parameter +false +true + + +property +false +true + + +scope +false +true + + +value +true +true + + + +notMatch +org.apache.struts.taglib.logic.NotMatchTag +JSP + +cookie +false +true + + +header +false +true + + +location +false +true + + +name +false +true + + +parameter +false +true + + +property +false +true + + +scope +false +true + + +value +true +true + + + +notPresent +org.apache.struts.taglib.logic.NotPresentTag +JSP + +cookie +false +true + + +header +false +true + + +name +false +true + + +parameter +false +true + + +property +false +true + + +role +false +true + + +scope +false +true + + +user +false +true + + + +present +org.apache.struts.taglib.logic.PresentTag +JSP + +cookie +false +true + + +header +false +true + + +name +false +true + + +parameter +false +true + + +property +false +true + + +role +false +true + + +scope +false +true + + +user +false +true + + + +redirect +org.apache.struts.taglib.logic.RedirectTag + +action +false +true + + +anchor +false +true + + +forward +false +true + + +href +false +true + + +name +false +true + + +page +false +true + + +paramId +false +true + + +paramName +false +true + + +paramProperty +false +true + + +paramScope +false +true + + +property +false +true + + +scope +false +true + + +transaction +false +true + + +useLocalEncoding +false +true + + + + + + Index: lams_signup/web/WEB-INF/struts/tlds/struts-tiles.tld =================================================================== diff -u --- lams_signup/web/WEB-INF/struts/tlds/struts-tiles.tld (revision 0) +++ lams_signup/web/WEB-INF/struts/tlds/struts-tiles.tld (revision 56f7147f7f0d441c3362d1187ed1551654ede1d4) @@ -0,0 +1,344 @@ + + + + + + + + + + +1.2 +1.1 +tiles +http://struts.apache.org/tags-tiles + +insert +org.apache.struts.taglib.tiles.InsertTag +JSP + +template +false +true + + +component +false +true + + +page +false +true + + +definition +false +true + + +attribute +false +false + + +name +false +true + + +beanName +false +true + + +beanProperty +false +true + + +beanScope +false +false + + +flush +false +false + + +ignore +false +true + + +role +false +true + + +controllerUrl +false +true + + +controllerClass +false +true + + + +definition +org.apache.struts.taglib.tiles.DefinitionTag +JSP + +id +true +false + + +scope +false +false + + +template +false +true + + +page +false +true + + +role +false +true + + +extends +false +true + + + +put +org.apache.struts.taglib.tiles.PutTag +JSP + +name +false +false + + +value +false +true + + +content +false +true + + +direct +false +false + + +type +false +false + + +beanName +false +true + + +beanProperty +false +true + + +beanScope +false +false + + +role +false +true + + + +putList +org.apache.struts.taglib.tiles.PutListTag +JSP + +name +true +false + + + +add +org.apache.struts.taglib.tiles.AddTag +JSP + +value +false +false + + +content +false +true + + +direct +false +false + + +type +false +false + + +beanName +false +true + + +beanProperty +false +true + + +beanScope +false +false + + +role +false +true + + + +get +org.apache.struts.taglib.tiles.GetTag +empty + +name +true +true + + +ignore +false +true + + +flush +false +false + + +role +false +true + + + +getAsString +org.apache.struts.taglib.tiles.GetAttributeTag +empty + +name +true +true + + +ignore +false +true + + +role +false +true + + + +useAttribute +org.apache.struts.taglib.tiles.UseAttributeTag +org.apache.struts.taglib.tiles.UseAttributeTei +empty + +id +false +false + + +classname +false +false + + +scope +false +false + + +name +true +true + + +ignore +false +true + + + +importAttribute +org.apache.struts.taglib.tiles.ImportAttributeTag +empty + +name +false +true + + +scope +false +false + + +ignore +false +true + + + +initComponentDefinitions +org.apache.struts.taglib.tiles.InitDefinitionsTag +empty + +file +true +false + + +classname +false +false + + + + + + Index: lams_signup/web/WEB-INF/tags/Head.tag =================================================================== diff -u --- lams_signup/web/WEB-INF/tags/Head.tag (revision 0) +++ lams_signup/web/WEB-INF/tags/Head.tag (revision 56f7147f7f0d441c3362d1187ed1551654ede1d4) @@ -0,0 +1,41 @@ +<%/**************************************************************** + * 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 + * **************************************************************** + */ + +/** + * Head.tag + * Author: Fiona Malikoff + * Description: Sets up the non-cache pragma statements and the UTF-8 + * encoding. Use in place of the normal head tag. + */ +%> + +<%@ tag body-content="scriptless"%> + + + + + + + + + Index: lams_signup/web/WEB-INF/urlrewrite.xml =================================================================== diff -u --- lams_signup/web/WEB-INF/urlrewrite.xml (revision 0) +++ lams_signup/web/WEB-INF/urlrewrite.xml (revision 56f7147f7f0d441c3362d1187ed1551654ede1d4) @@ -0,0 +1,94 @@ + + + + + + + + + The rule means that requests to /test/status/ will be redirected to /rewrite-status + the url will be rewritten. + + /test/status/ + %{context-path}/rewrite-status + + + + + + The outbound-rule specifies that when response.encodeURL is called (if you are using JSTL c:url) + the url /rewrite-status will be rewritten to /test/status/. + + The above rule and this outbound-rule means that end users should never see the + url /rewrite-status only /test/status/ both in thier location bar and in hyperlinks + in your pages. + + /rewrite-status + /test/status/ + + + + + + + ^/([a-zA-Z0-9]+)$ + /register.do?context=$1 + + + + Index: lams_signup/web/WEB-INF/web.xml =================================================================== diff -u --- lams_signup/web/WEB-INF/web.xml (revision 0) +++ lams_signup/web/WEB-INF/web.xml (revision 56f7147f7f0d441c3362d1187ed1551654ede1d4) @@ -0,0 +1,229 @@ + + + + LAMS + +Learning Activity Management System + + + javax.servlet.jsp.jstl.fmt.localizationContext + org.lamsfoundation.lams.tool.signup.ApplicationResources + + + + + contextConfigLocation + classpath:/org/lamsfoundation/lams/tool/signup/dbupdates/autopatchContext.xml + + + + locatorFactorySelector + classpath*:/org/lamsfoundation/lams/**/beanRefContext.xml + + + + parentContextKey + context.central + + + + SystemSessionFilter + + org.lamsfoundation.lams.web.session.SystemSessionFilter + + + + HibernateFilter + + org.lamsfoundation.lams.util.CustomizedOpenSessionInViewFilter + + + sessionFactoryBeanName + coreSessionFactory + + + singleSession + true + + + + LocaleFilter + + org.lamsfoundation.lams.web.filter.LocaleFilter + + + encoding + UTF-8 + + + + UrlRewriteFilter + org.tuckey.web.filters.urlrewrite.UrlRewriteFilter + + + + + SystemSessionFilter + /* + + + LocaleFilter + /* + + + HibernateFilter + /* + + + UrlRewriteFilter + /* + + + + + org.springframework.web.context.ContextLoaderListener + + + + + org.lamsfoundation.lams.web.session.SetMaxTimeoutListener + + + + + action + org.apache.struts.action.ActionServlet + + config + /WEB-INF/struts/struts-config.xml + + + debug + 999 + + + detail + 2 + + + validate + true + + 1 + + + + action + *.do + + + + 120 + + + + + + 500 + /error.jsp + + + 403 + /403.jsp + + + 404 + /404.jsp + + + + + + + + tags-bean + /WEB-INF/struts/tlds/struts-bean.tld + + + + + tags-html + /WEB-INF/struts/tlds/struts-html.tld + + + + + tags-logic + /WEB-INF/struts/tlds/struts-logic.tld + + + + + tags-tiles + /WEB-INF/struts/tlds/struts-tiles.tld + + + + + + + + tags-fmt + /WEB-INF/jstl/tlds/fmt.tld + + + + tags-core + /WEB-INF/jstl/tlds/c.tld + + + + tags-function + /WEB-INF/jstl/tlds/fn.tld + + + + tags-xml + /WEB-INF/jstl/tlds/x.tld + + + + + + + tags-lams + /WEB-INF/lams.tld + + + + + + + Secure Content + /admin.do + + + SYSADMIN + + + + + + FORM + LAMS + + /login.jsp + /login.jsp?failed=y + + + + + SYSADMIN + + + Index: lams_signup/web/admin/add.jsp =================================================================== diff -u --- lams_signup/web/admin/add.jsp (revision 0) +++ lams_signup/web/admin/add.jsp (revision 56f7147f7f0d441c3362d1187ed1551654ede1d4) @@ -0,0 +1,62 @@ +<%@ include file="/taglibs.jsp"%> + +

Add/edit new signup page

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Group: + + + + + +
Add to lessons?:
Add as staff?:
Course key:
Confirm course key:
Blurb:
Disabled?:
Context:
Submit
+ +
\ No newline at end of file Index: lams_signup/web/admin/list.jsp =================================================================== diff -u --- lams_signup/web/admin/list.jsp (revision 0) +++ lams_signup/web/admin/list.jsp (revision 56f7147f7f0d441c3362d1187ed1551654ede1d4) @@ -0,0 +1,54 @@ +<%@ include file="/taglibs.jsp"%> + +

List of signup pages

+ + +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
Group nameGroup codeAdd to lessons?Add as staff?Create dateDisabled?ContextActions
+ + + + + + + + + + + + + + + Edit +    + Delete +
+ +

+ Add a new signup page +

\ No newline at end of file Index: lams_signup/web/error.jsp =================================================================== diff -u --- lams_signup/web/error.jsp (revision 0) +++ lams_signup/web/error.jsp (revision 56f7147f7f0d441c3362d1187ed1551654ede1d4) @@ -0,0 +1,72 @@ + + +<%@ page language="java" isErrorPage="true" pageEncoding="UTF-8" contentType="text/html;charset=utf-8"%> +<%@ taglib uri="tags-lams" prefix="lams"%> +<%@ taglib uri="tags-core" prefix="c"%> +<%@ taglib uri="tags-fmt" prefix="fmt"%> + + + + + + + +<%-- Catch JSP Servlet Exception --%> +<% +if (exception != null) { +%> + + <%=exception.getMessage()%> + + + <%=exception.getClass().getName()%> + +<% + java.io.ByteArrayOutputStream bos = new java.io.ByteArrayOutputStream(); + java.io.PrintStream os = new java.io.PrintStream(bos); + exception.printStackTrace(os); + String stack = new String(bos.toByteArray()); +%> + + <%=stack%> + +<% +} else if ((Exception) request.getAttribute("javax.servlet.error.exception") != null) { +%> + + + <%=((Exception) request.getAttribute("javax.servlet.error.exception")).getMessage()%> + + + <%=((Exception) request.getAttribute("javax.servlet.error.exception")).getMessage() + .getClass().getName()%> + +<% + java.io.ByteArrayOutputStream bos = new java.io.ByteArrayOutputStream(); + java.io.PrintStream os = new java.io.PrintStream(bos); + ((Exception) request.getAttribute("javax.servlet.error.exception")).printStackTrace(os); + String stack = new String(bos.toByteArray()); +%> + + <%=stack%> + +<% +} +%> + +
+ + + +
+ + + +
Index: lams_signup/web/index.jsp =================================================================== diff -u --- lams_signup/web/index.jsp (revision 0) +++ lams_signup/web/index.jsp (revision 56f7147f7f0d441c3362d1187ed1551654ede1d4) @@ -0,0 +1 @@ \ No newline at end of file Index: lams_signup/web/login.jsp =================================================================== diff -u --- lams_signup/web/login.jsp (revision 0) +++ lams_signup/web/login.jsp (revision 56f7147f7f0d441c3362d1187ed1551654ede1d4) @@ -0,0 +1,13 @@ +<%@ include file="/taglibs.jsp"%> + + + + + + + Index: lams_signup/web/register.jsp =================================================================== diff -u --- lams_signup/web/register.jsp (revision 0) +++ lams_signup/web/register.jsp (revision 56f7147f7f0d441c3362d1187ed1551654ede1d4) @@ -0,0 +1,82 @@ +<%@ include file="/taglibs.jsp"%> + +

+ LAMS - Learning Activity Management System +

+ + +

 

+

+ + + () + +

+ +

 

+

+ +

+
+
+

+ If you already have an account, please proceed to the login page. +

+ + +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Username:
Password:
Confirm password:
First name:
Last name:
Email:
Confirm email:
Course key:
Submit
+ +
\ No newline at end of file Index: lams_signup/web/success.jsp =================================================================== diff -u --- lams_signup/web/success.jsp (revision 0) +++ lams_signup/web/success.jsp (revision 56f7147f7f0d441c3362d1187ed1551654ede1d4) @@ -0,0 +1,16 @@ +<%@ include file="/taglibs.jsp"%> + +

+ LAMS - Learning Activity Management System +

+ +

 

+ + +

Had trouble sending email. Error was,

+
+ +

+ You've successfully registered an account with LAMS. Click here to login. +

\ No newline at end of file Index: lams_signup/web/taglibs.jsp =================================================================== diff -u --- lams_signup/web/taglibs.jsp (revision 0) +++ lams_signup/web/taglibs.jsp (revision 56f7147f7f0d441c3362d1187ed1551654ede1d4) @@ -0,0 +1,9 @@ +<%@ page contentType="text/html; charset=utf-8" language="java" %> +<%@ taglib uri="tags-lams" prefix="lams" %> +<%@ taglib uri="tags-core" prefix="c" %> +<%@ taglib uri="tags-fmt" prefix="fmt" %> +<%@ taglib uri="tags-function" prefix="fn" %> +<%@ taglib uri="tags-html" prefix="html" %> +<%@ taglib uri="tags-bean" prefix="bean" %> +<%@ taglib uri="tags-logic" prefix="logic" %> +<%@ taglib uri="tags-tiles" prefix="tiles" %> Index: lams_signup/web/template.jsp =================================================================== diff -u --- lams_signup/web/template.jsp (revision 0) +++ lams_signup/web/template.jsp (revision 56f7147f7f0d441c3362d1187ed1551654ede1d4) @@ -0,0 +1,22 @@ +<%@ include file="/taglibs.jsp"%> + + + + + + + <fmt:message key="${title}"/> + + + + + + +
+
+ +

 

+
+
+ +