When opening the `resource allocation modal window` (double-click on a
task), the advanced search was calculating the load of the resources
when it should do it when clicking advanced search button. This leads
to a big delay when opening the `resource allocation modal window` if
there is a moderate amount of data.
Now these calculations are only done when clicking advanced search
button and the `resource allocation modal window` is opened almost
instantly.
A JavaScript string is being generated quoted by the ' character. If
it finds that character in a string inside the evaled JavaScript it
would terminate the string prematurely, causing syntax errors.
When an allocation cannot be done, the error message on the input
disappeared because the rows were re-rendered due to reloadBindings
call. Now this call is avoided and some extracted functionality from
getCurrentRows is called.
It's not strictly necessary since inside the listener is checked that
effortInput is enabled, but for consistency do it the same way as with
effortInput.
The MessagesForUser component is used for showing information and
error messages to the users. It's designed to disappear once the user
does some action and a minimum of time has passed.
This is done listening to the events being produced in the page. In
previous versions of ZK this was enough to identify user activity, but
in the version currently used, 5.0.11, events not related to user
activity are generated. This causes the messages to disappear without
user action.
With this fix, only when the user clicks on something, or changes the
value of some input the shown message is cleared.
Java's Gettext Commons,
http://xnap-commons.sourceforge.net/gettext-commons/, uses
java.text.MessageFormat for doing the parameter substitution.
MessageFormat interprets ' as an escaping character. In order to
introduce ', you have to escape it, i.e., you have to type '' instead.
Otherwise posterior positional parameters like {0} aren't interpreted.
When checking the condition
`isOnlyChildAndParentAlreadyInUseByHoursOrExpenses` the parent might
be a new object. In that case the check if false and no further
querying must be done in the parent.
The structure of the tooltip can change depending on the language.
Concatenating strings hardwires it to the English language. Using
parameters instead.
extended with the implementation of the ITaskFundamentalProperties:
- getProjectHoursStatus()
- getProjectBudgetStatus()
- getTooltipTextForProjectHoursStatus()
- getTooltipTextForProjectBudgetStatus()
The patch "Refreshed calculated expense column on hours or budget changes"
on commit 8c2c7996a2 can cause
compilation problems depeding on the JAVA version installed, so it's
reverted till it gets avoided.
FEA: ItEr77S17AutomaticBudgeting
The manually introduced budget cell will be representing the total
amount for the budget on that item, and the expenses cell will
show the difference between that total and the resources costs
for the task hours and required criteria.
FEA: ItEr77S17AutomaticBudgeting
The budget cell will represent the total available budget, and the calculated
read-only total, will be the result of substracting the consumed budget due
to the hours and cost categories of the assinged task criteria.
FEA: ItEr77S17AutomaticBudgeting
Avoid potential remote code execution through the `parameters`
parameter. They were concatenated to the capture command String
directly, which could lead to the injection of malicious code.
Currently the problem isn't exposed because the potential attacker
can't control the contents of the `parameters` map, since their
contents are chosen from a limited set of values.
FEA: ItEr77S17AutomaticBudgeting
As a method has been added to HourCostDAO to provide the PricePerHour associated
to a category, for an specific WorkHourType, the loading and attachment of
these objects is not longer needed here.