branch feature/GIT updated (2533ad9 -> 47ea742)
This is an automated email from the git hooks/post-receive script. New change to branch feature/GIT in repository scmwebeditor. See http://git.nuiton.org/scmwebeditor.git from 2533ad9 It is now possible to use Git repositories which need authentication new 47ea742 More errors are handled, code refactoring to make it more modular, added the "upload a new file" feature to the search page The 1 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference. Detailed log of new commits: commit 47ea7428df8bc4b2a241d4f7fabb465fd8a16927 Author: Hugo PIGEON <hpigeon@codelutin.com> Date: Wed Apr 29 09:40:35 2015 +0200 More errors are handled, code refactoring to make it more modular, added the "upload a new file" feature to the search page Summary of changes: .../org/nuiton/scmwebeditor/GitConnection.java | 66 +++++++++++++--- .../scmwebeditor/ScmWebEditorBaseAction.java | 44 ----------- .../org/nuiton/scmwebeditor/SvnConnection.java | 89 +++++++++++++++++++++- .../nuiton/scmwebeditor/actions/LogoutAction.java | 5 +- .../nuiton/scmwebeditor/actions/ResetAction.java | 8 +- .../actions/ScmWebEditorMainAction.java | 46 ----------- .../nuiton/scmwebeditor/actions/SearchAction.java | 72 ++--------------- src/main/webapp/WEB-INF/content/loginSearch.jsp | 20 +++++ src/main/webapp/WEB-INF/content/search.jsp | 19 +++++ src/main/webapp/js/scmDetector.js | 11 ++- .../org/nuiton/scmwebeditor/BaseActionTest.java | 2 +- 11 files changed, 205 insertions(+), 177 deletions(-) -- To stop receiving notification emails like this one, please contact nuiton.org SCM administrator <admin+scm@nuiton.org>.
This is an automated email from the git hooks/post-receive script. New commit to branch feature/GIT in repository scmwebeditor. See http://git.nuiton.org/scmwebeditor.git commit 47ea7428df8bc4b2a241d4f7fabb465fd8a16927 Author: Hugo PIGEON <hpigeon@codelutin.com> Date: Wed Apr 29 09:40:35 2015 +0200 More errors are handled, code refactoring to make it more modular, added the "upload a new file" feature to the search page --- .../org/nuiton/scmwebeditor/GitConnection.java | 66 +++++++++++++--- .../scmwebeditor/ScmWebEditorBaseAction.java | 44 ----------- .../org/nuiton/scmwebeditor/SvnConnection.java | 89 +++++++++++++++++++++- .../nuiton/scmwebeditor/actions/LogoutAction.java | 5 +- .../nuiton/scmwebeditor/actions/ResetAction.java | 8 +- .../actions/ScmWebEditorMainAction.java | 46 ----------- .../nuiton/scmwebeditor/actions/SearchAction.java | 72 ++--------------- src/main/webapp/WEB-INF/content/loginSearch.jsp | 20 +++++ src/main/webapp/WEB-INF/content/search.jsp | 19 +++++ src/main/webapp/js/scmDetector.js | 11 ++- .../org/nuiton/scmwebeditor/BaseActionTest.java | 2 +- 11 files changed, 205 insertions(+), 177 deletions(-) diff --git a/src/main/java/org/nuiton/scmwebeditor/GitConnection.java b/src/main/java/org/nuiton/scmwebeditor/GitConnection.java index 3731baf..a96742c 100644 --- a/src/main/java/org/nuiton/scmwebeditor/GitConnection.java +++ b/src/main/java/org/nuiton/scmwebeditor/GitConnection.java @@ -22,6 +22,7 @@ package org.nuiton.scmwebeditor; import com.google.common.collect.Lists; +import com.jgeppert.struts2.jquery.tree.result.TreeNode; import org.apache.commons.io.FileUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -73,7 +74,7 @@ public class GitConnection implements ScmConnection { protected static final String MASTER_BRANCH = "master"; - public GitConnection(String address, String sessionId) throws IOException, ScmNotFoundException { + public GitConnection(String address, String sessionId) throws IOException { if(log.isDebugEnabled()) { log.debug("Git repository"); @@ -102,7 +103,7 @@ public class GitConnection implements ScmConnection { log.error("Error while cloning the repository", e); } action.setError(true); - return action.SUCCESS; + return action.ROOT; } catch (IOException e) { @@ -110,7 +111,7 @@ public class GitConnection implements ScmConnection { log.error("Error while cloning the repository", e); } action.setError(true); - return action.SUCCESS; + return action.ROOT; } catch (AuthenticationException e) { @@ -130,7 +131,7 @@ public class GitConnection implements ScmConnection { log.error("Error while getting the head branch name", e); } action.setError(true); - return SearchAction.SUCCESS; + return SearchAction.ROOT; } action.setHeadBranchName(headBranchName); @@ -169,7 +170,7 @@ public class GitConnection implements ScmConnection { log.error("Can't access to the repository", e); } action.setError(true); - return SearchAction.SUCCESS; + return SearchAction.ROOT; } String id = action.getId(); @@ -191,7 +192,7 @@ public class GitConnection implements ScmConnection { if (!gitRepo.getObjectDatabase().exists()) { action.setError(true); - return SearchAction.SUCCESS; + return SearchAction.ROOT; } RevCommit commit = null; @@ -206,7 +207,7 @@ public class GitConnection implements ScmConnection { } action.setError(true); - return SearchAction.SUCCESS; + return SearchAction.ROOT; } RevTree tree = commit.getTree(); @@ -248,11 +249,38 @@ public class GitConnection implements ScmConnection { log.error("Can't access to the repository", e); } action.setError(true); - return SearchAction.SUCCESS; + return SearchAction.ROOT; } action.setError(false); + // building the tree + if (action.getFiles() != null) { + for (String file : action.getFiles()) { + TreeNode node = new TreeNode(); + node.setId(file); + node.setTitle(file.substring(file.lastIndexOf("/") + 1)); + node.setState(TreeNode.NODE_STATE_LEAF); + node.setIcon("ui-icon-document"); + action.getNodes().add(node); + } + } + + if (action.getDirectories() != null) { + Iterator<Map.Entry<String, String>> iter1 = action.getDirectories().entrySet().iterator(); + while (iter1.hasNext()) { + Map.Entry<String, String> ent = (Map.Entry<String, String>) iter1.next(); + + String value = ent.getValue(); + + TreeNode node = new TreeNode(); + node.setId(value); + + node.setTitle(value.substring(value.lastIndexOf("/"))); + action.getNodes().add(node); + } + } + return SearchAction.SUCCESS; } @@ -452,8 +480,17 @@ public class GitConnection implements ScmConnection { // Writing the file to the local directory String pathOnRepo = action.getScmPath(); - pathOnRepo = pathOnRepo.substring(addressGit.length() + 1); - File file = new File(localDirectory.getAbsolutePath() + "/" + pathOnRepo + "/" + action.getUploadFileName()); + String path; + + if (pathOnRepo.length() > addressGit.length()) { + pathOnRepo = pathOnRepo.substring(addressGit.length() + 1); + path = pathOnRepo + "/" + action.getUploadFileName(); + } else { + pathOnRepo = ""; + path = action.getUploadFileName(); + } + + File file = new File(localDirectory.getAbsolutePath() + "/" + path); try { FileUtils.copyFile(action.getUpload(), file); @@ -473,7 +510,7 @@ public class GitConnection implements ScmConnection { // add AddCommand add = git.add(); - add.addFilepattern(pathOnRepo + "/" + action.getUploadFileName()); + add.addFilepattern(path); try { add.call(); @@ -805,7 +842,12 @@ public class GitConnection implements ScmConnection { if (log.isErrorEnabled()) { log.error("Can't clone the remote repository", e); } - throw new AuthenticationException("Can not clone the Git repository : auth failed"); + + if (e.getMessage().endsWith("500 Internal Server Error")) { + throw new AuthenticationException("Can not clone the Git repository: auth failed"); + } else { + throw new ScmNotFoundException("Can not find a Git repository at address " + addressGit); + } } catch (GitAPIException e) { FileUtils.deleteDirectory(localDirectory); if (log.isErrorEnabled()) { diff --git a/src/main/java/org/nuiton/scmwebeditor/ScmWebEditorBaseAction.java b/src/main/java/org/nuiton/scmwebeditor/ScmWebEditorBaseAction.java index c9d9708..9ec9ea6 100644 --- a/src/main/java/org/nuiton/scmwebeditor/ScmWebEditorBaseAction.java +++ b/src/main/java/org/nuiton/scmwebeditor/ScmWebEditorBaseAction.java @@ -32,19 +32,9 @@ import org.apache.tika.metadata.Metadata; import org.apache.tika.parser.AutoDetectParser; import org.apache.tika.sax.BodyContentHandler; import org.nuiton.web.struts2.BaseAction; -import org.tmatesoft.svn.core.SVNException; -import org.tmatesoft.svn.core.SVNProperty; -import org.tmatesoft.svn.core.SVNURL; -import org.tmatesoft.svn.core.auth.ISVNAuthenticationManager; -import org.tmatesoft.svn.core.internal.wc.DefaultSVNOptions; -import org.tmatesoft.svn.core.wc.SVNInfo; -import org.tmatesoft.svn.core.wc.SVNRevision; -import org.tmatesoft.svn.core.wc.SVNWCClient; -import org.tmatesoft.svn.core.wc.SVNWCUtil; import org.xml.sax.SAXException; import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpSession; import java.io.*; import java.net.MalformedURLException; import java.nio.charset.Charset; @@ -102,13 +92,11 @@ public class ScmWebEditorBaseAction extends BaseAction implements ServletRequest protected static final String PARAMETER_TEXT = "text"; //protected static final String ATTRIBUTE_TEMPDIR = "javax.servlet.context.tempdir"; - // protected static final String ATTRIBUTE_SVN_PATH_URL = "svnPath_url"; // protected static final String ATTRIBUTE_FILE_NAME_URL = "fileName_url"; protected static final String ATTRIBUTE_REDIRECTION_URL = "Redirection_url"; // protected static final String ATTRIBUTE_LANG = "Lang"; // protected static final String ATTRIBUTE_FORMAT = "Format"; - private static final String ATTRIBUTE_SVN_SESSION = "myInfo"; protected static final String ATTRIBUTE_ORIG_TEXT = "OrigText"; @@ -229,38 +217,6 @@ public class ScmWebEditorBaseAction extends BaseAction implements ServletRequest } } - public String getHeadcommiter(String address, String login, String password) throws SVNException { - - ISVNAuthenticationManager authManager = SVNWCUtil.createDefaultAuthenticationManager(login, password); - - DefaultSVNOptions svnOption = new DefaultSVNOptions(); - svnOption.setPropertyValue(SVNProperty.EOL_STYLE, SVNProperty.EOL_STYLE_LF); - - SVNWCClient wcClient = new SVNWCClient(authManager, svnOption); - - SVNInfo info = wcClient.doInfo(SVNURL.parseURIEncoded(address), SVNRevision.HEAD, SVNRevision.HEAD); - - String headAuthor = info.getAuthor(); - - - return headAuthor; - } - - - protected SvnConnection getSvnSession(HttpSession httpSession) { - SvnConnection svnSess = (SvnConnection) httpSession.getAttribute(ATTRIBUTE_SVN_SESSION); - return svnSess; - } - - protected void setSvnSession(HttpSession httpSession, SvnConnection svnSess) { - httpSession.setAttribute(ATTRIBUTE_SVN_SESSION, svnSess); - } - - protected File getTempDir(HttpSession httpSession) { - File tmp_dir = getSvnSession(httpSession).getCheckoutdir(); - return tmp_dir; - } - protected String getMimeType(File file) throws IOException, SAXException, TikaException { InputStream is = new FileInputStream(file); diff --git a/src/main/java/org/nuiton/scmwebeditor/SvnConnection.java b/src/main/java/org/nuiton/scmwebeditor/SvnConnection.java index 25040bd..cf8fc52 100644 --- a/src/main/java/org/nuiton/scmwebeditor/SvnConnection.java +++ b/src/main/java/org/nuiton/scmwebeditor/SvnConnection.java @@ -42,6 +42,7 @@ import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; +import java.util.*; public class SvnConnection implements ScmConnection { @@ -177,7 +178,7 @@ public class SvnConnection implements ScmConnection { return SearchAction.SUCCESS; } action.setNumberOfFile(0); - action.listEntries(repository, ""); + listEntries(repository, "", action); if (log.isDebugEnabled()) { log.debug("Number of file : " + action.getFiles().size()); } @@ -201,6 +202,32 @@ public class SvnConnection implements ScmConnection { action.setError(false); + if (action.getFiles() != null) { + for (String file : action.getFiles()) { + TreeNode node = new TreeNode(); + node.setId(file); + node.setTitle(file.substring(file.lastIndexOf("/") + 1)); + node.setState(TreeNode.NODE_STATE_LEAF); + node.setIcon("ui-icon-document"); + action.getNodes().add(node); + } + } + + + if (action.getDirectories() != null) { + Iterator<Map.Entry<String, String>> iter1 = action.getDirectories().entrySet().iterator(); + while (iter1.hasNext()) { + Map.Entry<String, String> ent = (Map.Entry<String, String>) iter1.next(); + + String value = ent.getValue(); + + TreeNode node = new TreeNode(); + node.setId(value); + node.setTitle(value.substring(value.lastIndexOf("/"))); + action.getNodes().add(node); + } + } + return SearchAction.SUCCESS; } @@ -293,7 +320,7 @@ public class SvnConnection implements ScmConnection { action.setDiff(diff.substring(diff.indexOf("@@"))); delTempDirectory(checkoutdir); try { - action.setHeadCommiter(action.getHeadcommiter(action.getAddress(), action.getUsername(), action.getPw())); + action.setHeadCommiter(getHeadcommiter(action.getAddress(), action.getUsername(), action.getPw())); } catch (SVNException e) { log.error("Can't get head commiter", e); } @@ -835,4 +862,62 @@ public class SvnConnection implements ScmConnection { } + public String getHeadcommiter(String address, String login, String password) throws SVNException { + + ISVNAuthenticationManager authManager = SVNWCUtil.createDefaultAuthenticationManager(login, password); + + DefaultSVNOptions svnOption = new DefaultSVNOptions(); + svnOption.setPropertyValue(SVNProperty.EOL_STYLE, SVNProperty.EOL_STYLE_LF); + + SVNWCClient wcClient = new SVNWCClient(authManager, svnOption); + + SVNInfo info = wcClient.doInfo(SVNURL.parseURIEncoded(address), SVNRevision.HEAD, SVNRevision.HEAD); + + String headAuthor = info.getAuthor(); + + + return headAuthor; + } + + + + + public static void listEntries(SVNRepository repository, String path, SearchAction action) { + + action.setFiles(new LinkedList<String>()); + action.setDirectories(new HashMap<String, String>()); + + Collection<?> entries = null; + try { + entries = repository.getDir(path, -1, null, (Collection<?>) null); + } catch (SVNException e) { + if (log.isErrorEnabled()) { + log.error("Can not reach the repository", e); + } + } + Iterator<?> iterator = entries.iterator(); + + + while (iterator.hasNext()) { + SVNDirEntry entry = (SVNDirEntry) iterator.next(); + if (log.isDebugEnabled()) { + log.debug("/" + (path.equals("") ? "" : path + "/") + entry.getName() + "\n"); + } + String fichier = action.getAddress() + "/" + (path.equals("") ? "" : path + "/") + entry.getName(); + + + if (entry.getKind() == SVNNodeKind.DIR) { + action.getDirectories().put(action.getAddressUnique(fichier), fichier); + + //listEntries(repository, (path.equals("")) ? entry.getName() : path + "/" + entry.getName()); + } else { + // On ajoute dans la liste files seulement les fichiers et pas les répertoires + action.getFiles().add(fichier); + } + } + + + } + + } diff --git a/src/main/java/org/nuiton/scmwebeditor/actions/LogoutAction.java b/src/main/java/org/nuiton/scmwebeditor/actions/LogoutAction.java index d1dc836..4859568 100644 --- a/src/main/java/org/nuiton/scmwebeditor/actions/LogoutAction.java +++ b/src/main/java/org/nuiton/scmwebeditor/actions/LogoutAction.java @@ -25,7 +25,10 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.struts2.interceptor.ServletRequestAware; import org.apache.struts2.interceptor.ServletResponseAware; -import org.nuiton.scmwebeditor.*; +import org.nuiton.scmwebeditor.ScmConnection; +import org.nuiton.scmwebeditor.ScmConnectionFactory; +import org.nuiton.scmwebeditor.ScmNotFoundException; +import org.nuiton.scmwebeditor.ScmWebEditorBaseAction; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; diff --git a/src/main/java/org/nuiton/scmwebeditor/actions/ResetAction.java b/src/main/java/org/nuiton/scmwebeditor/actions/ResetAction.java index 9b0eb9a..080d1e9 100644 --- a/src/main/java/org/nuiton/scmwebeditor/actions/ResetAction.java +++ b/src/main/java/org/nuiton/scmwebeditor/actions/ResetAction.java @@ -23,12 +23,12 @@ package org.nuiton.scmwebeditor.actions; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.nuiton.scmwebeditor.*; -import org.tmatesoft.svn.core.SVNAuthenticationException; -import org.tmatesoft.svn.core.SVNException; +import org.nuiton.scmwebeditor.ScmConnection; +import org.nuiton.scmwebeditor.ScmConnectionFactory; +import org.nuiton.scmwebeditor.ScmNotFoundException; +import org.nuiton.scmwebeditor.ScmWebEditorBaseAction; import javax.naming.AuthenticationException; -import javax.servlet.http.Cookie; public class ResetAction extends ScmWebEditorBaseAction { diff --git a/src/main/java/org/nuiton/scmwebeditor/actions/ScmWebEditorMainAction.java b/src/main/java/org/nuiton/scmwebeditor/actions/ScmWebEditorMainAction.java index 2bd1635..3753d12 100644 --- a/src/main/java/org/nuiton/scmwebeditor/actions/ScmWebEditorMainAction.java +++ b/src/main/java/org/nuiton/scmwebeditor/actions/ScmWebEditorMainAction.java @@ -65,8 +65,6 @@ public class ScmWebEditorMainAction extends ScmWebEditorBaseAction implements Se protected String numRevision; - protected String addressSvn; - protected String username; protected String pw; @@ -77,14 +75,6 @@ public class ScmWebEditorMainAction extends ScmWebEditorBaseAction implements Se protected boolean fromLoginPage; - public String getAddressSvn() { - return addressSvn; - } - - public void setAddressSvn(String addressSvn) { - this.addressSvn = addressSvn; - } - public String getMimeType() { return mimeType; } @@ -198,47 +188,11 @@ public class ScmWebEditorMainAction extends ScmWebEditorBaseAction implements Se log.debug("ProjectUrl= " + projectUrl); } - -// Map<?,?> map =(Map<?,?>) request.getParameterMap(); - if (testParameters()) { return NO_PARAMETER; } -// if(testParameters()) { -// -// Map<String,String> parameters = new HashMap<String,String>(); -// -// Iterator<?> iter = map.entrySet().iterator(); -// while (iter.hasNext()) { -// Entry<?,?> n = (Entry<?,?>)iter.next(); -// String key = n.getKey().toString(); -// String values[] = (String[]) n.getValue(); -// parameters.put(key,values[0].toString()); -// } -// -// -// URL urlSvn = null; -// try { -// urlSvn = ScmUrlResolverEngine.resolver(parameters); -// } catch (IOException e1) { -// if(log.isErrorEnabled()) { -// log.error("erreur", e1); -// } -// return "errorPath"; -// } catch (IllegalArgumentException e1) { -// if(log.isErrorEnabled()) { -// log.error(e1.getMessage()); -// } -// return "errorPath"; -// } -// -// address=urlSvn.toString(); -// -// } - - HttpSession session = request.getSession(); String sessionId = session.getId(); diff --git a/src/main/java/org/nuiton/scmwebeditor/actions/SearchAction.java b/src/main/java/org/nuiton/scmwebeditor/actions/SearchAction.java index 7ac6bca..5a41ba7 100644 --- a/src/main/java/org/nuiton/scmwebeditor/actions/SearchAction.java +++ b/src/main/java/org/nuiton/scmwebeditor/actions/SearchAction.java @@ -138,7 +138,7 @@ public class SearchAction extends ScmWebEditorBaseAction { HttpSession session = request.getSession(); String sessionId = session.getId(); - ScmConnection scmConn = null; + ScmConnection scmConn; try { scmConn = ScmConnectionFactory.createScmConnection(address, scmType, sessionId); } catch (ScmNotFoundException e) { @@ -149,84 +149,26 @@ public class SearchAction extends ScmWebEditorBaseAction { return SUCCESS; } - String returnCode = null; + String returnCode; // getting the files and directories + if (scmConn == null) { + error = true; + return ROOT; + } + returnCode = scmConn.search(this); if (files == null && directories == null) { return returnCode; } - // building the tree - if (files != null) { - for (String file : files) { - TreeNode node = new TreeNode(); - node.setId(file); - node.setTitle(file.substring(file.lastIndexOf("/") + 1)); - node.setState(TreeNode.NODE_STATE_LEAF); - node.setIcon("ui-icon-document"); - nodes.add(node); - } - } - - if (directories != null) { - Iterator<Entry<String, String>> iter1 = directories.entrySet().iterator(); - while (iter1.hasNext()) { - Map.Entry<String, String> ent = (Map.Entry<String, String>) iter1.next(); - String value = ent.getValue(); - - TreeNode node = new TreeNode(); - node.setId(value); - - node.setTitle(value.substring(value.lastIndexOf("/"))); - nodes.add(node); - } - } return returnCode; } - public void listEntries(SVNRepository repository, String path) { - - files = new LinkedList<String>(); - directories = new HashMap<String, String>(); - - Collection<?> entries = null; - try { - entries = repository.getDir(path, -1, null, (Collection<?>) null); - } catch (SVNException e) { - if (log.isErrorEnabled()) { - log.error("Can not reach the repository", e); - } - } - Iterator<?> iterator = entries.iterator(); - - - while (iterator.hasNext()) { - SVNDirEntry entry = (SVNDirEntry) iterator.next(); - if (log.isDebugEnabled()) { - log.debug("/" + (path.equals("") ? "" : path + "/") + entry.getName() + "\n"); - } - String fichier = address + "/" + (path.equals("") ? "" : path + "/") + entry.getName(); - - - if (entry.getKind() == SVNNodeKind.DIR) { - directories.put(getAddressUnique(fichier), fichier); - - //listEntries(repository, (path.equals("")) ? entry.getName() : path + "/" + entry.getName()); - } else { - // On ajoute dans la liste files seulement les fichiers et pas les répertoires - files.add(fichier); - } - } - - - } - - public String getBranchesJSON() { if (username == null) { diff --git a/src/main/webapp/WEB-INF/content/loginSearch.jsp b/src/main/webapp/WEB-INF/content/loginSearch.jsp index c2874d6..a14c76f 100644 --- a/src/main/webapp/WEB-INF/content/loginSearch.jsp +++ b/src/main/webapp/WEB-INF/content/loginSearch.jsp @@ -26,6 +26,24 @@ <%@ taglib prefix="sj" uri="/struts-jquery-tags" %> <sj:head jquerytheme="default"/> +<script type="test/javascript"> + + $("#load-icon").hide(); + + $("#ajaxSearchButtonLogin").on("click", function() { + $("#load-icon").show(); + }); + + var mykey; + + $("#pw").on("keypress", function(e) { + if (e.keyCode == 13) { + $("#load-icon").show(); + } + }); + +</script> + <div id="search"> <p><s:text name="scm.mustBeLog"/></p> @@ -51,5 +69,7 @@ value="%{scm.loginButton}" > </sj:submit> + + <img src="struts/js/jstree/themes/classic/throbber.gif" alt="loading" id="load-icon"/> </p> </div> diff --git a/src/main/webapp/WEB-INF/content/search.jsp b/src/main/webapp/WEB-INF/content/search.jsp index 89c7bca..9fbb0ec 100644 --- a/src/main/webapp/WEB-INF/content/search.jsp +++ b/src/main/webapp/WEB-INF/content/search.jsp @@ -55,8 +55,12 @@ } }); + $("#load-icon").hide(); + </script> +<script src="js/pictureUpload.js" type="text/javascript"></script> + <s:if test="scmType.equals('Git') && !error"> <s:text name="scm.outConnection.headBranch"/> <s:if test="selectedBranch != null"> @@ -100,3 +104,18 @@ <s:text name="scm.cantFindRepo"/> </s:if> +<s:set id="scm.upload"> + <s:text name="scm.upload"/> +</s:set> +<s:set id="scm.uploadTitle"> + <s:text name="scm.uploadTitle"/> +</s:set> + +<s:set name="address"> + <s:property value="address"/> +</s:set> +<center> + <s:submit name="uploadButton" value="%{scm.upload}" title="%{scm.uploadTitle}" + onClick="javascript:upload_popup('doUpload.action', 'upload' , getElementById('addressInput'), '%{scmType}' );"/> +</center> + diff --git a/src/main/webapp/js/scmDetector.js b/src/main/webapp/js/scmDetector.js index 229676d..7e31f18 100644 --- a/src/main/webapp/js/scmDetector.js +++ b/src/main/webapp/js/scmDetector.js @@ -3,10 +3,17 @@ $(document).ready(function() { $("#addressInput").on("input", function() { var address = $("#addressInput").val(); - if (address.contains(".git") && scmsListContains("Git")) { - $("#scmType").val("Git"); + if (scmsListContains("Git")) { + if (address.contains(".git") || address.startsWith("git://")) { + $("#scmType").val("Git"); + } } + if (scmsListContains("SVN")) { + if (address.startsWith("svn://")) { + $("#scmType").val("SVN"); + } + } }); diff --git a/src/test/java/org/nuiton/scmwebeditor/BaseActionTest.java b/src/test/java/org/nuiton/scmwebeditor/BaseActionTest.java index 03544fb..22d1797 100644 --- a/src/test/java/org/nuiton/scmwebeditor/BaseActionTest.java +++ b/src/test/java/org/nuiton/scmwebeditor/BaseActionTest.java @@ -143,7 +143,7 @@ public class BaseActionTest { try { SVNRepository repository = SVNRepositoryFactory.create(tgtURL); searchAction.setAddress(""); - searchAction.listEntries(repository , ""); + SvnConnection.listEntries(repository , "", searchAction); files = new LinkedList<String>(); files.addAll(searchAction.getFiles()); } catch (SVNException e) { -- To stop receiving notification emails like this one, please contact nuiton.org SCM administrator <admin+scm@nuiton.org>.
participants (1)
-
nuiton.org scm