1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2025-02-19 02:08:38 +01:00

Support Spaces in Pholio

Summary:
Ref T8493. Add Spaces support to Pholio.

This is straightforward; Pholio has no clone/copy/fork or weird parent/child stuff going on.

Test Plan: Created a mock, put it in a space, looked at it as another user, searched for stuff in spaces, viewed Macros.

Reviewers: btrahan

Reviewed By: btrahan

Subscribers: epriestley

Maniphest Tasks: T8493

Differential Revision: https://secure.phabricator.com/D13231
This commit is contained in:
epriestley 2015-06-10 15:52:49 -07:00
parent 739bdeccab
commit de0e0d995b
7 changed files with 44 additions and 12 deletions

View file

@ -0,0 +1,2 @@
ALTER TABLE {$NAMESPACE}_pholio.pholio_mock
ADD spacePHID VARBINARY(64);

View file

@ -2580,7 +2580,6 @@ phutil_register_library_map(array(
'PhabricatorSpacesCapabilityCreateSpaces' => 'applications/spaces/capability/PhabricatorSpacesCapabilityCreateSpaces.php', 'PhabricatorSpacesCapabilityCreateSpaces' => 'applications/spaces/capability/PhabricatorSpacesCapabilityCreateSpaces.php',
'PhabricatorSpacesCapabilityDefaultEdit' => 'applications/spaces/capability/PhabricatorSpacesCapabilityDefaultEdit.php', 'PhabricatorSpacesCapabilityDefaultEdit' => 'applications/spaces/capability/PhabricatorSpacesCapabilityDefaultEdit.php',
'PhabricatorSpacesCapabilityDefaultView' => 'applications/spaces/capability/PhabricatorSpacesCapabilityDefaultView.php', 'PhabricatorSpacesCapabilityDefaultView' => 'applications/spaces/capability/PhabricatorSpacesCapabilityDefaultView.php',
'PhabricatorSpacesControl' => 'applications/spaces/view/PhabricatorSpacesControl.php',
'PhabricatorSpacesController' => 'applications/spaces/controller/PhabricatorSpacesController.php', 'PhabricatorSpacesController' => 'applications/spaces/controller/PhabricatorSpacesController.php',
'PhabricatorSpacesDAO' => 'applications/spaces/storage/PhabricatorSpacesDAO.php', 'PhabricatorSpacesDAO' => 'applications/spaces/storage/PhabricatorSpacesDAO.php',
'PhabricatorSpacesEditController' => 'applications/spaces/controller/PhabricatorSpacesEditController.php', 'PhabricatorSpacesEditController' => 'applications/spaces/controller/PhabricatorSpacesEditController.php',
@ -6091,7 +6090,6 @@ phutil_register_library_map(array(
'PhabricatorSpacesCapabilityCreateSpaces' => 'PhabricatorPolicyCapability', 'PhabricatorSpacesCapabilityCreateSpaces' => 'PhabricatorPolicyCapability',
'PhabricatorSpacesCapabilityDefaultEdit' => 'PhabricatorPolicyCapability', 'PhabricatorSpacesCapabilityDefaultEdit' => 'PhabricatorPolicyCapability',
'PhabricatorSpacesCapabilityDefaultView' => 'PhabricatorPolicyCapability', 'PhabricatorSpacesCapabilityDefaultView' => 'PhabricatorPolicyCapability',
'PhabricatorSpacesControl' => 'AphrontFormControl',
'PhabricatorSpacesController' => 'PhabricatorController', 'PhabricatorSpacesController' => 'PhabricatorController',
'PhabricatorSpacesDAO' => 'PhabricatorLiskDAO', 'PhabricatorSpacesDAO' => 'PhabricatorLiskDAO',
'PhabricatorSpacesEditController' => 'PhabricatorSpacesController', 'PhabricatorSpacesEditController' => 'PhabricatorSpacesController',
@ -6418,6 +6416,7 @@ phutil_register_library_map(array(
'PhabricatorApplicationTransactionInterface', 'PhabricatorApplicationTransactionInterface',
'PhabricatorProjectInterface', 'PhabricatorProjectInterface',
'PhabricatorDestructibleInterface', 'PhabricatorDestructibleInterface',
'PhabricatorSpacesInterface',
), ),
'PholioMockCommentController' => 'PholioController', 'PholioMockCommentController' => 'PholioController',
'PholioMockEditController' => 'PholioController', 'PholioMockEditController' => 'PholioController',

View file

@ -141,7 +141,10 @@ final class PhabricatorMacroSearchEngine
foreach ($macros as $macro) { foreach ($macros as $macro) {
$file = $macro->getFile(); $file = $macro->getFile();
$item = new PHUIPinboardItemView(); $item = id(new PHUIPinboardItemView())
->setUser($viewer)
->setObject($macro);
if ($file) { if ($file) {
$item->setImageURI($file->getURIForTransform($xform)); $item->setImageURI($file->getURIForTransform($xform));
list($x, $y) = $xform->getTransformedDimensions($file); list($x, $y) = $xform->getTransformedDimensions($file);

View file

@ -65,6 +65,7 @@ final class PholioMockEditController extends PholioController {
$v_edit = $mock->getEditPolicy(); $v_edit = $mock->getEditPolicy();
$v_cc = PhabricatorSubscribersQuery::loadSubscribersForPHID( $v_cc = PhabricatorSubscribersQuery::loadSubscribersForPHID(
$mock->getPHID()); $mock->getPHID());
$v_space = $mock->getSpacePHID();
if ($request->isFormPost()) { if ($request->isFormPost()) {
$xactions = array(); $xactions = array();
@ -75,6 +76,7 @@ final class PholioMockEditController extends PholioController {
$type_view = PhabricatorTransactions::TYPE_VIEW_POLICY; $type_view = PhabricatorTransactions::TYPE_VIEW_POLICY;
$type_edit = PhabricatorTransactions::TYPE_EDIT_POLICY; $type_edit = PhabricatorTransactions::TYPE_EDIT_POLICY;
$type_cc = PhabricatorTransactions::TYPE_SUBSCRIBERS; $type_cc = PhabricatorTransactions::TYPE_SUBSCRIBERS;
$type_space = PhabricatorTransactions::TYPE_SPACE;
$v_name = $request->getStr('name'); $v_name = $request->getStr('name');
$v_desc = $request->getStr('description'); $v_desc = $request->getStr('description');
@ -83,6 +85,7 @@ final class PholioMockEditController extends PholioController {
$v_edit = $request->getStr('can_edit'); $v_edit = $request->getStr('can_edit');
$v_cc = $request->getArr('cc'); $v_cc = $request->getArr('cc');
$v_projects = $request->getArr('projects'); $v_projects = $request->getArr('projects');
$v_space = $request->getStr('spacePHID');
$mock_xactions = array(); $mock_xactions = array();
$mock_xactions[$type_name] = $v_name; $mock_xactions[$type_name] = $v_name;
@ -91,6 +94,7 @@ final class PholioMockEditController extends PholioController {
$mock_xactions[$type_view] = $v_view; $mock_xactions[$type_view] = $v_view;
$mock_xactions[$type_edit] = $v_edit; $mock_xactions[$type_edit] = $v_edit;
$mock_xactions[$type_cc] = array('=' => $v_cc); $mock_xactions[$type_cc] = array('=' => $v_cc);
$mock_xactions[$type_space] = $v_space;
if (!strlen($request->getStr('name'))) { if (!strlen($request->getStr('name'))) {
$e_name = pht('Required'); $e_name = pht('Required');
@ -350,6 +354,7 @@ final class PholioMockEditController extends PholioController {
->setCapability(PhabricatorPolicyCapability::CAN_VIEW) ->setCapability(PhabricatorPolicyCapability::CAN_VIEW)
->setPolicyObject($mock) ->setPolicyObject($mock)
->setPolicies($policies) ->setPolicies($policies)
->setSpacePHID($v_space)
->setName('can_view')) ->setName('can_view'))
->appendChild( ->appendChild(
id(new AphrontFormPolicyControl()) id(new AphrontFormPolicyControl())

View file

@ -83,12 +83,6 @@ final class PholioMockSearchEngine extends PhabricatorApplicationSearchEngine {
return parent::buildSavedQueryFromBuiltin($query_key); return parent::buildSavedQueryFromBuiltin($query_key);
} }
protected function getRequiredHandlePHIDsForResultList(
array $mocks,
PhabricatorSavedQuery $query) {
return mpull($mocks, 'getAuthorPHID');
}
protected function renderResultList( protected function renderResultList(
array $mocks, array $mocks,
PhabricatorSavedQuery $query, PhabricatorSavedQuery $query,
@ -96,6 +90,7 @@ final class PholioMockSearchEngine extends PhabricatorApplicationSearchEngine {
assert_instances_of($mocks, 'PholioMock'); assert_instances_of($mocks, 'PholioMock');
$viewer = $this->requireViewer(); $viewer = $this->requireViewer();
$handles = $viewer->loadHandles(mpull($mocks, 'getAuthorPHID'));
$xform = PhabricatorFileTransform::getTransformByKey( $xform = PhabricatorFileTransform::getTransformByKey(
PhabricatorFileThumbnailTransform::TRANSFORM_PINBOARD); PhabricatorFileThumbnailTransform::TRANSFORM_PINBOARD);
@ -109,7 +104,9 @@ final class PholioMockSearchEngine extends PhabricatorApplicationSearchEngine {
$header = 'M'.$mock->getID().' '.$mock->getName(); $header = 'M'.$mock->getID().' '.$mock->getName();
$item = id(new PHUIPinboardItemView()) $item = id(new PHUIPinboardItemView())
->setUser($viewer)
->setHeader($header) ->setHeader($header)
->setObject($mock)
->setURI('/M'.$mock->getID()) ->setURI('/M'.$mock->getID())
->setImageURI($image_uri) ->setImageURI($image_uri)
->setImageSize($x, $y) ->setImageSize($x, $y)

View file

@ -9,7 +9,8 @@ final class PholioMock extends PholioDAO
PhabricatorFlaggableInterface, PhabricatorFlaggableInterface,
PhabricatorApplicationTransactionInterface, PhabricatorApplicationTransactionInterface,
PhabricatorProjectInterface, PhabricatorProjectInterface,
PhabricatorDestructibleInterface { PhabricatorDestructibleInterface,
PhabricatorSpacesInterface {
const MARKUP_FIELD_DESCRIPTION = 'markup:description'; const MARKUP_FIELD_DESCRIPTION = 'markup:description';
@ -26,6 +27,7 @@ final class PholioMock extends PholioDAO
protected $coverPHID; protected $coverPHID;
protected $mailKey; protected $mailKey;
protected $status; protected $status;
protected $spacePHID;
private $images = self::ATTACHABLE; private $images = self::ATTACHABLE;
private $allImages = self::ATTACHABLE; private $allImages = self::ATTACHABLE;
@ -308,4 +310,13 @@ final class PholioMock extends PholioDAO
$this->saveTransaction(); $this->saveTransaction();
} }
/* -( PhabricatorSpacesInterface )----------------------------------------- */
public function getSpacePHID() {
return $this->spacePHID;
}
} }

View file

@ -7,7 +7,7 @@ final class PHUIPinboardItemView extends AphrontView {
private $header; private $header;
private $iconBlock = array(); private $iconBlock = array();
private $disabled; private $disabled;
private $object;
private $imageWidth; private $imageWidth;
private $imageHeight; private $imageHeight;
@ -42,6 +42,11 @@ final class PHUIPinboardItemView extends AphrontView {
return $this; return $this;
} }
public function setObject($object) {
$this->object = $object;
return $this;
}
public function render() { public function render() {
require_celerity_resource('phui-pinboard-view-css'); require_celerity_resource('phui-pinboard-view-css');
$header = null; $header = null;
@ -57,7 +62,17 @@ final class PHUIPinboardItemView extends AphrontView {
'class' => 'phui-pinboard-item-header '. 'class' => 'phui-pinboard-item-header '.
'sprite-gradient '.$header_color, 'sprite-gradient '.$header_color,
), ),
phutil_tag('a', array('href' => $this->uri), $this->header)); array(
id(new PHUISpacesNamespaceContextView())
->setUser($this->getUser())
->setObject($this->object),
phutil_tag(
'a',
array(
'href' => $this->uri,
),
$this->header),
));
} }
$image = null; $image = null;