Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F2895927
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Award Token
Flag For Later
Advanced/Developer...
View Handle
View Hovercard
Size
17 KB
Referenced Files
None
Subscribers
None
View Options
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
Details
Attached
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)
Attached To
Mode
R6 Semi Structured
Attached
Detach File
Event Timeline
Log In to Comment