r132 - in trunk/src/main: java/org/nuiton/scmwebeditor java/org/nuiton/scmwebeditor/actions resources webapp webapp/css
Author: kcardineaud Date: 2011-06-22 17:16:18 +0200 (Wed, 22 Jun 2011) New Revision: 132 Url: http://nuiton.org/repositories/revision/scmwebeditor/132 Log: ScmWebEditor can now be use with read/write private SVN Added: trunk/src/main/webapp/LoginSearch.jsp Modified: trunk/src/main/java/org/nuiton/scmwebeditor/ScmWebEditorBaseAction.java trunk/src/main/java/org/nuiton/scmwebeditor/actions/ScmWebEditorMainAction.java trunk/src/main/java/org/nuiton/scmwebeditor/actions/SearchAction.java trunk/src/main/resources/struts.xml trunk/src/main/webapp/ModificationViewer.jsp trunk/src/main/webapp/OutConnection.jsp trunk/src/main/webapp/PrivateSvnRedirect.jsp trunk/src/main/webapp/Search.jsp trunk/src/main/webapp/css/main.css Modified: trunk/src/main/java/org/nuiton/scmwebeditor/ScmWebEditorBaseAction.java =================================================================== --- trunk/src/main/java/org/nuiton/scmwebeditor/ScmWebEditorBaseAction.java 2011-06-22 12:46:07 UTC (rev 131) +++ trunk/src/main/java/org/nuiton/scmwebeditor/ScmWebEditorBaseAction.java 2011-06-22 15:16:18 UTC (rev 132) @@ -51,7 +51,7 @@ private static final Log log = LogFactory.getLog(ScmWebEditorBaseAction.class); //TODO-TC200924 : uniformize all this different parameter and attribute, this is a bit messy... - protected static final String PARAMETER_ADRESSE = "address"; + protected static final String PARAMETER_ADDRESS = "address"; protected static final String PARAMETER_SCM_EDITOR_URL = "scmEditorUrl"; protected static final String PARAMETER_PROJECT_URL = "projectUrl"; protected static final String PARAMETER_FILE_NAME = "file_name"; @@ -209,7 +209,7 @@ protected String getRedirectUrl(SvnSession svnSess) { StringBuilder buffer = new StringBuilder(); buffer.append(svnSess.getScmEditorUrl()); - buffer.append('?').append(PARAMETER_ADRESSE).append('=').append(svnSess.getSvnPath()+svnSess.getFileName()); + buffer.append('?').append(PARAMETER_ADDRESS).append('=').append(svnSess.getSvnPath()+svnSess.getFileName()); buffer.append("&").append(PARAMETER_PROJECT_URL).append('=').append(svnSess.getProjectUrl()); String url = buffer.toString(); Modified: trunk/src/main/java/org/nuiton/scmwebeditor/actions/ScmWebEditorMainAction.java =================================================================== --- trunk/src/main/java/org/nuiton/scmwebeditor/actions/ScmWebEditorMainAction.java 2011-06-22 12:46:07 UTC (rev 131) +++ trunk/src/main/java/org/nuiton/scmwebeditor/actions/ScmWebEditorMainAction.java 2011-06-22 15:16:18 UTC (rev 132) @@ -34,10 +34,33 @@ protected String projectUrl; protected String format; + + protected String username; + protected String pw; + protected HttpServletRequest request; + public String getUsername() { + return username; + } + + + public void setUsername(String username) { + this.username = username; + } + + + public String getPw() { + return pw; + } + + + public void setPw(String pw) { + this.pw = pw; + } + public String getAddress() { return address; } @@ -104,30 +127,33 @@ //SvnSession object creation if doesn't already exist SvnSession svnSess = getSvnSession(httpSession); + String relativePath = address.substring(0,address.lastIndexOf("/")); String scmFileName = address.substring(address.lastIndexOf("/")+1); + format = scmFileName.substring(scmFileName.lastIndexOf(".")+1); + + String tmp_log = null; String tmp_pass = null; - if (svnSess != null) { - tmp_log = svnSess.getLogin(); - tmp_pass = svnSess.getPassword(); - } - svnSess = new SvnSession( - relativePath, - scmFileName, - projectUrl, - tmp_log, - tmp_pass, - httpSession.getId(), - format, - request.getRequestURL()); - - + svnSess = new SvnSession( + relativePath, + scmFileName, + projectUrl, + tmp_log, + tmp_pass, + httpSession.getId(), + format, + request.getRequestURL()); + + svnSess.updateAuthentication( + svnSess.getLogin() != null && !svnSess.getLogin().equalsIgnoreCase("") ? svnSess.getLogin() : username, + svnSess.getPassword() != null && !svnSess.getPassword().equalsIgnoreCase("") ? svnSess.getPassword() : pw); + setSvnSession(httpSession, svnSess); // Tempdir creation on servlet default temporary directory @@ -146,12 +172,13 @@ upclient.doCheckout(svnSess.getRemoteUrl(), svnSess.getCheckoutdir(), SVNRevision.HEAD, SVNRevision.HEAD, SVNDepth.FILES, false); } catch (SVNAuthenticationException authexep) { + request.setAttribute(PARAMETER_ADDRESS, address); + // if svn authentication failed user is redirected on login page if(log.isDebugEnabled()) { log.debug("Private SCM on reading " + svnSess.getRemoteUrl()); } - //Suppression du repertoire temporaire - delTempDirectory(svnSess); + //redirect to a login page return "login"; Modified: trunk/src/main/java/org/nuiton/scmwebeditor/actions/SearchAction.java =================================================================== --- trunk/src/main/java/org/nuiton/scmwebeditor/actions/SearchAction.java 2011-06-22 12:46:07 UTC (rev 131) +++ trunk/src/main/java/org/nuiton/scmwebeditor/actions/SearchAction.java 2011-06-22 15:16:18 UTC (rev 132) @@ -1,13 +1,13 @@ package org.nuiton.scmwebeditor.actions; import java.util.Collection; -import java.util.Collections; import java.util.Iterator; import java.util.LinkedList; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.scmwebeditor.ScmWebEditorBaseAction; +import org.tmatesoft.svn.core.SVNAuthenticationException; import org.tmatesoft.svn.core.SVNDirEntry; import org.tmatesoft.svn.core.SVNException; import org.tmatesoft.svn.core.SVNNodeKind; @@ -37,11 +37,15 @@ String address; LinkedList<String> files; - + String username; + String pw; + + String info; String list; + public String getList() { return list; } @@ -71,22 +75,41 @@ this.address = address; } - - public String execute() { - search(); - return Action.SUCCESS; + public String getUsername() { + return username; } - - - public void search() { + + + public void setUsername(String username) { + this.username = username; + } + + + public String getPw() { + return pw; + } + + + public void setPw(String pw) { + this.pw = pw; + } + + + public String search() { DAVRepositoryFactory.setup(); String url = address; + String name = "anonymous"; String password="anonymous"; + if(username!=null && pw!=null) { + name = username; + password=pw; + } + files = new LinkedList<String>(); @@ -111,26 +134,36 @@ if(log.isErrorEnabled()) { log.error( "There is no entry at '" + url + "'." ); } - return; + return Action.SUCCESS; } else if ( nodeKind == SVNNodeKind.FILE ) { if(log.isErrorEnabled()) { log.error( "The entry at '" + url + "' is a file while a directory was expected." ); } - return; + return Action.SUCCESS; } listEntries( repository , "" ); - } catch ( Exception svne ) { + } catch (SVNAuthenticationException authexep) { + return "authError"; + } + catch ( SVNException svne ) { log.error("Can't access to the repository",svne); } + return Action.SUCCESS; } - public void listEntries( SVNRepository repository, String path ) throws SVNException { - Collection<?> entries = repository.getDir( path, -1 , null , (Collection<?>) null ); + public void listEntries( SVNRepository repository, String path ) { + Collection<?> entries = null; + try { + entries = repository.getDir( path, -1 , null , (Collection<?>) null ); + } catch (SVNException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } Iterator<?> iterator = entries.iterator(); while (iterator.hasNext()) { Modified: trunk/src/main/resources/struts.xml =================================================================== --- trunk/src/main/resources/struts.xml 2011-06-22 12:46:07 UTC (rev 131) +++ trunk/src/main/resources/struts.xml 2011-06-22 15:16:18 UTC (rev 132) @@ -22,8 +22,9 @@ <action name="preview" class="org.nuiton.scmwebeditor.actions.PreviewAction" method="execute"> <result>/Preview.jsp</result> </action> - <action name="search" class="org.nuiton.scmwebeditor.actions.SearchAction" method="execute"> + <action name="search" class="org.nuiton.scmwebeditor.actions.SearchAction" method="search"> <result>/Search.jsp</result> + <result name="authError" >/LoginSearch.jsp</result> </action> </package> </struts> \ No newline at end of file Added: trunk/src/main/webapp/LoginSearch.jsp =================================================================== --- trunk/src/main/webapp/LoginSearch.jsp (rev 0) +++ trunk/src/main/webapp/LoginSearch.jsp 2011-06-22 15:16:18 UTC (rev 132) @@ -0,0 +1,28 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" + pageEncoding="UTF-8"%> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> + <%@ taglib prefix="s" uri="/struts-tags"%> + <%@ taglib prefix="sj" uri="/struts-jquery-tags"%> + <sj:head jquerytheme="default"/> + +<div id="search"> + <p>You must be login to see this repository.</p> + <p> + <label>Username : <input type="text" name="username"></input></label><br/> + <label>Password : <input type ="password" name="pw"></input></label><br/> + + <s:url id="ajaxSearchLogin" value="search.action" /> + + <sj:submit + id="ajaxSearchButtonLogin" + formIds="configForm" + targets="htmlcontentSearch" + href="%{ajaxSearchLogin}" + indicator="indicator" + button="true" + buttonIcon="ui-icon-refresh" + value="Login" + > + </sj:submit> + </p> +</div> \ No newline at end of file Modified: trunk/src/main/webapp/ModificationViewer.jsp =================================================================== --- trunk/src/main/webapp/ModificationViewer.jsp 2011-06-22 12:46:07 UTC (rev 131) +++ trunk/src/main/webapp/ModificationViewer.jsp 2011-06-22 15:16:18 UTC (rev 132) @@ -88,20 +88,15 @@ <%}%> - <input title="Reset text as current repository HEAD revision." type="reset" value="Reset" name="Reset" alt="Test plop plop plop"/> + <input title="Reset text as current repository HEAD revision." type="reset" value="Reset" name="Reset" /> <input type="hidden" value="<%=request.getAttribute("ProjectUrl")%>" name="ProjectUrl"> <input title="Exit ScmWebEditor without saving." type="button" value="Exit" name="Cancel" onclick="javascript:cancelRedirectDelete(this.form.origText, this.form.username, this.form.pw, this.form.commitMessage, this.form.ProjectUrl, this.form.scmEditorUrl);"/> - - - - </form> - + - - - + + </center> <div id="htmlcontentPreview"></div> Modified: trunk/src/main/webapp/OutConnection.jsp =================================================================== --- trunk/src/main/webapp/OutConnection.jsp 2011-06-22 12:46:07 UTC (rev 131) +++ trunk/src/main/webapp/OutConnection.jsp 2011-06-22 15:16:18 UTC (rev 132) @@ -42,12 +42,15 @@ > </sj:submit> + <input type="submit" name="Save" /> </p> + + + + <div id="htmlcontentSearch" ></div> - -<input type="hidden" name="projectUrl" value="<%=request.getHeader("referer")%>" /> -<input type="submit" name="Save" /></form> +</form> </center> <p align="right">©2004-2009 CodeLutin</p> </body> Modified: trunk/src/main/webapp/PrivateSvnRedirect.jsp =================================================================== --- trunk/src/main/webapp/PrivateSvnRedirect.jsp 2011-06-22 12:46:07 UTC (rev 131) +++ trunk/src/main/webapp/PrivateSvnRedirect.jsp 2011-06-22 15:16:18 UTC (rev 132) @@ -14,6 +14,8 @@ <body> <a target="_blank" href="http://maven-site.nuiton.org/scmwebeditor/"><img src="img/ScmWebEditor_main.png" alt="$alt" /></a> <form method="post" action="checkout.action" > +<input type="hidden" name="address" value="<%=request.getAttribute("address")%>"/> +<input type="hidden" name="projectUrl" value="<%=request.getAttribute("projectUrl")%>"/> <script src="cancelRedirect.js"></script> <p>You try to access a Private SCM. Please login</p> <p><label ACCESSKEY=U>User name: <input TYPE=text Modified: trunk/src/main/webapp/Search.jsp =================================================================== --- trunk/src/main/webapp/Search.jsp 2011-06-22 12:46:07 UTC (rev 131) +++ trunk/src/main/webapp/Search.jsp 2011-06-22 15:16:18 UTC (rev 132) @@ -7,21 +7,24 @@ <%@ taglib prefix="sj" uri="/struts-jquery-tags"%> <sj:head jquerytheme="default"/> -<table> - <% - SearchAction action = SearchAction.getAction(); - - LinkedList<String> files = action.getFiles(); - - Iterator<String> it = files.iterator(); - - while(it.hasNext()) { - String file = it.next(); - %> - <tr><td> - <a href="checkout.action?address=<%=file%>&projectUrl="<%=request.getRequestURL()%>" ><%=file%></a> +<div id="search"> +<p>Files in the SVN repository : </p> + <table> + <% + SearchAction action = SearchAction.getAction(); + + LinkedList<String> files = action.getFiles(); - </td></tr> - <% } %> - -</table> \ No newline at end of file + Iterator<String> it = files.iterator(); + + while(it.hasNext()) { + String file = it.next(); + %> + <tr><td> + <a href="checkout.action?address=<%=file%>&projectUrl="<%=request.getRequestURL()%>" ><%=file%></a> + + </td></tr> + <% } %> + + </table> +</div> \ No newline at end of file Modified: trunk/src/main/webapp/css/main.css =================================================================== --- trunk/src/main/webapp/css/main.css 2011-06-22 12:46:07 UTC (rev 131) +++ trunk/src/main/webapp/css/main.css 2011-06-22 15:16:18 UTC (rev 132) @@ -23,3 +23,9 @@ border : solid 3px black; } +#search { + width:30%; + margin:auto; + display:block; + border : solid 2px black; +}
participants (1)
-
kcardineaud@users.nuiton.org