mailRe: [Galette-discussion] Listes d'émargement


Others Months | Index by Date | Thread Index
>>   [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Header


Content

Posted by AnimActeurs on October 28, 2013 - 16:42:
Bonjour.
en attendant une éventuelle solution "plus propre" et en HTML pour modifier le contenu de l'export de listes d'émargement en PDF depuis l'interface de Galette, voici donc une solution provisoire que j'ai pu mettre en œuvre grâce aux conseils de Johan et André. Il me semblerait inconcevable de ne pas la partager ici.

Concrètement, il s'agit de remplacer le fichier attendance_sheet.php à la racine de galette par celui-ci joint.

J'y ai apporté plusieurs modifications:
- ajout d'une colonne comportant la personne morale à laquelle appartient chaque membre. - diminution de la taille de la police pour faire tenir le tout dans la largeur de page
- diminution de la hauteur des lignes afin d'utiliser moins de papier

Attention toutefois, n'ayant pas l'utilité de l'impression avec photo, je n'ai pas adapté pleinement la feuille à l'utilisation avec photo. Le résultat est dans ce cas au mieux décevant. Cependant pour qui voudra s'y pencher je pense qu'il ne reste pas beaucoup de boulot pour que ce soit pleinement fonctionnel.

Cette solution reste cependant provisoire pour répondre à mon besoin immédiat et ne remplacera une solution plus durable. Si vous utiliser cependant mon fichier modifié (ce qui me fera grand plaisir de vous avoir été utile), pensez surtout à conserver une copie de l'ancien et du nouveau fichier (surtout si vous apportez vos propres modifications), car il sera probablement écrasé la prochaine fois que vous mettrez à jour votre version de Galette.

Cordialement,

Simjen
. * * @category Print * @package Galette * * @author Johan Cwiklinski * @copyright 2011-2013 The Galette Team * @license http://www.gnu.org/licenses/gpl-3.0.html GPL License 3.0 or (at your option) any later version * @version SVN: $Id$ * @link http://galette.tuxfamily.org */ use Galette\IO\Pdf; use Galette\Repository\Members; use Galette\Filters\MembersList; use Analog\Analog as Analog; /** @ignore */ require_once 'includes/galette.inc.php'; if ( !$login->isLogged() ) { header("location: index.php"); die(); } if ( !$login->isAdmin() && !$login->isStaff() && !$login->isGroupManager() ) { header("location: voir_adherent.php"); die(); } if ( isset($session['filters']['members']) ) { $filters = unserialize($session['filters']['members']); } else { $filters = new MembersList(); } if ( count($filters->selected) == 0 ) { Analog::log('No member selected to generate attendance sheet', Analog::INFO); header('location:gestion_adherents.php'); die(); } $m = new Members(); $members = $m->getArrayList( $filters->selected, array('nom_adh', 'prenom_adh'), true ); if ( !is_array($members) || count($members) < 1 ) { die(); } //with or without images? $_wimages = false; if ( isset($_POST['sheet_photos']) && $_POST['sheet_photos'] === '1') { $_wimages = true; } define('SHEET_FONT', Pdf::FONT_SIZE-2); /** * PDF attendence sheet list * * @name SheetPdf * @category Classes * @package Galette * * @author Johan Cwiklinski * @copyright 2011-2013 The Galette Team * @license http://www.gnu.org/licenses/gpl-3.0.html GPL License 3.0 or (at your option) any later version * @link http://galette.tuxfamily.org */ class SheetPdf extends Pdf { public $doc_title = null; public $sheet_title = null; public $sheet_sub_title = null; public $sheet_date = null; /** * Page header * * @return void */ public function Header() { $this->SetFont(Pdf::FONT, '', SHEET_FONT - 2); $head_title = $this->doc_title; if ( $this->sheet_title !== null ) { $head_title .= ' - ' . $this->sheet_title; } if ( $this->sheet_sub_title !== null ) { $head_title .= ' - ' . $this->sheet_sub_title; } if ( $this->sheet_date !== null ) { $head_title .= ' - ' . $this->sheet_date->format(_T("Y-m-d")); } $this->Cell(0, 10, $head_title, 0, false, 'C', 0, '', 0, false, 'M', 'M'); } } $doc_title = _T("Attendance sheet"); if ( isset($_POST['sheet_type']) && trim($_POST['sheet_type']) != '' ) { $doc_title = $_POST['sheet_type']; } $pdf=new SheetPdf(); $pdf->doc_title = $doc_title; if ( isset($_POST['sheet_title']) && trim($_POST['sheet_title']) != '' ) { $pdf->sheet_title = $_POST['sheet_title']; } if ( isset($_POST['sheet_sub_title']) && trim($_POST['sheet_sub_title']) != '' ) { $pdf->sheet_sub_title = $_POST['sheet_sub_title']; } if ( isset($_POST['sheet_date']) && trim($_POST['sheet_date']) != '' ) { $dformat = _T("Y-m-d"); $date = DateTime::createFromFormat( $dformat, $_POST['sheet_date'] ); $pdf->sheet_date = $date; } // Set document information $pdf->SetTitle($doc_title); $pdf->showPagination(); $pdf->setMargins(10, 20); $pdf->setHeaderMargin(10); $pdf->SetAutoPageBreak(true, 20); $pdf->Open(); $pdf->SetFont(Pdf::FONT, '', SHEET_FONT); $pdf->SetTextColor(0, 0, 0); $pdf->AddPage(); $pdf->PageHeader($doc_title); if ( $pdf->sheet_title !== null ) { $pdf->Cell(190, 7, $_POST['sheet_title'], 0, 1, 'C'); } if ( $pdf->sheet_sub_title ) { $pdf->Cell(190, 7, $_POST['sheet_sub_title'], 0, 1, 'C'); } if ( $pdf->sheet_date ) { $date_fmt = null; if ( PHP_OS === 'Linux' ) { $format = _T("%A, %B %#d%O %Y"); $format = str_replace( '%O', date('S', $pdf->sheet_date->getTimestamp()), $format ); $date_fmt = strftime($format, $pdf->sheet_date->getTimestamp()); } else { $format = _T("Y-m-d"); $date_fmt = $pdf->sheet_date->format($format); } $pdf->Cell(190, 7, $date_fmt, 0, 1, 'C'); } // Header $pdf->SetFont('', 'B'); $pdf->SetFillColor(255, 255, 255); $pdf->Cell(60, 7, _T("Name"), 1, 0, 'C', 1); $pdf->Cell(85, 7, _T("Legal entity"), 1, 0, 'C', 1); $pdf->Cell(45, 7, _T("Signature"), 1, 1, 'C', 1); // Data $pdf->SetFont('', '', 9); $mcount = 0; foreach ( $members as $m ) { $mcount++; $pdf->Cell(10, 10, $mcount, 'LTB', 0, 'R'); if ( $m->hasPicture() && $_wimages ) { $p = $m->picture->getPath(); // Set logo size to max width 30 mm or max height 25 mm $ratio = $m->picture->getWidth()/$m->picture->getHeight(); if ( $ratio < 1 ) { if ( $m->picture->getHeight() > 9 ) { $hlogo = 9; } else { $hlogo = $m->picture->getHeight(); } $wlogo = round($hlogo*$ratio); } else { if ( $m->picture->getWidth() > 9 ) { $wlogo = 9; } else { $wlogo = $m->picture->getWidth(); } $hlogo = round($wlogo/$ratio); } $y = $pdf->getY() + 1; $x = $pdf->getX() + 1; $pdf->Cell($wlogo+2, 10, '', 'LTB', 0); $pdf->Image($p, $x, $y, $wlogo, $hlogo); } else { $x = $pdf->getX() + 1; $pdf->Cell(1, 10, '', 'LTB', 0); } $xs = $pdf->getX() - $x + 1; $pdf->Cell(50 - $xs, 10, $m->sname, 'RTB', 0, 'L'); $pdf->Cell(86 - $xs, 10, $m->company_name, 'RTB', 0, 'L'); $pdf->Cell(45, 10, '', 1, 1, 'L'); } $pdf->Cell(190, 0, '', 'T'); $pdf->Output(_T("attendance_sheet") . '.pdf', 'D');

Related Messages


Powered by MHonArc, Updated Mon Oct 28 18:00:07 2013