James Moger
2013-01-04 4e3c152fa7e97200855ba0d2716362dbe7976920
commit | author | age
f13c4c 1 /*
JM 2  * Copyright 2011 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  */
a4d249 16 package com.gitblit.wicket.panels;
JM 17
8a2e9c 18 import java.text.MessageFormat;
JM 19 import java.util.List;
20
abeaaf 21 import org.apache.wicket.markup.html.basic.Label;
a4d249 22 import org.apache.wicket.markup.html.link.BookmarkablePageLink;
8a2e9c 23 import org.apache.wicket.markup.html.link.Link;
a4d249 24 import org.apache.wicket.markup.html.panel.Fragment;
JM 25 import org.apache.wicket.markup.repeater.Item;
26 import org.apache.wicket.markup.repeater.data.DataView;
27 import org.apache.wicket.markup.repeater.data.ListDataProvider;
28
29 import com.gitblit.GitBlit;
abeaaf 30 import com.gitblit.models.UserModel;
20a8bb 31 import com.gitblit.utils.StringUtils;
a4d249 32 import com.gitblit.wicket.WicketUtils;
JM 33 import com.gitblit.wicket.pages.EditUserPage;
34
35 public class UsersPanel extends BasePanel {
36
37     private static final long serialVersionUID = 1L;
38
39     public UsersPanel(String wicketId, final boolean showAdmin) {
40         super(wicketId);
41
42         Fragment adminLinks = new Fragment("adminPanel", "adminLinks", this);
6cca86 43         adminLinks.add(new BookmarkablePageLink<Void>("newUser", EditUserPage.class)
4e3c15 44                 .setVisible(GitBlit.self().supportsAddUser()));
a4d249 45         add(adminLinks.setVisible(showAdmin));
8a2e9c 46
abeaaf 47         final List<UserModel> users = GitBlit.self().getAllUsers();
JM 48         DataView<UserModel> usersView = new DataView<UserModel>("userRow",
49                 new ListDataProvider<UserModel>(users)) {
a4d249 50             private static final long serialVersionUID = 1L;
2a7306 51             private int counter;
JM 52
8a2e9c 53             @Override
JM 54             protected void onBeforeRender() {
55                 super.onBeforeRender();
56                 counter = 0;
57             }
a4d249 58
abeaaf 59             public void populateItem(final Item<UserModel> item) {
JM 60                 final UserModel entry = item.getModelObject();
61                 LinkPanel editLink = new LinkPanel("username", "list", entry.username,
62                         EditUserPage.class, WicketUtils.newUsernameParameter(entry.username));
20a8bb 63                 WicketUtils.setHtmlTooltip(editLink, getString("gb.edit") + " " + entry.getDisplayName());
a4d249 64                 item.add(editLink);
20a8bb 65                 
JM 66                 if (StringUtils.isEmpty(entry.displayName)) {
67                     item.add(new Label("displayName").setVisible(false));
68                 } else {
69                     editLink = new LinkPanel("displayName", "list", entry.getDisplayName(),
70                         EditUserPage.class, WicketUtils.newUsernameParameter(entry.username));
71                     WicketUtils.setHtmlTooltip(editLink, getString("gb.edit") + " " + entry.getDisplayName());
72                     item.add(editLink);
73                 }
3c7e07 74
JM 75                 if (StringUtils.isEmpty(entry.emailAddress)) {
76                     item.add(new Label("emailAddress").setVisible(false));
77                 } else {
78                     editLink = new LinkPanel("emailAddress", "list", entry.emailAddress,
79                         EditUserPage.class, WicketUtils.newUsernameParameter(entry.username));
80                     WicketUtils.setHtmlTooltip(editLink, getString("gb.edit") + " " + entry.getDisplayName());
81                     item.add(editLink);
82                 }
83
4e3c15 84                 item.add(new Label("accountType", entry.accountType.name() + (entry.canAdmin() ? ", admin":"")));
abeaaf 85                 item.add(new Label("teams", entry.teams.size() > 0 ? ("" + entry.teams.size()) : ""));
JM 86                 item.add(new Label("repositories",
822dfe 87                         entry.permissions.size() > 0 ? ("" + entry.permissions.size()) : ""));
a4d249 88                 Fragment userLinks = new Fragment("userLinks", "userAdminLinks", this);
2a7306 89                 userLinks.add(new BookmarkablePageLink<Void>("editUser", EditUserPage.class,
abeaaf 90                         WicketUtils.newUsernameParameter(entry.username)));
8a2e9c 91                 Link<Void> deleteLink = new Link<Void>("deleteUser") {
JM 92
93                     private static final long serialVersionUID = 1L;
94
95                     @Override
96                     public void onClick() {
abeaaf 97                         if (GitBlit.self().deleteUser(entry.username)) {
JM 98                             users.remove(entry);
017749 99                             info(MessageFormat.format(getString("gb.userDeleted"), entry.username));
8a2e9c 100                         } else {
017749 101                             error(MessageFormat.format(getString("gb.deleteUserFailed"),
abeaaf 102                                     entry.username));
8a2e9c 103                         }
JM 104                     }
105                 };
2a7306 106                 deleteLink.add(new JavascriptEventConfirmation("onclick", MessageFormat.format(
017749 107                         getString("gb.deleteUser"), entry.username)));
8a2e9c 108                 userLinks.add(deleteLink);
a4d249 109                 item.add(userLinks);
JM 110
111                 WicketUtils.setAlternatingBackground(item, counter);
112                 counter++;
113             }
114         };
115         add(usersView.setVisible(showAdmin));
116     }
117 }