From 01995873731e7efa517ca66246547b3084f8d529 Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Thu, 01 May 2014 14:27:28 -0400
Subject: [PATCH] Allow milestone deletion within the edit milestone page
---
src/main/java/com/gitblit/wicket/pages/ProjectPage.java | 67 +++++++++++++++++++++++----------
1 files changed, 46 insertions(+), 21 deletions(-)
diff --git a/src/main/java/com/gitblit/wicket/pages/ProjectPage.java b/src/main/java/com/gitblit/wicket/pages/ProjectPage.java
index 97a31f9..b92282b 100644
--- a/src/main/java/com/gitblit/wicket/pages/ProjectPage.java
+++ b/src/main/java/com/gitblit/wicket/pages/ProjectPage.java
@@ -25,14 +25,15 @@
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.link.ExternalLink;
-import com.gitblit.GitBlit;
import com.gitblit.Keys;
-import com.gitblit.SyndicationServlet;
import com.gitblit.models.ProjectModel;
import com.gitblit.models.RepositoryModel;
import com.gitblit.models.UserModel;
+import com.gitblit.servlet.SyndicationServlet;
import com.gitblit.utils.MarkdownUtils;
import com.gitblit.utils.StringUtils;
+import com.gitblit.wicket.CacheControl;
+import com.gitblit.wicket.CacheControl.LastModified;
import com.gitblit.wicket.GitBlitWebApp;
import com.gitblit.wicket.GitBlitWebSession;
import com.gitblit.wicket.GitblitRedirectException;
@@ -42,8 +43,9 @@
import com.gitblit.wicket.WicketUtils;
import com.gitblit.wicket.panels.FilterableRepositoryList;
+@CacheControl(LastModified.PROJECT)
public class ProjectPage extends DashboardPage {
-
+
List<ProjectModel> projectModels = new ArrayList<ProjectModel>();
public ProjectPage() {
@@ -55,39 +57,60 @@
super(params);
setup(params);
}
-
+
+ @Override
protected Class<? extends BasePage> getRootNavPageClass() {
return RepositoriesPage.class;
+ }
+
+ @Override
+ protected void setLastModified() {
+ if (getClass().isAnnotationPresent(CacheControl.class)) {
+ CacheControl cacheControl = getClass().getAnnotation(CacheControl.class);
+ switch (cacheControl.value()) {
+ case PROJECT:
+ String projectName = WicketUtils.getProjectName(getPageParameters());
+ if (!StringUtils.isEmpty(projectName)) {
+ ProjectModel project = getProjectModel(projectName);
+ if (project != null) {
+ setLastModified(project.lastChange);
+ }
+ }
+ break;
+ default:
+ super.setLastModified();
+ }
+ }
}
private void setup(PageParameters params) {
setupPage("", "");
// check to see if we should display a login message
- boolean authenticateView = GitBlit.getBoolean(Keys.web.authenticateViewPages, true);
+ boolean authenticateView = app().settings().getBoolean(Keys.web.authenticateViewPages, true);
if (authenticateView && !GitBlitWebSession.get().isLoggedIn()) {
authenticationError("Please login");
return;
}
- String projectName = WicketUtils.getProjectName(params);
+ String projectName = params == null ? null : WicketUtils.getProjectName(params);
if (StringUtils.isEmpty(projectName)) {
throw new GitblitRedirectException(GitBlitWebApp.get().getHomePage());
}
-
+
ProjectModel project = getProjectModel(projectName);
if (project == null) {
throw new GitblitRedirectException(GitBlitWebApp.get().getHomePage());
}
-
+
add(new Label("projectTitle", project.getDisplayName()));
add(new Label("projectDescription", project.description));
-
+
String feedLink = SyndicationServlet.asLink(getRequest().getRelativePathPrefixToContextRoot(), projectName, null, 0);
add(new ExternalLink("syndication", feedLink));
add(WicketUtils.syndicationDiscoveryLink(SyndicationServlet.getTitle(project.getDisplayName(),
null), feedLink));
-
+
// project markdown message
String pmessage = transformMarkdown(project.projectMarkdown);
Component projectMessage = new Label("projectMessage", pmessage)
@@ -106,13 +129,15 @@
}
int daysBack = params == null ? 0 : WicketUtils.getDaysBack(params);
if (daysBack < 1) {
- daysBack = GitBlit.getInteger(Keys.web.activityDuration, 7);
+ daysBack = app().settings().getInteger(Keys.web.activityDuration, 7);
}
// reset the daysback parameter so that we have a complete project
// repository list. the recent activity will be built up by the
// reflog utils.
- params.remove("db");
-
+ if (params != null) {
+ params.remove("db");
+ }
+
List<RepositoryModel> repositories = getRepositories(params);
Collections.sort(repositories, new Comparator<RepositoryModel>() {
@Override
@@ -123,7 +148,7 @@
});
addActivity(user, repositories, getString("gb.recentActivity"), daysBack);
-
+
if (repositories.isEmpty()) {
add(new Label("repositoryList").setVisible(false));
} else {
@@ -132,7 +157,7 @@
add(repoList);
}
}
-
+
@Override
protected void addDropDownMenus(List<PageRegistration> pages) {
PageParameters params = getPageParameters();
@@ -151,23 +176,23 @@
}
pages.add(menu);
-
+
DropDownMenuRegistration projects = new DropDownMenuRegistration("gb.projects",
ProjectPage.class);
projects.menuItems.addAll(getProjectsMenu());
pages.add(projects);
}
-
+
@Override
protected List<ProjectModel> getProjectModels() {
if (projectModels.isEmpty()) {
List<RepositoryModel> repositories = getRepositoryModels();
- List<ProjectModel> projects = GitBlit.self().getProjectModels(repositories, false);
+ List<ProjectModel> projects = app().projects().getProjectModels(repositories, false);
projectModels.addAll(projects);
}
return projectModels;
}
-
+
private ProjectModel getProjectModel(String name) {
for (ProjectModel project : getProjectModels()) {
if (name.equalsIgnoreCase(project.name)) {
@@ -176,7 +201,7 @@
}
return null;
}
-
+
protected List<DropDownMenuItem> getProjectsMenu() {
List<DropDownMenuItem> menu = new ArrayList<DropDownMenuItem>();
List<ProjectModel> projects = new ArrayList<ProjectModel>();
@@ -213,7 +238,7 @@
}
return menu;
}
-
+
private String transformMarkdown(String markdown) {
String message = "";
if (!StringUtils.isEmpty(markdown)) {
--
Gitblit v1.9.1