From a502d96a860456ec5e8c96761db70f7cabb74751 Mon Sep 17 00:00:00 2001
From: Paul Martin <paul@paulsputer.com>
Date: Sat, 30 Apr 2016 04:19:14 -0400
Subject: [PATCH] Merge pull request #1073 from gitblit/1062-DocEditorUpdates

---
 src/main/java/com/gitblit/wicket/pages/MyTicketsPage.java |   43 +++++++++++++++++++++++--------------------
 1 files changed, 23 insertions(+), 20 deletions(-)

diff --git a/src/main/java/com/gitblit/wicket/pages/MyTicketsPage.java b/src/main/java/com/gitblit/wicket/pages/MyTicketsPage.java
index 7b85b14..bfcedf6 100644
--- a/src/main/java/com/gitblit/wicket/pages/MyTicketsPage.java
+++ b/src/main/java/com/gitblit/wicket/pages/MyTicketsPage.java
@@ -19,7 +19,6 @@
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
-import java.util.Comparator;
 import java.util.HashMap;
 import java.util.List;
 
@@ -73,12 +72,11 @@
         }
 
         final String username = currentUser.getName();
-        final String defaultQueryParam = "watchedby:"+username;
 
         final String[] statiiParam = (params == null) ? TicketsUI.openStatii : params.getStringArray(Lucene.status.name());
         final String assignedToParam = (params == null) ? "" : params.getString(Lucene.responsible.name(), null);
         final String milestoneParam = (params == null) ? "" : params.getString(Lucene.milestone.name(), null);
-        final String queryParam = (params == null || StringUtils.isEmpty(params.getString("q", null))) ? defaultQueryParam : params.getString("q", null);
+        final String queryParam = (params == null) ? null : params.getString("q", null);
         final String searchParam = (params == null) ? "" : params.getString("s", null);
         final String sortBy = (params == null) ? "" : Lucene.fromString(params.getString("sort", Lucene.created.name())).name();
         final String repositoryId = (params == null) ? "" : params.getString(Lucene.rid.name(), null);
@@ -280,29 +278,22 @@
 
         // by repository
         final List<QueryResult> tickets =
-            query(initializeQueryBuilder(defaultQueryParam, username), 1, Integer.MAX_VALUE, sortBy, desc);
+            query(initializeQueryBuilder(null, username), 1, Integer.MAX_VALUE, sortBy, desc);
         final List<RepositoryModel> repositoryChoices = correspondingRepositories(tickets);
-        Collections.sort(repositoryChoices, new Comparator<RepositoryModel>() {
-            private static final long serialVersionUID = 1L;
-
-            @Override
-            public int compare(RepositoryModel repository1, RepositoryModel repository2) {
-                return repository1.toString().compareTo(repository2.toString());
-            }
-        });
+        Collections.sort(repositoryChoices);
 
         final RepositoryModel noneChoice = new RepositoryModel();
         noneChoice.name = getString("gb.all");
         repositoryChoices.add(0, noneChoice);
 
-        RepositoryModel currentRepository = repositoryChoices.size() > 0 ? repositoryChoices.get(0) : null;
+        RepositoryModel currentRepository = repositoryChoices.get(0);
         for (RepositoryModel r : repositoryChoices) {
             if (r.getRID().equals(repositoryId)) {
                 currentRepository = r;
                 break;
             }
         }
-        add(new Label("currentRepository", currentRepository == null ? "none" : currentRepository.toString()));
+        add(new Label("currentRepository", currentRepository.toString()));
 
         ListDataProvider<RepositoryModel> repositoryChoicesDp = new ListDataProvider<RepositoryModel>(repositoryChoices);
         DataView<RepositoryModel> repositoryMenu = new DataView<RepositoryModel>("repository", repositoryChoicesDp) {
@@ -311,7 +302,8 @@
             @Override
             public void populateItem(final Item<RepositoryModel> item) {
                 final RepositoryModel r = item.getModelObject();
-                PageParameters params = queryParameters(queryParam, milestoneParam, statiiParam, assignedToParam, sortBy, desc, r.getRID(), 1);
+                String rid = r == noneChoice ? null : r.getRID();
+                PageParameters params = queryParameters(queryParam, milestoneParam, statiiParam, assignedToParam, sortBy, desc, rid, 1);
                 item.add(new LinkPanel("repositoryLink", null, r.toString(), MyTicketsPage.class, params).setRenderBodyOnly(true));
             }
         };
@@ -350,14 +342,23 @@
         int page = (params != null) ? Math.max(1, WicketUtils.getPage(params)) : 1;
         int pageSize = app().settings().getInteger(Keys.tickets.perPage, 25);
 
-        final List<QueryResult> results = 
+        final List<QueryResult> allResults = 
             StringUtils.isEmpty(searchParam) ? query(qb, page, pageSize, sortBy, desc) : search(searchParam, page, pageSize);
 
-        int totalResults = results.size() == 0 ? 0 : results.get(0).totalResults;
-        buildPager(queryParam, milestoneParam, statiiParam, assignedToParam, sortBy, desc, repositoryId, page, pageSize, results.size(), totalResults);
+        List<QueryResult> viewableResults = new ArrayList<>(allResults.size());
+        for (QueryResult queryResult : allResults) {
+        	RepositoryModel model = app().repositories().getRepositoryModel(currentUser, queryResult.repository);
+			
+        	if ((model != null) && (currentUser.canView(model))) {
+        		viewableResults.add(queryResult);
+        	}
+		}
+            
+        int totalResults = viewableResults.size() == 0 ? 0 : viewableResults.get(0).totalResults;
+        buildPager(queryParam, milestoneParam, statiiParam, assignedToParam, sortBy, desc, repositoryId, page, pageSize, viewableResults.size(), totalResults);
 
         final boolean showSwatch = app().settings().getBoolean(Keys.web.repositoryListSwatches, true);
-        add(new TicketListPanel("ticketList", results, showSwatch, true));
+        add(new TicketListPanel("ticketList", viewableResults, showSwatch, true));
     }
 
     protected PageParameters queryParameters(
@@ -463,7 +464,8 @@
         // focused "my tickets"
         if (qb.containsField(Lucene.createdby.name())
                 || qb.containsField(Lucene.responsible.name())
-                || qb.containsField(Lucene.watchedby.name())) {
+                || qb.containsField(Lucene.watchedby.name())
+                || qb.containsField(Lucene.mentions.name())) {
 
             return qb;
         }
@@ -473,6 +475,7 @@
                  .or(Lucene.createdby.matches(username))
                  .or(Lucene.responsible.matches(username))
                  .or(Lucene.watchedby.matches(username))
+                 .or(Lucene.mentions.matches(username))
                  .endSubquery();
     }
 

--
Gitblit v1.9.1