1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-11-18 21:02:41 +01:00

Remove old paged forms

Summary:
Ref T11326. This gets rid of the old multi-paged form stuff used in the last version of Diffusion.

This incidentally removes a callsite for a date control to make it a little easier to simplify them.

Test Plan: Grepped for all removed classes, no more callsites.

Reviewers: chad

Reviewed By: chad

Maniphest Tasks: T11326

Differential Revision: https://secure.phabricator.com/D16302
This commit is contained in:
epriestley 2016-07-14 10:21:10 -07:00
parent 1c33b70c66
commit 08ac49e15a
6 changed files with 0 additions and 656 deletions

View file

@ -1626,8 +1626,6 @@ phutil_register_library_map(array(
'PHUIFormIconSetControl' => 'view/form/control/PHUIFormIconSetControl.php',
'PHUIFormInsetView' => 'view/form/PHUIFormInsetView.php',
'PHUIFormLayoutView' => 'view/form/PHUIFormLayoutView.php',
'PHUIFormMultiSubmitControl' => 'view/form/control/PHUIFormMultiSubmitControl.php',
'PHUIFormPageView' => 'view/form/PHUIFormPageView.php',
'PHUIHandleListView' => 'applications/phid/view/PHUIHandleListView.php',
'PHUIHandleTagListView' => 'applications/phid/view/PHUIHandleTagListView.php',
'PHUIHandleView' => 'applications/phid/view/PHUIHandleView.php',
@ -1653,7 +1651,6 @@ phutil_register_library_map(array(
'PHUIObjectItemListExample' => 'applications/uiexample/examples/PHUIObjectItemListExample.php',
'PHUIObjectItemListView' => 'view/phui/PHUIObjectItemListView.php',
'PHUIObjectItemView' => 'view/phui/PHUIObjectItemView.php',
'PHUIPagedFormView' => 'view/form/PHUIPagedFormView.php',
'PHUIPagerView' => 'view/phui/PHUIPagerView.php',
'PHUIPinboardItemView' => 'view/phui/PHUIPinboardItemView.php',
'PHUIPinboardView' => 'view/phui/PHUIPinboardView.php',
@ -2974,7 +2971,6 @@ phutil_register_library_map(array(
'PhabricatorPHPASTApplication' => 'applications/phpast/application/PhabricatorPHPASTApplication.php',
'PhabricatorPHPConfigSetupCheck' => 'applications/config/check/PhabricatorPHPConfigSetupCheck.php',
'PhabricatorPHPMailerConfigOptions' => 'applications/config/option/PhabricatorPHPMailerConfigOptions.php',
'PhabricatorPagedFormUIExample' => 'applications/uiexample/examples/PhabricatorPagedFormUIExample.php',
'PhabricatorPagerUIExample' => 'applications/uiexample/examples/PhabricatorPagerUIExample.php',
'PhabricatorPassphraseApplication' => 'applications/passphrase/application/PhabricatorPassphraseApplication.php',
'PhabricatorPasswordAuthProvider' => 'applications/auth/provider/PhabricatorPasswordAuthProvider.php',
@ -6189,8 +6185,6 @@ phutil_register_library_map(array(
'PHUIFormIconSetControl' => 'AphrontFormControl',
'PHUIFormInsetView' => 'AphrontView',
'PHUIFormLayoutView' => 'AphrontView',
'PHUIFormMultiSubmitControl' => 'AphrontFormControl',
'PHUIFormPageView' => 'AphrontView',
'PHUIHandleListView' => 'AphrontTagView',
'PHUIHandleTagListView' => 'AphrontTagView',
'PHUIHandleView' => 'AphrontView',
@ -6216,7 +6210,6 @@ phutil_register_library_map(array(
'PHUIObjectItemListExample' => 'PhabricatorUIExample',
'PHUIObjectItemListView' => 'AphrontTagView',
'PHUIObjectItemView' => 'AphrontTagView',
'PHUIPagedFormView' => 'AphrontView',
'PHUIPagerView' => 'AphrontView',
'PHUIPinboardItemView' => 'AphrontView',
'PHUIPinboardView' => 'AphrontView',
@ -7730,7 +7723,6 @@ phutil_register_library_map(array(
'PhabricatorPHPASTApplication' => 'PhabricatorApplication',
'PhabricatorPHPConfigSetupCheck' => 'PhabricatorSetupCheck',
'PhabricatorPHPMailerConfigOptions' => 'PhabricatorApplicationConfigOptions',
'PhabricatorPagedFormUIExample' => 'PhabricatorUIExample',
'PhabricatorPagerUIExample' => 'PhabricatorUIExample',
'PhabricatorPassphraseApplication' => 'PhabricatorApplication',
'PhabricatorPasswordAuthProvider' => 'PhabricatorAuthProvider',

View file

@ -1,71 +0,0 @@
<?php
final class PhabricatorPagedFormUIExample extends PhabricatorUIExample {
public function getName() {
return pht('Form (Paged)');
}
public function getDescription() {
return pht(
'Use %s to render forms with multiple pages.',
hsprintf('<tt>PHUIPagedFormView</tt>'));
}
public function renderExample() {
$request = $this->getRequest();
$user = $request->getUser();
$page1 = id(new PHUIFormPageView())
->setPageName(pht('Page 1'))
->addControl(
id(new AphrontFormTextControl())
->setName('page1')
->setLabel(pht('Page 1')));
$page2 = id(new PHUIFormPageView())
->setPageName(pht('Page 2'))
->addControl(
id(new AphrontFormTextControl())
->setName('page2')
->setLabel(pht('Page 2')));
$page3 = id(new PHUIFormPageView())
->setPageName(pht('Page 3'))
->addControl(
id(new AphrontFormTextControl())
->setName('page3')
->setLabel(pht('Page 3')));
$page4 = id(new PHUIFormPageView())
->setPageName(pht('Page 4'))
->addControl(
id(new AphrontFormTextControl())
->setName('page4')
->setLabel(pht('Page 4')));
$form = new PHUIPagedFormView();
$form->setUser($user);
$form->addPage('page1', $page1);
$form->addPage('page2', $page2);
$form->addPage('page3', $page3);
$form->addPage('page4', $page4);
if ($request->isFormPost()) {
$form->readFromRequest($request);
if ($form->isComplete()) {
return id(new AphrontDialogView())
->setUser($user)
->setTitle(pht('Form Complete'))
->appendChild(pht('You submitted the form. Well done!'))
->addCancelButton($request->getRequestURI(), pht('Again!'));
}
} else {
$form->readFromObject(null);
}
return $form;
}
}

View file

@ -1,221 +0,0 @@
<?php
/**
* @concrete-extensible
*/
class PHUIFormPageView extends AphrontView {
private $key;
private $form;
private $controls = array();
private $content = array();
private $values = array();
private $isValid;
private $validateFormPageCallback;
private $adjustFormPageCallback;
private $pageErrors = array();
private $pageName;
public function setPageName($page_name) {
$this->pageName = $page_name;
return $this;
}
public function getPageName() {
return $this->pageName;
}
public function addPageError($page_error) {
$this->pageErrors[] = $page_error;
return $this;
}
public function getPageErrors() {
return $this->pageErrors;
}
public function setAdjustFormPageCallback($adjust_form_page_callback) {
$this->adjustFormPageCallback = $adjust_form_page_callback;
return $this;
}
public function setValidateFormPageCallback($validate_form_page_callback) {
$this->validateFormPageCallback = $validate_form_page_callback;
return $this;
}
public function addInstructions($text, $before = null) {
$tag = phutil_tag(
'div',
array(
'class' => 'aphront-form-instructions',
),
$text);
$append = true;
if ($before !== null) {
for ($ii = 0; $ii < count($this->content); $ii++) {
if ($this->content[$ii] instanceof AphrontFormControl) {
if ($this->content[$ii]->getName() == $before) {
array_splice($this->content, $ii, 0, array($tag));
$append = false;
break;
}
}
}
}
if ($append) {
$this->content[] = $tag;
}
return $this;
}
public function addRemarkupInstructions($remarkup, $before = null) {
$remarkup = new PHUIRemarkupView($this->getUser(), $remarkup);
return $this->addInstructions($remarkup, $before);
}
public function addControl(AphrontFormControl $control) {
$name = $control->getName();
if (!strlen($name)) {
throw new Exception(pht('Form control has no name!'));
}
if (isset($this->controls[$name])) {
throw new Exception(
pht("Form page contains duplicate control with name '%s'!", $name));
}
$this->controls[$name] = $control;
$this->content[] = $control;
$control->setFormPage($this);
return $this;
}
public function getControls() {
return $this->controls;
}
public function getControl($name) {
if (empty($this->controls[$name])) {
throw new Exception(pht("No page control '%s'!", $name));
}
return $this->controls[$name];
}
protected function canAppendChild() {
return false;
}
public function setPagedFormView(PHUIPagedFormView $view, $key) {
if ($this->key) {
throw new Exception(pht('This page is already part of a form!'));
}
$this->form = $view;
$this->key = $key;
return $this;
}
public function adjustFormPage() {
if ($this->adjustFormPageCallback) {
call_user_func($this->adjustFormPageCallback, $this);
}
return $this;
}
protected function validateFormPage() {
if ($this->validateFormPageCallback) {
return call_user_func($this->validateFormPageCallback, $this);
}
return true;
}
public function getKey() {
return $this->key;
}
public function render() {
return $this->content;
}
public function getForm() {
return $this->form;
}
public function getRequestKey($key) {
return $this->getForm()->getRequestKey('p:'.$this->key.':'.$key);
}
public function validateObjectType($object) {
return true;
}
public function validateResponseType($response) {
return true;
}
protected function validateControls() {
$result = true;
foreach ($this->getControls() as $name => $control) {
if (!$control->isValid()) {
$result = false;
break;
}
}
return $result;
}
public function isValid() {
if ($this->isValid === null) {
$this->isValid = $this->validateControls() && $this->validateFormPage();
}
return $this->isValid;
}
public function readFromRequest(AphrontRequest $request) {
foreach ($this->getControls() as $name => $control) {
$control->readValueFromRequest($request);
}
return $this;
}
public function readFromObject($object) {
foreach ($this->getControls() as $name => $control) {
if (is_array($object)) {
$control->readValueFromDictionary($object);
}
}
return $this;
}
public function writeToResponse($response) {
return $this;
}
public function readSerializedValues(AphrontRequest $request) {
foreach ($this->getControls() as $name => $control) {
$key = $this->getRequestKey($name);
$control->readSerializedValue($request->getStr($key));
}
return $this;
}
public function getSerializedValues() {
$dict = array();
foreach ($this->getControls() as $name => $control) {
$key = $this->getRequestKey($name);
$dict[$key] = $control->getSerializedValue();
}
return $dict;
}
}

View file

@ -1,279 +0,0 @@
<?php
/**
* @task page Managing Pages
*/
final class PHUIPagedFormView extends AphrontView {
private $name = 'pages';
private $pages = array();
private $selectedPage;
private $choosePage;
private $nextPage;
private $prevPage;
private $complete;
private $cancelURI;
protected function canAppendChild() {
return false;
}
/* -( Managing Pages )----------------------------------------------------- */
/**
* @task page
*/
public function addPage($key, PHUIFormPageView $page) {
if (isset($this->pages[$key])) {
throw new Exception(pht("Duplicate page with key '%s'!", $key));
}
$this->pages[$key] = $page;
$page->setPagedFormView($this, $key);
$this->selectedPage = null;
$this->complete = null;
return $this;
}
/**
* @task page
*/
public function getPage($key) {
if (!$this->pageExists($key)) {
throw new Exception(pht("No page '%s' exists!", $key));
}
return $this->pages[$key];
}
/**
* @task page
*/
public function pageExists($key) {
return isset($this->pages[$key]);
}
/**
* @task page
*/
protected function getPageIndex($key) {
$page = $this->getPage($key);
$index = 0;
foreach ($this->pages as $target_page) {
if ($page === $target_page) {
break;
}
$index++;
}
return $index;
}
/**
* @task page
*/
protected function getPageByIndex($index) {
foreach ($this->pages as $page) {
if (!$index) {
return $page;
}
$index--;
}
throw new Exception(pht("Requesting out-of-bounds page '%s'.", $index));
}
protected function getLastIndex() {
return count($this->pages) - 1;
}
protected function isFirstPage(PHUIFormPageView $page) {
return ($this->getPageIndex($page->getKey()) === 0);
}
protected function isLastPage(PHUIFormPageView $page) {
return ($this->getPageIndex($page->getKey()) === (count($this->pages) - 1));
}
public function getSelectedPage() {
return $this->selectedPage;
}
public function readFromObject($object) {
return $this->processForm($is_request = false, $object);
}
public function writeToResponse($response) {
foreach ($this->pages as $page) {
$page->validateResponseType($response);
$response = $page->writeToResponse($page);
}
return $response;
}
public function readFromRequest(AphrontRequest $request) {
$this->choosePage = $request->getStr($this->getRequestKey('page'));
$this->nextPage = $request->getStr('__submit__');
$this->prevPage = $request->getStr('__back__');
return $this->processForm($is_request = true, $request);
}
public function setName($name) {
$this->name = $name;
return $this;
}
public function getValue($page, $key, $default = null) {
return $this->getPage($page)->getValue($key, $default);
}
public function setValue($page, $key, $value) {
$this->getPage($page)->setValue($key, $value);
return $this;
}
private function processForm($is_request, $source) {
if ($this->pageExists($this->choosePage)) {
$selected = $this->getPage($this->choosePage);
} else {
$selected = $this->getPageByIndex(0);
}
$is_attempt_complete = false;
if ($this->prevPage) {
$prev_index = $this->getPageIndex($selected->getKey()) - 1;
$index = max(0, $prev_index);
$selected = $this->getPageByIndex($index);
} else if ($this->nextPage) {
$next_index = $this->getPageIndex($selected->getKey()) + 1;
if ($next_index > $this->getLastIndex()) {
$is_attempt_complete = true;
}
$index = min($this->getLastIndex(), $next_index);
$selected = $this->getPageByIndex($index);
}
$validation_error = false;
$found_selected = false;
foreach ($this->pages as $key => $page) {
if ($is_request) {
if ($key === $this->choosePage) {
$page->readFromRequest($source);
} else {
$page->readSerializedValues($source);
}
} else {
$page->readFromObject($source);
}
if (!$found_selected) {
$page->adjustFormPage();
}
if ($page === $selected) {
$found_selected = true;
}
if (!$found_selected || $is_attempt_complete) {
if (!$page->isValid()) {
$selected = $page;
$validation_error = true;
break;
}
}
}
if ($is_attempt_complete && !$validation_error) {
$this->complete = true;
} else {
$this->selectedPage = $selected;
}
return $this;
}
public function isComplete() {
return $this->complete;
}
public function getRequestKey($key) {
return $this->name.':'.$key;
}
public function setCancelURI($cancel_uri) {
$this->cancelURI = $cancel_uri;
return $this;
}
public function getCancelURI() {
return $this->cancelURI;
}
public function render() {
$form = id(new AphrontFormView())
->setUser($this->getUser());
$selected_page = $this->getSelectedPage();
if (!$selected_page) {
throw new Exception(pht('No selected page!'));
}
$form->addHiddenInput(
$this->getRequestKey('page'),
$selected_page->getKey());
$errors = array();
foreach ($this->pages as $page) {
if ($page == $selected_page) {
$errors = $page->getPageErrors();
continue;
}
foreach ($page->getSerializedValues() as $key => $value) {
$form->addHiddenInput($key, $value);
}
}
$submit = id(new PHUIFormMultiSubmitControl());
if (!$this->isFirstPage($selected_page)) {
$submit->addBackButton();
} else if ($this->getCancelURI()) {
$submit->addCancelButton($this->getCancelURI());
}
if ($this->isLastPage($selected_page)) {
$submit->addSubmitButton(pht('Save'));
} else {
$submit->addSubmitButton(pht('Continue')." \xC2\xBB");
}
$form->appendChild($selected_page);
$form->appendChild($submit);
$box = id(new PHUIObjectBoxView())
->setBackground(PHUIObjectBoxView::BLUE_PROPERTY)
->setFormErrors($errors)
->setForm($form);
if ($selected_page->getPageName()) {
$header = id(new PHUIHeaderView())
->setHeader($selected_page->getPageName());
$box->setHeader($header);
}
return $box;
}
}

View file

@ -11,7 +11,6 @@ abstract class AphrontFormControl extends AphrontView {
private $id;
private $controlID;
private $controlStyle;
private $formPage;
private $required;
private $hidden;
private $classes;
@ -132,21 +131,6 @@ abstract class AphrontFormControl extends AphrontView {
return $this;
}
public function setFormPage(PHUIFormPageView $page) {
if ($this->formPage) {
throw new Exception(pht('This control is already a member of a page!'));
}
$this->formPage = $page;
return $this;
}
public function getFormPage() {
if ($this->formPage === null) {
throw new Exception(pht('This control does not have a page!'));
}
return $this->formPage;
}
public function setDisabled($disabled) {
$this->disabled = $disabled;
return $this;

View file

@ -1,61 +0,0 @@
<?php
final class PHUIFormMultiSubmitControl extends AphrontFormControl {
private $buttons = array();
public function addBackButton($label = null) {
if ($label === null) {
$label = "\xC2\xAB ".pht('Back');
}
return $this->addButton('__back__', $label, 'grey');
}
public function addSubmitButton($label) {
return $this->addButton('__submit__', $label);
}
public function addCancelButton($uri, $label = null) {
if ($label === null) {
$label = pht('Cancel');
}
$this->buttons[] = phutil_tag(
'a',
array(
'class' => 'grey button',
'href' => $uri,
),
$label);
return $this;
}
public function addButtonView(PHUIButtonView $button) {
$this->buttons[] = $button;
return $this;
}
public function addButton($name, $label, $class = null) {
$this->buttons[] = javelin_tag(
'input',
array(
'type' => 'submit',
'name' => $name,
'value' => $label,
'class' => $class,
'sigil' => 'alternate-submit-button',
'disabled' => $this->getDisabled() ? 'disabled' : null,
));
return $this;
}
protected function getCustomControlClass() {
return 'phui-form-control-multi-submit';
}
protected function renderInput() {
return array_reverse($this->buttons);
}
}