James Moger
2015-11-22 ed552ba47c02779c270ffd62841d6d1048dade70
commit | author | age
13a3f5 1 /*
JM 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
7fcfa3 18 import java.util.Collections;
13a3f5 19 import java.util.List;
JM 20
21 import org.apache.wicket.PageParameters;
22 import org.apache.wicket.markup.html.basic.Label;
23 import org.apache.wicket.markup.repeater.Item;
24 import org.apache.wicket.markup.repeater.data.DataView;
25 import org.apache.wicket.markup.repeater.data.ListDataProvider;
26
27 import com.gitblit.Keys;
856f3f 28 import com.gitblit.models.Menu.ParameterMenuItem;
7a401a 29 import com.gitblit.models.NavLink.DropDownPageMenuNavLink;
JM 30 import com.gitblit.models.NavLink;
13a3f5 31 import com.gitblit.models.ProjectModel;
JM 32 import com.gitblit.wicket.GitBlitWebSession;
33 import com.gitblit.wicket.WicketUtils;
34 import com.gitblit.wicket.panels.LinkPanel;
35
36 public class ProjectsPage extends RootPage {
37
38     public ProjectsPage() {
39         super();
40         setup(null);
41     }
42
43     public ProjectsPage(PageParameters params) {
44         super(params);
45         setup(params);
46     }
47
48     @Override
49     protected boolean reusePageParameters() {
50         return true;
51     }
699e71 52
1e1b85 53     @Override
ff7d3c 54     protected Class<? extends BasePage> getRootNavPageClass() {
JM 55         return RepositoriesPage.class;
56     }
57
58     @Override
1e1b85 59     protected List<ProjectModel> getProjectModels() {
99d0d4 60         return app().projects().getProjectModels(getRepositoryModels(), false);
1e1b85 61     }
13a3f5 62
JM 63     private void setup(PageParameters params) {
64         setupPage("", "");
65         // check to see if we should display a login message
99d0d4 66         boolean authenticateView = app().settings().getBoolean(Keys.web.authenticateViewPages, true);
13a3f5 67         if (authenticateView && !GitBlitWebSession.get().isLoggedIn()) {
JM 68             add(new Label("projectsPanel"));
69             return;
70         }
71
72         List<ProjectModel> projects = getProjects(params);
7fcfa3 73         Collections.sort(projects);
13a3f5 74
JM 75         ListDataProvider<ProjectModel> dp = new ListDataProvider<ProjectModel>(projects);
76
77         DataView<ProjectModel> dataView = new DataView<ProjectModel>("project", dp) {
78             private static final long serialVersionUID = 1L;
79             int counter;
80
81             @Override
82             protected void onBeforeRender() {
83                 super.onBeforeRender();
84                 counter = 0;
85             }
86
699e71 87             @Override
13a3f5 88             public void populateItem(final Item<ProjectModel> item) {
JM 89                 final ProjectModel entry = item.getModelObject();
90
91                 PageParameters pp = WicketUtils.newProjectParameter(entry.name);
92                 item.add(new LinkPanel("projectTitle", "list", entry.getDisplayName(),
93                         ProjectPage.class, pp));
94                 item.add(new LinkPanel("projectDescription", "list", entry.description,
95                         ProjectPage.class, pp));
96
97                 item.add(new Label("repositoryCount", entry.repositories.size()
98                         + " "
99                         + (entry.repositories.size() == 1 ? getString("gb.repository")
100                                 : getString("gb.repositories"))));
101
102                 String lastChange;
103                 if (entry.lastChange.getTime() == 0) {
104                     lastChange = "--";
105                 } else {
106                     lastChange = getTimeUtils().timeAgo(entry.lastChange);
107                 }
108                 Label lastChangeLabel = new Label("projectLastChange", lastChange);
109                 item.add(lastChangeLabel);
110                 WicketUtils.setCssClass(lastChangeLabel, getTimeUtils()
111                         .timeAgoCss(entry.lastChange));
112                 WicketUtils.setAlternatingBackground(item, counter);
113                 counter++;
114             }
115         };
116         add(dataView);
117     }
118
119     @Override
7a401a 120     protected void addDropDownMenus(List<NavLink> navLinks) {
13a3f5 121         PageParameters params = getPageParameters();
699e71 122
7a401a 123         DropDownPageMenuNavLink menu = new DropDownPageMenuNavLink("gb.filters",
13a3f5 124                 ProjectsPage.class);
JM 125         // preserve time filter option on repository choices
126         menu.menuItems.addAll(getRepositoryFilterItems(params));
127
128         // preserve repository filter option on time choices
129         menu.menuItems.addAll(getTimeFilterItems(params));
130
131         if (menu.menuItems.size() > 0) {
132             // Reset Filter
856f3f 133             menu.menuItems.add(new ParameterMenuItem(getString("gb.reset")));
13a3f5 134         }
JM 135
7a401a 136         navLinks.add(menu);
13a3f5 137     }
JM 138 }