From 27ae9095639bb228a1b7ff86a3ebe4264abf05be Mon Sep 17 00:00:00 2001
From: mschaefers <mschaefers@scoop-gmbh.de>
Date: Thu, 29 Nov 2012 12:33:09 -0500
Subject: [PATCH] feature: when using LdapUserService one can configure Gitblit to fetch all users from ldap that can possibly login. This allows to see newly generated LDAP users instantly in Gitblit. By now an LDAP user had to log in once to appear in GitBlit.

---
 src/com/gitblit/wicket/pages/EditRepositoryPage.java |   59 +++++++++++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 47 insertions(+), 12 deletions(-)

diff --git a/src/com/gitblit/wicket/pages/EditRepositoryPage.java b/src/com/gitblit/wicket/pages/EditRepositoryPage.java
index 58fdf66..dead34a 100644
--- a/src/com/gitblit/wicket/pages/EditRepositoryPage.java
+++ b/src/com/gitblit/wicket/pages/EditRepositoryPage.java
@@ -115,6 +115,11 @@
 		setStatelessHint(false);
 		setOutputMarkupId(true);
 	}
+	
+	@Override
+	protected boolean requiresPageMap() {
+		return true;
+	}
 
 	protected void setupPage(RepositoryModel model) {
 		this.repositoryModel = model;
@@ -141,11 +146,11 @@
 			}
 		} else {
 			super.setupPage(getString("gb.edit"), repositoryModel.name);
-			if (repositoryModel.accessRestriction.exceeds(AccessRestrictionType.NONE)) {
-				repositoryUsers.addAll(GitBlit.self().getUserAccessPermissions(repositoryModel));
-				repositoryTeams.addAll(GitBlit.self().getTeamAccessPermissions(repositoryModel));
-				Collections.sort(repositoryUsers);
-			}
+			repositoryUsers.addAll(GitBlit.self().getUserAccessPermissions(repositoryModel));
+			repositoryTeams.addAll(GitBlit.self().getTeamAccessPermissions(repositoryModel));
+			Collections.sort(repositoryUsers);
+			Collections.sort(repositoryTeams);
+			
 			federationSets.addAll(repositoryModel.federationSets);
 			if (!ArrayUtils.isEmpty(repositoryModel.indexedBranches)) {
 				indexedBranches.addAll(repositoryModel.indexedBranches);
@@ -373,7 +378,7 @@
 		form.add(new TextField<String>("name").setEnabled(allowEditName));
 		form.add(new TextField<String>("description"));
 		form.add(new DropDownChoice<String>("owner", GitBlit.self().getAllUsernames())
-				.setEnabled(GitBlitWebSession.get().canAdmin()));
+				.setEnabled(GitBlitWebSession.get().canAdmin() && !repositoryModel.isPersonalRepository()));
 		form.add(new CheckBox("allowForks"));
 		DropDownChoice<AccessRestrictionType> accessRestriction = new DropDownChoice<AccessRestrictionType>("accessRestriction", Arrays
 				.asList(AccessRestrictionType.values()), new AccessRestrictionRenderer());
@@ -389,9 +394,10 @@
 		}
 		form.add(new DropDownChoice<String>("HEAD", availableRefs).setEnabled(availableRefs.size() > 0));
 
-		List<String> gcPeriods = Arrays.asList("1 day", "2 days", "3 days", "4 days", "5 days", "7 days", "10 days", "14 days");
-		form.add(new DropDownChoice<String>("gcPeriod", gcPeriods));
-		form.add(new TextField<String>("gcThreshold"));
+		boolean gcEnabled = GitBlit.getBoolean(Keys.git.enableGarbageCollection, false); 
+		List<Integer> gcPeriods = Arrays.asList(1, 2, 3, 4, 5, 7, 10, 14 );
+		form.add(new DropDownChoice<Integer>("gcPeriod", gcPeriods, new GCPeriodRenderer()).setEnabled(gcEnabled));
+		form.add(new TextField<String>("gcThreshold").setEnabled(gcEnabled));
 
 		// federation strategies - remove ORIGIN choice if this repository has
 		// no origin.
@@ -417,8 +423,10 @@
 		final RadioChoice<AuthorizationControl> authorizationControl = new RadioChoice<Constants.AuthorizationControl>(
 				"authorizationControl", acList, new AuthorizationControlRenderer());
 		form.add(authorizationControl);
-				
-		form.add(new CheckBox("verifyCommitter"));
+		
+		final CheckBox verifyCommitter = new CheckBox("verifyCommitter");
+		verifyCommitter.setOutputMarkupId(true);
+		form.add(verifyCommitter);
 
 		form.add(usersPalette);
 		form.add(teamsPalette);
@@ -440,14 +448,16 @@
 			usersPalette.setEnabled(false);
 			teamsPalette.setEnabled(false);
 			authorizationControl.setEnabled(false);
+			verifyCommitter.setEnabled(false);
 		} else {
 			// authenticated something
 			// enable authorization controls
 			authorizationControl.setEnabled(true);
+			verifyCommitter.setEnabled(true);
 			
 			boolean allowFineGrainedControls = repositoryModel.authorizationControl.equals(AuthorizationControl.NAMED);
 			usersPalette.setEnabled(allowFineGrainedControls);
-			teamsPalette.setEnabled(allowFineGrainedControls);			
+			teamsPalette.setEnabled(allowFineGrainedControls);
 		}
 		
 		accessRestriction.add(new AjaxFormComponentUpdatingBehavior("onchange") {
@@ -458,6 +468,7 @@
 				// enable/disable permissions panel based on access restriction
 				boolean allowAuthorizationControl = repositoryModel.accessRestriction.exceeds(AccessRestrictionType.NONE);
 				authorizationControl.setEnabled(allowAuthorizationControl);
+				verifyCommitter.setEnabled(allowAuthorizationControl);
 				
 				boolean allowFineGrainedControls = allowAuthorizationControl && repositoryModel.authorizationControl.equals(AuthorizationControl.NAMED);
 				usersPalette.setEnabled(allowFineGrainedControls);
@@ -468,6 +479,7 @@
 				}
 				
 				target.addComponent(authorizationControl);
+				target.addComponent(verifyCommitter);
 				target.addComponent(usersPalette);
 				target.addComponent(teamsPalette);
 			}
@@ -619,4 +631,27 @@
 			return Integer.toString(index);
 		}
 	}
+	
+	private class GCPeriodRenderer implements IChoiceRenderer<Integer> {
+
+		private static final long serialVersionUID = 1L;
+
+		public GCPeriodRenderer() {
+		}
+
+		@Override
+		public String getDisplayValue(Integer value) {
+			if (value == 1) {
+				return getString("gb.duration.oneDay");
+			} else {
+				return MessageFormat.format(getString("gb.duration.days"), value);
+			}
+		}
+
+		@Override
+		public String getIdValue(Integer value, int index) {
+			return Integer.toString(index);
+		}
+	}
+	
 }

--
Gitblit v1.9.1