From 13208e8c3b34c321b470aa181b705f78fcc09c5f Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Mon, 12 Aug 2013 08:44:33 -0400
Subject: [PATCH] Merge pull request #111 from atdt/master

---
 src/main/java/com/gitblit/wicket/pages/BasePage.java        |    4 ++++
 src/main/java/com/gitblit/wicket/pages/MyDashboardPage.java |    4 ++++
 releases.moxie                                              |    6 +++++-
 src/main/distrib/data/gitblit.properties                    |    5 +++++
 src/main/java/com/gitblit/wicket/pages/RootPage.java        |    8 ++++++++
 5 files changed, 26 insertions(+), 1 deletions(-)

diff --git a/releases.moxie b/releases.moxie
index fcbdb7b..fea4499 100644
--- a/releases.moxie
+++ b/releases.moxie
@@ -18,11 +18,15 @@
     - Added pptx extension for tree page icon lookup
     - Fixed project links on dashboard page when web.mountParameters=false
     changes: ~
-    additions: ~
+    additions:
+    - Add setting for maximum number of days of activity to that may be requested
     dependencyChanges: ~
     contributors:
     - github/guriguri
     - Doug Ayers
+    - Ori Livneh
+    settings:
+    - { name: 'web.activityDurationMaximum', defaultValue: 30 }
 }
 
 #
diff --git a/src/main/distrib/data/gitblit.properties b/src/main/distrib/data/gitblit.properties
index 7f2f8b4..770bd39 100644
--- a/src/main/distrib/data/gitblit.properties
+++ b/src/main/distrib/data/gitblit.properties
@@ -882,6 +882,11 @@
 # SINCE 1.3.0
 web.activityDurationChoices = 1 3 7 14 21 28
 
+# Maximum number of days of activity that may be displayed on the activity page.
+#
+# SINCE 1.3.2
+web.activityDurationMaximum = 30
+
 # The number of days of commits to cache in memory for the dashboard, activity,
 # and project pages.  A value of 0 will disable all caching and will parse commits
 # in each repository per-request.  If the value > 0 these pages will try to fulfill
diff --git a/src/main/java/com/gitblit/wicket/pages/BasePage.java b/src/main/java/com/gitblit/wicket/pages/BasePage.java
index c9e11b0..2bab118 100644
--- a/src/main/java/com/gitblit/wicket/pages/BasePage.java
+++ b/src/main/java/com/gitblit/wicket/pages/BasePage.java
@@ -325,6 +325,7 @@
 		String regex = WicketUtils.getRegEx(params);
 		String team = WicketUtils.getTeam(params);
 		int daysBack = params.getInt("db", 0);
+		int maxDaysBack = GitBlit.getInteger(Keys.web.activityDurationMaximum, 30);
 
 		List<ProjectModel> availableModels = getProjectModels();
 		Set<ProjectModel> models = new HashSet<ProjectModel>();
@@ -372,6 +373,9 @@
 
 		// time-filter the list
 		if (daysBack > 0) {
+			if (maxDaysBack > 0 && daysBack > maxDaysBack) {
+				daysBack = maxDaysBack;
+			}
 			Calendar cal = Calendar.getInstance();
 			cal.set(Calendar.HOUR_OF_DAY, 0);
 			cal.set(Calendar.MINUTE, 0);
diff --git a/src/main/java/com/gitblit/wicket/pages/MyDashboardPage.java b/src/main/java/com/gitblit/wicket/pages/MyDashboardPage.java
index 32c128d..0768b2a 100644
--- a/src/main/java/com/gitblit/wicket/pages/MyDashboardPage.java
+++ b/src/main/java/com/gitblit/wicket/pages/MyDashboardPage.java
@@ -96,9 +96,13 @@
 
 		// parameters
 		int daysBack = params == null ? 0 : WicketUtils.getDaysBack(params);
+		int maxDaysBack = GitBlit.getInteger(Keys.web.activityDurationMaximum, 30);
 		if (daysBack < 1) {
 			daysBack = GitBlit.getInteger(Keys.web.activityDuration, 7);
 		}
+		if (maxDaysBack > 0 && daysBack > maxDaysBack) {
+			daysBack = maxDaysBack;
+		}
 		Calendar c = Calendar.getInstance();
 		c.add(Calendar.DATE, -1*daysBack);
 		Date minimumDate = c.getTime();
diff --git a/src/main/java/com/gitblit/wicket/pages/RootPage.java b/src/main/java/com/gitblit/wicket/pages/RootPage.java
index 7739e6d..a81d63f 100644
--- a/src/main/java/com/gitblit/wicket/pages/RootPage.java
+++ b/src/main/java/com/gitblit/wicket/pages/RootPage.java
@@ -345,8 +345,12 @@
 	protected List<DropDownMenuItem> getTimeFilterItems(PageParameters params) {
 		// days back choices - additive parameters
 		int daysBack = GitBlit.getInteger(Keys.web.activityDuration, 7);
+		int maxDaysBack = GitBlit.getInteger(Keys.web.activityDurationMaximum, 30);
 		if (daysBack < 1) {
 			daysBack = 7;
+		}
+		if (daysBack > maxDaysBack) {
+			daysBack = maxDaysBack;
 		}
 		PageParameters clonedParams;
 		if (params == null) {
@@ -397,6 +401,7 @@
 		String regex = WicketUtils.getRegEx(params);
 		String team = WicketUtils.getTeam(params);
 		int daysBack = params.getInt("db", 0);
+		int maxDaysBack = GitBlit.getInteger(Keys.web.activityDurationMaximum, 30);
 
 		List<RepositoryModel> availableModels = getRepositoryModels();
 		Set<RepositoryModel> models = new HashSet<RepositoryModel>();
@@ -487,6 +492,9 @@
 
 		// time-filter the list
 		if (daysBack > 0) {
+			if (maxDaysBack > 0 && daysBack > maxDaysBack) {
+				daysBack = maxDaysBack;
+			}
 			Calendar cal = Calendar.getInstance();
 			cal.set(Calendar.HOUR_OF_DAY, 0);
 			cal.set(Calendar.MINUTE, 0);

--
Gitblit v1.9.1