- 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).
This commit is contained in:
dave 2008-01-23 18:32:31 +00:00
parent 735e5e0999
commit 58df28ba9a
5 changed files with 159 additions and 7 deletions

View File

@ -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)

View File

@ -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(' ')"),

View File

@ -1 +1 @@
98
99

32
db/db.update.99.sql Normal file
View File

@ -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, '', ' ');

View File

@ -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)