From a751b266b4c3c622da06c10cd01300c5f4f40bf3 Mon Sep 17 00:00:00 2001 From: Manuel Rego Casasnovas Date: Wed, 9 May 2012 11:20:00 +0200 Subject: [PATCH] Add link from user edition to worker edition if the user is bound to any worker Using entry points to do the redirection. FEA: ItEr76S27ResourceBinding --- .../worker/CriterionsController.java | 12 ++++---- .../worker/WorkerCRUDController.java | 7 +++-- .../web/users/UserCRUDController.java | 28 +++++++++++++++++++ .../src/main/webapp/users/_editUser.zul | 3 ++ 4 files changed, 42 insertions(+), 8 deletions(-) diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/resources/worker/CriterionsController.java b/libreplan-webapp/src/main/java/org/libreplan/web/resources/worker/CriterionsController.java index 8a74c66ef..9ae1540f3 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/resources/worker/CriterionsController.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/resources/worker/CriterionsController.java @@ -137,11 +137,13 @@ public class CriterionsController extends GenericForwardComposer { public void forceSortGridSatisfaction() { Column column = (Column) listingCriterions.getColumns().getFirstChild(); ListModelExt model = (ListModelExt) listingCriterions.getModel(); - if ("ascending".equals(column.getSortDirection())) { - model.sort(column.getSortAscending(), true); - } - if ("descending".equals(column.getSortDirection())) { - model.sort(column.getSortDescending(), false); + if (model != null) { + if ("ascending".equals(column.getSortDirection())) { + model.sort(column.getSortAscending(), true); + } + if ("descending".equals(column.getSortDirection())) { + model.sort(column.getSortDescending(), false); + } } } diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/resources/worker/WorkerCRUDController.java b/libreplan-webapp/src/main/java/org/libreplan/web/resources/worker/WorkerCRUDController.java index 36706808a..7fac3aee2 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/resources/worker/WorkerCRUDController.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/resources/worker/WorkerCRUDController.java @@ -457,14 +457,15 @@ public class WorkerCRUDController extends GenericForwardComposer implements messages = new MessagesForUser(messagesContainer); setupResourcesCostCategoryAssignmentController(comp); - final EntryPointsHandler handler = URLHandlerRegistry - .getRedirectorFor(IWorkerCRUDControllerEntryPoints.class); - handler.register(this, page); getVisibility().showOnly(listWindow); initFilterComponent(); setupFilterLimitingResourceListbox(); initializeTabs(); initUserBindingComponents(); + + final EntryPointsHandler handler = URLHandlerRegistry + .getRedirectorFor(IWorkerCRUDControllerEntryPoints.class); + handler.register(this, page); } private void initUserBindingComponents() { diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/users/UserCRUDController.java b/libreplan-webapp/src/main/java/org/libreplan/web/users/UserCRUDController.java index cf1eb1103..90daec37d 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/users/UserCRUDController.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/users/UserCRUDController.java @@ -25,9 +25,12 @@ import static org.libreplan.web.I18nHelper._; import java.util.List; +import javax.annotation.Resource; + import org.apache.commons.logging.LogFactory; import org.libreplan.business.common.exceptions.InstanceNotFoundException; import org.libreplan.business.common.exceptions.ValidationException; +import org.libreplan.business.resources.entities.Worker; import org.libreplan.business.users.entities.Profile; import org.libreplan.business.users.entities.User; import org.libreplan.business.users.entities.UserRole; @@ -36,6 +39,7 @@ import org.libreplan.web.common.Util; import org.libreplan.web.common.components.Autocomplete; import org.libreplan.web.common.entrypoints.EntryPointsHandler; import org.libreplan.web.common.entrypoints.IURLHandlerRegistry; +import org.libreplan.web.resources.worker.IWorkerCRUDControllerEntryPoints; import org.zkoss.zk.ui.Component; import org.zkoss.zk.ui.WrongValueException; import org.zkoss.zk.ui.event.Event; @@ -45,6 +49,7 @@ import org.zkoss.zul.Combobox; import org.zkoss.zul.Comboitem; import org.zkoss.zul.Constraint; import org.zkoss.zul.Label; +import org.zkoss.zul.Messagebox; import org.zkoss.zul.Row; import org.zkoss.zul.RowRenderer; import org.zkoss.zul.Textbox; @@ -61,6 +66,9 @@ public class UserCRUDController extends BaseCRUDController implements private static final org.apache.commons.logging.Log LOG = LogFactory.getLog(UserCRUDController.class); + @Resource + private IWorkerCRUDControllerEntryPoints workerCRUD; + private IUserModel userModel; private Textbox passwordBox; @@ -331,4 +339,24 @@ public class UserCRUDController extends BaseCRUDController implements return false; } + public void goToWorkerEdition() { + Worker worker = getUser().getWorker(); + if (worker != null) { + if (showConfirmWorkerEditionDialog() == Messagebox.OK) { + workerCRUD.goToEditForm(worker); + } + } + } + + private int showConfirmWorkerEditionDialog() { + try { + return Messagebox + .show(_("Unsaved changes will be lost. Would you like to continue?"), + _("Confirm worker edition"), Messagebox.OK + | Messagebox.CANCEL, Messagebox.QUESTION); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + } + } diff --git a/libreplan-webapp/src/main/webapp/users/_editUser.zul b/libreplan-webapp/src/main/webapp/users/_editUser.zul index 5b02021b1..7ac33252b 100644 --- a/libreplan-webapp/src/main/webapp/users/_editUser.zul +++ b/libreplan-webapp/src/main/webapp/users/_editUser.zul @@ -111,6 +111,9 @@ +