1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-11-16 03:42:41 +01:00
phorge-phorge/src/applications/macro/controller/PhabricatorMacroMemeDialogController.php
epriestley a2caea13d6 Modernize "macro" typeahead datasource
Summary: Ref T4420. Make this modern.

Test Plan:
  - Used typeahead in remarkup comment area to select macro "derpdog".

Reviewers: btrahan

Reviewed By: btrahan

Subscribers: epriestley

Maniphest Tasks: T4420

Differential Revision: https://secure.phabricator.com/D9875
2014-07-10 16:18:15 -07:00

76 lines
2 KiB
PHP

<?php
final class PhabricatorMacroMemeDialogController
extends PhabricatorMacroController {
public function processRequest() {
$request = $this->getRequest();
$user = $request->getUser();
$phid = head($request->getArr('macro'));
$above = $request->getStr('above');
$below = $request->getStr('below');
$e_macro = true;
$errors = array();
if ($request->isDialogFormPost()) {
if (!$phid) {
$e_macro = pht('Required');
$errors[] = pht('Macro name is required.');
} else {
$macro = id(new PhabricatorMacroQuery())
->setViewer($user)
->withPHIDs(array($phid))
->executeOne();
if (!$macro) {
$e_macro = pht('Invalid');
$errors[] = pht('No such macro.');
}
}
if (!$errors) {
$options = new PhutilSimpleOptions();
$data = array(
'src' => $macro->getName(),
'above' => $above,
'below' => $below,
);
$string = $options->unparse($data, $escape = '}');
$result = array(
'text' => "{meme, {$string}}",
);
return id(new AphrontAjaxResponse())->setContent($result);
}
}
$view = id(new PHUIFormLayoutView())
->appendChild(
id(new AphrontFormTokenizerControl())
->setLabel(pht('Macro'))
->setName('macro')
->setLimit(1)
->setDatasource(new PhabricatorMacroDatasource())
->setError($e_macro))
->appendChild(
id(new AphrontFormTextControl())
->setLabel(pht('Above'))
->setName('above')
->setValue($above))
->appendChild(
id(new AphrontFormTextControl())
->setLabel(pht('Below'))
->setName('below')
->setValue($below));
$dialog = id(new AphrontDialogView())
->setUser($user)
->setTitle(pht('Create Meme'))
->appendChild($view)
->addCancelButton('/')
->addSubmitButton(pht('rofllolo!!~'));
return id(new AphrontDialogResponse())->setDialog($dialog);
}
}