mirror of
https://we.phorge.it/source/phorge.git
synced 2024-11-19 13:22:42 +01:00
Improve 404 behavior for new Diviner
Summary: Ref T988. When the user clicks a link we haven't explicitly resolved before, we send them to the `/find/` endpoint, but currently just 404 if we can't find the relevant documentation. Instead, display a more user-friendly error message, since we're probably going to have some of these. Also, make the page title much worse. Test Plan: Hit a 404 via `/find/`, got a nicer page. Reviewers: chad, btrahan Reviewed By: btrahan CC: aran Maniphest Tasks: T988 Differential Revision: https://secure.phabricator.com/D8408
This commit is contained in:
parent
03abde0b25
commit
feac35a0fd
1 changed files with 17 additions and 5 deletions
|
@ -11,6 +11,7 @@ final class DivinerFindController extends DivinerController {
|
||||||
$viewer = $request->getUser();
|
$viewer = $request->getUser();
|
||||||
|
|
||||||
$book_name = $request->getStr('book');
|
$book_name = $request->getStr('book');
|
||||||
|
$query_text = $request->getStr('name');
|
||||||
|
|
||||||
$book = null;
|
$book = null;
|
||||||
if ($book_name) {
|
if ($book_name) {
|
||||||
|
@ -44,22 +45,33 @@ final class DivinerFindController extends DivinerController {
|
||||||
|
|
||||||
$name_query->withNames(
|
$name_query->withNames(
|
||||||
array(
|
array(
|
||||||
$request->getStr('name'),
|
$query_text,
|
||||||
// TODO: This could probably be more smartly normalized in the DB,
|
// TODO: This could probably be more smartly normalized in the DB,
|
||||||
// but just fake it for now.
|
// but just fake it for now.
|
||||||
phutil_utf8_strtolower($request->getStr('name')),
|
phutil_utf8_strtolower($query_text),
|
||||||
));
|
));
|
||||||
|
|
||||||
$atoms = $name_query->execute();
|
$atoms = $name_query->execute();
|
||||||
|
|
||||||
if (!$atoms) {
|
if (!$atoms) {
|
||||||
$title_query = clone $query;
|
$title_query = clone $query;
|
||||||
$title_query->withTitles(array($request->getStr('name')));
|
$title_query->withTitles(array($query_text));
|
||||||
$atoms = $title_query->execute();
|
$atoms = $title_query->execute();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$not_found_uri = $this->getApplicationURI();
|
||||||
|
|
||||||
if (!$atoms) {
|
if (!$atoms) {
|
||||||
return new Aphront404Response();
|
$dialog = id(new AphrontDialogView())
|
||||||
|
->setUser($viewer)
|
||||||
|
->setTitle(pht('Documentation Not Found'))
|
||||||
|
->appendChild(
|
||||||
|
pht(
|
||||||
|
'Unable to find the specified documentation. You may have '.
|
||||||
|
'followed a bad or outdated link.'))
|
||||||
|
->addCancelButton($not_found_uri, pht('Read More Documentation'));
|
||||||
|
|
||||||
|
return id(new AphrontDialogResponse())->setDialog($dialog);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (count($atoms) == 1 && $request->getBool('jump')) {
|
if (count($atoms) == 1 && $request->getBool('jump')) {
|
||||||
|
@ -72,7 +84,7 @@ final class DivinerFindController extends DivinerController {
|
||||||
return $this->buildApplicationPage(
|
return $this->buildApplicationPage(
|
||||||
$list,
|
$list,
|
||||||
array(
|
array(
|
||||||
'title' => 'derp',
|
'title' => array(pht('Find'), pht('"%s"', $query_text)),
|
||||||
'device' => true,
|
'device' => true,
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue