James Moger
2014-04-23 ddaed96036ebf82430e09ad62ff9f7a7dc828dfe
Fix subdirectory links in pages servlet (issue-411)
2 files modified
15 ■■■■ changed files
releases.moxie 4 ●●● patch | view | raw | blame | history
src/main/java/com/gitblit/servlet/PagesServlet.java 11 ●●●● patch | view | raw | blame | history
releases.moxie
@@ -9,7 +9,8 @@
    html: ~
    text: ~
    security: ~
    fixes: ~
    fixes:
    - Fix subdirectory links in pages servlet (issue-411)
    changes:
    - improve French translation (pr-176)
    - simplify current plugin release detection and ignore the currentRelease registry field 
@@ -20,6 +21,7 @@
    - James Moger
    - Julien Kirch
    - Ralph Hoffman
    - Olivier Rouits
}
#
src/main/java/com/gitblit/servlet/PagesServlet.java
@@ -28,6 +28,7 @@
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.eclipse.jgit.lib.FileMode;
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.revwalk.RevCommit;
import org.eclipse.jgit.revwalk.RevTree;
@@ -228,11 +229,17 @@
                    response.getWriter().append("<thead><tr><th>path</th><th>mode</th><th>size</th></tr>");
                    response.getWriter().append("</thead>");
                    response.getWriter().append("<tbody>");
                    String pattern = "<tr><td><a href=\"{0}\">{0}</a></td><td>{1}</td><td>{2}</td></tr>";
                    String pattern = "<tr><td><a href=\"{0}\">{1}</a></td><td>{2}</td><td>{3}</td></tr>";
                    final ByteFormat byteFormat = new ByteFormat();
                    List<PathModel> entries = JGitUtils.getFilesInPath(r, resource, commit);
                    if (!entries.isEmpty()) {
                        if (entries.get(0).path.indexOf('/') > -1) {
                            // we are in a subdirectory, add parent directory link
                            entries.add(0, new PathModel("..", resource + "/..", 0, FileMode.TREE.getBits(), null, null));
                        }
                    }
                    for (PathModel entry : entries) {
                        response.getWriter().append(MessageFormat.format(pattern, entry.name, JGitUtils.getPermissionsFromMode(entry.mode), byteFormat.format(entry.size)));
                        response.getWriter().append(MessageFormat.format(pattern, entry.path, entry.name, JGitUtils.getPermissionsFromMode(entry.mode), byteFormat.format(entry.size)));
                    }
                    response.getWriter().append("</tbody>");
                    response.getWriter().append("</table>");