From 5dd8057b49803a7c1b84112418dcfca7b256fce0 Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Tue, 17 Sep 2013 17:13:36 -0400
Subject: [PATCH] Remove incomplete and deprecated TicGit feature

---
 src/main/java/com/gitblit/wicket/pages/RepositoryPage.java          |   68 ++++++++---------
 /dev/null                                                           |   87 ---------------------
 src/test/java/com/gitblit/tests/GitBlitSuite.java                   |   33 ++++----
 src/main/java/com/gitblit/wicket/panels/ProjectRepositoryPanel.html |    3 
 src/main/java/com/gitblit/wicket/GitBlitWebApp.java                 |   16 +--
 src/site/features.mkd                                               |    5 
 src/main/java/com/gitblit/wicket/panels/ProjectRepositoryPanel.java |    8 -
 7 files changed, 59 insertions(+), 161 deletions(-)

diff --git a/src/main/java/com/gitblit/utils/TicgitUtils.java b/src/main/java/com/gitblit/utils/TicgitUtils.java
deleted file mode 100644
index aab5a3e..0000000
--- a/src/main/java/com/gitblit/utils/TicgitUtils.java
+++ /dev/null
@@ -1,148 +0,0 @@
-/*
- * Copyright 2011 gitblit.com.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.gitblit.utils;
-
-import java.text.ParseException;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-import org.eclipse.jgit.lib.Repository;
-import org.eclipse.jgit.revwalk.RevCommit;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.gitblit.models.PathModel;
-import com.gitblit.models.RefModel;
-import com.gitblit.models.TicketModel;
-import com.gitblit.models.TicketModel.Comment;
-
-/**
- * Utility class for reading Ticgit issues.
- * 
- * @author James Moger
- * 
- */
-public class TicgitUtils {
-
-	static final Logger LOGGER = LoggerFactory.getLogger(TicgitUtils.class);
-
-	/**
-	 * Returns a RefModel for the Ticgit branch in the repository. If the branch
-	 * can not be found, null is returned.
-	 * 
-	 * @param repository
-	 * @return a refmodel for the ticgit branch or null
-	 */
-	public static RefModel getTicketsBranch(Repository repository) {
-		return JGitUtils.getBranch(repository, "ticgit");
-	}
-
-	/**
-	 * Returns a list of all tickets in the ticgit branch of the repository.
-	 * 
-	 * @param repository
-	 * @return list of tickets
-	 */
-	public static List<TicketModel> getTickets(Repository repository) {
-		RefModel ticgitBranch = getTicketsBranch(repository);
-		if (ticgitBranch == null) {
-			return null;
-		}
-		RevCommit commit = (RevCommit) ticgitBranch.referencedObject;
-		List<PathModel> paths = JGitUtils.getFilesInPath(repository, null, commit);
-		List<TicketModel> tickets = new ArrayList<TicketModel>();
-		for (PathModel ticketFolder : paths) {
-			if (ticketFolder.isTree()) {
-				try {
-					TicketModel t = new TicketModel(ticketFolder.name);
-					loadTicketContents(repository, ticgitBranch, t);
-					tickets.add(t);
-				} catch (Throwable t) {
-					LOGGER.error("Failed to get a ticket!", t);
-				}
-			}
-		}
-		Collections.sort(tickets);
-		Collections.reverse(tickets);
-		return tickets;
-	}
-
-	/**
-	 * Returns a TicketModel for the specified ticgit ticket. Returns null if
-	 * the ticket does not exist or some other error occurs.
-	 * 
-	 * @param repository
-	 * @param ticketFolder
-	 * @return a ticket
-	 */
-	public static TicketModel getTicket(Repository repository, String ticketFolder) {
-		RefModel ticketsBranch = getTicketsBranch(repository);
-		if (ticketsBranch != null) {
-			try {
-				TicketModel ticket = new TicketModel(ticketFolder);
-				loadTicketContents(repository, ticketsBranch, ticket);
-				return ticket;
-			} catch (Throwable t) {
-				LOGGER.error("Failed to get ticket " + ticketFolder, t);
-			}
-		}
-		return null;
-	}
-
-	/**
-	 * Loads the contents of the ticket.
-	 * 
-	 * @param repository
-	 * @param ticketsBranch
-	 * @param ticket
-	 */
-	private static void loadTicketContents(Repository repository, RefModel ticketsBranch,
-			TicketModel ticket) {
-		RevCommit commit = (RevCommit) ticketsBranch.referencedObject;
-		List<PathModel> ticketFiles = JGitUtils.getFilesInPath(repository, ticket.name, commit);
-		for (PathModel file : ticketFiles) {
-			String content = JGitUtils.getStringContent(repository, commit.getTree(), file.path)
-					.trim();
-			if (file.name.equals("TICKET_ID")) {
-				ticket.id = content;
-			} else if (file.name.equals("TITLE")) {
-				ticket.title = content;
-			} else {
-				String[] chunks = file.name.split("_");
-				if (chunks[0].equals("ASSIGNED")) {
-					ticket.handler = content;
-				} else if (chunks[0].equals("COMMENT")) {
-					try {
-						Comment c = new Comment(file.name, content);
-						ticket.comments.add(c);
-					} catch (ParseException e) {
-						LOGGER.error("Failed to parse ticket comment", e);
-					}
-				} else if (chunks[0].equals("TAG")) {
-					if (content.startsWith("TAG_")) {
-						ticket.tags.add(content.substring(4));
-					} else {
-						ticket.tags.add(content);
-					}
-				} else if (chunks[0].equals("STATE")) {
-					ticket.state = content;
-				}
-			}
-		}
-		Collections.sort(ticket.comments);
-	}
-}
diff --git a/src/main/java/com/gitblit/wicket/GitBlitWebApp.java b/src/main/java/com/gitblit/wicket/GitBlitWebApp.java
index 74ccac7..fa02c4f 100644
--- a/src/main/java/com/gitblit/wicket/GitBlitWebApp.java
+++ b/src/main/java/com/gitblit/wicket/GitBlitWebApp.java
@@ -63,8 +63,6 @@
 import com.gitblit.wicket.pages.SummaryPage;
 import com.gitblit.wicket.pages.TagPage;
 import com.gitblit.wicket.pages.TagsPage;
-import com.gitblit.wicket.pages.TicketPage;
-import com.gitblit.wicket.pages.TicketsPage;
 import com.gitblit.wicket.pages.TreePage;
 import com.gitblit.wicket.pages.UserPage;
 import com.gitblit.wicket.pages.UsersPage;
@@ -72,9 +70,9 @@
 public class GitBlitWebApp extends WebApplication {
 
 	public final static Class<? extends BasePage> HOME_PAGE_CLASS = MyDashboardPage.class;
-	
+
 	private final Map<String, CacheControl> cacheablePages = new HashMap<String, CacheControl>();
-	
+
 	@Override
 	public void init() {
 		super.init();
@@ -123,10 +121,6 @@
 		mount("/users", UsersPage.class);
 		mount("/logout", LogoutPage.class);
 
-		// setup ticket urls
-		mount("/tickets", TicketsPage.class, "r");
-		mount("/ticket", TicketPage.class, "r", "f");
-
 		// setup the markdown urls
 		mount("/docs", DocsPage.class, "r");
 		mount("/markdown", MarkdownPage.class, "r", "h", "f");
@@ -153,8 +147,8 @@
 			parameters = new String[] {};
 		}
 		mount(new GitblitParamUrlCodingStrategy(location, clazz, parameters));
-		
-		// map the mount point to the cache control definition 
+
+		// map the mount point to the cache control definition
 		if (clazz.isAnnotationPresent(CacheControl.class)) {
 			CacheControl cacheControl = clazz.getAnnotation(CacheControl.class);
 			cacheablePages.put(location.substring(1), cacheControl);
@@ -165,7 +159,7 @@
 	public Class<? extends Page> getHomePage() {
 		return HOME_PAGE_CLASS;
 	}
-	
+
 	public boolean isCacheablePage(String mountPoint) {
 		return cacheablePages.containsKey(mountPoint);
 	}
diff --git a/src/main/java/com/gitblit/wicket/pages/RepositoryPage.java b/src/main/java/com/gitblit/wicket/pages/RepositoryPage.java
index f5b8c96..afbed86 100644
--- a/src/main/java/com/gitblit/wicket/pages/RepositoryPage.java
+++ b/src/main/java/com/gitblit/wicket/pages/RepositoryPage.java
@@ -63,7 +63,6 @@
 import com.gitblit.utils.JGitUtils;
 import com.gitblit.utils.RefLogUtils;
 import com.gitblit.utils.StringUtils;
-import com.gitblit.utils.TicgitUtils;
 import com.gitblit.wicket.CacheControl;
 import com.gitblit.wicket.GitBlitWebSession;
 import com.gitblit.wicket.PageRegistration;
@@ -75,25 +74,25 @@
 import com.gitblit.wicket.panels.RefsPanel;
 
 public abstract class RepositoryPage extends RootPage {
-	
+
 	private final Logger logger = LoggerFactory.getLogger(getClass());
 
 	private final String PARAM_STAR = "star";
-	
+
 	protected final String projectName;
 	protected final String repositoryName;
 	protected final String objectId;
-	
+
 	private transient Repository r;
 
 	private RepositoryModel m;
 
 	private Map<String, SubmoduleModel> submodules;
-	
+
 	private final Map<String, PageRegistration> registeredPages;
 	private boolean showAdmin;
 	private boolean isOwner;
-	
+
 	public RepositoryPage(PageParameters params) {
 		super(params);
 		repositoryName = WicketUtils.getRepositoryName(params);
@@ -104,7 +103,7 @@
 			projectName = root;
 		}
 		objectId = WicketUtils.getObject(params);
-		
+
 		if (StringUtils.isEmpty(repositoryName)) {
 			error(MessageFormat.format(getString("gb.repositoryNotSpecifiedFor"), getPageName()), true);
 		}
@@ -112,11 +111,11 @@
 		if (!getRepositoryModel().hasCommits) {
 			setResponsePage(EmptyRepositoryPage.class, params);
 		}
-		
+
 		if (getRepositoryModel().isCollectingGarbage) {
 			error(MessageFormat.format(getString("gb.busyCollectingGarbage"), getRepositoryModel().name), true);
 		}
-		
+
 		if (objectId != null) {
 			RefModel branch = null;
 			if ((branch = JGitUtils.getBranch(getRepository(), objectId)) != null) {
@@ -132,7 +131,7 @@
 				}
 			}
 		}
-		
+
 		if (params.containsKey(PARAM_STAR)) {
 			// set starred state
 			boolean star = params.getBoolean(PARAM_STAR);
@@ -168,7 +167,7 @@
 		// set stateless page preference
 		setStatelessHint(true);
 	}
-	
+
 	@Override
 	protected Class<? extends BasePage> getRootNavPageClass() {
 		return RepositoriesPage.class;
@@ -177,7 +176,7 @@
 	protected Class<? extends BasePage> getRepoNavPageClass() {
 		return getClass();
 	}
-	
+
 	private Map<String, PageRegistration> registerPages() {
 		PageParameters params = null;
 		if (!StringUtils.isEmpty(repositoryName)) {
@@ -195,7 +194,7 @@
 			pages.put("summary", new PageRegistration("gb.summary", SummaryPage.class, params));
 //			pages.put("overview", new PageRegistration("gb.overview", OverviewPage.class, params));
 			pages.put("reflog", new PageRegistration("gb.reflog", ReflogPage.class, params));
-		}		
+		}
 		pages.put("commits", new PageRegistration("gb.commits", LogPage.class, params));
 		pages.put("tree", new PageRegistration("gb.tree", TreePage.class, params));
 		pages.put("compare", new PageRegistration("gb.compare", ComparePage.class, params, true));
@@ -205,9 +204,6 @@
 
 		// conditional links
 		// per-repository extra page links
-		if (model.useTickets && TicgitUtils.getTicketsBranch(r) != null) {
-			pages.put("tickets", new PageRegistration("gb.tickets", TicketsPage.class, params, true));
-		}
 		if (model.showReadme || model.useDocs) {
 			pages.put("docs", new PageRegistration("gb.docs", DocsPage.class, params, true));
 		}
@@ -230,7 +226,7 @@
 						.getUsername()));
 		return pages;
 	}
-	
+
 	protected boolean allowForkControls() {
 		return GitBlit.getBoolean(Keys.web.allowForking, true);
 	}
@@ -248,7 +244,7 @@
 			add(new LinkPanel("projectTitle", null, project.name,
 					ProjectPage.class, WicketUtils.newProjectParameter(project.name)));
 		}
-		
+
 		String name = StringUtils.stripDotGit(repositoryName);
 		if (!StringUtils.isEmpty(projectName) && name.startsWith(projectName)) {
 			name = name.substring(projectName.length() + 1);
@@ -256,7 +252,7 @@
 		add(new LinkPanel("repositoryName", null, name, SummaryPage.class,
 				WicketUtils.newRepositoryParameter(repositoryName)));
 		add(new Label("pageName", pageName).setRenderBodyOnly(true));
-		
+
 		UserModel user = GitBlitWebSession.get().getUser();
 		if (user == null) {
 			user = UserModel.ANONYMOUS;
@@ -279,12 +275,12 @@
 			} else {
 				// link to origin repository
 				Fragment forkFrag = new Fragment("originRepository", "originFragment", this);
-				forkFrag.add(new LinkPanel("originRepository", null, StringUtils.stripDotGit(model.originRepository), 
+				forkFrag.add(new LinkPanel("originRepository", null, StringUtils.stripDotGit(model.originRepository),
 						SummaryPage.class, WicketUtils.newRepositoryParameter(model.originRepository)));
 				add(forkFrag);
 			}
 		}
-		
+
 		// (un)star link allows a user to star a repository
 		if (user.isAuthenticated) {
 			PageParameters starParams = DeepCopier.copy(getPageParameters());
@@ -318,7 +314,7 @@
 			if (hasFork || !canFork) {
 				// user not allowed to fork or fork already exists or repo forbids forking
 				add(new ExternalLink("forkLink", "").setVisible(false));
-				
+
 				if (hasFork && !fork.equals(model.name)) {
 					// user has fork, view my fork link
 					String url = getRequestCycle().urlFor(SummaryPage.class, WicketUtils.newRepositoryParameter(fork)).toString();
@@ -334,17 +330,17 @@
 				add(new ExternalLink("forkLink", url));
 			}
 		}
-		
+
 		if (showAdmin || isOwner) {
 			String url = getRequestCycle().urlFor(EditRepositoryPage.class, WicketUtils.newRepositoryParameter(model.name)).toString();
-			add(new ExternalLink("editLink", url)); 
+			add(new ExternalLink("editLink", url));
 		} else {
 			add(new Label("editLink").setVisible(false));
 		}
-		
+
 		super.setupPage(repositoryName, pageName);
 	}
-	
+
 	protected void addToolbarButton(String wicketId, String iconClass, String label, String url) {
 		Fragment button = new Fragment(wicketId, "toolbarLinkFragment", this);
 		Label icon = new Label("icon");
@@ -402,8 +398,8 @@
 		getSubmodules(commit);
 		return commit;
 	}
-	
-	protected Map<String, SubmoduleModel> getSubmodules(RevCommit commit) {	
+
+	protected Map<String, SubmoduleModel> getSubmodules(RevCommit commit) {
 		if (submodules == null) {
 			submodules = new HashMap<String, SubmoduleModel>();
 			for (SubmoduleModel model : JGitUtils.getSubmodules(r, commit.getTree())) {
@@ -412,7 +408,7 @@
 		}
 		return submodules;
 	}
-	
+
 	protected SubmoduleModel getSubmodule(String path) {
 		SubmoduleModel model = null;
 		if (submodules != null) {
@@ -428,7 +424,7 @@
 			// extract the repository name from the clone url
 			List<String> patterns = GitBlit.getStrings(Keys.git.submoduleUrlPatterns);
 			String submoduleName = StringUtils.extractRepositoryPath(model.url, patterns.toArray(new String[0]));
-			
+
 			// determine the current path for constructing paths relative
 			// to the current repository
 			String currentPath = "";
@@ -471,11 +467,11 @@
 					return model;
 				}
 			}
-			
+
 			// we do not have a copy of the submodule, but we need a path
 			model.gitblitPath = candidates.get(0);
 			return model;
-		}		
+		}
 	}
 
 	protected String getShortObjectId(String objectId) {
@@ -574,7 +570,7 @@
 		setupPage(repositoryName, "/ " + getPageName());
 		super.onBeforeRender();
 	}
-	
+
 	@Override
 	protected void setLastModified() {
 		if (getClass().isAnnotationPresent(CacheControl.class)) {
@@ -614,11 +610,11 @@
 	public boolean isShowAdmin() {
 		return showAdmin;
 	}
-	
+
 	public boolean isOwner() {
 		return isOwner;
 	}
-	
+
 	private class SearchForm extends SessionlessForm<Void> implements Serializable {
 		private static final long serialVersionUID = 1L;
 
@@ -652,7 +648,7 @@
 			Constants.SearchType searchType = searchTypeModel.getObject();
 			String searchString = searchBoxModel.getObject();
 			if (StringUtils.isEmpty(searchString)) {
-				// redirect to self to avoid wicket page update bug 
+				// redirect to self to avoid wicket page update bug
 				PageParameters params = RepositoryPage.this.getPageParameters();
 				String relativeUrl = urlFor(RepositoryPage.this.getClass(), params).toString();
 				String absoluteUrl = RequestUtils.toAbsolutePath(relativeUrl);
diff --git a/src/main/java/com/gitblit/wicket/pages/TicketPage.html b/src/main/java/com/gitblit/wicket/pages/TicketPage.html
deleted file mode 100644
index ed3eb22..0000000
--- a/src/main/java/com/gitblit/wicket/pages/TicketPage.html
+++ /dev/null
@@ -1,39 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"  
-      xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.3-strict.dtd"  
-      xml:lang="en"  
-      lang="en"> 
-
-<body>
-<wicket:extend>
-
-	<!-- ticket title -->
-	<div style="font-size:150%;padding-top:5px;padding-bottom:5px;" wicket:id="ticketTitle">[ticket title]</div>
-		
-	<!-- ticket info -->
-	<table class="plain">
-		<tr><th><wicket:message key="gb.ticketId">ticket id</wicket:message></th><td><span class="sha1" wicket:id="ticketId">[ticket id]</span></td></tr>
-		<tr><th><wicket:message key="gb.ticketAssigned">assigned</wicket:message></th><td><span wicket:id=ticketHandler>[ticket title]</span></td></tr>
-		<tr><th><wicket:message key="gb.ticketOpenDate">open date</wicket:message></th><td><span wicket:id="ticketOpenDate">[ticket open date]</span></td></tr>
-		<tr><th><wicket:message key="gb.ticketState">state</wicket:message></th><td><span wicket:id="ticketState">[ticket state]</span></td></tr>
-		<tr><th><wicket:message key="gb.tags">tags</wicket:message></th><td><span wicket:id="ticketTags">[ticket tags]</span></td></tr>
-	</table>
-	
-	<!-- comments header -->
-	<div class="header"><wicket:message key="gb.ticketComments">comments</wicket:message></div>
-	
-	<!-- comments -->
-	<table class="comments">
-		<tbody>
-			<tr valign="top" wicket:id="comment">
-         		<td><span class="author" wicket:id="commentAuthor">[comment author]</span><br/>
-         			<span class="date" wicket:id="commentDate">[comment date]</span>
-         		</td>
-         		<td><span wicket:id="commentText">[comment text]</span></td>
-       		</tr>
-       	</tbody>
-    </table>
-
-</wicket:extend>    
-</body>
-</html>
\ No newline at end of file
diff --git a/src/main/java/com/gitblit/wicket/pages/TicketPage.java b/src/main/java/com/gitblit/wicket/pages/TicketPage.java
deleted file mode 100644
index fd857be..0000000
--- a/src/main/java/com/gitblit/wicket/pages/TicketPage.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * Copyright 2011 gitblit.com.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.gitblit.wicket.pages;
-
-import org.apache.wicket.PageParameters;
-import org.apache.wicket.markup.html.basic.Label;
-import org.apache.wicket.markup.repeater.Item;
-import org.apache.wicket.markup.repeater.data.DataView;
-import org.apache.wicket.markup.repeater.data.ListDataProvider;
-import org.eclipse.jgit.lib.Repository;
-
-import com.gitblit.models.TicketModel;
-import com.gitblit.models.TicketModel.Comment;
-import com.gitblit.utils.StringUtils;
-import com.gitblit.utils.TicgitUtils;
-import com.gitblit.wicket.GitBlitWebSession;
-import com.gitblit.wicket.WicketUtils;
-
-public class TicketPage extends RepositoryPage {
-
-	public TicketPage(PageParameters params) {
-		super(params);
-
-		final String ticketFolder = WicketUtils.getPath(params);
-
-		Repository r = getRepository();
-		TicketModel t = TicgitUtils.getTicket(r, ticketFolder);
-
-		add(new Label("ticketTitle", t.title));
-		add(new Label("ticketId", t.id));
-		add(new Label("ticketHandler", t.handler.toLowerCase()));
-		add(WicketUtils.createTimestampLabel("ticketOpenDate", t.date, getTimeZone(), getTimeUtils()));
-		Label stateLabel = new Label("ticketState", t.state);
-		WicketUtils.setTicketCssClass(stateLabel, t.state);
-		add(stateLabel);
-		add(new Label("ticketTags", StringUtils.flattenStrings(t.tags)));
-
-		ListDataProvider<Comment> commentsDp = new ListDataProvider<Comment>(t.comments);
-		DataView<Comment> commentsView = new DataView<Comment>("comment", commentsDp) {
-			private static final long serialVersionUID = 1L;
-			int counter;
-
-			public void populateItem(final Item<Comment> item) {
-				final Comment entry = item.getModelObject();
-				item.add(WicketUtils.createDateLabel("commentDate", entry.date, GitBlitWebSession
-						.get().getTimezone(), getTimeUtils()));
-				item.add(new Label("commentAuthor", entry.author.toLowerCase()));
-				item.add(new Label("commentText", prepareComment(entry.text))
-						.setEscapeModelStrings(false));
-				WicketUtils.setAlternatingBackground(item, counter);
-				counter++;
-			}
-		};
-		add(commentsView);
-	}
-
-	@Override
-	protected String getPageName() {
-		return getString("gb.ticket");
-	}
-	
-	@Override
-	protected Class<? extends BasePage> getRepoNavPageClass() {
-		return TicketsPage.class;
-	}
-
-	private String prepareComment(String comment) {
-		String html = StringUtils.escapeForHtml(comment, false);
-		html = StringUtils.breakLinesForHtml(comment).trim();
-		return html.replaceAll("\\bcommit\\s*([A-Za-z0-9]*)\\b", "<a href=\"/commit/"
-				+ repositoryName + "/$1\">commit $1</a>");
-	}
-}
diff --git a/src/main/java/com/gitblit/wicket/pages/TicketsPage.html b/src/main/java/com/gitblit/wicket/pages/TicketsPage.html
deleted file mode 100644
index e1f5f9a..0000000
--- a/src/main/java/com/gitblit/wicket/pages/TicketsPage.html
+++ /dev/null
@@ -1,24 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"  
-      xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.3-strict.dtd"  
-      xml:lang="en"  
-      lang="en"> 
-
-<body>
-<wicket:extend>
-
-	<!-- tickets -->	
-	<table class="pretty">
-		<tbody>
-       		<tr wicket:id="ticket">
-         		<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 class="author"><div wicket:id="ticketHandler">[ticket handler]</div></td>
-         		<td><div wicket:id="ticketTitle">[ticket title]</div></td>
-       		</tr>
-    	</tbody>
-	</table>	
-
-</wicket:extend>
-</body>
-</html>
\ No newline at end of file
diff --git a/src/main/java/com/gitblit/wicket/pages/TicketsPage.java b/src/main/java/com/gitblit/wicket/pages/TicketsPage.java
deleted file mode 100644
index 3ec1a54..0000000
--- a/src/main/java/com/gitblit/wicket/pages/TicketsPage.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Copyright 2011 gitblit.com.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.gitblit.wicket.pages;
-
-import java.util.List;
-
-import org.apache.wicket.PageParameters;
-import org.apache.wicket.markup.html.basic.Label;
-import org.apache.wicket.markup.repeater.Item;
-import org.apache.wicket.markup.repeater.data.DataView;
-import org.apache.wicket.markup.repeater.data.ListDataProvider;
-
-import com.gitblit.models.TicketModel;
-import com.gitblit.utils.StringUtils;
-import com.gitblit.utils.TicgitUtils;
-import com.gitblit.wicket.GitBlitWebSession;
-import com.gitblit.wicket.WicketUtils;
-import com.gitblit.wicket.panels.LinkPanel;
-
-public class TicketsPage extends RepositoryPage {
-
-	public TicketsPage(PageParameters params) {
-		super(params);
-
-		List<TicketModel> tickets = TicgitUtils.getTickets(getRepository());
-
-		ListDataProvider<TicketModel> ticketsDp = new ListDataProvider<TicketModel>(tickets);
-		DataView<TicketModel> ticketsView = new DataView<TicketModel>("ticket", ticketsDp) {
-			private static final long serialVersionUID = 1L;
-			int counter;
-
-			public void populateItem(final Item<TicketModel> item) {
-				final TicketModel entry = item.getModelObject();
-				Label stateLabel = new Label("ticketState", entry.state);
-				WicketUtils.setTicketCssClass(stateLabel, entry.state);
-				item.add(stateLabel);
-				item.add(WicketUtils.createDateLabel("ticketDate", entry.date, GitBlitWebSession
-						.get().getTimezone(), getTimeUtils()));
-				item.add(new Label("ticketHandler", StringUtils.trimString(
-						entry.handler.toLowerCase(), 30)));
-				item.add(new LinkPanel("ticketTitle", "list subject", StringUtils.trimString(
-						entry.title, 80), TicketPage.class, newPathParameter(entry.name)));
-
-				WicketUtils.setAlternatingBackground(item, counter);
-				counter++;
-			}
-		};
-		add(ticketsView);
-	}
-
-	protected PageParameters newPathParameter(String path) {
-		return WicketUtils.newPathParameter(repositoryName, objectId, path);
-	}
-
-	@Override
-	protected String getPageName() {
-		return getString("gb.tickets");
-	}
-}
diff --git a/src/main/java/com/gitblit/wicket/panels/ProjectRepositoryPanel.html b/src/main/java/com/gitblit/wicket/panels/ProjectRepositoryPanel.html
index 02d67e3..8eadebc 100644
--- a/src/main/java/com/gitblit/wicket/panels/ProjectRepositoryPanel.html
+++ b/src/main/java/com/gitblit/wicket/panels/ProjectRepositoryPanel.html
@@ -42,9 +42,6 @@
 					<img class="inlineIcon" wicket:id="frozenIcon" />
 					<img class="inlineIcon" wicket:id="federatedIcon" />
         						
-					<a style="text-decoration: none;" wicket:id="tickets" wicket:message="title:gb.tickets">
-						<img style="border:0px;vertical-align:middle;" src="bug_16x16.png"></img>
-					</a>
 					<a style="text-decoration: none;" wicket:id="docs" wicket:message="title:gb.docs">
 						<img style="border:0px;vertical-align:middle;" src="book_16x16.png"></img>
 					</a>
diff --git a/src/main/java/com/gitblit/wicket/panels/ProjectRepositoryPanel.java b/src/main/java/com/gitblit/wicket/panels/ProjectRepositoryPanel.java
index 37641d3..398b6aa 100644
--- a/src/main/java/com/gitblit/wicket/panels/ProjectRepositoryPanel.java
+++ b/src/main/java/com/gitblit/wicket/panels/ProjectRepositoryPanel.java
@@ -41,7 +41,6 @@
 import com.gitblit.wicket.pages.EditRepositoryPage;
 import com.gitblit.wicket.pages.LogPage;
 import com.gitblit.wicket.pages.SummaryPage;
-import com.gitblit.wicket.pages.TicketsPage;
 import com.gitblit.wicket.pages.TreePage;
 
 public class ProjectRepositoryPanel extends BasePanel {
@@ -78,7 +77,7 @@
 			add(new Label("originRepository").setVisible(false));
 		} else {
 			Fragment forkFrag = new Fragment("originRepository", "originFragment", this);
-			forkFrag.add(new LinkPanel("originRepository", null, StringUtils.stripDotGit(entry.originRepository), 
+			forkFrag.add(new LinkPanel("originRepository", null, StringUtils.stripDotGit(entry.originRepository),
 					SummaryPage.class, WicketUtils.newRepositoryParameter(entry.originRepository)));
 			add(forkFrag);
 		}
@@ -89,7 +88,6 @@
 			add(WicketUtils.newClearPixel("sparkleshareIcon").setVisible(false));
 		}
 
-		add(new BookmarkablePageLink<Void>("tickets", TicketsPage.class, pp).setVisible(entry.useTickets));
 		add(new BookmarkablePageLink<Void>("docs", DocsPage.class, pp).setVisible(entry.useDocs));
 
 		if (entry.isFrozen) {
@@ -110,10 +108,10 @@
 			String owner = "";
 			for (String username : entry.owners) {
 				UserModel ownerModel = GitBlit.self().getUserModel(username);
-			
+
 				if (ownerModel != null) {
 					owner = ownerModel.getDisplayName();
-				}				
+				}
 			}
 			if (entry.owners.size() > 1) {
 				owner += ", ...";
diff --git a/src/site/features.mkd b/src/site/features.mkd
index d5bf410..31ad007 100644
--- a/src/site/features.mkd
+++ b/src/site/features.mkd
@@ -55,9 +55,8 @@
 - Syntax highlighting for popular source code types
 - Customizable regular expression substitution for commit messages (i.e. bug or code review link integration)
 - Single text file for users configuration
-- Optional utility pages
-    - ![docs](book_16x16.png) Docs page which enumerates all Markdown files within a repository
-    - ![tickets](bug_16x16.png) **readonly and deprecated** Ticgit ticket pages *(based on last MIT release bf57b032 2009-01-27)*
+- Optional Docs page which enumerates all Markdown files within a repository
+2009-01-27)*
 - Translations
     - English
     - Japanese
diff --git a/src/test/java/com/gitblit/tests/GitBlitSuite.java b/src/test/java/com/gitblit/tests/GitBlitSuite.java
index c198e57..51f05a9 100644
--- a/src/test/java/com/gitblit/tests/GitBlitSuite.java
+++ b/src/test/java/com/gitblit/tests/GitBlitSuite.java
@@ -43,21 +43,21 @@
  * The GitBlitSuite uses test-gitblit.properties and test-users.conf. The suite
  * is fairly comprehensive for all lower-level functionality. Wicket pages are
  * currently not unit-tested.
- * 
+ *
  * This suite starts a Gitblit server instance within the same JVM instance as
  * the unit tests. This allows the unit tests to access the GitBlit static
  * singleton while also being able to communicate with the instance via tcp/ip
  * for testing rpc requests, federation requests, and git servlet operations.
- * 
+ *
  * @author James Moger
- * 
+ *
  */
 @RunWith(Suite.class)
 @SuiteClasses({ ArrayUtilsTest.class, FileUtilsTest.class, TimeUtilsTest.class,
 		StringUtilsTest.class, Base64Test.class, JsonUtilsTest.class, ByteFormatTest.class,
 		ObjectCacheTest.class, PermissionsTest.class, UserServiceTest.class, LdapUserServiceTest.class,
 		MarkdownUtilsTest.class, JGitUtilsTest.class, SyndicationUtilsTest.class,
-		DiffUtilsTest.class, MetricUtilsTest.class, TicgitUtilsTest.class, X509UtilsTest.class,
+		DiffUtilsTest.class, MetricUtilsTest.class, X509UtilsTest.class,
 		GitBlitTest.class, FederationTests.class, RpcTests.class, GitServletTest.class, GitDaemonTest.class,
 		GroovyScriptTest.class, LuceneExecutorTest.class, IssuesTest.class, RepositoryModelTest.class,
 		FanoutServiceTest.class, Issue0259Test.class, Issue0271Test.class, HtpasswdUserServiceTest.class,
@@ -65,9 +65,9 @@
 public class GitBlitSuite {
 
 	public static final File REPOSITORIES = new File("data/git");
-	
+
 	public static final File SETTINGS = new File("src/test/config/test-gitblit.properties");
-	
+
 	public static final File USERSCONF = new File("src/test/config/test-users.conf");
 
 	static int port = 8280;
@@ -102,11 +102,11 @@
 		JGitUtils.createRepository(REPOSITORIES, "gb-issues.git").close();
 		return getRepository("gb-issues.git");
 	}
-	
+
 	public static Repository getGitectiveRepository() throws Exception {
 		return getRepository("test/gitective.git");
 	}
-	
+
 	private static Repository getRepository(String name) throws Exception {
 		File gitDir = FileKey.resolve(new File(REPOSITORIES, name), FS.DETECTED);
 		Repository repository = new FileRepositoryBuilder().setGitDir(gitDir).build();
@@ -118,11 +118,12 @@
 			// already started
 			return false;
 		}
-		
+
 		GitServletTest.deleteWorkingFolders();
-		
+
 		// Start a Gitblit instance
 		Executors.newSingleThreadExecutor().execute(new Runnable() {
+			@Override
 			public void run() {
 				GitBlitServer.main("--httpPort", "" + port, "--httpsPort", "0", "--shutdownPort",
 						"" + shutdownPort, "--gitPort", "" + gitPort, "--repositoriesFolder",
@@ -158,13 +159,13 @@
 			cloneOrFetch("test/helloworld.git", "https://github.com/git/hello-world.git");
 			cloneOrFetch("test/ambition.git", "https://github.com/defunkt/ambition.git");
 			cloneOrFetch("test/gitective.git", "https://github.com/kevinsawicki/gitective.git");
-			
+
 			enableTickets("ticgit.git");
 			enableDocs("ticgit.git");
 			showRemoteBranches("ticgit.git");
 			automaticallyTagBranchTips("ticgit.git");
 			showRemoteBranches("test/jgit.git");
-			automaticallyTagBranchTips("test/jgit.git");	
+			automaticallyTagBranchTips("test/jgit.git");
 		}
 	}
 
@@ -212,7 +213,7 @@
 			g.printStackTrace();
 		}
 	}
-	
+
 	private static void automaticallyTagBranchTips(String repositoryName) {
 		try {
 			RepositoryModel model = GitBlit.self().getRepositoryModel(repositoryName);
@@ -222,7 +223,7 @@
 			g.printStackTrace();
 		}
 	}
-	
+
 	public static void close(File repository) {
 		try {
 			File gitDir = FileKey.resolve(repository, FS.detect());
@@ -233,11 +234,11 @@
 			e.printStackTrace();
 		}
 	}
-	
+
 	public static void close(Git git) {
 		close(git.getRepository());
 	}
-	
+
 	public static void close(Repository r) {
 		RepositoryCache.close(r);
 
diff --git a/src/test/java/com/gitblit/tests/TicgitUtilsTest.java b/src/test/java/com/gitblit/tests/TicgitUtilsTest.java
deleted file mode 100644
index 74f9e44..0000000
--- a/src/test/java/com/gitblit/tests/TicgitUtilsTest.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Copyright 2011 gitblit.com.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.gitblit.tests;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
-
-import java.util.List;
-
-import org.eclipse.jgit.lib.Repository;
-import org.junit.Test;
-
-import com.gitblit.models.RefModel;
-import com.gitblit.models.TicketModel;
-import com.gitblit.models.TicketModel.Comment;
-import com.gitblit.utils.TicgitUtils;
-
-public class TicgitUtilsTest {
-
-	@Test
-	public void testTicgitBranch() throws Exception {
-		Repository repository = GitBlitSuite.getTicgitRepository();
-		RefModel branch = TicgitUtils.getTicketsBranch(repository);
-		repository.close();
-		assertNotNull("Ticgit branch does not exist!", branch);
-
-		repository = GitBlitSuite.getHelloworldRepository();
-		branch = TicgitUtils.getTicketsBranch(repository);
-		repository.close();
-		assertNull("Ticgit branch exists!", branch);
-	}
-
-	@Test
-	public void testRetrieveTickets() throws Exception {
-		Repository repository = GitBlitSuite.getTicgitRepository();
-		List<TicketModel> ticketsA = TicgitUtils.getTickets(repository);
-		List<TicketModel> ticketsB = TicgitUtils.getTickets(repository);
-		repository.close();
-		assertTrue("No tickets found!", ticketsA.size() > 0);
-		for (int i = 0; i < ticketsA.size(); i++) {
-			TicketModel ticketA = ticketsA.get(i);
-			TicketModel ticketB = ticketsB.get(i);
-			assertTrue("Tickets are not equal!", ticketA.equals(ticketB));
-			assertFalse(ticketA.equals(""));
-			assertTrue(ticketA.hashCode() == ticketA.id.hashCode());
-			for (int j = 0; j < ticketA.comments.size(); j++) {
-				Comment commentA = ticketA.comments.get(j);
-				Comment commentB = ticketB.comments.get(j);
-				assertTrue("Comments are not equal!", commentA.equals(commentB));
-				assertFalse(commentA.equals(""));
-				assertEquals(commentA.hashCode(), commentA.text.hashCode());
-			}
-		}
-
-		repository = GitBlitSuite.getHelloworldRepository();
-		List<TicketModel> ticketsC = TicgitUtils.getTickets(repository);
-		repository.close();
-		assertNull(ticketsC);
-	}
-
-	@Test
-	public void testReadTicket() throws Exception {
-		Repository repository = GitBlitSuite.getTicgitRepository();
-		List<TicketModel> tickets = TicgitUtils.getTickets(repository);
-		TicketModel ticket = TicgitUtils
-				.getTicket(repository, tickets.get(tickets.size() - 1).name);
-		repository.close();
-		assertNotNull(ticket);
-		assertEquals("1206206148_add-attachment-to-ticket_138", ticket.name);
-	}
-}
\ No newline at end of file

--
Gitblit v1.9.1