diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/orders/OrderElementTreeController.java b/libreplan-webapp/src/main/java/org/libreplan/web/orders/OrderElementTreeController.java index 79c2829c5..8241c2448 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/orders/OrderElementTreeController.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/orders/OrderElementTreeController.java @@ -36,6 +36,7 @@ import java.util.Set; import javax.annotation.Resource; import org.apache.commons.lang.StringUtils; +import org.libreplan.business.common.daos.IConfigurationDAO; import org.libreplan.business.orders.entities.Order; import org.libreplan.business.orders.entities.OrderElement; import org.libreplan.business.orders.entities.OrderLine; @@ -55,6 +56,7 @@ import org.libreplan.web.orders.assigntemplates.TemplateFinderPopup.IOnResult; import org.libreplan.web.security.SecurityUtils; import org.libreplan.web.templates.IOrderTemplatesControllerEntryPoints; import org.libreplan.web.tree.TreeController; +import org.springframework.beans.factory.annotation.Autowired; import org.zkoss.ganttz.IPredicate; import org.zkoss.ganttz.util.ComponentsFinder; import org.zkoss.zk.ui.Component; @@ -62,6 +64,7 @@ import org.zkoss.zk.ui.Executions; import org.zkoss.zk.ui.WrongValueException; import org.zkoss.zk.ui.event.Event; import org.zkoss.zk.ui.event.EventListener; +import org.zkoss.zul.A; import org.zkoss.zul.Button; import org.zkoss.zul.Checkbox; import org.zkoss.zul.Constraint; @@ -78,6 +81,7 @@ import org.zkoss.zul.impl.api.InputElement; /** * Controller for {@link OrderElement} tree view of {@link Order} entities
+ * * @author Lorenzo Tilve Álvaro * @author Manuel Rego Casasnovas * @author Susana Montes Pedreira @@ -114,6 +118,11 @@ public class OrderElementTreeController extends TreeController { private Popup filterOptionsPopup; + @Autowired + private IConfigurationDAO configurationDAO; + + private String jiraUrl; + public List getLabels() { return orderModel.getLabels(); } @@ -274,6 +283,9 @@ public class OrderElementTreeController extends TreeController { operationsForOrderElement.tree(tree) .orderTemplates(this.orderTemplates); + jiraUrl = configurationDAO.getConfigurationWithReadOnlyTransaction() + .getJiraConfiguration().getJiraUrl(); + disableCreateTemplateButtonIfNeeded(comp); } @@ -413,6 +425,15 @@ public class OrderElementTreeController extends TreeController { @Override protected void addCodeCell(final OrderElement orderElement) { + setCodeFromJira(orderElement.getCode().startsWith("JIRA")); + if (codeFromJira) { + addHyperlink(orderElement); + } else { + addTextbox(orderElement); + } + } + + private void addTextbox(final OrderElement orderElement) { Textbox textBoxCode = new Textbox(); Util.bind(textBoxCode, new Util.Getter() { @Override @@ -446,6 +467,29 @@ public class OrderElementTreeController extends TreeController { putCodeTextbox(orderElement, textBoxCode); } + private void addHyperlink(final OrderElement orderElement) { + A hyperlink = new A(); + Util.bind(hyperlink, new Util.Getter() { + + @Override + public String get() { + return jiraUrl; + } + }, new Util.Getter() { + + @Override + public String get() { + return orderElement.getCode(); + } + }); + + if (orderModel.isCodeAutogenerated() || readOnly) { + hyperlink.setDisabled(true); + } + + addCell(hyperlink); + } + void addInitDateCell(final OrderElement currentOrderElement) { DynamicDatebox dinamicDatebox = new DynamicDatebox( new DynamicDatebox.Getter() {