Page MenuHomestyx hydra

No OneTemporary

diff --git a/src/applications/phlux/controller/PhluxEditController.php b/src/applications/phlux/controller/PhluxEditController.php
index 775737c9b7..f37795a754 100644
--- a/src/applications/phlux/controller/PhluxEditController.php
+++ b/src/applications/phlux/controller/PhluxEditController.php
@@ -1,177 +1,187 @@
<?php
final class PhluxEditController extends PhluxController {
public function handleRequest(AphrontRequest $request) {
$viewer = $this->getViewer();
$key = $request->getURIData('key');
$is_new = ($key === null);
if ($is_new) {
$var = new PhluxVariable();
$var->setViewPolicy(PhabricatorPolicies::POLICY_USER);
$var->setEditPolicy(PhabricatorPolicies::POLICY_USER);
} else {
$var = id(new PhluxVariableQuery())
->setViewer($viewer)
->requireCapabilities(
array(
PhabricatorPolicyCapability::CAN_VIEW,
PhabricatorPolicyCapability::CAN_EDIT,
))
->withKeys(array($key))
->executeOne();
if (!$var) {
return new Aphront404Response();
}
$view_uri = $this->getApplicationURI('/view/'.$key.'/');
}
$e_key = ($is_new ? true : null);
$e_value = true;
$errors = array();
$key = $var->getVariableKey();
$display_value = null;
$value = $var->getVariableValue();
if ($request->isFormPost()) {
if ($is_new) {
$key = $request->getStr('key');
if (!strlen($key)) {
$errors[] = pht('Variable key is required.');
$e_key = pht('Required');
} else if (!preg_match('/^[a-z0-9.-]+\z/', $key)) {
$errors[] = pht(
'Variable key "%s" must contain only lowercase letters, digits, '.
'period, and hyphen.',
$key);
$e_key = pht('Invalid');
}
}
$raw_value = $request->getStr('value');
$value = json_decode($raw_value, true);
if ($value === null && strtolower($raw_value) !== 'null') {
$e_value = pht('Invalid');
$errors[] = pht('Variable value must be valid JSON.');
$display_value = $raw_value;
}
if (!$errors) {
$editor = id(new PhluxVariableEditor())
->setActor($viewer)
->setContinueOnNoEffect(true)
->setContentSourceFromRequest($request);
$xactions = array();
$xactions[] = id(new PhluxTransaction())
->setTransactionType(PhluxTransaction::TYPE_EDIT_KEY)
->setNewValue($key);
$xactions[] = id(new PhluxTransaction())
->setTransactionType(PhluxTransaction::TYPE_EDIT_VALUE)
->setNewValue($value);
$xactions[] = id(new PhluxTransaction())
->setTransactionType(PhabricatorTransactions::TYPE_VIEW_POLICY)
->setNewValue($request->getStr('viewPolicy'));
$xactions[] = id(new PhluxTransaction())
->setTransactionType(PhabricatorTransactions::TYPE_EDIT_POLICY)
->setNewValue($request->getStr('editPolicy'));
try {
$editor->applyTransactions($var, $xactions);
$view_uri = $this->getApplicationURI('/view/'.$key.'/');
return id(new AphrontRedirectResponse())->setURI($view_uri);
} catch (AphrontDuplicateKeyQueryException $ex) {
$e_key = pht('Not Unique');
$errors[] = pht('Variable key must be unique.');
}
}
}
if ($display_value === null) {
if (is_array($value) &&
(array_keys($value) !== array_keys(array_values($value)))) {
$json = new PhutilJSON();
$display_value = $json->encodeFormatted($value);
} else {
$display_value = json_encode($value);
}
}
$policies = id(new PhabricatorPolicyQuery())
->setViewer($viewer)
->setObject($var)
->execute();
$form = id(new AphrontFormView())
->setUser($viewer)
->appendChild(
id(new AphrontFormTextControl())
->setValue($var->getVariableKey())
->setLabel(pht('Key'))
->setName('key')
->setError($e_key)
->setCaption(pht('Lowercase letters, digits, dot and hyphen only.'))
->setDisabled(!$is_new))
->appendChild(
id(new AphrontFormTextAreaControl())
->setValue($display_value)
->setLabel(pht('Value'))
->setName('value')
->setCaption(pht('Enter value as JSON.'))
->setError($e_value))
->appendChild(
id(new AphrontFormPolicyControl())
->setName('viewPolicy')
->setPolicyObject($var)
->setCapability(PhabricatorPolicyCapability::CAN_VIEW)
->setPolicies($policies))
->appendChild(
id(new AphrontFormPolicyControl())
->setName('editPolicy')
->setPolicyObject($var)
->setCapability(PhabricatorPolicyCapability::CAN_EDIT)
->setPolicies($policies));
if ($is_new) {
$form->appendChild(
id(new AphrontFormSubmitControl())
->setValue(pht('Create Variable')));
} else {
$form->appendChild(
id(new AphrontFormSubmitControl())
->setValue(pht('Update Variable'))
->addCancelButton($view_uri));
}
$crumbs = $this->buildApplicationCrumbs();
if ($is_new) {
$title = pht('Create Variable');
$crumbs->addTextCrumb($title, $request->getRequestURI());
+ $header_icon = 'fa-plus-square';
} else {
- $title = pht('Edit %s', $key);
+ $title = pht('Edit Variable: %s', $key);
+ $header_icon = 'fa-pencil';
$crumbs->addTextCrumb($title, $request->getRequestURI());
}
+ $crumbs->setBorder(true);
- $form_box = id(new PHUIObjectBoxView())
- ->setHeaderText($title)
+ $box = id(new PHUIObjectBoxView())
+ ->setHeaderText(pht('Variable'))
->setFormErrors($errors)
+ ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY)
->setForm($form);
- return $this->buildApplicationPage(
- array(
- $crumbs,
- $form_box,
- ),
- array(
- 'title' => $title,
+ $header = id(new PHUIHeaderView())
+ ->setHeader($title)
+ ->setHeaderIcon($header_icon);
+
+ $view = id(new PHUITwoColumnView())
+ ->setHeader($header)
+ ->setFooter(array(
+ $box,
));
+
+ return $this->newPage()
+ ->setTitle($title)
+ ->setCrumbs($crumbs)
+ ->appendChild($view);
}
}
diff --git a/src/applications/phlux/controller/PhluxListController.php b/src/applications/phlux/controller/PhluxListController.php
index 550f571a6a..e75fb09999 100644
--- a/src/applications/phlux/controller/PhluxListController.php
+++ b/src/applications/phlux/controller/PhluxListController.php
@@ -1,46 +1,59 @@
<?php
final class PhluxListController extends PhluxController {
public function handleRequest(AphrontRequest $request) {
$viewer = $this->getViewer();
$pager = new AphrontCursorPagerView();
$pager->readFromRequest($request);
$query = id(new PhluxVariableQuery())
->setViewer($viewer);
$vars = $query->executeWithCursorPager($pager);
$view = new PHUIObjectItemListView();
+ $view->setFlush(true);
foreach ($vars as $var) {
$key = $var->getVariableKey();
$item = new PHUIObjectItemView();
$item->setHeader($key);
$item->setHref($this->getApplicationURI('/view/'.$key.'/'));
$item->addIcon(
'none',
phabricator_datetime($var->getDateModified(), $viewer));
$view->addItem($item);
}
$crumbs = $this->buildApplicationCrumbs();
+ $box = id(new PHUIObjectBoxView())
+ ->setHeaderText('Variables')
+ ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY)
+ ->appendChild($view);
+
$title = pht('Variable List');
+ $header = id(new PHUIHeaderView())
+ ->setHeader($title)
+ ->setHeaderIcon('fa-copy');
$crumbs->addTextCrumb($title, $this->getApplicationURI());
+ $crumbs->setBorder(true);
- return $this->buildApplicationPage(
- array(
- $crumbs,
- $view,
+ $view = id(new PHUITwoColumnView())
+ ->setHeader($header)
+ ->setFooter(array(
+ $box,
$pager,
- ),
- array(
- 'title' => $title,
));
+
+ return $this->newPage()
+ ->setTitle($title)
+ ->setCrumbs($crumbs)
+ ->appendChild($view);
+
}
}
diff --git a/src/applications/phlux/controller/PhluxViewController.php b/src/applications/phlux/controller/PhluxViewController.php
index 384e15b57e..b3019443be 100644
--- a/src/applications/phlux/controller/PhluxViewController.php
+++ b/src/applications/phlux/controller/PhluxViewController.php
@@ -1,74 +1,83 @@
<?php
final class PhluxViewController extends PhluxController {
public function handleRequest(AphrontRequest $request) {
$viewer = $this->getViewer();
$key = $request->getURIData('key');
$var = id(new PhluxVariableQuery())
->setViewer($viewer)
->withKeys(array($key))
->executeOne();
if (!$var) {
return new Aphront404Response();
}
- $crumbs = $this->buildApplicationCrumbs();
-
$title = $var->getVariableKey();
+ $crumbs = $this->buildApplicationCrumbs();
$crumbs->addTextCrumb($title, $request->getRequestURI());
+ $crumbs->setBorder(true);
+
+ $curtain = $this->buildCurtainView($var);
$header = id(new PHUIHeaderView())
->setHeader($title)
->setUser($viewer)
- ->setPolicyObject($var);
-
- $actions = id(new PhabricatorActionListView())
- ->setUser($viewer)
- ->setObject($var);
-
- $can_edit = PhabricatorPolicyFilter::hasCapability(
- $viewer,
- $var,
- PhabricatorPolicyCapability::CAN_EDIT);
-
- $actions->addAction(
- id(new PhabricatorActionView())
- ->setIcon('fa-pencil')
- ->setName(pht('Edit Variable'))
- ->setHref($this->getApplicationURI('/edit/'.$var->getVariableKey().'/'))
- ->setDisabled(!$can_edit)
- ->setWorkflow(!$can_edit));
+ ->setPolicyObject($var)
+ ->setHeaderIcon('fa-copy');
$display_value = json_encode($var->getVariableValue());
$properties = id(new PHUIPropertyListView())
->setUser($viewer)
- ->setObject($var)
- ->setActionList($actions)
->addProperty(pht('Value'), $display_value);
$timeline = $this->buildTransactionTimeline(
$var,
new PhluxTransactionQuery());
$timeline->setShouldTerminate(true);
$object_box = id(new PHUIObjectBoxView())
- ->setHeader($header)
+ ->setHeaderText(pht('DETAILS'))
+ ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY)
->addPropertyList($properties);
- return $this->buildApplicationPage(
- array(
- $crumbs,
+ $view = id(new PHUITwoColumnView())
+ ->setHeader($header)
+ ->setCurtain($curtain)
+ ->setMainColumn(array(
$object_box,
$timeline,
- ),
- array(
- 'title' => $title,
));
+
+ return $this->newPage()
+ ->setTitle($title)
+ ->setCrumbs($crumbs)
+ ->appendChild($view);
+ }
+
+ private function buildCurtainView(PhluxVariable $var) {
+ $viewer = $this->getViewer();
+
+ $curtain = $this->newCurtainView($var);
+
+ $can_edit = PhabricatorPolicyFilter::hasCapability(
+ $viewer,
+ $var,
+ PhabricatorPolicyCapability::CAN_EDIT);
+
+ $curtain->addAction(
+ id(new PhabricatorActionView())
+ ->setIcon('fa-pencil')
+ ->setName(pht('Edit Variable'))
+ ->setHref($this->getApplicationURI('/edit/'.$var->getVariableKey().'/'))
+ ->setDisabled(!$can_edit)
+ ->setWorkflow(!$can_edit));
+
+ return $curtain;
}
}

File Metadata

Mime Type
text/x-diff
Expires
Tue, Mar 17, 1:11 AM (15 h, 34 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
963990
Default Alt Text
(11 KB)

Event Timeline