Index: lams_gradebook/.classpath =================================================================== diff -u --- lams_gradebook/.classpath (revision 0) +++ lams_gradebook/.classpath (revision e074865bde063cd3ac9e531a90857d07de9d121c) @@ -0,0 +1,13 @@ + + + + + + + + + + + + + Index: lams_gradebook/.cvsignore =================================================================== diff -u --- lams_gradebook/.cvsignore (revision 0) +++ lams_gradebook/.cvsignore (revision e074865bde063cd3ac9e531a90857d07de9d121c) @@ -0,0 +1,2 @@ +build +bin Index: lams_gradebook/.project =================================================================== diff -u --- lams_gradebook/.project (revision 0) +++ lams_gradebook/.project (revision e074865bde063cd3ac9e531a90857d07de9d121c) @@ -0,0 +1,43 @@ + + + lams_gradebook + + + + + + com.genuitec.eclipse.j2eedt.core.WebClasspathBuilder + + + + + org.eclipse.jdt.core.javabuilder + + + + + com.genuitec.eclipse.j2eedt.core.J2EEProjectValidator + + + + + com.genuitec.eclipse.j2eedt.core.DeploymentDescriptorValidator + + + + + com.ibm.etools.validation.validationbuilder + + + + + com.ibm.sse.model.structuredbuilder + + + + + + com.genuitec.eclipse.j2eedt.core.webnature + org.eclipse.jdt.core.javanature + + Index: lams_gradebook/build.properties =================================================================== diff -u --- lams_gradebook/build.properties (revision 0) +++ lams_gradebook/build.properties (revision e074865bde063cd3ac9e531a90857d07de9d121c) @@ -0,0 +1,7 @@ +#################################################################################################### +## NOTE: Most variables are defined in ../lams_build/common.properties file. +## You could define same name variable in this file to override value in common.properties. +##################################################################################################### +#name of this project +name=lams_gradebook +product=lams-gradebook Index: lams_gradebook/build.xml =================================================================== diff -u --- lams_gradebook/build.xml (revision 0) +++ lams_gradebook/build.xml (revision e074865bde063cd3ac9e531a90857d07de9d121c) @@ -0,0 +1,311 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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_gradebook/conf/jar/META-INF/MANIFEST.MF =================================================================== diff -u --- lams_gradebook/conf/jar/META-INF/MANIFEST.MF (revision 0) +++ lams_gradebook/conf/jar/META-INF/MANIFEST.MF (revision e074865bde063cd3ac9e531a90857d07de9d121c) @@ -0,0 +1,4 @@ +Implementation-Title: LAMS - Example Tool +Implementation-Version: 2.1 +Implementation-Vendor: LAMS Foundation (http://lamsfoundation.org) +Class-Path: Index: lams_gradebook/conf/language/lams/ApplicationResources.properties =================================================================== diff -u --- lams_gradebook/conf/language/lams/ApplicationResources.properties (revision 0) +++ lams_gradebook/conf/language/lams/ApplicationResources.properties (revision e074865bde063cd3ac9e531a90857d07de9d121c) @@ -0,0 +1,5 @@ +appName = gradebook +#language code: en +#locale code: AU + + Index: lams_gradebook/conf/language/lams/ApplicationResources_en_AU.properties =================================================================== diff -u --- lams_gradebook/conf/language/lams/ApplicationResources_en_AU.properties (revision 0) +++ lams_gradebook/conf/language/lams/ApplicationResources_en_AU.properties (revision e074865bde063cd3ac9e531a90857d07de9d121c) @@ -0,0 +1,3 @@ +appName = gradebook +#language code: en +#locale code: AU \ No newline at end of file Index: lams_gradebook/conf/language/rams/ApplicationResources.properties =================================================================== diff -u --- lams_gradebook/conf/language/rams/ApplicationResources.properties (revision 0) +++ lams_gradebook/conf/language/rams/ApplicationResources.properties (revision e074865bde063cd3ac9e531a90857d07de9d121c) @@ -0,0 +1,3 @@ +appName = gradebook +#language code: en +#locale code: AU \ No newline at end of file Index: lams_gradebook/conf/language/rams/ApplicationResources_en_AU.properties =================================================================== diff -u --- lams_gradebook/conf/language/rams/ApplicationResources_en_AU.properties (revision 0) +++ lams_gradebook/conf/language/rams/ApplicationResources_en_AU.properties (revision e074865bde063cd3ac9e531a90857d07de9d121c) @@ -0,0 +1,3 @@ +appName = gradebook +#language code: en +#locale code: AU \ No newline at end of file Index: lams_gradebook/conf/war/META-INF/MANIFEST.MF =================================================================== diff -u --- lams_gradebook/conf/war/META-INF/MANIFEST.MF (revision 0) +++ lams_gradebook/conf/war/META-INF/MANIFEST.MF (revision e074865bde063cd3ac9e531a90857d07de9d121c) @@ -0,0 +1,4 @@ +Implementation-Title: LAMS - Gradebook +Implementation-Version: 2.1 +Implementation-Vendor: LAMS Foundation (http://lamsfoundation.org) +Class-Path: ./lams.jar ./lams-central.jar ./lams-gradebook.jar Index: lams_gradebook/conf/xdoclet/error-pages.xml =================================================================== diff -u --- lams_gradebook/conf/xdoclet/error-pages.xml (revision 0) +++ lams_gradebook/conf/xdoclet/error-pages.xml (revision e074865bde063cd3ac9e531a90857d07de9d121c) @@ -0,0 +1,13 @@ + + 500 + /error.jsp + + + 403 + /403.jsp + + + 404 + /404.jsp + + Index: lams_gradebook/conf/xdoclet/filter-mappings.xml =================================================================== diff -u --- lams_gradebook/conf/xdoclet/filter-mappings.xml (revision 0) +++ lams_gradebook/conf/xdoclet/filter-mappings.xml (revision e074865bde063cd3ac9e531a90857d07de9d121c) @@ -0,0 +1,12 @@ + + SystemSessionFilter + /* + + + LocaleFilter + /* + + + HibernateFilter + /* + Index: lams_gradebook/conf/xdoclet/filters.xml =================================================================== diff -u --- lams_gradebook/conf/xdoclet/filters.xml (revision 0) +++ lams_gradebook/conf/xdoclet/filters.xml (revision e074865bde063cd3ac9e531a90857d07de9d121c) @@ -0,0 +1,28 @@ + + 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 + + Index: lams_gradebook/conf/xdoclet/global-exceptions.xml =================================================================== diff -u --- lams_gradebook/conf/xdoclet/global-exceptions.xml (revision 0) +++ lams_gradebook/conf/xdoclet/global-exceptions.xml (revision e074865bde063cd3ac9e531a90857d07de9d121c) @@ -0,0 +1,8 @@ + + + Index: lams_gradebook/conf/xdoclet/global-forwards.xml =================================================================== diff -u --- lams_gradebook/conf/xdoclet/global-forwards.xml (revision 0) +++ lams_gradebook/conf/xdoclet/global-forwards.xml (revision e074865bde063cd3ac9e531a90857d07de9d121c) @@ -0,0 +1,3 @@ + + + Index: lams_gradebook/conf/xdoclet/listeners.xml =================================================================== diff -u --- lams_gradebook/conf/xdoclet/listeners.xml (revision 0) +++ lams_gradebook/conf/xdoclet/listeners.xml (revision e074865bde063cd3ac9e531a90857d07de9d121c) @@ -0,0 +1,13 @@ + + com.tacitknowledge.util.migration.jdbc.WebAppJNDIMigrationLauncher + + + + org.springframework.web.context.ContextLoaderListener + + + + + org.lamsfoundation.lams.web.session.SetMaxTimeoutListener + + Index: lams_gradebook/conf/xdoclet/servlet-mappings.xml =================================================================== diff -u --- lams_gradebook/conf/xdoclet/servlet-mappings.xml (revision 0) +++ lams_gradebook/conf/xdoclet/servlet-mappings.xml (revision e074865bde063cd3ac9e531a90857d07de9d121c) @@ -0,0 +1,10 @@ + + action + *.do + + + + Connector + /fckeditor/editor/filemanager/browser/default/connectors/jsp/connector + + Index: lams_gradebook/conf/xdoclet/servlets.xml =================================================================== diff -u --- lams_gradebook/conf/xdoclet/servlets.xml (revision 0) +++ lams_gradebook/conf/xdoclet/servlets.xml (revision e074865bde063cd3ac9e531a90857d07de9d121c) @@ -0,0 +1,35 @@ + + action + org.apache.struts.action.ActionServlet + + config + /WEB-INF/struts/struts-config.xml + + + debug + 999 + + + detail + 2 + + + validate + true + + 1 + + + + Connector + net.fckeditor.connector.ConnectorServlet + + baseDir + /UserFiles/ + + + debug + false + + 1 + Index: lams_gradebook/conf/xdoclet/struts-actions.xml =================================================================== diff -u --- lams_gradebook/conf/xdoclet/struts-actions.xml (revision 0) +++ lams_gradebook/conf/xdoclet/struts-actions.xml (revision e074865bde063cd3ac9e531a90857d07de9d121c) @@ -0,0 +1 @@ \ No newline at end of file Index: lams_gradebook/conf/xdoclet/struts-forms.xml =================================================================== diff -u --- lams_gradebook/conf/xdoclet/struts-forms.xml (revision 0) +++ lams_gradebook/conf/xdoclet/struts-forms.xml (revision e074865bde063cd3ac9e531a90857d07de9d121c) @@ -0,0 +1 @@ + Index: lams_gradebook/conf/xdoclet/struts-message-resources.xml =================================================================== diff -u --- lams_gradebook/conf/xdoclet/struts-message-resources.xml (revision 0) +++ lams_gradebook/conf/xdoclet/struts-message-resources.xml (revision e074865bde063cd3ac9e531a90857d07de9d121c) @@ -0,0 +1 @@ + Index: lams_gradebook/conf/xdoclet/struts-plugins.xml =================================================================== diff -u --- lams_gradebook/conf/xdoclet/struts-plugins.xml (revision 0) +++ lams_gradebook/conf/xdoclet/struts-plugins.xml (revision e074865bde063cd3ac9e531a90857d07de9d121c) @@ -0,0 +1,8 @@ + + + + + + + Index: lams_gradebook/conf/xdoclet/taglibs.xml =================================================================== diff -u --- lams_gradebook/conf/xdoclet/taglibs.xml (revision 0) +++ lams_gradebook/conf/xdoclet/taglibs.xml (revision e074865bde063cd3ac9e531a90857d07de9d121c) @@ -0,0 +1,84 @@ + + + + + + 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-bean-el + /WEB-INF/struts/tlds/struts-bean-el.tld + + + + tags-html-el + /WEB-INF/struts/tlds/struts-html-el.tld + + + + tags-logic-el + /WEB-INF/struts/tlds/struts-logic-el.tld + + + + tags-tiles-el + /WEB-INF/struts/tlds/struts-tiles-el.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 + + + + + + + fck-editor + /WEB-INF/fckeditor/tlds/FCKeditor.tld + + + + + + + tags-lams + /WEB-INF/lams.tld + + + Index: lams_gradebook/conf/xdoclet/web-security.xml =================================================================== diff -u --- lams_gradebook/conf/xdoclet/web-security.xml (revision 0) +++ lams_gradebook/conf/xdoclet/web-security.xml (revision e074865bde063cd3ac9e531a90857d07de9d121c) @@ -0,0 +1,38 @@ + + + + Secure Content + /* + + + AUTHOR ADMIN + GROUP MANAGER + GROUP ADMIN + SYSADMIN + + + + + + FORM + LAMS + + /login.jsp + /login.jsp?failed=y + + + + + + AUTHOR ADMIN + + + GROUP MANAGER + + + GROUP ADMIN + + + SYSADMIN + + Index: lams_gradebook/conf/xdoclet/web-settings.xml =================================================================== diff -u --- lams_gradebook/conf/xdoclet/web-settings.xml (revision 0) +++ lams_gradebook/conf/xdoclet/web-settings.xml (revision e074865bde063cd3ac9e531a90857d07de9d121c) @@ -0,0 +1,43 @@ +LAMS + +Learning Activity Management System + + + javax.servlet.jsp.jstl.fmt.localizationContext + org.lamsfoundation.lams.gradebook.ApplicationResources + + + + contextConfigLocation + classpath:/org/lamsfoundation/lams/gradebook/gradebookApplicationContext.xml + + + locatorFactorySelector + classpath*:/org/lamsfoundation/lams/**/beanRefContext.xml + + + parentContextKey + context.central + + + + migration.systemname + lams + + + migration.databasetype + mysql + + + migration.patchpath + org/lamsfoundation/lams/dbupdates + + + migration.datasource + java:jdbc/lams-ds + + + + xls + excel/ms-excel + Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/dto/GBActivityGridRowDTO.java =================================================================== diff -u --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/dto/GBActivityGridRowDTO.java (revision 0) +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/dto/GBActivityGridRowDTO.java (revision e074865bde063cd3ac9e531a90857d07de9d121c) @@ -0,0 +1,143 @@ +/**************************************************************** + * Copyright (C) 2008 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2.0 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ + +/* $Id$ */ +package org.lamsfoundation.lams.gradebook.dto; + +import java.util.ArrayList; + +import org.lamsfoundation.lams.gradebook.util.GBGridView; + +public class GBActivityGridRowDTO extends GradebookGridRowDTO { + + public static final String VIEW_USER = "userView"; + public static final String VIEW_ACTIVITY = "activityView"; + + String competences; + //String toolString; + + // Properties for user view + String status; + String output; + String activityUrl; + //double timeTaken; + String feedback; + + // Properties for activity view + String monitorUrl; + + public GBActivityGridRowDTO() { + } + + @Override + public ArrayList toStringArray(GBGridView view) { + ArrayList ret = new ArrayList(); + ret.add(id.toString()); + + if (view == GBGridView.MON_USER) { + + if (activityUrl != null && activityUrl.length() != 0) { + ret.add("" + + rowName + ""); + } else { + ret.add(rowName); + } + ret.add(status); + ret.add(output); + ret.add(competences); + ret.add((timeTaken != null) ? convertTimeToString(timeTaken) : CELL_EMPTY); + ret.add(feedback); + ret.add((mark != null) ? mark.toString() : CELL_EMPTY); + + } else if (view == GBGridView.MON_ACTIVITY) { + + if (monitorUrl != null && monitorUrl.length() != 0) { + ret.add("" + + rowName + ""); + } else { + ret.add(rowName); + } + + ret.add((averageTimeTaken != null) ? convertTimeToString(averageTimeTaken) : CELL_EMPTY); + ret.add(competences); + ret.add((averageMark != null) ? averageMark.toString() : CELL_EMPTY); + } else if (view == GBGridView.LRN_ACTIVITY) { + ret.add(rowName); + ret.add(status); + ret.add(feedback); + ret.add((averageTimeTaken != null) ? convertTimeToString(averageTimeTaken) : CELL_EMPTY); + ret.add((timeTaken != null) ? convertTimeToString(timeTaken) : CELL_EMPTY); + ret.add((averageMark != null) ? averageMark.toString() : CELL_EMPTY); + ret.add((mark != null) ? mark.toString() : CELL_EMPTY); + } + + return ret; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public String getOutput() { + return output; + } + + public void setOutput(String output) { + this.output = output; + } + + public String getCompetences() { + return competences; + } + + public void setCompetences(String competences) { + this.competences = competences; + } + + public String getActivityUrl() { + return activityUrl; + } + + public void setActivityUrl(String activityUrl) { + this.activityUrl = activityUrl; + } + + public String getFeedback() { + return feedback; + } + + public void setFeedback(String feedback) { + this.feedback = feedback; + } + + public String getMonitorUrl() { + return monitorUrl; + } + + public void setMonitorUrl(String monitorUrl) { + this.monitorUrl = monitorUrl; + } +} Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/dto/GBLessonGridRowDTO.java =================================================================== diff -u --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/dto/GBLessonGridRowDTO.java (revision 0) +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/dto/GBLessonGridRowDTO.java (revision e074865bde063cd3ac9e531a90857d07de9d121c) @@ -0,0 +1,154 @@ +/**************************************************************** + * Copyright (C) 2008 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2.0 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ + +/* $Id$ */ +package org.lamsfoundation.lams.gradebook.dto; + +import java.util.ArrayList; + +import org.lamsfoundation.lams.gradebook.util.GBGridView; + +public class GBLessonGridRowDTO extends GradebookGridRowDTO { + + public static final String VIEW_MONITOR = "monitorView"; + public static final String VIEW_LEARNER = "learnerView"; + + String subGroup; + String startDate; + + // Only for monitor view + String gradebookMonitorURL; + + // Only for learner view + String gradebookLearnerURL; + String finishDate; + String status; + String feedback; + + public GBLessonGridRowDTO() { + } + + @Override + public ArrayList toStringArray(GBGridView view) { + ArrayList ret = new ArrayList(); + + ret.add(id.toString()); + + if (view == GBGridView.MON_COURSE) { + if (gradebookMonitorURL != null && gradebookMonitorURL.length() != 0) { + ret.add("" + rowName + + ""); + } else { + ret.add(rowName); + } + ret.add(subGroup); + ret.add(startDate); + ret.add((averageTimeTaken != null && averageTimeTaken != 0) ? convertTimeToString(averageTimeTaken) : CELL_EMPTY); + ret.add((averageMark != null) ? averageMark.toString() : CELL_EMPTY); + + } else if (view == GBGridView.LRN_COURSE) { + if (gradebookLearnerURL != null && gradebookLearnerURL.length() != 0) { + ret.add("" + rowName + + ""); + } else { + ret.add(rowName); + } + ret.add(subGroup); + ret.add((status != null) ? status : CELL_EMPTY); + ret.add(feedback); + ret.add((startDate != null) ? startDate : CELL_EMPTY); + ret.add((finishDate != null) ? finishDate : CELL_EMPTY); + ret.add((averageTimeTaken != null && averageTimeTaken != 0) ? toItalic(convertTimeToString(averageTimeTaken)) : CELL_EMPTY); + ret.add((timeTaken != null) ? convertTimeToString(timeTaken) : CELL_EMPTY); + ret.add((averageMark != null) ? toItalic(averageMark.toString()) : CELL_EMPTY); + ret.add((mark != null) ? mark.toString() : CELL_EMPTY); + + } + return ret; + } + + public String getLessonName() { + return rowName; + } + + public void setLessonName(String rowName) { + this.rowName = rowName; + } + + public String getGradebookMonitorURL() { + return gradebookMonitorURL; + } + + public void setGradebookMonitorURL(String gradebookMonitorURL) { + this.gradebookMonitorURL = gradebookMonitorURL; + } + + public String getGradebookLearnerURL() { + return gradebookLearnerURL; + } + + public void setGradebookLearnerURL(String gradebookLearnerURL) { + this.gradebookLearnerURL = gradebookLearnerURL; + } + + public String getSubGroup() { + return subGroup; + } + + public void setSubGroup(String subGroup) { + this.subGroup = subGroup; + } + + public String getStartDate() { + return startDate; + } + + public void setStartDate(String startDate) { + this.startDate = startDate; + } + + public String getFinishDate() { + return finishDate; + } + + public void setFinishDate(String finishDate) { + this.finishDate = finishDate; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public String getFeedback() { + return feedback; + } + + public void setFeedback(String feedback) { + this.feedback = feedback; + } + + +} Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/dto/GBUserGridRowDTO.java =================================================================== diff -u --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/dto/GBUserGridRowDTO.java (revision 0) +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/dto/GBUserGridRowDTO.java (revision e074865bde063cd3ac9e531a90857d07de9d121c) @@ -0,0 +1,114 @@ +/**************************************************************** + * Copyright (C) 2008 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2.0 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ + +/* $Id$ */ +package org.lamsfoundation.lams.gradebook.dto; + +import java.util.ArrayList; + +import org.lamsfoundation.lams.gradebook.util.GBGridView; + +public class GBUserGridRowDTO extends GradebookGridRowDTO { + + String status; + String feedback; + + // For activity view + String output; + String activityUrl; + + + public GBUserGridRowDTO() { + } + + @Override + public ArrayList toStringArray(GBGridView view) { + ArrayList ret = new ArrayList(); + + ret.add(id.toString()); + + if (view == GBGridView.MON_USER) { + + ret.add(rowName); + ret.add(status); + ret.add((timeTaken != null) ? convertTimeToString(timeTaken) : CELL_EMPTY); + ret.add(feedback); + ret.add((mark != null) ? mark.toString() : CELL_EMPTY); + + } else if (view == GBGridView.MON_ACTIVITY){ + + if (activityUrl != null && activityUrl.length() != 0) { + ret.add("" + rowName + + ""); + } else { + ret.add(rowName); + } + ret.add(status); + ret.add((timeTaken != null) ? convertTimeToString(timeTaken) : CELL_EMPTY); + ret.add(output); + ret.add(feedback); + ret.add((mark != null) ? mark.toString() : CELL_EMPTY); + + } else if (view == GBGridView.MON_COURSE){ + ret.add(rowName); + ret.add(status); + ret.add((timeTaken != null) ? convertTimeToString(timeTaken) : CELL_EMPTY); + ret.add(feedback); + ret.add((mark != null) ? mark.toString() : CELL_EMPTY); + } + + return ret; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public String getFeedback() { + return feedback; + } + + public void setFeedback(String feedback) { + this.feedback = feedback; + } + + public String getOutput() { + return output; + } + + public void setOutput(String output) { + this.output = output; + } + + public String getActivityUrl() { + return activityUrl; + } + + public void setActivityUrl(String activityUrl) { + this.activityUrl = activityUrl; + } + +} Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/dto/GradebookGridRowDTO.java =================================================================== diff -u --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/dto/GradebookGridRowDTO.java (revision 0) +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/dto/GradebookGridRowDTO.java (revision e074865bde063cd3ac9e531a90857d07de9d121c) @@ -0,0 +1,138 @@ +/**************************************************************** + * Copyright (C) 2008 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2.0 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ + +/* $Id$ */ +package org.lamsfoundation.lams.gradebook.dto; + +import java.util.ArrayList; + +import org.lamsfoundation.lams.gradebook.util.GBGridView; + +public abstract class GradebookGridRowDTO{ + + public abstract ArrayList toStringArray(GBGridView view); + + public static final String CELL_EMPTY = "-"; + + // The id for a row, might be activityId, userId, lessonID etc + public Long id; + + // The name for the row, every gradebook row has some sort of name + // Be it the user's name, the activity name, the lesson name etc + public String rowName; + + // A unit of time in milliseconds that determines the time taken for the corressponding task + public Long timeTaken; + + // Another unit of time that represents average time taken for a corresponding task + public Long averageTimeTaken; + + // The mark for the corresponding gradebook grid row task + public Double mark; + + // Average mark for the corresponding task + public Double averageMark; + + /** + * A shared function to convert milliseconds into a readable string + * + * @param timeInMillis + * @return + */ + protected String convertTimeToString(Long timeInMillis) { + StringBuilder sb = new StringBuilder(); + if (timeInMillis != null && timeInMillis > 1000) { + long totalTimeInSeconds = timeInMillis / 1000; + + long seconds = (totalTimeInSeconds >= 60 ? totalTimeInSeconds % 60 : totalTimeInSeconds); + long minutes = (totalTimeInSeconds = (totalTimeInSeconds / 60)) >= 60 ? totalTimeInSeconds % 60 : totalTimeInSeconds; + long hours = (totalTimeInSeconds = (totalTimeInSeconds / 60)) >= 24 ? totalTimeInSeconds % 24 : totalTimeInSeconds; + long days = (totalTimeInSeconds = (totalTimeInSeconds / 24)); + + if (days != 0 ) { sb.append("" + days + "d, "); } + if (hours != 0 ) { sb.append("" + hours + "h, "); } + if (minutes != 0 ) { sb.append("" + minutes + "m, "); } + if (seconds != 0 ) { sb.append("" + seconds + "s"); } + } + + if (sb.length() > 0) { + return sb.toString(); + } else { + return null; + } + } + + protected String toItalic(String string) { + return "" + string + ""; + } + + public Long getTimeTaken() { + return timeTaken; + } + + public void setTimeTaken(Long timeTaken) { + this.timeTaken = timeTaken; + } + + public Double getMark() { + return mark; + } + + public void setMark(Double mark) { + this.mark = mark; + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getRowName() { + return rowName; + } + + public void setRowName(String rowName) { + this.rowName = rowName; + } + + public Long getAverageTimeTaken() { + return averageTimeTaken; + } + + public void setAverageTimeTaken(Long averageTimeTaken) { + this.averageTimeTaken = averageTimeTaken; + } + + public Double getAverageMark() { + return averageMark; + } + + public void setAverageMark(Double averageMark) { + this.averageMark = averageMark; + } + + +} + Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/dto/comparators/GBAverageMarkComparator.java =================================================================== diff -u --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/dto/comparators/GBAverageMarkComparator.java (revision 0) +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/dto/comparators/GBAverageMarkComparator.java (revision e074865bde063cd3ac9e531a90857d07de9d121c) @@ -0,0 +1,47 @@ +/**************************************************************** + * Copyright (C) 2008 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2.0 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ + +/* $Id$ */ +package org.lamsfoundation.lams.gradebook.dto.comparators; + +import java.util.Comparator; + +import org.lamsfoundation.lams.gradebook.dto.GradebookGridRowDTO; + +@SuppressWarnings("unchecked") +public class GBAverageMarkComparator implements Comparator { + + public int compare(Object gradebookGridRow, Object anotherGradebookGridRow) { + + if (gradebookGridRow instanceof GradebookGridRowDTO && anotherGradebookGridRow instanceof GradebookGridRowDTO) { + + Double mark1 = ((GradebookGridRowDTO) gradebookGridRow).getAverageMark(); + Double mark2 = ((GradebookGridRowDTO) anotherGradebookGridRow).getAverageMark(); + + mark1 = (mark1 == null) ? 0.0 : mark1; + mark2 = (mark2 == null) ? 0.0 : mark2; + return new Double(mark1 - mark2).intValue(); + } else { + return 0; + } + } +} Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/dto/comparators/GBAverageTimeTakenComparator.java =================================================================== diff -u --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/dto/comparators/GBAverageTimeTakenComparator.java (revision 0) +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/dto/comparators/GBAverageTimeTakenComparator.java (revision e074865bde063cd3ac9e531a90857d07de9d121c) @@ -0,0 +1,47 @@ +/**************************************************************** + * Copyright (C) 2008 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2.0 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ + +/* $Id$ */ +package org.lamsfoundation.lams.gradebook.dto.comparators; + +import java.util.Comparator; + +import org.lamsfoundation.lams.gradebook.dto.GradebookGridRowDTO; + +@SuppressWarnings("unchecked") +public class GBAverageTimeTakenComparator implements Comparator{ + public int compare(Object gradebookGridRow, Object anotherGradebookGridRow) { + + if (gradebookGridRow instanceof GradebookGridRowDTO && anotherGradebookGridRow instanceof GradebookGridRowDTO) { + + Long timeTaken1 = ((GradebookGridRowDTO) gradebookGridRow).getAverageTimeTaken(); + Long timeTaken2 = ((GradebookGridRowDTO) anotherGradebookGridRow).getAverageTimeTaken(); + + timeTaken1 = (timeTaken1 == null) ? 0 : timeTaken1; + timeTaken2 = (timeTaken2 == null) ? 0 : timeTaken2; + return new Double(timeTaken1 - timeTaken2).intValue(); + } else { + return 0; + } + } +} + Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/dto/comparators/GBIDComparator.java =================================================================== diff -u --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/dto/comparators/GBIDComparator.java (revision 0) +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/dto/comparators/GBIDComparator.java (revision e074865bde063cd3ac9e531a90857d07de9d121c) @@ -0,0 +1,49 @@ +/**************************************************************** + * Copyright (C) 2008 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2.0 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ + +/* $Id$ */ +package org.lamsfoundation.lams.gradebook.dto.comparators; + +import java.util.Comparator; + +import org.lamsfoundation.lams.gradebook.dto.GradebookGridRowDTO; + +@SuppressWarnings("unchecked") +public class GBIDComparator implements Comparator{ + public int compare(Object gradebookRow, Object anotherGradebookRow) { + + if (gradebookRow instanceof GradebookGridRowDTO && anotherGradebookRow instanceof GradebookGridRowDTO) { + + Long id1 = ((GradebookGridRowDTO) gradebookRow).getId(); + Long id2 = ((GradebookGridRowDTO) anotherGradebookRow).getId(); + + if (id1 == null || id2 == null) { + return 0; + } + Long ret = id1 - id2; + return ret.intValue(); + } else { + return 0; + } + } +} + Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/dto/comparators/GBMarkComparator.java =================================================================== diff -u --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/dto/comparators/GBMarkComparator.java (revision 0) +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/dto/comparators/GBMarkComparator.java (revision e074865bde063cd3ac9e531a90857d07de9d121c) @@ -0,0 +1,47 @@ +/**************************************************************** + * Copyright (C) 2008 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2.0 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ + +/* $Id$ */ +package org.lamsfoundation.lams.gradebook.dto.comparators; + +import java.util.Comparator; + +import org.lamsfoundation.lams.gradebook.dto.GradebookGridRowDTO; + +@SuppressWarnings("unchecked") +public class GBMarkComparator implements Comparator { + + public int compare(Object gradebookGridRow, Object anotherGradebookGridRow) { + + if (gradebookGridRow instanceof GradebookGridRowDTO && anotherGradebookGridRow instanceof GradebookGridRowDTO) { + + Double mark1 = ((GradebookGridRowDTO) gradebookGridRow).getMark(); + Double mark2 = ((GradebookGridRowDTO) anotherGradebookGridRow).getMark(); + + mark1 = (mark1 == null) ? 0.0 : mark1; + mark2 = (mark2 == null) ? 0.0 : mark2; + return new Double(mark1 - mark2).intValue(); + } else { + return 0; + } + } +} Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/dto/comparators/GBRowNameComparator.java =================================================================== diff -u --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/dto/comparators/GBRowNameComparator.java (revision 0) +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/dto/comparators/GBRowNameComparator.java (revision e074865bde063cd3ac9e531a90857d07de9d121c) @@ -0,0 +1,44 @@ +/**************************************************************** + * Copyright (C) 2008 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2.0 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ + +/* $Id$ */ +package org.lamsfoundation.lams.gradebook.dto.comparators; + +import java.util.Comparator; + +import org.lamsfoundation.lams.gradebook.dto.GradebookGridRowDTO; + +@SuppressWarnings("unchecked") +public class GBRowNameComparator implements Comparator { + + public int compare(Object gradebookGridRow, Object anotherGradebookGridRow) { + if (gradebookGridRow instanceof GradebookGridRowDTO && anotherGradebookGridRow instanceof GradebookGridRowDTO) { + String name1 = ((GradebookGridRowDTO) gradebookGridRow).getRowName().toLowerCase(); + String name2 = ((GradebookGridRowDTO) anotherGradebookGridRow).getRowName().toLowerCase(); + int ret = name1.compareTo(name2); + return ret; + } else { + return 0; + } + } +} + Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/dto/comparators/GBTimeTakenComparator.java =================================================================== diff -u --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/dto/comparators/GBTimeTakenComparator.java (revision 0) +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/dto/comparators/GBTimeTakenComparator.java (revision e074865bde063cd3ac9e531a90857d07de9d121c) @@ -0,0 +1,47 @@ +/**************************************************************** + * Copyright (C) 2008 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2.0 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ + +/* $Id$ */ +package org.lamsfoundation.lams.gradebook.dto.comparators; + +import java.util.Comparator; + +import org.lamsfoundation.lams.gradebook.dto.GradebookGridRowDTO; + +@SuppressWarnings("unchecked") +public class GBTimeTakenComparator implements Comparator{ + public int compare(Object gradebookGridRow, Object anotherGradebookGridRow) { + + if (gradebookGridRow instanceof GradebookGridRowDTO && anotherGradebookGridRow instanceof GradebookGridRowDTO) { + + Long timeTaken1 = ((GradebookGridRowDTO) gradebookGridRow).getTimeTaken(); + Long timeTaken2 = ((GradebookGridRowDTO) anotherGradebookGridRow).getTimeTaken(); + + timeTaken1 = (timeTaken1 == null) ? 0 : timeTaken1; + timeTaken2 = (timeTaken2 == null) ? 0 : timeTaken2; + return new Double(timeTaken1 - timeTaken2).intValue(); + } else { + return 0; + } + } +} + Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/gradebookApplicationContext.xml =================================================================== diff -u --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/gradebookApplicationContext.xml (revision 0) +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/gradebookApplicationContext.xml (revision e074865bde063cd3ac9e531a90857d07de9d121c) @@ -0,0 +1,35 @@ + + + + + + org.lamsfoundation.lams.gradebook.ApplicationResources + + + + + + + + + + + + + + + PROPAGATION_REQUIRED + PROPAGATION_REQUIRED + PROPAGATION_REQUIRED + PROPAGATION_REQUIRED + PROPAGATION_REQUIRED + PROPAGATION_REQUIRED + PROPAGATION_REQUIRED + PROPAGATION_REQUIRED + PROPAGATION_REQUIRED + PROPAGATION_REQUIRED + PROPAGATION_REQUIRED + + + + Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java =================================================================== diff -u --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java (revision 0) +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java (revision e074865bde063cd3ac9e531a90857d07de9d121c) @@ -0,0 +1,703 @@ +/**************************************************************** + * Copyright (C) 2008 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2.0 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ + +/* $Id$ */ +package org.lamsfoundation.lams.gradebook.service; + +import java.text.DateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.HashSet; +import java.util.List; +import java.util.Locale; +import java.util.Set; +import java.util.SortedMap; +import java.util.SortedSet; +import java.util.TreeSet; + +import org.apache.log4j.Logger; +import org.lamsfoundation.lams.gradebook.GradebookUserActivity; +import org.lamsfoundation.lams.gradebook.GradebookUserLesson; +import org.lamsfoundation.lams.gradebook.dao.IGradebookDAO; +import org.lamsfoundation.lams.gradebook.dto.GBActivityGridRowDTO; +import org.lamsfoundation.lams.gradebook.dto.GBLessonGridRowDTO; +import org.lamsfoundation.lams.gradebook.dto.GBUserGridRowDTO; +import org.lamsfoundation.lams.gradebook.dto.GradebookGridRowDTO; +import org.lamsfoundation.lams.gradebook.util.GBGridView; +import org.lamsfoundation.lams.learningdesign.Activity; +import org.lamsfoundation.lams.learningdesign.CompetenceMapping; +import org.lamsfoundation.lams.learningdesign.ToolActivity; +import org.lamsfoundation.lams.lesson.CompletedActivityProgress; +import org.lamsfoundation.lams.lesson.LearnerProgress; +import org.lamsfoundation.lams.lesson.Lesson; +import org.lamsfoundation.lams.lesson.service.ILessonService; +import org.lamsfoundation.lams.monitoring.service.IMonitoringService; +import org.lamsfoundation.lams.tool.OutputType; +import org.lamsfoundation.lams.tool.ToolOutput; +import org.lamsfoundation.lams.tool.ToolOutputDefinition; +import org.lamsfoundation.lams.tool.ToolSession; +import org.lamsfoundation.lams.tool.service.ILamsCoreToolService; +import org.lamsfoundation.lams.usermanagement.Organisation; +import org.lamsfoundation.lams.usermanagement.User; +import org.lamsfoundation.lams.util.Configuration; +import org.lamsfoundation.lams.util.ConfigurationKeys; +import org.lamsfoundation.lams.web.util.AttributeNames; + +/** + * @author lfoxton + * + * This service handles all gradebook-related service calls + * + */ +public class GradebookService implements IGradebookService { + + private static Logger logger = Logger.getLogger(GradebookService.class); + + // Services + private IMonitoringService monitoringService; + private ILamsCoreToolService toolService; + private IGradebookDAO gradebookDAO; + private ILessonService lessonService; + + /** + * @see org.lamsfoundation.lams.gradebook.service.IGradebookService#getGBActivityRowsForLearner(org.lamsfoundation.lams.lesson.Lesson, + * org.lamsfoundation.lams.usermanagement.User) + */ + @SuppressWarnings("unchecked") + public List getGBActivityRowsForLearner(Lesson lesson, User learner) { + + logger.debug("Getting gradebook user data for lesson: " + lesson.getLessonId() + ". For user: " + + learner.getUserId()); + + List gradebookActivityDTOs = new ArrayList(); + + LearnerProgress learnerProgress = monitoringService.getLearnerProgress(learner.getUserId(), lesson + .getLessonId()); + + Set activities = (Set) lesson.getLearningDesign().getActivities(); + + /* + * Hibernate CGLIB is failing to load the first activity in + * the sequence as a ToolActivity for some mysterious reason + * Causes a ClassCastException when you try to cast it, even + * if it is a ToolActivity. + * + * THIS IS A HACK to retrieve the first tool activity + * manually so it can be cast as a ToolActivity - if it is one + */ + Activity firstActivity = monitoringService.getActivityById(lesson.getLearningDesign().getFirstActivity() + .getActivityId()); + + if (firstActivity != null && firstActivity.isToolActivity() && firstActivity instanceof ToolActivity) { + + GBActivityGridRowDTO activityDTO = getGradebookActivityDTO((ToolActivity) firstActivity, learner, + learnerProgress); + gradebookActivityDTOs.add(activityDTO); + } + + SortedSet sortedActivities = new TreeSet(activities); + + for (Activity activity : sortedActivities) { + if (activity.getActivityId().longValue() != firstActivity.getActivityId().longValue() + && activity instanceof ToolActivity) { + + GBActivityGridRowDTO activityDTO = getGradebookActivityDTO((ToolActivity) activity, learner, + learnerProgress); + gradebookActivityDTOs.add(activityDTO); + } + } + return gradebookActivityDTOs; + } + + /** + * @see org.lamsfoundation.lams.gradebook.service.IGradebookService#getGBActivityRowsForLesson(org.lamsfoundation.lams.lesson.Lesson) + */ + @SuppressWarnings("unchecked") + public List getGBActivityRowsForLesson(Lesson lesson) { + + logger.debug("Getting gradebook data for lesson: " + lesson.getLessonId()); + + List gradebookActivityDTOs = new ArrayList(); + + Set activities = (Set) lesson.getLearningDesign().getActivities(); + + /* + * Hibernate CGLIB is failing to load the first activity in + * the sequence as a ToolActivity for some mysterious reason + * Causes a ClassCastException when you try to cast it, even + * if it is a ToolActivity. + * + * THIS IS A HACK to retrieve the first tool activity + * manually so it can be cast as a ToolActivity - if it is one + */ + Activity firstActivity = monitoringService.getActivityById(lesson.getLearningDesign().getFirstActivity() + .getActivityId()); + + if (firstActivity.isToolActivity() && firstActivity instanceof ToolActivity) { + GBActivityGridRowDTO activityDTO = getGradebookActivityDTO((ToolActivity) firstActivity, lesson); + gradebookActivityDTOs.add(activityDTO); + } + + for (Activity activity : activities) { + if (activity.getActivityId().longValue() != firstActivity.getActivityId().longValue() + && activity instanceof ToolActivity) { + GBActivityGridRowDTO activityDTO = getGradebookActivityDTO((ToolActivity) activity, lesson); + gradebookActivityDTOs.add(activityDTO); + } + } + + return gradebookActivityDTOs; + + } + + /** + * @see org.lamsfoundation.lams.gradebook.service.IGradebookService#getGBUserRowsForActivity(org.lamsfoundation.lams.lesson.Lesson, + * org.lamsfoundation.lams.learningdesign.Activity) + */ + @SuppressWarnings("unchecked") + public List getGBUserRowsForActivity(Lesson lesson, ToolActivity activity) { + + List gradebookUserDTOs = new ArrayList(); + + Set learners = (Set) lesson.getAllLearners(); + + if (learners != null) { + for (User learner : learners) { + GBUserGridRowDTO gUserDTO = new GBUserGridRowDTO(); + gUserDTO.setRowName(learner.getLastName() + " " + learner.getFirstName()); + gUserDTO.setId(new Long(learner.getUserId())); + + GradebookUserActivity gradebookUserActivity = gradebookDAO.getGradebookUserDataForActivity(activity + .getActivityId(), learner.getUserId()); + + // Set the progress + LearnerProgress learnerProgress = monitoringService.getLearnerProgress(learner.getUserId(), lesson + .getLessonId()); + gUserDTO.setStatus(getActivityStatusStr(learnerProgress, activity)); + gUserDTO.setTimeTaken(getActivityDuration(learnerProgress, activity)); + + // Get the tool outputs for this user if there are any + ToolSession toolSession = toolService.getToolSessionByLearner(learner, activity); + if (toolSession != null) { + // Set the activityLearner URL for this gradebook activity + gUserDTO.setActivityUrl(Configuration.get(ConfigurationKeys.SERVER_URL) + + activity.getTool().getLearnerProgressUrl() + "&userID=" + learner.getUserId() + + "&toolSessionID=" + toolSession.getToolSessionId().toString()); + + gUserDTO.setOutput(this.getToolOutputsStr(activity, toolSession, learner)); + + } + + // Add marks and feedback + if (gradebookUserActivity != null) { + gUserDTO.setFeedback(gradebookUserActivity.getFeedback()); + gUserDTO.setMark(gradebookUserActivity.getMark()); + + } + gradebookUserDTOs.add(gUserDTO); + } + } + + return gradebookUserDTOs; + + } + + + + /** + * @see org.lamsfoundation.lams.gradebook.service.IGradebookService#getGBUserRowsForLesson(org.lamsfoundation.lams.lesson.Lesson) + */ + @SuppressWarnings("unchecked") + public ArrayList getGBUserRowsForLesson(Lesson lesson) { + + ArrayList gradebookUserDTOs = new ArrayList(); + + if (lesson != null) { + Set learners = (Set) lesson.getAllLearners(); + + if (learners != null) { + + for (User learner : learners) { + GBUserGridRowDTO gradebookUserDTO = new GBUserGridRowDTO(); + gradebookUserDTO.setId(new Long(learner.getUserId())); + gradebookUserDTO.setRowName(learner.getLastName() + " " + learner.getFirstName()); + + // Setting the status and time taken for the user's lesson + LearnerProgress learnerProgress = monitoringService.getLearnerProgress(learner.getUserId(), lesson + .getLessonId()); + gradebookUserDTO.setStatus(getLessonStatusStr(learnerProgress)); + if (learnerProgress != null) { + if (learnerProgress.getStartDate() != null && learnerProgress.getFinishDate() != null) { + gradebookUserDTO.setTimeTaken(learnerProgress.getFinishDate().getTime() + - learnerProgress.getStartDate().getTime()); + } + } + + GradebookUserLesson gradebookUserLesson = gradebookDAO.getGradebookUserDataForLesson(lesson + .getLessonId(), learner.getUserId()); + if (gradebookUserLesson != null) { + gradebookUserDTO.setMark(gradebookUserLesson.getMark()); + gradebookUserDTO.setFeedback(gradebookUserLesson.getFeedback()); + } + gradebookUserDTOs.add(gradebookUserDTO); + } + } + } + + return gradebookUserDTOs; + + } + + /** + * @see org.lamsfoundation.lams.gradebook.service.IGradebookService#updateUserLessonGradebookMark(org.lamsfoundation.lams.lesson.Lesson, + * org.lamsfoundation.lams.usermanagement.User, java.lang.Double) + */ + public void updateUserLessonGradebookMark(Lesson lesson, User learner, Double mark) { + if (lesson != null && learner != null) { + GradebookUserLesson gradebookUserLesson = gradebookDAO.getGradebookUserDataForLesson(lesson.getLessonId(), + learner.getUserId()); + + if (gradebookUserLesson == null) { + gradebookUserLesson = new GradebookUserLesson(lesson, learner); + } + gradebookUserLesson.setMark(mark); + gradebookDAO.insertOrUpdate(gradebookUserLesson); + } + } + + /** + * @see org.lamsfoundation.lams.gradebook.service.IGradebookService#updateUserActivityGradebookMark(org.lamsfoundation.lams.lesson.Lesson, + * org.lamsfoundation.lams.usermanagement.User, + * org.lamsfoundation.lams.learningdesign.Activity, java.lang.Double) + */ + public void updateUserActivityGradebookMark(Lesson lesson, User learner, Activity activity, Double mark) { + if (lesson != null && activity != null && learner != null && activity.isToolActivity()) { + + // First, update the mark for the activity + GradebookUserActivity gradebookUserActivity = gradebookDAO.getGradebookUserDataForActivity(activity + .getActivityId(), learner.getUserId()); + + if (gradebookUserActivity == null) { + gradebookUserActivity = new GradebookUserActivity((ToolActivity) activity, learner); + } + + gradebookUserActivity.setMark(mark); + gradebookDAO.insertOrUpdate(gradebookUserActivity); + + // Now update the lesson mark + GradebookUserLesson gradebookUserLesson = gradebookDAO.getGradebookUserDataForLesson(lesson.getLessonId(), + learner.getUserId()); + + if (gradebookUserLesson == null) { + gradebookUserLesson = new GradebookUserLesson(); + gradebookUserLesson.setLearner(learner); + gradebookUserLesson.setLesson(lesson); + } + + aggregateTotalMarkForLesson(gradebookUserLesson); + } + } + + /** + * @see org.lamsfoundation.lams.gradebook.service.IGradebookService#updateUserLessonGradebookFeedback(org.lamsfoundation.lams.lesson.Lesson, + * org.lamsfoundation.lams.usermanagement.User, java.lang.String) + */ + public void updateUserLessonGradebookFeedback(Lesson lesson, User learner, String feedback) { + + GradebookUserLesson gradebookUserLesson = gradebookDAO.getGradebookUserDataForLesson(lesson.getLessonId(), + learner.getUserId()); + + if (gradebookUserLesson == null) { + gradebookUserLesson = new GradebookUserLesson(lesson, learner); + } + + gradebookUserLesson.setFeedback(feedback); + gradebookDAO.insertOrUpdate(gradebookUserLesson); + } + + /** + * @see org.lamsfoundation.lams.gradebook.service.IGradebookService#updateUserActivityGradebookFeedback(org.lamsfoundation.lams.learningdesign.Activity, + * org.lamsfoundation.lams.usermanagement.User, java.lang.String) + */ + public void updateUserActivityGradebookFeedback(Activity activity, User learner, String feedback) { + + GradebookUserActivity gradebookUserActivity = gradebookDAO.getGradebookUserDataForActivity(activity + .getActivityId(), learner.getUserId()); + + if (gradebookUserActivity == null) { + gradebookUserActivity = new GradebookUserActivity((ToolActivity) activity, learner); + } + + gradebookUserActivity.setFeedback(feedback); + gradebookDAO.insertOrUpdate(gradebookUserActivity); + } + + /** + * @see org.lamsfoundation.lams.gradebook.service.IGradebookService#getGBLessonRows(org.lamsfoundation.lams.usermanagement.Organisation) + */ + @SuppressWarnings("unchecked") + public List getGBLessonRows(Organisation organisation, User user, GBGridView view) { + List lessonRows = new ArrayList(); + + if (organisation != null) { + + List lessons = lessonService.getLessonsByGroupAndUser(user.getUserId(), organisation + .getOrganisationId()); + if (lessons != null) { + + for (Lesson lesson : lessons) { + if (lesson.getLessonClass().isStaffMember(user)) { + GBLessonGridRowDTO lessonRow = new GBLessonGridRowDTO(); + lessonRow.setLessonName(lesson.getLessonName()); + lessonRow.setId(lesson.getLessonId()); + lessonRow.setStartDate(getLocaleDateString(user, lesson.getStartDateTime())); + + if (view == GBGridView.MON_COURSE) { + + // Setting the averages for monitor view + lessonRow.setAverageTimeTaken(gradebookDAO.getAverageDurationLesson(lesson.getLessonId())); + lessonRow.setAverageMark(gradebookDAO.getAverageMarkForLesson(lesson.getLessonId())); + + // Set the gradebook monitor url + String gbMonURL = Configuration.get(ConfigurationKeys.SERVER_URL) + + "gradebook/gradebookMonitoring.do?lessonID=" + lesson.getLessonId().toString(); + lessonRow.setGradebookMonitorURL(gbMonURL); + } else if (view == GBGridView.LRN_COURSE) { + + GradebookUserLesson gbLesson = gradebookDAO.getGradebookUserDataForLesson(lesson.getLessonId(), user.getUserId()); + + lessonRow.setAverageTimeTaken(gradebookDAO.getAverageDurationLesson(lesson.getLessonId())); + lessonRow.setAverageMark(gradebookDAO.getAverageMarkForLesson(lesson.getLessonId())); + + if (gbLesson != null) { + lessonRow.setMark(gbLesson.getMark()); + lessonRow.setFeedback(gbLesson.getFeedback()); + } + + LearnerProgress learnerProgress = monitoringService.getLearnerProgress(user.getUserId(), lesson + .getLessonId()); + lessonRow.setStatus(getLessonStatusStr(learnerProgress)); + if (learnerProgress != null) { + if (learnerProgress.getStartDate() != null && learnerProgress.getFinishDate() != null) { + lessonRow.setTimeTaken(learnerProgress.getFinishDate().getTime() + - learnerProgress.getStartDate().getTime()); + } + + lessonRow.setFinishDate(getLocaleDateString(user, learnerProgress.getFinishDate())); + } + } + + if (lesson.getOrganisation().getOrganisationId() != organisation.getOrganisationId()) { + lessonRow.setSubGroup(lesson.getOrganisation().getName()); + } else { + lessonRow.setSubGroup("-"); + } + + lessonRows.add(lessonRow); + + } + } + } + + } else { + logger.error("Request for gradebook grid with a null organisation"); + } + + return lessonRows; + } + + private String getLocaleDateString(User user, Date date) { + if (user == null || date == null) { + return null; + } + + Locale locale = new Locale(user.getLocale().getLanguageIsoCode(), user.getLocale().getCountryIsoCode()); + String dateStr = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.MEDIUM, locale).format(date); + return dateStr; + } + + /** + * Adds a mark to the aggregated total and saves it + * + * @param gradebookUserLesson + */ + private void aggregateTotalMarkForLesson(GradebookUserLesson gradebookUserLesson) { + Double totalMark = gradebookDAO.getGradebookUserActivityMarkSum(gradebookUserLesson.getLesson().getLessonId(), + gradebookUserLesson.getLearner().getUserId()); + gradebookUserLesson.setMark(totalMark); + gradebookDAO.insertOrUpdate(gradebookUserLesson); + } + + /** + * Gets the GBActivityGridRowDTO fro a given activity and lesson + * + * @param activity + * @param lesson + * @return + */ + private GBActivityGridRowDTO getGradebookActivityDTO(ToolActivity activity, Lesson lesson) { + GBActivityGridRowDTO gactivityDTO = new GBActivityGridRowDTO(); + gactivityDTO.setId(activity.getActivityId()); + gactivityDTO.setRowName(activity.getTitle()); + + // Setting averages + gactivityDTO.setAverageMark(gradebookDAO.getAverageMarkForActivity(activity.getActivityId())); + gactivityDTO.setAverageTimeTaken(gradebookDAO.getAverageDurationForActivity(activity.getActivityId())); + + String monitorUrl = Configuration.get(ConfigurationKeys.SERVER_URL) + activity.getTool().getMonitorUrl() + "?" + + AttributeNames.PARAM_CONTENT_FOLDER_ID + "=" + lesson.getLearningDesign().getContentFolderID() + "&" + + AttributeNames.PARAM_TOOL_CONTENT_ID + "=" + activity.getToolContentId(); + gactivityDTO.setMonitorUrl(monitorUrl); + + // Get the competences for this activity + Set competenceMappings = activity.getCompetenceMappings(); + String competenceMappingsStr = ""; + if (competenceMappings != null) { + for (CompetenceMapping mapping : competenceMappings) { + competenceMappingsStr += mapping.getCompetence().getTitle() + ", "; + } + + // trim the last comma off + if (competenceMappingsStr.length() > 0) { + competenceMappingsStr = competenceMappingsStr.substring(0, competenceMappingsStr.lastIndexOf(",")); + } + } + gactivityDTO.setCompetences(competenceMappingsStr); + + return gactivityDTO; + } + + /** + * Gets the GBActivityGridRowDTO for a given user and activity + * + * @param activity + * @param learner + * @param learnerProgress + * @return + */ + private GBActivityGridRowDTO getGradebookActivityDTO(ToolActivity activity, User learner, + LearnerProgress learnerProgress) { + + logger.debug("Getting gradebook data for activity: " + activity.getActivityId() + ". For user: " + + learner.getUserId()); + + GBActivityGridRowDTO gactivityDTO = new GBActivityGridRowDTO(); + gactivityDTO.setId(activity.getActivityId()); + gactivityDTO.setRowName(activity.getTitle()); + + GradebookUserActivity gradebookActivity = gradebookDAO.getGradebookUserDataForActivity( + activity.getActivityId(), learner.getUserId()); + if (gradebookActivity != null) { + gactivityDTO.setMark(gradebookActivity.getMark()); + gactivityDTO.setFeedback(gradebookActivity.getFeedback()); + } + + // Setting status + gactivityDTO.setTimeTaken(getActivityDuration(learnerProgress, activity)); + gactivityDTO.setStatus(getActivityStatusStr(learnerProgress, activity)); + + // Setting averages + gactivityDTO.setAverageMark(gradebookDAO.getAverageMarkForActivity(activity.getActivityId())); + gactivityDTO.setAverageTimeTaken(gradebookDAO.getAverageDurationForActivity(activity.getActivityId())); + + // Get the competences for this activity + Set competenceMappings = activity.getCompetenceMappings(); + String competenceMappingsStr = ""; + if (competenceMappings != null) { + for (CompetenceMapping mapping : competenceMappings) { + competenceMappingsStr += mapping.getCompetence().getTitle() + ", "; + } + + // trim the last comma off + if (competenceMappingsStr.length() > 0) { + competenceMappingsStr = competenceMappingsStr.substring(0, competenceMappingsStr.lastIndexOf(",")); + } + } + gactivityDTO.setCompetences(competenceMappingsStr); + + // Get the tool outputs for this user if there are any + ToolSession toolSession = toolService.getToolSessionByLearner(learner, activity); + if (toolSession != null) { + // Set the activityLearner URL for this gradebook activity + gactivityDTO.setActivityUrl(Configuration.get(ConfigurationKeys.SERVER_URL) + + activity.getTool().getLearnerProgressUrl() + "&userID=" + learner.getUserId() + "&toolSessionID=" + + toolSession.getToolSessionId().toString()); + + gactivityDTO.setOutput(this.getToolOutputsStr(activity, toolSession, learner)); + } + + return gactivityDTO; + } + + private Long getActivityDuration(LearnerProgress learnerProgress, Activity activity) { + if (learnerProgress != null) { + if (learnerProgress.getCompletedActivities().get(activity) != null) { + CompletedActivityProgress compProg = learnerProgress.getCompletedActivities().get(activity); + if (compProg != null) { + Date startTime = compProg.getStartDate(); + Date endTime = compProg.getFinishDate(); + if (startTime != null && endTime != null) { + return endTime.getTime() - startTime.getTime(); + } + } + } + } + return null; + } + + /** + * Returns the lesson status string which is a reference to an image + * + * @param learnerProgress + * @return + */ + private String getLessonStatusStr(LearnerProgress learnerProgress) { + String status = "-"; + + final String IMAGES_DIR = Configuration.get(ConfigurationKeys.SERVER_URL) + "images"; + if (learnerProgress != null) { + if (learnerProgress.isComplete()) { + status = ""; + } else if (learnerProgress.getAttemptedActivities() != null + && learnerProgress.getAttemptedActivities().size() > 0) { + status = ""; + } + } + return status; + } + + /** + * Returns the activity status string which is a reference to an image + * + * @param learnerProgress + * @param activity + * @return + */ + private String getActivityStatusStr(LearnerProgress learnerProgress, Activity activity) { + + final String IMAGES_DIR = Configuration.get(ConfigurationKeys.SERVER_URL) + "images"; + if (learnerProgress != null) { + byte statusByte = learnerProgress.getProgressState(activity); + if (statusByte == LearnerProgress.ACTIVITY_ATTEMPTED) { + return ""; + } else if (statusByte == LearnerProgress.ACTIVITY_COMPLETED) { + return ""; + } + } + return "-"; + } + + /** + * Gets the outputs for a tool activity and returns the html for the ouputs + * cell in the grid + * + * @param toolAct + * @param toolSession + * @param learner + * @return + */ + private String getToolOutputsStr(ToolActivity toolAct, ToolSession toolSession, User learner) { + String toolOutputsStr = ""; + boolean noOutputs = true; + + if (toolAct != null && toolSession != null && learner != null) { + + SortedMap map = toolService.getOutputDefinitionsFromTool(toolAct + .getToolContentId()); + + Set toolOutputs = new HashSet(); + + if (map.keySet().size() > 0) { + + for (String outputName : map.keySet()) { + + try { + ToolOutput toolOutput = toolService.getOutputFromTool(outputName, toolSession, learner + .getUserId()); + + if (toolOutput != null && toolOutput.getValue().getType() != OutputType.OUTPUT_COMPLEX) { + toolOutputs.add(toolOutput); + + toolOutputsStr += ""; + + noOutputs = false; + } + + } catch (RuntimeException e) { + logger.debug("Runtime exception when attempted to get outputs for activity: " + + toolAct.getActivityId() + ", continuing for other activities", e); + } + } + toolOutputsStr += ""; + + } + } + + // Fix up outputs html if there are not outputs available + if (noOutputs) { + toolOutputsStr = "No output available."; + } else { + toolOutputsStr = " + + + + + + + Index: lams_gradebook/web/errorContent.jsp =================================================================== diff -u --- lams_gradebook/web/errorContent.jsp (revision 0) +++ lams_gradebook/web/errorContent.jsp (revision e074865bde063cd3ac9e531a90857d07de9d121c) @@ -0,0 +1,13 @@ +<%@ taglib uri="tags-fmt" prefix="fmt" %> + + + + + +
+
+

+

+

+
+
Index: lams_gradebook/web/footer.jsp =================================================================== diff -u --- lams_gradebook/web/footer.jsp (revision 0) +++ lams_gradebook/web/footer.jsp (revision e074865bde063cd3ac9e531a90857d07de9d121c) @@ -0,0 +1 @@ + Index: lams_gradebook/web/gradebookCourseLearner.jsp =================================================================== diff -u --- lams_gradebook/web/gradebookCourseLearner.jsp (revision 0) +++ lams_gradebook/web/gradebookCourseLearner.jsp (revision e074865bde063cd3ac9e531a90857d07de9d121c) @@ -0,0 +1,150 @@ + + +<%@ page language="java" pageEncoding="UTF-8" + contentType="text/html;charset=utf-8"%> +<%@ taglib uri="tags-lams" prefix="lams"%> +<%@ taglib uri="tags-html" prefix="html"%> +<%@ taglib uri="tags-fmt" prefix="fmt"%> +<%@ taglib uri="tags-core" prefix="c"%> + + + + Course Gradebook Learner + + + + + + + + + +
+ +
+ +
+

Course Gradebook for ${organisationName}

+
+
+
+
+ +
+
+
+ + +
+ +
Index: lams_gradebook/web/gradebookCourseMonitor.jsp =================================================================== diff -u --- lams_gradebook/web/gradebookCourseMonitor.jsp (revision 0) +++ lams_gradebook/web/gradebookCourseMonitor.jsp (revision e074865bde063cd3ac9e531a90857d07de9d121c) @@ -0,0 +1,183 @@ + + +<%@ page language="java" pageEncoding="UTF-8" + contentType="text/html;charset=utf-8"%> +<%@ taglib uri="tags-lams" prefix="lams"%> +<%@ taglib uri="tags-html" prefix="html"%> +<%@ taglib uri="tags-fmt" prefix="fmt"%> +<%@ taglib uri="tags-core" prefix="c"%> + + + + Course Gradebook Monitor + + + + + + + + + +
+ +
+ +
+

Course Gradebook for ${organisationName}

+
+
+
+
+ +
+
+
+ + +
+ +
Index: lams_gradebook/web/gradebookMonitor.jsp =================================================================== diff -u --- lams_gradebook/web/gradebookMonitor.jsp (revision 0) +++ lams_gradebook/web/gradebookMonitor.jsp (revision e074865bde063cd3ac9e531a90857d07de9d121c) @@ -0,0 +1,305 @@ + + +<%@ page language="java" pageEncoding="UTF-8" contentType="text/html;charset=utf-8" %> +<%@ taglib uri="tags-lams" prefix="lams" %> +<%@ taglib uri="tags-html" prefix="html" %> +<%@ taglib uri="tags-fmt" prefix="fmt"%> +<%@ taglib uri="tags-core" prefix="c"%> + + + + Lesson Gradebook Monitor + + + + + + + + + +
+ +
+
+

Lesson Gradebook for ${lessonDetails.lessonName}

+
+
+
+
+ +
+
+ +
+
+ +
+ +
+
+ + +
+ +
Index: lams_gradebook/web/includes/jsp/jqGridIncludes.jsp =================================================================== diff -u --- lams_gradebook/web/includes/jsp/jqGridIncludes.jsp (revision 0) +++ lams_gradebook/web/includes/jsp/jqGridIncludes.jsp (revision e074865bde063cd3ac9e531a90857d07de9d121c) @@ -0,0 +1,144 @@ +<%@ taglib uri="tags-fmt" prefix="fmt"%> +<%@ taglib uri="tags-lams" prefix="lams" %> + + + + + + + + + + + + + Index: lams_gradebook/web/msgContent.jsp =================================================================== diff -u --- lams_gradebook/web/msgContent.jsp (revision 0) +++ lams_gradebook/web/msgContent.jsp (revision e074865bde063cd3ac9e531a90857d07de9d121c) @@ -0,0 +1,12 @@ +<%@ taglib uri="tags-fmt" prefix="fmt" %> + + + + + +
+
+

+

+
+
Index: lams_gradebook/web/template.jsp =================================================================== diff -u --- lams_gradebook/web/template.jsp (revision 0) +++ lams_gradebook/web/template.jsp (revision e074865bde063cd3ac9e531a90857d07de9d121c) @@ -0,0 +1,29 @@ +<%@ page language="java" pageEncoding="UTF-8" contentType="text/html;charset=utf-8" %> + +<%@ taglib uri="tags-tiles" prefix="tiles" %> +<%@ taglib uri="tags-html" prefix="html" %> +<%@ taglib uri="tags-lams" prefix="lams" %> +<%@ taglib uri="tags-fmt" prefix="fmt" %> + + + + + + <fmt:message><tiles:getAsString name="titleKey"/></fmt:message> + + + + + + + + + + +
+
+ +
+
+ +