Skip to content

Commit a0917d0

Browse files
committed
Added debug module
1 parent a4cbf64 commit a0917d0

12 files changed

Lines changed: 306 additions & 0 deletions
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
name: "os2forms_fordelingskomponent_debug"
2+
type: module
3+
description: "os2forms_fordelingskomponent_debug"
4+
package: OS2Forms
5+
core_version_requirement: ^10 || ^11
6+
7+
dependencies:
8+
- os2forms_fordelingskomponent:os2forms_fordelingskomponent
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
os2forms_fordelingskomponent_debug.os2forms_fordelingskomponent_debug_forsendelse:
2+
title: "Fordelingskomponentforsendelser"
3+
route_name: os2forms_fordelingskomponent_debug.os2forms_fordelingskomponent_debug_forsendelse
4+
parent_id: entity.webform_submission.canonical
5+
weight: 999
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<?php
2+
3+
/**
4+
* @file
5+
* Module file for os2forms_fordelingskomponent_debug.
6+
*/
7+
8+
use Drupal\os2forms_fordelingskomponent_debug\Hook\ThemeHooks;
9+
10+
/**
11+
* Implements hook_theme().
12+
*/
13+
function os2forms_fordelingskomponent_debug_theme(array $existing, string $type, string $theme, string $path) : array {
14+
return \Drupal::service(ThemeHooks::class)->theme($existing, $type, $theme, $path);
15+
}
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
# Drupal does not seem to support using / in route parameters (cf. https://drupal.stackexchange.com/questions/175758/slashes-in-single-route-parameter-or-other-ways-to-handle-a-menu-tail-with-dynam)
2+
os2forms_fordelingskomponent_debug.os2forms_fordelingskomponent_debug_sftp:
3+
path: "/admin/os2forms-fordelingskomponent-debug/os2forms-fordelingskomponent-debug-sftp/{dir}"
4+
defaults: &defaults
5+
_title: "Fordelingskomponent SFTP"
6+
_controller: '\Drupal\os2forms_fordelingskomponent_debug\Controller\Os2formsFordelingskomponentDebugSftpController'
7+
dir: /
8+
methods: &methods
9+
- GET
10+
requirements: &requirements
11+
_permission: "administer site configuration"
12+
13+
os2forms_fordelingskomponent_debug.os2forms_fordelingskomponent_debug_sftp_filename:
14+
path: "/admin/os2forms-fordelingskomponent-debug/os2forms-fordelingskomponent-debug-sftp/{dir}/{filename}"
15+
defaults: *defaults
16+
methods: *methods
17+
requirements: *requirements
18+
19+
os2forms_fordelingskomponent_debug.os2forms_fordelingskomponent_debug_forsendelse:
20+
path: "/admin/structure/webform/manage/{webform}/submission/{webform_submission}/os2forms-fordelingskomponent-debug-forsendelse"
21+
defaults:
22+
_title: "Fordelingskomponentforsendelser"
23+
_controller: '\Drupal\os2forms_fordelingskomponent_debug\Controller\Os2formsFordelingskomponentDebugForsendelseController'
24+
methods: *methods
25+
requirements: *requirements
26+
options:
27+
parameters:
28+
webform:
29+
type: "entity:webform"
30+
webform_submission:
31+
type: "entity:webform_submission"
32+
33+
os2forms_fordelingskomponent_debug.os2forms_fordelingskomponent_debug_kvittering:
34+
path: "/admin/structure/webform/manage/{webform}/submission/{webform_submission}/os2forms-fordelingskomponent-debug-forsendelse/kvittering/{anvender_transaktions_id}"
35+
defaults:
36+
_title: "Fordelingskomponentkvitteringer"
37+
_controller: '\Drupal\os2forms_fordelingskomponent_debug\Controller\Os2formsFordelingskomponentDebugKvitteringController'
38+
methods: *methods
39+
requirements: *requirements
40+
options:
41+
parameters:
42+
webform:
43+
type: "entity:webform"
44+
webform_submission:
45+
type: "entity:webform_submission"
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
services:
2+
_defaults:
3+
autowire: true
4+
5+
Drupal\os2forms_fordelingskomponent_debug\Hook\ThemeHooks:
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace Drupal\os2forms_fordelingskomponent_debug\Controller;
6+
7+
use Drupal\Core\Controller\ControllerBase;
8+
use Drupal\os2forms_fordelingskomponent\Repository\AnvenderForsendelseRepository;
9+
use Drupal\os2forms_fordelingskomponent_debug\Hook\ThemeHooks;
10+
use Drupal\webform\WebformInterface;
11+
use Drupal\webform\WebformSubmissionInterface;
12+
13+
/**
14+
* Returns responses for os2forms_fordelingskomponent_debug routes.
15+
*/
16+
final class Os2formsFordelingskomponentDebugForsendelseController extends ControllerBase {
17+
18+
public function __construct(
19+
private readonly AnvenderForsendelseRepository $repository,
20+
) {
21+
}
22+
23+
/**
24+
* Builds the response.
25+
*/
26+
public function __invoke(WebformInterface $webform, WebformSubmissionInterface $webform_submission): array {
27+
$items = $this->repository->loadBySubmission($webform_submission);
28+
29+
return [
30+
'#theme' => ThemeHooks::FORSENDELSER,
31+
'#items' => $items,
32+
'#webform' => $webform,
33+
'#webform_submission' => $webform_submission,
34+
];
35+
}
36+
37+
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace Drupal\os2forms_fordelingskomponent_debug\Controller;
6+
7+
use Drupal\Core\Controller\ControllerBase;
8+
use Drupal\os2forms_fordelingskomponent\Repository\AnvenderKvitteringRepository;
9+
use Drupal\os2forms_fordelingskomponent_debug\Hook\ThemeHooks;
10+
use Drupal\webform\WebformInterface;
11+
use Drupal\webform\WebformSubmissionInterface;
12+
13+
/**
14+
* Returns responses for os2forms_fordelingskomponent_debug routes.
15+
*/
16+
final class Os2formsFordelingskomponentDebugKvitteringController extends ControllerBase {
17+
18+
public function __construct(
19+
private readonly AnvenderKvitteringRepository $repository,
20+
) {
21+
}
22+
23+
/**
24+
* Builds the response.
25+
*/
26+
public function __invoke(WebformInterface $webform, WebformSubmissionInterface $webform_submission, string $anvender_transaktions_id): array {
27+
$items = $this->repository->loadByAnvenderTransaktionsId($anvender_transaktions_id);
28+
29+
return [
30+
'#theme' => ThemeHooks::KVITTERINGER,
31+
'#items' => $items,
32+
];
33+
}
34+
35+
}
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace Drupal\os2forms_fordelingskomponent_debug\Controller;
6+
7+
use Drupal\Core\Controller\ControllerBase;
8+
use Drupal\os2forms_fordelingskomponent\Helper\FordelingskomponentHelper;
9+
use Drupal\os2forms_fordelingskomponent_debug\Hook\ThemeHooks;
10+
use Symfony\Component\DependencyInjection\Attribute\Autowire;
11+
use Symfony\Component\HttpFoundation\Response;
12+
use Symfony\Component\Mime\MimeTypeGuesserInterface;
13+
14+
/**
15+
* Returns responses for os2forms_fordelingskomponent_debug routes.
16+
*/
17+
final class Os2formsFordelingskomponentDebugSftpController extends ControllerBase {
18+
19+
public function __construct(
20+
private readonly FordelingskomponentHelper $helper,
21+
#[Autowire(service: 'file.mime_type.guesser')]
22+
private readonly MimeTypeGuesserInterface $mimeTypeGuesser,
23+
) {
24+
}
25+
26+
/**
27+
* Builds the response.
28+
*/
29+
public function __invoke(string $dir = '/', ?string $filename = NULL): array|Response {
30+
$path = $this->normalizePath(implode('/', array_filter([$dir, $filename])));
31+
32+
$sftp = $this->helper->sf2900()->sftp();
33+
34+
if (preg_match('/\.[^.]+$/', $path)) {
35+
$content = $sftp->getContents($filename, $dir);
36+
37+
$contentType = match(pathinfo($path, PATHINFO_EXTENSION)) {
38+
'sftpreceipt', 'trigger' => $this->mimeTypeGuesser->guessMimeType('name.xml'),
39+
default => $this->mimeTypeGuesser->guessMimeType($path)
40+
};
41+
42+
return new Response($content, Response::HTTP_OK, [
43+
'Content-Type' => $contentType,
44+
]);
45+
}
46+
else {
47+
$files = $sftp->getFiles($path);
48+
49+
// Filter out . and ..
50+
$files = array_filter($files, static fn (string $name) => !preg_match('/^\.+$/', $name));
51+
52+
$files = array_map(fn (string $name) => $this->normalizePath($path . '/' . $name), $files);
53+
54+
return [
55+
'#theme' => ThemeHooks::SFTP_FILES,
56+
'#files' => $files,
57+
'#parent_dir' => dirname($path),
58+
];
59+
}
60+
}
61+
62+
/**
63+
* Normalize file path.
64+
*/
65+
private function normalizePath(string $path): string {
66+
return '/' . trim(preg_replace('@/+@', '/', $path), '/');
67+
}
68+
69+
}
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
<?php
2+
3+
namespace Drupal\os2forms_fordelingskomponent_debug\Hook;
4+
5+
/**
6+
* Theme hook implementations.
7+
*/
8+
final class ThemeHooks {
9+
const string SFTP_FILES = 'os2forms_fordelingskomponent_debug_sftp_files';
10+
const string FORSENDELSER = 'os2forms_fordelingskomponent_debug_forsendelser';
11+
const string KVITTERINGER = 'os2forms_fordelingskomponent_debug_kvitteringer';
12+
13+
/**
14+
* Implements hook_theme().
15+
*/
16+
public function theme(array $existing, string $type, string $theme, string $path): array {
17+
{
18+
return [
19+
self::SFTP_FILES => [
20+
'variables' => [
21+
'files' => NULL,
22+
'parent_dir' => NULL,
23+
],
24+
],
25+
26+
self::FORSENDELSER => [
27+
'variables' => [
28+
'items' => NULL,
29+
'webform' => NULL,
30+
'webform_submission' => NULL,
31+
],
32+
],
33+
34+
self::KVITTERINGER => [
35+
'variables' => [
36+
'items' => NULL,
37+
],
38+
],
39+
];
40+
}
41+
}
42+
43+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
{# @var Drupal\os2forms_fordelingskomponent\Model\Fordelingskomponent\AnvenderForsendelse[] items #}
2+
<table>
3+
<thead>
4+
<tr>
5+
<th>anvenderTransaktionsId</th>
6+
<th>distributionTransaktionsId</th>
7+
<th>kvittering</th>
8+
<th>webform handlers</th>
9+
<th>createdAt</th>
10+
<th>updatedAt</th>
11+
<th>deliveredAt</th>
12+
</tr>
13+
</thead>
14+
<tbody>
15+
{% for item in items %}
16+
<tr>
17+
<td>{{ item.anvenderTransaktionsId }}</td>
18+
<td>{{ item.distributionTransaktionsId }}</td>
19+
<td><a href="{{ path('os2forms_fordelingskomponent_debug.os2forms_fordelingskomponent_debug_kvittering', {webform: item.webformId, webform_submission: item.webformSubmissionId, anvender_transaktions_id: item.anvenderTransaktionsId}) }}">kvittering</a></td>
20+
<td><a href="{{ path('entity.webform.handlers', {webform: item.webformId}) }}">webform handlers</a></td>
21+
<td>{{ item.createdAt|date('Y-m-d H:i:s') }}</td>
22+
<td>{{ item.updatedAt|date('Y-m-d H:i:s') }}</td>
23+
<td>{{ item.deliveredAt ? item.deliveredAt|date('Y-m-d H:i:s') : '' }}</td>
24+
</tr>
25+
{% endfor %}
26+
</tbody>
27+
</table>

0 commit comments

Comments
 (0)