From e69e7f0045e2d72ca65e35442e4df0b8e9e670a6 Mon Sep 17 00:00:00 2001 From: duergner Date: Tue, 3 Aug 2004 19:07:31 +0000 Subject: [PATCH] new PDF support added; tested should work; --- lam/config/pdf/logos/printLogo.jpg | Bin 0 -> 11884 bytes lam/lib/pdf.inc | 64 ++++++-- lam/lib/pdfstruct.inc | 41 +++-- lam/templates/pdfedit/pdfmain.php | 3 +- lam/templates/pdfedit/pdfpage.php | 231 ++++++++++++++++++++++++++++- 5 files changed, 310 insertions(+), 29 deletions(-) create mode 100644 lam/config/pdf/logos/printLogo.jpg diff --git a/lam/config/pdf/logos/printLogo.jpg b/lam/config/pdf/logos/printLogo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..45e0b799182de0911872300e6070b3c5cd26b65e GIT binary patch literal 11884 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 'printLogo.jpg', 'headline' => 'LDAP Account Manager', 'margin-top' => '10.0', 'margin-bottom' => '20.0', 'margin-left' => '10.0', 'margin-right' => '10.0'); + if($xml[0][$xml[1]['PDF'][0]]['attributes']['TYPE'] == $scope) { + $border['start'] = $xml[1]['PDF'][0]; + $page_definitions = $xml[0][$xml[1]['PDF'][0]]['attributes']; + foreach($page_definitions as $key => $value) { + $complete_page_definitions[strtolower($key)] = $value; + unset($page_definitions[$key]); + } + $border['end'] = $xml[1]['PDF'][1]; } - return array_slice($xml[0],$border['start'] + 1,$border['end'] - ($border['start'] + 1)); + $structure = array_slice($xml[0],$border['start'] + 1,$border['end'] - ($border['start'] + 1)); + return array('structure' => $structure, 'page_definitions' => $complete_page_definitions); } function getSectionHeadline($line) { @@ -325,10 +330,18 @@ function processAttributes($attrs,$return = array()) { // lamPDF class || For defining own a Header and Footer class lamPDF extends FPDF { - function lamPDF($account_type = "User") { + var $page_definitions; + + function lamPDF($account_type = "User",$page_definitions = array()) { // Call constructor of superclass $this->FPDF('P','mm','A4'); + $this->page_definitions = $page_definitions; + + echo "
";
+		print_r($this->page_definitions);
+		echo "
"; + // Decide which PDF file type we shall use switch($account_type) { case "user": @@ -345,24 +358,43 @@ class lamPDF extends FPDF { // Open PDF file and write some basic information $this->Open(); $this->setFont("arial","",12); - $this->setTitle("LDAP Account Manager"); + $this->setTitle($this->page_definitions['headline']); $this->setSubject($subject); $this->setAuthor("LDAP Account Manager Devel-Team -Michael Duergner-"); $this->setCreator("LDAP Account Manager (pdf.inc)"); + //$this->setMargins(10.0,10.0,10.0); + $this->setMargins($this->page_definitions['margin-left'],$this->page_definitions['margin-top'],$this->page_definitions['margin-right']); + $this->setAutoPageBreak(true,$this->page_definitions['margin-bottom']); } // Print page header function header() { - $imageFile = substr(__FILE__,0,strlen(__FILE__)- 11) . "graphics/printLogo.jpg"; - $this->Image($imageFile,10,10,50,20,"JPG"); + if($this->page_definitions['filename'] != 'none') { + $imageFile = substr(__FILE__,0,strlen(__FILE__)- 11) . "config/pdf/logos/" . $this->page_definitions['filename']; + $width = $this->page_definitions['logo-width']; + $height = $this->page_definitions['logo-height']; + if($this->page_definitions['logo-max'] == true) { + if(($width / $height) <= 2.5) { + $factor = 20 / $height; + $width = $factor * $width; + $height = 20; + } + else { + $factor = 50 / $width; + $height = $factor * $height; + $width = 50; + } + } + $this->Image($imageFile,10,10,$width,$height,"JPG"); + } $this->SetFont("arial","B",22); - $this->Cell(170,5,"LDAP Account Manager",0,1,"R",0); + $this->Cell(170,5,$this->page_definitions['headline'],0,1,"R",0); $this->Ln(3); $this->SetFont("times","",14); $this->Cell(170,5,"- " . $this->subject . " -",0,0,"R",0); $this->SetLineWidth(0.8); - $this->Line(10,40,200,40); - $this->Line(10,42,200,42); + $this->Line(10,$this->page_definitions['margin-top'] + 30,200,$this->page_definitions['margin-top'] + 30); + $this->Line(10,$this->page_definitions['margin-top'] + 32,200,$this->page_definitions['margin-top'] + 32); $this->SetY(50); } diff --git a/lam/lib/pdfstruct.inc b/lam/lib/pdfstruct.inc index 63bae5e9..fb75bddb 100644 --- a/lam/lib/pdfstruct.inc +++ b/lam/lib/pdfstruct.inc @@ -42,23 +42,30 @@ function loadPDFStructureDefinitions($scope='user', $definition='default.xml') { $border = array(); $structure = array(); - $pdf_entries = $xml[1]['PDF']; $border[$current] = array(); - while(($index = current($pdf_entries)) != null) { - if($xml[0][$index]['attributes']['TYPE'] == $scope) { - $border['start'] = $index; - next($pdf_entries); - $border['end'] = current($pdf_entries); + $page_definitions = array(); + if($xml[0][$xml[1]['PDF'][0]]['attributes']['TYPE'] == $scope) { + $border['start'] = $xml[1]['PDF'][0]; + $page_definitions = $xml[0][$xml[1]['PDF'][0]]['attributes']; + foreach($page_definitions as $key => $value) { + $page_definitions[strtolower($key)] = $value; + unset($page_definitions[$key]); } - next($pdf_entries); + $border['end'] = $xml[1]['PDF'][1]; } $structure = array_slice($xml[0],$border['start'] + 1,$border['end'] - ($border['start'] + 1)); - return $structure; + return array('structure' => $structure, 'page_definitions' => $page_definitions); } function savePDFStructureDefinitions($scope,$definition) { $handle = fopen($_SESSION['lampath'] . 'config/pdf/' . $scope . '/' . $definition,'w'); - $file = "\n"; + $pdf_attributes = ''; + foreach($_SESSION['currentPageDefinitions'] as $key => $value) { + if($key != 'TYPE') { + $pdf_attributes .= ' ' . $key . '="' . $value . '"'; + } + } + $file = '\n"; foreach($_SESSION['currentPDFStructure'] as $entry) { $ident = ''; for($i=0;$i<$entry['level'] -1;$i++) { @@ -93,4 +100,20 @@ function savePDFStructureDefinitions($scope,$definition) { function deletePDFStructureDefinition($scope,$definition) { return unlink($_SESSION['lampath'] . 'config/pdf/' . $scope . '/' . $definition . '.xml'); } + +function getAvailableLogos() { + $return = array(); + $dirPath = $_SESSION['lampath'] . '/config/pdf/logos/'; + $dirHandle = opendir($dirPath); + while($file = readdir($dirHandle)) { + if(!is_dir($file) && $file != '.' && $file != '..' && preg_match('/\\.(jpg|png)$/',$file)) { + $infos = getimagesize($dirPath . $file); + if($infos[0] <= 400 && $infos[1] <= 60) { + array_push($return, array('filename' => $file, 'infos' => $infos)); + } + } + } + sort($return); + return $return; +} ?> \ No newline at end of file diff --git a/lam/templates/pdfedit/pdfmain.php b/lam/templates/pdfedit/pdfmain.php index 67b4181f..74f10e8d 100644 --- a/lam/templates/pdfedit/pdfmain.php +++ b/lam/templates/pdfedit/pdfmain.php @@ -38,11 +38,12 @@ setlanguage(); if(isset($_SESSION['currentPDFStructure'])) { unset($_SESSION['currentPDFStructure']); unset($_SESSION['availablePDFFields']); + unset($_SESSION['currentPageDefinitions']); session_unregister('currentPDFStructure'); session_unregister('availablePDFFields'); + session_unregister('currentPageDefinitions'); } - // check if user is logged in, if not go to login if (!$_SESSION['ldap'] || !$_SESSION['ldap']->server()) { metaRefresh("../login.php"); diff --git a/lam/templates/pdfedit/pdfpage.php b/lam/templates/pdfedit/pdfpage.php index 32725007..6cbf2eec 100644 --- a/lam/templates/pdfedit/pdfpage.php +++ b/lam/templates/pdfedit/pdfpage.php @@ -44,6 +44,9 @@ if (!$_SESSION['ldap'] || !$_SESSION['ldap']->server()) { // Write $_POST variables to $_GET when form was submitted via post if(isset($_POST['type'])) { $_GET = $_POST; + if($_POST['pdfname'] == '') { + unset($_GET['pdfname']); + } } // Abort and go back to main pdf structure page @@ -297,17 +300,89 @@ elseif(isset($_GET['down'])) { $_SESSION['currentPDFStructure'][$_GET['down'] + 1] = $tmp; } } +// TODO implement page handling +elseif(isset($_POST['page'])) { + if($_POST['logoFile'] != 'printLogo.jpg' && $_POST['logoFile'] != $_SESSION['currentPageDefinitions']['filename']) { + $_SESSION['currentPageDefinitions']['filename'] = $_POST['logoFile']; + } + if($_POST['logo-width'] != '50' && $_POST['logo-width'] != $_SESSION['currentPageDefinitions']['logo-width']) { + if($_POST['logo-width'] <= 50 && $_POST['logo-width'] > 0) { + $_SESSION['currentPageDefinitions']['logo-width'] = $_POST['logo-width']; + } + } + if($_POST['logo-height'] != '20' && $_POST['logo-height'] != $_SESSION['currentPageDefinitions']['logo-height']) { + if($_POST['logo-height'] <= 20 && $_POST['logo-height'] > 0) { + $_SESSION['currentPageDefinitions']['logo-height'] = $_POST['logo-height']; + } + } + if(isset($_POST['logo-max']) && !isset($_SESSION['currentPageDefinitions']['logo-max'])) { + $_SESSION['currentPageDefinitions']['logo-max'] = true; + } + if($_POST['headline'] != 'LDAP Account Manager' && $_POST['headline'] != $_SESSION['currentPageDefinitions']['headline']) { + $_SESSION['currentPageDefinitions']['headline'] = $_POST['headline']; + } + if($_POST['margin-top'] != '10.0' && $_SESSION['currentPageDefinitions']['margin-top'] != $_POST['margin-top']) { + $_SESSION['currentPageDefinitions']['margin-top'] = $_POST['margin-top']; + } + if($_POST['margin-bottom'] != '20.0' && $_SESSION['currentPageDefinitions']['margin-bottom'] != $_POST['margin-bottom']) { + $_SESSION['currentPageDefinitions']['margin-bottom'] = $_POST['margin-bottom']; + } + if($_POST['margin-left'] != '10.0' && $_SESSION['currentPageDefinitions']['margin-left'] != $_POST['margin-left']) { + $_SESSION['currentPageDefinitions']['margin-left'] = $_POST['margin-left']; + } + if($_POST['margin-right'] != '10.0' && $_SESSION['currentPageDefinitions']['margin-right'] != $_POST['margin-right']) { + $_SESSION['currentPageDefinitions']['margin-right'] = $_POST['margin-right']; + } + if(isset($_POST['defaults'])) { + foreach($_POST['defaults'] as $default) { + switch($default) { + case 'logoFile': + unset($_SESSION['currentPageDefinitions']['filename']); + break; + case 'logoSize': + unset($_SESSION['currentPageDefinitions']['logo-width']); + unset($_SESSION['currentPageDefinitions']['logo-height']); + unset($_SESSION['currentPageDefinitions']['logo-max']); + break; + case 'headline': + unset($_SESSION['currentPageDefinitions']['headline']); + break; + case 'margin-top': + unset($_SESSION['currentPageDefinitions']['margin-top']); + break; + case 'margin-bottom': + unset($_SESSION['currentPageDefinitions']['margin-bottom']); + break; + case 'margin-left': + unset($_SESSION['currentPageDefinitions']['margin-left']); + break; + case 'margin-right': + unset($_SESSION['currentPageDefinitions']['margin-right']); + break; + default: + break; + } + } + if(count($_SESSION['currentPageDefinitions']['margin']) == 0) { + unset($_SESSION['currentPageDefinitions']['margin']); + } + } +} // Load PDF structure from file if it is not defined in session if(!isset($_SESSION['currentPDFStructure'])) { // Load structure file to be edit if($_GET['edit']) { - $_SESSION['currentPDFStructure'] = loadPDFStructureDefinitions($_GET['type'],$_GET['edit']); + $load = loadPDFStructureDefinitions($_GET['type'],$_GET['edit']); + $_SESSION['currentPDFStructure'] = $load['structure']; + $_SESSION['currentPageDefinitions'] = $load['page_definitions']; $_GET['pdfname'] = substr($_GET['edit'],0,strlen($_GET['edit']) - 4); } // Load default structure file when creating a new one else { - $_SESSION['currentPDFStructure'] = loadPDFStructureDefinitions($_GET['type']); + $load = loadPDFStructureDefinitions($_GET['type']); + $_SESSION['currentPDFStructure'] = $load['structure']; + $_SESSION['currentPageDefinitions'] = $load['page_definitions']; } } @@ -330,8 +405,15 @@ foreach($_SESSION['availablePDFFields'] as $module => $values) { } $modules = join(',',$modules); +$logoFiles = getAvailableLogos(); +$logos = '\n"; +foreach($logoFiles as $logoFile) { + $logos .= "\t\t\t\t\t\t\t\t\t\t\t\n"; +} + // print header echo $_SESSION['header']; +// TODO Change enctype of form ?> LDAP Account Manager @@ -340,12 +422,155 @@ echo $_SESSION['header'];
+ + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
+ : + + + + + + +
+ +

+

+ + + + + + + + + + + + + + + + +
+ + + +
+ + + +
+ > + + +
+
+

+
+ +
+ : + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
+ : + + + + +
+ : + + + + +
+ : + + + + +
+ : + + + + +
+
+
+
+
+
+
- +