diff options
Diffstat (limited to 'app/Report/ReportHtmlCell.php')
| -rw-r--r-- | app/Report/ReportHtmlCell.php | 336 |
1 files changed, 172 insertions, 164 deletions
diff --git a/app/Report/ReportHtmlCell.php b/app/Report/ReportHtmlCell.php index b066f3867a..4ba66ca0b2 100644 --- a/app/Report/ReportHtmlCell.php +++ b/app/Report/ReportHtmlCell.php @@ -18,177 +18,185 @@ namespace Fisharebest\Webtrees\Report; /** * Class ReportHtmlCell */ -class ReportHtmlCell extends ReportBaseCell { - /** - * HTML Cell renderer - * - * @param ReportHtml $renderer - */ - public function render($renderer) { - if (strpos($this->text, '{{:ptp:}}') !== false) { - return; - } - $temptext = str_replace('#PAGENUM#', $renderer->pageNo(), $this->text); - // underline «title» part of Source item - $temptext = str_replace(['«', '»'], ['<u>', '</u>'], $temptext); +class ReportHtmlCell extends ReportBaseCell +{ + /** + * HTML Cell renderer + * + * @param ReportHtml $renderer + */ + public function render($renderer) + { + if (strpos($this->text, '{{:ptp:}}') !== false) { + return; + } + $temptext = str_replace('#PAGENUM#', $renderer->pageNo(), $this->text); + // underline «title» part of Source item + $temptext = str_replace([ + '«', + '»', + ], [ + '<u>', + '</u>', + ], $temptext); - // Setup the style name - if ($renderer->getCurrentStyle() != $this->styleName) { - $renderer->setCurrentStyle($this->styleName); - } + // Setup the style name + if ($renderer->getCurrentStyle() != $this->styleName) { + $renderer->setCurrentStyle($this->styleName); + } - // If (Future-feature-enable/disable cell padding) - $cP = $renderer->cPadding; + // If (Future-feature-enable/disable cell padding) + $cP = $renderer->cPadding; - // Adjust the positions - if ($this->left == '.') { - $this->left = $renderer->getX(); - } else { - $renderer->setX($this->left); - } + // Adjust the positions + if ($this->left == '.') { + $this->left = $renderer->getX(); + } else { + $renderer->setX($this->left); + } - if ($this->top == '.') { - $this->top = $renderer->getY(); - } else { - $renderer->setY($this->top); - } + if ($this->top == '.') { + $this->top = $renderer->getY(); + } else { + $renderer->setY($this->top); + } - // Start collecting the HTML code - echo '<div class="', $this->styleName, '" style="position:absolute;top:', $this->top, 'pt;'; - // Use Cell around padding to support RTL also - echo 'padding:', $cP, 'pt;'; - // LTR (left) or RTL (right) - echo $renderer->alignRTL, ':', $this->left, 'pt;'; - // Background color - if (!empty($this->bgcolor)) { - echo 'background-color:', $this->bgcolor, ';'; - } - // Border setup - $bpixX = 0; - $bpixY = 0; - if (!empty($this->border)) { - // Border all around - if ($this->border == 1) { - echo ' border:solid '; - if (!empty($this->bocolor)) { - echo $this->bocolor; - } else { - echo 'black'; - } - echo ' 1pt;'; - $bpixX = 1; - $bpixY = 1; - } else { - if (stripos($this->border, 'T') !== false) { - echo ' border-top:solid '; - if (!empty($this->bocolor)) { - echo $this->bocolor; - } else { - echo 'black'; - } - echo ' 1pt;'; - $bpixY = 1; - } - if (stripos($this->border, 'B') !== false) { - echo ' border-bottom:solid '; - if (!empty($this->bocolor)) { - echo $this->bocolor; - } else { - echo 'black'; - } - echo ' 1pt;'; - $bpixY = 1; - } - if (stripos($this->border, 'R') !== false) { - echo ' border-right:solid '; - if (!empty($this->bocolor)) { - echo $this->bocolor; - } else { - echo 'black'; - } - echo ' 1pt;'; - $bpixX = 1; - } - if (stripos($this->border, 'L') !== false) { - echo ' border-left:solid '; - if (!empty($this->bocolor)) { - echo $this->bocolor; - } else { - echo 'black'; - } - echo ' 1pt;'; - $bpixX = 1; - } - } - } - // Check the width if set to page wide OR set by xml to larger then page wide - if ($this->width == 0 || $this->width > $renderer->getRemainingWidth()) { - $this->width = $renderer->getRemainingWidth(); - } - // We have to calculate a different width for the padding, counting on both side - $cW = $this->width - ($cP * 2); + // Start collecting the HTML code + echo '<div class="', $this->styleName, '" style="position:absolute;top:', $this->top, 'pt;'; + // Use Cell around padding to support RTL also + echo 'padding:', $cP, 'pt;'; + // LTR (left) or RTL (right) + echo $renderer->alignRTL, ':', $this->left, 'pt;'; + // Background color + if (!empty($this->bgcolor)) { + echo 'background-color:', $this->bgcolor, ';'; + } + // Border setup + $bpixX = 0; + $bpixY = 0; + if (!empty($this->border)) { + // Border all around + if ($this->border == 1) { + echo ' border:solid '; + if (!empty($this->bocolor)) { + echo $this->bocolor; + } else { + echo 'black'; + } + echo ' 1pt;'; + $bpixX = 1; + $bpixY = 1; + } else { + if (stripos($this->border, 'T') !== false) { + echo ' border-top:solid '; + if (!empty($this->bocolor)) { + echo $this->bocolor; + } else { + echo 'black'; + } + echo ' 1pt;'; + $bpixY = 1; + } + if (stripos($this->border, 'B') !== false) { + echo ' border-bottom:solid '; + if (!empty($this->bocolor)) { + echo $this->bocolor; + } else { + echo 'black'; + } + echo ' 1pt;'; + $bpixY = 1; + } + if (stripos($this->border, 'R') !== false) { + echo ' border-right:solid '; + if (!empty($this->bocolor)) { + echo $this->bocolor; + } else { + echo 'black'; + } + echo ' 1pt;'; + $bpixX = 1; + } + if (stripos($this->border, 'L') !== false) { + echo ' border-left:solid '; + if (!empty($this->bocolor)) { + echo $this->bocolor; + } else { + echo 'black'; + } + echo ' 1pt;'; + $bpixX = 1; + } + } + } + // Check the width if set to page wide OR set by xml to larger then page wide + if ($this->width == 0 || $this->width > $renderer->getRemainingWidth()) { + $this->width = $renderer->getRemainingWidth(); + } + // We have to calculate a different width for the padding, counting on both side + $cW = $this->width - ($cP * 2); - // If there is any text - if (!empty($temptext)) { - // Wrap the text - $temptext = $renderer->textWrap($temptext, $cW); - $tmph = $renderer->getTextCellHeight($temptext); - // Add some cell padding - $this->height += $cP; - if ($tmph > $this->height) { - $this->height = $tmph; - } - } - // Check the last cell height and ajust with the current cell height - if ($renderer->lastCellHeight > $this->height) { - $this->height = $renderer->lastCellHeight; - } - echo ' width:', $cW - $bpixX, 'pt;height:', $this->height - $bpixY, 'pt;'; + // If there is any text + if (!empty($temptext)) { + // Wrap the text + $temptext = $renderer->textWrap($temptext, $cW); + $tmph = $renderer->getTextCellHeight($temptext); + // Add some cell padding + $this->height += $cP; + if ($tmph > $this->height) { + $this->height = $tmph; + } + } + // Check the last cell height and ajust with the current cell height + if ($renderer->lastCellHeight > $this->height) { + $this->height = $renderer->lastCellHeight; + } + echo ' width:', $cW - $bpixX, 'pt;height:', $this->height - $bpixY, 'pt;'; - // Text alignment - switch ($this->align) { - case 'C': - echo ' text-align:center;'; - break; - case 'L': - echo ' text-align:left;'; - break; - case 'R': - echo ' text-align:right;'; - break; - } + // Text alignment + switch ($this->align) { + case 'C': + echo ' text-align:center;'; + break; + case 'L': + echo ' text-align:left;'; + break; + case 'R': + echo ' text-align:right;'; + break; + } - // Print the collected HTML code - echo '">'; + // Print the collected HTML code + echo '">'; - // Print URL - if (!empty($this->url)) { - echo '<a href="', $this->url, '">'; - } - // Print any text if exists - if (!empty($temptext)) { - $renderer->write($temptext, $this->tcolor, false); - } - if (!empty($this->url)) { - echo '</a>'; - } - // Finish the cell printing and start to clean up - echo "</div>\n"; - // Where to place the next position - // -> Next to this cell in the same line - if ($this->newline == 0) { - $renderer->setXy($this->left + $this->width, $this->top); - $renderer->lastCellHeight = $this->height; - } // -> On a new line at the margin - Default - elseif ($this->newline == 1) { - $renderer->setXy(0, $renderer->getY() + $this->height + ($cP * 2)); - // Reset the last cell height for the next line - $renderer->lastCellHeight = 0; - } // -> On a new line at the end of this cell - elseif ($this->newline == 2) { - $renderer->setXy($renderer->getX() + $this->width, $renderer->getY() + $this->height + ($cP * 2)); - // Reset the last cell height for the next line - $renderer->lastCellHeight = 0; - } - } + // Print URL + if (!empty($this->url)) { + echo '<a href="', $this->url, '">'; + } + // Print any text if exists + if (!empty($temptext)) { + $renderer->write($temptext, $this->tcolor, false); + } + if (!empty($this->url)) { + echo '</a>'; + } + // Finish the cell printing and start to clean up + echo "</div>\n"; + // Where to place the next position + // -> Next to this cell in the same line + if ($this->newline == 0) { + $renderer->setXy($this->left + $this->width, $this->top); + $renderer->lastCellHeight = $this->height; + } // -> On a new line at the margin - Default + elseif ($this->newline == 1) { + $renderer->setXy(0, $renderer->getY() + $this->height + ($cP * 2)); + // Reset the last cell height for the next line + $renderer->lastCellHeight = 0; + } // -> On a new line at the end of this cell + elseif ($this->newline == 2) { + $renderer->setXy($renderer->getX() + $this->width, $renderer->getY() + $this->height + ($cP * 2)); + // Reset the last cell height for the next line + $renderer->lastCellHeight = 0; + } + } } |
