Skip to content

Instantly share code, notes, and snippets.

Working from home

Bastian Waidelich bwaidelich

Working from home
View GitHub Profile
bwaidelich / Root.fusion
Created Jan 15, 2019
Atomic Fusion: Content with TOC
View Root.fusion
prototype(Some.Package:Component.ContentWithToc) < prototype(Neos.Fusion:Component) {
blocks = Neos.Fusion:RawArray
renderer = afx`
<Neos.Fusion:Collection collection={props.blocks} itemName="block" @children="itemRenderer">
<a href={'#c-' + iterator.cycle}>{block.label}</a>
bwaidelich / MainMenuItems.fusion
Created Jan 4, 2019
Fusion based Menu implementation for Neos CMS
View MainMenuItems.fusion
prototype(Some.Package:MainMenuItems) < prototype(Neos.Fusion:Component) {
renderer = Neos.Fusion:RawCollection {
collection = ${q(site).children('[instanceof Neos.Neos:Document]').get()}
@context.rootline = ${q(documentNode).parents('[instanceof Neos.Neos:Document]').get()}
itemName = 'node'
itemRenderer = Some.Package:Component.Organism.Menu.Item {
title = ${q(node).property('title')}
href = Neos.Neos:NodeUri {
node = ${node}
bwaidelich / Component_Atom_DefaultElement.fusion
Last active Jul 17, 2019
Atomic Fusion based Form Definition
View Component_Atom_DefaultElement.fusion
prototype(My.Package:Form.DefaultElement) < prototype(Neos.Fusion:Component) {
id = ''
name = ''
label = ''
value = null
isRequired = false
properties = Neos.Fusion:RawArray
validationErrors = Neos.Fusion:RawArray
bwaidelich / rollyourown.php
Created Jun 7, 2018 — forked from mathiasverraes/rollyourown.php
We don't need no DIC libs / we don't need no deps control
View rollyourown.php
// Context: I'm trying to argue that DI (and DIC) are great, and DIC libs suck.
// Happy to be proven wrong!
final class Router {
private $dependencies;
public function __construct (Dependencies $dependencies) {
$this->dependencies = $dependencies;
// You might say that this is Service Locator, but it's not. This router is toplevel,
// and toplevel must have access to dependencies. After that it can all just bubble nicely using proper DI.
bwaidelich / Routes.yaml
Created May 11, 2018
Neos Flow routing "remaining URL segments"
View Routes.yaml
uriPattern: '{@action}/{segments}.html'
'@package': 'Some.Package'
'@controller': 'SomeController'
'@action': 'index'
'@format': 'html'
handler: 'Some\Package\Routing\SegmentsRoutePart'
bwaidelich / SomeCommandController.php
Created Mar 13, 2018
Neos Flow CLI Command to process entities in batches
View SomeCommandController.php
namespace Some\Package\Command;
use Neos\Flow\Annotations as Flow;
use Neos\Flow\Cli\CommandController;
class SomeCommand extends CommandController
bwaidelich / ExampleEvent.php
Created Jun 1, 2017
Flow EventSourcing: Use Value Objects as Event Payload / ReadModel primary keys
View ExampleEvent.php
namespace Some\Package
use Neos\EventSourcing\Event\EventInterface;
final class ExampleEvent implements EventInterface
* @var UserId
bwaidelich / FacetViewHelper.php
Created Mar 31, 2017
Simple ViewHelper to create facet filter links (without filling up the Routing Cache) Raw
View FacetViewHelper.php
namespace Wwwision\Test\ViewHelpers\Link;
use Neos\FluidAdaptor\Core\ViewHelper\AbstractTagBasedViewHelper;
use Neos\FluidAdaptor\Core\ViewHelper;
* Simple ViewHelper to create facet filter links
* Usage:
bwaidelich / SimpleTemplateView.php
Created Oct 20, 2016
Very simple Template View for Neos Flow
View SimpleTemplateView.php
namespace Some\Package\View;
use TYPO3\Flow\Mvc\View\AbstractView;
use TYPO3\Flow\Reflection\ObjectAccess;
class SimpleTemplateView extends AbstractView
* @var array
bwaidelich / ActionIfGrantedViewHelper.php
Created Jun 15, 2016
A simple Neos Flow ViewHelper that only renders an action link if the target action is granted by the currently authenticated account. Otherwise it will only render the link text
View ActionIfGrantedViewHelper.php
namespace Your\Package\ViewHelpers\Link;
use TYPO3\Flow\Annotations as Flow;
use TYPO3\Flow\Aop\JoinPoint;
use TYPO3\Flow\Mvc\ActionRequest;
use TYPO3\Flow\Security\Authorization\Privilege\Method\MethodPrivilegeInterface;
use TYPO3\Flow\Security\Authorization\Privilege\Method\MethodPrivilegeSubject;
use TYPO3\Flow\Security\Authorization\PrivilegeManagerInterface;
use TYPO3\Fluid\ViewHelpers\Link\ActionViewHelper;
You can’t perform that action at this time.