From 58df28ba9ae779022ea2a044e2501be20c69bc34 Mon Sep 17 00:00:00 2001 From: dave Date: Wed, 23 Jan 2008 18:32:31 +0000 Subject: [PATCH] - Fix drawing label boxes around text items - Add the ability to draw a static label box (without text) - Add "self nominated award" 1 through 5 to the student reports - Add a new report demonstrating how to use the above (this is of the format Sudbury sent us). --- admin/reports.inc.php | 28 +++++++++-- admin/reports_students.inc.php | 85 +++++++++++++++++++++++++++++++++- db/db.code.version.txt | 2 +- db/db.update.99.sql | 32 +++++++++++++ lpdf.php | 19 +++++++- 5 files changed, 159 insertions(+), 7 deletions(-) create mode 100644 db/db.update.99.sql diff --git a/admin/reports.inc.php b/admin/reports.inc.php index 70e6489..07c1469 100644 --- a/admin/reports.inc.php +++ b/admin/reports.inc.php @@ -193,6 +193,17 @@ LRP 180 99765 5967 4 1 3/4 x 1/2 80 */ 'rows' => 3, ); + $report_stock['nametag'] = array('name' => 'Fullpage, 4up', + 'page_width' => 8.5, + 'page_height' => 11, + 'label_width' => 4, + 'x_spacing' => 0.25, + 'cols' => 2, + 'label_height' => 5, + 'y_spacing' => 0.25, + 'rows' => 2, + ); + $report_options['stock'] = array('desc' => "Paper Type", 'values' => array() ); @@ -712,14 +723,23 @@ foreach($report_stock as $n=>$v) { if($d['face'] == 'bold') $opt[] = 'bold'; $opt[] = $d['align']; $opt[] = $d['valign']; + if($report['option']['label_box'] == 'yes') + $opt[] = 'label_box'; - /* Special column, override result with static text */ - if($f == 'static_text') $v = $d['value']; - $lh = ($d['lines'] == 0) ? 0 : $d['h']/$d['lines']; - $rep->addLabelText2($d['x'], $d['y'], $d['w'], + /* Special column, draw a box */ + if($f == 'static_box') { + $rep->addLabelBox($d['x'], $d['y'], $d['w'], + $d['h']); + } else { + /* Special column, override result with static text */ + if($f == 'static_text') $v = $d['value']; + + $lh = ($d['lines'] == 0) ? 0 : $d['h']/$d['lines']; + $rep->addLabelText2($d['x'], $d['y'], $d['w'], $d['h'], $lh, $v, $opt); + } } if($fields[$f]['total'] == true) diff --git a/admin/reports_students.inc.php b/admin/reports_students.inc.php index 6c65c95..22a30a8 100644 --- a/admin/reports_students.inc.php +++ b/admin/reports_students.inc.php @@ -35,6 +35,43 @@ function reports_students_numstudents(&$report, $text) return mysql_num_rows($q); } +function reports_students_award_selfnom_num(&$report, $text, $n) +{ + $year = $report['year']; + $q = mysql_query("SELECT award_awards.name FROM + projects + LEFT JOIN project_specialawards_link ON project_specialawards_link.projects_id=projects.id + LEFT JOIN award_awards ON award_awards.id=project_specialawards_link.award_awards_id + WHERE projects.id='$text' + AND projects.year='$year' + AND project_specialawards_link.year='$year' + LIMIT $n,$n"); + echo mysql_error(); + $i = mysql_fetch_assoc($q); + return $i['name']; +} +function reports_students_award_selfnom_1(&$report, $text) +{ + return reports_students_award_selfnom_num(&$report, $text, 1); +} +function reports_students_award_selfnom_2(&$report, $text) +{ + return reports_students_award_selfnom_num(&$report, $text, 2); +} +function reports_students_award_selfnom_3(&$report, $text) +{ + return reports_students_award_selfnom_num(&$report, $text, 3); +} +function reports_students_award_selfnom_4(&$report, $text) +{ + return reports_students_award_selfnom_num(&$report, $text, 4); +} +function reports_students_award_selfnom_5(&$report, $text) +{ + return reports_students_award_selfnom_num(&$report, $text, 5); +} + + $report_students_fields = array( 'pn' => array( 'name' => 'Project Number', @@ -432,6 +469,46 @@ $report_students_fields = array( 'table_sort' => 'award_awards.name', 'components' => array('awards_nominations')), + 'nom_awards_name_1' => array( + 'name' => 'Award Nominations -- Self-Nominated Special Award 1', + 'header' => 'Award Name', + 'width' => 3, + 'table' => 'projects.id', + 'table_sort' => 'projects.id', + 'exec_function' => 'reports_students_award_selfnom_1'), + + 'nom_awards_name_2' => array( + 'name' => 'Award Nominations -- Self-Nominated Special Award 2', + 'header' => 'Award Name', + 'width' => 3, + 'table' => 'projects.id', + 'table_sort' => 'projects.id', + 'exec_function' => 'reports_students_award_selfnom_2'), + + 'nom_awards_name_3' => array( + 'name' => 'Award Nominations -- Self-Nominated Special Award 3', + 'header' => 'Award Name', + 'width' => 3, + 'table' => 'projects.id', + 'table_sort' => 'projects.id', + 'exec_function' => 'reports_students_award_selfnom_3'), + + 'nom_awards_name_4' => array( + 'name' => 'Award Nominations -- Self-Nominated Special Award 4', + 'header' => 'Award Name', + 'width' => 3, + 'table' => 'projects.id', + 'table_sort' => 'projects.id', + 'exec_function' => 'reports_students_award_selfnom_4'), + + 'nom_awards_name_5' => array( + 'name' => 'Award Nominations -- Self-Nominated Special Award 5', + 'header' => 'Award Name', + 'width' => 3, + 'table' => 'projects.id', + 'table_sort' => 'projects.id', + 'exec_function' => 'reports_students_award_selfnom_5'), + 'req_elec' => array( 'name' => 'If the project requires electricity', 'header' => 'Elec', @@ -507,7 +584,13 @@ $report_students_fields = array( 'table' => "'".mysql_escape_string($config['fairname'])."'"), 'static_text' => array ( - 'name' => 'Static Text (useful for labels)', + 'name' => 'Label -- Static Text', + 'header' => '', + 'width' => 0.1, + 'table' => "CONCAT(' ')"), + + 'static_box' => array ( + 'name' => 'Label -- Static Box', 'header' => '', 'width' => 0.1, 'table' => "CONCAT(' ')"), diff --git a/db/db.code.version.txt b/db/db.code.version.txt index 6529ff8..3ad5abd 100644 --- a/db/db.code.version.txt +++ b/db/db.code.version.txt @@ -1 +1 @@ -98 +99 diff --git a/db/db.update.99.sql b/db/db.update.99.sql new file mode 100644 index 0000000..30d8506 --- /dev/null +++ b/db/db.update.99.sql @@ -0,0 +1,32 @@ +INSERT INTO `reports` (`id`, `system_report_id`, `name`, `desc`, `creator`, `type`) VALUES + ('', '44', 'Labels -- Table Labels (with special award nominations)', 'Labels for each project. This report includes the first 5 projects the students have self-nominated for. There are boxes for judges to initial too. We realize that each fair may have a different number of projects. This reports serves as an example of how to create a report with boxes.', 'The Grant Brothers', 'student'); +INSERT INTO `reports_items` (`id`, `reports_id`, `type`, `ord`, `field`, `value`, `x`, `y`, `w`, `h`, `lines`, `face`, `align`) VALUES + ('', LAST_INSERT_ID(), 'option', 0, 'type', 'label', 0, 0, 0, 0, 0, '', ''), + ('', LAST_INSERT_ID(), 'option', 1, 'group_new_page', 'no', 0, 0, 0, 0, 0, '', ''), + ('', LAST_INSERT_ID(), 'option', 2, 'allow_multiline', 'no', 0, 0, 0, 0, 0, '', ''), + ('', LAST_INSERT_ID(), 'option', 3, 'label_box', 'no', 0, 0, 0, 0, 0, '', ''), + ('', LAST_INSERT_ID(), 'option', 4, 'label_fairname', 'no', 0, 0, 0, 0, 0, '', ''), + ('', LAST_INSERT_ID(), 'option', 5, 'label_logo', 'no', 0, 0, 0, 0, 0, '', ''), + ('', LAST_INSERT_ID(), 'option', 6, 'stock', 'nametag', 0, 0, 0, 0, 0, '', ''), + ('', LAST_INSERT_ID(), 'col', 0, 'pn', '', 5, 5, 30, 5, 1, '', 'left vcenter'), + ('', LAST_INSERT_ID(), 'col', 1, 'nom_awards_name_1', '', 5, 45, 50, 10, 3, '', 'left vcenter'), + ('', LAST_INSERT_ID(), 'col', 2, 'nom_awards_name_2', '', 5, 56, 50, 10, 3, '', 'left vcenter'), + ('', LAST_INSERT_ID(), 'col', 3, 'nom_awards_name_3', '', 5, 67, 50, 10, 3, '', 'left vcenter'), + ('', LAST_INSERT_ID(), 'col', 4, 'nom_awards_name_4', '', 5, 78, 50, 10, 3, '', 'left vcenter'), + ('', LAST_INSERT_ID(), 'col', 5, 'nom_awards_name_5', '', 5, 89, 50, 10, 3, '', 'left vcenter'), + ('', LAST_INSERT_ID(), 'col', 6, 'static_text', 'Judge 1', 5, 22, 30, 4, 1, '', 'left vcenter'), + ('', LAST_INSERT_ID(), 'col', 7, 'static_text', 'Judge 2', 5, 34, 30, 4, 1, '', 'left vcenter'), + ('', LAST_INSERT_ID(), 'col', 8, 'static_text', 'Safety Check', 42, 6, 12, 6, 2, '', 'left vcenter'), + ('', LAST_INSERT_ID(), 'col', 9, 'static_text', 'Judges: Please initial box when judging of project is complete', 70, 23, 28, 12, 4, '', 'left vcenter'), + ('', LAST_INSERT_ID(), 'col', 10, 'static_box', '', 0, 0, 100, 100, 1, '', 'center vcenter'), + ('', LAST_INSERT_ID(), 'col', 11, 'static_box', '', 55, 5, 40, 8, 1, '', 'center vcenter'), + ('', LAST_INSERT_ID(), 'col', 12, 'static_box', '', 22, 20, 40, 8, 1, '', 'center vcenter'), + ('', LAST_INSERT_ID(), 'col', 13, 'static_box', '', 22, 32, 40, 8, 1, '', 'center vcenter'), + ('', LAST_INSERT_ID(), 'col', 14, 'static_box', '', 55, 46, 40, 8, 1, '', 'center vcenter'), + ('', LAST_INSERT_ID(), 'col', 15, 'static_box', '', 55, 57, 40, 8, 1, '', 'center vcenter'), + ('', LAST_INSERT_ID(), 'col', 16, 'static_box', '', 55, 68, 40, 8, 1, '', 'center vcenter'), + ('', LAST_INSERT_ID(), 'col', 17, 'static_box', '', 55, 79, 40, 8, 1, '', 'center vcenter'), + ('', LAST_INSERT_ID(), 'col', 18, 'static_box', '', 55, 90, 40, 8, 1, '', 'center vcenter'), + ('', LAST_INSERT_ID(), 'col', 19, 'static_box', '', 0, 15, 100, 27, 1, '', 'center vcenter'), + ('', LAST_INSERT_ID(), 'sort', 0, 'pn', '', 0, 0, 0, 0, 1, '', ' '), + ('', LAST_INSERT_ID(), 'distinct', 0, 'pn', '', 0, 0, 0, 0, 1, '', ' '); diff --git a/lpdf.php b/lpdf.php index 0c78aac..8866e64 100644 --- a/lpdf.php +++ b/lpdf.php @@ -341,7 +341,7 @@ class lpdf if(in_array('vtop', $options)) $valign = 'top'; if(in_array('vcenter', $options)) $valign = 'center'; if(in_array('vbottom', $options)) $valign = 'bottom'; - if(in_array('boxtext', $options)) $boxtext = true; + if(in_array('label_box', $options)) $boxtext = true; /* Find the correct font size for the lineheight */ @@ -414,6 +414,23 @@ class lpdf } } + function addLabelBox($xp,$yp,$wp,$hp) + { + $xpos = ($xp * $this->label_width) /100; + $ypos = ($yp * $this->label_effective_height) / 100; + + $desired_width = ($this->label_width * $wp) / 100; + $desired_height = ($this->label_effective_height * $hp) / 100; + + pdf_rect($this->pdf, + $this->loc($this->label_current_xpos + $xpos), + $this->loc($this->label_current_ypos - ($ypos + $desired_height)), + $this->loc($desired_width), + $this->loc($desired_height)); + pdf_stroke($this->pdf); + } + + function newLabel($show_box=false, $show_fairname=false, $show_logo=false) { if($this->current_label_index==$this->labels_per_page)