From aef7a0ba76ef774ea2731882870cb0800ce73398 Mon Sep 17 00:00:00 2001 From: antoine Date: Sun, 29 Jan 2017 14:34:19 +0100 Subject: [PATCH] add possibility to write w:evenAndOddHeaders in settings.xml --- src/PhpWord/Settings.php | 25 ++++++++++++++++++- src/PhpWord/Writer/Word2007/Part/Settings.php | 3 +++ tests/PhpWord/SettingsTest.php | 10 ++++++++ .../Writer/Word2007/Part/SettingsTest.php | 20 +++++++++++++++ 4 files changed, 57 insertions(+), 1 deletion(-) diff --git a/src/PhpWord/Settings.php b/src/PhpWord/Settings.php index e049c46e..3fbbb0a6 100644 --- a/src/PhpWord/Settings.php +++ b/src/PhpWord/Settings.php @@ -133,7 +133,14 @@ class Settings * @var bool */ private static $outputEscapingEnabled = false; - + + /** + * Enables different header for odd and even pages. + * + * @var bool + */ + private static $evenAndOddHeaders = false; + /** * Return the compatibility option used by the XMLWriter * @@ -340,6 +347,22 @@ class Settings self::$outputEscapingEnabled = $outputEscapingEnabled; } + /** + * @return boolean + */ + public static function isEvenAndOddHeaders() + { + return self::$evenAndOddHeaders; + } + + /** + * @param boolean $evenAndOddHeaders + */ + public static function setEvenAndOddHeaders($evenAndOddHeaders) + { + self::$evenAndOddHeaders = $evenAndOddHeaders; + } + /** * Get default font name * diff --git a/src/PhpWord/Writer/Word2007/Part/Settings.php b/src/PhpWord/Writer/Word2007/Part/Settings.php index d881e13a..82669f91 100644 --- a/src/PhpWord/Writer/Word2007/Part/Settings.php +++ b/src/PhpWord/Writer/Word2007/Part/Settings.php @@ -17,6 +17,8 @@ namespace PhpOffice\PhpWord\Writer\Word2007\Part; +use PhpOffice\PhpWord\Settings as DocumentSettings; + /** * Word2007 settings part writer: word/settings.xml * @@ -103,6 +105,7 @@ class Settings extends AbstractPart 'w:defaultTabStop' => array('@attributes' => array('w:val' => '708')), 'w:hyphenationZone' => array('@attributes' => array('w:val' => '425')), 'w:characterSpacingControl' => array('@attributes' => array('w:val' => 'doNotCompress')), + 'w:evenAndOddHeaders' => array('@attributes' => array('w:val' => DocumentSettings::isEvenAndOddHeaders() ? 'true': 'false')), 'w:themeFontLang' => array('@attributes' => array('w:val' => 'en-US')), 'w:decimalSymbol' => array('@attributes' => array('w:val' => '.')), 'w:listSeparator' => array('@attributes' => array('w:val' => ';')), diff --git a/tests/PhpWord/SettingsTest.php b/tests/PhpWord/SettingsTest.php index f5ac3ed6..764fccd4 100644 --- a/tests/PhpWord/SettingsTest.php +++ b/tests/PhpWord/SettingsTest.php @@ -114,6 +114,16 @@ class SettingsTest extends \PHPUnit_Framework_TestCase $this->assertFalse(Settings::setDefaultFontSize(null)); } + /** + * Test set/get even and odd headers + */ + public function testSetGetEvenAndOddHeaders() + { + $this->assertFalse(Settings::isEvenAndOddHeaders()); + Settings::setEvenAndOddHeaders(true); + $this->assertTrue(Settings::isEvenAndOddHeaders()); + } + /** * Test load config */ diff --git a/tests/PhpWord/Writer/Word2007/Part/SettingsTest.php b/tests/PhpWord/Writer/Word2007/Part/SettingsTest.php index 6ed23e44..be018f8c 100644 --- a/tests/PhpWord/Writer/Word2007/Part/SettingsTest.php +++ b/tests/PhpWord/Writer/Word2007/Part/SettingsTest.php @@ -18,6 +18,7 @@ namespace PhpOffice\PhpWord\Writer\Word2007\Part; use PhpOffice\PhpWord\PhpWord; use PhpOffice\PhpWord\TestHelperDOCX; +use PhpOffice\PhpWord\Settings; /** * Test class for PhpOffice\PhpWord\Writer\Word2007\Part\Settings @@ -66,4 +67,23 @@ class SettingsTest extends \PHPUnit_Framework_TestCase $this->assertTrue($doc->elementExists($path, $file)); $this->assertEquals($phpWord->getCompatibility()->getOoxmlVersion(), 15); } + + /** + * Test even and odd headers + */ + public function testEvenAndOddHeaders() + { + $phpWord = new PhpWord(); + Settings::setEvenAndOddHeaders(true); + + $doc = TestHelperDOCX::getDocument($phpWord); + + $file = 'word/settings.xml'; + + $path = '/w:settings/w:evenAndOddHeaders'; + $this->assertTrue($doc->elementExists($path, $file)); + + $element = $doc->getElement($path, $file); + $this->assertEquals('true', $element->getAttribute('w:val')); + } }