You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

ProjectsPage.java 4.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. /*
  2. * Copyright 2012 gitblit.com.
  3. *
  4. * Licensed under the Apache License, Version 2.0 (the "License");
  5. * you may not use this file except in compliance with the License.
  6. * You may obtain a copy of the License at
  7. *
  8. * http://www.apache.org/licenses/LICENSE-2.0
  9. *
  10. * Unless required by applicable law or agreed to in writing, software
  11. * distributed under the License is distributed on an "AS IS" BASIS,
  12. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13. * See the License for the specific language governing permissions and
  14. * limitations under the License.
  15. */
  16. package com.gitblit.wicket.pages;
  17. import java.util.Collections;
  18. import java.util.List;
  19. import org.apache.wicket.PageParameters;
  20. import org.apache.wicket.markup.html.basic.Label;
  21. import org.apache.wicket.markup.repeater.Item;
  22. import org.apache.wicket.markup.repeater.data.DataView;
  23. import org.apache.wicket.markup.repeater.data.ListDataProvider;
  24. import com.gitblit.Keys;
  25. import com.gitblit.models.Menu.ParameterMenuItem;
  26. import com.gitblit.models.NavLink.DropDownPageMenuNavLink;
  27. import com.gitblit.models.NavLink;
  28. import com.gitblit.models.ProjectModel;
  29. import com.gitblit.wicket.GitBlitWebSession;
  30. import com.gitblit.wicket.WicketUtils;
  31. import com.gitblit.wicket.panels.LinkPanel;
  32. public class ProjectsPage extends RootPage {
  33. public ProjectsPage() {
  34. super();
  35. setup(null);
  36. }
  37. public ProjectsPage(PageParameters params) {
  38. super(params);
  39. setup(params);
  40. }
  41. @Override
  42. protected boolean reusePageParameters() {
  43. return true;
  44. }
  45. @Override
  46. protected Class<? extends BasePage> getRootNavPageClass() {
  47. return RepositoriesPage.class;
  48. }
  49. @Override
  50. protected List<ProjectModel> getProjectModels() {
  51. return app().projects().getProjectModels(getRepositoryModels(), false);
  52. }
  53. private void setup(PageParameters params) {
  54. setupPage("", "");
  55. // check to see if we should display a login message
  56. boolean authenticateView = app().settings().getBoolean(Keys.web.authenticateViewPages, true);
  57. if (authenticateView && !GitBlitWebSession.get().isLoggedIn()) {
  58. add(new Label("projectsPanel"));
  59. return;
  60. }
  61. List<ProjectModel> projects = getProjects(params);
  62. Collections.sort(projects);
  63. ListDataProvider<ProjectModel> dp = new ListDataProvider<ProjectModel>(projects);
  64. DataView<ProjectModel> dataView = new DataView<ProjectModel>("project", dp) {
  65. private static final long serialVersionUID = 1L;
  66. int counter;
  67. @Override
  68. protected void onBeforeRender() {
  69. super.onBeforeRender();
  70. counter = 0;
  71. }
  72. @Override
  73. public void populateItem(final Item<ProjectModel> item) {
  74. final ProjectModel entry = item.getModelObject();
  75. PageParameters pp = WicketUtils.newProjectParameter(entry.name);
  76. item.add(new LinkPanel("projectTitle", "list", entry.getDisplayName(),
  77. ProjectPage.class, pp));
  78. item.add(new LinkPanel("projectDescription", "list", entry.description,
  79. ProjectPage.class, pp));
  80. item.add(new Label("repositoryCount", entry.repositories.size()
  81. + " "
  82. + (entry.repositories.size() == 1 ? getString("gb.repository")
  83. : getString("gb.repositories"))));
  84. String lastChange;
  85. if (entry.lastChange.getTime() == 0) {
  86. lastChange = "--";
  87. } else {
  88. lastChange = getTimeUtils().timeAgo(entry.lastChange);
  89. }
  90. Label lastChangeLabel = new Label("projectLastChange", lastChange);
  91. item.add(lastChangeLabel);
  92. WicketUtils.setCssClass(lastChangeLabel, getTimeUtils()
  93. .timeAgoCss(entry.lastChange));
  94. WicketUtils.setAlternatingBackground(item, counter);
  95. counter++;
  96. }
  97. };
  98. add(dataView);
  99. }
  100. @Override
  101. protected void addDropDownMenus(List<NavLink> navLinks) {
  102. PageParameters params = getPageParameters();
  103. DropDownPageMenuNavLink menu = new DropDownPageMenuNavLink("gb.filters",
  104. ProjectsPage.class);
  105. // preserve time filter option on repository choices
  106. menu.menuItems.addAll(getRepositoryFilterItems(params));
  107. // preserve repository filter option on time choices
  108. menu.menuItems.addAll(getTimeFilterItems(params));
  109. if (menu.menuItems.size() > 0) {
  110. // Reset Filter
  111. menu.menuItems.add(new ParameterMenuItem(getString("gb.reset")));
  112. }
  113. navLinks.add(menu);
  114. }
  115. }