1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-11-13 10:22:42 +01:00
phorge-phorge/src/applications/maniphest/controller/ManiphestSavedQueryEditController.php
Chad Little df0c3df3cc Modernize Maniphest
Summary:
A few things
- pht Maniphest where I could
- implement dust background
- optimize pages for mobile
- adds aphront-two-column-layout
- reworks maniphest page with two column layout
- tweaks task table for mobile, though we should move to object-list-view

Stopping here as I want to get feedback in. Super excited about mobile and the new tasks views. Only sort of excited about the sidebar filters, they need more UI work, but we should talk about that.

Test Plan: Test Maniphest, Differential, and Homepage views. Sort tasks, make reports

Reviewers: epriestley, btrahan

Reviewed By: btrahan

CC: aran, Korvin

Differential Revision: https://secure.phabricator.com/D5314
2013-03-12 23:30:03 -07:00

105 lines
2.7 KiB
PHP

<?php
/**
* @group maniphest
*/
final class ManiphestSavedQueryEditController extends ManiphestController {
private $id;
public function willProcessRequest(array $data) {
$this->id = idx($data, 'id');
}
public function processRequest() {
$request = $this->getRequest();
$user = $request->getUser();
$key = $request->getStr('key');
if (!$key) {
$id = nonempty($this->id, $request->getInt('id'));
if (!$id) {
return new Aphront404Response();
}
$query = id(new ManiphestSavedQuery())->load($id);
if (!$query) {
return new Aphront404Response();
}
if ($query->getUserPHID() != $user->getPHID()) {
return new Aphront400Response();
}
} else {
$query = new ManiphestSavedQuery();
$query->setUserPHID($user->getPHID());
$query->setQueryKey($key);
$query->setIsDefault(0);
}
$e_name = true;
$errors = array();
if ($request->isFormPost()) {
$e_name = null;
$query->setName($request->getStr('name'));
if (!strlen($query->getName())) {
$e_name = pht('Required');
$errors[] = pht('Saved query name is required.');
}
if (!$errors) {
$query->save();
return id(new AphrontRedirectResponse())->setURI('/maniphest/custom/');
}
}
if ($errors) {
$error_view = new AphrontErrorView();
$error_view->setTitle(pht('Form Errors'));
$error_view->setErrors($errors);
} else {
$error_view = null;
}
if ($query->getID()) {
$header = pht('Edit Saved Query');
$cancel_uri = '/maniphest/custom/';
} else {
$header = pht('New Saved Query');
$cancel_uri = '/maniphest/view/custom/?key='.$key;
}
$form = id(new AphrontFormView())
->setUser($user)
->addHiddenInput('key', $key)
->addHiddenInput('id', $query->getID())
->appendChild(
id(new AphrontFormTextControl())
->setLabel(pht('Name'))
->setValue($query->getName())
->setName('name')
->setError($e_name))
->appendChild(
id(new AphrontFormSubmitControl())
->addCancelButton($cancel_uri)
->setValue(pht('Save')));
$panel = new AphrontPanelView();
$panel->setHeader($header);
$panel->appendChild($form);
$panel->setWidth(AphrontPanelView::WIDTH_FORM);
$nav = $this->buildBaseSideNav();
// The side nav won't show "Saved Queries..." until you have at least one.
$nav->selectFilter('saved', 'custom');
$nav->appendChild($error_view);
$nav->appendChild($panel);
return $this->buildApplicationPage(
$nav,
array(
'title' => pht('Saved Queries'),
'device' => true,
));
}
}