diff options
Diffstat (limited to 'src')
51 files changed, 642 insertions, 454 deletions
diff --git a/src/com/gitblit/build/BuildSite.java b/src/com/gitblit/build/BuildSite.java index de4f071f..0746a6b7 100644 --- a/src/com/gitblit/build/BuildSite.java +++ b/src/com/gitblit/build/BuildSite.java @@ -91,7 +91,7 @@ public class BuildSite { System.out.println(MessageFormat.format("Generating site from {0} Markdown Docs in {1} ",
markdownFiles.length, sourceFolder.getAbsolutePath()));
- String linkPattern = "<a href=''{0}''>{1}</a>";
+ String linkPattern = "<li><a href=''{0}''>{1}</a></li>";
StringBuilder sb = new StringBuilder();
for (File file : markdownFiles) {
String documentName = getDocumentName(file);
diff --git a/src/com/gitblit/models/FederationModel.java b/src/com/gitblit/models/FederationModel.java index d67ae561..61c8576b 100644 --- a/src/com/gitblit/models/FederationModel.java +++ b/src/com/gitblit/models/FederationModel.java @@ -198,22 +198,7 @@ public class FederationModel implements Serializable, Comparable<FederationModel @Override
public int compareTo(RepositoryStatus o) {
if (status.equals(o.status)) {
- // sort root repositories first, alphabetically
- // then sort grouped repositories, alphabetically
- int s1 = name.indexOf('/');
- int s2 = o.name.indexOf('/');
- if (s1 == -1 && s2 == -1) {
- // neither grouped
- return name.compareTo(o.name);
- } else if (s1 > -1 && s2 > -1) {
- // both grouped
- return name.compareTo(o.name);
- } else if (s1 == -1) {
- return -1;
- } else if (s2 == -1) {
- return 1;
- }
- return 0;
+ return StringUtils.compareRepositoryNames(name, o.name);
}
return status.compareTo(o.status);
}
diff --git a/src/com/gitblit/models/RepositoryModel.java b/src/com/gitblit/models/RepositoryModel.java index e85fd6a5..d70866fb 100644 --- a/src/com/gitblit/models/RepositoryModel.java +++ b/src/com/gitblit/models/RepositoryModel.java @@ -22,6 +22,7 @@ import java.util.List; import com.gitblit.Constants.AccessRestrictionType;
import com.gitblit.Constants.FederationStrategy;
+import com.gitblit.utils.StringUtils;
/**
* RepositoryModel is a serializable model class that represents a Gitblit
@@ -74,6 +75,6 @@ public class RepositoryModel implements Serializable, Comparable<RepositoryModel @Override
public int compareTo(RepositoryModel o) {
- return name.compareTo(o.name);
+ return StringUtils.compareRepositoryNames(name, o.name);
}
}
\ No newline at end of file diff --git a/src/com/gitblit/utils/JGitUtils.java b/src/com/gitblit/utils/JGitUtils.java index bfbc6240..80147d46 100644 --- a/src/com/gitblit/utils/JGitUtils.java +++ b/src/com/gitblit/utils/JGitUtils.java @@ -299,7 +299,7 @@ public class JGitUtils { }
list.addAll(getRepositoryList(repositoriesFolder.getAbsolutePath(), repositoriesFolder,
exportAll, searchSubfolders));
- Collections.sort(list);
+ StringUtils.sortRepositorynames(list);
return list;
}
diff --git a/src/com/gitblit/utils/StringUtils.java b/src/com/gitblit/utils/StringUtils.java index 77d3cbbc..f4e9256f 100644 --- a/src/com/gitblit/utils/StringUtils.java +++ b/src/com/gitblit/utils/StringUtils.java @@ -19,6 +19,8 @@ import java.io.UnsupportedEncodingException; import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
import java.util.List;
import java.util.regex.PatternSyntaxException;
@@ -395,4 +397,44 @@ public class StringUtils { }
return false;
}
+
+ /**
+ * Compare two repository names for proper group sorting.
+ *
+ * @param r1
+ * @param r2
+ * @return
+ */
+ public static int compareRepositoryNames(String r1, String r2) {
+ // sort root repositories first, alphabetically
+ // then sort grouped repositories, alphabetically
+ int s1 = r1.indexOf('/');
+ int s2 = r2.indexOf('/');
+ if (s1 == -1 && s2 == -1) {
+ // neither grouped
+ return r1.compareTo(r2);
+ } else if (s1 > -1 && s2 > -1) {
+ // both grouped
+ return r1.compareTo(r2);
+ } else if (s1 == -1) {
+ return -1;
+ } else if (s2 == -1) {
+ return 1;
+ }
+ return 0;
+ }
+
+ /**
+ * Sort grouped repository names.
+ *
+ * @param list
+ */
+ public static void sortRepositorynames(List<String> list) {
+ Collections.sort(list, new Comparator<String>() {
+ @Override
+ public int compare(String o1, String o2) {
+ return compareRepositoryNames(o1, o2);
+ }
+ });
+ }
}
diff --git a/src/com/gitblit/wicket/AuthorizationStrategy.java b/src/com/gitblit/wicket/AuthorizationStrategy.java index b6b745bd..452215a7 100644 --- a/src/com/gitblit/wicket/AuthorizationStrategy.java +++ b/src/com/gitblit/wicket/AuthorizationStrategy.java @@ -24,7 +24,6 @@ import com.gitblit.GitBlit; import com.gitblit.Keys;
import com.gitblit.models.UserModel;
import com.gitblit.wicket.pages.BasePage;
-import com.gitblit.wicket.pages.LoginPage;
import com.gitblit.wicket.pages.RepositoriesPage;
public class AuthorizationStrategy extends AbstractPageAuthorizationStrategy implements
@@ -36,6 +35,12 @@ public class AuthorizationStrategy extends AbstractPageAuthorizationStrategy imp @SuppressWarnings({ "unchecked", "rawtypes" })
@Override
protected boolean isPageAuthorized(Class pageClass) {
+ if (RepositoriesPage.class.equals(pageClass)) {
+ // allow all requests to get to the RepositoriesPage with its inline
+ // authentication form
+ return true;
+ }
+
if (BasePage.class.isAssignableFrom(pageClass)) {
boolean authenticateView = GitBlit.getBoolean(Keys.web.authenticateViewPages, true);
boolean authenticateAdmin = GitBlit.getBoolean(Keys.web.authenticateAdminPages, true);
@@ -73,12 +78,7 @@ public class AuthorizationStrategy extends AbstractPageAuthorizationStrategy imp @Override
public void onUnauthorizedInstantiation(Component component) {
if (component instanceof BasePage) {
- GitBlitWebSession session = GitBlitWebSession.get();
- if (!session.isLoggedIn()) {
- throw new RestartResponseAtInterceptPageException(LoginPage.class);
- } else {
- throw new RestartResponseAtInterceptPageException(RepositoriesPage.class);
- }
+ throw new RestartResponseAtInterceptPageException(RepositoriesPage.class);
}
}
}
diff --git a/src/com/gitblit/wicket/GitBlitWebApp.java b/src/com/gitblit/wicket/GitBlitWebApp.java index 8c41df07..3edcf6a7 100644 --- a/src/com/gitblit/wicket/GitBlitWebApp.java +++ b/src/com/gitblit/wicket/GitBlitWebApp.java @@ -32,17 +32,15 @@ import com.gitblit.wicket.pages.BranchesPage; import com.gitblit.wicket.pages.CommitDiffPage;
import com.gitblit.wicket.pages.CommitPage;
import com.gitblit.wicket.pages.DocsPage;
-import com.gitblit.wicket.pages.ReviewProposalPage;
import com.gitblit.wicket.pages.FederationRegistrationPage;
import com.gitblit.wicket.pages.HistoryPage;
import com.gitblit.wicket.pages.LogPage;
-import com.gitblit.wicket.pages.LoginPage;
-import com.gitblit.wicket.pages.LogoutPage;
import com.gitblit.wicket.pages.MarkdownPage;
import com.gitblit.wicket.pages.MetricsPage;
import com.gitblit.wicket.pages.PatchPage;
import com.gitblit.wicket.pages.RawPage;
import com.gitblit.wicket.pages.RepositoriesPage;
+import com.gitblit.wicket.pages.ReviewProposalPage;
import com.gitblit.wicket.pages.SearchPage;
import com.gitblit.wicket.pages.SummaryPage;
import com.gitblit.wicket.pages.TagPage;
@@ -100,12 +98,6 @@ public class GitBlitWebApp extends WebApplication { // federation urls
mount("/proposal", ReviewProposalPage.class, "t");
mount("/registration", FederationRegistrationPage.class, "u", "n");
-
- // setup login/logout urls, if we are using authentication
- if (useAuthentication) {
- mount("/login", LoginPage.class);
- mount("/logout", LogoutPage.class);
- }
}
private void mount(String location, Class<? extends WebPage> clazz, String... parameters) {
diff --git a/src/com/gitblit/wicket/GitBlitWebApp.properties b/src/com/gitblit/wicket/GitBlitWebApp.properties index f279612d..2aa51079 100644 --- a/src/com/gitblit/wicket/GitBlitWebApp.properties +++ b/src/com/gitblit/wicket/GitBlitWebApp.properties @@ -66,7 +66,7 @@ gb.filesRenamed = {0} files renamed gb.missingUsername = Missing Username
gb.edit = edit
gb.searchTypeTooltip = Select Search Type
-gb.searchTooltip = Search Gitblit
+gb.searchTooltip = Search {0}
gb.delete = delete
gb.docs = docs
gb.accessRestriction = access restriction
@@ -138,4 +138,6 @@ gb.federationSets = federation sets gb.message = message
gb.myUrlDescription = the publicly accessible url for your Gitblit instance
gb.destinationUrl = send to
-gb.destinationUrlDescription = the url of the Gitblit instance to send your proposal
\ No newline at end of file +gb.destinationUrlDescription = the url of the Gitblit instance to send your proposal
+gb.users = users
+gb.federation = federation
\ No newline at end of file diff --git a/src/com/gitblit/wicket/WicketUtils.java b/src/com/gitblit/wicket/WicketUtils.java index 36f74a15..e5b7f697 100644 --- a/src/com/gitblit/wicket/WicketUtils.java +++ b/src/com/gitblit/wicket/WicketUtils.java @@ -88,13 +88,13 @@ public class WicketUtils { public static void setTicketCssClass(Component container, String state) {
String css = null;
if (state.equals("open")) {
- css = "bug_open";
+ css = "label important";
} else if (state.equals("hold")) {
- css = "bug_hold";
+ css = "label warning";
} else if (state.equals("resolved")) {
- css = "bug_resolved";
+ css = "label success";
} else if (state.equals("invalid")) {
- css = "bug_invalid";
+ css = "label";
}
if (css != null) {
setCssClass(container, css);
@@ -102,7 +102,7 @@ public class WicketUtils { }
public static void setAlternatingBackground(Component c, int i) {
- String clazz = i % 2 == 0 ? "dark" : "light";
+ String clazz = i % 2 == 0 ? "light" : "dark";
setCssClass(c, clazz);
}
diff --git a/src/com/gitblit/wicket/pages/BasePage.html b/src/com/gitblit/wicket/pages/BasePage.html index aaf3a353..a089e2a9 100644 --- a/src/com/gitblit/wicket/pages/BasePage.html +++ b/src/com/gitblit/wicket/pages/BasePage.html @@ -7,20 +7,14 @@ <!-- Head -->
<wicket:head>
<title wicket:id="title">[page title]</title>
- <link rel="stylesheet" type="text/css" href="gitblit.css"/>
+ <link rel="stylesheet" href="bootstrap.130.css"/>
+ <link rel="stylesheet" type="text/css" href="bootstrap.gb.css"/>
<link rel="icon" href="gitblt-favicon.png" type="image/png" />
</wicket:head>
- <body>
- <!-- page header -->
- <div class="page_header">
- <a title="gitblit homepage" href="http://gitblit.com/">
- <img src="gitblt_25.png" width="79" height="25" alt="gitblit" class="logo"/>
- </a>
- <span>
- <span wicket:id="siteName">[site name]</span> / <span wicket:id="repositoryName">[repository name]</span> <span wicket:id="pageName">[page name]</span>
- </span>
- </div>
+ <body style="padding-top: 40px;">
+ <div class="container">
+ <div class="content">
<!-- page content -->
<wicket:child />
@@ -28,10 +22,14 @@ <!-- page footer -->
<div class="page_footer">
<div style="float:right">
- <span wicket:id="gbVersion"></span>
+ <a title="gitblit homepage" href="http://gitblit.com/">
+ <span wicket:id="gbVersion"></span>
+ </a>
</div>
<div wicket:id="userPanel">[user panel]</div>
</div>
+ </div>
+ </div>
</body>
<!-- user fragment -->
diff --git a/src/com/gitblit/wicket/pages/BasePage.java b/src/com/gitblit/wicket/pages/BasePage.java index 0169c8e3..d31979dd 100644 --- a/src/com/gitblit/wicket/pages/BasePage.java +++ b/src/com/gitblit/wicket/pages/BasePage.java @@ -29,6 +29,7 @@ import org.apache.wicket.RestartResponseException; import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.link.BookmarkablePageLink;
+import org.apache.wicket.markup.html.link.ExternalLink;
import org.apache.wicket.markup.html.panel.FeedbackPanel;
import org.apache.wicket.markup.html.panel.Fragment;
import org.apache.wicket.protocol.http.WebRequest;
@@ -87,21 +88,15 @@ public abstract class BasePage extends WebPage { }
protected void setupPage(String repositoryName, String pageName) {
-
if (repositoryName != null && repositoryName.trim().length() > 0) {
add(new Label("title", getServerName() + " - " + repositoryName));
} else {
add(new Label("title", getServerName()));
}
- // header
- String siteName = GitBlit.getString(Keys.web.siteName, Constants.NAME);
- if (siteName == null || siteName.trim().length() == 0) {
- siteName = Constants.NAME;
- }
- add(new LinkPanel("siteName", null, siteName, RepositoriesPage.class, null));
- add(new LinkPanel("repositoryName", null, repositoryName, SummaryPage.class,
- WicketUtils.newRepositoryParameter(repositoryName)));
- add(new Label("pageName", pageName));
+
+ ExternalLink rootLink = new ExternalLink("rootLink", urlFor(RepositoriesPage.class, null).toString());
+ WicketUtils.setHtmlTooltip(rootLink, GitBlit.getString(Keys.web.siteName, Constants.NAME));
+ add(rootLink);
// Feedback panel for info, warning, and non-fatal error messages
add(new FeedbackPanel("feedback"));
@@ -200,7 +195,7 @@ public abstract class BasePage extends WebPage { if (GitBlitWebSession.get().isLoggedIn()) {
error(message, true);
} else {
- throw new RestartResponseAtInterceptPageException(LoginPage.class);
+ throw new RestartResponseAtInterceptPageException(RepositoriesPage.class);
}
}
@@ -226,8 +221,7 @@ public abstract class BasePage extends WebPage { } else {
// login
add(new Label("username").setVisible(false));
- add(new LinkPanel("loginLink", null, markupProvider.getString("gb.login"),
- LoginPage.class));
+ add(new Label("loginLink").setVisible(false));
add(new Label("separator").setVisible(false));
add(new Label("changePasswordLink").setVisible(false));
}
diff --git a/src/com/gitblit/wicket/pages/BlamePage.html b/src/com/gitblit/wicket/pages/BlamePage.html index 2e20c189..ccbfcecb 100644 --- a/src/com/gitblit/wicket/pages/BlamePage.html +++ b/src/com/gitblit/wicket/pages/BlamePage.html @@ -19,12 +19,12 @@ <div wicket:id="breadcrumbs">[breadcrumbs]</div>
<!-- blame content -->
- <table class="annotated" style="border-top: 0px; margin-bottom:5px;">
+ <table class="annotated" style="margin-bottom:5px;">
<tbody>
<tr>
<th>Commit</th>
<th>Line</th>
- <th>Data</th>
+ <th>Content</th>
</tr>
<tr wicket:id="annotation">
<td><span class="sha1" wicket:id="commit"></span></td>
diff --git a/src/com/gitblit/wicket/pages/ChangePasswordPage.html b/src/com/gitblit/wicket/pages/ChangePasswordPage.html index 031352eb..938e0eca 100644 --- a/src/com/gitblit/wicket/pages/ChangePasswordPage.html +++ b/src/com/gitblit/wicket/pages/ChangePasswordPage.html @@ -4,20 +4,9 @@ xml:lang="en"
lang="en">
- <!-- Head with Wicket-controlled resources in this package -->
- <wicket:head>
- <title wicket:id="title">[page title]</title>
- <link rel="stylesheet" type="text/css" href="gitblit.css"/>
- <link rel="shortcut icon" href="gitblt-favicon.png" type="image/png" />
- </wicket:head>
-
+ <wicket:extend>
<body onload="document.getElementById('password').focus();">
<div>
- <div style="padding-top: 10px;text-align:center;">
- <img src="gitblt_25.png" alt="Gitblit"/><br/>
- <div style="padding-top:30px;font-weight:bold;" wicket:id="name"></div>
- </div>
- <p/>
<form style="text-align:center;" wicket:id="passwordForm">
<center>
<table class="plain">
@@ -30,11 +19,11 @@ <td class="edit"><input type="password" wicket:id="confirmPassword" size="30" tabindex="2" /></td>
</tr>
</table>
- <input type="submit" wicket:message="value:gb.save" wicket:id="save" tabindex="3" />
- <input type="submit" wicket:message="value:gb.cancel" wicket:id="cancel" tabindex="4" />
- <div style="padding-top:10px;" wicket:id="feedback"></div>
+ <input class="btn" type="submit" wicket:message="value:gb.cancel" wicket:id="cancel" tabindex="3" />
+ <input class="btn primary" type="submit" wicket:message="value:gb.save" wicket:id="save" tabindex="4" />
</center>
</form>
</div>
</body>
+ </wicket:extend>
</html>
\ No newline at end of file diff --git a/src/com/gitblit/wicket/pages/ChangePasswordPage.java b/src/com/gitblit/wicket/pages/ChangePasswordPage.java index 054b3430..fec24144 100644 --- a/src/com/gitblit/wicket/pages/ChangePasswordPage.java +++ b/src/com/gitblit/wicket/pages/ChangePasswordPage.java @@ -18,17 +18,13 @@ package com.gitblit.wicket.pages; import java.text.MessageFormat;
import org.apache.wicket.RestartResponseException;
-import org.apache.wicket.markup.html.WebPage;
-import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.Button;
import org.apache.wicket.markup.html.form.PasswordTextField;
import org.apache.wicket.markup.html.form.StatelessForm;
-import org.apache.wicket.markup.html.panel.FeedbackPanel;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.protocol.http.WebResponse;
-import com.gitblit.Constants;
import com.gitblit.GitBlit;
import com.gitblit.GitBlitException;
import com.gitblit.Keys;
@@ -36,7 +32,7 @@ import com.gitblit.models.UserModel; import com.gitblit.utils.StringUtils;
import com.gitblit.wicket.GitBlitWebSession;
-public class ChangePasswordPage extends WebPage {
+public class ChangePasswordPage extends RootSubPage {
IModel<String> password = new Model<String>("");
IModel<String> confirmPassword = new Model<String>("");
@@ -54,10 +50,7 @@ public class ChangePasswordPage extends WebPage { // no authentication enabled
throw new RestartResponseException(getApplication().getHomePage());
}
-
- add(new Label("title", GitBlit.getString(Keys.web.siteName, Constants.NAME)));
- add(new Label("name", getString("gb.changePassword") + ": "
- + GitBlitWebSession.get().getUser().username));
+ setupPage(getString("gb.changePassword"), GitBlitWebSession.get().getUser().username);
StatelessForm<Void> form = new StatelessForm<Void>("passwordForm") {
@@ -115,7 +108,6 @@ public class ChangePasswordPage extends WebPage { confirmPassword);
confirmPasswordField.setResetPassword(false);
form.add(confirmPasswordField);
- form.add(new FeedbackPanel("feedback"));
form.add(new Button("save"));
Button cancel = new Button("cancel") {
diff --git a/src/com/gitblit/wicket/pages/EditRepositoryPage.html b/src/com/gitblit/wicket/pages/EditRepositoryPage.html index c33184da..7f09f75c 100644 --- a/src/com/gitblit/wicket/pages/EditRepositoryPage.html +++ b/src/com/gitblit/wicket/pages/EditRepositoryPage.html @@ -6,35 +6,29 @@ <wicket:extend>
<body onload="document.getElementById('name').focus();">
- <!-- Push content down to preserve header image -->
- <div style="padding-top:20px"></div>
-
- <div style="text-align:center;" wicket:id="feedback">[Feedback Panel]</div>
-
<!-- Repository Table -->
<form wicket:id="editForm">
<table class="plain">
<tbody>
- <tr><th><wicket:message key="gb.name"></wicket:message></th><td class="edit"><input type="text" wicket:id="name" id="name" size="40" tabindex="1" /> <i><wicket:message key="gb.nameDescription"></wicket:message></i></td></tr>
- <tr><th><wicket:message key="gb.description"></wicket:message></th><td class="edit"><input type="text" wicket:id="description" size="40" tabindex="2" /></td></tr>
- <tr><th><wicket:message key="gb.origin"></wicket:message></th><td class="edit"><input type="text" wicket:id="origin" size="80" tabindex="3" /></td></tr>
+ <tr><th><wicket:message key="gb.name"></wicket:message></th><td class="edit"><input class="span6" type="text" wicket:id="name" id="name" size="40" tabindex="1" /> <i><wicket:message key="gb.nameDescription"></wicket:message></i></td></tr>
+ <tr><th><wicket:message key="gb.description"></wicket:message></th><td class="edit"><input class="span6" type="text" wicket:id="description" size="40" tabindex="2" /></td></tr>
+ <tr><th><wicket:message key="gb.origin"></wicket:message></th><td class="edit"><input class="span7" type="text" wicket:id="origin" size="80" tabindex="3" /></td></tr>
<tr><th><wicket:message key="gb.owner"></wicket:message></th><td class="edit"><select wicket:id="owner" tabindex="4" /> <i><wicket:message key="gb.ownerDescription"></wicket:message></i></td></tr>
<tr><th><wicket:message key="gb.enableTickets"></wicket:message></th><td class="edit"><input type="checkbox" wicket:id="useTickets" tabindex="5" /> <i><wicket:message key="gb.useTicketsDescription"></wicket:message></i></td></tr>
<tr><th><wicket:message key="gb.enableDocs"></wicket:message></th><td class="edit"><input type="checkbox" wicket:id="useDocs" tabindex="6" /> <i><wicket:message key="gb.useDocsDescription"></wicket:message></i></td></tr>
<tr><th><wicket:message key="gb.showRemoteBranches"></wicket:message></th><td class="edit"><input type="checkbox" wicket:id="showRemoteBranches" tabindex="7" /> <i><wicket:message key="gb.showRemoteBranchesDescription"></wicket:message></i></td></tr>
<tr><th><wicket:message key="gb.showReadme"></wicket:message></th><td class="edit"><input type="checkbox" wicket:id="showReadme" tabindex="8" /> <i><wicket:message key="gb.showReadmeDescription"></wicket:message></i></td></tr>
<tr><th><wicket:message key="gb.isFrozen"></wicket:message></th><td class="edit"><input type="checkbox" wicket:id="isFrozen" tabindex="9" /> <i><wicket:message key="gb.isFrozenDescription"></wicket:message></i></td></tr>
- <tr><td style="padding-top:10px;" colspan="2"><hr></hr></td></tr>
- <tr><th><wicket:message key="gb.accessRestriction"></wicket:message></th><td class="edit"><select wicket:id="accessRestriction" tabindex="10" /></td></tr>
+ <tr><td colspan="2"><hr></hr></td></tr>
+ <tr><th><wicket:message key="gb.accessRestriction"></wicket:message></th><td class="edit"><select class="span6" wicket:id="accessRestriction" tabindex="10" /></td></tr>
<tr><th style="vertical-align: top;"><wicket:message key="gb.permittedUsers"></wicket:message></th><td style="padding:2px;"><span wicket:id="users"></span></td></tr>
- <tr><td style="padding-top:10px;" colspan="2"><hr></hr></td></tr>
- <tr><th><wicket:message key="gb.federationStrategy"></wicket:message></th><td class="edit"><select wicket:id="federationStrategy" tabindex="11" /></td></tr>
- <tr><th style="vertical-align: top;"><wicket:message key="gb.federationSets"></wicket:message></th><td style="padding:2px;"><span wicket:id="federationSets"></span></td></tr>
- <tr><th></th><td class="editButton"><input type="submit" value="Save" wicket:message="value:gb.save" wicket:id="save" tabindex="12" /> <input type="submit" value="Cancel" wicket:message="value:gb.cancel" wicket:id="cancel" tabindex="13" /></td></tr>
+ <tr><td colspan="2"><hr></hr></td></tr>
+ <tr><th><wicket:message key="gb.federationStrategy"></wicket:message></th><td class="edit"><select class="span6" wicket:id="federationStrategy" tabindex="11" /></td></tr>
+ <tr><th style="vertical-align: top;"><wicket:message key="gb.federationSets"></wicket:message></th><td style="padding:2px;"><span wicket:id="federationSets"></span></td></tr>
+ <tr><th></th><td class="editButton"><input class="btn" type="submit" value="Cancel" wicket:message="value:gb.cancel" wicket:id="cancel" tabindex="12" /> <input class="btn primary" type="submit" value="Save" wicket:message="value:gb.save" wicket:id="save" tabindex="13" /> </td></tr>
</tbody>
</table>
</form>
-
</body>
</wicket:extend>
</html>
\ No newline at end of file diff --git a/src/com/gitblit/wicket/pages/EditRepositoryPage.java b/src/com/gitblit/wicket/pages/EditRepositoryPage.java index 7349ca5f..2afe014c 100644 --- a/src/com/gitblit/wicket/pages/EditRepositoryPage.java +++ b/src/com/gitblit/wicket/pages/EditRepositoryPage.java @@ -47,7 +47,7 @@ import com.gitblit.utils.StringUtils; import com.gitblit.wicket.GitBlitWebSession;
import com.gitblit.wicket.WicketUtils;
-public class EditRepositoryPage extends BasePage {
+public class EditRepositoryPage extends RootSubPage {
private final boolean isCreate;
@@ -76,15 +76,16 @@ public class EditRepositoryPage extends BasePage { List<String> federationSets = new ArrayList<String>();
List<String> repositoryUsers = new ArrayList<String>();
if (isCreate) {
- super.setupPage("", getString("gb.newRepository"));
+ super.setupPage(getString("gb.newRepository"), "");
} else {
- super.setupPage("", getString("gb.edit"));
+ super.setupPage(getString("gb.edit"), repositoryModel.name);
if (repositoryModel.accessRestriction.exceeds(AccessRestrictionType.NONE)) {
repositoryUsers.addAll(GitBlit.self().getRepositoryUsers(repositoryModel));
Collections.sort(repositoryUsers);
}
federationSets.addAll(repositoryModel.federationSets);
- }
+ }
+
final String oldName = repositoryModel.name;
// users palette
diff --git a/src/com/gitblit/wicket/pages/EditUserPage.html b/src/com/gitblit/wicket/pages/EditUserPage.html index d36bf5a6..ceda3cbf 100644 --- a/src/com/gitblit/wicket/pages/EditUserPage.html +++ b/src/com/gitblit/wicket/pages/EditUserPage.html @@ -6,12 +6,7 @@ <wicket:extend>
<body onload="document.getElementById('username').focus();">
- <!-- Push content down to preserve header image -->
- <div style="padding-top:20px"></div>
-
- <div style="text-align:center;" wicket:id="feedback">[Feedback Panel]</div>
-
- <!-- Repository Table -->
+ <!-- User Table -->
<form wicket:id="editForm">
<table class="plain">
<tbody>
@@ -21,7 +16,7 @@ <tr><th><wicket:message key="gb.canAdmin"></wicket:message></th><td class="edit"><input type="checkbox" wicket:id="canAdmin" tabindex="6" /> <i><wicket:message key="gb.canAdminDescription"></wicket:message></i></td></tr>
<tr><th><wicket:message key="gb.excludeFromFederation"></wicket:message></th><td class="edit"><input type="checkbox" wicket:id="excludeFromFederation" tabindex="7" /> <i><wicket:message key="gb.excludeFromFederationDescription"></wicket:message></i></td></tr>
<tr><th style="vertical-align: top;"><wicket:message key="gb.restrictedRepositories"></wicket:message></th><td style="padding:2px;"><span wicket:id="repositories"></span></td></tr>
- <tr><th></th><td class="editButton"><input type="submit" value="Save" wicket:message="value:gb.save" wicket:id="save" tabindex="8" /> <input type="submit" value="Cancel" wicket:message="value:gb.cancel" wicket:id="cancel" tabindex="9" /></td></tr>
+ <tr><th></th><td class="editButton"><input class="btn" type="submit" value="Cancel" wicket:message="value:gb.cancel" wicket:id="cancel" tabindex="8" /> <input class="btn primary" type="submit" value="Save" wicket:message="value:gb.save" wicket:id="save" tabindex="9" /></td></tr>
</tbody>
</table>
</form>
diff --git a/src/com/gitblit/wicket/pages/EditUserPage.java b/src/com/gitblit/wicket/pages/EditUserPage.java index a3589117..78e94614 100644 --- a/src/com/gitblit/wicket/pages/EditUserPage.java +++ b/src/com/gitblit/wicket/pages/EditUserPage.java @@ -44,7 +44,7 @@ import com.gitblit.wicket.RequiresAdminRole; import com.gitblit.wicket.WicketUtils;
@RequiresAdminRole
-public class EditUserPage extends BasePage {
+public class EditUserPage extends RootSubPage {
private final boolean isCreate;
@@ -66,10 +66,11 @@ public class EditUserPage extends BasePage { protected void setupPage(final UserModel userModel) {
if (isCreate) {
- super.setupPage("", getString("gb.newUser"));
+ super.setupPage(getString("gb.newUser"), "");
} else {
- super.setupPage("", getString("gb.edit"));
+ super.setupPage(getString("gb.edit"), userModel.username);
}
+
final Model<String> confirmPassword = new Model<String>(
StringUtils.isEmpty(userModel.password) ? "" : userModel.password);
CompoundPropertyModel<UserModel> model = new CompoundPropertyModel<UserModel>(userModel);
@@ -156,8 +157,8 @@ public class EditUserPage extends BasePage { userModel.username));
setResponsePage(EditUserPage.class);
} else {
- // back to home
- setResponsePage(RepositoriesPage.class);
+ // back to users page
+ setResponsePage(UsersPage.class);
}
}
};
@@ -181,7 +182,7 @@ public class EditUserPage extends BasePage { @Override
public void onSubmit() {
- setResponsePage(RepositoriesPage.class);
+ setResponsePage(UsersPage.class);
}
};
cancel.setDefaultFormProcessing(false);
diff --git a/src/com/gitblit/wicket/pages/FederationPage.html b/src/com/gitblit/wicket/pages/FederationPage.html new file mode 100644 index 00000000..bb39d345 --- /dev/null +++ b/src/com/gitblit/wicket/pages/FederationPage.html @@ -0,0 +1,17 @@ +<!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">
+<body>
+<wicket:extend>
+
+ <div wicket:id="federationTokensPanel">[federation tokens panel]</div>
+
+ <div style="padding-top: 10px;" wicket:id="federationProposalsPanel">[federation proposals panel]</div>
+
+ <div style="padding-top: 10px;" wicket:id="federationRegistrationsPanel">[federation registrations panel]</div>
+
+</wicket:extend>
+</body>
+</html>
\ No newline at end of file diff --git a/src/com/gitblit/wicket/pages/FederationPage.java b/src/com/gitblit/wicket/pages/FederationPage.java new file mode 100644 index 00000000..1f98c172 --- /dev/null +++ b/src/com/gitblit/wicket/pages/FederationPage.java @@ -0,0 +1,52 @@ +/*
+ * Copyright 2011 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.pages;
+
+import com.gitblit.GitBlit;
+import com.gitblit.Keys;
+import com.gitblit.wicket.panels.FederationProposalsPanel;
+import com.gitblit.wicket.panels.FederationRegistrationsPanel;
+import com.gitblit.wicket.panels.FederationTokensPanel;
+
+public class FederationPage extends RootPage {
+
+ public FederationPage() {
+ super();
+ setupPage("", "");
+
+ boolean showFederation = showAdmin && GitBlit.canFederate();
+ add(new FederationTokensPanel("federationTokensPanel", showFederation)
+ .setVisible(showFederation));
+ FederationProposalsPanel proposalsPanel = new FederationProposalsPanel(
+ "federationProposalsPanel");
+ if (showFederation) {
+ proposalsPanel.hideIfEmpty();
+ } else {
+ proposalsPanel.setVisible(false);
+ }
+
+ boolean showRegistrations = GitBlit.getBoolean(Keys.web.showFederationRegistrations, false);
+ FederationRegistrationsPanel registrationsPanel = new FederationRegistrationsPanel(
+ "federationRegistrationsPanel");
+ if (showAdmin || showRegistrations) {
+ registrationsPanel.hideIfEmpty();
+ } else {
+ registrationsPanel.setVisible(false);
+ }
+ add(proposalsPanel);
+ add(registrationsPanel);
+ }
+}
diff --git a/src/com/gitblit/wicket/pages/FederationRegistrationPage.html b/src/com/gitblit/wicket/pages/FederationRegistrationPage.html index c7c5bdef..de30cf34 100644 --- a/src/com/gitblit/wicket/pages/FederationRegistrationPage.html +++ b/src/com/gitblit/wicket/pages/FederationRegistrationPage.html @@ -6,11 +6,6 @@ <body>
<wicket:extend>
-
- <div style="padding-top:20px"></div>
-
- <div style="text-align:center;" wicket:id="feedback">[Feedback Panel]</div>
-
<!-- registration info -->
<table class="plain">
<tr><th><wicket:message key="gb.url">url</wicket:message></th><td><img style="border:0px;vertical-align:middle;" wicket:id="typeIcon" /> <span wicket:id="url">[url]</span></td></tr>
diff --git a/src/com/gitblit/wicket/pages/FederationRegistrationPage.java b/src/com/gitblit/wicket/pages/FederationRegistrationPage.java index 00cc2ebb..e480eb76 100644 --- a/src/com/gitblit/wicket/pages/FederationRegistrationPage.java +++ b/src/com/gitblit/wicket/pages/FederationRegistrationPage.java @@ -25,24 +25,15 @@ import org.apache.wicket.markup.repeater.data.DataView; import org.apache.wicket.markup.repeater.data.ListDataProvider;
import com.gitblit.GitBlit;
-import com.gitblit.Keys;
import com.gitblit.models.FederationModel;
import com.gitblit.models.FederationModel.RepositoryStatus;
-import com.gitblit.wicket.GitBlitWebSession;
import com.gitblit.wicket.WicketUtils;
-public class FederationRegistrationPage extends BasePage {
+public class FederationRegistrationPage extends RootSubPage {
public FederationRegistrationPage(PageParameters params) {
super(params);
-
- final boolean showAdmin;
- if (GitBlit.getBoolean(Keys.web.authenticateAdminPages, true)) {
- boolean allowAdmin = GitBlit.getBoolean(Keys.web.allowAdministration, false);
- showAdmin = allowAdmin && GitBlitWebSession.get().canAdmin();
- } else {
- showAdmin = false;
- }
+
setStatelessHint(true);
String url = WicketUtils.getUrlParameter(params);
@@ -53,8 +44,8 @@ public class FederationRegistrationPage extends BasePage { error("Could not find federation registration!", true);
}
- setupPage("", registration.isResultData() ? getString("gb.federationResults")
- : getString("gb.federationRegistration"));
+ setupPage(registration.isResultData() ? getString("gb.federationResults")
+ : getString("gb.federationRegistration"), registration.url);
add(new Label("url", registration.url));
add(WicketUtils.getRegistrationImage("typeIcon", registration, this));
diff --git a/src/com/gitblit/wicket/pages/LoginPage.html b/src/com/gitblit/wicket/pages/LoginPage.html deleted file mode 100644 index 5f9b779f..00000000 --- a/src/com/gitblit/wicket/pages/LoginPage.html +++ /dev/null @@ -1,36 +0,0 @@ -<!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">
-
- <!-- Head with Wicket-controlled resources in this package -->
- <wicket:head>
- <title wicket:id="title">[page title]</title>
- <link rel="stylesheet" type="text/css" href="gitblit.css"/>
- <link rel="shortcut icon" href="gitblt-favicon.png" type="image/png" />
- </wicket:head>
-
- <body onload="document.getElementById('username').focus();">
- <div>
- <div style="padding-top: 10px;text-align:center;">
- <img src="gitblt_25.png" alt="Gitblit"/><br/>
- <div style="padding-top:30px;font-weight:bold;" wicket:id="name">[name]</div>
- </div>
-
- <form style="text-align:center;" wicket:id="loginForm">
- <div>
- <p/>
- <wicket:message key="gb.username"></wicket:message>
- <input type="text" id="username" wicket:id="username" value=""/>
- <p/>
- <wicket:message key="gb.password"></wicket:message>
- <input type="password" wicket:id="password" value=""/>
- <p/>
- <input type="submit" value="Login" wicket:message="value:gb.login" />
- <div style="padding-top:10px;" wicket:id="feedback"></div>
- </div>
- </form>
- </div>
- </body>
-</html>
\ No newline at end of file diff --git a/src/com/gitblit/wicket/pages/LoginPage.java b/src/com/gitblit/wicket/pages/LoginPage.java deleted file mode 100644 index 45e1e2dc..00000000 --- a/src/com/gitblit/wicket/pages/LoginPage.java +++ /dev/null @@ -1,118 +0,0 @@ -/*
- * Copyright 2011 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.pages;
-
-import javax.servlet.http.Cookie;
-
-import org.apache.wicket.PageParameters;
-import org.apache.wicket.RestartResponseException;
-import org.apache.wicket.markup.html.WebPage;
-import org.apache.wicket.markup.html.basic.Label;
-import org.apache.wicket.markup.html.form.PasswordTextField;
-import org.apache.wicket.markup.html.form.StatelessForm;
-import org.apache.wicket.markup.html.form.TextField;
-import org.apache.wicket.markup.html.panel.FeedbackPanel;
-import org.apache.wicket.model.IModel;
-import org.apache.wicket.model.Model;
-import org.apache.wicket.protocol.http.WebRequest;
-import org.apache.wicket.protocol.http.WebResponse;
-
-import com.gitblit.Constants;
-import com.gitblit.GitBlit;
-import com.gitblit.Keys;
-import com.gitblit.models.UserModel;
-import com.gitblit.wicket.GitBlitWebSession;
-
-public class LoginPage extends WebPage {
-
- IModel<String> username = new Model<String>("");
- IModel<String> password = new Model<String>("");
-
- public LoginPage(PageParameters params) {
- super(params);
-
- // If we are already logged in because user directly accessed
- // the login url, redirect to the home page
- if (GitBlitWebSession.get().isLoggedIn()) {
- throw new RestartResponseException(getApplication().getHomePage());
- }
-
- if (GitBlit.getBoolean(Keys.web.allowCookieAuthentication, false)) {
- loginByCookie();
- }
-
- add(new Label("title", GitBlit.getString(Keys.web.siteName, Constants.NAME)));
- add(new Label("name", GitBlit.getString(Keys.web.siteName, Constants.NAME)));
-
- StatelessForm<Void> loginForm = new StatelessForm<Void>("loginForm") {
-
- private static final long serialVersionUID = 1L;
-
- @Override
- public void onSubmit() {
- String username = LoginPage.this.username.getObject();
- char[] password = LoginPage.this.password.getObject().toCharArray();
-
- UserModel user = GitBlit.self().authenticate(username, password);
- if (user == null) {
- error("Invalid username or password!");
- } else if (user.username.equals(Constants.FEDERATION_USER)) {
- // disallow the federation user from logging in via the
- // web ui
- error("Invalid username or password!");
- user = null;
- } else {
- loginUser(user);
- }
- }
- };
- loginForm.add(new TextField<String>("username", username));
- loginForm.add(new PasswordTextField("password", password));
- loginForm.add(new FeedbackPanel("feedback"));
- add(loginForm);
- }
-
- private void loginByCookie() {
- UserModel user = null;
-
- // Grab cookie from Browser Session
- Cookie[] cookies = ((WebRequest) getRequestCycle().getRequest()).getCookies();
- if (cookies != null && cookies.length > 0) {
- user = GitBlit.self().authenticate(cookies);
- }
-
- // Login the user
- loginUser(user);
- }
-
- private void loginUser(UserModel user) {
- if (user != null) {
- // Set the user into the session
- GitBlitWebSession.get().setUser(user);
-
- // Set Cookie
- if (GitBlit.getBoolean(Keys.web.allowCookieAuthentication, false)) {
- WebResponse response = (WebResponse) getRequestCycle().getResponse();
- GitBlit.self().setCookie(response, user);
- }
-
- if (!continueToOriginalDestination()) {
- // Redirect to home page
- setResponsePage(getApplication().getHomePage());
- }
- }
- }
-}
diff --git a/src/com/gitblit/wicket/pages/MetricsPage.java b/src/com/gitblit/wicket/pages/MetricsPage.java index 23dcd8ab..41c605cb 100644 --- a/src/com/gitblit/wicket/pages/MetricsPage.java +++ b/src/com/gitblit/wicket/pages/MetricsPage.java @@ -68,7 +68,7 @@ public class MetricsPage extends RepositoryPage { if ((metrics != null) && (metrics.size() > 0)) {
IChartData data = WicketUtils.getChartData(metrics);
- ChartProvider provider = new ChartProvider(new Dimension(500, 100), ChartType.LINE,
+ ChartProvider provider = new ChartProvider(new Dimension(400, 100), ChartType.LINE,
data);
ChartAxis dateAxis = new ChartAxis(ChartAxisType.BOTTOM);
dateAxis.setLabels(new String[] { metrics.get(0).name,
@@ -93,7 +93,7 @@ public class MetricsPage extends RepositoryPage { if ((metrics != null) && (metrics.size() > 0)) {
IChartData data = WicketUtils.getChartData(metrics);
- ChartProvider provider = new ChartProvider(new Dimension(500, 100),
+ ChartProvider provider = new ChartProvider(new Dimension(400, 100),
ChartType.BAR_VERTICAL_SET, data);
ChartAxis dateAxis = new ChartAxis(ChartAxisType.BOTTOM);
List<String> labels = new ArrayList<String>();
diff --git a/src/com/gitblit/wicket/pages/RepositoriesPage.html b/src/com/gitblit/wicket/pages/RepositoriesPage.html index a0c58c9e..c883099c 100644 --- a/src/com/gitblit/wicket/pages/RepositoriesPage.html +++ b/src/com/gitblit/wicket/pages/RepositoriesPage.html @@ -9,23 +9,9 @@ <body>
<wicket:extend>
- <!-- Filler div -->
- <div style="padding-top:18px;"></div>
-
- <div style="text-align:center;padding-bottom:5px;" wicket:id="feedback">[Feedback Panel]</div>
-
- <div class="markdown" style="margin-top:-0.5em;padding-bottom:5px;" wicket:id="repositoriesMessage">[repositories message]</div>
+ <div class="markdown" style="margin-top:-1em;padding-bottom:5px;" wicket:id="repositoriesMessage">[repositories message]</div>
<div wicket:id="repositoriesPanel">[repositories panel]</div>
-
- <div style="padding-top: 10px;"wicket:id="usersPanel">[users panel]</div>
-
- <div style="padding-top: 10px;"wicket:id="federationTokensPanel">[federation tokens panel]</div>
-
- <div style="padding-top: 10px;"wicket:id="federationProposalsPanel">[federation proposals panel]</div>
-
- <div style="padding-top: 10px;"wicket:id="federationRegistrationsPanel">[federation registrations panel]</div>
-
</wicket:extend>
</body>
</html>
\ No newline at end of file diff --git a/src/com/gitblit/wicket/pages/RepositoriesPage.java b/src/com/gitblit/wicket/pages/RepositoriesPage.java index 619d42ed..d5a21a7a 100644 --- a/src/com/gitblit/wicket/pages/RepositoriesPage.java +++ b/src/com/gitblit/wicket/pages/RepositoriesPage.java @@ -31,66 +31,48 @@ import com.gitblit.utils.MarkdownUtils; import com.gitblit.utils.StringUtils;
import com.gitblit.wicket.GitBlitWebSession;
import com.gitblit.wicket.WicketUtils;
-import com.gitblit.wicket.panels.FederationProposalsPanel;
-import com.gitblit.wicket.panels.FederationRegistrationsPanel;
-import com.gitblit.wicket.panels.FederationTokensPanel;
import com.gitblit.wicket.panels.RepositoriesPanel;
-import com.gitblit.wicket.panels.UsersPanel;
-public class RepositoriesPage extends BasePage {
+public class RepositoriesPage extends RootPage {
public RepositoriesPage() {
super();
setupPage("", "");
- final boolean showAdmin;
- if (GitBlit.getBoolean(Keys.web.authenticateAdminPages, true)) {
- boolean allowAdmin = GitBlit.getBoolean(Keys.web.allowAdministration, false);
- showAdmin = allowAdmin && GitBlitWebSession.get().canAdmin();
- // authentication requires state and session
- setStatelessHint(false);
- } else {
- showAdmin = GitBlit.getBoolean(Keys.web.allowAdministration, false);
- if (GitBlit.getBoolean(Keys.web.authenticateViewPages, false)) {
- // authentication requires state and session
- setStatelessHint(false);
- } else {
- // no authentication required, no state and no session required
- setStatelessHint(true);
- }
- }
-
- // display an error message cached from a redirect
- String cachedMessage = GitBlitWebSession.get().clearErrorMessage();
- if (!StringUtils.isEmpty(cachedMessage)) {
- error(cachedMessage);
- } else if (showAdmin) {
- int pendingProposals = GitBlit.self().getPendingFederationProposals().size();
- if (pendingProposals == 1) {
- info("There is 1 federation proposal awaiting review.");
- } else if (pendingProposals > 1) {
- info(MessageFormat.format("There are {0} federation proposals awaiting review.",
- pendingProposals));
- }
+ // check to see if we should display a login message
+ boolean authenticateView = GitBlit.getBoolean(Keys.web.authenticateViewPages, true);
+ if (authenticateView && !GitBlitWebSession.get().isLoggedIn()) {
+ String messageSource = GitBlit.getString(Keys.web.loginMessage, "gitblit");
+ String message = readMarkdown(messageSource, "login.mkd");
+ Component repositoriesMessage = new Label("repositoriesMessage", message);
+ add(repositoriesMessage.setEscapeModelStrings(false));
+ add(new Label("repositoriesPanel"));
+ return;
}
// Load the markdown welcome message
String messageSource = GitBlit.getString(Keys.web.repositoriesMessage, "gitblit");
- String message = "<br/>";
+ String message = readMarkdown(messageSource, "welcome.mkd");
+ Component repositoriesMessage = new Label("repositoriesMessage", message)
+ .setEscapeModelStrings(false).setVisible(message.length() > 0);
+ add(repositoriesMessage);
+ RepositoriesPanel repositories = new RepositoriesPanel("repositoriesPanel", showAdmin,
+ null, getAccessRestrictions());
+ // push the panel down if we are hiding the admin controls and the
+ // welcome message
+ if (!showAdmin && !repositoriesMessage.isVisible()) {
+ WicketUtils.setCssStyle(repositories, "padding-top:5px;");
+ }
+ add(repositories);
+ }
+
+ private String readMarkdown(String messageSource, String resource) {
+ String message = "";
if (messageSource.equalsIgnoreCase("gitblit")) {
- // Read default welcome message
- try {
- ContextRelativeResource res = WicketUtils.getResource("welcome.mkd");
- InputStream is = res.getResourceStream().getInputStream();
- InputStreamReader reader = new InputStreamReader(is);
- message = MarkdownUtils.transformMarkdown(reader);
- reader.close();
- } catch (Throwable t) {
- message = "Failed to read default welcome message!";
- error(message, t, false);
- }
+ // Read default message
+ message = readDefaultMarkdown(resource);
} else {
- // Read user-supplied welcome message
+ // Read user-supplied message
if (!StringUtils.isEmpty(messageSource)) {
File file = new File(messageSource);
if (file.exists()) {
@@ -106,31 +88,21 @@ public class RepositoriesPage extends BasePage { }
}
}
- Component repositoriesMessage = new Label("repositoriesMessage", message)
- .setEscapeModelStrings(false);
- add(repositoriesMessage);
- add(new RepositoriesPanel("repositoriesPanel", showAdmin, null, getAccessRestrictions()));
- add(new UsersPanel("usersPanel", showAdmin).setVisible(showAdmin));
- boolean showFederation = showAdmin && GitBlit.canFederate();
- add(new FederationTokensPanel("federationTokensPanel", showFederation)
- .setVisible(showFederation));
- FederationProposalsPanel proposalsPanel = new FederationProposalsPanel(
- "federationProposalsPanel");
- if (showFederation) {
- proposalsPanel.hideIfEmpty();
- } else {
- proposalsPanel.setVisible(false);
- }
+ return message;
+ }
- boolean showRegistrations = GitBlit.getBoolean(Keys.web.showFederationRegistrations, false);
- FederationRegistrationsPanel registrationsPanel = new FederationRegistrationsPanel(
- "federationRegistrationsPanel");
- if (showAdmin || showRegistrations) {
- registrationsPanel.hideIfEmpty();
- } else {
- registrationsPanel.setVisible(false);
+ private String readDefaultMarkdown(String file) {
+ String message;
+ try {
+ ContextRelativeResource res = WicketUtils.getResource(file);
+ InputStream is = res.getResourceStream().getInputStream();
+ InputStreamReader reader = new InputStreamReader(is);
+ message = MarkdownUtils.transformMarkdown(reader);
+ reader.close();
+ } catch (Throwable t) {
+ message = MessageFormat.format("Failed to read default message from {0}!", file);
+ error(message, t, false);
}
- add(proposalsPanel);
- add(registrationsPanel);
+ return message;
}
}
diff --git a/src/com/gitblit/wicket/pages/RepositoryPage.html b/src/com/gitblit/wicket/pages/RepositoryPage.html index e793a1e9..100016f1 100644 --- a/src/com/gitblit/wicket/pages/RepositoryPage.html +++ b/src/com/gitblit/wicket/pages/RepositoryPage.html @@ -8,24 +8,42 @@ <wicket:extend>
<!-- page header bar -->
<div>
- <!-- floating search form on right -->
- <div class="search">
- <form wicket:id="searchForm">
- <select wicket:id="searchType"/>
- <input type="text" id="searchBox" wicket:id="searchBox" size="25" value=""/>
+ <!-- page nav links -->
+ <div class="topbar">
+ <div class="fill">
+ <div class="container">
+ <a class="brand" wicket:id="rootLink">
+ <img src="gitblt_25_white.png" width="79" height="25" alt="gitblit" class="logo"/>
+ </a>
+ <ul class="nav">
+ <li><a wicket:id="repositories"><wicket:message key="gb.repositories"></wicket:message></a></li>
+ <li><a wicket:id="summary"><wicket:message key="gb.summary"></wicket:message></a></li>
+ <li><a wicket:id="log"><wicket:message key="gb.log"></wicket:message></a></li>
+ <li><a wicket:id="branches"><wicket:message key="gb.branches"></wicket:message></a></li>
+ <li><a wicket:id="tags"><wicket:message key="gb.tags"></wicket:message></a></li>
+ <li><a wicket:id="tree"><wicket:message key="gb.tree"></wicket:message></a></li>
+ <li wicket:id="extra"><span wicket:id="extraLink"></span></li>
+ <li><a style="text-decoration: none;" wicket:id="syndication">
+ <img style="border:0px;vertical-align:middle;" src="feed_16x16.png"></img></a>
+ </li>
+ </ul>
+ <form class="pull-right" wicket:id="searchForm">
+ <div class="search">
+ <select class="small" wicket:id="searchType"/>
+ <input type="text" id="searchBox" wicket:id="searchBox" value=""/>
+ </div>
</form>
+ </div>
</div>
-
- <!-- page nav links -->
- <div class="page_nav">
- <a style="text-decoration: none;" wicket:id="syndication">
- <img style="border:0px;vertical-align:middle;" src="feed_16x16.png"></img>
- </a>
- <a wicket:id="summary"><wicket:message key="gb.summary"></wicket:message></a> | <a wicket:id="log"><wicket:message key="gb.log"></wicket:message></a> | <a wicket:id="branches"><wicket:message key="gb.branches"></wicket:message></a> | <a wicket:id="tags"><wicket:message key="gb.tags"></wicket:message></a> | <a wicket:id="tree"><wicket:message key="gb.tree"></wicket:message></a> <span wicket:id="extra"><span wicket:id="extraSeparator"></span><span wicket:id="extraLink"></span></span>
</div>
</div>
- <div style="text-align:center;" wicket:id="feedback">[Feedback Panel]</div>
+ <div style="text-align:center;padding-top:5px;" wicket:id="feedback">[Feedback Panel]</div>
+
+ <!-- page header -->
+ <div class="page-header">
+ <h2><span wicket:id="repositoryName">[repository name]</span> <small><span wicket:id="pageName">[page name]</span></small></h2>
+ </div>
<!-- page content -->
<wicket:child />
diff --git a/src/com/gitblit/wicket/pages/RepositoryPage.java b/src/com/gitblit/wicket/pages/RepositoryPage.java index 7062e3b3..1b6ae082 100644 --- a/src/com/gitblit/wicket/pages/RepositoryPage.java +++ b/src/com/gitblit/wicket/pages/RepositoryPage.java @@ -69,6 +69,7 @@ public abstract class RepositoryPage extends BasePage { private static final long serialVersionUID = 1L;
{
+ put("repositories", new PageRegistration("gb.repositories", RepositoriesPage.class, false));
put("summary", new PageRegistration("gb.summary", SummaryPage.class));
put("log", new PageRegistration("gb.log", LogPage.class));
put("branches", new PageRegistration("gb.branches", BranchesPage.class));
@@ -93,6 +94,7 @@ public abstract class RepositoryPage extends BasePage { RepositoryModel model = getRepositoryModel();
// standard page links
+ addRegisteredPageLink("repositories");
addRegisteredPageLink("summary");
addRegisteredPageLink("log");
addRegisteredPageLink("branches");
@@ -133,10 +135,8 @@ public abstract class RepositoryPage extends BasePage { public void populateItem(final Item<String> item) {
String extra = item.getModelObject();
PageRegistration pageReg = registeredPages.get(extra);
- item.add(new Label("extraSeparator", " | "));
item.add(new LinkPanel("extraLink", null, getString(pageReg.translationKey),
- pageReg.pageClass, WicketUtils.newRepositoryParameter(repositoryName))
- .setEnabled(!extra.equals(pageWicketId)));
+ pageReg.pageClass, WicketUtils.newRepositoryParameter(repositoryName)));
}
};
add(extrasView);
@@ -155,6 +155,15 @@ public abstract class RepositoryPage extends BasePage { // set stateless page preference
setStatelessHint(true);
}
+
+ @Override
+ protected void setupPage(String repositoryName, String pageName) {
+ add(new LinkPanel("repositoryName", null, repositoryName, SummaryPage.class,
+ WicketUtils.newRepositoryParameter(repositoryName)));
+ add(new Label("pageName", pageName));
+
+ super.setupPage(repositoryName, pageName);
+ }
public String getLinkWicketId(String pageName) {
for (String wicketId : registeredPages.keySet()) {
@@ -172,15 +181,20 @@ public abstract class RepositoryPage extends BasePage { if (!StringUtils.isEmpty(wicketId)) {
Component c = get(wicketId);
if (c != null) {
- c.setEnabled(false);
+// c.setEnabled(false);
+// WicketUtils.setCssClass(c, "selected");
}
}
}
private void addRegisteredPageLink(String key) {
PageRegistration pageReg = registeredPages.get(key);
- add(new BookmarkablePageLink<Void>(key, pageReg.pageClass,
- WicketUtils.newRepositoryParameter(repositoryName)));
+ if (pageReg.repositoryLink) {
+ add(new BookmarkablePageLink<Void>(key, pageReg.pageClass,
+ WicketUtils.newRepositoryParameter(repositoryName)));
+ } else {
+ add(new BookmarkablePageLink<Void>(key, pageReg.pageClass));
+ }
}
protected void addSyndicationDiscoveryLink() {
@@ -335,10 +349,16 @@ public abstract class RepositoryPage extends BasePage { final String translationKey;
final Class<? extends BasePage> pageClass;
+ final boolean repositoryLink;
PageRegistration(String translationKey, Class<? extends BasePage> pageClass) {
+ this(translationKey, pageClass, true);
+ }
+
+ PageRegistration(String translationKey, Class<? extends BasePage> pageClass, boolean repositoryLink) {
this.translationKey = translationKey;
this.pageClass = pageClass;
+ this.repositoryLink = repositoryLink;
}
}
@@ -364,7 +384,7 @@ public abstract class RepositoryPage extends BasePage { void setTranslatedAttributes() {
WicketUtils.setHtmlTooltip(get("searchType"), getString("gb.searchTypeTooltip"));
- WicketUtils.setHtmlTooltip(get("searchBox"), getString("gb.searchTooltip"));
+ WicketUtils.setHtmlTooltip(get("searchBox"), MessageFormat.format(getString("gb.searchTooltip"), repositoryName));
WicketUtils.setInputPlaceholder(get("searchBox"), getString("gb.search"));
}
@@ -372,6 +392,10 @@ public abstract class RepositoryPage extends BasePage { public void onSubmit() {
SearchType searchType = searchTypeModel.getObject();
String searchString = searchBoxModel.getObject();
+ if (searchString == null) {
+ // FIXME IE intermittently has no searchString. Wicket bug?
+ return;
+ }
for (SearchType type : SearchType.values()) {
if (searchString.toLowerCase().startsWith(type.name().toLowerCase() + ":")) {
searchType = type;
diff --git a/src/com/gitblit/wicket/pages/ReviewProposalPage.html b/src/com/gitblit/wicket/pages/ReviewProposalPage.html index d4244ea0..6487a0ac 100644 --- a/src/com/gitblit/wicket/pages/ReviewProposalPage.html +++ b/src/com/gitblit/wicket/pages/ReviewProposalPage.html @@ -6,11 +6,6 @@ <body>
<wicket:extend>
-
- <div style="padding-top:20px"></div>
-
- <div style="text-align:center;" wicket:id="feedback">[Feedback Panel]</div>
-
<!-- proposal info -->
<table class="plain">
<tr><th><wicket:message key="gb.received">received</wicket:message></th><td><span wicket:id="received">[received]</span></td></tr>
@@ -21,7 +16,7 @@ <tr><th valign="top"><wicket:message key="gb.proposal">proposal</wicket:message></th><td><span class="sha1" wicket:id="definition">[definition]</span></td></tr>
</table>
- <div wicket:id="repositories"></div>
+ <div wicket:id="repositoriesPanel"></div>
</wicket:extend>
</body>
diff --git a/src/com/gitblit/wicket/pages/ReviewProposalPage.java b/src/com/gitblit/wicket/pages/ReviewProposalPage.java index b006d80f..1d9092a5 100644 --- a/src/com/gitblit/wicket/pages/ReviewProposalPage.java +++ b/src/com/gitblit/wicket/pages/ReviewProposalPage.java @@ -33,7 +33,7 @@ import com.gitblit.wicket.WicketUtils; import com.gitblit.wicket.panels.RepositoriesPanel;
@RequiresAdminRole
-public class ReviewProposalPage extends BasePage {
+public class ReviewProposalPage extends RootSubPage {
private final String PROPS_PATTERN = "{0} = {1}\n";
@@ -42,9 +42,6 @@ public class ReviewProposalPage extends BasePage { public ReviewProposalPage(PageParameters params) {
super(params);
- setupPage("", getString("gb.proposals"));
- setStatelessHint(true);
-
final String token = WicketUtils.getToken(params);
FederationProposal proposal = GitBlit.self().getPendingFederationProposal(token);
@@ -52,13 +49,15 @@ public class ReviewProposalPage extends BasePage { error("Could not find federation proposal!", true);
}
+ setupPage(getString("gb.proposals"), proposal.url);
+
+
add(new Label("url", proposal.url));
add(new Label("message", proposal.message));
add(WicketUtils.createTimestampLabel("received", proposal.received, getTimeZone()));
add(new Label("token", proposal.token));
add(new Label("tokenType", proposal.tokenType.name()));
-
- boolean go = true;
+
String p;
if (GitBlit.isGO()) {
// gitblit.properties definition
@@ -92,7 +91,7 @@ public class ReviewProposalPage extends BasePage { List<RepositoryModel> repositories = new ArrayList<RepositoryModel>(
proposal.repositories.values());
- RepositoriesPanel repositoriesPanel = new RepositoriesPanel("repositories", false,
+ RepositoriesPanel repositoriesPanel = new RepositoriesPanel("repositoriesPanel", false,
repositories, getAccessRestrictions());
add(repositoriesPanel);
}
diff --git a/src/com/gitblit/wicket/pages/RootPage.html b/src/com/gitblit/wicket/pages/RootPage.html new file mode 100644 index 00000000..c9470923 --- /dev/null +++ b/src/com/gitblit/wicket/pages/RootPage.html @@ -0,0 +1,38 @@ +<!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">
+<body>
+<wicket:extend>
+ <div class="topbar">
+ <div class="fill">
+ <div class="container">
+ <a class="brand" wicket:id="rootLink">
+ <img src="gitblt_25_white.png" width="79" height="25" alt="gitblit" class="logo"/>
+ </a>
+
+ <ul class="nav">
+ <li><a wicket:id="repositories"><wicket:message key="gb.repositories"></wicket:message></a></li>
+ <li><a wicket:id="users"><wicket:message key="gb.users"></wicket:message></a></li>
+ <li><a wicket:id="federation"><wicket:message key="gb.federation"></wicket:message></a></li>
+ </ul>
+
+ <form class="pull-right" wicket:id="loginForm">
+ <div class="login">
+ <input wicket:id="username" class="input-small" type="text" />
+ <input wicket:id="password" class="input-small" type="password" />
+ <button class="btn primary" type="submit"><wicket:message key="gb.login"></wicket:message></button>
+ </div>
+ </form>
+ </div>
+ </div>
+ </div>
+
+ <div style="text-align:center;padding-top:5px;" wicket:id="feedback">[Feedback Panel]</div>
+
+ <!-- subclass content -->
+ <wicket:child/>
+</wicket:extend>
+</body>
+</html>
\ No newline at end of file diff --git a/src/com/gitblit/wicket/pages/RootPage.java b/src/com/gitblit/wicket/pages/RootPage.java new file mode 100644 index 00000000..69ac25d0 --- /dev/null +++ b/src/com/gitblit/wicket/pages/RootPage.java @@ -0,0 +1,156 @@ +/*
+ * Copyright 2011 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.pages;
+
+import java.text.MessageFormat;
+
+import org.apache.wicket.PageParameters;
+import org.apache.wicket.markup.html.form.PasswordTextField;
+import org.apache.wicket.markup.html.form.StatelessForm;
+import org.apache.wicket.markup.html.form.TextField;
+import org.apache.wicket.markup.html.link.BookmarkablePageLink;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.Model;
+import org.apache.wicket.protocol.http.WebResponse;
+
+import com.gitblit.Constants;
+import com.gitblit.GitBlit;
+import com.gitblit.Keys;
+import com.gitblit.models.UserModel;
+import com.gitblit.utils.StringUtils;
+import com.gitblit.wicket.GitBlitWebSession;
+import com.gitblit.wicket.WicketUtils;
+
+/**
+ * Root page is a topbar, navigable page like Repositories, Users, or
+ * Federation.
+ *
+ * @author James Moger
+ *
+ */
+public abstract class RootPage extends BasePage {
+
+ boolean showAdmin;
+
+ IModel<String> username = new Model<String>("");
+ IModel<String> password = new Model<String>("");
+
+ public RootPage() {
+ super();
+ }
+
+ public RootPage(PageParameters params) {
+ super(params);
+ }
+
+ @Override
+ protected void setupPage(String repositoryName, String pageName) {
+ if (GitBlit.getBoolean(Keys.web.authenticateAdminPages, true)) {
+ boolean allowAdmin = GitBlit.getBoolean(Keys.web.allowAdministration, false);
+ showAdmin = allowAdmin && GitBlitWebSession.get().canAdmin();
+ // authentication requires state and session
+ setStatelessHint(false);
+ } else {
+ showAdmin = GitBlit.getBoolean(Keys.web.allowAdministration, false);
+ if (GitBlit.getBoolean(Keys.web.authenticateViewPages, false)) {
+ // authentication requires state and session
+ setStatelessHint(false);
+ } else {
+ // no authentication required, no state and no session required
+ setStatelessHint(true);
+ }
+ }
+ boolean showRegistrations = GitBlit.canFederate()
+ && GitBlit.getBoolean(Keys.web.showFederationRegistrations, false);
+
+ // navigation links
+ add(new BookmarkablePageLink<Void>("repositories", RepositoriesPage.class));
+ add(new BookmarkablePageLink<Void>("users", UsersPage.class).setVisible(showAdmin));
+ add(new BookmarkablePageLink<Void>("federation", FederationPage.class).setVisible(showAdmin
+ || showRegistrations));
+
+ // login form
+ StatelessForm<Void> loginForm = new StatelessForm<Void>("loginForm") {
+
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public void onSubmit() {
+ String username = RootPage.this.username.getObject();
+ char[] password = RootPage.this.password.getObject().toCharArray();
+
+ UserModel user = GitBlit.self().authenticate(username, password);
+ if (user == null) {
+ error("Invalid username or password!");
+ } else if (user.username.equals(Constants.FEDERATION_USER)) {
+ // disallow the federation user from logging in via the
+ // web ui
+ error("Invalid username or password!");
+ user = null;
+ } else {
+ loginUser(user);
+ }
+ }
+ };
+ TextField<String> unameField = new TextField<String>("username", username);
+ WicketUtils.setInputPlaceholder(unameField, getString("gb.username"));
+ loginForm.add(unameField);
+ PasswordTextField pwField = new PasswordTextField("password", password);
+ WicketUtils.setInputPlaceholder(pwField, getString("gb.password"));
+ loginForm.add(pwField);
+ add(loginForm);
+ if (GitBlit.getBoolean(Keys.web.authenticateViewPages, true)
+ || GitBlit.getBoolean(Keys.web.authenticateAdminPages, true)) {
+ loginForm.setVisible(!GitBlitWebSession.get().isLoggedIn());
+ } else {
+ loginForm.setVisible(false);
+ }
+
+ // display an error message cached from a redirect
+ String cachedMessage = GitBlitWebSession.get().clearErrorMessage();
+ if (!StringUtils.isEmpty(cachedMessage)) {
+ error(cachedMessage);
+ } else if (showAdmin) {
+ int pendingProposals = GitBlit.self().getPendingFederationProposals().size();
+ if (pendingProposals == 1) {
+ info("There is 1 federation proposal awaiting review.");
+ } else if (pendingProposals > 1) {
+ info(MessageFormat.format("There are {0} federation proposals awaiting review.",
+ pendingProposals));
+ }
+ }
+
+ super.setupPage(repositoryName, pageName);
+ }
+
+ private void loginUser(UserModel user) {
+ if (user != null) {
+ // Set the user into the session
+ GitBlitWebSession.get().setUser(user);
+
+ // Set Cookie
+ if (GitBlit.getBoolean(Keys.web.allowCookieAuthentication, false)) {
+ WebResponse response = (WebResponse) getRequestCycle().getResponse();
+ GitBlit.self().setCookie(response, user);
+ }
+
+ if (!continueToOriginalDestination()) {
+ // Redirect to home page
+ setResponsePage(getApplication().getHomePage());
+ }
+ }
+ }
+}
diff --git a/src/com/gitblit/wicket/pages/RootSubPage.html b/src/com/gitblit/wicket/pages/RootSubPage.html new file mode 100644 index 00000000..554da111 --- /dev/null +++ b/src/com/gitblit/wicket/pages/RootSubPage.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">
+
+<body>
+<wicket:extend>
+ <!-- page header -->
+ <div class="page-header">
+ <h2><span wicket:id="pageName">[page name]</span> <small><span wicket:id="pageSubName">[sub name]</span></small></h2>
+ </div>
+
+ <!-- Subclass Content -->
+ <wicket:child/>
+</wicket:extend>
+</body>
+</html>
\ No newline at end of file diff --git a/src/com/gitblit/wicket/pages/RootSubPage.java b/src/com/gitblit/wicket/pages/RootSubPage.java new file mode 100644 index 00000000..f7572b14 --- /dev/null +++ b/src/com/gitblit/wicket/pages/RootSubPage.java @@ -0,0 +1,48 @@ +/*
+ * Copyright 2011 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.pages;
+
+import org.apache.wicket.PageParameters;
+import org.apache.wicket.markup.html.basic.Label;
+
+import com.gitblit.utils.StringUtils;
+
+/**
+ * RootSubPage is a non-topbar navigable RootPage. It also has a page header.
+ *
+ * @author James Moger
+ *
+ */
+public abstract class RootSubPage extends RootPage {
+
+ public RootSubPage() {
+ super();
+ }
+
+ public RootSubPage(PageParameters params) {
+ super(params);
+ }
+
+ @Override
+ protected void setupPage(String pageName, String subName) {
+ add(new Label("pageName", pageName));
+ if (!StringUtils.isEmpty(subName)) {
+ subName = "/ " + subName;
+ }
+ add(new Label("pageSubName", subName));
+ super.setupPage("", pageName);
+ }
+}
diff --git a/src/com/gitblit/wicket/pages/SendProposalPage.html b/src/com/gitblit/wicket/pages/SendProposalPage.html index 90fe0a27..8a289068 100644 --- a/src/com/gitblit/wicket/pages/SendProposalPage.html +++ b/src/com/gitblit/wicket/pages/SendProposalPage.html @@ -6,25 +6,19 @@ <wicket:extend>
<body onload="document.getElementById('myUrl').focus();">
-
-
- <div style="padding-top:20px"></div>
-
- <div style="text-align:center;" wicket:id="feedback">[Feedback Panel]</div>
-
<!-- proposal info -->
<form wicket:id="editForm">
<table class="plain">
- <tr><th><wicket:message key="gb.url">url</wicket:message></th><td class="edit"><input type="text" wicket:id="myUrl" id="myUrl" size="60" /> <i><wicket:message key="gb.myUrlDescription"></wicket:message></i></td></tr>
- <tr><th><wicket:message key="gb.destinationUrl">destination url</wicket:message></th><td class="edit"><input type="text" wicket:id="destinationUrl" size="60" /> <i><wicket:message key="gb.destinationUrlDescription"></wicket:message></i></td></tr>
- <tr><th valign="top"><wicket:message key="gb.message">message</wicket:message></th><td class="edit"><input type="text" wicket:id="message" size="80" /></td></tr>
+ <tr><th><wicket:message key="gb.url">url</wicket:message></th><td class="edit"><input class="span6" type="text" wicket:id="myUrl" id="myUrl" size="60" /> <i><wicket:message key="gb.myUrlDescription"></wicket:message></i></td></tr>
+ <tr><th><wicket:message key="gb.destinationUrl">destination url</wicket:message></th><td class="edit"><input class="span6" type="text" wicket:id="destinationUrl" size="60" /> <i><wicket:message key="gb.destinationUrlDescription"></wicket:message></i></td></tr>
+ <tr><th valign="top"><wicket:message key="gb.message">message</wicket:message></th><td class="edit"><input class="span8" type="text" wicket:id="message" size="80" /></td></tr>
<tr><th><wicket:message key="gb.type">type</wicket:message></th><td><span wicket:id="tokenType">[token type]</span></td></tr>
<tr><th><wicket:message key="gb.token">token</wicket:message></th><td><span class="sha1" wicket:id="token">[token]</span></td></tr>
- <tr><th></th><td class="editButton"><input type="submit" value="propose" wicket:message="value:gb.sendProposal" wicket:id="save" /> <input type="submit" value="Cancel" wicket:message="value:gb.cancel" wicket:id="cancel" /></td></tr>
+ <tr><th></th><td class="editButton"><input class="btn" type="submit" value="Cancel" wicket:message="value:gb.cancel" wicket:id="cancel" /> <input class="btn primary" type="submit" value="propose" wicket:message="value:gb.sendProposal" wicket:id="save" /> </td></tr>
</table>
</form>
- <div style="padding-top:10px;" wicket:id="repositories"></div>
+ <div style="padding-top:10px;" wicket:id="repositoriesPanel"></div>
</body>
</wicket:extend>
</html>
\ No newline at end of file diff --git a/src/com/gitblit/wicket/pages/SendProposalPage.java b/src/com/gitblit/wicket/pages/SendProposalPage.java index 635b4321..ed200499 100644 --- a/src/com/gitblit/wicket/pages/SendProposalPage.java +++ b/src/com/gitblit/wicket/pages/SendProposalPage.java @@ -37,7 +37,7 @@ import com.gitblit.wicket.WicketUtils; import com.gitblit.wicket.panels.RepositoriesPanel;
@RequiresAdminRole
-public class SendProposalPage extends BasePage {
+public class SendProposalPage extends RootSubPage {
public String myUrl;
@@ -48,7 +48,7 @@ public class SendProposalPage extends BasePage { public SendProposalPage(PageParameters params) {
super(params);
- setupPage("", getString("gb.sendProposal"));
+ setupPage(getString("gb.sendProposal"), "");
setStatelessHint(true);
final String token = WicketUtils.getToken(params);
@@ -139,7 +139,7 @@ public class SendProposalPage extends BasePage { @Override
public void onSubmit() {
- setResponsePage(RepositoriesPage.class);
+ setResponsePage(FederationPage.class);
}
};
cancel.setDefaultFormProcessing(false);
@@ -148,7 +148,7 @@ public class SendProposalPage extends BasePage { List<RepositoryModel> repositories = new ArrayList<RepositoryModel>(
proposal.repositories.values());
- RepositoriesPanel repositoriesPanel = new RepositoriesPanel("repositories", false,
+ RepositoriesPanel repositoriesPanel = new RepositoriesPanel("repositoriesPanel", false,
repositories, getAccessRestrictions());
add(repositoriesPanel);
}
diff --git a/src/com/gitblit/wicket/pages/TicketPage.html b/src/com/gitblit/wicket/pages/TicketPage.html index 160bc0cf..ed3eb229 100644 --- a/src/com/gitblit/wicket/pages/TicketPage.html +++ b/src/com/gitblit/wicket/pages/TicketPage.html @@ -8,7 +8,7 @@ <wicket:extend>
<!-- ticket title -->
- <div style="font-size:150%;padding-top:5px;" wicket:id="ticketTitle">[ticket title]</div>
+ <div style="font-size:150%;padding-top:5px;padding-bottom:5px;" wicket:id="ticketTitle">[ticket title]</div>
<!-- ticket info -->
<table class="plain">
diff --git a/src/com/gitblit/wicket/pages/TicketPage.java b/src/com/gitblit/wicket/pages/TicketPage.java index 48db1cea..d250a452 100644 --- a/src/com/gitblit/wicket/pages/TicketPage.java +++ b/src/com/gitblit/wicket/pages/TicketPage.java @@ -34,7 +34,7 @@ public class TicketPage extends RepositoryPage { public TicketPage(PageParameters params) {
super(params);
- final String ticketFolder = WicketUtils.getPath(params);
+ final String ticketFolder = WicketUtils.getObject(params);
Repository r = getRepository();
TicketModel t = TicgitUtils.getTicket(r, ticketFolder);
diff --git a/src/com/gitblit/wicket/pages/UsersPage.html b/src/com/gitblit/wicket/pages/UsersPage.html new file mode 100644 index 00000000..4d14496d --- /dev/null +++ b/src/com/gitblit/wicket/pages/UsersPage.html @@ -0,0 +1,11 @@ +<!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">
+<body>
+<wicket:extend>
+ <div wicket:id="usersPanel">[users panel]</div>
+</wicket:extend>
+</body>
+</html>
\ No newline at end of file diff --git a/src/com/gitblit/wicket/pages/UsersPage.java b/src/com/gitblit/wicket/pages/UsersPage.java new file mode 100644 index 00000000..b54b968d --- /dev/null +++ b/src/com/gitblit/wicket/pages/UsersPage.java @@ -0,0 +1,30 @@ +/*
+ * Copyright 2011 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.pages;
+
+import com.gitblit.wicket.RequiresAdminRole;
+import com.gitblit.wicket.panels.UsersPanel;
+
+@RequiresAdminRole
+public class UsersPage extends RootPage {
+
+ public UsersPage() {
+ super();
+ setupPage("", "");
+
+ add(new UsersPanel("usersPanel", showAdmin).setVisible(showAdmin));
+ }
+}
diff --git a/src/com/gitblit/wicket/panels/BranchesPanel.html b/src/com/gitblit/wicket/panels/BranchesPanel.html index c58f42ef..01fb8bac 100644 --- a/src/com/gitblit/wicket/panels/BranchesPanel.html +++ b/src/com/gitblit/wicket/panels/BranchesPanel.html @@ -8,7 +8,7 @@ <wicket:panel>
<!-- header -->
- <div class="header"><img style="vertical-align: top;" src="commit_branch_16x16.png"></img><span wicket:id="branches">[branches header]</span></div>
+ <div class="header"><img style="vertical-align: middle;" src="commit_branch_16x16.png"></img><span wicket:id="branches">[branches header]</span></div>
<table class="pretty">
<tbody>
diff --git a/src/com/gitblit/wicket/panels/FederationProposalsPanel.html b/src/com/gitblit/wicket/panels/FederationProposalsPanel.html index e451b7c5..89324d56 100644 --- a/src/com/gitblit/wicket/panels/FederationProposalsPanel.html +++ b/src/com/gitblit/wicket/panels/FederationProposalsPanel.html @@ -10,7 +10,7 @@ <table class="repositories">
<tr>
<th class="left">
- <img style="vertical-align: top; border: 1px solid #888; background-color: white;" src="federated_16x16.png"/>
+ <img style="vertical-align: middle; border: 1px solid #888; background-color: white;" src="federated_16x16.png"/>
<wicket:message key="gb.proposals">[proposals]</wicket:message>
</th>
<th><wicket:message key="gb.received">[received]</wicket:message></th>
diff --git a/src/com/gitblit/wicket/panels/FederationRegistrationsPanel.html b/src/com/gitblit/wicket/panels/FederationRegistrationsPanel.html index 6fab778f..fbc6f6cb 100644 --- a/src/com/gitblit/wicket/panels/FederationRegistrationsPanel.html +++ b/src/com/gitblit/wicket/panels/FederationRegistrationsPanel.html @@ -10,7 +10,7 @@ <table class="repositories">
<tr>
<th class="left">
- <img style="vertical-align: top; border: 1px solid #888; background-color: white;" src="federated_16x16.png"/>
+ <img style="vertical-align: middle; border: 1px solid #888; background-color: white;" src="federated_16x16.png"/>
<wicket:message key="gb.registrations">[registrations]</wicket:message>
</th>
<th><wicket:message key="gb.name">[name]</wicket:message></th>
diff --git a/src/com/gitblit/wicket/panels/FederationTokensPanel.html b/src/com/gitblit/wicket/panels/FederationTokensPanel.html index 06c1869a..dc5307bb 100644 --- a/src/com/gitblit/wicket/panels/FederationTokensPanel.html +++ b/src/com/gitblit/wicket/panels/FederationTokensPanel.html @@ -15,7 +15,7 @@ <table class="repositories">
<tr>
<th class="left">
- <img style="vertical-align: top; border: 1px solid #888; background-color: white;" src="federated_16x16.png"/>
+ <img style="vertical-align: middle; border: 1px solid #888; background-color: white;" src="federated_16x16.png"/>
<wicket:message key="gb.tokens">[tokens]</wicket:message>
</th>
<th></th>
diff --git a/src/com/gitblit/wicket/panels/LogPanel.html b/src/com/gitblit/wicket/panels/LogPanel.html index 712a6628..700f66a1 100644 --- a/src/com/gitblit/wicket/panels/LogPanel.html +++ b/src/com/gitblit/wicket/panels/LogPanel.html @@ -8,7 +8,7 @@ <wicket:panel>
<!-- header -->
- <div class="header"><img style="vertical-align: top;" src="commit_changes_16x16.png"></img><span wicket:id="header">[log header]</span></div>
+ <div class="header"><img style="vertical-align: middle;" src="commit_changes_16x16.png"></img><span wicket:id="header">[log header]</span></div>
<table class="pretty">
<tbody>
<tr wicket:id="commit">
diff --git a/src/com/gitblit/wicket/panels/PathBreadcrumbsPanel.html b/src/com/gitblit/wicket/panels/PathBreadcrumbsPanel.html index bd4b7921..c51ceac8 100644 --- a/src/com/gitblit/wicket/panels/PathBreadcrumbsPanel.html +++ b/src/com/gitblit/wicket/panels/PathBreadcrumbsPanel.html @@ -7,9 +7,11 @@ <wicket:panel>
<!-- page path links -->
<div class="page_path">
- <span wicket:id="path">
- <span wicket:id="pathLink"></span> <span wicket:id="pathSeparator"></span>
- </span>
+ <ul class="breadcrumb">
+ <li wicket:id="path">
+ <span wicket:id="pathLink"></span> <span class="divider" wicket:id="pathSeparator"></span>
+ </li>
+ </ul>
</div>
</wicket:panel>
</html>
\ No newline at end of file diff --git a/src/com/gitblit/wicket/panels/RepositoriesPanel.html b/src/com/gitblit/wicket/panels/RepositoriesPanel.html index 8d64f54b..41741e89 100644 --- a/src/com/gitblit/wicket/panels/RepositoriesPanel.html +++ b/src/com/gitblit/wicket/panels/RepositoriesPanel.html @@ -21,7 +21,7 @@ <wicket:fragment wicket:id="adminLinks">
<!-- page nav links -->
<div class="admin_nav">
- <img style="vertical-align: top;" src="add_16x16.png"/>
+ <img style="vertical-align: middle;" src="add_16x16.png"/>
<a wicket:id="newRepository">
<wicket:message key="gb.newRepository"></wicket:message>
</a>
@@ -39,7 +39,7 @@ <wicket:fragment wicket:id="flatRepositoryHeader">
<tr>
<th class="left" wicket:id="orderByRepository">
- <img style="vertical-align: top; border: 1px solid #888;" src="gitweb-favicon.png"/>
+ <img style="vertical-align: middle; border: 1px solid #888;" src="gitweb-favicon.png"/>
<wicket:message key="gb.repository">Repository</wicket:message>
</th>
<th wicket:id="orderByDescription"><wicket:message key="gb.description">Description</wicket:message></th>
@@ -54,7 +54,7 @@ <wicket:fragment wicket:id="groupRepositoryHeader">
<tr>
<th class="left">
- <img style="vertical-align: top; border: 1px solid #888;" src="gitweb-favicon.png"/>
+ <img style="vertical-align: middle; border: 1px solid #888;" src="gitweb-favicon.png"/>
<wicket:message key="gb.repository">Repository</wicket:message>
</th>
<th><wicket:message key="gb.description">Description</wicket:message></th>
@@ -71,7 +71,7 @@ </wicket:fragment>
<wicket:fragment wicket:id="repositoryRow">
- <td class="left"><div class="list" wicket:id="repositoryName">[repository name]</div></td>
+ <td class="left" style="padding-left:10px;" ><div class="list" wicket:id="repositoryName">[repository name]</div></td>
<td><div class="list" wicket:id="repositoryDescription">[repository description]</div></td>
<td class="author"><span wicket:id="repositoryOwner">[repository owner]</span></td>
<td style="text-align: right;padding-right:10px;"><img class="inlineIcon" wicket:id="ticketsIcon" /><img class="inlineIcon" wicket:id="docsIcon" /><img class="inlineIcon" wicket:id="frozenIcon" /><img class="inlineIcon" wicket:id="federatedIcon" /><img class="inlineIcon" wicket:id="accessRestrictionIcon" /></td>
diff --git a/src/com/gitblit/wicket/panels/RepositoriesPanel.java b/src/com/gitblit/wicket/panels/RepositoriesPanel.java index 709ad823..d18d5bb3 100644 --- a/src/com/gitblit/wicket/panels/RepositoriesPanel.java +++ b/src/com/gitblit/wicket/panels/RepositoriesPanel.java @@ -124,6 +124,7 @@ public class RepositoriesPanel extends BasePanel { DataView<RepositoryModel> dataView = new DataView<RepositoryModel>("row", dp) {
private static final long serialVersionUID = 1L;
int counter;
+ String currGroupName;
@Override
protected void onBeforeRender() {
@@ -134,23 +135,32 @@ public class RepositoriesPanel extends BasePanel { public void populateItem(final Item<RepositoryModel> item) {
final RepositoryModel entry = item.getModelObject();
if (entry instanceof GroupRepositoryModel) {
+ currGroupName = entry.name;
Fragment row = new Fragment("rowContent", "groupRepositoryRow", this);
item.add(row);
row.add(new Label("groupName", entry.toString()));
WicketUtils.setCssClass(item, "group");
+ // reset counter so that first row is light background
+ counter = 0;
return;
}
Fragment row = new Fragment("rowContent", "repositoryRow", this);
item.add(row);
+
+ // try to strip group name for less cluttered list
+ String repoName = entry.name;
+ if (!StringUtils.isEmpty(currGroupName) && (repoName.indexOf('/') > -1)) {
+ repoName = repoName.substring(currGroupName.length() + 1);
+ }
+
if (entry.hasCommits && linksActive) {
PageParameters pp = WicketUtils.newRepositoryParameter(entry.name);
- row.add(new LinkPanel("repositoryName", "list", entry.name, SummaryPage.class,
- pp));
+ row.add(new LinkPanel("repositoryName", "list", repoName, SummaryPage.class, pp));
row.add(new LinkPanel("repositoryDescription", "list", entry.description,
SummaryPage.class, pp));
} else {
// new/empty repository OR proposed repository
- row.add(new Label("repositoryName", entry.name));
+ row.add(new Label("repositoryName", repoName));
row.add(new Label("repositoryDescription", entry.description));
}
diff --git a/src/com/gitblit/wicket/panels/TagsPanel.html b/src/com/gitblit/wicket/panels/TagsPanel.html index 86eedd60..c9c19a37 100644 --- a/src/com/gitblit/wicket/panels/TagsPanel.html +++ b/src/com/gitblit/wicket/panels/TagsPanel.html @@ -8,7 +8,7 @@ <wicket:panel>
<!-- tags -->
- <div class="header"><img style="vertical-align: top;" src="tag_16x16.png"></img><span wicket:id="header">[tags header]</span></div>
+ <div class="header"><img style="vertical-align: middle;" src="tag_16x16.png"></img><span wicket:id="header">[tags header]</span></div>
<table class="pretty">
<tbody>
<tr wicket:id="tag">
diff --git a/src/com/gitblit/wicket/panels/UsersPanel.html b/src/com/gitblit/wicket/panels/UsersPanel.html index eed2a887..c81a3fd9 100644 --- a/src/com/gitblit/wicket/panels/UsersPanel.html +++ b/src/com/gitblit/wicket/panels/UsersPanel.html @@ -12,7 +12,7 @@ <table class="repositories">
<tr>
<th class="left">
- <img style="vertical-align: top; border: 1px solid #888; background-color: white;" src="user_16x16.png"/>
+ <img style="vertical-align: middle; border: 1px solid #888; background-color: white;" src="user_16x16.png"/>
<wicket:message key="gb.username">[username]</wicket:message>
</th>
<th class="right"></th>
@@ -28,7 +28,7 @@ <wicket:fragment wicket:id="adminLinks">
<!-- page nav links -->
<div class="admin_nav">
- <img style="vertical-align: top;" src="add_16x16.png"/>
+ <img style="vertical-align: middle;" src="add_16x16.png"/>
<a wicket:id="newUser">
<wicket:message key="gb.newUser"></wicket:message>
</a>
|