neos/neos-ui 244
Neos CMS UI written in ReactJS with Immutable data structures.
A library for Event Sourcing and CQRS for Flow projects.
Flowpack/Flowpack.SearchPlugin 22
A simple search plugin for Neos
neos/neos-ui-extensibility-examples 17
Neos UI Extensibility Examples
Incident Handling System
A collaborative live slideshow app with node.js, CouchDB and Websockets
Neos brand assets
a Neos UI Plugin to include the CKEditor 5 Inspector - very helpful when debugging CKEditor5 plugins
React Conf 2017 Companion App - built with React Native
push eventFlowpack/Flowpack.Prunner
commit sha 841021ed48d765d8cd700f086a221aa6c229c609
TASK: explain how the prunner UI can be updated
push time in a day
push eventFlowpack/prunner-ui
commit sha 34400e7fe1996274e7382e691e20ea515a3e8273
TASK: update README
push time in a day
push eventFlowpack/prunner
commit sha a2098bd57539fdbd6c8b38190cdcc1f6ea441d37
TASK: update README
push time in a day
push eventFlowpack/Flowpack.Prunner
commit sha 92cdbe7f113412a83f1aa86d6e90ef57ae24bb18
FEATURE: install correct prunner version post-package-update
push time in a day
push eventFlowpack/prunner
commit sha 9de9b00935fef7866b4a6e0ed60def877b2fbca8
TASK: fix license of prunner (GPL because taskctl is GPL licensed as well)
push time in a day
push eventFlowpack/prunner
commit sha ac3ff399b44fdc5d16456dd7f7812c5adcaf49f6
Try fixing test workflow
commit sha 385516722f935124e634ca7df1358c2f338abf05
TASK: make linter happy
commit sha c82d8b1f071fb4f6242b80e16a0890405cacf512
TASK: try release github workflow
commit sha dbc505e34676f371793a3529731c6f02cb28981c
Merge pull request #1 from Flowpack/gh-action Try fixing test workflow
push time in a day
push eventFlowpack/prunner
commit sha c82d8b1f071fb4f6242b80e16a0890405cacf512
TASK: try release github workflow
push time in a day
push eventFlowpack/prunner
commit sha 385516722f935124e634ca7df1358c2f338abf05
TASK: make linter happy
push time in a day
push eventFlowpack/prunner
commit sha 5c8507d21491da0d4566f105355da4bc6c29fb0c
TASK: try github actions for tests
push time in a day
push eventFlowpack/prunner-ui
commit sha d52e6ff6487317007de3252469b3c3465dcbf078
FEATURE: add README
push time in a day
push eventFlowpack/prunner
commit sha c42859c36fa64d257f02793465f00aac104e7898
FEATURE: add README
push time in a day
push eventFlowpack/Flowpack.Prunner
commit sha 6ddda5523151468bd0ff77d46fd76f3cb4d82681
FEATURE: add README
push time in a day
created repositoryFlowpack/Flowpack.Prunner
An embeddable, API based pipeline runner. (Flow Package)
created time in a day
created repositoryFlowpack/prunner
Go-based, embeddable, API based pipeline runner.
created time in a day
Pull request review commentneos/contentrepository-development-collection
private function connectNodeWithSiblings(DocumentNodeInfo $node, NodeAggregateId 'succeedingNodeAggregateIdentifier' => $newSucceedingNodeAggregateIdentifier, ]); }+++ public function whenDimensionSpacePointWasMoved(DimensionSpacePointWasMoved $event)+ {+ $this->updateNodeQuery(+ 'SET dimensionspacepointhash = :newDimensionSpacePointHash WHERE dimensionspacepointhash = :originalDimensionSpacePointHash', [+ 'originalDimensionSpacePointHash' => $event->getSource()->getHash(),+ 'newDimensionSpacePointHash' => $event->getTarget()->getHash(),+ 'contentStreamIdentifier' => (string)$event->getContentStreamIdentifier()+ // TODO: contentStreamIdentifier restriction HOW?+ ]);++ $this->updateNodeQuery(+ 'SET origindimensionspacepointhash = :newDimensionSpacePointHash WHERE origindimensionspacepointhash = :originalDimensionSpacePointHash', [+ 'originalDimensionSpacePointHash' => $event->getSource()->getHash(),+ 'newDimensionSpacePointHash' => $event->getTarget()->getHash(),+ 'contentStreamIdentifier' => (string)$event->getContentStreamIdentifier()+ // TODO: contentStreamIdentifier restriction HOW?
if (!$this->isInLiveConentStream()) return;
comment created time in 5 days
Pull request review commentneos/contentrepository-development-collection
protected function updateNodeRecordWithCopyOnWrite(ContentStreamIdentifier $cont } return $result; }++ protected function copyReferenceRelations(NodeRelationAnchorPoint $sourceRelationAnchorPoint, NodeRelationAnchorPoint $destinationRelationAnchorPoint): void+ {+ $this->getDatabaseConnection()->executeStatement('+ INSERT INTO neos_contentgraph_referencerelation (+ nodeanchorpoint,+ name,+ position,+ destinationnodeaggregateidentifier+ )+ SELECT+ "' . (string)$destinationRelationAnchorPoint . '" AS nodeanchorpoint,+ ref.name,+ ref.position,+ ref.destinationnodeaggregateidentifier+ FROM+ neos_contentgraph_referencerelation ref+ WHERE ref.nodeanchorpoint = :sourceNodeAnchorPoint+ ', [+ 'sourceNodeAnchorPoint' => (string)$sourceRelationAnchorPoint+ ]);+ }++ public function whenDimensionSpacePointWasMoved(DimensionSpacePointWasMoved $event)+ {+ $this->transactional(function () use ($event) {+ // the ordering is important - we first update the OriginDimensionSpacePoints, as we need the+ // hierarchy relations for this query. Then, we update the Hierarchy Relations.++ // 1) originDimensionSpacePoint on Node+ $rel = $this->getDatabaseConnection()->executeQuery(+ 'SELECT n.relationanchorpoint, n.origindimensionspacepointhash FROM neos_contentgraph_node n+ INNER JOIN neos_contentgraph_hierarchyrelation h ON h.childnodeanchor = n.relationanchorpoint++ AND h.contentstreamidentifier = :contentStreamIdentifier+ AND h.dimensionspacepointhash = :dimensionSpacePointHash+ -- find only nodes which have their ORIGIN at the source DimensionSpacePoint,+ -- as we need to rewrite these origins (using copy on write)+ AND n.origindimensionspacepointhash = :dimensionSpacePointHash+ ',+ [+ 'dimensionSpacePointHash' => $event->getSource()->getHash(),+ 'contentStreamIdentifier' => (string)$event->getContentStreamIdentifier()+ ]+ );+ while ($res = $rel->fetchAssociative()) {+ $relationAnchorPoint = NodeRelationAnchorPoint::fromString($res['relationanchorpoint']);+ $this->updateNodeRecordWithCopyOnWrite($event->getContentStreamIdentifier(), $relationAnchorPoint, function(NodeRecord $nodeRecord) use ($event) {+ $nodeRecord->originDimensionSpacePoint = $event->getTarget()->jsonSerialize();+ $nodeRecord->originDimensionSpacePointHash = $event->getTarget()->getHash();+ });+ }++ // 2) hierarchy relations+ $this->getDatabaseConnection()->executeStatement(+ '+ UPDATE neos_contentgraph_hierarchyrelation h+ SET+ h.dimensionspacepoint = :newDimensionSpacePoint,+ h.dimensionspacepointhash = :newDimensionSpacePointHash+ WHERE+ h.dimensionspacepointhash = :originalDimensionSpacePointHash+ AND h.contentstreamidentifier = :contentStreamIdentifier+ ',+ [+ 'originalDimensionSpacePointHash' => $event->getSource()->getHash(),+ 'newDimensionSpacePointHash' => $event->getTarget()->getHash(),+ 'newDimensionSpacePoint' => json_encode($event->getTarget()->jsonSerialize()),+ 'contentStreamIdentifier' => (string)$event->getContentStreamIdentifier()+ ]+ );++ // 3) restriction relations+ $this->getDatabaseConnection()->executeStatement(+ '+ UPDATE neos_contentgraph_restrictionrelation r+ SET+ r.dimensionspacepointhash = :newDimensionSpacePointHash+ WHERE+ r.dimensionspacepointhash = :originalDimensionSpacePointHash+ AND r.contentstreamidentifier = :contentStreamIdentifier+ ',+ [+ 'originalDimensionSpacePointHash' => $event->getSource()->getHash(),+ 'newDimensionSpacePointHash' => $event->getTarget()->getHash(),+ 'contentStreamIdentifier' => (string)$event->getContentStreamIdentifier()+ ]+ );++ // TODO: Routing Projection!++ });+ }++ public function whenDimensionShineThroughWasAdded(ContentRepository\Context\DimensionSpace\Event\DimensionShineThroughWasAdded $event)+ {+ $this->transactional(function () use ($event) {+ // 1) hierarchy relations+ $this->getDatabaseConnection()->executeStatement(+ '+ INSERT INTO neos_contentgraph_hierarchyrelation (+ parentnodeanchor,+ childnodeanchor,+ `name`,+ position,+ dimensionspacepoint,+ dimensionspacepointhash,+ contentstreamidentifier+ )+ SELECT+ h.parentnodeanchor,+ h.childnodeanchor,+ h.name,+ h.position,+ :newDimensionSpacePoint AS dimensionspacepoint,+ :newDimensionSpacePointHash AS dimensionspacepointhash,+ h.contentstreamidentifier+ FROM+ neos_contentgraph_hierarchyrelation h+ WHERE h.contentstreamidentifier = :contentStreamIdentifier+ AND h.dimensionspacepointhash = :sourceDimensionSpacePointHash',+ [+ 'contentStreamIdentifier' => $event->getContentStreamIdentifier()->jsonSerialize(),+ 'sourceDimensionSpacePointHash' => $event->getSource()->getHash(),+ 'newDimensionSpacePointHash' => $event->getTarget()->getHash(),+ 'newDimensionSpacePoint' => json_encode($event->getTarget()->jsonSerialize()),+ ]+ );++ // 2) restriction relations+ $this->getDatabaseConnection()->executeUpdate('+ INSERT INTO neos_contentgraph_restrictionrelation (+ contentstreamidentifier,+ dimensionspacepointhash,+ originnodeaggregateidentifier,+ affectednodeaggregateidentifier+ )+ SELECT+ r.contentstreamidentifier,+ :targetDimensionSpacePointHash,+ r.originnodeaggregateidentifier,+ r.affectednodeaggregateidentifier+ FROM+ neos_contentgraph_restrictionrelation r+ WHERE r.contentstreamidentifier = :contentStreamIdentifier+ AND r.dimensionspacepointhash = :sourceDimensionSpacePointHash++ ', [+ 'contentStreamIdentifier' => (string)$event->getContentStreamIdentifier(),+ 'sourceDimensionSpacePointHash' => (string)$event->getSource()->getHash(),+ 'targetDimensionSpacePointHash' => (string)$event->getTarget()->getHash()+ ]);++ // TODO: Routing Projection!
I believe this has been already implemented. need to checka gain
comment created time in 7 days
Pull request review commentneos/contentrepository-development-collection
protected function updateNodeRecordWithCopyOnWrite(ContentStreamIdentifier $cont } return $result; }++ protected function copyReferenceRelations(NodeRelationAnchorPoint $sourceRelationAnchorPoint, NodeRelationAnchorPoint $destinationRelationAnchorPoint): void+ {+ $this->getDatabaseConnection()->executeStatement('+ INSERT INTO neos_contentgraph_referencerelation (+ nodeanchorpoint,+ name,+ position,+ destinationnodeaggregateidentifier+ )+ SELECT+ "' . (string)$destinationRelationAnchorPoint . '" AS nodeanchorpoint,+ ref.name,+ ref.position,+ ref.destinationnodeaggregateidentifier+ FROM+ neos_contentgraph_referencerelation ref+ WHERE ref.nodeanchorpoint = :sourceNodeAnchorPoint+ ', [+ 'sourceNodeAnchorPoint' => (string)$sourceRelationAnchorPoint+ ]);+ }++ public function whenDimensionSpacePointWasMoved(DimensionSpacePointWasMoved $event)+ {+ $this->transactional(function () use ($event) {+ // the ordering is important - we first update the OriginDimensionSpacePoints, as we need the+ // hierarchy relations for this query. Then, we update the Hierarchy Relations.++ // 1) originDimensionSpacePoint on Node+ $rel = $this->getDatabaseConnection()->executeQuery(+ 'SELECT n.relationanchorpoint, n.origindimensionspacepointhash FROM neos_contentgraph_node n+ INNER JOIN neos_contentgraph_hierarchyrelation h ON h.childnodeanchor = n.relationanchorpoint++ AND h.contentstreamidentifier = :contentStreamIdentifier+ AND h.dimensionspacepointhash = :dimensionSpacePointHash+ -- find only nodes which have their ORIGIN at the source DimensionSpacePoint,+ -- as we need to rewrite these origins (using copy on write)+ AND n.origindimensionspacepointhash = :dimensionSpacePointHash+ ',+ [+ 'dimensionSpacePointHash' => $event->getSource()->getHash(),+ 'contentStreamIdentifier' => (string)$event->getContentStreamIdentifier()+ ]+ );+ while ($res = $rel->fetchAssociative()) {+ $relationAnchorPoint = NodeRelationAnchorPoint::fromString($res['relationanchorpoint']);+ $this->updateNodeRecordWithCopyOnWrite($event->getContentStreamIdentifier(), $relationAnchorPoint, function(NodeRecord $nodeRecord) use ($event) {+ $nodeRecord->originDimensionSpacePoint = $event->getTarget()->jsonSerialize();+ $nodeRecord->originDimensionSpacePointHash = $event->getTarget()->getHash();+ });+ }++ // 2) hierarchy relations+ $this->getDatabaseConnection()->executeStatement(+ '+ UPDATE neos_contentgraph_hierarchyrelation h+ SET+ h.dimensionspacepoint = :newDimensionSpacePoint,+ h.dimensionspacepointhash = :newDimensionSpacePointHash+ WHERE+ h.dimensionspacepointhash = :originalDimensionSpacePointHash+ AND h.contentstreamidentifier = :contentStreamIdentifier+ ',+ [+ 'originalDimensionSpacePointHash' => $event->getSource()->getHash(),+ 'newDimensionSpacePointHash' => $event->getTarget()->getHash(),+ 'newDimensionSpacePoint' => json_encode($event->getTarget()->jsonSerialize()),+ 'contentStreamIdentifier' => (string)$event->getContentStreamIdentifier()+ ]+ );++ // 3) restriction relations+ $this->getDatabaseConnection()->executeStatement(+ '+ UPDATE neos_contentgraph_restrictionrelation r+ SET+ r.dimensionspacepointhash = :newDimensionSpacePointHash+ WHERE+ r.dimensionspacepointhash = :originalDimensionSpacePointHash+ AND r.contentstreamidentifier = :contentStreamIdentifier+ ',+ [+ 'originalDimensionSpacePointHash' => $event->getSource()->getHash(),+ 'newDimensionSpacePointHash' => $event->getTarget()->getHash(),+ 'contentStreamIdentifier' => (string)$event->getContentStreamIdentifier()+ ]+ );++ // TODO: Routing Projection!++ });+ }++ public function whenDimensionShineThroughWasAdded(ContentRepository\Context\DimensionSpace\Event\DimensionShineThroughWasAdded $event)+ {+ $this->transactional(function () use ($event) {+ // 1) hierarchy relations+ $this->getDatabaseConnection()->executeStatement(+ '+ INSERT INTO neos_contentgraph_hierarchyrelation (+ parentnodeanchor,+ childnodeanchor,+ `name`,+ position,+ dimensionspacepoint,+ dimensionspacepointhash,+ contentstreamidentifier+ )+ SELECT+ h.parentnodeanchor,+ h.childnodeanchor,+ h.name,+ h.position,+ :newDimensionSpacePoint AS dimensionspacepoint,+ :newDimensionSpacePointHash AS dimensionspacepointhash,+ h.contentstreamidentifier+ FROM+ neos_contentgraph_hierarchyrelation h+ WHERE h.contentstreamidentifier = :contentStreamIdentifier+ AND h.dimensionspacepointhash = :sourceDimensionSpacePointHash',+ [+ 'contentStreamIdentifier' => $event->getContentStreamIdentifier()->jsonSerialize(),+ 'sourceDimensionSpacePointHash' => $event->getSource()->getHash(),+ 'newDimensionSpacePointHash' => $event->getTarget()->getHash(),+ 'newDimensionSpacePoint' => json_encode($event->getTarget()->jsonSerialize()),+ ]+ );++ // 2) restriction relations+ $this->getDatabaseConnection()->executeUpdate('+ INSERT INTO neos_contentgraph_restrictionrelation (+ contentstreamidentifier,+ dimensionspacepointhash,+ originnodeaggregateidentifier,+ affectednodeaggregateidentifier+ )+ SELECT+ r.contentstreamidentifier,+ :targetDimensionSpacePointHash,+ r.originnodeaggregateidentifier,+ r.affectednodeaggregateidentifier+ FROM+ neos_contentgraph_restrictionrelation r+ WHERE r.contentstreamidentifier = :contentStreamIdentifier+ AND r.dimensionspacepointhash = :sourceDimensionSpacePointHash++ ', [+ 'contentStreamIdentifier' => (string)$event->getContentStreamIdentifier(),+ 'sourceDimensionSpacePointHash' => (string)$event->getSource()->getHash(),+ 'targetDimensionSpacePointHash' => (string)$event->getTarget()->getHash()+ ]);++ // TODO: Routing Projection!
TODO is relevant!
comment created time in 7 days
Pull request review commentneos/contentrepository-development-collection
private function connectNodeWithSiblings(DocumentNodeInfo $node, NodeAggregateId 'succeedingNodeAggregateIdentifier' => $newSucceedingNodeAggregateIdentifier, ]); }+++ public function whenDimensionSpacePointWasMoved(DimensionSpacePointWasMoved $event)+ {+ $this->updateNodeQuery(+ 'SET dimensionspacepointhash = :newDimensionSpacePointHash WHERE dimensionspacepointhash = :originalDimensionSpacePointHash', [+ 'originalDimensionSpacePointHash' => $event->getSource()->getHash(),+ 'newDimensionSpacePointHash' => $event->getTarget()->getHash(),+ 'contentStreamIdentifier' => (string)$event->getContentStreamIdentifier()+ // TODO: contentStreamIdentifier restriction HOW?+ ]);++ $this->updateNodeQuery(+ 'SET origindimensionspacepointhash = :newDimensionSpacePointHash WHERE origindimensionspacepointhash = :originalDimensionSpacePointHash', [+ 'originalDimensionSpacePointHash' => $event->getSource()->getHash(),+ 'newDimensionSpacePointHash' => $event->getTarget()->getHash(),+ 'contentStreamIdentifier' => (string)$event->getContentStreamIdentifier()+ // TODO: contentStreamIdentifier restriction HOW?
what did I mean with that? :)
comment created time in 7 days