@@ -29,6 +29,7 @@ All repository settings are stored within the repository `.git/config` file unde | |||
showRemoteBranches = false | |||
accessRestriction = clone | |||
isFrozen = false | |||
showReadme = false | |||
#### Repository Names | |||
Repository names must be unique and are case-insensitive. The name must be composed of letters, digits, or `/ _ - .`<br/> |
@@ -203,6 +203,7 @@ public class GitBlit implements ServletContextListener { | |||
"accessRestriction", null)); | |||
model.showRemoteBranches = getConfig(config, "showRemoteBranches", false); | |||
model.isFrozen = getConfig(config, "isFrozen", false); | |||
model.showReadme = getConfig(config, "showReadme", false); | |||
} | |||
r.close(); | |||
return model; | |||
@@ -278,6 +279,7 @@ public class GitBlit implements ServletContextListener { | |||
repository.accessRestriction.name()); | |||
config.setBoolean("gitblit", null, "showRemoteBranches", repository.showRemoteBranches); | |||
config.setBoolean("gitblit", null, "isFrozen", repository.isFrozen); | |||
config.setBoolean("gitblit", null, "showReadme", repository.showReadme); | |||
try { | |||
config.save(); | |||
} catch (IOException e) { |
@@ -35,6 +35,7 @@ public class RepositoryModel implements Serializable { | |||
public boolean useDocs; | |||
public AccessRestrictionType accessRestriction; | |||
public boolean isFrozen; | |||
public boolean showReadme; | |||
public RepositoryModel() { | |||
this("", "", "", new Date(0)); |
@@ -89,4 +89,6 @@ gb.canAdminDescription = can administer Git:Blit server | |||
gb.permittedUsers = permitted users | |||
gb.isFrozen = is frozen | |||
gb.isFrozenDescription = deny push operations | |||
gb.zip = zip | |||
gb.zip = zip | |||
gb.showReadme = show readme | |||
gb.showReadmeDescription = show a \"readme\" markdown file on the summary page |
@@ -21,10 +21,11 @@ | |||
<tr><th><wicket:message key="gb.enableTickets"></wicket:message></th><td class="edit"><input type="checkbox" wicket:id="useTickets" tabindex="4" /> <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="5" /> <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="6" /> <i><wicket:message key="gb.showRemoteBranchesDescription"></wicket:message></i></td></tr> | |||
<tr><th><wicket:message key="gb.accessRestriction"></wicket:message></th><td class="edit"><select wicket:id="accessRestriction" tabindex="7" /></td></tr> | |||
<tr><th><wicket:message key="gb.isFrozen"></wicket:message></th><td class="edit"><input type="checkbox" wicket:id="isFrozen" tabindex="8" /> <i><wicket:message key="gb.isFrozenDescription"></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="7" /> <i><wicket:message key="gb.showReadmeDescription"></wicket:message></i></td></tr> | |||
<tr><th><wicket:message key="gb.accessRestriction"></wicket:message></th><td class="edit"><select wicket:id="accessRestriction" tabindex="8" /></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><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><th></th><td class="editButton"><input type="submit" value="Save" wicket:message="value:gb.save" tabindex="9" /></td></tr> | |||
<tr><th></th><td class="editButton"><input type="submit" value="Save" wicket:message="value:gb.save" tabindex="10" /></td></tr> | |||
</tbody> | |||
</table> | |||
</form> |
@@ -164,6 +164,7 @@ public class EditRepositoryPage extends BasePage { | |||
form.add(new CheckBox("useTickets")); | |||
form.add(new CheckBox("useDocs")); | |||
form.add(new CheckBox("showRemoteBranches")); | |||
form.add(new CheckBox("showReadme")); | |||
form.add(usersPalette); | |||
add(form); |
@@ -19,7 +19,7 @@ | |||
</div> | |||
<!-- markdown content --> | |||
<div class="markdown" wicket:id="markdownText">[markdown content]</div> | |||
<div class="markdown" style="padding-bottom:5px;" wicket:id="markdownText">[markdown content]</div> | |||
</wicket:extend> | |||
</body> | |||
</html> |
@@ -4,6 +4,12 @@ | |||
xml:lang="en" | |||
lang="en"> | |||
<wicket:head> | |||
<wicket:link> | |||
<link href="/com/gitblit/wicket/resources/markdown.css" type="text/css" rel="stylesheet" /> | |||
</wicket:link> | |||
</wicket:head> | |||
<body> | |||
<wicket:extend> | |||
@@ -38,6 +44,8 @@ | |||
<div wicket:id="tagsPanel">[tags panel]</div> | |||
</div> | |||
<!-- markdown readme --> | |||
<div wicket:id="readme" class="markdown" style="clear:both;padding-bottom:5px;"></div> | |||
</wicket:extend> | |||
</body> | |||
</html> |
@@ -18,6 +18,7 @@ package com.gitblit.wicket.pages; | |||
import java.awt.Color; | |||
import java.awt.Dimension; | |||
import java.text.MessageFormat; | |||
import java.text.ParseException; | |||
import java.util.ArrayList; | |||
import java.util.List; | |||
@@ -27,6 +28,7 @@ import org.apache.wicket.PageParameters; | |||
import org.apache.wicket.markup.html.basic.Label; | |||
import org.apache.wicket.protocol.http.WebRequest; | |||
import org.eclipse.jgit.lib.Repository; | |||
import org.eclipse.jgit.revwalk.RevCommit; | |||
import org.wicketstuff.googlecharts.Chart; | |||
import org.wicketstuff.googlecharts.ChartAxis; | |||
import org.wicketstuff.googlecharts.ChartAxisType; | |||
@@ -42,7 +44,9 @@ import com.gitblit.Constants.AccessRestrictionType; | |||
import com.gitblit.GitBlit; | |||
import com.gitblit.Keys; | |||
import com.gitblit.models.Metric; | |||
import com.gitblit.models.PathModel; | |||
import com.gitblit.utils.JGitUtils; | |||
import com.gitblit.utils.MarkdownUtils; | |||
import com.gitblit.utils.MetricUtils; | |||
import com.gitblit.utils.StringUtils; | |||
import com.gitblit.utils.TimeUtils; | |||
@@ -140,6 +144,42 @@ public class SummaryPage extends RepositoryPage { | |||
add(new TagsPanel("tagsPanel", repositoryName, r, numberRefs)); | |||
add(new BranchesPanel("branchesPanel", getRepositoryModel(), r, numberRefs)); | |||
if (getRepositoryModel().showReadme) { | |||
String htmlText = null; | |||
try { | |||
RevCommit head = JGitUtils.getCommit(r, null); | |||
List<String> markdownExtensions = GitBlit.getStrings(Keys.web.markdownExtensions); | |||
List<PathModel> paths = JGitUtils.getFilesInPath(r, null, head); | |||
String readme = null; | |||
for (PathModel path : paths) { | |||
if (!path.isTree()) { | |||
String name = path.name.toLowerCase(); | |||
if (name.startsWith("readme")) { | |||
if (name.indexOf('.') > -1) { | |||
String ext = name.substring(name.lastIndexOf('.') + 1); | |||
if (markdownExtensions.contains(ext)) { | |||
readme = path.name; | |||
break; | |||
} | |||
} | |||
} | |||
} | |||
} | |||
if (!StringUtils.isEmpty(readme)) { | |||
String markdownText = JGitUtils.getRawContentAsString(r, head, readme); | |||
htmlText = MarkdownUtils.transformMarkdown(markdownText); | |||
} | |||
} catch (ParseException p) { | |||
error(p.getMessage()); | |||
} | |||
// Add the html to the page | |||
add(new Label("readme", htmlText).setEscapeModelStrings(false).setVisible( | |||
!StringUtils.isEmpty(htmlText))); | |||
} else { | |||
add(new Label("readme").setVisible(false)); | |||
} | |||
// Display an activity line graph | |||
insertActivityGraph(metrics); | |||
} | |||
@@ -162,7 +202,8 @@ public class SummaryPage extends RepositoryPage { | |||
provider.addAxis(dateAxis); | |||
ChartAxis commitAxis = new ChartAxis(ChartAxisType.LEFT); | |||
commitAxis.setLabels(new String[] { "", String.valueOf((int) WicketUtils.maxValue(metrics)) }); | |||
commitAxis.setLabels(new String[] { "", | |||
String.valueOf((int) WicketUtils.maxValue(metrics)) }); | |||
provider.addAxis(commitAxis); | |||
provider.setLineStyles(new LineStyle[] { new LineStyle(2, 4, 0), new LineStyle(0, 4, 1) }); |