Skip to content

Commit 7a840e9

Browse files
committed
wip
1 parent d24c014 commit 7a840e9

10 files changed

Lines changed: 317 additions & 50 deletions

File tree

roda-ui/roda-wui/src/main/java/org/roda/wui/api/v2/controller/MembersController.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,6 @@
7979
import org.springframework.beans.factory.annotation.Autowired;
8080
import org.springframework.http.ResponseEntity;
8181
import org.springframework.ldap.NamingException;
82-
import org.springframework.web.bind.annotation.PathVariable;
8382
import org.springframework.web.bind.annotation.RequestBody;
8483
import org.springframework.web.bind.annotation.RequestMapping;
8584
import org.springframework.web.bind.annotation.RestController;
@@ -1016,7 +1015,7 @@ public LongResponse count(@RequestBody CountRequest countRequest) {
10161015
}
10171016

10181017
@Override
1019-
public List<String> suggest(SuggestRequest suggestRequest) {
1018+
public List<String> suggest(@RequestBody SuggestRequest suggestRequest) {
10201019
return indexService.suggest(suggestRequest, RODAMember.class);
10211020
}
10221021

roda-ui/roda-wui/src/main/java/org/roda/wui/client/common/actions/RODAMemberActions.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -283,7 +283,12 @@ public void onSuccess(Boolean result) {
283283
}
284284

285285
public static void changePassword(RODAMember object, AsyncCallback<Actionable.ActionImpact> callback) {
286-
RODAMembersDialogs.showSetPasswordPanel();
286+
RODAMembersDialogs.setUserPassword(messages.userDataChangePassword(), new ActionAsyncCallback<String>(callback) {
287+
@Override
288+
public void onSuccess(String result) {
289+
callback.onSuccess(Actionable.ActionImpact.NONE);
290+
}
291+
});
287292
}
288293

289294
public static void editPermissions(RODAMember object, AsyncCallback<Actionable.ActionImpact> callback) {

roda-ui/roda-wui/src/main/java/org/roda/wui/client/common/dialogs/RODAMembersDialogs.java

Lines changed: 63 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,19 @@
33
import com.google.gwt.core.client.GWT;
44
import com.google.gwt.event.dom.client.ClickEvent;
55
import com.google.gwt.event.dom.client.ClickHandler;
6+
import com.google.gwt.i18n.client.DateTimeFormat;
67
import com.google.gwt.safehtml.shared.SafeHtml;
78
import com.google.gwt.user.client.rpc.AsyncCallback;
89
import com.google.gwt.user.client.ui.Button;
910
import com.google.gwt.user.client.ui.DialogBox;
1011
import com.google.gwt.user.client.ui.FlowPanel;
12+
import com.google.gwt.user.client.ui.Label;
13+
import com.google.gwt.user.client.ui.PasswordTextBox;
14+
import com.google.gwt.user.client.ui.TextBox;
1115
import com.google.gwt.user.client.ui.Widget;
16+
import com.google.gwt.user.datepicker.client.DateBox;
1217
import config.i18n.client.ClientMessages;
18+
import org.roda.core.data.v2.accessKey.CreateAccessKeyRequest;
1319
import org.roda.core.data.v2.index.filter.Filter;
1420
import org.roda.core.data.v2.index.select.SelectedItems;
1521
import org.roda.core.data.v2.index.select.SelectedItemsList;
@@ -21,8 +27,11 @@
2127
import org.roda.wui.client.common.lists.utils.ListBuilder;
2228
import org.roda.wui.client.common.search.SearchWrapper;
2329
import org.roda.wui.client.management.members.PasswordPanel;
30+
import org.roda.wui.client.management.members.data.panels.PasswordDataPanel;
2431
import org.roda.wui.client.management.members.tabs.PermissionsPanel;
32+
import org.roda.wui.common.client.tools.StringUtils;
2533

34+
import java.util.Date;
2635
import java.util.List;
2736

2837
/**
@@ -172,50 +181,67 @@ public void onSelectionChange(SelectedItems<RODAMember> selected) {
172181
return container;
173182
}
174183

175-
public static void showSetPasswordPanel() {
176-
final DialogBox dialogBox = new DialogBox(true, true);
177-
dialogBox.setGlassEnabled(true);
184+
public static void setUserPassword(String title, final AsyncCallback<String> callback) {
185+
final DialogBox dialogBox = new DialogBox(false, true);
186+
final Button cancelButton = new Button(messages.cancelButton());
187+
final Button confirmButton = new Button(messages.confirmButton());
188+
final FlowPanel layout = new FlowPanel();
189+
final FlowPanel header = new FlowPanel();
190+
final FlowPanel footer = new FlowPanel();
178191

179-
final FlowPanel layout = new FlowPanel();
192+
PasswordDataPanel passwordDataPanel = new PasswordDataPanel(true);
180193

181-
dialogBox.addStyleName("wui-dialog-prompt");
182-
layout.addStyleName("wui-dialog-layout");
194+
dialogBox.setText(title);
195+
layout.add(header);
196+
layout.add(footer);
197+
header.add(passwordDataPanel);
183198

184-
final FlowPanel buttonPanel = new FlowPanel();
185-
buttonPanel.addStyleName("dialog-button-panel");
186-
final Button cancelButton = new Button(messages.cancelButton());
187-
final Button saveButton = new Button(messages.saveButton());
188-
buttonPanel.add(cancelButton);
189-
buttonPanel.add(saveButton);
199+
footer.add(cancelButton);
200+
footer.add(confirmButton);
190201

191-
final FlowPanel content = new FlowPanel();
192-
content.addStyleName("content");
193-
content.add(new PasswordPanel(true));
194-
layout.add(content);
195-
layout.add(buttonPanel);
196-
dialogBox.setWidget(layout);
202+
confirmButton.addClickHandler(new ClickHandler() {
203+
@Override
204+
public void onClick(ClickEvent clickEvent) {
205+
if (passwordDataPanel.isValid()) {
206+
dialogBox.hide();
207+
callback.onSuccess(passwordDataPanel.getValue());
208+
}
209+
}
210+
});
197211

198-
dialogBox.setGlassEnabled(true);
199-
dialogBox.setAnimationEnabled(false);
212+
cancelButton.addClickHandler(new ClickHandler() {
213+
@Override
214+
public void onClick(ClickEvent clickEvent) {
215+
dialogBox.hide();
216+
callback.onSuccess(null);
217+
}
218+
});
200219

201-
cancelButton.addClickHandler(new ClickHandler() {
202-
@Override
203-
public void onClick(ClickEvent event) {
204-
dialogBox.hide();
205-
}
206-
});
220+
dialogBox.setWidget(layout);
221+
dialogBox.setGlassEnabled(true);
222+
dialogBox.setAnimationEnabled(false);
207223

208-
saveButton.addClickHandler(new ClickHandler() {
209-
@Override
210-
public void onClick(ClickEvent event) {
211-
dialogBox.hide();
212-
}
213-
});
224+
dialogBox.addStyleName("wui-dialog-prompt");
225+
layout.addStyleName("wui-dialog-layout");
226+
header.addStyleName("wui-dialog-message");
227+
footer.addStyleName("wui-dialog-layout-footer");
214228

215-
cancelButton.addStyleName("btn btn-link");
216-
saveButton.addStyleName("pull-right btn btn-play");
229+
confirmButton.addStyleName("btn btn-play");
230+
cancelButton.addStyleName("btn btn-link");
231+
232+
dialogBox.center();
233+
dialogBox.show();
234+
}
235+
236+
private static FlowPanel createStackedFieldRow(Widget labelWidget, Widget inputWidget) {
237+
FlowPanel stackedField = new FlowPanel();
238+
stackedField.addStyleName("generic-stacked-field");
239+
240+
// Assemble the DOM vertically
241+
stackedField.add(labelWidget);
242+
stackedField.add(inputWidget);
243+
244+
return stackedField;
245+
}
217246

218-
dialogBox.center();
219-
dialogBox.show();
220-
}
221247
}

roda-ui/roda-wui/src/main/java/org/roda/wui/client/common/lists/pagination/ListSelectionStateMappers.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,10 @@
1717
import org.roda.core.data.v2.ip.IndexedFile;
1818
import org.roda.core.data.v2.ip.IndexedRepresentation;
1919
import org.roda.core.data.v2.jobs.IndexedReport;
20+
import org.roda.wui.common.client.ClientLogger;
2021

2122
import com.github.nmorel.gwtjackson.client.ObjectMapper;
2223
import com.google.gwt.core.client.GWT;
23-
import org.roda.wui.common.client.ClientLogger;
2424

2525
public class ListSelectionStateMappers {
2626

roda-ui/roda-wui/src/main/java/org/roda/wui/client/common/resources/main.gss

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9975,4 +9975,35 @@ wui-disposal-hold-data .form-textbox {
99759975
font-weight: 300;
99769976
color: #666666;
99779977
width: 250px;
9978-
}
9978+
}
9979+
9980+
/* ============================================================
9981+
GENERIC STACKED FIELD (Label on top, Input below)
9982+
============================================================ */
9983+
.generic-stacked-field {
9984+
display: flex;
9985+
flex-direction: column;
9986+
max-width: 750px;
9987+
margin-bottom: 15px; /* Spacing between the fields */
9988+
}
9989+
9990+
/* Override the 250px fixed width from the side-by-side layout */
9991+
.generic-stacked-field .form-label {
9992+
width: auto;
9993+
margin-bottom: 4px; /* Small gap between label and password box */
9994+
font-size: 14px;
9995+
font-weight: 300;
9996+
color: #666666;
9997+
}
9998+
9999+
/* Ensure the password box inherits the exact same generic look */
10000+
.generic-stacked-field .form-textbox {
10001+
background-color: #FAFAFA;
10002+
border: none;
10003+
border-bottom: 1px solid #D9D9D9;
10004+
font-size: 14px;
10005+
color: black;
10006+
width: 100%;
10007+
box-sizing: border-box;
10008+
padding: 6px 8px; /* Slightly taller padding for standalone look */
10009+
}

roda-ui/roda-wui/src/main/java/org/roda/wui/client/main/UserMenu.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ private void updateVisibles(User user) {
121121
registerItem.addStyleName("user_menu_item_register");
122122
menu.addItem(registerItem);
123123
} else {
124-
MenuItem userItem = customMenuItem("fa fa-user", user.getName(), "navigationMenu-item-label", userMenu, null);
124+
MenuItem userItem = customMenuItem("fa fa-user", user.getFullName(), "navigationMenu-item-label", userMenu, null);
125125
userItem.addStyleName("user_menu_item");
126126
menu.addItem(userItem);
127127
}

roda-ui/roda-wui/src/main/java/org/roda/wui/client/management/members/ShowMember.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ private void initHandlers(RODAMember member) {
132132
() -> HistoryUtils.newHistory(MemberManagement.RESOLVER.getHistoryPath()));
133133

134134
// Change this to use the DOM Swap refresh method instead of HistoryUtils
135-
handlers.put(Actionable.ActionImpact.UPDATED, () -> refreshToolbar(member.getUUID(), member.isUser()));
135+
handlers.put(Actionable.ActionImpact.UPDATED, () -> refreshToolbar(member.getId(), member.isUser()));
136136
}
137137

138138
private void refreshToolbar(String id, boolean isUser) {

0 commit comments

Comments
 (0)