diff --git a/include/class.pdf.php b/include/class.pdf.php index 370462623bfb28df4043fc54c84237c94e708dca..2257dcc17aa6641fabeeac32a3fcecc28bd7b2c0 100644 --- a/include/class.pdf.php +++ b/include/class.pdf.php @@ -17,7 +17,6 @@ define('THIS_DIR', str_replace('\\\\', '/', realpath(dirname(__FILE__))) . '/'); //Include path.. define('FPDF_DIR', THIS_DIR . 'fpdf/'); define('FPDF_FONTPATH', FPDF_DIR . 'font/'); //fonts directory. -//session_cache_limiter('private'); require (FPDF_DIR . 'fpdf.php'); class Ticket2PDF extends FPDF @@ -29,10 +28,11 @@ class Ticket2PDF extends FPDF var $ticket = null; - function Ticket2PDF($ticket, $notes=false) { + function Ticket2PDF($ticket, $psize='Letter', $notes=false) { global $thisstaff; - parent::FPDF('P', 'mm', $thisstaff->getDefaultPaperSize()); + + parent::FPDF('P', 'mm', $psize); $this->ticket = $ticket; @@ -184,7 +184,7 @@ class Ticket2PDF extends FPDF 'R'=>array(255, 224, 179), 'N'=>array(250, 250, 210)); //Get ticket thread - if(($entries = $ticket->getThreadWithNotes())) { + if(($entries = $ticket->getThread(($this->includenotes)))) { foreach($entries as $entry) { $color = $colors[$entry['thread_type']]; diff --git a/include/class.ticket.php b/include/class.ticket.php index 80b6a60ac4a2b989fddb2fb3ced7ab6e98a7d7ad..8d8f2065eddc1da25e93f140d68de3c90f4e0323 100644 --- a/include/class.ticket.php +++ b/include/class.ticket.php @@ -1552,10 +1552,12 @@ class Ticket{ } //Print ticket... export the ticket thread as PDF. - function pdfExport() { - $pdf = new Ticket2PDF($this, true); + function pdfExport($psize='Letter', $notes=false) { + $pdf = new Ticket2PDF($this, $psize, $notes); $name='Ticket-'.$this->getExtId().'.pdf'; $pdf->Output($name, 'I'); + //Remember what the user selected - for autoselect on the next print. + $_SESSION['PAPER_SIZE'] = $psize; exit; } diff --git a/include/staff/ticket-view.inc.php b/include/staff/ticket-view.inc.php index cb7db2a539b2ff01bdbe31a3012cb676350fc332..a63eea939dfd832c5a91cc0e0442946d8dc3a5ca 100644 --- a/include/staff/ticket-view.inc.php +++ b/include/staff/ticket-view.inc.php @@ -40,8 +40,12 @@ if($ticket->isOverdue()) <a href="tickets.php?id=<?php echo $ticket->getId(); ?>" title="Reload" class="reload">Reload</a></h2> </td> <td width="50%" class="right_align"> - <a href="tickets.php?id=<?php echo $ticket->getId(); ?>&a=print" title="Print Ticket" class="print">Print Ticket</a> - <a href="tickets.php?id=<?php echo $ticket->getId(); ?>&a=edit" title="Edit Ticket" class="edit">Edit Ticket</a> + <a href="tickets.php?id=<?php echo $ticket->getId(); ?>&a=print" title="Print Ticket" class="print" id="ticket-print">Print Ticket</a> + <?php + if($thisstaff->canEditTickets()) { ?> + <a href="tickets.php?id=<?php echo $ticket->getId(); ?>&a=edit" title="Edit Ticket" class="edit">Edit Ticket</a> + <?php + } ?> </td> </tr> </table> @@ -598,4 +602,37 @@ if(!$cfg->showNotesInline()) { ?> <?php } ?> </div> +<div style="display:none;" id="print-options"> + <h3>Ticket Print Options</h3> + <a class="close" href="">×</a> + <form action="tickets.php?id=<?php echo $ticket->getId(); ?>" method="post" id="print-form" name="print-form"> + <input type="hidden" name="a" value="print"> + <input type="hidden" name="id" value="<?php echo $ticket->getId(); ?>"> + <fieldset class="notes"> + <label for="notes">Print Notes:</label> + <input type="checkbox" id="notes" name="notes" value="1"> Print <b>Internal</b> Notes/Comments + </fieldset> + <fieldset> + <label for="psize">Paper Size:</label> + <select id="psize" name="psize"> + <option value="">— Select Print Paper Size —</option> + <?php + $options=array('Letter', 'Legal', 'A4', 'A3'); + $psize =$_SESSION['PAPER_SIZE']?$_SESSION['PAPER_SIZE']:$thisstaff->getDefaultPaperSize(); + foreach($options as $v) { + echo sprintf('<option value="%s" %s>%s</option>', + $v,($psize==$v)?'selected="selected"':'', $v); + } + ?> + </select> + </fieldset> + <p class="centered"> + <span class="buttons"> + <input type="submit" value="Print"> + <input type="reset" value="Reset"> + <input type="button" value="Cancel" class="close"> + </span> + </p> + </form> +</div> <script type="text/javascript" src="js/ticket.js"></script> diff --git a/scp/css/scp.css b/scp/css/scp.css index b16510c017d732db511eb4b23ecc26e7ee8689f4..7e42b1ac6d7b74bde3c7fe84d6d0d47d2cdf3448 100644 --- a/scp/css/scp.css +++ b/scp/css/scp.css @@ -1140,7 +1140,7 @@ time { margin-right:20px; } -/* Advanced Ticket Search */ +/* Advanced Search & Ticket print options */ #search_overlay { background:#000; @@ -1149,13 +1149,13 @@ time { z-index:1000; } -#advanced-search, #advanced-search * { +#advanced-search, #advanced-search *, #print-options, #print-options * { box-sizing: border-box; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; } -#advanced-search { +#advanced-search, #print-options { position:absolute; padding:1em; width:640px; @@ -1166,7 +1166,12 @@ time { z-index:1200; } -#advanced-search h3 { +#print-options { + width:500px; + height:250px; +} + +#advanced-search h3, #print-options h3 { color:#2a67ac; font-size:20px; margin:0; @@ -1174,14 +1179,14 @@ time { display:inline-block; } -#advanced-search a.close { +#advanced-search a.close, #print-options a.close { display:inline-block; float:right; font-size:16px; color:#777; } -#advanced-search form { +#advanced-search form, #print-options form { clear:both; padding:2em 0 1em 0; width:100%; @@ -1191,31 +1196,31 @@ time { display:none; } -#advanced-search fieldset { +#advanced-search fieldset, #print-options fieldset { margin:0; padding:0.25em 0; border:none; overflow:hidden; } -#advanced-search label { +#advanced-search label, #print-options label { width:100px; display:inline-block; text-align:right; padding:10px; } -#advanced-search fieldset input { +#advanced-search fieldset input, #print-options fieldset input { border:1px solid #ccc; background:#fff; } -#advanced-search fieldset select { +#advanced-search fieldset select, #print-options fieldset select { width:170px; display:inline-block; } -#advanced-search fieldset span { +#advanced-search fieldset span, #print-options fieldset span { width:50px; display:inline-block; text-align:center; @@ -1251,7 +1256,10 @@ time { #advanced-search input[type="submit"], #advanced-search input[type="reset"], -#advanced-search input[type="button"] +#advanced-search input[type="button"], +#print-options input[type="submit"], +#print-options input[type="reset"], +#print-options input[type="button"] { display:inline-block; margin:0; @@ -1264,7 +1272,10 @@ time { color: #333; } -#advanced-search input[type="reset"], #advanced-search input[type="button"] { +#advanced-search input[type="reset"], +#advanced-search input[type="button"], +#print-options input[type="reset"], +#print-options input[type="button"] { opacity:0.7; } @@ -1332,7 +1343,7 @@ ul.progress li.no small {color:red;} #bar.error { background: #ffd; text-align: center; color: #a00; font-weight: bold; } /* Overlay */ -#overlay { display: none; position: fixed; background: #000; z-index: 2000; } +#overlay { display: none; position: fixed; background: #000; z-index: 1000; } #loading { padding: 10px 10px 10px 60px; width: 300px; height: 100px; background: url('../images/ajax-loader.gif?1312925608') 10px 50% no-repeat white; position: fixed; display: none; z-index: 3000; } #loading h4 { margin: 3px 0 0 0; padding: 0; color: #d80; } diff --git a/scp/js/scp.js b/scp/js/scp.js index b31f673f0d9f7119768846bae078d11770ed18fc..f5db29a936089b72c2d91066c645de3db3af750a 100644 --- a/scp/js/scp.js +++ b/scp/js/scp.js @@ -245,7 +245,7 @@ $(document).ready(function(){ }); /* advanced search */ - $("#overlay").css({ + $("#overlay, #search_overlay").css({ opacity : 0.3, top : 0, left : 0, @@ -261,14 +261,14 @@ $(document).ready(function(){ $('#go-advanced').click(function(e) { e.preventDefault(); $('#result-count').html(''); - $('#overlay').show(); + $('#search_overlay').show(); $('#advanced-search').show(); }); $('#advanced-search').delegate('a.close, input.close', 'click', function(e) { e.preventDefault(); $('#advanced-search').hide() - $('#overlay').hide(); + $('#search_overlay').hide(); }).delegate('#status', 'change', function() { switch($(this).val()) { case 'closed': diff --git a/scp/js/ticket.js b/scp/js/ticket.js index 22a97d623bd34d0ef664b012c1cd040e9f55c15e..6dab24ded5534fed9777b7fa62fac42c3f119e51 100644 --- a/scp/js/ticket.js +++ b/scp/js/ticket.js @@ -316,6 +316,25 @@ jQuery(function($) { } } }); + + //Ticket print options + $("#print-options").css({ + top : ($(window).height() /5), + left : ($(window).width() / 2 - 300) + }); + + $('a#ticket-print').click(function(e) { + e.preventDefault(); + $('#overlay').show(); + $('#print-options').show(); + return false; + }); + + $('#print-options').delegate('a.close, input.close', 'click', function(e) { + e.preventDefault(); + $('#print-options').hide() + $('#overlay').hide(); + }); //Start watching the form for activity. autoLock.Init(); diff --git a/scp/tickets.php b/scp/tickets.php index 7cc7740bb677eeff2bddd177697a661c7da2996d..0feacf86429846326f98430c4c465c38262295c4 100644 --- a/scp/tickets.php +++ b/scp/tickets.php @@ -456,7 +456,7 @@ if($ticket) { $inc = 'ticket-view.inc.php'; if($_REQUEST['a']=='edit' && $thisstaff->canEditTickets()) $inc = 'ticket-edit.inc.php'; - elseif($_REQUEST['a'] == 'print' && !$ticket->pdfExport()) + elseif($_REQUEST['a'] == 'print' && !$ticket->pdfExport($_REQUEST['psize'], $_REQUEST['notes'])) $errors['err'] = 'Internal error: Unable to export the ticket to PDF for print.'; } else { $inc = 'tickets.inc.php';