Advanced Ads - Version 1.37.1

Version Description

(October 25, 2022) =

  • Improvement: align the ad image preview in the Ad Parameters with other options
  • Improvement: order ads on the groups page by weight first and then by ad title
  • Fix: remove superfluous output above hints about cache-busting
  • Fix: ensure "Expired" and "Expiring" view stay active, when posts list is filtered or searched
  • Fix: allow saving an ad with an invalid user if the user was already the author of this ad
  • Fix: show a notice if positioning is used with responsive AdSense ads
Download this release

Release Info

Developer advancedads
Plugin Icon 128x128 Advanced Ads
Version 1.37.1
Comparing to
See all releases

Code changes from version 1.37.0 to 1.37.1

admin/assets/css/admin.css CHANGED
@@ -303,7 +303,9 @@ select + .advads-conditions-single { display: inline-flex; flex-wrap: wrap; alig
303
  #advads-image-url,
304
  #advads-image-title,
305
  #advads-image-alt { width: 80%; }
306
- #advads-image-edit-link[href=""] { display: none; }
 
 
307
  #advads-image-preview img { max-width: 100%; height: auto; }
308
 
309
  /* Wizard adjustments */
303
  #advads-image-url,
304
  #advads-image-title,
305
  #advads-image-alt { width: 80%; }
306
+ .advads_image_upload { font-weight: normal; }
307
+ #advads-image-edit-link { text-decoration: none; vertical-align: top; }
308
+ #advads-image-preview { display: inline-block; max-width: calc(100% - 2em) }
309
  #advads-image-preview img { max-width: 100%; height: auto; }
310
 
311
  /* Wizard adjustments */
admin/assets/js/admin.js CHANGED
@@ -619,7 +619,8 @@ jQuery( document ).ready( function ( $ ) {
619
  var new_image = '<img width="' + attachment.width + '" height="' + attachment.height +
620
  '" title="' + attachment.title + '" alt="' + attachment.alt + '" src="' + attachment.url + '"/>'
621
  $( '#advads-image-preview' ).html( new_image )
622
- $( '#advads-image-edit-link' ).attr( 'href', attachment.editLink )
 
623
  // process "reserve this space" checkbox
624
  $( '#advanced-ads-ad-parameters-size input[type=number]:first' ).trigger( 'change' );
625
  }
@@ -740,8 +741,8 @@ jQuery( document ).ready( function ( $ ) {
740
  } );
741
  } )
742
 
743
- function modal_submit_form( event, ID, validation = '' ) {
744
- if ( validation !== '' && ! window[validation]() ) {
745
  event.preventDefault();
746
  return;
747
  }
@@ -816,9 +817,9 @@ function advads_toggle_box_enable ( e, selector ) {
816
  }
817
 
818
  /**
819
- * validate placement form on submit
820
  */
821
- function advads_validate_placement_form () {
822
  // check if placement type was selected
823
  if ( ! jQuery( '.advads-placement-type input:checked' ).length ) {
824
  jQuery( '.advads-placement-type-error' ).show()
619
  var new_image = '<img width="' + attachment.width + '" height="' + attachment.height +
620
  '" title="' + attachment.title + '" alt="' + attachment.alt + '" src="' + attachment.url + '"/>'
621
  $( '#advads-image-preview' ).html( new_image )
622
+ $( '#advads-image-edit-link' ).attr( 'href', attachment.editLink );
623
+ $( '#advads-image-edit-link' ).removeClass( 'hidden' );
624
  // process "reserve this space" checkbox
625
  $( '#advanced-ads-ad-parameters-size input[type=number]:first' ).trigger( 'change' );
626
  }
741
  } );
742
  } )
743
 
744
+ function modal_submit_form( event, ID, modalID, validation = '' ) {
745
+ if ( validation !== '' && ! window[validation]( modalID ) ) {
746
  event.preventDefault();
747
  return;
748
  }
817
  }
818
 
819
  /**
820
+ * Validate placement form on submit.
821
  */
822
+ function advads_validate_placement_form (modalID) {
823
  // check if placement type was selected
824
  if ( ! jQuery( '.advads-placement-type input:checked' ).length ) {
825
  jQuery( '.advads-placement-type-error' ).show()
admin/includes/ad-authors.php CHANGED
@@ -107,11 +107,11 @@ class Advanced_Ads_Ad_Authors {
107
  * @return void
108
  */
109
  public function sanitize_author_saving( $post_id, $data ) {
110
- if ( get_post_type( $post_id ) !== Advanced_Ads::POST_TYPE_SLUG ) {
111
- return;
112
- }
113
-
114
- if ( (int) $data['post_author'] === get_current_user_id() ) {
115
  return;
116
  }
117
 
107
  * @return void
108
  */
109
  public function sanitize_author_saving( $post_id, $data ) {
110
+ if (
111
+ get_post_type( $post_id ) !== Advanced_Ads::POST_TYPE_SLUG
112
+ || (int) $data['post_author'] === get_current_user_id()
113
+ || (int) $data['post_author'] === (int) get_post_field( 'post_author', $post_id )
114
+ ) {
115
  return;
116
  }
117
 
admin/includes/class-ad-groups-list.php CHANGED
@@ -116,9 +116,8 @@ class Advanced_Ads_Groups_List {
116
  // query ads.
117
  $ads = $this->get_ads( $group );
118
  $weights = $group->get_ad_weights( wp_list_pluck( $ads->posts, 'ID' ) );
119
- $ad_form_rows = $weights;
120
- arsort( $ad_form_rows );
121
- $max_weight = Advanced_Ads_Group::get_max_ad_weight( $ads->post_count );
122
 
123
  // The Loop.
124
  if ( $ads->post_count ) {
@@ -169,8 +168,7 @@ class Advanced_Ads_Groups_List {
169
  return get_post_status( $post ) === 'publish';
170
  } ) );
171
  $weight_sum = array_sum( array_intersect_key( $weights, array_flip( $published_ads ) ) );
172
- $ads_output = $weights;
173
- arsort( $ads_output );
174
 
175
  // The Loop.
176
  if ( $ads->have_posts() ) {
@@ -620,4 +618,34 @@ class Advanced_Ads_Groups_List {
620
  return $sanitized_weights;
621
  }
622
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
623
  }
116
  // query ads.
117
  $ads = $this->get_ads( $group );
118
  $weights = $group->get_ad_weights( wp_list_pluck( $ads->posts, 'ID' ) );
119
+ $ad_form_rows = $this->get_weighted_ad_order( $weights );
120
+ $max_weight = Advanced_Ads_Group::get_max_ad_weight( $ads->post_count );
 
121
 
122
  // The Loop.
123
  if ( $ads->post_count ) {
168
  return get_post_status( $post ) === 'publish';
169
  } ) );
170
  $weight_sum = array_sum( array_intersect_key( $weights, array_flip( $published_ads ) ) );
171
+ $ads_output = $this->get_weighted_ad_order( $weights );
 
172
 
173
  // The Loop.
174
  if ( $ads->have_posts() ) {
618
  return $sanitized_weights;
619
  }
620
 
621
+ /**
622
+ * Order the ad list by weight first and then by title.
623
+ *
624
+ * @param array<int, int> $weights indexed by ad_id, weight as value.
625
+ *
626
+ * @return array<int, int>
627
+ */
628
+ private function get_weighted_ad_order( array $weights ) {
629
+ arsort( $weights );
630
+ $ad_title_weights = array();
631
+
632
+ // index ads with the same weight by weight.
633
+ foreach ( $weights as $ad_id => $weight ) {
634
+ $ad_title_weights[ $weight ][ $ad_id ] = get_the_title( $ad_id );
635
+ }
636
+
637
+ // order them by title
638
+ array_walk( $ad_title_weights, static function( &$weight_group ) {
639
+ natsort( $weight_group );
640
+ } );
641
+
642
+ // flatten the array with the ad_id as key and the weight as value
643
+ $ad_order = array();
644
+ foreach ( $ad_title_weights as $weight => $ad_array ) {
645
+ $ad_order += array_fill_keys( array_keys( $ad_array ), $weight );
646
+ }
647
+
648
+ return $ad_order;
649
+ }
650
+
651
  }
admin/includes/class-list-filters.php CHANGED
@@ -67,6 +67,8 @@ class Advanced_Ads_Ad_List_Filters {
67
 
68
  add_filter( 'views_edit-' . Advanced_Ads::POST_TYPE_SLUG, array( $this, 'add_expired_view' ) );
69
  add_filter( 'views_edit-' . Advanced_Ads::POST_TYPE_SLUG, array( $this, 'add_expiring_view' ) );
 
 
70
  add_action( 'manage_posts_extra_tablenav', array( $this, 'ad_views' ) );
71
  add_action( 'admin_enqueue_scripts', array( $this, 'ad_list_scripts' ), 11 );
72
  }
@@ -756,4 +758,23 @@ class Advanced_Ads_Ad_List_Filters {
756
  });
757
  " );
758
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
759
  }
67
 
68
  add_filter( 'views_edit-' . Advanced_Ads::POST_TYPE_SLUG, array( $this, 'add_expired_view' ) );
69
  add_filter( 'views_edit-' . Advanced_Ads::POST_TYPE_SLUG, array( $this, 'add_expiring_view' ) );
70
+ add_action( 'restrict_manage_posts', array( $this, 'send_addate_in_filter' ) );
71
+
72
  add_action( 'manage_posts_extra_tablenav', array( $this, 'ad_views' ) );
73
  add_action( 'admin_enqueue_scripts', array( $this, 'ad_list_scripts' ), 11 );
74
  }
758
  });
759
  " );
760
  }
761
+
762
+ /**
763
+ * If there is an addate dimension, add it to the filter.
764
+ * This ensures that the "view" buttons for expiring and expired ads
765
+ * maintain the `.current` class.
766
+ *
767
+ * @return void
768
+ */
769
+ public function send_addate_in_filter() {
770
+ if (
771
+ ! isset( $_GET['post_type'] )
772
+ || $_GET['post_type'] !== Advanced_Ads::POST_TYPE_SLUG
773
+ || empty( $_GET['addate'] )
774
+ ) {
775
+ return;
776
+ }
777
+
778
+ printf( '<input type="hidden" name="addate" value="%s">', esc_attr( $_GET['addate'] ) );
779
+ }
780
  }
admin/includes/class-overview-widgets.php CHANGED
@@ -430,6 +430,7 @@ endif;
430
  <li><?php esc_html_e( '11 more display and visitor conditions', 'advanced-ads' ); ?></li>
431
  <li><?php esc_html_e( '6 more placements', 'advanced-ads' ); ?></li>
432
  <li><?php esc_html_e( 'placement tests for ad optimization', 'advanced-ads' ); ?></li>
 
433
  <li><?php esc_html_e( 'ad grids and many more advanced features', 'advanced-ads' ); ?></li>
434
  </ul>
435
  <?php
@@ -473,12 +474,6 @@ endif;
473
  'link' => ADVADS_URL . 'add-ons/popup-and-layer-ads/?utm_source=advanced-ads&utm_medium=link&utm_campaign=overview-add-ons',
474
  'order' => 5,
475
  ),
476
- 'geo' => array(
477
- 'title' => 'Geo Targeting',
478
- 'desc' => __( 'Target visitors with ads that match their geo location and make more money with regional campaigns.', 'advanced-ads' ),
479
- 'link' => ADVADS_URL . 'add-ons/geo-targeting/?utm_source=advanced-ads&utm_medium=link&utm_campaign=overview-add-ons',
480
- 'order' => 5,
481
- ),
482
  'selling' => array(
483
  'title' => 'Selling Ads',
484
  'desc' => __( 'Earn more money and let advertisers pay for ad space directly on the frontend of your site.', 'advanced-ads' ),
@@ -644,24 +639,6 @@ endif;
644
  }
645
  }
646
 
647
- // GEO TARGETING.
648
- if ( isset( $installed_plugins['advanced-ads-geo/advanced-ads-geo.php'] ) && ! class_exists( 'Advanced_Ads_Geo_Plugin' ) ) { // is installed, but not active.
649
- $add_ons['geo']['link'] = wp_nonce_url( 'plugins.php?action=activate&amp;plugin=advanced-ads-geo/advanced-ads-geo.php&amp', 'activate-plugin_advanced-ads-geo/advanced-ads-geo.php' );
650
- $add_ons['geo']['link_title'] = __( 'Activate now', 'advanced-ads' );
651
- $installed_pro_plugins++;
652
- } elseif ( class_exists( 'Advanced_Ads_Geo_Plugin' ) ) {
653
- $add_ons['geo']['link'] = ADVADS_URL . 'manual/geo-targeting-condition/?utm_source=advanced-ads&utm_medium=link&utm_campaign=overview-add-ons-manual';
654
- $add_ons['geo']['desc'] = '';
655
- $add_ons['geo']['installed'] = true;
656
- $add_ons['geo']['order'] = 20;
657
- $installed_pro_plugins++;
658
-
659
- // remove the add-on.
660
- if ( $hide_activated ) {
661
- unset( $add_ons['geo'] );
662
- }
663
- }
664
-
665
  // SLIDER.
666
  if ( isset( $installed_plugins['advanced-ads-slider/slider.php'] ) && ! class_exists( 'Advanced_Ads_Slider_Plugin' ) ) { // is installed, but not active.
667
  $add_ons['slider']['link'] = wp_nonce_url( 'plugins.php?action=activate&amp;plugin=advanced-ads-slider/slider.php&amp', 'activate-plugin_advanced-ads-slider/slider.php' );
430
  <li><?php esc_html_e( '11 more display and visitor conditions', 'advanced-ads' ); ?></li>
431
  <li><?php esc_html_e( '6 more placements', 'advanced-ads' ); ?></li>
432
  <li><?php esc_html_e( 'placement tests for ad optimization', 'advanced-ads' ); ?></li>
433
+ <li><?php esc_html_e( 'Geo Targeting', 'advanced-ads' ); ?></li>
434
  <li><?php esc_html_e( 'ad grids and many more advanced features', 'advanced-ads' ); ?></li>
435
  </ul>
436
  <?php
474
  'link' => ADVADS_URL . 'add-ons/popup-and-layer-ads/?utm_source=advanced-ads&utm_medium=link&utm_campaign=overview-add-ons',
475
  'order' => 5,
476
  ),
 
 
 
 
 
 
477
  'selling' => array(
478
  'title' => 'Selling Ads',
479
  'desc' => __( 'Earn more money and let advertisers pay for ad space directly on the frontend of your site.', 'advanced-ads' ),
639
  }
640
  }
641
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
642
  // SLIDER.
643
  if ( isset( $installed_plugins['advanced-ads-slider/slider.php'] ) && ! class_exists( 'Advanced_Ads_Slider_Plugin' ) ) { // is installed, but not active.
644
  $add_ons['slider']['link'] = wp_nonce_url( 'plugins.php?action=activate&amp;plugin=advanced-ads-slider/slider.php&amp', 'activate-plugin_advanced-ads-slider/slider.php' );
admin/views/group-hints.php CHANGED
@@ -6,7 +6,6 @@
6
  */
7
  ?>
8
  <?php foreach ( $hints as $hint ) : ?>
9
- ?>
10
  <p class="advads-notice-inline advads-error">
11
  <?php
12
  // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- the output is already escaped
6
  */
7
  ?>
8
  <?php foreach ( $hints as $hint ) : ?>
 
9
  <p class="advads-notice-inline advads-error">
10
  <?php
11
  // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- the output is already escaped
admin/views/modal.php CHANGED
@@ -20,7 +20,7 @@ $close_validation = isset( $close_validation ) ? $close_validation : '';
20
  <script>
21
  document.addEventListener( 'DOMContentLoaded', function () {
22
  document.querySelector( '#modal-<?php echo esc_attr( $modal_slug ); ?> .advads-modal-close-action' ).addEventListener( 'click', function ( event ) {
23
- modal_submit_form( event, '<?php echo esc_attr( $close_form ); ?>', '<?php echo esc_attr( $close_validation ); ?>' );
24
  } );
25
  } );
26
  </script>
20
  <script>
21
  document.addEventListener( 'DOMContentLoaded', function () {
22
  document.querySelector( '#modal-<?php echo esc_attr( $modal_slug ); ?> .advads-modal-close-action' ).addEventListener( 'click', function ( event ) {
23
+ modal_submit_form( event, '<?php echo esc_attr( $close_form ); ?>', '#modal-<?php echo esc_attr( $modal_slug ); ?>', '<?php echo esc_attr( $close_validation ); ?>' );
24
  } );
25
  } );
26
  </script>
admin/views/settings.php CHANGED
@@ -131,7 +131,7 @@ jQuery( '.advads-tab-sub-menu' ).each( function( key, e ){
131
  advads_settings_parent_tab = jQuery( e ).parent( '.advads-tab');
132
  var headlines = advads_settings_parent_tab.find( 'h2' );
133
  // create list
134
- if( headlines.length ){
135
  advads_submenu_list = jQuery('<ul>');
136
  headlines.each( function( key, h ){
137
  // create anchor for this headline
131
  advads_settings_parent_tab = jQuery( e ).parent( '.advads-tab');
132
  var headlines = advads_settings_parent_tab.find( 'h2' );
133
  // create list
134
+ if( headlines.length > 1 ){
135
  advads_submenu_list = jQuery('<ul>');
136
  headlines.each( function( key, h ){
137
  // create anchor for this headline
admin/views/upgrades/all-access.php CHANGED
@@ -4,7 +4,6 @@
4
  <li><span class="dashicons dashicons-yes"></span><?php echo 'Tracking'; ?></li>
5
  <li><span class="dashicons dashicons-yes"></span><?php echo 'Responsive, AMP and Mobile ads'; ?></li>
6
  <li><span class="dashicons dashicons-yes"></span><?php echo 'Google Ad Manager Integration'; ?></li>
7
- <li><span class="dashicons dashicons-yes"></span><?php echo 'Geo Targeting'; ?></li>
8
  <li><span class="dashicons dashicons-yes"></span><?php echo 'Sticky Ads'; ?></li>
9
  <li><span class="dashicons dashicons-yes"></span><?php echo 'PopUp Ads'; ?></li>
10
  <li><span class="dashicons dashicons-yes"></span><?php echo 'Selling Ads'; ?></li>
4
  <li><span class="dashicons dashicons-yes"></span><?php echo 'Tracking'; ?></li>
5
  <li><span class="dashicons dashicons-yes"></span><?php echo 'Responsive, AMP and Mobile ads'; ?></li>
6
  <li><span class="dashicons dashicons-yes"></span><?php echo 'Google Ad Manager Integration'; ?></li>
 
7
  <li><span class="dashicons dashicons-yes"></span><?php echo 'Sticky Ads'; ?></li>
8
  <li><span class="dashicons dashicons-yes"></span><?php echo 'PopUp Ads'; ?></li>
9
  <li><span class="dashicons dashicons-yes"></span><?php echo 'Selling Ads'; ?></li>
admin/views/upgrades/pro-tab.php CHANGED
@@ -5,6 +5,7 @@
5
  <li><span class="dashicons dashicons-yes"></span><?php esc_html_e( 'Click Fraud Protection', 'advanced-ads' ); ?></li>
6
  <li><span class="dashicons dashicons-yes"></span><?php esc_html_e( 'Lazy Loading', 'advanced-ads' ); ?></li>
7
  <li><span class="dashicons dashicons-yes"></span><?php esc_html_e( 'support for cached sites', 'advanced-ads' ); ?></li>
 
8
  <li><span class="dashicons dashicons-yes"></span><?php esc_html_e( '11 more display and visitor conditions', 'advanced-ads' ); ?></li>
9
  <li><span class="dashicons dashicons-yes"></span><?php esc_html_e( '6 more placements', 'advanced-ads' ); ?></li>
10
  <li><span class="dashicons dashicons-yes"></span><?php esc_html_e( 'placement tests for ad optimization', 'advanced-ads' ); ?></li>
5
  <li><span class="dashicons dashicons-yes"></span><?php esc_html_e( 'Click Fraud Protection', 'advanced-ads' ); ?></li>
6
  <li><span class="dashicons dashicons-yes"></span><?php esc_html_e( 'Lazy Loading', 'advanced-ads' ); ?></li>
7
  <li><span class="dashicons dashicons-yes"></span><?php esc_html_e( 'support for cached sites', 'advanced-ads' ); ?></li>
8
+ <li><span class="dashicons dashicons-yes"></span><?php esc_html_e( 'Geo Targeting', 'advanced-ads' ); ?></li>
9
  <li><span class="dashicons dashicons-yes"></span><?php esc_html_e( '11 more display and visitor conditions', 'advanced-ads' ); ?></li>
10
  <li><span class="dashicons dashicons-yes"></span><?php esc_html_e( '6 more placements', 'advanced-ads' ); ?></li>
11
  <li><span class="dashicons dashicons-yes"></span><?php esc_html_e( 'placement tests for ad optimization', 'advanced-ads' ); ?></li>
advanced-ads.php CHANGED
@@ -12,7 +12,7 @@
12
  * Plugin Name: Advanced Ads
13
  * Plugin URI: https://wpadvancedads.com
14
  * Description: Manage and optimize your ads in WordPress
15
- * Version: 1.37.0
16
  * Author: Thomas Maier, Advanced Ads GmbH
17
  * Author URI: https://wpadvancedads.com
18
  * Text Domain: advanced-ads
@@ -39,7 +39,7 @@ define( 'ADVADS_BASE_DIR', dirname( ADVADS_BASE ) ); // directory of the plugin
39
  // general and global slug, e.g. to store options in WP.
40
  define( 'ADVADS_SLUG', 'advanced-ads' );
41
  define( 'ADVADS_URL', 'https://wpadvancedads.com/' );
42
- define( 'ADVADS_VERSION', '1.37.0' );
43
 
44
  // Autoloading, modules and functions.
45
 
12
  * Plugin Name: Advanced Ads
13
  * Plugin URI: https://wpadvancedads.com
14
  * Description: Manage and optimize your ads in WordPress
15
+ * Version: 1.37.1
16
  * Author: Thomas Maier, Advanced Ads GmbH
17
  * Author URI: https://wpadvancedads.com
18
  * Text Domain: advanced-ads
39
  // general and global slug, e.g. to store options in WP.
40
  define( 'ADVADS_SLUG', 'advanced-ads' );
41
  define( 'ADVADS_URL', 'https://wpadvancedads.com/' );
42
+ define( 'ADVADS_VERSION', '1.37.1' );
43
 
44
  // Autoloading, modules and functions.
45
 
changelog.txt CHANGED
@@ -1,23 +1,33 @@
1
  == Changelog ==
2
 
 
 
 
 
 
 
 
 
 
3
  = 1.37.0 (October 11, 2022) =
4
 
5
  - Feature: bump minimum required PHP version to 7.2
6
- - Improvement: add a "Notes" column for the ad description
7
- - Improvement: add a new "Size" column for the ad size only
8
- - Improvement: add a new "Type" column to the beginning of the ad list with a tooltip with more details
9
- - Improvement: cleanup the header items on list pages and unify layout elements
10
- - Fix: highlight the "All" view on the ad list
11
  - Improvement: hide the following columns on the ad list view by default: notes, size, author
12
  - Improvement: remove the background color for some ad status, like draft
13
- - Improvement: rename the "Ad Details" column into "Preview", showing image ad previews
14
- - Improvement: rename the "Title" column into "Name"
15
- - Improvement: search ad by ID on the ad overview page
16
- - Improvement: show filters on the ad overview list permanently using the new "Show Filters Permanently" screen option
17
- - Improvement: show the bulk options only when items in the ad list are selected
18
- - Improvement: unify the links and buttons in the header of admin pages related to Advanced Ads
19
- - Fix: prevent undefined index notice on Ad Blocker setting in multisite
20
  - Fix: show proper message for empty AdSense account
 
21
 
22
  = 1.36.3 (September 30, 2022) =
23
 
1
  == Changelog ==
2
 
3
+ = 1.37.1 (October 25, 2022) =
4
+
5
+ - Improvement: align the ad image preview in the Ad Parameters with other options
6
+ - Improvement: order ads on the groups page by weight first and then by ad title
7
+ - Fix: remove superfluous output above hints about cache-busting
8
+ - Fix: ensure "Expired" and "Expiring" view stay active, when posts list is filtered or searched
9
+ - Fix: allow saving an ad with an invalid user if the user was already the author of this ad
10
+ - Fix: show a notice if positioning is used with responsive AdSense ads
11
+
12
  = 1.37.0 (October 11, 2022) =
13
 
14
  - Feature: bump minimum required PHP version to 7.2
15
+ - Improvement: cleanup of the header items on list pages in the admin and unified layout elements
16
+ - Improvement: show filters and search options on the ad, group, and placement list pages with the new Filters button in the page header
17
+ - Improvement: show filters on the ad overview list permanently using the new Show Filters Permanently screen option
18
+ - Improvement: unify the links and buttons in the header of admin pages related to Advanced Ads
19
+ - Improvement: show the bulk options only when items in the ad list are selected
20
  - Improvement: hide the following columns on the ad list view by default: notes, size, author
21
  - Improvement: remove the background color for some ad status, like draft
22
+ - Improvement: add a new "Type" column to the beginning of the ad list with a tooltip with more details
23
+ - Improvement: add a new "Size" column for the ad size only
24
+ - Improvement: add a "Notes" column for the ad description
25
+ - Improvement: rename the "Title" Column into "Name"
26
+ - Improvement: rename the Ad Details column into "Preview", showing only image ad previews
27
+ - Improvement: search ad by post ID on the ad overview page
28
+ - Fix: "All" view on the ad list not highlighted
29
  - Fix: show proper message for empty AdSense account
30
+ - Fix: prevent undefined index notice on Ad Blocker setting in multisite
31
 
32
  = 1.36.3 (September 30, 2022) =
33
 
classes/ad_type_image.php CHANGED
@@ -39,29 +39,30 @@ class Advanced_Ads_Ad_Type_Image extends Advanced_Ads_Ad_Type_Abstract {
39
  * Output for the ad parameters metabox
40
  *
41
  * @param Advanced_Ads_Ad $ad ad object.
 
 
42
  */
43
  public function render_parameters( Advanced_Ads_Ad $ad ) {
44
- // load tinymc content exitor
45
- $id = ( isset( $ad->output['image_id'] ) ) ? $ad->output['image_id'] : '';
46
- $url = ( isset( $ad->url ) ) ? esc_attr( $ad->url ) : '';
47
 
48
- ?><p><button href="#" class="advads_image_upload button button-secondary" type="button" data-uploader-title="
49
- <?php
50
- esc_html_e( 'Insert File', 'advanced-ads' );
51
- ?>
52
- " data-uploader-button-text="<?php esc_html_e( 'Insert', 'advanced-ads' ); ?>" onclick="return false;"><?php esc_html_e( 'select image', 'advanced-ads' ); ?></button>
53
- <a id="advads-image-edit-link" href="
54
- <?php
55
- if ( $id ) {
56
- echo esc_url( get_edit_post_link( $id ) );
57
- }
58
- ?>
59
- "><?php esc_html_e( 'edit', 'advanced-ads' ); ?></a>
60
- </p>
61
- <input type="hidden" name="advanced_ad[output][image_id]" value="<?php echo absint( $id ); ?>" id="advads-image-id"/>
62
- <div id="advads-image-preview">
63
- <?php $this->create_image_tag( $id, $ad ); ?>
64
  </div>
 
65
  <?php
66
  // don’t show if tracking plugin enabled
67
  if ( ! defined( 'AAT_VERSION' ) ) :
39
  * Output for the ad parameters metabox
40
  *
41
  * @param Advanced_Ads_Ad $ad ad object.
42
+ *
43
+ * @return void
44
  */
45
  public function render_parameters( Advanced_Ads_Ad $ad ) {
46
+ $id = isset( $ad->output['image_id'] ) ? $ad->output['image_id'] : '';
47
+ $url = isset( $ad->url ) ? esc_attr( $ad->url ) : '';
48
+ $edit_link = $id ? get_edit_post_link( $id ) : '';
49
 
50
+ ?><span class="label">
51
+ <button href="#" class="advads_image_upload button advads-button-secondary" type="button"
52
+ data-uploader-title="<?php esc_attr_e( 'Insert File', 'advanced-ads' ); ?>"
53
+ data-uploader-button-text="<?php esc_attr_e( 'Insert', 'advanced-ads' ); ?>"
54
+ onclick="return false;">
55
+ <?php esc_html_e( 'Select image', 'advanced-ads' ); ?>
56
+ </button>
57
+ </span>
58
+ <div>
59
+ <input type="hidden" name="advanced_ad[output][image_id]" value="<?php echo absint( $id ); ?>" id="advads-image-id"/>
60
+ <div id="advads-image-preview">
61
+ <?php $this->create_image_tag( $id, $ad ); ?>
62
+ </div>
63
+ <a id="advads-image-edit-link" class="<?php echo ! $edit_link ? 'hidden' : ''; ?>" href="<?php echo esc_url( $edit_link ); ?>"><span class="dashicons dashicons-edit"></span></a>
 
 
64
  </div>
65
+ <hr/>
66
  <?php
67
  // don’t show if tracking plugin enabled
68
  if ( ! defined( 'AAT_VERSION' ) ) :
classes/plugin.php CHANGED
@@ -752,7 +752,6 @@ class Advanced_Ads_Plugin {
752
  || defined( 'AASADS_VERSION' ) // Sticky Ads.
753
  || defined( 'AAR_VERSION' ) // Responsive Ads.
754
  || defined( 'AAPLDS_VERSION' ) // PopUp and Layer Ads.
755
- || defined( 'AAGT_SLUG' ) // Geo-Targeting.
756
  );
757
  }
758
 
752
  || defined( 'AASADS_VERSION' ) // Sticky Ads.
753
  || defined( 'AAR_VERSION' ) // Responsive Ads.
754
  || defined( 'AAPLDS_VERSION' ) // PopUp and Layer Ads.
 
755
  );
756
  }
757
 
classes/visitor-conditions.php CHANGED
@@ -273,14 +273,12 @@ class Advanced_Ads_Visitor_Conditions {
273
  $pro_conditions[] = __( 'max. ad impressions', 'advanced-ads' );
274
  $pro_conditions[] = __( 'new visitor', 'advanced-ads' );
275
  $pro_conditions[] = __( 'page impressions', 'advanced-ads' );
 
276
  $pro_conditions[] = __( 'referrer url', 'advanced-ads' );
277
  $pro_conditions[] = __( 'user agent', 'advanced-ads' );
278
  $pro_conditions[] = __( 'user can (capabilities)', 'advanced-ads' );
279
  $pro_conditions[] = __( 'user role', 'advanced-ads' );
280
  }
281
- if ( ! defined( 'AAGT_VERSION' ) ) {
282
- $pro_conditions[] = __( 'geo location', 'advanced-ads' );
283
- }
284
  if ( ! defined( 'AAR_VERSION' ) ) {
285
  $pro_conditions[] = __( 'browser width', 'advanced-ads' );
286
  }
273
  $pro_conditions[] = __( 'max. ad impressions', 'advanced-ads' );
274
  $pro_conditions[] = __( 'new visitor', 'advanced-ads' );
275
  $pro_conditions[] = __( 'page impressions', 'advanced-ads' );
276
+ $pro_conditions[] = __( 'geo location', 'advanced-ads' );
277
  $pro_conditions[] = __( 'referrer url', 'advanced-ads' );
278
  $pro_conditions[] = __( 'user agent', 'advanced-ads' );
279
  $pro_conditions[] = __( 'user can (capabilities)', 'advanced-ads' );
280
  $pro_conditions[] = __( 'user role', 'advanced-ads' );
281
  }
 
 
 
282
  if ( ! defined( 'AAR_VERSION' ) ) {
283
  $pro_conditions[] = __( 'browser width', 'advanced-ads' );
284
  }
languages/advanced-ads.pot CHANGED
@@ -2,14 +2,14 @@
2
  # This file is distributed under the GPL-2.0+.
3
  msgid ""
4
  msgstr ""
5
- "Project-Id-Version: Advanced Ads 1.36.3\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/advanced-ads/\n"
7
  "Last-Translator: Thomas Maier <post@webzunft.de>\n"
8
  "Language-Team: webgilde <support@wpadvancedads.com>\n"
9
  "MIME-Version: 1.0\n"
10
  "Content-Type: text/plain; charset=UTF-8\n"
11
  "Content-Transfer-Encoding: 8bit\n"
12
- "POT-Creation-Date: 2022-10-11T12:28:30+00:00\n"
13
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
14
  "X-Generator: WP-CLI 2.6.0\n"
15
  "X-Domain: advanced-ads\n"
@@ -34,7 +34,7 @@ msgstr ""
34
 
35
  #: admin/class-advanced-ads-admin.php:224
36
  #: classes/display-conditions.php:317
37
- #: classes/visitor-conditions.php:311
38
  #: modules/gadsense/admin/views/external-ads-links.php:17
39
  #: modules/gadsense/admin/views/external-ads-links.php:22
40
  #: modules/gadsense/admin/views/external-ads-links.php:29
@@ -43,7 +43,7 @@ msgstr ""
43
 
44
  #: admin/class-advanced-ads-admin.php:225
45
  #: classes/display-conditions.php:317
46
- #: classes/visitor-conditions.php:311
47
  msgid "and"
48
  msgstr ""
49
 
@@ -302,67 +302,67 @@ msgstr ""
302
  msgid "Learn how."
303
  msgstr ""
304
 
305
- #: admin/includes/class-ad-groups-list.php:187
306
  msgid "Ad weight"
307
  msgstr ""
308
 
309
  #. translators: %s is a date.
310
- #: admin/includes/class-ad-groups-list.php:199
311
  #: admin/views/ad-list/timing.php:21
312
  msgid "starts %s"
313
  msgstr ""
314
 
315
  #. translators: %s is a date.
316
  #. translators: %s is a time and date string.
317
- #: admin/includes/class-ad-groups-list.php:220
318
  #: admin/views/ad-list/timing.php:59
319
  msgid "expires %s"
320
  msgstr ""
321
 
322
  #. translators: %s is a date.
323
  #. translators: %s is a time and date string.
324
- #: admin/includes/class-ad-groups-list.php:223
325
  #: admin/views/ad-list/timing.php:70
326
  msgid "<strong>expired</strong> %s"
327
  msgstr ""
328
 
329
  #. translators: %d is a number.
330
- #: admin/includes/class-ad-groups-list.php:240
331
  msgid "show %d more ads"
332
  msgstr ""
333
 
334
- #: admin/includes/class-ad-groups-list.php:245
335
  msgid "No ads assigned"
336
  msgstr ""
337
 
338
- #: admin/includes/class-ad-groups-list.php:247
339
  msgid "Add some"
340
  msgstr ""
341
 
342
  #. translators: amount of ads displayed
343
- #: admin/includes/class-ad-groups-list.php:275
344
  msgid "Up to %d ad displayed."
345
  msgid_plural "Up to %d ads displayed"
346
  msgstr[0] ""
347
  msgstr[1] ""
348
 
349
- #: admin/includes/class-ad-groups-list.php:345
350
  msgid "Random ads"
351
  msgstr ""
352
 
353
- #: admin/includes/class-ad-groups-list.php:346
354
  msgid "Display random ads based on ad weight"
355
  msgstr ""
356
 
357
- #: admin/includes/class-ad-groups-list.php:349
358
  msgid "Ordered ads"
359
  msgstr ""
360
 
361
- #: admin/includes/class-ad-groups-list.php:350
362
  msgid "Display ads with the highest ad weight first"
363
  msgstr ""
364
 
365
- #: admin/includes/class-ad-groups-list.php:369
366
  #: admin/views/placements.php:273
367
  #: modules/import-export/classes/import.php:153
368
  #: modules/import-export/classes/import.php:193
@@ -371,27 +371,27 @@ msgstr ""
371
  msgid "Edit"
372
  msgstr ""
373
 
374
- #: admin/includes/class-ad-groups-list.php:370
375
  #: admin/views/placements.php:131
376
  msgid "show usage"
377
  msgstr ""
378
 
379
- #: admin/includes/class-ad-groups-list.php:379
380
  #: admin/views/placements.php:10
381
  msgid "Delete"
382
  msgstr ""
383
 
384
- #: admin/includes/class-ad-groups-list.php:401
385
- #: admin/includes/class-ad-groups-list.php:471
386
  msgid "Invalid Ad Group"
387
  msgstr ""
388
 
389
- #: admin/includes/class-ad-groups-list.php:406
390
- #: admin/includes/class-ad-groups-list.php:476
391
  msgid "You don’t have permission to change the ad groups"
392
  msgstr ""
393
 
394
- #: admin/includes/class-ad-groups-list.php:440
395
  msgid "No ad group created"
396
  msgstr ""
397
 
@@ -532,7 +532,7 @@ msgid "Pro Feature"
532
  msgstr ""
533
 
534
  #: admin/includes/class-admin-upgrades.php:108
535
- #: admin/includes/class-overview-widgets.php:460
536
  msgid "A quick and error-free way of implementing ad units from your Google Ad Manager account."
537
  msgstr ""
538
 
@@ -612,23 +612,23 @@ msgstr ""
612
  msgid "Download failed. <a href=\"%s\" target=\"_blank\">Click here to learn why</a>."
613
  msgstr ""
614
 
615
- #: admin/includes/class-list-filters.php:161
616
  #: modules/gadsense/admin/views/adsense-ad-parameters.php:109
617
  #: modules/gadsense/includes/class-ad-type-adsense.php:49
618
  msgid "Responsive"
619
  msgstr ""
620
 
621
- #: admin/includes/class-list-filters.php:559
622
  msgctxt "Post list header for expired ads."
623
  msgid "Expired"
624
  msgstr ""
625
 
626
- #: admin/includes/class-list-filters.php:599
627
  msgctxt "Post list header for ads expiring in the future."
628
  msgid "Expiring"
629
  msgstr ""
630
 
631
- #: admin/includes/class-list-filters.php:729
632
  msgid "Showing search results for"
633
  msgstr ""
634
 
@@ -909,108 +909,108 @@ msgid "click fraud protection, lazy load, ad-block ads"
909
  msgstr ""
910
 
911
  #: admin/includes/class-overview-widgets.php:430
912
- #: admin/views/upgrades/pro-tab.php:8
913
  msgid "11 more display and visitor conditions"
914
  msgstr ""
915
 
916
  #: admin/includes/class-overview-widgets.php:431
917
- #: admin/views/upgrades/pro-tab.php:9
918
  msgid "6 more placements"
919
  msgstr ""
920
 
921
  #: admin/includes/class-overview-widgets.php:432
922
- #: admin/views/upgrades/pro-tab.php:10
923
  msgid "placement tests for ad optimization"
924
  msgstr ""
925
 
926
  #: admin/includes/class-overview-widgets.php:433
927
- #: admin/views/upgrades/pro-tab.php:11
 
 
 
 
 
928
  msgid "ad grids and many more advanced features"
929
  msgstr ""
930
 
931
- #: admin/includes/class-overview-widgets.php:448
932
  msgid "Analyze clicks and impressions of your ads locally or in Google Analytics, share reports, and limit ads to a specific number of impressions or clicks."
933
  msgstr ""
934
 
935
- #: admin/includes/class-overview-widgets.php:454
936
  msgid "Display ads based on the device or the size of your visitor’s browser, and control ads on AMP pages."
937
  msgstr ""
938
 
939
- #: admin/includes/class-overview-widgets.php:466
940
  msgid "Increase click rates on your ads by placing them in sticky positions above, next or below your site."
941
  msgstr ""
942
 
943
- #: admin/includes/class-overview-widgets.php:472
944
  msgid "Users will never miss an ad or other information in a PopUp. Choose when it shows up and for how long a user can close it."
945
  msgstr ""
946
 
947
- #: admin/includes/class-overview-widgets.php:478
948
- msgid "Target visitors with ads that match their geo location and make more money with regional campaigns."
949
- msgstr ""
950
-
951
- #: admin/includes/class-overview-widgets.php:484
952
  msgid "Earn more money and let advertisers pay for ad space directly on the frontend of your site."
953
  msgstr ""
954
 
955
- #: admin/includes/class-overview-widgets.php:490
956
  msgid "Create a beautiful and simple slider from your ads to show more information on less space."
957
  msgstr ""
958
 
959
- #: admin/includes/class-overview-widgets.php:496
960
  msgid "Place AdSense In-feed ads between posts on homepage, category, and archive pages."
961
  msgstr ""
962
 
963
- #: admin/includes/class-overview-widgets.php:499
964
- #: admin/includes/class-overview-widgets.php:689
965
- #: admin/includes/class-overview-widgets.php:705
966
  msgid "Install now"
967
  msgstr ""
968
 
969
- #: admin/includes/class-overview-widgets.php:517
970
- #: admin/includes/class-overview-widgets.php:535
971
- #: admin/includes/class-overview-widgets.php:560
972
- #: admin/includes/class-overview-widgets.php:578
973
- #: admin/includes/class-overview-widgets.php:596
974
- #: admin/includes/class-overview-widgets.php:614
975
- #: admin/includes/class-overview-widgets.php:632
976
- #: admin/includes/class-overview-widgets.php:650
977
- #: admin/includes/class-overview-widgets.php:668
978
  #: classes/ad_group.php:620
979
  msgid "Activate now"
980
  msgstr ""
981
 
982
- #: admin/includes/class-overview-widgets.php:543
983
  msgid "Visit your ad statistics"
984
  msgstr ""
985
 
986
- #: admin/includes/class-overview-widgets.php:685
987
  msgid "Use Genesis specific ad positions."
988
  msgstr ""
989
 
990
- #: admin/includes/class-overview-widgets.php:701
991
  msgid "Manage ad positions with WPBakery Page Builder (formerly Visual Composer)."
992
  msgstr ""
993
 
994
- #: admin/includes/class-overview-widgets.php:717
995
  msgid "Our best deal with all add-ons included."
996
  msgstr ""
997
 
998
- #: admin/includes/class-overview-widgets.php:719
999
- #: admin/includes/class-overview-widgets.php:735
1000
  msgid "Get full access"
1001
  msgstr ""
1002
 
1003
- #: admin/includes/class-overview-widgets.php:733
1004
  msgid "A one-time payment for four years of support and updates. The package saves you up to 70% compared to individually purchasing our add-ons."
1005
  msgstr ""
1006
 
1007
- #: admin/includes/class-overview-widgets.php:751
1008
  #: admin/views/conditions/ad-display-metabox.php:37
1009
  #: admin/views/conditions/ad-visitor-metabox.php:37
1010
  msgid "Visit the manual"
1011
  msgstr ""
1012
 
1013
- #: admin/includes/class-overview-widgets.php:754
1014
  #: classes/ad_group.php:623
1015
  msgid "Get this add-on"
1016
  msgstr ""
@@ -2404,11 +2404,11 @@ msgstr ""
2404
  msgid "All Access – with all available add-ons"
2405
  msgstr ""
2406
 
2407
- #: admin/views/upgrades/all-access.php:13
2408
  msgid "Risk free with 30-day Money-Back guarantee"
2409
  msgstr ""
2410
 
2411
- #: admin/views/upgrades/all-access.php:14
2412
  msgid "Get All Access"
2413
  msgstr ""
2414
 
@@ -2496,7 +2496,7 @@ msgstr ""
2496
  msgid "Lazy Loading"
2497
  msgstr ""
2498
 
2499
- #: admin/views/upgrades/pro-tab.php:13
2500
  #: admin/views/upgrades/tracking.php:10
2501
  msgid "See all features and pricing"
2502
  msgstr ""
@@ -2717,7 +2717,7 @@ msgid "Uses a simple placeholder ad for quick testing."
2717
  msgstr ""
2718
 
2719
  #: classes/ad_type_dummy.php:44
2720
- #: classes/ad_type_image.php:69
2721
  msgid "URL"
2722
  msgstr ""
2723
 
@@ -2737,28 +2737,24 @@ msgstr ""
2737
  msgid "Ads in various image formats."
2738
  msgstr ""
2739
 
2740
- #: classes/ad_type_image.php:50
2741
  msgid "Insert File"
2742
  msgstr ""
2743
 
2744
- #: classes/ad_type_image.php:52
2745
  msgid "Insert"
2746
  msgstr ""
2747
 
2748
- #: classes/ad_type_image.php:52
2749
- msgid "select image"
2750
- msgstr ""
2751
-
2752
- #: classes/ad_type_image.php:59
2753
- msgid "edit"
2754
  msgstr ""
2755
 
2756
- #: classes/ad_type_image.php:73
2757
  msgid "Link to target site including http(s)"
2758
  msgstr ""
2759
 
2760
  #. translators: $s is a size string like "728 x 90".
2761
- #: classes/ad_type_image.php:246
2762
  msgid "Original size: %s"
2763
  msgstr ""
2764
 
@@ -3270,26 +3266,26 @@ msgid "page impressions"
3270
  msgstr ""
3271
 
3272
  #: classes/visitor-conditions.php:276
3273
- msgid "referrer url"
3274
  msgstr ""
3275
 
3276
  #: classes/visitor-conditions.php:277
3277
- msgid "user agent"
3278
  msgstr ""
3279
 
3280
  #: classes/visitor-conditions.php:278
3281
- msgid "user can (capabilities)"
3282
  msgstr ""
3283
 
3284
  #: classes/visitor-conditions.php:279
3285
- msgid "user role"
3286
  msgstr ""
3287
 
3288
- #: classes/visitor-conditions.php:282
3289
- msgid "geo location"
3290
  msgstr ""
3291
 
3292
- #: classes/visitor-conditions.php:285
3293
  msgid "browser width"
3294
  msgstr ""
3295
 
2
  # This file is distributed under the GPL-2.0+.
3
  msgid ""
4
  msgstr ""
5
+ "Project-Id-Version: Advanced Ads 1.37.0\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/advanced-ads/\n"
7
  "Last-Translator: Thomas Maier <post@webzunft.de>\n"
8
  "Language-Team: webgilde <support@wpadvancedads.com>\n"
9
  "MIME-Version: 1.0\n"
10
  "Content-Type: text/plain; charset=UTF-8\n"
11
  "Content-Transfer-Encoding: 8bit\n"
12
+ "POT-Creation-Date: 2022-10-25T10:24:19+00:00\n"
13
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
14
  "X-Generator: WP-CLI 2.6.0\n"
15
  "X-Domain: advanced-ads\n"
34
 
35
  #: admin/class-advanced-ads-admin.php:224
36
  #: classes/display-conditions.php:317
37
+ #: classes/visitor-conditions.php:309
38
  #: modules/gadsense/admin/views/external-ads-links.php:17
39
  #: modules/gadsense/admin/views/external-ads-links.php:22
40
  #: modules/gadsense/admin/views/external-ads-links.php:29
43
 
44
  #: admin/class-advanced-ads-admin.php:225
45
  #: classes/display-conditions.php:317
46
+ #: classes/visitor-conditions.php:309
47
  msgid "and"
48
  msgstr ""
49
 
302
  msgid "Learn how."
303
  msgstr ""
304
 
305
+ #: admin/includes/class-ad-groups-list.php:185
306
  msgid "Ad weight"
307
  msgstr ""
308
 
309
  #. translators: %s is a date.
310
+ #: admin/includes/class-ad-groups-list.php:197
311
  #: admin/views/ad-list/timing.php:21
312
  msgid "starts %s"
313
  msgstr ""
314
 
315
  #. translators: %s is a date.
316
  #. translators: %s is a time and date string.
317
+ #: admin/includes/class-ad-groups-list.php:218
318
  #: admin/views/ad-list/timing.php:59
319
  msgid "expires %s"
320
  msgstr ""
321
 
322
  #. translators: %s is a date.
323
  #. translators: %s is a time and date string.
324
+ #: admin/includes/class-ad-groups-list.php:221
325
  #: admin/views/ad-list/timing.php:70
326
  msgid "<strong>expired</strong> %s"
327
  msgstr ""
328
 
329
  #. translators: %d is a number.
330
+ #: admin/includes/class-ad-groups-list.php:238
331
  msgid "show %d more ads"
332
  msgstr ""
333
 
334
+ #: admin/includes/class-ad-groups-list.php:243
335
  msgid "No ads assigned"
336
  msgstr ""
337
 
338
+ #: admin/includes/class-ad-groups-list.php:245
339
  msgid "Add some"
340
  msgstr ""
341
 
342
  #. translators: amount of ads displayed
343
+ #: admin/includes/class-ad-groups-list.php:273
344
  msgid "Up to %d ad displayed."
345
  msgid_plural "Up to %d ads displayed"
346
  msgstr[0] ""
347
  msgstr[1] ""
348
 
349
+ #: admin/includes/class-ad-groups-list.php:343
350
  msgid "Random ads"
351
  msgstr ""
352
 
353
+ #: admin/includes/class-ad-groups-list.php:344
354
  msgid "Display random ads based on ad weight"
355
  msgstr ""
356
 
357
+ #: admin/includes/class-ad-groups-list.php:347
358
  msgid "Ordered ads"
359
  msgstr ""
360
 
361
+ #: admin/includes/class-ad-groups-list.php:348
362
  msgid "Display ads with the highest ad weight first"
363
  msgstr ""
364
 
365
+ #: admin/includes/class-ad-groups-list.php:367
366
  #: admin/views/placements.php:273
367
  #: modules/import-export/classes/import.php:153
368
  #: modules/import-export/classes/import.php:193
371
  msgid "Edit"
372
  msgstr ""
373
 
374
+ #: admin/includes/class-ad-groups-list.php:368
375
  #: admin/views/placements.php:131
376
  msgid "show usage"
377
  msgstr ""
378
 
379
+ #: admin/includes/class-ad-groups-list.php:377
380
  #: admin/views/placements.php:10
381
  msgid "Delete"
382
  msgstr ""
383
 
384
+ #: admin/includes/class-ad-groups-list.php:399
385
+ #: admin/includes/class-ad-groups-list.php:469
386
  msgid "Invalid Ad Group"
387
  msgstr ""
388
 
389
+ #: admin/includes/class-ad-groups-list.php:404
390
+ #: admin/includes/class-ad-groups-list.php:474
391
  msgid "You don’t have permission to change the ad groups"
392
  msgstr ""
393
 
394
+ #: admin/includes/class-ad-groups-list.php:438
395
  msgid "No ad group created"
396
  msgstr ""
397
 
532
  msgstr ""
533
 
534
  #: admin/includes/class-admin-upgrades.php:108
535
+ #: admin/includes/class-overview-widgets.php:461
536
  msgid "A quick and error-free way of implementing ad units from your Google Ad Manager account."
537
  msgstr ""
538
 
612
  msgid "Download failed. <a href=\"%s\" target=\"_blank\">Click here to learn why</a>."
613
  msgstr ""
614
 
615
+ #: admin/includes/class-list-filters.php:163
616
  #: modules/gadsense/admin/views/adsense-ad-parameters.php:109
617
  #: modules/gadsense/includes/class-ad-type-adsense.php:49
618
  msgid "Responsive"
619
  msgstr ""
620
 
621
+ #: admin/includes/class-list-filters.php:561
622
  msgctxt "Post list header for expired ads."
623
  msgid "Expired"
624
  msgstr ""
625
 
626
+ #: admin/includes/class-list-filters.php:601
627
  msgctxt "Post list header for ads expiring in the future."
628
  msgid "Expiring"
629
  msgstr ""
630
 
631
+ #: admin/includes/class-list-filters.php:731
632
  msgid "Showing search results for"
633
  msgstr ""
634
 
909
  msgstr ""
910
 
911
  #: admin/includes/class-overview-widgets.php:430
912
+ #: admin/views/upgrades/pro-tab.php:9
913
  msgid "11 more display and visitor conditions"
914
  msgstr ""
915
 
916
  #: admin/includes/class-overview-widgets.php:431
917
+ #: admin/views/upgrades/pro-tab.php:10
918
  msgid "6 more placements"
919
  msgstr ""
920
 
921
  #: admin/includes/class-overview-widgets.php:432
922
+ #: admin/views/upgrades/pro-tab.php:11
923
  msgid "placement tests for ad optimization"
924
  msgstr ""
925
 
926
  #: admin/includes/class-overview-widgets.php:433
927
+ #: admin/views/upgrades/pro-tab.php:8
928
+ msgid "Geo Targeting"
929
+ msgstr ""
930
+
931
+ #: admin/includes/class-overview-widgets.php:434
932
+ #: admin/views/upgrades/pro-tab.php:12
933
  msgid "ad grids and many more advanced features"
934
  msgstr ""
935
 
936
+ #: admin/includes/class-overview-widgets.php:449
937
  msgid "Analyze clicks and impressions of your ads locally or in Google Analytics, share reports, and limit ads to a specific number of impressions or clicks."
938
  msgstr ""
939
 
940
+ #: admin/includes/class-overview-widgets.php:455
941
  msgid "Display ads based on the device or the size of your visitor’s browser, and control ads on AMP pages."
942
  msgstr ""
943
 
944
+ #: admin/includes/class-overview-widgets.php:467
945
  msgid "Increase click rates on your ads by placing them in sticky positions above, next or below your site."
946
  msgstr ""
947
 
948
+ #: admin/includes/class-overview-widgets.php:473
949
  msgid "Users will never miss an ad or other information in a PopUp. Choose when it shows up and for how long a user can close it."
950
  msgstr ""
951
 
952
+ #: admin/includes/class-overview-widgets.php:479
 
 
 
 
953
  msgid "Earn more money and let advertisers pay for ad space directly on the frontend of your site."
954
  msgstr ""
955
 
956
+ #: admin/includes/class-overview-widgets.php:485
957
  msgid "Create a beautiful and simple slider from your ads to show more information on less space."
958
  msgstr ""
959
 
960
+ #: admin/includes/class-overview-widgets.php:491
961
  msgid "Place AdSense In-feed ads between posts on homepage, category, and archive pages."
962
  msgstr ""
963
 
964
+ #: admin/includes/class-overview-widgets.php:494
965
+ #: admin/includes/class-overview-widgets.php:666
966
+ #: admin/includes/class-overview-widgets.php:682
967
  msgid "Install now"
968
  msgstr ""
969
 
970
+ #: admin/includes/class-overview-widgets.php:512
971
+ #: admin/includes/class-overview-widgets.php:530
972
+ #: admin/includes/class-overview-widgets.php:555
973
+ #: admin/includes/class-overview-widgets.php:573
974
+ #: admin/includes/class-overview-widgets.php:591
975
+ #: admin/includes/class-overview-widgets.php:609
976
+ #: admin/includes/class-overview-widgets.php:627
977
+ #: admin/includes/class-overview-widgets.php:645
 
978
  #: classes/ad_group.php:620
979
  msgid "Activate now"
980
  msgstr ""
981
 
982
+ #: admin/includes/class-overview-widgets.php:538
983
  msgid "Visit your ad statistics"
984
  msgstr ""
985
 
986
+ #: admin/includes/class-overview-widgets.php:662
987
  msgid "Use Genesis specific ad positions."
988
  msgstr ""
989
 
990
+ #: admin/includes/class-overview-widgets.php:678
991
  msgid "Manage ad positions with WPBakery Page Builder (formerly Visual Composer)."
992
  msgstr ""
993
 
994
+ #: admin/includes/class-overview-widgets.php:694
995
  msgid "Our best deal with all add-ons included."
996
  msgstr ""
997
 
998
+ #: admin/includes/class-overview-widgets.php:696
999
+ #: admin/includes/class-overview-widgets.php:712
1000
  msgid "Get full access"
1001
  msgstr ""
1002
 
1003
+ #: admin/includes/class-overview-widgets.php:710
1004
  msgid "A one-time payment for four years of support and updates. The package saves you up to 70% compared to individually purchasing our add-ons."
1005
  msgstr ""
1006
 
1007
+ #: admin/includes/class-overview-widgets.php:728
1008
  #: admin/views/conditions/ad-display-metabox.php:37
1009
  #: admin/views/conditions/ad-visitor-metabox.php:37
1010
  msgid "Visit the manual"
1011
  msgstr ""
1012
 
1013
+ #: admin/includes/class-overview-widgets.php:731
1014
  #: classes/ad_group.php:623
1015
  msgid "Get this add-on"
1016
  msgstr ""
2404
  msgid "All Access – with all available add-ons"
2405
  msgstr ""
2406
 
2407
+ #: admin/views/upgrades/all-access.php:12
2408
  msgid "Risk free with 30-day Money-Back guarantee"
2409
  msgstr ""
2410
 
2411
+ #: admin/views/upgrades/all-access.php:13
2412
  msgid "Get All Access"
2413
  msgstr ""
2414
 
2496
  msgid "Lazy Loading"
2497
  msgstr ""
2498
 
2499
+ #: admin/views/upgrades/pro-tab.php:14
2500
  #: admin/views/upgrades/tracking.php:10
2501
  msgid "See all features and pricing"
2502
  msgstr ""
2717
  msgstr ""
2718
 
2719
  #: classes/ad_type_dummy.php:44
2720
+ #: classes/ad_type_image.php:70
2721
  msgid "URL"
2722
  msgstr ""
2723
 
2737
  msgid "Ads in various image formats."
2738
  msgstr ""
2739
 
2740
+ #: classes/ad_type_image.php:52
2741
  msgid "Insert File"
2742
  msgstr ""
2743
 
2744
+ #: classes/ad_type_image.php:53
2745
  msgid "Insert"
2746
  msgstr ""
2747
 
2748
+ #: classes/ad_type_image.php:55
2749
+ msgid "Select image"
 
 
 
 
2750
  msgstr ""
2751
 
2752
+ #: classes/ad_type_image.php:74
2753
  msgid "Link to target site including http(s)"
2754
  msgstr ""
2755
 
2756
  #. translators: $s is a size string like "728 x 90".
2757
+ #: classes/ad_type_image.php:247
2758
  msgid "Original size: %s"
2759
  msgstr ""
2760
 
3266
  msgstr ""
3267
 
3268
  #: classes/visitor-conditions.php:276
3269
+ msgid "geo location"
3270
  msgstr ""
3271
 
3272
  #: classes/visitor-conditions.php:277
3273
+ msgid "referrer url"
3274
  msgstr ""
3275
 
3276
  #: classes/visitor-conditions.php:278
3277
+ msgid "user agent"
3278
  msgstr ""
3279
 
3280
  #: classes/visitor-conditions.php:279
3281
+ msgid "user can (capabilities)"
3282
  msgstr ""
3283
 
3284
+ #: classes/visitor-conditions.php:280
3285
+ msgid "user role"
3286
  msgstr ""
3287
 
3288
+ #: classes/visitor-conditions.php:283
3289
  msgid "browser width"
3290
  msgstr ""
3291
 
lib/autoload.php CHANGED
@@ -3,8 +3,21 @@
3
  // autoload.php @generated by Composer
4
 
5
  if (PHP_VERSION_ID < 50600) {
6
- echo 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL;
7
- exit(1);
 
 
 
 
 
 
 
 
 
 
 
 
 
8
  }
9
 
10
  require_once __DIR__ . '/composer/autoload_real.php';
3
  // autoload.php @generated by Composer
4
 
5
  if (PHP_VERSION_ID < 50600) {
6
+ if (!headers_sent()) {
7
+ header('HTTP/1.1 500 Internal Server Error');
8
+ }
9
+ $err = 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL;
10
+ if (!ini_get('display_errors')) {
11
+ if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') {
12
+ fwrite(STDERR, $err);
13
+ } elseif (!headers_sent()) {
14
+ echo $err;
15
+ }
16
+ }
17
+ trigger_error(
18
+ $err,
19
+ E_USER_ERROR
20
+ );
21
  }
22
 
23
  require_once __DIR__ . '/composer/autoload_real.php';
modules/gadsense/admin/assets/js/adsense.js CHANGED
@@ -483,13 +483,13 @@ class AdvancedAdsNetworkAdsense extends AdvancedAdsAdNetwork {
483
  */
484
  show_float_warnings( unit_type ) {
485
  const resize_type = jQuery( '#ad-resize-type' ).val();
486
- const position = jQuery( '#advanced-ad-output-position input[name="advanced_ad[output][position]"]:checked' ).val();
487
 
488
  if (
489
  ( ['link-responsive', 'matched-content', 'in-article', 'in-feed'].indexOf( unit_type ) !== - 1
490
  || ( unit_type === 'responsive' && resize_type !== 'manual' )
491
  )
492
- && ( position === 'left' || position === 'right' )
493
  ) {
494
  jQuery( '#ad-parameters-box-notices .advads-ad-notice-responsive-position' ).show();
495
  } else {
483
  */
484
  show_float_warnings( unit_type ) {
485
  const resize_type = jQuery( '#ad-resize-type' ).val();
486
+ const position = jQuery( 'input[name="advanced_ad[output][position]"]:checked' ).val();
487
 
488
  if (
489
  ( ['link-responsive', 'matched-content', 'in-article', 'in-feed'].indexOf( unit_type ) !== - 1
490
  || ( unit_type === 'responsive' && resize_type !== 'manual' )
491
  )
492
+ && ( position.startsWith( 'left' ) || position.startsWith( 'right' ) )
493
  ) {
494
  jQuery( '#ad-parameters-box-notices .advads-ad-notice-responsive-position' ).show();
495
  } else {
readme.txt CHANGED
@@ -4,7 +4,7 @@ Tags: ads, adsense, amp, ads.txt, ad rotations, ad blocker, amazon, banner, clic
4
  Requires at least: 4.9
5
  Tested up to: 6.0
6
  Requires PHP: 7.2
7
- Stable tag: 1.37.0
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
@@ -160,7 +160,6 @@ https://vimeo.com/577170591
160
  > * [Tracking](https://wpadvancedads.com/add-ons/tracking/?utm_source=wporg&utm_medium=link&utm_campaign=wp-add-ons) – track ad impressions and ad clicks with local methods or Google Analytics
161
  > * [Responsive Ads](https://wpadvancedads.com/add-ons/responsive-ads/?utm_source=wporg&utm_medium=link&utm_campaign=wp-add-ons) – target ads to specific browser sizes and create ads for AMP
162
  > * [Google Ad Manager Integration](https://wpadvancedads.com/add-ons/google-ad-manager/?utm_source=wporg&utm_medium=link&utm_campaign=wp-add-ons) – a quick and error-free way to load ad units from your Google Ad Manager (formerly Google DoubleClick for Publishers, DFP) account without touching any ad codes
163
- > * [Geo Targeting](https://wpadvancedads.com/add-ons/geo-targeting/?utm_source=wporg&utm_medium=link&utm_campaign=wp-add-ons) – display ads based on the geo location of the visitor
164
  > * [Sticky Ads](https://wpadvancedads.com/add-ons/sticky-ads/?utm_source=wporg&utm_medium=link&utm_campaign=wp-add-ons) – increase click rates with fixed, sticky, and anchor ads
165
  > * [Fixed Widget for WordPress](https://wordpress.org/plugins/q2w3-fixed-widget/) – turn sidebar widgets into performant fixed sticky ads
166
  > * [PopUp and Layer Ads](https://wpadvancedads.com/add-ons/popup-and-layer-ads/?utm_source=wporg&utm_medium=link&utm_campaign=wp-add-ons) – display ads and other content in layers, popups, and interstitials
@@ -337,6 +336,15 @@ Yes. You can use plenty of [hooks](https://wpadvancedads.com/codex/) to customiz
337
 
338
  == Changelog ==
339
 
 
 
 
 
 
 
 
 
 
340
  = 1.37.0 (October 11, 2022) =
341
 
342
  - Feature: bump minimum required PHP version to 7.2
4
  Requires at least: 4.9
5
  Tested up to: 6.0
6
  Requires PHP: 7.2
7
+ Stable tag: 1.37.1
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
160
  > * [Tracking](https://wpadvancedads.com/add-ons/tracking/?utm_source=wporg&utm_medium=link&utm_campaign=wp-add-ons) – track ad impressions and ad clicks with local methods or Google Analytics
161
  > * [Responsive Ads](https://wpadvancedads.com/add-ons/responsive-ads/?utm_source=wporg&utm_medium=link&utm_campaign=wp-add-ons) – target ads to specific browser sizes and create ads for AMP
162
  > * [Google Ad Manager Integration](https://wpadvancedads.com/add-ons/google-ad-manager/?utm_source=wporg&utm_medium=link&utm_campaign=wp-add-ons) – a quick and error-free way to load ad units from your Google Ad Manager (formerly Google DoubleClick for Publishers, DFP) account without touching any ad codes
 
163
  > * [Sticky Ads](https://wpadvancedads.com/add-ons/sticky-ads/?utm_source=wporg&utm_medium=link&utm_campaign=wp-add-ons) – increase click rates with fixed, sticky, and anchor ads
164
  > * [Fixed Widget for WordPress](https://wordpress.org/plugins/q2w3-fixed-widget/) – turn sidebar widgets into performant fixed sticky ads
165
  > * [PopUp and Layer Ads](https://wpadvancedads.com/add-ons/popup-and-layer-ads/?utm_source=wporg&utm_medium=link&utm_campaign=wp-add-ons) – display ads and other content in layers, popups, and interstitials
336
 
337
  == Changelog ==
338
 
339
+ = 1.37.1 (October 25, 2022) =
340
+
341
+ - Improvement: align the ad image preview in the Ad Parameters with other options
342
+ - Improvement: order ads on the groups page by weight first and then by ad title
343
+ - Fix: remove superfluous output above hints about cache-busting
344
+ - Fix: ensure "Expired" and "Expiring" view stay active, when posts list is filtered or searched
345
+ - Fix: allow saving an ad with an invalid user if the user was already the author of this ad
346
+ - Fix: show a notice if positioning is used with responsive AdSense ads
347
+
348
  = 1.37.0 (October 11, 2022) =
349
 
350
  - Feature: bump minimum required PHP version to 7.2