Author: ilgrosso Date: Tue Jan 29 12:24:34 2013 New Revision: 1439854 URL: http://svn.apache.org/viewvc?rev=1439854&view=rev Log: [SYNCOPE-122] Extension on console almost done: only missing on-the-fly selection for resources added (directly or via role selection) but not yet submitted
Added: syncope/trunk/console/src/main/webapp/img/actions/enable.png (with props) Modified: syncope/trunk/common/src/main/java/org/apache/syncope/common/to/PropagationRequestTO.java syncope/trunk/console/src/main/java/org/apache/syncope/console/commons/StatusBean.java syncope/trunk/console/src/main/java/org/apache/syncope/console/commons/StatusUtils.java syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/ConnectorModalPage.java syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/EditUserModalPage.java syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/UserModalPage.java syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/AbstractSearchResultPanel.java syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/StatusPanel.java syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/UserSearchResultPanel.java syncope/trunk/console/src/main/java/org/apache/syncope/console/rest/UserRestClient.java syncope/trunk/console/src/main/java/org/apache/syncope/console/wicket/markup/html/form/ActionLink.java syncope/trunk/console/src/main/java/org/apache/syncope/console/wicket/markup/html/form/ActionLinksPanel.java syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/ResultStatusModalPage.html syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/UserModalPage.html syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/UserModalPage.properties syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/UserModalPage_it.properties syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/panels/StatusPanel.html syncope/trunk/console/src/main/resources/org/apache/syncope/console/wicket/markup/html/form/ActionLinksPanel.html syncope/trunk/console/src/test/java/org/apache/syncope/console/ConfigurationTestITCase.java syncope/trunk/console/src/test/java/org/apache/syncope/console/ConnInstanceTestITCase.java syncope/trunk/console/src/test/java/org/apache/syncope/console/ReportTestITCase.java syncope/trunk/console/src/test/java/org/apache/syncope/console/ResourceTestITCase.java syncope/trunk/console/src/test/java/org/apache/syncope/console/RoleTestITCase.java syncope/trunk/console/src/test/java/org/apache/syncope/console/SchemaTestITCase.java syncope/trunk/console/src/test/java/org/apache/syncope/console/TaskTestITCase.java syncope/trunk/console/src/test/java/org/apache/syncope/console/UserTestITCase.java Modified: syncope/trunk/common/src/main/java/org/apache/syncope/common/to/PropagationRequestTO.java URL: http://svn.apache.org/viewvc/syncope/trunk/common/src/main/java/org/apache/syncope/common/to/PropagationRequestTO.java?rev=1439854&r1=1439853&r2=1439854&view=diff ============================================================================== --- syncope/trunk/common/src/main/java/org/apache/syncope/common/to/PropagationRequestTO.java (original) +++ syncope/trunk/common/src/main/java/org/apache/syncope/common/to/PropagationRequestTO.java Tue Jan 29 12:24:34 2013 @@ -20,12 +20,10 @@ package org.apache.syncope.common.to; import java.util.HashSet; import java.util.Set; - import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlElementWrapper; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlType; - import org.apache.syncope.common.AbstractBaseBean; /** Modified: syncope/trunk/console/src/main/java/org/apache/syncope/console/commons/StatusBean.java URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/java/org/apache/syncope/console/commons/StatusBean.java?rev=1439854&r1=1439853&r2=1439854&view=diff ============================================================================== --- syncope/trunk/console/src/main/java/org/apache/syncope/console/commons/StatusBean.java (original) +++ syncope/trunk/console/src/main/java/org/apache/syncope/console/commons/StatusBean.java Tue Jan 29 12:24:34 2013 @@ -19,6 +19,8 @@ package org.apache.syncope.console.commons; import java.io.Serializable; +import org.apache.commons.lang.builder.ReflectionToStringBuilder; +import org.apache.commons.lang.builder.ToStringStyle; public class StatusBean implements Serializable { @@ -30,9 +32,6 @@ public class StatusBean implements Seria private StatusUtils.Status status = StatusUtils.Status.OBJECT_NOT_FOUND; - public StatusBean() { - } - public String getAccountLink() { return accountLink; } @@ -56,4 +55,9 @@ public class StatusBean implements Seria public void setStatus(final StatusUtils.Status status) { this.status = status; } + + @Override + public String toString() { + return ReflectionToStringBuilder.toString(this, ToStringStyle.MULTI_LINE_STYLE); + } } Modified: syncope/trunk/console/src/main/java/org/apache/syncope/console/commons/StatusUtils.java URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/java/org/apache/syncope/console/commons/StatusUtils.java?rev=1439854&r1=1439853&r2=1439854&view=diff ============================================================================== --- syncope/trunk/console/src/main/java/org/apache/syncope/console/commons/StatusUtils.java (original) +++ syncope/trunk/console/src/main/java/org/apache/syncope/console/commons/StatusUtils.java Tue Jan 29 12:24:34 2013 @@ -21,15 +21,16 @@ package org.apache.syncope.console.commo import java.io.Serializable; import java.util.AbstractMap; import java.util.ArrayList; +import java.util.Collection; import java.util.Collections; import java.util.List; import java.util.Map; - import org.apache.syncope.common.to.AbstractAttributableTO; import org.apache.syncope.common.to.AttributeTO; import org.apache.syncope.common.to.ConnObjectTO; import org.apache.syncope.common.to.MappingItemTO; import org.apache.syncope.common.to.MappingTO; +import org.apache.syncope.common.to.PropagationRequestTO; import org.apache.syncope.common.to.ResourceTO; import org.apache.syncope.common.to.RoleTO; import org.apache.syncope.common.to.UserTO; @@ -214,4 +215,18 @@ public class StatusUtils implements Seri return accountId; } + + public static PropagationRequestTO buildPropagationRequestTO(final Collection<StatusBean> statuses) { + PropagationRequestTO propagationRequestTO = new PropagationRequestTO(); + + for (StatusBean status : statuses) { + if ("Syncope".equals(status.getResourceName())) { + propagationRequestTO.setOnSyncope(true); + } else { + propagationRequestTO.addResource(status.getResourceName()); + } + } + + return propagationRequestTO; + } } Modified: syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/ConnectorModalPage.java URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/ConnectorModalPage.java?rev=1439854&r1=1439853&r2=1439854&view=diff ============================================================================== --- syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/ConnectorModalPage.java (original) +++ syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/ConnectorModalPage.java Tue Jan 29 12:24:34 2013 @@ -278,15 +278,7 @@ public class ConnectorModalPage extends properties.clear(); version.setEnabled(connectorTO.getBundleName() != null); version.getField().setModelValue(null); - List<String> choices = new ArrayList<String>(mapConnBundleTO.get(connectorTO.getBundleName()).keySet()); - version.setChoices(choices); - if (choices.size() == 1) { - connectorTO.setVersion(choices.get(0)); - version.getField().setModelObject(choices.get(0)); - connectorTO.setDisplayName(displayName.getModelObject()); - bundleTO = getSelectedBundleTO(mapConnBundleTO, connectorTO); - properties = fillProperties(bundleTO, connectorTO); - } + version.setChoices(new ArrayList<String>(mapConnBundleTO.get(connectorTO.getBundleName()).keySet())); target.add(bundleName); target.add(version); target.add(propertiesContainer); Modified: syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/EditUserModalPage.java URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/EditUserModalPage.java?rev=1439854&r1=1439853&r2=1439854&view=diff ============================================================================== --- syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/EditUserModalPage.java (original) +++ syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/EditUserModalPage.java Tue Jan 29 12:24:34 2013 @@ -20,7 +20,6 @@ package org.apache.syncope.console.pages import java.util.ArrayList; import java.util.List; - import org.apache.syncope.common.mod.UserMod; import org.apache.syncope.common.to.UserTO; import org.apache.syncope.common.util.AttributableOperations; @@ -31,7 +30,9 @@ import org.apache.syncope.console.rest.U import org.apache.wicket.PageReference; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow; +import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.markup.html.form.Form; +import org.apache.wicket.model.ResourceModel; import org.apache.wicket.spring.injection.annot.SpringBean; /** @@ -46,6 +47,8 @@ public class EditUserModalPage extends U private UserTO initialUserTO = null; + private StatusPanel statusPanel; + public EditUserModalPage(final PageReference callerPageRef, final ModalWindow window, final UserTO userTO) { super(callerPageRef, window, userTO, Mode.ADMIN, true); @@ -57,7 +60,10 @@ public class EditUserModalPage extends U if (userTO.getId() != 0) { final List<StatusBean> statuses = new ArrayList<StatusBean>(); - form.addOrReplace(new StatusPanel("statuspanel", userTO, statuses, false)); + form.addOrReplace(new Label("pwdChangeInfo", new ResourceModel("pwdChangeInfo"))); + + statusPanel = new StatusPanel("statuspanel", userTO, statuses); + form.addOrReplace(statusPanel); form.addOrReplace(new AccountInformationPanel("accountinformation", userTO)); } @@ -72,6 +78,10 @@ public class EditUserModalPage extends U } else { final UserMod userMod = AttributableOperations.diff(updatedUserTO, initialUserTO); + if (statusPanel != null) { + userMod.setPwdPropRequest(statusPanel.getPropagationRequestTO()); + } + // update user just if it is changed if (!userMod.isEmpty()) { userTO = userRestClient.update(userMod); Modified: syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/UserModalPage.java URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/UserModalPage.java?rev=1439854&r1=1439853&r2=1439854&view=diff ============================================================================== --- syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/UserModalPage.java (original) +++ syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/UserModalPage.java Tue Jan 29 12:24:34 2013 @@ -107,6 +107,8 @@ public abstract class UserModalPage exte form.add(new UserDetailsPanel("details", userTO, form, resetPassword, mode == Mode.TEMPLATE)); form.add(new Label("statuspanel", "")); + + form.add(new Label("pwdChangeInfo", "")); form.add(new Label("accountinformation", "")); //-------------------------------- Modified: syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/AbstractSearchResultPanel.java URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/AbstractSearchResultPanel.java?rev=1439854&r1=1439853&r2=1439854&view=diff ============================================================================== --- syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/AbstractSearchResultPanel.java (original) +++ syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/AbstractSearchResultPanel.java Tue Jan 29 12:24:34 2013 @@ -19,7 +19,6 @@ package org.apache.syncope.console.pages.panels; import java.util.List; - import org.apache.syncope.common.search.NodeCond; import org.apache.syncope.common.to.AbstractAttributableTO; import org.apache.syncope.console.commons.AttributableDataProvider; Modified: syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/StatusPanel.java URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/StatusPanel.java?rev=1439854&r1=1439853&r2=1439854&view=diff ============================================================================== --- syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/StatusPanel.java (original) +++ syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/StatusPanel.java Tue Jan 29 12:24:34 2013 @@ -19,10 +19,11 @@ package org.apache.syncope.console.pages.panels; import java.util.ArrayList; +import java.util.Collection; import java.util.List; - import org.apache.commons.lang.StringUtils; import org.apache.syncope.common.to.AbstractAttributableTO; +import org.apache.syncope.common.to.PropagationRequestTO; import org.apache.syncope.common.to.RoleTO; import org.apache.syncope.common.to.UserTO; import org.apache.syncope.console.commons.StatusBean; @@ -41,7 +42,6 @@ import org.apache.wicket.markup.html.for import org.apache.wicket.markup.html.image.Image; import org.apache.wicket.markup.html.list.ListItem; import org.apache.wicket.markup.html.list.ListView; -import org.apache.wicket.markup.html.panel.Fragment; import org.apache.wicket.markup.html.panel.Panel; import org.apache.wicket.model.ResourceModel; import org.apache.wicket.spring.injection.annot.SpringBean; @@ -59,14 +59,10 @@ public class StatusPanel extends Panel { private final StatusUtils statusUtils; - public <T extends AbstractAttributableTO> StatusPanel(final String id, final AbstractAttributableTO attributable, - final List<StatusBean> selectedResources) { - - this(id, attributable, selectedResources, true); - } + private final CheckGroup<StatusBean> checkGroup; public <T extends AbstractAttributableTO> StatusPanel(final String id, final AbstractAttributableTO attributable, - final List<StatusBean> selectedResources, final boolean enabled) { + final List<StatusBean> selectedResources) { super(id); statusUtils = new StatusUtils(resourceRestClient, @@ -92,19 +88,10 @@ public class StatusPanel extends Panel { statuses.addAll(statusUtils.getRemoteStatuses(attributable)); - final CheckGroup group = new CheckGroup("group", selectedResources); - add(group); - - final Fragment headerCheckFrag; + checkGroup = new CheckGroup<StatusBean>("group", selectedResources); + add(checkGroup); - if (enabled) { - headerCheckFrag = new Fragment("headerCheck", "headerCheckFrag", this); - headerCheckFrag.add(new CheckGroupSelector("groupselector", group)); - } else { - headerCheckFrag = new Fragment("headerCheck", "emptyCheckFrag", this); - } - - add(headerCheckFrag); + add(new CheckGroupSelector("groupselector", checkGroup)); final ListView<StatusBean> resources = new ListView<StatusBean>("resources", statuses) { @@ -155,19 +142,10 @@ public class StatusPanel extends Panel { } }); - final Fragment checkFrag; - if (enabled) { - final Check check = new Check("check", item.getModel(), group); - - check.setEnabled(checkVisibility); - check.setVisible(checkVisibility); - - checkFrag = new Fragment("rowCheck", "rowCheckFrag", getParent()); - checkFrag.add(check); - } else { - checkFrag = new Fragment("rowCheck", "emptyCheckFrag", group.getParent()); - } - item.add(checkFrag); + final Check check = new Check("check", item.getModel(), checkGroup); + check.setEnabled(checkVisibility); + check.setVisible(checkVisibility); + item.add(check); item.add(new Label("resource", new ResourceModel(item.getModelObject().getResourceName(), item .getModelObject().getResourceName()))); @@ -185,6 +163,18 @@ public class StatusPanel extends Panel { resources.setReuseItems(true); - group.add(resources); + checkGroup.add(resources); + } + + public PropagationRequestTO getPropagationRequestTO() { + PropagationRequestTO result = null; + + Collection<StatusBean> statusBeans = checkGroup.getModel().getObject(); + if (statusBeans != null && !statusBeans.isEmpty()) { + result = StatusUtils.buildPropagationRequestTO(statusBeans); + + } + + return result; } } Modified: syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/UserSearchResultPanel.java URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/UserSearchResultPanel.java?rev=1439854&r1=1439853&r2=1439854&view=diff ============================================================================== --- syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/UserSearchResultPanel.java (original) +++ syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/UserSearchResultPanel.java Tue Jan 29 12:24:34 2013 @@ -23,7 +23,6 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Date; import java.util.List; - import org.apache.syncope.common.search.NodeCond; import org.apache.syncope.common.to.AbstractAttributableTO; import org.apache.syncope.common.to.UserTO; @@ -134,7 +133,7 @@ public class UserSearchResultPanel exten statusmodal.show(target); } - }, ActionLink.ActionType.SEARCH, "Users", "read"); + }, ActionLink.ActionType.ENABLE, "Users", "update"); panel.add(new ActionLink() { Modified: syncope/trunk/console/src/main/java/org/apache/syncope/console/rest/UserRestClient.java URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/java/org/apache/syncope/console/rest/UserRestClient.java?rev=1439854&r1=1439853&r2=1439854&view=diff ============================================================================== --- syncope/trunk/console/src/main/java/org/apache/syncope/console/rest/UserRestClient.java (original) +++ syncope/trunk/console/src/main/java/org/apache/syncope/console/rest/UserRestClient.java Tue Jan 29 12:24:34 2013 @@ -19,19 +19,17 @@ package org.apache.syncope.console.rest; import java.util.List; - import javax.ws.rs.core.Response; - import org.apache.syncope.common.mod.UserMod; import org.apache.syncope.common.search.NodeCond; import org.apache.syncope.common.services.ResourceService; import org.apache.syncope.common.services.UserService; import org.apache.syncope.common.to.ConnObjectTO; -import org.apache.syncope.common.to.PropagationRequestTO; import org.apache.syncope.common.to.UserTO; import org.apache.syncope.common.types.AttributableType; import org.apache.syncope.common.validation.SyncopeClientCompositeErrorException; import org.apache.syncope.console.commons.StatusBean; +import org.apache.syncope.console.commons.StatusUtils; import org.springframework.stereotype.Component; /** @@ -112,28 +110,11 @@ public class UserRestClient extends Abst return getService(ResourceService.class).getConnector(resourceName, AttributableType.USER, objectId); } - private PropagationRequestTO getPropagationRequestTO(final List<StatusBean> statuses, final boolean enable) { - PropagationRequestTO propagationRequestTO = new PropagationRequestTO(); - - for (StatusBean status : statuses) { - if ((enable && !status.getStatus().isActive()) || (!enable && status.getStatus().isActive())) { - - if ("Syncope".equals(status.getResourceName())) { - propagationRequestTO.setOnSyncope(true); - } else { - propagationRequestTO.addResource(status.getResourceName()); - } - } - } - - return propagationRequestTO; - } - public UserTO suspend(final long userId, final List<StatusBean> statuses) { - return getService(UserService.class).suspend(userId, getPropagationRequestTO(statuses, false)); + return getService(UserService.class).suspend(userId, StatusUtils.buildPropagationRequestTO(statuses)); } public UserTO reactivate(final long userId, final List<StatusBean> statuses) { - return getService(UserService.class).reactivate(userId, getPropagationRequestTO(statuses, true)); + return getService(UserService.class).reactivate(userId, StatusUtils.buildPropagationRequestTO(statuses)); } } Modified: syncope/trunk/console/src/main/java/org/apache/syncope/console/wicket/markup/html/form/ActionLink.java URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/java/org/apache/syncope/console/wicket/markup/html/form/ActionLink.java?rev=1439854&r1=1439853&r2=1439854&view=diff ============================================================================== --- syncope/trunk/console/src/main/java/org/apache/syncope/console/wicket/markup/html/form/ActionLink.java (original) +++ syncope/trunk/console/src/main/java/org/apache/syncope/console/wicket/markup/html/form/ActionLink.java Tue Jan 29 12:24:34 2013 @@ -19,7 +19,6 @@ package org.apache.syncope.console.wicket.markup.html.form; import java.io.Serializable; - import org.apache.wicket.ajax.AjaxRequestTarget; public abstract class ActionLink implements Serializable { @@ -32,6 +31,7 @@ public abstract class ActionLink impleme EDIT, USER_TEMPLATE, ROLE_TEMPLATE, + ENABLE, SEARCH, DELETE, EXECUTE, Modified: syncope/trunk/console/src/main/java/org/apache/syncope/console/wicket/markup/html/form/ActionLinksPanel.java URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/java/org/apache/syncope/console/wicket/markup/html/form/ActionLinksPanel.java?rev=1439854&r1=1439853&r2=1439854&view=diff ============================================================================== --- syncope/trunk/console/src/main/java/org/apache/syncope/console/wicket/markup/html/form/ActionLinksPanel.java (original) +++ syncope/trunk/console/src/main/java/org/apache/syncope/console/wicket/markup/html/form/ActionLinksPanel.java Tue Jan 29 12:24:34 2013 @@ -49,6 +49,7 @@ public class ActionLinksPanel extends Pa super.add(new Fragment("panelEdit", "emptyFragment", this)); super.add(new Fragment("panelUserTemplate", "emptyFragment", this)); super.add(new Fragment("panelRoleTemplate", "emptyFragment", this)); + super.add(new Fragment("panelEnable", "emptyFragment", this)); super.add(new Fragment("panelSearch", "emptyFragment", this)); super.add(new Fragment("panelDelete", "emptyFragment", this)); super.add(new Fragment("panelExecute", "emptyFragment", this)); @@ -150,6 +151,20 @@ public class ActionLinksPanel extends Pa }); break; + case ENABLE: + fragment = new Fragment("panelEnable", "fragmentEnable", this); + + fragment.addOrReplace(new IndicatingAjaxLink("enableLink") { + + private static final long serialVersionUID = -7978723352517770644L; + + @Override + public void onClick(final AjaxRequestTarget target) { + link.onClick(target); + } + }); + break; + case SEARCH: fragment = new Fragment("panelSearch", "fragmentSearch", this); Modified: syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/ResultStatusModalPage.html URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/ResultStatusModalPage.html?rev=1439854&r1=1439853&r2=1439854&view=diff ============================================================================== --- syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/ResultStatusModalPage.html (original) +++ syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/ResultStatusModalPage.html Tue Jan 29 12:24:34 2013 @@ -71,7 +71,7 @@ under the License. border-bottom: 1px solid #DDDDDD; display: table-cell; height: 15px; - width: 18%; + width: 220px; padding: 0px 5px 0px 5px; vertical-align: middle; } @@ -89,7 +89,7 @@ under the License. div#resource { display: table-cell; - width: 18%; + width: 220px; height: 30px; padding: 3px 0px 5px 0px; } Modified: syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/UserModalPage.html URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/UserModalPage.html?rev=1439854&r1=1439853&r2=1439854&view=diff ============================================================================== --- syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/UserModalPage.html (original) +++ syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/UserModalPage.html Tue Jan 29 12:24:34 2013 @@ -79,6 +79,7 @@ under the License. </ul> <div id="tabs-1"> <span wicket:id="details">[user details]</span> + <div wicket:id="pwdChangeInfo" style="margin-top: 15px;">[pwdChangeInfo]</div> <span wicket:id="statuspanel">[Sattus Panel]</span> <span wicket:id="accountinformation">[Account Information]</span> </div> Modified: syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/UserModalPage.properties URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/UserModalPage.properties?rev=1439854&r1=1439853&r2=1439854&view=diff ============================================================================== --- syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/UserModalPage.properties (original) +++ syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/UserModalPage.properties Tue Jan 29 12:24:34 2013 @@ -47,3 +47,4 @@ virtualAttributeValue=Virtual value addAttributeBtn=Add new=New +pwdChangeInfo=If provided, the password will be changed on the following resources. Modified: syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/UserModalPage_it.properties URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/UserModalPage_it.properties?rev=1439854&r1=1439853&r2=1439854&view=diff ============================================================================== --- syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/UserModalPage_it.properties (original) +++ syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/UserModalPage_it.properties Tue Jan 29 12:24:34 2013 @@ -48,3 +48,4 @@ virtualAttributeValue=Valore virtuale addAttributeBtn=Aggiungi new=Nuovo +pwdChangeInfo=Se inserita, la password verr\u00e0 cambiata sulle seguenti risorse. Modified: syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/panels/StatusPanel.html URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/panels/StatusPanel.html?rev=1439854&r1=1439853&r2=1439854&view=diff ============================================================================== --- syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/panels/StatusPanel.html (original) +++ syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/panels/StatusPanel.html Tue Jan 29 12:24:34 2013 @@ -16,116 +16,105 @@ KIND, either express or implied. See th specific language governing permissions and limitations under the License. --> -<html> - <wicket:head> - <style> - div.group{ - width:100%; - } - - div#check{ - width:8%; - height: 25px; - float:left; - } - - div#resource{ - margin-top: 3px; - margin-left: 5px; - width: 35%; - height: 25px; - float:left; - } - - div#accountLink{ - margin-top: 3px; - width:45%; - height: 25px; - float:left - } - - div#status{ - margin-top: 3px; - height: 25px; - width: 10%; - float: left; - text-align: center; - } - - div.assignment { - display: inline-table; - width: 100% - } - - div.assignments { - margin-top: 20px; - display: inline-table; - width: 100%; - border: 1px solid #DDDDDD; - color: #555555; - } - </style> - </wicket:head> - <wicket:panel> - <div class="assignments"> - <div class="group"> - <div> - <span wicket:id="headerCheck"/> - - <div id="resource"> - <span style="font: Verdana,Arial,sans-serif; font-weight: bold"> - <wicket:message key="resourceheader"/> - </span> - </div> - <div id="accountLink"> - <span style="font: Verdana,Arial,sans-serif; font-weight: bold"> - <wicket:message key="accountlinkheader"/> - </span> - </div> - <div id="status"> - <span style="font: Verdana,Arial,sans-serif; font-weight: bold"> - <wicket:message key="statusheader"/> - </span> - </div> - </div> - - <span wicket:id="group"> - - <div wicket:id="resources" class="assignment"> - <span wicket:id="rowCheck"/> - - <div id="resource"> - <span wicket:id="resource">[resource name]</span> - </div> - <div id="accountLink"> - <span wicket:id="accountLink">[accountLink]</span> - </div> - <div id="status"> - <img wicket:id="icon"/> - </div> - </div> - - <wicket:fragment wicket:id="rowCheckFrag"> - <div id="check"> - <input type="checkbox" wicket:id="check"/> - </div> - </wicket:fragment> - </span> - </div> - - <wicket:fragment wicket:id="headerCheckFrag"> - <div id="check"> - <input type="checkbox" wicket:id="groupselector" /> - </div> - </wicket:fragment> +<wicket:head> + <style> + div.group{ + width:100%; + } + + div#check{ + width:8%; + height: 25px; + float:left; + } + + div#resource{ + margin-top: 3px; + margin-left: 5px; + width: 35%; + height: 25px; + float:left; + } + + div#accountLink{ + margin-top: 3px; + width:45%; + height: 25px; + float:left + } + + div#status{ + margin-top: 3px; + height: 25px; + width: 10%; + float: left; + text-align: center; + } + + div.assignment { + display: inline-table; + width: 100% + } + + div.assignments { + margin-top: 5px; + display: inline-table; + width: 100%; + border: 1px solid #DDDDDD; + color: #555555; + } + </style> +</wicket:head> +<wicket:panel> + <div class="assignments"> + <div class="group"> + <div> + <div id="check"> + <input type="checkbox" wicket:id="groupselector" /> + </div> - <wicket:fragment wicket:id="emptyCheckFrag" /> + <div id="resource"> + <span style="font: Verdana,Arial,sans-serif; font-weight: bold"> + <wicket:message key="resourceheader"/> + </span> + </div> + <div id="accountLink"> + <span style="font: Verdana,Arial,sans-serif; font-weight: bold"> + <wicket:message key="accountlinkheader"/> + </span> </div> + <div id="status"> + <span style="font: Verdana,Arial,sans-serif; font-weight: bold"> + <wicket:message key="statusheader"/> + </span> + </div> + </div> + + <span wicket:id="group"> + + <div wicket:id="resources" class="assignment"> + <div id="check"> + <input type="checkbox" wicket:id="check"/> + </div> + + <div id="resource"> + <span wicket:id="resource">[resource name]</span> + </div> + <div id="accountLink"> + <span wicket:id="accountLink">[accountLink]</span> + </div> + <div id="status"> + <img wicket:id="icon"/> + </div> + </div> + </span> + </div> + + </div> - <script type="text/javascript"> - $(function() { - $('div.assignments div.assignment:even').addClass("alt"); - }); - </script> - </wicket:panel> -</html> + <script type="text/javascript"> + $(function() { + $('div.assignments div.assignment:even').addClass("alt"); + }); + </script> +</wicket:panel> Modified: syncope/trunk/console/src/main/resources/org/apache/syncope/console/wicket/markup/html/form/ActionLinksPanel.html URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/resources/org/apache/syncope/console/wicket/markup/html/form/ActionLinksPanel.html?rev=1439854&r1=1439853&r2=1439854&view=diff ============================================================================== --- syncope/trunk/console/src/main/resources/org/apache/syncope/console/wicket/markup/html/form/ActionLinksPanel.html (original) +++ syncope/trunk/console/src/main/resources/org/apache/syncope/console/wicket/markup/html/form/ActionLinksPanel.html Tue Jan 29 12:24:34 2013 @@ -28,6 +28,7 @@ under the License. <span id="action" wicket:id="panelClaim">[plus]</span> <span id="action" wicket:id="panelDryRun">[plus]</span> <span id="action" wicket:id="panelExecute">[plus]</span> + <span id="action" wicket:id="panelEnable">[plus]</span> <span id="action" wicket:id="panelSearch">[plus]</span> <span id="action" wicket:id="panelCreate">[plus]</span> <span id="action" wicket:id="panelUserTemplate">[plus]</span> @@ -46,7 +47,11 @@ under the License. </wicket:fragment> <wicket:fragment wicket:id="fragmentSearch"> - <a href="#" wicket:id="searchLink"><img src="img/actions/search.png" alt="search icon" title="Search and modify" /></a> + <a href="#" wicket:id="searchLink"><img src="img/actions/search.png" alt="search icon" title="Search and modify"/></a> + </wicket:fragment> + + <wicket:fragment wicket:id="fragmentEnable"> + <a href="#" wicket:id="enableLink"><img src="img/actions/enable.png" alt="enable icon" title="Enable / Disable"/></a> </wicket:fragment> <wicket:fragment wicket:id="fragmentEdit"> Added: syncope/trunk/console/src/main/webapp/img/actions/enable.png URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/webapp/img/actions/enable.png?rev=1439854&view=auto ============================================================================== Binary file - no diff available. Propchange: syncope/trunk/console/src/main/webapp/img/actions/enable.png ------------------------------------------------------------------------------ svn:mime-type = image/png Modified: syncope/trunk/console/src/test/java/org/apache/syncope/console/ConfigurationTestITCase.java URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/test/java/org/apache/syncope/console/ConfigurationTestITCase.java?rev=1439854&r1=1439853&r2=1439854&view=diff ============================================================================== --- syncope/trunk/console/src/test/java/org/apache/syncope/console/ConfigurationTestITCase.java (original) +++ syncope/trunk/console/src/test/java/org/apache/syncope/console/ConfigurationTestITCase.java Tue Jan 29 12:24:34 2013 @@ -45,7 +45,7 @@ public class ConfigurationTestITCase ext selenium.waitForCondition("selenium.isElementPresent(\"//div[@id='tabs']\");", "30000"); - selenium.click("//tr/td[3]/div/span[8]/a"); + selenium.click("//tr/td[3]/div/span[9]/a"); selenium.waitForCondition("selenium.isElementPresent(\"//input[@name='key:textField']\");", "30000"); @@ -106,7 +106,7 @@ public class ConfigurationTestITCase ext selenium.waitForCondition("selenium.isElementPresent(\"//div[@id='tabs']\");", "30000"); - selenium.click("//tr[7]/td[3]/div/span[10]/a"); + selenium.click("//tr[7]/td[3]/div/span[11]/a"); assertTrue(selenium.getConfirmation().matches("^Do you really want to delete the selected item[\\s\\S]$")); Modified: syncope/trunk/console/src/test/java/org/apache/syncope/console/ConnInstanceTestITCase.java URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/test/java/org/apache/syncope/console/ConnInstanceTestITCase.java?rev=1439854&r1=1439853&r2=1439854&view=diff ============================================================================== --- syncope/trunk/console/src/test/java/org/apache/syncope/console/ConnInstanceTestITCase.java (original) +++ syncope/trunk/console/src/test/java/org/apache/syncope/console/ConnInstanceTestITCase.java Tue Jan 29 12:24:34 2013 @@ -54,12 +54,12 @@ public class ConnInstanceTestITCase exte selenium.click("//div[3]/div[2]/a"); - selenium.waitForCondition("" - + "selenium.isElementPresent(\"//div[2]/form/div[2]/div/div/div[3]/div[2]/span/select\");", "30000"); - selenium.select("//select[@name='connectorName:dropDownChoiceField']", - "label=org.connid.bundles.soap"); - selenium.select("//select[@name='version:dropDownChoiceField']", - "label=1.2.4"); + selenium.waitForCondition( + "selenium.isElementPresent(\"//form/div[2]/div/div/div[3]/div[2]/span/select\");", "30000"); + selenium.select("//select[@name='connectorName:dropDownChoiceField']", "label=org.connid.bundles.soap"); + selenium.waitForCondition( + "selenium.isElementPresent(\"//form/div[2]/div/div/div[3]/div[2]/span/select/option[2]\");", "30000"); + selenium.select("//select[@name='version:dropDownChoiceField']", "label=1.2.4"); selenium.click("//div[2]/form/div[2]/ul/li[2]/a/span"); selenium.click("//div[2]/form/div[2]/ul/li[1]/a/span"); @@ -76,11 +76,11 @@ public class ConnInstanceTestITCase exte selenium.waitForCondition("selenium.isElementPresent(\"//div[@id='tabs']\");", "30000"); selenium.click("//div[3]/ul/li[2]/a"); - selenium.click("//tr[4]/td[6]/div/span[8]/a"); + selenium.click("//tr[4]/td[6]/div/span[9]/a"); selenium.waitForCondition("" + "selenium.isElementPresent(\"//div[2]/form/div[2]/div/div/div[3]/div[2]/span/select\");", "30000"); - + assertEquals("ConnInstance103", selenium.getAttribute("//input[@name='displayName:textField']/@value")); assertEquals("org.connid.bundles.soap", selenium @@ -97,7 +97,7 @@ public class ConnInstanceTestITCase exte selenium.waitForCondition("selenium.isElementPresent(\"//div[@id='tabs']\");", "30000"); selenium.click("//div[3]/ul/li[2]/a"); - selenium.click("//tr[4]/td[6]/div/span[10]/a"); + selenium.click("//tr[4]/td[6]/div/span[11]/a"); assertTrue(selenium.getConfirmation().matches("^Do you really want to delete the selected item[\\s\\S]$")); @@ -112,7 +112,7 @@ public class ConnInstanceTestITCase exte selenium.waitForCondition("selenium.isElementPresent(\"//div[@id='tabs']\");", "30000"); selenium.click("//div[3]/ul/li[2]/a"); - selenium.click("//tr[2]/td[6]/div/span[8]/a"); + selenium.click("//tr[2]/td[6]/div/span[9]/a"); selenium.waitForCondition( "selenium.isElementPresent(\"//select[@name='version:dropDownChoiceField']\");", "30000"); Modified: syncope/trunk/console/src/test/java/org/apache/syncope/console/ReportTestITCase.java URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/test/java/org/apache/syncope/console/ReportTestITCase.java?rev=1439854&r1=1439853&r2=1439854&view=diff ============================================================================== --- syncope/trunk/console/src/test/java/org/apache/syncope/console/ReportTestITCase.java (original) +++ syncope/trunk/console/src/test/java/org/apache/syncope/console/ReportTestITCase.java Tue Jan 29 12:24:34 2013 @@ -27,7 +27,7 @@ public class ReportTestITCase extends Ab selenium.click("css=img[alt=\"Reports\"]"); selenium.waitForCondition("selenium.isElementPresent(\"//div[@id='tabs']\");", "30000"); - selenium.click("//table/tbody/tr/td[8]/div/span[8]/a"); + selenium.click("//table/tbody/tr/td[8]/div/span[9]/a"); selenium.waitForCondition("selenium.isElementPresent(" + "\"//div[2]/form/div[2]/div/div/span/div/div/div/span\");", "30000"); Modified: syncope/trunk/console/src/test/java/org/apache/syncope/console/ResourceTestITCase.java URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/test/java/org/apache/syncope/console/ResourceTestITCase.java?rev=1439854&r1=1439853&r2=1439854&view=diff ============================================================================== --- syncope/trunk/console/src/test/java/org/apache/syncope/console/ResourceTestITCase.java (original) +++ syncope/trunk/console/src/test/java/org/apache/syncope/console/ResourceTestITCase.java Tue Jan 29 12:24:34 2013 @@ -42,7 +42,7 @@ public class ResourceTestITCase extends selenium.waitForCondition("selenium.isElementPresent(\"//div[@id='tabs']\");", "30000"); - selenium.click("//td[5]/div/span[8]/a"); + selenium.click("//td[5]/div/span[9]/a"); selenium.waitForCondition("selenium.isElementPresent(" + "\"//form/div[2]/div/span/div/div/div/label[text()='Name']\");", "30000"); @@ -64,7 +64,7 @@ public class ResourceTestITCase extends selenium.waitForCondition("selenium.isElementPresent(\"//div[@id='tabs']\");", "30000"); - selenium.click("//tr[3]/td[5]/div/span[10]/a"); + selenium.click("//tr[3]/td[5]/div/span[11]/a"); assertTrue(selenium.getConfirmation().matches("^Do you really want to delete the selected item[\\s\\S]$")); } @@ -75,7 +75,7 @@ public class ResourceTestITCase extends selenium.waitForCondition("selenium.isElementPresent(\"//div[@id='tabs']\");", "30000"); - selenium.click("//td[5]/div/span[8]/a"); + selenium.click("//td[5]/div/span[9]/a"); selenium.waitForCondition("selenium.isElementPresent(" + "\"//form/div[2]/div/span/div/div/div/label[text()='Name']\");", "30000"); @@ -97,7 +97,7 @@ public class ResourceTestITCase extends selenium.waitForCondition("selenium.isElementPresent(\"//div[@id='tabs']\");", "30000"); - selenium.click("//*[@id=\"users-contain\"]//*[div=\"ws-target-resource-delete\"]/../td[5]/div/span[8]/a"); + selenium.click("//*[@id=\"users-contain\"]//*[div=\"ws-target-resource-delete\"]/../td[5]/div/span[9]/a"); selenium.waitForCondition("selenium.isElementPresent(" + "\"//form/div[2]/div/span/div/div/div/label[text()='Name']\");", "30000"); Modified: syncope/trunk/console/src/test/java/org/apache/syncope/console/RoleTestITCase.java URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/test/java/org/apache/syncope/console/RoleTestITCase.java?rev=1439854&r1=1439853&r2=1439854&view=diff ============================================================================== --- syncope/trunk/console/src/test/java/org/apache/syncope/console/RoleTestITCase.java (original) +++ syncope/trunk/console/src/test/java/org/apache/syncope/console/RoleTestITCase.java Tue Jan 29 12:24:34 2013 @@ -130,9 +130,9 @@ public class RoleTestITCase extends Abst selenium.click("//input[@name=\"userListContainer:search\"]"); - selenium.waitForCondition("selenium.isElementPresent(\"//table/tbody/tr/td[4]/div/span[8]/a\");", "30000"); + selenium.waitForCondition("selenium.isElementPresent(\"//table/tbody/tr/td[4]/div/span[9]/a\");", "30000"); - selenium.click("//table/tbody/tr/td[4]/div/span[8]/a"); + selenium.click("//table/tbody/tr/td[4]/div/span[9]/a"); selenium.waitForCondition("selenium.isElementPresent(" + "\"//form/div[2]/div/span/div/div/div[contains(text(),'Username')]\");", "30000"); @@ -156,9 +156,9 @@ public class RoleTestITCase extends Abst selenium.click("//input[@name=\"userListContainer:search\"]"); - selenium.waitForCondition("selenium.isElementPresent(\"//span[10]/a\");", "30000"); + selenium.waitForCondition("selenium.isElementPresent(\"//span[11]/a\");", "30000"); - selenium.click("//span[10]/a"); + selenium.click("//span[11]/a"); assertTrue(selenium.getConfirmation().matches("^Do you really want to delete the selected item[\\s\\S]$")); } Modified: syncope/trunk/console/src/test/java/org/apache/syncope/console/SchemaTestITCase.java URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/test/java/org/apache/syncope/console/SchemaTestITCase.java?rev=1439854&r1=1439853&r2=1439854&view=diff ============================================================================== --- syncope/trunk/console/src/test/java/org/apache/syncope/console/SchemaTestITCase.java (original) +++ syncope/trunk/console/src/test/java/org/apache/syncope/console/SchemaTestITCase.java Tue Jan 29 12:24:34 2013 @@ -51,7 +51,7 @@ public class SchemaTestITCase extends Ab selenium.click("//div[@id='tabs']/ul/li[3]/a/span"); selenium.click("//div[@id='membership']/ul/li[3]/a/span"); - selenium.click("//table/tbody/tr/td[3]/div/span[10]/a"); + selenium.click("//table/tbody/tr/td[3]/div/span[11]/a"); assertTrue(selenium.getConfirmation().matches("^Do you really want to delete the selected item[\\s\\S]$")); } Modified: syncope/trunk/console/src/test/java/org/apache/syncope/console/TaskTestITCase.java URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/test/java/org/apache/syncope/console/TaskTestITCase.java?rev=1439854&r1=1439853&r2=1439854&view=diff ============================================================================== --- syncope/trunk/console/src/test/java/org/apache/syncope/console/TaskTestITCase.java (original) +++ syncope/trunk/console/src/test/java/org/apache/syncope/console/TaskTestITCase.java Tue Jan 29 12:24:34 2013 @@ -33,7 +33,7 @@ public class TaskTestITCase extends Abst selenium.waitForCondition("selenium.isTextPresent(" + "\"Operation executed successfully\");", "30000"); - selenium.click("//*[div=1]/../td[9]/div/span[8]/a"); + selenium.click("//*[div=1]/../td[9]/div/span[9]/a"); selenium.waitForCondition("selenium.isElementPresent(" + "\"//form/div[2]/div/div/span/div/div/div[2]/span/input\");", "30000"); @@ -50,7 +50,7 @@ public class TaskTestITCase extends Abst selenium.waitForCondition("selenium.isElementPresent(\"//div[@id='tabs']\");", "30000"); selenium.click("//div[@id='tabs']/ul/li[3]/a/span"); - selenium.click("//table/tbody/tr/td[7]/div/span[10]/a"); + selenium.click("//table/tbody/tr/td[7]/div/span[11]/a"); assertTrue(selenium.getConfirmation().matches("^Do you really want to delete the selected item[\\s\\S]$")); Modified: syncope/trunk/console/src/test/java/org/apache/syncope/console/UserTestITCase.java URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/test/java/org/apache/syncope/console/UserTestITCase.java?rev=1439854&r1=1439853&r2=1439854&view=diff ============================================================================== --- syncope/trunk/console/src/test/java/org/apache/syncope/console/UserTestITCase.java (original) +++ syncope/trunk/console/src/test/java/org/apache/syncope/console/UserTestITCase.java Tue Jan 29 12:24:34 2013 @@ -50,7 +50,7 @@ public class UserTestITCase extends Abst selenium.waitForCondition("selenium.isElementPresent(\"//div[@id='tabs']\");", "30000"); //Edit user3 - selenium.click("//*[@id=\"users-contain\"]//*[div=3]/../td[4]/div/span[8]/a"); + selenium.click("//*[@id=\"users-contain\"]//*[div=3]/../td[4]/div/span[9]/a"); selenium.waitForCondition("selenium.isElementPresent(" + "\"//input[@value='testUsername']\");", "30000"); @@ -89,7 +89,7 @@ public class UserTestITCase extends Abst selenium.waitForCondition("selenium.isElementPresent(\"//div[@id='tabs']\");", "30000"); - selenium.click("//*[@id=\"users-contain\"]//*[div=4]/../td[4]/div/span[10]/a"); + selenium.click("//*[@id=\"users-contain\"]//*[div=4]/../td[4]/div/span[11]/a"); assertTrue(selenium.getConfirmation().matches("^Do you really want to delete the selected item[\\s\\S]$"));