New: Support tags into header and footer into ODT templates

This commit is contained in:
Laurent Destailleur 2012-03-28 20:12:25 +02:00
parent 0370e06c84
commit ec542f5ee5
2 changed files with 16 additions and 4 deletions

View File

@ -62,6 +62,7 @@ For users:
- New: Add hidden option MAIN_ADD_PDF_BACKGROUND to add a PDF as background of invoice/order generated PDF. - New: Add hidden option MAIN_ADD_PDF_BACKGROUND to add a PDF as background of invoice/order generated PDF.
- New: Can convert a product/service into service/product. - New: Can convert a product/service into service/product.
- New: Show delivery date into proposal template azur. - New: Show delivery date into proposal template azur.
- New: Support tags into header and footer into ODT templates.
- Fix: Can use POS module with several concurrent users. - Fix: Can use POS module with several concurrent users.
- Fix: Installer don't fails with Mysql version that added a ssl_cypher field. - Fix: Installer don't fails with Mysql version that added a ssl_cypher field.
- Fix: Sanitize input parameters. - Fix: Sanitize input parameters.

View File

@ -23,6 +23,7 @@ class Odf
); );
protected $file; protected $file;
protected $contentXml; // To store content of content.xml file protected $contentXml; // To store content of content.xml file
protected $stylesXml; // To store content of styles.xml file
protected $manifestXml; // To store content of META-INF/manifest.xml file protected $manifestXml; // To store content of META-INF/manifest.xml file
protected $tmpfile; protected $tmpfile;
protected $tmpdir=''; protected $tmpdir='';
@ -83,6 +84,9 @@ class Odf
if (($this->manifestXml = $this->file->getFromName('META-INF/manifest.xml')) === false) { if (($this->manifestXml = $this->file->getFromName('META-INF/manifest.xml')) === false) {
throw new OdfException("Something is wrong with META-INF/manifest.xm in source file '$filename'"); throw new OdfException("Something is wrong with META-INF/manifest.xm in source file '$filename'");
} }
if (($this->stylesXml = $this->file->getFromName('styles.xml')) === false) {
throw new OdfException("Nothing to parse - Check that the styles.xml file is correctly formed in source file '$filename'");
}
$this->file->close(); $this->file->close();
@ -181,11 +185,13 @@ IMG;
* Merge template variables * Merge template variables
* Called automatically for a save * Called automatically for a save
* *
* @param string $type 'content' or 'styles'
* @return void * @return void
*/ */
private function _parse() private function _parse($type='content')
{ {
$this->contentXml = str_replace(array_keys($this->vars), array_values($this->vars), $this->contentXml); if ($type == 'content') $this->contentXml = str_replace(array_keys($this->vars), array_values($this->vars), $this->contentXml);
if ($type == 'styles') $this->stylesXml = str_replace(array_keys($this->vars), array_values($this->vars), $this->stylesXml);
} }
/** /**
@ -286,11 +292,16 @@ IMG;
*/ */
private function _save() private function _save()
{ {
$res=$this->file->open($this->tmpfile); $res=$this->file->open($this->tmpfile); // tmpfile is odt template
$this->_parse(); $this->_parse('content');
$this->_parse('styles');
if (! $this->file->addFromString('content.xml', $this->contentXml)) { if (! $this->file->addFromString('content.xml', $this->contentXml)) {
throw new OdfException('Error during file export addFromString'); throw new OdfException('Error during file export addFromString');
} }
if (! $this->file->addFromString('styles.xml', $this->stylesXml)) {
throw new OdfException('Error during file export addFromString');
}
foreach ($this->images as $imageKey => $imageValue) { foreach ($this->images as $imageKey => $imageValue) {
$this->file->addFile($imageKey, 'Pictures/' . $imageValue); $this->file->addFile($imageKey, 'Pictures/' . $imageValue);
$this->addImageToManifest($imageValue); $this->addImageToManifest($imageValue);