James Moger
2011-09-30 8c5d72248c20fc78c7b2c1d4388d073affccad20
Login message option. More Bootstrap updates. All docs converted.
1 files added
20 files modified
269 ■■■■■ changed files
NOTICE 8 ●●●●● patch | view | raw | blame | history
build.xml 12 ●●●● patch | view | raw | blame | history
distrib/gitblit.properties 9 ●●●● patch | view | raw | blame | history
docs/00_index.mkd 2 ●●●●● patch | view | raw | blame | history
docs/02_federation.mkd 2 ●●● patch | view | raw | blame | history
docs/04_design.mkd 1 ●●●● patch | view | raw | blame | history
docs/04_releases.mkd 2 ●●●●● patch | view | raw | blame | history
docs/doc_footer.html 12 ●●●●● patch | view | raw | blame | history
docs/doc_header.html 26 ●●●●● patch | view | raw | blame | history
docs/site_footer.html 12 ●●●●● patch | view | raw | blame | history
docs/site_header.html 33 ●●●●● patch | view | raw | blame | history
resources/bootstrap.gb.css 41 ●●●● patch | view | raw | blame | history
resources/login.mkd 3 ●●●●● patch | view | raw | blame | history
src/com/gitblit/build/BuildSite.java 2 ●●● patch | view | raw | blame | history
src/com/gitblit/wicket/AuthorizationStrategy.java 6 ●●●●● patch | view | raw | blame | history
src/com/gitblit/wicket/GitBlitWebApp.properties 2 ●●● patch | view | raw | blame | history
src/com/gitblit/wicket/pages/EditUserPage.java 2 ●●● patch | view | raw | blame | history
src/com/gitblit/wicket/pages/RepositoriesPage.java 68 ●●●●● patch | view | raw | blame | history
src/com/gitblit/wicket/pages/RepositoryPage.java 9 ●●●●● patch | view | raw | blame | history
src/com/gitblit/wicket/pages/RootPage.html 8 ●●●●● patch | view | raw | blame | history
src/com/gitblit/wicket/pages/RootPage.java 9 ●●●● patch | view | raw | blame | history
NOTICE
@@ -8,6 +8,14 @@
in this distribution or linked to by this distribution.
---------------------------------------------------------------------------
Bootstrap
---------------------------------------------------------------------------
   Bootstrap, released under the
   Apache Software License, Version 2.0.
   http://twitter.github.com/bootstrap
---------------------------------------------------------------------------
google-code-prettify
---------------------------------------------------------------------------
   google-code-prettify, released under the
build.xml
@@ -196,10 +196,10 @@
            <copy todir="${docs.output.dir}">
                <!-- Copy selected Gitblit resources -->
                <fileset dir="${project.resources.dir}">
                    <include name="background.png" />
                    <include name="gitblit.css" />
                    <include name="bootstrap.130.css" />
                    <include name="bootstrap.gb.css" />
                    <include name="markdown.css" />
                    <include name="gitblt_25.png" />
                    <include name="gitblt_25_white.png" />
                    <include name="gitblt-favicon.png" />
                    <include name="lock_go_16x16.png" />
                    <include name="lock_pull_16x16.png" />
@@ -425,10 +425,10 @@
        <copy todir="${project.site.dir}">
            <!-- Copy selected Gitblit resources -->
            <fileset dir="${project.resources.dir}">
                <include name="background.png" />
                <include name="gitblit.css" />
                <include name="bootstrap.130.css" />
                <include name="bootstrap.gb.css" />
                <include name="markdown.css" />
                <include name="gitblt_25.png" />
                <include name="gitblt_25_white.png" />
                <include name="gitblt-favicon.png" />
                <include name="lock_go_16x16.png" />
                <include name="lock_pull_16x16.png" />
distrib/gitblit.properties
@@ -110,7 +110,14 @@
# SINCE 0.6.0
web.showFederationRegistrations = false
# This is the message display above the repositories table.
# This is the message displayed when *web.authenticateViewPages=true*.
# This can point to a file with Markdown content.
# Specifying "gitblit" uses the internal login message.
#
# SINCE 0.6.1
web.loginMessage = gitblit
# This is the message displayed above the repositories table.
# This can point to a file with Markdown content.
# Specifying "gitblit" uses the internal welcome message.
#
docs/00_index.mkd
@@ -28,6 +28,8 @@
**%VERSION%** ([go](http://code.google.com/p/gitblit/downloads/detail?name=%GO%)|[war](http://code.google.com/p/gitblit/downloads/detail?name=%WAR%)|[fedclient](http://code.google.com/p/gitblit/downloads/detail?name=%FEDCLIENT%)) based on [%JGIT%][jgit] &nbsp; *released %BUILDDATE%*
- improved: updated ui with Twitter's Bootstrap CSS toolkit
<br/>**New:** *web.loginMessage = gitblit*
- fixed: Null pointer exception if did not set federation strategy (issue 20)
- fixed: Gitblit GO allows SSL renegotiation if running on Java 1.6.0_22 or later
- added: IUserService.setup(IStoredSettings) for custom user service implementations
docs/02_federation.mkd
@@ -175,7 +175,7 @@
## Federation Pull Registration Keys
<table class="text">
<table>
<tr><th>federation.N.url</th>
<td>string</td>
<td>the url of the origin Gitblit instance *(required)*</td>
docs/04_design.mkd
@@ -10,6 +10,7 @@
### Bundled Dependencies
The following dependencies are bundled with Gitblit.
- [Bootstrap](http://twitter.github.com/bootstrap) (Apache 2.0)
- [google-code-prettify](http://code.google.com/p/google-code-prettify) (Apache 2.0)
- [Commons Daemon](http://commons.apache.org/daemon) (Apache 2.0)
- magnifying glass search icon courtesy of [Gnome](http://gnome.org) (Creative Commons CC-BY)
docs/04_releases.mkd
@@ -3,6 +3,8 @@
### Current Release
**%VERSION%** ([go](http://code.google.com/p/gitblit/downloads/detail?name=%GO%)|[war](http://code.google.com/p/gitblit/downloads/detail?name=%WAR%)|[fedclient](http://code.google.com/p/gitblit/downloads/detail?name=%FEDCLIENT%)) based on [%JGIT%][jgit] &nbsp; *released %BUILDDATE%*
- improved: updated ui with Twitter's Bootstrap CSS toolkit
<br/>**New:** *web.loginMessage = gitblit*
- fixed: Null pointer exception if did not set federation strategy (issue 20)
- fixed: Gitblit GO allows SSL renegotiation if running on Java 1.6.0_22 or later
- added: IUserService.setup(IStoredSettings) for custom user service implementations
docs/doc_footer.html
@@ -1,7 +1,9 @@
    </div>
    <div style="margin-top:10px" class="page_footer">
        <div style="float:right;">{0}</div>
    The content of this page is licensed under the <a href="http://creativecommons.org/licenses/by/3.0">Creative Commons Attribution 3.0 License</a>.
    </div>
            </div> <!-- markdown -->
            <div style="margin-top:10px" class="page_footer">
                <div style="float:right;">{0}</div>
            The content of this page is licensed under the <a href="http://creativecommons.org/licenses/by/3.0">Creative Commons Attribution 3.0 License</a>.
            </div>
        </div> <!-- content -->
    </div> <!-- container -->
</body>
</html>
docs/doc_header.html
@@ -2,7 +2,8 @@
<html>
    <head>
        <title>Gitblit</title>
        <link rel="stylesheet" type="text/css" href="./gitblit.css"/>
        <link rel="stylesheet" type="text/css" href="./bootstrap.130.css"/>
        <link rel="stylesheet" type="text/css" href="./bootstrap.gb.css"/>
        <link rel="stylesheet" type="text/css" href="./markdown.css"/>
        <link rel="shortcut icon" type="image/png" href="./gitblt-favicon.png" />
        <meta name="ROBOTS" content="INDEX, NOFOLLOW">
@@ -28,12 +29,19 @@
        <script type="text/javascript" src="prettify/prettify.js"></script>
        <link href="prettify/prettify.css" type="text/css" rel="stylesheet" />        
    </head>
    <body style="width:900px"  onload="prettyPrint()">
        <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 style="color:black;">{0}</span>
    <body style="padding-top:40px;"  onload="prettyPrint()">
        <div class="topbar">
            <div class="fill">
                <div class="container">
                    <a class="brand" href="http://gitblit.com" title="gitblit homepage">
                        <img src="gitblt_25_white.png" width="79" height="25" alt="gitblit" class="logo"/>
                    </a>
                    <ul class="nav">
                        {1}
                    </ul>
                </div>
            </div>
        </div>
        <div class="page_nav">{1}</div>
        <div class="markdown">
        <div class="container">
            <div class="content">
                <div class="markdown">
docs/site_footer.html
@@ -1,7 +1,9 @@
    </div>
    <div style="margin-top:10px" class="page_footer">
        <div style="float:right;">{0}</div>
    The content of this page is licensed under the <a href="http://creativecommons.org/licenses/by/3.0">Creative Commons Attribution 3.0 License</a>.
    </div>
            </div> <!-- markdown -->
            <div style="margin-top:10px" class="page_footer">
                <div style="float:right;">{0}</div>
            The content of this page is licensed under the <a href="http://creativecommons.org/licenses/by/3.0">Creative Commons Attribution 3.0 License</a>.
            </div>
        </div> <!-- content -->
    </div> <!-- container -->
</body>
</html>
docs/site_header.html
@@ -2,7 +2,8 @@
<html>
    <head>
        <title>Gitblit</title>
        <link rel="stylesheet" type="text/css" href="./gitblit.css"/>
        <link rel="stylesheet" type="text/css" href="./bootstrap.130.css"/>
        <link rel="stylesheet" type="text/css" href="./bootstrap.gb.css"/>
        <link rel="stylesheet" type="text/css" href="./markdown.css"/>
        <link rel="shortcut icon" type="image/png" href="./gitblt-favicon.png" />
        <meta name="ROBOTS" content="INDEX">
@@ -33,15 +34,23 @@
        
        <!-- ANALYTICS -->
    </head>
    <body style="width:900px"  onload="prettyPrint()">
        <a href="http://github.com/gitblit"><img style="position: absolute; top: 0; right: 0; border: 0;" src="https://d3nwyuy0nl342s.cloudfront.net/img/30f550e0d38ceb6ef5b81500c64d970b7fb0f028/687474703a2f2f73332e616d617a6f6e6177732e636f6d2f6769746875622f726962626f6e732f666f726b6d655f72696768745f6f72616e67655f6666373630302e706e67" alt="Fork me on GitHub"></a>
        <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 style="color:black;">{0}</span>
            <!-- Google Plus One -->
            <g:plusone></g:plusone>
    <body style="padding-top:40px;"  onload="prettyPrint()">
        <div class="topbar">
            <div class="fill">
                <div class="container">
                    <a class="brand" href="http://gitblit.com" title="gitblit homepage">
                        <img src="gitblt_25_white.png" width="79" height="25" alt="gitblit" class="logo"/>
                    </a>
                    <!-- Google Plus One -->
                    <g:plusone></g:plusone>
                    <ul class="nav">
                        {1}
                    </ul>
                </div>
            </div>
        </div>
        <div class="page_nav">{1}</div>
        <div class="markdown">
        <div class="container">
            <div class="content">
                <div class="markdown">
resources/bootstrap.gb.css
@@ -3,7 +3,7 @@
}
ul, ol {
    margin:0 !important;
    margin-bottom: 10px !important;
}
hr {
@@ -77,6 +77,7 @@
    font-size:12px;
    border:0px;
    padding: 0;
    line-height: 1.35em;
}
table {
@@ -154,6 +155,11 @@
    padding-right: 1px;
}
img.overview {
    float:right;
    border:1px solid #CCCCCC;
}
div.header, div.commitHeader, table.repositories th {
    background-color:#e0e0e0;
    background-repeat:repeat-x;
@@ -223,26 +229,41 @@
    -webkit-border-radius:0;-moz-border-radius:0x;border-radius:0;
    vertical-align: top;
    background: url(search-icon.png) no-repeat 4px center;
    color: #ddd;
    background-color: transparent;
    border: 1px solid transparent;
    outline: none;
    padding: 2px 2px 2px 22px;
    text-shadow: none;
    margin: 0px;
    color: #ddd;
}
div.search input:hover, div.search input:focus {
    background: url(search-icon.png) no-repeat 4px center;
    color: white;
    background-color: transparent;
    border: 1px solid transparent;
    padding: 2px 2px 2px 22px;
    text-shadow: none;
    color: #ddd;
    border-bottom: 1px solid #ff9900;    
    outline: none;
}
div.search input:focused {
    background: url(search-icon.png) no-repeat 4px center;
div.search input:focus {
    color: white;
    border-bottom: 1px solid #ff9900;
    outline: none;
    padding: 0 !important;
}
/* div.search input:focused { */
/*     background-color: transparent; */
/*     border: 1px solid transparent; */
/*     padding: 2px 2px 2px 22px; */
/*     text-shadow: none; */
/* } */
div.login input:focus {
    background-color: rgba(255, 255, 255, 0.6);
    text-shadow: none;
    color: white;
}
div.commit_message {
resources/login.mkd
New file
@@ -0,0 +1,3 @@
## Please Login
Pleaes enter your credentials to access this Gitblit site.
src/com/gitblit/build/BuildSite.java
@@ -91,7 +91,7 @@
        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);
src/com/gitblit/wicket/AuthorizationStrategy.java
@@ -35,6 +35,12 @@
    @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);
src/com/gitblit/wicket/GitBlitWebApp.properties
@@ -66,7 +66,7 @@
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
src/com/gitblit/wicket/pages/EditUserPage.java
@@ -182,7 +182,7 @@
            @Override
            public void onSubmit() {
                setResponsePage(RepositoriesPage.class);
                setResponsePage(UsersPage.class);
            }
        };
        cancel.setDefaultFormProcessing(false);
src/com/gitblit/wicket/pages/RepositoriesPage.java
@@ -19,6 +19,7 @@
import java.io.FileReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.text.MessageFormat;
import org.apache.wicket.Component;
import org.apache.wicket.markup.html.basic.Label;
@@ -28,6 +29,7 @@
import com.gitblit.Keys;
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.RepositoriesPanel;
@@ -37,23 +39,40 @@
        super();
        setupPage("", "");
        // 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 = 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()) {
@@ -69,16 +88,21 @@
                }
            }
        }
        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;");
        return message;
    }
    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(repositories);
        return message;
    }
}
src/com/gitblit/wicket/pages/RepositoryPage.java
@@ -136,8 +136,7 @@
                String extra = item.getModelObject();
                PageRegistration pageReg = registeredPages.get(extra);
                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);
@@ -385,7 +384,7 @@
        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"));
        }
@@ -393,6 +392,10 @@
        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;
src/com/gitblit/wicket/pages/RootPage.html
@@ -19,9 +19,11 @@
                </ul>
                
                <form class="pull-right" wicket:id="loginForm">
                    <input  wicket:id="username" class="input-small" type="text" placeholder="Username">
                    <input  wicket:id="password" class="input-small" type="password" placeholder="Password">
                    <button class="btn primary" type="submit">Sign in</button>
                    <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>
src/com/gitblit/wicket/pages/RootPage.java
@@ -32,6 +32,7 @@
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
@@ -104,8 +105,12 @@
                }
            }
        };
        loginForm.add(new TextField<String>("username", username));
        loginForm.add(new PasswordTextField("password", password));
        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)) {