<%--
 * Copyright by Intland Software
 *
 * All rights reserved.
 *
 * This software is the confidential and proprietary information
 * of Intland Software. ("Confidential Information"). You
 * shall not disclose such Confidential Information and shall use
 * it only in accordance with the terms of the license agreement
 * you entered into with Intland.
 *
 * $Revision$ $Date$
--%>
<meta name="decorator" content="main">
<meta name="module" content="sources">
<meta name="moduleCSSClass" content="sourceCodeModule">
<meta name="stylesheet" content="sources.css">


<%@ taglib uri="jstl-c" prefix="c" %>
<%@ taglib uri="jstl-fmt" prefix="fmt" %>
<%@ taglib uri="jstl-fn" prefix="fn" %>

<%@ taglib uri="struts-html" prefix="html" %>

<%@ taglib uri="http://displaytag.sf.net" prefix="display" %>

<%@ taglib uri="taglib" prefix="tag" %>
<%@ taglib uri="scmtaglib" prefix="scm" %>
<%@ taglib uri="uitaglib" prefix="ui" %>

<scm:info value="changeLog" var="changeLogs" pathVar="scmPath" />

<c:set var="projectId" value="${PROJECT_DTO.id}" />

<c:set var="dirTrail">
	<tag:joinLines newLinePrefix="">
		<c:set var="requestURI" value="/proj/sources/sccFileLog.do" />
		<c:set var="dirName" value="" />
		<c:forTokens items="${scmPath}" delims="/" var="fld" varStatus="status">
			<c:set var="dirName" value="${dirName}${fld}" />
			<c:url var="dirLink" value="${requestURI}">
				<c:param name="proj_id" value="${projectId}" />
				<c:param name="filename" value="${dirName}" />
				<c:param name="isDir" value="true" />
			</c:url>
			<c:set var="dirName" value="${dirName}/" />
			/<a href="${dirLink}"><c:out value="${fld}"/></a></stong>
		</c:forTokens>
	</tag:joinLines>
</c:set>

<jsp:include page="includes/actionBar.jsp" >
	<jsp:param name="screenTitle" value="${dirTrail} : Log"/>
</jsp:include>

<c:if test="${empty changeLogs}">
	<fmt:message key="scc.changelog.not_found">
		<fmt:param value="${scmPath}" />
	</fmt:message>
</c:if>

<c:if test="${!empty changeLogs}">

	<c:set var="isDir" value="${param.isDir == true}" />

	<ui:displaytagPaging defaultPageSize="15" items="${changeLogs}" />

	<display:table requestURI="/proj/sources/sccFileLog.do" name="${changeLogs}" id="changeLog" cellpadding="0" cellspacing="0"
		defaultsort="1" defaultorder="descending" pagesize="${pagesize}">

		<display:setProperty name="paging.banner.placement" value="bottom"/>
		<display:setProperty name="paging.banner.some_items_found" value="${allItems}" />
		<display:setProperty name="paging.banner.item_name" value="revision" />
		<display:setProperty name="paging.banner.items_name" value="revisions" />
		<display:setProperty name="paging.banner.onepage" value="" />
		<display:setProperty name="paging.banner.one_item_found" value="" />

		<display:column title="Date" headerClass="dateData" class="dateData" sortable="true" sortProperty="date">
			<tag:formatDate value="${changeLog.date}" useNbsp="true" />
		</display:column>

		<display:column class="${COLUMN_SEPARATOR}" media="html" decorator="com.intland.codebeamer.ui.view.table.TrimmedColumnDecorator" />

		<display:column title="Author" headerClass="textData" class="textData" sortable="true" sortProperty="author">
			<c:out value="${changeLog.author}" default="--" />
		</display:column>

		<display:column class="${COLUMN_SEPARATOR}" media="html" decorator="com.intland.codebeamer.ui.view.table.TrimmedColumnDecorator" />

		<display:column title="Comment" headerClass="expandText textData" class="expandText textDataWrap">
			<pre class="commitmessage"><c:out value="${changeLog.message}"/></pre>
		</display:column>

		<display:column class="${COLUMN_SEPARATOR}" media="html" decorator="com.intland.codebeamer.ui.view.table.TrimmedColumnDecorator" />

		<display:column title="Revision" headerClass="textData" class="textData"
			comparator="com.intland.codebeamer.ui.view.table.RevisionComparator" sortable="true" sortProperty="changedFiles">
			<c:set var="changeFile" value="${changeLog.changedFiles[0]}" />

			<c:choose>
				<c:when test="${!isDir}">
					<c:url var="catURL" value="/scmShowFileRevision">
						<c:param name="proj_id" value="${projectId}" />
						<c:param name="filename" value="${scmPath}" />
						<c:param name="revision" value="${changeFile.newRevision}" />
						<c:param name="date" value="${changeLog.date}" />
					</c:url>
					<c:set var="onclick" value="launch_url('${catURL}');return false;" />

					<html:link href="${catURL}" target="_blank" onclick="${onclick}"><c:out value="${changeFile.newRevision}" /></html:link>
				</c:when>

				<c:otherwise>
					<c:out value="${changeLog.revision}" />
				</c:otherwise>
			</c:choose>

			<c:url var="diffURL" value="/scmFileDiff">
				<c:param name="proj_id" value="${projectId}" />
				<c:param name="filename" value="${scmPath}" />
				<c:param name="revision1" value="${changeFile.oldRevision}" />
				<c:param name="revision2" value="${changeFile.newRevision}" />
				<c:param name="date" value="${changeLog.date}" />
			</c:url>
			<c:set var="onclick" value="launch_url('${diffURL}');return false;" />

			<c:if test="${!isDir && !empty changeFile.oldRevision}">
				&nbsp;(<html:link href="${diffURL}" target="_blank" onclick="${onclick}">diff to <c:out value="${changeFile.oldRevision}" /></html:link>)
			</c:if>
		</display:column>

	</display:table>
</c:if>