Version Description
- Implemented both Classic Google Analytics and Google Universal Analytics code
- Fixed WP Slimstat conflict
Download this release
Release Info
| Developer | printfriendly |
| Plugin | |
| Version | 3.3.10 |
| Comparing to | |
| See all releases | |
Code changes from version 3.3.9 to 3.3.10
- pf.php +171 -172
- readme.txt +7 -2
pf.php
CHANGED
|
@@ -5,12 +5,13 @@ Plugin Name: Print Friendly and PDF
|
|
| 5 |
Plugin URI: http://www.printfriendly.com
|
| 6 |
Description: PrintFriendly & PDF button for your website. Optimizes your pages and brand for print, pdf, and email.
|
| 7 |
Name and URL are included to ensure repeat visitors and new visitors when printed versions are shared.
|
| 8 |
-
Version: 3.3.
|
| 9 |
Author: Print Friendly
|
| 10 |
Author URI: http://www.PrintFriendly.com
|
| 11 |
|
| 12 |
Changelog :
|
| 13 |
-
3.3.
|
|
|
|
| 14 |
3.3.8 - Shortcode Bug fix, urlencode button href
|
| 15 |
3.3.7 - Readme.txt update
|
| 16 |
3.3.6 - Fixed JS optimization Bug
|
|
@@ -135,10 +136,10 @@ if ( ! class_exists( 'PrintFriendly_WordPress' ) ) {
|
|
| 135 |
add_filter( 'the_content', array( &$this, 'show_link' ) );
|
| 136 |
add_filter( 'the_excerpt', array( &$this, 'show_link' ) );
|
| 137 |
}
|
| 138 |
-
|
| 139 |
-
|
| 140 |
-
|
| 141 |
-
|
| 142 |
|
| 143 |
if ( is_admin() ) {
|
| 144 |
// Hook into init for registration of the option and the language files
|
|
@@ -155,45 +156,45 @@ if ( ! class_exists( 'PrintFriendly_WordPress' ) ) {
|
|
| 155 |
|
| 156 |
// Register a link to the settings page on the plugins overview page
|
| 157 |
add_filter( 'plugin_action_links', array( &$this, 'filter_plugin_actions' ), 10, 2 );
|
| 158 |
-
|
| 159 |
}
|
| 160 |
|
| 161 |
|
| 162 |
-
|
| 163 |
-
|
| 164 |
-
|
| 165 |
-
|
| 166 |
-
|
| 167 |
function use_wp_content_hook() {
|
| 168 |
-
|
| 169 |
-
|
| 170 |
-
|
| 171 |
-
|
| 172 |
-
|
| 173 |
-
|
| 174 |
-
|
| 175 |
-
|
| 176 |
-
|
| 177 |
-
|
| 178 |
-
|
| 179 |
-
|
| 180 |
-
|
| 181 |
-
|
| 182 |
-
|
| 183 |
-
|
| 184 |
-
|
| 185 |
-
|
| 186 |
-
|
| 187 |
-
|
| 188 |
-
|
| 189 |
-
|
| 190 |
-
|
| 191 |
-
|
| 192 |
-
|
| 193 |
-
|
| 194 |
-
|
| 195 |
-
|
| 196 |
-
|
| 197 |
/**
|
| 198 |
* PHP 4 Compatible Constructor
|
| 199 |
*
|
|
@@ -288,7 +289,7 @@ if ( ! class_exists( 'PrintFriendly_WordPress' ) ) {
|
|
| 288 |
|
| 289 |
?>
|
| 290 |
<script type="text/javascript">
|
| 291 |
-
|
| 292 |
var pfHeaderImgUrl = '<?php echo esc_js(esc_url_raw($image_url)); ?>';
|
| 293 |
var pfHeaderTagline = '<?php echo esc_js($tagline); ?>';
|
| 294 |
var pfdisableClickToDel = '<?php echo esc_js($this->options['click_to_delete']); ?>';
|
|
@@ -298,17 +299,17 @@ if ( ! class_exists( 'PrintFriendly_WordPress' ) ) {
|
|
| 298 |
var pfDisablePDF = '<?php echo esc_js($this->options['pdf']); ?>';
|
| 299 |
var pfDisablePrint = '<?php echo esc_js($this->options['print']); ?>';
|
| 300 |
var pfCustomCSS = '<?php echo esc_js($this->options['custom_css_url']); ?>';
|
| 301 |
-
|
| 302 |
var e = document.createElement('script'); e.type="text/javascript";
|
| 303 |
-
|
| 304 |
-
|
| 305 |
-
|
| 306 |
-
|
| 307 |
-
|
| 308 |
-
|
| 309 |
e.src = js;
|
| 310 |
document.getElementsByTagName('head')[0].appendChild(e);
|
| 311 |
-
|
| 312 |
</script>
|
| 313 |
<?php
|
| 314 |
}
|
|
@@ -327,14 +328,14 @@ if ( ! class_exists( 'PrintFriendly_WordPress' ) ) {
|
|
| 327 |
return "";
|
| 328 |
|
| 329 |
|
| 330 |
-
|
| 331 |
if ( $is_manual )
|
| 332 |
{
|
| 333 |
// Hook the script call now, so it only get's loaded when needed, and need is determined by the user calling pf_button
|
| 334 |
add_action( 'wp_footer', array( &$this, 'print_script_footer' ) );
|
| 335 |
return $button;
|
| 336 |
}
|
| 337 |
-
|
| 338 |
else
|
| 339 |
{
|
| 340 |
if ( (is_page() && ( isset($this->options['show_on_pages']) && 'on' === $this->options['show_on_pages'] ) )
|
|
@@ -359,70 +360,69 @@ if ( ! class_exists( 'PrintFriendly_WordPress' ) ) {
|
|
| 359 |
}
|
| 360 |
|
| 361 |
}
|
| 362 |
-
|
| 363 |
-
|
| 364 |
-
|
| 365 |
-
|
| 366 |
-
|
| 367 |
-
|
| 368 |
-
|
| 369 |
-
|
| 370 |
-
|
| 371 |
-
|
| 372 |
-
|
| 373 |
$js_enabled = $this->js_enabled();
|
| 374 |
-
|
| 375 |
-
|
| 376 |
-
|
| 377 |
-
|
| 378 |
-
|
| 379 |
-
|
| 380 |
if( $js_enabled ) {
|
| 381 |
-
$onclick = 'onclick="window.print();';
|
| 382 |
} else {
|
| 383 |
$onclick = '';
|
| 384 |
-
}
|
| 385 |
-
|
| 386 |
-
} else if ( $js_enabled ) {
|
| 387 |
$onclick = 'onclick="window.print(); return false;"';
|
| 388 |
}
|
| 389 |
-
|
| 390 |
-
|
| 391 |
-
|
| 392 |
-
|
| 393 |
-
|
| 394 |
-
|
| 395 |
-
|
| 396 |
-
|
| 397 |
}
|
| 398 |
if ( !is_singular() && '' != $onclick && $js_enabled) {
|
| 399 |
$onclick = '';
|
| 400 |
$href = add_query_arg('pfstyle','wp',get_permalink());
|
| 401 |
}
|
| 402 |
-
|
| 403 |
$align = '';
|
| 404 |
if ( 'none' != $this->options['content_position'] )
|
| 405 |
$align = ' pf-align'.$this->options['content_position'];
|
| 406 |
-
|
| 407 |
-
$button = apply_filters( 'printfriendly_button', '<div class="printfriendly'.$align.'"><a href="'.$href.'" rel="nofollow" '.$onclick.'>'.$this->button().'</a></div>' );
|
| 408 |
-
|
| 409 |
-
|
| 410 |
-
|
| 411 |
-
|
| 412 |
-
|
| 413 |
-
|
| 414 |
-
|
| 415 |
-
|
| 416 |
-
|
| 417 |
-
|
| 418 |
-
|
| 419 |
/**
|
| 420 |
-
|
| 421 |
-
|
| 422 |
-
|
| 423 |
-
|
| 424 |
-
|
| 425 |
-
|
| 426 |
|
| 427 |
/**
|
| 428 |
* Filter posts by category.
|
|
@@ -432,7 +432,7 @@ if ( ! class_exists( 'PrintFriendly_WordPress' ) ) {
|
|
| 432 |
*/
|
| 433 |
function category_included() {
|
| 434 |
// return ( 'all' === $this->options['category_ids'][0] || in_category($this->options['category_ids']) );
|
| 435 |
-
|
| 436 |
}
|
| 437 |
|
| 438 |
/**
|
|
@@ -458,15 +458,15 @@ if ( ! class_exists( 'PrintFriendly_WordPress' ) ) {
|
|
| 458 |
function options_validate( $input ) {
|
| 459 |
$valid_input = $input;
|
| 460 |
|
| 461 |
-
|
| 462 |
if ( !isset( $input['button_type'] ) || !in_array( $input['button_type'], array(
|
| 463 |
-
|
| 464 |
-
|
| 465 |
-
|
| 466 |
-
|
| 467 |
-
|
| 468 |
-
|
| 469 |
-
|
| 470 |
$valid_input['button_type'] = 'pf-button.gif';
|
| 471 |
|
| 472 |
// @todo custom image url validation
|
|
@@ -475,7 +475,7 @@ if ( ! class_exists( 'PrintFriendly_WordPress' ) ) {
|
|
| 475 |
|
| 476 |
// @todo validate optional custom text
|
| 477 |
if ( !isset( $input['custom_text'] ) ) {
|
| 478 |
-
|
| 479 |
}
|
| 480 |
/* else {
|
| 481 |
|
|
@@ -506,7 +506,7 @@ if ( ! class_exists( 'PrintFriendly_WordPress' ) ) {
|
|
| 506 |
|
| 507 |
|
| 508 |
|
| 509 |
-
|
| 510 |
if ( !isset( $input['enable_css'] ) || 'off' !== $input['enable_css'] )
|
| 511 |
$valid_input['enable_css'] = 'on';
|
| 512 |
|
|
@@ -522,7 +522,7 @@ if ( ! class_exists( 'PrintFriendly_WordPress' ) ) {
|
|
| 522 |
unset( $opt );
|
| 523 |
|
| 524 |
|
| 525 |
-
|
| 526 |
foreach ( array( 'show_on_posts', 'show_on_pages', 'show_on_homepage', 'show_on_categories', 'show_on_taxonomies' ) as $opt ) {
|
| 527 |
if ( !isset( $input[$opt] ) || 'on' !== $input[$opt] ) {
|
| 528 |
unset( $valid_input[$opt] );
|
|
@@ -535,26 +535,26 @@ if ( ! class_exists( 'PrintFriendly_WordPress' ) ) {
|
|
| 535 |
unset( $valid_input['show_on_template'] );
|
| 536 |
|
| 537 |
|
| 538 |
-
|
| 539 |
-
|
| 540 |
-
|
| 541 |
-
|
| 542 |
-
|
| 543 |
-
|
| 544 |
/* $valid_input['category_ids'] = explode(',', $input['category_ids']);
|
| 545 |
$valid_input['category_ids'] = array_map( 'trim', $valid_input['category_ids'] );
|
| 546 |
if( ( count( $valid_input['category_ids'] ) === 1 && 'all' === $valid_input['category_ids'][0] ) === false ) {
|
| 547 |
-
|
| 548 |
-
|
| 549 |
-
|
| 550 |
-
|
| 551 |
-
|
| 552 |
-
|
| 553 |
-
|
| 554 |
-
|
| 555 |
-
|
| 556 |
-
|
| 557 |
-
|
| 558 |
}
|
| 559 |
|
| 560 |
//echo '<pre>'.print_r($input,1).'</pre>';
|
|
@@ -562,7 +562,7 @@ if ( ! class_exists( 'PrintFriendly_WordPress' ) ) {
|
|
| 562 |
|
| 563 |
|
| 564 |
|
| 565 |
-
|
| 566 |
if ( !isset( $input['logo'] ) || !in_array( $input['logo'], array( 'favicon', 'upload-an-image' ) ) )
|
| 567 |
$valid_input['logo'] = 'favicon';
|
| 568 |
|
|
@@ -572,7 +572,7 @@ if ( ! class_exists( 'PrintFriendly_WordPress' ) ) {
|
|
| 572 |
|
| 573 |
// @todo validate optional tagline text
|
| 574 |
if ( !isset( $input['tagline'] ) ) {
|
| 575 |
-
|
| 576 |
}
|
| 577 |
/* else {
|
| 578 |
|
|
@@ -592,7 +592,7 @@ if ( ! class_exists( 'PrintFriendly_WordPress' ) ) {
|
|
| 592 |
foreach( array( 'click_to_delete', 'hide-images', 'email', 'pdf', 'print', ) as $opt ) {
|
| 593 |
if( !isset( $input[$opt] ) || !in_array( $input[$opt], array( '0', '1' ) ) ) {
|
| 594 |
$valid_input[$opt] = '0';
|
| 595 |
-
|
| 596 |
}
|
| 597 |
unset( $opt );
|
| 598 |
|
|
@@ -603,7 +603,7 @@ if ( ! class_exists( 'PrintFriendly_WordPress' ) ) {
|
|
| 603 |
|
| 604 |
|
| 605 |
|
| 606 |
-
|
| 607 |
if ( !isset( $input['website_protocol'] ) || !in_array( $input['website_protocol'], array( 'http', 'https' ) ) )
|
| 608 |
$valid_input['website_protocol'] = 'http';
|
| 609 |
|
|
@@ -613,16 +613,16 @@ if ( ! class_exists( 'PrintFriendly_WordPress' ) ) {
|
|
| 613 |
if ( !isset( $input['javascript'] ) || !in_array( $input['javascript'], array( 'no', 'yes' ) ) )
|
| 614 |
$valid_input['javascript'] = 'yes';
|
| 615 |
|
| 616 |
-
|
| 617 |
-
|
| 618 |
-
|
| 619 |
-
|
| 620 |
-
|
| 621 |
-
|
| 622 |
-
|
| 623 |
-
|
| 624 |
-
|
| 625 |
-
|
| 626 |
$valid_input['db_version'] = $this->db_version;
|
| 627 |
|
| 628 |
return $valid_input;
|
|
@@ -728,8 +728,8 @@ if ( ! class_exists( 'PrintFriendly_WordPress' ) ) {
|
|
| 728 |
'password_protected' => 'no',
|
| 729 |
'javascript' => 'yes',
|
| 730 |
'custom_css_url' => '',
|
| 731 |
-
|
| 732 |
-
|
| 733 |
// 'category_ids' => array('all'),
|
| 734 |
);
|
| 735 |
|
|
@@ -851,9 +851,9 @@ if ( ! class_exists( 'PrintFriendly_WordPress' ) ) {
|
|
| 851 |
'category_ids' => array(),
|
| 852 |
);
|
| 853 |
|
| 854 |
-
|
| 855 |
$additional_options['category_ids'][] = 'all';
|
| 856 |
-
|
| 857 |
|
| 858 |
$this->options = array_merge($this->options, $additional_options);
|
| 859 |
*/
|
|
@@ -871,12 +871,12 @@ if ( ! class_exists( 'PrintFriendly_WordPress' ) ) {
|
|
| 871 |
$this->options = array_merge($this->options, $additional_options);
|
| 872 |
}
|
| 873 |
if($this->options['db_version'] < 8) {
|
| 874 |
-
|
| 875 |
-
|
| 876 |
|
| 877 |
if($this->options['db_version'] < 9) {
|
| 878 |
-
|
| 879 |
-
|
| 880 |
$this->options['db_version'] = $this->db_version;
|
| 881 |
|
| 882 |
update_option( $this->option_name, $this->options );
|
|
@@ -910,7 +910,7 @@ if ( ! class_exists( 'PrintFriendly_WordPress' ) ) {
|
|
| 910 |
function button( $name = false ){
|
| 911 |
if( !$name )
|
| 912 |
$name = $this->options['button_type'];
|
| 913 |
-
|
| 914 |
$text = $this->options['custom_text'];
|
| 915 |
$img_path = 'http://cdn.printfriendly.com/';
|
| 916 |
if($this->options['website_protocol'] == 'https')
|
|
@@ -948,14 +948,14 @@ if ( ! class_exists( 'PrintFriendly_WordPress' ) ) {
|
|
| 948 |
}
|
| 949 |
}
|
| 950 |
|
| 951 |
-
|
| 952 |
-
|
| 953 |
-
|
| 954 |
-
|
| 955 |
-
|
| 956 |
-
|
| 957 |
-
|
| 958 |
-
|
| 959 |
|
| 960 |
|
| 961 |
/**
|
|
@@ -1014,7 +1014,7 @@ if ( ! class_exists( 'PrintFriendly_WordPress' ) ) {
|
|
| 1014 |
*
|
| 1015 |
*/
|
| 1016 |
function create_checkbox($name, $label='', $labelid='' ) {
|
| 1017 |
-
|
| 1018 |
echo '<label' . ( !empty( $labelid ) ? ' id=' . $labelid : '' ) . '><input type="checkbox" class="show_list" name="' . $this->option_name . '[show_on_' . $name . ']" value="on" ';
|
| 1019 |
$this->checked( 'show_on_' . $name, 'on');
|
| 1020 |
echo ' />' . $label . "</label>\r\n";
|
|
@@ -1086,8 +1086,8 @@ if ( ! class_exists( 'PrintFriendly_WordPress' ) ) {
|
|
| 1086 |
* @since 3.2.2
|
| 1087 |
*/
|
| 1088 |
function create_category_metabox() {
|
| 1089 |
-
|
| 1090 |
-
|
| 1091 |
do_meta_boxes('settings_page_' . $this->hook, 'normal', $obj);
|
| 1092 |
}
|
| 1093 |
|
|
@@ -1122,9 +1122,9 @@ if ( ! class_exists( 'PrintFriendly_WordPress' ) ) {
|
|
| 1122 |
|
| 1123 |
// Show the content of the options array when debug is enabled
|
| 1124 |
if ( WP_DEBUG ) {
|
| 1125 |
-
|
| 1126 |
echo '<pre>Options:<br><br>' . print_r( $this->options, 1 ) . '</pre>';
|
| 1127 |
-
|
| 1128 |
?>
|
| 1129 |
<div id="pf_settings" class="wrap">
|
| 1130 |
|
|
@@ -1270,9 +1270,9 @@ if ( ! class_exists( 'PrintFriendly_WordPress' ) ) {
|
|
| 1270 |
</select>
|
| 1271 |
</label>
|
| 1272 |
<?php /* <div class="custom-logo">
|
| 1273 |
-
|
| 1274 |
-
|
| 1275 |
-
|
| 1276 |
<div class="custom-logo"><label for="Enter_URL">Enter url</label><input id="upload-an-image" type="text" class="regular-text" name="<?php echo $this->option_name; ?>[image_url]" value="<?php $this->val( 'image_url' ); ?>" /><label for="Text__optional_">Text (optional)</label><input id="image-tagline" type="text" class="regular-text" name="<?php echo $this->option_name; ?>[tagline]" value="<?php $this->val( 'tagline' ); ?>" /></div>
|
| 1277 |
<div id="pf-image-error"></div>
|
| 1278 |
<div id="pf-image-preview"></div>
|
|
@@ -1362,11 +1362,11 @@ if ( ! class_exists( 'PrintFriendly_WordPress' ) ) {
|
|
| 1362 |
<option value="no" <?php $this->selected( 'enable_google_analytics', 'no' ); ?>> <?php _e( "No", $this->hook ); ?></option>
|
| 1363 |
</select>
|
| 1364 |
</label>
|
| 1365 |
-
|
| 1366 |
<label id="pf-algo-usage" <?php /*for="javascript"*/ ?>>My Page Content Selected By: <span class="description no-italics" > Change this setting if your content is not showing in the preview.</span><br>
|
| 1367 |
<select id="pf-algo-usage" name="<?php echo $this->option_name; ?>[pf_algo]">
|
| 1368 |
<option value="wp" <?php $this->selected( 'pf_algo', 'wp' ); ?>> <?php _e( 'WP "the_content" filter
|
| 1369 |
-
|
| 1370 |
<option value="pf" <?php $this->selected( 'pf_algo', 'pf' ); ?>> <?php _e( "Content Algorithm", $this->hook ); ?></option>
|
| 1371 |
</select>
|
| 1372 |
</label>
|
|
@@ -1402,4 +1402,3 @@ function pf_show_link() {
|
|
| 1402 |
global $printfriendly;
|
| 1403 |
return $printfriendly->getButton(true);
|
| 1404 |
}
|
| 1405 |
-
|
| 5 |
Plugin URI: http://www.printfriendly.com
|
| 6 |
Description: PrintFriendly & PDF button for your website. Optimizes your pages and brand for print, pdf, and email.
|
| 7 |
Name and URL are included to ensure repeat visitors and new visitors when printed versions are shared.
|
| 8 |
+
Version: 3.3.10
|
| 9 |
Author: Print Friendly
|
| 10 |
Author URI: http://www.PrintFriendly.com
|
| 11 |
|
| 12 |
Changelog :
|
| 13 |
+
3.3.10 - Implemented both Classic Google Analytics and Google Universal Analytics code.
|
| 14 |
+
3.3.9 - Removed the functionality that opens new window when JavaScript is disabled.
|
| 15 |
3.3.8 - Shortcode Bug fix, urlencode button href
|
| 16 |
3.3.7 - Readme.txt update
|
| 17 |
3.3.6 - Fixed JS optimization Bug
|
| 136 |
add_filter( 'the_content', array( &$this, 'show_link' ) );
|
| 137 |
add_filter( 'the_excerpt', array( &$this, 'show_link' ) );
|
| 138 |
}
|
| 139 |
+
|
| 140 |
+
if($this->use_wp_content_hook()) {
|
| 141 |
+
add_action('the_content', array(&$this, 'add_pf_content_class_around_content_hook'));
|
| 142 |
+
}
|
| 143 |
|
| 144 |
if ( is_admin() ) {
|
| 145 |
// Hook into init for registration of the option and the language files
|
| 156 |
|
| 157 |
// Register a link to the settings page on the plugins overview page
|
| 158 |
add_filter( 'plugin_action_links', array( &$this, 'filter_plugin_actions' ), 10, 2 );
|
| 159 |
+
}
|
| 160 |
}
|
| 161 |
|
| 162 |
|
| 163 |
+
/**
|
| 164 |
+
* Returns true if WP content hooks are to used to find content
|
| 165 |
+
* @since 3.2.8
|
| 166 |
+
*
|
| 167 |
+
**/
|
| 168 |
function use_wp_content_hook() {
|
| 169 |
+
return (isset($this->options['pf_algo']) && $this->options['pf_algo'] == 'wp');
|
| 170 |
+
}
|
| 171 |
+
|
| 172 |
+
/**
|
| 173 |
+
* Adds wraps content in pf-content class to help Printfriendly algo determine the content
|
| 174 |
+
*
|
| 175 |
+
* @since 3.2.8
|
| 176 |
+
*
|
| 177 |
+
**/
|
| 178 |
+
function add_pf_content_class_around_content_hook($content = false) {
|
| 179 |
+
if($content && !$this->print_only_override($content)) {
|
| 180 |
+
add_action( 'wp_footer', array( &$this, 'print_script_footer' ));
|
| 181 |
+
return '<div class="pf-content">'.$content.'</div>';
|
| 182 |
+
}
|
| 183 |
+
else
|
| 184 |
+
return $content;
|
| 185 |
+
}
|
| 186 |
+
|
| 187 |
+
/**
|
| 188 |
+
* Override to check if print-only command is being used
|
| 189 |
+
*
|
| 190 |
+
* @since 3.3.0
|
| 191 |
+
**/
|
| 192 |
+
function print_only_override($content) {
|
| 193 |
+
$pattern = '/class=[\"]print-only|class=[\']print-only|print-only/';
|
| 194 |
+
$pf_pattern = '/class=[\"]pf-content|class=[\']pf-content|pf-content/';
|
| 195 |
+
return (preg_match($pattern, $content) || preg_match($pf_pattern, $content)) ;
|
| 196 |
+
}
|
| 197 |
+
|
| 198 |
/**
|
| 199 |
* PHP 4 Compatible Constructor
|
| 200 |
*
|
| 289 |
|
| 290 |
?>
|
| 291 |
<script type="text/javascript">
|
| 292 |
+
|
| 293 |
var pfHeaderImgUrl = '<?php echo esc_js(esc_url_raw($image_url)); ?>';
|
| 294 |
var pfHeaderTagline = '<?php echo esc_js($tagline); ?>';
|
| 295 |
var pfdisableClickToDel = '<?php echo esc_js($this->options['click_to_delete']); ?>';
|
| 299 |
var pfDisablePDF = '<?php echo esc_js($this->options['pdf']); ?>';
|
| 300 |
var pfDisablePrint = '<?php echo esc_js($this->options['print']); ?>';
|
| 301 |
var pfCustomCSS = '<?php echo esc_js($this->options['custom_css_url']); ?>';
|
| 302 |
+
(function() {
|
| 303 |
var e = document.createElement('script'); e.type="text/javascript";
|
| 304 |
+
if('https:' == document.location.protocol) {
|
| 305 |
+
js='https://pf-cdn.printfriendly.com/ssl/main.js';
|
| 306 |
+
}
|
| 307 |
+
else{
|
| 308 |
+
js='http://cdn.printfriendly.com/printfriendly.js';
|
| 309 |
+
}
|
| 310 |
e.src = js;
|
| 311 |
document.getElementsByTagName('head')[0].appendChild(e);
|
| 312 |
+
})();
|
| 313 |
</script>
|
| 314 |
<?php
|
| 315 |
}
|
| 328 |
return "";
|
| 329 |
|
| 330 |
|
| 331 |
+
$button = $this->getButton();
|
| 332 |
if ( $is_manual )
|
| 333 |
{
|
| 334 |
// Hook the script call now, so it only get's loaded when needed, and need is determined by the user calling pf_button
|
| 335 |
add_action( 'wp_footer', array( &$this, 'print_script_footer' ) );
|
| 336 |
return $button;
|
| 337 |
}
|
| 338 |
+
|
| 339 |
else
|
| 340 |
{
|
| 341 |
if ( (is_page() && ( isset($this->options['show_on_pages']) && 'on' === $this->options['show_on_pages'] ) )
|
| 360 |
}
|
| 361 |
|
| 362 |
}
|
| 363 |
+
|
| 364 |
+
|
| 365 |
+
/**
|
| 366 |
+
* @since 3.3.8
|
| 367 |
+
* @returns Printfriendly Button HTML
|
| 368 |
+
*/
|
| 369 |
+
|
| 370 |
+
function getButton($add_footer_script = false) {
|
| 371 |
+
if($add_footer_script) {
|
| 372 |
+
add_action( 'wp_footer', array( &$this, 'print_script_footer' ) );
|
| 373 |
+
}
|
| 374 |
$js_enabled = $this->js_enabled();
|
| 375 |
+
$analytics_code = "";
|
| 376 |
+
|
| 377 |
+
if ( $this->google_analytics_enabled() ) {
|
| 378 |
+
$title_var = "NULL";
|
| 379 |
+
$analytics_code = "if(typeof(_gaq) != 'undefined') { _gaq.push(['_trackEvent','PRINTFRIENDLY', 'print', '".$title_var."']);
|
| 380 |
+
}else if(typeof(ga) != 'undefined') { ga('send', 'event','PRINTFRIENDLY', 'print', '".$title_var."'); }";
|
| 381 |
if( $js_enabled ) {
|
| 382 |
+
$onclick = 'onclick="window.print();'. $analytics_code .' return false;"';
|
| 383 |
} else {
|
| 384 |
$onclick = '';
|
| 385 |
+
}
|
| 386 |
+
} else if ( $js_enabled ) {
|
|
|
|
| 387 |
$onclick = 'onclick="window.print(); return false;"';
|
| 388 |
}
|
| 389 |
+
|
| 390 |
+
$href = 'http://www.printfriendly.com/print?url='.urlencode(get_permalink());
|
| 391 |
+
|
| 392 |
+
if (!$js_enabled) {
|
| 393 |
+
if($this->google_analytics_enabled()) {
|
| 394 |
+
$onclick = $onclick.' onclick="'.$analytics_code.'"';
|
| 395 |
+
}
|
| 396 |
+
$href = "http://www.printfriendly.com/print?headerImageUrl=".urlencode($this->options['image_url'])."&headerTagline=".urlencode($this->options['tagline'])."&pfCustomCSS=".urlencode($this->options['custom_css_url'])."&imageDisplayStyle=".urlencode($this->options['image-style'])."&disableClickToDel=".urlencode($this->options['click_to_delete'])."&disablePDF=".urlencode($this->options['pdf'])."&disablePrint=".urlencode($this->options['print'])."&disableEmail=".urlencode($this->options['email'])."&hideImages=".urlencode($this->options['hide-images'])."&url=".urlencode(get_permalink())."&source=wp";
|
| 397 |
}
|
| 398 |
if ( !is_singular() && '' != $onclick && $js_enabled) {
|
| 399 |
$onclick = '';
|
| 400 |
$href = add_query_arg('pfstyle','wp',get_permalink());
|
| 401 |
}
|
| 402 |
+
|
| 403 |
$align = '';
|
| 404 |
if ( 'none' != $this->options['content_position'] )
|
| 405 |
$align = ' pf-align'.$this->options['content_position'];
|
| 406 |
+
$href = str_replace("&", "&", $href );
|
| 407 |
+
$button = apply_filters( 'printfriendly_button', '<div class="printfriendly'.$align.'"><a href="'.$href.'" rel="nofollow" '.$onclick.' class="noslimstat">'.$this->button().'</a></div>' );
|
| 408 |
+
return $button;
|
| 409 |
+
}
|
| 410 |
+
|
| 411 |
+
|
| 412 |
+
/**
|
| 413 |
+
* @since 3.2.9
|
| 414 |
+
* @returns if google analytics enabled
|
| 415 |
+
*/
|
| 416 |
+
function google_analytics_enabled() {
|
| 417 |
+
return isset( $this->options['enable_google_analytics'] ) && $this->options['enable_google_analytics'] == 'yes';
|
| 418 |
+
}
|
| 419 |
/**
|
| 420 |
+
* @since 3.2.6
|
| 421 |
+
* @return boolean true if JS is enabled for the plugin
|
| 422 |
+
**/
|
| 423 |
+
function js_enabled() {
|
| 424 |
+
return isset( $this->options['javascript'] ) && $this->options['javascript'] == 'yes';
|
| 425 |
+
}
|
| 426 |
|
| 427 |
/**
|
| 428 |
* Filter posts by category.
|
| 432 |
*/
|
| 433 |
function category_included() {
|
| 434 |
// return ( 'all' === $this->options['category_ids'][0] || in_category($this->options['category_ids']) );
|
| 435 |
+
return true;
|
| 436 |
}
|
| 437 |
|
| 438 |
/**
|
| 458 |
function options_validate( $input ) {
|
| 459 |
$valid_input = $input;
|
| 460 |
|
| 461 |
+
/* Section 1 options */
|
| 462 |
if ( !isset( $input['button_type'] ) || !in_array( $input['button_type'], array(
|
| 463 |
+
'pf-button.gif', 'pf-button-both.gif', 'pf-button-big.gif', // buttongroup1
|
| 464 |
+
'button-print-grnw20.png', 'button-print-blu20.png', 'button-print-gry20.png', // buttongroup2
|
| 465 |
+
'pf-icon-small.gif', 'pf-icon-both.gif','pf-icon.gif', 'text-only', // buttongroup3
|
| 466 |
+
'custom-image', // custom
|
| 467 |
+
'button-print-whgn20.png', 'pf_button_sq_gry_m.png', 'pf_button_sq_gry_l.png', 'pf_button_sq_grn_m.png',
|
| 468 |
+
'pf_button_sq_grn_l.png', // backward compatibility
|
| 469 |
+
) ) )
|
| 470 |
$valid_input['button_type'] = 'pf-button.gif';
|
| 471 |
|
| 472 |
// @todo custom image url validation
|
| 475 |
|
| 476 |
// @todo validate optional custom text
|
| 477 |
if ( !isset( $input['custom_text'] ) ) {
|
| 478 |
+
$valid_input['custom_text'] = 'Print Friendly';
|
| 479 |
}
|
| 480 |
/* else {
|
| 481 |
|
| 506 |
|
| 507 |
|
| 508 |
|
| 509 |
+
/* Section 2 options */
|
| 510 |
if ( !isset( $input['enable_css'] ) || 'off' !== $input['enable_css'] )
|
| 511 |
$valid_input['enable_css'] = 'on';
|
| 512 |
|
| 522 |
unset( $opt );
|
| 523 |
|
| 524 |
|
| 525 |
+
/* Section 3 options */
|
| 526 |
foreach ( array( 'show_on_posts', 'show_on_pages', 'show_on_homepage', 'show_on_categories', 'show_on_taxonomies' ) as $opt ) {
|
| 527 |
if ( !isset( $input[$opt] ) || 'on' !== $input[$opt] ) {
|
| 528 |
unset( $valid_input[$opt] );
|
| 535 |
unset( $valid_input['show_on_template'] );
|
| 536 |
|
| 537 |
|
| 538 |
+
if( isset( $input['category_ids'] ) ) {
|
| 539 |
+
/**
|
| 540 |
+
* Validate received category ids:
|
| 541 |
+
* - Is there only one array item and does it contain the string text 'all' ? => pass
|
| 542 |
+
* - Otherwise, make sure the ids are integer values
|
| 543 |
+
*/
|
| 544 |
/* $valid_input['category_ids'] = explode(',', $input['category_ids']);
|
| 545 |
$valid_input['category_ids'] = array_map( 'trim', $valid_input['category_ids'] );
|
| 546 |
if( ( count( $valid_input['category_ids'] ) === 1 && 'all' === $valid_input['category_ids'][0] ) === false ) {
|
| 547 |
+
foreach( $valid_input['category_ids'] as $k => $v ) {
|
| 548 |
+
if( $v !== '' && ( ctype_digit( (string) $v ) === true && ( intval( $v ) == $v ) ) ) {
|
| 549 |
+
$valid_input['category_ids'][$k] = intval( $v );
|
| 550 |
+
}
|
| 551 |
+
else {
|
| 552 |
+
// Invalid input - Show error message ?
|
| 553 |
+
unset( $valid_input['category_ids'][$k] );
|
| 554 |
+
}
|
| 555 |
+
}
|
| 556 |
+
}*/
|
| 557 |
+
unset( $valid_input['category_ids'] );
|
| 558 |
}
|
| 559 |
|
| 560 |
//echo '<pre>'.print_r($input,1).'</pre>';
|
| 562 |
|
| 563 |
|
| 564 |
|
| 565 |
+
/* Section 4 options */
|
| 566 |
if ( !isset( $input['logo'] ) || !in_array( $input['logo'], array( 'favicon', 'upload-an-image' ) ) )
|
| 567 |
$valid_input['logo'] = 'favicon';
|
| 568 |
|
| 572 |
|
| 573 |
// @todo validate optional tagline text
|
| 574 |
if ( !isset( $input['tagline'] ) ) {
|
| 575 |
+
$valid_input['tagline'] = '';
|
| 576 |
}
|
| 577 |
/* else {
|
| 578 |
|
| 592 |
foreach( array( 'click_to_delete', 'hide-images', 'email', 'pdf', 'print', ) as $opt ) {
|
| 593 |
if( !isset( $input[$opt] ) || !in_array( $input[$opt], array( '0', '1' ) ) ) {
|
| 594 |
$valid_input[$opt] = '0';
|
| 595 |
+
}
|
| 596 |
}
|
| 597 |
unset( $opt );
|
| 598 |
|
| 603 |
|
| 604 |
|
| 605 |
|
| 606 |
+
/* Section 5 options */
|
| 607 |
if ( !isset( $input['website_protocol'] ) || !in_array( $input['website_protocol'], array( 'http', 'https' ) ) )
|
| 608 |
$valid_input['website_protocol'] = 'http';
|
| 609 |
|
| 613 |
if ( !isset( $input['javascript'] ) || !in_array( $input['javascript'], array( 'no', 'yes' ) ) )
|
| 614 |
$valid_input['javascript'] = 'yes';
|
| 615 |
|
| 616 |
+
/*Analytics Options */
|
| 617 |
+
if ( !isset( $input['enable_google_analytics'] ) || !in_array( $input['enable_google_analytics'], array( 'no', 'yes' ) ) ) {
|
| 618 |
+
$valid_input['enable_google_analytics'] = "no";
|
| 619 |
+
}
|
| 620 |
+
|
| 621 |
+
if ( !isset( $input['pf_algo'] ) || !in_array( $input['pf_algo'], array( 'wp', 'pf' ) ) ) {
|
| 622 |
+
$valid_input['pf_algo'] = "wp";
|
| 623 |
+
}
|
| 624 |
+
|
| 625 |
+
/* Database version */
|
| 626 |
$valid_input['db_version'] = $this->db_version;
|
| 627 |
|
| 628 |
return $valid_input;
|
| 728 |
'password_protected' => 'no',
|
| 729 |
'javascript' => 'yes',
|
| 730 |
'custom_css_url' => '',
|
| 731 |
+
'enable_google_analytics' => 'no',
|
| 732 |
+
'pf_algo' => 'wp'
|
| 733 |
// 'category_ids' => array('all'),
|
| 734 |
);
|
| 735 |
|
| 851 |
'category_ids' => array(),
|
| 852 |
);
|
| 853 |
|
| 854 |
+
if( !isset( $this->options['category_ids'] ) || ( isset( $this->options['category_ids'] ) && 0 === count( $this->options['category_ids'] ) ) ) {
|
| 855 |
$additional_options['category_ids'][] = 'all';
|
| 856 |
+
}
|
| 857 |
|
| 858 |
$this->options = array_merge($this->options, $additional_options);
|
| 859 |
*/
|
| 871 |
$this->options = array_merge($this->options, $additional_options);
|
| 872 |
}
|
| 873 |
if($this->options['db_version'] < 8) {
|
| 874 |
+
$this->options['enable_google_analytics'] = 'no';
|
| 875 |
+
}
|
| 876 |
|
| 877 |
if($this->options['db_version'] < 9) {
|
| 878 |
+
$this->options['pf_algo'] = 'wp';
|
| 879 |
+
}
|
| 880 |
$this->options['db_version'] = $this->db_version;
|
| 881 |
|
| 882 |
update_option( $this->option_name, $this->options );
|
| 910 |
function button( $name = false ){
|
| 911 |
if( !$name )
|
| 912 |
$name = $this->options['button_type'];
|
| 913 |
+
$button_css = $this->generic_button_css();
|
| 914 |
$text = $this->options['custom_text'];
|
| 915 |
$img_path = 'http://cdn.printfriendly.com/';
|
| 916 |
if($this->options['website_protocol'] == 'https')
|
| 948 |
}
|
| 949 |
}
|
| 950 |
|
| 951 |
+
/**
|
| 952 |
+
*
|
| 953 |
+
*
|
| 954 |
+
**/
|
| 955 |
+
|
| 956 |
+
function generic_button_css() {
|
| 957 |
+
return "border:none;-webkit-box-shadow:none; box-shadow:none;";
|
| 958 |
+
}
|
| 959 |
|
| 960 |
|
| 961 |
/**
|
| 1014 |
*
|
| 1015 |
*/
|
| 1016 |
function create_checkbox($name, $label='', $labelid='' ) {
|
| 1017 |
+
$label = ( !empty( $label) ? $label : __( ucfirst($name), $this->hook ) );
|
| 1018 |
echo '<label' . ( !empty( $labelid ) ? ' id=' . $labelid : '' ) . '><input type="checkbox" class="show_list" name="' . $this->option_name . '[show_on_' . $name . ']" value="on" ';
|
| 1019 |
$this->checked( 'show_on_' . $name, 'on');
|
| 1020 |
echo ' />' . $label . "</label>\r\n";
|
| 1086 |
* @since 3.2.2
|
| 1087 |
*/
|
| 1088 |
function create_category_metabox() {
|
| 1089 |
+
$obj = new stdClass();
|
| 1090 |
+
$obj->ID = 0;
|
| 1091 |
do_meta_boxes('settings_page_' . $this->hook, 'normal', $obj);
|
| 1092 |
}
|
| 1093 |
|
| 1122 |
|
| 1123 |
// Show the content of the options array when debug is enabled
|
| 1124 |
if ( WP_DEBUG ) {
|
| 1125 |
+
echo "<p>Currently in Debug Mode. Following information is visible in debug mode only:</p>";
|
| 1126 |
echo '<pre>Options:<br><br>' . print_r( $this->options, 1 ) . '</pre>';
|
| 1127 |
+
}
|
| 1128 |
?>
|
| 1129 |
<div id="pf_settings" class="wrap">
|
| 1130 |
|
| 1270 |
</select>
|
| 1271 |
</label>
|
| 1272 |
<?php /* <div class="custom-logo">
|
| 1273 |
+
<label for="upload-an-image"><?php _e( "Enter url", $this->hook ); ?></label><input id="upload-an-image" type="text" class="regular-text" name="<?php echo $this->option_name; ?>[image_url]" value="<?php $this->val( 'image_url' ); ?>" />
|
| 1274 |
+
<label for="image-tagline"><?php _e( "Text (optional)", $this->hook ); ?></label><input id="image-tagline" type="text" class="regular-text" name="<?php echo $this->option_name; ?>[tagline]" value="<?php $this->val( 'tagline' ); ?>" />
|
| 1275 |
+
</div> */ ?>
|
| 1276 |
<div class="custom-logo"><label for="Enter_URL">Enter url</label><input id="upload-an-image" type="text" class="regular-text" name="<?php echo $this->option_name; ?>[image_url]" value="<?php $this->val( 'image_url' ); ?>" /><label for="Text__optional_">Text (optional)</label><input id="image-tagline" type="text" class="regular-text" name="<?php echo $this->option_name; ?>[tagline]" value="<?php $this->val( 'tagline' ); ?>" /></div>
|
| 1277 |
<div id="pf-image-error"></div>
|
| 1278 |
<div id="pf-image-preview"></div>
|
| 1362 |
<option value="no" <?php $this->selected( 'enable_google_analytics', 'no' ); ?>> <?php _e( "No", $this->hook ); ?></option>
|
| 1363 |
</select>
|
| 1364 |
</label>
|
| 1365 |
+
|
| 1366 |
<label id="pf-algo-usage" <?php /*for="javascript"*/ ?>>My Page Content Selected By: <span class="description no-italics" > Change this setting if your content is not showing in the preview.</span><br>
|
| 1367 |
<select id="pf-algo-usage" name="<?php echo $this->option_name; ?>[pf_algo]">
|
| 1368 |
<option value="wp" <?php $this->selected( 'pf_algo', 'wp' ); ?>> <?php _e( 'WP "the_content" filter
|
| 1369 |
+
', $this->hook ); ?></option>
|
| 1370 |
<option value="pf" <?php $this->selected( 'pf_algo', 'pf' ); ?>> <?php _e( "Content Algorithm", $this->hook ); ?></option>
|
| 1371 |
</select>
|
| 1372 |
</label>
|
| 1402 |
global $printfriendly;
|
| 1403 |
return $printfriendly->getButton(true);
|
| 1404 |
}
|
|
|
readme.txt
CHANGED
|
@@ -2,8 +2,8 @@
|
|
| 2 |
Contributors: printfriendly,joostdevalk, jrf
|
| 3 |
Tags: print, pdf, printer, printing, printable, widget, plugin
|
| 4 |
Requires at least: 2.8
|
| 5 |
-
Tested up to: 4.1
|
| 6 |
-
Stable tag: 3.3.
|
| 7 |
|
| 8 |
|
| 9 |
The #1 Print and PDF button for your WordPress site. Printer Friendly pages without coding, css, or print.css. Fast, easy, and professional.
|
|
@@ -140,6 +140,10 @@ If you have any other issues with the plugin or the PrintFriendly widget, please
|
|
| 140 |
|
| 141 |
== Changelog ==
|
| 142 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 143 |
= 3.3.9 =
|
| 144 |
* Removed the functionality that opens new window when JavaScript is disabled
|
| 145 |
|
|
@@ -334,3 +338,4 @@ If you have any other issues with the plugin or the PrintFriendly widget, please
|
|
| 334 |
* To avoid conflicts with Google Analytics widgets, changed link structure. No longer uses onclick to call PrintFriendly Javascript. Now the javascript is called in the href.
|
| 335 |
* Custom image support for hosted solutions
|
| 336 |
|
|
|
| 2 |
Contributors: printfriendly,joostdevalk, jrf
|
| 3 |
Tags: print, pdf, printer, printing, printable, widget, plugin
|
| 4 |
Requires at least: 2.8
|
| 5 |
+
Tested up to: 4.1.2
|
| 6 |
+
Stable tag: 3.3.10
|
| 7 |
|
| 8 |
|
| 9 |
The #1 Print and PDF button for your WordPress site. Printer Friendly pages without coding, css, or print.css. Fast, easy, and professional.
|
| 140 |
|
| 141 |
== Changelog ==
|
| 142 |
|
| 143 |
+
= 3.3.10 =
|
| 144 |
+
* Implemented both Classic Google Analytics and Google Universal Analytics code
|
| 145 |
+
* Fixed WP Slimstat conflict
|
| 146 |
+
|
| 147 |
= 3.3.9 =
|
| 148 |
* Removed the functionality that opens new window when JavaScript is disabled
|
| 149 |
|
| 338 |
* To avoid conflicts with Google Analytics widgets, changed link structure. No longer uses onclick to call PrintFriendly Javascript. Now the javascript is called in the href.
|
| 339 |
* Custom image support for hosted solutions
|
| 340 |
|
| 341 |
+
|
