Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 4 additions & 10 deletions src/ConfigProvider.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,9 @@

namespace GemsRandomizer;

use Gems\Handlers\EmptyHandler;
use Gems\Route\ModelSnippetActionRouteHelpers;
use Gems\Util\RouteGroupTrait;
use GemsRandomizer\Handlers\RandomizationAssignmentHandler;
use GemsRandomizer\Handlers\RandomizationHandler;
use GemsRandomizer\Handlers\RandomizationStrataHandler;
use GemsRandomizer\Handlers\RandomizationStudyHandler;
Expand Down Expand Up @@ -44,14 +44,8 @@ public function getRoutes()
'middleware' => \Gems\Config\Route::$loggedInMiddleware,
],
[
...$this->createRoute(
name: 'track-builder.randomization',
path: '/track-builder/randomization',
middleware: [
EmptyHandler::class,
],
),
...$this->createHandlerRoute(baseName: 'track-builder.randomization.assignments', controllerClass: RandomizationHandler::class),
...$this->createHandlerRoute(baseName: 'track-builder.randomization', controllerClass: RandomizationHandler::class),
...$this->createHandlerRoute(baseName: 'track-builder.randomization.assignments', controllerClass: RandomizationAssignmentHandler::class),
...$this->createHandlerRoute(baseName: 'track-builder.randomization.studies', controllerClass: RandomizationStudyHandler::class),
...$this->createSnippetRoutes(baseName: 'track-builder.randomization.strata', controllerClass: RandomizationStrataHandler::class),
...$this->createHandlerRoute(baseName: 'track-builder.randomization.values', controllerClass: RandomizationValueHandler::class),
Expand All @@ -75,4 +69,4 @@ protected function getMigrations(): array
];
}

}
}
60 changes: 60 additions & 0 deletions src/Handlers/RandomizationAssignmentHandler.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
<?php

declare(strict_types=1);

/**
* @package GemsRandomizer
* @subpackage GemsRandomizer\Handlers
* @author Matijs de Jong <mjong@magnafacta.nl>
*/

namespace GemsRandomizer\Handlers;

use Gems\Handlers\CsrfHandlerTrait;
use GemsRandomizer\Handlers\RandomizationHandlerAbstract;
use Zalt\Model\MetaModellerInterface;
use Zalt\SnippetsActions\PostActionInterface;
use Zalt\SnippetsActions\SnippetActionInterface;

/**
* @package GemsRandomizer
* @subpackage GemsRandomizer\Handlers
* @since Class available since version 2.0
*/
class RandomizationAssignmentHandler extends RandomizationHandlerAbstract
{
use CsrfHandlerTrait;

public static array $parameters = [
'id' => '[a-zA-Z0-9-_]+',
];

/**
* @inheritDoc
*/
protected function createModel($detailed, $action)
{
return $this->randomUtil->createBlockModel($detailed, $action);
}

protected function getModel(SnippetActionInterface $action): MetaModellerInterface
{
if (!$this->model) {
$this->model = $this->createModel(false, $action);
}
return $this->model;
}

public function prepareAction(SnippetActionInterface $action): void
{
parent::prepareAction($action);

if ($action instanceof PostActionInterface) {
// Check if properties exist like we do in gemstracker/src/Handlers/GemsHandler.php
if (property_exists($action, 'csrfName') && property_exists($action, 'csrfToken')) {
$action->csrfName = $this->getCsrfTokenName();
$action->csrfToken = $this->getCsrfToken($action->csrfName);
}
}
}
}
46 changes: 7 additions & 39 deletions src/Handlers/RandomizationHandler.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,51 +10,19 @@

namespace GemsRandomizer\Handlers;

use Gems\Handlers\CsrfHandlerTrait;
use GemsRandomizer\Handlers\RandomizationHandlerAbstract;
use Zalt\Model\MetaModellerInterface;
use Zalt\SnippetsActions\PostActionInterface;
use Zalt\SnippetsActions\SnippetActionInterface;
use Gems\Handlers\EmptyHandler;
use Zalt\SnippetsActions\Browse\BrowseTableAction;

/**
* @package GemsRandomizer
* @subpackage GemsRandomizer\Handlers
* @since Class available since version 2.0
*/
class RandomizationHandler extends RandomizationHandlerAbstract
class RandomizationHandler extends EmptyHandler
{
use CsrfHandlerTrait;

public static array $parameters = [
'id' => '[a-zA-Z0-9-_]+',
public static $actions = [
'index' => BrowseTableAction::class,
];

/**
* @inheritDoc
*/
protected function createModel($detailed, $action)
{
return $this->randomUtil->createBlockModel($detailed, $action);
}

protected function getModel(SnippetActionInterface $action): MetaModellerInterface
{
if (!$this->model) {
$this->model = $this->createModel(false, $action);
}
return $this->model;
}

public function prepareAction(SnippetActionInterface $action): void
{
parent::prepareAction($action);

if ($action instanceof PostActionInterface) {
// Check if properties exist like we do in gemstracker/src/Handlers/GemsHandler.php
if (property_exists($action, 'csrfName') && property_exists($action, 'csrfToken')) {
$action->csrfName = $this->getCsrfTokenName();
$action->csrfToken = $this->getCsrfToken($action->csrfName);
}
}
}
}
public static array $parameters = [];
}
14 changes: 8 additions & 6 deletions src/ModuleSubscriber.php
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
use Gems\Event\Application\ZendTranslateEvent;
use Gems\Handlers\EmptyHandler;
use Gems\Menu\HandlerMenuTrait;
use GemsRandomizer\Handlers\RandomizationAssignmentHandler;
use GemsRandomizer\Handlers\RandomizationHandler;
use GemsRandomizer\Handlers\RandomizationStrataHandler;
use GemsRandomizer\Handlers\RandomizationStudyHandler;
Expand Down Expand Up @@ -96,28 +97,29 @@ public function updateMenu(CreateMenuEvent $event)
$menu = $event->getMenu();

$menuConfig = [
$this->createMenuItem(
$this->createMenuForHandler(
controllerClass: RandomizationHandler::class,
name: 'track-builder.randomization',
label: $this->_('Block randomization'),
parent: 'track-builder',
),
$this->createMenuForHandler(
controllerClass: RandomizationHandler::class,
controllerClass: RandomizationAssignmentHandler::class,
name: 'track-builder.randomization.assignments',
label: $this->_('Assignments'),
parent: 'track-builder.randomization',
parent: 'track-builder.randomization.index',
),
$this->createMenuForHandler(
controllerClass: RandomizationStudyHandler::class,
name: 'track-builder.randomization.studies',
label: $this->_('Studies'),
parent: 'track-builder.randomization',
parent: 'track-builder.randomization.index',
),
[
'name' => 'track-builder.randomization.strata.index',
'label' => $this->translate->trans('Conditions'),
'type' => 'route-link-item',
'parent' => 'track-builder.randomization',
'parent' => 'track-builder.randomization.index',
'children' => [
[
'name' => 'track-builder.randomization.strata.create',
Expand Down Expand Up @@ -147,7 +149,7 @@ public function updateMenu(CreateMenuEvent $event)
controllerClass: RandomizationValueHandler::class,
name: 'track-builder.randomization.values',
label: $this->_('Values'),
parent: 'track-builder.randomization',
parent: 'track-builder.randomization.index',
),
];

Expand Down
10 changes: 0 additions & 10 deletions src/Tracker/Field/RandomizationField.php
Original file line number Diff line number Diff line change
Expand Up @@ -33,16 +33,6 @@
*/
class RandomizationField extends FieldAbstract
{
/**
* @var \Gems\Menu\Menu
*/
protected $menu;

/**
* @var \Zend_Controller_Request_Abstract
*/
protected $request;

public function __construct(
int $trackId,
string $fieldKey,
Expand Down