Skip to content

Commit 304173c

Browse files
committed
fix nested list
1 parent 33739ea commit 304173c

File tree

2 files changed

+18
-2
lines changed

2 files changed

+18
-2
lines changed

src/PhpWord/Element/AbstractElement.php

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,13 @@ abstract class AbstractElement
9393
*/
9494
private $nestedLevel = 0;
9595

96+
/**
97+
* A reference to the parent
98+
*
99+
* @var \PhpOffice\PhpWord\Element\AbstractElement
100+
*/
101+
private $parent;
102+
96103
/**
97104
* Parent container type
98105
*
@@ -321,6 +328,11 @@ public function setCommentRangeEnd(Comment $value)
321328
$this->commentRangeEnd->setEndElement($this);
322329
}
323330

331+
public function getParent()
332+
{
333+
return $this->parent;
334+
}
335+
324336
/**
325337
* Set parent container
326338
*
@@ -331,6 +343,7 @@ public function setCommentRangeEnd(Comment $value)
331343
public function setParentContainer(AbstractElement $container)
332344
{
333345
$this->parentContainer = substr(get_class($container), strrpos(get_class($container), '\\') + 1);
346+
$this->parent = $container;
334347

335348
// Set nested level
336349
$this->nestedLevel = $container->getNestedLevel();

src/PhpWord/Shared/Html.php

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -366,7 +366,7 @@ private static function parseCell($node, $element, &$styles)
366366
*/
367367
private static function shouldAddTextRun(\DOMNode $node)
368368
{
369-
$containsBlockElement = self::$xpath->query('.//table|./p|./ul|./li', $node)->length > 0;
369+
$containsBlockElement = self::$xpath->query('.//table|./p|./ul|./ol', $node)->length > 0;
370370
if ($containsBlockElement) {
371371
return false;
372372
}
@@ -402,14 +402,17 @@ private static function recursiveParseStylesInHierarchy(\DOMNode $node, array $s
402402
*/
403403
private static function parseList($node, $element, &$styles, &$data)
404404
{
405-
$isOrderedList = $node->nodeName == 'ol';
405+
$isOrderedList = $node->nodeName === 'ol';
406406
if (isset($data['listdepth'])) {
407407
$data['listdepth']++;
408408
} else {
409409
$data['listdepth'] = 0;
410410
$styles['list'] = 'listStyle_' . self::$listIndex++;
411411
$element->getPhpWord()->addNumberingStyle($styles['list'], self::getListStyle($isOrderedList));
412412
}
413+
if ($node->parentNode->nodeName === 'li') {
414+
return $element->getParent();
415+
}
413416
}
414417

415418
private static function getListStyle($isOrderedList)

0 commit comments

Comments
 (0)