This seems to improve page loading times.tags/v0.5.0
<?xml version="1.0" encoding="UTF-8"?> | <?xml version="1.0" encoding="UTF-8"?> | ||||
<classpath> | <classpath> | ||||
<classpathentry kind="src" path="src"/> | <classpathentry kind="src" path="src"/> | ||||
<classpathentry kind="src" path="resources"/> | |||||
<classpathentry kind="src" path="contrib"/> | <classpathentry kind="src" path="contrib"/> | ||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/> | <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/> | ||||
<classpathentry kind="lib" path="lib/jgit-0.11.3.jar" sourcepath="/org.eclipse.jgit"/> | <classpathentry kind="lib" path="lib/jgit-0.11.3.jar" sourcepath="/org.eclipse.jgit"/> |
</javac> | </javac> | ||||
<copy todir="${project.build.dir}"> | <copy todir="${project.build.dir}"> | ||||
<fileset dir="${basedir}/src" excludes="**/*.java,**/thumbs.db" /> | <fileset dir="${basedir}/src" excludes="**/*.java,**/thumbs.db" /> | ||||
<fileset dir="${basedir}/resources" excludes="**/thumbs.db" /> | |||||
</copy> | </copy> | ||||
<!-- Build jar --> | <!-- Build jar --> |
<?xml version="1.0" encoding="UTF-8"?> | |||||
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd"> | |||||
<!-- Head with Wicket-controlled resources in this package --> | |||||
<wicket:head> | |||||
<title wicket:id="title">[page title]</title> | |||||
<wicket:link> | |||||
<link rel="stylesheet" type="text/css" href="resources/gitblit.css"/> | |||||
<link rel="shortcut icon" href="resources/gitblt-favicon.png" type="image/png" /> | |||||
</wicket:link> | |||||
</wicket:head> | |||||
<body> | |||||
<!-- page header --> | |||||
<div class="page_header"> | |||||
<a title="gitblit homepage" href="http://gitblit.com/"> | |||||
<wicket:link> | |||||
<img src="resources/gitblt_25.png" width="79" height="25" alt="gitblit" class="logo"/> | |||||
</wicket:link> | |||||
</a> | |||||
<a href="/"><span wicket:id="siteName">[site name]</span></a> / <span wicket:id="repositoryName">[repository name]</span> <span wicket:id="pageName">[page name]</span> | |||||
</div> | |||||
<!-- page content --> | |||||
<wicket:child /> | |||||
<!-- page footer --> | |||||
<div class="page_footer"> | |||||
<div style="float:right"> | |||||
<a href="http://gitblit.com"><span wicket:id="gbVersion"></span></a> | |||||
</div> | |||||
<div wicket:id="footerText">[footer text]</div> | |||||
</div> | |||||
</body> | |||||
</html> |
import java.util.Date; | import java.util.Date; | ||||
import javax.servlet.http.HttpServletRequest; | |||||
import org.apache.wicket.Component; | import org.apache.wicket.Component; | ||||
import org.apache.wicket.PageParameters; | import org.apache.wicket.PageParameters; | ||||
import org.apache.wicket.markup.html.WebPage; | import org.apache.wicket.markup.html.WebPage; | ||||
import org.apache.wicket.markup.html.basic.Label; | import org.apache.wicket.markup.html.basic.Label; | ||||
import org.apache.wicket.protocol.http.servlet.ServletWebRequest; | |||||
import org.slf4j.Logger; | import org.slf4j.Logger; | ||||
import org.slf4j.LoggerFactory; | import org.slf4j.LoggerFactory; | ||||
import com.gitblit.Constants; | |||||
import com.gitblit.StoredSettings; | |||||
import com.gitblit.utils.Utils; | import com.gitblit.utils.Utils; | ||||
import com.gitblit.wicket.pages.SummaryPage; | |||||
public abstract class BasePage extends WebPage { | public abstract class BasePage extends WebPage { | ||||
public BasePage(PageParameters params) { | public BasePage(PageParameters params) { | ||||
super(params); | super(params); | ||||
} | } | ||||
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 | |||||
add(new Label("siteName", StoredSettings.getString("siteName", Constants.NAME))); | |||||
add(new LinkPanel("repositoryName", null, repositoryName, SummaryPage.class, new PageParameters("p=" + repositoryName))); | |||||
add(new Label("pageName", pageName)); | |||||
// footer | |||||
add(new Label("footerText", "")); | |||||
add(new Label("gbVersion", "v" + Constants.VERSION)); | |||||
if (StoredSettings.getBoolean("aggressiveHeapManagement", false)) { | |||||
System.gc(); | |||||
} | |||||
} | |||||
protected String getServerName() { | |||||
ServletWebRequest servletWebRequest = (ServletWebRequest) getRequest(); | |||||
HttpServletRequest req = servletWebRequest.getHttpServletRequest(); | |||||
return req.getServerName(); | |||||
} | |||||
protected Label createAuthorLabel(String wicketId, String author) { | protected Label createAuthorLabel(String wicketId, String author) { | ||||
Label label = new Label(wicketId, author); | Label label = new Label(wicketId, author); |
import com.gitblit.StoredSettings; | import com.gitblit.StoredSettings; | ||||
import com.gitblit.utils.JGitUtils; | import com.gitblit.utils.JGitUtils; | ||||
import com.gitblit.wicket.pages.RepositoriesPage; | import com.gitblit.wicket.pages.RepositoriesPage; | ||||
import com.gitblit.wicket.panels.PageFooter; | |||||
import com.gitblit.wicket.panels.PageHeader; | |||||
import com.gitblit.wicket.panels.PageLinksPanel; | import com.gitblit.wicket.panels.PageLinksPanel; | ||||
import com.gitblit.wicket.panels.RefsPanel; | import com.gitblit.wicket.panels.RefsPanel; | ||||
private transient Repository r = null; | private transient Repository r = null; | ||||
public RepositoryPage(PageParameters params, String pageName) { | |||||
public RepositoryPage(PageParameters params) { | |||||
super(params); | super(params); | ||||
if (!params.containsKey("p")) { | if (!params.containsKey("p")) { | ||||
error("Repository not specified!"); | error("Repository not specified!"); | ||||
Repository r = getRepository(); | Repository r = getRepository(); | ||||
add(new PageHeader("pageHeader", repositoryName, "/ " + pageName)); | |||||
add(new PageLinksPanel("pageLinks", r, repositoryName, pageName)); | |||||
add(new PageLinksPanel("pageLinks", r, repositoryName, getPageName())); | |||||
setStatelessHint(true); | setStatelessHint(true); | ||||
} | } | ||||
} | } | ||||
add(new Label(wicketId, html).setEscapeModelStrings(false)); | add(new Label(wicketId, html).setEscapeModelStrings(false)); | ||||
} | } | ||||
protected abstract String getPageName(); | |||||
protected void addFooter() { | protected void addFooter() { | ||||
r.close(); | r.close(); | ||||
add(new PageFooter("pageFooter", description)); | |||||
setupPage(repositoryName, "/ " + getPageName()); | |||||
} | } | ||||
protected PageParameters newRepositoryParameter() { | protected PageParameters newRepositoryParameter() { |
<?xml version="1.0" encoding="UTF-8"?> | <?xml version="1.0" encoding="UTF-8"?> | ||||
<html xmlns="http://www.w3.org/1999/xhtml" > | <html xmlns="http://www.w3.org/1999/xhtml" > | ||||
<head> | |||||
<!-- contribute google-code-prettify resources to the page header --> | |||||
<wicket:head> | |||||
<wicket:link> | |||||
<link href="prettify/prettify.css" type="text/css" rel="stylesheet" /> | <link href="prettify/prettify.css" type="text/css" rel="stylesheet" /> | ||||
<script type="text/javascript" src="prettify/prettify.js"></script> | <script type="text/javascript" src="prettify/prettify.js"></script> | ||||
</head> | |||||
</wicket:link> | |||||
</wicket:head> | |||||
<wicket:extend> | |||||
<!-- need to specify body.onload --> | |||||
<body onload="prettyPrint()"> | <body onload="prettyPrint()"> | ||||
<!-- page header --> | |||||
<div wicket:id="pageHeader"></div> | |||||
<!-- page nav links --> | |||||
<div wicket:id="pageLinks"></div> | |||||
<!-- page nav links --> | |||||
<div wicket:id="pageLinks">[page links]</div> | |||||
<!-- blob nav links --> | |||||
<div class="page_nav2"> | |||||
<span wicket:id="historyLink"></span> | <span wicket:id="rawLink"></span> | <span wicket:id="headLink"></span> | |||||
</div> | |||||
<!-- blob nav links --> | |||||
<div class="page_nav2"> | |||||
<span wicket:id="historyLink">[history link]</span> | <span wicket:id="rawLink">[raw link]</span> | <span wicket:id="headLink">[head link]</span> | |||||
</div> | |||||
<!-- shortlog header --> | |||||
<div class="header" wicket:id="shortlog"></div> | |||||
<!-- shortlog header --> | |||||
<div class="header" wicket:id="shortlog">[shortlog header]</div> | |||||
<!-- breadcrumbs --> | |||||
<div wicket:id="breadcrumbs"></div> | |||||
<!-- breadcrumbs --> | |||||
<div wicket:id="breadcrumbs">[breadcrumbs]</div> | |||||
<!-- blob content --> | |||||
<pre wicket:id="blobText"></pre> | |||||
<!-- blob content --> | |||||
<pre wicket:id="blobText">[blob content]</pre> | |||||
<!-- footer --> | |||||
<div wicket:id="pageFooter"></div> | |||||
</body> | </body> | ||||
</wicket:extend> | |||||
</html> | </html> |
public class BlobPage extends RepositoryPage { | public class BlobPage extends RepositoryPage { | ||||
public BlobPage(PageParameters params) { | public BlobPage(PageParameters params) { | ||||
super(params, "view"); | |||||
super(params); | |||||
final String blobPath = params.getString("f", null); | final String blobPath = params.getString("f", null); | ||||
add(blobLabel); | add(blobLabel); | ||||
} | } | ||||
// close repository | |||||
r.close(); | |||||
// footer | // footer | ||||
addFooter(); | addFooter(); | ||||
} | } | ||||
@Override | |||||
protected String getPageName() { | |||||
return "view"; | |||||
} | |||||
} | } |
<?xml version="1.0" encoding="UTF-8"?> | <?xml version="1.0" encoding="UTF-8"?> | ||||
<html xmlns="http://www.w3.org/1999/xhtml" > | <html xmlns="http://www.w3.org/1999/xhtml" > | ||||
<body> | <body> | ||||
<!-- page header --> | |||||
<div wicket:id="pageHeader"></div> | |||||
<wicket:extend> | |||||
<!-- page nav links --> | <!-- page nav links --> | ||||
<div wicket:id="pageLinks"></div> | |||||
<div wicket:id="pageLinks">[page links]</div> | |||||
<!-- shortlog --> | <!-- shortlog --> | ||||
<div style="margin-top:5px;" class="header" wicket:id="summary"></div> | |||||
<div style="margin-top:5px;" class="header" wicket:id="summary">[header]</div> | |||||
<table class="pretty"> | <table class="pretty"> | ||||
<tbody> | <tbody> | ||||
<tr wicket:id="branch"> | <tr wicket:id="branch"> | ||||
<td><i><span wicket:id="branchDate"></span></i></td> | |||||
<td><div wicket:id="branchName"></div></td> | |||||
<td><div wicket:id="branchType"></div></td> | |||||
<td class="rightAlign"><span wicket:id="branchLinks"></span></td> | |||||
<td class="date"><span wicket:id="branchDate">[branch date]</span></td> | |||||
<td><div wicket:id="branchName">[branch name]</div></td> | |||||
<td><div wicket:id="branchType">[branch type]</div></td> | |||||
<td class="rightAlign"><span wicket:id="branchLinks">[branch links]</span></td> | |||||
</tr> | </tr> | ||||
</tbody> | </tbody> | ||||
</table> | </table> | ||||
<!-- footer --> | |||||
<div wicket:id="pageFooter"></div> | |||||
</wicket:extend> | |||||
</body> | </body> | ||||
</html> | </html> |
public class BranchesPage extends RepositoryPage { | public class BranchesPage extends RepositoryPage { | ||||
public BranchesPage(PageParameters params) { | public BranchesPage(PageParameters params) { | ||||
super(params, "branches"); | |||||
super(params); | |||||
Repository r = getRepository(); | Repository r = getRepository(); | ||||
List<RefModel> branches = new ArrayList<RefModel>(); | List<RefModel> branches = new ArrayList<RefModel>(); | ||||
branches.addAll(JGitUtils.getLocalBranches(r, -1)); | branches.addAll(JGitUtils.getLocalBranches(r, -1)); | ||||
branches.addAll(JGitUtils.getRemoteBranches(r, -1)); | branches.addAll(JGitUtils.getRemoteBranches(r, -1)); | ||||
r.close(); | |||||
// shortlog | // shortlog | ||||
add(new LinkPanel("summary", "title", repositoryName, SummaryPage.class, newRepositoryParameter())); | add(new LinkPanel("summary", "title", repositoryName, SummaryPage.class, newRepositoryParameter())); | ||||
// footer | // footer | ||||
addFooter(); | addFooter(); | ||||
} | } | ||||
@Override | |||||
protected String getPageName() { | |||||
return "branches"; | |||||
} | |||||
} | } |
<?xml version="1.0" encoding="UTF-8"?> | <?xml version="1.0" encoding="UTF-8"?> | ||||
<html xmlns="http://www.w3.org/1999/xhtml" > | <html xmlns="http://www.w3.org/1999/xhtml" > | ||||
<body> | <body> | ||||
<!-- page header --> | |||||
<div wicket:id="pageHeader"></div> | |||||
<wicket:extend> | |||||
<!-- page nav links --> | <!-- page nav links --> | ||||
<div wicket:id="pageLinks"></div> | |||||
<div wicket:id="pageLinks">[page links]</div> | |||||
<!-- commit nav links --> | <!-- commit nav links --> | ||||
<div class="page_nav2"> | <div class="page_nav2"> | ||||
parent: <span wicket:id="parentLink"></span> | <span wicket:id="patchLink"></span> | |||||
parent: <span wicket:id="parentLink">[parent link]</span> | <span wicket:id="patchLink">[patch link]</span> | |||||
</div> | </div> | ||||
<!-- shortlog header --> | <!-- shortlog header --> | ||||
<div class="header" wicket:id="shortlog"></div> | |||||
<div class="header" wicket:id="shortlog">[shortlog header]</div> | |||||
<!-- commit info --> | <!-- commit info --> | ||||
<table class="plain"> | <table class="plain"> | ||||
<tr><th>refs</th><td><div wicket:id="refsPanel"></div></td></tr> | |||||
<tr><th>author</th><td><span wicket:id="commitAuthor">Message goes here</span></td></tr> | |||||
<tr><th></th><td><span wicket:id="commitAuthorDate">Message goes here</span></td></tr> | |||||
<tr><th>committer</th><td><span wicket:id="commitCommitter">Message goes here</span></td></tr> | |||||
<tr><th></th><td><span wicket:id="commitCommitterDate">Message goes here</span></td></tr> | |||||
<tr><th>commit</th><td class="sha1"><span wicket:id="commitId">Message goes here</span></td></tr> | |||||
<tr><th>tree</th><td class="sha1"><span wicket:id="commitTree">Message goes here</span></td></tr> | |||||
<tr><th>refs</th><td><div wicket:id="refsPanel">[references]</div></td></tr> | |||||
<tr><th>author</th><td><span wicket:id="commitAuthor">[author</span></td></tr> | |||||
<tr><th></th><td><span wicket:id="commitAuthorDate">[author date]</span></td></tr> | |||||
<tr><th>committer</th><td><span wicket:id="commitCommitter">[committer]</span></td></tr> | |||||
<tr><th></th><td><span wicket:id="commitCommitterDate">[commit date]</span></td></tr> | |||||
<tr><th>commit</th><td class="sha1"><span wicket:id="commitId">[commit id]</span></td></tr> | |||||
<tr><th>tree</th><td class="sha1"><span wicket:id="commitTree">[commit tree]</span></td></tr> | |||||
<tr><th>parent</th><td class="sha1"><span wicket:id="commitParents"> | <tr><th>parent</th><td class="sha1"><span wicket:id="commitParents"> | ||||
<div wicket:id="commitParent">Message goes here</div></span></td></tr> | |||||
<div wicket:id="commitParent">[commit parents]</div></span></td></tr> | |||||
</table> | </table> | ||||
<!-- full message --> | <!-- full message --> | ||||
<div class="commit_message" wicket:id="fullMessage"></div> | |||||
<div class="commit_message" wicket:id="fullMessage">[commit message]</div> | |||||
<!-- changed paths --> | <!-- changed paths --> | ||||
<table class="pretty"> | <table class="pretty"> | ||||
<tr wicket:id="changedPath"> | <tr wicket:id="changedPath"> | ||||
<td class="path"><span wicket:id="pathName"></span></td> | |||||
<td><span wicket:id="pathLinks"></span></td> | |||||
<td class="path"><span wicket:id="pathName">[commit path]</span></td> | |||||
<td><span wicket:id="pathLinks">[path links]</span></td> | |||||
</tr> | </tr> | ||||
</table> | </table> | ||||
<!-- footer --> | |||||
<div wicket:id="pageFooter"></div> | |||||
</wicket:extend> | |||||
</body> | </body> | ||||
</html> | </html> |
public class CommitPage extends RepositoryPage { | public class CommitPage extends RepositoryPage { | ||||
public CommitPage(PageParameters params) { | public CommitPage(PageParameters params) { | ||||
super(params, "commit"); | |||||
super(params); | |||||
final String commitId = params.getString("h", ""); | final String commitId = params.getString("h", ""); | ||||
}; | }; | ||||
add(pathsView); | add(pathsView); | ||||
// close repository | |||||
r.close(); | |||||
// footer | // footer | ||||
addFooter(); | addFooter(); | ||||
} | } | ||||
@Override | |||||
protected String getPageName() { | |||||
return "commit"; | |||||
} | |||||
} | } |
<?xml version="1.0" encoding="UTF-8"?> | <?xml version="1.0" encoding="UTF-8"?> | ||||
<html xmlns="http://www.w3.org/1999/xhtml" > | <html xmlns="http://www.w3.org/1999/xhtml" > | ||||
<head> | |||||
<link href="prettify/prettify.css" type="text/css" rel="stylesheet" /> | |||||
<script type="text/javascript" src="prettify/prettify.js"></script> | |||||
</head> | |||||
<body> | <body> | ||||
<!-- page header --> | |||||
<div wicket:id="pageHeader"></div> | |||||
<wicket:extend> | |||||
<!-- page nav links --> | <!-- page nav links --> | ||||
<div wicket:id="pageLinks"></div> | |||||
<div wicket:id="pageLinks">[page links]</div> | |||||
<!-- blob nav links --> | <!-- blob nav links --> | ||||
<div class="page_nav2"> | <div class="page_nav2"> | ||||
<span wicket:id="historyLink"></span> | <span wicket:id="rawLink"></span> | <span wicket:id="headLink"></span> | |||||
<span wicket:id="historyLink">[history link]</span> | <span wicket:id="rawLink">[raw link]</span> | <span wicket:id="headLink">[head link]</span> | |||||
</div> | </div> | ||||
<!-- shortlog header --> | <!-- shortlog header --> | ||||
<div class="header" wicket:id="shortlog"></div> | |||||
<div class="header" wicket:id="shortlog">[shortlog header]</div> | |||||
<!-- breadcrumbs --> | <!-- breadcrumbs --> | ||||
<div wicket:id="breadcrumbs"></div> | |||||
<div wicket:id="breadcrumbs">[breadcrumbs]</div> | |||||
<!-- diff content --> | <!-- diff content --> | ||||
<pre wicket:id="diffText"></pre> | |||||
<pre wicket:id="diffText">[diff text]</pre> | |||||
<!-- footer --> | |||||
<div wicket:id="pageFooter"></div> | |||||
</wicket:extend> | |||||
</body> | </body> | ||||
</html> | </html> |
public class DiffPage extends RepositoryPage { | public class DiffPage extends RepositoryPage { | ||||
public DiffPage(PageParameters params) { | public DiffPage(PageParameters params) { | ||||
super(params, "diff"); | |||||
super(params); | |||||
final String blobPath = params.getString("f", null); | final String blobPath = params.getString("f", null); | ||||
// commit diff | // commit diff | ||||
diff = JGitUtils.getCommitDiff(r, commit, true); | diff = JGitUtils.getCommitDiff(r, commit, true); | ||||
} | } | ||||
r.close(); | |||||
// diff page links | // diff page links | ||||
add(new Label("historyLink", "history")); | add(new Label("historyLink", "history")); | ||||
// footer | // footer | ||||
addFooter(); | addFooter(); | ||||
} | } | ||||
@Override | |||||
protected String getPageName() { | |||||
return "diff"; | |||||
} | |||||
} | } |
<?xml version="1.0" encoding="UTF-8"?> | <?xml version="1.0" encoding="UTF-8"?> | ||||
<html xmlns="http://www.w3.org/1999/xhtml" > | <html xmlns="http://www.w3.org/1999/xhtml" > | ||||
<body> | <body> | ||||
<div wicket:id="pageHeader"></div> | |||||
<wicket:extend> | |||||
<div wicket:id="adminPanel">[admin links]</div> | |||||
<div wicket:id="adminPanel"></div> | |||||
<div class="repositories_message" wicket:id="repositoriesMessage"></div> | |||||
<div class="repositories_message" wicket:id="repositoriesMessage">[repositories message]</div> | |||||
<table class="repositories"> | <table class="repositories"> | ||||
<tr> | <tr> | ||||
</tr> | </tr> | ||||
<tbody> | <tbody> | ||||
<tr wicket:id="repository"> | <tr wicket:id="repository"> | ||||
<td><div class="list" wicket:id="repositoryName"></div></td> | |||||
<td><div class="list" wicket:id="repositoryDescription"></div></td> | |||||
<td><i><span wicket:id="repositoryOwner"></span></i></td> | |||||
<td><span wicket:id="repositoryLastChange"></span></td> | |||||
<td><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><span wicket:id="repositoryLastChange">[last change]</span></td> | |||||
</tr> | </tr> | ||||
</tbody> | </tbody> | ||||
</table> | </table> | ||||
<!-- footer --> | |||||
<div wicket:id="pageFooter"></div> | |||||
</wicket:extend> | |||||
</body> | </body> | ||||
</html> | </html> |
import com.gitblit.wicket.WicketUtils; | import com.gitblit.wicket.WicketUtils; | ||||
import com.gitblit.wicket.models.RepositoryModel; | import com.gitblit.wicket.models.RepositoryModel; | ||||
import com.gitblit.wicket.panels.AdminLinksPanel; | import com.gitblit.wicket.panels.AdminLinksPanel; | ||||
import com.gitblit.wicket.panels.PageFooter; | |||||
import com.gitblit.wicket.panels.PageHeader; | |||||
public class RepositoriesPage extends BasePage { | public class RepositoriesPage extends BasePage { | ||||
public RepositoriesPage() { | public RepositoriesPage() { | ||||
add(new PageHeader("pageHeader")); | |||||
super(); | |||||
setupPage("", ""); | |||||
add(new AdminLinksPanel("adminPanel").setVisible(StoredSettings.getBoolean("allowAdministration", false))); | add(new AdminLinksPanel("adminPanel").setVisible(StoredSettings.getBoolean("allowAdministration", false))); | ||||
add(new Label("repositoriesMessage", StoredSettings.getString("repositoriesMessage", "")).setEscapeModelStrings(false)); | add(new Label("repositoriesMessage", StoredSettings.getString("repositoriesMessage", "")).setEscapeModelStrings(false)); | ||||
add(newSort("orderByDescription", SortBy.description, dp, dataView)); | add(newSort("orderByDescription", SortBy.description, dp, dataView)); | ||||
add(newSort("orderByOwner", SortBy.owner, dp, dataView)); | add(newSort("orderByOwner", SortBy.owner, dp, dataView)); | ||||
add(newSort("orderByDate", SortBy.date, dp, dataView)); | add(newSort("orderByDate", SortBy.date, dp, dataView)); | ||||
add(new PageFooter("pageFooter", "")); | |||||
} | } | ||||
protected enum SortBy { | protected enum SortBy { |
<?xml version="1.0" encoding="UTF-8"?> | <?xml version="1.0" encoding="UTF-8"?> | ||||
<html xmlns="http://www.w3.org/1999/xhtml" > | <html xmlns="http://www.w3.org/1999/xhtml" > | ||||
<body> | <body> | ||||
<!-- page header --> | |||||
<div wicket:id="pageHeader"></div> | |||||
<wicket:extend> | |||||
<!-- page nav links --> | <!-- page nav links --> | ||||
<div wicket:id="pageLinks"></div> | |||||
<div wicket:id="pageLinks">[page links]</div> | |||||
<!-- shortlog --> | <!-- shortlog --> | ||||
<div style="margin-top:5px;" class="header" wicket:id="summary"></div> | |||||
<div style="margin-top:5px;" class="header" wicket:id="summary">[shortlog header]</div> | |||||
<table style="width:100%" "class="pretty"> | <table style="width:100%" "class="pretty"> | ||||
<tbody> | <tbody> | ||||
<tr wicket:id="commit"> | <tr wicket:id="commit"> | ||||
<td class="date"><span wicket:id="commitDate"></span></td> | |||||
<td class="author"><span wicket:id="commitAuthor"></span></td> | |||||
<td><div wicket:id="commitShortMessage"></div></td> | |||||
<td class="rightAlign"><div wicket:id="commitRefs"></div></td> | |||||
<td class="rightAlign"><span wicket:id="commitLinks"></span></td> | |||||
<td class="date"><span wicket:id="commitDate">[commit date]</span></td> | |||||
<td class="author"><span wicket:id="commitAuthor">[commit author]</span></td> | |||||
<td><div wicket:id="commitShortMessage">[commit short message]</div></td> | |||||
<td class="rightAlign"><div wicket:id="commitRefs">[commit refs]</div></td> | |||||
<td class="rightAlign"><span wicket:id="commitLinks">[commit links]</span></td> | |||||
</tr> | </tr> | ||||
</tbody> | </tbody> | ||||
</table> | </table> | ||||
<div class="pager" wicket:id="navigator"></div> | |||||
<div class="pager" wicket:id="navigator">[pager]</div> | |||||
<!-- footer --> | |||||
<div wicket:id="pageFooter"></div> | |||||
</wicket:extend> | |||||
</body> | </body> | ||||
</html> | </html> |
public class ShortLogPage extends RepositoryPage { | public class ShortLogPage extends RepositoryPage { | ||||
public ShortLogPage(PageParameters params) { | public ShortLogPage(PageParameters params) { | ||||
super(params, "shortlog"); | |||||
super(params); | |||||
Repository r = getRepository(); | Repository r = getRepository(); | ||||
final Map<ObjectId, List<String>> allRefs = JGitUtils.getAllRefs(r); | final Map<ObjectId, List<String>> allRefs = JGitUtils.getAllRefs(r); | ||||
List<RevCommit> commits = JGitUtils.getRevLog(r, 100); | List<RevCommit> commits = JGitUtils.getRevLog(r, 100); | ||||
r.close(); | |||||
// shortlog | // shortlog | ||||
add(new LinkPanel("summary", "title", repositoryName, SummaryPage.class, newRepositoryParameter())); | add(new LinkPanel("summary", "title", repositoryName, SummaryPage.class, newRepositoryParameter())); | ||||
// footer | // footer | ||||
addFooter(); | addFooter(); | ||||
} | } | ||||
@Override | |||||
protected String getPageName() { | |||||
return "shortlog"; | |||||
} | |||||
} | } |
<?xml version="1.0" encoding="UTF-8"?> | <?xml version="1.0" encoding="UTF-8"?> | ||||
<html xmlns="http://www.w3.org/1999/xhtml" > | <html xmlns="http://www.w3.org/1999/xhtml" > | ||||
<body> | <body> | ||||
<!-- page header --> | |||||
<div wicket:id="pageHeader"></div> | |||||
<wicket:extend> | |||||
<!-- page nav links --> | <!-- page nav links --> | ||||
<div wicket:id="pageLinks"></div> | |||||
<div wicket:id="pageLinks">[page links]</div> | |||||
<div> | <div> | ||||
<!-- Repository Activity Chart --> | <!-- Repository Activity Chart --> | ||||
<!-- Repository info --> | <!-- Repository info --> | ||||
<div style="margin-right:410px;"> | <div style="margin-right:410px;"> | ||||
<table class="plain"> | <table class="plain"> | ||||
<tr><th>description</th><td><span wicket:id="repositoryDescription">Message goes here</span></td></tr> | |||||
<tr><th>owner</th><td><span wicket:id="repositoryOwner">Message goes here</span></td></tr> | |||||
<tr><th>last change</th><td><span wicket:id="repositoryLastChange">Message goes here</span></td></tr> | |||||
<tr><th>URL</th><td><span wicket:id="repositoryCloneUrl">Message goes here</span></td></tr> | |||||
<tr><th>description</th><td><span wicket:id="repositoryDescription">[repository description]</span></td></tr> | |||||
<tr><th>owner</th><td><span wicket:id="repositoryOwner">[repository owner]</span></td></tr> | |||||
<tr><th>last change</th><td><span wicket:id="repositoryLastChange">[repository last change]</span></td></tr> | |||||
<tr><th>URL</th><td><span wicket:id="repositoryCloneUrl">[repository clone url]</span></td></tr> | |||||
</table> | </table> | ||||
</div> | </div> | ||||
</div> | </div> | ||||
<!-- shortlog --> | <!-- shortlog --> | ||||
<div class="header" wicket:id="shortlog"></div> | |||||
<div class="header" wicket:id="shortlog">[shortlog header]</div> | |||||
<table style="width:100%" class="pretty"> | <table style="width:100%" class="pretty"> | ||||
<tbody> | <tbody> | ||||
<tr wicket:id="commit"> | <tr wicket:id="commit"> | ||||
<td class="date"><span wicket:id="commitDate"></span></td> | |||||
<td class="author"><span wicket:id="commitAuthor"></span></td> | |||||
<td><div wicket:id="commitShortMessage"></div></td> | |||||
<td class="rightAlign"><div wicket:id="commitRefs"></div></td> | |||||
<td class="rightAlign"><span wicket:id="commitLinks"></span></td> | |||||
<td class="date"><span wicket:id="commitDate">[commit date]</span></td> | |||||
<td class="author"><span wicket:id="commitAuthor">[commit author]</span></td> | |||||
<td><div wicket:id="commitShortMessage">[commit short message]</div></td> | |||||
<td class="rightAlign"><div wicket:id="commitRefs">[commit refs]</div></td> | |||||
<td class="rightAlign"><span wicket:id="commitLinks">[commit links]</span></td> | |||||
</tr> | </tr> | ||||
</tbody> | </tbody> | ||||
</table> | </table> | ||||
<div class="pager" wicket:id="shortlogMore"></div> | |||||
<div class="pager" wicket:id="shortlogMore">[more shortlogs]</div> | |||||
<!-- Open Branches Body --> | <!-- Open Branches Body --> | ||||
<div style="width:400px; float:left;"> | <div style="width:400px; float:left;"> | ||||
<!-- heads --> | <!-- heads --> | ||||
<div class="header" wicket:id="branches"></div> | |||||
<div class="header" wicket:id="branches">[branches header]</div> | |||||
<table style="width:100%" class="pretty"> | <table style="width:100%" class="pretty"> | ||||
<tbody> | <tbody> | ||||
<tr wicket:id="branch"> | <tr wicket:id="branch"> | ||||
<td class="date"><span wicket:id="branchDate"></span></td> | |||||
<td><div wicket:id="branchName"></div></td> | |||||
<td class="rightAlign"><span wicket:id="branchLinks"></span></td> | |||||
<td class="date"><span wicket:id="branchDate">[branch date]</span></td> | |||||
<td><div wicket:id="branchName">[branch name]</div></td> | |||||
<td class="rightAlign"><span wicket:id="branchLinks">[branch links]</span></td> | |||||
</tr> | </tr> | ||||
</tbody> | </tbody> | ||||
</table> | </table> | ||||
<div class="pager" wicket:id="allBranches"></div> | |||||
<div class="pager" wicket:id="allBranches">[all branches]</div> | |||||
<!-- Close Branches Body --> | <!-- Close Branches Body --> | ||||
</div> | </div> | ||||
<!-- Open Tags body --> | <!-- Open Tags body --> | ||||
<div style="margin-left:405px;"> | <div style="margin-left:405px;"> | ||||
<!-- tags --> | <!-- tags --> | ||||
<div class="header" wicket:id="tags"></div> | |||||
<div class="header" wicket:id="tags">[tags header]</div> | |||||
<table style="width:100%" class="pretty"> | <table style="width:100%" class="pretty"> | ||||
<tbody> | <tbody> | ||||
<tr wicket:id="tag"> | <tr wicket:id="tag"> | ||||
<td class="date"><span wicket:id="tagDate"></span></td> | |||||
<td><b><div wicket:id="tagName"></div></b></td> | |||||
<td><div wicket:id="tagDescription"></div></td> | |||||
<td class="rightAlign"><span wicket:id="tagLinks"></span></td> | |||||
<td class="date"><span wicket:id="tagDate">[tag date]</span></td> | |||||
<td><b><div wicket:id="tagName">[tag name]</div></b></td> | |||||
<td><div wicket:id="tagDescription">[tag description]</div></td> | |||||
<td class="rightAlign"><span wicket:id="tagLinks">[tag links]</span></td> | |||||
</tr> | </tr> | ||||
</tbody> | </tbody> | ||||
</table> | </table> | ||||
<div class="pager" wicket:id="allTags"></div> | |||||
<div class="pager" wicket:id="allTags">[all tags]</div> | |||||
<!-- Close Tags Body --> | <!-- Close Tags Body --> | ||||
</div> | </div> | ||||
<!-- footer --> | |||||
<div style="clear:both;" wicket:id="pageFooter"></div> | |||||
</wicket:extend> | |||||
</body> | </body> | ||||
</html> | </html> |
public class SummaryPage extends RepositoryPage { | public class SummaryPage extends RepositoryPage { | ||||
public SummaryPage(PageParameters params) { | public SummaryPage(PageParameters params) { | ||||
super(params, "summary"); | |||||
super(params); | |||||
int numCommitsDef = 20; | int numCommitsDef = 20; | ||||
int numRefsDef = 5; | int numRefsDef = 5; | ||||
// footer | // footer | ||||
addFooter(); | addFooter(); | ||||
} | } | ||||
@Override | |||||
protected String getPageName() { | |||||
return "summary"; | |||||
} | |||||
private void insertActivityGraph(Repository r) { | private void insertActivityGraph(Repository r) { | ||||
if (StoredSettings.getBoolean("generateActivityGraph", true)) { | if (StoredSettings.getBoolean("generateActivityGraph", true)) { |
<?xml version="1.0" encoding="UTF-8"?> | <?xml version="1.0" encoding="UTF-8"?> | ||||
<html xmlns="http://www.w3.org/1999/xhtml" > | <html xmlns="http://www.w3.org/1999/xhtml" > | ||||
<body> | <body> | ||||
<!-- page header --> | |||||
<div wicket:id="pageHeader"></div> | |||||
<wicket:extend> | |||||
<!-- page nav links --> | <!-- page nav links --> | ||||
<div wicket:id="pageLinks"></div> | |||||
<div wicket:id="pageLinks">[page links]</div> | |||||
<!-- summary header --> | <!-- summary header --> | ||||
<div style="padding-top: 5px;" class="header" wicket:id="commit"></div> | |||||
<div style="padding-top: 5px;" class="header" wicket:id="commit">[shortlog header]</div> | |||||
<!-- commit info --> | <!-- commit info --> | ||||
<table class="plain"> | <table class="plain"> | ||||
<tr><th>object</th><td><span wicket:id="tagId">Message goes here</span></td></tr> | |||||
<tr><th>author</th><td><span wicket:id="tagAuthor">Message goes here</span></td></tr> | |||||
<tr><th></th><td><span wicket:id="tagDate">Message goes here</span></td></tr> | |||||
<tr><th>object</th><td><span wicket:id="tagId">[tag id]</span></td></tr> | |||||
<tr><th>author</th><td><span wicket:id="tagAuthor">[tag author]</span></td></tr> | |||||
<tr><th></th><td><span wicket:id="tagDate">[tag date]</span></td></tr> | |||||
</table> | </table> | ||||
<!-- full message --> | <!-- full message --> | ||||
<div style="border-bottom:0px;" class="commit_message" wicket:id="fullMessage"></div> | |||||
<div style="border-bottom:0px;" class="commit_message" wicket:id="fullMessage">[tag full message]</div> | |||||
<!-- footer --> | |||||
<div wicket:id="pageFooter"></div> | |||||
</wicket:extend> | |||||
</body> | </body> | ||||
</html> | </html> |
public class TagPage extends RepositoryPage { | public class TagPage extends RepositoryPage { | ||||
public TagPage(PageParameters params) { | public TagPage(PageParameters params) { | ||||
super(params, "tag"); | |||||
super(params); | |||||
Repository r = getRepository(); | Repository r = getRepository(); | ||||
RevCommit c = JGitUtils.getCommit(r, commitId); | RevCommit c = JGitUtils.getCommit(r, commitId); | ||||
addFullText("fullMessage", c.getFullMessage(), true); | addFullText("fullMessage", c.getFullMessage(), true); | ||||
r.close(); | |||||
// footer | // footer | ||||
addFooter(); | addFooter(); | ||||
} | } | ||||
@Override | |||||
protected String getPageName() { | |||||
return "tag"; | |||||
} | |||||
} | } |
<?xml version="1.0" encoding="UTF-8"?> | <?xml version="1.0" encoding="UTF-8"?> | ||||
<html xmlns="http://www.w3.org/1999/xhtml" > | <html xmlns="http://www.w3.org/1999/xhtml" > | ||||
<body> | <body> | ||||
<!-- page header --> | |||||
<div wicket:id="pageHeader"></div> | |||||
<wicket:extend> | |||||
<!-- page nav links --> | <!-- page nav links --> | ||||
<div wicket:id="pageLinks"></div> | |||||
<div wicket:id="pageLinks">[page links]</div> | |||||
<!-- shortlog --> | <!-- shortlog --> | ||||
<div style="margin-top:5px;" class="header" wicket:id="summary"></div> | |||||
<div style="margin-top:5px;" class="header" wicket:id="summary">[header]</div> | |||||
<table class="pretty"> | <table class="pretty"> | ||||
<tbody> | <tbody> | ||||
<tr wicket:id="tag"> | <tr wicket:id="tag"> | ||||
<td class="date"><span wicket:id="tagDate"></span></td> | |||||
<td><b><div wicket:id="tagName"></div></b></td> | |||||
<td><div wicket:id="tagDescription"></div></td> | |||||
<td class="rightAlign"><span wicket:id="tagLinks"></span></td> | |||||
<td class="date"><span wicket:id="tagDate">[tag date]</span></td> | |||||
<td><b><div wicket:id="tagName">[tag name]</div></b></td> | |||||
<td><div wicket:id="tagDescription">[tag description]</div></td> | |||||
<td class="rightAlign"><span wicket:id="tagLinks">[tag links]</span></td> | |||||
</tr> | </tr> | ||||
</tbody> | </tbody> | ||||
</table> | </table> | ||||
<!-- footer --> | |||||
<div wicket:id="pageFooter"></div> | |||||
</wicket:extend> | |||||
</body> | </body> | ||||
</html> | </html> |
public class TagsPage extends RepositoryPage { | public class TagsPage extends RepositoryPage { | ||||
public TagsPage(PageParameters params) { | public TagsPage(PageParameters params) { | ||||
super(params, "tags"); | |||||
super(params); | |||||
Repository r = getRepository(); | Repository r = getRepository(); | ||||
List<RefModel> tags = JGitUtils.getTags(r, -1); | List<RefModel> tags = JGitUtils.getTags(r, -1); | ||||
r.close(); | |||||
// shortlog | // shortlog | ||||
add(new LinkPanel("summary", "title", repositoryName, SummaryPage.class, newRepositoryParameter())); | add(new LinkPanel("summary", "title", repositoryName, SummaryPage.class, newRepositoryParameter())); | ||||
// footer | // footer | ||||
addFooter(); | addFooter(); | ||||
} | } | ||||
@Override | |||||
protected String getPageName() { | |||||
return "tags"; | |||||
} | |||||
} | } |
<?xml version="1.0" encoding="UTF-8"?> | <?xml version="1.0" encoding="UTF-8"?> | ||||
<html xmlns="http://www.w3.org/1999/xhtml" > | <html xmlns="http://www.w3.org/1999/xhtml" > | ||||
<body> | <body> | ||||
<!-- page header --> | |||||
<div wicket:id="pageHeader"></div> | |||||
<wicket:extend> | |||||
<!-- page nav links --> | <!-- page nav links --> | ||||
<div wicket:id="pageLinks"></div> | |||||
<div wicket:id="pageLinks">[page links]</div> | |||||
<!-- shortlog --> | |||||
<div style="margin-top:5px;" class="header" wicket:id="summary"></div> | |||||
<!-- header --> | |||||
<div style="margin-top:5px;" class="header" wicket:id="summary">[header]</div> | |||||
<!-- tickets --> | |||||
<table style="width:100%" class="pretty"> | <table style="width:100%" class="pretty"> | ||||
<tbody> | <tbody> | ||||
<tr wicket:id="ticket"> | <tr wicket:id="ticket"> | ||||
<td style="padding:0; margin:0;"><div wicket:id="ticketState"></div></td> | |||||
<td class="date"><span wicket:id="ticketDate"></span></td> | |||||
<td><div wicket:id="ticketHandler"></div></td> | |||||
<td><div wicket:id="ticketTitle"></div></td> | |||||
<td style="padding:0; margin:0;"><div wicket:id="ticketState">[ticket state]</div></td> | |||||
<td class="date"><span wicket:id="ticketDate">[ticket date]</span></td> | |||||
<td><div wicket:id="ticketHandler">[ticket handler]</div></td> | |||||
<td><div wicket:id="ticketTitle">[ticket title]</div></td> | |||||
</tr> | </tr> | ||||
</tbody> | </tbody> | ||||
</table> | </table> | ||||
<!-- footer --> | |||||
<div wicket:id="pageFooter"></div> | |||||
</wicket:extend> | |||||
</body> | </body> | ||||
</html> | </html> |
public class TicGitPage extends RepositoryPage { | public class TicGitPage extends RepositoryPage { | ||||
public TicGitPage(PageParameters params) { | public TicGitPage(PageParameters params) { | ||||
super(params, "ticgit"); | |||||
super(params); | |||||
Repository r = getRepository(); | Repository r = getRepository(); | ||||
List<TicGitTicket> tickets = JGitUtils.getTicGitTickets(r); | List<TicGitTicket> tickets = JGitUtils.getTicGitTickets(r); | ||||
r.close(); | |||||
// shortlog | // shortlog | ||||
add(new LinkPanel("summary", "title", repositoryName, SummaryPage.class, newRepositoryParameter())); | add(new LinkPanel("summary", "title", repositoryName, SummaryPage.class, newRepositoryParameter())); | ||||
// footer | // footer | ||||
addFooter(); | addFooter(); | ||||
} | } | ||||
@Override | |||||
protected String getPageName() { | |||||
return "ticgit"; | |||||
} | |||||
} | } |
<?xml version="1.0" encoding="UTF-8"?> | <?xml version="1.0" encoding="UTF-8"?> | ||||
<html xmlns="http://www.w3.org/1999/xhtml" > | <html xmlns="http://www.w3.org/1999/xhtml" > | ||||
<body> | <body> | ||||
<!-- page header --> | |||||
<div wicket:id="pageHeader"></div> | |||||
<wicket:extend> | |||||
<!-- page nav links --> | <!-- page nav links --> | ||||
<div wicket:id="pageLinks"></div> | |||||
<div wicket:id="pageLinks">[page links]</div> | |||||
<!-- ticket title --> | <!-- ticket title --> | ||||
<div style="font-size:150%;padding-top:5px;" wicket:id="ticketTitle"></div> | |||||
<div style="font-size:150%;padding-top:5px;" wicket:id="ticketTitle">[ticket title]</div> | |||||
<!-- ticket info --> | <!-- ticket info --> | ||||
<table class="plain"> | <table class="plain"> | ||||
<tr><th>ticket id</th><td class="sha1"><span wicket:id="ticketId">Message goes here</span></td></tr> | |||||
<tr><th>assigned</th><td><span wicket:id=ticketHandler>Message goes here</span></td></tr> | |||||
<tr><th>open date</th><td><span wicket:id="ticketOpenDate">Message goes here</span></td></tr> | |||||
<tr><th>state</th><td><span wicket:id="ticketState">Message goes here</span></td></tr> | |||||
<tr><th>tags</th><td><span wicket:id="ticketTags">Message goes here</span></td></tr> | |||||
<tr><th>ticket id</th><td class="sha1"><span wicket:id="ticketId">[ticket id]</span></td></tr> | |||||
<tr><th>assigned</th><td><span wicket:id=ticketHandler>[ticket title]</span></td></tr> | |||||
<tr><th>open date</th><td><span wicket:id="ticketOpenDate">[ticket open date]</span></td></tr> | |||||
<tr><th>state</th><td><span wicket:id="ticketState">[ticket state]</span></td></tr> | |||||
<tr><th>tags</th><td><span wicket:id="ticketTags">[ticket tags]</span></td></tr> | |||||
</table> | </table> | ||||
<!-- comments header --> | <!-- comments header --> | ||||
<table style="width:100%;" class="pretty"> | <table style="width:100%;" class="pretty"> | ||||
<tbody> | <tbody> | ||||
<tr wicket:id="comment"> | <tr wicket:id="comment"> | ||||
<td class="date"><span wicket:id="commentDate"></span></td> | |||||
<td><b><div wicket:id="commentAuthor"></div></b></td> | |||||
<td><div wicket:id="commentText"></div></td> | |||||
<td class="date"><span wicket:id="commentDate">[comment date]</span></td> | |||||
<td><b><div wicket:id="commentAuthor">[comment author]</div></b></td> | |||||
<td><div wicket:id="commentText">[comment text]</div></td> | |||||
</tr> | </tr> | ||||
</tbody> | </tbody> | ||||
</table> | </table> | ||||
<!-- footer --> | |||||
<div wicket:id="pageFooter"></div> | |||||
</wicket:extend> | |||||
</body> | </body> | ||||
</html> | </html> |
public class TicGitTicketPage extends RepositoryPage { | public class TicGitTicketPage extends RepositoryPage { | ||||
public TicGitTicketPage(PageParameters params) { | public TicGitTicketPage(PageParameters params) { | ||||
super(params, "ticket"); | |||||
super(params); | |||||
final String ticketFolder = params.getString("f", ""); | final String ticketFolder = params.getString("f", ""); | ||||
Repository r = getRepository(); | Repository r = getRepository(); | ||||
TicGitTicket t = JGitUtils.getTicGitTicket(r, ticketFolder); | TicGitTicket t = JGitUtils.getTicGitTicket(r, ticketFolder); | ||||
r.close(); | |||||
add(new Label("ticketTitle", t.title)); | add(new Label("ticketTitle", t.title)); | ||||
add(new Label("ticketId", t.id)); | add(new Label("ticketId", t.id)); | ||||
// footer | // footer | ||||
addFooter(); | addFooter(); | ||||
} | } | ||||
@Override | |||||
protected String getPageName() { | |||||
return "ticket"; | |||||
} | |||||
private String prepareComment(String comment) { | private String prepareComment(String comment) { | ||||
String html = WicketUtils.breakLines(comment).trim(); | String html = WicketUtils.breakLines(comment).trim(); |
<?xml version="1.0" encoding="UTF-8"?> | <?xml version="1.0" encoding="UTF-8"?> | ||||
<html xmlns="http://www.w3.org/1999/xhtml" > | <html xmlns="http://www.w3.org/1999/xhtml" > | ||||
<body> | <body> | ||||
<!-- page header --> | |||||
<div wicket:id="pageHeader"></div> | |||||
<wicket:extend> | |||||
<!-- page nav links --> | <!-- page nav links --> | ||||
<div wicket:id="pageLinks"></div> | |||||
<div wicket:id="pageLinks">[page links]</div> | |||||
<!-- blob nav links --> | <!-- blob nav links --> | ||||
<div class="page_nav2"> | <div class="page_nav2"> | ||||
<span wicket:id="historyLink"></span> | <span wicket:id="headLink"></span> | |||||
<span wicket:id="historyLink">[history link]</span> | <span wicket:id="headLink">[head link]</span> | |||||
</div> | </div> | ||||
<!-- shortlog header --> | <!-- shortlog header --> | ||||
<div class="header" wicket:id="shortlog"></div> | |||||
<div class="header" wicket:id="shortlog">[shortlog header]</div> | |||||
<!-- breadcrumbs --> | <!-- breadcrumbs --> | ||||
<div wicket:id="breadcrumbs"></div> | |||||
<div wicket:id="breadcrumbs">[breadcrumbs]</div> | |||||
<!-- changed paths --> | <!-- changed paths --> | ||||
<table style="width:100%" class="pretty"> | <table style="width:100%" class="pretty"> | ||||
<tr wicket:id="changedPath"> | <tr wicket:id="changedPath"> | ||||
<td><span wicket:id="pathName"></span></td> | <td><span wicket:id="pathName"></span></td> | ||||
<td class="size"><span wicket:id="pathSize"></span></td> | |||||
<td class="mode"><span wicket:id="pathPermissions"></span></td> | |||||
<td class="rightAlign"><span wicket:id="treeLinks"></span></td> | |||||
<td class="size"><span wicket:id="pathSize">[path size]</span></td> | |||||
<td class="mode"><span wicket:id="pathPermissions">[path permissions]</span></td> | |||||
<td class="rightAlign"><span wicket:id="treeLinks">[path links]</span></td> | |||||
</tr> | </tr> | ||||
</table> | </table> | ||||
<!-- footer --> | |||||
<div wicket:id="pageFooter"></div> | |||||
</wicket:extend> | |||||
</body> | </body> | ||||
</html> | </html> |
public class TreePage extends RepositoryPage { | public class TreePage extends RepositoryPage { | ||||
public TreePage(PageParameters params) { | public TreePage(PageParameters params) { | ||||
super(params, "tree"); | |||||
super(params); | |||||
final String basePath = params.getString("f", null); | final String basePath = params.getString("f", null); | ||||
}; | }; | ||||
add(pathsView); | add(pathsView); | ||||
// close repository | |||||
r.close(); | |||||
// footer | // footer | ||||
addFooter(); | addFooter(); | ||||
} | } | ||||
@Override | |||||
protected String getPageName() { | |||||
return "tree"; | |||||
} | |||||
} | } |
PR.registerLangHandler(PR.createSimpleLexer([["com",/^#[^\r\n]*/,null,"#"],["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["str",/^\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)/,null,'"']],[["kwd",/^(?:ADS|AD|AUG|BZF|BZMF|CAE|CAF|CA|CCS|COM|CS|DAS|DCA|DCOM|DCS|DDOUBL|DIM|DOUBLE|DTCB|DTCF|DV|DXCH|EDRUPT|EXTEND|INCR|INDEX|NDX|INHINT|LXCH|MASK|MSK|MP|MSU|NOOP|OVSK|QXCH|RAND|READ|RELINT|RESUME|RETURN|ROR|RXOR|SQUARE|SU|TCR|TCAA|OVSK|TCF|TC|TS|WAND|WOR|WRITE|XCH|XLQ|XXALQ|ZL|ZQ|ADD|ADZ|SUB|SUZ|MPY|MPR|MPZ|DVP|COM|ABS|CLA|CLZ|LDQ|STO|STQ|ALS|LLS|LRS|TRA|TSQ|TMI|TOV|AXT|TIX|DLY|INP|OUT)\s/, | |||||
null],["typ",/^(?:-?GENADR|=MINUS|2BCADR|VN|BOF|MM|-?2CADR|-?[1-6]DNADR|ADRES|BBCON|[SE]?BANK\=?|BLOCK|BNKSUM|E?CADR|COUNT\*?|2?DEC\*?|-?DNCHAN|-?DNPTR|EQUALS|ERASE|MEMORY|2?OCT|REMADR|SETLOC|SUBRO|ORG|BSS|BES|SYN|EQU|DEFINE|END)\s/,null],["lit",/^\'(?:-*(?:\w|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?)?/],["pln",/^-*(?:[!-z_]|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?/i],["pun",/^[^\w\t\n\r \xA0()\"\\\';]+/]]),["apollo","agc","aea"]) |
PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[ \t\r\n\f]+/,null," \t\r\n\u000c"]],[["str",/^\"(?:[^\n\r\f\\\"]|\\(?:\r\n?|\n|\f)|\\[\s\S])*\"/,null],["str",/^\'(?:[^\n\r\f\\\']|\\(?:\r\n?|\n|\f)|\\[\s\S])*\'/,null],["lang-css-str",/^url\(([^\)\"\']*)\)/i],["kwd",/^(?:url|rgb|\!important|@import|@page|@media|@charset|inherit)(?=[^\-\w]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|(?:\\[0-9a-f]+ ?))(?:[_a-z0-9\-]|\\(?:\\[0-9a-f]+ ?))*)\s*:/i],["com",/^\/\*[^*]*\*+(?:[^\/*][^*]*\*+)*\//], | |||||
["com",/^(?:<!--|--\>)/],["lit",/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],["lit",/^#(?:[0-9a-f]{3}){1,2}/i],["pln",/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i],["pun",/^[^\s\w\'\"]+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[["kwd",/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[["str",/^[^\)\"\']+/]]),["css-str"]) |
PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\x0B\x0C\r ]+/,null,"\t\n\u000b\u000c\r "],["str",/^\"(?:[^\"\\\n\x0C\r]|\\[\s\S])*(?:\"|$)/,null,'"'],["str",/^\'(?:[^\'\\\n\x0C\r]|\\[^&])\'?/,null,"'"],["lit",/^(?:0o[0-7]+|0x[\da-f]+|\d+(?:\.\d+)?(?:e[+\-]?\d+)?)/i,null,"0123456789"]],[["com",/^(?:(?:--+(?:[^\r\n\x0C]*)?)|(?:\{-(?:[^-]|-+[^-\}])*-\}))/],["kwd",/^(?:case|class|data|default|deriving|do|else|if|import|in|infix|infixl|infixr|instance|let|module|newtype|of|then|type|where|_)(?=[^a-zA-Z0-9\']|$)/, | |||||
null],["pln",/^(?:[A-Z][\w\']*\.)*[a-zA-Z][\w\']*/],["pun",/^[^\t\n\x0B\x0C\r a-zA-Z0-9\'\"]+/]]),["hs"]) |
PR.registerLangHandler(PR.createSimpleLexer([["opn",/^\(/,null,"("],["clo",/^\)/,null,")"],["com",/^;[^\r\n]*/,null,";"],["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["str",/^\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)/,null,'"']],[["kwd",/^(?:block|c[ad]+r|catch|con[ds]|def(?:ine|un)|do|eq|eql|equal|equalp|eval-when|flet|format|go|if|labels|lambda|let|load-time-value|locally|macrolet|multiple-value-call|nil|progn|progv|quote|require|return-from|setq|symbol-macrolet|t|tagbody|the|throw|unwind)\b/, | |||||
null],["lit",/^[+\-]?(?:0x[0-9a-f]+|\d+\/\d+|(?:\.\d+|\d+(?:\.\d*)?)(?:[ed][+\-]?\d+)?)/i],["lit",/^\'(?:-*(?:\w|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?)?/],["pln",/^-*(?:[a-z_]|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?/i],["pun",/^[^\w\t\n\r \xA0()\"\\\';]+/]]),["cl","el","lisp","scm"]) |
PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["str",/^(?:\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)|\'(?:[^\'\\]|\\[\s\S])*(?:\'|$))/,null,"\"'"]],[["com",/^--(?:\[(=*)\[[\s\S]*?(?:\]\1\]|$)|[^\r\n]*)/],["str",/^\[(=*)\[[\s\S]*?(?:\]\1\]|$)/],["kwd",/^(?:and|break|do|else|elseif|end|false|for|function|if|in|local|nil|not|or|repeat|return|then|true|until|while)\b/,null],["lit",/^[+-]?(?:0x[\da-f]+|(?:(?:\.\d+|\d+(?:\.\d*)?)(?:e[+\-]?\d+)?))/i], | |||||
["pln",/^[a-z_]\w*/i],["pun",/^[^\w\t\n\r \xA0][^\w\t\n\r \xA0\"\'\-\+=]*/]]),["lua"]) |
PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["com",/^#(?:if[\t\n\r \xA0]+(?:[a-z_$][\w\']*|``[^\r\n\t`]*(?:``|$))|else|endif|light)/i,null,"#"],["str",/^(?:\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)|\'(?:[^\'\\]|\\[\s\S])*(?:\'|$))/,null,"\"'"]],[["com",/^(?:\/\/[^\r\n]*|\(\*[\s\S]*?\*\))/],["kwd",/^(?:abstract|and|as|assert|begin|class|default|delegate|do|done|downcast|downto|elif|else|end|exception|extern|false|finally|for|fun|function|if|in|inherit|inline|interface|internal|lazy|let|match|member|module|mutable|namespace|new|null|of|open|or|override|private|public|rec|return|static|struct|then|to|true|try|type|upcast|use|val|void|when|while|with|yield|asr|land|lor|lsl|lsr|lxor|mod|sig|atomic|break|checked|component|const|constraint|constructor|continue|eager|event|external|fixed|functor|global|include|method|mixin|object|parallel|process|protected|pure|sealed|trait|virtual|volatile)\b/], | |||||
["lit",/^[+\-]?(?:0x[\da-f]+|(?:(?:\.\d+|\d+(?:\.\d*)?)(?:e[+\-]?\d+)?))/i],["pln",/^(?:[a-z_]\w*[!?#]?|``[^\r\n\t`]*(?:``|$))/i],["pun",/^[^\t\n\r \xA0\"\'\w]+/]]),["fs","ml"]) |
PR.registerLangHandler(PR.sourceDecorator({keywords:"bool bytes default double enum extend extensions false fixed32 fixed64 float group import int32 int64 max message option optional package repeated required returns rpc service sfixed32 sfixed64 sint32 sint64 string syntax to true uint32 uint64",cStyleComments:true}),["proto"]) |
PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["str",/^(?:"(?:(?:""(?:""?(?!")|[^\\"]|\\.)*"{0,3})|(?:[^"\r\n\\]|\\.)*"?))/,null,'"'],["lit",/^`(?:[^\r\n\\`]|\\.)*`?/,null,"`"],["pun",/^[!#%&()*+,\-:;<=>?@\[\\\]^{|}~]+/,null,"!#%&()*+,-:;<=>?@[\\]^{|}~"]],[["str",/^'(?:[^\r\n\\']|\\(?:'|[^\r\n']+))'/],["lit",/^'[a-zA-Z_$][\w$]*(?!['$\w])/],["kwd",/^(?:abstract|case|catch|class|def|do|else|extends|final|finally|for|forSome|if|implicit|import|lazy|match|new|object|override|package|private|protected|requires|return|sealed|super|throw|trait|try|type|val|var|while|with|yield)\b/], | |||||
["lit",/^(?:true|false|null|this)\b/],["lit",/^(?:(?:0(?:[0-7]+|X[0-9A-F]+))L?|(?:(?:0|[1-9][0-9]*)(?:(?:\.[0-9]+)?(?:E[+\-]?[0-9]+)?F?|L?))|\\.[0-9]+(?:E[+\-]?[0-9]+)?F?)/i],["typ",/^[$_]*[A-Z][_$A-Z0-9]*[a-z][\w$]*/],["pln",/^[$a-zA-Z_][\w$]*/],["com",/^\/(?:\/.*|\*(?:\/|\**[^*/])*(?:\*+\/?)?)/],["pun",/^(?:\.+|\/)/]]),["scala"]) |
PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["str",/^(?:"(?:[^\"\\]|\\.)*"|'(?:[^\'\\]|\\.)*')/,null,"\"'"]],[["com",/^(?:--[^\r\n]*|\/\*[\s\S]*?(?:\*\/|$))/],["kwd",/^(?:ADD|ALL|ALTER|AND|ANY|AS|ASC|AUTHORIZATION|BACKUP|BEGIN|BETWEEN|BREAK|BROWSE|BULK|BY|CASCADE|CASE|CHECK|CHECKPOINT|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMN|COMMIT|COMPUTE|CONSTRAINT|CONTAINS|CONTAINSTABLE|CONTINUE|CONVERT|CREATE|CROSS|CURRENT|CURRENT_DATE|CURRENT_TIME|CURRENT_TIMESTAMP|CURRENT_USER|CURSOR|DATABASE|DBCC|DEALLOCATE|DECLARE|DEFAULT|DELETE|DENY|DESC|DISK|DISTINCT|DISTRIBUTED|DOUBLE|DROP|DUMMY|DUMP|ELSE|END|ERRLVL|ESCAPE|EXCEPT|EXEC|EXECUTE|EXISTS|EXIT|FETCH|FILE|FILLFACTOR|FOR|FOREIGN|FREETEXT|FREETEXTTABLE|FROM|FULL|FUNCTION|GOTO|GRANT|GROUP|HAVING|HOLDLOCK|IDENTITY|IDENTITYCOL|IDENTITY_INSERT|IF|IN|INDEX|INNER|INSERT|INTERSECT|INTO|IS|JOIN|KEY|KILL|LEFT|LIKE|LINENO|LOAD|NATIONAL|NOCHECK|NONCLUSTERED|NOT|NULL|NULLIF|OF|OFF|OFFSETS|ON|OPEN|OPENDATASOURCE|OPENQUERY|OPENROWSET|OPENXML|OPTION|OR|ORDER|OUTER|OVER|PERCENT|PLAN|PRECISION|PRIMARY|PRINT|PROC|PROCEDURE|PUBLIC|RAISERROR|READ|READTEXT|RECONFIGURE|REFERENCES|REPLICATION|RESTORE|RESTRICT|RETURN|REVOKE|RIGHT|ROLLBACK|ROWCOUNT|ROWGUIDCOL|RULE|SAVE|SCHEMA|SELECT|SESSION_USER|SET|SETUSER|SHUTDOWN|SOME|STATISTICS|SYSTEM_USER|TABLE|TEXTSIZE|THEN|TO|TOP|TRAN|TRANSACTION|TRIGGER|TRUNCATE|TSEQUAL|UNION|UNIQUE|UPDATE|UPDATETEXT|USE|USER|VALUES|VARYING|VIEW|WAITFOR|WHEN|WHERE|WHILE|WITH|WRITETEXT)(?=[^\w-]|$)/i, | |||||
null],["lit",/^[+-]?(?:0x[\da-f]+|(?:(?:\.\d+|\d+(?:\.\d*)?)(?:e[+\-]?\d+)?))/i],["pln",/^[a-z_][\w-]*/i],["pun",/^[^\w\t\n\r \xA0\"\'][^\w\t\n\r \xA0+\-\"\']*/]]),["sql"]) |
PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xA0\u2028\u2029]+/,null,"\t\n\r \u00a0\u2028\u2029"],["str",/^(?:[\"\u201C\u201D](?:[^\"\u201C\u201D]|[\"\u201C\u201D]{2})(?:[\"\u201C\u201D]c|$)|[\"\u201C\u201D](?:[^\"\u201C\u201D]|[\"\u201C\u201D]{2})*(?:[\"\u201C\u201D]|$))/i,null,'"\u201c\u201d'],["com",/^[\'\u2018\u2019][^\r\n\u2028\u2029]*/,null,"'\u2018\u2019"]],[["kwd",/^(?:AddHandler|AddressOf|Alias|And|AndAlso|Ansi|As|Assembly|Auto|Boolean|ByRef|Byte|ByVal|Call|Case|Catch|CBool|CByte|CChar|CDate|CDbl|CDec|Char|CInt|Class|CLng|CObj|Const|CShort|CSng|CStr|CType|Date|Decimal|Declare|Default|Delegate|Dim|DirectCast|Do|Double|Each|Else|ElseIf|End|EndIf|Enum|Erase|Error|Event|Exit|Finally|For|Friend|Function|Get|GetType|GoSub|GoTo|Handles|If|Implements|Imports|In|Inherits|Integer|Interface|Is|Let|Lib|Like|Long|Loop|Me|Mod|Module|MustInherit|MustOverride|MyBase|MyClass|Namespace|New|Next|Not|NotInheritable|NotOverridable|Object|On|Option|Optional|Or|OrElse|Overloads|Overridable|Overrides|ParamArray|Preserve|Private|Property|Protected|Public|RaiseEvent|ReadOnly|ReDim|RemoveHandler|Resume|Return|Select|Set|Shadows|Shared|Short|Single|Static|Step|Stop|String|Structure|Sub|SyncLock|Then|Throw|To|Try|TypeOf|Unicode|Until|Variant|Wend|When|While|With|WithEvents|WriteOnly|Xor|EndIf|GoSub|Let|Variant|Wend)\b/i, | |||||
null],["com",/^REM[^\r\n\u2028\u2029]*/i],["lit",/^(?:True\b|False\b|Nothing\b|\d+(?:E[+\-]?\d+[FRD]?|[FRDSIL])?|(?:&H[0-9A-F]+|&O[0-7]+)[SIL]?|\d*\.\d+(?:E[+\-]?\d+)?[FRD]?|#\s+(?:\d+[\-\/]\d+[\-\/]\d+(?:\s+\d+:\d+(?::\d+)?(\s*(?:AM|PM))?)?|\d+:\d+(?::\d+)?(\s*(?:AM|PM))?)\s+#)/i],["pln",/^(?:(?:[a-z]|_\w)\w*|\[(?:[a-z]|_\w)\w*\])/i],["pun",/^[^\w\t\n\r \"\'\[\]\xA0\u2018\u2019\u201C\u201D\u2028\u2029]+/],["pun",/^(?:\[|\])/]]),["vb","vbs"]) |
PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"]],[["str",/^(?:[BOX]?"(?:[^\"]|"")*"|'.')/i],["com",/^--[^\r\n]*/],["kwd",/^(?:abs|access|after|alias|all|and|architecture|array|assert|attribute|begin|block|body|buffer|bus|case|component|configuration|constant|disconnect|downto|else|elsif|end|entity|exit|file|for|function|generate|generic|group|guarded|if|impure|in|inertial|inout|is|label|library|linkage|literal|loop|map|mod|nand|new|next|nor|not|null|of|on|open|or|others|out|package|port|postponed|procedure|process|pure|range|record|register|reject|rem|report|return|rol|ror|select|severity|shared|signal|sla|sll|sra|srl|subtype|then|to|transport|type|unaffected|units|until|use|variable|wait|when|while|with|xnor|xor)(?=[^\w-]|$)/i, | |||||
null],["typ",/^(?:bit|bit_vector|character|boolean|integer|real|time|string|severity_level|positive|natural|signed|unsigned|line|text|std_u?logic(?:_vector)?)(?=[^\w-]|$)/i,null],["typ",/^\'(?:ACTIVE|ASCENDING|BASE|DELAYED|DRIVING|DRIVING_VALUE|EVENT|HIGH|IMAGE|INSTANCE_NAME|LAST_ACTIVE|LAST_EVENT|LAST_VALUE|LEFT|LEFTOF|LENGTH|LOW|PATH_NAME|POS|PRED|QUIET|RANGE|REVERSE_RANGE|RIGHT|RIGHTOF|SIMPLE_NAME|STABLE|SUCC|TRANSACTION|VAL|VALUE)(?=[^\w-]|$)/i,null],["lit",/^\d+(?:_\d+)*(?:#[\w\\.]+#(?:[+\-]?\d+(?:_\d+)*)?|(?:\.\d+(?:_\d+)*)?(?:E[+\-]?\d+(?:_\d+)*)?)/i], | |||||
["pln",/^(?:[a-z]\w*|\\[^\\]*\\)/i],["pun",/^[^\w\t\n\r \xA0\"\'][^\w\t\n\r \xA0\-\"\']*/]]),["vhdl","vhd"]) |
PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t \xA0a-gi-z0-9]+/,null,"\t \u00a0abcdefgijklmnopqrstuvwxyz0123456789"],["pun",/^[=*~\^\[\]]+/,null,"=*~^[]"]],[["lang-wiki.meta",/(?:^^|\r\n?|\n)(#[a-z]+)\b/],["lit",/^(?:[A-Z][a-z][a-z0-9]+[A-Z][a-z][a-zA-Z0-9]+)\b/],["lang-",/^\{\{\{([\s\S]+?)\}\}\}/],["lang-",/^`([^\r\n`]+)`/],["str",/^https?:\/\/[^\/?#\s]*(?:\/[^?#\s]*)?(?:\?[^#\s]*)?(?:#\S*)?/i],["pln",/^(?:\r\n|[\s\S])[^#=*~^A-Zh\{`\[\r\n]*/]]),["wiki"]); | |||||
PR.registerLangHandler(PR.createSimpleLexer([["kwd",/^#[a-z]+/i,null,"#"]],[]),["wiki.meta"]) |
PR.registerLangHandler(PR.createSimpleLexer([["pun",/^[:|>?]+/,null,":|>?"],["dec",/^%(?:YAML|TAG)[^#\r\n]+/,null,"%"],["typ",/^[&]\S+/,null,"&"],["typ",/^!\S*/,null,"!"],["str",/^"(?:[^\\"]|\\.)*(?:"|$)/,null,'"'],["str",/^'(?:[^']|'')*(?:'|$)/,null,"'"],["com",/^#[^\r\n]*/,null,"#"],["pln",/^\s+/,null," \t\r\n"]],[["dec",/^(?:---|\.\.\.)(?:[\r\n]|$)/],["pun",/^-/],["kwd",/^\w+:[ \r\n]/],["pln",/^\w+/]]), | |||||
["yaml","yml"]) |
.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun{color:#660}.pln{color:#000}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec{color:#606}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee}@media print{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun{color:#440}.pln{color:#000}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}} |
window.PR_SHOULD_USE_CONTINUATION=true;window.PR_TAB_WIDTH=8;window.PR_normalizedHtml=window.PR=window.prettyPrintOne=window.prettyPrint=void 0;window._pr_isIE6=function(){var y=navigator&&navigator.userAgent&&navigator.userAgent.match(/\bMSIE ([678])\./);y=y?+y[1]:false;window._pr_isIE6=function(){return y};return y}; | |||||
(function(){function y(b){return b.replace(L,"&").replace(M,"<").replace(N,">")}function H(b,f,i){switch(b.nodeType){case 1:var o=b.tagName.toLowerCase();f.push("<",o);var l=b.attributes,n=l.length;if(n){if(i){for(var r=[],j=n;--j>=0;)r[j]=l[j];r.sort(function(q,m){return q.name<m.name?-1:q.name===m.name?0:1});l=r}for(j=0;j<n;++j){r=l[j];r.specified&&f.push(" ",r.name.toLowerCase(),'="',r.value.replace(L,"&").replace(M,"<").replace(N,">").replace(X,"""),'"')}}f.push(">"); | |||||
for(l=b.firstChild;l;l=l.nextSibling)H(l,f,i);if(b.firstChild||!/^(?:br|link|img)$/.test(o))f.push("</",o,">");break;case 3:case 4:f.push(y(b.nodeValue));break}}function O(b){function f(c){if(c.charAt(0)!=="\\")return c.charCodeAt(0);switch(c.charAt(1)){case "b":return 8;case "t":return 9;case "n":return 10;case "v":return 11;case "f":return 12;case "r":return 13;case "u":case "x":return parseInt(c.substring(2),16)||c.charCodeAt(1);case "0":case "1":case "2":case "3":case "4":case "5":case "6":case "7":return parseInt(c.substring(1), | |||||
8);default:return c.charCodeAt(1)}}function i(c){if(c<32)return(c<16?"\\x0":"\\x")+c.toString(16);c=String.fromCharCode(c);if(c==="\\"||c==="-"||c==="["||c==="]")c="\\"+c;return c}function o(c){var d=c.substring(1,c.length-1).match(RegExp("\\\\u[0-9A-Fa-f]{4}|\\\\x[0-9A-Fa-f]{2}|\\\\[0-3][0-7]{0,2}|\\\\[0-7]{1,2}|\\\\[\\s\\S]|-|[^-\\\\]","g"));c=[];for(var a=[],k=d[0]==="^",e=k?1:0,h=d.length;e<h;++e){var g=d[e];switch(g){case "\\B":case "\\b":case "\\D":case "\\d":case "\\S":case "\\s":case "\\W":case "\\w":c.push(g); | |||||
continue}g=f(g);var s;if(e+2<h&&"-"===d[e+1]){s=f(d[e+2]);e+=2}else s=g;a.push([g,s]);if(!(s<65||g>122)){s<65||g>90||a.push([Math.max(65,g)|32,Math.min(s,90)|32]);s<97||g>122||a.push([Math.max(97,g)&-33,Math.min(s,122)&-33])}}a.sort(function(v,w){return v[0]-w[0]||w[1]-v[1]});d=[];g=[NaN,NaN];for(e=0;e<a.length;++e){h=a[e];if(h[0]<=g[1]+1)g[1]=Math.max(g[1],h[1]);else d.push(g=h)}a=["["];k&&a.push("^");a.push.apply(a,c);for(e=0;e<d.length;++e){h=d[e];a.push(i(h[0]));if(h[1]>h[0]){h[1]+1>h[0]&&a.push("-"); | |||||
a.push(i(h[1]))}}a.push("]");return a.join("")}function l(c){for(var d=c.source.match(RegExp("(?:\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]|\\\\u[A-Fa-f0-9]{4}|\\\\x[A-Fa-f0-9]{2}|\\\\[0-9]+|\\\\[^ux0-9]|\\(\\?[:!=]|[\\(\\)\\^]|[^\\x5B\\x5C\\(\\)\\^]+)","g")),a=d.length,k=[],e=0,h=0;e<a;++e){var g=d[e];if(g==="(")++h;else if("\\"===g.charAt(0))if((g=+g.substring(1))&&g<=h)k[g]=-1}for(e=1;e<k.length;++e)if(-1===k[e])k[e]=++n;for(h=e=0;e<a;++e){g=d[e];if(g==="("){++h;if(k[h]===undefined)d[e]="(?:"}else if("\\"=== | |||||
g.charAt(0))if((g=+g.substring(1))&&g<=h)d[e]="\\"+k[h]}for(h=e=0;e<a;++e)if("^"===d[e]&&"^"!==d[e+1])d[e]="";if(c.ignoreCase&&r)for(e=0;e<a;++e){g=d[e];c=g.charAt(0);if(g.length>=2&&c==="[")d[e]=o(g);else if(c!=="\\")d[e]=g.replace(/[a-zA-Z]/g,function(s){s=s.charCodeAt(0);return"["+String.fromCharCode(s&-33,s|32)+"]"})}return d.join("")}for(var n=0,r=false,j=false,q=0,m=b.length;q<m;++q){var t=b[q];if(t.ignoreCase)j=true;else if(/[a-z]/i.test(t.source.replace(/\\u[0-9a-f]{4}|\\x[0-9a-f]{2}|\\[^ux]/gi, | |||||
""))){r=true;j=false;break}}var p=[];q=0;for(m=b.length;q<m;++q){t=b[q];if(t.global||t.multiline)throw Error(""+t);p.push("(?:"+l(t)+")")}return RegExp(p.join("|"),j?"gi":"g")}function Y(b){var f=0;return function(i){for(var o=null,l=0,n=0,r=i.length;n<r;++n)switch(i.charAt(n)){case "\t":o||(o=[]);o.push(i.substring(l,n));l=b-f%b;for(f+=l;l>=0;l-=16)o.push(" ".substring(0,l));l=n+1;break;case "\n":f=0;break;default:++f}if(!o)return i;o.push(i.substring(l));return o.join("")}}function I(b, | |||||
f,i,o){if(f){b={source:f,c:b};i(b);o.push.apply(o,b.d)}}function B(b,f){var i={},o;(function(){for(var r=b.concat(f),j=[],q={},m=0,t=r.length;m<t;++m){var p=r[m],c=p[3];if(c)for(var d=c.length;--d>=0;)i[c.charAt(d)]=p;p=p[1];c=""+p;if(!q.hasOwnProperty(c)){j.push(p);q[c]=null}}j.push(/[\0-\uffff]/);o=O(j)})();var l=f.length;function n(r){for(var j=r.c,q=[j,z],m=0,t=r.source.match(o)||[],p={},c=0,d=t.length;c<d;++c){var a=t[c],k=p[a],e=void 0,h;if(typeof k==="string")h=false;else{var g=i[a.charAt(0)]; | |||||
if(g){e=a.match(g[1]);k=g[0]}else{for(h=0;h<l;++h){g=f[h];if(e=a.match(g[1])){k=g[0];break}}e||(k=z)}if((h=k.length>=5&&"lang-"===k.substring(0,5))&&!(e&&typeof e[1]==="string")){h=false;k=P}h||(p[a]=k)}g=m;m+=a.length;if(h){h=e[1];var s=a.indexOf(h),v=s+h.length;if(e[2]){v=a.length-e[2].length;s=v-h.length}k=k.substring(5);I(j+g,a.substring(0,s),n,q);I(j+g+s,h,Q(k,h),q);I(j+g+v,a.substring(v),n,q)}else q.push(j+g,k)}r.d=q}return n}function x(b){var f=[],i=[];if(b.tripleQuotedStrings)f.push([A,/^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/, | |||||
null,"'\""]);else b.multiLineStrings?f.push([A,/^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,null,"'\"`"]):f.push([A,/^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,null,"\"'"]);b.verbatimStrings&&i.push([A,/^@\"(?:[^\"]|\"\")*(?:\"|$)/,null]);if(b.hashComments)if(b.cStyleComments){f.push([C,/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/,null,"#"]);i.push([A,/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/, | |||||
null])}else f.push([C,/^#[^\r\n]*/,null,"#"]);if(b.cStyleComments){i.push([C,/^\/\/[^\r\n]*/,null]);i.push([C,/^\/\*[\s\S]*?(?:\*\/|$)/,null])}b.regexLiterals&&i.push(["lang-regex",RegExp("^"+Z+"(/(?=[^/*])(?:[^/\\x5B\\x5C]|\\x5C[\\s\\S]|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+/)")]);b=b.keywords.replace(/^\s+|\s+$/g,"");b.length&&i.push([R,RegExp("^(?:"+b.replace(/\s+/g,"|")+")\\b"),null]);f.push([z,/^\s+/,null," \r\n\t\u00a0"]);i.push([J,/^@[a-z_$][a-z_$@0-9]*/i,null],[S,/^@?[A-Z]+[a-z][A-Za-z_$@0-9]*/, | |||||
null],[z,/^[a-z_$][a-z_$@0-9]*/i,null],[J,/^(?:0x[a-f0-9]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+\-]?\d+)?)[a-z]*/i,null,"0123456789"],[E,/^.[^\s\w\.$@\'\"\`\/\#]*/,null]);return B(f,i)}function $(b){function f(D){if(D>r){if(j&&j!==q){n.push("</span>");j=null}if(!j&&q){j=q;n.push('<span class="',j,'">')}var T=y(p(i.substring(r,D))).replace(e?d:c,"$1 ");e=k.test(T);n.push(T.replace(a,s));r=D}}var i=b.source,o=b.g,l=b.d,n=[],r=0,j=null,q=null,m=0,t=0,p=Y(window.PR_TAB_WIDTH),c=/([\r\n ]) /g, | |||||
d=/(^| ) /gm,a=/\r\n?|\n/g,k=/[ \r\n]$/,e=true,h=window._pr_isIE6();h=h?b.b.tagName==="PRE"?h===6?" \r\n":h===7?" <br>\r":" \r":" <br />":"<br />";var g=b.b.className.match(/\blinenums\b(?::(\d+))?/),s;if(g){for(var v=[],w=0;w<10;++w)v[w]=h+'</li><li class="L'+w+'">';var F=g[1]&&g[1].length?g[1]-1:0;n.push('<ol class="linenums"><li class="L',F%10,'"');F&&n.push(' value="',F+1,'"');n.push(">");s=function(){var D=v[++F%10];return j?"</span>"+D+'<span class="'+j+'">':D}}else s=h; | |||||
for(;;)if(m<o.length?t<l.length?o[m]<=l[t]:true:false){f(o[m]);if(j){n.push("</span>");j=null}n.push(o[m+1]);m+=2}else if(t<l.length){f(l[t]);q=l[t+1];t+=2}else break;f(i.length);j&&n.push("</span>");g&&n.push("</li></ol>");b.a=n.join("")}function u(b,f){for(var i=f.length;--i>=0;){var o=f[i];if(G.hasOwnProperty(o))"console"in window&&console.warn("cannot override language handler %s",o);else G[o]=b}}function Q(b,f){b&&G.hasOwnProperty(b)||(b=/^\s*</.test(f)?"default-markup":"default-code");return G[b]} | |||||
function U(b){var f=b.f,i=b.e;b.a=f;try{var o,l=f.match(aa);f=[];var n=0,r=[];if(l)for(var j=0,q=l.length;j<q;++j){var m=l[j];if(m.length>1&&m.charAt(0)==="<"){if(!ba.test(m))if(ca.test(m)){f.push(m.substring(9,m.length-3));n+=m.length-12}else if(da.test(m)){f.push("\n");++n}else if(m.indexOf(V)>=0&&m.replace(/\s(\w+)\s*=\s*(?:\"([^\"]*)\"|'([^\']*)'|(\S+))/g,' $1="$2$3$4"').match(/[cC][lL][aA][sS][sS]=\"[^\"]*\bnocode\b/)){var t=m.match(W)[2],p=1,c;c=j+1;a:for(;c<q;++c){var d=l[c].match(W);if(d&& | |||||
d[2]===t)if(d[1]==="/"){if(--p===0)break a}else++p}if(c<q){r.push(n,l.slice(j,c+1).join(""));j=c}else r.push(n,m)}else r.push(n,m)}else{var a;p=m;var k=p.indexOf("&");if(k<0)a=p;else{for(--k;(k=p.indexOf("&#",k+1))>=0;){var e=p.indexOf(";",k);if(e>=0){var h=p.substring(k+3,e),g=10;if(h&&h.charAt(0)==="x"){h=h.substring(1);g=16}var s=parseInt(h,g);isNaN(s)||(p=p.substring(0,k)+String.fromCharCode(s)+p.substring(e+1))}}a=p.replace(ea,"<").replace(fa,">").replace(ga,"'").replace(ha,'"').replace(ia," ").replace(ja, | |||||
"&")}f.push(a);n+=a.length}}o={source:f.join(""),h:r};var v=o.source;b.source=v;b.c=0;b.g=o.h;Q(i,v)(b);$(b)}catch(w){if("console"in window)console.log(w&&w.stack?w.stack:w)}}var A="str",R="kwd",C="com",S="typ",J="lit",E="pun",z="pln",P="src",V="nocode",Z=function(){for(var b=["!","!=","!==","#","%","%=","&","&&","&&=","&=","(","*","*=","+=",",","-=","->","/","/=",":","::",";","<","<<","<<=","<=","=","==","===",">",">=",">>",">>=",">>>",">>>=","?","@","[","^","^=","^^","^^=","{","|","|=","||","||=", | |||||
"~","break","case","continue","delete","do","else","finally","instanceof","return","throw","try","typeof"],f="(?:^^|[+-]",i=0;i<b.length;++i)f+="|"+b[i].replace(/([^=<>:&a-z])/g,"\\$1");f+=")\\s*";return f}(),L=/&/g,M=/</g,N=/>/g,X=/\"/g,ea=/</g,fa=/>/g,ga=/'/g,ha=/"/g,ja=/&/g,ia=/ /g,ka=/[\r\n]/g,K=null,aa=RegExp("[^<]+|<!--[\\s\\S]*?--\>|<!\\[CDATA\\[[\\s\\S]*?\\]\\]>|</?[a-zA-Z](?:[^>\"']|'[^']*'|\"[^\"]*\")*>|<","g"),ba=/^<\!--/,ca=/^<!\[CDATA\[/,da=/^<br\b/i,W=/^<(\/?)([a-zA-Z][a-zA-Z0-9]*)/, | |||||
la=x({keywords:"break continue do else for if return while auto case char const default double enum extern float goto int long register short signed sizeof static struct switch typedef union unsigned void volatile catch class delete false import new operator private protected public this throw true try typeof alignof align_union asm axiom bool concept concept_map const_cast constexpr decltype dynamic_cast explicit export friend inline late_check mutable namespace nullptr reinterpret_cast static_assert static_cast template typeid typename using virtual wchar_t where break continue do else for if return while auto case char const default double enum extern float goto int long register short signed sizeof static struct switch typedef union unsigned void volatile catch class delete false import new operator private protected public this throw true try typeof abstract boolean byte extends final finally implements import instanceof null native package strictfp super synchronized throws transient as base by checked decimal delegate descending event fixed foreach from group implicit in interface internal into is lock object out override orderby params partial readonly ref sbyte sealed stackalloc string select uint ulong unchecked unsafe ushort var break continue do else for if return while auto case char const default double enum extern float goto int long register short signed sizeof static struct switch typedef union unsigned void volatile catch class delete false import new operator private protected public this throw true try typeof debugger eval export function get null set undefined var with Infinity NaN caller delete die do dump elsif eval exit foreach for goto if import last local my next no our print package redo require sub undef unless until use wantarray while BEGIN END break continue do else for if return while and as assert class def del elif except exec finally from global import in is lambda nonlocal not or pass print raise try with yield False True None break continue do else for if return while alias and begin case class def defined elsif end ensure false in module next nil not or redo rescue retry self super then true undef unless until when yield BEGIN END break continue do else for if return while case done elif esac eval fi function in local set then until ", | |||||
hashComments:true,cStyleComments:true,multiLineStrings:true,regexLiterals:true}),G={};u(la,["default-code"]);u(B([],[[z,/^[^<?]+/],["dec",/^<!\w[^>]*(?:>|$)/],[C,/^<\!--[\s\S]*?(?:-\->|$)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],[E,/^(?:<[%?]|[%?]>)/],["lang-",/^<xmp\b[^>]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-js",/^<script\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^<style\b[^>]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),["default-markup", | |||||
"htm","html","mxml","xhtml","xml","xsl"]);u(B([[z,/^[\s]+/,null," \t\r\n"],["atv",/^(?:\"[^\"]*\"?|\'[^\']*\'?)/,null,"\"'"]],[["tag",/^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],["atn",/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],[E,/^[=<>\/]+/],["lang-js",/^on\w+\s*=\s*\"([^\"]+)\"/i],["lang-js",/^on\w+\s*=\s*\'([^\']+)\'/i],["lang-js",/^on\w+\s*=\s*([^\"\'>\s]+)/i],["lang-css",/^style\s*=\s*\"([^\"]+)\"/i],["lang-css",/^style\s*=\s*\'([^\']+)\'/i], | |||||
["lang-css",/^style\s*=\s*([^\"\'>\s]+)/i]]),["in.tag"]);u(B([],[["atv",/^[\s\S]+/]]),["uq.val"]);u(x({keywords:"break continue do else for if return while auto case char const default double enum extern float goto int long register short signed sizeof static struct switch typedef union unsigned void volatile catch class delete false import new operator private protected public this throw true try typeof alignof align_union asm axiom bool concept concept_map const_cast constexpr decltype dynamic_cast explicit export friend inline late_check mutable namespace nullptr reinterpret_cast static_assert static_cast template typeid typename using virtual wchar_t where ", | |||||
hashComments:true,cStyleComments:true}),["c","cc","cpp","cxx","cyc","m"]);u(x({keywords:"null true false"}),["json"]);u(x({keywords:"break continue do else for if return while auto case char const default double enum extern float goto int long register short signed sizeof static struct switch typedef union unsigned void volatile catch class delete false import new operator private protected public this throw true try typeof abstract boolean byte extends final finally implements import instanceof null native package strictfp super synchronized throws transient as base by checked decimal delegate descending event fixed foreach from group implicit in interface internal into is lock object out override orderby params partial readonly ref sbyte sealed stackalloc string select uint ulong unchecked unsafe ushort var ", | |||||
hashComments:true,cStyleComments:true,verbatimStrings:true}),["cs"]);u(x({keywords:"break continue do else for if return while auto case char const default double enum extern float goto int long register short signed sizeof static struct switch typedef union unsigned void volatile catch class delete false import new operator private protected public this throw true try typeof abstract boolean byte extends final finally implements import instanceof null native package strictfp super synchronized throws transient ", | |||||
cStyleComments:true}),["java"]);u(x({keywords:"break continue do else for if return while case done elif esac eval fi function in local set then until ",hashComments:true,multiLineStrings:true}),["bsh","csh","sh"]);u(x({keywords:"break continue do else for if return while and as assert class def del elif except exec finally from global import in is lambda nonlocal not or pass print raise try with yield False True None ",hashComments:true,multiLineStrings:true,tripleQuotedStrings:true}),["cv","py"]); | |||||
u(x({keywords:"caller delete die do dump elsif eval exit foreach for goto if import last local my next no our print package redo require sub undef unless until use wantarray while BEGIN END ",hashComments:true,multiLineStrings:true,regexLiterals:true}),["perl","pl","pm"]);u(x({keywords:"break continue do else for if return while alias and begin case class def defined elsif end ensure false in module next nil not or redo rescue retry self super then true undef unless until when yield BEGIN END ",hashComments:true, | |||||
multiLineStrings:true,regexLiterals:true}),["rb"]);u(x({keywords:"break continue do else for if return while auto case char const default double enum extern float goto int long register short signed sizeof static struct switch typedef union unsigned void volatile catch class delete false import new operator private protected public this throw true try typeof debugger eval export function get null set undefined var with Infinity NaN ",cStyleComments:true,regexLiterals:true}),["js"]);u(B([],[[A,/^[\s\S]+/]]), | |||||
["regex"]);window.PR_normalizedHtml=H;window.prettyPrintOne=function(b,f){var i={f:b,e:f};U(i);return i.a};window.prettyPrint=function(b){function f(){for(var t=window.PR_SHOULD_USE_CONTINUATION?j.now()+250:Infinity;q<o.length&&j.now()<t;q++){var p=o[q];if(p.className&&p.className.indexOf("prettyprint")>=0){var c=p.className.match(/\blang-(\w+)\b/);if(c)c=c[1];for(var d=false,a=p.parentNode;a;a=a.parentNode)if((a.tagName==="pre"||a.tagName==="code"||a.tagName==="xmp")&&a.className&&a.className.indexOf("prettyprint")>= | |||||
0){d=true;break}if(!d){a=p;if(null===K){d=document.createElement("PRE");d.appendChild(document.createTextNode('<!DOCTYPE foo PUBLIC "foo bar">\n<foo />'));K=!/</.test(d.innerHTML)}if(K){d=a.innerHTML;if("XMP"===a.tagName)d=y(d);else{a=a;if("PRE"===a.tagName)a=true;else if(ka.test(d)){var k="";if(a.currentStyle)k=a.currentStyle.whiteSpace;else if(window.getComputedStyle)k=window.getComputedStyle(a,null).whiteSpace;a=!k||k==="pre"}else a=true;a||(d=d.replace(/(<br\s*\/?>)[\r\n]+/g,"$1").replace(/(?:[\r\n]+[ \t]*)+/g, | |||||
" "))}d=d}else{d=[];for(a=a.firstChild;a;a=a.nextSibling)H(a,d);d=d.join("")}d=d.replace(/(?:\r\n?|\n)$/,"");m={f:d,e:c,b:p};U(m);if(p=m.a){c=m.b;if("XMP"===c.tagName){d=document.createElement("PRE");for(a=0;a<c.attributes.length;++a){k=c.attributes[a];if(k.specified)if(k.name.toLowerCase()==="class")d.className=k.value;else d.setAttribute(k.name,k.value)}d.innerHTML=p;c.parentNode.replaceChild(d,c)}else c.innerHTML=p}}}}if(q<o.length)setTimeout(f,250);else b&&b()}for(var i=[document.getElementsByTagName("pre"), | |||||
document.getElementsByTagName("code"),document.getElementsByTagName("xmp")],o=[],l=0;l<i.length;++l)for(var n=0,r=i[l].length;n<r;++n)o.push(i[l][n]);i=null;var j=Date;j.now||(j={now:function(){return(new Date).getTime()}});var q=0,m;f()};window.PR={combinePrefixPatterns:O,createSimpleLexer:B,registerLangHandler:u,sourceDecorator:x,PR_ATTRIB_NAME:"atn",PR_ATTRIB_VALUE:"atv",PR_COMMENT:C,PR_DECLARATION:"dec",PR_KEYWORD:R,PR_LITERAL:J,PR_NOCODE:V,PR_PLAIN:z,PR_PUNCTUATION:E,PR_SOURCE:P,PR_STRING:A, | |||||
PR_TAG:"tag",PR_TYPE:S}})() |
<?xml version="1.0" encoding="UTF-8"?> | |||||
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd"> | |||||
<wicket:panel> | |||||
<div class="page_footer"> | |||||
<div style="float:right"> | |||||
<a href="http://gitblit.com"><span wicket:id="gbVersion"></span></a> | |||||
</div> | |||||
<div wicket:id="footerText"></div> | |||||
</div> | |||||
</wicket:panel> | |||||
</html> |
package com.gitblit.wicket.panels; | |||||
import org.apache.wicket.markup.html.basic.Label; | |||||
import org.apache.wicket.markup.html.panel.Panel; | |||||
import com.gitblit.Constants; | |||||
import com.gitblit.StoredSettings; | |||||
public class PageFooter extends Panel { | |||||
private static final long serialVersionUID = 1L; | |||||
public PageFooter(String id) { | |||||
this(id, ""); | |||||
} | |||||
public PageFooter(String id, String description) { | |||||
super(id); | |||||
add(new Label("footerText", description)); | |||||
add(new Label("gbVersion", "v" + Constants.VERSION)); | |||||
if (StoredSettings.getBoolean("aggressiveHeapManagement", false)) { | |||||
System.gc(); | |||||
} | |||||
} | |||||
} |
<?xml version="1.0" encoding="UTF-8"?> | |||||
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd"> | |||||
<wicket:panel> | |||||
<head> | |||||
<title wicket:id="title">Message goes here</title> | |||||
<link rel="stylesheet" type="text/css" href="gitblit.css"/> | |||||
<link rel="shortcut icon" href="gitblt-favicon.png" type="image/png" /> | |||||
</head> | |||||
<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><a href="/"><span wicket:id="siteName">name</span></a> / <span wicket:id="repositoryName">name</span> <span wicket:id="pageName">name</span> | |||||
</div> | |||||
</wicket:panel> | |||||
</html> |
package com.gitblit.wicket.panels; | |||||
import javax.servlet.http.HttpServletRequest; | |||||
import org.apache.wicket.PageParameters; | |||||
import org.apache.wicket.markup.html.basic.Label; | |||||
import org.apache.wicket.markup.html.panel.Panel; | |||||
import org.apache.wicket.protocol.http.servlet.ServletWebRequest; | |||||
import com.gitblit.Constants; | |||||
import com.gitblit.StoredSettings; | |||||
import com.gitblit.wicket.LinkPanel; | |||||
import com.gitblit.wicket.pages.SummaryPage; | |||||
public class PageHeader extends Panel { | |||||
private static final long serialVersionUID = 1L; | |||||
public PageHeader(String id) { | |||||
this(id, "", ""); | |||||
} | |||||
public PageHeader(String id, String repositoryName, String page) { | |||||
super(id); | |||||
if (repositoryName != null && repositoryName.trim().length() > 0) { | |||||
add(new Label("title", getServerName() + " - " + repositoryName)); | |||||
} else { | |||||
add(new Label("title", getServerName())); | |||||
} | |||||
add(new Label("siteName", StoredSettings.getString("siteName", Constants.NAME))); | |||||
add(new LinkPanel("repositoryName", null, repositoryName, SummaryPage.class, new PageParameters("p=" + repositoryName))); | |||||
add(new Label("pageName", page)); | |||||
} | |||||
protected String getServerName() { | |||||
ServletWebRequest servletWebRequest = (ServletWebRequest) getRequest(); | |||||
HttpServletRequest req = servletWebRequest.getHttpServletRequest(); | |||||
return req.getServerName(); | |||||
} | |||||
} |
/* | |||||
Git:Blit css. | |||||
*/ | |||||
html, body, table, dl, dt, dd, ol, ul, li, form, a, span, tr, th, td, div, em { | |||||
font-family: verdana, sans-serif; | |||||
font-size: 12px; | |||||
line-height: 15px; | |||||
} | |||||
body { | |||||
width: 980px; | |||||
margin: 5px; | |||||
background-color: #ffffff; | |||||
color: #000000; | |||||
margin-right: auto; | |||||
margin-left: auto; | |||||
margin-top: none; | |||||
padding: 0px; | |||||
} | |||||
pre, pre.prettyprint, pre.plainprint { | |||||
color: black; | |||||
font-family: monospace; | |||||
font-size:12px; | |||||
border:0px; | |||||
} | |||||
/* age0: age < 60*60*2 */ | |||||
.age0 { | |||||
color: #009900; | |||||
font-style: italic; | |||||
font-weight: bold; | |||||
} | |||||
/* age1: 60*60*2 <= age < 60*60*24*2 */ | |||||
.age1 { | |||||
color: #009900; | |||||
font-style: italic; | |||||
} | |||||
/* age2: 60*60*24*2 <= age */ | |||||
.age2 { | |||||
font-style: italic; | |||||
} | |||||
a { | |||||
color: #0000cc; | |||||
} | |||||
a:hover, a:visited, a:active { | |||||
color: #880000; | |||||
} | |||||
img.logo { | |||||
float: right; | |||||
border-width: 0px; | |||||
} | |||||
img.activityGraph { | |||||
float: right; | |||||
border-width: 0px; | |||||
padding: 8px; | |||||
} | |||||
div.repositories_message { | |||||
line-height: inherit; | |||||
} | |||||
div.header { | |||||
background-color: #D2C3AF; | |||||
padding: 3px; | |||||
border: 1px solid #808080; | |||||
} | |||||
div.header a { | |||||
color: black; | |||||
text-decoration: none; | |||||
font-weight: bold; | |||||
} | |||||
div.header a:hover { | |||||
text-decoration: underline; | |||||
} | |||||
div.pager { | |||||
padding: 0px 0px 15px 5px; | |||||
} | |||||
div.link { | |||||
padding: 2px 5px; | |||||
font-family: sans-serif; | |||||
font-size: 11px; | |||||
} | |||||
div.link span { | |||||
font-family: inherit; | |||||
font-size: inherit; | |||||
} | |||||
div.link a { | |||||
font-family: inherit; | |||||
font-size: inherit; | |||||
} | |||||
div.page_header { | |||||
height: 25px; | |||||
padding: 5px; | |||||
font-family: sans-serif; | |||||
font-weight: bold; | |||||
font-size: 150%; | |||||
color: #bbb; | |||||
background-color: #ffffff; | |||||
} | |||||
div.page_header span { | |||||
font-family: inherit; | |||||
font-size: inherit; | |||||
} | |||||
div.page_header a { | |||||
font-size: inherit; | |||||
font-family: inherit; | |||||
text-decoration: none; | |||||
} | |||||
div.page_header a:visited { | |||||
color: #000000; | |||||
} | |||||
div.page_header a:hover { | |||||
color: E66C2C; | |||||
text-decoration: underline; | |||||
} | |||||
div.page_footer { | |||||
height: 17px; | |||||
color: black; | |||||
background-color: #ffffff; | |||||
padding: 5px; | |||||
border-top: 1px solid #bbb; | |||||
font-style: italic; | |||||
} | |||||
div.page_nav { | |||||
color: #ddd; | |||||
background-color: #000070; | |||||
padding: 5px; | |||||
} | |||||
div.page_nav a { | |||||
color: yellow; | |||||
text-decoration: none; | |||||
} | |||||
div.page_nav a:hover { | |||||
text-decoration: underline; | |||||
} | |||||
div.page_nav2 { | |||||
padding: 2px 5px 7px 5px; | |||||
} | |||||
.repositories_message { | |||||
border: solid #bbb; | |||||
border-width: 0px 0px 1px; | |||||
padding: 8px; | |||||
} | |||||
div.page_path { | |||||
padding: 8px; | |||||
font-weight: bold; | |||||
border: solid #bbb; | |||||
border-width: 0px 0px 1px; | |||||
} | |||||
div.commit_message { | |||||
padding: 8px; | |||||
border: solid #bbb; | |||||
border-width: 1px 0px 1px; | |||||
} | |||||
div.bug_open, span.bug_open { | |||||
padding: 2px; | |||||
background-color: #800000; | |||||
color: white; | |||||
text-align: center; | |||||
} | |||||
div.bug_resolved, span.bug_resolved { | |||||
padding: 2px; | |||||
background-color: #008000; | |||||
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; | |||||
} | |||||
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 0; | |||||
font-weight: bold; | |||||
margin-top: 4px; | |||||
padding: 4px 0 2px; | |||||
} | |||||
div.diff.extended_header { | |||||
background-color: #F6F5EE; | |||||
padding: 2px 0; | |||||
font-family: inherit; | |||||
} | |||||
div.diff.add { | |||||
color: #008800; | |||||
font-family: inherit; | |||||
} | |||||
div.diff.remove { | |||||
color: #cc0000; | |||||
font-family: inherit; | |||||
} | |||||
div.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; | |||||
} | |||||
a.list { | |||||
text-decoration: none; | |||||
color: #000000; | |||||
} | |||||
a.list:hover { | |||||
text-decoration: underline; | |||||
color: #880000; | |||||
} | |||||
table { | |||||
border-spacing: 0px; | |||||
} | |||||
th { | |||||
padding: 2px 5px; | |||||
font-size: 100%; | |||||
text-align: left; | |||||
} | |||||
table.plain { | |||||
padding: 8px; | |||||
} | |||||
table.pretty, table.repositories { | |||||
margin-top:5px; | |||||
margin-bottom:5px; | |||||
border-spacing: 0px; | |||||
border-top: 1px solid #bbb; | |||||
border-left: 1px solid #bbb; | |||||
border-right: 1px solid #bbb; | |||||
} | |||||
table.repositories { | |||||
width:100%; | |||||
} | |||||
table.repositories th { | |||||
background-color:#D2C3AF; | |||||
padding: 4px; | |||||
border-bottom: 1px solid #808080; | |||||
} | |||||
table.repositories td { | |||||
padding: 4px; | |||||
} | |||||
table.repositories th a { | |||||
color:black;/*#ddd;*/ | |||||
text-decoration: none; | |||||
font-weight: normal; | |||||
} | |||||
table.repositories th a:hover { | |||||
text-decoration: underline; | |||||
} | |||||
table.repositories th.wicket_orderDown a, table.repositories th.wicket_orderUp a { | |||||
color: black; | |||||
font-weight: bold; | |||||
} | |||||
tr th a { padding-right: 15px; background-position: right; 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.light td { | |||||
border-bottom: 1px solid #bbb; | |||||
} | |||||
tr.dark { | |||||
background-color: #faf8dc; | |||||
border-bottom: 1px solid #bbb; | |||||
} | |||||
tr.dark td { | |||||
border-bottom: 1px solid #bbb; | |||||
} | |||||
/* currently both use the same, but it can change */ | |||||
tr.light:hover, | |||||
tr.dark:hover { | |||||
/*background-color: #0099b7;*/ | |||||
background-color: #000070; | |||||
color: white; | |||||
} | |||||
tr.light:hover a, | |||||
tr.dark:hover a { | |||||
color: white; | |||||
} | |||||
td { | |||||
padding-left: 7px; | |||||
padding-right: 7px; | |||||
} | |||||
td.author { | |||||
font-style: italic; | |||||
} | |||||
td.date { | |||||
font-style: italic; | |||||
width:90px; | |||||
} | |||||
td.sha1, td.sha1 span { | |||||
font-family: monospace; | |||||
font-size: 13px; | |||||
} | |||||
td.mode { | |||||
font-family: monospace; | |||||
width:90px; | |||||
padding-right:15px; | |||||
} | |||||
td.size { | |||||
text-align: right; | |||||
width:100px; | |||||
padding-right:15px; | |||||
} | |||||
td.rightAlign { | |||||
text-align: right; | |||||
} | |||||
span.refs span { | |||||
padding: 0px 4px; | |||||
font-family: sans-serif; | |||||
font-size: 70%; | |||||
font-weight: normal; | |||||
border: 1px solid; | |||||
background-color: #ffaaff; | |||||
border-color: #ffccff #ff00ee #ff00ee #ffccff; | |||||
color: black; | |||||
} | |||||
span.refs span a { | |||||
text-decoration: none; | |||||
color: inherit; | |||||
} | |||||
span.refs span a:hover { | |||||
text-decoration: underline; | |||||
} | |||||
span.refs span.indirect { | |||||
font-style: italic; | |||||
} | |||||
span.refs span.ref { | |||||
background-color: #aaaaff; | |||||
border-color: #ccccff #0033cc #0033cc #ccccff; | |||||
} | |||||
span.refs span.tag { | |||||
background-color: #ffffaa; | |||||
border-color: #ffffcc #ffee00 #ffee00 #ffffcc; | |||||
} | |||||
span.refs span.head { | |||||
background-color: #aaffaa; | |||||
border-color: #ccffcc #00cc33 #00cc33 #ccffcc; | |||||
} |