diff --git a/include/class.pdf.php b/include/class.pdf.php index d87c66ba9c422b43292747168777ffbafd8f1a01..2257dcc17aa6641fabeeac32a3fcecc28bd7b2c0 100644 --- a/include/class.pdf.php +++ b/include/class.pdf.php @@ -28,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; @@ -183,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 0d9a8ced06a145b71f218af47be20c58fbfa27a1..7e53ec51bd10247932fbd6e416e4afed1939deee 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/footer.inc.php b/include/staff/footer.inc.php index 2591a55af87caf67b56208c27e7c9ceab678b6cc..d789c14474ef63caf5c06f61d60cdfb6df881bcc 100644 --- a/include/staff/footer.inc.php +++ b/include/staff/footer.inc.php @@ -12,5 +12,6 @@ if(is_object($thisstaff) && $thisstaff->isStaff()) { ?> <?php } ?> </div> +<div id="overlay"></div> </body> </html> diff --git a/include/staff/ticket-view.inc.php b/include/staff/ticket-view.inc.php index 8ba8eb617b5f77ab2a9bc124107f108a207423bc..281d2042074912267af746e38617f66c73b30c8b 100644 --- a/include/staff/ticket-view.inc.php +++ b/include/staff/ticket-view.inc.php @@ -43,8 +43,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> @@ -601,4 +605,41 @@ if(!$cfg->showNotesInline()) { ?> <?php } ?> </div> +<div style="display:none;" id="print-options"> + <h3>Ticket Print Options</h3> + <a class="close" href="">×</a> + <hr/> + <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> + <hr style="margin-top:3em"/> + <p class="full-width"> + <span class="buttons" style="float:left"> + <input type="reset" value="Reset"> + <input type="button" value="Cancel" class="close"> + </span> + <span class="buttons" style="float:right"> + <input type="submit" value="Print"> + </span> + </p> + </form> +</div> <script type="text/javascript" src="js/ticket.js"></script> diff --git a/include/upgrader/upgrade.inc.php b/include/upgrader/upgrade.inc.php index c17b1b9cdb5a0d52ca589d7a4918f94845b9458b..9e95af3ff030e87d3f1af20881f44b842fc7c769 100644 --- a/include/upgrader/upgrade.inc.php +++ b/include/upgrader/upgrade.inc.php @@ -31,7 +31,6 @@ $action=$upgrader->getNextAction(); <p>3. We can help, feel free to <a href="http://osticket.com/support/" target="_blank">contact us </a> for professional help.</p> </div> <div class="clear"></div> - <div id="overlay"></div> <div id="loading"> <h4><?php echo $action; ?></h4> Please wait... while we upgrade your osTicket installation! diff --git a/scp/css/scp.css b/scp/css/scp.css index b16510c017d732db511eb4b23ecc26e7ee8689f4..899d9caa4726ab6009a89a8c3ef52196d425c8a9 100644 --- a/scp/css/scp.css +++ b/scp/css/scp.css @@ -16,6 +16,10 @@ a { text-align:center; } +.full-width { + width: 100%; +} + .clear { clear:both; } @@ -1140,7 +1144,7 @@ time { margin-right:20px; } -/* Advanced Ticket Search */ +/* Advanced Search & Ticket print options */ #search_overlay { background:#000; @@ -1149,13 +1153,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 +1170,24 @@ time { z-index:1200; } -#advanced-search h3 { +#print-options { + width:500px; + height:250px; +} + +#print-options hr { + height: 1px; + border: 0; + background: #aaa; + background: -moz-linear-gradient(left, rgba(170,170,170,0) 0%, rgba(170,170,170,1) 10%, rgba(170,170,170,1) 90%, rgba(170,170,170,0) 100%); /* FF3.6+ */ + background: -webkit-gradient(linear, left top, right top, color-stop(0%,rgba(170,170,170,0)), color-stop(10%,rgba(170,170,170,1)), color-stop(90%,rgba(170,170,170,1)), color-stop(100%,rgba(170,170,170,0))); /* Chrome,Safari4+ */ + background: -o-linear-gradient(left, rgba(170,170,170,0) 0%,rgba(170,170,170,1) 10%,rgba(170,170,170,1) 90%,rgba(170,170,170,0) 100%); /* Opera 11.10+ */ + background: -ms-linear-gradient(left, rgba(170,170,170,0) 0%,rgba(170,170,170,1) 10%,rgba(170,170,170,1) 90%,rgba(170,170,170,0) 100%); /* IE10+ */ + background: linear-gradient(to right, rgba(170,170,170,0) 0%,rgba(170,170,170,1) 10%,rgba(170,170,170,1) 90%,rgba(170,170,170,0) 100%); /* W3C */ + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#00aaaaaa', endColorstr='#00aaaaaa',GradientType=1 ); /* IE6-9 */ +} + +#advanced-search h3, #print-options h3 { color:#2a67ac; font-size:20px; margin:0; @@ -1174,16 +1195,16 @@ 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; + padding-top:2em; width:100%; } @@ -1191,31 +1212,31 @@ time { display:none; } -#advanced-search fieldset { +#advanced-search fieldset, #print-options fieldset { margin:0; - padding:0.25em 0; + padding:0 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 +1272,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 +1288,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 +1359,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';