Print, PDF, Email by PrintFriendly - Version 3.1.5

Version Description

  • Set button appearance in more flexible way. Remove styles that interfered with wordpress themes. Add shortcode for printfriendly button. Fix redirect to printfriendly.com link. Added custom css feature.
Download this release

Release Info

Developer printfriendly
Plugin Icon 128x128 Print, PDF, Email by PrintFriendly
Version 3.1.5
Comparing to
See all releases

Code changes from version 3.1.4 to 3.1.5

Files changed (5) hide show
  1. admin.css +2 -3
  2. admin.js +2 -9
  3. pf.php +109 -39
  4. readme.txt +39 -2
  5. screenshot-3.png +0 -0
admin.css CHANGED
@@ -51,9 +51,8 @@ select#javascript, select#website_protocol{
51
  display: inline-block;
52
  margin-bottom: 0;
53
  }
54
- input[type="radio"] {
55
- cursor: pointer;
56
-
57
  margin-right: 10px;
58
  vertical-align: middle;
59
  }
51
  display: inline-block;
52
  margin-bottom: 0;
53
  }
54
+ input[type="radio"], input[type="checkbox"] {
55
+ cursor: pointer;
 
56
  margin-right: 10px;
57
  vertical-align: middle;
58
  }
admin.js CHANGED
@@ -1,21 +1,14 @@
1
  // Throughout the admin I chose to use slow animations to make it clear that stuff is being hidden or shown depending on settings.
2
  jQuery(document).ready(function() {
3
  jQuery('.show_list').change(function() {
4
- if (jQuery('.show_list:checked').val()=='manual') {
5
- jQuery('#addmanual-help').show('slow');
6
  jQuery('.content_placement').hide('slow');
7
  jQuery('.content_placement input').attr('disabled','disabled');
8
  } else {
9
- jQuery('#addmanual-help').hide('slow');
10
  jQuery('.content_placement').show('slow');
11
  jQuery('.content_placement input').removeAttr('disabled');
12
  }
13
- });
14
- if (jQuery('.show_list:checked').val()=='manual') {
15
- jQuery('#addmanual-help').show('slow');
16
- jQuery('.content_placement').hide();
17
- jQuery('.content_placement input').attr('disabled','disabled');
18
- }
19
 
20
  jQuery('#colorSelector').ColorPicker({
21
  color: jQuery('#text_color').val(),
1
  // Throughout the admin I chose to use slow animations to make it clear that stuff is being hidden or shown depending on settings.
2
  jQuery(document).ready(function() {
3
  jQuery('.show_list').change(function() {
4
+ if (jQuery('.show_list:checked').length == 0) {
 
5
  jQuery('.content_placement').hide('slow');
6
  jQuery('.content_placement input').attr('disabled','disabled');
7
  } else {
 
8
  jQuery('.content_placement').show('slow');
9
  jQuery('.content_placement input').removeAttr('disabled');
10
  }
11
+ }).change();
 
 
 
 
 
12
 
13
  jQuery('#colorSelector').ColorPicker({
14
  color: jQuery('#text_color').val(),
pf.php CHANGED
@@ -4,11 +4,12 @@ Plugin Name: Print Friendly and PDF
4
  Plugin URI: http://www.printfriendly.com
5
  Description: PrintFriendly & PDF button for your website. Optimizes your pages and brand for print, pdf, and email.
6
  Name and URL are included to ensure repeat visitors and new visitors when printed versions are shared.
7
- Version: 3.1.4
8
  Author: Print Friendly
9
  Author URI: http://www.PrintFriendly.com
10
 
11
  Changelog :
 
12
  3.1.4 - Changed https url. Don't hide text change box when disabling css.
13
  3.1.3 - Fixed bug with disable css option
14
  3.1.2 - Added disable css option to admin settings.
@@ -75,7 +76,7 @@ if ( ! class_exists( 'PrintFriendly_WordPress' ) ) {
75
  * Database version, used to allow for easy upgrades to / additions in plugin options between plugin versions.
76
  * @var int
77
  */
78
- var $db_version = 2;
79
 
80
  /**
81
  * Settings page, used within the plugin to reliably load the plugins admin JS and CSS files only on the admin page.
@@ -104,7 +105,7 @@ if ( ! class_exists( 'PrintFriendly_WordPress' ) ) {
104
 
105
  add_action( 'wp_head', array( &$this, 'front_head' ) );
106
  // automaticaly add the link
107
- if( 'manual' != $this->options['show_list'] ) {
108
  add_filter( 'the_content', array( &$this, 'show_link' ) );
109
  add_filter( 'the_excerpt', array( &$this, 'show_link' ) );
110
  }
@@ -126,6 +127,7 @@ if ( ! class_exists( 'PrintFriendly_WordPress' ) ) {
126
 
127
  // Register a link to the settings page on the plugins overview page
128
  add_filter( 'plugin_action_links', array( &$this, 'filter_plugin_actions' ), 10, 2 );
 
129
  }
130
 
131
  /**
@@ -167,22 +169,13 @@ if ( ! class_exists( 'PrintFriendly_WordPress' ) ) {
167
  border: none;
168
  padding:0;
169
  margin-right: 6px;
170
- }
 
 
 
171
  .printfriendly a span{
172
  vertical-align: bottom;
173
  }
174
- .alignleft {
175
- float:left;
176
- margin: 5px 20px 20px 0;
177
- }
178
- .alignright {
179
- float:right;
180
- margin: 5px 0 20px 20px;
181
- }
182
- .aligncenter {
183
- text-align: center;
184
- margin: 5px auto 5px auto;
185
- }
186
  </style>
187
  <style type="text/css" media="print">
188
  .printfriendly {
@@ -220,6 +213,7 @@ if ( ! class_exists( 'PrintFriendly_WordPress' ) ) {
220
  var pfHeaderImgUrl = "<?php echo $image_url ?>";
221
  var pfHeaderTagline = "<?php echo $tagline ?>";
222
  var pfdisableClickToDel = "<?php echo $this->options['click_to_delete'] ?>";
 
223
 
224
  // PrintFriendly
225
  var e = document.createElement('script'); e.type="text/javascript";
@@ -239,11 +233,12 @@ if ( ! class_exists( 'PrintFriendly_WordPress' ) ) {
239
  * @return string $button or $content with the button added to the content when appropriate, just the content when button shouldn't be added or just button when called manually.
240
  */
241
  function show_link( $content = false ) {
242
- if( !$content && 'manual' != $this->options['show_list'] )
 
243
  return "";
244
 
245
  $onclick = 'onclick="window.print(); return false;"';
246
- $href = 'http://www.printfriendly.com/print/v2?url='.get_permalink();
247
 
248
  if ( isset( $this->options['javascript'] ) && $this->options['javascript'] == 'no' )
249
  $onclick = 'target="_blank"';
@@ -259,28 +254,29 @@ if ( ! class_exists( 'PrintFriendly_WordPress' ) ) {
259
 
260
  $button = apply_filters( 'printfriendly_button', '<div class="printfriendly'.$align.'"><a href="'.$href.'" rel="nofollow" '.$onclick.'>'.$this->button().'</a></div>' );
261
 
262
- if (is_singular())
 
263
  {
264
  // Hook the script call now, so it only get's loaded when needed, and need is determined by the user calling pf_button
265
  add_action( 'wp_footer', array( &$this, 'print_script_footer' ) );
266
- }
267
-
268
- if ( 'manual' == $this->options['show_list'] )
269
- {
270
  return $button;
271
  }
272
-
273
  else
274
  {
275
- if (is_single() || ( is_page() && 'posts' != $this->options['show_list'] ) || ((is_home() || is_category()) && 'all' == $this->options['show_list'] ))
 
 
 
 
276
  {
 
 
277
 
278
  if ( $this->options['content_placement'] == 'before' )
279
  return $button.$content;
280
  else
281
  return $content.$button;
282
  }
283
-
284
  else
285
  {
286
  return $content;
@@ -322,9 +318,6 @@ if ( ! class_exists( 'PrintFriendly_WordPress' ) ) {
322
  if ( !isset( $input['custom_image'] ) )
323
  $valid_input['custom_image'] = '';
324
 
325
- if ( !in_array( $input['show_list'], array( 'all', 'single', 'posts', 'manual') ) )
326
- $valid_input['show_list'] = 'all';
327
-
328
  if ( !in_array( $input['content_position'], array( 'none', 'left', 'center', 'right' ) ) )
329
  $valid_input['content_position'] = 'left';
330
 
@@ -386,7 +379,7 @@ if ( ! class_exists( 'PrintFriendly_WordPress' ) ) {
386
  */
387
  function admin_enqueue_scripts( $screen_id ) {
388
  if ( $this->settings_page == $screen_id ) {
389
- $ver = '3.1.4';
390
  wp_register_script( 'pf-color-picker', plugins_url( 'colorpicker.js', __FILE__ ), array( 'jquery', 'media-upload' ), $ver );
391
  wp_register_script( 'pf-admin-js', plugins_url( 'admin.js', __FILE__ ), array( 'jquery', 'media-upload' ), $ver );
392
 
@@ -435,7 +428,11 @@ if ( ! class_exists( 'PrintFriendly_WordPress' ) ) {
435
  'margin_right' => '12',
436
  'margin_bottom' => '12',
437
  'margin_left' => '12',
438
- 'show_list' => 'single',
 
 
 
 
439
  'text_color' => '#6D9F00',
440
  'text_size' => 14,
441
  'logo' => 'favicon',
@@ -444,7 +441,8 @@ if ( ! class_exists( 'PrintFriendly_WordPress' ) ) {
444
  'click_to_delete' => '0', // 0 - allow, 1 - do not allow
445
  'website_protocol' => 'http',
446
  'password_protected' => 'no',
447
- 'javascript' => 'yes'
 
448
  );
449
 
450
  // Check whether the old badly named singular options are there, if so, use the data and delete them.
@@ -468,8 +466,6 @@ if ( ! class_exists( 'PrintFriendly_WordPress' ) ) {
468
  * @since 3.0
469
  */
470
  function upgrade() {
471
- // Do stuff
472
-
473
  // update options to version 2
474
  if($this->options['db_version'] < 2) {
475
 
@@ -512,6 +508,41 @@ if ( ! class_exists( 'PrintFriendly_WordPress' ) ) {
512
  $this->options = array_merge($this->options, $additional_options);
513
  }
514
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
515
  $this->options['db_version'] = $this->db_version;
516
  update_option( $this->option_name, $this->options );
517
  }
@@ -631,6 +662,36 @@ if ( ! class_exists( 'PrintFriendly_WordPress' ) ) {
631
  }
632
  }
633
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
634
 
635
  /**
636
  * Like the WordPress selected() function but it doesn't throw notices when the array key isn't set and uses the plugins options array.
@@ -767,11 +828,13 @@ if ( ! class_exists( 'PrintFriendly_WordPress' ) ) {
767
  </div>
768
  </div>
769
  <div id="pages">
770
- <label><input type="radio" class="show_list" name="<?php echo $this->option_name; ?>[show_list]" value="all" <?php $this->checked( 'show_list', 'all'); ?>/> <?php _e( "Homepage, Posts, and Pages", $this->hook ); ?></label>
771
- <label><input type="radio" class="show_list" name="<?php echo $this->option_name; ?>[show_list]" value="single" <?php $this->checked( 'show_list', 'single'); ?>/> <?php _e( "Posts and Pages", $this->hook ); ?></label>
772
- <label><input type="radio" class="show_list" name="<?php echo $this->option_name; ?>[show_list]" value="posts" <?php $this->checked( 'show_list', 'posts'); ?>/> <?php _e( "Posts", $this->hook ); ?></label>
773
- <label><input type="radio" class="show_list" name="<?php echo $this->option_name; ?>[show_list]" value="manual" <?php $this->checked( 'show_list', 'manual'); ?> /> <?php _e( "Use shortcode in your template", $this->hook ); ?>
774
- </label>
 
 
775
  <textarea id="pf-shortcode" class="code" rows="2" cols="40">&lt;?php if(function_exists('pf_show_link')){echo pf_show_link();} ?&gt;</textarea>
776
  </div>
777
  </div>
@@ -796,6 +859,10 @@ if ( ! class_exists( 'PrintFriendly_WordPress' ) ) {
796
  <option value="1" <?php selected( $this->options['click_to_delete'], '1' ); ?>><?php _e( "Not Allow", $this->hook ); ?></option>
797
  </select>
798
  </label>
 
 
 
 
799
  </div>
800
 
801
  <!--Section 4 WebMaster-->
@@ -846,6 +913,9 @@ if ( ! class_exists( 'PrintFriendly_WordPress' ) ) {
846
  $printfriendly = new PrintFriendly_WordPress();
847
  }
848
 
 
 
 
849
  /**
850
  * Convenience function for use in templates.
851
  *
4
  Plugin URI: http://www.printfriendly.com
5
  Description: PrintFriendly & PDF button for your website. Optimizes your pages and brand for print, pdf, and email.
6
  Name and URL are included to ensure repeat visitors and new visitors when printed versions are shared.
7
+ Version: 3.1.5
8
  Author: Print Friendly
9
  Author URI: http://www.PrintFriendly.com
10
 
11
  Changelog :
12
+ 3.1.5 - Set button appearance in more flexible way. Remove styles that interfered with wordpress themes. Add shortcode for printfriendly button. Fix redirect to printfriendly.com link. Added custom css feature.
13
  3.1.4 - Changed https url. Don't hide text change box when disabling css.
14
  3.1.3 - Fixed bug with disable css option
15
  3.1.2 - Added disable css option to admin settings.
76
  * Database version, used to allow for easy upgrades to / additions in plugin options between plugin versions.
77
  * @var int
78
  */
79
+ var $db_version = 3;
80
 
81
  /**
82
  * Settings page, used within the plugin to reliably load the plugins admin JS and CSS files only on the admin page.
105
 
106
  add_action( 'wp_head', array( &$this, 'front_head' ) );
107
  // automaticaly add the link
108
+ if( !$this->is_manual() ) {
109
  add_filter( 'the_content', array( &$this, 'show_link' ) );
110
  add_filter( 'the_excerpt', array( &$this, 'show_link' ) );
111
  }
127
 
128
  // Register a link to the settings page on the plugins overview page
129
  add_filter( 'plugin_action_links', array( &$this, 'filter_plugin_actions' ), 10, 2 );
130
+
131
  }
132
 
133
  /**
169
  border: none;
170
  padding:0;
171
  margin-right: 6px;
172
+ box-shadow: none;
173
+ -webkit-box-shadow: none;
174
+ -moz-box-shadow: none;
175
+ }
176
  .printfriendly a span{
177
  vertical-align: bottom;
178
  }
 
 
 
 
 
 
 
 
 
 
 
 
179
  </style>
180
  <style type="text/css" media="print">
181
  .printfriendly {
213
  var pfHeaderImgUrl = "<?php echo $image_url ?>";
214
  var pfHeaderTagline = "<?php echo $tagline ?>";
215
  var pfdisableClickToDel = "<?php echo $this->options['click_to_delete'] ?>";
216
+ var pfCustomCSS = "<?php echo $this->options['custom_css_url'] ?>";
217
 
218
  // PrintFriendly
219
  var e = document.createElement('script'); e.type="text/javascript";
233
  * @return string $button or $content with the button added to the content when appropriate, just the content when button shouldn't be added or just button when called manually.
234
  */
235
  function show_link( $content = false ) {
236
+ $is_manual = $this->is_manual();
237
+ if( !$content && !$is_manual )
238
  return "";
239
 
240
  $onclick = 'onclick="window.print(); return false;"';
241
+ $href = 'http://www.printfriendly.com/print?url='.get_permalink();
242
 
243
  if ( isset( $this->options['javascript'] ) && $this->options['javascript'] == 'no' )
244
  $onclick = 'target="_blank"';
254
 
255
  $button = apply_filters( 'printfriendly_button', '<div class="printfriendly'.$align.'"><a href="'.$href.'" rel="nofollow" '.$onclick.'>'.$this->button().'</a></div>' );
256
 
257
+
258
+ if ( $is_manual )
259
  {
260
  // Hook the script call now, so it only get's loaded when needed, and need is determined by the user calling pf_button
261
  add_action( 'wp_footer', array( &$this, 'print_script_footer' ) );
 
 
 
 
262
  return $button;
263
  }
 
264
  else
265
  {
266
+ if ( (is_page() && isset($this->options['show_on_pages']))
267
+ || (is_home() && isset($this->options['show_on_homepage']))
268
+ || (is_tax() && isset($this->options['show_on_taxonomies']))
269
+ || (is_category() && isset($this->options['show_on_categories']))
270
+ || (is_single() && isset($this->options['show_on_posts'])) )
271
  {
272
+ // Hook the script call now, so it only get's loaded when needed, and need is determined by the user calling pf_button
273
+ add_action( 'wp_footer', array( &$this, 'print_script_footer' ) );
274
 
275
  if ( $this->options['content_placement'] == 'before' )
276
  return $button.$content;
277
  else
278
  return $content.$button;
279
  }
 
280
  else
281
  {
282
  return $content;
318
  if ( !isset( $input['custom_image'] ) )
319
  $valid_input['custom_image'] = '';
320
 
 
 
 
321
  if ( !in_array( $input['content_position'], array( 'none', 'left', 'center', 'right' ) ) )
322
  $valid_input['content_position'] = 'left';
323
 
379
  */
380
  function admin_enqueue_scripts( $screen_id ) {
381
  if ( $this->settings_page == $screen_id ) {
382
+ $ver = '3.1.5';
383
  wp_register_script( 'pf-color-picker', plugins_url( 'colorpicker.js', __FILE__ ), array( 'jquery', 'media-upload' ), $ver );
384
  wp_register_script( 'pf-admin-js', plugins_url( 'admin.js', __FILE__ ), array( 'jquery', 'media-upload' ), $ver );
385
 
428
  'margin_right' => '12',
429
  'margin_bottom' => '12',
430
  'margin_left' => '12',
431
+ 'show_on_posts' => 'on',
432
+ 'show_on_pages' => 'on',
433
+ 'show_on_homepage' => 'on',
434
+ 'show_on_categories' => 'on',
435
+ 'show_on_taxonomies' => 'on',
436
  'text_color' => '#6D9F00',
437
  'text_size' => 14,
438
  'logo' => 'favicon',
441
  'click_to_delete' => '0', // 0 - allow, 1 - do not allow
442
  'website_protocol' => 'http',
443
  'password_protected' => 'no',
444
+ 'javascript' => 'yes',
445
+ 'custom_css_url' => '',
446
  );
447
 
448
  // Check whether the old badly named singular options are there, if so, use the data and delete them.
466
  * @since 3.0
467
  */
468
  function upgrade() {
 
 
469
  // update options to version 2
470
  if($this->options['db_version'] < 2) {
471
 
508
  $this->options = array_merge($this->options, $additional_options);
509
  }
510
 
511
+ // update options to version 3
512
+ if($this->options['db_version'] < 3) {
513
+
514
+ $old_show_on = $this->options['show_list'];
515
+ // 'manual' setting
516
+ $additional_options = array('custom_css_url' => '');
517
+
518
+ if($old_show_on == 'all') {
519
+ $additional_options = array(
520
+ 'show_on_pages' => 'on',
521
+ 'show_on_posts' => 'on',
522
+ 'show_on_homepage' => 'on',
523
+ 'show_on_categories' => 'on',
524
+ 'show_on_taxonomies' => 'on'
525
+ );
526
+ }
527
+
528
+ if($old_show_on == 'single') {
529
+ $additional_options = array(
530
+ 'show_on_pages' => 'on',
531
+ 'show_on_posts' => 'on'
532
+ );
533
+ }
534
+
535
+ if($old_show_on == 'posts') {
536
+ $additional_options = array(
537
+ 'show_on_posts' => 'on',
538
+ );
539
+ }
540
+
541
+ unset($this->options['show_list']);
542
+
543
+ $this->options = array_merge($this->options, $additional_options);
544
+ }
545
+
546
  $this->options['db_version'] = $this->db_version;
547
  update_option( $this->option_name, $this->options );
548
  }
662
  }
663
  }
664
 
665
+ /**
666
+ * Helper for creating checkboxes.
667
+ *
668
+ * @since 3.1.5
669
+ * @param string $name string used for various parts of checkbox
670
+ *
671
+ */
672
+ function create_checkbox($name) {
673
+ echo '<input type="checkbox" class="show_list" name="' . $this->option_name . '[show_on_' . $name . ']" value="on" ';
674
+ $this->checked( 'show_on_' . $name, 'on');
675
+ echo ' />';
676
+ _e( ucfirst($name), $this->hook );
677
+ }
678
+
679
+
680
+ /**
681
+ * Helper that checks if any of the content types is checked to display pf button.
682
+ *
683
+ * @since 3.1.5
684
+ * @return boolean true if none of the content types is checked
685
+ *
686
+ */
687
+ function is_manual() {
688
+ return !(isset($this->options['show_on_posts']) ||
689
+ isset($this->options['show_on_pages']) ||
690
+ isset($this->options['show_on_homepage']) ||
691
+ isset($this->options['show_on_categories']) ||
692
+ isset($this->options['show_on_taxonomies']));
693
+ }
694
+
695
 
696
  /**
697
  * Like the WordPress selected() function but it doesn't throw notices when the array key isn't set and uses the plugins options array.
828
  </div>
829
  </div>
830
  <div id="pages">
831
+ <label><?php $this->create_checkbox('pages'); ?></label>
832
+ <label><?php $this->create_checkbox('posts'); ?></label>
833
+ <label><?php $this->create_checkbox('homepage'); ?></label>
834
+ <label><?php $this->create_checkbox('categories'); ?></label>
835
+ <label><?php $this->create_checkbox('taxonomies'); ?></label>
836
+ <label><strong>Note: </strong><em><?php _e( "Uncheck all of the above to use the shortcodes below:", $this->hook ); ?></em></label>
837
+ <label><?php _e( "Use [printfriendly] inside your page/article or put the following code in your template:", $this->hook ); ?></label>
838
  <textarea id="pf-shortcode" class="code" rows="2" cols="40">&lt;?php if(function_exists('pf_show_link')){echo pf_show_link();} ?&gt;</textarea>
839
  </div>
840
  </div>
859
  <option value="1" <?php selected( $this->options['click_to_delete'], '1' ); ?>><?php _e( "Not Allow", $this->hook ); ?></option>
860
  </select>
861
  </label>
862
+ <label for="custom_css_url">
863
+ <?php _e( "Custom css url", $this->hook ); ?>
864
+ <input id="custom_css_url" type="text" class="regular-text" name="<?php echo $this->option_name; ?>[custom_css_url]" value="<?php $this->val( 'custom_css_url' ); ?>" />
865
+ </label>
866
  </div>
867
 
868
  <!--Section 4 WebMaster-->
913
  $printfriendly = new PrintFriendly_WordPress();
914
  }
915
 
916
+ // Add shortcode for printfriendly button
917
+ add_shortcode( 'printfriendly', 'pf_show_link' );
918
+
919
  /**
920
  * Convenience function for use in templates.
921
  *
readme.txt CHANGED
@@ -2,8 +2,8 @@
2
  Contributors: printfriendly,joostdevalk
3
  Tags: print, pdf, printer, printing, printable, widget, plugin
4
  Requires at least: 2.8
5
- Tested up to: 3.4.2
6
- Stable tag: 3.1.4
7
 
8
  The #1 Print and PDF button for your WordPress site. Printer Friendly pages without coding, css, or print.css. Fast, easy, and professional.
9
 
@@ -30,6 +30,38 @@ The Print Friendly & PDF button automatically creates printer friendly and PDF v
30
  * You can Print or get a PDF.
31
  * Edit the page before printing or getting a PDF: remove the images and paragraphs you don't need to save ink!
32
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
33
  PrintFriendly and PDF is the #1 print optimization technology, **as featured in [Lifehacker](http://lifehacker.com/5272212/print-friendly-optimizes-web-pages-for-printing "PrintFriendly & PDF in Lifehacker"), [Mashable](http://mashable.com/2009/05/18/print-friendly/ "PrintFriendly & PDF in Mashable") & [makeuseof](http://www.makeuseof.com/dir/printfriendly-save-on-paper-and-ink/#comment-95052)**.
34
 
35
  **Give PrintFriendly & PDF a test drive at [PrintFriendly.com](http://www.printfriendly.com "PrintFriendly & PDF")**
@@ -62,9 +94,14 @@ If you have any other issues with the plugin or the PrintFriendly widget, please
62
 
63
  1. The Print Friendly widget optimizes and formats your pages for print. Users can remove images and text before printing plus get a PDF
64
  2. The Settings Page: choose your print button, text link, or use your own text or graphic.
 
65
 
66
  == Changelog ==
67
 
 
 
 
 
68
  = 3.1.4 =
69
 
70
  * Changed https url. Don't hide text change box when disabling css.
2
  Contributors: printfriendly,joostdevalk
3
  Tags: print, pdf, printer, printing, printable, widget, plugin
4
  Requires at least: 2.8
5
+ Tested up to: 3.5
6
+ Stable tag: 3.1.5
7
 
8
  The #1 Print and PDF button for your WordPress site. Printer Friendly pages without coding, css, or print.css. Fast, easy, and professional.
9
 
30
  * You can Print or get a PDF.
31
  * Edit the page before printing or getting a PDF: remove the images and paragraphs you don't need to save ink!
32
 
33
+ **Localized for 25 Languages**
34
+
35
+ PrintFriendly & PDF automatically changes language to match your visitor's language settings. For example, if your browser is set to Spanish, then PrintFriendly will use Spanish.
36
+
37
+ Supported languages:
38
+
39
+ * Danish
40
+ * German
41
+ * English
42
+ * Spanish
43
+ * Estonian
44
+ * French
45
+ * Hebrew
46
+ * Croatian
47
+ * Hungarian
48
+ * Italian
49
+ * Korean
50
+ * Lithuanian
51
+ * Dutch/Netherlands
52
+ * Polish
53
+ * Portuguese
54
+ * Slovak
55
+ * Slovenian
56
+ * Serbian
57
+ * Swedish
58
+ * Thailand
59
+ * Turkish
60
+ * Chinese Simplified
61
+ * Chinese Traditional
62
+
63
+ [Learn more...](blog.printfriendly.com/2012/06/print-friendly-speaks-your-language.html)
64
+
65
  PrintFriendly and PDF is the #1 print optimization technology, **as featured in [Lifehacker](http://lifehacker.com/5272212/print-friendly-optimizes-web-pages-for-printing "PrintFriendly & PDF in Lifehacker"), [Mashable](http://mashable.com/2009/05/18/print-friendly/ "PrintFriendly & PDF in Mashable") & [makeuseof](http://www.makeuseof.com/dir/printfriendly-save-on-paper-and-ink/#comment-95052)**.
66
 
67
  **Give PrintFriendly & PDF a test drive at [PrintFriendly.com](http://www.printfriendly.com "PrintFriendly & PDF")**
94
 
95
  1. The Print Friendly widget optimizes and formats your pages for print. Users can remove images and text before printing plus get a PDF
96
  2. The Settings Page: choose your print button, text link, or use your own text or graphic.
97
+ 3. Localization example: Spanish
98
 
99
  == Changelog ==
100
 
101
+ = 3.1.5 =
102
+
103
+ * Set button appearance in more flexible way. Remove styles that interfered with wordpress themes. Add shortcode for printfriendly button. Fix redirect to printfriendly.com link. Added custom css feature.
104
+
105
  = 3.1.4 =
106
 
107
  * Changed https url. Don't hide text change box when disabling css.
screenshot-3.png ADDED
Binary file