Skip to content

Commit

Permalink
Formatting in labels, issue options and drop-down boxes, closes #1
Browse files Browse the repository at this point in the history
  • Loading branch information
rmbinder committed Jun 9, 2016
1 parent a57d4b6 commit 6f151df
Show file tree
Hide file tree
Showing 4 changed files with 95 additions and 74 deletions.
163 changes: 92 additions & 71 deletions createpdf.php
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@
*
* Hinweis: Abhängig vom aufrufenden Programm wird
* entweder user_id oder (lst_id und rol_id und show_members) übergeben
*
* Mit Änderungen zur Formatierung von kossihh (Juni 2016)
***********************************************************************************************
*/

Expand Down Expand Up @@ -176,11 +178,8 @@
// nur zur Info: FPDI kann auch die Größe einer PDF-Datei auslesen
//$arr_size = $pdf->getTemplateSize($tplIdx);

// zuerst mal Standardschriftfarbe festlegen (falls nichts definiert wurde)
$pdf->SetTextColor(0,0,0);

// und Standardschrift, -stil und -größe festlegen (falls nichts definiert wurde)
$pdf->SetFont('Arial','BI',10);
// zuerst mal Standardschrift, -stil, -größe und -farbe festlegen (falls nichts definiert wurde)
$attributes = array('font' => 'Arial', 'style' => 'BI', 'size' => 10, 'color' => '0,0,0');

// jetzt alle Felder durchlaufen
//foreach($gProfileFields->mProfileFields as $field )
Expand All @@ -194,15 +193,15 @@

$formdata = $pPreferences->config['Formular']['positions'][$getpostFormID][$key];

// Textfarbe mit den Daten der jeweiligen Konfiguration überschreiben
$color = explode(',',$pPreferences->config['Formular']['color'][$getpostFormID]);
$pdf->SetTextColor($color[0],$color[1],$color[2]);
// Textattribute mit den Daten der jeweiligen Konfiguration überschreiben, falls vorhanden
foreach(array('color', 'font', 'style', 'size') as $attribute)
{
//if isset($pPreferences->config['Formular'][$attribute][$getpostFormID])
{
$attributes[$attribute] = $pPreferences->config['Formular'][$attribute][$getpostFormID];
}
}

// Font mit den Daten der jeweiligen Konfiguration überschreiben
$pdf->SetFont($pPreferences->config['Formular']['font'][$getpostFormID],
$pPreferences->config['Formular']['style'][$getpostFormID],
$pPreferences->config['Formular']['size'][$getpostFormID] );

if(!empty($formdata))
{
//zuerst mal sehen, ob Schrift-Parameter angefügt sind (wenn sich ein ';' darin befindet)
Expand Down Expand Up @@ -233,9 +232,8 @@
if ( array_key_exists ( 'C', $fontData ) )
{
// jetzt mit den konfigurierten Daten überschreiben
$color = explode(',',$fontData['C']);
$key = true;
foreach ($color as $data)
foreach (explode(',',$fontData['C']) as $data)
{
if(!(is_numeric($data)))
{
Expand All @@ -245,33 +243,27 @@
}
if ($key)
{
$pdf->SetTextColor($color[0],$color[1],$color[2]);
$attributes['color'] = $fontData['C'];
}
}

// wurde eine abweichende Schriftgröße definiert? -> prüfen und bei Syntaxfehler ggf. löschen
if ( array_key_exists ( 'S', $fontData ) && !(is_numeric($fontData['S'])))
// wurde eine abweichende Schriftgröße definiert? -> prüfen und ggf. setzen
if ( array_key_exists ( 'S', $fontData ) && is_numeric($fontData['S']))
{
unset($fontData['S']);
$attributes['size'] = $fontData['S'];
}

// wurde ein abweichender Schrifttyp definiert? -> prüfen und bei Syntaxfehler ggf. löschen
if ( array_key_exists ( 'F', $fontData ) && !(in_array($fontData['F'],array('Courier','Arial','Times','Symbol','ZapfDingbats' ))))
// wurde ein abweichender Schrifttyp definiert? -> prüfen und ggf. setzen
if ( array_key_exists ( 'F', $fontData ) && in_array($fontData['F'], array('Courier','Arial','Times','Symbol','ZapfDingbats' )))
{
unset($fontData['F']);
$attributes['font'] = $fontData['F'];
}

// wurden abweichende Schriftattribute definiert? -> prüfen und bei Syntaxfehler ggf. löschen
if ( array_key_exists ( 'A', $fontData ) && !(strstr_multiple('BIU',$fontData['A'])) )
// wurden abweichende Schriftattribute definiert? -> prüfen und ggf. setzen
if ( array_key_exists ( 'A', $fontData ) && strstr_multiple('BIU',$fontData['A']))
{
unset($fontData['A']);
$attributes['style'] = $fontData['A'];
}

// wurden abweichende Schriftart, Schriftstil oder Schriftgröße definiert? -> überschreiben
$pdf->SetFont(
((array_key_exists ( 'F', $fontData )) ? $fontData['F'] : $pPreferences->config['Formular']['font'][$getpostFormID]),
((array_key_exists ( 'A', $fontData )) ? $fontData['A'] : $pPreferences->config['Formular']['style'][$getpostFormID]),
((array_key_exists ( 'S', $fontData )) ? $fontData['S'] : $pPreferences->config['Formular']['size'][$getpostFormID]) );

switch ($fieldtype)
{
Expand Down Expand Up @@ -355,47 +347,69 @@
break;

case 'p':
if($gProfileFields->getPropertyById($fieldid, 'usf_name_intern')=='GENDER')
{
if ( array_key_exists ( 'T', $fontData ) ) // wurden Werte für das Geschlecht definiert?
{
$gender = explode(',',$fontData['T']);
if(!isset($gender[0]))
switch ($gProfileFields->getPropertyById($fieldid, 'usf_type'))
{
case 'RADIO_BUTTON':
case 'DROPDOWN':

$pos = $user->getValue($gProfileFields->getPropertyById($fieldid, 'usf_name_intern'), 'database') - 1;

if ( array_key_exists ( 'T', $fontData ) ) // Nehme n-ten Text aus Konfiguration
{
$gender[0]='x';
$textarray = explode(',',$fontData['T']);
if(isset($textarray[$pos])) // Wenn Text für diese Stelle definiert
{
$text = $textarray[$pos];
}
else // sonst nimm letzten definierten Text
{
$text = $textarray[Count($textarray)-1];
}
}
if(!isset($gender[1]))
else // lese Wert aus Datenbank
{
$gender[1]=$gender[0];
$text = $user->getValue($gProfileFields->getPropertyById($fieldid, 'usf_name_intern'));
if ( (substr($text, 0, 4) == '<img') && (substr($text, -2) == '/>') )
{
// Option wurde mit Icon definiert, wir müssen aus dem HTML Tag das Title-Attribut auslesen
$doc = new DOMDocument();
$doc->loadXML($text);
$nodeList = $doc->getElementsByTagName('img');
$nodes=iterator_to_array($nodeList);
$node=$nodes[0];
if ($node->getattribute('title') == $gProfileFields->getPropertyById($fieldid, 'usf_name'))
{
// Kein Tooltip in der Option, nehme Icon-Name als Wert
$text = $node->getattribute('src');
$text = substr($text, strrpos($text, '/') + 1);
$texttemp = explode('.', $text, 2);
$text = $texttemp[0];
}
else
{
$text = $node->getattribute('title');
}
}
}
}

if(strstr($user->getValue($gProfileFields->getPropertyById($fieldid, 'usf_name_intern')),'female'))
{
//female
if (isset($xyKoord[2]) && isset($xyKoord[3]))
{
$pdf->SetXY($xyKoord[2], $xyKoord[3]);
}
$text = $gender[1];
}
elseif(strstr($user->getValue($gProfileFields->getPropertyById($fieldid, 'usf_name_intern')),'male'))
{
$text = $gender[0];
}
}
elseif($gProfileFields->getPropertyById($fieldid, 'usf_type') == 'CHECKBOX')
{
if($user->getValue($gProfileFields->getPropertyById($fieldid, 'usf_name_intern')))
{
$text = 'x';
}
}
else
{
$text= $user->getValue($gProfileFields->getPropertyById($fieldid, 'usf_name_intern'));
}
break;

if ($pos > 0) // Wenn nicht erstes Auswahlelement und weitere Positionen definiert
{
if (isset($xyKoord[$pos * 2]) && isset($xyKoord[$pos * 2 + 1]))
{
$pdf->SetXY($xyKoord[$pos * 2], $xyKoord[$pos * 2 + 1]);
}
}
break;
case 'CHECKBOX':
if($user->getValue($gProfileFields->getPropertyById($fieldid, 'usf_name_intern')))
{
$text = 'x';
}
break;
default:
$text= $user->getValue($gProfileFields->getPropertyById($fieldid, 'usf_name_intern'));
}
break;
}

// wurde optionaler Text angegeben? (von lagro)
Expand All @@ -411,11 +425,15 @@
//über ein Hilfsarray gehen, falls mit Etiketten gearbeitet wird
if (count($etiketten)>0)
{
$etikettenText[$pdf->GetY()][$pdf->GetX()]=$text;
$attributes['text'] = $text;
$etikettenText[$pdf->GetY()][$pdf->GetX()] = $attributes;
}
else
{
$pdf->Write(0,utf8_decode($text));
$color = explode(',', $attributes['color']);
$pdf->SetTextColor($color[0],$color[1],$color[2]);
$pdf->SetFont($attributes['font'], $attributes['style'], $attributes['size']);
$pdf->Write(0,utf8_decode($text));
}
}
} // zum naechsten Profilfeld
Expand All @@ -436,8 +454,11 @@
$text = '';
foreach($zeileData as $spalteText => $spalteData)
{
$text .= $spalteData.' ';
$text .= $spalteData['text'].' ';
}
$color = explode(',', $zeileData[$xKoord]['color']);
$pdf->SetTextColor($color[0],$color[1],$color[2]);
$pdf->SetFont($zeileData[$xKoord]['font'], $zeileData[$xKoord]['style'], $zeileData[$xKoord]['size']);
$pdf->Write(0,utf8_decode($text));
}

Expand Down
2 changes: 1 addition & 1 deletion languages/de.xml
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@
<string name="PLG_FORMFILLER_ERROR_MIN_DATA">FEHLER: In jeder Konfiguration muss mindestens ein Feld mit Inhalt und Position angegeben sein!</string>
<string name="PLG_FORMFILLER_FIELD">Feld</string>
<string name="PLG_FORMFILLER_FIELD_SELECTION">Feldwahl</string>
<string name="PLG_FORMFILLER_FIELD_SELECTION_DESC">Hier werden die Profil- und Zusatzfelder ausgewählt, die in das PDF-Dokument gedruckt werden sollen. An "Position" werden die X- und Y-Koordinaten angegeben.\n\nZusätzlich kann für jedes Feld eine, gegenüber den Standardeinstellungen abweichende, Konfiguration erstellt werden.\n\nSyntax:\nSchriftart: F=Text (z.B. F=Arial)\nSchriftstil: A=B oder I oder U (z.B. A=B)\nSchriftgröße: S=Wert in pt (z.B. S=20)\nSchriftfarbe:C=RGB-Wert (z.B. C=0,0,255)\nGeschlecht: T=Text für männlich,Text für weiblich (z.B. T=Herrn,Frau)\nVortext: {=Text vor einem Feld (z.B. {=Hallo )\nNachtext: {=Text nach einem Feld (z.B. {=,)\n\nSyntax der Zusatzfelder:\nDatum: D=Formatparameter der Funktion date() (z.B. D=d.m.y), Standardeinstellung ist d.m.Y\nText: V=beliebiger Text (z.B. V=Hinweis)\nProfilfoto: L=Dateiname (z.B. L=logo.jpg), ohne Angabe eines Parameters wird ein evtl. vorhandenes Profilfoto angezeigt\n\n Beispiel:\nBezeichnung: Beitrittserklärung\nNachname: 10,20 (-> bedeutet Nachname auf Position 10,20) \nVorname: 10,40;S=7;F=Arial (-> bedeutet Vorname auf Position 10,40 mit Schriftart Arial in 7pt) \nAdresse: 40,20;C=255,102,255;A=B (-> bedeutet Adresse auf Position 40,20 mit Schriftfarbe rosa in Fettschrift)\nGeschlecht: 40,20,60,20;T=Herrn,Frau (-> bedeutet, abhängig vom Geschlecht, den Text Herrn an Position 40,20 oder den Text Frau an Position 60,20</string>
<string name="PLG_FORMFILLER_FIELD_SELECTION_DESC">Hier werden die Profil- und Zusatzfelder ausgewählt, die in das PDF-Dokument gedruckt werden sollen. An "Position" werden die X- und Y-Koordinaten angegeben.\n\nZusätzlich kann für jedes Feld eine, gegenüber den Standardeinstellungen abweichende, Konfiguration erstellt werden.\n\nSyntax:\nSchriftart: F=Text (z.B. F=Arial)\nSchriftstil: A=B oder I oder U (z.B. A=B)\nSchriftgröße: S=Wert in pt (z.B. S=20)\nSchriftfarbe:C=RGB-Wert (z.B. C=0,0,255)\nOptions-/Dropdownfelder: T=Text für 1. Wert,Text für 2. Wert, usw. (z.B. T=Herrn,Frau; gibt man keinen Text über T= an, wird der Text des Options- bzw. Dropdownfeldes genommen)\nVortext: {=Text vor einem Feld (z.B. {=Hallo )\nNachtext: {=Text nach einem Feld (z.B. {=,)\n\nSyntax der Zusatzfelder:\nDatum: D=Formatparameter der Funktion date() (z.B. D=d.m.y), Standardeinstellung ist d.m.Y\nText: V=beliebiger Text (z.B. V=Hinweis)\nProfilfoto: L=Dateiname (z.B. L=logo.jpg), ohne Angabe eines Parameters wird ein evtl. vorhandenes Profilfoto angezeigt\n\n Beispiel:\nBezeichnung: Beitrittserklärung\nNachname: 10,20 (-> bedeutet Nachname auf Position 10,20) \nVorname: 10,40;S=7;F=Arial (-> bedeutet Vorname auf Position 10,40 mit Schriftart Arial in 7pt) \nAdresse: 40,20;C=255,102,255;A=B (-> bedeutet Adresse auf Position 40,20 mit Schriftfarbe rosa in Fettschrift)\nGeschlecht: 40,20,60,20;T=Herrn,Frau (-> bedeutet, abhängig vom Geschlecht, den Text Herrn an Position 40,20 oder den Text Frau an Position 60,20</string>
<string name="PLG_FORMFILLER_FONT">Schriftart</string>
<string name="PLG_FORMFILLER_FONTCOLOR">Schriftfarbe</string>
<string name="PLG_FORMFILLER_FONTCOLOR_DESC">Hier wird die Standardschriftfarbe eingestellt.</string>
Expand Down
2 changes: 1 addition & 1 deletion languages/de_sie.xml
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@
<string name="PLG_FORMFILLER_ERROR_MIN_DATA">FEHLER: In jeder Konfiguration muss mindestens ein Feld mit Inhalt und Position angegeben sein!</string>
<string name="PLG_FORMFILLER_FIELD">Feld</string>
<string name="PLG_FORMFILLER_FIELD_SELECTION">Feldwahl</string>
<string name="PLG_FORMFILLER_FIELD_SELECTION_DESC">Hier werden die Profil- und Zusatzfelder ausgewählt, die in das PDF-Dokument gedruckt werden sollen. An "Position" werden die X- und Y-Koordinaten angegeben.\n\nZusätzlich kann für jedes Feld eine, gegenüber den Standardeinstellungen abweichende, Konfiguration erstellt werden.\n\nSyntax:\nSchriftart: F=Text (z.B. F=Arial)\nSchriftstil: A=B oder I oder U (z.B. A=B)\nSchriftgröße: S=Wert in pt (z.B. S=20)\nSchriftfarbe:C=RGB-Wert (z.B. C=0,0,255)\nGeschlecht: T=Text für männlich,Text für weiblich (z.B. T=Herrn,Frau)\nVortext: {=Text vor einem Feld (z.B. {=Hallo )\nNachtext: {=Text nach einem Feld (z.B. {=,)\n\nSyntax der Zusatzfelder:\nDatum: D=Formatparameter der Funktion date() (z.B. D=d.m.y), Standardeinstellung ist d.m.Y\nText: V=beliebiger Text (z.B. V=Hinweis)\nProfilfoto: L=Dateiname (z.B. L=logo.jpg), ohne Angabe eines Parameters wird ein evtl. vorhandenes Profilfoto angezeigt\n\n Beispiel:\nBezeichnung: Beitrittserklärung\nNachname: 10,20 (-> bedeutet Nachname auf Position 10,20) \nVorname: 10,40;S=7;F=Arial (-> bedeutet Vorname auf Position 10,40 mit Schriftart Arial in 7pt) \nAdresse: 40,20;C=255,102,255;A=B (-> bedeutet Adresse auf Position 40,20 mit Schriftfarbe rosa in Fettschrift)\nGeschlecht: 40,20,60,20;T=Herrn,Frau (-> bedeutet, abhängig vom Geschlecht, den Text Herrn an Position 40,20 oder den Text Frau an Position 60,20</string>
<string name="PLG_FORMFILLER_FIELD_SELECTION_DESC">Hier werden die Profil- und Zusatzfelder ausgewählt, die in das PDF-Dokument gedruckt werden sollen. An "Position" werden die X- und Y-Koordinaten angegeben.\n\nZusätzlich kann für jedes Feld eine, gegenüber den Standardeinstellungen abweichende, Konfiguration erstellt werden.\n\nSyntax:\nSchriftart: F=Text (z.B. F=Arial)\nSchriftstil: A=B oder I oder U (z.B. A=B)\nSchriftgröße: S=Wert in pt (z.B. S=20)\nSchriftfarbe:C=RGB-Wert (z.B. C=0,0,255)\nOptions-/Dropdownfelder: T=Text für 1. Wert,Text für 2. Wert, usw. (z.B. T=Herrn,Frau; gibt man keinen Text über T= an, wird der Text des Options- bzw. Dropdownfeldes genommen)\nVortext: {=Text vor einem Feld (z.B. {=Hallo )\nNachtext: {=Text nach einem Feld (z.B. {=,)\n\nSyntax der Zusatzfelder:\nDatum: D=Formatparameter der Funktion date() (z.B. D=d.m.y), Standardeinstellung ist d.m.Y\nText: V=beliebiger Text (z.B. V=Hinweis)\nProfilfoto: L=Dateiname (z.B. L=logo.jpg), ohne Angabe eines Parameters wird ein evtl. vorhandenes Profilfoto angezeigt\n\n Beispiel:\nBezeichnung: Beitrittserklärung\nNachname: 10,20 (-> bedeutet Nachname auf Position 10,20) \nVorname: 10,40;S=7;F=Arial (-> bedeutet Vorname auf Position 10,40 mit Schriftart Arial in 7pt) \nAdresse: 40,20;C=255,102,255;A=B (-> bedeutet Adresse auf Position 40,20 mit Schriftfarbe rosa in Fettschrift)\nGeschlecht: 40,20,60,20;T=Herrn,Frau (-> bedeutet, abhängig vom Geschlecht, den Text Herrn an Position 40,20 oder den Text Frau an Position 60,20</string>
<string name="PLG_FORMFILLER_FONT">Schriftart</string>
<string name="PLG_FORMFILLER_FONTCOLOR">Schriftfarbe</string>
<string name="PLG_FORMFILLER_FONTCOLOR_DESC">Hier wird die Standardschriftfarbe eingestellt.</string>
Expand Down
2 changes: 1 addition & 1 deletion languages/en.xml
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@
<string name="PLG_FORMFILLER_ERROR_MIN_DATA">ERROR: In each configuration, at least one field with content and position must be specified!</string>
<string name="PLG_FORMFILLER_FIELD">Field</string>
<string name="PLG_FORMFILLER_FIELD_SELECTION">Field selection</string>
<string name="PLG_FORMFILLER_FIELD_SELECTION_DESC">Here the profile and additional fields can be selected to be printed in the PDF document. On "position" the X and Y coordinates are specified.\n\nYou can also specify for each field one, compared to the standard settings deviating configuration.\n\nSyntax:\nFont: F=Text (e.g. F=Arial)\nFont style: A=B or I or U (e.g. A=B)\nFont size: S=size in pt (e.g. S=20)\nFont color:C=RGB value (e.g. C=0,0,255)\nGender: T=Text for male,text for female (e.g. T=Mr.,Mrs.)\nBefore text: {=Text in front of a field (e.g. {=Hallo )\nSuffix text: {=Text behind a field (e.g. {=,)\n\nSyntax of the additional fields:\nDate: D=Format parameter of the function date() (e.g. D=d.m.y), standard setting is d.m.Y\nText: V=any text (z.B. V=Attention)\nProfilephoto: L=Filename (z.B. L=logo.jpg), without a parameter, an existing profile photo is displayed\n\n Example:\nDescription: Declaration\nLast name: 10,20 (-> means last name at position 10,20) \nFirst name: 10,40;S=7;F=Arial (-> means first name at position 10,40 with font Arial 7pt) \nAddress: 40,20;C=255,102,255;A=B (-> means address at position 40,20 with font color pink in bold)\nGender: 40,20,60,20;T=Mr.,Mrs. (-> means, depending on the gender, the text Mr. at position 40,20 or the text Mrs. at position 60,20)</string>
<string name="PLG_FORMFILLER_FIELD_SELECTION_DESC">Here the profile and additional fields can be selected to be printed in the PDF document. On "position" the X and Y coordinates are specified.\n\nYou can also specify for each field one, compared to the standard settings deviating configuration.\n\nSyntax:\nFont: F=Text (e.g. F=Arial)\nFont style: A=B or I or U (e.g. A=B)\nFont size: S=size in pt (e.g. S=20)\nFont color:C=RGB value (e.g. C=0,0,255)\nRadio Button/Drop-down Box: T=Text for 1. value,text for 2. value, etc (e.g. T=Mr.,Mrs.; is not a given text on T =, the text of the option or drop-down field is taken)\nBefore text: {=Text in front of a field (e.g. {=Hallo )\nSuffix text: {=Text behind a field (e.g. {=,)\n\nSyntax of the additional fields:\nDate: D=Format parameter of the function date() (e.g. D=d.m.y), standard setting is d.m.Y\nText: V=any text (z.B. V=Attention)\nProfilephoto: L=Filename (z.B. L=logo.jpg), without a parameter, an existing profile photo is displayed\n\n Example:\nDescription: Declaration\nLast name: 10,20 (-> means last name at position 10,20) \nFirst name: 10,40;S=7;F=Arial (-> means first name at position 10,40 with font Arial 7pt) \nAddress: 40,20;C=255,102,255;A=B (-> means address at position 40,20 with font color pink in bold)\nGender: 40,20,60,20;T=Mr.,Mrs. (-> means, depending on the gender, the text Mr. at position 40,20 or the text Mrs. at position 60,20)</string>
<string name="PLG_FORMFILLER_FONT">Font</string>
<string name="PLG_FORMFILLER_FONTCOLOR">Font color</string>
<string name="PLG_FORMFILLER_FONTCOLOR_DESC">Here, the default font color is set.</string>
Expand Down

0 comments on commit 6f151df

Please sign in to comment.