mirror of
https://we.phorge.it/source/phorge.git
synced 2024-12-19 20:10:55 +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();
|
||||
|
||||
$book_name = $request->getStr('book');
|
||||
$query_text = $request->getStr('name');
|
||||
|
||||
$book = null;
|
||||
if ($book_name) {
|
||||
|
@ -44,22 +45,33 @@ final class DivinerFindController extends DivinerController {
|
|||
|
||||
$name_query->withNames(
|
||||
array(
|
||||
$request->getStr('name'),
|
||||
$query_text,
|
||||
// TODO: This could probably be more smartly normalized in the DB,
|
||||
// but just fake it for now.
|
||||
phutil_utf8_strtolower($request->getStr('name')),
|
||||
phutil_utf8_strtolower($query_text),
|
||||
));
|
||||
|
||||
$atoms = $name_query->execute();
|
||||
|
||||
if (!$atoms) {
|
||||
$title_query = clone $query;
|
||||
$title_query->withTitles(array($request->getStr('name')));
|
||||
$title_query->withTitles(array($query_text));
|
||||
$atoms = $title_query->execute();
|
||||
}
|
||||
|
||||
$not_found_uri = $this->getApplicationURI();
|
||||
|
||||
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')) {
|
||||
|
@ -72,7 +84,7 @@ final class DivinerFindController extends DivinerController {
|
|||
return $this->buildApplicationPage(
|
||||
$list,
|
||||
array(
|
||||
'title' => 'derp',
|
||||
'title' => array(pht('Find'), pht('"%s"', $query_text)),
|
||||
'device' => true,
|
||||
));
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue