Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
01d4b86
updated mpdf to 8.2 (requires php 8.0 now)
splitbrain Sep 2, 2025
c5c184f
first start at refactoring
splitbrain Nov 17, 2025
b883aec
add toc handling
splitbrain Nov 17, 2025
1d334a8
handle debug writing
splitbrain Nov 17, 2025
8c4b141
remove a few now unused methods
splitbrain Nov 17, 2025
081fc33
Handle styles
splitbrain Nov 17, 2025
2bef96e
move page collecting into separate classes
splitbrain Nov 20, 2025
ac65d8f
remove some moved methods
splitbrain Nov 20, 2025
6afd336
remove obsolete template event
splitbrain Nov 20, 2025
293d84e
more refactoring
splitbrain Nov 24, 2025
0eefd8f
decouple renderer
splitbrain Nov 25, 2025
ab12f14
removed more obsolete methods from action plugin
splitbrain Nov 25, 2025
f77f381
fixed issues from first real run
splitbrain Nov 26, 2025
decfd8d
extract $INPUT dependencies out of Collector classes
splitbrain Nov 26, 2025
4c3a95e
reimplement ImageProcessor differently
splitbrain Nov 26, 2025
38ca8b2
updated tests for Media resolving
splitbrain Nov 26, 2025
c617724
update general test
splitbrain Nov 26, 2025
8f1c137
removed unneeded custom exception
splitbrain Nov 26, 2025
bbcdb3f
rewrite internal links. implements #526
splitbrain Nov 26, 2025
4526935
address some of the remaining FIXMEs
splitbrain Nov 26, 2025
5eabda9
fix additional blank page at the end
splitbrain Nov 26, 2025
b706c93
fixed remaining sort test
splitbrain Nov 26, 2025
32d393a
have collectors check for page existance
splitbrain Nov 26, 2025
b23d7b8
for exporting single pages do not rely on $ID
splitbrain Nov 26, 2025
9220075
Added tests
splitbrain Nov 26, 2025
5340eaf
rector and codesnifffer fixes
splitbrain Nov 26, 2025
fbe4e9d
remove obsolete book chapter handling in action
splitbrain Nov 26, 2025
7002812
extracted PDF generation and sending out of action
splitbrain Nov 26, 2025
7542e5b
some minor fixes based on PR feedback
splitbrain Nov 27, 2025
01a7083
Use attributes in config class to denote how to initialize them
splitbrain Nov 27, 2025
f200011
make PdfExportService reusable in debug mode
splitbrain Nov 27, 2025
a9e9f33
introduce a first test for rendering - testing numbered headlines
splitbrain Nov 27, 2025
bee95f0
Overhaul chapter/header counting in renderer
splitbrain Nov 27, 2025
b08d547
pass the Config object into the renderer
splitbrain Nov 27, 2025
c124fc5
Some more tests testing rendering functionality
splitbrain Nov 28, 2025
212a1ea
fix config attrbutes and extend tests
splitbrain Nov 28, 2025
837fcad
update MPDF downgrade log/psr
splitbrain Dec 2, 2025
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
113 changes: 0 additions & 113 deletions DokuImageProcessorDecorator.php

This file was deleted.

96 changes: 0 additions & 96 deletions DokuPDF.class.php

This file was deleted.

104 changes: 0 additions & 104 deletions _test/ActionPagenameSortTest.php

This file was deleted.

54 changes: 54 additions & 0 deletions _test/BookCreatorLiveSelectionCollectorTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
<?php

namespace dokuwiki\plugin\dw2pdf\test;

use dokuwiki\plugin\dw2pdf\src\BookCreatorLiveSelectionCollector;
use dokuwiki\plugin\dw2pdf\src\Config;
use DokuWikiTest;

/**
* @group plugin_dw2pdf
* @group plugins
*/
class BookCreatorLiveSelectionCollectorTest extends DokuWikiTest
{
public function setUp(): void
{
parent::setUp();
$_REQUEST = [];
}

/**
* Live selections should be decoded and normalized via cleanID().
*/
public function testCollectsPagesFromJsonSelection(): void
{
global $INPUT;
$pageA = 'playground:bookcreator:a';
$pageB = 'playground:bookcreator:Child';
$pageC = 'playground:bookcreator:nonexistent';
saveWikiText($pageA, 'A', 'create');
saveWikiText($pageB, 'B', 'create');

// page B has mixed case to test cleanID()
$INPUT->set('selection', json_encode([$pageA, $pageB, $pageC])); // page B has mixed case to test cleanID()

$collector = new BookCreatorLiveSelectionCollector(new Config());
$this->assertSame(
[$pageA, 'playground:bookcreator:child'], // page C should be skipped as it does not exist
$collector->getPages()
);
}

/**
* Invalid JSON payloads must bubble up as JsonException so the caller can handle them.
*/
public function testThrowsOnInvalidJson(): void
{
global $INPUT;
$INPUT->set('selection', '{invalid');

$this->expectException(\JsonException::class);
new BookCreatorLiveSelectionCollector(new Config());
}
}
Loading