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:
parent
739bdeccab
commit
de0e0d995b
7 changed files with 44 additions and 12 deletions
2
resources/sql/autopatches/20150609.spaces.1.pholio.sql
Normal file
2
resources/sql/autopatches/20150609.spaces.1.pholio.sql
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
ALTER TABLE {$NAMESPACE}_pholio.pholio_mock
|
||||||
|
ADD spacePHID VARBINARY(64);
|
|
@ -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',
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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())
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
|
|
Loading…
Add table
Reference in a new issue