1<%@ page import="org.apache.log4j.*" %>
2<%@ page import="com.ecyrd.jspwiki.*" %>
3<%@ page import="com.ecyrd.jspwiki.util.*" %>
4<%@ page import="com.ecyrd.jspwiki.tags.InsertDiffTag" %>
5<%@ page errorPage="/Error.jsp" %>
6<%@ taglib uri="/WEB-INF/jspwiki.tld" prefix="wiki" %>
7
8<%!
9    Logger log = Logger.getLogger("JSPWiki");
10%>
11
12<%
13    WikiEngine wiki = WikiEngine.getInstance( getServletConfig() );
14    // Create wiki context and check for authorization
15    WikiContext wikiContext = wiki.createContext( request, WikiContext.DIFF );
16    if(!wikiContext.hasAccess( response )) return;
17    String pagereq = wikiContext.getName();
18
19    WatchDog w = wiki.getCurrentWatchDog();
20    try
21    {
22    w.enterState("Generating INFO response",60);
23
24    // Notused ?
25    // String pageurl = wiki.encodeName( pagereq );
26
27    // If "r1" is null, then assume current version (= -1)
28    // If "r2" is null, then assume the previous version (=current version-1)
29
30    // FIXME: There is a set of unnecessary conversions here: InsertDiffTag
31    //        does the String->int conversion anyway.
32
33    WikiPage wikipage = wikiContext.getPage();
34
35    String srev1 = request.getParameter("r1");
36    String srev2 = request.getParameter("r2");
37
38    int ver1 = -1, ver2 = -1;
39
40    if( srev1 != null )
41    {
42        ver1 = Integer.parseInt( srev1 );
43    }
44
45    if( srev2 != null )
46    {
47        ver2 = Integer.parseInt( srev2 );
48    }
49    else
50    {
51        int lastver = wikipage.getVersion();
52
53        if( lastver > 1 )
54        {
55            ver2 = lastver-1;
56        }
57    }
58
59    pageContext.setAttribute( InsertDiffTag.ATTR_OLDVERSION,
60                              new Integer(ver1),
61                              PageContext.REQUEST_SCOPE );
62    pageContext.setAttribute( InsertDiffTag.ATTR_NEWVERSION,
63                              new Integer(ver2),
64                              PageContext.REQUEST_SCOPE );
65
66    // log.debug("Request for page diff for '"+pagereq+"' from "+request.getRemoteAddr()+" by "+request.getRemoteUser()+".  R1="+ver1+", R2="+ver2 );
67
68    // Set the content type and include the response content
69    response.setContentType("text/html; charset="+wiki.getContentEncoding() );
70    String contentPage = wiki.getTemplateManager().findJSP( pageContext,
71                                                            wikiContext.getTemplate(),
72                                                            "ViewTemplate.jsp" );
73%><wiki:Include page="<%=contentPage%>" />
74<% } finally { w.exitState(); } %>