Merge branch 'support_for_xe_and_index_field' into develop
This commit is contained in:
commit
ee2dcddc6e
@ -60,7 +60,7 @@ class Field extends AbstractElement
|
||||
),
|
||||
'INDEX'=>array(
|
||||
'properties' => array(),
|
||||
'options'=>array('PreserveFormat')
|
||||
'options' => array('PreserveFormat')
|
||||
)
|
||||
);
|
||||
|
||||
@ -122,7 +122,7 @@ class Field extends AbstractElement
|
||||
if (isset($this->fieldsArray[$type])) {
|
||||
$this->type = $type;
|
||||
} else {
|
||||
throw new \InvalidArgumentException("Invalid type");
|
||||
throw new \InvalidArgumentException("Invalid type '$type'");
|
||||
}
|
||||
}
|
||||
return $this->type;
|
||||
@ -152,7 +152,7 @@ class Field extends AbstractElement
|
||||
if (is_array($properties)) {
|
||||
foreach (array_keys($properties) as $propkey) {
|
||||
if (!(isset($this->fieldsArray[$this->type]['properties'][$propkey]))) {
|
||||
throw new \InvalidArgumentException("Invalid property");
|
||||
throw new \InvalidArgumentException("Invalid property '$propkey'");
|
||||
}
|
||||
}
|
||||
$this->properties = array_merge($this->properties, $properties);
|
||||
@ -183,8 +183,8 @@ class Field extends AbstractElement
|
||||
{
|
||||
if (is_array($options)) {
|
||||
foreach (array_keys($options) as $optionkey) {
|
||||
if (!(isset($this->fieldsArray[$this->type]['options'][$optionkey]))) {
|
||||
throw new \InvalidArgumentException("Invalid option");
|
||||
if (!(isset($this->fieldsArray[$this->type]['options'][$optionkey])) && substr($optionkey, 0, 1) !== '\\') {
|
||||
throw new \InvalidArgumentException("Invalid option '$optionkey', possible values are " . implode(', ', $this->fieldsArray[$this->type]['options']));
|
||||
}
|
||||
}
|
||||
$this->options = array_merge($this->options, $options);
|
||||
|
||||
@ -77,6 +77,8 @@ class Field extends Text
|
||||
case 'Italic':
|
||||
$instruction .= '\i ';
|
||||
break;
|
||||
default:
|
||||
$instruction .= $option .' ';
|
||||
}
|
||||
}
|
||||
|
||||
@ -106,7 +108,7 @@ class Field extends Text
|
||||
$xmlWriter->startElement('w:noProof');
|
||||
$xmlWriter->endElement(); // w:noProof
|
||||
$xmlWriter->endElement(); // w:rPr
|
||||
$xmlWriter->writeElement('w:t', '1');
|
||||
$xmlWriter->writeElement('w:t', $element->getText() == null ? '1' : $element->getText());
|
||||
$xmlWriter->endElement(); // w:r
|
||||
|
||||
$xmlWriter->startElement('w:r');
|
||||
|
||||
@ -75,15 +75,25 @@ class FieldTest extends \PHPUnit_Framework_TestCase
|
||||
*/
|
||||
public function testConstructWithTypePropertiesOptionsText()
|
||||
{
|
||||
$oField = new Field('XE', array(), array('Bold'), 'FieldValue');
|
||||
$oField = new Field('XE', array(), array('Bold', 'Italic'), 'FieldValue');
|
||||
|
||||
$this->assertInstanceOf('PhpOffice\\PhpWord\\Element\\Field', $oField);
|
||||
$this->assertEquals('XE', $oField->getType());
|
||||
$this->assertEquals(array(), $oField->getProperties());
|
||||
$this->assertEquals(array('Bold'), $oField->getOptions());
|
||||
$this->assertEquals(array('Bold', 'Italic'), $oField->getOptions());
|
||||
$this->assertEquals('FieldValue', $oField->getText());
|
||||
}
|
||||
|
||||
public function testConstructWithOptionValue()
|
||||
{
|
||||
$oField = new Field('INDEX', array(), array('\\c "3" \\h "A"'));
|
||||
|
||||
$this->assertInstanceOf('PhpOffice\\PhpWord\\Element\\Field', $oField);
|
||||
$this->assertEquals('INDEX', $oField->getType());
|
||||
$this->assertEquals(array(), $oField->getProperties());
|
||||
$this->assertEquals(array('\\c "3" \\h "A"'), $oField->getOptions());
|
||||
}
|
||||
|
||||
/**
|
||||
* Test setType exception
|
||||
*
|
||||
|
||||
@ -192,6 +192,24 @@ class ElementTest extends \PHPUnit_Framework_TestCase
|
||||
}
|
||||
}
|
||||
|
||||
public function testFieldElement()
|
||||
{
|
||||
$phpWord = new PhpWord();
|
||||
$section = $phpWord->addSection();
|
||||
|
||||
$section->addField('INDEX', [], ['\\c "3"']);
|
||||
$section->addField('XE', [], ['Bold', 'Italic'], 'Index Entry');
|
||||
$section->addField('DATE', ['dateformat' => 'd-M-yyyy'], ['PreserveFormat', 'LastUsedFormat']);
|
||||
$section->addField('DATE', [], ['LunarCalendar']);
|
||||
$section->addField('DATE', [], ['SakaEraCalendar']);
|
||||
$section->addField('NUMPAGES', ['format' => 'roman', 'numformat' => '0,00'], ['SakaEraCalendar']);
|
||||
$doc = TestHelperDOCX::getDocument($phpWord);
|
||||
|
||||
$element = '/w:document/w:body/w:p/w:r/w:instrText';
|
||||
$this->assertTrue($doc->elementExists($element));
|
||||
$this->assertEquals(' INDEX \\c "3" ', $doc->getElement($element)->textContent);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test form fields
|
||||
*/
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user