diff --git a/gradebookng/tool/src/java/org/sakaiproject/gradebookng/GradebookNgApplication.properties b/gradebookng/tool/src/java/org/sakaiproject/gradebookng/GradebookNgApplication.properties
index 68cb90bfb4..7b394ba3ba 100644
--- a/gradebookng/tool/src/java/org/sakaiproject/gradebookng/GradebookNgApplication.properties
+++ b/gradebookng/tool/src/java/org/sakaiproject/gradebookng/GradebookNgApplication.properties
@@ -42,6 +42,9 @@ label.gradeitem.counted=Gradebook Item is included in the course grade calculati
label.gradeitem.notcounted=Gradebook Item not included in course grade calculation.
label.gradeitem.extracredit=This is an Extra Credit Gradebook Item
label.gradeitem.extracreditcategory=This is an Extra Credit Category
+label.gradeitem.droplowestcategory=This category is dropping the {0} lowest score(s).
+label.gradeitem.drophighestcategory=This category is dropping the {0} highest score(s).
+label.gradeitem.keephighestcategory=This category is only keeping the {0} highest score(s).
label.gradeitem.categoryaverage={0} Weighted Average
label.gradeitem.categoryaveragelabel=Weighted Average
label.gradeitem.categoryheadertooltip=Category: {0}
@@ -86,6 +89,7 @@ filter.studentsclear = Clear student filter
filter.groups = Filter by group/section
button.addgradeitem = Add Gradebook Item
+button.viewgradebookitems = View Gradebook Items
button.savechanges = Save Changes
button.cancel = Cancel
button.done = Done
@@ -102,6 +106,7 @@ button.print = Print
heading.addgradeitem = Add Gradebook Item
heading.editgradeitem = Edit Gradebook Item
+heading.viewgradebookitems = View Gradebook Items
heading.studentsummary = Grade Summary for {0} ({1})
heading.updateungradeditems = Set Score for Empty Cells
heading.gradelog = Grade Log for {0} ({1})
@@ -284,6 +289,15 @@ importExport.export.csv.headers.example.ignore = This column will be ignored
# Student ID and Student Name are not here because they are a special string.
# To i18n these, the import helper would need to be made to look for columns by position instead of by column title
+#Items Page Labels
+items.tableHeader.items = Gradebook Item
+items.tableHeader.outOf = Points
+items.tableHeader.numberGraded = Number of
Graded Students
+items.tableHeader.statistics = Grade Statistics
[Average Score]
+items.tableHeader.delete = Delete
+
+items.table.total.points = Total Points
+
assignment.option.edit = Edit Item Details
assignment.option.viewgradestatistics = View Grade Statistics
assignment.option.moveleft = Move Left
@@ -355,6 +369,8 @@ label.nocategoryscore = -
errorpage.heading = Something went wrong
errorpage.text = You should refresh and try again. If you end up back here, quote the following error number to your local IT Support: {0}.
+itemspage.main.heading = Gradebook Items
+
settingspage.main.heading = Settings
settingspage.gradeentry.heading = Grade Entry
diff --git a/gradebookng/tool/src/java/org/sakaiproject/gradebookng/tool/model/GbItem.java b/gradebookng/tool/src/java/org/sakaiproject/gradebookng/tool/model/GbItem.java
new file mode 100644
index 0000000000..4a38570910
--- /dev/null
+++ b/gradebookng/tool/src/java/org/sakaiproject/gradebookng/tool/model/GbItem.java
@@ -0,0 +1,35 @@
+package org.sakaiproject.gradebookng.tool.model;
+
+import java.io.Serializable;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.Setter;
+import org.sakaiproject.service.gradebook.shared.Assignment;
+import org.sakaiproject.service.gradebook.shared.CategoryDefinition;
+
+@AllArgsConstructor
+public class GbItem implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @Getter
+ @Setter
+ private Long itemId;
+
+ @Getter
+ @Setter
+ private CategoryDefinition categoryDefinition;
+
+ @Getter
+ @Setter
+ private Assignment gradebookItem;
+
+ @Getter
+ @Setter
+ private Double categoryPointsOrWeight;
+
+ @Getter
+ @Setter
+ private Integer numGraded;
+}
diff --git a/gradebookng/tool/src/java/org/sakaiproject/gradebookng/tool/pages/BasePage.java b/gradebookng/tool/src/java/org/sakaiproject/gradebookng/tool/pages/BasePage.java
index 08373b2dc2..234a995440 100644
--- a/gradebookng/tool/src/java/org/sakaiproject/gradebookng/tool/pages/BasePage.java
+++ b/gradebookng/tool/src/java/org/sakaiproject/gradebookng/tool/pages/BasePage.java
@@ -170,6 +170,7 @@ public class BasePage extends WebPage {
this.settingsPageLink.add(new Label("screenreaderlabel", getString("link.screenreader.tabnotselected")));
nav.add(this.settingsPageLink);
+
add(nav);
// Add a FeedbackPanel for displaying our messages
@@ -239,15 +240,19 @@ public class BasePage extends WebPage {
* Helper to build a notification flag with a Bootstrap popover
*/
public WebMarkupContainer buildFlagWithPopover(final String componentId, final String message) {
+ return this.buildFlagWithPopover(componentId, message, "#gradebookGrades", "manual", "bottom");
+ }
+
+ public WebMarkupContainer buildFlagWithPopover(final String componentId, final String message, final String dataContainer, final String dataTrigger, final String dataPlacement) {
final WebMarkupContainer flagWithPopover = new WebMarkupContainer(componentId);
flagWithPopover.add(new AttributeModifier("title", message));
flagWithPopover.add(new AttributeModifier("aria-label", message));
flagWithPopover.add(new AttributeModifier("data-toggle", "popover"));
- flagWithPopover.add(new AttributeModifier("data-trigger", "manual"));
- flagWithPopover.add(new AttributeModifier("data-placement", "bottom"));
+ flagWithPopover.add(new AttributeModifier("data-trigger", dataTrigger));
+ flagWithPopover.add(new AttributeModifier("data-placement", dataPlacement));
flagWithPopover.add(new AttributeModifier("data-html", "true"));
- flagWithPopover.add(new AttributeModifier("data-container", "#gradebookGrades"));
+ flagWithPopover.add(new AttributeModifier("data-container", dataContainer));
flagWithPopover.add(new AttributeModifier("data-template",
"