From a502d96a860456ec5e8c96761db70f7cabb74751 Mon Sep 17 00:00:00 2001 From: Paul Martin <paul@paulsputer.com> Date: Sat, 30 Apr 2016 04:19:14 -0400 Subject: [PATCH] Merge pull request #1073 from gitblit/1062-DocEditorUpdates --- src/main/java/com/gitblit/wicket/panels/RepositoryUrlPanel.java | 64 ++++++++++++++++--------------- 1 files changed, 33 insertions(+), 31 deletions(-) diff --git a/src/main/java/com/gitblit/wicket/panels/RepositoryUrlPanel.java b/src/main/java/com/gitblit/wicket/panels/RepositoryUrlPanel.java index ea8693b..207f125 100644 --- a/src/main/java/com/gitblit/wicket/panels/RepositoryUrlPanel.java +++ b/src/main/java/com/gitblit/wicket/panels/RepositoryUrlPanel.java @@ -36,7 +36,6 @@ import com.gitblit.Constants.AccessPermission; import com.gitblit.Constants.AccessRestrictionType; -import com.gitblit.GitBlit; import com.gitblit.Keys; import com.gitblit.models.GitClientApplication; import com.gitblit.models.RepositoryModel; @@ -81,11 +80,11 @@ HttpServletRequest req = ((WebRequest) getRequest()).getHttpServletRequest(); - List<RepositoryUrl> repositoryUrls = GitBlit.self().getRepositoryUrls(req, user, repository); + List<RepositoryUrl> repositoryUrls = app().services().getRepositoryUrls(req, user, repository); // grab primary url from the top of the list primaryUrl = repositoryUrls.size() == 0 ? null : repositoryUrls.get(0); - boolean canClone = primaryUrl != null && ((primaryUrl.permission == null) || primaryUrl.permission.atLeast(AccessPermission.CLONE)); + boolean canClone = primaryUrl != null && (!primaryUrl.hasPermission() || primaryUrl.permission.atLeast(AccessPermission.CLONE)); if (repositoryUrls.size() == 0 || !canClone) { // no urls, nothing to show. @@ -104,7 +103,7 @@ add(createRepositoryIndicators(repository)); } - boolean allowAppLinks = GitBlit.getBoolean(Keys.web.allowAppCloneLinks, true); + boolean allowAppLinks = app().settings().getBoolean(Keys.web.allowAppCloneLinks, true); if (onlyUrls || !canClone || !allowAppLinks) { // only display the url(s) add(new Label("applicationMenusPanel").setVisible(false)); @@ -146,7 +145,7 @@ fragment.add(content); item.add(fragment); - Label permissionLabel = new Label("permission", repoUrl.isExternal() ? externalPermission : repoUrl.permission.toString()); + Label permissionLabel = new Label("permission", repoUrl.hasPermission() ? repoUrl.permission.toString() : externalPermission); WicketUtils.setPermissionClass(permissionLabel, repoUrl.permission); String tooltip = getProtocolPermissionDescription(repository, repoUrl); WicketUtils.setHtmlTooltip(permissionLabel, tooltip); @@ -163,7 +162,10 @@ } // access restriction icon and tooltip - if (GitBlit.isServingRepositories()) { + if (repository.isMirror) { + urlPanel.add(WicketUtils.newImage("accessRestrictionIcon", "mirror_16x16.png", + getString("gb.isMirror"))); + } else if (app().services().isServingRepositories()) { switch (repository.accessRestriction) { case NONE: urlPanel.add(WicketUtils.newClearPixel("accessRestrictionIcon").setVisible(false)); @@ -199,7 +201,7 @@ urlPanel.add(new Label("primaryUrl", primaryUrl.url).setRenderBodyOnly(true)); - Label permissionLabel = new Label("primaryUrlPermission", primaryUrl.isExternal() ? externalPermission : primaryUrl.permission.toString()); + Label permissionLabel = new Label("primaryUrlPermission", primaryUrl.hasPermission() ? primaryUrl.permission.toString() : externalPermission); String tooltip = getProtocolPermissionDescription(repository, primaryUrl); WicketUtils.setHtmlTooltip(permissionLabel, tooltip); urlPanel.add(permissionLabel); @@ -208,12 +210,12 @@ return urlPanel; } - protected Fragment createApplicationMenus(String wicketId, UserModel user, final RepositoryModel repository, final List<RepositoryUrl> repositoryUrls) { + protected Fragment createApplicationMenus(String wicketId, final UserModel user, final RepositoryModel repository, final List<RepositoryUrl> repositoryUrls) { final List<GitClientApplication> displayedApps = new ArrayList<GitClientApplication>(); final String userAgent = ((WebClientInfo) GitBlitWebSession.get().getClientInfo()).getUserAgent(); if (user.canClone(repository)) { - for (GitClientApplication app : GitBlit.self().getClientApplications()) { + for (GitClientApplication app : app().gitblit().getClientApplications()) { if (app.isActive && app.allowsPlatform(userAgent)) { displayedApps.add(app); } @@ -232,8 +234,8 @@ // filter the urls for the client app List<RepositoryUrl> urls = new ArrayList<RepositoryUrl>(); for (RepositoryUrl repoUrl : repositoryUrls) { - if (clientApp.minimumPermission == null || repoUrl.permission == null) { - // no minimum permission or external permissions, assume it is satisfactory + if (clientApp.minimumPermission == null || !repoUrl.hasPermission()) { + // no minimum permission or untracked permissions, assume it is satisfactory if (clientApp.supportsTransport(repoUrl.url)) { urls.add(repoUrl); } @@ -307,13 +309,13 @@ if (!StringUtils.isEmpty(clientApp.cloneUrl)) { // custom registered url - String url = substitute(clientApp.cloneUrl, repoUrl.url, baseURL); + String url = substitute(clientApp.cloneUrl, repoUrl.url, baseURL, user.username, repository.name); fragment.add(new LinkPanel("content", "applicationMenuItem", getString("gb.clone") + " " + repoUrl.url, url)); repoLinkItem.add(fragment); fragment.add(new Label("copyFunction").setVisible(false)); } else if (!StringUtils.isEmpty(clientApp.command)) { // command-line - String command = substitute(clientApp.command, repoUrl.url, baseURL); + String command = substitute(clientApp.command, repoUrl.url, baseURL, user.username, repository.name); Label content = new Label("content", command); WicketUtils.setCssClass(content, "commandMenuItem"); fragment.add(content); @@ -332,12 +334,12 @@ return applicationMenus; } - protected String substitute(String pattern, String repoUrl, String baseUrl) { - return pattern.replace("${repoUrl}", repoUrl).replace("${baseUrl}", baseUrl); + protected String substitute(String pattern, String repoUrl, String baseUrl, String username, String repository) { + return pattern.replace("${repoUrl}", repoUrl).replace("${baseUrl}", baseUrl).replace("${username}", username).replace("${repository}", repository); } protected Label createPermissionBadge(String wicketId, RepositoryUrl repoUrl) { - Label permissionLabel = new Label(wicketId, repoUrl.isExternal() ? externalPermission : repoUrl.permission.toString()); + Label permissionLabel = new Label(wicketId, repoUrl.hasPermission() ? repoUrl.permission.toString() : externalPermission); WicketUtils.setPermissionClass(permissionLabel, repoUrl.permission); String tooltip = getProtocolPermissionDescription(repository, repoUrl); WicketUtils.setHtmlTooltip(permissionLabel, tooltip); @@ -345,7 +347,7 @@ } protected Fragment createCopyFragment(String text) { - if (GitBlit.getBoolean(Keys.web.allowFlashCopyToClipboard, true)) { + if (app().settings().getBoolean(Keys.web.allowFlashCopyToClipboard, true)) { // clippy: flash-based copy & paste Fragment copyFragment = new Fragment("copyFunction", "clippyPanel", this); String baseUrl = WicketUtils.getGitblitURL(getRequest()); @@ -367,18 +369,7 @@ RepositoryUrl repoUrl) { if (!urlPermissionsMap.containsKey(repoUrl.url)) { String note; - if (repoUrl.isExternal()) { - String protocol; - int protocolIndex = repoUrl.url.indexOf("://"); - if (protocolIndex > -1) { - // explicit protocol specified - protocol = repoUrl.url.substring(0, protocolIndex); - } else { - // implicit SSH url - protocol = "ssh"; - } - note = MessageFormat.format(getString("gb.externalPermissions"), protocol); - } else { + if (repoUrl.hasPermission()) { note = null; String key; switch (repoUrl.permission) { @@ -409,6 +400,17 @@ String description = MessageFormat.format(pattern, repoUrl.permission.toString()); note = description; } + } else { + String protocol; + int protocolIndex = repoUrl.url.indexOf("://"); + if (protocolIndex > -1) { + // explicit protocol specified + protocol = repoUrl.url.substring(0, protocolIndex); + } else { + // implicit SSH url + protocol = "ssh"; + } + note = MessageFormat.format(getString("gb.externalPermissions"), protocol); } urlPermissionsMap.put(repoUrl.url, note); } @@ -450,12 +452,12 @@ fragment.add(wc); } - boolean allowForking = GitBlit.getBoolean(Keys.web.allowForking, true); + boolean allowForking = app().settings().getBoolean(Keys.web.allowForking, true); if (!allowForking || user == null || !user.isAuthenticated) { // must be logged-in to fork, hide all fork controls fragment.add(new Label("forksProhibitedIndicator").setVisible(false)); } else { - String fork = GitBlit.self().getFork(user.username, repository.name); + String fork = app().repositories().getFork(user.username, repository.name); boolean hasFork = fork != null; boolean canFork = user.canFork(repository); -- Gitblit v1.9.1