Print, PDF, Email by PrintFriendly - Version 5.0

Version Description

  • Add support for custom CSS selectors
  • Improve the settings UI
Download this release

Release Info

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

Code changes from version 4.2 to 5.0

assets/css/admin.css CHANGED
@@ -13,6 +13,7 @@
13
  label {
14
  display: block;
15
  margin: 0.5em 0;
 
16
  }
17
 
18
  h3 {
@@ -234,6 +235,10 @@ ol {
234
  }
235
 
236
 
 
 
 
 
237
  #custom-img {
238
  margin: 0 4.5em;
239
  }
@@ -265,19 +270,80 @@ ol {
265
  display: block;
266
  }
267
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
268
  .pf-select2 {
269
  width: 50%;
270
  }
271
 
272
- /* do not show any notices that do not belong to us */
273
- .notice:not(.pf-notice) {
274
- display: none;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
275
  }
276
 
277
  p.description {
278
  margin: 0 0 2em 0;
279
  }
280
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
281
  /** override bulma styles **/
282
 
283
  .pf-regular-text {
13
  label {
14
  display: block;
15
  margin: 0.5em 0;
16
+ font-size: 14px !important;
17
  }
18
 
19
  h3 {
235
  }
236
 
237
 
238
+ .pf-algo-usage.pf-algo-usage-css input[type="text"] {
239
+ width: 400px;
240
+ }
241
+
242
  #custom-img {
243
  margin: 0 4.5em;
244
  }
270
  display: block;
271
  }
272
 
273
+ .pf-label-inline {
274
+ display: flex;
275
+ flex-direction: row;
276
+ flex-wrap: nowrap;
277
+ align-items: center;
278
+ justify-content: flex-start;
279
+ }
280
+
281
+ .pf-label-inline label {
282
+ width: 15%;
283
+ }
284
+
285
+ .pf-label-inline label ~ select {
286
+ margin-left: 5%;
287
+ }
288
+
289
  .pf-select2 {
290
  width: 50%;
291
  }
292
 
293
+ .wp-core-ui select {
294
+ min-width: 150px;
295
+ margin-top: 0;
296
+ }
297
+
298
+ .pf-features .pf-bu-label {
299
+ margin-top: 0;
300
+ min-width: 250px;
301
+ }
302
+
303
+ .pf-features .pf-label-inline {
304
+ align-items: flex-start;
305
+ min-height: 70px;
306
+ }
307
+
308
+ .pf-features p.description {
309
+ margin: 0 0 1em 0;
310
+ }
311
+
312
+ .pf-accordion > label::before {
313
+ font-family: 'dashicons';
314
+ content: "\f139";
315
+ font-size: 22px;
316
+ line-height: 1;
317
+ vertical-align: middle;
318
+ }
319
+
320
+ .pf-accordion > label.ui-accordion-header-active::before {
321
+ content: "\f140";
322
  }
323
 
324
  p.description {
325
  margin: 0 0 2em 0;
326
  }
327
 
328
+ p.description, span.description {
329
+ font-size: 12px;
330
+ }
331
+
332
+ code {
333
+ padding: 10px;
334
+ display: block;
335
+ overflow-wrap: anywhere;
336
+ }
337
+
338
+ code ~ p.description {
339
+ margin-top: 10px;
340
+ }
341
+
342
+ /* do not show any notices that do not belong to us */
343
+ .notice:not(.pf-notice) {
344
+ display: none;
345
+ }
346
+
347
  /** override bulma styles **/
348
 
349
  .pf-regular-text {
assets/js/admin.js CHANGED
@@ -1,5 +1,5 @@
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
- (function ($, config) {
3
  $(document).ready(function() {
4
  initAll();
5
  });
@@ -22,6 +22,11 @@
22
  }
23
  });
24
 
 
 
 
 
 
25
  var clipboard1 = new ClipboardJS('.pf-clipboard');
26
  clipboard1.on('success', function(e) {
27
  // no message needs to be shown.
@@ -33,6 +38,8 @@
33
  initMediaUpload();
34
 
35
  initCategories();
 
 
36
  }
37
 
38
  function initCategories() {
@@ -47,13 +54,13 @@
47
 
48
  var button = $(this),
49
  pf_uploader = wp.media({
50
- title: config.i10n.upload_window_title,
51
  library : {
52
  uploadedTo : wp.media.view.settings.post.id,
53
  type : 'image'
54
  },
55
  button: {
56
- text: config.i10n.upload_window_button_title
57
  },
58
  multiple: false
59
  }).on('select', function() {
@@ -202,7 +209,7 @@
202
  preview.html('').append(img);
203
  });
204
  img.on('error', function(){
205
- error.html('<div class="error settings-error"><p><strong>' + config.i10n.invalid_image_url + '</strong></p></div>');
206
  });
207
  img.attr('src',imgUrl);
208
  }
@@ -314,6 +321,34 @@
314
  $("#custom-text-rb").prop('checked', true);
315
  $("#custom-text-rb").trigger("change");
316
  });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
317
  }
318
 
319
- })(jQuery, config);
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
+ (function ($, pf_config) {
3
  $(document).ready(function() {
4
  initAll();
5
  });
22
  }
23
  });
24
 
25
+ $('.pf-accordion').accordion({
26
+ collapsible: true,
27
+ active: false
28
+ });
29
+
30
  var clipboard1 = new ClipboardJS('.pf-clipboard');
31
  clipboard1.on('success', function(e) {
32
  // no message needs to be shown.
38
  initMediaUpload();
39
 
40
  initCategories();
41
+
42
+ initCustomCssSelectors();
43
  }
44
 
45
  function initCategories() {
54
 
55
  var button = $(this),
56
  pf_uploader = wp.media({
57
+ title: pf_config.i10n.upload_window_title,
58
  library : {
59
  uploadedTo : wp.media.view.settings.post.id,
60
  type : 'image'
61
  },
62
  button: {
63
+ text: pf_config.i10n.upload_window_button_title
64
  },
65
  multiple: false
66
  }).on('select', function() {
209
  preview.html('').append(img);
210
  });
211
  img.on('error', function(){
212
+ error.html('<div class="error settings-error"><p><strong>' + pf_config.i10n.invalid_image_url + '</strong></p></div>');
213
  });
214
  img.attr('src',imgUrl);
215
  }
321
  $("#custom-text-rb").prop('checked', true);
322
  $("#custom-text-rb").trigger("change");
323
  });
324
+
325
+ }
326
+
327
+ function initCustomCssSelectors() {
328
+ $('.pf-algo-usage-' + $("[name='printfriendly_option[pf_algo]']:checked").val()).show();
329
+
330
+ $("[name='printfriendly_option[pf_algo]']").on('click', function(e){
331
+ $('.pf-algo-usage').hide();
332
+ $('.pf-algo-usage-' + $(this).val()).show();
333
+ });
334
+
335
+ $('.pf-algo-usage-css input[type="text"], input[name="printfriendly_option[pf_algo_css_content]"]').on('keyup change click', function(e){
336
+ $selectors = '';
337
+ $('.pf-algo-usage-css input[type="text"]').each(function(index, element){
338
+ if($(element).val().trim() !== ''){
339
+ $selectors += $(element).attr('data-selector-name') + '=' + $(element).val() + ';';
340
+ }
341
+ });
342
+
343
+ $fallback = $('input[name="printfriendly_option[pf_algo_css_content]"]:checked').val();
344
+ $template = $('.pf-algo-usage-css').attr('data-tag-template');
345
+ $template = $template.replace('#1', $selectors).replace('#2', $fallback);
346
+ var encodedStr = $template.replace(/[\u00A0-\u9999<>\&]/g, function(i) {
347
+ return '&#'+i.charCodeAt(0)+';';
348
+ });
349
+ $('.pf-custom-css-code').html(encodedStr);
350
+ $('.pf-custom-css-code-snippet').attr('data-clipboard-text', $template);
351
+ });
352
  }
353
 
354
+ })(jQuery, pf_config);
assets/js/admin_pro.js CHANGED
@@ -1,4 +1,4 @@
1
- (function ($) {
2
 
3
  $(document).ready(function($) {
4
  $.fn.valid = function() {
@@ -48,7 +48,7 @@
48
 
49
  function checkStatus() {
50
  if ($email.valid() && $domain.valid()) {
51
- showLoading(config.i10n.check_status);
52
  $.getJSON(API + '/status', { domain: $domain.val() })
53
  .done(handleResponse)
54
  .fail(handleError)
@@ -58,7 +58,7 @@
58
 
59
  function activate() {
60
  if ($email.valid() && $domain.valid()) {
61
- showLoading(config.i10n.activation);
62
  $.post(API, { email: $email.val(), domain: $domain.val() })
63
  .done(handleResponse)
64
  .fail(handleError)
@@ -94,7 +94,7 @@
94
  message = + ', ' + error;
95
  }
96
 
97
- message += '. ' + config.i10n.connection;
98
  }
99
 
100
  $communicationErrorMessage.html(message);
@@ -123,25 +123,25 @@
123
  case 'none':
124
  $activate.show();
125
  $pro.addClass('pf-notice-warning');
126
- $statusHeader.text(config.i10n.activate).addClass('pf-text-warning');
127
  $('.password_protected_yes').attr('data-sub-status', 'none');
128
  break;
129
  case 'trial':
130
  $buy.show();
131
  $pro.addClass('pf-notice-success');
132
- $statusHeader.text(config.i10n.active_trial).addClass('pf-text-success');
133
  $('.password_protected_yes').attr('data-sub-status', 'trial');
134
  break;
135
  case 'pro':
136
  $details.show();
137
  $pro.addClass('pf-notice-success');
138
- $statusHeader.text(config.i10n.active).addClass('pf-text-success');
139
  $('.password_protected_yes').attr('data-sub-status', 'pro');
140
  break;
141
  case 'expired':
142
  $buy.show();
143
  $pro.addClass('pf-notice-error');
144
- $statusHeader.text(config.i10n.expired).addClass('pf-text-error');
145
  $('.password_protected_yes').attr('data-sub-status', 'expired');
146
  break;
147
  }
@@ -156,4 +156,4 @@
156
  }
157
  });
158
 
159
- })(jQuery, config);
1
+ (function ($, pf_config) {
2
 
3
  $(document).ready(function($) {
4
  $.fn.valid = function() {
48
 
49
  function checkStatus() {
50
  if ($email.valid() && $domain.valid()) {
51
+ showLoading(pf_config.i10n.check_status);
52
  $.getJSON(API + '/status', { domain: $domain.val() })
53
  .done(handleResponse)
54
  .fail(handleError)
58
 
59
  function activate() {
60
  if ($email.valid() && $domain.valid()) {
61
+ showLoading(pf_config.i10n.activation);
62
  $.post(API, { email: $email.val(), domain: $domain.val() })
63
  .done(handleResponse)
64
  .fail(handleError)
94
  message = + ', ' + error;
95
  }
96
 
97
+ message += '. ' + pf_config.i10n.connection;
98
  }
99
 
100
  $communicationErrorMessage.html(message);
123
  case 'none':
124
  $activate.show();
125
  $pro.addClass('pf-notice-warning');
126
+ $statusHeader.text(pf_config.i10n.activate).addClass('pf-text-warning');
127
  $('.password_protected_yes').attr('data-sub-status', 'none');
128
  break;
129
  case 'trial':
130
  $buy.show();
131
  $pro.addClass('pf-notice-success');
132
+ $statusHeader.text(pf_config.i10n.active_trial).addClass('pf-text-success');
133
  $('.password_protected_yes').attr('data-sub-status', 'trial');
134
  break;
135
  case 'pro':
136
  $details.show();
137
  $pro.addClass('pf-notice-success');
138
+ $statusHeader.text(pf_config.i10n.active).addClass('pf-text-success');
139
  $('.password_protected_yes').attr('data-sub-status', 'pro');
140
  break;
141
  case 'expired':
142
  $buy.show();
143
  $pro.addClass('pf-notice-error');
144
+ $statusHeader.text(pf_config.i10n.expired).addClass('pf-text-error');
145
  $('.password_protected_yes').attr('data-sub-status', 'expired');
146
  break;
147
  }
156
  }
157
  });
158
 
159
+ })(jQuery, pf_config);
languages/printfriendly.pot CHANGED
@@ -2,103 +2,102 @@
2
  # This file is distributed under the same license as the Print, PDF & Email by PrintFriendly package.
3
  msgid ""
4
  msgstr ""
5
- "Project-Id-Version: Print, PDF & Email by PrintFriendly 4.1\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/wp-printfriendly\n"
7
- "POT-Creation-Date: 2021-04-14 03:55:32+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=utf-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
11
  "Last-Translator: PrintFriendly Translate Team <support@printfriendly.com>\n"
12
  "Language-Team: PrintFriendly Translate Team <support@printfriendly.com>\n"
13
 
14
- #: pf.php:519
15
  msgid ""
16
  "No valid custom image url received, please enter a valid url to use a "
17
  "custom image."
18
  msgstr ""
19
 
20
- #: pf.php:527
21
  msgid "The text size you entered is invalid, please stay between 9px and 25px"
22
  msgstr ""
23
 
24
- #: pf.php:535
25
  msgid ""
26
  "The color you entered is not valid, it must be a valid hexadecimal RGB font "
27
  "color."
28
  msgstr ""
29
 
30
- #: pf.php:595
31
  msgid ""
32
  "No valid custom logo url received, please enter a valid url to use a custom "
33
  "logo."
34
  msgstr ""
35
 
36
- #: pf.php:669
37
  msgid "PrintFriendly Options"
38
  msgstr ""
39
 
40
- #: pf.php:669
41
  msgid "Print Friendly & PDF"
42
  msgstr ""
43
 
44
- #: pf.php:699 views/tabs.php:270
45
  msgid "Custom Image"
46
  msgstr ""
47
 
48
- #: pf.php:700
49
  msgid "Use Image"
50
  msgstr ""
51
 
52
- #: pf.php:701
53
  msgid "Invalid Image URL"
54
  msgstr ""
55
 
56
- #: pf.php:713
57
  msgid "Activation"
58
  msgstr ""
59
 
60
- #: pf.php:714
61
  msgid "Checking status"
62
  msgstr ""
63
 
64
- #: pf.php:715 views/pro.php:45
65
  msgid "Activate"
66
  msgstr ""
67
 
68
- #: pf.php:716
69
  msgid "Active Trial"
70
  msgstr ""
71
 
72
- #: pf.php:717
73
  msgid "Active"
74
  msgstr ""
75
 
76
- #: pf.php:718
77
  msgid "Expired"
78
  msgstr ""
79
 
80
- #: pf.php:719
81
  msgid "Please check Internet connection."
82
  msgstr ""
83
 
84
- #: pf.php:747
85
  msgid "Settings"
86
  msgstr ""
87
 
88
- #: pf.php:770 views/tabs.php:37 views/tabs.php:234 views/tabs.php:311
89
- #: views/tabs.php:374 views/tabs.php:406
90
  msgid "Documentation"
91
  msgstr ""
92
 
93
- #: pf.php:1117 views/tabs.php:93
94
  msgid "Custom Button"
95
  msgstr ""
96
 
97
- #: pf.php:1302
98
  msgid "Only display when post is in:"
99
  msgstr ""
100
 
101
- #: pf.php:1394
102
  msgid ""
103
  "You are currently using %1$s%2$s%3$s. You can copy copy its contents into "
104
  "the textbox if you want to update the styles."
@@ -108,7 +107,7 @@ msgstr ""
108
  msgid "Learn more"
109
  msgstr ""
110
 
111
- #: views/pro.php:30 views/tabs.php:414
112
  msgid "Email"
113
  msgstr ""
114
 
@@ -212,311 +211,370 @@ msgstr ""
212
  msgid "Select content using"
213
  msgstr ""
214
 
215
- #: views/tabs.php:26
216
- msgid "Not available for woocommerce"
217
  msgstr ""
218
 
219
- #: views/tabs.php:29
220
  msgid "WP Template"
221
  msgstr ""
222
 
223
- #: views/tabs.php:30
224
  msgid "Content Algorithm"
225
  msgstr ""
226
 
227
- #: views/tabs.php:36
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
228
  msgid "Change this setting if your content is not showing in the preview."
229
  msgstr ""
230
 
231
- #: views/tabs.php:44
232
  msgid "Button Style"
233
  msgstr ""
234
 
235
- #: views/tabs.php:98
236
  msgid "Image"
237
  msgstr ""
238
 
239
- #: views/tabs.php:105
240
  msgid "Use Your Image"
241
  msgstr ""
242
 
243
- #: views/tabs.php:108 views/tabs.php:276
244
  msgid "Select Image"
245
  msgstr ""
246
 
247
- #: views/tabs.php:121
248
  msgid "No Image"
249
  msgstr ""
250
 
251
- #: views/tabs.php:126
252
  msgid "Text"
253
  msgstr ""
254
 
255
- #: views/tabs.php:134
256
  msgid "Text Size"
257
  msgstr ""
258
 
259
- #: views/tabs.php:144
260
  msgid "No Text"
261
  msgstr ""
262
 
263
- #: views/tabs.php:150
264
  msgid "Preview"
265
  msgstr ""
266
 
267
- #: views/tabs.php:162
268
  msgid "Button Position"
269
  msgstr ""
270
 
271
- #: views/tabs.php:167
272
  msgid "Alignment"
273
  msgstr ""
274
 
275
- #: views/tabs.php:169
276
  msgid "Left Align"
277
  msgstr ""
278
 
279
- #: views/tabs.php:170
280
  msgid "Right Align"
281
  msgstr ""
282
 
283
- #: views/tabs.php:171
284
  msgid "Center"
285
  msgstr ""
286
 
287
- #: views/tabs.php:172
288
  msgid "None"
289
  msgstr ""
290
 
291
- #: views/tabs.php:175
292
  msgid "Placement"
293
  msgstr ""
294
 
295
- #: views/tabs.php:177
296
  msgid "Above Content"
297
  msgstr ""
298
 
299
- #: views/tabs.php:178
300
  msgid "Below Content"
301
  msgstr ""
302
 
303
- #: views/tabs.php:186
304
  msgid "Button Display"
305
  msgstr ""
306
 
307
- #: views/tabs.php:191
308
  msgid "Pages to show on"
309
  msgstr ""
310
 
311
- #: views/tabs.php:193
312
  msgid "Posts"
313
  msgstr ""
314
 
315
- #: views/tabs.php:194
316
  msgid "Pages"
317
  msgstr ""
318
 
319
- #: views/tabs.php:195
320
  msgid "Homepage"
321
  msgstr ""
322
 
323
- #: views/tabs.php:196
324
  msgid "Category Pages"
325
  msgstr ""
326
 
327
- #: views/tabs.php:197
328
  msgid "Taxonomy Pages"
329
  msgstr ""
330
 
331
- #: views/tabs.php:199
332
  msgid "Add direct to template"
333
  msgstr ""
334
 
335
- #: views/tabs.php:204
336
  msgid "Copy Snippet"
337
  msgstr ""
338
 
339
- #: views/tabs.php:207
340
  msgid "or use the shortcode inside your page/article"
341
  msgstr ""
342
 
343
- #: views/tabs.php:208
344
  msgid "Copy Shortcode"
345
  msgstr ""
346
 
347
- #: views/tabs.php:212
348
- msgid "Specific categories to show on"
349
- msgstr ""
350
-
351
- #: views/tabs.php:241 views/tabs.php:498
352
- msgid "Save Options"
353
- msgstr ""
354
-
355
- #: views/tabs.php:242 views/tabs.php:499
356
- msgid "Cancel"
357
- msgstr ""
358
-
359
- #: views/tabs.php:254
360
- msgid "Page header"
361
- msgstr ""
362
-
363
- #: views/tabs.php:263
364
- msgid "My Website Icon"
365
- msgstr ""
366
-
367
  #: views/tabs.php:291
368
- msgid "Tagline (optional)"
369
  msgstr ""
370
 
371
- #: views/tabs.php:318
372
  msgid "Pro Exclusive Features"
373
  msgstr ""
374
 
375
- #: views/tabs.php:323
376
  msgid "Encode images"
377
  msgstr ""
378
 
379
- #: views/tabs.php:325 views/tabs.php:332 views/tabs.php:354
380
  msgid "No"
381
  msgstr ""
382
 
383
- #: views/tabs.php:326 views/tabs.php:333 views/tabs.php:353
384
  msgid "Yes"
385
  msgstr ""
386
 
387
- #: views/tabs.php:328
388
  msgid ""
389
  "Select \"Yes\" if your site is not publicly accessible or if your provider "
390
- "blocks image requests from third parties (Ex. Zendesk) or if images are not "
391
- "present in PDF"
392
  msgstr ""
393
 
394
- #: views/tabs.php:330
395
  msgid "Show Hidden Content"
396
  msgstr ""
397
 
398
- #: views/tabs.php:335
399
  msgid ""
400
  "By default PrintFriendly Pro will only show the visible content on the "
401
  "page. Select \"Yes\", if you want PrintFriendly to show hidden content. "
402
  "(Ex. Content in hidden tabs)"
403
  msgstr ""
404
 
405
- #: views/tabs.php:340
406
- msgid "This feature requires a Pro subscription."
407
  msgstr ""
408
 
409
- #: views/tabs.php:340
410
  msgid "Learn More"
411
  msgstr ""
412
 
413
- #: views/tabs.php:347
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
414
  msgid "Track in Google Analytics"
415
  msgstr ""
416
 
417
- #: views/tabs.php:362
418
- msgid "Click-to-delete"
419
  msgstr ""
420
 
421
- #: views/tabs.php:368 views/tabs.php:420 views/tabs.php:435 views/tabs.php:455
422
  msgid "Allow"
423
  msgstr ""
424
 
425
- #: views/tabs.php:369 views/tabs.php:421 views/tabs.php:436 views/tabs.php:456
426
  msgid "Not Allow"
427
  msgstr ""
428
 
429
- #: views/tabs.php:382
430
- msgid "Images"
431
  msgstr ""
432
 
433
- #: views/tabs.php:387
434
  msgid "Image size"
435
  msgstr ""
436
 
437
- #: views/tabs.php:389
438
  msgid "Full Size"
439
  msgstr ""
440
 
441
- #: views/tabs.php:390
442
  msgid "Large"
443
  msgstr ""
444
 
445
- #: views/tabs.php:391
446
  msgid "Medium"
447
  msgstr ""
448
 
449
- #: views/tabs.php:392
450
  msgid "Small"
451
  msgstr ""
452
 
453
- #: views/tabs.php:393
454
  msgid "Remove Images"
455
  msgstr ""
456
 
457
- #: views/tabs.php:396
458
  msgid "Image style"
459
  msgstr ""
460
 
461
- #: views/tabs.php:398
 
 
 
 
462
  msgid "Align Right"
463
  msgstr ""
464
 
465
- #: views/tabs.php:399
466
  msgid "Align Left"
467
  msgstr ""
468
 
469
- #: views/tabs.php:400
470
  msgid "Align None"
471
  msgstr ""
472
 
473
- #: views/tabs.php:401
474
- msgid "Center/Block"
475
- msgstr ""
476
-
477
- #: views/tabs.php:429
478
  msgid "PDF"
479
  msgstr ""
480
 
481
- #: views/tabs.php:441
482
  msgid "Developer Note"
483
  msgstr ""
484
 
485
- #: views/tabs.php:441
486
  msgid ""
487
  "On localhost the images can not be included in the PDF. Once the website is "
488
  "live/public images will be included in the PDF."
489
  msgstr ""
490
 
491
- #: views/tabs.php:449
492
  msgid "Print"
493
  msgstr ""
494
 
495
- #: views/tabs.php:464
496
  msgid "Custom CSS"
497
  msgstr ""
498
 
499
- #: views/tabs.php:471
500
  msgid "Custom CSS URL"
501
  msgstr ""
502
 
503
- #: views/tabs.php:486
504
  msgid ""
505
  "Customize the styles of the printed/pdf page using your own CSS. Create "
506
  "your custom CSS, and put the URL to your Custom CSS file in the box above"
507
  msgstr ""
508
 
509
- #: views/tabs.php:488
510
  msgid ""
511
  "Customize the styles of the printed/pdf page using your own CSS. Add your "
512
  "custom CSS (without the %s tags) in the box above"
513
  msgstr ""
514
 
515
- #: views/tabs.php:513
516
  msgid "Debug options"
517
  msgstr ""
518
 
519
- #: views/tabs.php:522
520
  msgid "Currently in Debug Mode. This tab is visible in debug mode only"
521
  msgstr ""
522
 
2
  # This file is distributed under the same license as the Print, PDF & Email by PrintFriendly package.
3
  msgid ""
4
  msgstr ""
5
+ "Project-Id-Version: Print, PDF & Email by PrintFriendly 4.2\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/wp-printfriendly\n"
7
+ "POT-Creation-Date: 2021-11-11 05:58:00+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=utf-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
11
  "Last-Translator: PrintFriendly Translate Team <support@printfriendly.com>\n"
12
  "Language-Team: PrintFriendly Translate Team <support@printfriendly.com>\n"
13
 
14
+ #: pf.php:568
15
  msgid ""
16
  "No valid custom image url received, please enter a valid url to use a "
17
  "custom image."
18
  msgstr ""
19
 
20
+ #: pf.php:576
21
  msgid "The text size you entered is invalid, please stay between 9px and 25px"
22
  msgstr ""
23
 
24
+ #: pf.php:584
25
  msgid ""
26
  "The color you entered is not valid, it must be a valid hexadecimal RGB font "
27
  "color."
28
  msgstr ""
29
 
30
+ #: pf.php:644
31
  msgid ""
32
  "No valid custom logo url received, please enter a valid url to use a custom "
33
  "logo."
34
  msgstr ""
35
 
36
+ #: pf.php:727
37
  msgid "PrintFriendly Options"
38
  msgstr ""
39
 
40
+ #: pf.php:727
41
  msgid "Print Friendly & PDF"
42
  msgstr ""
43
 
44
+ #: pf.php:757 views/tabs.php:383
45
  msgid "Custom Image"
46
  msgstr ""
47
 
48
+ #: pf.php:758
49
  msgid "Use Image"
50
  msgstr ""
51
 
52
+ #: pf.php:759
53
  msgid "Invalid Image URL"
54
  msgstr ""
55
 
56
+ #: pf.php:771
57
  msgid "Activation"
58
  msgstr ""
59
 
60
+ #: pf.php:772
61
  msgid "Checking status"
62
  msgstr ""
63
 
64
+ #: pf.php:773 views/pro.php:45
65
  msgid "Activate"
66
  msgstr ""
67
 
68
+ #: pf.php:774
69
  msgid "Active Trial"
70
  msgstr ""
71
 
72
+ #: pf.php:775
73
  msgid "Active"
74
  msgstr ""
75
 
76
+ #: pf.php:776
77
  msgid "Expired"
78
  msgstr ""
79
 
80
+ #: pf.php:777
81
  msgid "Please check Internet connection."
82
  msgstr ""
83
 
84
+ #: pf.php:805
85
  msgid "Settings"
86
  msgstr ""
87
 
88
+ #: pf.php:828 views/tabs.php:108 views/tabs.php:311 views/tabs.php:424
 
89
  msgid "Documentation"
90
  msgstr ""
91
 
92
+ #: pf.php:1175 views/tabs.php:164
93
  msgid "Custom Button"
94
  msgstr ""
95
 
96
+ #: pf.php:1360
97
  msgid "Only display when post is in:"
98
  msgstr ""
99
 
100
+ #: pf.php:1452
101
  msgid ""
102
  "You are currently using %1$s%2$s%3$s. You can copy copy its contents into "
103
  "the textbox if you want to update the styles."
107
  msgid "Learn more"
108
  msgstr ""
109
 
110
+ #: views/pro.php:30 views/tabs.php:484
111
  msgid "Email"
112
  msgstr ""
113
 
211
  msgid "Select content using"
212
  msgstr ""
213
 
214
+ #: views/tabs.php:29
215
+ msgid "Not available for WooCommerce"
216
  msgstr ""
217
 
218
+ #: views/tabs.php:37
219
  msgid "WP Template"
220
  msgstr ""
221
 
222
+ #: views/tabs.php:44
223
  msgid "Content Algorithm"
224
  msgstr ""
225
 
226
+ #: views/tabs.php:51
227
+ msgid "Custom CSS Selectors"
228
+ msgstr ""
229
+
230
+ #: views/tabs.php:57
231
+ msgid "Author Selector"
232
+ msgstr ""
233
+
234
+ #: views/tabs.php:61
235
+ msgid "Content Selector"
236
+ msgstr ""
237
+
238
+ #: views/tabs.php:65
239
+ msgid "Date Selector"
240
+ msgstr ""
241
+
242
+ #: views/tabs.php:69
243
+ msgid "Title Selector"
244
+ msgstr ""
245
+
246
+ #: views/tabs.php:73
247
+ msgid "Image Selector"
248
+ msgstr ""
249
+
250
+ #: views/tabs.php:78
251
+ msgid "Content Fallback Strategy"
252
+ msgstr ""
253
+
254
+ #: views/tabs.php:81
255
+ msgid "Use existing rules to find content"
256
+ msgstr ""
257
+
258
+ #: views/tabs.php:85
259
+ msgid "Show an error message"
260
+ msgstr ""
261
+
262
+ #: views/tabs.php:88
263
+ msgid ""
264
+ "This setting can be used to configure the behaviour of the plugin, when "
265
+ "content CSS selector does not match any content."
266
+ msgstr ""
267
+
268
+ #: views/tabs.php:90
269
+ msgid ""
270
+ "We recommend setting this to \"Use existing rules to find content\" in "
271
+ "production and to \"Show an error message\" in development."
272
+ msgstr ""
273
+
274
+ #: views/tabs.php:93
275
+ msgid "Show Options Code"
276
+ msgstr ""
277
+
278
+ #: views/tabs.php:96
279
+ msgid "Copy Code"
280
+ msgstr ""
281
+
282
+ #: views/tabs.php:107
283
  msgid "Change this setting if your content is not showing in the preview."
284
  msgstr ""
285
 
286
+ #: views/tabs.php:115
287
  msgid "Button Style"
288
  msgstr ""
289
 
290
+ #: views/tabs.php:169
291
  msgid "Image"
292
  msgstr ""
293
 
294
+ #: views/tabs.php:176
295
  msgid "Use Your Image"
296
  msgstr ""
297
 
298
+ #: views/tabs.php:179 views/tabs.php:389
299
  msgid "Select Image"
300
  msgstr ""
301
 
302
+ #: views/tabs.php:192
303
  msgid "No Image"
304
  msgstr ""
305
 
306
+ #: views/tabs.php:197
307
  msgid "Text"
308
  msgstr ""
309
 
310
+ #: views/tabs.php:205
311
  msgid "Text Size"
312
  msgstr ""
313
 
314
+ #: views/tabs.php:215
315
  msgid "No Text"
316
  msgstr ""
317
 
318
+ #: views/tabs.php:221
319
  msgid "Preview"
320
  msgstr ""
321
 
322
+ #: views/tabs.php:233
323
  msgid "Button Position"
324
  msgstr ""
325
 
326
+ #: views/tabs.php:239
327
  msgid "Alignment"
328
  msgstr ""
329
 
330
+ #: views/tabs.php:242
331
  msgid "Left Align"
332
  msgstr ""
333
 
334
+ #: views/tabs.php:243
335
  msgid "Right Align"
336
  msgstr ""
337
 
338
+ #: views/tabs.php:244
339
  msgid "Center"
340
  msgstr ""
341
 
342
+ #: views/tabs.php:245
343
  msgid "None"
344
  msgstr ""
345
 
346
+ #: views/tabs.php:251
347
  msgid "Placement"
348
  msgstr ""
349
 
350
+ #: views/tabs.php:254
351
  msgid "Above Content"
352
  msgstr ""
353
 
354
+ #: views/tabs.php:255
355
  msgid "Below Content"
356
  msgstr ""
357
 
358
+ #: views/tabs.php:265
359
  msgid "Button Display"
360
  msgstr ""
361
 
362
+ #: views/tabs.php:270
363
  msgid "Pages to show on"
364
  msgstr ""
365
 
366
+ #: views/tabs.php:272
367
  msgid "Posts"
368
  msgstr ""
369
 
370
+ #: views/tabs.php:273
371
  msgid "Pages"
372
  msgstr ""
373
 
374
+ #: views/tabs.php:274
375
  msgid "Homepage"
376
  msgstr ""
377
 
378
+ #: views/tabs.php:275
379
  msgid "Category Pages"
380
  msgstr ""
381
 
382
+ #: views/tabs.php:276
383
  msgid "Taxonomy Pages"
384
  msgstr ""
385
 
386
+ #: views/tabs.php:278
387
  msgid "Add direct to template"
388
  msgstr ""
389
 
390
+ #: views/tabs.php:283
391
  msgid "Copy Snippet"
392
  msgstr ""
393
 
394
+ #: views/tabs.php:286
395
  msgid "or use the shortcode inside your page/article"
396
  msgstr ""
397
 
398
+ #: views/tabs.php:287
399
  msgid "Copy Shortcode"
400
  msgstr ""
401
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
402
  #: views/tabs.php:291
403
+ msgid "Specific categories to show on"
404
  msgstr ""
405
 
406
+ #: views/tabs.php:319
407
  msgid "Pro Exclusive Features"
408
  msgstr ""
409
 
410
+ #: views/tabs.php:325
411
  msgid "Encode images"
412
  msgstr ""
413
 
414
+ #: views/tabs.php:328 views/tabs.php:339 views/tabs.php:441
415
  msgid "No"
416
  msgstr ""
417
 
418
+ #: views/tabs.php:329 views/tabs.php:340 views/tabs.php:440
419
  msgid "Yes"
420
  msgstr ""
421
 
422
+ #: views/tabs.php:331
423
  msgid ""
424
  "Select \"Yes\" if your site is not publicly accessible or if your provider "
425
+ "blocks image requests from third parties or if images are not present in PDF"
 
426
  msgstr ""
427
 
428
+ #: views/tabs.php:336
429
  msgid "Show Hidden Content"
430
  msgstr ""
431
 
432
+ #: views/tabs.php:342
433
  msgid ""
434
  "By default PrintFriendly Pro will only show the visible content on the "
435
  "page. Select \"Yes\", if you want PrintFriendly to show hidden content. "
436
  "(Ex. Content in hidden tabs)"
437
  msgstr ""
438
 
439
+ #: views/tabs.php:348
440
+ msgid "These features require a Pro subscription."
441
  msgstr ""
442
 
443
+ #: views/tabs.php:348
444
  msgid "Learn More"
445
  msgstr ""
446
 
447
+ #: views/tabs.php:354 views/tabs.php:554
448
+ msgid "Save Options"
449
+ msgstr ""
450
+
451
+ #: views/tabs.php:355 views/tabs.php:555
452
+ msgid "Cancel"
453
+ msgstr ""
454
+
455
+ #: views/tabs.php:367
456
+ msgid "Page header"
457
+ msgstr ""
458
+
459
+ #: views/tabs.php:376
460
+ msgid "My Website Icon"
461
+ msgstr ""
462
+
463
+ #: views/tabs.php:404
464
+ msgid "Tagline (optional)"
465
+ msgstr ""
466
+
467
+ #: views/tabs.php:431
468
+ msgid "Features"
469
+ msgstr ""
470
+
471
+ #: views/tabs.php:437
472
  msgid "Track in Google Analytics"
473
  msgstr ""
474
 
475
+ #: views/tabs.php:447
476
+ msgid "Click to delete"
477
  msgstr ""
478
 
479
+ #: views/tabs.php:450 views/tabs.php:487 views/tabs.php:497 views/tabs.php:508
480
  msgid "Allow"
481
  msgstr ""
482
 
483
+ #: views/tabs.php:451 views/tabs.php:488 views/tabs.php:498 views/tabs.php:509
484
  msgid "Not Allow"
485
  msgstr ""
486
 
487
+ #: views/tabs.php:453 views/tabs.php:479
488
+ msgid "Read documentation about this feature %1$shere%2$s"
489
  msgstr ""
490
 
491
+ #: views/tabs.php:458
492
  msgid "Image size"
493
  msgstr ""
494
 
495
+ #: views/tabs.php:461
496
  msgid "Full Size"
497
  msgstr ""
498
 
499
+ #: views/tabs.php:462
500
  msgid "Large"
501
  msgstr ""
502
 
503
+ #: views/tabs.php:463
504
  msgid "Medium"
505
  msgstr ""
506
 
507
+ #: views/tabs.php:464
508
  msgid "Small"
509
  msgstr ""
510
 
511
+ #: views/tabs.php:465
512
  msgid "Remove Images"
513
  msgstr ""
514
 
515
+ #: views/tabs.php:471
516
  msgid "Image style"
517
  msgstr ""
518
 
519
+ #: views/tabs.php:474
520
+ msgid "Center/Block"
521
+ msgstr ""
522
+
523
+ #: views/tabs.php:475
524
  msgid "Align Right"
525
  msgstr ""
526
 
527
+ #: views/tabs.php:476
528
  msgid "Align Left"
529
  msgstr ""
530
 
531
+ #: views/tabs.php:477
532
  msgid "Align None"
533
  msgstr ""
534
 
535
+ #: views/tabs.php:494
 
 
 
 
536
  msgid "PDF"
537
  msgstr ""
538
 
539
+ #: views/tabs.php:500
540
  msgid "Developer Note"
541
  msgstr ""
542
 
543
+ #: views/tabs.php:500
544
  msgid ""
545
  "On localhost the images can not be included in the PDF. Once the website is "
546
  "live/public images will be included in the PDF."
547
  msgstr ""
548
 
549
+ #: views/tabs.php:505
550
  msgid "Print"
551
  msgstr ""
552
 
553
+ #: views/tabs.php:520
554
  msgid "Custom CSS"
555
  msgstr ""
556
 
557
+ #: views/tabs.php:527
558
  msgid "Custom CSS URL"
559
  msgstr ""
560
 
561
+ #: views/tabs.php:542
562
  msgid ""
563
  "Customize the styles of the printed/pdf page using your own CSS. Create "
564
  "your custom CSS, and put the URL to your Custom CSS file in the box above"
565
  msgstr ""
566
 
567
+ #: views/tabs.php:544
568
  msgid ""
569
  "Customize the styles of the printed/pdf page using your own CSS. Add your "
570
  "custom CSS (without the %s tags) in the box above"
571
  msgstr ""
572
 
573
+ #: views/tabs.php:569
574
  msgid "Debug options"
575
  msgstr ""
576
 
577
+ #: views/tabs.php:578
578
  msgid "Currently in Debug Mode. This tab is visible in debug mode only"
579
  msgstr ""
580
 
pf.php CHANGED
@@ -4,7 +4,7 @@
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: 4.2
8
  Author: Print, PDF, & Email by PrintFriendly
9
  Author URI: http://www.printfriendly.com
10
  Domain Path: /languages
@@ -32,7 +32,7 @@ if ( ! class_exists( 'PrintFriendly_WordPress' ) ) {
32
  *
33
  * @var string
34
  */
35
- var $plugin_version = '4.2';
36
 
37
  /**
38
  * The hook, used for text domain as well as hooks on pages and in get requests for admin.
@@ -276,6 +276,8 @@ if ( ! class_exists( 'PrintFriendly_WordPress' ) ) {
276
  $image_url = '';
277
  }
278
 
 
 
279
  // Currently we use v3 for both: normal and password protected sites
280
  ?>
281
  <script type="text/javascript" id="pf_script">
@@ -417,10 +419,39 @@ if ( ! class_exists( 'PrintFriendly_WordPress' ) ) {
417
  $align = ' pf-align' . $this->options['content_position'];
418
  }
419
  $href = str_replace( '&', '&amp;', $href );
 
420
  $button = apply_filters( 'printfriendly_button', '<div class="printfriendly pf-button ' . $add_class . $align . '"><a href="' . $href . '" rel="nofollow" ' . $onclick . ' title="Printer Friendly, PDF & Email">' . $this->button() . '</a></div>' );
421
  return $button;
422
  }
423
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
424
 
425
  /**
426
  * Checks if GA is enabled.
@@ -663,10 +694,14 @@ if ( ! class_exists( 'PrintFriendly_WordPress' ) ) {
663
  $valid_input['enable_google_analytics'] = 'no';
664
  }
665
 
666
- if ( ! isset( $input['pf_algo'] ) || ! in_array( $input['pf_algo'], array('wp', 'pf'), true ) ) {
667
  $valid_input['pf_algo'] = 'wp';
668
  }
669
 
 
 
 
 
670
  /* Database version */
671
  $valid_input['db_version'] = $this->db_version;
672
 
@@ -715,9 +750,9 @@ if ( ! class_exists( 'PrintFriendly_WordPress' ) ) {
715
  wp_enqueue_script( 'select2', plugins_url( 'assets/js/lib/select2.min.js', __FILE__ ) );
716
  }
717
 
718
- wp_register_script( 'pf-admin', plugins_url( 'assets/js/admin.js', __FILE__ ), array( 'jquery', 'jquery-ui-tabs', 'media-upload', 'wp-color-picker', 'clipboard', 'select2' ), $this->plugin_version );
719
  wp_localize_script(
720
- 'pf-admin', 'config', array(
721
  'i10n' => array(
722
  'upload_window_title' => __( 'Custom Image', 'printfriendly' ),
723
  'upload_window_button_title' => __( 'Use Image', 'printfriendly' ),
@@ -729,7 +764,7 @@ if ( ! class_exists( 'PrintFriendly_WordPress' ) ) {
729
  wp_register_script( 'pf-admin-pro', plugins_url( 'assets/js/admin_pro.js', __FILE__ ), array( 'pf-admin' ), $this->plugin_version );
730
 
731
  wp_localize_script(
732
- 'pf-admin-pro', 'config', array(
733
  'nonce' => wp_create_nonce( $this->hook . $this->plugin_version ),
734
  'action' => $this->hook,
735
  'i10n' => array(
@@ -1433,6 +1468,7 @@ if ( ! class_exists( 'PrintFriendly_WordPress' ) ) {
1433
  settings_errors();
1434
  }
1435
 
 
1436
  include_once PRINTFRIENDLY_BASEPATH . '/views/settings.php';
1437
  }
1438
 
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: 5.0
8
  Author: Print, PDF, & Email by PrintFriendly
9
  Author URI: http://www.printfriendly.com
10
  Domain Path: /languages
32
  *
33
  * @var string
34
  */
35
+ var $plugin_version = '5.0';
36
 
37
  /**
38
  * The hook, used for text domain as well as hooks on pages and in get requests for admin.
276
  $image_url = '';
277
  }
278
 
279
+ echo $this->getSelectorsFromCustomCSS();
280
+
281
  // Currently we use v3 for both: normal and password protected sites
282
  ?>
283
  <script type="text/javascript" id="pf_script">
419
  $align = ' pf-align' . $this->options['content_position'];
420
  }
421
  $href = str_replace( '&', '&amp;', $href );
422
+
423
  $button = apply_filters( 'printfriendly_button', '<div class="printfriendly pf-button ' . $add_class . $align . '"><a href="' . $href . '" rel="nofollow" ' . $onclick . ' title="Printer Friendly, PDF & Email">' . $this->button() . '</a></div>' );
424
  return $button;
425
  }
426
 
427
+ /**
428
+ * Returns the custom selector CSS to be added.
429
+ *
430
+ * @since 5.0
431
+ * @returns string
432
+ */
433
+ private function getSelectorsFromCustomCSS() {
434
+ $css = '';
435
+
436
+ if ( $this->options['pf_algo'] === 'css' ) {
437
+ $attributes = array();
438
+ $names = array( 'author', 'date', 'content', 'title', 'primaryImage' );
439
+ $data = '';
440
+ foreach ( $names as $name ) {
441
+ $selector = $this->val( "css-{$name}", false );
442
+ $suffix = $name === 'content' ? 'Selectors' : 'Selector';
443
+ if ( ! empty( $selector ) ) {
444
+ $data .= "{$name}{$suffix}=$selector;";
445
+ }
446
+ }
447
+ $fallback = $this->options['pf_algo_css_content'];
448
+ if ( $data ) {
449
+ $css = sprintf( '<printfriendly-options data-selectors="%s" data-fallback-strategy="%s"></printfriendly-options>', esc_attr( $data ), esc_attr( $fallback ) );
450
+ }
451
+ }
452
+ return $css;
453
+ }
454
+
455
 
456
  /**
457
  * Checks if GA is enabled.
694
  $valid_input['enable_google_analytics'] = 'no';
695
  }
696
 
697
+ if ( ! isset( $input['pf_algo'] ) || ! in_array( $input['pf_algo'], array('wp', 'pf', 'css'), true ) ) {
698
  $valid_input['pf_algo'] = 'wp';
699
  }
700
 
701
+ if ( $valid_input['pf_algo'] === 'css' && empty( $valid_input['pf_algo_css_content'] ) && ! empty( $valid_input['css-content'] ) ) {
702
+ $valid_input['pf_algo_css_content'] = 'original';
703
+ }
704
+
705
  /* Database version */
706
  $valid_input['db_version'] = $this->db_version;
707
 
750
  wp_enqueue_script( 'select2', plugins_url( 'assets/js/lib/select2.min.js', __FILE__ ) );
751
  }
752
 
753
+ wp_register_script( 'pf-admin', plugins_url( 'assets/js/admin.js', __FILE__ ), array( 'jquery', 'jquery-ui-tabs', 'jquery-ui-accordion', 'media-upload', 'wp-color-picker', 'clipboard', 'select2' ), $this->plugin_version );
754
  wp_localize_script(
755
+ 'pf-admin', 'pf_config', array(
756
  'i10n' => array(
757
  'upload_window_title' => __( 'Custom Image', 'printfriendly' ),
758
  'upload_window_button_title' => __( 'Use Image', 'printfriendly' ),
764
  wp_register_script( 'pf-admin-pro', plugins_url( 'assets/js/admin_pro.js', __FILE__ ), array( 'pf-admin' ), $this->plugin_version );
765
 
766
  wp_localize_script(
767
+ 'pf-admin-pro', 'pf_config', array(
768
  'nonce' => wp_create_nonce( $this->hook . $this->plugin_version ),
769
  'action' => $this->hook,
770
  'i10n' => array(
1468
  settings_errors();
1469
  }
1470
 
1471
+ $customCssOptionCode = $this->getSelectorsFromCustomCSS();
1472
  include_once PRINTFRIENDLY_BASEPATH . '/views/settings.php';
1473
  }
1474
 
readme.txt CHANGED
@@ -3,7 +3,7 @@ Contributors: printfriendly, joostdevalk, jrf, rozroz
3
  Tags: print, pdf, email, woocommerce print, woocommerce pdf, print plugin, print button, pdf plugin, pdf button
4
  Requires at least: 4.9
5
  Tested up to: 5.8
6
- Stable tag: 4.2
7
 
8
 
9
  The #1 Print, PDF, Email button. Stylish, full featured, customizable. Add custom header, footer, and more.
@@ -144,6 +144,10 @@ You can [hide the Print, PDF, and Email button](https://support.printfriendly.co
144
 
145
  == Changelog ==
146
 
 
 
 
 
147
  = 4.2 =
148
  * Fix: jQuery.fn.load() is deprecated
149
  * Fix: Specific categories do not accept more than one entry
3
  Tags: print, pdf, email, woocommerce print, woocommerce pdf, print plugin, print button, pdf plugin, pdf button
4
  Requires at least: 4.9
5
  Tested up to: 5.8
6
+ Stable tag: 5.0
7
 
8
 
9
  The #1 Print, PDF, Email button. Stylish, full featured, customizable. Add custom header, footer, and more.
144
 
145
  == Changelog ==
146
 
147
+ = 5.0 =
148
+ * Add support for custom CSS selectors
149
+ * Improve the settings UI
150
+
151
  = 4.2 =
152
  * Fix: jQuery.fn.load() is deprecated
153
  * Fix: Specific categories do not accept more than one entry
views/tabs.php CHANGED
@@ -22,14 +22,85 @@
22
  </header>
23
 
24
  <div class="pf-bu-card-content">
25
- <?php if ( class_exists( 'WooCommerce' ) ) { ?>
26
- <p><?php _e( 'Not available for woocommerce', 'printfriendly' ); ?></p>
27
- <?php } else { ?>
28
- <select class="pf-bu-select" id="pf-algo-usage" name="<?php echo $this->option_name; ?>[pf_algo]">
29
- <option value="wp" <?php $this->selected( 'pf_algo', 'wp' ); ?>> <?php _e( 'WP Template', 'printfriendly' ); ?></option>
30
- <option value="pf" <?php $this->selected( 'pf_algo', 'pf' ); ?>> <?php _e( 'Content Algorithm', 'printfriendly' ); ?></option>
31
- </select>
32
- <?php } ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
33
  </div>
34
 
35
  <div class="pf-bu-card-footer">
@@ -163,20 +234,28 @@
163
  </p>
164
  </header>
165
 
166
- <div class="pf-bu-card-content">
167
- <label for="pf_content_position" class="pf-bu-label"><?php _e( 'Alignment', 'printfriendly' ); ?></label>
168
- <select class="pf-bu-select" id="pf_content_position" name="<?php echo $this->option_name; ?>[content_position]">
169
- <option value="left" <?php selected( $this->options['content_position'], 'left' ); ?>><?php _e( 'Left Align', 'printfriendly' ); ?></option>
170
- <option value="right" <?php selected( $this->options['content_position'], 'right' ); ?>><?php _e( 'Right Align', 'printfriendly' ); ?></option>
171
- <option value="center" <?php selected( $this->options['content_position'], 'center' ); ?>><?php _e( 'Center', 'printfriendly' ); ?></option>
172
- <option value="none" <?php selected( $this->options['content_position'], 'none' ); ?>><?php _e( 'None', 'printfriendly' ); ?></option>
173
- </select>
174
-
175
- <label for="pf_content_placement" class="pf-bu-label"><?php _e( 'Placement', 'printfriendly' ); ?></label>
176
- <select class="pf-bu-select" id="pf_content_placement" name="<?php echo $this->option_name; ?>[content_placement]">
177
- <option value="before" <?php selected( $this->options['content_placement'], 'before' ); ?>><?php _e( 'Above Content', 'printfriendly' ); ?></option>
178
- <option value="after" <?php selected( $this->options['content_placement'], 'after' ); ?>><?php _e( 'Below Content', 'printfriendly' ); ?></option>
179
- </select>
 
 
 
 
 
 
 
 
180
  </div>
181
  </div>
182
 
@@ -241,25 +320,32 @@
241
  </p>
242
  </header>
243
 
244
- <div class="pf-bu-card-content">
245
- <label for="password_protected" class="pf-bu-label"><?php _e( 'Encode images', 'printfriendly' ); ?></label>
246
- <select class="pf-bu-select" id="password_protected" name="<?php echo $this->option_name; ?>[password_protected]">
247
- <option value="no" <?php selected( $this->val( 'password_protected', false ), 'no' ); ?>><?php _e( 'No', 'printfriendly' ); ?></option>
248
- <option value="yes" <?php selected( $this->val( 'password_protected', false ), 'yes' ); ?>><?php _e( 'Yes', 'printfriendly' ); ?></option>
249
- </select>
250
- <p class="description"><?php _e( 'Select "Yes" if your site is not publicly accessible or if your provider blocks image requests from third parties (Ex. Zendesk) or if images are not present in PDF', 'printfriendly' ); ?></p>
251
-
252
- <label for="show_hidden_content" class="pf-bu-label"><?php _e( 'Show Hidden Content', 'printfriendly' ); ?></label>
253
- <select class="pf-bu-select" id="show_hidden_content" name="<?php echo $this->option_name; ?>[show_hidden_content]">
254
- <option value="no" <?php selected( $this->val( 'show_hidden_content', false ), 'no' ); ?>><?php _e( 'No', 'printfriendly' ); ?></option>
255
- <option value="yes" <?php selected( $this->val( 'show_hidden_content', false ), 'yes' ); ?>><?php _e( 'Yes', 'printfriendly' ); ?></option>
256
- </select>
257
- <p class="description"><?php _e( 'By default PrintFriendly Pro will only show the visible content on the page. Select "Yes", if you want PrintFriendly to show hidden content. (Ex. Content in hidden tabs)', 'printfriendly' ); ?></p>
258
 
 
 
 
 
 
 
 
 
 
 
259
  </div>
260
 
261
  <div class="pf-bu-card-footer">
262
- <p class="pf-bu-card-footer-item"><?php _e( 'This feature requires a Pro subscription.', 'printfriendly' ); ?>&nbsp;<a href="https://www.printfriendly.com/pro" target="_blank"><?php _e( 'Learn More', 'printfriendly' ); ?></a></p>
263
  </div>
264
  </div>
265
 
@@ -342,117 +428,89 @@
342
  <div class="pf-bu-block pf-bu-card">
343
  <header class="pf-bu-card-header">
344
  <p class="pf-bu-card-header-title">
345
- <?php _e( 'Track in Google Analytics', 'printfriendly' ); ?>
346
- </p>
347
- </header>
348
-
349
- <div class="pf-bu-card-content">
350
- <select class="pf-bu-select" id="pf-analytics-tracking" name="<?php echo $this->option_name; ?>[enable_google_analytics]">
351
- <option value="yes" <?php $this->selected( 'enable_google_analytics', 'yes' ); ?>> <?php _e( 'Yes', 'printfriendly' ); ?></option>
352
- <option value="no" <?php $this->selected( 'enable_google_analytics', 'no' ); ?>> <?php _e( 'No', 'printfriendly' ); ?></option>
353
- </select>
354
- </div>
355
- </div>
356
-
357
- <div class="pf-bu-block pf-bu-card">
358
- <header class="pf-bu-card-header">
359
- <p class="pf-bu-card-header-title">
360
- <?php _e( 'Click-to-delete', 'printfriendly' ); ?>
361
- </p>
362
- </header>
363
-
364
- <div class="pf-bu-card-content">
365
- <select class="pf-bu-select" name="<?php echo $this->option_name; ?>[click_to_delete]" id="click-to-delete">
366
- <option value="0" <?php selected( $this->options['click_to_delete'], '0' ); ?>><?php _e( 'Allow', 'printfriendly' ); ?></option>
367
- <option value="1" <?php selected( $this->options['click_to_delete'], '1' ); ?>><?php _e( 'Not Allow', 'printfriendly' ); ?></option>
368
- </select>
369
- </div>
370
-
371
- <div class="pf-bu-card-footer">
372
- <p class="pf-bu-card-footer-item"><a href="https://printfriendly.freshdesk.com/support/solutions/articles/69000080475-turn-off-the-click-to-delete-option-in-wordpress" target="_new"><?php _e( 'Documentation', 'printfriendly' ); ?></a></p>
373
- </div>
374
-
375
- </div>
376
-
377
- <div class="pf-bu-block pf-bu-card">
378
- <header class="pf-bu-card-header">
379
- <p class="pf-bu-card-header-title">
380
- <?php _e( 'Images', 'printfriendly' ); ?>
381
  </p>
382
  </header>
383
 
384
- <div class="pf-bu-card-content">
385
- <label for="image-size" class="pf-bu-label"><?php _e( 'Image size', 'printfriendly' ); ?></label>
386
- <select class="pf-bu-select" name="<?php echo $this->option_name; ?>[images-size]" id="images-size">
387
- <option value="full-size" <?php selected( $this->options['images-size'], 'full-size' ); ?>><?php _e( 'Full Size', 'printfriendly' ); ?></option>
388
- <option value="large" <?php selected( $this->options['images-size'], 'large' ); ?>><?php _e( 'Large', 'printfriendly' ); ?></option>
389
- <option value="medium" <?php selected( $this->options['images-size'], 'medium' ); ?>><?php _e( 'Medium', 'printfriendly' ); ?></option>
390
- <option value="small" <?php selected( $this->options['images-size'], 'small' ); ?>><?php _e( 'Small', 'printfriendly' ); ?></option>
391
- <option value="remove-images" <?php selected( $this->options['images-size'], 'remove-images' ); ?>><?php _e( 'Remove Images', 'printfriendly' ); ?></option>
392
- </select>
393
-
394
- <label for="image-style" class="pf-bu-label"><?php _e( 'Image style', 'printfriendly' ); ?></label>
395
- <select class="pf-bu-select" name="<?php echo $this->option_name; ?>[image-style]" id="image-style">
396
- <option value="block" <?php selected( $this->options['image-style'], 'block' ); ?>><?php _e( 'Center/Block', 'printfriendly' ); ?></option>
397
- <option value="right" <?php selected( $this->options['image-style'], 'right' ); ?>><?php _e( 'Align Right', 'printfriendly' ); ?></option>
398
- <option value="left" <?php selected( $this->options['image-style'], 'left' ); ?>><?php _e( 'Align Left', 'printfriendly' ); ?></option>
399
- <option value="none" <?php selected( $this->options['image-style'], 'none' ); ?>><?php _e( 'Align None', 'printfriendly' ); ?></option>
400
- </select>
401
- </div>
402
-
403
- <div class="pf-bu-card-footer">
404
- <p class="pf-bu-card-footer-item"><a href="https://printfriendly.freshdesk.com/support/solutions/articles/69000080507-remove-images-option" target="_new"><?php _e( 'Documentation', 'printfriendly' ); ?></a></p>
405
- </div>
406
-
407
- </div>
408
-
409
- <div class="pf-bu-block pf-bu-card">
410
- <header class="pf-bu-card-header">
411
- <p class="pf-bu-card-header-title">
412
- <?php _e( 'Email', 'printfriendly' ); ?>
413
- </p>
414
- </header>
415
 
416
- <div class="pf-bu-card-content">
417
- <select class="pf-bu-select" name="<?php echo $this->option_name; ?>[email]" id="email">
418
- <option value="0" <?php selected( $this->options['email'], '0' ); ?>><?php _e( 'Allow', 'printfriendly' ); ?></option>
419
- <option value="1" <?php selected( $this->options['email'], '1' ); ?>><?php _e( 'Not Allow', 'printfriendly' ); ?></option>
420
- </select>
421
- </div>
422
- </div>
 
 
 
423
 
424
- <div class="pf-bu-block pf-bu-card">
425
- <header class="pf-bu-card-header">
426
- <p class="pf-bu-card-header-title">
427
- <?php _e( 'PDF', 'printfriendly' ); ?>
428
- </p>
429
- </header>
 
 
 
 
 
 
430
 
431
- <div class="pf-bu-card-content">
432
- <select class="pf-bu-select" name="<?php echo $this->option_name; ?>[pdf]" id="pdf">
433
- <option value="0" <?php selected( $this->options['pdf'], '0' ); ?>><?php _e( 'Allow', 'printfriendly' ); ?></option>
434
- <option value="1" <?php selected( $this->options['pdf'], '1' ); ?>><?php _e( 'Not Allow', 'printfriendly' ); ?></option>
435
- </select>
436
- </div>
 
 
 
 
 
 
437
 
438
- <div class="pf-bu-card-footer">
439
- <p class="pf-bu-card-footer-item"><strong><?php _e( 'Developer Note', 'printfriendly' ); ?></strong>: <?php _e( 'On localhost the images can not be included in the PDF. Once the website is live/public images will be included in the PDF.', 'printfriendly' ); ?></p>
440
- </div>
 
 
 
 
 
 
441
 
442
- </div>
 
 
 
 
 
 
 
 
 
443
 
444
- <div class="pf-bu-block pf-bu-card">
445
- <header class="pf-bu-card-header">
446
- <p class="pf-bu-card-header-title">
447
- <?php _e( 'Print', 'printfriendly' ); ?>
448
- </p>
449
- </header>
 
 
 
450
 
451
- <div class="pf-bu-card-content">
452
- <select class="pf-bu-select" name="<?php echo $this->option_name; ?>[print]" id="print">
453
- <option value="0" <?php selected( $this->options['print'], '0' ); ?>><?php _e( 'Allow', 'printfriendly' ); ?></option>
454
- <option value="1" <?php selected( $this->options['print'], '1' ); ?>><?php _e( 'Not Allow', 'printfriendly' ); ?></option>
455
- </select>
456
  </div>
457
  </div>
458
 
22
  </header>
23
 
24
  <div class="pf-bu-card-content">
25
+ <?php
26
+ $disabled = $message = '';
27
+ if ( class_exists( 'WooCommerce' ) ) {
28
+ $disabled = 'disabled';
29
+ $message = '(' . __( 'Not available for WooCommerce', 'printfriendly' ) . ')';
30
+ }
31
+ ?>
32
+
33
+ <div>
34
+ <div>
35
+ <label for="pf-algo-wp">
36
+ <input id="pf-algo-wp" type="radio" name="<?php echo $this->option_name; ?>[pf_algo]" value="wp" <?php echo $this->options['pf_algo'] === 'wp' ? 'checked' : ''; ?> <?php echo $disabled; ?>>
37
+ <?php _e( 'WP Template', 'printfriendly' ); ?> <?php echo $message; ?>
38
+ </label>
39
+ </div>
40
+
41
+ <div>
42
+ <label for="pf-algo-pf">
43
+ <input id="pf-algo-pf" type="radio" name="<?php echo $this->option_name; ?>[pf_algo]" value="pf" <?php echo $this->options['pf_algo'] === 'pf' ? 'checked' : ''; ?>>
44
+ <?php _e( 'Content Algorithm', 'printfriendly' ); ?>
45
+ </label>
46
+ </div>
47
+
48
+ <div>
49
+ <label for="pf-algo-css">
50
+ <input id="pf-algo-css" type="radio" name="<?php echo $this->option_name; ?>[pf_algo]" value="css" <?php echo $this->options['pf_algo'] === 'css' ? 'checked' : ''; ?>>
51
+ <?php _e( 'Custom CSS Selectors', 'printfriendly' ); ?>
52
+ </label>
53
+ <div class="pf-algo-usage pf-algo-usage-css" style="display: none" data-tag-template="<?php echo esc_attr( '<printfriendly-options data-selectors="#1" data-fallback-strategy="#2"></printfriendly-options>' ); ?>">
54
+ <div class="pf-bu-columns">
55
+ <div class="pf-bu-column pf-bu-one-sixth pf-algo-usage-css-fields">
56
+ <div>
57
+ <label for="pf-algo-usage-css-author"><?php _e( 'Author Selector', 'printfriendly' ); ?></label>
58
+ <input type="text" id="pf-algo-usage-css-author" name="<?php echo $this->option_name; ?>[css-author]" value="<?php $this->val( 'css-author' ); ?>" data-selector-name="authorSelector">
59
+ </div>
60
+ <div>
61
+ <label for="pf-algo-usage-css-content"><?php _e( 'Content Selector', 'printfriendly' ); ?></label>
62
+ <input type="text" id="pf-algo-usage-css-content" name="<?php echo $this->option_name; ?>[css-content]" value="<?php $this->val( 'css-content' ); ?>" data-selector-name="contentSelectors">
63
+ </div>
64
+ <div>
65
+ <label for="pf-algo-usage-css-date"><?php _e( 'Date Selector', 'printfriendly' ); ?></label>
66
+ <input type="text" id="pf-algo-usage-css-date" name="<?php echo $this->option_name; ?>[css-date]" value="<?php $this->val( 'css-date' ); ?>" data-selector-name="dateSelector">
67
+ </div>
68
+ <div>
69
+ <label for="pf-algo-usage-css-title"><?php _e( 'Title Selector', 'printfriendly' ); ?></label>
70
+ <input type="text" id="pf-algo-usage-css-title" name="<?php echo $this->option_name; ?>[css-title]" value="<?php $this->val( 'css-title' ); ?>" data-selector-name="titleSelector">
71
+ </div>
72
+ <div>
73
+ <label for="pf-algo-usage-css-image"><?php _e( 'Image Selector', 'printfriendly' ); ?></label>
74
+ <input type="text" id="pf-algo-usage-css-image" name="<?php echo $this->option_name; ?>[css-primaryImage]" value="<?php $this->val( 'css-primaryImage' ); ?>" data-selector-name="primaryImageSelector">
75
+ </div>
76
+ </div>
77
+ <div class="pf-bu-column pf-bu-one-sixth pf-algo-usage-css-strategy">
78
+ <label><?php _e( 'Content Fallback Strategy', 'printfriendly' ); ?></label>
79
+ <label>
80
+ <input type="radio" id="pf_algo_css_fallback_original" name="<?php echo $this->option_name; ?>[pf_algo_css_content]" value="original" <?php echo ( empty( $this->options['pf_algo_css_content'] ) || $this->options['pf_algo_css_content'] === 'original' ) ? 'checked' : ''; ?>>
81
+ <?php _e( 'Use existing rules to find content', 'printfriendly' ); ?>
82
+ </label>
83
+ <label>
84
+ <input type="radio" id="pf_algo_css_fallback_error" name="<?php echo $this->option_name; ?>[pf_algo_css_content]" value="error-message" <?php echo $this->options['pf_algo_css_content'] === 'error-message' ? 'checked' : ''; ?>>
85
+ <?php _e( 'Show an error message', 'printfriendly' ); ?>
86
+ </label>
87
+ <p class="description">
88
+ <?php _e( 'This setting can be used to configure the behaviour of the plugin, when content CSS selector does not match any content.', 'printfriendly' ); ?>
89
+ <br/>
90
+ <?php _e( 'We recommend setting this to "Use existing rules to find content" in production and to "Show an error message" in development.', 'printfriendly' ); ?></p>
91
+ <div class="pf-bu-mt-5"></div>
92
+ <div class="pf-accordion">
93
+ <label><?php _e( 'Show Options Code', 'printfriendly' ); ?></label>
94
+ <div>
95
+ <code class="pf-custom-css-code"><?php echo esc_html( $customCssOptionCode ); ?></code>
96
+ <a class="pf-clipboard pf-custom-css-code-snippet" href="javascript:;" data-clipboard-text="<?php echo esc_attr( $customCssOptionCode ); ?>"><span class="pf-bu-tag pf-bu-is-info pf-bu-is-light"><?php _e( 'Copy Code', 'printfriendly' ); ?></span></a>
97
+ </div>
98
+ </div>
99
+ </div>
100
+ </div>
101
+ </div>
102
+ </div>
103
+ </div>
104
  </div>
105
 
106
  <div class="pf-bu-card-footer">
234
  </p>
235
  </header>
236
 
237
+ <div class="pf-bu-card-content pf-features">
238
+ <div class="pf-label-inline">
239
+ <label for="pf_content_position" class="pf-bu-label"><?php _e( 'Alignment', 'printfriendly' ); ?></label>
240
+ <div>
241
+ <select class="pf-bu-select" id="pf_content_position" name="<?php echo $this->option_name; ?>[content_position]">
242
+ <option value="left" <?php selected( $this->options['content_position'], 'left' ); ?>><?php _e( 'Left Align', 'printfriendly' ); ?></option>
243
+ <option value="right" <?php selected( $this->options['content_position'], 'right' ); ?>><?php _e( 'Right Align', 'printfriendly' ); ?></option>
244
+ <option value="center" <?php selected( $this->options['content_position'], 'center' ); ?>><?php _e( 'Center', 'printfriendly' ); ?></option>
245
+ <option value="none" <?php selected( $this->options['content_position'], 'none' ); ?>><?php _e( 'None', 'printfriendly' ); ?></option>
246
+ </select>
247
+ </div>
248
+ </div>
249
+
250
+ <div class="pf-label-inline">
251
+ <label for="pf_content_placement" class="pf-bu-label"><?php _e( 'Placement', 'printfriendly' ); ?></label>
252
+ <div>
253
+ <select class="pf-bu-select" id="pf_content_placement" name="<?php echo $this->option_name; ?>[content_placement]">
254
+ <option value="before" <?php selected( $this->options['content_placement'], 'before' ); ?>><?php _e( 'Above Content', 'printfriendly' ); ?></option>
255
+ <option value="after" <?php selected( $this->options['content_placement'], 'after' ); ?>><?php _e( 'Below Content', 'printfriendly' ); ?></option>
256
+ </select>
257
+ </div>
258
+ </div>
259
  </div>
260
  </div>
261
 
320
  </p>
321
  </header>
322
 
323
+ <div class="pf-bu-card-content pf-features">
324
+ <div class="pf-label-inline">
325
+ <label for="password_protected" class="pf-bu-label"><?php _e( 'Encode images', 'printfriendly' ); ?></label>
326
+ <div>
327
+ <select class="pf-bu-select" id="password_protected" name="<?php echo $this->option_name; ?>[password_protected]">
328
+ <option value="no" <?php selected( $this->val( 'password_protected', false ), 'no' ); ?>><?php _e( 'No', 'printfriendly' ); ?></option>
329
+ <option value="yes" <?php selected( $this->val( 'password_protected', false ), 'yes' ); ?>><?php _e( 'Yes', 'printfriendly' ); ?></option>
330
+ </select>
331
+ <p class="description"><?php _e( 'Select "Yes" if your site is not publicly accessible or if your provider blocks image requests from third parties or if images are not present in PDF', 'printfriendly' ); ?></p>
332
+ </div>
333
+ </div>
 
 
 
334
 
335
+ <div class="pf-label-inline">
336
+ <label for="show_hidden_content" class="pf-bu-label"><?php _e( 'Show Hidden Content', 'printfriendly' ); ?></label>
337
+ <div>
338
+ <select class="pf-bu-select" id="show_hidden_content" name="<?php echo $this->option_name; ?>[show_hidden_content]">
339
+ <option value="no" <?php selected( $this->val( 'show_hidden_content', false ), 'no' ); ?>><?php _e( 'No', 'printfriendly' ); ?></option>
340
+ <option value="yes" <?php selected( $this->val( 'show_hidden_content', false ), 'yes' ); ?>><?php _e( 'Yes', 'printfriendly' ); ?></option>
341
+ </select>
342
+ <p class="description"><?php _e( 'By default PrintFriendly Pro will only show the visible content on the page. Select "Yes", if you want PrintFriendly to show hidden content. (Ex. Content in hidden tabs)', 'printfriendly' ); ?></p>
343
+ </div>
344
+ </div>
345
  </div>
346
 
347
  <div class="pf-bu-card-footer">
348
+ <p class="pf-bu-card-footer-item"><?php _e( 'These features require a Pro subscription.', 'printfriendly' ); ?>&nbsp;<a href="https://www.printfriendly.com/pro" target="_blank"><?php _e( 'Learn More', 'printfriendly' ); ?></a></p>
349
  </div>
350
  </div>
351
 
428
  <div class="pf-bu-block pf-bu-card">
429
  <header class="pf-bu-card-header">
430
  <p class="pf-bu-card-header-title">
431
+ <?php _e( 'Features', 'printfriendly' ); ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
432
  </p>
433
  </header>
434
 
435
+ <div class="pf-bu-card-content pf-features">
436
+ <div class="pf-label-inline">
437
+ <label for="pf-analytics-tracking" class="pf-bu-label"><?php _e( 'Track in Google Analytics', 'printfriendly' ); ?></label>
438
+ <div>
439
+ <select class="pf-bu-select" id="pf-analytics-tracking" name="<?php echo $this->option_name; ?>[enable_google_analytics]">
440
+ <option value="yes" <?php $this->selected( 'enable_google_analytics', 'yes' ); ?>> <?php _e( 'Yes', 'printfriendly' ); ?></option>
441
+ <option value="no" <?php $this->selected( 'enable_google_analytics', 'no' ); ?>> <?php _e( 'No', 'printfriendly' ); ?></option>
442
+ </select>
443
+ </div>
444
+ </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
445
 
446
+ <div class="pf-label-inline">
447
+ <label for="click-to-delete" class="pf-bu-label"><?php _e( 'Click to delete', 'printfriendly' ); ?></label>
448
+ <div>
449
+ <select class="pf-bu-select" name="<?php echo $this->option_name; ?>[click_to_delete]" id="click-to-delete">
450
+ <option value="0" <?php selected( $this->options['click_to_delete'], '0' ); ?>><?php _e( 'Allow', 'printfriendly' ); ?></option>
451
+ <option value="1" <?php selected( $this->options['click_to_delete'], '1' ); ?>><?php _e( 'Not Allow', 'printfriendly' ); ?></option>
452
+ </select>
453
+ <p class="description"><?php echo sprintf( __( 'Read documentation about this feature %1$shere%2$s', 'printfriendly' ), '<a href="https://printfriendly.freshdesk.com/support/solutions/articles/69000080475-turn-off-the-click-to-delete-option-in-wordpress" target="_new">', '</a>' ); ?></p>
454
+ </div>
455
+ </div>
456
 
457
+ <div class="pf-label-inline">
458
+ <label for="images-size" class="pf-bu-label"><?php _e( 'Image size', 'printfriendly' ); ?></label>
459
+ <div>
460
+ <select class="pf-bu-select" name="<?php echo $this->option_name; ?>[images-size]" id="images-size">
461
+ <option value="full-size" <?php selected( $this->options['images-size'], 'full-size' ); ?>><?php _e( 'Full Size', 'printfriendly' ); ?></option>
462
+ <option value="large" <?php selected( $this->options['images-size'], 'large' ); ?>><?php _e( 'Large', 'printfriendly' ); ?></option>
463
+ <option value="medium" <?php selected( $this->options['images-size'], 'medium' ); ?>><?php _e( 'Medium', 'printfriendly' ); ?></option>
464
+ <option value="small" <?php selected( $this->options['images-size'], 'small' ); ?>><?php _e( 'Small', 'printfriendly' ); ?></option>
465
+ <option value="remove-images" <?php selected( $this->options['images-size'], 'remove-images' ); ?>><?php _e( 'Remove Images', 'printfriendly' ); ?></option>
466
+ </select>
467
+ </div>
468
+ </div>
469
 
470
+ <div class="pf-label-inline">
471
+ <label for="image-style" class="pf-bu-label"><?php _e( 'Image style', 'printfriendly' ); ?></label>
472
+ <div>
473
+ <select class="pf-bu-select" name="<?php echo $this->option_name; ?>[image-style]" id="image-style">
474
+ <option value="block" <?php selected( $this->options['image-style'], 'block' ); ?>><?php _e( 'Center/Block', 'printfriendly' ); ?></option>
475
+ <option value="right" <?php selected( $this->options['image-style'], 'right' ); ?>><?php _e( 'Align Right', 'printfriendly' ); ?></option>
476
+ <option value="left" <?php selected( $this->options['image-style'], 'left' ); ?>><?php _e( 'Align Left', 'printfriendly' ); ?></option>
477
+ <option value="none" <?php selected( $this->options['image-style'], 'none' ); ?>><?php _e( 'Align None', 'printfriendly' ); ?></option>
478
+ </select>
479
+ <p class="description"><?php echo sprintf( __( 'Read documentation about this feature %1$shere%2$s', 'printfriendly' ), '<a href="https://printfriendly.freshdesk.com/support/solutions/articles/69000080507-remove-images-option" target="_new">', '</a>' ); ?></p>
480
+ </div>
481
+ </div>
482
 
483
+ <div class="pf-label-inline">
484
+ <label for="email" class="pf-bu-label"><?php _e( 'Email', 'printfriendly' ); ?></label>
485
+ <div>
486
+ <select class="pf-bu-select" name="<?php echo $this->option_name; ?>[email]" id="email">
487
+ <option value="0" <?php selected( $this->options['email'], '0' ); ?>><?php _e( 'Allow', 'printfriendly' ); ?></option>
488
+ <option value="1" <?php selected( $this->options['email'], '1' ); ?>><?php _e( 'Not Allow', 'printfriendly' ); ?></option>
489
+ </select>
490
+ </div>
491
+ </div>
492
 
493
+ <div class="pf-label-inline">
494
+ <label for="pdf" class="pf-bu-label"><?php _e( 'PDF', 'printfriendly' ); ?></label>
495
+ <div>
496
+ <select class="pf-bu-select" name="<?php echo $this->option_name; ?>[pdf]" id="pdf">
497
+ <option value="0" <?php selected( $this->options['pdf'], '0' ); ?>><?php _e( 'Allow', 'printfriendly' ); ?></option>
498
+ <option value="1" <?php selected( $this->options['pdf'], '1' ); ?>><?php _e( 'Not Allow', 'printfriendly' ); ?></option>
499
+ </select>
500
+ <p class="description"><strong><?php _e( 'Developer Note', 'printfriendly' ); ?></strong>: <?php _e( 'On localhost the images can not be included in the PDF. Once the website is live/public images will be included in the PDF.', 'printfriendly' ); ?></p>
501
+ </div>
502
+ </div>
503
 
504
+ <div class="pf-label-inline">
505
+ <label for="print" class="pf-bu-label"><?php _e( 'Print', 'printfriendly' ); ?></label>
506
+ <div>
507
+ <select class="pf-bu-select" name="<?php echo $this->option_name; ?>[print]" id="print">
508
+ <option value="0" <?php selected( $this->options['print'], '0' ); ?>><?php _e( 'Allow', 'printfriendly' ); ?></option>
509
+ <option value="1" <?php selected( $this->options['print'], '1' ); ?>><?php _e( 'Not Allow', 'printfriendly' ); ?></option>
510
+ </select>
511
+ </div>
512
+ </div>
513
 
 
 
 
 
 
514
  </div>
515
  </div>
516