CVE-2022-4593 (Other, published 2022-12-18T08:15Z)
Description: value: A vulnerability was found in retra-system. It has been classified as problematic. Affected is an unknown function. The manipulation leads to cross site scripting. It is possible to launch the attack remotely. The name of the patch is a6d94ab88f4a6f631a14c59b72461140fb57ae1f. It is recommended to apply a patch to fix this issue. VDB-216186 is the identifier assigned to this vulnerability.
Severity: nan (CVSS v3 base score: 6.1)
Weakness: CWE-79 \u2014 Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')
The product does not neutralize or incorrectly neutralizes user-controllable input before it is placed in output that is used as a web page that is served to other users.
Repository: https://github.com/retra/retra-system
Files changed:
src/main/java/cz/softinel/retra/core/system/web/SystemController.java
src/main/java/cz/softinel/retra/core/utils/decorator/DateDecorator.java
src/main/java/cz/softinel/retra/core/utils/decorator/EmailDecorator.java
src/main/java/cz/softinel/retra/core/utils/decorator/HourDecorator.java
src/main/java/cz/softinel/retra/core/utils/decorator/HoursDecorator.java
src/main/java/cz/softinel/retra/core/utils/decorator/ScheduleOverviewDecorator.java
src/main/java/cz/softinel/retra/jiraintegration/JiraHelper.java
src/main/java/cz/softinel/retra/jiraintegration/JiraIssue.java
src/main/java/cz/softinel/retra/worklog/blo/WorklogLogicImpl.java
src/main/java/cz/softinel/retra/worklog/web/AbstractWorklogFormController.java
src/main/java/cz/softinel/uaf/lovs/LovsFactory.java
src/main/java/cz/softinel/uaf/vc/tag/SelectTag.java
src/main/webapp/WEB-INF/jsp/Includes.jsp
src/main/webapp/WEB-INF/jsp/retra/ComponentCreate.jsp
src/main/webapp/WEB-INF/jsp/retra/ComponentEdit.jsp
src/main/webapp/WEB-INF/jsp/retra/EmployeeChangeContactInfo.jsp
src/main/webapp/WEB-INF/jsp/retra/EmployeeChangePassword.jsp
src/main/webapp/WEB-INF/jsp/retra/EmployeeCreate.jsp
src/main/webapp/WEB-INF/jsp/retra/EmployeeEdit.jsp
src/main/webapp/WEB-INF/jsp/retra/EmployeeManagement.jsp
src/main/webapp/WEB-INF/jsp/retra/EmployeeView.jsp
src/main/webapp/WEB-INF/jsp/retra/InvoiceBatchGenerateConfirm.jsp
src/main/webapp/WEB-INF/jsp/retra/InvoiceBatchGenerateForm.jsp
src/main/webapp/WEB-INF/jsp/retra/InvoiceBatchResult.jsp
src/main/webapp/WEB-INF/jsp/retra/InvoiceCreate.jsp
src/main/webapp/WEB-INF/jsp/retra/InvoiceEdit.jsp
src/main/webapp/WEB-INF/jsp/retra/InvoiceList.jsp
src/main/webapp/WEB-INF/jsp/retra/InvoiceView.jsp
src/main/webapp/WEB-INF/jsp/retra/ProjectCreate.jsp
src/main/webapp/WEB-INF/jsp/retra/ProjectEdit.jsp
src/main/webapp/WEB-INF/jsp/retra/ProjectManageComponents.jsp
src/main/webapp/WEB-INF/jsp/retra/ProjectManagement.jsp
src/main/webapp/WEB-INF/jsp/retra/ProjectView.jsp
src/main/webapp/WEB-INF/jsp/retra/ScheduleCopy.jsp
src/main/webapp/WEB-INF/jsp/retra/ScheduleCreate.jsp
src/main/webapp/WEB-INF/jsp/retra/ScheduleEdit.jsp
src/main/webapp/WEB-INF/jsp/retra/ScheduleList.jsp
src/main/webapp/WEB-INF/jsp/retra/ScheduleOverviewList.jsp
src/main/webapp/WEB-INF/jsp/retra/ScheduleView.jsp
src/main/webapp/WEB-INF/jsp/retra/WorklogCreate.jsp
src/main/webapp/WEB-INF/jsp/retra/WorklogDaily.jsp
src/main/webapp/WEB-INF/jsp/retra/WorklogDailyOverview.jsp
src/main/webapp/WEB-INF/jsp/retra/WorklogEdit.jsp
src/main/webapp/WEB-INF/jsp/retra/WorklogImportConfirm.jsp
src/main/webapp/WEB-INF/jsp/retra/WorklogImportMapping.jsp
src/main/webapp/WEB-INF/jsp/retra/WorklogInvoicePairConfirm.jsp
src/main/webapp/WEB-INF/jsp/retra/WorklogInvoicePairFilter.jsp
src/main/webapp/WEB-INF/jsp/retra/WorklogList.jsp
src/main/webapp/WEB-INF/jsp/retra/WorklogMonthlyOverview.jsp
src/main/webapp/WEB-INF/jsp/retra/WorklogOverview.jsp
src/main/webapp/WEB-INF/jsp/retra/WorklogOverviewList.jsp
src/main/webapp/WEB-INF/jsp/retra/WorklogProjectOverview.jsp
src/main/webapp/WEB-INF/jsp/retra/WorklogView.jsp
src/main/webapp/WEB-INF/jsp/retra/WorklogWeeklyOverview.jsp
src/main/webapp/WEB-INF/jsp/system/ChangeVisualConfiguration.jsp
src/main/webapp/WEB-INF/jsp/system/Login.jsp
src/main/webapp/WEB-INF/jsp/system/RetraError.jsp
src/main/webapp/WEB-INF/lovs/years.xml
src/main/webapp/WEB-INF/news/system-news.xml
src/main/webapp/WEB-INF/resources/about.properties
src/main/webapp/WEB-INF/resources/messages.properties
Commit message: RETRA-41 - Specialni znaky v nazvu projektu
RETRA-48 - Chyba při renderování textu worklogu
RETRA-56 - Retra je nachylna na XSS

Vulnerable code:
		for (Project p : projects) {
			if (p.getState() == Project.STATE_ACTIVE) {
				filtersList.add(p);
		return "<a href='mailto:" + columnValue + "'>" + columnValue + "</a>";
				typeName = type.getName();
			String comment = schedule.getComment();
						title = code + " - " + issue.getSummary();
					String replacement = String.format(url, code, title, code);
					result = result.replaceAll(code, replacement);
		worklog.setDescriptionGui(JiraHelper.getLinkableText(worklog.getDescription(), jiraLogic));
		if (lov == null || lov.getFields() != null) {
						return v1.compareTo(v2);
				"\n		<option value='" + value + "'" + selectedAttribute + ">" + prefix + label + "</option>");
		<input type="hidden" name="${status.expression}" value="${status.value}" />
				<input type="hidden" name="${status.expression}" value="${status.value}" />
					<input type="text" name="${status.expression}" value="${status.value}" maxlength="30"/>
					<input type="text" name="${status.expression}" value="${status.value}" maxlength="250"/>
					<input type="text" name="${status.expression}" value="${status.value}" maxlength="30"/>
					<input type="text" name="${status.expression}" value="${status.value}" maxlength="250"/>
					<input type="text" name="${status.expression}" value="${status.value}" />
					<input type="text" name="${status.expression}" value="${status.value}" />
					<input type="text" name="${status.expression}" value="${status.value}" />
					<input type="text" name="${status.expression}" value="${status.value}" />
					<input type="text" name="${status.expression}" value="${status.value}" />
					<input type="text" name="${status.expression}" value="${status.value}" />
					<input type="text" name="${status.expression}" value="${status.value}" />
					<input type="hidden" name="${status.expression}" value="${status.value}" />
					<input type="hidden" name="${status.expression}" value="${status.value}" />
					<input type="password" name="${status.expression}" value="${status.value}" />
					<input type="password" name="${status.expression}" value="${status.value}" />
					<input type="password" name="${status.expression}" value="${status.value}" />
					<input type="text" name="${status.expression}" value="${status.value}" />
					<input type="text" name="${status.expression}" value="${status.value}" />
					<input type="text" name="${status.expression}" value="${status.value}" />
					<input type="text" name="${status.expression}" value="${status.value}" />
					<input type="text" name="${status.expression}" value="${status.value}" />
					<input type="text" name="${status.expression}" value="${status.value}" />
					<input type="text" name="${status.expression}" value="${status.value}" />
					<input type="text" name="${status.expression}" value="${status.value}" />
					<input type="text" name="${status.expression}" value="${status.value}" />
					<input type="password" name="${status.expression}" value="${status.value}" />
					<input type="password" name="${status.expression}" value="${status.value}" />
					<vc:select name="${status.expression}" valueObjects="${icompanies}" selected="${status.value}" 
				<input type="hidden" name="${status.expression}" value="${status.value}" />
					<input type="text" name="${status.expression}" value="${status.value}" />
					<input type="text" name="${status.expression}" value="${status.value}" />
					<input type="text" name="${status.expression}" value="${status.value}" />
					<input type="text" name="${status.expression}" value="${status.value}" />
					<input type="text" name="${status.expression}" value="${status.value}" />
					<input type="text" name="${status.expression}" value="${status.value}" />
					<input type="text" name="${status.expression}" value="${status.value}" />
					<input type="text" name="${status.expression}" value="${status.value}" />
					<input type="hidden" name="${status.expression}" value="${status.value}" />
					${status.value}
					<input type="text" name="${status.expression}" value="${status.value}" />
					<vc:select name="${status.expression}" valueObjects="${icompanies}" selected="${status.value}" 
						<c:when test="${status.value != null && status.value == true}"><input type="checkbox" name="${status.expression}" checked="checked" /></c:when>
               <c:forEach items="${status.value}" var="currentProject">
		comparator="${nameComparator}"/>
			<td>${employee.user.contactInfo.displayName}</td>
			<td>${employee.user.contactInfo.firstName}</td>
			<td>${employee.user.contactInfo.lastName}</td>
			<td>${employee.user.contactInfo.email}</td>
			<td>${employee.user.contactInfo.web}</td>
			<td>${employee.user.contactInfo.phone1}</td>
			<td>${employee.user.contactInfo.phone2}</td>
			<td>${employee.user.contactInfo.fax}</td>
			<td>${employee.user.login.name}</td>
			<td>${employee.user.login.ldapLogin}</td>
				<c:if test="${employee.icompany != null}" >${employee.icompany.codeAndName}</c:if>
		<display:column property="name" titleKey="entity.project.name" sortable="true"/>
		<td>${invoiceSeq.codeAndName}</td>
		<td>${form.orderDate}</td>
		<td>${form.finishDate}	</td>
		<td>${form.name}</td>
			<span class="invisible">${employee.icompany.code}</span>
			<span title="${employee.icompany.codeAndName}">${employee.icompany.codeAndName}</span>
		<display:column property="employee.icompany" titleKey="entity.employee.icompany" media="csv excel xml pdf rtf"/>
		<display:column property="user.contactInfo.displayName" titleKey="entity.contactInfo.displayName" sortable="true" 	/>
					<vc:select name="${status.expression}" valueObjects="${sequences}" selected="${status.value}" 
					<input type="text" name="${status.expression}" value="${status.value}" id="invoiceOrderDateId"/><%--
					<input type="text" name="${status.expression}" value="${status.value}" id="invoiceFinishDateId"/><%--
					<input type="text" name="${status.expression}" value="${status.value}" maxlength="250" size="75"/>
		<display:column property="employee.icompany.codeAndName" titleKey="entity.employee.icompany" sortable="true" />		
		<display:column property="code" titleKey="entity.invoice.code" sortable="true" maxLength="10"/> 
		<display:column property="employee.user.contactInfo.displayName" titleKey="entity.invoice.employee"/>
		<display:column property="name" titleKey="entity.invoice.name" sortable="true" />
					<vc:select name="${status.expression}" valueObjects="${sequences}" selected="${status.value}" 
					<input type="text" name="${status.expression}" value="${status.value}" maxlength="30"/>
					<input type="text" name="${status.expression}" value="${status.value}" id="invoiceOrderDateId"/><%--
					<input type="text" name="${status.expression}" value="${status.value}" id="invoiceFinishDateId"/><%--
					<input type="text" name="${status.expression}" value="${status.value}" maxlength="250" size="75"/>
		<input type="hidden" name="${status.expression}" value="${status.value}" />
						<input type="hidden" name="${status.expression}" value="${status.value}" />
					<input type="text" name="${status.expression}" value="${status.value}" maxlength="30"/>
					<input type="text" name="${status.expression}" value="${status.value}" id="invoiceOrderDateId"/><%--
					<input type="text" name="${status.expression}" value="${status.value}" id="invoiceFinishDateId"/><%--
					<input type="text" name="${status.expression}" value="${status.value}" maxlength="250" size="75"/>
				<input type="text" name="invoiceFilterOrderDateFrom" value="${invoiceFilterOrderDateFrom}" tabindex="1" id="invoiceFilterOrderDateFromId"/><%--
				<vc:select name="invoiceFilterEmployee" valueObjects="${employees}" selected="${invoiceFilterEmployee}" 
				<input type="text" name="invoiceFilterOrderDateTo" value="${invoiceFilterOrderDateTo}" tabindex="1" id="invoiceFilterOrderDateToId"/><%--
				<input type="text" name="invoiceFilterFinishDateFrom" value="${invoiceFilterFinishDateFrom}" tabindex="1" id="invoiceFilterFinishDateFromId"/><%--
				<input type="text" name="invoiceFilterCode" value="${invoiceFilterCode}" maxlength="30"/>
				<input type="text" name="invoiceFilterFinishDateTo" value="${invoiceFilterFinishDateTo}" tabindex="1" id="invoiceFilterFinishDateToId"/><%--
	<display:column property="orderDate" titleKey="entity.invoice.orderDate" sortable="true" decorator="cz.softinel.retra.core.utils.decorator.DateDecorator" />
	<display:column property="code" titleKey="entity.invoice.code" sortable="true" maxLength="10"/> 
	<display:column property="name" titleKey="entity.invoice.name" sortable="true" />
	<display:column property="employee.user.contactInfo.displayName" titleKey="entity.invoice.employee"/>
	<display:column property="employee.user.login.ldapLogin" titleKey="entity.invoice.employee.ldaplogin" media="csv excel xml pdf rtf" />
			<td>${invoice.code}</td>
			<td>${invoice.employee.user.contactInfo.displayName}</td>
			<td>${invoice.name}</td>
		<display:column titleKey="worklog.project" media="html" >
			<span class="invisible">${worklog.project.code}</span>
			<acronym title="${worklog.project.name}">${worklog.project.code}</acronym>
		<display:column property="project.code" titleKey="worklog.project" media="csv excel xml pdf rtf"/>
			<span class="invisible">${worklog.component.code}</span>
			<acronym title="${worklog.component.name}">${worklog.component.code}</acronym>
		<display:column property="component.code" titleKey="worklog.component" media="csv excel xml pdf rtf"/>
			<span class="invisible">${worklog.activity.code}</span>
			<acronym title="${worklog.activity.name}">${worklog.activity.code}</acronym>
		<display:column property="activity.code" titleKey="worklog.activity" media="csv excel xml pdf rtf"/>
		<display:column property="description" titleKey="worklog.description" media="csv excel xml pdf rtf"/>
					<vc:select name="${status.expression}" valueObjects="${projects}" selected="${status.value}" 
					<input type="text" name="${status.expression}" value="${status.value}" maxlength="30"/>
					<input type="text" name="${status.expression}" value="${status.value}" maxlength="250" size="75" />
					<vc:select name="${status.expression}" valueObjects="${categories}" selected="${status.value}" 
					<input type="text" name="${status.expression}" value="${status.value}" maxlength="15" size="10" />
				<input type="hidden" name="${status.expression}" value="${status.value}" />
					<vc:select name="${status.expression}" valueObjects="${projects}" selected="${status.value}" 
					<input type="text" name="${status.expression}" value="${status.value}" maxlength="30"/>
					<input type="text" name="${status.expression}" value="${status.value}" maxlength="250"  size="75"/>
					<vc:select name="${status.expression}" valueObjects="${categories}" selected="${status.value}" 
					<input type="text" name="${status.expression}" value="${status.value}" maxlength="15" size="10" />
               ${employee.user.contactInfo.displayName}
				<input type="hidden" name="${status.expression}" value="${status.value}" />
			<td>${projectForm.code}</td>
			<td>${projectForm.name}</td>
		<display:column property="code" titleKey="entity.component.code" sortable="true" />
		<display:column property="name" titleKey="entity.component.name" sortable="true" />
				<input type="text" name="projectFilterCode" value="${projectFilterCode}" maxlength="30"/>
				<vc:select name="projectFilterEmployee" valueObjects="${employees}" selected="${projectFilterEmployee}" 
				<input type="text" name="projectFilterName" value="${projectFilterName}" maxlength="255"/>
	<display:column property="parent.code" titleKey="entity.project.parent.code" sortable="true" maxLength="10"/>
	<display:column property="code" titleKey="entity.project.code" sortable="true" maxLength="10"/> 
	<display:column property="name" titleKey="entity.project.name" sortable="true" />
	<display:column property="estimation" titleKey="entity.project.estimation" sortable="true" />
	<display:column property="category.code" titleKey="entity.project.category" sortable="true" />
			<td>${project.parent.code}</td>
			<td>${project.code}</td>
			<td>${project.name}</td>
				<c:if test="${project.category != null}" >${project.category.code} - ${project.category.name}</c:if>
			<td>${project.estimation}</td>
		<display:column property="user.contactInfo.displayName" titleKey="entity.contactInfo.displayName" sortable="true"/>
		<td><input type="hidden" name="${status.expression}" value="${status.value}" /></td>
					<input type="text" name="${status.expression}" value="${status.value}" id="scheduleCopyFromId"/><%--
					<input type="text" name="${status.expression}" value="${status.value}" id="scheduleCopyDestinationFromId"/><%--
					<input type="text" name="${status.expression}" value="${status.value}" id="scheduleCopyDestinationToId"/><%--
					<input type="text" name="${status.expression}" value="${status.value}" id="scheduleDateId"/><%--
					<vc:select name="${status.expression}" valueObjects="${types}" selected="${status.value}"
					<input type="text" name="${status.expression}" value="${status.value}" id="scheduleWorkFromId"/><%--
					<input type="text" name="${status.expression}" value="${status.value}" id="scheduleWorkToId"/><%--
					<textarea name="${status.expression}" cols="40" rows="5" >${status.value}</textarea>
		<td><input type="hidden" name="${status.expression}" value="${status.value}" /></td>
					<input type="text" name="${status.expression}" value="${status.value}" id="scheduleDateId"/><%--
					<vc:select name="${status.expression}" valueObjects="${types}" selected="${status.value}"
					<input type="text" name="${status.expression}" value="${status.value}" id="scheduleWorkToId"/><%--
					<textarea name="${status.expression}" cols="40" rows="5" >${status.value}</textarea>
				<input type="text" name="scheduleFilterFrom" value="${scheduleFilterFrom}" tabindex="1" id="scheduleFilterWorkFromId"/><%--
				<vc:select name="scheduleFilterEmployee" valueObjects="${employees}" selected="${scheduleFilterEmployee}" 
				<input type="text" name="scheduleFilterTo" value="${scheduleFilterTo}" tabindex="2" id="scheduleFilterWorkToId"/><%--
				<vc:select name="scheduleFilterType" valueObjects="${types}" selected="${scheduleFilterType}"
				<vc:select name="scheduleFilterState" valueObjects="${scheduleStates}" selected="${scheduleFilterState}"
		<span class="invisible">${schedule.type.code}</span>
		<span title="${schedule.type.name}">${schedule.type.code}</span>
	<display:column property="type.code" titleKey="schedule.type" sortable="true" media="csv excel xml pdf rtf"/>
		<fmt:message key="schedule.state.${schedule.state}"/>
				<vc:select name="scheduleFilterMonth" valueObjects="${months}" selected="${scheduleFilterMonth}"
				<vc:select name="scheduleFilterEmployee" valueObjects="${employees}" selected="${scheduleFilterEmployee}" 
				<vc:select name="scheduleFilterYear" valueObjects="${years}" selected="${scheduleFilterYear}"
	<display:caption>${employee.user.contactInfo.displayName} - <fmt:message key="month.${scheduleFilterMonth}"/> ${scheduleFilterYear}</display:caption>
			<c:forEach items="${types}" var="type"><td class="center ${type.cssClass}">${type.name}</td></c:forEach>
<c:set var="requestURI" value="ScheduleList.do?fkprm=true&scheduleFilterEmployee=${schedule.employee.pk}" />
			<td>${schedule.comment}</td>
					<input type="text" name="${status.expression}" value="${status.value}" id="worklogDateId"/><%--
					<vc:select name="${status.expression}" valueObjects="${projects}" selected="${status.value}" 
					<vc:select name="${status.expression}" valueObjects="${components}" selected="${status.value}" 
					<vc:select name="${status.expression}" valueObjects="${activities}" selected="${status.value}" 
					<vc:select name="${status.expression}" valueObjects="${invoices}" selected="${status.value}" 
					<input type="text" name="${status.expression}" value="${status.value}" id="worklogWorkFromId"/><%--
					<input type="text" name="${status.expression}" value="${status.value}" id="worklogWorkToId"/><%--
					<textarea id="descriptionId" name="${status.expression}" cols="40" rows="7" onkeypress="return imposeMaxLength(event, this, 249);">${status.value}</textarea>
					<input type="text" name="${status.expression}" value="${status.value}" id="jiraissue" maxlength="50"/>
				<input type="text" name="worklogFilterDate" value="${worklogFilterDate}" tabindex="1" id="worklogFilterDateId"/><%--
				<vc:select name="worklogFilterEmployee" valueObjects="${employees}" selected="${worklogFilterEmployee}" 
	<caption>Daily worklog for ${employee.user.contactInfo.displayName}, ${worklogFilterDate} (<fmt:message key="day.${dayOfWeek}"/>&nbsp;-&nbsp;<span class="${dayOfWeekCss}" title="<fmt:message key="${dayOfWeekTitle}"/>">&nbsp;&nbsp;&nbsp;</span>)</caption>
				<td><acronym title="${worklog.project.name}">${worklog.project.code}</acronym></td>
				<td><acronym title="${worklog.component.name}">${worklog.component.code}</acronym></td>
				<td><acronym title="${worklog.activity.name}">${worklog.activity.code}</acronym></td>
				<td class="nowrap"><acronym title="${worklog.invoice.name}">${worklog.invoice.code}</acronym><c:if test="${worklog.invoice != null}">&nbsp;-&nbsp;<img src="${imgRoot}/<fmt:message key='invoice.state.img.${worklog.invoice.state}' />" alt="<fmt:message key='invoice.state.${worklog.invoice.state}' />" title="<fmt:message key='invoice.state.${worklog.invoice.state}' />" align="absmiddle"/></c:if></td>
							<a href="WorklogDailyCreate.do?fkprm=true&setDate=${worklogFilterDate}">Insert new worklog item</a>
			<th>${project.key.code}</th>
				<vc:select name="worklogFilterEmployee" valueObjects="${employees}" selected="${worklogFilterEmployee}" 
				<input type="text" name="worklogFilterDate" value="${worklogFilterDate}" tabindex="1" id="worklogFilterDateId"/><%--
				<vc:select name="worklogFilterProject" valueObjects="${projects}" selected="${worklogFilterProject}" 
				<vc:select name="worklogFilterActivity" valueObjects="${activities}" selected="${worklogFilterActivity}" 
		<span class="invisible">${worklog.project.code}</span>
		<span title="${worklog.project.name}">${worklog.project.code}</span>
	<display:column property="project.code" titleKey="worklog.project" media="csv excel xml pdf rtf"/>
		<span class="invisible">${worklog.activity.code}</span>
		<span title="${worklog.activity.name}">${worklog.activity.code}</span>
	<display:column property="activity.code" titleKey="worklog.activity" media="csv excel xml pdf rtf"/>
	<display:column property="descriptionGui" titleKey="worklog.description" media="html"/>	
	<display:column property="description" titleKey="worklog.description" media="csv excel xml pdf rtf"/>
		<td><input type="hidden" name="${status.expression}" value="${status.value}" /></td>
					<input type="text" name="${status.expression}" value="${status.value}"  id="worklogDateId"/><%--
					<vc:select name="${status.expression}" valueObjects="${projects}" selected="${status.value}" 
					<vc:select name="${status.expression}" valueObjects="${components}" selected="${status.value}" 
					<vc:select name="${status.expression}" valueObjects="${activities}" selected="${status.value}" 
					<vc:select name="${status.expression}" valueObjects="${invoices}" selected="${status.value}" 
					<input type="text" name="${status.expression}" value="${status.value}" id="worklogWorkFromId"/><%--
					<input type="text" name="${status.expression}" value="${status.value}" id="worklogWorkToId" /><%--
					<textarea id="descriptionId" name="${status.expression}" cols="40" rows="7" onkeypress="return imposeMaxLength(event, this, 249);">${status.value}</textarea>
					<input type="text" name="${status.expression}" value="${status.value}" id="jiraissue" maxlength="50"/>
		<display:column property="project.code" titleKey="worklog.project" />
		<display:column property="activity.code" titleKey="worklog.activity" />
		<display:column property="invoice.name" titleKey="workLog.invoice"/>
		<display:column property="description" titleKey="worklog.description"/>
				<th>${externalProject.name}</th>
					<vc:select name="externalProjects[${status.index}].projectId" valueObjects="${projects}" selected="${externalProject.projectId}" 
					<vc:select name="externalProjects[${status.index}].invoiceId" valueObjects="${invoices}" selected="${externalProject.invoiceId}" 
				<th>${externalActivity.name}</th>
					<vc:select name="externalActivities[${status.index}].activityId" valueObjects="${activities}" selected="${externalActivity.activityId}" 
		<td>${invoice.code}</td>
		<td>${invoice.employee.user.contactInfo.displayName}</td>
		<td>${invoice.name}</td>
			<span class="invisible">${worklog.project.code}</span>
			<span title="${worklog.project.name}">${worklog.project.code}</span>
		<display:column property="project.code" titleKey="worklog.project" media="csv excel xml pdf rtf"/>
			<span class="invisible">${worklog.component.code}</span>
			<acronym title="${worklog.component.name}">${worklog.component.code}</acronym>
		<display:column property="component.code" titleKey="worklog.component" media="csv excel xml pdf rtf"/>
			<span class="invisible">${worklog.activity.code}</span>
			<span title="${worklog.activity.name}">${worklog.activity.code}</span>
		<display:column property="activity.code" titleKey="worklog.activity" media="csv excel xml pdf rtf"/>
		<display:column property="description" titleKey="worklog.description" media="csv excel xml pdf rtf"/>
					<vc:select name="${status.expression}" valueObjects="${invoices}" selected="${status.value}" 
					<vc:select name="${status.expression}" valueObjects="${invoices}" selected="${status.value}" 
					<input type="text" name="${status.expression}" value="${status.value}" id="worklogDateFromId"/><%--
					<input type="text" name="${status.expression}" value="${status.value}" id="worklogDateToId"/><%--
					<vc:select name="${status.expression}" valueObjects="${projects}" selected="${status.value}" 
					<vc:select name="${status.expression}" valueObjects="${activities}" selected="${status.value}" 
				<input type="text" name="worklogFilterFrom" value="${worklogFilterFrom}" tabindex="1" id="worklogFilterWorkFromId"/><%--
				<vc:select name="worklogFilterEmployee" valueObjects="${employees}" selected="${worklogFilterEmployee}" 
				<input type="text" name="worklogFilterTo" value="${worklogFilterTo}" tabindex="2" id="worklogFilterWorkToId"/><%--
				<vc:select name="worklogFilterProject" valueObjects="${projects}" selected="${worklogFilterProject}" 
				<vc:select name="worklogFilterActivity" valueObjects="${activities}" selected="${worklogFilterActivity}" 
	<display:caption>${employee.user.contactInfo.displayName}</display:caption>
		<span class="invisible">${worklog.project.code}</span>
		<span title="${worklog.project.name}">${worklog.project.code}</span>
	<display:column property="project.code" titleKey="worklog.project" sortable="true" media="csv excel xml pdf rtf"/>
		<span class="invisible">${worklog.activity.code}</span>
		<span title="${worklog.activity.name}">${worklog.activity.code}</span>
	<display:column property="activity.code" titleKey="worklog.activity" sortable="true" media="csv excel xml pdf rtf"/>
	<display:column property="description" titleKey="worklog.description" media="csv excel xml pdf rtf"/>
				<vc:select name="worklogFilterMonth" valueObjects="${months}" selected="${worklogFilterMonth}"
				<vc:select name="worklogFilterEmployee" valueObjects="${employees}" selected="${worklogFilterEmployee}" 
				<vc:select name="worklogFilterYear" valueObjects="${years}" selected="${worklogFilterYear}"
				<vc:select name="worklogFilterProject" valueObjects="${projects}" selected="${worklogFilterProject}" 
				<vc:select name="worklogFilterActivity" valueObjects="${activities}" selected="${worklogFilterActivity}" 
		<span class="invisible">${worklog.project.code}</span>
		<span title="${worklog.project.name}">${worklog.project.code}</span>
	<display:column property="project.code" titleKey="worklog.project" media="csv excel xml pdf rtf"/>
		<span class="invisible">${worklog.activity.code}</span>
		<span title="${worklog.activity.name}">${worklog.activity.code}</span>
	<display:column property="activity.code" titleKey="worklog.activity" media="csv excel xml pdf rtf"/>
	<display:column property="description" titleKey="worklog.description" media="csv excel xml pdf rtf"/>
				<input type="text" name="worklogFilterFrom" value="${worklogFilterFrom}" tabindex="1" id="worklogFilterWorkFromId"/><%--
				<vc:select name="worklogFilterEmployee" valueObjects="${employees}" selected="${worklogFilterEmployee}" 
				<input type="text" name="worklogFilterTo" value="${worklogFilterTo}" tabindex="2" id="worklogFilterWorkToId"/><%--
				<vc:select name="worklogFilterProject" valueObjects="${projects}" selected="${worklogFilterProject}" 
				<input type="text" name="worklogFilterInvoiceCode" value="${worklogFilterInvoiceCode}" maxlength="30"/>
				<vc:select name="worklogFilterActivity" valueObjects="${activities}" selected="${worklogFilterActivity}" 
								<option value="${relation.code}" selected="selected"><fmt:message key="invoice.relation.${relation.code}" /></option>
								<option value="${relation.code}"><fmt:message key="invoice.relation.${relation.code}" /></option>
		<h2 class="visibleOnlyInPrint">${employee.user.contactInfo.displayName}: ${worklogFilterFrom} - ${worklogFilterTo}</h2>
					<span class="invisible">${worklog.project.code}</span>
					<acronym title="${worklog.project.name}">${worklog.project.code}</acronym>
				<display:column property="project.code" titleKey="worklog.project" media="csv excel xml pdf rtf"/>
					<span class="invisible">${worklog.component.code}</span>
					<acronym title="${worklog.component.name}">${worklog.component.code}</acronym>
				<display:column property="component.code" titleKey="worklog.component" media="csv excel xml rtf"/>			
					<span class="invisible">${worklog.activity.code}</span>
					<acronym title="${worklog.activity.name}">${worklog.activity.code}</acronym>
						<span class="invisible">${worklog.invoice.code}</span>
						<acronym title="${worklog.invoice.name}">${worklog.invoice.code}</acronym>&nbsp;-&nbsp;<img src="${imgRoot}/<fmt:message key='invoice.state.img.${worklog.invoice.state}' />" alt="<fmt:message key='invoice.state.${worklog.invoice.state}' />" title="<fmt:message key='invoice.state.${worklog.invoice.state}' />" align="absmiddle"/>
				<display:column property="invoice.code" titleKey="worklog.invoice" media="csv excel xml rtf"/>
				<display:column property="employee.user.contactInfo.displayName" titleKey="worklog.employee"/>
				<display:column property="description" titleKey="worklog.description" media="csv excel xml pdf rtf"/>
					<th>${project.key}</th>
					<td>${project.key}</td>
					<td>${activity.key}</td>
					<th>Week ${week.key}</th>
					<th>${activity.key}</th>
					<th>${project.key}</th>
				<vc:select name="worklogFilterMonth" valueObjects="${months}" selected="${worklogFilterMonth}"
				<vc:select name="worklogFilterEmployee" valueObjects="${employees}" selected="${worklogFilterEmployee}" 
				<vc:select name="worklogFilterYear" valueObjects="${years}" selected="${worklogFilterYear}"
	<display:caption>${employee.user.contactInfo.displayName} - <fmt:message key="month.${worklogFilterMonth}"/> ${worklogFilterYear}</display:caption>
		${worklog.project.code} - ${worklog.project.name}
		${worklog.activity.code} - ${worklog.activity.name}
				<input type="text" name="worklogFilterFrom" value="${worklogFilterFrom}" tabindex="1" id="worklogFilterWorkFromId"/><%--
				<vc:select name="worklogFilterProject" valueObjects="${projects}" selected="${worklogFilterProject}" 
				<input type="text" name="worklogFilterTo" value="${worklogFilterTo}" tabindex="2" id="worklogFilterWorkToId"/><%--
				<vc:select name="worklogFilterActivity" valueObjects="${activities}" selected="${worklogFilterActivity}" 
				<input type="text" name="worklogFilterInvoiceCode" value="${worklogFilterInvoiceCode}" maxlength="30"/>
								<option value="${relation.code}" selected="selected"><fmt:message key="invoice.relation.${relation.code}" /></option>
								<option value="${relation.code}"><fmt:message key="invoice.relation.${relation.code}" /></option>
			<display:column property="key" titleKey="worklog.employee" />
			<display:column property="keyInfo" titleKey="worklog.employee.ldaplogin" media="csv excel xml pdf rtf"/>			
			<display:column property="key" titleKey="worklog.activity" />
			<display:column property="key" titleKey="worklog.project" />
					<th>${activity.key}</th>
					<th>${employee.key}</th>
					<th>${project.key}</th>
					<th>${employee.key}</th>
					<th>${activity.key}</th>
					<th>${project.key}</th>
				<span class="invisible">${worklog.project.code}</span>
				<acronym title="${worklog.project.name}">${worklog.project.code}</acronym>
			<display:column property="project.code" titleKey="worklog.project" media="csv excel xml pdf rtf"/>
				<span class="invisible">${worklog.component.code}</span>
				<acronym title="${worklog.component.name}">${worklog.component.code}</acronym>
			<display:column property="component.code" titleKey="worklog.component" media="csv excel xml rtf"/>
				<span class="invisible">${worklog.activity.code}</span>
				<acronym title="${worklog.activity.name}">${worklog.activity.code}</acronym>
			<display:column property="activity.code" titleKey="worklog.activity" media="csv excel xml pdf rtf"/>
					<span class="invisible">${worklog.invoice.code}</span>
					<acronym title="${worklog.invoice.name}">${worklog.invoice.code}</acronym>&nbsp;-&nbsp;<img src="${imgRoot}/<fmt:message key='invoice.state.img.${worklog.invoice.state}' />" alt="<fmt:message key='invoice.state.${worklog.invoice.state}' />" title="<fmt:message key='invoice.state.${worklog.invoice.state}' />" align="middle"/>
			<display:column property="invoice.code" titleKey="worklog.invoice" media="csv excel xml rtf"/>
			<display:column property="employee.user.contactInfo.displayName" titleKey="worklog.employee"/>
			<display:column property="description" titleKey="worklog.description" media="csv excel xml pdf rtf"/>
			<td>${worklog.project.code} - ${worklog.project.name}</td>
				<c:if test="${worklog.component != null}" >${worklog.component.code} - ${worklog.component.name}</c:if>
			<td>${worklog.activity.code} - ${worklog.activity.name}</td>
				<c:if test="${worklog.onInvoice}" >${worklog.invoice.code} (${worklog.invoice.name})&nbsp;-&nbsp;<img src="${imgRoot}/<fmt:message key='invoice.state.img.${worklog.invoice.state}' />" alt="<fmt:message key='invoice.state.${worklog.invoice.state}' />" title="<fmt:message key='invoice.state.${worklog.invoice.state}' />" align="absmiddle" /></c:if>
				<vc:select name="worklogFilterEmployee" valueObjects="${employees}" selected="${worklogFilterEmployee}" 
				<vc:select name="worklogFilterWeek" valueObjects="${weeks}" selected="${worklogFilterWeek}" 
				<vc:select name="worklogFilterProject" valueObjects="${projects}" selected="${worklogFilterProject}" 
				<vc:select name="worklogFilterActivity" valueObjects="${activities}" selected="${worklogFilterActivity}" 
		<span class="invisible">${worklog.project.code}</span>
		<span title="${worklog.project.name}">${worklog.project.code}</span>
	<display:column property="project.code" titleKey="worklog.project" media="csv excel xml pdf rtf"/>
		<span class="invisible">${worklog.activity.code}</span>
		<span title="${worklog.activity.name}">${worklog.activity.code}</span>
	<display:column property="activity.code" titleKey="worklog.activity" media="csv excel xml pdf rtf"/>
	<display:column property="description" titleKey="worklog.description" media="csv excel xml pdf rtf"/>
					<vc:select name="${status.expression}" valueObjects="${skins}" selected="${status.value}" 
					<vc:select name="${status.expression}" valueObjects="${timeSelectors}" selected="${status.value}" 
					<vc:select name="${status.expression}" valueObjects="${activities}" selected="${status.value}" 
					<vc:select name="${status.expression}" valueObjects="${projects}" selected="${status.value}" 
					<vc:select name="${status.expression}" valueObjects="${activities}" selected="${status.value}" 
					<vc:select name="${status.expression}" valueObjects="${projects}" selected="${status.value}" 
					<vc:select name="${status.expression}" valueObjects="${activities}" selected="${status.value}" 
					<vc:select name="${status.expression}" valueObjects="${projects}" selected="${status.value}" 
					<vc:select name="${status.expression}" valueObjects="${activities}" selected="${status.value}" 
					<vc:select name="${status.expression}" valueObjects="${projects}" selected="${status.value}" 
					<vc:select name="${status.expression}" valueObjects="${activities}" selected="${status.value}" 
					<vc:select name="${status.expression}" valueObjects="${projects}" selected="${status.value}" 
					<vc:select name="${status.expression}" valueObjects="${activities}" selected="${status.value}" 
					<vc:select name="${status.expression}" valueObjects="${projects}" selected="${status.value}" 
					<vc:select name="${status.expression}" valueObjects="${activities}" selected="${status.value}" 
					<vc:select name="${status.expression}" valueObjects="${projects}" selected="${status.value}" 
					<vc:select name="${status.expression}" valueObjects="${activities}" selected="${status.value}" 
					<vc:select name="${status.expression}" valueObjects="${projects}" selected="${status.value}" 
					<vc:select name="${status.expression}" valueObjects="${activities}" selected="${status.value}" 
					<vc:select name="${status.expression}" valueObjects="${projects}" selected="${status.value}" 
					<vc:select name="${status.expression}" valueObjects="${activities}" selected="${status.value}" 
					<vc:select name="${status.expression}" valueObjects="${projects}" selected="${status.value}" 
					<vc:select name="${status.expression}" valueObjects="${activities}" selected="${status.value}" 
			<input type="text" name="loginName" value="${loginName}" />
		<p><fmt:message key="retra.error.id"/>: ${errId}</p>

	<!-- item date="2.2.2015"
about.version.minor=10
about.releasedOn=27.6.2019
footer.copyright=Copyright &copy; 2007-2019, <a href='About.do?fkprm=true'>Retra Team</a>
footer.copyright.noLink=Copyright &copy; 2007-2019, Retra Team

Fixed code:
		if (projects != null && !projects.isEmpty()) {
			for (Project p : projects) {
				if (p.getState() == Project.STATE_ACTIVE) {
					filtersList.add(p);
				}
import org.apache.commons.lang.StringEscapeUtils;
		if (columnValue instanceof String) {
			return StringEscapeUtils.escapeHtml(columnValue.toString());
		}
		
import org.apache.commons.lang.StringEscapeUtils;
		String escaped = StringEscapeUtils.escapeHtml(columnValue.toString());
		return "<a href='mailto:" + escaped + "'>" + escaped + "</a>";
import org.apache.commons.lang.StringEscapeUtils;
		if (columnValue instanceof String) {
			return StringEscapeUtils.escapeHtml(columnValue.toString());
		}

import org.apache.commons.lang.StringEscapeUtils;
		if (columnValue instanceof String) {
			return StringEscapeUtils.escapeHtml(columnValue.toString());
		}

import org.apache.commons.lang.StringEscapeUtils;
				typeName = StringEscapeUtils.escapeHtml(type.getName());
			String comment = StringEscapeUtils.escapeHtml(schedule.getComment());
		if (columnValue instanceof String) {
			result = StringEscapeUtils.escapeHtml(columnValue.toString());
		}

import org.apache.commons.lang.StringEscapeUtils;

						String summary = getSafeJiraText(issue.getSummary());
						title = code + " - " + summary;
						String replacement = String.format(url, code, title, code);
						result = result.replaceAll(code, replacement);
	public static String getSafeJiraText(final String text) {
		String safeText = "";
		if (text != null) {
			safeText = StringEscapeUtils.escapeHtml(text);
			safeText = safeText.replace("$", "&dollar;").replace("{", "&lcub;").replace("}", "&rcub;");
		}
		return safeText;
	}
	public void setSummary(String summary) {
		if (fields != null) {
			this.fields.setSummary(summary); 
		}
	}

import org.apache.commons.lang.StringEscapeUtils;
		worklog.setDescriptionGui(JiraHelper.getLinkableText(StringEscapeUtils.escapeHtml(worklog.getDescription()), jiraLogic));
				ji.setSummary(JiraHelper.getSafeJiraText(ji.getSummary()));
		if (lov == null || lov.getFields() == null) {
import org.apache.commons.lang.StringEscapeUtils;
import org.apache.poi.util.StringUtil;
						if (v1 != null && v2 != null) {
							return v1.compareTo(v2);							
						} else {
							if (v2 == null) {
								return 0;
							} else {
								return -1;
							}
						}
		String escapedValue = StringEscapeUtils.escapeHtml(value);
		String escapedLabel = StringEscapeUtils.escapeHtml(label);
		
				"\n		<option value='" + escapedValue + "'" + selectedAttribute + ">" + prefix + escapedLabel + "</option>");
--%><%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %><%--
		<input type="hidden" name="${status.expression}" value="${fn:escapeXml(status.value)}" />
				<input type="hidden" name="${status.expression}" value="${fn:escapeXml(status.value)}" />
					<input type="text" name="${status.expression}" value="${fn:escapeXml(status.value)}" maxlength="30"/>
					<input type="text" name="${status.expression}" value="${fn:escapeXml(status.value)}" maxlength="250"/>
					<input type="text" name="${status.expression}" value="${fn:escapeXml(status.value)}" maxlength="30"/>
					<input type="text" name="${status.expression}" value="${fn:escapeXml(status.value)}" maxlength="250"/>
					<input type="text" name="${status.expression}" value="${fn:escapeXml(status.value)}" />
					<input type="text" name="${status.expression}" value="${fn:escapeXml(status.value)}" />
					<input type="text" name="${status.expression}" value="${fn:escapeXml(status.value)}" />
					<input type="text" name="${status.expression}" value="${fn:escapeXml(status.value)}" />
					<input type="text" name="${status.expression}" value="${fn:escapeXml(status.value)}" />
					<input type="text" name="${status.expression}" value="${fn:escapeXml(status.value)}" />
					<input type="text" name="${status.expression}" value="${fn:escapeXml(status.value)}" />
					<input type="hidden" name="${status.expression}" value="${fn:escapeXml(status.value)}" />
					<input type="hidden" name="${status.expression}" value="${fn:escapeXml(status.value)}" />
					<input type="password" name="${status.expression}" value="${fn:escapeXml(status.value)}" />
					<input type="password" name="${status.expression}" value="${fn:escapeXml(status.value)}" />
					<input type="password" name="${status.expression}" value="${fn:escapeXml(status.value)}" />
					<input type="text" name="${status.expression}" value="${fn:escapeXml(status.value)}" />
					<input type="text" name="${status.expression}" value="${fn:escapeXml(status.value)}" />
					<input type="text" name="${status.expression}" value="${fn:escapeXml(status.value)}" />
					<input type="text" name="${status.expression}" value="${fn:escapeXml(status.value)}" />
					<input type="text" name="${status.expression}" value="${fn:escapeXml(status.value)}" />
					<input type="text" name="${status.expression}" value="${fn:escapeXml(status.value)}" />
					<input type="text" name="${status.expression}" value="${fn:escapeXml(status.value)}" />
					<input type="text" name="${status.expression}" value="${fn:escapeXml(status.value)}" />
					<input type="text" name="${status.expression}" value="${fn:escapeXml(status.value)}" />
					<input type="password" name="${status.expression}" value="${fn:escapeXml(status.value)}" />
					<input type="password" name="${status.expression}" value="${fn:escapeXml(status.value)}" />
					<vc:select name="${status.expression}" valueObjects="${icompanies}" selected="${fn:escapeXml(status.value)}" 
				<input type="hidden" name="${status.expression}" value="${fn:escapeXml(fn:escapeXml(status.value))}" />
					<input type="text" name="${status.expression}" value="${fn:escapeXml(fn:escapeXml(status.value))}" />
					<input type="text" name="${status.expression}" value="${fn:escapeXml(fn:escapeXml(status.value))}" />
					<input type="text" name="${status.expression}" value="${fn:escapeXml(fn:escapeXml(status.value))}" />
					<input type="text" name="${status.expression}" value="${fn:escapeXml(fn:escapeXml(status.value))}" />
					<input type="text" name="${status.expression}" value="${fn:escapeXml(fn:escapeXml(status.value))}" />
					<input type="text" name="${status.expression}" value="${fn:escapeXml(fn:escapeXml(status.value))}" />
					<input type="text" name="${status.expression}" value="${fn:escapeXml(fn:escapeXml(status.value))}" />
					<input type="text" name="${status.expression}" value="${fn:escapeXml(fn:escapeXml(status.value))}" />
					<input type="hidden" name="${status.expression}" value="${fn:escapeXml(fn:escapeXml(status.value))}" />
					${fn:escapeXml(fn:escapeXml(status.value))}
					<input type="text" name="${status.expression}" value="${fn:escapeXml(fn:escapeXml(status.value))}" />
					<vc:select name="${status.expression}" valueObjects="${icompanies}" selected="${fn:escapeXml(fn:escapeXml(status.value))}" 
						<c:when test="${fn:escapeXml(status.value) != null && fn:escapeXml(status.value) == true}"><input type="checkbox" name="${status.expression}" checked="checked" /></c:when>
               <c:forEach items="${fn:escapeXml(status.value)}" var="currentProject">
		comparator="${nameComparator}" escapeXml="true" />
			<td>${fn:escapeXml(employee.user.contactInfo.displayName)}</td>
			<td>${fn:escapeXml(employee.user.contactInfo.firstName)}</td>
			<td>${fn:escapeXml(employee.user.contactInfo.lastName)}</td>
			<td>${fn:escapeXml(employee.user.contactInfo.email)}</td>
			<td>${fn:escapeXml(employee.user.contactInfo.web)}</td>
			<td>${fn:escapeXml(employee.user.contactInfo.phone1)}</td>
			<td>${fn:escapeXml(employee.user.contactInfo.phone2)}</td>
			<td>${fn:escapeXml(employee.user.contactInfo.fax)}</td>
			<td>${fn:escapeXml(employee.user.login.name)}</td>
			<td>${fn:escapeXml(employee.user.login.ldapLogin)}</td>
				<c:if test="${employee.icompany != null}" >${fn:escapeXml(employee.icompany.codeAndName)}</c:if>
		<display:column property="name" titleKey="entity.project.name" sortable="true" escapeXml="true"/>
		<td>${fn:escapeXml(invoiceSeq.codeAndName)}</td>
		<td>${fn:escapeXml(form.orderDate)}</td>
		<td>${fn:escapeXml(form.finishDate)}	</td>
		<td>${fn:escapeXml(form.name)}</td>
			<span class="invisible">${fn:escapeXml(employee.icompany.code)}</span>
			<span title="${fn:escapeXml(employee.icompany.codeAndName)}">${fn:escapeXml(employee.icompany.codeAndName)}</span>
		<display:column property="employee.icompany" titleKey="entity.employee.icompany" media="csv excel xml pdf rtf" escapeXml="true"/>
		<display:column property="user.contactInfo.displayName" titleKey="entity.contactInfo.displayName" sortable="true" escapeXml="true"/>
					<vc:select name="${status.expression}" valueObjects="${sequences}" selected="${fn:escapeXml(status.value)}" 
					<input type="text" name="${status.expression}" value="${fn:escapeXml(status.value)}" id="invoiceOrderDateId"/><%--
					<input type="text" name="${status.expression}" value="${fn:escapeXml(status.value)}" id="invoiceFinishDateId"/><%--
					<input type="text" name="${status.expression}" value="${fn:escapeXml(status.value)}" maxlength="250" size="75"/>
		<display:column property="employee.icompany.codeAndName" titleKey="entity.employee.icompany" sortable="true" escapeXml="true" />		
		<display:column property="code" titleKey="entity.invoice.code" sortable="true" maxLength="10" escapeXml="true" /> 
		<display:column property="employee.user.contactInfo.displayName" titleKey="entity.invoice.employee" escapeXml="true" />
		<display:column property="name" titleKey="entity.invoice.name" sortable="true" escapeXml="true" />
					<vc:select name="${status.expression}" valueObjects="${sequences}" selected="${fn:escapeXml(status.value)}" 
					<input type="text" name="${status.expression}" value="${fn:escapeXml(status.value)}" maxlength="30"/>
					<input type="text" name="${status.expression}" value="${fn:escapeXml(status.value)}" id="invoiceOrderDateId"/><%--
					<input type="text" name="${status.expression}" value="${fn:escapeXml(status.value)}" id="invoiceFinishDateId"/><%--
					<input type="text" name="${status.expression}" value="${fn:escapeXml(status.value)}" maxlength="250" size="75"/>
		<input type="hidden" name="${status.expression}" value="${fn:escapeXml(status.value)}" />
						<input type="hidden" name="${status.expression}" value="${fn:escapeXml(status.value)}" />
					<input type="text" name="${status.expression}" value="${fn:escapeXml(status.value)}" maxlength="30"/>
					<input type="text" name="${status.expression}" value="${fn:escapeXml(status.value)}" id="invoiceOrderDateId"/><%--
					<input type="text" name="${status.expression}" value="${fn:escapeXml(status.value)}" id="invoiceFinishDateId"/><%--
					<input type="text" name="${status.expression}" value="${fn:escapeXml(status.value)}" maxlength="250" size="75"/>
				<input type="text" name="invoiceFilterOrderDateFrom" value="${fn:escapeXml(invoiceFilterOrderDateFrom)}" tabindex="1" id="invoiceFilterOrderDateFromId"/><%--
				<vc:select name="invoiceFilterEmployee" valueObjects="${employees}" selected="${fn:escapeXml(invoiceFilterEmployee)}" 
				<input type="text" name="invoiceFilterOrderDateTo" value="${fn:escapeXml(invoiceFilterOrderDateTo)}" tabindex="1" id="invoiceFilterOrderDateToId"/><%--
				<input type="text" name="invoiceFilterFinishDateFrom" value="${fn:escapeXml(invoiceFilterFinishDateFrom)}" tabindex="1" id="invoiceFilterFinishDateFromId"/><%--
				<input type="text" name="invoiceFilterCode" value="${fn:escapeXml(invoiceFilterCode)}" maxlength="30"/>
				<input type="text" name="invoiceFilterFinishDateTo" value="${fn:escapeXml(invoiceFilterFinishDateTo)}" tabindex="1" id="invoiceFilterFinishDateToId"/><%--
	<display:column property="orderDate" titleKey="entity.invoice.orderDate" sortable="true" decorator="cz.softinel.retra.core.utils.decorator.DateDecorator"/>
	<display:column property="code" titleKey="entity.invoice.code" sortable="true" maxLength="10" escapeXml="true" /> 
	<display:column property="name" titleKey="entity.invoice.name" sortable="true" escapeXml="true" />
	<display:column property="employee.user.contactInfo.displayName" titleKey="entity.invoice.employee" escapeXml="true" />
	<display:column property="employee.user.login.ldapLogin" titleKey="entity.invoice.employee.ldaplogin" media="csv excel xml pdf rtf" escapeXml="true"/>
			<td>${fn:escapeXml(invoice.code)}</td>
			<td>${fn:escapeXml(invoice.employee.user.contactInfo.displayName)}</td>
			<td>${fn:escapeXml(invoice.name)}</td>
		<display:column titleKey="worklog.project" media="html">
			<span class="invisible">${fn:escapeXml(worklog.project.code)}</span>
			<acronym title="${fn:escapeXml(worklog.project.name)}">${fn:escapeXml(worklog.project.code)}</acronym>
		<display:column property="project.code" titleKey="worklog.project" media="csv excel xml pdf rtf" escapeXml="true"/>
			<span class="invisible">${fn:escapeXml(worklog.component.code)}</span>
			<acronym title="${fn:escapeXml(worklog.component.name)}">${fn:escapeXml(worklog.component.code)}</acronym>
		<display:column property="component.code" titleKey="worklog.component" media="csv excel xml pdf rtf" escapeXml="true"/>
			<span class="invisible">${fn:escapeXml(worklog.activity.code)}</span>
			<acronym title="${fn:escapeXml(worklog.activity.name)}">${fn:escapeXml(worklog.activity.code)}</acronym>
		<display:column property="activity.code" titleKey="worklog.activity" media="csv excel xml pdf rtf" escapeXml="true"/>
		<display:column property="description" titleKey="worklog.description" media="csv excel xml pdf rtf" escapeXml="true"/>
					<vc:select name="${status.expression}" valueObjects="${projects}" selected="${fn:escapeXml(status.value)}" 
					<input type="text" name="${status.expression}" value="${fn:escapeXml(status.value)}" maxlength="30"/>
					<input type="text" name="${status.expression}" value="${fn:escapeXml(status.value)}" maxlength="250" size="75" />
					<vc:select name="${status.expression}" valueObjects="${categories}" selected="${fn:escapeXml(status.value)}" 
					<input type="text" name="${status.expression}" value="${fn:escapeXml(status.value)}" maxlength="15" size="10" />
				<input type="hidden" name="${status.expression}" value="${fn:escapeXml(status.value)}" />
					<vc:select name="${status.expression}" valueObjects="${projects}" selected="${fn:escapeXml(status.value)}" 
					<input type="text" name="${status.expression}" value="${fn:escapeXml(status.value)}" maxlength="30"/>
					<input type="text" name="${status.expression}" value="${fn:escapeXml(status.value)}" maxlength="250"  size="75"/>
					<vc:select name="${status.expression}" valueObjects="${categories}" selected="${fn:escapeXml(status.value)}" 
					<input type="text" name="${status.expression}" value="${fn:escapeXml(status.value)}" maxlength="15" size="10" />
               ${fn:escapeXml(employee.user.contactInfo.displayName)}
				<input type="hidden" name="${status.expression}" value="${fn:escapeXml(status.value)}" />
			<td>${fn:escapeXml(projectForm.code)}</td>
			<td>${fn:escapeXml(projectForm.name)}</td>
		<display:column property="code" titleKey="entity.component.code" sortable="true" escapeXml="true" />
		<display:column property="name" titleKey="entity.component.name" sortable="true" escapeXml="true" />
				<input type="text" name="projectFilterCode" value="${fn:escapeXml(projectFilterCode)}" maxlength="30"/>
				<vc:select name="projectFilterEmployee" valueObjects="${employees}" selected="${fn:escapeXml(projectFilterEmployee)}" 
				<input type="text" name="projectFilterName" value="${fn:escapeXml(projectFilterName)}" maxlength="255"/>
	<display:column property="parent.code" titleKey="entity.project.parent.code" sortable="true" maxLength="10" escapeXml="true" />
	<display:column property="code" titleKey="entity.project.code" sortable="true" maxLength="10" escapeXml="true" /> 
	<display:column property="name" titleKey="entity.project.name" sortable="true"  escapeXml="true"/>
	<display:column property="estimation" titleKey="entity.project.estimation" sortable="true" escapeXml="true" />
	<display:column property="category.code" titleKey="entity.project.category" sortable="true" escapeXml="true" />
			<td>${fn:escapeXml(project.parent.code)}</td>
			<td>${fn:escapeXml(project.code)}</td>
			<td>${fn:escapeXml(project.name)}</td>
				<c:if test="${project.category != null}" >${fn:escapeXml(project.category.code)} - ${fn:escapeXml(project.category.name)}</c:if>
			<td>${fn:escapeXml(project.estimation)}</td>
		<display:column property="user.contactInfo.displayName" titleKey="entity.contactInfo.displayName" sortable="true" escapeXml="true" />
		<td><input type="hidden" name="${status.expression}" value="${fn:escapeXml(status.value)}" /></td>
					<input type="text" name="${status.expression}" value="${fn:escapeXml(status.value)}" id="scheduleCopyFromId"/><%--
					<input type="text" name="${status.expression}" value="${fn:escapeXml(status.value)}" id="scheduleCopyDestinationFromId"/><%--
					<input type="text" name="${status.expression}" value="${fn:escapeXml(status.value)}" id="scheduleCopyDestinationToId"/><%--
					<input type="text" name="${status.expression}" value="${fn:escapeXml(status.value)}" id="scheduleDateId"/><%--
					<vc:select name="${status.expression}" valueObjects="${types}" selected="${fn:escapeXml(status.value)}"
					<input type="text" name="${status.expression}" value="${fn:escapeXml(status.value)}" id="scheduleWorkFromId"/><%--
					<input type="text" name="${status.expression}" value="${fn:escapeXml(status.value)}" id="scheduleWorkToId"/><%--
					<textarea name="${status.expression}" cols="40" rows="5" >${fn:escapeXml(status.value)}</textarea>
		<td><input type="hidden" name="${status.expression}" value="${fn:escapeXml(status.value)}" /></td>
					<input type="text" name="${status.expression}" value="${fn:escapeXml(status.value)}" id="scheduleDateId"/><%--
					<vc:select name="${status.expression}" valueObjects="${types}" selected="${fn:escapeXml(status.value)}"
					<input type="text" name="${status.expression}" value="${fn:escapeXml(status.value)}" id="scheduleWorkToId"/><%--
					<textarea name="${status.expression}" cols="40" rows="5" >${fn:escapeXml(status.value)}</textarea>
				<input type="text" name="scheduleFilterFrom" value="${fn:escapeXml(scheduleFilterFrom)}" tabindex="1" id="scheduleFilterWorkFromId"/><%--
				<vc:select name="scheduleFilterEmployee" valueObjects="${employees}" selected="${fn:escapeXml(scheduleFilterEmployee)}" 
				<input type="text" name="scheduleFilterTo" value="${fn:escapeXml(scheduleFilterTo)}" tabindex="2" id="scheduleFilterWorkToId"/><%--
				<vc:select name="scheduleFilterType" valueObjects="${types}" selected="${fn:escapeXml(scheduleFilterType)}"
				<vc:select name="scheduleFilterState" valueObjects="${scheduleStates}" selected="${fn:escapeXml(scheduleFilterState)}"
		<span class="invisible">${fn:escapeXml(schedule.type.code)}</span>
		<span title="${fn:escapeXml(schedule.type.name)}">${fn:escapeXml(schedule.type.code)}</span>
	<display:column property="type.code" titleKey="schedule.type" sortable="true" media="csv excel xml pdf rtf" escapeXml="true" />
		<fmt:message key="schedule.state.${fn:escapeXml(schedule.state)}"/>
				<vc:select name="scheduleFilterMonth" valueObjects="${months}" selected="${fn:escapeXml(scheduleFilterMonth)}"
				<vc:select name="scheduleFilterEmployee" valueObjects="${employees}" selected="${fn:escapeXml(scheduleFilterEmployee)}" 
				<vc:select name="scheduleFilterYear" valueObjects="${years}" selected="${fn:escapeXml(scheduleFilterYear)}"
	<display:caption>${fn:escapeXml(employee.user.contactInfo.displayName)} - <fmt:message key="month.${fn:escapeXml(scheduleFilterMonth)}"/> ${fn:escapeXml(scheduleFilterYear)}</display:caption>
			<c:forEach items="${types}" var="type"><td class="center ${type.cssClass}">${fn:escapeXml(type.name)}</td></c:forEach>
<c:set var="requestURI" value="ScheduleList.do?fkprm=true&scheduleFilterEmployee=${fn:escapeXml(schedule.employee.pk)}" />
			<td>${fn:escapeXml(schedule.comment)}</td>
					<input type="text" name="${status.expression}" value="${fn:escapeXml(status.value)}" id="worklogDateId"/><%--
					<vc:select name="${status.expression}" valueObjects="${projects}" selected="${fn:escapeXml(status.value)}" 
					<vc:select name="${status.expression}" valueObjects="${components}" selected="${fn:escapeXml(status.value)}" 
					<vc:select name="${status.expression}" valueObjects="${activities}" selected="${fn:escapeXml(status.value)}" 
					<vc:select name="${status.expression}" valueObjects="${invoices}" selected="${fn:escapeXml(status.value)}" 
					<input type="text" name="${status.expression}" value="${fn:escapeXml(status.value)}" id="worklogWorkFromId"/><%--
					<input type="text" name="${status.expression}" value="${fn:escapeXml(status.value)}" id="worklogWorkToId"/><%--
					<textarea id="descriptionId" name="${status.expression}" cols="40" rows="7" onkeypress="return imposeMaxLength(event, this, 249);">${fn:escapeXml(status.value)}</textarea>
					<input type="text" name="${status.expression}" value="${fn:escapeXml(status.value)}" id="jiraissue" maxlength="50"/>
				<input type="text" name="worklogFilterDate" value="${fn:escapeXml(worklogFilterDate)}" tabindex="1" id="worklogFilterDateId"/><%--
				<vc:select name="worklogFilterEmployee" valueObjects="${employees}" selected="${fn:escapeXml(worklogFilterEmployee)}" 
	<caption>Daily worklog for ${fn:escapeXml(employee.user.contactInfo.displayName)}, ${fn:escapeXml(worklogFilterDate)} (<fmt:message key="day.${dayOfWeek}"/>&nbsp;-&nbsp;<span class="${dayOfWeekCss}" title="<fmt:message key="${dayOfWeekTitle}"/>">&nbsp;&nbsp;&nbsp;</span>)</caption>
				<td><acronym title="${fn:escapeXml(worklog.project.name)}">${fn:escapeXml(worklog.project.code)}</acronym></td>
				<td><acronym title="${fn:escapeXml(worklog.component.name)}">${fn:escapeXml(worklog.component.code)}</acronym></td>
				<td><acronym title="${fn:escapeXml(worklog.activity.name)}">${fn:escapeXml(worklog.activity.code)}</acronym></td>
				<td class="nowrap"><acronym title="${fn:escapeXml(worklog.invoice.name)}">${fn:escapeXml(worklog.invoice.code)}</acronym><c:if test="${worklog.invoice != null}">&nbsp;-&nbsp;<img src="${imgRoot}/<fmt:message key='invoice.state.img.${worklog.invoice.state}' />" alt="<fmt:message key='invoice.state.${worklog.invoice.state}' />" title="<fmt:message key='invoice.state.${worklog.invoice.state}' />" align="absmiddle"/></c:if></td>
							<a href="WorklogDailyCreate.do?fkprm=true&setDate=${fn:escapeXml(worklogFilterDate)}">Insert new worklog item</a>
			<th>${fn:escapeXml(project.key.code)}</th>
				<vc:select name="worklogFilterEmployee" valueObjects="${employees}" selected="${fn:escapeXml(worklogFilterEmployee)}" 
				<input type="text" name="worklogFilterDate" value="${fn:escapeXml(worklogFilterDate)}" tabindex="1" id="worklogFilterDateId"/><%--
				<vc:select name="worklogFilterProject" valueObjects="${projects}" selected="${fn:escapeXml(worklogFilterProject)}" 
				<vc:select name="worklogFilterActivity" valueObjects="${activities}" selected="${fn:escapeXml(worklogFilterActivity)}" 
		<span class="invisible">${fn:escapeXml(worklog.project.code)}</span>
		<span title="${fn:escapeXml(worklog.project.name)}">${fn:escapeXml(worklog.project.code)}</span>
	<display:column property="project.code" titleKey="worklog.project" media="csv excel xml pdf rtf" escapeXml="true" />
		<span class="invisible">${fn:escapeXml(worklog.activity.code)}</span>
		<span title="${fn:escapeXml(worklog.activity.name)}">${fn:escapeXml(worklog.activity.code)}</span>
	<display:column property="activity.code" titleKey="worklog.activity" media="csv excel xml pdf rtf" escapeXml="true" />
	<display:column property="descriptionGui" titleKey="worklog.description" media="html" escapeXml="true" />	
	<display:column property="description" titleKey="worklog.description" media="csv excel xml pdf rtf" escapeXml="true "/>
		<td><input type="hidden" name="${status.expression}" value="${fn:escapeXml(status.value)}" /></td>
					<input type="text" name="${status.expression}" value="${fn:escapeXml(status.value)}"  id="worklogDateId"/><%--
					<vc:select name="${status.expression}" valueObjects="${projects}" selected="${fn:escapeXml(status.value)}" 
					<vc:select name="${status.expression}" valueObjects="${components}" selected="${fn:escapeXml(status.value)}" 
					<vc:select name="${status.expression}" valueObjects="${activities}" selected="${fn:escapeXml(status.value)}" 
					<vc:select name="${status.expression}" valueObjects="${invoices}" selected="${fn:escapeXml(status.value)}" 
					<input type="text" name="${status.expression}" value="${fn:escapeXml(status.value)}" id="worklogWorkFromId"/><%--
					<input type="text" name="${status.expression}" value="${fn:escapeXml(status.value)}" id="worklogWorkToId" /><%--
					<textarea id="descriptionId" name="${status.expression}" cols="40" rows="7" onkeypress="return imposeMaxLength(event, this, 249);">${fn:escapeXml(status.value)}</textarea>
					<input type="text" name="${status.expression}" value="${fn:escapeXml(status.value)}" id="jiraissue" maxlength="50"/>
		<display:column property="project.code" titleKey="worklog.project" escapeXml="true" />
		<display:column property="activity.code" titleKey="worklog.activity" escapeXml="true" />
		<display:column property="invoice.name" titleKey="workLog.invoice" escapeXml="true" />
		<display:column property="description" titleKey="worklog.description" escapeXml="true" />
				<th>${fn:escapeXml(externalProject.name)}</th>
					<vc:select name="externalProjects[${status.index}].projectId" valueObjects="${projects}" selected="${fn:escapeXml(externalProject.projectId)}" 
					<vc:select name="externalProjects[${status.index}].invoiceId" valueObjects="${invoices}" selected="${fn:escapeXml(externalProject.invoiceId)}" 
				<th>${fn:escapeXml(externalActivity.name)}</th>
					<vc:select name="externalActivities[${status.index}].activityId" valueObjects="${activities}" selected="${fn:escapeXml(externalActivity.activityId)}"
		<td>${fn:escapeXml(invoice.code)}</td>
		<td>${fn:escapeXml(invoice.employee.user.contactInfo.displayName)}</td>
		<td>${fn:escapeXml(invoice.name)}</td>
			<span class="invisible">${fn:escapeXml(worklog.project.code)}</span>
			<span title="${fn:escapeXml(worklog.project.name)}">${fn:escapeXml(worklog.project.code)}</span>
		<display:column property="project.code" titleKey="worklog.project" media="csv excel xml pdf rtf" escapeXml="true" />
			<span class="invisible">${fn:escapeXml(worklog.component.code)}</span>
			<acronym title="${fn:escapeXml(worklog.component.name)}">${fn:escapeXml(worklog.component.code)}</acronym>
		<display:column property="component.code" titleKey="worklog.component" media="csv excel xml pdf rtf" escapeXml="true" />
			<span class="invisible">${fn:escapeXml(worklog.activity.code)}</span>
			<span title="${fn:escapeXml(worklog.activity.name)}">${fn:escapeXml(worklog.activity.code)}</span>
		<display:column property="activity.code" titleKey="worklog.activity" media="csv excel xml pdf rtf" escapeXml="true" />
		<display:column property="description" titleKey="worklog.description" media="csv excel xml pdf rtf" escapeXml="true" />
					<vc:select name="${status.expression}" valueObjects="${invoices}" selected="${fn:escapeXml(status.value)}" 
					<vc:select name="${status.expression}" valueObjects="${invoices}" selected="${fn:escapeXml(status.value)}" 
					<input type="text" name="${status.expression}" value="${fn:escapeXml(status.value)}" id="worklogDateFromId"/><%--
					<input type="text" name="${status.expression}" value="${fn:escapeXml(status.value)}" id="worklogDateToId"/><%--
					<vc:select name="${status.expression}" valueObjects="${projects}" selected="${fn:escapeXml(status.value)}" 
					<vc:select name="${status.expression}" valueObjects="${activities}" selected="${fn:escapeXml(status.value)}" 
				<input type="text" name="worklogFilterFrom" value="${fn:escapeXml(worklogFilterFrom)}" tabindex="1" id="worklogFilterWorkFromId"/><%--
				<vc:select name="worklogFilterEmployee" valueObjects="${employees}" selected="${fn:escapeXml(worklogFilterEmployee)}" 
				<input type="text" name="worklogFilterTo" value="${fn:escapeXml(worklogFilterTo)}" tabindex="2" id="worklogFilterWorkToId"/><%--
				<vc:select name="worklogFilterProject" valueObjects="${projects}" selected="${fn:escapeXml(worklogFilterProject)}" 
				<vc:select name="worklogFilterActivity" valueObjects="${activities}" selected="${fn:escapeXml(worklogFilterActivity)}" 
	<display:caption>${fn:escapeXml(employee.user.contactInfo.displayName)}</display:caption>
		<span class="invisible">${fn:escapeXml(worklog.project.code)}</span>
		<span title="${fn:escapeXml(worklog.project.name)}">${fn:escapeXml(worklog.project.code)}</span>
	<display:column property="project.code" titleKey="worklog.project" sortable="true" media="csv excel xml pdf rtf" escapeXml="true"/>
		<span class="invisible">${fn:escapeXml(worklog.activity.code)}</span>
		<span title="${fn:escapeXml(worklog.activity.name)}">${fn:escapeXml(worklog.activity.code)}</span>
	<display:column property="activity.code" titleKey="worklog.activity" sortable="true" media="csv excel xml pdf rtf" escapeXml="true" />
	<display:column property="description" titleKey="worklog.description" media="csv excel xml pdf rtf" escapeXml="true"/>
				<vc:select name="worklogFilterMonth" valueObjects="${months}" selected="${fn:escapeXml(worklogFilterMonth)}"
				<vc:select name="worklogFilterEmployee" valueObjects="${employees}" selected="${fn:escapeXml(worklogFilterEmployee)}" 
				<vc:select name="worklogFilterYear" valueObjects="${years}" selected="${fn:escapeXml(worklogFilterYear)}"
				<vc:select name="worklogFilterProject" valueObjects="${projects}" selected="${fn:escapeXml(worklogFilterProject)}" 
				<vc:select name="worklogFilterActivity" valueObjects="${activities}" selected="${fn:escapeXml(worklogFilterActivity)}" 
		<span class="invisible">${fn:escapeXml(worklog.project.code)}</span>
		<span title="${fn:escapeXml(worklog.project.name)}">${fn:escapeXml(worklog.project.code)}</span>
	<display:column property="project.code" titleKey="worklog.project" media="csv excel xml pdf rtf" escapeXml="true" />
		<span class="invisible">${fn:escapeXml(worklog.activity.code)}</span>
		<span title="${fn:escapeXml(worklog.activity.name)}">${fn:escapeXml(worklog.activity.code)}</span>
	<display:column property="activity.code" titleKey="worklog.activity" media="csv excel xml pdf rtf" escapeXml="true" />
	<display:column property="description" titleKey="worklog.description" media="csv excel xml pdf rtf" escapeXml="true" />
				<input type="text" name="worklogFilterFrom" value="${fn:escapeXml(worklogFilterFrom)}" tabindex="1" id="worklogFilterWorkFromId"/><%--
				<vc:select name="worklogFilterEmployee" valueObjects="${employees}" selected="${fn:escapeXml(worklogFilterEmployee)}" 
				<input type="text" name="worklogFilterTo" value="${fn:escapeXml(worklogFilterTo)}" tabindex="2" id="worklogFilterWorkToId"/><%--
				<vc:select name="worklogFilterProject" valueObjects="${projects}" selected="${fn:escapeXml(worklogFilterProject)}" 
				<input type="text" name="worklogFilterInvoiceCode" value="${fn:escapeXml(worklogFilterInvoiceCode)}" maxlength="30"/>
				<vc:select name="worklogFilterActivity" valueObjects="${activities}" selected="${fn:escapeXml(worklogFilterActivity)}" 
								<option value="${fn:escapeXml(relation.code)}" selected="selected"><fmt:message key="invoice.relation.${relation.code}" /></option>
								<option value="${fn:escapeXml(relation.code)}"><fmt:message key="invoice.relation.${relation.code}" /></option>
		<h2 class="visibleOnlyInPrint">${fn:escapeXml(employee.user.contactInfo.displayName)}: ${fn:escapeXml(worklogFilterFrom)} - ${fn:escapeXml(worklogFilterTo)}</h2>
					<span class="invisible">${fn:escapeXml(worklog.project.code)}</span>
					<acronym title="${fn:escapeXml(worklog.project.name)}">${fn:escapeXml(worklog.project.code)}</acronym>
				<display:column property="project.code" titleKey="worklog.project" media="csv excel xml pdf rtf" escapeXml="true" />
					<span class="invisible">${fn:escapeXml(worklog.component.code)}</span>
					<acronym title="${fn:escapeXml(worklog.component.name)}">${fn:escapeXml(worklog.component.code)}</acronym>
				<display:column property="component.code" titleKey="worklog.component" media="csv excel xml rtf" escapeXml="true" />			
					<span class="invisible">${fn:escapeXml(worklog.activity.code)}</span>
					<acronym title="${fn:escapeXml(worklog.activity.name)}">${fn:escapeXml(worklog.activity.code)}</acronym>
						<span class="invisible">${fn:escapeXml(worklog.invoice.code)}</span>
						<acronym title="${fn:escapeXml(worklog.invoice.name)}">${fn:escapeXml(worklog.invoice.code)}</acronym>&nbsp;-&nbsp;<img src="${imgRoot}/<fmt:message key='invoice.state.img.${worklog.invoice.state}' />" alt="<fmt:message key='invoice.state.${worklog.invoice.state}' />" title="<fmt:message key='invoice.state.${worklog.invoice.state}' />" align="absmiddle"/>
				<display:column property="invoice.code" titleKey="worklog.invoice" media="csv excel xml rtf" escapeXml="true" />
				<display:column property="employee.user.contactInfo.displayName" titleKey="worklog.employee" escapeXml="true" />
				<display:column property="description" titleKey="worklog.description" media="csv excel xml pdf rtf" escapeXml="true" />
					<th>${fn:escapeXml(project.key)}</th>
					<td>${fn:escapeXml(project.key)}</td>
					<td>${fn:escapeXml(activity.key)}</td>
					<th>Week ${fn:escapeXml(week.key)}</th>
					<th>${fn:escapeXml(activity.key)}</th>
					<th>${fn:escapeXml(project.key)}</th>
				<vc:select name="worklogFilterMonth" valueObjects="${months}" selected="${fn:escapeXml(worklogFilterMonth)}"
				<vc:select name="worklogFilterEmployee" valueObjects="${employees}" selected="${fn:escapeXml(worklogFilterEmployee)}" 
				<vc:select name="worklogFilterYear" valueObjects="${years}" selected="${fn:escapeXml(worklogFilterYear)}"
	<display:caption>${fn:escapeXml(employee.user.contactInfo.displayName)} - <fmt:message key="month.${worklogFilterMonth}"/> ${fn:escapeXml(worklogFilterYear)}</display:caption>
		${fn:escapeXml(worklog.project.codefn:escapeXml)} - ${fn:escapeXml(worklog.project.name)}
		${fn:escapeXml(worklog.activity.code)} - ${fn:escapeXml(worklog.activity.name)}
				<input type="text" name="worklogFilterFrom" value="${fn:escapeXml(worklogFilterFrom)}" tabindex="1" id="worklogFilterWorkFromId"/><%--
				<vc:select name="worklogFilterProject" valueObjects="${projects}" selected="${fn:escapeXml(worklogFilterProject)}" 
				<input type="text" name="worklogFilterTo" value="${fn:escapeXml(worklogFilterTo)}" tabindex="2" id="worklogFilterWorkToId"/><%--
				<vc:select name="worklogFilterActivity" valueObjects="${activities}" selected="${fn:escapeXml(worklogFilterActivity)}" 
				<input type="text" name="worklogFilterInvoiceCode" value="${fn:escapeXml(worklogFilterInvoiceCode)}" maxlength="30"/>
								<option value="${fn:escapeXml(relation.code)}" selected="selected"><fmt:message key="invoice.relation.${relation.code}" /></option>
								<option value="${fn:escapeXml(relation.code)}"><fmt:message key="invoice.relation.${relation.code}" /></option>
			<display:column property="key" titleKey="worklog.employee" escapeXml="true"/>
			<display:column property="keyInfo" titleKey="worklog.employee.ldaplogin" media="csv excel xml pdf rtf" escapeXml="true" />			
			<display:column property="key" titleKey="worklog.activity" escapeXml="true" />
			<display:column property="key" titleKey="worklog.project" escapeXml="true" />
					<th>${fn:escapeXml(activity.key)}</th>
					<th>${fn:escapeXml(employee.key)}</th>
					<th>${fn:escapeXml(project.key)}</th>
					<th>${fn:escapeXml(employee.key)}</th>
					<th>${fn:escapeXml(activity.key)}</th>
					<th>${fn:escapeXml(project.key)}</th>
				<span class="invisible">${fn:escapeXml(worklog.project.code)}</span>
				<acronym title="${fn:escapeXml(worklog.project.name)}">${fn:escapeXml(worklog.project.code)}</acronym>
			<display:column property="project.code" titleKey="worklog.project" media="csv excel xml pdf rtf" escapeXml="true" />
				<span class="invisible">${fn:escapeXml(worklog.component.code)}</span>
				<acronym title="${fn:escapeXml(worklog.component.name)}">${fn:escapeXml(worklog.component.code)}</acronym>
			<display:column property="component.code" titleKey="worklog.component" media="csv excel xml rtf" escapeXml="true" />
				<span class="invisible">${fn:escapeXml(worklog.activity.code)}</span>
				<acronym title="${fn:escapeXml(worklog.activity.name)}">${fn:escapeXml(worklog.activity.code)}</acronym>
			<display:column property="activity.code" titleKey="worklog.activity" media="csv excel xml pdf rtf" escapeXml="true" />
					<span class="invisible">${fn:escapeXml(worklog.invoice.code)}</span>
					<acronym title="${fn:escapeXml(worklog.invoice.name)}">${fn:escapeXml(worklog.invoice.code)}</acronym>&nbsp;-&nbsp;<img src="${imgRoot}/<fmt:message key='invoice.state.img.${worklog.invoice.state}' />" alt="<fmt:message key='invoice.state.${worklog.invoice.state}' />" title="<fmt:message key='invoice.state.${worklog.invoice.state}' />" align="middle"/>
			<display:column property="invoice.code" titleKey="worklog.invoice" media="csv excel xml rtf" escapeXml="true" />
			<display:column property="employee.user.contactInfo.displayName" titleKey="worklog.employee" escapeXml="true" />
			<display:column property="description" titleKey="worklog.description" media="csv excel xml pdf rtf" escapeXml="true" />
			<td>${fn:escapeXml(worklog.project.code)} - ${fn:escapeXml(worklog.project.name)}</td>
				<c:if test="${worklog.component != null}" >${fn:escapeXml(worklog.component.code)} - ${fn:escapeXml(worklog.component.name)}</c:if>
			<td>${fn:escapeXml(worklog.activity.code)} - ${fn:escapeXml(worklog.activity.name)}</td>
				<c:if test="${worklog.onInvoice}" >${fn:escapeXml(worklog.invoice.code)} (${fn:escapeXml(worklog.invoice.name)})&nbsp;-&nbsp;<img src="${imgRoot}/<fmt:message key='invoice.state.img.${worklog.invoice.state}' />" alt="<fmt:message key='invoice.state.${worklog.invoice.state}' />" title="<fmt:message key='invoice.state.${worklog.invoice.state}' />" align="absmiddle" /></c:if>
				<vc:select name="worklogFilterEmployee" valueObjects="${employees}" selected="${fn:escapeXml(worklogFilterEmployee)}" 
				<vc:select name="worklogFilterWeek" valueObjects="${weeks}" selected="${fn:escapeXml(worklogFilterWeek)}" 
				<vc:select name="worklogFilterProject" valueObjects="${projects}" selected="${fn:escapeXml(worklogFilterProject)}" 
				<vc:select name="worklogFilterActivity" valueObjects="${activities}" selected="${fn:escapeXml(worklogFilterActivity)}" 
		<span class="invisible">${fn:escapeXml(worklog.project.code)}</span>
		<span title="${fn:escapeXml(worklog.project.name)}">${fn:escapeXml(worklog.project.code)}</span>
	<display:column property="project.code" titleKey="worklog.project" media="csv excel xml pdf rtf" escapeXml="true" />
		<span class="invisible">${fn:escapeXml(worklog.activity.code)}</span>
		<span title="${fn:escapeXml(worklog.activity.name)}">${fn:escapeXml(worklog.activity.code)}</span>
	<display:column property="activity.code" titleKey="worklog.activity" media="csv excel xml pdf rtf" escapeXml="true" />
	<display:column property="description" titleKey="worklog.description" media="csv excel xml pdf rtf" escapeXml="true" />
					<vc:select name="${status.expression}" valueObjects="${skins}" selected="${fn:escapeXml(status.value)}" 
					<vc:select name="${status.expression}" valueObjects="${timeSelectors}" selected="${fn:escapeXml(status.value)}" 
					<vc:select name="${status.expression}" valueObjects="${activities}" selected="${fn:escapeXml(status.value)}" 
					<vc:select name="${status.expression}" valueObjects="${projects}" selected="${fn:escapeXml(status.value)}" 
					<vc:select name="${status.expression}" valueObjects="${activities}" selected="${fn:escapeXml(status.value)}" 
					<vc:select name="${status.expression}" valueObjects="${projects}" selected="${fn:escapeXml(status.value)}" 
					<vc:select name="${status.expression}" valueObjects="${activities}" selected="${fn:escapeXml(status.value)}" 
					<vc:select name="${status.expression}" valueObjects="${projects}" selected="${fn:escapeXml(status.value)}" 
					<vc:select name="${status.expression}" valueObjects="${activities}" selected="${fn:escapeXml(status.value)}" 
					<vc:select name="${status.expression}" valueObjects="${projects}" selected="${fn:escapeXml(status.value)}" 
					<vc:select name="${status.expression}" valueObjects="${activities}" selected="${fn:escapeXml(status.value)}" 
					<vc:select name="${status.expression}" valueObjects="${projects}" selected="${fn:escapeXml(status.value)}" 
					<vc:select name="${status.expression}" valueObjects="${activities}" selected="${fn:escapeXml(status.value)}" 
					<vc:select name="${status.expression}" valueObjects="${projects}" selected="${fn:escapeXml(status.value)}" 
					<vc:select name="${status.expression}" valueObjects="${activities}" selected="${fn:escapeXml(status.value)}" 
					<vc:select name="${status.expression}" valueObjects="${projects}" selected="${fn:escapeXml(status.value)}" 
					<vc:select name="${status.expression}" valueObjects="${activities}" selected="${fn:escapeXml(status.value)}" 
					<vc:select name="${status.expression}" valueObjects="${projects}" selected="${fn:escapeXml(status.value)}" 
					<vc:select name="${status.expression}" valueObjects="${activities}" selected="${fn:escapeXml(status.value)}" 
					<vc:select name="${status.expression}" valueObjects="${projects}" selected="${fn:escapeXml(status.value)}" 
					<vc:select name="${status.expression}" valueObjects="${activities}" selected="${fn:escapeXml(status.value)}" 
					<vc:select name="${status.expression}" valueObjects="${projects}" selected="${fn:escapeXml(status.value)}" 
					<vc:select name="${status.expression}" valueObjects="${activities}" selected="${fn:escapeXml(status.value)}" 
			<input type="text" name="loginName" value="${fn:escapeXml(loginName)}" />
		<p><fmt:message key="retra.error.id"/>: ${fn:escapeXml(errId)}</p>
		<field value="2021" key="year.2021" />
		<field value="2022" key="year.2022" />
		<field value="2023" key="year.2023" />
		<field value="2024" key="year.2024" />
		<field value="2025" key="year.2025" />
		<field value="2026" key="year.2026" />
		<field value="2027" key="year.2027" />
		<field value="2028" key="year.2028" />
		<field value="2029" key="year.2029" />
		<field value="2030" key="year.2030" />
		<field value="2030" key="year.2030" />
		<field value="2031" key="year.2031" />
		<field value="2032" key="year.2032" />
		<field value="2033" key="year.2033" />
		<field value="2034" key="year.2034" />
		<field value="2035" key="year.2035" />
		<field value="2036" key="year.2036" />
		<field value="2037" key="year.2037" />
		<field value="2038" key="year.2038" />
		<field value="2039" key="year.2039" />
		<field value="2040" key="year.2040" />
	<item date="xx.yy.2022"
		  title="Build 2.11.0"
		  body="Fix of these issues:&lt;br />
		  &lt;a href='https://jira/browse/RETRA-55' target='_blank'>RETRA-55&lt;/a> - Retra logovani - zlepsit, prechod na log4j2.&lt;br />
		  &lt;a href='https://jira/browse/RETRA-56' target='_blank'>RETRA-56&lt;/a> - Retra je nachylna na XSS.&lt;br />
		  &lt;a href='https://jira/browse/RETRA-41' target='_blank'>RETRA-41&lt;/a> - Specialni znaky v nazvu projektu.&lt;br />
		  &lt;a href='https://jira/browse/RETRA-48' target='_blank'>RETRA-48&lt;/a> - Chyba při renderování textu worklogu.&lt;br />
		  "
		  author="Retra Team"
	/>

<!--
	<item date="2.2.2015"
about.version.minor=11
about.releasedOn=xx.yy.2022
footer.copyright=Copyright &copy; 2007-2022, <a href='About.do?fkprm=true'>Retra Team</a>
footer.copyright.noLink=Copyright &copy; 2007-2022, Retra Team