Fix project links to be query links

Instead of using the older "#project,merged,name" anchor for a
project link and rewriting it in the dispatcher, use the search
query link directly.

Change-Id: I27c3cfe54bbb35f5b6197fd504a22a53c21adf4b
Signed-off-by: Shawn O. Pearce <sop@google.com>
This commit is contained in:
Shawn O. Pearce 2010-07-26 12:29:08 -07:00
parent d07c92cb49
commit be87306f33
5 changed files with 19 additions and 31 deletions

View File

@ -69,21 +69,28 @@ public class PageLinks {
return "q," + KeyUtil.encode(query) + "," + TOP;
}
public static String toProject(final Project.NameKey proj, Status status) {
public static String projectQuery(Project.NameKey proj, Status status) {
switch (status) {
case ABANDONED:
return "project,abandoned," + proj.toString() + ",n,z";
return "status:abandoned " + op("project", proj.get());
case MERGED:
return "project,merged," + proj.toString() + ",n,z";
return "status:merged " + op("project", proj.get());
case NEW:
case SUBMITTED:
default:
return "project,open," + proj.toString() + ",n,z";
return "status:open " + op("project", proj.get());
}
}
public static String op(String name, String value) {
if (value.indexOf(' ') >= 0) {
return name + ":\"" + value + "\"";
}
return name + ":" + value;
}
protected PageLinks() {
}
}

View File

@ -30,6 +30,7 @@ import static com.google.gerrit.common.PageLinks.SETTINGS_PREFERENCES;
import static com.google.gerrit.common.PageLinks.SETTINGS_PROJECTS;
import static com.google.gerrit.common.PageLinks.SETTINGS_SSHKEYS;
import static com.google.gerrit.common.PageLinks.SETTINGS_WEBIDENT;
import static com.google.gerrit.common.PageLinks.op;
import com.google.gerrit.client.account.MyAgreementsScreen;
import com.google.gerrit.client.account.MyContactInformationScreen;
@ -202,7 +203,7 @@ public class Dispatcher {
final int c = s.indexOf(',');
Project.NameKey proj = Project.NameKey.parse(s.substring(0, c));
return QueryScreen.forQuery( //
"status:open " + QueryScreen.op("project", proj.get()), //
"status:open " + op("project", proj.get()), //
s.substring(c + 1));
}
@ -212,7 +213,7 @@ public class Dispatcher {
final int c = s.indexOf(',');
Project.NameKey proj = Project.NameKey.parse(s.substring(0, c));
return QueryScreen.forQuery( //
"status:merged " + QueryScreen.op("project", proj.get()), //
"status:merged " + op("project", proj.get()), //
s.substring(c + 1));
}
@ -222,7 +223,7 @@ public class Dispatcher {
final int c = s.indexOf(',');
Project.NameKey proj = Project.NameKey.parse(s.substring(0, c));
return QueryScreen.forQuery( //
"status:abandoned " + QueryScreen.op("project", proj.get()), //
"status:abandoned " + op("project", proj.get()), //
s.substring(c + 1));
}

View File

@ -24,13 +24,6 @@ import com.google.gwtorm.client.KeyUtil;
public class QueryScreen extends PagedSingleListScreen {
public static String op(String name, String value) {
if (value.indexOf(' ') >= 0) {
return name + ":\"" + value + "\"";
}
return name + ":" + value;
}
public static QueryScreen forQuery(String query) {
return forQuery(query, PageLinks.TOP);
}

View File

@ -32,7 +32,7 @@ public class ProjectLink extends InlineHyperlink {
public ProjectLink(final String text, final Project.NameKey proj,
Change.Status stat) {
super(text, PageLinks.toProject(proj, stat));
super(text, PageLinks.toChangeQuery(PageLinks.projectQuery(proj, stat)));
status = stat;
project = proj;
}
@ -43,20 +43,6 @@ public class ProjectLink extends InlineHyperlink {
}
private Screen createScreen() {
switch (status) {
case ABANDONED:
return QueryScreen.forQuery("status:abandoned "
+ QueryScreen.op("project", project.get()));
case MERGED:
return QueryScreen.forQuery("status:merged "
+ QueryScreen.op("project", project.get()));
case NEW:
case SUBMITTED:
default:
return QueryScreen.forQuery("status:open "
+ QueryScreen.op("project", project.get()));
}
return QueryScreen.forQuery(PageLinks.projectQuery(project, status));
}
}

View File

@ -115,7 +115,8 @@ public class ProjectServlet extends GitServlet {
StringBuilder r = new StringBuilder();
r.append(urlProvider.get());
r.append('#');
r.append(PageLinks.toProject(dst, Change.Status.NEW));
r.append(PageLinks.toChangeQuery(PageLinks.projectQuery(dst,
Change.Status.NEW)));
rsp.sendRedirect(r.toString());
}
});