Skip to content

Commit ea41b08

Browse files
committed
Refactor the new textbox element
1 parent e12daac commit ea41b08

File tree

11 files changed

+103
-135
lines changed

11 files changed

+103
-135
lines changed

src/PhpWord/Element/AbstractContainer.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ public function countElements()
7878
public function addText($text, $fontStyle = null, $paragraphStyle = null, $elementName = 'Text')
7979
{
8080
$this->checkValidity($elementName);
81-
$elementClass = dirname(get_class($this)) . '\\' . $elementName;
81+
$elementClass = __NAMESPACE__ . '\\' . $elementName;
8282

8383
// Reset paragraph style for footnote and textrun. They have their own
8484
if (in_array($this->container, array('textrun', 'footnote', 'endnote'))) {
@@ -248,7 +248,7 @@ public function addObject($source, $style = null)
248248
public function addFootnote($paragraphStyle = null, $elementName = 'Footnote')
249249
{
250250
$this->checkValidity($elementName);
251-
$elementClass = dirname(get_class($this)) . '\\' . $elementName;
251+
$elementClass = __NAMESPACE__ . '\\' . $elementName;
252252
$docPart = strtolower($elementName);
253253
$addMethod = "add{$elementName}";
254254

src/PhpWord/Element/Section.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -223,7 +223,7 @@ public function hasDifferentFirstPage()
223223
private function addHeaderFooter($type = Header::AUTO, $header = true)
224224
{
225225
$collectionArray = $header ? 'headers' : 'footers';
226-
$containerClass = dirname(get_class($this)) . '\\' . ($header ? 'Header' : 'Footer');
226+
$containerClass = __NAMESPACE__ . '\\' . ($header ? 'Header' : 'Footer');
227227
$collection = &$this->$collectionArray;
228228

229229
if (in_array($type, array(Header::AUTO, Header::FIRST, Header::EVEN))) {

src/PhpWord/Element/TextBox.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,9 @@
2020
use PhpOffice\PhpWord\Style\TextBox as TextBoxStyle;
2121

2222
/**
23-
* Table element
23+
* TextBox element
24+
*
25+
* @since 0.11.0
2426
*/
2527
class TextBox extends AbstractContainer
2628
{

src/PhpWord/Style/AbstractStyle.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -249,7 +249,7 @@ protected function setEnumVal($value, $enum, $default = null)
249249
*/
250250
protected function setObjectVal($value, $styleName, &$style)
251251
{
252-
$styleClass = dirname(get_class($this)) . '\\' . $styleName;
252+
$styleClass = __NAMESPACE__ . '\\' . $styleName;
253253
if (is_array($value)) {
254254
if (!$style instanceof $styleClass) {
255255
$style = new $styleClass();

src/PhpWord/Style/TextBox.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@
1919

2020
/**
2121
* TextBox style
22+
*
23+
* @since 0.11.0
2224
*/
2325
class TextBox extends Image
2426
{

src/PhpWord/Writer/HTML/Element/Element.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ public function __construct(HTML $parentWriter, AbstractElement $element, $witho
7373
public function write()
7474
{
7575
$content = '';
76-
$writerClass = dirname(get_class($this)) . '\\' . basename(get_class($this->element));
76+
$writerClass = __NAMESPACE__ . '\\' . basename(get_class($this->element));
7777
if (class_exists($writerClass)) {
7878
$writer = new $writerClass($this->parentWriter, $this->element, $this->withoutP);
7979
$content = $writer->write();

src/PhpWord/Writer/RTF/Element/Element.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ public function __construct(RTF $parentWriter, AbstractElement $element, $withou
6868
public function write()
6969
{
7070
$content = '';
71-
$writerClass = dirname(get_class($this)) . '\\' . basename(get_class($this->element));
71+
$writerClass = __NAMESPACE__ . '\\' . basename(get_class($this->element));
7272
if (class_exists($writerClass)) {
7373
$writer = new $writerClass($this->parentWriter, $this->element, $this->withoutP);
7474
$content = $writer->write();

src/PhpWord/Writer/Word2007/Element/Container.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,10 +37,10 @@ public function write()
3737
// Loop through subelements
3838
$containerClass = basename(get_class($element));
3939
$subelements = $element->getElements();
40-
$withoutP = in_array($containerClass, array('TextRun', 'Footnote', 'Endnote')) ? true : false;
40+
$withoutP = in_array($containerClass, array('TextRun', 'Footnote', 'Endnote', 'TextBox')) ? true : false;
4141
if (count($subelements) > 0) {
4242
foreach ($subelements as $subelement) {
43-
$writerClass = dirname(get_class($this)) . '\\' . basename(get_class($subelement));
43+
$writerClass = __NAMESPACE__ . '\\' . basename(get_class($subelement));
4444
if (class_exists($writerClass)) {
4545
$writer = new $writerClass($xmlWriter, $subelement, $withoutP);
4646
$writer->write();
@@ -49,7 +49,7 @@ public function write()
4949
} else {
5050
// Special case for Cell: They have to contain a TextBreak at least
5151
if ($containerClass == 'Cell') {
52-
$writerClass = dirname(get_class($this)) . '\\TextBreak';
52+
$writerClass = __NAMESPACE__ . '\\TextBreak';
5353
$writer = new $writerClass($xmlWriter, new TextBreakElement(), $withoutP);
5454
$writer->write();
5555
}

src/PhpWord/Writer/Word2007/Element/TextBox.php

Lines changed: 37 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -23,52 +23,61 @@
2323
/**
2424
* TextBox element writer
2525
*
26+
* @since 0.11.0
2627
*/
27-
class TextBox extends Element
28+
class TextBox extends AbstractElement
2829
{
2930
/**
3031
* Write element
3132
*/
3233
public function write()
3334
{
34-
$tbxStyle = $this->element->getStyle();
35-
if ($tbxStyle instanceof TextBoxStyle) {
36-
$styleWriter = new TextBoxStyleWriter($this->xmlWriter, $tbxStyle);
35+
$xmlWriter = $this->getXmlWriter();
36+
$element = $this->getElement();
37+
$style = $element->getStyle();
38+
39+
if ($style instanceof TextBoxStyle) {
40+
$styleWriter = new TextBoxStyleWriter($xmlWriter, $style);
3741
$styleWriter->write();
3842
}
3943

4044
if (!$this->withoutP) {
41-
$this->xmlWriter->startElement('w:p');
42-
if (!is_null($tbxStyle->getAlign())) {
43-
$this->xmlWriter->startElement('w:pPr');
44-
$this->xmlWriter->startElement('w:jc');
45-
$this->xmlWriter->writeAttribute('w:val', $tbxStyle->getAlign());
46-
$this->xmlWriter->endElement(); // w:jc
47-
$this->xmlWriter->endElement(); // w:pPr
45+
$xmlWriter->startElement('w:p');
46+
if (!is_null($style->getAlign())) {
47+
$xmlWriter->startElement('w:pPr');
48+
$xmlWriter->startElement('w:jc');
49+
$xmlWriter->writeAttribute('w:val', $style->getAlign());
50+
$xmlWriter->endElement(); // w:jc
51+
$xmlWriter->endElement(); // w:pPr
4852
}
4953
}
5054

51-
$this->xmlWriter->startElement('w:r');
52-
$this->xmlWriter->startElement('w:pict');
53-
$this->xmlWriter->startElement('v:shape');
54-
$this->xmlWriter->writeAttribute('type', '#_x0000_t0202');
55+
$xmlWriter->startElement('w:r');
56+
$xmlWriter->startElement('w:pict');
57+
$xmlWriter->startElement('v:shape');
58+
$xmlWriter->writeAttribute('type', '#_x0000_t0202');
5559
$styleWriter->write();
56-
$this->xmlWriter->startElement('v:textbox');
57-
$margins = implode(', ', $tbxStyle->getInnerMargin());
58-
$this->xmlWriter->writeAttribute('inset', $margins);
59-
$this->xmlWriter->startElement('w:txbxContent');
60-
$this->xmlWriter->startElement('w:p');
61-
$this->parentWriter->writeContainerElements($this->xmlWriter, $this->element);
62-
$this->xmlWriter->endElement(); // w:p
63-
$this->xmlWriter->endElement(); // w:txbxContent
64-
$this->xmlWriter->endElement(); // v: textbox
60+
61+
$xmlWriter->startElement('v:textbox');
62+
$margins = implode(', ', $style->getInnerMargin());
63+
$xmlWriter->writeAttribute('inset', $margins);
64+
65+
$xmlWriter->startElement('w:txbxContent');
66+
$xmlWriter->startElement('w:p');
67+
$containerWriter = new Container($xmlWriter, $element);
68+
$containerWriter->write();
69+
$xmlWriter->endElement(); // w:p
70+
$xmlWriter->endElement(); // w:txbxContent
71+
72+
$xmlWriter->endElement(); // v: textbox
73+
6574
$styleWriter->writeW10Wrap();
66-
$this->xmlWriter->endElement(); // v:shape
67-
$this->xmlWriter->endElement(); // w:pict
68-
$this->xmlWriter->endElement(); // w:r
75+
$xmlWriter->endElement(); // v:shape
76+
$xmlWriter->endElement(); // w:pict
77+
$xmlWriter->endElement(); // w:r
6978

7079
if (!$this->withoutP) {
71-
$this->xmlWriter->endElement(); // w:p
80+
$xmlWriter->endElement(); // w:p
7281
}
7382
}
7483
}

src/PhpWord/Writer/Word2007/Style/Image.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ class Image extends AbstractStyle
3131
*
3232
* @var string
3333
*/
34-
private $w10wrap;
34+
protected $w10wrap;
3535

3636
/**
3737
* Write style
@@ -52,7 +52,7 @@ public function write()
5252
'mso-width-relative' => 'margin',
5353
'mso-height-relative' => 'margin',
5454
);
55-
$styleArray = array_merge($styleArray, $this->getElementStyle($this->style));
55+
$styleArray = array_merge($styleArray, $this->getElementStyle($style));
5656

5757
// Absolute/relative positioning
5858
$styleArray['position'] = $positioning;
@@ -112,7 +112,7 @@ public function writeW10Wrap()
112112
*
113113
* @return array
114114
*/
115-
private function getElementStyle(ImageStyle $style)
115+
protected function getElementStyle(ImageStyle $style)
116116
{
117117
$styles = array();
118118
$styleValues = array(
@@ -136,7 +136,7 @@ private function getElementStyle(ImageStyle $style)
136136
* @param array $styles
137137
* @return string
138138
*/
139-
private function assembleStyle($styles = array())
139+
protected function assembleStyle($styles = array())
140140
{
141141
$style = '';
142142
foreach ($styles as $key => $value) {

0 commit comments

Comments
 (0)