From 3daba4304dba818d54eb9b74d8d35df5aab8fee5 Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Fri, 22 Nov 2013 10:36:05 -0500 Subject: [PATCH] Add pull request linking in changelog to generated documentation --- src/main/java/com/gitblit/wicket/pages/ProjectPage.java | 56 ++++++++++++++++++++++++++++++++++++++++---------------- 1 files changed, 40 insertions(+), 16 deletions(-) diff --git a/src/main/java/com/gitblit/wicket/pages/ProjectPage.java b/src/main/java/com/gitblit/wicket/pages/ProjectPage.java index fbd1db0..19588a9 100644 --- a/src/main/java/com/gitblit/wicket/pages/ProjectPage.java +++ b/src/main/java/com/gitblit/wicket/pages/ProjectPage.java @@ -33,6 +33,8 @@ import com.gitblit.models.UserModel; 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 +44,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,9 +58,30 @@ 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) { @@ -73,21 +97,21 @@ 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 +130,13 @@ } int daysBack = params == null ? 0 : WicketUtils.getDaysBack(params); if (daysBack < 1) { - daysBack = 7; + daysBack = GitBlit.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.put("db", 0); - + params.remove("db"); + List<RepositoryModel> repositories = getRepositories(params); Collections.sort(repositories, new Comparator<RepositoryModel>() { @Override @@ -123,7 +147,7 @@ }); addActivity(user, repositories, getString("gb.recentActivity"), daysBack); - + if (repositories.isEmpty()) { add(new Label("repositoryList").setVisible(false)); } else { @@ -132,7 +156,7 @@ add(repoList); } } - + @Override protected void addDropDownMenus(List<PageRegistration> pages) { PageParameters params = getPageParameters(); @@ -151,13 +175,13 @@ } 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()) { @@ -167,7 +191,7 @@ } return projectModels; } - + private ProjectModel getProjectModel(String name) { for (ProjectModel project : getProjectModels()) { if (name.equalsIgnoreCase(project.name)) { @@ -176,7 +200,7 @@ } return null; } - + protected List<DropDownMenuItem> getProjectsMenu() { List<DropDownMenuItem> menu = new ArrayList<DropDownMenuItem>(); List<ProjectModel> projects = new ArrayList<ProjectModel>(); @@ -213,7 +237,7 @@ } return menu; } - + private String transformMarkdown(String markdown) { String message = ""; if (!StringUtils.isEmpty(markdown)) { -- Gitblit v1.9.1