Strong Testimonials - Version 2.39.2

Version Description

Download this release

Release Info

Developer machothemes
Plugin Icon 128x128 Strong Testimonials
Version 2.39.2
Comparing to
See all releases

Code changes from version 2.39.1 to 2.39.2

admin/class-strong-testimonials-upsell.php CHANGED
@@ -6,7 +6,11 @@
6
  */
7
  class Strong_Testimonials_Upsell {
8
 
 
 
9
  public function __construct() {
 
 
10
  add_action( 'admin_notices', array( $this, 'add_general_upsell_notice' ), 11 );
11
  add_action( 'wpmtst_after_form_type_selection', array( $this, 'add_upsells_1' ) );
12
  add_action( 'wpmtst_before_fields_settings', array( $this, 'add_upsells_2' ) );
@@ -14,6 +18,19 @@ class Strong_Testimonials_Upsell {
14
  add_action( 'wpmtst_view_editor_after_group_select', array( $this, 'add_upsells_4' ) );
15
  add_action( 'wpmtst_fields_before_fields_editor_preview', array( $this, 'add_upsells_5' ) );
16
  add_action( 'wpmtst_after_form_settings', array( $this, 'add_upsells_6' ) );
 
 
 
 
 
 
 
 
 
 
 
 
 
17
  }
18
 
19
  public function add_general_upsell_notice() {
@@ -45,7 +62,7 @@ class Strong_Testimonials_Upsell {
45
  <?php esc_html_e( 'Build trust and credibility with your products.', 'strong-testimonials' ); ?><br/>
46
  <?php esc_html_e( 'Do more with Strong Testimonials extensions.', 'strong-testimonials' ); ?>
47
  </p>
48
- <a class="button button-primary" target="_blank" href="<?php echo esc_url( WPMTST_STORE_UPGRADE_URL . '?utm_source=st-lite&utm_campaign=upsell&utm_medium=' . $screen->id . '-notice-upsell' ); ?>"><?php esc_html_e( 'View pricing', 'strong-testimonials' ); ?></a>
49
  <button type="button" class="notice-dismiss"><span class="screen-reader-text"><?php esc_html_e( 'Dismiss this notice.', 'strong-testimonials' ); ?></span></button>
50
  </div><!-- wpmtst-notice--upsell -->
51
  <?php endif; ?>
@@ -73,7 +90,7 @@ class Strong_Testimonials_Upsell {
73
  ?>
74
  <p>
75
  <a class="button" target="_blank" href="<?php echo esc_url( WPMTST_STORE_URL . '/extensions/country-selector?utm_source=st-lite&utm_campaign=upsell&utm_medium=fields-country-selector-upsell' ); ?>"><?php esc_html_e( 'Learn More', 'strong-testimonials' ); ?></a>
76
- <a class="button button-primary" target="_blank" href="<?php echo esc_url( WPMTST_STORE_UPGRADE_URL . '?utm_source=st-lite&utm_campaign=upsell&utm_medium=fields-country-selector-upsell' ); ?>"><?php esc_html_e( 'Upgrade', 'strong-testimonials' ); ?></a>
77
  </p>
78
  </div>
79
  <?php
@@ -96,7 +113,7 @@ class Strong_Testimonials_Upsell {
96
  ?>
97
  <p>
98
  <a class="button" target="_blank" href="<?php echo esc_url( WPMTST_STORE_URL . '/extensions/custom-fields?utm_source=st-lite&utm_campaign=upsell&utm_medium=fields-custom-fields-upsell' ); ?>"><?php esc_html_e( 'Learn More', 'strong-testimonials' ); ?></a>
99
- <a class="button button-primary" target="_blank" href="<?php echo esc_url( WPMTST_STORE_UPGRADE_URL . '?utm_source=st-lite&utm_campaign=upsell&utm_medium=fields-custom-fields-upsell' ); ?>"><?php esc_html_e( 'Upgrade', 'strong-testimonials' ); ?></a>
100
  </p>
101
  </div>
102
  <?php
@@ -119,7 +136,7 @@ class Strong_Testimonials_Upsell {
119
  ?>
120
  <p>
121
  <a class="button" target="_blank" href="<?php echo esc_url( WPMTST_STORE_URL . '/extensions/multiple-forms?utm_source=st-lite&utm_campaign=upsell&utm_medium=fields-multiple-forms-upsell' ); ?>"><?php esc_html_e( 'Learn More', 'strong-testimonials' ); ?></a>
122
- <a class="button button-primary" target="_blank" href="<?php echo esc_url( WPMTST_STORE_UPGRADE_URL . '?utm_source=st-lite&utm_campaign=upsell&utm_medium=fields-multiple-forms-upsell' ); ?>"><?php esc_html_e( 'Upgrade', 'strong-testimonials' ); ?></a>
123
  </p>
124
  </div>
125
  <?php
@@ -142,7 +159,7 @@ class Strong_Testimonials_Upsell {
142
  ?>
143
  <p>
144
  <a class="button" target="_blank" href="<?php echo esc_url( WPMTST_STORE_URL . '/extensions/review-markup?utm_source=st-lite&utm_campaign=upsell&utm_medium=views-review-markup-upsell' ); ?>"><?php esc_html_e( 'Learn More', 'strong-testimonials' ); ?></a>
145
- <a class="button button-primary" target="_blank" href="<?php echo esc_url( WPMTST_STORE_UPGRADE_URL . '?utm_source=st-lite&utm_campaign=upsell&utm_medium=views-review-markup-upsell' ); ?>"><?php esc_html_e( 'Upgrade', 'strong-testimonials' ); ?></a>
146
  </p>
147
  </div>
148
  <?php
@@ -165,7 +182,7 @@ class Strong_Testimonials_Upsell {
165
  ?>
166
  <p>
167
  <a class="button" target="_blank" href="<?php echo esc_url( WPMTST_STORE_URL . '/extensions/advanced-views?utm_source=st-lite&utm_campaign=upsell&utm_medium=views-advanced-views-upsell' ); ?>"><?php esc_html_e( 'Learn More', 'strong-testimonials' ); ?></a>
168
- <a class="button button-primary" target="_blank" href="<?php echo esc_url( WPMTST_STORE_UPGRADE_URL . '?utm_source=st-lite&utm_campaign=upsell&utm_medium=views-advanced-views-upsell' ); ?>"><?php esc_html_e( 'Upgrade', 'strong-testimonials' ); ?></a>
169
  </p>
170
  </div>
171
  <?php
@@ -188,7 +205,7 @@ class Strong_Testimonials_Upsell {
188
  ?>
189
  <p>
190
  <a class="button" target="_blank" href="<?php echo esc_url( WPMTST_STORE_URL . '/extensions/captcha?utm_source=st-lite&utm_campaign=upsell&utm_medium=form-settings-upsell' ); ?>"><?php esc_html_e( 'Learn More', 'strong-testimonials' ); ?></a>
191
- <a class="button button-primary" target="_blank" href="<?php echo esc_url( WPMTST_STORE_UPGRADE_URL . '?utm_source=st-lite&utm_campaign=upsell&utm_medium=form-settings-captcha-upsell' ); ?>"><?php esc_html_e( 'Upgrade', 'strong-testimonials' ); ?></a>
192
  </p>
193
  </div>
194
  <?php
@@ -217,7 +234,7 @@ class Strong_Testimonials_Upsell {
217
  ?>
218
  <p>
219
  <a class="button" target="_blank" href="<?php echo esc_url( WPMTST_STORE_URL . '/extensions/captcha?utm_source=st-lite&utm_campaign=upsell&utm_medium=form-settings-upsell' ); ?>"><?php esc_html_e( 'Learn More', 'strong-testimonials' ); ?></a>
220
- <a class="button button-primary" target="_blank" href="<?php echo esc_url( WPMTST_STORE_UPGRADE_URL . '?utm_source=st-lite&utm_campaign=upsell&utm_medium=form-settings-captcha-upsell' ); ?>"><?php esc_html_e( 'Upgrade', 'strong-testimonials' ); ?></a>
221
  </p>
222
  </div>
223
 
@@ -252,6 +269,29 @@ class Strong_Testimonials_Upsell {
252
  <?php
253
  }
254
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
255
 
256
 
257
 
6
  */
7
  class Strong_Testimonials_Upsell {
8
 
9
+ public $store_upgrade_url;
10
+
11
  public function __construct() {
12
+ $this->set_store_upgrade_url();
13
+
14
  add_action( 'admin_notices', array( $this, 'add_general_upsell_notice' ), 11 );
15
  add_action( 'wpmtst_after_form_type_selection', array( $this, 'add_upsells_1' ) );
16
  add_action( 'wpmtst_before_fields_settings', array( $this, 'add_upsells_2' ) );
18
  add_action( 'wpmtst_view_editor_after_group_select', array( $this, 'add_upsells_4' ) );
19
  add_action( 'wpmtst_fields_before_fields_editor_preview', array( $this, 'add_upsells_5' ) );
20
  add_action( 'wpmtst_after_form_settings', array( $this, 'add_upsells_6' ) );
21
+ add_action( 'wpmtst_views_after_template_list', array( $this, 'add_upsells_7' ) );
22
+ }
23
+
24
+ public function set_store_upgrade_url() {
25
+
26
+ $this->store_upgrade_url = WPMTST_STORE_UPGRADE_URL . '?utm_source=st-lite&utm_campaign=upsell';
27
+
28
+ //append license key
29
+ $license = trim( get_option( 'strong_testimonials_license_key' ) );
30
+ if ( $license ) {
31
+ $this->store_upgrade_url .= '&license=' . $license;
32
+ }
33
+
34
  }
35
 
36
  public function add_general_upsell_notice() {
62
  <?php esc_html_e( 'Build trust and credibility with your products.', 'strong-testimonials' ); ?><br/>
63
  <?php esc_html_e( 'Do more with Strong Testimonials extensions.', 'strong-testimonials' ); ?>
64
  </p>
65
+ <a class="button button-primary" target="_blank" href="<?php echo esc_url( $this->store_upgrade_url . '&utm_medium=' . $screen->id . '-notice-upsell' ); ?>"><?php esc_html_e( 'View pricing', 'strong-testimonials' ); ?></a>
66
  <button type="button" class="notice-dismiss"><span class="screen-reader-text"><?php esc_html_e( 'Dismiss this notice.', 'strong-testimonials' ); ?></span></button>
67
  </div><!-- wpmtst-notice--upsell -->
68
  <?php endif; ?>
90
  ?>
91
  <p>
92
  <a class="button" target="_blank" href="<?php echo esc_url( WPMTST_STORE_URL . '/extensions/country-selector?utm_source=st-lite&utm_campaign=upsell&utm_medium=fields-country-selector-upsell' ); ?>"><?php esc_html_e( 'Learn More', 'strong-testimonials' ); ?></a>
93
+ <a class="button button-primary" target="_blank" href="<?php echo esc_url( $this->store_upgrade_url . '&utm_medium=fields-country-selector-upsell' ); ?>"><?php esc_html_e( 'Upgrade', 'strong-testimonials' ); ?></a>
94
  </p>
95
  </div>
96
  <?php
113
  ?>
114
  <p>
115
  <a class="button" target="_blank" href="<?php echo esc_url( WPMTST_STORE_URL . '/extensions/custom-fields?utm_source=st-lite&utm_campaign=upsell&utm_medium=fields-custom-fields-upsell' ); ?>"><?php esc_html_e( 'Learn More', 'strong-testimonials' ); ?></a>
116
+ <a class="button button-primary" target="_blank" href="<?php echo esc_url( $this->store_upgrade_url . '&utm_medium=fields-custom-fields-upsell' ); ?>"><?php esc_html_e( 'Upgrade', 'strong-testimonials' ); ?></a>
117
  </p>
118
  </div>
119
  <?php
136
  ?>
137
  <p>
138
  <a class="button" target="_blank" href="<?php echo esc_url( WPMTST_STORE_URL . '/extensions/multiple-forms?utm_source=st-lite&utm_campaign=upsell&utm_medium=fields-multiple-forms-upsell' ); ?>"><?php esc_html_e( 'Learn More', 'strong-testimonials' ); ?></a>
139
+ <a class="button button-primary" target="_blank" href="<?php echo esc_url( $this->store_upgrade_url . '&utm_medium=fields-multiple-forms-upsell' ); ?>"><?php esc_html_e( 'Upgrade', 'strong-testimonials' ); ?></a>
140
  </p>
141
  </div>
142
  <?php
159
  ?>
160
  <p>
161
  <a class="button" target="_blank" href="<?php echo esc_url( WPMTST_STORE_URL . '/extensions/review-markup?utm_source=st-lite&utm_campaign=upsell&utm_medium=views-review-markup-upsell' ); ?>"><?php esc_html_e( 'Learn More', 'strong-testimonials' ); ?></a>
162
+ <a class="button button-primary" target="_blank" href="<?php echo esc_url( $this->store_upgrade_url . '&utm_medium=views-review-markup-upsell' ); ?>"><?php esc_html_e( 'Upgrade', 'strong-testimonials' ); ?></a>
163
  </p>
164
  </div>
165
  <?php
182
  ?>
183
  <p>
184
  <a class="button" target="_blank" href="<?php echo esc_url( WPMTST_STORE_URL . '/extensions/advanced-views?utm_source=st-lite&utm_campaign=upsell&utm_medium=views-advanced-views-upsell' ); ?>"><?php esc_html_e( 'Learn More', 'strong-testimonials' ); ?></a>
185
+ <a class="button button-primary" target="_blank" href="<?php echo esc_url( $this->store_upgrade_url . '&utm_medium=views-advanced-views-upsell' ); ?>"><?php esc_html_e( 'Upgrade', 'strong-testimonials' ); ?></a>
186
  </p>
187
  </div>
188
  <?php
205
  ?>
206
  <p>
207
  <a class="button" target="_blank" href="<?php echo esc_url( WPMTST_STORE_URL . '/extensions/captcha?utm_source=st-lite&utm_campaign=upsell&utm_medium=form-settings-upsell' ); ?>"><?php esc_html_e( 'Learn More', 'strong-testimonials' ); ?></a>
208
+ <a class="button button-primary" target="_blank" href="<?php echo esc_url( $this->store_upgrade_url . '&utm_medium=form-settings-captcha-upsell' ); ?>"><?php esc_html_e( 'Upgrade', 'strong-testimonials' ); ?></a>
209
  </p>
210
  </div>
211
  <?php
234
  ?>
235
  <p>
236
  <a class="button" target="_blank" href="<?php echo esc_url( WPMTST_STORE_URL . '/extensions/captcha?utm_source=st-lite&utm_campaign=upsell&utm_medium=form-settings-upsell' ); ?>"><?php esc_html_e( 'Learn More', 'strong-testimonials' ); ?></a>
237
+ <a class="button button-primary" target="_blank" href="<?php echo esc_url( $this->store_upgrade_url . '&utm_medium=form-settings-captcha-upsell' ); ?>"><?php esc_html_e( 'Upgrade', 'strong-testimonials' ); ?></a>
238
  </p>
239
  </div>
240
 
269
  <?php
270
  }
271
 
272
+ public function add_upsells_7() {
273
+ if ( ! defined( 'WPMTST_ADVANCED_VIEWS_VERSION' ) ) :
274
+ ?>
275
+ <div class="wpmtst-alert">
276
+ <?php
277
+ printf(
278
+ esc_html__( 'Easily define the display order of your testimonial fields with the %s extension.', 'strong-testimonials' ),
279
+ sprintf(
280
+ '<a href="%s" target="_blank">%s</a>',
281
+ esc_url( WPMTST_STORE_URL . '/extensions/advanced-views?utm_source=st-lite&utm_campaign=upsell&utm_medium=form-settings-upsell' ),
282
+ esc_html__( 'Strong Testimonials: Advanced Views', 'strong-testimonials' )
283
+ )
284
+ );
285
+ ?>
286
+ <p>
287
+ <a class="button" target="_blank" href="<?php echo esc_url( WPMTST_STORE_URL . '/extensions/advanced-views?utm_source=st-lite&utm_campaign=upsell&utm_medium=form-settings-upsell' ); ?>"><?php esc_html_e( 'Learn More', 'strong-testimonials' ); ?></a>
288
+ <a class="button button-primary" target="_blank" href="<?php echo esc_url( $this->store_upgrade_url . '&utm_medium=views-advanced-views-upsell' ); ?>"><?php esc_html_e( 'Upgrade', 'strong-testimonials' ); ?></a>
289
+ </p>
290
+ </div>
291
+ <?php
292
+ endif;
293
+ }
294
+
295
 
296
 
297
 
admin/css/views.css CHANGED
@@ -664,9 +664,11 @@ ul.radio-list.template-list li {
664
 
665
  .template-description {
666
  border-radius: 15px;
667
- padding: 0 15px; }
668
  .template-description p {
669
- margin: 15px 0 15px !important; }
 
 
670
 
671
  /* -------------------------------------------------
672
  Layout options
664
 
665
  .template-description {
666
  border-radius: 15px;
667
+ padding: 15px; }
668
  .template-description p {
669
+ margin: 0px 0 15px !important; }
670
+ .template-description label {
671
+ background: transparent !important; }
672
 
673
  /* -------------------------------------------------
674
  Layout options
admin/js/views.js CHANGED
@@ -565,7 +565,7 @@ jQuery(document).ready(function ($) {
565
  var fieldType = $el.find('option:selected').data('type');
566
  var key = $elParent.data('key');
567
  var typeSelectParent = $elParent.find('td.field-type');
568
- var typeSelect = typeSelectParent.find('select');
569
 
570
  if (fieldValue === 'post_date') {
571
  typeSelect.prop('disabled', true);
@@ -617,11 +617,11 @@ jQuery(document).ready(function ($) {
617
  var templateRadioOff, templateRadioOn, template;
618
 
619
  templateRadioOff = templateRadios.filter(':not(:checked)');
620
- templateRadioOff.closest('li').removeClass('current-selection').find('.options').hide();
621
 
622
  templateRadioOn = templateRadios.filter(':checked');
623
  template = templateRadioOn.val();
624
- templateRadioOn.closest('li').addClass('current-selection').find('.options').show();
625
 
626
  // Check for forced options
627
  if (template) {
@@ -946,7 +946,7 @@ jQuery(document).ready(function ($) {
946
  $newField
947
  .find('div.link').click().end()
948
  .find('.field-dep').hide().end()
949
- .find('.first-field').focus();
950
  });
951
  });
952
  });
@@ -961,7 +961,7 @@ jQuery(document).ready(function ($) {
961
  var fieldName = $elParent.find('.field-name').find('select').val();
962
  // var key = $elParent.attr("id").split('-').slice(-1)[0];
963
  var key = $elParent.data('key');
964
- var data;
965
 
966
  switch (fieldType) {
967
 
@@ -1033,7 +1033,7 @@ jQuery(document).ready(function ($) {
1033
  var key = $elParent.data('key');
1034
  var typeSelectParent = $elParent.find('.field-type');
1035
  var typeSelect = typeSelectParent.find('select');
1036
- var data;
1037
 
1038
  $elParent.not('.open').addClass('open').find('.field-properties').addClass('open').slideDown();
1039
 
@@ -1051,12 +1051,17 @@ jQuery(document).ready(function ($) {
1051
  };
1052
  $.get(ajaxurl, data, function (response) {
1053
  if (response) {
1054
- $elParent.find('.field-description').html(response);
 
 
 
 
 
1055
  }
1056
  });
1057
 
1058
  // Show dependent inputs
1059
- $elParent.find('.field-dep').show();
1060
  }
1061
 
1062
  switch (fieldValue) {
@@ -1125,8 +1130,13 @@ jQuery(document).ready(function ($) {
1125
  var yesno = confirm('Remove this field?');
1126
  if (yesno) {
1127
  thisField.fadeOut(function () {
1128
- $(this).remove();
1129
- });
 
 
 
 
 
1130
  }
1131
  // Prevent click from expanding accordion
1132
  e.stopImmediatePropagation();
565
  var fieldType = $el.find('option:selected').data('type');
566
  var key = $elParent.data('key');
567
  var typeSelectParent = $elParent.find('td.field-type');
568
+ var typeSelect = typeSelectParent.find('select');
569
 
570
  if (fieldValue === 'post_date') {
571
  typeSelect.prop('disabled', true);
617
  var templateRadioOff, templateRadioOn, template;
618
 
619
  templateRadioOff = templateRadios.filter(':not(:checked)');
620
+ templateRadioOff.closest('li').removeClass('current-selection').find('.template-description').children(':not(:first-child)').hide();
621
 
622
  templateRadioOn = templateRadios.filter(':checked');
623
  template = templateRadioOn.val();
624
+ templateRadioOn.closest('li').addClass('current-selection').find('.template-description').children(':not(:first-child)').show();
625
 
626
  // Check for forced options
627
  if (template) {
946
  $newField
947
  .find('div.link').click().end()
948
  .find('.field-dep').hide().end()
949
+ .find('.first-field').focus();
950
  });
951
  });
952
  });
961
  var fieldName = $elParent.find('.field-name').find('select').val();
962
  // var key = $elParent.attr("id").split('-').slice(-1)[0];
963
  var key = $elParent.data('key');
964
+ var data;
965
 
966
  switch (fieldType) {
967
 
1033
  var key = $elParent.data('key');
1034
  var typeSelectParent = $elParent.find('.field-type');
1035
  var typeSelect = typeSelectParent.find('select');
1036
+ var data;
1037
 
1038
  $elParent.not('.open').addClass('open').find('.field-properties').addClass('open').slideDown();
1039
 
1051
  };
1052
  $.get(ajaxurl, data, function (response) {
1053
  if (response) {
1054
+ $elParent.find('.field-description').html(response);
1055
+
1056
+ //trigger custom event
1057
+ var event = document.createEvent('Event');
1058
+ event.initEvent('wpmtst_custom_field_changed', true, true);
1059
+ document.dispatchEvent(event);
1060
  }
1061
  });
1062
 
1063
  // Show dependent inputs
1064
+ $elParent.find('.field-dep').show();
1065
  }
1066
 
1067
  switch (fieldValue) {
1130
  var yesno = confirm('Remove this field?');
1131
  if (yesno) {
1132
  thisField.fadeOut(function () {
1133
+ $(this).remove();
1134
+
1135
+ //trigger custom event
1136
+ var event = document.createEvent('Event');
1137
+ event.initEvent('wpmtst_custom_field_deleted', true, true);
1138
+ document.dispatchEvent(event);
1139
+ });
1140
  }
1141
  // Prevent click from expanding accordion
1142
  e.stopImmediatePropagation();
admin/partials/views/option-template-list.php CHANGED
@@ -18,5 +18,11 @@
18
  </ul>
19
 
20
  </div>
 
 
 
21
  </div>
22
- </td>
 
 
 
18
  </ul>
19
 
20
  </div>
21
+
22
+
23
+
24
  </div>
25
+
26
+ <?php do_action('wpmtst_views_after_template_list' ); ?>
27
+
28
+ </td>
admin/partials/views/template-options.php CHANGED
@@ -75,4 +75,7 @@
75
  <?php endif; ?>
76
  </div>
77
  </div>
 
 
 
78
  </div>
75
  <?php endif; ?>
76
  </div>
77
  </div>
78
+
79
+ <?php do_action('wpmtst_views_after_template_options', $view, $template, $key ); ?>
80
+
81
  </div>
admin/scss/_partials/_template.scss CHANGED
@@ -35,9 +35,13 @@ ul.radio-list {
35
 
36
  .template-description {
37
  border-radius: 15px;
38
- padding: 0 15px;
39
 
40
  p {
41
- margin: 15px 0 15px !important;
 
 
 
 
42
  }
43
  }
35
 
36
  .template-description {
37
  border-radius: 15px;
38
+ padding: 15px;
39
 
40
  p {
41
+ margin: 0px 0 15px !important;
42
+ }
43
+
44
+ label {
45
+ background: transparent !important;
46
  }
47
  }
admin/views-validate.php CHANGED
@@ -538,7 +538,7 @@ function wpmtst_sanitize_view_template( $data, $input ) {
538
  foreach ( $input['template_settings'] as $template => $settings ) {
539
  foreach ( $settings as $key => $setting ) {
540
  // This does not work for checkboxes yet.
541
- $data['template_settings'][ $template ][ $key ] = sanitize_text_field( $setting );
542
  }
543
  }
544
 
538
  foreach ( $input['template_settings'] as $template => $settings ) {
539
  foreach ( $settings as $key => $setting ) {
540
  // This does not work for checkboxes yet.
541
+ $data['template_settings'][ $template ][ $key ] = apply_filters( 'wpmtst_sanitize_view_template_setting', sanitize_text_field( $setting ), $key );
542
  }
543
  }
544
 
changelog.txt CHANGED
@@ -1,3 +1,6 @@
 
 
 
1
  = 2.39.1 - Jun. 14, 2019 =
2
  * improved compatibility with Strong Testimonials: Custom Fields extension
3
 
1
+ = 2.39.2 - Jun. 25, 2019 =
2
+ * improved compatibility with Strong Testimonials: Advanced Views extension
3
+
4
  = 2.39.1 - Jun. 14, 2019 =
5
  * improved compatibility with Strong Testimonials: Custom Fields extension
6
 
includes/class-strong-view-display.php CHANGED
@@ -138,7 +138,7 @@ class Strong_View_Display extends Strong_View {
138
  /**
139
  * Locate template.
140
  */
141
- $this->template_file = WPMST()->templates->get_template_attr( $this->atts, 'template' );
142
 
143
  /**
144
  * Allow add-ons to hijack the output generation.
138
  /**
139
  * Locate template.
140
  */
141
+ $this->template_file = apply_filters( 'wpmtst_view_template_file_display', WPMST()->templates->get_template_attr( $this->atts, 'template' ) );
142
 
143
  /**
144
  * Allow add-ons to hijack the output generation.
includes/class-strong-view-form.php CHANGED
@@ -127,7 +127,8 @@ class Strong_View_Form extends Strong_View {
127
  /**
128
  * Locate template.
129
  */
130
- $this->template_file = WPMST()->templates->get_template_attr( $this->atts, 'template' );
 
131
 
132
  /**
133
  * Allow add-ons to hijack the output generation.
127
  /**
128
  * Locate template.
129
  */
130
+ $this->template_file = apply_filters( 'wpmtst_view_template_file_form', WPMST()->templates->get_template_attr( $this->atts, 'template' ) );
131
+
132
 
133
  /**
134
  * Allow add-ons to hijack the output generation.
includes/class-strong-view-slideshow.php CHANGED
@@ -81,7 +81,8 @@ class Strong_View_Slideshow extends Strong_View_Display {
81
  /**
82
  * Locate template.
83
  */
84
- $this->template_file = WPMST()->templates->get_template_attr( $this->atts, 'template' );
 
85
 
86
  /**
87
  * Allow add-ons to hijack the output generation.
81
  /**
82
  * Locate template.
83
  */
84
+ $this->template_file = apply_filters( 'wpmtst_view_template_file_slideshow', WPMST()->templates->get_template_attr( $this->atts, 'template' ) );
85
+
86
 
87
  /**
88
  * Allow add-ons to hijack the output generation.
includes/functions-content.php CHANGED
@@ -175,7 +175,7 @@ function wpmtst_trim_words( $text, $num_words = 55, $more = null, $hybrid = fals
175
  $more = __( '&hellip;', 'strong-testimonials' );
176
  }
177
 
178
- $text = wp_strip_all_tags( $text );
179
 
180
  /*
181
  * translators: If your word count is based on single characters (e.g. East Asian characters),
175
  $more = __( '&hellip;', 'strong-testimonials' );
176
  }
177
 
178
+ $text = strip_tags( $text, '<br>' );
179
 
180
  /*
181
  * translators: If your word count is based on single characters (e.g. East Asian characters),
includes/functions-template.php CHANGED
@@ -279,166 +279,169 @@ function wpmtst_the_client() {
279
  * @return mixed
280
  */
281
  function wpmtst_client_section( $client_section ) {
 
 
 
 
 
 
 
 
 
 
 
282
  global $post;
283
 
284
  $options = get_option( 'wpmtst_options' );
285
  $custom_fields = wpmtst_get_custom_fields();
286
- $html = '';
287
 
288
- foreach ( $client_section as $field ) {
289
- $output = '';
290
- $field_name = $field['field'];
291
- if ( isset( $custom_fields[ $field_name ] ) ) {
292
- $field['prop'] = $custom_fields[ $field_name ];
293
- }
294
- else {
295
- $field['prop'] = array();
296
- }
297
 
298
- // Check for callback first.
299
- if ( isset( $field['prop']['action_output'] ) && $field['prop']['action_output'] ) {
300
- $value = get_post_meta( $post->ID, $field_name, true );
301
- $output = apply_filters( $field['prop']['action_output'], $field, $value );
302
- }
303
- //TODO Convert all to filters.
304
- // Check field type.
305
- else {
306
- switch ( $field['type'] ) {
307
-
308
- case 'link' :
309
- case 'link2' :
310
- // use default if missing
311
- if ( ! isset( $field['link_text'] ) ) {
312
- $field['link_text'] = 'value';
313
- }
314
 
315
- /**
316
- * Get link text and an alternate in case the URL is empty;
317
- * e.g. display the domain if no company name given
318
- * but don't display 'LinkedIn' if no URL given.
319
- */
320
- switch ( $field['link_text'] ) {
321
- case 'custom' :
322
- $text = $field['link_text_custom'];
323
- $output = '';
324
- break;
325
- case 'label' :
326
- $text = $field['prop']['label'];
327
- $output = '';
328
- break;
329
- default : // value
330
- $text = get_post_meta( $post->ID, $field_name, true );
331
- // if no URL (next condition), show the alternate (the field)
332
- $output = $text;
333
- }
334
 
335
- if ( $field['url'] ) {
336
-
337
- $url = get_post_meta( $post->ID, $field['url'], true );
338
- if ( $url ) {
339
- if ( isset( $field['new_tab'] ) && $field['new_tab'] ) {
340
- $newtab = ' target="_blank"';
341
- }
342
- else {
343
- $newtab = '';
344
- }
345
-
346
- // TODO Abstract this global fallback technique.
347
- $is_nofollow = get_post_meta( $post->ID, 'nofollow', true );
348
- if ( 'default' == $is_nofollow || '' == $is_nofollow ) {
349
- // convert default to (yes|no)
350
- $is_nofollow = $options['nofollow'] ? 'yes' : 'no';
351
- }
352
- if ( 'yes' == $is_nofollow ) {
353
- $nofollow = ' rel="nofollow"';
354
- }
355
- else {
356
- $nofollow = '';
357
- }
358
-
359
- // if field empty, use domain instead
360
- if ( ! $text || is_array( $text ) ) {
361
- $text = preg_replace( '(^https?://)', '', $url );
362
- }
363
-
364
- $output = sprintf( '<a href="%s"%s%s>%s</a>', $url, $newtab, $nofollow, $text );
365
  }
366
 
367
- }
368
- break;
 
 
 
 
 
 
 
 
 
 
369
 
370
- case 'date' :
371
- $format = isset( $field['format'] ) && $field['format'] ? $field['format'] : get_option( 'date_format' );
372
-
373
- // Fall back to post_date if submit_date missing.
374
- $the_date = get_post_meta( $post->ID, $field_name, true );
375
- $the_date = $the_date ? $the_date : $post->post_date;
376
- $the_date = mysql2date( $format, $the_date );
377
-
378
- if ( get_option( 'date_format' ) != $format ) {
379
- // Requires PHP 5.3+
380
- if ( version_compare( PHP_VERSION, '5.3' ) >= 0 ) {
381
- $new_date = DateTime::createFromFormat( get_option( 'date_format' ), $the_date );
382
- if ( $new_date ) {
383
- $the_date = $new_date->format( $format );
384
- }
385
  }
386
- }
387
 
388
- $output = apply_filters( 'wpmtst_the_date', $the_date, $format, $post );
389
- break;
390
 
391
- case 'category' :
392
- $categories = get_the_terms( $post->ID, 'wpm-testimonial-category' );
393
- if ( $categories && ! is_wp_error( $categories ) ) {
394
- $list = array();
395
- foreach ( $categories as $cat ) {
396
- $list[] = $cat->name;
 
 
 
 
 
 
 
 
 
 
 
397
  }
398
- $output = join( ", ", $list );
399
- }
400
- else {
401
- $output = '';
402
  }
403
- break;
404
 
405
- case 'shortcode' :
406
- if ( isset( $field['prop']['shortcode_on_display'] ) && $field['prop']['shortcode_on_display'] ) {
407
- $output = do_shortcode( $field['prop']['shortcode_on_display'] );
408
- }
409
- break;
410
 
411
- case 'rating' :
412
- $output = get_post_meta( $post->ID, $field_name, true );
413
- // Check default value
414
- if ( '' == $output && isset( $field['prop']['default_display_value'] ) && $field['prop']['default_display_value'] ) {
415
- $output = $field['prop']['default_display_value'];
416
- }
417
- // Convert number to stars
418
- if ( $output ) {
419
- $output = wpmtst_star_rating_display( $output, 'in-view', false );
420
  }
421
- break;
 
 
 
 
 
422
 
423
- default :
424
- // text field
425
- $output = get_post_meta( $post->ID, $field_name, true );
426
- if ( '' == $output && isset( $field['prop']['default_display_value'] ) && $field['prop']['default_display_value'] ) {
427
- $output = $field['prop']['default_display_value'];
428
- }
429
 
430
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
431
  }
 
432
 
433
- if ( $output ) {
434
- if ( isset( $field['before'] ) && $field['before'] ) {
435
- $output = '<span class="testimonial-field-before">' . $field['before'] . '</span>' . $output;
436
- }
437
- $html .= '<div class="' . $field['class'] . '">' . $output . '</div>';
438
  }
 
439
  }
440
 
441
- return $html;
442
  }
443
 
444
  function wpmtst_container_class() {
279
  * @return mixed
280
  */
281
  function wpmtst_client_section( $client_section ) {
282
+
283
+ $html = '';
284
+
285
+ foreach ( $client_section as $field ) {
286
+ $html .= wpmtst_the_custom_field( $field );
287
+ }
288
+
289
+ return $html;
290
+ }
291
+
292
+ function wpmtst_the_custom_field( $field ) {
293
  global $post;
294
 
295
  $options = get_option( 'wpmtst_options' );
296
  $custom_fields = wpmtst_get_custom_fields();
 
297
 
298
+ $output = '';
299
+ $field_name = $field['field'];
300
+ if ( isset( $custom_fields[ $field_name ] ) ) {
301
+ $field['prop'] = $custom_fields[ $field_name ];
302
+ } else {
303
+ $field['prop'] = array();
304
+ }
 
 
305
 
306
+ // Check for callback first.
307
+ if ( isset( $field['prop']['action_output'] ) && $field['prop']['action_output'] ) {
308
+ $value = get_post_meta( $post->ID, $field_name, true );
309
+ $output = apply_filters( $field['prop']['action_output'], $field, $value );
310
+ } else {
311
+ switch ( $field['type'] ) {
312
+
313
+ case 'link':
314
+ case 'link2':
315
+ // use default if missing
316
+ if ( ! isset( $field['link_text'] ) ) {
317
+ $field['link_text'] = 'value';
318
+ }
 
 
 
319
 
320
+ /**
321
+ * Get link text and an alternate in case the URL is empty;
322
+ * e.g. display the domain if no company name given
323
+ * but don't display 'LinkedIn' if no URL given.
324
+ */
325
+ switch ( $field['link_text'] ) {
326
+ case 'custom' :
327
+ $text = $field['link_text_custom'];
328
+ $output = '';
329
+ break;
330
+ case 'label' :
331
+ $text = $field['prop']['label'];
332
+ $output = '';
333
+ break;
334
+ default : // value
335
+ $text = get_post_meta( $post->ID, $field_name, true );
336
+ // if no URL (next condition), show the alternate (the field)
337
+ $output = $text;
338
+ }
339
 
340
+ if ( $field['url'] ) {
341
+
342
+ $url = get_post_meta( $post->ID, $field['url'], true );
343
+ if ( $url ) {
344
+ if ( isset( $field['new_tab'] ) && $field['new_tab'] ) {
345
+ $newtab = ' target="_blank"';
346
+ }
347
+ else {
348
+ $newtab = '';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
349
  }
350
 
351
+ // TODO Abstract this global fallback technique.
352
+ $is_nofollow = get_post_meta( $post->ID, 'nofollow', true );
353
+ if ( 'default' == $is_nofollow || '' == $is_nofollow ) {
354
+ // convert default to (yes|no)
355
+ $is_nofollow = $options['nofollow'] ? 'yes' : 'no';
356
+ }
357
+ if ( 'yes' == $is_nofollow ) {
358
+ $nofollow = ' rel="nofollow"';
359
+ }
360
+ else {
361
+ $nofollow = '';
362
+ }
363
 
364
+ // if field empty, use domain instead
365
+ if ( ! $text || is_array( $text ) ) {
366
+ $text = preg_replace( '(^https?://)', '', $url );
 
 
 
 
 
 
 
 
 
 
 
 
367
  }
 
368
 
369
+ $output = sprintf( '<a href="%s"%s%s>%s</a>', $url, $newtab, $nofollow, $text );
370
+ }
371
 
372
+ }
373
+ break;
374
+
375
+ case 'date':
376
+ $format = isset( $field['format'] ) && $field['format'] ? $field['format'] : get_option( 'date_format' );
377
+
378
+ // Fall back to post_date if submit_date missing.
379
+ $the_date = get_post_meta( $post->ID, $field_name, true );
380
+ $the_date = $the_date ? $the_date : $post->post_date;
381
+ $the_date = mysql2date( $format, $the_date );
382
+
383
+ if ( get_option( 'date_format' ) != $format ) {
384
+ // Requires PHP 5.3+
385
+ if ( version_compare( PHP_VERSION, '5.3' ) >= 0 ) {
386
+ $new_date = DateTime::createFromFormat( get_option( 'date_format' ), $the_date );
387
+ if ( $new_date ) {
388
+ $the_date = $new_date->format( $format );
389
  }
 
 
 
 
390
  }
391
+ }
392
 
393
+ $output = apply_filters( 'wpmtst_the_date', $the_date, $format, $post );
394
+ break;
 
 
 
395
 
396
+ case 'category':
397
+ $categories = get_the_terms( $post->ID, 'wpm-testimonial-category' );
398
+ if ( $categories && ! is_wp_error( $categories ) ) {
399
+ $list = array();
400
+ foreach ( $categories as $cat ) {
401
+ $list[] = $cat->name;
 
 
 
402
  }
403
+ $output = join( ", ", $list );
404
+ }
405
+ else {
406
+ $output = '';
407
+ }
408
+ break;
409
 
410
+ case 'shortcode':
411
+ if ( isset( $field['prop']['shortcode_on_display'] ) && $field['prop']['shortcode_on_display'] ) {
412
+ $output = do_shortcode( $field['prop']['shortcode_on_display'] );
413
+ }
414
+ break;
 
415
 
416
+ case 'rating':
417
+ $output = get_post_meta( $post->ID, $field_name, true );
418
+ // Check default value
419
+ if ( '' == $output && isset( $field['prop']['default_display_value'] ) && $field['prop']['default_display_value'] ) {
420
+ $output = $field['prop']['default_display_value'];
421
+ }
422
+ // Convert number to stars
423
+ if ( $output ) {
424
+ $output = wpmtst_star_rating_display( $output, 'in-view', false );
425
+ }
426
+ break;
427
+
428
+ default:
429
+ // text field
430
+ $output = get_post_meta( $post->ID, $field_name, true );
431
+ if ( '' == $output && isset( $field['prop']['default_display_value'] ) && $field['prop']['default_display_value'] ) {
432
+ $output = $field['prop']['default_display_value'];
433
+ }
434
  }
435
+ }
436
 
437
+ if ( $output ) {
438
+ if ( isset( $field['before'] ) && $field['before'] ) {
439
+ $output = '<span class="testimonial-field-before">' . $field['before'] . '</span>' . $output;
 
 
440
  }
441
+ $output = '<div class="testimonial-field ' . $field['class'] . '">' . $output . '</div>';
442
  }
443
 
444
+ return $output;
445
  }
446
 
447
  function wpmtst_container_class() {
readme.txt CHANGED
@@ -4,7 +4,7 @@ Tags: testimonials, testimonial slider, testimonial form, star ratings
4
  Requires at least: 4.6
5
  Requires PHP: 5.6
6
  Tested up to: 5.2
7
- Stable tag: 2.39.1
8
  License: GPLv3 or later
9
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
10
 
@@ -14,6 +14,52 @@ Simple yet powerful. Very customizable. Developer-friendly.
14
 
15
  **Strong Testimonials** is a standalone plugin built, maintained & operated by the friendly folks over at [MachoThemes](https://www.machothemes.com/)
16
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
17
  In just a few steps, you will be collecting and publishing your testimonials or reviews. Beginners and pros alike will appreciate the wealth of flexible features refined over 4 years from user feedback and requests.
18
 
19
  ### Primary Features
@@ -47,6 +93,12 @@ Some templates have light & dark versions and other options. If you want to cust
47
 
48
  This plugin provides one form with custom fields. Customize the form by adding or removing fields and changing properties like the order, label, and placeholder.
49
 
 
 
 
 
 
 
50
  Send custom notification emails to multiple admins.
51
 
52
  Submit the form via Ajax for use with plugins like [Popup Maker](https://wordpress.org/plugins/popup-maker/).
@@ -63,7 +115,7 @@ A variety of templates are included that work well in most themes.
63
 
64
  For ultimate control and seamless integration, copy any template to your theme and customize it.
65
 
66
- The template function will add a view to your custom theme templates:
67
 
68
  `<?php if ( function_exists( 'strong_testimonials_view' ) ) {
69
  strong_testimonials_view( $id );
@@ -91,6 +143,14 @@ However, this plugin provides features that may involve private data.
91
 
92
  * [Wider Admin Menu](https://wordpress.org/plugins/wider-admin-menu/) lets your admin menu b r e a t h e.
93
 
 
 
 
 
 
 
 
 
94
  == Installation ==
95
 
96
  1. Go to Plugins > Add New.
4
  Requires at least: 4.6
5
  Requires PHP: 5.6
6
  Tested up to: 5.2
7
+ Stable tag: 2.39.2
8
  License: GPLv3 or later
9
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
10
 
14
 
15
  **Strong Testimonials** is a standalone plugin built, maintained & operated by the friendly folks over at [MachoThemes](https://www.machothemes.com/)
16
 
17
+ > <strong>Strong Testimonials Pro</strong><br />
18
+ > This plugin is the lite/free version of the Strong Testimonials Pro plugin that comes with all the testimonials features you will ever need including custom form fields, multiple submission forms, testimonial assigments, custom proprieties, SEO friendly testimonials, and much, much more. <a href="https://strongtestimonials.com/pricing/" rel="friend" title="Strong Testimonials">Click here to purchase the best testimonials plugin now! Get Strong Testimonials Pro!</a>
19
+
20
+ ### Strong Testimonials Pro Extensions:
21
+
22
+ = Custom Fields =
23
+
24
+ The easiest and clear way to collect testimonials is using the <a href="https://strongtestimonials.com/pricing/" rel="friend" title="Strong Testimonials">Strong Testimonials Premium Custom Fields</a> extension. With this extention you can create and assign custom fields to a testimonial view when you want to add extra fields to your testimonial submission forms. You can also optionally display this alongside testimonials on your website.
25
+
26
+ The perfect example is with a car review website. Using the Custom Fields extension, you can gather detailed testimonials that include information such as car manufacturer, model, and horsepower.
27
+
28
+ = Assignment =
29
+
30
+ The <a href="https://strongtestimonials.com/pricing/" rel="friend" title="Strong Testimonials">Strong Testimonials Assignment</a> extension helps users assign testimonials to custom post types for easy management and filtering.
31
+ Example: you have a custom post type called services, using the Assignment extention you could easily assign certain testimonials to the services custom post type as well as others. This is an important tool to have if you offer multiple services or products and would like to display all testimonials you have gathered for one product on your pricing page.
32
+
33
+ = Multiple Forms =
34
+
35
+ With this <a href="https://strongtestimonials.com/pricing/" rel="friend" title="Strong Testimonials">Strong Testimonial Premium</a> add-on, you can now create multiple forms to collect testimonials from your website visitors and customers. You can easily create new forms to gather testimonials for different types of products on your website. There is no limit to the number of forms you can create or use.
36
+
37
+ = Country Selector =
38
+
39
+ Get the <a href="https://strongtestimonials.com/pricing/" rel="friend" title="Strong Testimonials">Strong Testimonials Country Selector</a> and take your testimonials and submission forms above and beyond the traditional, simple forms you may have seen before. This is the perfect way for you to collect specific information about your customers so you can create rich, authentic testimonials that will help increase your conversion rate. You can even pair this with the Custom Fields add-on in order to gather even more useful information.
40
+
41
+ = Review Markup =
42
+
43
+ Use <a href="https://strongtestimonials.com/pricing/" rel="friend" title="Strong Testimonials">Strong Testimonials Review Markup</a> if you want to have testimonials that both visitors and search engines can understand. Make your testimonials stand out in search engines thanks to this easy-to-use Schema.org markup extension. Strong Testimonials plus SEO equals a higher CTR and a conversion rate. This is why using any other testimonial plugin for your website just won't cut it.
44
+
45
+ But don't just take our word for it. Let's see what one of our users is saying:
46
+
47
+ > I have used various testimonials plugins. What I get here for free is just amazing. The support is great. And updates fresh. Looking at the ability to get reviews indexed by Google is more than enough reason to get an upgrade.<br>
48
+ > Johan Horak - Marketing at CapeHolidays
49
+
50
+ = Properties =
51
+
52
+ Take advantaged of the incredible <a href="https://strongtestimonials.com/pricing/" rel="friend" title="Strong Testimonials">Strong Testimonials Premium Properties</a> to personalize default testimonial attributes such as labels, permalink structure, icons and more.
53
+ Example: you are not a fan of calling your product reviews testimonials? Then use this extension to replace the default text (testimonials) with another one such as reviews or ratings. There is also the possibility of replacing the quote icon with another one you like - you have over 100 different icons to choose from.
54
+
55
+ = Advanced Views =
56
+
57
+ Customize your testimonials further than the default star rating value with the <a href="https://strongtestimonials.com/pricing/" rel="friend" title="Strong Testimonials">Strong Testimonials Premium Advanced Views</a> Extension. With this extension you will have even more features for your views. You can create an unlimited number of views. For example, one view to display your testimonials, another view for the testimonial submission form, another view for a slideshow widget.
58
+
59
+ = Captcha =
60
+
61
+ Protection for spam is something all websites need. The <a href="https://strongtestimonials.com/pricing/" rel="friend" title="Strong Testimonials">Strong Testimonials Captcha</a> extension protects and keeps your testimonials spam free. You can add javascript honeypots or Google reCAPTCHA which uses advanced risk analysis techniques to tell humans and bots apart. Using this extension gives you the possibility of choosing from multiple reCAPTCHA versions to better suit your site needs.
62
+
63
  In just a few steps, you will be collecting and publishing your testimonials or reviews. Beginners and pros alike will appreciate the wealth of flexible features refined over 4 years from user feedback and requests.
64
 
65
  ### Primary Features
93
 
94
  This plugin provides one form with custom fields. Customize the form by adding or removing fields and changing properties like the order, label, and placeholder.
95
 
96
+ Anti-spam measures include honeypots and Captcha via these plugins:
97
+
98
+ * [Google Captcha (reCAPTCHA) by BestWebSoft](https://wordpress.org/plugins/google-captcha/) *recommended*
99
+ * [Captcha Pro](https://bestwebsoft.com/products/wordpress/plugins/captcha/)
100
+ * [Really Simple Captcha](https://wordpress.org/plugins/really-simple-captcha/)
101
+
102
  Send custom notification emails to multiple admins.
103
 
104
  Submit the form via Ajax for use with plugins like [Popup Maker](https://wordpress.org/plugins/popup-maker/).
115
 
116
  For ultimate control and seamless integration, copy any template to your theme and customize it.
117
 
118
+ The template function will add a view to your custome theme templates:
119
 
120
  `<?php if ( function_exists( 'strong_testimonials_view' ) ) {
121
  strong_testimonials_view( $id );
143
 
144
  * [Wider Admin Menu](https://wordpress.org/plugins/wider-admin-menu/) lets your admin menu b r e a t h e.
145
 
146
+ == 3rd party or external service disclaimer ==
147
+
148
+ The plugin connects to our website through an API call (https://strongtestimonials.com/wp-json/mt/v1/get-all-extensions) in order to request a list of available extensions.
149
+
150
+ IT DOES NOT SEND ANY DATA NOR DO WE COLLECT INFORMATION FROM THE REQUEST
151
+
152
+ Our privacy policy can be found at this URL https://strongtestimonials.com/privacy-policy/
153
+
154
  == Installation ==
155
 
156
  1. Go to Plugins > Add New.
strong-testimonials.php CHANGED
@@ -5,7 +5,7 @@
5
  * Description: Collect and display your testimonials or reviews.
6
  * Author: MachoThemes
7
  * Author URI: https://www.machothemes.com/
8
- * Version: 2.39.1
9
  * Text Domain: strong-testimonials
10
  * Domain Path: /languages
11
  * Requires: 4.6 or higher
@@ -44,7 +44,7 @@ if ( ! defined( 'ABSPATH' ) ) {
44
  exit;
45
  }
46
 
47
- define( 'WPMTST_VERSION', '2.39.1' );
48
  define( 'WPMTST_PLUGIN', plugin_basename( __FILE__ ) ); // strong-testimonials/strong-testimonials.php
49
  define( 'WPMTST', dirname( WPMTST_PLUGIN ) ); // strong-testimonials
50
  defined( 'WPMTST_STORE_URL' ) || define( 'WPMTST_STORE_URL', 'https://strongtestimonials.com' );
5
  * Description: Collect and display your testimonials or reviews.
6
  * Author: MachoThemes
7
  * Author URI: https://www.machothemes.com/
8
+ * Version: 2.39.2
9
  * Text Domain: strong-testimonials
10
  * Domain Path: /languages
11
  * Requires: 4.6 or higher
44
  exit;
45
  }
46
 
47
+ define( 'WPMTST_VERSION', '2.39.2' );
48
  define( 'WPMTST_PLUGIN', plugin_basename( __FILE__ ) ); // strong-testimonials/strong-testimonials.php
49
  define( 'WPMTST', dirname( WPMTST_PLUGIN ) ); // strong-testimonials
50
  defined( 'WPMTST_STORE_URL' ) || define( 'WPMTST_STORE_URL', 'https://strongtestimonials.com' );
templates-scss/_partials/_rtl.scss CHANGED
@@ -11,7 +11,7 @@
11
  margin-left: 1em;
12
  }
13
 
14
- .testimonial-client {
15
  text-align: left;
16
  }
17
  }
11
  margin-left: 1em;
12
  }
13
 
14
+ .testimonial-field {
15
  text-align: left;
16
  }
17
  }
templates-scss/bold/content.scss CHANGED
@@ -19,7 +19,11 @@ $template: bold;
19
 
20
  .testimonial-inner {
21
  padding: 20px;
22
- border-radius: 3px;
 
 
 
 
23
  }
24
 
25
  .testimonial-content {
@@ -44,9 +48,8 @@ $template: bold;
44
  }
45
  }
46
 
47
- .testimonial-client {
48
  font-size: 1.2em;
49
- margin-top: 1em;
50
  }
51
 
52
  .testimonial-name {
19
 
20
  .testimonial-inner {
21
  padding: 20px;
22
+ border-radius: 3px;
23
+
24
+ & > *:not(:nth-last-child(2)):not(:last-child) {
25
+ margin-bottom: 5px;
26
+ }
27
  }
28
 
29
  .testimonial-content {
48
  }
49
  }
50
 
51
+ .testimonial-field {
52
  font-size: 1.2em;
 
53
  }
54
 
55
  .testimonial-name {
templates-scss/default/content.scss CHANGED
@@ -25,7 +25,11 @@ $template: default;
25
  .testimonial-inner {
26
  border: 1px solid #FFFFFF;
27
  padding: 20px;
28
- text-align: left;
 
 
 
 
29
  }
30
 
31
  .testimonial-heading {
@@ -59,8 +63,7 @@ $template: default;
59
  }
60
  }
61
 
62
- .testimonial-client {
63
- margin-top: 1em;
64
  text-align: right;
65
  }
66
 
@@ -154,7 +157,7 @@ $template: default;
154
  margin-left: 1em;
155
  }
156
 
157
- .testimonial-client {
158
  text-align: left;
159
  }
160
  }
@@ -166,7 +169,7 @@ $template: default;
166
  margin-right: 1em;
167
  }
168
 
169
- .testimonial-client {
170
  text-align: right;
171
  }
172
  }
25
  .testimonial-inner {
26
  border: 1px solid #FFFFFF;
27
  padding: 20px;
28
+ text-align: left;
29
+
30
+ & > *:not(:nth-last-child(2)):not(:last-child) {
31
+ margin-bottom: 5px;
32
+ }
33
  }
34
 
35
  .testimonial-heading {
63
  }
64
  }
65
 
66
+ .testimonial-field {
 
67
  text-align: right;
68
  }
69
 
157
  margin-left: 1em;
158
  }
159
 
160
+ .testimonial-field {
161
  text-align: left;
162
  }
163
  }
169
  margin-right: 1em;
170
  }
171
 
172
+ .testimonial-field {
173
  text-align: right;
174
  }
175
  }
templates-scss/modern/content.scss CHANGED
@@ -18,7 +18,11 @@ $template: modern;
18
 
19
  .testimonial-inner {
20
  padding: 30px;
21
- text-align: center;
 
 
 
 
22
  }
23
 
24
  .testimonial-heading {
@@ -58,9 +62,8 @@ $template: modern;
58
  bottom: 0;
59
  }
60
 
61
- .testimonial-client {
62
  clear: both;
63
- margin-top: 30px;
64
  text-align: center;
65
  }
66
 
18
 
19
  .testimonial-inner {
20
  padding: 30px;
21
+ text-align: center;
22
+
23
+ & > *:not(:nth-last-child(2)):not(:last-child) {
24
+ margin-bottom: 5px;
25
+ }
26
  }
27
 
28
  .testimonial-heading {
62
  bottom: 0;
63
  }
64
 
65
+ .testimonial-field {
66
  clear: both;
 
67
  text-align: center;
68
  }
69
 
templates-scss/simple/content.scss CHANGED
@@ -23,7 +23,11 @@ $template: simple;
23
 
24
  .testimonial-inner {
25
  padding: 1em;
26
- text-align: left;
 
 
 
 
27
  }
28
 
29
  .testimonial-heading {
@@ -52,9 +56,8 @@ $template: simple;
52
  }
53
  }
54
 
55
- .testimonial-client {
56
  clear: both;
57
- margin-top: 1em;
58
  }
59
 
60
  .readmore {
23
 
24
  .testimonial-inner {
25
  padding: 1em;
26
+ text-align: left;
27
+
28
+ & > *:not(:nth-last-child(2)):not(:last-child) {
29
+ margin-bottom: 5px;
30
+ }
31
  }
32
 
33
  .testimonial-heading {
56
  }
57
  }
58
 
59
+ .testimonial-field {
60
  clear: both;
 
61
  }
62
 
63
  .readmore {
templates-scss/small-widget/content.scss CHANGED
@@ -18,7 +18,11 @@ $template: small-widget;
18
  }
19
 
20
  .testimonial-inner {
21
- padding: 10px;
 
 
 
 
22
  }
23
 
24
  .testimonial-heading {
@@ -36,8 +40,7 @@ $template: small-widget;
36
  margin-bottom: .5em;
37
  }
38
 
39
- .testimonial-client {
40
- margin-top: 1em;
41
  clear: both;
42
  }
43
 
18
  }
19
 
20
  .testimonial-inner {
21
+ padding: 10px;
22
+
23
+ & > *:not(:nth-last-child(2)):not(:last-child) {
24
+ margin-bottom: 5px;
25
+ }
26
  }
27
 
28
  .testimonial-heading {
40
  margin-bottom: .5em;
41
  }
42
 
43
+ .testimonial-field {
 
44
  clear: both;
45
  }
46
 
templates/bold/content.css CHANGED
@@ -92,6 +92,9 @@ Thanks https://css-tricks.com/minimum-paragraph-widths/
92
  padding: 20px;
93
  border-radius: 3px;
94
  }
 
 
 
95
  .strong-view.bold .testimonial-content {
96
  background: inherit;
97
  font-size: 2em;
@@ -117,9 +120,8 @@ Thanks https://css-tricks.com/minimum-paragraph-widths/
117
  text-decoration: none;
118
  box-shadow: none;
119
  }
120
- .strong-view.bold .testimonial-client {
121
  font-size: 1.2em;
122
- margin-top: 1em;
123
  }
124
  .strong-view.bold .testimonial-name {
125
  font-weight: 700;
92
  padding: 20px;
93
  border-radius: 3px;
94
  }
95
+ .strong-view.bold .testimonial-inner > *:not(:nth-last-child(2)):not(:last-child) {
96
+ margin-bottom: 5px;
97
+ }
98
  .strong-view.bold .testimonial-content {
99
  background: inherit;
100
  font-size: 2em;
120
  text-decoration: none;
121
  box-shadow: none;
122
  }
123
+ .strong-view.bold .testimonial-field {
124
  font-size: 1.2em;
 
125
  }
126
  .strong-view.bold .testimonial-name {
127
  font-weight: 700;
templates/bold/content.php CHANGED
@@ -25,9 +25,8 @@
25
  <?php do_action( 'wpmtst_after_testimonial_content' ); ?>
26
  </div>
27
 
28
- <div class="testimonial-client">
29
- <?php wpmtst_the_client(); ?>
30
- </div>
31
  <div class="clear"></div>
32
 
33
  <?php do_action( 'wpmtst_after_testimonial' ); ?>
25
  <?php do_action( 'wpmtst_after_testimonial_content' ); ?>
26
  </div>
27
 
28
+ <?php wpmtst_the_client(); ?>
29
+
 
30
  <div class="clear"></div>
31
 
32
  <?php do_action( 'wpmtst_after_testimonial' ); ?>
templates/default/content.css CHANGED
@@ -96,6 +96,9 @@ Thanks https://css-tricks.com/minimum-paragraph-widths/
96
  padding: 20px;
97
  text-align: left;
98
  }
 
 
 
99
  .strong-view.default .testimonial-heading {
100
  background: url("img/quotes.png") no-repeat scroll left center transparent;
101
  margin-top: 0;
@@ -126,8 +129,7 @@ Thanks https://css-tricks.com/minimum-paragraph-widths/
126
  text-decoration: none;
127
  box-shadow: none;
128
  }
129
- .strong-view.default .testimonial-client {
130
- margin-top: 1em;
131
  text-align: right;
132
  }
133
  .strong-view.default .testimonial-name {
@@ -277,7 +279,7 @@ Thanks https://css-tricks.com/minimum-paragraph-widths/
277
  float: right;
278
  margin-left: 1em;
279
  }
280
- .strong-view.default.rtl .testimonial-client {
281
  text-align: left;
282
  }
283
 
@@ -294,7 +296,7 @@ Thanks https://css-tricks.com/minimum-paragraph-widths/
294
  margin-bottom: 0.25em;
295
  margin-left: 1em;
296
  }
297
- .strong-view.default.image-right .testimonial-client {
298
  text-align: left;
299
  }
300
 
@@ -303,7 +305,7 @@ Thanks https://css-tricks.com/minimum-paragraph-widths/
303
  margin-left: 0;
304
  margin-right: 1em;
305
  }
306
- .strong-view.default.image-right.rtl .testimonial-client {
307
  text-align: right;
308
  }
309
 
96
  padding: 20px;
97
  text-align: left;
98
  }
99
+ .strong-view.default .testimonial-inner > *:not(:nth-last-child(2)):not(:last-child) {
100
+ margin-bottom: 5px;
101
+ }
102
  .strong-view.default .testimonial-heading {
103
  background: url("img/quotes.png") no-repeat scroll left center transparent;
104
  margin-top: 0;
129
  text-decoration: none;
130
  box-shadow: none;
131
  }
132
+ .strong-view.default .testimonial-field {
 
133
  text-align: right;
134
  }
135
  .strong-view.default .testimonial-name {
279
  float: right;
280
  margin-left: 1em;
281
  }
282
+ .strong-view.default.rtl .testimonial-field {
283
  text-align: left;
284
  }
285
 
296
  margin-bottom: 0.25em;
297
  margin-left: 1em;
298
  }
299
+ .strong-view.default.image-right .testimonial-field {
300
  text-align: left;
301
  }
302
 
305
  margin-left: 0;
306
  margin-right: 1em;
307
  }
308
+ .strong-view.default.image-right.rtl .testimonial-field {
309
  text-align: right;
310
  }
311
 
templates/default/content.php CHANGED
@@ -27,9 +27,8 @@
27
  <?php do_action( 'wpmtst_after_testimonial_content' ); ?>
28
  </div>
29
 
30
- <div class="testimonial-client">
31
- <?php wpmtst_the_client(); ?>
32
- </div>
33
  <div class="clear"></div>
34
 
35
  <?php do_action( 'wpmtst_after_testimonial' ); ?>
27
  <?php do_action( 'wpmtst_after_testimonial_content' ); ?>
28
  </div>
29
 
30
+ <?php wpmtst_the_client(); ?>
31
+
 
32
  <div class="clear"></div>
33
 
34
  <?php do_action( 'wpmtst_after_testimonial' ); ?>
templates/modern/content.css CHANGED
@@ -90,6 +90,9 @@ Thanks https://css-tricks.com/minimum-paragraph-widths/
90
  padding: 30px;
91
  text-align: center;
92
  }
 
 
 
93
  .strong-view.modern .testimonial-heading {
94
  font-weight: 700;
95
  margin-top: 0;
@@ -129,9 +132,8 @@ Thanks https://css-tricks.com/minimum-paragraph-widths/
129
  right: -56px;
130
  bottom: 0;
131
  }
132
- .strong-view.modern .testimonial-client {
133
  clear: both;
134
- margin-top: 30px;
135
  text-align: center;
136
  }
137
  .strong-view.modern .testimonial-name {
90
  padding: 30px;
91
  text-align: center;
92
  }
93
+ .strong-view.modern .testimonial-inner > *:not(:nth-last-child(2)):not(:last-child) {
94
+ margin-bottom: 5px;
95
+ }
96
  .strong-view.modern .testimonial-heading {
97
  font-weight: 700;
98
  margin-top: 0;
132
  right: -56px;
133
  bottom: 0;
134
  }
135
+ .strong-view.modern .testimonial-field {
136
  clear: both;
 
137
  text-align: center;
138
  }
139
  .strong-view.modern .testimonial-name {
templates/modern/content.php CHANGED
@@ -25,10 +25,10 @@
25
  <?php do_action( 'wpmtst_after_testimonial_content' ); ?>
26
  </div>
27
 
28
- <div class="testimonial-client">
29
- <?php wpmtst_the_thumbnail(); ?>
30
- <?php wpmtst_the_client(); ?>
31
- </div>
32
  <div class="clear"></div>
33
 
34
  <?php do_action( 'wpmtst_after_testimonial' ); ?>
25
  <?php do_action( 'wpmtst_after_testimonial_content' ); ?>
26
  </div>
27
 
28
+ <?php wpmtst_the_thumbnail(); ?>
29
+
30
+ <?php wpmtst_the_client(); ?>
31
+
32
  <div class="clear"></div>
33
 
34
  <?php do_action( 'wpmtst_after_testimonial' ); ?>
templates/simple/content.css CHANGED
@@ -94,6 +94,9 @@ Thanks https://css-tricks.com/minimum-paragraph-widths/
94
  padding: 1em;
95
  text-align: left;
96
  }
 
 
 
97
  .strong-view.simple .testimonial-heading {
98
  margin-top: 0;
99
  margin-bottom: 1em;
@@ -120,9 +123,8 @@ Thanks https://css-tricks.com/minimum-paragraph-widths/
120
  text-decoration: none;
121
  box-shadow: none;
122
  }
123
- .strong-view.simple .testimonial-client {
124
  clear: both;
125
- margin-top: 1em;
126
  }
127
  .strong-view.simple .readmore {
128
  margin-top: 1em;
@@ -243,6 +245,6 @@ Thanks https://css-tricks.com/minimum-paragraph-widths/
243
  float: right;
244
  margin-left: 1em;
245
  }
246
- .strong-view.simple.rtl .testimonial-client {
247
  text-align: left;
248
  }
94
  padding: 1em;
95
  text-align: left;
96
  }
97
+ .strong-view.simple .testimonial-inner > *:not(:nth-last-child(2)):not(:last-child) {
98
+ margin-bottom: 5px;
99
+ }
100
  .strong-view.simple .testimonial-heading {
101
  margin-top: 0;
102
  margin-bottom: 1em;
123
  text-decoration: none;
124
  box-shadow: none;
125
  }
126
+ .strong-view.simple .testimonial-field {
127
  clear: both;
 
128
  }
129
  .strong-view.simple .readmore {
130
  margin-top: 1em;
245
  float: right;
246
  margin-left: 1em;
247
  }
248
+ .strong-view.simple.rtl .testimonial-field {
249
  text-align: left;
250
  }
templates/simple/content.php CHANGED
@@ -27,9 +27,8 @@
27
  <?php do_action( 'wpmtst_after_testimonial_content' ); ?>
28
  </div>
29
 
30
- <div class="testimonial-client">
31
- <?php wpmtst_the_client(); ?>
32
- </div>
33
  <div class="clear"></div>
34
 
35
  <?php do_action( 'wpmtst_after_testimonial' ); ?>
27
  <?php do_action( 'wpmtst_after_testimonial_content' ); ?>
28
  </div>
29
 
30
+ <?php wpmtst_the_client(); ?>
31
+
 
32
  <div class="clear"></div>
33
 
34
  <?php do_action( 'wpmtst_after_testimonial' ); ?>
templates/small-widget/content.css CHANGED
@@ -86,6 +86,9 @@ Thanks https://css-tricks.com/minimum-paragraph-widths/
86
  .strong-view.small-widget .testimonial-inner {
87
  padding: 10px;
88
  }
 
 
 
89
  .strong-view.small-widget .testimonial-heading {
90
  margin-bottom: 1em;
91
  }
@@ -103,8 +106,7 @@ Thanks https://css-tricks.com/minimum-paragraph-widths/
103
  margin-right: 1em;
104
  margin-bottom: .5em;
105
  }
106
- .strong-view.small-widget .testimonial-client {
107
- margin-top: 1em;
108
  clear: both;
109
  }
110
  .strong-view.small-widget .testimonial-name {
@@ -155,7 +157,7 @@ Thanks https://css-tricks.com/minimum-paragraph-widths/
155
  float: right;
156
  margin-left: 1em;
157
  }
158
- .strong-view.small-widget.rtl .testimonial-client {
159
  text-align: left;
160
  }
161
 
86
  .strong-view.small-widget .testimonial-inner {
87
  padding: 10px;
88
  }
89
+ .strong-view.small-widget .testimonial-inner > *:not(:nth-last-child(2)):not(:last-child) {
90
+ margin-bottom: 5px;
91
+ }
92
  .strong-view.small-widget .testimonial-heading {
93
  margin-bottom: 1em;
94
  }
106
  margin-right: 1em;
107
  margin-bottom: .5em;
108
  }
109
+ .strong-view.small-widget .testimonial-field {
 
110
  clear: both;
111
  }
112
  .strong-view.small-widget .testimonial-name {
157
  float: right;
158
  margin-left: 1em;
159
  }
160
+ .strong-view.small-widget.rtl .testimonial-field {
161
  text-align: left;
162
  }
163
 
templates/small-widget/content.php CHANGED
@@ -27,9 +27,8 @@
27
  <?php do_action( 'wpmtst_after_testimonial_content' ); ?>
28
  </div>
29
 
30
- <div class="testimonial-client">
31
- <?php wpmtst_the_client(); ?>
32
- </div>
33
  <div class="clear"></div>
34
 
35
  <?php do_action( 'wpmtst_after_testimonial' ); ?>
27
  <?php do_action( 'wpmtst_after_testimonial_content' ); ?>
28
  </div>
29
 
30
+ <?php wpmtst_the_client(); ?>
31
+
 
32
  <div class="clear"></div>
33
 
34
  <?php do_action( 'wpmtst_after_testimonial' ); ?>
templates/unstyled/content.php CHANGED
@@ -27,9 +27,8 @@
27
  <?php do_action( 'wpmtst_after_testimonial_content' ); ?>
28
  </div>
29
 
30
- <div class="testimonial-client">
31
- <?php wpmtst_the_client(); ?>
32
- </div>
33
  <div class="clear"></div>
34
 
35
  <?php do_action( 'wpmtst_after_testimonial' ); ?>
27
  <?php do_action( 'wpmtst_after_testimonial_content' ); ?>
28
  </div>
29
 
30
+ <?php wpmtst_the_client(); ?>
31
+
 
32
  <div class="clear"></div>
33
 
34
  <?php do_action( 'wpmtst_after_testimonial' ); ?>