Author: kcardineaud Date: 2011-06-16 16:28:44 +0200 (Thu, 16 Jun 2011) New Revision: 121 Url: http://nuiton.org/repositories/revision/scmwebeditor/121 Log: ScmWebEditor can only be use with the complete url Modified: trunk/src/main/java/org/nuiton/scmwebeditor/AbstractScmWebEditor.java trunk/src/main/java/org/nuiton/scmwebeditor/SvnSession.java trunk/src/main/java/org/nuiton/scmwebeditor/actions/ScmWebEditorMainAction.java trunk/src/main/resources/struts.xml trunk/src/main/webapp/OutConnection.jsp Modified: trunk/src/main/java/org/nuiton/scmwebeditor/AbstractScmWebEditor.java =================================================================== --- trunk/src/main/java/org/nuiton/scmwebeditor/AbstractScmWebEditor.java 2011-06-16 08:31:07 UTC (rev 120) +++ trunk/src/main/java/org/nuiton/scmwebeditor/AbstractScmWebEditor.java 2011-06-16 14:28:44 UTC (rev 121) @@ -200,9 +200,6 @@ buffer.append('?').append(PARAMETER_ADRESSE).append('=').append(svnSess.getSvnPath()); buffer.append("&").append(PARAMETER_FILE_NAME).append('=').append(svnSess.getFileName()); buffer.append("&").append(PARAMETER_PROJECT_URL).append('=').append(svnSess.getProjectUrl()); - buffer.append("&").append(PARAMETER_LANG).append('=').append(svnSess.getLang()); - buffer.append("&").append(PARAMETER_DEFAULT_LANG).append('=').append(svnSess.getDefaultLang()); - buffer.append("&").append(PARAMETER_FORMAT).append('=').append(svnSess.getFormat()); String url = buffer.toString(); return url; Modified: trunk/src/main/java/org/nuiton/scmwebeditor/SvnSession.java =================================================================== --- trunk/src/main/java/org/nuiton/scmwebeditor/SvnSession.java 2011-06-16 08:31:07 UTC (rev 120) +++ trunk/src/main/java/org/nuiton/scmwebeditor/SvnSession.java 2011-06-16 14:28:44 UTC (rev 121) @@ -57,14 +57,6 @@ */ protected String format; /** - * locale language - */ - protected String lang; - /** - * default lang used by maven site (used to build the relative path to the resource - */ - protected String defaultLang; - /** * svn path without fileName */ protected String svnPath; @@ -115,15 +107,11 @@ String login, String password, String id, - String lang, - String defaultLang, String format, StringBuffer scmEditorUrl) { this.scmEditorUrl = scmEditorUrl; this.id = id; this.format = format; - this.lang = lang; - this.defaultLang = defaultLang; this.svnPath = svnPath; this.fileName = fileName; this.projectUrl = projectUrl; @@ -241,14 +229,6 @@ this.svnPath = svnPath; } - public String getLang() { - return lang; - } - - public void setLang(String lang) { - this.lang = lang; - } - public String getFormat() { return format; } @@ -274,11 +254,4 @@ } - public String getDefaultLang() { - return defaultLang; - } - - public void setDefaultLang(String defaultLang) { - this.defaultLang = defaultLang; - } } Modified: trunk/src/main/java/org/nuiton/scmwebeditor/actions/ScmWebEditorMainAction.java =================================================================== --- trunk/src/main/java/org/nuiton/scmwebeditor/actions/ScmWebEditorMainAction.java 2011-06-16 08:31:07 UTC (rev 120) +++ trunk/src/main/java/org/nuiton/scmwebeditor/actions/ScmWebEditorMainAction.java 2011-06-16 14:28:44 UTC (rev 121) @@ -1,11 +1,14 @@ package org.nuiton.scmwebeditor.actions; import java.io.File; +import java.io.FileNotFoundException; import java.io.IOException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; +import org.apache.commons.io.FileUtils; +import org.apache.commons.lang.StringEscapeUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.struts2.interceptor.ServletRequestAware; @@ -26,10 +29,8 @@ protected String address; protected String projectUrl; - protected String fileName; protected String format; - protected String lang; - protected String defaultLang; + protected HttpServletRequest request; @@ -54,53 +55,14 @@ } - public String getFileName() { - return fileName; - } + - - public void setFileName(String fileName) { - this.fileName = fileName; - } - - - public String getFormat() { - return format; - } - - - public void setFormat(String format) { - this.format = format; - } - - - public String getLang() { - return lang; - } - - - public void setLang(String lang) { - this.lang = lang; - } - - - public String getDefaultLang() { - return defaultLang; - } - - - public void setDefaultLang(String defaultLang) { - this.defaultLang = defaultLang; - } - - /** * On test si les parametres ne sont pas vide * @return */ private boolean testParameters() { - if (address == null || address.length() == 0 - || fileName == null || fileName.length() == 0) { + if (address == null || address.length() == 0) { return true; } else { @@ -109,6 +71,10 @@ } + /** + * Methode principale de la classe + * @return + */ public String execute() { @@ -129,21 +95,22 @@ //SvnSession object creation if doesn't already exist SvnSession svnSess = getSvnSession(httpSession); - String scmUrl = address.startsWith("scm:svn:") ? address.replace("scm:svn:", "") : address; + - format = request.getParameter(PARAMETER_FORMAT) != null ? request.getParameter(PARAMETER_FORMAT) : ""; + String relativePath = address.substring(0,address.lastIndexOf("/")); + + log.debug("RELATIVEPATH : "+relativePath); - String relativePath = "/src/site/" + lang + "/" +( format.equals("") ? "" : format+"/"); - if (lang.equals(defaultLang)) { - // on a maven site, default locale is on root - relativePath = "/src/site/" +( format.equals("") ? "" : format+"/"); - projectUrl = projectUrl.replace("/"+defaultLang+"/", "/"); - } + //String scmPath = address.endsWith(relativePath) ? "" : relativePath; - String scmPath = address.endsWith(relativePath) ? "" : relativePath; - - String scmFilename = fileName.endsWith(".html") ? fileName.replace(".html", "." + format) : fileName; + String scmFileName = address.substring(address.lastIndexOf("/")+1); + log.debug("SCMFILENAME : "+scmFileName); + + format = scmFileName.substring(scmFileName.lastIndexOf(".")+1); + + log.debug("FORMAT : "+scmFileName); + String tmp_log = null; String tmp_pass = null; if (svnSess != null) { @@ -152,18 +119,16 @@ } svnSess = new SvnSession( - scmUrl + scmPath, - scmFilename, + relativePath, + scmFileName, projectUrl, tmp_log, tmp_pass, httpSession.getId(), - lang, - defaultLang, format, request.getRequestURL()); - log.debug("VALEUR SVNSESS 1: "+svnSess); + setSvnSession(httpSession, svnSess); // Tempdir creation on servlet default temporary directory @@ -173,7 +138,7 @@ SVNUpdateClient upclient = new SVNUpdateClient(svnSess.getManager(), svnSess.getSvnOption()); - log.debug("VALEUR SVNSESS 2: "+svnSess); + // Checkout svn and file organisation try { if (log.isDebugEnabled()) { @@ -184,23 +149,56 @@ } catch (SVNAuthenticationException authexep) { // if svn authentication failed user is redirected on login page log.debug("Private SCM on reading " + svnSess.getRemoteUrl()); + //Suppression du repertoire temporaire try { svnSess.cleanCheckoutDir(); } catch (IOException e) { - // TODO Auto-generated catch block e.printStackTrace(); } return "private"; } catch (SVNException e) { - + //Suppression du repertoire temporaire + try { + svnSess.cleanCheckoutDir(); + } catch (IOException ee) { + e.printStackTrace(); + } return "erreurPath"; } - File file_in_dir = new File(svnSess.getCheckoutdir(), svnSess.getFileName()); + File CheckOutFile = new File(svnSess.getCheckoutdir(), svnSess.getFileName()); + try { + String originalText = FileUtils.readFileToString(CheckOutFile); + request.setAttribute(PARAMETER_FORMAT, svnSess.getFormat()); + request.setAttribute(ATTRIBUTE_ORIG_TEXT, StringEscapeUtils.escapeHtml(originalText)); + request.setAttribute(ATTRIBUTE_INVALIDATE_MAX_TIME, (httpSession.getMaxInactiveInterval() / 60)); + request.setAttribute(ATTRIBUTE_LOGIN, (svnSess.getLogin() != null && !svnSess.getLogin().equalsIgnoreCase("") ? svnSess.getLogin() : null)); + request.setAttribute(ATTRIBUTE_IS_LOGIN, (svnSess.getLogin() != null && svnSess.getPassword() != null && !svnSess.getLogin().equalsIgnoreCase("") && !svnSess.getPassword().equalsIgnoreCase(""))); + request.setAttribute(ATTRIBUTE_PROJECT_URL, svnSess.getProjectUrl()); + request.setAttribute(PARAMETER_SCM_EDITOR_URL, svnSess.getScmEditorUrl()); + if (log.isDebugEnabled()) { + log.debug("l'url est : " + svnSess.getScmEditorUrl()); + } + request.setAttribute(ATTRIBUTE_SCM_EDITOR_URI, request.getRequestURI()); + request.setAttribute(ATTRIBUTE_PREVIEW_SERVLET_URL, request.getContextPath() + "/previewservlet"); + + // End on first part + + } catch (FileNotFoundException ee) { + // fichier non trouve, on redirige vers BadFileRedirect.jsp + try { + FileUtils.deleteDirectory(svnSess.getCheckoutdir()); + } catch (IOException e) { + e.printStackTrace(); + } + request.setAttribute(PARAMETER_SCM_EDITOR_URL, svnSess.getProjectUrl()); + return "erreurPath"; + } catch (IOException e) { + e.printStackTrace(); + } - return "editPage"; Modified: trunk/src/main/resources/struts.xml =================================================================== --- trunk/src/main/resources/struts.xml 2011-06-16 08:31:07 UTC (rev 120) +++ trunk/src/main/resources/struts.xml 2011-06-16 14:28:44 UTC (rev 121) @@ -8,8 +8,8 @@ <action name="main" class="org.nuiton.scmwebeditor.actions.ScmWebEditorMainAction" method="execute"> <result name="noParameter" >/OutConnection.jsp</result> <result name="private" >/PrivateSvnRedirect.jsp</result> - <result name="erreurPath" >/BadFileRedirect.jsp?scmEditorUrl=index.jsp</result> - <result name="editPage" >/accueil.jsp</result> + <result name="erreurPath" >/BadFileRedirect.jsp</result> + <result name="editPage" >/ModificationViewer.jsp</result> </action> </package> </struts> \ No newline at end of file Modified: trunk/src/main/webapp/OutConnection.jsp =================================================================== --- trunk/src/main/webapp/OutConnection.jsp 2011-06-16 08:31:07 UTC (rev 120) +++ trunk/src/main/webapp/OutConnection.jsp 2011-06-16 14:28:44 UTC (rev 121) @@ -22,21 +22,9 @@ </center> <center> <form method="get" action="main.action"> - <p><label>SCM path: <input TYPE=text name="address" SIZE=100></label><input type="button" value="Search Files" name="search" onclick="javascript:fileSearch(this.form.adresse, this.form.searchServletUrl);"/></p> - <p><label>File name: <input TYPE=text NAME=fileName SIZE=20></label> -<label>File type: <select name=format> -<option value="rst">Rst -<option value="apt">Apt -</select></label></p> -<p><label>Lang: <select name=lang> -<option value="fr">Fr -<option value="en">En -</select></label> -<label>Default Lang: <select name=defaultLang> -<option value="fr">Fr -<option value="en">En -</select></label></p> + <p><label>SCM path: <input TYPE=text name="address" SIZE=100></label><input type="button" value="Search Files" name="search" onclick="javascript:fileSearch(this.form.address, this.form.searchServletUrl);"/></p> + <input type="hidden" name="projectUrl" value="<%=request.getRequestURL()%>" /> <input type="hidden" name="searchServletUrl" value="<%=request.getAttribute("searchServletUrl")%>"/> <input type="submit" name="Save" /></form>