Add maxheight for listings
Some checks failed
DokuWiki Default Tasks / all (push) Has been cancelled
Some checks failed
DokuWiki Default Tasks / all (push) Has been cancelled
This commit is contained in:
64
Output.php
64
Output.php
@@ -27,15 +27,11 @@ class Output
|
|||||||
|
|
||||||
public function renderAsList($params)
|
public function renderAsList($params)
|
||||||
{
|
{
|
||||||
if ($this->renderer instanceof \Doku_Renderer_xhtml) {
|
$this->openContainer($params);
|
||||||
$this->renderer->doc .= '<div class="filetools-plugin">';
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->renderListItems($this->files, $params);
|
$this->renderListItems($this->files, $params);
|
||||||
|
|
||||||
if ($this->renderer instanceof \Doku_Renderer_xhtml) {
|
$this->closeContainer();
|
||||||
$this->renderer->doc .= '</div>';
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -79,16 +75,12 @@ class Output
|
|||||||
*/
|
*/
|
||||||
public function renderAsTable($params)
|
public function renderAsTable($params)
|
||||||
{
|
{
|
||||||
if ($this->renderer instanceof \Doku_Renderer_xhtml) {
|
$this->openContainer($params);
|
||||||
$this->renderer->doc .= '<div class="filetools-plugin">';
|
|
||||||
}
|
|
||||||
|
|
||||||
$items = $this->flattenResultTree($this->files);
|
$items = $this->flattenResultTree($this->files);
|
||||||
$this->renderTableItems($items, $params);
|
$this->renderTableItems($items, $params);
|
||||||
|
|
||||||
if ($this->renderer instanceof \Doku_Renderer_xhtml) {
|
$this->closeContainer();
|
||||||
$this->renderer->doc .= '</div>';
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -99,15 +91,53 @@ class Output
|
|||||||
*/
|
*/
|
||||||
public function renderAsFlatTable($params)
|
public function renderAsFlatTable($params)
|
||||||
{
|
{
|
||||||
if ($this->renderer instanceof \Doku_Renderer_xhtml) {
|
$this->openContainer($params);
|
||||||
$this->renderer->doc .= '<div class="filetools-plugin">';
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->renderTableItems($this->files, $params);
|
$this->renderTableItems($this->files, $params);
|
||||||
|
|
||||||
if ($this->renderer instanceof \Doku_Renderer_xhtml) {
|
$this->closeContainer();
|
||||||
$this->renderer->doc .= '</div>';
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Open the wrapping container with an optional max-height and scroll behaviour.
|
||||||
|
*/
|
||||||
|
protected function openContainer($params): void
|
||||||
|
{
|
||||||
|
if (!($this->renderer instanceof \Doku_Renderer_xhtml)) {
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$style = $this->containerStyle($params);
|
||||||
|
$this->renderer->doc .= '<div class="filetools-plugin"' . $style . '>';
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Close the wrapping container if XHTML renderer is in use.
|
||||||
|
*/
|
||||||
|
protected function closeContainer(): void
|
||||||
|
{
|
||||||
|
if (!($this->renderer instanceof \Doku_Renderer_xhtml)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
$this->renderer->doc .= '</div>';
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Build the inline style attribute for the container based on the maxheight param.
|
||||||
|
*/
|
||||||
|
protected function containerStyle($params): string
|
||||||
|
{
|
||||||
|
if (!isset($params['maxheight'])) {
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
|
||||||
|
$maxHeight = (int)$params['maxheight'];
|
||||||
|
if ($maxHeight < 0) {
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
|
||||||
|
return ' style="max-height: ' . $maxHeight . 'px; overflow-y: auto;"';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -193,6 +193,33 @@ class plugin_luxtools_test extends DokuWikiTest
|
|||||||
$this->structureCheck($doc, $structure);
|
$this->structureCheck($doc, $structure);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function test_default_maxheight_applies_scroll()
|
||||||
|
{
|
||||||
|
$instructions = p_get_instructions('{{files>' . TMP_DIR . '/filelistdata/*&style=list&direct=1&recursive=1}}');
|
||||||
|
$xhtml = p_render('xhtml', $instructions, $info);
|
||||||
|
|
||||||
|
$doc = new Document();
|
||||||
|
$doc->html($xhtml);
|
||||||
|
|
||||||
|
$style = (string)$doc->find('div.filetools-plugin')->attr('style');
|
||||||
|
|
||||||
|
$this->assertStringContainsString('max-height: 500px', $style);
|
||||||
|
$this->assertStringContainsString('overflow-y: auto', $style);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function test_maxheight_can_be_disabled()
|
||||||
|
{
|
||||||
|
$instructions = p_get_instructions('{{files>' . TMP_DIR . '/filelistdata/*&style=table&direct=1&recursive=1&maxheight=-1}}');
|
||||||
|
$xhtml = p_render('xhtml', $instructions, $info);
|
||||||
|
|
||||||
|
$doc = new Document();
|
||||||
|
$doc->html($xhtml);
|
||||||
|
|
||||||
|
$style = $doc->find('div.filetools-plugin')->attr('style');
|
||||||
|
|
||||||
|
$this->assertTrue($style === null || $style === '');
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This function checks that the images syntax renders a thumbnail gallery.
|
* This function checks that the images syntax renders a thumbnail gallery.
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -139,6 +139,7 @@ abstract class syntax_plugin_luxtools_abstract extends SyntaxPlugin
|
|||||||
'showsize' => 0,
|
'showsize' => 0,
|
||||||
'showdate' => 0,
|
'showdate' => 0,
|
||||||
'listsep' => ', ',
|
'listsep' => ', ',
|
||||||
|
'maxheight' => 500,
|
||||||
];
|
];
|
||||||
|
|
||||||
// Merge with handler-specific defaults
|
// Merge with handler-specific defaults
|
||||||
|
|||||||
Reference in New Issue
Block a user