Merge branch 'master' into rpc
14 files added
53 files modified
2 files deleted
| | |
| | | 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
|
| | |
| | | <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" />
|
| | |
| | | <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" />
|
| | |
| | | # 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.
|
| | | #
|
| | |
| | |
|
| | | **%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] *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
|
| | |
| | |
|
| | | ## 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>
|
| | |
| | | ### 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)
|
| | |
| | | ### 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] *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
|
| | |
| | | </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> |
| | |
| | | <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">
|
| | |
| | | <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"> |
| | |
| | | </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> |
| | |
| | | <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">
|
| | |
| | |
|
| | | <!-- 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"> |
New file |
| | |
| | | html,body{margin:0;padding:0;}
|
| | | h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,cite,code,del,dfn,em,img,q,s,samp,small,strike,strong,sub,sup,tt,var,dd,dl,dt,li,ol,ul,fieldset,form,label,legend,button,table,caption,tbody,tfoot,thead,tr,th,td{margin:0;padding:0;border:0;font-weight:normal;font-style:normal;font-size:100%;line-height:1;font-family:inherit;}
|
| | | table{border-collapse:collapse;border-spacing:0;}
|
| | | ol,ul{list-style:none;}
|
| | | q:before,q:after,blockquote:before,blockquote:after{content:"";}
|
| | | html{overflow-y:scroll;font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;}
|
| | | a:focus{outline:thin dotted;}
|
| | | a:hover,a:active{outline:0;}
|
| | | article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block;}
|
| | | audio,canvas,video{display:inline-block;*display:inline;*zoom:1;}
|
| | | audio:not([controls]){display:none;}
|
| | | sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline;}
|
| | | sup{top:-0.5em;}
|
| | | sub{bottom:-0.25em;}
|
| | | img{border:0;-ms-interpolation-mode:bicubic;}
|
| | | button,input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle;}
|
| | | button,input{line-height:normal;*overflow:visible;}
|
| | | button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0;}
|
| | | button,input[type="button"],input[type="reset"],input[type="submit"]{cursor:pointer;-webkit-appearance:button;}
|
| | | input[type="search"]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;}
|
| | | input[type="search"]::-webkit-search-decoration{-webkit-appearance:none;}
|
| | | textarea{overflow:auto;vertical-align:top;}
|
| | | html,body{background-color:#ffffff;}
|
| | | body{margin:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;font-weight:normal;line-height:18px;color:#404040;}
|
| | | .container{width:940px;margin-left:auto;margin-right:auto;zoom:1;}.container:before,.container:after{display:table;content:"";zoom:1;*display:inline;}
|
| | | .container:after{clear:both;}
|
| | | .container-fluid{position:relative;min-width:940px;padding-left:20px;padding-right:20px;zoom:1;}.container-fluid:before,.container-fluid:after{display:table;content:"";zoom:1;*display:inline;}
|
| | | .container-fluid:after{clear:both;}
|
| | | .container-fluid>.sidebar{float:left;width:220px;}
|
| | | .container-fluid>.content{margin-left:240px;}
|
| | | a{color:#0069d6;text-decoration:none;line-height:inherit;font-weight:inherit;}a:hover{color:#00438a;text-decoration:underline;}
|
| | | .pull-right{float:right;}
|
| | | .pull-left{float:left;}
|
| | | .hide{display:none;}
|
| | | .show{display:block;}
|
| | | .row{zoom:1;margin-left:-20px;}.row:before,.row:after{display:table;content:"";zoom:1;*display:inline;}
|
| | | .row:after{clear:both;}
|
| | | [class*="span"]{display:inline;float:left;margin-left:20px;}
|
| | | .span1{width:40px;}
|
| | | .span2{width:100px;}
|
| | | .span3{width:160px;}
|
| | | .span4{width:220px;}
|
| | | .span5{width:280px;}
|
| | | .span6{width:340px;}
|
| | | .span7{width:400px;}
|
| | | .span8{width:460px;}
|
| | | .span9{width:520px;}
|
| | | .span10{width:580px;}
|
| | | .span11{width:640px;}
|
| | | .span12{width:700px;}
|
| | | .span13{width:760px;}
|
| | | .span14{width:820px;}
|
| | | .span15{width:880px;}
|
| | | .span16{width:940px;}
|
| | | .span17{width:1000px;}
|
| | | .span18{width:1060px;}
|
| | | .span19{width:1120px;}
|
| | | .span20{width:1180px;}
|
| | | .span21{width:1240px;}
|
| | | .span22{width:1300px;}
|
| | | .span23{width:1360px;}
|
| | | .span24{width:1420px;}
|
| | | .offset1{margin-left:80px;}
|
| | | .offset2{margin-left:140px;}
|
| | | .offset3{margin-left:200px;}
|
| | | .offset4{margin-left:260px;}
|
| | | .offset5{margin-left:320px;}
|
| | | .offset6{margin-left:380px;}
|
| | | .offset7{margin-left:440px;}
|
| | | .offset8{margin-left:500px;}
|
| | | .offset9{margin-left:560px;}
|
| | | .offset10{margin-left:620px;}
|
| | | .offset11{margin-left:680px;}
|
| | | .offset12{margin-left:740px;}
|
| | | .span-one-third{width:300px;}
|
| | | .span-two-thirds{width:620px;}
|
| | | .offset-one-third{margin-left:340px;}
|
| | | .offset-two-thirds{margin-left:660px;}
|
| | | p{font-size:13px;font-weight:normal;line-height:18px;margin-bottom:9px;}p small{font-size:11px;color:#bfbfbf;}
|
| | | h1,h2,h3,h4,h5,h6{font-weight:bold;color:#404040;}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{color:#bfbfbf;}
|
| | | h1{margin-bottom:18px;font-size:30px;line-height:36px;}h1 small{font-size:18px;}
|
| | | h2{font-size:24px;line-height:36px;}h2 small{font-size:14px;}
|
| | | h3,h4,h5,h6{line-height:36px;}
|
| | | h3{font-size:18px;}h3 small{font-size:14px;}
|
| | | h4{font-size:16px;}h4 small{font-size:12px;}
|
| | | h5{font-size:14px;}
|
| | | h6{font-size:13px;color:#bfbfbf;text-transform:uppercase;}
|
| | | ul,ol{margin:0 0 18px 25px;}
|
| | | ul ul,ul ol,ol ol,ol ul{margin-bottom:0;}
|
| | | ul{list-style:disc;}
|
| | | ol{list-style:decimal;}
|
| | | li{line-height:18px;color:#808080;}
|
| | | ul.unstyled{list-style:none;margin-left:0;}
|
| | | dl{margin-bottom:18px;}dl dt,dl dd{line-height:18px;}
|
| | | dl dt{font-weight:bold;}
|
| | | dl dd{margin-left:9px;}
|
| | | hr{margin:20px 0 19px;border:0;border-bottom:1px solid #eee;}
|
| | | strong{font-style:inherit;font-weight:bold;}
|
| | | em{font-style:italic;font-weight:inherit;line-height:inherit;}
|
| | | .muted{color:#bfbfbf;}
|
| | | blockquote{margin-bottom:18px;border-left:5px solid #eee;padding-left:15px;}blockquote p{font-size:14px;font-weight:300;line-height:18px;margin-bottom:0;}
|
| | | blockquote small{display:block;font-size:12px;font-weight:300;line-height:18px;color:#bfbfbf;}blockquote small:before{content:'\2014 \00A0';}
|
| | | address{display:block;line-height:18px;margin-bottom:18px;}
|
| | | code,pre{padding:0 3px 2px;font-family:Monaco, Andale Mono, Courier New, monospace;font-size:12px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}
|
| | | code{background-color:#fee9cc;color:rgba(0, 0, 0, 0.75);padding:1px 3px;}
|
| | | pre{background-color:#f5f5f5;display:block;padding:8.5px;margin:0 0 18px;line-height:18px;font-size:12px;border:1px solid #ccc;border:1px solid rgba(0, 0, 0, 0.15);-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;white-space:pre;white-space:pre-wrap;word-wrap:break-word;}
|
| | | form{margin-bottom:18px;}
|
| | | fieldset{margin-bottom:18px;padding-top:18px;}fieldset legend{display:block;padding-left:150px;font-size:19.5px;line-height:1;color:#404040;*padding:0 0 5px 145px;*line-height:1.5;}
|
| | | form .clearfix{margin-bottom:18px;zoom:1;}form .clearfix:before,form .clearfix:after{display:table;content:"";zoom:1;*display:inline;}
|
| | | form .clearfix:after{clear:both;}
|
| | | label,input,select,textarea{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;font-weight:normal;line-height:normal;}
|
| | | label{padding-top:6px;font-size:13px;line-height:18px;float:left;width:130px;text-align:right;color:#404040;}
|
| | | form .input{margin-left:150px;}
|
| | | input[type=checkbox],input[type=radio]{cursor:pointer;}
|
| | | input,textarea,select,.uneditable-input{display:inline-block;width:210px;height:18px;padding:4px;font-size:13px;line-height:18px;color:#808080;border:1px solid #ccc;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}
|
| | | input[type=checkbox],input[type=radio]{width:auto;height:auto;padding:0;margin:3px 0;*margin-top:0;line-height:normal;border:none;}
|
| | | input[type=file]{background-color:#ffffff;padding:initial;border:initial;line-height:initial;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;}
|
| | | input[type=button],input[type=reset],input[type=submit]{width:auto;height:auto;}
|
| | | select,input[type=file]{height:27px;line-height:27px;*margin-top:4px;}
|
| | | select[multiple]{height:inherit;}
|
| | | textarea{height:auto;}
|
| | | .uneditable-input{background-color:#ffffff;display:block;border-color:#eee;-webkit-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.025);-moz-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.025);box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.025);cursor:not-allowed;}
|
| | | :-moz-placeholder{color:#bfbfbf;}
|
| | | ::-webkit-input-placeholder{color:#bfbfbf;}
|
| | | input,textarea{-webkit-transition:border linear 0.2s,box-shadow linear 0.2s;-moz-transition:border linear 0.2s,box-shadow linear 0.2s;-ms-transition:border linear 0.2s,box-shadow linear 0.2s;-o-transition:border linear 0.2s,box-shadow linear 0.2s;transition:border linear 0.2s,box-shadow linear 0.2s;-webkit-box-shadow:inset 0 1px 3px rgba(0, 0, 0, 0.1);-moz-box-shadow:inset 0 1px 3px rgba(0, 0, 0, 0.1);box-shadow:inset 0 1px 3px rgba(0, 0, 0, 0.1);}
|
| | | input:focus,textarea:focus{outline:0;border-color:rgba(82, 168, 236, 0.8);-webkit-box-shadow:inset 0 1px 3px rgba(0, 0, 0, 0.1),0 0 8px rgba(82, 168, 236, 0.6);-moz-box-shadow:inset 0 1px 3px rgba(0, 0, 0, 0.1),0 0 8px rgba(82, 168, 236, 0.6);box-shadow:inset 0 1px 3px rgba(0, 0, 0, 0.1),0 0 8px rgba(82, 168, 236, 0.6);}
|
| | | input[type=file]:focus,input[type=checkbox]:focus,select:focus{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;outline:1px dotted #666;}
|
| | | form div.clearfix.error{background:#fae5e3;padding:10px 0;margin:-10px 0 10px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}form div.clearfix.error>label,form div.clearfix.error span.help-inline,form div.clearfix.error span.help-block{color:#9d261d;}
|
| | | form div.clearfix.error input,form div.clearfix.error textarea{border-color:#c87872;-webkit-box-shadow:0 0 3px rgba(171, 41, 32, 0.25);-moz-box-shadow:0 0 3px rgba(171, 41, 32, 0.25);box-shadow:0 0 3px rgba(171, 41, 32, 0.25);}form div.clearfix.error input:focus,form div.clearfix.error textarea:focus{border-color:#b9554d;-webkit-box-shadow:0 0 6px rgba(171, 41, 32, 0.5);-moz-box-shadow:0 0 6px rgba(171, 41, 32, 0.5);box-shadow:0 0 6px rgba(171, 41, 32, 0.5);}
|
| | | form div.clearfix.error .input-prepend span.add-on,form div.clearfix.error .input-append span.add-on{background:#f4c8c5;border-color:#c87872;color:#b9554d;}
|
| | | .input-mini,input.mini,textarea.mini,select.mini{width:60px;}
|
| | | .input-small,input.small,textarea.small,select.small{width:90px;}
|
| | | .input-medium,input.medium,textarea.medium,select.medium{width:150px;}
|
| | | .input-large,input.large,textarea.large,select.large{width:210px;}
|
| | | .input-xlarge,input.xlarge,textarea.xlarge,select.xlarge{width:270px;}
|
| | | .input-xxlarge,input.xxlarge,textarea.xxlarge,select.xxlarge{width:530px;}
|
| | | textarea.xxlarge{overflow-y:auto;}
|
| | | input.span1,textarea.span1,select.span1{display:inline-block;float:none;width:30px;margin-left:0;}
|
| | | input.span2,textarea.span2,select.span2{display:inline-block;float:none;width:90px;margin-left:0;}
|
| | | input.span3,textarea.span3,select.span3{display:inline-block;float:none;width:150px;margin-left:0;}
|
| | | input.span4,textarea.span4,select.span4{display:inline-block;float:none;width:210px;margin-left:0;}
|
| | | input.span5,textarea.span5,select.span5{display:inline-block;float:none;width:270px;margin-left:0;}
|
| | | input.span6,textarea.span6,select.span6{display:inline-block;float:none;width:330px;margin-left:0;}
|
| | | input.span7,textarea.span7,select.span7{display:inline-block;float:none;width:390px;margin-left:0;}
|
| | | input.span8,textarea.span8,select.span8{display:inline-block;float:none;width:450px;margin-left:0;}
|
| | | input.span9,textarea.span9,select.span9{display:inline-block;float:none;width:510px;margin-left:0;}
|
| | | input.span10,textarea.span10,select.span10{display:inline-block;float:none;width:570px;margin-left:0;}
|
| | | input.span11,textarea.span11,select.span11{display:inline-block;float:none;width:630px;margin-left:0;}
|
| | | input.span12,textarea.span12,select.span12{display:inline-block;float:none;width:690px;margin-left:0;}
|
| | | input.span13,textarea.span13,select.span13{display:inline-block;float:none;width:750px;margin-left:0;}
|
| | | input.span14,textarea.span14,select.span14{display:inline-block;float:none;width:810px;margin-left:0;}
|
| | | input.span15,textarea.span15,select.span15{display:inline-block;float:none;width:870px;margin-left:0;}
|
| | | input.span16,textarea.span16,select.span16{display:inline-block;float:none;width:930px;margin-left:0;}
|
| | | input[disabled],select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{background-color:#f5f5f5;border-color:#ddd;cursor:not-allowed;}
|
| | | .actions{background:#f5f5f5;margin-top:18px;margin-bottom:18px;padding:17px 20px 18px 150px;border-top:1px solid #ddd;-webkit-border-radius:0 0 3px 3px;-moz-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px;}.actions .secondary-action{float:right;}.actions .secondary-action a{line-height:30px;}.actions .secondary-action a:hover{text-decoration:underline;}
|
| | | .help-inline,.help-block{font-size:11px;line-height:18px;color:#bfbfbf;}
|
| | | .help-inline{padding-left:5px;*position:relative;*top:-5px;}
|
| | | .help-block{display:block;max-width:600px;}
|
| | | .inline-inputs{color:#808080;}.inline-inputs span,.inline-inputs input{display:inline-block;}
|
| | | .inline-inputs input.mini{width:60px;}
|
| | | .inline-inputs input.small{width:90px;}
|
| | | .inline-inputs span{padding:0 2px 0 1px;}
|
| | | .input-prepend input,.input-append input{-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0;}
|
| | | .input-prepend .add-on,.input-append .add-on{position:relative;background:#f5f5f5;border:1px solid #ccc;z-index:2;float:left;display:block;width:auto;min-width:16px;height:18px;padding:4px 4px 4px 5px;margin-right:-1px;font-weight:normal;line-height:18px;color:#bfbfbf;text-align:center;text-shadow:0 1px 0 #ffffff;-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px;}
|
| | | .input-prepend .active,.input-append .active{background:#a9dba9;border-color:#46a546;}
|
| | | .input-prepend .add-on{*margin-top:1px;}
|
| | | .input-append input{float:left;-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px;}
|
| | | .input-append .add-on{-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0;margin-right:0;margin-left:-1px;}
|
| | | .inputs-list{margin:0 0 5px;width:100%;}.inputs-list li{display:block;padding:0;width:100%;}
|
| | | .inputs-list label{display:block;float:none;width:auto;padding:0;line-height:18px;text-align:left;white-space:normal;}.inputs-list label strong{color:#808080;}
|
| | | .inputs-list label small{font-size:11px;font-weight:normal;}
|
| | | .inputs-list .inputs-list{margin-left:25px;margin-bottom:10px;padding-top:0;}
|
| | | .inputs-list:first-child{padding-top:6px;}
|
| | | .inputs-list li+li{padding-top:2px;}
|
| | | .inputs-list input[type=radio],.inputs-list input[type=checkbox]{margin-bottom:0;}
|
| | | .form-stacked{padding-left:20px;}.form-stacked fieldset{padding-top:9px;}
|
| | | .form-stacked legend{padding-left:0;}
|
| | | .form-stacked label{display:block;float:none;width:auto;font-weight:bold;text-align:left;line-height:20px;padding-top:0;}
|
| | | .form-stacked .clearfix{margin-bottom:9px;}.form-stacked .clearfix div.input{margin-left:0;}
|
| | | .form-stacked .inputs-list{margin-bottom:0;}.form-stacked .inputs-list li{padding-top:0;}.form-stacked .inputs-list li label{font-weight:normal;padding-top:0;}
|
| | | .form-stacked div.clearfix.error{padding-top:10px;padding-bottom:10px;padding-left:10px;margin-top:0;margin-left:-10px;}
|
| | | .form-stacked .actions{margin-left:-20px;padding-left:20px;}
|
| | | table{width:100%;margin-bottom:18px;padding:0;border-collapse:separate;*border-collapse:collapse;font-size:13px;border:1px solid #ddd;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}table th,table td{padding:10px 10px 9px;line-height:18px;text-align:left;}
|
| | | table th{padding-top:9px;font-weight:bold;vertical-align:middle;border-bottom:1px solid #ddd;}
|
| | | table td{vertical-align:top;}
|
| | | table th+th,table td+td{border-left:1px solid #ddd;}
|
| | | table tr+tr td{border-top:1px solid #ddd;}
|
| | | table tbody tr:first-child td:first-child{-webkit-border-radius:4px 0 0 0;-moz-border-radius:4px 0 0 0;border-radius:4px 0 0 0;}
|
| | | table tbody tr:first-child td:last-child{-webkit-border-radius:0 4px 0 0;-moz-border-radius:0 4px 0 0;border-radius:0 4px 0 0;}
|
| | | table tbody tr:last-child td:first-child{-webkit-border-radius:0 0 0 4px;-moz-border-radius:0 0 0 4px;border-radius:0 0 0 4px;}
|
| | | table tbody tr:last-child td:last-child{-webkit-border-radius:0 0 4px 0;-moz-border-radius:0 0 4px 0;border-radius:0 0 4px 0;}
|
| | | .zebra-striped tbody tr:nth-child(odd) td{background-color:#f9f9f9;}
|
| | | .zebra-striped tbody tr:hover td{background-color:#f5f5f5;}
|
| | | table .header{cursor:pointer;}table .header:after{content:"";float:right;margin-top:7px;border-width:0 4px 4px;border-style:solid;border-color:#000 transparent;visibility:hidden;}
|
| | | table .headerSortUp,table .headerSortDown{background-color:rgba(141, 192, 219, 0.25);text-shadow:0 1px 1px rgba(255, 255, 255, 0.75);}
|
| | | table .header:hover:after{visibility:visible;}
|
| | | table .headerSortDown:after,table .headerSortDown:hover:after{visibility:visible;filter:alpha(opacity=60);-khtml-opacity:0.6;-moz-opacity:0.6;opacity:0.6;}
|
| | | table .headerSortUp:after{border-bottom:none;border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid #000;visibility:visible;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;filter:alpha(opacity=60);-khtml-opacity:0.6;-moz-opacity:0.6;opacity:0.6;}
|
| | | table .blue{color:#049cdb;border-bottom-color:#049cdb;}
|
| | | table .headerSortUp.blue,table .headerSortDown.blue{background-color:#ade6fe;}
|
| | | table .green{color:#46a546;border-bottom-color:#46a546;}
|
| | | table .headerSortUp.green,table .headerSortDown.green{background-color:#cdeacd;}
|
| | | table .red{color:#9d261d;border-bottom-color:#9d261d;}
|
| | | table .headerSortUp.red,table .headerSortDown.red{background-color:#f4c8c5;}
|
| | | table .yellow{color:#ffc40d;border-bottom-color:#ffc40d;}
|
| | | table .headerSortUp.yellow,table .headerSortDown.yellow{background-color:#fff6d9;}
|
| | | table .orange{color:#f89406;border-bottom-color:#f89406;}
|
| | | table .headerSortUp.orange,table .headerSortDown.orange{background-color:#fee9cc;}
|
| | | table .purple{color:#7a43b6;border-bottom-color:#7a43b6;}
|
| | | table .headerSortUp.purple,table .headerSortDown.purple{background-color:#e2d5f0;}
|
| | | .topbar{height:40px;position:fixed;top:0;left:0;right:0;z-index:10000;overflow:visible;}.topbar a{color:#bfbfbf;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);}
|
| | | .topbar h3 a:hover,.topbar .brand a:hover,.topbar ul .active>a{background-color:#333;background-color:rgba(255, 255, 255, 0.05);color:#ffffff;text-decoration:none;}
|
| | | .topbar h3{position:relative;}
|
| | | .topbar h3 a,.topbar .brand{float:left;display:block;padding:8px 20px 12px;margin-left:-20px;color:#ffffff;font-size:20px;font-weight:200;line-height:1;}
|
| | | .topbar p{margin:0;line-height:40px;}.topbar p a:hover{background-color:transparent;color:#ffffff;}
|
| | | .topbar form{float:left;margin:5px 0 0 0;position:relative;filter:alpha(opacity=100);-khtml-opacity:1;-moz-opacity:1;opacity:1;}
|
| | | .topbar form.pull-right{float:right;}
|
| | | .topbar input{background-color:#444;background-color:rgba(255, 255, 255, 0.3);font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:normal;font-weight:13px;line-height:1;padding:4px 9px;color:#ffffff;color:rgba(255, 255, 255, 0.75);border:1px solid #111;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1),0 1px 0px rgba(255, 255, 255, 0.25);-moz-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1),0 1px 0px rgba(255, 255, 255, 0.25);box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1),0 1px 0px rgba(255, 255, 255, 0.25);-webkit-transition:none;-moz-transition:none;-ms-transition:none;-o-transition:none;transition:none;}.topbar input:-moz-placeholder{color:#e6e6e6;}
|
| | | .topbar input::-webkit-input-placeholder{color:#e6e6e6;}
|
| | | .topbar input:hover{background-color:#bfbfbf;background-color:rgba(255, 255, 255, 0.5);color:#ffffff;}
|
| | | .topbar input:focus,.topbar input.focused{outline:0;background-color:#ffffff;color:#404040;text-shadow:0 1px 0 #ffffff;border:0;padding:5px 10px;-webkit-box-shadow:0 0 3px rgba(0, 0, 0, 0.15);-moz-box-shadow:0 0 3px rgba(0, 0, 0, 0.15);box-shadow:0 0 3px rgba(0, 0, 0, 0.15);}
|
| | | .topbar-inner,.topbar .fill{background-color:#222;background-color:#222222;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#333333), to(#222222));background-image:-moz-linear-gradient(top, #333333, #222222);background-image:-ms-linear-gradient(top, #333333, #222222);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #333333), color-stop(100%, #222222));background-image:-webkit-linear-gradient(top, #333333, #222222);background-image:-o-linear-gradient(top, #333333, #222222);background-image:linear-gradient(top, #333333, #222222);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#333333', endColorstr='#222222', GradientType=0);-webkit-box-shadow:0 1px 3px rgba(0, 0, 0, 0.25),inset 0 -1px 0 rgba(0, 0, 0, 0.1);-moz-box-shadow:0 1px 3px rgba(0, 0, 0, 0.25),inset 0 -1px 0 rgba(0, 0, 0, 0.1);box-shadow:0 1px 3px rgba(0, 0, 0, 0.25),inset 0 -1px 0 rgba(0, 0, 0, 0.1);}
|
| | | .topbar div>ul,.nav{display:block;float:left;margin:0 10px 0 0;position:relative;left:0;}.topbar div>ul>li,.nav>li{display:block;float:left;}
|
| | | .topbar div>ul a,.nav a{display:block;float:none;padding:10px 10px 11px;line-height:19px;text-decoration:none;}.topbar div>ul a:hover,.nav a:hover{color:#ffffff;text-decoration:none;}
|
| | | .topbar div>ul .active>a,.nav .active>a{background-color:#222;background-color:rgba(0, 0, 0, 0.5);}
|
| | | .topbar div>ul.secondary-nav,.nav.secondary-nav{float:right;margin-left:10px;margin-right:0;}.topbar div>ul.secondary-nav .menu-dropdown,.nav.secondary-nav .menu-dropdown,.topbar div>ul.secondary-nav .dropdown-menu,.nav.secondary-nav .dropdown-menu{right:0;border:0;}
|
| | | .topbar div>ul a.menu:hover,.nav a.menu:hover,.topbar div>ul li.open .menu,.nav li.open .menu,.topbar div>ul .dropdown-toggle:hover,.nav .dropdown-toggle:hover,.topbar div>ul .dropdown.open .dropdown-toggle,.nav .dropdown.open .dropdown-toggle{background:#444;background:rgba(255, 255, 255, 0.05);}
|
| | | .topbar div>ul .menu-dropdown,.nav .menu-dropdown,.topbar div>ul .dropdown-menu,.nav .dropdown-menu{background-color:#333;}.topbar div>ul .menu-dropdown a.menu,.nav .menu-dropdown a.menu,.topbar div>ul .dropdown-menu a.menu,.nav .dropdown-menu a.menu,.topbar div>ul .menu-dropdown .dropdown-toggle,.nav .menu-dropdown .dropdown-toggle,.topbar div>ul .dropdown-menu .dropdown-toggle,.nav .dropdown-menu .dropdown-toggle{color:#ffffff;}.topbar div>ul .menu-dropdown a.menu.open,.nav .menu-dropdown a.menu.open,.topbar div>ul .dropdown-menu a.menu.open,.nav .dropdown-menu a.menu.open,.topbar div>ul .menu-dropdown .dropdown-toggle.open,.nav .menu-dropdown .dropdown-toggle.open,.topbar div>ul .dropdown-menu .dropdown-toggle.open,.nav .dropdown-menu .dropdown-toggle.open{background:#444;background:rgba(255, 255, 255, 0.05);}
|
| | | .topbar div>ul .menu-dropdown li a,.nav .menu-dropdown li a,.topbar div>ul .dropdown-menu li a,.nav .dropdown-menu li a{color:#999;text-shadow:0 1px 0 rgba(0, 0, 0, 0.5);}.topbar div>ul .menu-dropdown li a:hover,.nav .menu-dropdown li a:hover,.topbar div>ul .dropdown-menu li a:hover,.nav .dropdown-menu li a:hover{background-color:#191919;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#292929), to(#191919));background-image:-moz-linear-gradient(top, #292929, #191919);background-image:-ms-linear-gradient(top, #292929, #191919);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #292929), color-stop(100%, #191919));background-image:-webkit-linear-gradient(top, #292929, #191919);background-image:-o-linear-gradient(top, #292929, #191919);background-image:linear-gradient(top, #292929, #191919);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#292929', endColorstr='#191919', GradientType=0);color:#ffffff;}
|
| | | .topbar div>ul .menu-dropdown .active a,.nav .menu-dropdown .active a,.topbar div>ul .dropdown-menu .active a,.nav .dropdown-menu .active a{color:#ffffff;}
|
| | | .topbar div>ul .menu-dropdown .divider,.nav .menu-dropdown .divider,.topbar div>ul .dropdown-menu .divider,.nav .dropdown-menu .divider{background-color:#222;border-color:#444;}
|
| | | .topbar ul .menu-dropdown li a,.topbar ul .dropdown-menu li a{padding:4px 15px;}
|
| | | li.menu,.dropdown{position:relative;}
|
| | | a.menu:after,.dropdown-toggle:after{width:0;height:0;display:inline-block;content:"↓";text-indent:-99999px;vertical-align:top;margin-top:8px;margin-left:4px;border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid #ffffff;filter:alpha(opacity=50);-khtml-opacity:0.5;-moz-opacity:0.5;opacity:0.5;}
|
| | | .menu-dropdown,.dropdown-menu{background-color:#ffffff;float:left;display:none;position:absolute;top:40px;z-index:900;min-width:160px;max-width:220px;_width:160px;margin-left:0;margin-right:0;padding:6px 0;zoom:1;border-color:#999;border-color:rgba(0, 0, 0, 0.2);border-style:solid;border-width:0 1px 1px;-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;-webkit-box-shadow:0 2px 4px rgba(0, 0, 0, 0.2);-moz-box-shadow:0 2px 4px rgba(0, 0, 0, 0.2);box-shadow:0 2px 4px rgba(0, 0, 0, 0.2);-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box;}.menu-dropdown li,.dropdown-menu li{float:none;display:block;background-color:none;}
|
| | | .menu-dropdown .divider,.dropdown-menu .divider{height:1px;margin:5px 0;overflow:hidden;background-color:#eee;border-bottom:1px solid #ffffff;}
|
| | | .topbar .dropdown-menu a,.dropdown-menu a{display:block;padding:4px 15px;clear:both;font-weight:normal;line-height:18px;color:#808080;text-shadow:0 1px 0 #ffffff;}.topbar .dropdown-menu a:hover,.dropdown-menu a:hover{background-color:#dddddd;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#eeeeee), to(#dddddd));background-image:-moz-linear-gradient(top, #eeeeee, #dddddd);background-image:-ms-linear-gradient(top, #eeeeee, #dddddd);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #eeeeee), color-stop(100%, #dddddd));background-image:-webkit-linear-gradient(top, #eeeeee, #dddddd);background-image:-o-linear-gradient(top, #eeeeee, #dddddd);background-image:linear-gradient(top, #eeeeee, #dddddd);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#dddddd', GradientType=0);color:#404040;text-decoration:none;-webkit-box-shadow:inset 0 1px 0 rgba(0, 0, 0, 0.025),inset 0 -1px rgba(0, 0, 0, 0.025);-moz-box-shadow:inset 0 1px 0 rgba(0, 0, 0, 0.025),inset 0 -1px rgba(0, 0, 0, 0.025);box-shadow:inset 0 1px 0 rgba(0, 0, 0, 0.025),inset 0 -1px rgba(0, 0, 0, 0.025);}
|
| | | .open .menu,.dropdown.open .menu,.open .dropdown-toggle,.dropdown.open .dropdown-toggle{color:#ffffff;background:#ccc;background:rgba(0, 0, 0, 0.3);}
|
| | | .open .menu-dropdown,.dropdown.open .menu-dropdown,.open .dropdown-menu,.dropdown.open .dropdown-menu{display:block;}
|
| | | .tabs,.pills{margin:0 0 20px;padding:0;list-style:none;zoom:1;}.tabs:before,.pills:before,.tabs:after,.pills:after{display:table;content:"";zoom:1;*display:inline;}
|
| | | .tabs:after,.pills:after{clear:both;}
|
| | | .tabs>li,.pills>li{float:left;}.tabs>li>a,.pills>li>a{display:block;}
|
| | | .tabs{float:left;width:100%;border-bottom:1px solid #ddd;}.tabs>li{position:relative;top:1px;}.tabs>li>a{padding:0 15px;margin-right:2px;line-height:36px;border:1px solid transparent;-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0;}.tabs>li>a:hover{text-decoration:none;background-color:#eee;border-color:#eee #eee #ddd;}
|
| | | .tabs>li.active>a{color:#808080;background-color:#ffffff;border:1px solid #ddd;border-bottom-color:transparent;}
|
| | | .tabs .menu-dropdown,.tabs .dropdown-menu{top:35px;border-width:1px;-webkit-border-radius:0 6px 6px 6px;-moz-border-radius:0 6px 6px 6px;border-radius:0 6px 6px 6px;}
|
| | | .tabs a.menu:after,.tabs .dropdown-toggle:after{border-top-color:#999;margin-top:15px;margin-left:5px;}
|
| | | .tabs li.open.menu .menu,.tabs .open.dropdown .dropdown-toggle{border-color:#999;}
|
| | | .tabs li.open a.menu:after,.tabs .dropdown.open .dropdown-toggle:after{border-top-color:#555;}
|
| | | .tab-content{clear:both;}
|
| | | .pills a{margin:5px 3px 5px 0;padding:0 15px;text-shadow:0 1px 1px #ffffff;line-height:30px;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px;}.pills a:hover{background:#00438a;color:#ffffff;text-decoration:none;text-shadow:0 1px 1px rgba(0, 0, 0, 0.25);}
|
| | | .pills .active a{background:#0069d6;color:#ffffff;text-shadow:0 1px 1px rgba(0, 0, 0, 0.25);}
|
| | | .tab-content>*,.pill-content>*{display:none;}
|
| | | .tab-content>.active,.pill-content>.active{display:block;}
|
| | | .breadcrumb{margin:0 0 18px;padding:7px 14px;background-color:#f5f5f5;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#ffffff), to(#f5f5f5));background-image:-moz-linear-gradient(top, #ffffff, #f5f5f5);background-image:-ms-linear-gradient(top, #ffffff, #f5f5f5);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #ffffff), color-stop(100%, #f5f5f5));background-image:-webkit-linear-gradient(top, #ffffff, #f5f5f5);background-image:-o-linear-gradient(top, #ffffff, #f5f5f5);background-image:linear-gradient(top, #ffffff, #f5f5f5);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#f5f5f5', GradientType=0);border:1px solid #ddd;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-shadow:inset 0 1px 0 #ffffff;-moz-box-shadow:inset 0 1px 0 #ffffff;box-shadow:inset 0 1px 0 #ffffff;}.breadcrumb li{display:inline;text-shadow:0 1px 0 #ffffff;}
|
| | | .breadcrumb .divider{padding:0 5px;color:#bfbfbf;}
|
| | | .breadcrumb .active a{color:#404040;}
|
| | | .hero-unit{background-color:#f5f5f5;margin-bottom:30px;padding:60px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;}.hero-unit h1{margin-bottom:0;font-size:60px;line-height:1;letter-spacing:-1px;}
|
| | | .hero-unit p{font-size:18px;font-weight:200;line-height:27px;}
|
| | | footer{margin-top:17px;padding-top:17px;border-top:1px solid #eee;}
|
| | | .page-header{margin-bottom:17px;border-bottom:1px solid #ddd;-webkit-box-shadow:0 1px 0 rgba(255, 255, 255, 0.5);-moz-box-shadow:0 1px 0 rgba(255, 255, 255, 0.5);box-shadow:0 1px 0 rgba(255, 255, 255, 0.5);}.page-header h1{margin-bottom:8px;}
|
| | | .btn.danger,.alert-message.danger,.btn.danger:hover,.alert-message.danger:hover,.btn.error,.alert-message.error,.btn.error:hover,.alert-message.error:hover,.btn.success,.alert-message.success,.btn.success:hover,.alert-message.success:hover,.btn.info,.alert-message.info,.btn.info:hover,.alert-message.info:hover{color:#ffffff;}
|
| | | .btn.danger,.alert-message.danger,.btn.error,.alert-message.error{background-color:#c43c35;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#ee5f5b), to(#c43c35));background-image:-moz-linear-gradient(top, #ee5f5b, #c43c35);background-image:-ms-linear-gradient(top, #ee5f5b, #c43c35);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #ee5f5b), color-stop(100%, #c43c35));background-image:-webkit-linear-gradient(top, #ee5f5b, #c43c35);background-image:-o-linear-gradient(top, #ee5f5b, #c43c35);background-image:linear-gradient(top, #ee5f5b, #c43c35);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#c43c35', GradientType=0);text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);border-color:#c43c35 #c43c35 #882a25;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);}
|
| | | .btn.success,.alert-message.success{background-color:#57a957;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#62c462), to(#57a957));background-image:-moz-linear-gradient(top, #62c462, #57a957);background-image:-ms-linear-gradient(top, #62c462, #57a957);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #62c462), color-stop(100%, #57a957));background-image:-webkit-linear-gradient(top, #62c462, #57a957);background-image:-o-linear-gradient(top, #62c462, #57a957);background-image:linear-gradient(top, #62c462, #57a957);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#57a957', GradientType=0);text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);border-color:#57a957 #57a957 #3d773d;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);}
|
| | | .btn.info,.alert-message.info{background-color:#339bb9;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#5bc0de), to(#339bb9));background-image:-moz-linear-gradient(top, #5bc0de, #339bb9);background-image:-ms-linear-gradient(top, #5bc0de, #339bb9);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #5bc0de), color-stop(100%, #339bb9));background-image:-webkit-linear-gradient(top, #5bc0de, #339bb9);background-image:-o-linear-gradient(top, #5bc0de, #339bb9);background-image:linear-gradient(top, #5bc0de, #339bb9);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#339bb9', GradientType=0);text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);border-color:#339bb9 #339bb9 #22697d;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);}
|
| | | .btn{cursor:pointer;display:inline-block;background-color:#e6e6e6;background-repeat:no-repeat;background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), color-stop(25%, #ffffff), to(#e6e6e6));background-image:-webkit-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);background-image:-moz-linear-gradient(top, #ffffff, #ffffff 25%, #e6e6e6);background-image:-ms-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);background-image:-o-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);background-image:linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#e6e6e6', GradientType=0);padding:5px 14px 6px;text-shadow:0 1px 1px rgba(255, 255, 255, 0.75);color:#333;font-size:13px;line-height:normal;border:1px solid #ccc;border-bottom-color:#bbb;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.2),0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.2),0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.2),0 1px 2px rgba(0, 0, 0, 0.05);-webkit-transition:0.1s linear all;-moz-transition:0.1s linear all;-ms-transition:0.1s linear all;-o-transition:0.1s linear all;transition:0.1s linear all;}.btn:hover{background-position:0 -15px;color:#333;text-decoration:none;}
|
| | | .btn:focus{outline:1px dotted #666;}
|
| | | .btn.primary{color:#ffffff;background-color:#0064cd;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#049cdb), to(#0064cd));background-image:-moz-linear-gradient(top, #049cdb, #0064cd);background-image:-ms-linear-gradient(top, #049cdb, #0064cd);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #049cdb), color-stop(100%, #0064cd));background-image:-webkit-linear-gradient(top, #049cdb, #0064cd);background-image:-o-linear-gradient(top, #049cdb, #0064cd);background-image:linear-gradient(top, #049cdb, #0064cd);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#049cdb', endColorstr='#0064cd', GradientType=0);text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);border-color:#0064cd #0064cd #003f81;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);}
|
| | | .btn:active{-webkit-box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.25),0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.25),0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.25),0 1px 2px rgba(0, 0, 0, 0.05);}
|
| | | .btn.disabled{cursor:default;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);filter:alpha(opacity=65);-khtml-opacity:0.65;-moz-opacity:0.65;opacity:0.65;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;}
|
| | | .btn[disabled]{cursor:default;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);filter:alpha(opacity=65);-khtml-opacity:0.65;-moz-opacity:0.65;opacity:0.65;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;}
|
| | | .btn.large{font-size:15px;line-height:normal;padding:9px 14px 9px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;}
|
| | | .btn.small{padding:7px 9px 7px;font-size:11px;}
|
| | | :root .alert-message,:root .btn{border-radius:0 \0;}
|
| | | button.btn::-moz-focus-inner,input[type=submit].btn::-moz-focus-inner{padding:0;border:0;}
|
| | | .close{float:right;color:#000000;font-size:20px;font-weight:bold;line-height:13.5px;text-shadow:0 1px 0 #ffffff;filter:alpha(opacity=20);-khtml-opacity:0.2;-moz-opacity:0.2;opacity:0.2;}.close:hover{color:#000000;text-decoration:none;filter:alpha(opacity=40);-khtml-opacity:0.4;-moz-opacity:0.4;opacity:0.4;}
|
| | | .alert-message{position:relative;padding:7px 15px;margin-bottom:18px;color:#404040;background-color:#eedc94;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#fceec1), to(#eedc94));background-image:-moz-linear-gradient(top, #fceec1, #eedc94);background-image:-ms-linear-gradient(top, #fceec1, #eedc94);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #fceec1), color-stop(100%, #eedc94));background-image:-webkit-linear-gradient(top, #fceec1, #eedc94);background-image:-o-linear-gradient(top, #fceec1, #eedc94);background-image:linear-gradient(top, #fceec1, #eedc94);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fceec1', endColorstr='#eedc94', GradientType=0);text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);border-color:#eedc94 #eedc94 #e4c652;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);text-shadow:0 1px 0 rgba(255, 255, 255, 0.5);border-width:1px;border-style:solid;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.25);-moz-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.25);box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.25);}.alert-message .close{*margin-top:3px;}
|
| | | .alert-message h5{line-height:18px;}
|
| | | .alert-message p{margin-bottom:0;}
|
| | | .alert-message div{margin-top:5px;margin-bottom:2px;line-height:28px;}
|
| | | .alert-message .btn{-webkit-box-shadow:0 1px 0 rgba(255, 255, 255, 0.25);-moz-box-shadow:0 1px 0 rgba(255, 255, 255, 0.25);box-shadow:0 1px 0 rgba(255, 255, 255, 0.25);}
|
| | | .alert-message.block-message{background-image:none;background-color:#fdf5d9;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);padding:14px;border-color:#fceec1;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;}.alert-message.block-message ul,.alert-message.block-message p{margin-right:30px;}
|
| | | .alert-message.block-message ul{margin-bottom:0;}
|
| | | .alert-message.block-message li{color:#404040;}
|
| | | .alert-message.block-message .alert-actions{margin-top:5px;}
|
| | | .alert-message.block-message.error,.alert-message.block-message.success,.alert-message.block-message.info{color:#404040;text-shadow:0 1px 0 rgba(255, 255, 255, 0.5);}
|
| | | .alert-message.block-message.error{background-color:#fddfde;border-color:#fbc7c6;}
|
| | | .alert-message.block-message.success{background-color:#d1eed1;border-color:#bfe7bf;}
|
| | | .alert-message.block-message.info{background-color:#ddf4fb;border-color:#c6edf9;}
|
| | | .pagination{height:36px;margin:18px 0;}.pagination ul{float:left;margin:0;border:1px solid #ddd;border:1px solid rgba(0, 0, 0, 0.15);-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:0 1px 2px rgba(0, 0, 0, 0.05);}
|
| | | .pagination li{display:inline;}
|
| | | .pagination a{float:left;padding:0 14px;line-height:34px;border-right:1px solid;border-right-color:#ddd;border-right-color:rgba(0, 0, 0, 0.15);*border-right-color:#ddd;text-decoration:none;}
|
| | | .pagination a:hover,.pagination .active a{background-color:#c7eefe;}
|
| | | .pagination .disabled a,.pagination .disabled a:hover{background-color:transparent;color:#bfbfbf;}
|
| | | .pagination .next a{border:0;}
|
| | | .well{background-color:#f5f5f5;margin-bottom:20px;padding:19px;min-height:20px;border:1px solid #eee;border:1px solid rgba(0, 0, 0, 0.05);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);}.well blockquote{border-color:#ddd;border-color:rgba(0, 0, 0, 0.15);}
|
| | | .modal-backdrop{background-color:#000000;position:fixed;top:0;left:0;right:0;bottom:0;z-index:10000;}.modal-backdrop.fade{opacity:0;}
|
| | | .modal-backdrop,.modal-backdrop.fade.in{filter:alpha(opacity=80);-khtml-opacity:0.8;-moz-opacity:0.8;opacity:0.8;}
|
| | | .modal{position:fixed;top:50%;left:50%;z-index:11000;width:560px;margin:-250px 0 0 -250px;background-color:#ffffff;border:1px solid #999;border:1px solid rgba(0, 0, 0, 0.3);*border:1px solid #999;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);-moz-box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box;}.modal .close{margin-top:7px;}
|
| | | .modal.fade{-webkit-transition:opacity .3s linear, top .3s ease-out;-moz-transition:opacity .3s linear, top .3s ease-out;-ms-transition:opacity .3s linear, top .3s ease-out;-o-transition:opacity .3s linear, top .3s ease-out;transition:opacity .3s linear, top .3s ease-out;top:-25%;}
|
| | | .modal.fade.in{top:50%;}
|
| | | .modal-header{border-bottom:1px solid #eee;padding:5px 15px;}
|
| | | .modal-body{padding:15px;}
|
| | | .modal-footer{background-color:#f5f5f5;padding:14px 15px 15px;border-top:1px solid #ddd;-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;-webkit-box-shadow:inset 0 1px 0 #ffffff;-moz-box-shadow:inset 0 1px 0 #ffffff;box-shadow:inset 0 1px 0 #ffffff;zoom:1;margin-bottom:0;}.modal-footer:before,.modal-footer:after{display:table;content:"";zoom:1;*display:inline;}
|
| | | .modal-footer:after{clear:both;}
|
| | | .modal-footer .btn{float:right;margin-left:5px;}
|
| | | .twipsy{display:block;position:absolute;visibility:visible;padding:5px;font-size:11px;z-index:1000;filter:alpha(opacity=80);-khtml-opacity:0.8;-moz-opacity:0.8;opacity:0.8;}.twipsy.fade.in{filter:alpha(opacity=80);-khtml-opacity:0.8;-moz-opacity:0.8;opacity:0.8;}
|
| | | .twipsy.above .twipsy-arrow{bottom:0;left:50%;margin-left:-5px;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid #000000;}
|
| | | .twipsy.left .twipsy-arrow{top:50%;right:0;margin-top:-5px;border-top:5px solid transparent;border-bottom:5px solid transparent;border-left:5px solid #000000;}
|
| | | .twipsy.below .twipsy-arrow{top:0;left:50%;margin-left:-5px;border-left:5px solid transparent;border-right:5px solid transparent;border-bottom:5px solid #000000;}
|
| | | .twipsy.right .twipsy-arrow{top:50%;left:0;margin-top:-5px;border-top:5px solid transparent;border-bottom:5px solid transparent;border-right:5px solid #000000;}
|
| | | .twipsy-inner{padding:3px 8px;background-color:#000000;color:white;text-align:center;max-width:200px;text-decoration:none;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}
|
| | | .twipsy-arrow{position:absolute;width:0;height:0;}
|
| | | .popover{position:absolute;top:0;left:0;z-index:1000;padding:5px;display:none;}.popover.above .arrow{bottom:0;left:50%;margin-left:-5px;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid #000000;}
|
| | | .popover.right .arrow{top:50%;left:0;margin-top:-5px;border-top:5px solid transparent;border-bottom:5px solid transparent;border-right:5px solid #000000;}
|
| | | .popover.below .arrow{top:0;left:50%;margin-left:-5px;border-left:5px solid transparent;border-right:5px solid transparent;border-bottom:5px solid #000000;}
|
| | | .popover.left .arrow{top:50%;right:0;margin-top:-5px;border-top:5px solid transparent;border-bottom:5px solid transparent;border-left:5px solid #000000;}
|
| | | .popover .arrow{position:absolute;width:0;height:0;}
|
| | | .popover .inner{background-color:#000000;background-color:rgba(0, 0, 0, 0.8);padding:3px;overflow:hidden;width:280px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);-moz-box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);}
|
| | | .popover .title{background-color:#f5f5f5;padding:9px 15px;line-height:1;-webkit-border-radius:3px 3px 0 0;-moz-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0;border-bottom:1px solid #eee;}
|
| | | .popover .content{background-color:#ffffff;padding:14px;-webkit-border-radius:0 0 3px 3px;-moz-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px;-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box;}.popover .content p,.popover .content ul,.popover .content ol{margin-bottom:0;}
|
| | | .fade{-webkit-transition:opacity 0.15s linear;-moz-transition:opacity 0.15s linear;-ms-transition:opacity 0.15s linear;-o-transition:opacity 0.15s linear;transition:opacity 0.15s linear;opacity:0;}.fade.in{opacity:1;}
|
| | | .label{padding:1px 3px 2px;background-color:#bfbfbf;font-size:9.75px;font-weight:bold;color:#ffffff;text-transform:uppercase;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}.label.important{background-color:#c43c35;}
|
| | | .label.warning{background-color:#f89406;}
|
| | | .label.success{background-color:#46a546;}
|
| | | .label.notice{background-color:#62cffc;}
|
| | | .media-grid{margin-left:-20px;margin-bottom:0;zoom:1;}.media-grid:before,.media-grid:after{display:table;content:"";zoom:1;*display:inline;}
|
| | | .media-grid:after{clear:both;}
|
| | | .media-grid li{display:inline;}
|
| | | .media-grid a{float:left;padding:4px;margin:0 0 20px 20px;border:1px solid #ddd;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:0 1px 1px rgba(0, 0, 0, 0.075);}.media-grid a img{display:block;}
|
| | | .media-grid a:hover{border-color:#0069d6;-webkit-box-shadow:0 1px 4px rgba(0, 105, 214, 0.25);-moz-box-shadow:0 1px 4px rgba(0, 105, 214, 0.25);box-shadow:0 1px 4px rgba(0, 105, 214, 0.25);}
|
New file |
| | |
| | | body, input, select {
|
| | | color: #202020;
|
| | | }
|
| | |
|
| | | ul, ol {
|
| | | margin-bottom: 10px !important;
|
| | | }
|
| | |
|
| | | hr {
|
| | | margin-top: 10px;
|
| | | margin-bottom: 10px;
|
| | | }
|
| | |
|
| | | .page-header h1, .page-header h2 {
|
| | | color: #0069D6;
|
| | | }
|
| | |
|
| | | .topbar {
|
| | | height:40px !important;
|
| | | }
|
| | |
|
| | | .topbar a {
|
| | | color: white; |
| | | text-shadow: none;
|
| | | }
|
| | |
|
| | | .nav a:hover {
|
| | | color: #abd4ff !important;
|
| | | }
|
| | |
|
| | | .topbar-inner,.topbar .fill{
|
| | | height:40px !important;
|
| | | background-color:#000050;
|
| | | background-repeat:repeat-x;
|
| | | background-image:-khtml-gradient(linear, left top, left bottom, from(#000060), to(#000040));
|
| | | background-image:-moz-linear-gradient(top, #000060, #000040);
|
| | | background-image:-ms-linear-gradient(top, #000060, #000040);
|
| | | background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #000060), color-stop(100%, #000040));
|
| | | background-image:-webkit-linear-gradient(top, #000060, #000040);
|
| | | background-image:-o-linear-gradient(top, #000060, #000040);
|
| | | background-image:linear-gradient(top, #000060, #000040);
|
| | | filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#000060', endColorstr='#000040', GradientType=0);
|
| | | -webkit-box-shadow:0 1px 3px rgba(0, 0, 0, 0.25),inset 0 -1px 0 rgba(0, 0, 0, 0.1);
|
| | | -moz-box-shadow:0 1px 3px rgba(0, 0, 0, 0.25),inset 0 -1px 0 rgba(0, 0, 0, 0.1);
|
| | | box-shadow:0 1px 3px rgba(0, 0, 0, 0.25),inset 0 -1px 0 rgba(0, 0, 0, 0.1);
|
| | | border-bottom: 2px solid #ff9900 !important;
|
| | | }
|
| | |
|
| | | .breadcrumb {
|
| | | margin-top: 5px !important;
|
| | | margin-bottom: 5px !important;
|
| | | }
|
| | |
|
| | | .page-header { |
| | | margin-bottom: 5px; |
| | | }
|
| | |
|
| | | .page-header h2 small {
|
| | | font-size: 80%;
|
| | | font-weight: bold;
|
| | | }
|
| | |
|
| | | div.page_footer {
|
| | | clear: both;
|
| | | height: 17px;
|
| | | color: black;
|
| | | background-color: #ffffff;
|
| | | padding: 5px;
|
| | | border-top: 1px solid #bbb;
|
| | | font-style: italic;
|
| | | }
|
| | |
|
| | | pre, code, pre.prettyprint, pre.plainprint {
|
| | | background-color: #ffffff;
|
| | | color: black;
|
| | | font-family: monospace;
|
| | | font-size:12px;
|
| | | border:0px;
|
| | | padding: 0;
|
| | | line-height: 1.35em;
|
| | | }
|
| | |
|
| | | table {
|
| | | margin-bottom:5px !important;
|
| | | }
|
| | |
|
| | | pre.prettyprint ol {
|
| | | padding-left:25px;
|
| | | }
|
| | |
|
| | | .age0, .age1, .age2 {
|
| | | font-size: 12px;
|
| | | }
|
| | |
|
| | | /* age0: age < 60*60*2 */
|
| | | .age0 {
|
| | | color: #008000;
|
| | | font-style: italic;
|
| | | font-weight: bold;
|
| | | }
|
| | |
|
| | | /* age1: 60*60*2 <= age < 60*60*24*2 */
|
| | | .age1 {
|
| | | color: #008000;
|
| | | font-style: italic;
|
| | | }
|
| | |
|
| | | /* age2: 60*60*24*2 <= age */
|
| | | .age2 {
|
| | | font-style: italic;
|
| | | }
|
| | |
|
| | | a.list {
|
| | | text-decoration: none;
|
| | | color: inherit;
|
| | | }
|
| | |
|
| | | a.list.subject {
|
| | | font-weight: bold;
|
| | | }
|
| | |
|
| | | a.list.name {
|
| | | font-weight: bold; |
| | | }
|
| | |
|
| | | a.list:hover {
|
| | | text-decoration: underline;
|
| | | color: #880000;
|
| | | }
|
| | |
|
| | | span.empty {
|
| | | font-size: 0.9em;
|
| | | font-style: italic;
|
| | | padding-left:10px;
|
| | | color: #008000;
|
| | | }
|
| | |
|
| | | span.link {
|
| | | color: #888;
|
| | | }
|
| | |
|
| | | span.link, span.link a {
|
| | | font-family: sans-serif;
|
| | | font-size: 11px;
|
| | | }
|
| | |
|
| | | span.link em, div.link span em {
|
| | | font-style: normal;
|
| | | font-family: sans-serif;
|
| | | font-size: 11px; |
| | | }
|
| | |
|
| | | img.inlineIcon {
|
| | | padding-left: 1px;
|
| | | 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;
|
| | | background-image:-khtml-gradient(linear, left top, left bottom, from(#ffffff), to(#e0e0e0));
|
| | | background-image:-moz-linear-gradient(top, #ffffff, #e0e0e0);
|
| | | background-image:-ms-linear-gradient(top, #ffffff, #e0e0e0);
|
| | | background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #ffffff), color-stop(100%, #e0e0e0));
|
| | | background-image:-webkit-linear-gradient(top, #ffffff, #e0e0e0);
|
| | | background-image:-o-linear-gradient(top, #ffffff, #e0e0e0);
|
| | | background-image:linear-gradient(top, #ffffff, #e0e0e0);
|
| | | filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#e0e0e0', GradientType=0);
|
| | | -webkit-box-shadow:inset 0 1px 0 #ffffff;
|
| | | -moz-box-shadow:inset 0 1px 0 #ffffff;
|
| | | box-shadow:inset 0 1px 0 #ffffff; |
| | | }
|
| | |
|
| | | div.header {
|
| | | padding: 3px;
|
| | | border: 1px solid #ddd;
|
| | | border-bottom: 0;
|
| | | border-radius: 3px 3px 0 0;
|
| | | }
|
| | |
|
| | | div.commitHeader {
|
| | | margin:0 0 2px;
|
| | | padding:7px 14px; |
| | | border:1px solid #ddd;
|
| | | border-radius: 3px;
|
| | | -webkit-border-radius:3px;
|
| | | -moz-border-radius:3px;border-radius:3px;
|
| | | }
|
| | |
|
| | | div.header a, div.commitHeader a {
|
| | | color: black;
|
| | | text-decoration: none;
|
| | | font-weight: bold;
|
| | | }
|
| | |
|
| | | div.header a:hover, div.commitHeader a:hover {
|
| | | text-decoration: underline;
|
| | | }
|
| | |
|
| | | div.page_nav2 {
|
| | | padding: 2px 5px 7px 5px; |
| | | }
|
| | |
|
| | | div.admin_nav {
|
| | | border-bottom: 0px;
|
| | | text-align: right;
|
| | | padding: 5px 5px 5px 2px; |
| | | }
|
| | |
|
| | | div.admin_nav a {
|
| | | text-decoration: none;
|
| | | }
|
| | |
|
| | | div.admin_nav a:hover { |
| | | text-decoration: underline;
|
| | | }
|
| | |
|
| | | div.search {
|
| | | height: 40px;
|
| | | padding-top:2px;
|
| | | }
|
| | |
|
| | | div.search input {
|
| | | -webkit-border-radius:0;-moz-border-radius:0x;border-radius:0;
|
| | | vertical-align: top;
|
| | | background: url(search-icon.png) no-repeat 4px center;
|
| | | 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-color: transparent;
|
| | | border: 1px solid transparent;
|
| | | padding: 2px 2px 2px 22px;
|
| | | text-shadow: none;
|
| | | |
| | | color: #ddd;
|
| | | border-bottom: 1px solid #ff9900; |
| | | }
|
| | |
|
| | | div.search input:focus {
|
| | | color: white;
|
| | | }
|
| | |
|
| | | /* 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 {
|
| | | font-family: monospace;
|
| | | padding: 8px;
|
| | | border: solid #ccc;
|
| | | border-width: 1px 0px 0px;
|
| | | }
|
| | |
|
| | | div.commit_message a {
|
| | | font-family: monospace;
|
| | | }
|
| | |
|
| | | div.bug_open, span.bug_open {
|
| | | padding: 2px;
|
| | | background-color: #803333;
|
| | | color: white; |
| | | text-align: center;
|
| | | }
|
| | |
|
| | | div.bug_resolved, span.bug_resolved {
|
| | | padding: 2px;
|
| | | background-color: #408040;
|
| | | color: white;
|
| | | text-align: center;
|
| | | }
|
| | |
|
| | | div.bug_invalid, span.bug_invalid {
|
| | | padding: 2px;
|
| | | background-color: gray;
|
| | | text-align: center;
|
| | | }
|
| | |
|
| | | div.bug_hold, span.bug_hold {
|
| | | padding: 2px;
|
| | | background-color: orange;
|
| | | text-align: center;
|
| | | }
|
| | |
|
| | | div.diff {
|
| | | font-family: monospace;
|
| | | overflow: auto;
|
| | | }
|
| | |
|
| | | div.diff.header {
|
| | | -moz-border-bottom-colors: none;
|
| | | -moz-border-image: none;
|
| | | -moz-border-left-colors: none;
|
| | | -moz-border-right-colors: none;
|
| | | -moz-border-top-colors: none;
|
| | | background-color: #EDECE6;
|
| | | border-color: #D9D8D1;
|
| | | border-style: solid;
|
| | | border-width: 1px;
|
| | | font-weight: bold;
|
| | | margin-top: 10px;
|
| | | padding: 4px 0 2px;
|
| | | }
|
| | |
|
| | | div.diff.extended_header {
|
| | | background-color: #F6F5EE;
|
| | | padding: 2px 0;
|
| | | font-family: inherit;
|
| | | }
|
| | |
|
| | | span.diff.add {
|
| | | color: #008800;
|
| | | font-family: inherit;
|
| | | }
|
| | |
|
| | | span.diff.remove {
|
| | | color: #FFDDDD;
|
| | | font-family: inherit;
|
| | | }
|
| | |
|
| | | span.diff.unchanged {
|
| | | color: inherit;
|
| | | font-family: inherit;
|
| | | }
|
| | |
|
| | | div.diff.hunk_header {
|
| | | -moz-border-bottom-colors: none;
|
| | | -moz-border-image: none;
|
| | | -moz-border-left-colors: none;
|
| | | -moz-border-right-colors: none;
|
| | | -moz-border-top-colors: none;
|
| | | border-color: #FFE0FF;
|
| | | border-style: dotted;
|
| | | border-width: 1px 0 0;
|
| | | margin-top: 2px;
|
| | | font-family: inherit;
|
| | | }
|
| | |
|
| | | span.diff.hunk_info {
|
| | | background-color: #FFEEFF; |
| | | color: #990099;
|
| | | font-family: inherit;
|
| | | }
|
| | |
|
| | | span.diff.hunk_section { |
| | | color: #AA22AA;
|
| | | font-family: inherit;
|
| | | }
|
| | |
|
| | | div.diff.add2 {
|
| | | background-color: #DDFFDD;
|
| | | font-family: inherit;
|
| | | }
|
| | |
|
| | | div.diff.remove2 {
|
| | | background-color: #FFDDDD;
|
| | | font-family: inherit;
|
| | | }
|
| | |
|
| | | div.diff table {
|
| | | border-radius: 0;
|
| | | border-right: 1px solid #bbb;
|
| | | border-bottom: 1px solid #bbb;
|
| | | width: 100%;
|
| | | }
|
| | |
|
| | | div.diff table th, div.diff table td {
|
| | | margin: 0px;
|
| | | padding: 0px;
|
| | | font-family: monospace;
|
| | | border: 0;
|
| | | }
|
| | |
|
| | | div.diff table th {
|
| | | background-color: #f0f0f0;
|
| | | text-align: center;
|
| | | color: #999;
|
| | | padding-left: 5px;
|
| | | padding-right: 5px;
|
| | | width: 30px;
|
| | | }
|
| | |
|
| | | div.diff table th.header {
|
| | | background-color: #D2C3AF;
|
| | | border-right: 0px;
|
| | | border-bottom: 1px solid #808080;
|
| | | font-family: inherit;
|
| | | font-size:0.9em;
|
| | | color: black;
|
| | | padding: 2px;
|
| | | text-align: left;
|
| | | }
|
| | |
|
| | | div.diff table td.hunk_header {
|
| | | background-color: #dAe2e5 !important;
|
| | | border-top: 1px solid #bac2c5; |
| | | border-bottom: 1px solid #bac2c5;
|
| | | color: #555;
|
| | | }
|
| | |
|
| | | div.diff table td {
|
| | | border-left: 1px solid #bbb;
|
| | | background-color: #f5f5f5;
|
| | | }
|
| | |
|
| | | td.changeType {
|
| | | width: 15px;
|
| | | }
|
| | |
|
| | | span.addition, span.modification, span.deletion, span.rename {
|
| | | border: 1px solid #888;
|
| | | float: left;
|
| | | height: 0.8em;
|
| | | margin: 0.2em 0.5em 0 0;
|
| | | overflow: hidden;
|
| | | width: 0.8em;
|
| | | }
|
| | |
|
| | | span.addition {
|
| | | background-color: #ccffcc;
|
| | | }
|
| | |
|
| | | span.modification {
|
| | | background-color: #ffdd88;
|
| | | }
|
| | |
|
| | | span.deletion {
|
| | | background-color: #f8bbbb;
|
| | | }
|
| | |
|
| | | span.rename {
|
| | | background-color: #cAc2f5;
|
| | | }
|
| | |
|
| | | div.commitLegend {
|
| | | float: right;
|
| | | padding: 0.4em 0.4em 0.2em 0.4em;
|
| | | vertical-align:top;
|
| | | margin: 0px;
|
| | | }
|
| | |
|
| | | div.commitLegend span {
|
| | | font-size: 0.9em;
|
| | | vertical-align: top;
|
| | | }
|
| | |
|
| | | div.references {
|
| | | float: right;
|
| | | text-align: right;
|
| | | }
|
| | |
|
| | | table.plain {
|
| | | width: 0 !important;
|
| | | border: 0;
|
| | | }
|
| | |
|
| | | table.plain th, table.plain td {
|
| | | white-space: nowrap;
|
| | | padding: 1px 6px;
|
| | | border: 0;
|
| | | }
|
| | |
|
| | | table.pretty {
|
| | | border-radius: 0 0 3px 3px; |
| | | }
|
| | |
|
| | | table.pretty td.icon {
|
| | | padding: 0px 0px 0px 2px; |
| | | width: 18px;
|
| | | vertical-align: middle;
|
| | | }
|
| | |
|
| | | table.pretty td.icon img {
|
| | | vertical-align: top;
|
| | | }
|
| | |
|
| | | table.pretty td {
|
| | | padding: 2px 4px;
|
| | | border-left: 0;
|
| | | }
|
| | |
|
| | | table.comments td {
|
| | | padding: 4px;
|
| | | line-height: 17px;
|
| | | }
|
| | |
|
| | | table.repositories { |
| | | border-spacing: 0px;
|
| | | }
|
| | |
|
| | | table.repositories th {
|
| | | padding: 4px;
|
| | | border:0;
|
| | | }
|
| | |
|
| | | table.repositories td {
|
| | | padding: 2px;
|
| | | border-left: 0;
|
| | | }
|
| | |
|
| | | table.repositories td.rightAlign { |
| | | text-align: right; |
| | | } |
| | |
|
| | | table.repositories td.icon img {
|
| | | vertical-align: top;
|
| | | }
|
| | |
|
| | | table.repositories tr.group {
|
| | | background-color: #ccc;
|
| | | }
|
| | |
|
| | | table.repositories tr.group td {
|
| | | font-weight: bold; |
| | | color: black;
|
| | | background-color: #ddd;
|
| | | padding-left: 5px;
|
| | | border-top: 1px solid #aaa; |
| | | border-bottom: 1px solid #aaa; |
| | | }
|
| | |
|
| | | table.palette { border:0; width: 0 !important; }
|
| | | table.palette td.header { |
| | | font-weight: bold; |
| | | background-color: #ffffff !important;
|
| | | padding-top: 0px !important;
|
| | | margin-bottom: 0 !imporant; |
| | | border: 0 !important;
|
| | | border-radius: 0 !important;
|
| | | line-height: 1em;
|
| | | }
|
| | | table.palette td.pane {
|
| | | padding: 0px;
|
| | | }
|
| | |
|
| | | table.gitnotes { |
| | | border: 0; |
| | | }
|
| | | table.gitnotes td {
|
| | | border-top: 1px solid #ccc;
|
| | | padding-top: 3px;
|
| | | vertical-align:top;
|
| | | }
|
| | |
|
| | | table.gitnotes table {
|
| | | border: none;
|
| | | }
|
| | |
|
| | | table.gitnotes td table td {
|
| | | border: none;
|
| | | padding: 0px;
|
| | | }
|
| | |
|
| | | table.gitnotes td.info {
|
| | | }
|
| | |
|
| | | table.gitnotes td.message {
|
| | | width: 65%;
|
| | | border-left: 1px solid #ccc;
|
| | | }
|
| | |
|
| | | table.annotated {
|
| | | }
|
| | |
|
| | | table.annotated tr.even {
|
| | | background-color: white;
|
| | | }
|
| | |
|
| | | table.annotated tr.odd {
|
| | | background-color: #f5f5f5;
|
| | | }
|
| | |
|
| | | table.annotated td {
|
| | | padding: 0px;
|
| | | border: 0;
|
| | | }
|
| | |
|
| | | tr th a { background-position: right; padding-right: 15px; background-repeat:no-repeat; }
|
| | | tr th.wicket_orderDown a {background-image: url(arrow_down.png); }
|
| | | tr th.wicket_orderUp a { background-image: url(arrow_up.png); }
|
| | | tr th.wicket_orderNone a { background-image: url(arrow_off.png); }
|
| | |
|
| | | tr.light {
|
| | | background-color: #ffffff;
|
| | | }
|
| | |
|
| | | tr.dark {
|
| | | background-color: #f5f5f5;
|
| | | }
|
| | |
|
| | | /* currently both use the same, but it can change */
|
| | | tr.light:hover,
|
| | | tr.dark:hover {
|
| | | background-color: #000070;
|
| | | color: white;
|
| | | }
|
| | |
|
| | | tr.light:hover a,
|
| | | tr.dark:hover a {
|
| | | color: white; |
| | | }
|
| | |
|
| | | td.author {
|
| | | font-style: italic !important;
|
| | | }
|
| | |
|
| | | td.date {
|
| | | font-style: italic !important; |
| | | }
|
| | |
|
| | | span.sha1, span.sha1 a, span.sha1 a span {
|
| | | font-family: monospace;
|
| | | font-size: 13px;
|
| | | }
|
| | |
|
| | | td.mode {
|
| | | text-align: right;
|
| | | font-family: monospace;
|
| | | width: 8em;
|
| | | padding-right:15px;
|
| | | }
|
| | |
|
| | | td.size {
|
| | | text-align: right;
|
| | | width: 8em; |
| | | padding-right:15px;
|
| | | }
|
| | |
|
| | | td.rightAlign {
|
| | | text-align: right;
|
| | | }
|
| | |
|
| | | td.treeLinks {
|
| | | text-align: right;
|
| | | width: 13em;
|
| | | }
|
| | |
|
| | | span.metricsTitle {
|
| | | font-size: 2em;
|
| | | }
|
| | |
|
| | | span .tagRef, span .headRef, span .localBranch, span .remoteBranch, span .otherRef { |
| | | padding: 0px 3px;
|
| | | margin-right:2px;
|
| | | font-family: sans-serif;
|
| | | font-size: 9px;
|
| | | font-weight: normal;
|
| | | border: 1px solid;
|
| | | color: black; |
| | | }
|
| | |
|
| | | span .tagRef a span, span .headRef a span, span .localBranch a span, span .remoteBranch a span, span .otherRef a span {
|
| | | font-size: 9px;
|
| | | }
|
| | |
|
| | | span .tagRef a, span .headRef a, span .localBranch a, span .remoteBranch a, span .otherRef a {
|
| | | text-decoration: none;
|
| | | color: black !important;
|
| | | }
|
| | |
|
| | | span .tagRef a:hover, span .headRef a:hover, span .localBranch a:hover, span .remoteBranch a:hover, span .otherRef a:hover {
|
| | | color: black !important;
|
| | | text-decoration: underline;
|
| | | }
|
| | |
|
| | | span .otherRef {
|
| | | background-color: #b0e0f0;
|
| | | border-color: #80aaaa; |
| | | }
|
| | |
|
| | | span .remoteBranch {
|
| | | background-color: #cAc2f5;
|
| | | border-color: #6c6cbf;
|
| | | }
|
| | |
|
| | | span .tagRef {
|
| | | background-color: #ffffaa;
|
| | | border-color: #ffcc00;
|
| | | }
|
| | |
|
| | | span .headRef {
|
| | | background-color: #ffaaff;
|
| | | border-color: #ff00ee;
|
| | | }
|
| | |
|
| | | span .localBranch {
|
| | | background-color: #ccffcc;
|
| | | border-color: #00cc33;
|
| | | }
|
| | |
|
| | | table .palette td.buttons button {
|
| | | -webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px; |
| | | border: 1px solid #ccc !important;
|
| | | padding: 10px;
|
| | | margin-bottom: 10px;
|
| | | }
|
| | |
|
| | | table .palette td.buttons button:hover {
|
| | | border: 1px solid #0069D6 !important;
|
| | | }
|
| | |
|
| | | table .palette td.buttons button:active {
|
| | | border: 1px solid orange !important;
|
| | | }
|
| | |
|
| | | .feedbackPanelERROR, .feedbackPanelINFO { |
| | | list-style: none;
|
| | | line-height: 35px;
|
| | | }
|
| | |
|
| | | .feedbackPanelINFO span, .feedbackPanelERROR span {
|
| | | position:relative;padding:7px 15px;margin-top:5px;margin-bottom:5px;color:#404040;background-color:#eedc94;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#fceec1), to(#eedc94));background-image:-moz-linear-gradient(top, #fceec1, #eedc94);background-image:-ms-linear-gradient(top, #fceec1, #eedc94);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #fceec1), color-stop(100%, #eedc94));background-image:-webkit-linear-gradient(top, #fceec1, #eedc94);background-image:-o-linear-gradient(top, #fceec1, #eedc94);background-image:linear-gradient(top, #fceec1, #eedc94);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fceec1', endColorstr='#eedc94', GradientType=0);text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);border-color:#eedc94 #eedc94 #e4c652;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);text-shadow:0 1px 0 rgba(255, 255, 255, 0.5);border-width:1px;border-style:solid;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.25);-moz-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.25);box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.25);
|
| | | }
|
| | |
|
| | | .feedbackPanelERROR span {
|
| | | color: #ffffff;
|
| | | background-color:#c43c35;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#ee5f5b), to(#c43c35));background-image:-moz-linear-gradient(top, #ee5f5b, #c43c35);background-image:-ms-linear-gradient(top, #ee5f5b, #c43c35);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #ee5f5b), color-stop(100%, #c43c35));background-image:-webkit-linear-gradient(top, #ee5f5b, #c43c35);background-image:-o-linear-gradient(top, #ee5f5b, #c43c35);background-image:linear-gradient(top, #ee5f5b, #c43c35);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#c43c35', GradientType=0);text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);border-color:#c43c35 #c43c35 #882a25;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
|
| | | }
|
| | |
|
| | | /* google-code-prettify line numbers */
|
| | | li.L0,
|
| | | li.L1,
|
| | | li.L2,
|
| | | li.L3,
|
| | | li.L4,
|
| | | li.L5,
|
| | | li.L6,
|
| | | li.L7,
|
| | | li.L8,
|
| | | li.L9 { color: #888; border-left: 1px solid #ccc; padding-left:5px; list-style-type: decimal !important; }
|
| | |
|
| | | /* Alternate shading for lines */
|
| | | li.L1,
|
| | | li.L3,
|
| | | li.L5,
|
| | | li.L7,
|
| | | li.L9 { background: #fafafa !important; }
|
New file |
| | |
| | | ## Please Login
|
| | |
|
| | | Pleaes enter your credentials to access this Gitblit site.
|
| | |
| | |
|
| | | div.markdown {
|
| | | line-height: 1.4em;
|
| | | color: black;
|
| | | }
|
| | |
|
| | | div.markdown li {
|
| | | color: black;
|
| | | }
|
| | |
|
| | | div.markdown h1,
|
| | |
| | | }
|
| | |
|
| | | div.markdown h1 {
|
| | | margin-top: 1em;
|
| | | margin-top: 0.5em;
|
| | | margin-bottom: 0.5em;
|
| | | padding-bottom: 0.5em;
|
| | | border-bottom: 2px solid #000080 !important;
|
| | | }
|
| | |
|
| | | div.markdown h2 {
|
| | | margin-top: 1em;
|
| | | margin-bottom: 0.5em;
|
| | | padding-bottom: 0.5em;
|
| | | border-bottom: 2px solid #000080 !important;
|
| | | }
|
| | |
|
| | |
| | |
|
| | | 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);
|
| | |
| | | @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);
|
| | | }
|
| | |
| | |
|
| | | 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
|
| | |
| | |
|
| | | @Override
|
| | | public int compareTo(RepositoryModel o) {
|
| | | return name.compareTo(o.name);
|
| | | return StringUtils.compareRepositoryNames(name, o.name);
|
| | | }
|
| | | } |
| | |
| | | }
|
| | | list.addAll(getRepositoryList(repositoriesFolder.getAbsolutePath(), repositoriesFolder,
|
| | | exportAll, searchSubfolders));
|
| | | Collections.sort(list);
|
| | | StringUtils.sortRepositorynames(list);
|
| | | return list;
|
| | | }
|
| | |
|
| | |
| | | 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;
|
| | |
|
| | |
| | | }
|
| | | 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);
|
| | | }
|
| | | });
|
| | | }
|
| | | }
|
| | |
| | | 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
|
| | |
| | | @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);
|
| | |
| | | @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);
|
| | | }
|
| | | }
|
| | | }
|
| | |
| | | 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;
|
| | |
| | | // 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) {
|
| | |
| | | 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
|
| | |
| | | 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 |
| | | gb.destinationUrlDescription = the url of the Gitblit instance to send your proposal
|
| | | gb.users = users
|
| | | gb.federation = federation |
| | |
| | | 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);
|
| | |
| | | }
|
| | |
|
| | | 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);
|
| | | }
|
| | |
|
| | |
| | | <!-- 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 />
|
| | |
| | | <!-- 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 -->
|
| | |
| | | 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;
|
| | |
| | | }
|
| | |
|
| | | 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"));
|
| | |
| | | if (GitBlitWebSession.get().isLoggedIn()) {
|
| | | error(message, true);
|
| | | } else {
|
| | | throw new RestartResponseAtInterceptPageException(LoginPage.class);
|
| | | throw new RestartResponseAtInterceptPageException(RepositoriesPage.class);
|
| | | }
|
| | | }
|
| | |
|
| | |
| | | } 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));
|
| | | }
|
| | |
| | | <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>
|
| | |
| | | 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">
|
| | |
| | | <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> |
| | |
| | | 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;
|
| | |
| | | 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>("");
|
| | |
| | | // 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") {
|
| | |
|
| | |
| | | confirmPassword);
|
| | | confirmPasswordField.setResetPassword(false);
|
| | | form.add(confirmPasswordField);
|
| | | form.add(new FeedbackPanel("feedback"));
|
| | |
|
| | | form.add(new Button("save"));
|
| | | Button cancel = new Button("cancel") {
|
| | |
| | |
|
| | | <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> |
| | |
| | | import com.gitblit.wicket.GitBlitWebSession;
|
| | | import com.gitblit.wicket.WicketUtils;
|
| | |
|
| | | public class EditRepositoryPage extends BasePage {
|
| | | public class EditRepositoryPage extends RootSubPage {
|
| | |
|
| | | private final boolean isCreate;
|
| | |
|
| | |
| | | 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
|
| | |
| | |
|
| | | <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>
|
| | |
| | | <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>
|
| | |
| | | import com.gitblit.wicket.WicketUtils;
|
| | |
|
| | | @RequiresAdminRole
|
| | | public class EditUserPage extends BasePage {
|
| | | public class EditUserPage extends RootSubPage {
|
| | |
|
| | | private final boolean isCreate;
|
| | |
|
| | |
| | |
|
| | | 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);
|
| | |
| | | userModel.username));
|
| | | setResponsePage(EditUserPage.class);
|
| | | } else {
|
| | | // back to home
|
| | | setResponsePage(RepositoriesPage.class);
|
| | | // back to users page
|
| | | setResponsePage(UsersPage.class);
|
| | | }
|
| | | }
|
| | | };
|
| | |
| | |
|
| | | @Override
|
| | | public void onSubmit() {
|
| | | setResponsePage(RepositoriesPage.class);
|
| | | setResponsePage(UsersPage.class);
|
| | | }
|
| | | };
|
| | | cancel.setDefaultFormProcessing(false);
|
New file |
| | |
| | | <!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> |
New file |
| | |
| | | /*
|
| | | * 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);
|
| | | }
|
| | | }
|
| | |
| | |
|
| | | <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>
|
| | |
| | | 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);
|
| | |
| | | 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));
|
| | |
| | | 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,
|
| | |
| | | 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>();
|
| | |
| | |
|
| | | <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> |
| | |
| | | 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()) {
|
| | |
| | | }
|
| | | }
|
| | | }
|
| | | 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;
|
| | | }
|
| | | }
|
| | |
| | | <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=""/>
|
| | | </form>
|
| | | </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 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>
|
| | | </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 />
|
| | |
| | | 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));
|
| | |
| | | RepositoryModel model = getRepositoryModel();
|
| | |
|
| | | // standard page links
|
| | | addRegisteredPageLink("repositories");
|
| | | addRegisteredPageLink("summary");
|
| | | addRegisteredPageLink("log");
|
| | | addRegisteredPageLink("branches");
|
| | |
| | | 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);
|
| | |
| | | // 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()) {
|
| | |
| | | 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() {
|
| | |
| | |
|
| | | 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;
|
| | | }
|
| | | }
|
| | |
|
| | |
| | |
|
| | | 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"));
|
| | | }
|
| | |
|
| | |
| | | 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;
|
| | |
| | |
|
| | | <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>
|
| | |
| | | <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>
|
| | |
| | | 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";
|
| | |
|
| | |
| | | public ReviewProposalPage(PageParameters params) {
|
| | | super(params);
|
| | |
|
| | | setupPage("", getString("gb.proposals"));
|
| | | setStatelessHint(true);
|
| | |
|
| | | final String token = WicketUtils.getToken(params);
|
| | |
|
| | | FederationProposal proposal = GitBlit.self().getPendingFederationProposal(token);
|
| | |
| | | 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
|
| | |
| | |
|
| | | 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);
|
| | | }
|
New file |
| | |
| | | <!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> |
New file |
| | |
| | | /*
|
| | | * 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());
|
| | | }
|
| | | }
|
| | | }
|
| | | }
|
New file |
| | |
| | | <!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> |
New file |
| | |
| | | /*
|
| | | * 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);
|
| | | }
|
| | | }
|
| | |
| | |
|
| | | <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> |
| | |
| | | import com.gitblit.wicket.panels.RepositoriesPanel;
|
| | |
|
| | | @RequiresAdminRole
|
| | | public class SendProposalPage extends BasePage {
|
| | | public class SendProposalPage extends RootSubPage {
|
| | |
|
| | | public String myUrl;
|
| | |
|
| | |
| | | public SendProposalPage(PageParameters params) {
|
| | | super(params);
|
| | |
|
| | | setupPage("", getString("gb.sendProposal"));
|
| | | setupPage(getString("gb.sendProposal"), "");
|
| | | setStatelessHint(true);
|
| | |
|
| | | final String token = WicketUtils.getToken(params);
|
| | |
| | |
|
| | | @Override
|
| | | public void onSubmit() {
|
| | | setResponsePage(RepositoriesPage.class);
|
| | | setResponsePage(FederationPage.class);
|
| | | }
|
| | | };
|
| | | cancel.setDefaultFormProcessing(false);
|
| | |
| | |
|
| | | 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);
|
| | | }
|
| | |
| | | <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">
|
| | |
| | | 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);
|
New file |
| | |
| | | <!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> |
New file |
| | |
| | | /*
|
| | | * 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));
|
| | | }
|
| | | }
|
| | |
| | | <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>
|
| | |
| | | <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>
|
| | |
| | | <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>
|
| | |
| | | <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>
|
| | |
| | | <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">
|
| | |
| | | <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> |
| | |
| | | <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>
|
| | |
| | | <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>
|
| | |
| | | <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>
|
| | |
| | | </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>
|
| | |
| | | DataView<RepositoryModel> dataView = new DataView<RepositoryModel>("row", dp) {
|
| | | private static final long serialVersionUID = 1L;
|
| | | int counter;
|
| | | String currGroupName;
|
| | |
|
| | | @Override
|
| | | protected void onBeforeRender() {
|
| | |
| | | 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));
|
| | | }
|
| | |
|
| | |
| | | <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">
|
| | |
| | | <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>
|
| | |
| | | <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>
|