fix nested list

This commit is contained in:
troosan 2018-02-08 07:02:28 +01:00
parent 33739ea21c
commit 304173c4d7
2 changed files with 18 additions and 2 deletions

View File

@ -93,6 +93,13 @@ abstract class AbstractElement
*/ */
private $nestedLevel = 0; private $nestedLevel = 0;
/**
* A reference to the parent
*
* @var \PhpOffice\PhpWord\Element\AbstractElement
*/
private $parent;
/** /**
* Parent container type * Parent container type
* *
@ -321,6 +328,11 @@ abstract class AbstractElement
$this->commentRangeEnd->setEndElement($this); $this->commentRangeEnd->setEndElement($this);
} }
public function getParent()
{
return $this->parent;
}
/** /**
* Set parent container * Set parent container
* *
@ -331,6 +343,7 @@ abstract class AbstractElement
public function setParentContainer(AbstractElement $container) public function setParentContainer(AbstractElement $container)
{ {
$this->parentContainer = substr(get_class($container), strrpos(get_class($container), '\\') + 1); $this->parentContainer = substr(get_class($container), strrpos(get_class($container), '\\') + 1);
$this->parent = $container;
// Set nested level // Set nested level
$this->nestedLevel = $container->getNestedLevel(); $this->nestedLevel = $container->getNestedLevel();

View File

@ -366,7 +366,7 @@ class Html
*/ */
private static function shouldAddTextRun(\DOMNode $node) private static function shouldAddTextRun(\DOMNode $node)
{ {
$containsBlockElement = self::$xpath->query('.//table|./p|./ul|./li', $node)->length > 0; $containsBlockElement = self::$xpath->query('.//table|./p|./ul|./ol', $node)->length > 0;
if ($containsBlockElement) { if ($containsBlockElement) {
return false; return false;
} }
@ -402,7 +402,7 @@ class Html
*/ */
private static function parseList($node, $element, &$styles, &$data) private static function parseList($node, $element, &$styles, &$data)
{ {
$isOrderedList = $node->nodeName == 'ol'; $isOrderedList = $node->nodeName === 'ol';
if (isset($data['listdepth'])) { if (isset($data['listdepth'])) {
$data['listdepth']++; $data['listdepth']++;
} else { } else {
@ -410,6 +410,9 @@ class Html
$styles['list'] = 'listStyle_' . self::$listIndex++; $styles['list'] = 'listStyle_' . self::$listIndex++;
$element->getPhpWord()->addNumberingStyle($styles['list'], self::getListStyle($isOrderedList)); $element->getPhpWord()->addNumberingStyle($styles['list'], self::getListStyle($isOrderedList));
} }
if ($node->parentNode->nodeName === 'li') {
return $element->getParent();
}
} }
private static function getListStyle($isOrderedList) private static function getListStyle($isOrderedList)