summaryrefslogtreecommitdiffstats
path: root/src/main/java/com/gitblit/wicket
diff options
context:
space:
mode:
authorJames Moger <james.moger@gitblit.com>2013-05-02 21:44:07 -0400
committerJames Moger <james.moger@gitblit.com>2013-05-02 21:44:18 -0400
commitb7502e5c0666154c7378469fd769b3aeb242e949 (patch)
treeb364c36e8d196b4d46ce989ac9776f000e106db9 /src/main/java/com/gitblit/wicket
parent264ba908941414ea5e750524b2472f7ad0670563 (diff)
downloadgitblit-b7502e5c0666154c7378469fd769b3aeb242e949.tar.gz
gitblit-b7502e5c0666154c7378469fd769b3aeb242e949.zip
Added SparkleShare invite url panel
This will probably be merged into a refined, single multi-protocol url panel.
Diffstat (limited to 'src/main/java/com/gitblit/wicket')
-rw-r--r--src/main/java/com/gitblit/wicket/GitBlitWebApp.properties5
-rw-r--r--src/main/java/com/gitblit/wicket/pages/BasePage.java29
-rw-r--r--src/main/java/com/gitblit/wicket/pages/SummaryPage.html1
-rw-r--r--src/main/java/com/gitblit/wicket/pages/SummaryPage.java10
-rw-r--r--src/main/java/com/gitblit/wicket/panels/SparkleShareInvitePanel.html18
-rw-r--r--src/main/java/com/gitblit/wicket/panels/SparkleShareInvitePanel.java52
6 files changed, 112 insertions, 3 deletions
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<ProjectModel> getProjectModels() {
final UserModel user = GitBlitWebSession.get().getUser();
List<ProjectModel> 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 @@
<div wicket:id="otherUrls" >
<div wicket:id="otherUrl" style="padding-top:10px"></div>
</div>
+ <div wicket:id="repositorySparkleShareInviteUrl">[repository sparkleshare invite url]</div>
</td>
</tr>
</table>
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<String> urls = new ListDataProvider<String>(repositoryUrls);
DataView<String> otherUrlsView = new DataView<String>("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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.3-strict.dtd"
+ xml:lang="en"
+ lang="en">
+
+<wicket:panel>
+ <span class="repositoryUrlContainer">
+ <span class="repositoryUrlEndCap">
+ <img wicket:id="sparkleshareIcon"></img>
+ </span>
+ <span class="repositoryUrl">
+ <a wicket:id="inviteUrl"><wicket:message key="gb.sparkleshareInvite"></wicket:message></a>
+ </span>
+ <span class="hidden-phone hidden-tablet repositoryUrlEndCap" wicket:id="accessPermission">[access permission]</span>
+ </span>
+</wicket:panel>
+</html> \ 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);
+ }
+}