diff options
author | James Moger <james.moger@gitblit.com> | 2013-05-02 21:44:07 -0400 |
---|---|---|
committer | James Moger <james.moger@gitblit.com> | 2013-05-02 21:44:18 -0400 |
commit | b7502e5c0666154c7378469fd769b3aeb242e949 (patch) | |
tree | b364c36e8d196b4d46ce989ac9776f000e106db9 /src/main/java/com/gitblit/wicket | |
parent | 264ba908941414ea5e750524b2472f7ad0670563 (diff) | |
download | gitblit-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')
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);
+ }
+}
|