Page MenuHomePhorge

No OneTemporary

diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php
index efd1bf5..3155b0d 100644
--- a/src/__phutil_library_map__.php
+++ b/src/__phutil_library_map__.php
@@ -1,99 +1,103 @@
<?php
/**
* This file is automatically generated. Use 'arc liberate' to rebuild it.
*
* @generated
* @phutil-library-version 2
*/
phutil_register_library_map(array(
'__library_version__' => 2,
'class' => array(
'SemiStructuredBaseController' => 'applications/semistruct/controller/SemiStructuredBaseController.php',
'SemiStructuredDAO' => 'applications/semistruct/storage/SemiStructuredDAO.php',
'SemiStructuredDataApplication' => 'applications/semistruct/application/SemiStructuredDataApplication.php',
'SemiStructuredObjectInstance' => 'applications/semistruct/storage/SemiStructuredObjectInstance.php',
'SemiStructuredObjectInstanceClassTransaction' => 'applications/semistruct/xaction/instance/SemiStructuredObjectInstanceClassTransaction.php',
'SemiStructuredObjectInstanceController' => 'applications/semistruct/controller/instance/SemiStructuredObjectInstanceController.php',
'SemiStructuredObjectInstanceDescriptionTransaction' => 'applications/semistruct/xaction/instance/SemiStructuredObjectInstanceDescriptionTransaction.php',
'SemiStructuredObjectInstanceEditController' => 'applications/semistruct/controller/instance/SemiStructuredObjectInstanceEditController.php',
'SemiStructuredObjectInstanceEditEngine' => 'applications/semistruct/editor/SemiStructuredObjectInstanceEditEngine.php',
'SemiStructuredObjectInstanceNameTransaction' => 'applications/semistruct/xaction/instance/SemiStructuredObjectInstanceNameTransaction.php',
'SemiStructuredObjectInstancePHIDType' => 'applications/semistruct/phid/SemiStructuredObjectInstancePHIDType.php',
'SemiStructuredObjectInstanceQuery' => 'applications/semistruct/query/SemiStructuredObjectInstanceQuery.php',
'SemiStructuredObjectInstanceRawDataTransaction' => 'applications/semistruct/xaction/instance/SemiStructuredObjectInstanceRawDataTransaction.php',
'SemiStructuredObjectInstanceSearchEngine' => 'applications/semistruct/query/SemiStructuredObjectInstanceSearchEngine.php',
'SemiStructuredObjectInstanceTransaction' => 'applications/semistruct/storage/SemiStructuredObjectInstanceTransaction.php',
'SemiStructuredObjectInstanceTransactionEditor' => 'applications/semistruct/editor/SemiStructuredObjectInstanceTransactionEditor.php',
+ 'SemiStructuredObjectInstanceTransactionQuery' => 'applications/semistruct/query/SemiStructuredObjectInstanceTransactionQuery.php',
'SemiStructuredObjectInstanceTransactionType' => 'applications/semistruct/xaction/instance/SemiStructuredObjectInstanceTransactionType.php',
'SemiStructuredObjectInstanceViewController' => 'applications/semistruct/controller/instance/SemiStructuredObjectInstanceViewController.php',
'SemiStructuredObjectNewInstanceController' => 'applications/semistruct/controller/class/SemiStructuredObjectNewInstanceController.php',
'SemiStructuredObjectType' => 'applications/semistruct/storage/SemiStructuredObjectType.php',
'SemiStructuredObjectTypeController' => 'applications/semistruct/controller/class/SemiStructuredObjectTypeController.php',
'SemiStructuredObjectTypeDescriptionTransaction' => 'applications/semistruct/xaction/class/SemiStructuredObjectTypeDescriptionTransaction.php',
'SemiStructuredObjectTypeEditController' => 'applications/semistruct/controller/class/SemiStructuredObjectTypeEditController.php',
'SemiStructuredObjectTypeEditEngine' => 'applications/semistruct/editor/SemiStructuredObjectTypeEditEngine.php',
'SemiStructuredObjectTypeFerretEngine' => 'applications/semistruct/engine/SemiStructuredObjectTypeFerretEngine.php',
'SemiStructuredObjectTypeListController' => 'applications/semistruct/controller/class/SemiStructuredObjectTypeListController.php',
'SemiStructuredObjectTypeNameTransaction' => 'applications/semistruct/xaction/class/SemiStructuredObjectTypeNameTransaction.php',
'SemiStructuredObjectTypePHIDType' => 'applications/semistruct/phid/SemiStructuredObjectTypePHIDType.php',
'SemiStructuredObjectTypeQuery' => 'applications/semistruct/query/SemiStructuredObjectTypeQuery.php',
'SemiStructuredObjectTypeSearchEngine' => 'applications/semistruct/query/SemiStructuredObjectTypeSearchEngine.php',
'SemiStructuredObjectTypeTransaction' => 'applications/semistruct/storage/SemiStructuredObjectTypeTransaction.php',
'SemiStructuredObjectTypeTransactionEditor' => 'applications/semistruct/editor/SemiStructuredObjectTypeTransactionEditor.php',
+ 'SemiStructuredObjectTypeTransactionQuery' => 'applications/semistruct/query/SemiStructuredObjectTypeTransactionQuery.php',
'SemiStructuredObjectTypeTransactionType' => 'applications/semistruct/xaction/class/SemiStructuredObjectTypeTransactionType.php',
'SemiStructuredObjectTypeViewController' => 'applications/semistruct/controller/class/SemiStructuredObjectTypeViewController.php',
'SemiStructuredPatchList' => 'applications/semistruct/storage/SemiStructuredPatchList.php',
),
'function' => array(),
'xmap' => array(
'SemiStructuredBaseController' => 'PhabricatorController',
'SemiStructuredDAO' => 'PhabricatorLiskDAO',
'SemiStructuredDataApplication' => 'PhabricatorApplication',
'SemiStructuredObjectInstance' => array(
'SemiStructuredDAO',
'PhabricatorPolicyInterface',
'PhabricatorApplicationTransactionInterface',
'PhabricatorFlaggableInterface',
'PhabricatorDestructibleInterface',
),
'SemiStructuredObjectInstanceClassTransaction' => 'SemiStructuredObjectInstanceTransactionType',
'SemiStructuredObjectInstanceController' => 'SemiStructuredBaseController',
'SemiStructuredObjectInstanceDescriptionTransaction' => 'SemiStructuredObjectInstanceTransactionType',
'SemiStructuredObjectInstanceEditController' => 'SemiStructuredBaseController',
'SemiStructuredObjectInstanceEditEngine' => 'PhabricatorEditEngine',
'SemiStructuredObjectInstanceNameTransaction' => 'SemiStructuredObjectInstanceTransactionType',
'SemiStructuredObjectInstancePHIDType' => 'PhabricatorPHIDType',
'SemiStructuredObjectInstanceQuery' => 'PhabricatorCursorPagedPolicyAwareQuery',
'SemiStructuredObjectInstanceRawDataTransaction' => 'SemiStructuredObjectInstanceTransactionType',
'SemiStructuredObjectInstanceSearchEngine' => 'PhabricatorApplicationSearchEngine',
'SemiStructuredObjectInstanceTransaction' => 'PhabricatorModularTransaction',
'SemiStructuredObjectInstanceTransactionEditor' => 'PhabricatorApplicationTransactionEditor',
+ 'SemiStructuredObjectInstanceTransactionQuery' => 'PhabricatorApplicationTransactionQuery',
'SemiStructuredObjectInstanceTransactionType' => 'PhabricatorModularTransactionType',
'SemiStructuredObjectInstanceViewController' => 'SemiStructuredObjectInstanceController',
'SemiStructuredObjectNewInstanceController' => 'SemiStructuredObjectTypeController',
'SemiStructuredObjectType' => array(
'SemiStructuredDAO',
'PhabricatorPolicyInterface',
'PhabricatorApplicationTransactionInterface',
'PhabricatorFlaggableInterface',
'PhabricatorDestructibleInterface',
'PhabricatorFerretInterface',
),
'SemiStructuredObjectTypeController' => 'SemiStructuredBaseController',
'SemiStructuredObjectTypeDescriptionTransaction' => 'SemiStructuredObjectTypeTransactionType',
'SemiStructuredObjectTypeEditController' => 'SemiStructuredBaseController',
'SemiStructuredObjectTypeEditEngine' => 'PhabricatorEditEngine',
'SemiStructuredObjectTypeFerretEngine' => 'PhabricatorFerretEngine',
'SemiStructuredObjectTypeListController' => 'SemiStructuredBaseController',
'SemiStructuredObjectTypeNameTransaction' => 'SemiStructuredObjectTypeTransactionType',
'SemiStructuredObjectTypePHIDType' => 'PhabricatorPHIDType',
'SemiStructuredObjectTypeQuery' => 'PhabricatorCursorPagedPolicyAwareQuery',
'SemiStructuredObjectTypeSearchEngine' => 'PhabricatorApplicationSearchEngine',
'SemiStructuredObjectTypeTransaction' => 'PhabricatorModularTransaction',
'SemiStructuredObjectTypeTransactionEditor' => 'PhabricatorApplicationTransactionEditor',
+ 'SemiStructuredObjectTypeTransactionQuery' => 'PhabricatorApplicationTransactionQuery',
'SemiStructuredObjectTypeTransactionType' => 'PhabricatorModularTransactionType',
'SemiStructuredObjectTypeViewController' => 'SemiStructuredObjectTypeController',
'SemiStructuredPatchList' => 'PhabricatorSQLPatchList',
),
));
diff --git a/src/controller/class/SemiStructuredObjectTypeViewController.php b/src/controller/class/SemiStructuredObjectTypeViewController.php
index 4521ac4..b525313 100644
--- a/src/controller/class/SemiStructuredObjectTypeViewController.php
+++ b/src/controller/class/SemiStructuredObjectTypeViewController.php
@@ -1,166 +1,166 @@
<?php
final class SemiStructuredObjectTypeViewController
extends SemiStructuredObjectTypeController {
public function handleRequest(AphrontRequest $request) {
$viewer = $request->getViewer();
$id = $request->getURIData('id');
$object_type = id(new SemiStructuredObjectTypeQuery())
->setViewer($viewer)
->withIDs(array($id))
->executeOne();
if (!$object_type) {
return new Aphront404Response();
}
$this->setObjectType($object_type);
$crumbs = $this->buildApplicationCrumbs();
$title = $object_type->getName();
$header = $this->buildHeaderView();
$curtain = $this->buildCurtain();
$details = $this->buildDetailsView();
- // $timeline = $this->buildTransactionTimeline(
- // $object_type,
- // new PhabricatorBadgesTransactionQuery()); /// TODO
- $timeline = null;
+ $timeline = $this->buildTransactionTimeline(
+ $object_type,
+ new SemiStructuredObjectTypeTransactionQuery());
+
$comment_view = id(new SemiStructuredObjectTypeEditEngine())
->setViewer($viewer)
->buildEditEngineCommentView($object_type);
$instances_view = $this->buildInstancesView();
$view = id(new PHUITwoColumnView())
->setHeader($header)
->setCurtain($curtain)
->setMainColumn(array(
$instances_view,
$timeline,
$comment_view,
))
->addPropertySection(pht('Description'), $details);
$navigation = $this->buildSideNavView('view');
return $this->newPage()
->setTitle($title)
->setCrumbs($crumbs)
->setPageObjectPHIDs(array($object_type->getPHID()))
->setNavigation($navigation)
->appendChild($view);
}
private function buildDetailsView() {
$viewer = $this->getViewer();
$object_type = $this->getObjectType();
$view = id(new PHUIPropertyListView())
->setUser($viewer);
$description = $object_type->getDescription();
if (strlen($description)) {
$view->addTextContent(
new PHUIRemarkupView($viewer, $description));
}
return $view;
}
private function buildCurtain() {
$viewer = $this->getViewer();
$object_type = $this->getObjectType();
$can_edit = PhabricatorPolicyFilter::hasCapability(
$viewer,
$object_type,
PhabricatorPolicyCapability::CAN_EDIT);
$can_create_instance = true;
$id = $object_type->getID();
$edit_uri = $this->getApplicationURI("/editclass/{$id}/");
$create_uri = $this->getApplicationURI("/type/{$id}/new/");
$archive_uri = $this->getApplicationURI("/archive/{$id}/");
$curtain = $this->newCurtainView($object_type);
$curtain->addAction(
id(new PhabricatorActionView())
->setName(pht('Edit Object Type'))
->setIcon('fa-pencil')
->setDisabled(!$can_edit)
->setHref($edit_uri));
$curtain->addAction(
id(new PhabricatorActionView())
->setName(pht("Create New Instance"))
->setIcon("fa-plus")
->setDisabled(!$can_create_instance)
->setHref($create_uri));
if ($object_type->isArchived()) {
$curtain->addAction(
id(new PhabricatorActionView())
->setName(pht('Activate Object Type'))
->setIcon('fa-check')
->setDisabled(!$can_edit)
->setWorkflow($can_edit)
->setHref($archive_uri));
} else {/*
$curtain->addAction(
id(new PhabricatorActionView())
->setName(pht('Archive Object Type'))
->setIcon('fa-ban')
->setDisabled(!$can_edit)
->setWorkflow($can_edit)
->setHref($archive_uri)); */
}
return $curtain;
}
private function buildInstancesView() {
$viewer = $this->getViewer();
$object_type = $this->getObjectType();
$instances = id(new SemiStructuredObjectInstanceQuery())
->setViewer($viewer)
->setLimit(10)
->withClassIds(array($object_type->getId()))
->execute();
$content = id(new SemiStructuredObjectInstanceSearchEngine())
->setViewer($viewer)
->renderResultsDirectly($instances);
// $content is PhabricatorApplicationSearchResultView
$box = new PHUIObjectBoxView();
$interface = 'PhabricatorApplicationSearchResultView';
if ($content->getObjectList()) {
$box->setObjectList($content->getObjectList());
}
if ($content->getTable()) {
$box->setTable($content->getTable());
}
if ($content->getContent()) {
$box->appendChild($content->getContent());
}
$box
->setHeader(pht('Instances of this type'));
return $box;
}
}
diff --git a/src/controller/instance/SemiStructuredObjectInstanceViewController.php b/src/controller/instance/SemiStructuredObjectInstanceViewController.php
index e5a2f91..3043977 100644
--- a/src/controller/instance/SemiStructuredObjectInstanceViewController.php
+++ b/src/controller/instance/SemiStructuredObjectInstanceViewController.php
@@ -1,109 +1,108 @@
<?php
final class SemiStructuredObjectInstanceViewController
extends SemiStructuredObjectInstanceController {
public function handleRequest(AphrontRequest $request) {
$viewer = $request->getViewer();
$id = $request->getURIData('id');
$object = id(new SemiStructuredObjectInstanceQuery())
->setViewer($viewer)
->withIDs(array($id))
->executeOne();
if (!$object) {
return new Aphront404Response();
}
$this->setObject($object);
$object_type = $object->getClass();
$crumbs = $this->buildApplicationCrumbs();
$title = pht(
"%s: %d %s",
$object_type->getName(),
$object->getID(),
$object->getName());
$header = $this->buildHeaderView();
$curtain = $this->buildCurtain();
$details = $this->buildDetailsView();
- // $timeline = $this->buildTransactionTimeline(
- // $object_type,
- // new PhabricatorBadgesTransactionQuery()); /// TODO
- $timeline = null;
+ $timeline = $this->buildTransactionTimeline(
+ $object,
+ new SemiStructuredObjectInstanceTransactionQuery());
$comment_view = id(new SemiStructuredObjectInstanceEditEngine())
->setViewer($viewer)
->buildEditEngineCommentView($object);
$view = id(new PHUITwoColumnView())
->setHeader($header)
->setCurtain($curtain)
->setMainColumn(array(
$timeline,
$comment_view,
))
->addPropertySection(pht('Details'), $details);
$navigation = $this->buildSideNavView('view');
return $this->newPage()
->setTitle($title)
->setCrumbs($crumbs)
->setPageObjectPHIDs(array($object->getPHID()))
->setNavigation($navigation)
->appendChild($view);
}
private function buildDetailsView() {
$viewer = $this->getViewer();
$object = $this->getObject();
$view = id(new PHUIPropertyListView())
->setUser($viewer);
$content = $object->getRawData();
$content = id(new PhutilJSON())
->encodeFormatted(json_decode($content));
$description = $object->getDescription();
if (strlen($description)) {
$view->addTextContent(
new PHUIRemarkupView($viewer, $description));
}
$view->addProperty(
pht('Structured content'),
phutil_tag('pre', array(), $content));
return $view;
}
private function buildCurtain() {
$viewer = $this->getViewer();
$object = $this->getObject();
$can_edit = PhabricatorPolicyFilter::hasCapability(
$viewer,
$object,
PhabricatorPolicyCapability::CAN_EDIT);
$id = $object->getID();
$edit_uri = $this->getApplicationURI("/editinstance/{$id}/");
$curtain = $this->newCurtainView($object);
$curtain->addAction(
id(new PhabricatorActionView())
->setName(pht('Edit Instance'))
->setIcon('fa-pencil')
->setDisabled(!$can_edit)
->setHref($edit_uri));
return $curtain;
}
}
diff --git a/src/query/SemiStructuredObjectInstanceTransactionQuery.php b/src/query/SemiStructuredObjectInstanceTransactionQuery.php
new file mode 100644
index 0000000..7e1af24
--- /dev/null
+++ b/src/query/SemiStructuredObjectInstanceTransactionQuery.php
@@ -0,0 +1,10 @@
+<?php
+
+final class SemiStructuredObjectInstanceTransactionQuery
+ extends PhabricatorApplicationTransactionQuery {
+
+ public function getTemplateApplicationTransaction() {
+ return new SemiStructuredObjectInstanceTransaction();
+ }
+
+}
diff --git a/src/query/SemiStructuredObjectTypeTransactionQuery.php b/src/query/SemiStructuredObjectTypeTransactionQuery.php
new file mode 100644
index 0000000..ff08616
--- /dev/null
+++ b/src/query/SemiStructuredObjectTypeTransactionQuery.php
@@ -0,0 +1,10 @@
+<?php
+
+final class SemiStructuredObjectTypeTransactionQuery
+ extends PhabricatorApplicationTransactionQuery {
+
+ public function getTemplateApplicationTransaction() {
+ return new SemiStructuredObjectTypeTransaction();
+ }
+
+}

File Metadata

Mime Type
text/x-diff
Expires
Jan 19 2025, 22:17 (6 w, 2 d ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
1119632
Default Alt Text
(17 KB)

Event Timeline