From 8f4f4dcd4840f4a1bfee768bc26a998c532cbb3c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Franti=C5=A1ek=20Ma=C5=A1a?= Date: Mon, 2 Sep 2019 18:13:10 +0200 Subject: [PATCH 1/3] Added return type --- src/PhpWord/Element/AbstractElement.php | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/PhpWord/Element/AbstractElement.php b/src/PhpWord/Element/AbstractElement.php index e3e54ed4..46372b71 100644 --- a/src/PhpWord/Element/AbstractElement.php +++ b/src/PhpWord/Element/AbstractElement.php @@ -96,7 +96,7 @@ abstract class AbstractElement /** * A reference to the parent * - * @var \PhpOffice\PhpWord\Element\AbstractElement + * @var AbstractElement|null */ private $parent; @@ -335,6 +335,11 @@ abstract class AbstractElement $this->commentRangeEnd->setEndElement($this); } + /** + * Get parent element + * + * @return AbstractElement|null + */ public function getParent() { return $this->parent; From 7628b41fdfa03a0fc499936ba41d280ebdad9146 Mon Sep 17 00:00:00 2001 From: Samuel BF <36996277+Samuel-BF@users.noreply.github.com> Date: Sat, 7 Sep 2019 21:55:33 +0200 Subject: [PATCH 2/3] Add support for basic fields in RTF writer. --- src/PhpWord/Writer/RTF/Element/Field.php | 80 ++++++++++++++++++++++++ tests/PhpWord/Writer/RTF/ElementTest.php | 38 ++++++++++- 2 files changed, 117 insertions(+), 1 deletion(-) create mode 100644 src/PhpWord/Writer/RTF/Element/Field.php diff --git a/src/PhpWord/Writer/RTF/Element/Field.php b/src/PhpWord/Writer/RTF/Element/Field.php new file mode 100644 index 00000000..e958e9de --- /dev/null +++ b/src/PhpWord/Writer/RTF/Element/Field.php @@ -0,0 +1,80 @@ +element; + if (!$element instanceof \PhpOffice\PhpWord\Element\Field) { + return; + } + + $this->getStyles(); + + $content = ''; + $content .= $this->writeOpening(); + $content .= '{'; + $content .= $this->writeFontStyle(); + + $methodName = 'write' . ucfirst(strtolower($element->getType())); + if (!method_exists($this, $methodName)) { + // Unsupported field + $content .= ''; + } else { + $content .= '\\field{\\*\\fldinst '; + $content .= $this->$methodName($element); + $content .= '}{\\fldrslt}'; + } + $content .= '}'; + $content .= $this->writeClosing(); + + return $content; + } + + protected function writePage() + { + return 'PAGE'; + } + + protected function writeNumpages() + { + return 'NUMPAGES'; + } + + protected function writeDate(\PhpOffice\PhpWord\Element\Field $element) + { + $content = ''; + $content .= 'DATE'; + $properties = $element->getProperties(); + if (isset($properties['dateformat'])) { + $content .= ' \\\\@ "' . $properties['dateformat'] . '"'; + } + + return $content; + } +} diff --git a/tests/PhpWord/Writer/RTF/ElementTest.php b/tests/PhpWord/Writer/RTF/ElementTest.php index 47630335..4b01bacf 100644 --- a/tests/PhpWord/Writer/RTF/ElementTest.php +++ b/tests/PhpWord/Writer/RTF/ElementTest.php @@ -29,7 +29,7 @@ class ElementTest extends \PHPUnit\Framework\TestCase */ public function testUnmatchedElements() { - $elements = array('Container', 'Text', 'Title', 'Link', 'Image', 'Table'); + $elements = array('Container', 'Text', 'Title', 'Link', 'Image', 'Table', 'Field'); foreach ($elements as $element) { $objectClass = 'PhpOffice\\PhpWord\\Writer\\RTF\\Element\\' . $element; $parentWriter = new RTF(); @@ -39,4 +39,40 @@ class ElementTest extends \PHPUnit\Framework\TestCase $this->assertEquals('', $object->write()); } } + + public function testPageField() + { + $parentWriter = new RTF(); + $element = new \PhpOffice\PhpWord\Element\Field('PAGE'); + $field = new \PhpOffice\PhpWord\Writer\RTF\Element\Field($parentWriter, $element); + + $this->assertEquals("{\\field{\\*\\fldinst PAGE}{\\fldrslt}}\\par\n", $field->write()); + } + + public function testNumpageField() + { + $parentWriter = new RTF(); + $element = new \PhpOffice\PhpWord\Element\Field('NUMPAGES'); + $field = new \PhpOffice\PhpWord\Writer\RTF\Element\Field($parentWriter, $element); + + $this->assertEquals("{\\field{\\*\\fldinst NUMPAGES}{\\fldrslt}}\\par\n", $field->write()); + } + + public function testDateField() + { + $parentWriter = new RTF(); + $element = new \PhpOffice\PhpWord\Element\Field('DATE', array('dateformat' => 'd MM yyyy H:mm:ss')); + $field = new \PhpOffice\PhpWord\Writer\RTF\Element\Field($parentWriter, $element); + + $this->assertEquals("{\\field{\\*\\fldinst DATE \\\\@ \"d MM yyyy H:mm:ss\"}{\\fldrslt}}\\par\n", $field->write()); + } + + public function testIndexField() + { + $parentWriter = new RTF(); + $element = new \PhpOffice\PhpWord\Element\Field('INDEX'); + $field = new \PhpOffice\PhpWord\Writer\RTF\Element\Field($parentWriter, $element); + + $this->assertEquals("{}\\par\n", $field->write()); + } } From b8346af548d399acd9e30fc76ab0c55c2fec03a5 Mon Sep 17 00:00:00 2001 From: troosan Date: Tue, 1 Oct 2019 22:43:33 +0200 Subject: [PATCH 3/3] update changelog for version 0.17 --- CHANGELOG.md | 21 ++++++++++++++++++--- composer.json | 2 +- docs/conf.py | 2 +- docs/installing.rst | 2 +- 4 files changed, 21 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 66271bae..5d55fa2b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,18 +3,33 @@ Change Log All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](http://semver.org/). -v0.17.0 (?? ??? 2019) +v0.17.0 (01 oct 2019) ---------------------- ### Added -- Add RightToLeft table presentation. @troosan #1550 +- Add methods setValuesFromArray and cloneRowFromArray to the TemplateProcessor @geraldb-nicat #670 - Set complex type in template @troosan #1565 +- implement support for section vAlign @troosan #1569 +- ParseStyle for border-color @Gllrm0 #1551 +- Html writer auto invert text color @SailorMax #1387 +- Add RightToLeft table presentation. @troosan #1550 - Add support for page vertical alignment. @troosan #672 #1569 +- Adding setNumId method for ListItem style @eweso #1329 +- Add support for basic fields in RTF writer. @Samuel-BF #1717 ### Fixed - Fix HTML border-color parsing. @troosan #1551 #1570 +- Language::validateLocale should pass with locale 'zxx'. @efpapado #1558 +- can't align center vertically with the text @ter987 #672 +- fix parsing of border-color and add test @troosan #1570 +- TrackChange doesn't handle all return types of \DateTime::createFromFormat(...) @superhaggis #1584 +- To support PreserveText inside sub container @bhattnishant #1637 +- No nested w:pPr elements in ListItemRun. @waltertamboer #1628 +- Ensure that entity_loader disable variable is re-set back to the original setting @seamuslee001 #1585 ### Miscellaneous -- Use embedded http server to test loading of remote images @troosan # +- Use embedded http server to test loading of remote images @troosan #1544 +- Change private to protected to be able extending class Html @SpinyMan #1646 +- Fix apt-get crash in Travis CI for PHP 5.3 @mdupont #1707 v0.16.0 (30 dec 2018) ---------------------- diff --git a/composer.json b/composer.json index bd57d6e3..f5f751ec 100644 --- a/composer.json +++ b/composer.json @@ -90,7 +90,7 @@ }, "extra": { "branch-alias": { - "dev-develop": "0.17-dev" + "dev-develop": "0.18-dev" } } } diff --git a/docs/conf.py b/docs/conf.py index d83c43f5..fdfe14ca 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -48,7 +48,7 @@ copyright = u'2014-2017, PHPWord Contributors' # built documents. # # The short X.Y version. -version = '0.16.0' +version = '0.17.0' # The full version, including alpha/beta/rc tags. release = version diff --git a/docs/installing.rst b/docs/installing.rst index 34353be8..2a9582d0 100644 --- a/docs/installing.rst +++ b/docs/installing.rst @@ -34,7 +34,7 @@ Example: { "require": { - "phpoffice/phpword": "v0.14.*" + "phpoffice/phpword": "v0.17.*" } }