From 6f2204bcbee237937aacd97a24ce7063385db5a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lorenzo=20Tilve=20=C3=81lvaro?= Date: Fri, 4 Nov 2011 19:54:54 +0100 Subject: [PATCH] Merged creation of new projects from templates into main creation window FEA: ItEr75S04BugFixing --- .../web/orders/OrderCRUDController.java | 14 ++++++++------ .../org/libreplan/web/orders/OrderModel.java | 18 ++++++++++++++---- .../web/orders/ProjectDetailsController.java | 14 ++++++++++++++ .../src/main/webapp/orders/_projectDetails.zul | 8 +++++++- 4 files changed, 43 insertions(+), 11 deletions(-) diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/orders/OrderCRUDController.java b/libreplan-webapp/src/main/java/org/libreplan/web/orders/OrderCRUDController.java index da048bde0..6175d0244 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/orders/OrderCRUDController.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/orders/OrderCRUDController.java @@ -105,7 +105,9 @@ import org.zkoss.zul.api.Window; /** * Controller for CRUD actions
+ * * @author Óscar González Fernández + * @author Lorenzo Tilve Álvaro */ @org.springframework.stereotype.Component @Scope(BeanDefinition.SCOPE_PROTOTYPE) @@ -944,6 +946,10 @@ public class OrderCRUDController extends GenericForwardComposer { orderTemplates.goToCreateTemplateFrom(order); } + public void createFromTemplate(OrderTemplate template) { + orderModel.prepareCreationFrom(template, getDesktop()); + } + private Runnable onUp; public void goToEditForm(Order order) { @@ -1088,18 +1094,14 @@ public class OrderCRUDController extends GenericForwardComposer { orderModel.prepareForCreate(desktop); } - private void editNewCreatedOrder() { + public void editNewCreatedOrder(Window detailsWindow) { showOrderElementFilter(); hideCreateButtons(); prepareEditWindow(); showEditWindow(_("Create project")); - } - - public void editNewCreatedOrder(Window detailsWindow) { - editNewCreatedOrder(); - // close project details window detailsWindow.setVisible(false); setupOrderAuthorizationController(); + detailsWindow.getAttributes(); saveAndContinue(false); } diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/orders/OrderModel.java b/libreplan-webapp/src/main/java/org/libreplan/web/orders/OrderModel.java index 226f29cb6..d9fddda17 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/orders/OrderModel.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/orders/OrderModel.java @@ -2,7 +2,8 @@ * This file is part of LibrePlan * * Copyright (C) 2009-2010 Fundación para o Fomento da Calidade Industrial e - * Desenvolvemento Tecnolóxico de Galicia + * Desenvolvemento Tecnolóxico de Galicia + * Copyright (C) 2011 Igalia, S.L. * * This program is free software: you can redistribute it and/or modify it under * the terms of the GNU Affero General Public License as published by the Free @@ -396,9 +397,18 @@ public class OrderModel extends IntegrationEntityModel implements IOrderModel { @Transactional(readOnly = true) public void prepareCreationFrom(OrderTemplate template, Desktop desktop) { loadNeededDataForConversation(); - Order order = createOrderFrom((OrderTemplate) templateDAO + Order newOrder = createOrderFrom((OrderTemplate) templateDAO .findExistingEntity(template.getId())); - planningState = planningStateCreator.createOn(desktop, order); + newOrder.setName(getOrder().getName()); + if (!getOrder().isCodeAutogenerated()) { + newOrder.setCodeAutogenerated(); + newOrder.setCode(getOrder().getCode()); + } + + newOrder.setCustomer(((Order) getOrder()).getCustomer()); + newOrder.setCalendar(getCalendar()); + + planningState = planningStateCreator.createOn(desktop, newOrder); forceLoadAdvanceAssignmentsAndMeasurements(planningState.getOrder()); initializeOrder(); } @@ -455,7 +465,7 @@ public class OrderModel extends IntegrationEntityModel implements IOrderModel { this.planningState.getSaveCommand().save(beforeSaveActions, null); } } - + private void reattachCalendar() { if (planningState.getOrder().getCalendar() == null) { return; diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/orders/ProjectDetailsController.java b/libreplan-webapp/src/main/java/org/libreplan/web/orders/ProjectDetailsController.java index ede55aa1f..07470d39e 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/orders/ProjectDetailsController.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/orders/ProjectDetailsController.java @@ -2,6 +2,8 @@ * This file is part of LibrePlan * * Copyright (C) 2010-2011 Wireless Galicia, S.L. + * Copyright (C) 2011 Igalia, S.L. + * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published by @@ -30,6 +32,7 @@ import org.apache.commons.logging.LogFactory; import org.libreplan.business.calendars.entities.BaseCalendar; import org.libreplan.business.externalcompanies.entities.ExternalCompany; import org.libreplan.business.orders.entities.Order; +import org.libreplan.business.templates.entities.OrderTemplate; import org.libreplan.web.common.ConstraintChecker; import org.libreplan.web.common.Util; import org.libreplan.web.common.components.bandboxsearch.BandboxSearch; @@ -53,7 +56,9 @@ import org.zkoss.zul.Window; /** * Controller for the creation of an {@link order} with its principal * properties. + * * @author Susana Montes Pedreira + * @author Lorenzo Tilve Álvaro */ public class ProjectDetailsController extends GenericForwardComposer { @@ -79,6 +84,8 @@ public class ProjectDetailsController extends GenericForwardComposer { private BandboxSearch bdExternalCompanies; + private BandboxSearch bdProjectTemplate; + private Textbox txtName; private Datebox deadline; @@ -131,6 +138,13 @@ public class ProjectDetailsController extends GenericForwardComposer { if (tabs != null) { tabs.goToOrdersList(); } + + if (bdProjectTemplate.getSelectedElement() != null) { + OrderTemplate template = (OrderTemplate) bdProjectTemplate + .getSelectedElement(); + + orderController.createFromTemplate(template); + } orderController.editNewCreatedOrder(window); } } diff --git a/libreplan-webapp/src/main/webapp/orders/_projectDetails.zul b/libreplan-webapp/src/main/webapp/orders/_projectDetails.zul index 8cf69c6d2..b6792890e 100644 --- a/libreplan-webapp/src/main/webapp/orders/_projectDetails.zul +++ b/libreplan-webapp/src/main/webapp/orders/_projectDetails.zul @@ -20,7 +20,7 @@ @@ -46,6 +46,11 @@ checked="@{projectController.codeAutogenerated}"/> + + +