Merge branch 'nestedtable' into develop
This commit is contained in:
commit
7d5c62ab34
|
|
@ -14,6 +14,7 @@ This release changed PHPWord license from LGPL 2.1 to LGPL 3.
|
|||
- TextBox: Ability to add table inside textbox - @basjan GH-231
|
||||
- HTML: Ability to add elements to PHPWord object via html - @basjan GH-231
|
||||
- ListItemRun: New element that can add a list item with inline formatting like a textrun - @basjan GH-235
|
||||
- Table: Ability to add table inside a cell (nested table) - @ivanlanin GH-149
|
||||
|
||||
### Bugfixes
|
||||
|
||||
|
|
|
|||
|
|
@ -84,6 +84,16 @@ $table->addCell(2000, $cellVCentered)->addText('C', null, $cellHCentered);
|
|||
$table->addCell(2000, $cellVCentered)->addText('D', null, $cellHCentered);
|
||||
$table->addCell(null, $cellRowContinue);
|
||||
|
||||
// 4. Nested table
|
||||
|
||||
$section->addTextBreak(2);
|
||||
$section->addText('Nested table', $header);
|
||||
|
||||
$cell = $section->addTable()->addRow()->addCell();
|
||||
$cell->addText('This cell contains nested table.');
|
||||
$innerCell = $cell->addTable()->addRow()->addCell();
|
||||
$innerCell->addText('Inside nested table');
|
||||
|
||||
// Save file
|
||||
echo write($phpWord, basename(__FILE__, '.php'), $writers);
|
||||
if (!CLI) {
|
||||
|
|
|
|||
|
|
@ -217,14 +217,14 @@ abstract class AbstractContainer extends AbstractElement
|
|||
public function addListItemRun($depth = 0, $fontStyle = null, $listStyle = null, $paragraphStyle = null)
|
||||
{
|
||||
$this->checkValidity('ListItemRun');
|
||||
|
||||
|
||||
$element = new ListItemRun($depth, $fontStyle, $listStyle, $paragraphStyle);
|
||||
$element->setDocPart($this->getDocPart(), $this->getDocPartId());
|
||||
$this->addElement($element);
|
||||
|
||||
|
||||
return $element;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Add table element
|
||||
*
|
||||
|
|
@ -374,8 +374,8 @@ abstract class AbstractContainer extends AbstractElement
|
|||
'Object' => $allContainers,
|
||||
'TextRun' => array('section', 'header', 'footer', 'cell', 'textbox'),
|
||||
'ListItem' => array('section', 'header', 'footer', 'cell', 'textbox'),
|
||||
'ListItemRun' => array('section', 'header', 'footer', 'cell', 'textbox'),
|
||||
'Table' => array('section', 'header', 'footer', 'textbox'),
|
||||
'ListItemRun' => array('section', 'header', 'footer', 'cell', 'textbox'),
|
||||
'Table' => array('section', 'header', 'footer', 'cell', 'textbox'),
|
||||
'CheckBox' => array('section', 'header', 'footer', 'cell'),
|
||||
'TextBox' => array('section', 'header', 'footer', 'cell'),
|
||||
'Footnote' => array('section', 'textrun', 'cell'),
|
||||
|
|
|
|||
|
|
@ -43,19 +43,23 @@ class Container extends AbstractElement
|
|||
$containerClass = substr(get_class($container), strrpos(get_class($container), '\\') + 1);
|
||||
$withoutP = in_array($containerClass, array('TextRun', 'Footnote', 'Endnote', 'ListItemRun')) ? true : false;
|
||||
|
||||
// Loop through subelements
|
||||
$subelements = $container->getElements();
|
||||
if (count($subelements) > 0) {
|
||||
foreach ($subelements as $subelement) {
|
||||
$writerClass = str_replace('PhpOffice\\PhpWord\\Element', $this->namespace, get_class($subelement));
|
||||
// Loop through elements
|
||||
$elements = $container->getElements();
|
||||
$elementClass = '';
|
||||
if (count($elements) > 0) {
|
||||
foreach ($elements as $element) {
|
||||
$elementClass = get_class($element);
|
||||
$writerClass = str_replace('PhpOffice\\PhpWord\\Element', $this->namespace, $elementClass);
|
||||
if (class_exists($writerClass)) {
|
||||
$writer = new $writerClass($xmlWriter, $subelement, $withoutP);
|
||||
$writer = new $writerClass($xmlWriter, $element, $withoutP);
|
||||
$writer->write();
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// Special case for Cell: They have to contain a TextBreak at least
|
||||
if ($containerClass == 'Cell') {
|
||||
}
|
||||
|
||||
// Special case for Cell: They have to contain a w:p element at the end
|
||||
if ($containerClass == 'Cell') {
|
||||
if ($elementClass == '' || $elementClass == 'PhpOffice\\PhpWord\\Element\\Table') {
|
||||
$writerClass = "{$this->namespace}\\TextBreak";
|
||||
$writer = new $writerClass($xmlWriter, new TextBreakElement(), $withoutP);
|
||||
$writer->write();
|
||||
|
|
|
|||
Loading…
Reference in New Issue