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() {