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:
parent
d07c92cb49
commit
be87306f33
|
@ -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() {
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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));
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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());
|
||||
}
|
||||
});
|
||||
|
|
Loading…
Reference in New Issue