diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/FunctionalityExposedForExtensions.java b/ganttzk/src/main/java/org/zkoss/ganttz/FunctionalityExposedForExtensions.java index 5320124d7..92c70ae7e 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/FunctionalityExposedForExtensions.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/FunctionalityExposedForExtensions.java @@ -3,7 +3,7 @@ * * Copyright (C) 2009-2010 Fundación para o Fomento da Calidade Industrial e * Desenvolvemento Tecnolóxico de Galicia - * Copyright (C) 2010-2011 Igalia, S.L. + * Copyright (C) 2010-2012 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 @@ -227,6 +227,7 @@ public class FunctionalityExposedForExtensions implements IContext { } result.setShowingReportedHours(planner.showReportedHoursRightNow()); + result.setShowingMoneyCostBar(planner.showMoneyCostBarRightNow()); result.setShowingAdvances(planner.showAdvancesRightNow()); mapper.register(position, result, data); @@ -465,6 +466,20 @@ public class FunctionalityExposedForExtensions implements IContext { } } + @Override + public void showMoneyCostBar() { + for (Task task : diagramGraph.getTasks()) { + task.setShowingMoneyCostBar(true); + } + } + + @Override + public void hideMoneyCostBar() { + for (Task task : diagramGraph.getTasks()) { + task.setShowingMoneyCostBar(false); + } + } + @Override public void reloadCharts() { configuration.reloadCharts(); @@ -483,6 +498,8 @@ public class FunctionalityExposedForExtensions implements IContext { Checkbox advances = (Checkbox) parent.getFellow("print_advances"); Checkbox reportedHours = (Checkbox) parent .getFellow("print_reported_hours"); + Checkbox moneyCostBar = (Checkbox) parent + .getFellow("print_money_cost_bar"); parameters.put("extension", ".png"); if (expanded.isChecked() == true) { @@ -497,6 +514,9 @@ public class FunctionalityExposedForExtensions implements IContext { if (reportedHours.isChecked() == true) { parameters.put("reportedHours", "all"); } + if (moneyCostBar.isChecked() == true) { + parameters.put("moneyCostBar", "all"); + } if (resources.isChecked() == true) { parameters.put("resources", "all"); } diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/Planner.java b/ganttzk/src/main/java/org/zkoss/ganttz/Planner.java index 1d2984df6..f30a2e0a7 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/Planner.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/Planner.java @@ -3,7 +3,7 @@ * * Copyright (C) 2009-2010 Fundación para o Fomento da Calidade Industrial e * Desenvolvemento Tecnolóxico de Galicia - * Copyright (C) 2010-2011 Igalia, S.L. + * Copyright (C) 2010-2012 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 @@ -120,6 +120,15 @@ public class Planner extends HtmlMacroComponent { return toLowercaseSet(values).contains("all"); } + public static boolean guessShowMoneyCostBarByDefault( + Map queryURLParameters) { + String[] values = queryURLParameters.get("moneyCostBar"); + if (values == null) { + return false; + } + return toLowercaseSet(values).contains("all"); + } + private static Set toLowercaseSet(String[] values) { Set result = new HashSet(); for (String each : values) { @@ -156,6 +165,8 @@ public class Planner extends HtmlMacroComponent { private boolean isShowingReportedHours = false; + private boolean isShowingMoneyCostBar = false; + private boolean isShowingResources = false; private boolean isExpandAll = false; @@ -372,6 +383,11 @@ public class Planner extends HtmlMacroComponent { Button showAllResources = (Button) getFellow("showAllResources"); showAllResources.setVisible(false); } + if (!configuration.isMoneyCostBarEnabled()) { + Button showMoneyCostBarButton = (Button) getFellow("showMoneyCostBar"); + showMoneyCostBarButton.setVisible(false); + } + listZoomLevels.setSelectedIndex(getZoomLevel().ordinal()); this.visibleChart = configuration.isExpandPlanningViewCharts(); @@ -571,12 +587,22 @@ public class Planner extends HtmlMacroComponent { } }; + private IGraphChangeListener showMoneyCostBarOnChange = new IGraphChangeListener() { + + @Override + public void execute() { + context.showMoneyCostBar(); + } + }; + private boolean containersExpandedByDefault = false; private boolean shownAdvanceByDefault = false; private boolean shownReportedHoursByDefault = false; + private boolean shownMoneyCostBarByDefault = false; + private FilterAndParentExpandedPredicates predicate; private boolean visibleChart; @@ -645,6 +671,26 @@ public class Planner extends HtmlMacroComponent { } } + public void showMoneyCostBar() { + Button showMoneyCostBarButton = (Button) getFellow("showMoneyCostBar"); + if (disabilityConfiguration.isMoneyCostBarEnabled()) { + if (isShowingMoneyCostBar) { + context.hideMoneyCostBar(); + diagramGraph + .removePostGraphChangeListener(showMoneyCostBarOnChange); + showMoneyCostBarButton.setSclass("planner-command"); + showMoneyCostBarButton.setTooltiptext(_("Show money cost bar")); + } else { + context.showMoneyCostBar(); + diagramGraph + .addPostGraphChangeListener(showMoneyCostBarOnChange); + showMoneyCostBarButton.setSclass("planner-command clicked"); + showMoneyCostBarButton.setTooltiptext(_("Hide money cost bar")); + } + isShowingMoneyCostBar = !isShowingMoneyCostBar; + } + } + public void showAllLabels() { Button showAllLabelsButton = (Button) getFellow("showAllLabels"); if (isShowingLabels) { @@ -732,6 +778,19 @@ public class Planner extends HtmlMacroComponent { return (areShownReportedHoursByDefault() || isShowingReportedHours); } + public void setAreShownMoneyCostBarByDefault( + boolean shownMoneyCostBarByDefault) { + this.shownMoneyCostBarByDefault = shownMoneyCostBarByDefault; + } + + public boolean areShownMoneyCostBarByDefault() { + return shownMoneyCostBarByDefault; + } + + public boolean showMoneyCostBarRightNow() { + return (areShownMoneyCostBarByDefault() || isShowingMoneyCostBar); + } + public void expandAll() { Button expandAllButton = (Button) getFellow("expandAll"); if (disabilityConfiguration.isExpandAllEnabled()) { diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/TaskComponent.java b/ganttzk/src/main/java/org/zkoss/ganttz/TaskComponent.java index 5c20e4709..88aa427fe 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/TaskComponent.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/TaskComponent.java @@ -3,7 +3,7 @@ * * Copyright (C) 2009-2010 Fundación para o Fomento da Calidade Industrial e * Desenvolvemento Tecnolóxico de Galicia - * Copyright (C) 2010-2011 Igalia, S.L. + * Copyright (C) 2010-2012 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 @@ -60,6 +60,7 @@ import org.zkoss.zul.Div; * Graphical component which represents a {@link Task}. * * @author Javier Morán Rúa + * @author Manuel Rego Casasnovas */ public class TaskComponent extends Div implements AfterCompose { @@ -78,6 +79,8 @@ public class TaskComponent extends Div implements AfterCompose { private PropertyChangeListener showingReportedHoursPropertyListener; + private PropertyChangeListener showingMoneyCostBarPropertyListener; + public static TaskComponent asTaskComponent(Task task, IDisabilityConfiguration disabilityConfiguration, boolean isTopLevel) { @@ -278,6 +281,20 @@ public class TaskComponent extends Div implements AfterCompose { this.task .addReportedHoursPropertyChangeListener(showingReportedHoursPropertyListener); + if (showingMoneyCostBarPropertyListener == null) { + showingMoneyCostBarPropertyListener = new PropertyChangeListener() { + + @Override + public void propertyChange(PropertyChangeEvent evt) { + if (isInPage() && !(task instanceof Milestone)) { + updateCompletionMoneyCostBar(); + } + } + }; + } + this.task + .addMoneyCostBarPropertyChangeListener(showingMoneyCostBarPropertyListener); + if (criticalPathPropertyListener == null) { criticalPathPropertyListener = new PropertyChangeListener() { @@ -491,6 +508,7 @@ public class TaskComponent extends Div implements AfterCompose { return; } updateCompletionReportedHours(); + updateCompletionMoneyCostBar(); updateCompletionAdvance(); } @@ -507,6 +525,19 @@ public class TaskComponent extends Div implements AfterCompose { } } + public void updateCompletionMoneyCostBar() { + if (task.isShowingMoneyCostBar()) { + int startPixels = this.task.getBeginDate().toPixels(getMapper()); + String widthMoneyCostBar = pixelsFromStartUntil(startPixels, + this.task.getMoneyCostBarEndDate()) + "px"; + response(null, new AuInvoke(this, "resizeCompletionMoneyCostBar", + widthMoneyCostBar)); + } else { + response(null, new AuInvoke(this, "resizeCompletionMoneyCostBar", + "0px")); + } + } + private void updateCompletionAdvance() { if (task.isShowingAdvances()) { int startPixels = this.task.getBeginDate().toPixels(getMapper()); diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/adapters/IDisabilityConfiguration.java b/ganttzk/src/main/java/org/zkoss/ganttz/adapters/IDisabilityConfiguration.java index 3fa8307be..6f5b50b38 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/adapters/IDisabilityConfiguration.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/adapters/IDisabilityConfiguration.java @@ -3,7 +3,7 @@ * * Copyright (C) 2009-2010 Fundación para o Fomento da Calidade Industrial e * Desenvolvemento Tecnolóxico de Galicia - * Copyright (C) 2010-2011 Igalia, S.L. + * Copyright (C) 2010-2012 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 @@ -22,7 +22,7 @@ package org.zkoss.ganttz.adapters; /** * @author Óscar González Fernández - * + * @author Manuel Rego Casasnovas */ public interface IDisabilityConfiguration { @@ -40,6 +40,8 @@ public interface IDisabilityConfiguration { public boolean isReportedHoursEnabled(); + public boolean isMoneyCostBarEnabled(); + public boolean isExpandAllEnabled(); public boolean isFlattenTreeEnabled(); diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/adapters/PlannerConfiguration.java b/ganttzk/src/main/java/org/zkoss/ganttz/adapters/PlannerConfiguration.java index e9728222a..0931feeac 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/adapters/PlannerConfiguration.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/adapters/PlannerConfiguration.java @@ -148,6 +148,8 @@ public class PlannerConfiguration implements IDisabilityConfiguration { private boolean reportedHoursEnabled = true; + private boolean moneyCostBarEnabled = true; + private boolean expandAllEnabled = true; private boolean flattenTreeEnabled = true; @@ -345,6 +347,15 @@ public class PlannerConfiguration implements IDisabilityConfiguration { return reportedHoursEnabled; } + public void setMoneyCostBarEnabled(boolean moneyCostBarEnabled) { + this.moneyCostBarEnabled = moneyCostBarEnabled; + } + + @Override + public boolean isMoneyCostBarEnabled() { + return moneyCostBarEnabled; + } + public void setExpandAllEnabled(boolean expandAllEnabled) { this.expandAllEnabled = expandAllEnabled; } diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/data/DefaultFundamentalProperties.java b/ganttzk/src/main/java/org/zkoss/ganttz/data/DefaultFundamentalProperties.java index d85fc6233..5788dcfc9 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/data/DefaultFundamentalProperties.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/data/DefaultFundamentalProperties.java @@ -3,7 +3,7 @@ * * Copyright (C) 2009-2010 Fundación para o Fomento da Calidade Industrial e * Desenvolvemento Tecnolóxico de Galicia - * Copyright (C) 2010-2011 Igalia, S.L. + * Copyright (C) 2010-2012 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 @@ -34,6 +34,7 @@ import org.zkoss.ganttz.data.constraint.Constraint; /** * @author Óscar González Fernández + * @author Manuel Rego Casasnovas */ public class DefaultFundamentalProperties implements ITaskFundamentalProperties { @@ -47,10 +48,14 @@ public class DefaultFundamentalProperties implements ITaskFundamentalProperties private long hoursAdvanceEndDate; + private long moneyCostBarEndDate; + private Date advanceEndDate; private BigDecimal hoursAdvancePercentage; + private BigDecimal moneyCostBarPercentage; + private BigDecimal advancePercentage; private String tooltipText; @@ -92,15 +97,19 @@ public class DefaultFundamentalProperties implements ITaskFundamentalProperties public DefaultFundamentalProperties(String name, Date beginDate, long lengthMilliseconds, String notes, Date hoursAdvanceEndDate, + Date moneyCostBarEndDate, Date advanceEndDate, - BigDecimal hoursAdvancePercentage, BigDecimal advancePercentage) { + BigDecimal hoursAdvancePercentage, + BigDecimal moneyCostBarPercentage, BigDecimal advancePercentage) { this.name = name; this.beginDate = beginDate.getTime(); this.lengthMilliseconds = lengthMilliseconds; this.notes = notes; this.hoursAdvanceEndDate = hoursAdvanceEndDate.getTime(); + this.moneyCostBarEndDate = moneyCostBarEndDate.getTime(); this.advanceEndDate = advanceEndDate; this.hoursAdvancePercentage = hoursAdvancePercentage; + this.moneyCostBarPercentage = moneyCostBarPercentage; this.advancePercentage = advancePercentage; this.tooltipText = "Default tooltip"; this.labelsText = ""; @@ -169,6 +178,11 @@ public class DefaultFundamentalProperties implements ITaskFundamentalProperties return GanttDate.createFrom(new Date(hoursAdvanceEndDate)); } + @Override + public GanttDate getMoneyCostBarEndDate() { + return GanttDate.createFrom(new Date(moneyCostBarEndDate)); + } + @Override public GanttDate getAdvanceEndDate() { return advanceEndDate != null ? GanttDate.createFrom(new Date( diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/data/GanttDiagramGraph.java b/ganttzk/src/main/java/org/zkoss/ganttz/data/GanttDiagramGraph.java index 571891055..e05e6ec07 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/data/GanttDiagramGraph.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/data/GanttDiagramGraph.java @@ -2427,4 +2427,4 @@ public class GanttDiagramGraph> implements return adapter.getChildren(task); } -} \ No newline at end of file +} diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/data/ITaskFundamentalProperties.java b/ganttzk/src/main/java/org/zkoss/ganttz/data/ITaskFundamentalProperties.java index 0df1bf198..a09035f36 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/data/ITaskFundamentalProperties.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/data/ITaskFundamentalProperties.java @@ -3,7 +3,7 @@ * * Copyright (C) 2009-2010 Fundación para o Fomento da Calidade Industrial e * Desenvolvemento Tecnolóxico de Galicia - * Copyright (C) 2010-2011 Igalia, S.L. + * Copyright (C) 2010-2012 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 @@ -29,6 +29,7 @@ import org.zkoss.ganttz.data.constraint.Constraint; /** * @author Óscar González Fernández + * @author Manuel Rego Casasnovas */ public interface ITaskFundamentalProperties { @@ -76,6 +77,8 @@ public interface ITaskFundamentalProperties { public GanttDate getHoursAdvanceEndDate(); + public GanttDate getMoneyCostBarEndDate(); + public GanttDate getAdvanceEndDate(); public BigDecimal getHoursAdvancePercentage(); diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/data/Task.java b/ganttzk/src/main/java/org/zkoss/ganttz/data/Task.java index b1f9788a6..57e7b17a1 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/data/Task.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/data/Task.java @@ -3,7 +3,7 @@ * * Copyright (C) 2009-2010 Fundación para o Fomento da Calidade Industrial e * Desenvolvemento Tecnolóxico de Galicia - * Copyright (C) 2010-2011 Igalia, S.L. + * Copyright (C) 2010-2012 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 @@ -47,7 +47,9 @@ import org.zkoss.ganttz.util.WeakReferencedListeners.Mode; /** * This class contains the information of a task. It can be modified and * notifies of the changes to the interested parties.
+ * * @author Óscar González Fernández + * @author Manuel Rego Casasnovas */ public abstract class Task implements ITaskFundamentalProperties { @@ -72,6 +74,9 @@ public abstract class Task implements ITaskFundamentalProperties { private PropertyChangeSupport reportedHoursProperty = new PropertyChangeSupport( this); + private PropertyChangeSupport moneyCostBarProperty = new PropertyChangeSupport( + this); + private final ITaskFundamentalProperties fundamentalProperties; private boolean visible = true; @@ -82,6 +87,8 @@ public abstract class Task implements ITaskFundamentalProperties { private boolean showingReportedHours = false; + private boolean showingMoneyCostBar = false; + private ConstraintViolationNotificator violationNotificator = ConstraintViolationNotificator .create(); @@ -241,6 +248,17 @@ public abstract class Task implements ITaskFundamentalProperties { return showingReportedHours; } + public void setShowingMoneyCostBar(boolean showingMoneyCostBar) { + boolean previousValue = this.showingMoneyCostBar; + this.showingMoneyCostBar = showingMoneyCostBar; + moneyCostBarProperty.firePropertyChange("showingMoneyCostBar", + previousValue, this.showingMoneyCostBar); + } + + public boolean isShowingMoneyCostBar() { + return showingMoneyCostBar; + } + public String getName() { return fundamentalProperties.getName(); } @@ -297,6 +315,11 @@ public abstract class Task implements ITaskFundamentalProperties { this.reportedHoursProperty.addPropertyChangeListener(listener); } + public void addMoneyCostBarPropertyChangeListener( + PropertyChangeListener listener) { + this.moneyCostBarProperty.addPropertyChangeListener(listener); + } + public void addFundamentalPropertiesChangeListener( PropertyChangeListener listener) { this.fundamentalPropertiesListeners.addPropertyChangeListener(listener); @@ -374,6 +397,11 @@ public abstract class Task implements ITaskFundamentalProperties { return fundamentalProperties.getHoursAdvanceEndDate(); } + @Override + public GanttDate getMoneyCostBarEndDate() { + return fundamentalProperties.getMoneyCostBarEndDate(); + } + @Override public GanttDate getAdvanceEndDate() { return fundamentalProperties.getAdvanceEndDate(); diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/extensions/ContextRelativeToOtherComponent.java b/ganttzk/src/main/java/org/zkoss/ganttz/extensions/ContextRelativeToOtherComponent.java index 14a3be66e..a0fd03996 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/extensions/ContextRelativeToOtherComponent.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/extensions/ContextRelativeToOtherComponent.java @@ -3,7 +3,7 @@ * * Copyright (C) 2009-2010 Fundación para o Fomento da Calidade Industrial e * Desenvolvemento Tecnolóxico de Galicia - * Copyright (C) 2010-2011 Igalia, S.L. + * Copyright (C) 2010-2012 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 @@ -35,7 +35,9 @@ import org.zkoss.zk.ui.Component; /** * An implementation of {@link IContext} that delegates to another context and * redefines its {@link IContext#getRelativeTo()} + * * @author Óscar González Fernández + * @author Manuel Rego Casasnovas */ public class ContextRelativeToOtherComponent implements IContext { @@ -147,4 +149,15 @@ public class ContextRelativeToOtherComponent implements IContext { public void showReportedHours() { context.showReportedHours(); } + + @Override + public void hideMoneyCostBar() { + context.hideMoneyCostBar(); + } + + @Override + public void showMoneyCostBar() { + context.showMoneyCostBar(); + } + } diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/extensions/ContextWithPlannerTask.java b/ganttzk/src/main/java/org/zkoss/ganttz/extensions/ContextWithPlannerTask.java index a1ddd3c0d..59b09e8c2 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/extensions/ContextWithPlannerTask.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/extensions/ContextWithPlannerTask.java @@ -3,7 +3,7 @@ * * Copyright (C) 2009-2010 Fundación para o Fomento da Calidade Industrial e * Desenvolvemento Tecnolóxico de Galicia - * Copyright (C) 2010-2011 Igalia, S.L. + * Copyright (C) 2010-2012 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 @@ -36,7 +36,9 @@ import org.zkoss.zk.ui.Component; * An implementation of {@link IContextWithPlannerTask} that wraps another * context and specifies the task to be returned by * {@link IContextWithPlannerTask#getTask()} + * * @author Óscar González Fernández + * @author Manuel Rego Casasnovas */ public class ContextWithPlannerTask implements IContextWithPlannerTask { @@ -149,4 +151,15 @@ public class ContextWithPlannerTask implements IContextWithPlannerTask { public void showReportedHours() { context.showReportedHours(); } + + @Override + public void hideMoneyCostBar() { + context.hideMoneyCostBar(); + } + + @Override + public void showMoneyCostBar() { + context.showMoneyCostBar(); + } + } diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/extensions/IContext.java b/ganttzk/src/main/java/org/zkoss/ganttz/extensions/IContext.java index c5b02d2a6..4465b3a72 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/extensions/IContext.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/extensions/IContext.java @@ -3,7 +3,7 @@ * * Copyright (C) 2009-2010 Fundación para o Fomento da Calidade Industrial e * Desenvolvemento Tecnolóxico de Galicia - * Copyright (C) 2010-2011 Igalia, S.L. + * Copyright (C) 2010-2012 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 @@ -38,7 +38,9 @@ import org.zkoss.zk.ui.Component; /** * A facade for operations allowed to extensions
+ * * @author Óscar González Fernández + * @author Manuel Rego Casasnovas */ public interface IContext { @@ -143,4 +145,9 @@ public interface IContext { void showReportedHours(); void hideReportedHours(); + + void showMoneyCostBar(); + + void hideMoneyCostBar(); + } diff --git a/ganttzk/src/main/resources/web/ganttz/zul/plannerLayout.zul b/ganttzk/src/main/resources/web/ganttz/zul/plannerLayout.zul index c86c7a858..f3947a669 100644 --- a/ganttzk/src/main/resources/web/ganttz/zul/plannerLayout.zul +++ b/ganttzk/src/main/resources/web/ganttz/zul/plannerLayout.zul @@ -3,7 +3,7 @@ Copyright (C) 2009-2010 Fundación para o Fomento da Calidade Industrial e Desenvolvemento Tecnolóxico de Galicia - Copyright (C) 2010-2011 Igalia, S.L. + Copyright (C) 2010-2012 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 @@ -86,6 +86,12 @@ planner = self; sclass="planner-command"/> +