From b7502e5c0666154c7378469fd769b3aeb242e949 Mon Sep 17 00:00:00 2001 From: James Moger Date: Thu, 2 May 2013 21:44:07 -0400 Subject: Added SparkleShare invite url panel This will probably be merged into a refined, single multi-protocol url panel. --- .../com/gitblit/wicket/GitBlitWebApp.properties | 5 ++- .../java/com/gitblit/wicket/pages/BasePage.java | 29 +++++++++++- .../java/com/gitblit/wicket/pages/SummaryPage.html | 1 + .../java/com/gitblit/wicket/pages/SummaryPage.java | 10 +++++ .../wicket/panels/SparkleShareInvitePanel.html | 18 ++++++++ .../wicket/panels/SparkleShareInvitePanel.java | 52 ++++++++++++++++++++++ 6 files changed, 112 insertions(+), 3 deletions(-) create mode 100644 src/main/java/com/gitblit/wicket/panels/SparkleShareInvitePanel.html create mode 100644 src/main/java/com/gitblit/wicket/panels/SparkleShareInvitePanel.java (limited to 'src/main/java/com/gitblit/wicket') diff --git a/src/main/java/com/gitblit/wicket/GitBlitWebApp.properties b/src/main/java/com/gitblit/wicket/GitBlitWebApp.properties index aa5a415a..049cc408 100644 --- a/src/main/java/com/gitblit/wicket/GitBlitWebApp.properties +++ b/src/main/java/com/gitblit/wicket/GitBlitWebApp.properties @@ -445,10 +445,11 @@ gb.isSparkleshared = repository is Sparkleshared gb.owners = owners gb.sessionEnded = Session has been closed gb.closeBrowser = Please close the browser to properly end the session. -gb.doesNotExistInTree = {0} does not exist in tree {1} +gb.doesNotExistInTree = {0} does not exist in tree {1} gb.enableIncrementalPushTags = enable incremental push tags gb.useIncrementalPushTagsDescription = on push, automatically tag each branch tip with an incremental revision number gb.incrementalPushTagMessage = Auto-tagged [{0}] branch on push gb.externalPermissions = {0} access permissions for {1} are externally maintained gb.viewAccess = You do not have Gitblit read or write access -gb.yourProtocolPermissionIs = Your {0} access permission for {1} is {2} \ No newline at end of file +gb.yourProtocolPermissionIs = Your {0} access permission for {1} is {2} +gb.sparkleshareInvite = SparkleShare invite \ No newline at end of file diff --git a/src/main/java/com/gitblit/wicket/pages/BasePage.java b/src/main/java/com/gitblit/wicket/pages/BasePage.java index b2dcce3f..b3b0767b 100644 --- a/src/main/java/com/gitblit/wicket/pages/BasePage.java +++ b/src/main/java/com/gitblit/wicket/pages/BasePage.java @@ -57,6 +57,7 @@ import com.gitblit.Constants.AuthorizationControl; import com.gitblit.Constants.FederationStrategy; import com.gitblit.GitBlit; import com.gitblit.Keys; +import com.gitblit.SparkleShareInviteServlet; import com.gitblit.models.ProjectModel; import com.gitblit.models.RepositoryModel; import com.gitblit.models.TeamModel; @@ -311,7 +312,33 @@ public abstract class BasePage extends SessionPage { return new Label(wicketId).setVisible(false); } } - + + protected String getSparkleShareInviteUrl(RepositoryModel repository) { + if (repository.isBare && repository.isSparkleshared()) { + UserModel user = GitBlitWebSession.get().getUser(); + if (user == null) { + user = UserModel.ANONYMOUS; + } + String username = null; + if (UserModel.ANONYMOUS != user) { + username = user.username; + } + if (GitBlit.getBoolean(Keys.git.enableGitServlet, true) || (GitBlit.getInteger(Keys.git.daemonPort, 0) > 0)) { + // Gitblit as server + // ensure user can rewind + if (user.canRewindRef(repository)) { + String baseURL = WicketUtils.getGitblitURL(RequestCycle.get().getRequest()); + return SparkleShareInviteServlet.asLink(baseURL, repository.name, username); + } + } else { + // Gitblit as viewer, assume RW+ permission + String baseURL = WicketUtils.getGitblitURL(RequestCycle.get().getRequest()); + return SparkleShareInviteServlet.asLink(baseURL, repository.name, username); + } + } + return null; + } + protected List getProjectModels() { final UserModel user = GitBlitWebSession.get().getUser(); List projects = GitBlit.self().getProjectModels(user, true); diff --git a/src/main/java/com/gitblit/wicket/pages/SummaryPage.html b/src/main/java/com/gitblit/wicket/pages/SummaryPage.html index a751d1f0..c9bce401 100644 --- a/src/main/java/com/gitblit/wicket/pages/SummaryPage.html +++ b/src/main/java/com/gitblit/wicket/pages/SummaryPage.html @@ -26,6 +26,7 @@
+
[repository sparkleshare invite url]
diff --git a/src/main/java/com/gitblit/wicket/pages/SummaryPage.java b/src/main/java/com/gitblit/wicket/pages/SummaryPage.java index 863974b3..f092a387 100644 --- a/src/main/java/com/gitblit/wicket/pages/SummaryPage.java +++ b/src/main/java/com/gitblit/wicket/pages/SummaryPage.java @@ -60,6 +60,7 @@ import com.gitblit.wicket.panels.BranchesPanel; import com.gitblit.wicket.panels.DetailedRepositoryUrlPanel; import com.gitblit.wicket.panels.LinkPanel; import com.gitblit.wicket.panels.LogPanel; +import com.gitblit.wicket.panels.SparkleShareInvitePanel; import com.gitblit.wicket.panels.TagsPanel; public class SummaryPage extends RepositoryPage { @@ -167,6 +168,15 @@ public class SummaryPage extends RepositoryPage { } add(gitDaemonUrlPanel); + String sparkleshareUrl = getSparkleShareInviteUrl(model); + if (StringUtils.isEmpty(sparkleshareUrl)) { + add(new Label("repositorySparkleShareInviteUrl").setVisible(false)); + } else { + Component sparklesharePanel = new SparkleShareInvitePanel("repositorySparkleShareInviteUrl", getLocalizer(), this, sparkleshareUrl, accessPermission); + WicketUtils.setCssStyle(sparklesharePanel, "padding-top: 10px;"); + add(sparklesharePanel); + } + ListDataProvider urls = new ListDataProvider(repositoryUrls); DataView otherUrlsView = new DataView("otherUrls", urls) { private static final long serialVersionUID = 1L; diff --git a/src/main/java/com/gitblit/wicket/panels/SparkleShareInvitePanel.html b/src/main/java/com/gitblit/wicket/panels/SparkleShareInvitePanel.html new file mode 100644 index 00000000..483050c5 --- /dev/null +++ b/src/main/java/com/gitblit/wicket/panels/SparkleShareInvitePanel.html @@ -0,0 +1,18 @@ + + + + + + + + + + + + [access permission] + + + \ No newline at end of file diff --git a/src/main/java/com/gitblit/wicket/panels/SparkleShareInvitePanel.java b/src/main/java/com/gitblit/wicket/panels/SparkleShareInvitePanel.java new file mode 100644 index 00000000..5d7aa589 --- /dev/null +++ b/src/main/java/com/gitblit/wicket/panels/SparkleShareInvitePanel.java @@ -0,0 +1,52 @@ +/* + * Copyright 2013 gitblit.com. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.gitblit.wicket.panels; + +import org.apache.wicket.Component; +import org.apache.wicket.Localizer; +import org.apache.wicket.markup.html.basic.Label; +import org.apache.wicket.markup.html.image.ContextImage; +import org.apache.wicket.markup.html.link.ExternalLink; + +import com.gitblit.Constants.AccessPermission; +import com.gitblit.wicket.WicketUtils; + +public class SparkleShareInvitePanel extends BasePanel { + + private static final long serialVersionUID = 1L; + + public SparkleShareInvitePanel(String wicketId, Localizer localizer, Component parent, String url, AccessPermission ap) { + super(wicketId); + ContextImage star = WicketUtils.newImage("sparkleshareIcon", "star_16x16.png"); + add(star); + add(new ExternalLink("inviteUrl", url)); + String note = localizer.getString("gb.externalAccess", parent); + String permission = ""; + if (ap != null) { + permission = ap.toString(); + if (ap.atLeast(AccessPermission.PUSH)) { + note = localizer.getString("gb.readWriteAccess", parent); + } else if (ap.atLeast(AccessPermission.CLONE)) { + note = localizer.getString("gb.readOnlyAccess", parent); + } else { + note = localizer.getString("gb.viewAccess", parent); + } + } + Label label = new Label("accessPermission", permission); + WicketUtils.setHtmlTooltip(label, note); + add(label); + } +} -- cgit v1.2.3