Advanced Ads - Version 1.6.15

Version Description

  • added overview widget for Geo Targeting add-on
  • added ad block disguise for plugin files
  • fixed missing wrapper id
  • fixed link to license page on multisites
  • fixed links on intro page
  • fixed rare license activation error
  • fixed license issue on multisites
  • under the hood: changes for ad select of ads and groups for auto cache-busting
Download this release

Release Info

Developer webzunft
Plugin Icon 128x128 Advanced Ads
Version 1.6.15
Comparing to
See all releases

Code changes from version 1.6.14 to 1.6.15

admin/assets/css/admin.css CHANGED
@@ -227,7 +227,9 @@ tr:hover .on-hover { display: block; }
227
  - GENERAL
228
  -*/
229
  .advads-error-message { color: red !important; }
 
230
  .advads-hidden { display: none; }
 
231
 
232
  /* Image Ad */
233
  #advads_type_image_wp_media .media-sidebar .setting:not([data-setting="title"]):not([data-setting="alt"]),
227
  - GENERAL
228
  -*/
229
  .advads-error-message { color: red !important; }
230
+ .advads-success-message { color: green !important; }
231
  .advads-hidden { display: none; }
232
+ .advads-loader { display: block; width: 43px; height: 11px; background: url(../img/loader.gif) no-repeat; }
233
 
234
  /* Image Ad */
235
  #advads_type_image_wp_media .media-sidebar .setting:not([data-setting="title"]):not([data-setting="alt"]),
admin/assets/img/loader.gif ADDED
Binary file
admin/assets/js/admin.js CHANGED
@@ -347,6 +347,36 @@ jQuery( document ).ready(function ($) {
347
  window.formfield = '';
348
 
349
  advads_ad_list_build_filters();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
350
  });
351
 
352
  /**
@@ -359,7 +389,7 @@ function advads_set_tab_hashes() {
359
  var id = jQuery( this ).attr( 'id' ).replace( '-tab', '' );
360
  var optiontab = jQuery( '#' + id );
361
 
362
- var form = optiontab.parent('form');
363
  if ( form.length ) {
364
  var currentUrl = form.attr( 'action' ).split( '#' )[ 0 ];
365
  form.attr( 'action', currentUrl + jQuery( this ).attr( 'href' ) );
347
  window.formfield = '';
348
 
349
  advads_ad_list_build_filters();
350
+
351
+ // adblocker related code
352
+ $( '#advanced-ads-use-adblocker' ).change( function() {
353
+ advads_toggle_box( this, '#advads-adblocker-wrapper' );
354
+ });
355
+ // processing of the rebuild asset form and the FTP/SSH credentials form
356
+ var $advads_adblocker_wrapper = $( '#advads-adblocker-wrapper' );
357
+ $advads_adblocker_wrapper.find( 'input[type="submit"]' ).prop( 'disabled', false );
358
+ $advads_adblocker_wrapper.on( 'submit', 'form', function( event ) {
359
+ var $that = $( this ), // form itself
360
+ data = $that.serializeArray();
361
+ data.push( { name: 'action', value: 'advads-adblock-rebuild-assets' } );
362
+
363
+ $that.prev( '.error' ).remove();
364
+ $that.find( 'input[type="submit"]' ).prop( 'disabled', true ).after( '<span class="spinner advads-spinner"></span>' );
365
+
366
+ $.ajax({
367
+ type: $that.attr( 'method' ),
368
+ url: ajaxurl,
369
+ action: 'advads-adblock-rebuild-assets',
370
+ data: data
371
+ }).done( function( data ) {
372
+ $advads_adblocker_wrapper.html( data );
373
+ }).fail( function( jqXHR, textStatus, errorThrown ) {
374
+ $that.before( '<div class="error"><p>' + textStatus + ': ' + errorThrown + '</p></div>' );
375
+ $that.find( 'input[type="submit"]' ).prop( 'disabled', false ).next( '.advads-spinner' ).remove();
376
+ });
377
+
378
+ event.preventDefault();
379
+ });
380
  });
381
 
382
  /**
389
  var id = jQuery( this ).attr( 'id' ).replace( '-tab', '' );
390
  var optiontab = jQuery( '#' + id );
391
 
392
+ var form = optiontab.children( '.advads-settings-tab-main-form' );
393
  if ( form.length ) {
394
  var currentUrl = form.attr( 'action' ).split( '#' )[ 0 ];
395
  form.attr( 'action', currentUrl + jQuery( this ).attr( 'href' ) );
admin/class-advanced-ads-admin.php CHANGED
@@ -1152,7 +1152,8 @@ class Advanced_Ads_Admin {
1152
  }
1153
 
1154
  echo '<input id="advanced-ads-editors-manage-ads" type="checkbox" ' . checked( $allow, true, false ) . ' name="'.ADVADS_SLUG.'[editors-manage-ads]" />';
1155
- echo '<p class="description">'. __( 'Allow editors to also manage and publish ads.', 'advanced-ads' ) .'</p>';
 
1156
 
1157
  }
1158
 
@@ -1199,12 +1200,14 @@ class Advanced_Ads_Admin {
1199
  $licenses = get_option( ADVADS_SLUG . '-licenses', array() );
1200
 
1201
  // merge existing with new license key to prevent accidental removal
1202
- if( is_array( $options ) ){
1203
- $options = array_merge( $licenses, $options );
 
 
1204
  } else {
1205
- $options = $licenses;
1206
  }
1207
-
1208
  return $options;
1209
  }
1210
 
@@ -1661,13 +1664,84 @@ class Advanced_Ads_Admin {
1661
  return 1;
1662
  }
1663
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1664
  /*
1665
  * add-on updater
1666
  *
1667
  * @since 1.5.7
1668
- *
1669
  */
1670
  public function add_on_updater(){
 
 
 
 
 
1671
 
1672
  /**
1673
  * list of registered add ons
@@ -1687,7 +1761,7 @@ class Advanced_Ads_Admin {
1687
  foreach( $add_ons as $_add_on_key => $_add_on ){
1688
 
1689
  // check if a license expired over time
1690
- $expiry_date = get_option($_add_on['options_slug'] . '-license-expires', false);
1691
  $now = time();
1692
  if( $expiry_date && strtotime( $expiry_date ) < $now ){
1693
  // remove license status
@@ -1696,7 +1770,7 @@ class Advanced_Ads_Admin {
1696
  }
1697
 
1698
  // check status
1699
- if( get_option($_add_on['options_slug'] . '-license-status', false) !== 'valid' ) {
1700
  continue;
1701
  }
1702
 
1152
  }
1153
 
1154
  echo '<input id="advanced-ads-editors-manage-ads" type="checkbox" ' . checked( $allow, true, false ) . ' name="'.ADVADS_SLUG.'[editors-manage-ads]" />';
1155
+ echo '<p class="description">'. __( 'Allow editors to also manage and publish ads.', 'advanced-ads' ) .
1156
+ ' ' . sprintf(__( 'You can assign different ad-related roles on a user basis with <a href="%s" target="_blank">Advanced Ads Pro</a>.', 'advanced-ads' ), ADVADS_URL . 'add-ons/advanced-ads-pro/') . '</p>';
1157
 
1158
  }
1159
 
1200
  $licenses = get_option( ADVADS_SLUG . '-licenses', array() );
1201
 
1202
  // merge existing with new license key to prevent accidental removal
1203
+ if( is_array( $options ) && is_array( $licenses ) ){
1204
+ return array_merge( $licenses, $options );
1205
+ } elseif( is_array( $options ) ){
1206
+ return $options;
1207
  } else {
1208
+ return $licenses;
1209
  }
1210
+
1211
  return $options;
1212
  }
1213
 
1664
  return 1;
1665
  }
1666
 
1667
+ /**
1668
+ * get license keys for all add-ons
1669
+ *
1670
+ * @since 1.6.15
1671
+ * @return arr $licenses licenses
1672
+ */
1673
+ public function get_licenses(){
1674
+
1675
+ $licenses = array();
1676
+
1677
+ if( is_multisite() ){
1678
+ // if multisite, get option from main blog
1679
+ $main_blog_id = defined( 'BLOG_ID_CURRENT_SITE' ) ? BLOG_ID_CURRENT_SITE : 1;
1680
+ $licenses = get_blog_option( $main_blog_id, ADVADS_SLUG . '-licenses', array() );
1681
+
1682
+ } else {
1683
+ $licenses = get_option( ADVADS_SLUG . '-licenses', array() );
1684
+ }
1685
+
1686
+ return $licenses;
1687
+ }
1688
+
1689
+ /**
1690
+ * get license status of an add-on
1691
+ *
1692
+ * @since 1.6.15
1693
+ * @param str $slug slug of the add-on
1694
+ * @return str $status license status, e.g. "valid" or "invalid"
1695
+ */
1696
+ public function get_license_status( $slug = '' ){
1697
+
1698
+ $status = false;
1699
+
1700
+ if( is_multisite() ){
1701
+ // if multisite, get option from main blog
1702
+ $main_blog_id = defined( 'BLOG_ID_CURRENT_SITE' ) ? BLOG_ID_CURRENT_SITE : 1;
1703
+ $status = get_blog_option( $main_blog_id, $slug . '-license-status', false);
1704
+ } else {
1705
+ $status = get_option( $slug . '-license-status', false);
1706
+ }
1707
+
1708
+ return $status;
1709
+ }
1710
+
1711
+ /**
1712
+ * get license expired value of an add-on
1713
+ *
1714
+ * @since 1.6.15
1715
+ * @param str $slug slug of the add-on
1716
+ * @return str $date expiry date of an add-on
1717
+ */
1718
+ public function get_license_expires( $slug = '' ){
1719
+
1720
+ $date = false;
1721
+
1722
+ if( is_multisite() ){
1723
+ // if multisite, get option from main blog
1724
+ $main_blog_id = defined( 'BLOG_ID_CURRENT_SITE' ) ? BLOG_ID_CURRENT_SITE : 1;
1725
+ $date = get_blog_option( $main_blog_id, $slug . '-license-expires', false);
1726
+ } else {
1727
+ $date = get_option( $slug . '-license-expires', false);
1728
+ }
1729
+
1730
+ return $date;
1731
+ }
1732
+
1733
+
1734
  /*
1735
  * add-on updater
1736
  *
1737
  * @since 1.5.7
 
1738
  */
1739
  public function add_on_updater(){
1740
+
1741
+ // ignore, if not main blog
1742
+ if( is_multisite() && ! is_main_site() ){
1743
+ return;
1744
+ }
1745
 
1746
  /**
1747
  * list of registered add ons
1761
  foreach( $add_ons as $_add_on_key => $_add_on ){
1762
 
1763
  // check if a license expired over time
1764
+ $expiry_date = $this->get_license_expires( $_add_on['options_slug'] );
1765
  $now = time();
1766
  if( $expiry_date && strtotime( $expiry_date ) < $now ){
1767
  // remove license status
1770
  }
1771
 
1772
  // check status
1773
+ if( $this->get_license_status( $_add_on['options_slug'] ) !== 'valid' ) {
1774
  continue;
1775
  }
1776
 
admin/includes/class-overview-widgets.php CHANGED
@@ -56,6 +56,8 @@ class Advanced_Ads_Overview_Widgets_Callbacks {
56
  array('Advanced_Ads_Overview_Widgets_Callbacks', 'render_add_on_tracking'), $screen->id, 'side', 'high');
57
  add_meta_box('advads_overview_addon_responsive', __( 'Responsive and Mobile ads', 'advanced-ads' ),
58
  array('Advanced_Ads_Overview_Widgets_Callbacks', 'render_add_on_responsive'), $screen->id, 'side', 'high');
 
 
59
  add_meta_box('advads_overview_addon_sticky', __( 'Sticky ads', 'advanced-ads' ),
60
  array('Advanced_Ads_Overview_Widgets_Callbacks', 'render_add_on_sticky'), $screen->id, 'side', 'high');
61
  add_meta_box('advads_overview_addon_layer', __( 'PopUps and Layers', 'advanced-ads' ),
@@ -202,6 +204,16 @@ foreach ( $next_steps as $_step ){
202
  </ul><p><a class="button button-primary" href="<?php echo ADVADS_URL; ?>add-ons/responsive-ads/" target="_blank"><?php
203
  _e( 'Get the Responsive add-on', 'advanced-ads' ); ?></a></p><?php
204
  }
 
 
 
 
 
 
 
 
 
 
205
 
206
  /**
207
  * sticky add-on widget
56
  array('Advanced_Ads_Overview_Widgets_Callbacks', 'render_add_on_tracking'), $screen->id, 'side', 'high');
57
  add_meta_box('advads_overview_addon_responsive', __( 'Responsive and Mobile ads', 'advanced-ads' ),
58
  array('Advanced_Ads_Overview_Widgets_Callbacks', 'render_add_on_responsive'), $screen->id, 'side', 'high');
59
+ add_meta_box('advads_overview_addon_geotargeting', __( 'Geo Targeting', 'advanced-ads' ),
60
+ array('Advanced_Ads_Overview_Widgets_Callbacks', 'render_add_on_geotargeting'), $screen->id, 'side', 'high');
61
  add_meta_box('advads_overview_addon_sticky', __( 'Sticky ads', 'advanced-ads' ),
62
  array('Advanced_Ads_Overview_Widgets_Callbacks', 'render_add_on_sticky'), $screen->id, 'side', 'high');
63
  add_meta_box('advads_overview_addon_layer', __( 'PopUps and Layers', 'advanced-ads' ),
204
  </ul><p><a class="button button-primary" href="<?php echo ADVADS_URL; ?>add-ons/responsive-ads/" target="_blank"><?php
205
  _e( 'Get the Responsive add-on', 'advanced-ads' ); ?></a></p><?php
206
  }
207
+
208
+ /**
209
+ * geo targeting add-on widget
210
+ */
211
+ public static function render_add_on_geotargeting(){
212
+
213
+ ?><p><?php _e( 'Target visitors by their geo location.', 'advanced-ads' ); ?></p><ul class='list'>
214
+ </ul><p><a class="button button-primary" href="<?php echo ADVADS_URL; ?>add-ons/geo-targeting/" target="_blank"><?php
215
+ _e( 'Get the Geo Targeting add-on', 'advanced-ads' ); ?></a></p><?php
216
+ }
217
 
218
  /**
219
  * sticky add-on widget
admin/includes/notices.php CHANGED
@@ -49,7 +49,7 @@ $advanced_ads_admin_notices = array(
49
  // missing license codes
50
  'license_invalid' => array(
51
  'type' => 'plugin_error',
52
- 'text' => sprintf( __( 'One or more license keys for <strong>Advanced Ads add-ons are invalid or missing</strong>. Please add valid license keys <a href="%s">here</a>.', 'advanced-ads' ), admin_url( 'admin.php?page=advanced-ads-settings#top#licenses' ) )
53
  ),
54
  // license expires
55
  'license_expires' => array(
49
  // missing license codes
50
  'license_invalid' => array(
51
  'type' => 'plugin_error',
52
+ 'text' => __( 'One or more license keys for <strong>Advanced Ads add-ons are invalid or missing</strong>.', 'advanced-ads' ) . ' ' . sprintf( __( 'Please add valid license keys <a href="%s">here</a>.', 'advanced-ads' ), get_admin_url( 1, 'admin.php?page=advanced-ads-settings#top#licenses' ) )
53
  ),
54
  // license expires
55
  'license_expires' => array(
admin/views/intro.php CHANGED
@@ -76,7 +76,7 @@ $minor_features = array(
76
  </div>
77
  <div class="col">
78
  <h3>2. <?php _e( 'Create your first ad', 'advanced-ads' ); ?></h3>
79
- <p><?php printf(__( 'Get started by creating an ad <a href="$1%s" target="blank">right now</a> or watch the <a href="$2%s" target="blank">tutorial video (3:29min)</a> first.', 'advanced-ads' ), admin_url( 'post-new.php?post_type=' . Advanced_Ads::POST_TYPE_SLUG ), ADVADS_URL . 'manual/first-ad/' ); ?></p>
80
  </div>
81
  <div class="col">
82
  <h3>3. <?php _e( 'Display your ad', 'advanced-ads' ); ?></h3>
76
  </div>
77
  <div class="col">
78
  <h3>2. <?php _e( 'Create your first ad', 'advanced-ads' ); ?></h3>
79
+ <p><?php printf(__( 'Get started by creating an ad <a href="%1$s" target="blank">right now</a> or watch the <a href="%2$s" target="blank">tutorial video (3:29min)</a> first.', 'advanced-ads' ), admin_url( 'post-new.php?post_type=' . Advanced_Ads::POST_TYPE_SLUG ), ADVADS_URL . 'manual/first-ad/' ); ?></p>
80
  </div>
81
  <div class="col">
82
  <h3>3. <?php _e( 'Display your ad', 'advanced-ads' ); ?></h3>
admin/views/setting-license.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
  $errortext = false;
3
- $expires = get_option( $options_slug . '-license-expires', 0 );
4
  $expired = false;
5
  if( $expires ){
6
  $expires_time = strtotime( $expires );
1
  <?php
2
  $errortext = false;
3
+ $expires = Advanced_Ads_Admin::get_instance()->get_license_expires( $options_slug );
4
  $expired = false;
5
  if( $expires ){
6
  $expires_time = strtotime( $expires );
admin/views/settings.php CHANGED
@@ -13,35 +13,39 @@ $setting_tabs = apply_filters('advanced-ads-setting-tabs', array(
13
  )
14
  ));
15
  ?><div class="wrap">
16
- <?php screen_icon(); ?>
17
- <h1><?php echo esc_html( get_admin_page_title() ); ?></h1>
18
- <?php settings_errors(); ?>
19
- <h2 class="nav-tab-wrapper" id="advads-tabs">
20
- <?php foreach ( $setting_tabs as $_setting_tab_id => $_setting_tab ) : ?>
21
- <a class="nav-tab" id="<?php echo $_setting_tab_id; ?>-tab"
22
- href="#top#<?php echo $_setting_tab_id; ?>"><?php echo $_setting_tab['title']; ?></a>
23
- <?php endforeach; ?>
24
- </h2>
25
- <?php foreach ( $setting_tabs as $_setting_tab_id => $_setting_tab ) : ?>
26
- <form method="post" action="options.php">
27
- <div id="<?php echo $_setting_tab_id; ?>" class="advads-tab"><?php
28
- if ( isset( $_setting_tab['group'] ) ) {
29
- settings_fields( $_setting_tab['group'] );
30
- }
31
- do_settings_sections( $_setting_tab['page'] );
 
32
 
33
- do_action( 'advanced-ads-settings-form', $_setting_tab_id, $_setting_tab );
34
- submit_button( __( 'Save settings on this page', 'advanced-ads' ) );
35
- ?></div></form>
36
- <?php endforeach; ?>
37
- <?php
 
 
 
38
  do_action( 'advanced-ads-additional-settings-form' );
39
  ?>
40
- <ul>
41
- <li><a href="/wp-admin/admin.php?page=advanced-ads-debug"><?php _e( 'Debug Page', 'advanced-ads' ); ?></a></li>
42
- <li><a href="/wp-admin/admin.php?page=advanced-ads-intro"><?php _e( 'Welcome Page', 'advanced-ads' ); ?></a></li>
43
- <li><a href="http://wordpress.org/plugins/advanced-ads/" title="<?php _e( 'Advanced Ads on WordPress.org', 'advanced-ads' ); ?>"><?php _e( 'Advanced Ads on wp.org', 'advanced-ads' ); ?></a></li>
44
- <li><a href="http://webgilde.com" title="<?php _e( 'the company behind Advanced Ads', 'advanced-ads' ); ?>"><?php echo 'webgilde GmbH'; ?></a></li>
45
- </ul>
46
 
47
  </div>
13
  )
14
  ));
15
  ?><div class="wrap">
16
+ <?php screen_icon(); ?>
17
+ <h1><?php echo esc_html( get_admin_page_title() ); ?></h1>
18
+ <?php settings_errors(); ?>
19
+ <h2 class="nav-tab-wrapper" id="advads-tabs">
20
+ <?php foreach ( $setting_tabs as $_setting_tab_id => $_setting_tab ) : ?>
21
+ <a class="nav-tab" id="<?php echo $_setting_tab_id; ?>-tab"
22
+ href="#top#<?php echo $_setting_tab_id; ?>"><?php echo $_setting_tab['title']; ?></a>
23
+ <?php endforeach; ?>
24
+ </h2>
25
+ <?php foreach ( $setting_tabs as $_setting_tab_id => $_setting_tab ) : ?>
26
+ <div id="<?php echo $_setting_tab_id; ?>" class="advads-tab">
27
+ <form class="advads-settings-tab-main-form" method="post" action="options.php">
28
+ <?php
29
+ if ( isset( $_setting_tab['group'] ) ) {
30
+ settings_fields( $_setting_tab['group'] );
31
+ }
32
+ do_settings_sections( $_setting_tab['page'] );
33
 
34
+ do_action( 'advanced-ads-settings-form', $_setting_tab_id, $_setting_tab );
35
+ submit_button( __( 'Save settings on this page', 'advanced-ads' ) );
36
+ ?>
37
+ </form>
38
+ <?php do_action( 'advanced-ads-settings-tab-after-form', $_setting_tab_id, $_setting_tab ); ?>
39
+ </div>
40
+ <?php endforeach; ?>
41
+ <?php
42
  do_action( 'advanced-ads-additional-settings-form' );
43
  ?>
44
+ <ul>
45
+ <li><a href="/wp-admin/admin.php?page=advanced-ads-debug"><?php _e( 'Debug Page', 'advanced-ads' ); ?></a></li>
46
+ <li><a href="/wp-admin/admin.php?page=advanced-ads-intro"><?php _e( 'Welcome Page', 'advanced-ads' ); ?></a></li>
47
+ <li><a href="http://wordpress.org/plugins/advanced-ads/" title="<?php _e( 'Advanced Ads on WordPress.org', 'advanced-ads' ); ?>"><?php _e( 'Advanced Ads on wp.org', 'advanced-ads' ); ?></a></li>
48
+ <li><a href="http://webgilde.com" title="<?php _e( 'the company behind Advanced Ads', 'advanced-ads' ); ?>"><?php echo 'webgilde GmbH'; ?></a></li>
49
+ </ul>
50
 
51
  </div>
admin/views/support.php CHANGED
@@ -16,7 +16,7 @@
16
  </form>
17
 
18
  <h2><?php _e( 'Possible Issues', 'advanced-ads' ); ?></h2>
19
- <p><?php _e( 'Please fix the issues below or try to understand their consequences before contacting support.', 'advanced-ads' ); ?></p>
20
 
21
  <?php $messages = array();
22
  if( ! Advanced_Ads_Checks::php_version_minimum() ) :
@@ -49,6 +49,8 @@
49
  }
50
  Advanced_Ads_Checks::jquery_ui_conflict();
51
 
 
 
52
  if( count( $messages )) :
53
  foreach( $messages as $_message ) :
54
  ?><div class="message error"><p><?php echo $_message; ?></p></div><?php
16
  </form>
17
 
18
  <h2><?php _e( 'Possible Issues', 'advanced-ads' ); ?></h2>
19
+ <p><?php _e( 'Please fix the red highlighted issues on this page or try to understand their consequences before contacting support.', 'advanced-ads' ); ?></p>
20
 
21
  <?php $messages = array();
22
  if( ! Advanced_Ads_Checks::php_version_minimum() ) :
49
  }
50
  Advanced_Ads_Checks::jquery_ui_conflict();
51
 
52
+ $messages = apply_filters( 'advanced-ads-support-messages', $messages );
53
+
54
  if( count( $messages )) :
55
  foreach( $messages as $_message ) :
56
  ?><div class="message error"><p><?php echo $_message; ?></p></div><?php
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.6.14
16
  * Author: Thomas Maier
17
  * Author URI: http://webgilde.com
18
  * Text Domain: advanced-ads
@@ -38,7 +38,7 @@ define( 'ADVADS_BASE_DIR', dirname( plugin_basename( __FILE__ ) ) ); // director
38
  // general and global slug, e.g. to store options in WP, textdomain
39
  define( 'ADVADS_SLUG', 'advanced-ads' );
40
  define( 'ADVADS_URL', 'https://wpadvancedads.com/' );
41
- define( 'ADVADS_VERSION', '1.6.14' );
42
 
43
  /*----------------------------------------------------------------------------*
44
  * Autoloading, modules and functions
12
  * Plugin Name: Advanced Ads
13
  * Plugin URI: https://wpadvancedads.com
14
  * Description: Manage and optimize your ads in WordPress
15
+ * Version: 1.6.15
16
  * Author: Thomas Maier
17
  * Author URI: http://webgilde.com
18
  * Text Domain: advanced-ads
38
  // general and global slug, e.g. to store options in WP, textdomain
39
  define( 'ADVADS_SLUG', 'advanced-ads' );
40
  define( 'ADVADS_URL', 'https://wpadvancedads.com/' );
41
+ define( 'ADVADS_VERSION', '1.6.15' );
42
 
43
  /*----------------------------------------------------------------------------*
44
  * Autoloading, modules and functions
classes/ad-select.php CHANGED
@@ -110,6 +110,10 @@ class Advanced_Ads_Select {
110
  // get ad
111
  $ad = new Advanced_Ads_Ad( (int) $args['id'], $args );
112
 
 
 
 
 
113
  // check conditions
114
  if ( $ad->can_display() ) {
115
  return $ad->output();
@@ -128,7 +132,13 @@ class Advanced_Ads_Select {
128
  // get ad
129
  $id = (int) $args['id'];
130
  $adgroup = new Advanced_Ads_Group( $id, $args );
131
- return $adgroup->output();
 
 
 
 
 
 
132
  }
133
 
134
  // internal
110
  // get ad
111
  $ad = new Advanced_Ads_Ad( (int) $args['id'], $args );
112
 
113
+ if ( $override = apply_filters( 'advanced-ads-ad-select-override-by-ad', '', $ad, $args ) ) {
114
+ return $override;
115
+ }
116
+
117
  // check conditions
118
  if ( $ad->can_display() ) {
119
  return $ad->output();
132
  // get ad
133
  $id = (int) $args['id'];
134
  $adgroup = new Advanced_Ads_Group( $id, $args );
135
+ $ordered_ad_ids = $adgroup->get_ordered_ad_ids();
136
+
137
+ if ( $override = apply_filters( 'advanced-ads-ad-select-override-by-group', '', $adgroup, $ordered_ad_ids, $args ) ) {
138
+ return $override;
139
+ }
140
+
141
+ return $adgroup->output( $ordered_ad_ids );
142
  }
143
 
144
  // internal
classes/ad.php CHANGED
@@ -641,9 +641,9 @@ class Advanced_Ads_Ad {
641
 
642
  // create unique id if not yet given
643
  if ( empty($wrapper_options['id']) ){
644
- $wrapper_options['id'] = $this->create_wrapper_id();
645
  }
646
-
647
  // build the box
648
  $wrapper = '<div';
649
  foreach ( $wrapper_options as $_html_attr => $_values ){
641
 
642
  // create unique id if not yet given
643
  if ( empty($wrapper_options['id']) ){
644
+ $this->wrapper['id'] = $wrapper_options['id'] = $this->create_wrapper_id();
645
  }
646
+
647
  // build the box
648
  $wrapper = '<div';
649
  foreach ( $wrapper_options as $_html_attr => $_values ){
classes/ad_ajax_callbacks.php CHANGED
@@ -24,11 +24,13 @@ class Advanced_Ads_Ad_Ajax_Callbacks {
24
  add_action( 'wp_ajax_load_content_editor', array( $this, 'load_content_editor' ) );
25
  add_action( 'wp_ajax_load_ad_parameters_metabox', array( $this, 'load_ad_parameters_metabox' ) );
26
  add_action( 'wp_ajax_load_visitor_conditions_metabox', array( $this, 'load_visitor_condition' ) );
27
- add_action( 'wp_ajax_advads-terms-search', array( $this, 'search_terms' ) );
28
- add_action( 'wp_ajax_advads-close-notice', array( $this, 'close_notice' ) );
29
- add_action( 'wp_ajax_advads-subscribe-notice', array( $this, 'subscribe' ) );
30
- add_action( 'wp_ajax_advads-activate-license', array( $this, 'activate_license' ) );
31
- add_action( 'wp_ajax_advads-deactivate-license', array( $this, 'deactivate_license' ) );
 
 
32
  }
33
 
34
  /**
@@ -180,4 +182,14 @@ class Advanced_Ads_Ad_Ajax_Callbacks {
180
 
181
  die();
182
  }
 
 
 
 
 
 
 
 
 
 
183
  }
24
  add_action( 'wp_ajax_load_content_editor', array( $this, 'load_content_editor' ) );
25
  add_action( 'wp_ajax_load_ad_parameters_metabox', array( $this, 'load_ad_parameters_metabox' ) );
26
  add_action( 'wp_ajax_load_visitor_conditions_metabox', array( $this, 'load_visitor_condition' ) );
27
+ add_action( 'wp_ajax_advads-terms-search', array( $this, 'search_terms' ) );
28
+ add_action( 'wp_ajax_advads-close-notice', array( $this, 'close_notice' ) );
29
+ add_action( 'wp_ajax_advads-subscribe-notice', array( $this, 'subscribe' ) );
30
+ add_action( 'wp_ajax_advads-activate-license', array( $this, 'activate_license' ) );
31
+ add_action( 'wp_ajax_advads-deactivate-license', array( $this, 'deactivate_license' ) );
32
+ add_action( 'wp_ajax_advads-adblock-rebuild-assets', array( $this, 'adblock_rebuild_assets' ) );
33
+
34
  }
35
 
36
  /**
182
 
183
  die();
184
  }
185
+
186
+ /**
187
+ * rebuild assets for ad-blocker module
188
+ *
189
+ */
190
+ public function adblock_rebuild_assets(){
191
+ Advanced_Ads_Ad_Blocker_Admin::get_instance()->add_asset_rebuild_form();
192
+ exit();
193
+ }
194
+
195
  }
classes/ad_group.php CHANGED
@@ -159,10 +159,52 @@ class Advanced_Ads_Group {
159
  * control the output of the group by type and amount of ads
160
  *
161
  * @since 1.4.8
 
162
  * @return str $output output of ad(s) by ad
163
  */
164
- public function output(){
 
 
 
 
 
165
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
166
  if ( ! $this->id ) {
167
  return;
168
  }
@@ -202,37 +244,8 @@ class Advanced_Ads_Group {
202
  $ordered_ad_ids = $this->shuffle_ads($ads, $weights);
203
  }
204
 
205
- $ordered_ad_ids = apply_filters( 'advanced-ads-group-output-ad-ids', $ordered_ad_ids, $this->type, $ads, $weights );
206
-
207
- // load the ad output
208
- $output = array();
209
- $ads_displayed = 0;
210
- $ad_count = apply_filters( 'advanced-ads-group-ad-count', $this->ad_count, $this );
211
-
212
- $ad_select = Advanced_Ads_Select::get_instance();
213
- foreach ( $ordered_ad_ids as $_ad_id ) {
214
- // load the ad object
215
- $ad = $ad_select->get_ad_by_method( $_ad_id, Advanced_Ads_Select::AD, $this->ad_args );
216
- if ( $ad !== null ) {
217
- $output[] = $ad;
218
- $ads_displayed++;
219
- // break the loop when maximum ads are reached
220
- if( $ads_displayed === $ad_count ) {
221
- break;
222
- }
223
- }
224
- }
225
-
226
- // add the group to the global output array
227
- $advads = Advanced_Ads::get_instance();
228
- $advads->current_ads[] = array('type' => 'group', 'id' => $this->id, 'title' => $this->name);
229
-
230
- // filter grouped ads output
231
- $output_string = implode( '', apply_filters( 'advanced-ads-group-output-array', $output, $this ) );
232
-
233
- // filter final group output
234
- return apply_filters( 'advanced-ads-group-output', $output_string, $this );
235
- }
236
 
237
  /**
238
  * return all ads from this group
159
  * control the output of the group by type and amount of ads
160
  *
161
  * @since 1.4.8
162
+ * @param array/null ordered_ad_ids ordered ids of the ads that belong to the group
163
  * @return str $output output of ad(s) by ad
164
  */
165
+ public function output( $ordered_ad_ids = false ) {
166
+ // if $ordered_ad_ids was not passed to the function, load it
167
+ $ordered_ad_ids = ( $ordered_ad_ids === false ) ? $this->get_ordered_ad_ids() : $ordered_ad_ids;
168
+ if ( $ordered_ad_ids === null ) {
169
+ return;
170
+ }
171
 
172
+ // load the ad output
173
+ $output = array();
174
+ $ads_displayed = 0;
175
+ $ad_count = apply_filters( 'advanced-ads-group-ad-count', $this->ad_count, $this );
176
+
177
+ $ad_select = Advanced_Ads_Select::get_instance();
178
+ foreach ( $ordered_ad_ids as $_ad_id ) {
179
+ // load the ad object
180
+ $ad = $ad_select->get_ad_by_method( $_ad_id, Advanced_Ads_Select::AD, $this->ad_args );
181
+ if ( $ad !== null ) {
182
+ $output[] = $ad;
183
+ $ads_displayed++;
184
+ // break the loop when maximum ads are reached
185
+ if( $ads_displayed === $ad_count ) {
186
+ break;
187
+ }
188
+ }
189
+ }
190
+
191
+ // add the group to the global output array
192
+ $advads = Advanced_Ads::get_instance();
193
+ $advads->current_ads[] = array('type' => 'group', 'id' => $this->id, 'title' => $this->name);
194
+
195
+ // filter grouped ads output
196
+ $output_string = implode( '', apply_filters( 'advanced-ads-group-output-array', $output, $this ) );
197
+
198
+ // filter final group output
199
+ return apply_filters( 'advanced-ads-group-output', $output_string, $this );
200
+ }
201
+
202
+ /**
203
+ * get ordered ids of the ads that belong to the group
204
+ *
205
+ * @return array/null ordered ad ads that belong to the group
206
+ */
207
+ public function get_ordered_ad_ids() {
208
  if ( ! $this->id ) {
209
  return;
210
  }
244
  $ordered_ad_ids = $this->shuffle_ads($ads, $weights);
245
  }
246
 
247
+ return apply_filters( 'advanced-ads-group-output-ad-ids', $ordered_ad_ids, $this->type, $ads, $weights );
248
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
249
 
250
  /**
251
  * return all ads from this group
classes/ad_placements.php CHANGED
@@ -342,6 +342,9 @@ class Advanced_Ads_Placements {
342
  $tag = isset($options['tag']) ? $options['tag'] : 'p';
343
  $tag = preg_replace('/[^a-z0-9]/i', '', $tag); // simplify tag
344
 
 
 
 
345
  // only has before and after
346
  $before = isset($options['position']) && $options['position'] === 'before';
347
  $paragraph_id = isset($options['index']) ? $options['index'] : 1;
342
  $tag = isset($options['tag']) ? $options['tag'] : 'p';
343
  $tag = preg_replace('/[^a-z0-9]/i', '', $tag); // simplify tag
344
 
345
+ // allow more complex xPath expression
346
+ $tag = apply_filters( 'advanced-ads-placement-content-injection-xpath', $tag, $options );
347
+
348
  // only has before and after
349
  $before = isset($options['position']) && $options['position'] === 'before';
350
  $paragraph_id = isset($options['index']) ? $options['index'] : 1;
classes/ad_type_image.php CHANGED
@@ -64,6 +64,7 @@ class Advanced_Ads_Ad_Type_Image extends Advanced_Ads_Ad_Type_Abstract{
64
  if( ! defined( 'AAT_VERSION' )) : ?>
65
  <p><label for="advads-url"><?php _e( 'url', ADVADS_SLUG ); ?></label><br/>
66
  <input type="url" name="advanced_ad[url]" id="advads-url" value="<?php echo $url; ?>"/></p>
 
67
  <?php endif;
68
  }
69
 
64
  if( ! defined( 'AAT_VERSION' )) : ?>
65
  <p><label for="advads-url"><?php _e( 'url', ADVADS_SLUG ); ?></label><br/>
66
  <input type="url" name="advanced_ad[url]" id="advads-url" value="<?php echo $url; ?>"/></p>
67
+ <p><?php printf(__( 'Pro: Open this url in a new window and track impressions and clicks with the <a href="%s" target="_blank">Tracking add-on</a>', ADVADS_SLUG ), ADVADS_URL . 'add-ons/tracking'); ?></p>
68
  <?php endif;
69
  }
70
 
classes/checks.php CHANGED
@@ -83,21 +83,21 @@ class Advanced_Ads_Checks {
83
  public static function licenses_invalid(){
84
 
85
  $add_ons = apply_filters( 'advanced-ads-add-ons', array() );
86
-
87
  if( $add_ons === array() ) {
88
  return false;
89
  }
90
 
91
  foreach( $add_ons as $_add_on_key => $_add_on ){
92
- $status = get_option($_add_on['options_slug'] . '-license-status', false);
93
-
94
  // don’t check if license is valid
95
  if( $status === 'valid' ) {
96
  continue;
97
  }
98
 
99
  // retrieve our license key from the DB
100
- $licenses = get_option(ADVADS_SLUG . '-licenses', array());
101
 
102
  $license_key = isset($licenses[$_add_on_key]) ? $licenses[$_add_on_key] : false;
103
 
@@ -128,11 +128,11 @@ class Advanced_Ads_Checks {
128
 
129
  foreach( $add_ons as $_add_on_key => $_add_on ){
130
  // don’t display error for invalid licenses
131
- if( get_option($_add_on['options_slug'] . '-license-status', false) === 'invalid' ) {
132
  continue;
133
  }
134
 
135
- $expiry_date = get_option($_add_on['options_slug'] . '-license-expires', false);
136
 
137
  if( $expiry_date ){
138
  $expiry_date_t = strtotime( $expiry_date );
@@ -167,11 +167,11 @@ class Advanced_Ads_Checks {
167
 
168
  foreach( $add_ons as $_add_on_key => $_add_on ){
169
  // don’t display error for invalid licenses
170
- if( get_option($_add_on['options_slug'] . '-license-status', false) === 'invalid' ) {
171
  continue;
172
  }
173
 
174
- $expiry_date = get_option($_add_on['options_slug'] . '-license-expires', false);
175
 
176
  if( $expiry_date && strtotime( $expiry_date ) < $now ){
177
  return true;
83
  public static function licenses_invalid(){
84
 
85
  $add_ons = apply_filters( 'advanced-ads-add-ons', array() );
86
+
87
  if( $add_ons === array() ) {
88
  return false;
89
  }
90
 
91
  foreach( $add_ons as $_add_on_key => $_add_on ){
92
+ $status = Advanced_Ads_Admin::get_instance()->get_license_status( $_add_on['options_slug'] );
93
+
94
  // don’t check if license is valid
95
  if( $status === 'valid' ) {
96
  continue;
97
  }
98
 
99
  // retrieve our license key from the DB
100
+ $licenses = Advanced_Ads_Admin::get_instance()->get_licenses();
101
 
102
  $license_key = isset($licenses[$_add_on_key]) ? $licenses[$_add_on_key] : false;
103
 
128
 
129
  foreach( $add_ons as $_add_on_key => $_add_on ){
130
  // don’t display error for invalid licenses
131
+ if( Advanced_Ads_Admin::get_instance()->get_license_status( $_add_on['options_slug'] ) === 'invalid' ) {
132
  continue;
133
  }
134
 
135
+ $expiry_date = Advanced_Ads_Admin::get_instance()->get_license_expires( $_add_on['options_slug'] );
136
 
137
  if( $expiry_date ){
138
  $expiry_date_t = strtotime( $expiry_date );
167
 
168
  foreach( $add_ons as $_add_on_key => $_add_on ){
169
  // don’t display error for invalid licenses
170
+ if( Advanced_Ads_Admin::get_instance()->get_license_status( $_add_on['options_slug'] ) === 'invalid' ) {
171
  continue;
172
  }
173
 
174
+ $expiry_date = Advanced_Ads_Admin::get_instance()->get_license_expires( $_add_on['options_slug'] );
175
 
176
  if( $expiry_date && strtotime( $expiry_date ) < $now ){
177
  return true;
classes/visitor-conditions.php CHANGED
@@ -31,7 +31,7 @@ class Advanced_Ads_Visitor_Conditions {
31
  'mobile' => array( // type of the condition
32
  'label' => __( 'mobile device', 'advanced-ads' ),
33
  'description' => __( 'Display ads only on mobile devices or hide them.', 'advanced-ads' ),
34
- 'metabox' => array( 'Advanced_Ads_Visitor_Conditions', 'metabox_is_or_not' ), // callback to generate the metabox
35
  'check' => array( 'Advanced_Ads_Visitor_Conditions', 'check_mobile' ) // callback for frontend check
36
  ),
37
  'loggedin' => array(
@@ -58,6 +58,21 @@ class Advanced_Ads_Visitor_Conditions {
58
  return self::$instance;
59
  }
60
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
61
  /**
62
  * callback to display the "is not" condition
63
  *
31
  'mobile' => array( // type of the condition
32
  'label' => __( 'mobile device', 'advanced-ads' ),
33
  'description' => __( 'Display ads only on mobile devices or hide them.', 'advanced-ads' ),
34
+ 'metabox' => array( 'Advanced_Ads_Visitor_Conditions', 'mobile_is_or_not' ), // callback to generate the metabox
35
  'check' => array( 'Advanced_Ads_Visitor_Conditions', 'check_mobile' ) // callback for frontend check
36
  ),
37
  'loggedin' => array(
58
  return self::$instance;
59
  }
60
 
61
+ /**
62
+ * callback to render the mobile condition using the "is not" condition
63
+ *
64
+ * @param arr $options options of the condition
65
+ * @param int $index index of the condition
66
+ */
67
+ static function mobile_is_or_not( $options, $index = 0 ){
68
+
69
+ self::metabox_is_or_not($options, $index);
70
+
71
+ if( ! defined( 'AAR_SLUG' ) ){
72
+ echo '<p>' . sprintf(__( 'Pro: Display ads by the available space on the device using the <a href="%s" target="_blank">Responsive add-on</a>', ADVADS_SLUG ), ADVADS_URL . 'add-ons/responsive-ads') . '</p>';
73
+ }
74
+ }
75
+
76
  /**
77
  * callback to display the "is not" condition
78
  *
languages/advanced-ads-de_DE.mo CHANGED
Binary file
languages/advanced-ads-de_DE.po CHANGED
@@ -3,7 +3,7 @@ msgstr ""
3
  "Project-Id-Version: Advanved Ads\n"
4
  "Report-Msgid-Bugs-To: http://wordpress.org/plugins/plugin-name\n"
5
  "POT-Creation-Date: 2015-01-27 16:47+0100\n"
6
- "PO-Revision-Date: Mon Dec 07 2015 13:41:44 GMT+0100 (CET)\n"
7
  "Last-Translator: admin <post@webzunft.de>\n"
8
  "Language-Team: webgilde <thomas.maier@webgilde.com>\n"
9
  "Language: German\n"
@@ -26,43 +26,23 @@ msgstr ""
26
  "X-Textdomain-Support: yes\n"
27
  "X-Loco-Target-Locale: de_DE"
28
 
29
- #: ../admin/class-advanced-ads-admin.php:929
30
- msgid "Allow editors to manage ads"
31
- msgstr "Redakteure können Anzeigen verwalten"
32
-
33
- #: ../admin/class-advanced-ads-admin.php:1155
34
- msgid "Allow editors to also manage and publish ads."
35
- msgstr "Redakteuren erlauben, Anzeigen zu verwalten und zu veröffentlichen."
36
-
37
- #: ../admin/includes/class-ad-groups-list.php:171 ../admin/views/ad-list-timing-
38
- #: column.php:9
39
  #, php-format
40
- msgid "<strong>expired</strong> %s"
41
- msgstr "<strong>abgelaufen</strong> %s"
42
-
43
- #: ../admin/views/ad-list-filters.php:2
44
- msgid "all ad types"
45
- msgstr "alle Typen"
46
-
47
- #: ../admin/views/ad-list-filters.php:5
48
- msgid "all ad sizes"
49
- msgstr "alle Größen"
50
-
51
- #: ../admin/views/ad-list-filters.php:8
52
- msgid "all ad dates"
53
- msgstr "jedes Datum"
54
-
55
- #: ../admin/views/ad-list-filters.php:10
56
- msgid "any expiry date"
57
- msgstr "mit Ablaufdatum"
58
-
59
- #: ../admin/views/ad-list-filters.php:11
60
- msgid "planned"
61
- msgstr "geplant"
62
 
63
- #: ../admin/views/ad-list-filters.php:14
64
- msgid "all ad groups"
65
- msgstr "alle Gruppen"
 
 
 
 
 
66
 
67
  #. Name of the plugin
68
  msgid "Advanced Ads"
@@ -292,6 +272,10 @@ msgstr "ID Präfix"
292
  msgid "Remove Widget ID"
293
  msgstr "ID des Widget entfernen"
294
 
 
 
 
 
295
  #: ../admin/class-advanced-ads-admin.php:1004
296
  msgid "(display to all)"
297
  msgstr "(für alle sichtbar)"
@@ -423,6 +407,10 @@ msgstr ""
423
  "ID-Attribut des Anzeigenwidgets entfernen, damit Ad-Blocker hier keinen "
424
  "Ansatz haben es zu blockieren."
425
 
 
 
 
 
426
  #: ../admin/class-advanced-ads-admin.php:1224
427
  msgid "Ad Details"
428
  msgstr "Anzeigeneinstellungen"
@@ -505,6 +493,12 @@ msgstr "Start %s"
505
  msgid "expires %s"
506
  msgstr "Ende %s"
507
 
 
 
 
 
 
 
508
  #: ../admin/includes/class-ad-groups-list.php:184
509
  msgid "all published ads are displayed"
510
  msgstr "Alle veröffentlichten Anzeigen werden dargestellt"
@@ -1405,10 +1399,34 @@ msgstr "Beschreibung angeben"
1405
  msgid "Internal description or your own notes about this ad."
1406
  msgstr "Eigene Beschreibung und Notizen zu dieser Anzeige."
1407
 
 
 
 
 
 
 
 
 
 
 
 
 
1408
  #: ../admin/views/ad-list-filters.php:9
1409
  msgid "expired"
1410
  msgstr "abgelaufen"
1411
 
 
 
 
 
 
 
 
 
 
 
 
 
1412
  #: ../admin/views/ad-main-metabox.php:3
1413
  msgid "No ad types defined"
1414
  msgstr "Keine Anzeigentypen definiert"
@@ -2035,11 +2053,11 @@ msgstr "Mögliche Probleme"
2035
 
2036
  #: ../admin/views/support.php:19
2037
  msgid ""
2038
- "Please fix the issues below or try to understand their consequences before "
2039
- "contacting support."
2040
  msgstr ""
2041
- "Bitte lösen Sie die unten genannten Probleme oder schließen diese als "
2042
- "Ursache aus, bevor Sie den Support kontaktieren."
2043
 
2044
  #: ../admin/views/support.php:23
2045
  #, php-format
@@ -2349,63 +2367,63 @@ msgstr ""
2349
  "Anzeigen nur für angemeldete Nutzer anzeigen oder verstecken\n"
2350
  "\n"
2351
 
2352
- #: ../classes/visitor-conditions.php:87
2353
  msgid "is"
2354
  msgstr "ist"
2355
 
2356
- #: ../classes/visitor-conditions.php:88
2357
  msgid "is not"
2358
  msgstr "ist nicht"
2359
 
2360
- #: ../classes/visitor-conditions.php:120
2361
  msgid "equal"
2362
  msgstr "ist gleich"
2363
 
2364
- #: ../classes/visitor-conditions.php:121
2365
  msgid "equal or higher"
2366
  msgstr "gleich oder höher"
2367
 
2368
- #: ../classes/visitor-conditions.php:122
2369
  msgid "equal or lower"
2370
  msgstr "gleich oder niedriger"
2371
 
2372
- #: ../classes/visitor-conditions.php:154
2373
  msgid "contains"
2374
  msgstr "enthält"
2375
 
2376
- #: ../classes/visitor-conditions.php:155
2377
  msgid "starts with"
2378
  msgstr "beginnt mit"
2379
 
2380
- #: ../classes/visitor-conditions.php:156
2381
  msgid "ends with"
2382
  msgstr "endet mit"
2383
 
2384
- #: ../classes/visitor-conditions.php:157
2385
  msgid "matches"
2386
  msgstr "entspricht"
2387
 
2388
- #: ../classes/visitor-conditions.php:158
2389
  msgid "matches regex"
2390
  msgstr "regulärer Ausdruck"
2391
 
2392
- #: ../classes/visitor-conditions.php:159
2393
  msgid "does not contain"
2394
  msgstr "enthält nicht"
2395
 
2396
- #: ../classes/visitor-conditions.php:160
2397
  msgid "does not start with"
2398
  msgstr "beginnt nicht mit"
2399
 
2400
- #: ../classes/visitor-conditions.php:161
2401
  msgid "does not end with"
2402
  msgstr "endet nicht mit"
2403
 
2404
- #: ../classes/visitor-conditions.php:162
2405
  msgid "does not match"
2406
  msgstr "entspricht nicht"
2407
 
2408
- #: ../classes/visitor-conditions.php:163
2409
  msgid "does not match regex"
2410
  msgstr "entspricht nicht reg. Ausdruck"
2411
 
3
  "Project-Id-Version: Advanved Ads\n"
4
  "Report-Msgid-Bugs-To: http://wordpress.org/plugins/plugin-name\n"
5
  "POT-Creation-Date: 2015-01-27 16:47+0100\n"
6
+ "PO-Revision-Date: Thu Dec 10 2015 18:01:22 GMT+0100 (CET)\n"
7
  "Last-Translator: admin <post@webzunft.de>\n"
8
  "Language-Team: webgilde <thomas.maier@webgilde.com>\n"
9
  "Language: German\n"
26
  "X-Textdomain-Support: yes\n"
27
  "X-Loco-Target-Locale: de_DE"
28
 
29
+ #: ../classes/ad_type_image.php:67
 
 
 
 
 
 
 
 
 
30
  #, php-format
31
+ msgid ""
32
+ "Pro: Open this url in a new window and track impressions and clicks with the "
33
+ "<a href=\"%s\" target=\"_blank\">Tracking add-on</a>"
34
+ msgstr ""
35
+ "Pro: Link in neuem Fenster öffnen oder Impressionen und Klicks zählen geht "
36
+ "einfach mit der <a href=\"%s\" target=\"_blank\">Tracking-Erweiterung</a>."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
37
 
38
+ #: ../classes/visitor-conditions.php:72
39
+ #, php-format
40
+ msgid ""
41
+ "Pro: Display ads by the available space on the device using the <a href=\"%s\" "
42
+ "target=\"_blank\">Responsive add-on</a>"
43
+ msgstr ""
44
+ "Pro: Anzeigen nach verfügbarer Fläche anzeigen ist einfach mit der <a "
45
+ "href=\"%s\" target=\"_blank\">Responsive–Erweiterung</a>."
46
 
47
  #. Name of the plugin
48
  msgid "Advanced Ads"
272
  msgid "Remove Widget ID"
273
  msgstr "ID des Widget entfernen"
274
 
275
+ #: ../admin/class-advanced-ads-admin.php:929
276
+ msgid "Allow editors to manage ads"
277
+ msgstr "Redakteure können Anzeigen verwalten"
278
+
279
  #: ../admin/class-advanced-ads-admin.php:1004
280
  msgid "(display to all)"
281
  msgstr "(für alle sichtbar)"
407
  "ID-Attribut des Anzeigenwidgets entfernen, damit Ad-Blocker hier keinen "
408
  "Ansatz haben es zu blockieren."
409
 
410
+ #: ../admin/class-advanced-ads-admin.php:1155
411
+ msgid "Allow editors to also manage and publish ads."
412
+ msgstr "Redakteuren erlauben, Anzeigen zu verwalten und zu veröffentlichen."
413
+
414
  #: ../admin/class-advanced-ads-admin.php:1224
415
  msgid "Ad Details"
416
  msgstr "Anzeigeneinstellungen"
493
  msgid "expires %s"
494
  msgstr "Ende %s"
495
 
496
+ #: ../admin/includes/class-ad-groups-list.php:171 ../admin/views/ad-list-timing-
497
+ #: column.php:9
498
+ #, php-format
499
+ msgid "<strong>expired</strong> %s"
500
+ msgstr "<strong>abgelaufen</strong> %s"
501
+
502
  #: ../admin/includes/class-ad-groups-list.php:184
503
  msgid "all published ads are displayed"
504
  msgstr "Alle veröffentlichten Anzeigen werden dargestellt"
1399
  msgid "Internal description or your own notes about this ad."
1400
  msgstr "Eigene Beschreibung und Notizen zu dieser Anzeige."
1401
 
1402
+ #: ../admin/views/ad-list-filters.php:2
1403
+ msgid "all ad types"
1404
+ msgstr "alle Typen"
1405
+
1406
+ #: ../admin/views/ad-list-filters.php:5
1407
+ msgid "all ad sizes"
1408
+ msgstr "alle Größen"
1409
+
1410
+ #: ../admin/views/ad-list-filters.php:8
1411
+ msgid "all ad dates"
1412
+ msgstr "jedes Datum"
1413
+
1414
  #: ../admin/views/ad-list-filters.php:9
1415
  msgid "expired"
1416
  msgstr "abgelaufen"
1417
 
1418
+ #: ../admin/views/ad-list-filters.php:10
1419
+ msgid "any expiry date"
1420
+ msgstr "mit Ablaufdatum"
1421
+
1422
+ #: ../admin/views/ad-list-filters.php:11
1423
+ msgid "planned"
1424
+ msgstr "geplant"
1425
+
1426
+ #: ../admin/views/ad-list-filters.php:14
1427
+ msgid "all ad groups"
1428
+ msgstr "alle Gruppen"
1429
+
1430
  #: ../admin/views/ad-main-metabox.php:3
1431
  msgid "No ad types defined"
1432
  msgstr "Keine Anzeigentypen definiert"
2053
 
2054
  #: ../admin/views/support.php:19
2055
  msgid ""
2056
+ "Please fix the red highlighted issues on this page or try to understand "
2057
+ "their consequences before contacting support."
2058
  msgstr ""
2059
+ "Bitte lösen Sie die auf dieser Seite genannten Probleme oder schließen diese "
2060
+ "als Ursache aus, bevor Sie den Support kontaktieren."
2061
 
2062
  #: ../admin/views/support.php:23
2063
  #, php-format
2367
  "Anzeigen nur für angemeldete Nutzer anzeigen oder verstecken\n"
2368
  "\n"
2369
 
2370
+ #: ../classes/visitor-conditions.php:102
2371
  msgid "is"
2372
  msgstr "ist"
2373
 
2374
+ #: ../classes/visitor-conditions.php:103
2375
  msgid "is not"
2376
  msgstr "ist nicht"
2377
 
2378
+ #: ../classes/visitor-conditions.php:135
2379
  msgid "equal"
2380
  msgstr "ist gleich"
2381
 
2382
+ #: ../classes/visitor-conditions.php:136
2383
  msgid "equal or higher"
2384
  msgstr "gleich oder höher"
2385
 
2386
+ #: ../classes/visitor-conditions.php:137
2387
  msgid "equal or lower"
2388
  msgstr "gleich oder niedriger"
2389
 
2390
+ #: ../classes/visitor-conditions.php:169
2391
  msgid "contains"
2392
  msgstr "enthält"
2393
 
2394
+ #: ../classes/visitor-conditions.php:170
2395
  msgid "starts with"
2396
  msgstr "beginnt mit"
2397
 
2398
+ #: ../classes/visitor-conditions.php:171
2399
  msgid "ends with"
2400
  msgstr "endet mit"
2401
 
2402
+ #: ../classes/visitor-conditions.php:172
2403
  msgid "matches"
2404
  msgstr "entspricht"
2405
 
2406
+ #: ../classes/visitor-conditions.php:173
2407
  msgid "matches regex"
2408
  msgstr "regulärer Ausdruck"
2409
 
2410
+ #: ../classes/visitor-conditions.php:174
2411
  msgid "does not contain"
2412
  msgstr "enthält nicht"
2413
 
2414
+ #: ../classes/visitor-conditions.php:175
2415
  msgid "does not start with"
2416
  msgstr "beginnt nicht mit"
2417
 
2418
+ #: ../classes/visitor-conditions.php:176
2419
  msgid "does not end with"
2420
  msgstr "endet nicht mit"
2421
 
2422
+ #: ../classes/visitor-conditions.php:177
2423
  msgid "does not match"
2424
  msgstr "entspricht nicht"
2425
 
2426
+ #: ../classes/visitor-conditions.php:178
2427
  msgid "does not match regex"
2428
  msgstr "entspricht nicht reg. Ausdruck"
2429
 
languages/advanced-ads.mo CHANGED
Binary file
languages/advanced-ads.po ADDED
@@ -0,0 +1,2604 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: Advanved Ads\n"
4
+ "Report-Msgid-Bugs-To: http://wordpress.org/plugins/plugin-name\n"
5
+ "POT-Creation-Date: 2015-01-28 20:07+0100\n"
6
+ "PO-Revision-Date: Wed Dec 16 2015 17:36:31 GMT+0100 (CET)\n"
7
+ "Last-Translator: admin <post@webzunft.de>\n"
8
+ "Language-Team: webgilde <thomas.maier@webgilde.com>\n"
9
+ "Language: Unknown locale\n"
10
+ "Plural-Forms: nplurals=2; plural=n != 1\n"
11
+ "MIME-Version: 1.0\n"
12
+ "Content-Type: text/plain; charset=UTF-8\n"
13
+ "Content-Transfer-Encoding: 8bit\n"
14
+ "X-Poedit-SourceCharset: UTF-8\n"
15
+ "X-Generator: Loco - https://localise.biz/\n"
16
+ "X-Poedit-KeywordsList: _:1;gettext:1;dgettext:2;ngettext:1,2;dngettext:2,3;"
17
+ "__:1;_e:1;_c:1;_n:1,2;_n_noop:1,2;_nc:1,2;__ngettext:1,2;__ngettext_noop:1,2;"
18
+ "_x:1,2c;_ex:1,2c;_nx:1,2,4c;_nx_noop:1,2,3c;_n_js:1,2;_nx_js:1,2,3c;"
19
+ "esc_attr__:1;esc_html__:1;esc_attr_e:1;esc_html_e:1;esc_attr_x:1,2c;"
20
+ "esc_html_x:1,2c;comments_number_link:2,3;t:1;st:1;trans:1;transChoice:1,2\n"
21
+ "X-Poedit-Basepath: ../\n"
22
+ "X-Poedit-SearchPath-0: .\n"
23
+ "X-Loco-Target-Locale: ads_GB"
24
+
25
+ #. Name of the plugin
26
+ msgid "Advanced Ads"
27
+ msgstr ""
28
+
29
+ #. URI of the plugin
30
+ msgid "https://wpadvancedads.com"
31
+ msgstr ""
32
+
33
+ #. Description of the plugin
34
+ msgid "Manage and optimize your ads in WordPress"
35
+ msgstr ""
36
+
37
+ #. Author of the plugin
38
+ msgid "Thomas Maier"
39
+ msgstr ""
40
+
41
+ #. Author URI of the plugin
42
+ msgid "http://webgilde.com"
43
+ msgstr ""
44
+
45
+ #: ../admin/class-advanced-ads-admin.php:255
46
+ msgid "Overview"
47
+ msgstr ""
48
+
49
+ #: ../admin/class-advanced-ads-admin.php:259 ../admin/class-advanced-ads-admin.
50
+ #: php:259 ../admin/includes/class-shortcode-creator.php:77 ../admin/views/ad-
51
+ #: group-list-form-row.php:28 ../admin/views/ad-group-list-header.php:5 ..
52
+ #: /admin/views/placements.php:80 ../admin/views/placements.php:184 ..
53
+ #: /classes/widget.php:89 ../public/class-advanced-ads.php:563
54
+ msgid "Ads"
55
+ msgstr ""
56
+
57
+ #: ../admin/class-advanced-ads-admin.php:263 ../admin/includes/class-shortcode-
58
+ #: creator.php:84 ../admin/views/placements.php:73 ../admin/views/placements.php:
59
+ #: 177 ../classes/widget.php:82
60
+ msgid "Ad Groups"
61
+ msgstr ""
62
+
63
+ #: ../admin/class-advanced-ads-admin.php:263 ../public/class-advanced-ads.php:536
64
+ msgid "Groups"
65
+ msgstr ""
66
+
67
+ #: ../admin/class-advanced-ads-admin.php:268 ../admin/views/debug.php:14
68
+ msgid "Ad Placements"
69
+ msgstr ""
70
+
71
+ #: ../admin/class-advanced-ads-admin.php:268 ../admin/includes/class-shortcode-
72
+ #: creator.php:91 ../admin/views/placements.php:18 ../classes/widget.php:75
73
+ msgid "Placements"
74
+ msgstr ""
75
+
76
+ #: ../admin/class-advanced-ads-admin.php:272
77
+ msgid "Advanced Ads Settings"
78
+ msgstr ""
79
+
80
+ #: ../admin/class-advanced-ads-admin.php:272 ../admin/class-advanced-ads-admin.
81
+ #: php:499 ../admin/views/debug.php:11
82
+ msgid "Settings"
83
+ msgstr ""
84
+
85
+ #: ../admin/class-advanced-ads-admin.php:275
86
+ msgid "Advanced Ads Debugging"
87
+ msgstr ""
88
+
89
+ #: ../admin/class-advanced-ads-admin.php:275
90
+ msgid "Debug"
91
+ msgstr ""
92
+
93
+ #: ../admin/class-advanced-ads-admin.php:279 ../admin/class-advanced-ads-admin.
94
+ #: php:279
95
+ msgid "Advanced Ads Intro"
96
+ msgstr ""
97
+
98
+ #: ../admin/class-advanced-ads-admin.php:283 ../admin/class-advanced-ads-admin.
99
+ #: php:283
100
+ msgid "Support"
101
+ msgstr ""
102
+
103
+ #: ../admin/class-advanced-ads-admin.php:413 ../admin/class-advanced-ads-admin.
104
+ #: php:440
105
+ msgid "Sorry, you are not allowed to access this feature."
106
+ msgstr ""
107
+
108
+ #: ../admin/class-advanced-ads-admin.php:426
109
+ msgid ""
110
+ "You attempted to edit an ad group that doesn&#8217;t exist. Perhaps it was "
111
+ "deleted?"
112
+ msgstr ""
113
+
114
+ #: ../admin/class-advanced-ads-admin.php:541
115
+ msgid "Ad Type"
116
+ msgstr ""
117
+
118
+ #: ../admin/class-advanced-ads-admin.php:544
119
+ msgid "Ad Parameters"
120
+ msgstr ""
121
+
122
+ #: ../admin/class-advanced-ads-admin.php:547
123
+ msgid "Layout / Output"
124
+ msgstr ""
125
+
126
+ #: ../admin/class-advanced-ads-admin.php:553
127
+ msgid "Visitor Conditions"
128
+ msgstr ""
129
+
130
+ #: ../admin/class-advanced-ads-admin.php:764 ../admin/class-advanced-ads-admin.
131
+ #: php:765
132
+ msgid "Ad updated."
133
+ msgstr ""
134
+
135
+ #. translators: %s: date and time of the revision
136
+ #: ../admin/class-advanced-ads-admin.php:767
137
+ #, php-format
138
+ msgid "Ad restored to revision from %s"
139
+ msgstr ""
140
+
141
+ #: ../admin/class-advanced-ads-admin.php:768
142
+ msgid "Ad published."
143
+ msgstr ""
144
+
145
+ #: ../admin/class-advanced-ads-admin.php:769
146
+ msgid "Ad saved."
147
+ msgstr ""
148
+
149
+ #: ../admin/class-advanced-ads-admin.php:770
150
+ msgid "Ad submitted."
151
+ msgstr ""
152
+
153
+ #: ../admin/class-advanced-ads-admin.php:772
154
+ #, php-format
155
+ msgid "Ad scheduled for: <strong>%1$s</strong>."
156
+ msgstr ""
157
+
158
+ #. translators: Publish box date format, see http://php.net/date
159
+ #: ../admin/class-advanced-ads-admin.php:774
160
+ msgid "M j, Y @ G:i"
161
+ msgstr ""
162
+
163
+ #: ../admin/class-advanced-ads-admin.php:776
164
+ msgid "Ad draft updated."
165
+ msgstr ""
166
+
167
+ #: ../admin/class-advanced-ads-admin.php:795
168
+ #, php-format
169
+ msgid "%s ad updated."
170
+ msgid_plural "%s ads updated."
171
+ msgstr[0] ""
172
+ msgstr[1] ""
173
+
174
+ #: ../admin/class-advanced-ads-admin.php:796
175
+ #, php-format
176
+ msgid "%s ad not updated, somebody is editing it."
177
+ msgid_plural "%s ads not updated, somebody is editing them."
178
+ msgstr[0] ""
179
+ msgstr[1] ""
180
+
181
+ #: ../admin/class-advanced-ads-admin.php:797
182
+ #, php-format
183
+ msgid "%s ad permanently deleted."
184
+ msgid_plural "%s ads permanently deleted."
185
+ msgstr[0] ""
186
+ msgstr[1] ""
187
+
188
+ #: ../admin/class-advanced-ads-admin.php:798
189
+ #, php-format
190
+ msgid "%s ad moved to the Trash."
191
+ msgid_plural "%s ads moved to the Trash."
192
+ msgstr[0] ""
193
+ msgstr[1] ""
194
+
195
+ #: ../admin/class-advanced-ads-admin.php:799
196
+ #, php-format
197
+ msgid "%s ad restored from the Trash."
198
+ msgid_plural "%s ads restored from the Trash."
199
+ msgstr[0] ""
200
+ msgstr[1] ""
201
+
202
+ #: ../admin/class-advanced-ads-admin.php:834 ../admin/views/settings.php:12
203
+ msgid "General"
204
+ msgstr ""
205
+
206
+ #: ../admin/class-advanced-ads-admin.php:846 ../admin/class-advanced-ads-admin.
207
+ #: php:950
208
+ msgid "Licenses"
209
+ msgstr ""
210
+
211
+ #: ../admin/class-advanced-ads-admin.php:857
212
+ msgid "Disable ads"
213
+ msgstr ""
214
+
215
+ #: ../admin/class-advanced-ads-admin.php:865
216
+ msgid "Hide ads for logged in users"
217
+ msgstr ""
218
+
219
+ #: ../admin/class-advanced-ads-admin.php:873
220
+ msgid "Use advanced JavaScript"
221
+ msgstr ""
222
+
223
+ #: ../admin/class-advanced-ads-admin.php:881
224
+ msgid "Unlimited ad injection"
225
+ msgstr ""
226
+
227
+ #: ../admin/class-advanced-ads-admin.php:889
228
+ msgid "Priority of content injection filter"
229
+ msgstr ""
230
+
231
+ #: ../admin/class-advanced-ads-admin.php:897
232
+ msgid "Hide ads from bots"
233
+ msgstr ""
234
+
235
+ #: ../admin/class-advanced-ads-admin.php:905
236
+ msgid "Disable notices"
237
+ msgstr ""
238
+
239
+ #: ../admin/class-advanced-ads-admin.php:913
240
+ msgid "ID prefix"
241
+ msgstr ""
242
+
243
+ #: ../admin/class-advanced-ads-admin.php:921
244
+ msgid "Remove Widget ID"
245
+ msgstr ""
246
+
247
+ #: ../admin/class-advanced-ads-admin.php:929
248
+ msgid "Allow editors to manage ads"
249
+ msgstr ""
250
+
251
+ #: ../admin/class-advanced-ads-admin.php:1005
252
+ msgid "Subscriber"
253
+ msgstr ""
254
+
255
+ #: ../admin/class-advanced-ads-admin.php:1006
256
+ msgid "Contributor"
257
+ msgstr ""
258
+
259
+ #: ../admin/class-advanced-ads-admin.php:1007
260
+ msgid "Author"
261
+ msgstr ""
262
+
263
+ #: ../admin/class-advanced-ads-admin.php:1008
264
+ msgid "Editor"
265
+ msgstr ""
266
+
267
+ #: ../admin/class-advanced-ads-admin.php:1009
268
+ msgid "Admin"
269
+ msgstr ""
270
+
271
+ #: ../admin/class-advanced-ads-admin.php:1017
272
+ msgid "Choose the lowest role a user must have in order to not see any ads."
273
+ msgstr ""
274
+
275
+ #: ../admin/class-advanced-ads-admin.php:1031
276
+ msgid ""
277
+ "<strong>notice: </strong>the file is currently enabled by an add-on that "
278
+ "needs it."
279
+ msgstr ""
280
+
281
+ #: ../admin/class-advanced-ads-admin.php:1034
282
+ #, php-format
283
+ msgid ""
284
+ "Enable advanced JavaScript functions (<a href=\"%s\" target=\"_blank\">here</a>)."
285
+ " Some features and add-ons might override this setting if they need features "
286
+ "from this file."
287
+ msgstr ""
288
+
289
+ #: ../admin/class-advanced-ads-admin.php:1047
290
+ msgid ""
291
+ "Some plugins and themes trigger ad injection where it shouldn’t happen. "
292
+ "Therefore, Advanced Ads ignores injected placements on non-singular pages "
293
+ "and outside the loop. However, this can cause problems with some themes. You "
294
+ "can enable this option if you don’t see ads or want to enable ad injections "
295
+ "on archive pages AT YOUR OWN RISK."
296
+ msgstr ""
297
+
298
+ #: ../admin/class-advanced-ads-admin.php:1063
299
+ msgid ""
300
+ "Please check your post content. A priority of 10 and below might cause "
301
+ "issues (wpautop function might run twice)."
302
+ msgstr ""
303
+
304
+ #: ../admin/class-advanced-ads-admin.php:1065
305
+ msgid ""
306
+ "Play with this value in order to change the priority of the injected ads "
307
+ "compared to other auto injected elements in the post content."
308
+ msgstr ""
309
+
310
+ #: ../admin/class-advanced-ads-admin.php:1079
311
+ #, php-format
312
+ msgid ""
313
+ "Hide ads from crawlers, bots and empty user agents. Also prevents counting "
314
+ "impressions for bots when using the <a href=\"%s\" target=\"_blank\">Tracking "
315
+ "Add-On</a>."
316
+ msgstr ""
317
+
318
+ #: ../admin/class-advanced-ads-admin.php:1080
319
+ msgid ""
320
+ "Disabling this option only makes sense if your ads contain content you want "
321
+ "to display to bots (like search engines) or your site is cached and bots "
322
+ "could create a cached version without the ads."
323
+ msgstr ""
324
+
325
+ #: ../admin/class-advanced-ads-admin.php:1093
326
+ msgid ""
327
+ "Disable internal notices like tips, tutorials, email newsletters and update "
328
+ "notices. Disabling notices is recommended if you run multiple blogs with "
329
+ "Advanced Ads already."
330
+ msgstr ""
331
+
332
+ #: ../admin/class-advanced-ads-admin.php:1115
333
+ msgid ""
334
+ "Prefix of class or id attributes in the frontend. Change it if you don’t "
335
+ "want <strong>ad blockers</strong> to mark these blocks as ads.<br/>You might "
336
+ "need to <strong>rewrite css rules afterwards</strong>."
337
+ msgstr ""
338
+
339
+ #: ../admin/class-advanced-ads-admin.php:1136
340
+ msgid ""
341
+ "Remove the ID attribute from widgets in order to not make them an easy "
342
+ "target of ad blockers."
343
+ msgstr ""
344
+
345
+ #: ../admin/class-advanced-ads-admin.php:1155
346
+ msgid "Allow editors to also manage and publish ads."
347
+ msgstr ""
348
+
349
+ #: ../admin/class-advanced-ads-admin.php:1224
350
+ msgid "Ad Details"
351
+ msgstr ""
352
+
353
+ #: ../admin/class-advanced-ads-admin.php:1225
354
+ msgid "Ad Planning"
355
+ msgstr ""
356
+
357
+ #: ../admin/class-advanced-ads-admin.php:1360
358
+ msgid "Ad Settings"
359
+ msgstr ""
360
+
361
+ #: ../admin/class-advanced-ads-admin.php:1439 ../admin/views/overview.php:23
362
+ msgid "Ads Dashboard"
363
+ msgstr ""
364
+
365
+ #: ../admin/class-advanced-ads-admin.php:1451
366
+ msgid "From the ad optimization universe"
367
+ msgstr ""
368
+
369
+ #: ../admin/class-advanced-ads-admin.php:1460
370
+ msgid "Advanced Ads Tutorials"
371
+ msgstr ""
372
+
373
+ #: ../admin/class-advanced-ads-admin.php:1471
374
+ #, php-format
375
+ msgid "%d ads – <a href=\"%s\">manage</a> - <a href=\"%s\">new</a>"
376
+ msgstr ""
377
+
378
+ #: ../admin/class-advanced-ads-admin.php:1482
379
+ msgid "plugin manual and homepage"
380
+ msgstr ""
381
+
382
+ #: ../admin/class-advanced-ads-admin.php:1489
383
+ msgid "Get the tutorial via email"
384
+ msgstr ""
385
+
386
+ #: ../admin/class-advanced-ads-admin.php:1496
387
+ msgid "Get AdSense tips via email"
388
+ msgstr ""
389
+
390
+ #: ../admin/class-advanced-ads-admin.php:1577
391
+ msgid "Error while trying to register the license. Please contact support."
392
+ msgstr ""
393
+
394
+ #: ../admin/class-advanced-ads-admin.php:1583
395
+ msgid "Please enter and save a valid license key first."
396
+ msgstr ""
397
+
398
+ #: ../admin/class-advanced-ads-admin.php:1609
399
+ #, php-format
400
+ msgid "License is invalid. Reason: %s"
401
+ msgstr ""
402
+
403
+ #: ../admin/class-advanced-ads-admin.php:1627
404
+ msgid "Error while trying to disable the license. Please contact support."
405
+ msgstr ""
406
+
407
+ #: ../admin/class-advanced-ads-admin.php:1658
408
+ msgid "License couldn’t be deactivated. Please try again later or contact support."
409
+ msgstr ""
410
+
411
+ #: ../admin/includes/class-ad-groups-list.php:156
412
+ msgid "Ad weight"
413
+ msgstr ""
414
+
415
+ #: ../admin/includes/class-ad-groups-list.php:164 ../admin/views/ad-list-timing-
416
+ #: column.php:4
417
+ #, php-format
418
+ msgid "starts %s"
419
+ msgstr ""
420
+
421
+ #: ../admin/includes/class-ad-groups-list.php:169 ../admin/views/ad-list-timing-
422
+ #: column.php:7
423
+ #, php-format
424
+ msgid "expires %s"
425
+ msgstr ""
426
+
427
+ #: ../admin/includes/class-ad-groups-list.php:171 ../admin/views/ad-list-timing-
428
+ #: column.php:9
429
+ #, php-format
430
+ msgid "<strong>expired</strong> %s"
431
+ msgstr ""
432
+
433
+ #: ../admin/includes/class-ad-groups-list.php:184
434
+ msgid "all published ads are displayed"
435
+ msgstr ""
436
+
437
+ #: ../admin/includes/class-ad-groups-list.php:186
438
+ #, php-format
439
+ msgid "up to %d ads displayed"
440
+ msgstr ""
441
+
442
+ #: ../admin/includes/class-ad-groups-list.php:189 ../admin/views/ad-group-list-
443
+ #: form-row.php:37
444
+ msgid "No ads assigned"
445
+ msgstr ""
446
+
447
+ #: ../admin/includes/class-ad-groups-list.php:237
448
+ msgid "Random ads"
449
+ msgstr ""
450
+
451
+ #: ../admin/includes/class-ad-groups-list.php:238
452
+ msgid "Display random ads based on ad weight"
453
+ msgstr ""
454
+
455
+ #: ../admin/includes/class-ad-groups-list.php:241
456
+ msgid "Ordered ads"
457
+ msgstr ""
458
+
459
+ #: ../admin/includes/class-ad-groups-list.php:242
460
+ msgid "Display ads with the highest ad weight first"
461
+ msgstr ""
462
+
463
+ #: ../admin/includes/class-ad-groups-list.php:261 ../public/class-advanced-ads.
464
+ #: php:567
465
+ msgid "Edit"
466
+ msgstr ""
467
+
468
+ #: ../admin/includes/class-ad-groups-list.php:262
469
+ msgid "Usage"
470
+ msgstr ""
471
+
472
+ #: ../admin/includes/class-ad-groups-list.php:271
473
+ msgid "Delete"
474
+ msgstr ""
475
+
476
+ #: ../admin/includes/class-ad-groups-list.php:292
477
+ msgid "Invalid Ad Group"
478
+ msgstr ""
479
+
480
+ #: ../admin/includes/class-ad-groups-list.php:297
481
+ msgid "You don’t have permission to change the ad groups"
482
+ msgstr ""
483
+
484
+ #: ../admin/includes/class-display-condition-callbacks.php:28
485
+ msgid "Display on all public <strong>post types</strong>."
486
+ msgstr ""
487
+
488
+ #: ../admin/includes/class-display-condition-callbacks.php:31 ..
489
+ #: /includes/array_ad_conditions.php:39
490
+ msgid "Choose the public post types on which to display the ad."
491
+ msgstr ""
492
+
493
+ #: ../admin/includes/class-display-condition-callbacks.php:86
494
+ msgid "Display for all <strong>categories, tags and taxonomies</strong>."
495
+ msgstr ""
496
+
497
+ #: ../admin/includes/class-display-condition-callbacks.php:87
498
+ msgid ""
499
+ "Choose terms from public categories, tags and other taxonomies a post must "
500
+ "belong to in order to have ads."
501
+ msgstr ""
502
+
503
+ #: ../admin/includes/class-display-condition-callbacks.php:104 ..
504
+ #: /admin/includes/class-display-condition-callbacks.php:217
505
+ msgid "Hide from here"
506
+ msgstr ""
507
+
508
+ #: ../admin/includes/class-display-condition-callbacks.php:104
509
+ msgid ""
510
+ "Choose the terms from public categories, tags and other taxonomies a post "
511
+ "must belong to hide the ad from it."
512
+ msgstr ""
513
+
514
+ #: ../admin/includes/class-display-condition-callbacks.php:149
515
+ msgctxt "display the terms search field on ad edit page"
516
+ msgid "add more terms"
517
+ msgstr ""
518
+
519
+ #: ../admin/includes/class-display-condition-callbacks.php:150
520
+ msgid "add more terms"
521
+ msgstr ""
522
+
523
+ #: ../admin/includes/class-display-condition-callbacks.php:153
524
+ msgid "term name or id"
525
+ msgstr ""
526
+
527
+ #: ../admin/includes/class-display-condition-callbacks.php:197
528
+ msgid "Display on all <strong>category archive pages</strong>."
529
+ msgstr ""
530
+
531
+ #: ../admin/includes/class-display-condition-callbacks.php:200
532
+ msgid ""
533
+ "Choose the terms from public categories, tags and other taxonomies on "
534
+ "which's archive page ads can appear"
535
+ msgstr ""
536
+
537
+ #: ../admin/includes/class-display-condition-callbacks.php:217
538
+ msgid ""
539
+ "Choose the terms from public categories, tags and other taxonomies on "
540
+ "which's archive pages ads are hidden."
541
+ msgstr ""
542
+
543
+ #: ../admin/includes/class-display-condition-callbacks.php:239
544
+ msgid ""
545
+ "Display an all <strong>individual posts, pages</strong> and public post type "
546
+ "pages"
547
+ msgstr ""
548
+
549
+ #: ../admin/includes/class-display-condition-callbacks.php:242 ..
550
+ #: /includes/array_ad_conditions.php:57
551
+ msgid ""
552
+ "Choose on which individual posts, pages and public post type pages you want "
553
+ "to display or hide ads."
554
+ msgstr ""
555
+
556
+ #: ../admin/includes/class-display-condition-callbacks.php:259
557
+ msgid "What should happen with ads on the list of individual posts below?"
558
+ msgstr ""
559
+
560
+ #: ../admin/includes/class-display-condition-callbacks.php:260
561
+ msgid "ignore the list"
562
+ msgstr ""
563
+
564
+ #: ../admin/includes/class-display-condition-callbacks.php:261
565
+ msgid "display the ad only there"
566
+ msgstr ""
567
+
568
+ #: ../admin/includes/class-display-condition-callbacks.php:262
569
+ msgid "hide the ad here"
570
+ msgstr ""
571
+
572
+ #: ../admin/includes/class-display-condition-callbacks.php:270
573
+ msgid "Update warning"
574
+ msgstr ""
575
+
576
+ #: ../admin/includes/class-display-condition-callbacks.php:271
577
+ msgid ""
578
+ "Due to some conflicts before version 1.2.6, it is from now on only possible "
579
+ "to choose either individual pages to include or exclude an ad, but not both "
580
+ "with mixed settings. It seems you are still using mixed settings on this "
581
+ "page. Please consider changing your setup for this ad."
582
+ msgstr ""
583
+
584
+ #: ../admin/includes/class-display-condition-callbacks.php:272
585
+ msgid "Your old values are:"
586
+ msgstr ""
587
+
588
+ #: ../admin/includes/class-display-condition-callbacks.php:273
589
+ msgid "Post IDs the ad is displayed on:"
590
+ msgstr ""
591
+
592
+ #: ../admin/includes/class-display-condition-callbacks.php:274
593
+ msgid "Post IDs the ad is hidden from:"
594
+ msgstr ""
595
+
596
+ #: ../admin/includes/class-display-condition-callbacks.php:275
597
+ msgid ""
598
+ "Below you find the pages the ad is displayed on. If this is ok, just save "
599
+ "the ad. If not, please update your settings."
600
+ msgstr ""
601
+
602
+ #: ../admin/includes/class-display-condition-callbacks.php:318
603
+ msgid "new"
604
+ msgstr ""
605
+
606
+ #: ../admin/includes/class-display-condition-callbacks.php:320
607
+ msgid "type the title"
608
+ msgstr ""
609
+
610
+ #: ../admin/includes/class-notices.php:359
611
+ #, php-format
612
+ msgid ""
613
+ "You don’t seem to have an email address. Please use <a href=\"%s\" "
614
+ "target=\"_blank\">this form</a> to sign up."
615
+ msgstr ""
616
+
617
+ #: ../admin/includes/class-notices.php:377
618
+ msgid "How embarrassing. The email server seems to be down. Please try again later."
619
+ msgstr ""
620
+
621
+ #: ../admin/includes/class-notices.php:382
622
+ #, php-format
623
+ msgid ""
624
+ "Please check your email (%s) for the confirmation message. If you didn’t "
625
+ "receive one or want to use another email address then please use <a "
626
+ "href=\"%s\" target=\"_blank\">this form</a> to sign up."
627
+ msgstr ""
628
+
629
+ #: ../admin/includes/class-overview-widgets.php:45
630
+ msgid "Tips and Tutorials"
631
+ msgstr ""
632
+
633
+ #: ../admin/includes/class-overview-widgets.php:47
634
+ msgid "Setup and Optimization Help"
635
+ msgstr ""
636
+
637
+ #: ../admin/includes/class-overview-widgets.php:49
638
+ msgid "Manual and Support"
639
+ msgstr ""
640
+
641
+ #: ../admin/includes/class-overview-widgets.php:53
642
+ msgid "Advanced Ads Pro"
643
+ msgstr ""
644
+
645
+ #: ../admin/includes/class-overview-widgets.php:55
646
+ msgid "Tracking and Stats"
647
+ msgstr ""
648
+
649
+ #: ../admin/includes/class-overview-widgets.php:57
650
+ msgid "Responsive and Mobile ads"
651
+ msgstr ""
652
+
653
+ #: ../admin/includes/class-overview-widgets.php:59
654
+ msgid "Sticky ads"
655
+ msgstr ""
656
+
657
+ #: ../admin/includes/class-overview-widgets.php:61
658
+ msgid "PopUps and Layers"
659
+ msgstr ""
660
+
661
+ #: ../admin/includes/class-overview-widgets.php:63
662
+ msgid "Ad Slider"
663
+ msgstr ""
664
+
665
+ #: ../admin/includes/class-overview-widgets.php:81
666
+ msgid "Get 2 <strong>free add-ons</strong> for joining the newsletter."
667
+ msgstr ""
668
+
669
+ #: ../admin/includes/class-overview-widgets.php:82
670
+ msgid "Join now"
671
+ msgstr ""
672
+
673
+ #: ../admin/includes/class-overview-widgets.php:89
674
+ msgid ""
675
+ "Learn more about how and <strong>how much you can earn with AdSense</strong> "
676
+ "and Advanced Ads from the dedicated newsletter group."
677
+ msgstr ""
678
+
679
+ #: ../admin/includes/class-overview-widgets.php:90 ../admin/includes/notices.php:
680
+ #: 32 ../admin/views/intro.php:73 ../admin/views/notices/inline.php:3 ..
681
+ #: /admin/views/notices/subscribe.php:3
682
+ msgid "Subscribe me now"
683
+ msgstr ""
684
+
685
+ #: ../admin/includes/class-overview-widgets.php:97
686
+ msgid "Get the first steps and more tutorials to your inbox."
687
+ msgstr ""
688
+
689
+ #: ../admin/includes/class-overview-widgets.php:98
690
+ msgid "Send it now"
691
+ msgstr ""
692
+
693
+ #: ../admin/includes/class-overview-widgets.php:121 ../admin/views/intro.php:78
694
+ msgid "Create your first ad"
695
+ msgstr ""
696
+
697
+ #: ../admin/includes/class-overview-widgets.php:124
698
+ msgid ""
699
+ "Ad Groups contain ads and are currently used to rotate multiple ads on a "
700
+ "single spot."
701
+ msgstr ""
702
+
703
+ #: ../admin/includes/class-overview-widgets.php:126
704
+ msgid "Create your first group"
705
+ msgstr ""
706
+
707
+ #: ../admin/includes/class-overview-widgets.php:129
708
+ msgid "Ad Placements are the best way to manage where to display ads and groups."
709
+ msgstr ""
710
+
711
+ #: ../admin/includes/class-overview-widgets.php:131
712
+ msgid "Create your first placement"
713
+ msgstr ""
714
+
715
+ #: ../admin/includes/class-overview-widgets.php:136
716
+ msgid "Next steps"
717
+ msgstr ""
718
+
719
+ #: ../admin/includes/class-overview-widgets.php:148
720
+ #, php-format
721
+ msgid "<a href=\"%s\" target=\"_blank\">Plugin Homepage</a>"
722
+ msgstr ""
723
+
724
+ #: ../admin/includes/class-overview-widgets.php:149
725
+ #, php-format
726
+ msgid "<a href=\"%s\" target=\"_blank\">Manual</a>"
727
+ msgstr ""
728
+
729
+ #: ../admin/includes/class-overview-widgets.php:150
730
+ #, php-format
731
+ msgid "Ask other users in the <a href=\"%s\" target=\"_blank\">wordpress.org forum</a>"
732
+ msgstr ""
733
+
734
+ #: ../admin/includes/class-overview-widgets.php:151
735
+ #, php-format
736
+ msgid "Vote for a <a href=\"%s\" target=\"_blank\">feature</a>"
737
+ msgstr ""
738
+
739
+ #: ../admin/includes/class-overview-widgets.php:152
740
+ #, php-format
741
+ msgid ""
742
+ "Thank the developer with a &#9733;&#9733;&#9733;&#9733;&#9733; review on <a "
743
+ "href=\"%s\" target=\"_blank\">wordpress.org</a>"
744
+ msgstr ""
745
+
746
+ #: ../admin/includes/class-overview-widgets.php:161
747
+ msgid ""
748
+ "Need help to set up and optimize your ads? Need custom coding on your site? "
749
+ "Ask me for a quote."
750
+ msgstr ""
751
+
752
+ #: ../admin/includes/class-overview-widgets.php:162
753
+ #, php-format
754
+ msgid "Help with ads on %s"
755
+ msgstr ""
756
+
757
+ #: ../admin/includes/class-overview-widgets.php:163
758
+ msgid "Get an offer"
759
+ msgstr ""
760
+
761
+ #: ../admin/includes/class-overview-widgets.php:171
762
+ msgid "Ad management for advanced websites."
763
+ msgstr ""
764
+
765
+ #: ../admin/includes/class-overview-widgets.php:172
766
+ msgid "Cache-busting"
767
+ msgstr ""
768
+
769
+ #: ../admin/includes/class-overview-widgets.php:173
770
+ msgid "Advanced visitor conditions"
771
+ msgstr ""
772
+
773
+ #: ../admin/includes/class-overview-widgets.php:174
774
+ msgid "Flash ads with fallback"
775
+ msgstr ""
776
+
777
+ #: ../admin/includes/class-overview-widgets.php:176
778
+ msgid "Get Pro"
779
+ msgstr ""
780
+
781
+ #: ../admin/includes/class-overview-widgets.php:184
782
+ msgid "Track the impressions of and clicks on your ads."
783
+ msgstr ""
784
+
785
+ #: ../admin/includes/class-overview-widgets.php:185
786
+ msgid "2 methods to count impressions"
787
+ msgstr ""
788
+
789
+ #: ../admin/includes/class-overview-widgets.php:186
790
+ msgid "beautiful stats for all or single ads"
791
+ msgstr ""
792
+
793
+ #: ../admin/includes/class-overview-widgets.php:187
794
+ msgid "get stats for predefined and custom persiods"
795
+ msgstr ""
796
+
797
+ #: ../admin/includes/class-overview-widgets.php:188
798
+ msgid "group stats by day, week or month"
799
+ msgstr ""
800
+
801
+ #: ../admin/includes/class-overview-widgets.php:190
802
+ msgid "Get the Tracking add-on"
803
+ msgstr ""
804
+
805
+ #: ../admin/includes/class-overview-widgets.php:198
806
+ msgid "Display ads based on the size of your visitor’s browser or device."
807
+ msgstr ""
808
+
809
+ #: ../admin/includes/class-overview-widgets.php:199
810
+ msgid "set a range (from … to …) pixels for the browser size"
811
+ msgstr ""
812
+
813
+ #: ../admin/includes/class-overview-widgets.php:200
814
+ msgid "set custom sizes for AdSense responsive ads"
815
+ msgstr ""
816
+
817
+ #: ../admin/includes/class-overview-widgets.php:201
818
+ msgid "list all ads by their responsive settings"
819
+ msgstr ""
820
+
821
+ #: ../admin/includes/class-overview-widgets.php:203
822
+ msgid "Get the Responsive add-on"
823
+ msgstr ""
824
+
825
+ #: ../admin/includes/class-overview-widgets.php:211 ../admin/views/ad-info-top.
826
+ #: php:30
827
+ msgid ""
828
+ "Fix ads to the browser while users are scrolling and create best performing "
829
+ "anchor ads."
830
+ msgstr ""
831
+
832
+ #: ../admin/includes/class-overview-widgets.php:212
833
+ msgid "position ads that don’t scroll with the screen"
834
+ msgstr ""
835
+
836
+ #: ../admin/includes/class-overview-widgets.php:213
837
+ msgid "build anchor ads not only on mobile devices"
838
+ msgstr ""
839
+
840
+ #: ../admin/includes/class-overview-widgets.php:215 ../admin/views/ad-info-top.
841
+ #: php:32
842
+ msgid "Get the Sticky add-on"
843
+ msgstr ""
844
+
845
+ #: ../admin/includes/class-overview-widgets.php:223 ../admin/views/ad-info-top.
846
+ #: php:37
847
+ msgid "Display content and ads in layers and popups on custom events."
848
+ msgstr ""
849
+
850
+ #: ../admin/includes/class-overview-widgets.php:224
851
+ msgid "display a popup after a user interaction like scrolling"
852
+ msgstr ""
853
+
854
+ #: ../admin/includes/class-overview-widgets.php:225
855
+ msgid "optional backgroup overlay"
856
+ msgstr ""
857
+
858
+ #: ../admin/includes/class-overview-widgets.php:226
859
+ msgid "allow users to close the popup"
860
+ msgstr ""
861
+
862
+ #: ../admin/includes/class-overview-widgets.php:228 ../admin/views/ad-info-top.
863
+ #: php:39
864
+ msgid "Get the PopUp and Layer add-on"
865
+ msgstr ""
866
+
867
+ #: ../admin/includes/class-overview-widgets.php:236
868
+ msgid "Create a beautiful and simple slider from your ads."
869
+ msgstr ""
870
+
871
+ #: ../admin/includes/class-overview-widgets.php:238
872
+ msgid "Get the Slider add-on"
873
+ msgstr ""
874
+
875
+ #: ../admin/includes/class-shortcode-creator.php:75 ../classes/widget.php:73
876
+ msgid "--empty--"
877
+ msgstr ""
878
+
879
+ #: ../admin/includes/notices.php:14
880
+ #, php-format
881
+ msgid ""
882
+ "Advanced Ads successfully installed. Take a look at the <a href=\"%s\">First "
883
+ "Steps</a>."
884
+ msgstr ""
885
+
886
+ #: ../admin/includes/notices.php:19
887
+ msgid ""
888
+ "Thank you for activating <strong>Advanced Ads</strong>. Would you like to "
889
+ "receive the first steps via email?"
890
+ msgstr ""
891
+
892
+ #: ../admin/includes/notices.php:20
893
+ msgid "Yes, send it"
894
+ msgstr ""
895
+
896
+ #: ../admin/includes/notices.php:25
897
+ msgid ""
898
+ "Thank you for using <strong>Advanced Ads</strong>. Stay informed and receive "
899
+ "<strong>2 free add-ons</strong> for joining the newsletter."
900
+ msgstr ""
901
+
902
+ #: ../admin/includes/notices.php:26
903
+ msgid "Add me now"
904
+ msgstr ""
905
+
906
+ #: ../admin/includes/notices.php:31
907
+ msgid ""
908
+ "Learn more about how and <strong>how much you can earn with AdSense</strong> "
909
+ "and Advanced Ads from my dedicated newsletter."
910
+ msgstr ""
911
+
912
+ #: ../admin/includes/notices.php:52
913
+ msgid ""
914
+ "One or more license keys for <strong>Advanced Ads add-ons are invalid or "
915
+ "missing</strong>."
916
+ msgstr ""
917
+
918
+ #: ../admin/includes/notices.php:52
919
+ #, php-format
920
+ msgid "Please add valid license keys <a href=\"%s\">here</a>."
921
+ msgstr ""
922
+
923
+ #: ../admin/includes/notices.php:57
924
+ #, php-format
925
+ msgid ""
926
+ "One or more licenses for your <strong>Advanced Ads add-ons are expiring "
927
+ "soon</strong>. Don’t risk to lose support and updates and renew your license "
928
+ "before it expires with a significant discount on <a href=\"%s\" "
929
+ "target=\"_blank\">the add-on page</a>."
930
+ msgstr ""
931
+
932
+ #: ../admin/includes/notices.php:62 ../admin/views/support.php:38
933
+ #, php-format
934
+ msgid ""
935
+ "<strong>Advanced Ads</strong> license(s) expired. Support and updates are "
936
+ "disabled. Please visit <a href=\"%s\"> the license page</a> for more "
937
+ "information."
938
+ msgstr ""
939
+
940
+ #: ../admin/includes/shortcode-creator-l10n.php:10
941
+ msgctxt "shortcode creator"
942
+ msgid "Add an ad"
943
+ msgstr ""
944
+
945
+ #: ../admin/includes/shortcode-creator-l10n.php:11
946
+ msgctxt "shortcode creator"
947
+ msgid "Add shortcode"
948
+ msgstr ""
949
+
950
+ #: ../admin/includes/shortcode-creator-l10n.php:12
951
+ msgctxt "shortcode creator"
952
+ msgid "Cancel"
953
+ msgstr ""
954
+
955
+ #: ../admin/views/ad-display-metabox.php:8
956
+ msgid "Choose where to display the ad and where to hide it."
957
+ msgstr ""
958
+
959
+ #: ../admin/views/ad-display-metabox.php:10
960
+ msgid "Display ad everywhere"
961
+ msgstr ""
962
+
963
+ #: ../admin/views/ad-display-metabox.php:11
964
+ msgid "Set display conditions"
965
+ msgstr ""
966
+
967
+ #: ../admin/views/ad-display-metabox.php:15
968
+ msgid "If you want to display the ad everywhere, don't do anything here. "
969
+ msgstr ""
970
+
971
+ #: ../admin/views/ad-display-metabox.php:16
972
+ msgid "The fewer conditions you enter, the better the performance will be."
973
+ msgstr ""
974
+
975
+ #: ../admin/views/ad-display-metabox.php:17
976
+ #, php-format
977
+ msgid ""
978
+ "Learn more about display conditions from the <a href=\"%s\" "
979
+ "target=\"_blank\">manual</a>."
980
+ msgstr ""
981
+
982
+ #: ../admin/views/ad-display-metabox.php:34
983
+ msgid "Other conditions"
984
+ msgstr ""
985
+
986
+ #: ../admin/views/ad-display-metabox.php:52
987
+ msgctxt "button label"
988
+ msgid "on"
989
+ msgstr ""
990
+
991
+ #: ../admin/views/ad-display-metabox.php:56
992
+ msgctxt "button label"
993
+ msgid "off"
994
+ msgstr ""
995
+
996
+ #: ../admin/views/ad-display-metabox.php:71
997
+ msgid "show debug output"
998
+ msgstr ""
999
+
1000
+ #: ../admin/views/ad-display-metabox.php:72
1001
+ msgid "Values saved for this ad in the database (post metas)"
1002
+ msgstr ""
1003
+
1004
+ #: ../admin/views/ad-group-edit.php:14
1005
+ msgid "You did not select an item for editing."
1006
+ msgstr ""
1007
+
1008
+ #: ../admin/views/ad-group-edit.php:33
1009
+ msgctxt "Taxonomy Name"
1010
+ msgid "Name"
1011
+ msgstr ""
1012
+
1013
+ #: ../admin/views/ad-group-edit.php:38
1014
+ msgctxt "Taxonomy Slug"
1015
+ msgid "Slug"
1016
+ msgstr ""
1017
+
1018
+ #: ../admin/views/ad-group-edit.php:40
1019
+ msgid "An id-like string with only letters in lower case, numbers, and hyphens."
1020
+ msgstr ""
1021
+
1022
+ #: ../admin/views/ad-group-edit.php:45
1023
+ msgctxt "Taxonomy Description"
1024
+ msgid "Description"
1025
+ msgstr ""
1026
+
1027
+ #: ../admin/views/ad-group-edit.php:57
1028
+ msgid "Create new Ad Group"
1029
+ msgstr ""
1030
+
1031
+ #: ../admin/views/ad-group-edit.php:59
1032
+ msgid "Update"
1033
+ msgstr ""
1034
+
1035
+ #: ../admin/views/ad-group-list-form-row.php:3 ../admin/views/placements.php:24
1036
+ msgid "Name"
1037
+ msgstr ""
1038
+
1039
+ #: ../admin/views/ad-group-list-form-row.php:5
1040
+ msgid "Description"
1041
+ msgstr ""
1042
+
1043
+ #: ../admin/views/ad-group-list-form-row.php:7 ../admin/views/placements.php:23 ..
1044
+ #: /modules/gadsense/admin/views/adsense-ad-parameters.php:48
1045
+ msgid "Type"
1046
+ msgstr ""
1047
+
1048
+ #: ../admin/views/ad-group-list-form-row.php:16
1049
+ msgid "Number of visible ads"
1050
+ msgstr ""
1051
+
1052
+ #: ../admin/views/ad-group-list-form-row.php:22
1053
+ msgctxt "option to display all ads in an ad groups"
1054
+ msgid "all"
1055
+ msgstr ""
1056
+
1057
+ #: ../admin/views/ad-group-list-form-row.php:25
1058
+ msgid "Number of ads that are visible at the same time"
1059
+ msgstr ""
1060
+
1061
+ #: ../admin/views/ad-group-list-form-row.php:31 ../public/class-advanced-ads.php:
1062
+ #: 564
1063
+ msgid "Ad"
1064
+ msgstr ""
1065
+
1066
+ #: ../admin/views/ad-group-list-form-row.php:32
1067
+ msgid "weight"
1068
+ msgstr ""
1069
+
1070
+ #: ../admin/views/ad-group-list-header.php:3
1071
+ msgid "Ad Group"
1072
+ msgstr ""
1073
+
1074
+ #: ../admin/views/ad-group-list-header.php:4
1075
+ msgid "Details"
1076
+ msgstr ""
1077
+
1078
+ #: ../admin/views/ad-group-list-row.php:8 ../admin/views/ad-group.php:63 ..
1079
+ #: /admin/views/ad-info.php:3 ../admin/views/placements.php:58
1080
+ msgid "shortcode"
1081
+ msgstr ""
1082
+
1083
+ #: ../admin/views/ad-group-list-row.php:11 ../admin/views/ad-group.php:66 ..
1084
+ #: /admin/views/placements.php:61
1085
+ msgid "template"
1086
+ msgstr ""
1087
+
1088
+ #: ../admin/views/ad-group-list-row.php:14
1089
+ #, php-format
1090
+ msgid "Learn more about using groups in the <a href=\"%s\" target=\"_blank\">manual</a>."
1091
+ msgstr ""
1092
+
1093
+ #: ../admin/views/ad-group-list-row.php:19
1094
+ #, php-format
1095
+ msgid "Type: %s"
1096
+ msgstr ""
1097
+
1098
+ #: ../admin/views/ad-group-list-row.php:20
1099
+ #, php-format
1100
+ msgid "ID: %s"
1101
+ msgstr ""
1102
+
1103
+ #: ../admin/views/ad-group.php:18
1104
+ msgid "Ad Groups successfully updated"
1105
+ msgstr ""
1106
+
1107
+ #: ../admin/views/ad-group.php:46
1108
+ #, php-format
1109
+ msgid "Search results for &#8220;%s&#8221;"
1110
+ msgstr ""
1111
+
1112
+ #: ../admin/views/ad-group.php:52
1113
+ msgid ""
1114
+ "Ad Groups are a very flexible method to bundle ads. You can use them to "
1115
+ "display random ads in the frontend or run split tests, but also just for "
1116
+ "informational purposes. Not only can an Ad Groups have multiple ads, but an "
1117
+ "ad can belong to multiple ad groups."
1118
+ msgstr ""
1119
+
1120
+ #: ../admin/views/ad-group.php:60
1121
+ msgid "How to display an Ad Group?"
1122
+ msgstr ""
1123
+
1124
+ #: ../admin/views/ad-group.php:62
1125
+ #, php-format
1126
+ msgid ""
1127
+ "Examples on how to display an ad group? Find more help and examples in the "
1128
+ "<a href=\"%s\" target=\"_blank\">manual</a>"
1129
+ msgstr ""
1130
+
1131
+ #: ../admin/views/ad-group.php:64
1132
+ msgid "To display an ad group with the ID 6 in content fields"
1133
+ msgstr ""
1134
+
1135
+ #: ../admin/views/ad-group.php:67
1136
+ msgid "To display an ad group with the ID 6 in template files"
1137
+ msgstr ""
1138
+
1139
+ #: ../admin/views/ad-group.php:87
1140
+ msgid "Update Groups"
1141
+ msgstr ""
1142
+
1143
+ #: ../admin/views/ad-info-top.php:4
1144
+ msgid "Cool, you just published an ad. What now?"
1145
+ msgstr ""
1146
+
1147
+ #: ../admin/views/ad-info-top.php:5
1148
+ msgid "Display the ad in …"
1149
+ msgstr ""
1150
+
1151
+ #: ../admin/views/ad-info-top.php:7
1152
+ msgid "… every post or page"
1153
+ msgstr ""
1154
+
1155
+ #: ../admin/views/ad-info-top.php:9
1156
+ msgid "Use placements to inject the ad automatically into posts and pages."
1157
+ msgstr ""
1158
+
1159
+ #: ../admin/views/ad-info-top.php:10
1160
+ msgid "Configure Placements"
1161
+ msgstr ""
1162
+
1163
+ #: ../admin/views/ad-info-top.php:12
1164
+ msgid "… Sidebar or Widget Area"
1165
+ msgstr ""
1166
+
1167
+ #: ../admin/views/ad-info-top.php:14
1168
+ msgid "Use the <em>Advanced Ads</em> Widget to display ads in your sidebars."
1169
+ msgstr ""
1170
+
1171
+ #: ../admin/views/ad-info-top.php:15
1172
+ msgid "Configure a Widget"
1173
+ msgstr ""
1174
+
1175
+ #: ../admin/views/ad-info-top.php:17
1176
+ msgid "… a few hand selected posts or pages"
1177
+ msgstr ""
1178
+
1179
+ #: ../admin/views/ad-info-top.php:19
1180
+ msgid ""
1181
+ "Use the shortcode below to manually place the ad in the content editor of "
1182
+ "posts and pages."
1183
+ msgstr ""
1184
+
1185
+ #: ../admin/views/ad-info-top.php:22
1186
+ msgid "… in a custom position in your theme"
1187
+ msgstr ""
1188
+
1189
+ #: ../admin/views/ad-info-top.php:24
1190
+ msgid ""
1191
+ "Use the function below to manually place the ad into your template files. "
1192
+ "This method is needed for more advanced placements like in the header of "
1193
+ "your theme."
1194
+ msgstr ""
1195
+
1196
+ #: ../admin/views/ad-info-top.php:27
1197
+ msgid "… in an anchor ad or pop-up"
1198
+ msgstr ""
1199
+
1200
+ #: ../admin/views/ad-info-top.php:34
1201
+ msgid "You find the settings for the Sticky Ads below."
1202
+ msgstr ""
1203
+
1204
+ #: ../admin/views/ad-info-top.php:41
1205
+ msgid "You find the settings for the Layer and PopUp effects below."
1206
+ msgstr ""
1207
+
1208
+ #: ../admin/views/ad-info-top.php:46
1209
+ #, php-format
1210
+ msgid ""
1211
+ "Learn more about your choices to display an ad in the <a href=\"%s\" "
1212
+ "target=\"_blank\">manual</a>"
1213
+ msgstr ""
1214
+
1215
+ #: ../admin/views/ad-info.php:2
1216
+ #, php-format
1217
+ msgid "Ad Id: %s"
1218
+ msgstr ""
1219
+
1220
+ #: ../admin/views/ad-info.php:5
1221
+ msgid "theme function"
1222
+ msgstr ""
1223
+
1224
+ #: ../admin/views/ad-info.php:7
1225
+ #, php-format
1226
+ msgid "Find more display options in the <a href=\"%s\" target=\"_blank\">manual</a>."
1227
+ msgstr ""
1228
+
1229
+ #: ../admin/views/ad-info.php:12
1230
+ msgid "click to change"
1231
+ msgstr ""
1232
+
1233
+ #: ../admin/views/ad-info.php:16
1234
+ msgid "Add a description"
1235
+ msgstr ""
1236
+
1237
+ #: ../admin/views/ad-info.php:19
1238
+ msgid "Internal description or your own notes about this ad."
1239
+ msgstr ""
1240
+
1241
+ #: ../admin/views/ad-list-filters.php:2
1242
+ msgid "all ad types"
1243
+ msgstr ""
1244
+
1245
+ #: ../admin/views/ad-list-filters.php:5
1246
+ msgid "all ad sizes"
1247
+ msgstr ""
1248
+
1249
+ #: ../admin/views/ad-list-filters.php:8
1250
+ msgid "all ad dates"
1251
+ msgstr ""
1252
+
1253
+ #: ../admin/views/ad-list-filters.php:9
1254
+ msgid "expired"
1255
+ msgstr ""
1256
+
1257
+ #: ../admin/views/ad-list-filters.php:10
1258
+ msgid "any expiry date"
1259
+ msgstr ""
1260
+
1261
+ #: ../admin/views/ad-list-filters.php:11
1262
+ msgid "planned"
1263
+ msgstr ""
1264
+
1265
+ #: ../admin/views/ad-list-filters.php:14
1266
+ msgid "all ad groups"
1267
+ msgstr ""
1268
+
1269
+ #: ../admin/views/ad-main-metabox.php:3
1270
+ msgid "No ad types defined"
1271
+ msgstr ""
1272
+
1273
+ #: ../admin/views/ad-output-metabox.php:1
1274
+ msgid "Everything connected to the ads layout and output."
1275
+ msgstr ""
1276
+
1277
+ #: ../admin/views/ad-output-metabox.php:5
1278
+ msgid "Position"
1279
+ msgstr ""
1280
+
1281
+ #: ../admin/views/ad-output-metabox.php:6
1282
+ msgid "- default -"
1283
+ msgstr ""
1284
+
1285
+ #: ../admin/views/ad-output-metabox.php:7 ../admin/views/placements.php:51
1286
+ msgid "default"
1287
+ msgstr ""
1288
+
1289
+ #: ../admin/views/ad-output-metabox.php:8
1290
+ msgid "left"
1291
+ msgstr ""
1292
+
1293
+ #: ../admin/views/ad-output-metabox.php:11
1294
+ msgid "center"
1295
+ msgstr ""
1296
+
1297
+ #: ../admin/views/ad-output-metabox.php:14
1298
+ msgid "right"
1299
+ msgstr ""
1300
+
1301
+ #: ../admin/views/ad-output-metabox.php:19
1302
+ msgid ""
1303
+ "Check this if you don't want the following elements to float around the ad. "
1304
+ "(adds a clearfix)"
1305
+ msgstr ""
1306
+
1307
+ #: ../admin/views/ad-output-metabox.php:22
1308
+ msgid "Margin"
1309
+ msgstr ""
1310
+
1311
+ #: ../admin/views/ad-output-metabox.php:23
1312
+ msgid "top:"
1313
+ msgstr ""
1314
+
1315
+ #: ../admin/views/ad-output-metabox.php:25
1316
+ msgid "right:"
1317
+ msgstr ""
1318
+
1319
+ #: ../admin/views/ad-output-metabox.php:27
1320
+ msgid "bottom:"
1321
+ msgstr ""
1322
+
1323
+ #: ../admin/views/ad-output-metabox.php:29
1324
+ msgid "left:"
1325
+ msgstr ""
1326
+
1327
+ #: ../admin/views/ad-output-metabox.php:31
1328
+ msgid "tip: use this to add a margin around the ad"
1329
+ msgstr ""
1330
+
1331
+ #: ../admin/views/ad-output-metabox.php:33
1332
+ msgid "container id"
1333
+ msgstr ""
1334
+
1335
+ #: ../admin/views/ad-output-metabox.php:36
1336
+ msgid "Specify the id of the ad container. Leave blank for random or no id."
1337
+ msgstr ""
1338
+
1339
+ #: ../admin/views/ad-output-metabox.php:38
1340
+ msgid "container classes"
1341
+ msgstr ""
1342
+
1343
+ #: ../admin/views/ad-output-metabox.php:41
1344
+ msgid ""
1345
+ "Specify one or more classes for the container. Separate multiple classes "
1346
+ "with a space"
1347
+ msgstr ""
1348
+
1349
+ #: ../admin/views/ad-parameters-metabox.php:25 ../classes/ad_ajax_callbacks.php:54
1350
+ msgid "size:"
1351
+ msgstr ""
1352
+
1353
+ #: ../admin/views/ad-parameters-metabox.php:26 ../classes/ad_ajax_callbacks.php:55
1354
+ msgid "width"
1355
+ msgstr ""
1356
+
1357
+ #: ../admin/views/ad-parameters-metabox.php:27 ../classes/ad_ajax_callbacks.php:56
1358
+ msgid "height"
1359
+ msgstr ""
1360
+
1361
+ #: ../admin/views/ad-submitbox-meta.php:4
1362
+ msgid "Set expiry date"
1363
+ msgstr ""
1364
+
1365
+ #: ../admin/views/ad-submitbox-meta.php:10
1366
+ msgid "Month"
1367
+ msgstr ""
1368
+
1369
+ #: ../admin/views/ad-submitbox-meta.php:14
1370
+ #, php-format
1371
+ msgctxt "1: month number (01, 02, etc.), 2: month abbreviation"
1372
+ msgid "%1$s-%2$s"
1373
+ msgstr ""
1374
+
1375
+ #: ../admin/views/ad-submitbox-meta.php:19
1376
+ msgid "Day"
1377
+ msgstr ""
1378
+
1379
+ #: ../admin/views/ad-submitbox-meta.php:20
1380
+ msgid "Year"
1381
+ msgstr ""
1382
+
1383
+ #: ../admin/views/ad-submitbox-meta.php:21
1384
+ msgid "Hour"
1385
+ msgstr ""
1386
+
1387
+ #: ../admin/views/ad-submitbox-meta.php:22
1388
+ msgid "Minute"
1389
+ msgstr ""
1390
+
1391
+ #: ../admin/views/ad-submitbox-meta.php:27
1392
+ #, php-format
1393
+ msgctxt "order of expiry date fields 1: month, 2: day, 3: year, 4: hour, 5: minute"
1394
+ msgid "%1$s %2$s, %3$s @ %4$s %5$s"
1395
+ msgstr ""
1396
+
1397
+ #: ../admin/views/ad-visitor-metabox.php:4
1398
+ msgid ""
1399
+ "Display conditions that are based on the user. Use with caution on cached "
1400
+ "websites."
1401
+ msgstr ""
1402
+
1403
+ #: ../admin/views/ad-visitor-metabox.php:28
1404
+ msgid ""
1405
+ "Visitor conditions limit the number of users who can see your ad. There is "
1406
+ "no need to set visitor conditions if you want all users to see the ad."
1407
+ msgstr ""
1408
+
1409
+ #: ../admin/views/ad-visitor-metabox.php:30
1410
+ #, php-format
1411
+ msgid ""
1412
+ "Check out cache-busting in <a href=\"%s\" target=\"_blank\">Advanced Ads Pro</a> "
1413
+ "if dynamic features get cached."
1414
+ msgstr ""
1415
+
1416
+ #: ../admin/views/ad-visitor-metabox.php:34
1417
+ msgid "New condition"
1418
+ msgstr ""
1419
+
1420
+ #: ../admin/views/ad-visitor-metabox.php:37
1421
+ msgctxt "visitor condition connector"
1422
+ msgid "and"
1423
+ msgstr ""
1424
+
1425
+ #: ../admin/views/ad-visitor-metabox.php:38
1426
+ msgctxt "visitor condition connector"
1427
+ msgid "or"
1428
+ msgstr ""
1429
+
1430
+ #: ../admin/views/ad-visitor-metabox.php:41
1431
+ msgid "-- choose a condition --"
1432
+ msgstr ""
1433
+
1434
+ #: ../admin/views/ad-visitor-metabox.php:46
1435
+ msgid "add"
1436
+ msgstr ""
1437
+
1438
+ #: ../admin/views/ad-visitor-metabox.php:50
1439
+ #, php-format
1440
+ msgid ""
1441
+ "Define the exact browser width for which an ad should be visible using the "
1442
+ "<a href=\"%s\" target=\"_blank\">Responsive add-on</a>."
1443
+ msgstr ""
1444
+
1445
+ #: ../admin/views/ad-visitor-metabox.php:108
1446
+ msgid ""
1447
+ "The visitor conditions below are deprecated. Please use the new version of "
1448
+ "visitor conditions to replace it."
1449
+ msgstr ""
1450
+
1451
+ #: ../admin/views/ad-visitor-metabox.php:114
1452
+ msgid "Display on all devices"
1453
+ msgstr ""
1454
+
1455
+ #: ../admin/views/ad-visitor-metabox.php:118
1456
+ msgid "only on mobile devices"
1457
+ msgstr ""
1458
+
1459
+ #: ../admin/views/ad-visitor-metabox.php:122
1460
+ msgid "not on mobile devices"
1461
+ msgstr ""
1462
+
1463
+ #: ../admin/views/debug.php:6 ../admin/views/settings.php:45
1464
+ msgid "Debug Page"
1465
+ msgstr ""
1466
+
1467
+ #: ../admin/views/debug.php:7
1468
+ msgid "Work in progress"
1469
+ msgstr ""
1470
+
1471
+ #: ../admin/views/debug.php:8
1472
+ msgid ""
1473
+ "This screen is work in progress. You can use the information if you "
1474
+ "understand them, but there is nothing to do here yet."
1475
+ msgstr ""
1476
+
1477
+ #: ../admin/views/intro.php:18
1478
+ msgid "5-Star Usability"
1479
+ msgstr ""
1480
+
1481
+ #: ../admin/views/intro.php:19
1482
+ msgid ""
1483
+ "Advanced Ads is powerful and easy to use, because it is build on WordPress "
1484
+ "standards. If you know how to publish a post then you know how to create an "
1485
+ "ad."
1486
+ msgstr ""
1487
+
1488
+ #: ../admin/views/intro.php:23
1489
+ msgid "5-Star Support"
1490
+ msgstr ""
1491
+
1492
+ #: ../admin/views/intro.php:24
1493
+ msgid ""
1494
+ "I promise you the best supported ad management plugin for WordPress. Whether "
1495
+ "a pro user or not, you can reach me easily through the support page, in the "
1496
+ "chat on the homepage or replying to a newsletter."
1497
+ msgstr ""
1498
+
1499
+ #: ../admin/views/intro.php:28
1500
+ msgid "5-Star Experience"
1501
+ msgstr ""
1502
+
1503
+ #: ../admin/views/intro.php:29
1504
+ msgid ""
1505
+ "Advanced Ads was built out of my own experience. I am personally using it to "
1506
+ "serve millions of ad impressions per month and constantly test new ways to "
1507
+ "optimize ad settings."
1508
+ msgstr ""
1509
+
1510
+ #: ../admin/views/intro.php:34
1511
+ msgid "Welcome to <strong>Advanced Ads</strong>"
1512
+ msgstr ""
1513
+
1514
+ #: ../admin/views/intro.php:36
1515
+ msgid "Let me give you an introduction into your future ad management solution."
1516
+ msgstr ""
1517
+
1518
+ #: ../admin/views/intro.php:61
1519
+ msgid "Next Steps"
1520
+ msgstr ""
1521
+
1522
+ #: ../admin/views/intro.php:64
1523
+ msgid "Subscribe to the Mailing List"
1524
+ msgstr ""
1525
+
1526
+ #: ../admin/views/intro.php:65
1527
+ msgid "Subscribe to the newsletter and instantly"
1528
+ msgstr ""
1529
+
1530
+ #: ../admin/views/intro.php:67
1531
+ msgid "get 2 free add-ons."
1532
+ msgstr ""
1533
+
1534
+ #: ../admin/views/intro.php:68
1535
+ msgid "reply to the welcome message with a question."
1536
+ msgstr ""
1537
+
1538
+ #: ../admin/views/intro.php:69
1539
+ msgid "subscribe to a dedicated group for the tutorial or AdSense tips."
1540
+ msgstr ""
1541
+
1542
+ #: ../admin/views/intro.php:79
1543
+ #, php-format
1544
+ msgid ""
1545
+ "Get started by creating an ad <a href=\"$1%s\" target=\"blank\">right now</a> or "
1546
+ "watch the <a href=\"$2%s\" target=\"blank\">tutorial video (3:29min)</a> first."
1547
+ msgstr ""
1548
+
1549
+ #: ../admin/views/intro.php:82
1550
+ msgid "Display your ad"
1551
+ msgstr ""
1552
+
1553
+ #: ../admin/views/intro.php:83
1554
+ msgid ""
1555
+ "You can display your ad using a shortcode, widget or one of the powerful "
1556
+ "placements. Placements help you to inject ads into the content or place them "
1557
+ "on your site without coding."
1558
+ msgstr ""
1559
+
1560
+ #: ../admin/views/intro.php:85
1561
+ msgid "List of all available placements"
1562
+ msgstr ""
1563
+
1564
+ #: ../admin/views/intro.php:86
1565
+ msgid "Create a placement"
1566
+ msgstr ""
1567
+
1568
+ #: ../admin/views/placements.php:8
1569
+ msgid ""
1570
+ "Couldn’t create the new placement. Please check your form field and whether "
1571
+ "the name is already in use."
1572
+ msgstr ""
1573
+
1574
+ #: ../admin/views/placements.php:10
1575
+ msgid "Placements updated"
1576
+ msgstr ""
1577
+
1578
+ #: ../admin/views/placements.php:15
1579
+ msgid ""
1580
+ "Placements are physically places in your theme and posts. You can use them "
1581
+ "if you plan to change ads and ad groups on the same place without the need "
1582
+ "to change your templates."
1583
+ msgstr ""
1584
+
1585
+ #: ../admin/views/placements.php:16
1586
+ #, php-format
1587
+ msgid "See also the manual for more information on <a href=\"%s\">placements</a>."
1588
+ msgstr ""
1589
+
1590
+ #: ../admin/views/placements.php:25
1591
+ msgid "Options"
1592
+ msgstr ""
1593
+
1594
+ #: ../admin/views/placements.php:42
1595
+ #, php-format
1596
+ msgid ""
1597
+ "Placement type \"%s\" is missing and was reset to \"default\".<br/>Please check "
1598
+ "if the responsible add-on is activated."
1599
+ msgstr ""
1600
+
1601
+ #: ../admin/views/placements.php:57
1602
+ msgid "show usage"
1603
+ msgstr ""
1604
+
1605
+ #: ../admin/views/placements.php:69
1606
+ msgid "Item"
1607
+ msgstr ""
1608
+
1609
+ #: ../admin/views/placements.php:71 ../admin/views/placements.php:175
1610
+ msgid "--not selected--"
1611
+ msgstr ""
1612
+
1613
+ #: ../admin/views/placements.php:91
1614
+ msgid "Inject"
1615
+ msgstr ""
1616
+
1617
+ #: ../admin/views/placements.php:92
1618
+ msgid "after"
1619
+ msgstr ""
1620
+
1621
+ #: ../admin/views/placements.php:92
1622
+ msgid "before"
1623
+ msgstr ""
1624
+
1625
+ #: ../admin/views/placements.php:112
1626
+ msgid "start counting from bottom"
1627
+ msgstr ""
1628
+
1629
+ #: ../admin/views/placements.php:115
1630
+ msgid "Important Notice"
1631
+ msgstr ""
1632
+
1633
+ #: ../admin/views/placements.php:115
1634
+ msgid ""
1635
+ "Your server is missing an extension. This might break the content injection."
1636
+ "<br/>Ignore this warning if everything works fine or else ask your hosting "
1637
+ "provider to enable <em>mbstring</em>."
1638
+ msgstr ""
1639
+
1640
+ #: ../admin/views/placements.php:125
1641
+ msgid "advanced options"
1642
+ msgstr ""
1643
+
1644
+ #: ../admin/views/placements.php:133
1645
+ msgctxt "checkbox to remove placement"
1646
+ msgid "delete"
1647
+ msgstr ""
1648
+
1649
+ #: ../admin/views/placements.php:139
1650
+ msgid "Save Placements"
1651
+ msgstr ""
1652
+
1653
+ #: ../admin/views/placements.php:141
1654
+ msgid "Create a new placement"
1655
+ msgstr ""
1656
+
1657
+ #: ../admin/views/placements.php:142
1658
+ msgid "New Placement"
1659
+ msgstr ""
1660
+
1661
+ #: ../admin/views/placements.php:148
1662
+ msgid "Choose a placement type"
1663
+ msgstr ""
1664
+
1665
+ #: ../admin/views/placements.php:149
1666
+ #, php-format
1667
+ msgid ""
1668
+ "Placement types define where the ad is going to be displayed. Learn more "
1669
+ "about the different types from the <a href=\"%s\">manual</a>"
1670
+ msgstr ""
1671
+
1672
+ #: ../admin/views/placements.php:166
1673
+ msgid "Please select a placement type."
1674
+ msgstr ""
1675
+
1676
+ #: ../admin/views/placements.php:168
1677
+ msgid "Choose a Name"
1678
+ msgstr ""
1679
+
1680
+ #: ../admin/views/placements.php:169
1681
+ msgid ""
1682
+ "The name of the placement is only visible to you. Tip: choose a descriptive "
1683
+ "one, e.g. <em>Below Post Headline</em>."
1684
+ msgstr ""
1685
+
1686
+ #: ../admin/views/placements.php:170
1687
+ msgid "Placement Name"
1688
+ msgstr ""
1689
+
1690
+ #: ../admin/views/placements.php:171
1691
+ msgid "Please enter a name for your placement."
1692
+ msgstr ""
1693
+
1694
+ #: ../admin/views/placements.php:172
1695
+ msgid "Choose the Ad or Group"
1696
+ msgstr ""
1697
+
1698
+ #: ../admin/views/placements.php:173
1699
+ msgid "The ad or group that should be displayed."
1700
+ msgstr ""
1701
+
1702
+ #: ../admin/views/placements.php:192
1703
+ msgid "Save New Placement"
1704
+ msgstr ""
1705
+
1706
+ #: ../admin/views/post-ad-settings-metabox.php:3
1707
+ msgid "Disable ads on this page"
1708
+ msgstr ""
1709
+
1710
+ #: ../admin/views/setting-license.php:10
1711
+ #, php-format
1712
+ msgid ""
1713
+ "Your license expired. Please visit <a href=\"%s\" target=\"_blank\">the plugin "
1714
+ "page</a> to renew it."
1715
+ msgstr ""
1716
+
1717
+ #: ../admin/views/setting-license.php:14
1718
+ msgid "License key"
1719
+ msgstr ""
1720
+
1721
+ #: ../admin/views/setting-license.php:24
1722
+ msgid "Deactivate License"
1723
+ msgstr ""
1724
+
1725
+ #: ../admin/views/setting-license.php:32
1726
+ msgid "Activate License"
1727
+ msgstr ""
1728
+
1729
+ #: ../admin/views/setting-license.php:35
1730
+ msgid "Please enter a valid license key"
1731
+ msgstr ""
1732
+
1733
+ #: ../admin/views/setting-license.php:37
1734
+ msgid "License key invalid"
1735
+ msgstr ""
1736
+
1737
+ #: ../admin/views/setting-license.php:41
1738
+ msgid "active"
1739
+ msgstr ""
1740
+
1741
+ #: ../admin/views/setting-license.php:42
1742
+ #, php-format
1743
+ msgid "(%d days left)"
1744
+ msgstr ""
1745
+
1746
+ #: ../admin/views/setting-license.php:45
1747
+ msgid ""
1748
+ "1. enter the key and save options; 2. click the activate button behind the "
1749
+ "field"
1750
+ msgstr ""
1751
+
1752
+ #: ../admin/views/settings-disable-ads.php:3
1753
+ msgid "Disable all ads in frontend"
1754
+ msgstr ""
1755
+
1756
+ #: ../admin/views/settings-disable-ads.php:4
1757
+ msgid ""
1758
+ "Use this option to disable all ads in the frontend, but still be able to use "
1759
+ "the plugin."
1760
+ msgstr ""
1761
+
1762
+ #: ../admin/views/settings-disable-ads.php:8
1763
+ msgid "Disable ads on 404 error pages"
1764
+ msgstr ""
1765
+
1766
+ #: ../admin/views/settings-disable-ads.php:12
1767
+ msgid "Disable ads on non-singular pages"
1768
+ msgstr ""
1769
+
1770
+ #: ../admin/views/settings-disable-ads.php:13
1771
+ msgid "e.g. archive pages like categories, tags, authors, front page (if a list)"
1772
+ msgstr ""
1773
+
1774
+ #: ../admin/views/settings-disable-ads.php:16
1775
+ msgid "Disable ads on secondary queries"
1776
+ msgstr ""
1777
+
1778
+ #: ../admin/views/settings-disable-ads.php:17
1779
+ msgid ""
1780
+ "Secondary queries are custom queries of posts outside the main query of a "
1781
+ "page. Try this option if you see ads injected on places where they shouldn’t "
1782
+ "appear."
1783
+ msgstr ""
1784
+
1785
+ #: ../admin/views/settings.php:35
1786
+ msgid "Save settings on this page"
1787
+ msgstr ""
1788
+
1789
+ #: ../admin/views/settings.php:46
1790
+ msgid "Welcome Page"
1791
+ msgstr ""
1792
+
1793
+ #: ../admin/views/settings.php:47
1794
+ msgid "Advanced Ads on WordPress.org"
1795
+ msgstr ""
1796
+
1797
+ #: ../admin/views/settings.php:47
1798
+ msgid "Advanced Ads on wp.org"
1799
+ msgstr ""
1800
+
1801
+ #: ../admin/views/settings.php:48
1802
+ msgid "the company behind Advanced Ads"
1803
+ msgstr ""
1804
+
1805
+ #: ../admin/views/support.php:9
1806
+ msgid "Email was successfully sent."
1807
+ msgstr ""
1808
+
1809
+ #: ../admin/views/support.php:11
1810
+ msgid "Search"
1811
+ msgstr ""
1812
+
1813
+ #: ../admin/views/support.php:12
1814
+ msgid ""
1815
+ "Use the following form to search for solutions in the manual on "
1816
+ "wpadvancedads.com"
1817
+ msgstr ""
1818
+
1819
+ #: ../admin/views/support.php:15
1820
+ msgid "search"
1821
+ msgstr ""
1822
+
1823
+ #: ../admin/views/support.php:18
1824
+ msgid "Possible Issues"
1825
+ msgstr ""
1826
+
1827
+ #: ../admin/views/support.php:19
1828
+ msgid ""
1829
+ "Please fix the red highlighted issues on this page or try to understand "
1830
+ "their consequences before contacting support."
1831
+ msgstr ""
1832
+
1833
+ #: ../admin/views/support.php:23
1834
+ #, php-format
1835
+ msgid ""
1836
+ "Your <strong>PHP version (%s) is too low</strong>. Advanced Ads is built for "
1837
+ "PHP 5.3 and higher. It might work, but updating PHP is highly recommended. "
1838
+ "Please ask your hosting provider for more information."
1839
+ msgstr ""
1840
+
1841
+ #: ../admin/views/support.php:26
1842
+ #, php-format
1843
+ msgid ""
1844
+ "Your <strong>website uses cache</strong>. Some dynamic features like ad "
1845
+ "rotation or visitor conditions might not work properly. Use the cache-"
1846
+ "busting feature of <a href=\"%s\" target=\"_blank\">Advanced Ads Pro</a> to load "
1847
+ "ads dynamically."
1848
+ msgstr ""
1849
+
1850
+ #: ../admin/views/support.php:29
1851
+ msgid "There is a <strong>new WordPress version available</strong>. Please update."
1852
+ msgstr ""
1853
+
1854
+ #: ../admin/views/support.php:32
1855
+ msgid "There are <strong>plugin updates available</strong>. Please update."
1856
+ msgstr ""
1857
+
1858
+ #: ../admin/views/support.php:35
1859
+ #, php-format
1860
+ msgid ""
1861
+ "One or more license keys for <strong>Advanced Ads add-ons are invalid or "
1862
+ "missing</strong>. Please add valid license keys <a href=\"%s\">here</a>."
1863
+ msgstr ""
1864
+
1865
+ #: ../admin/views/support.php:41
1866
+ #, php-format
1867
+ msgid ""
1868
+ "<strong>Autoptimize plugin detected</strong>. While this plugin is great for "
1869
+ "site performance, it is known to alter code, including scripts from ad "
1870
+ "networks. <a href=\"%s\" target=\"_blank\">Advanced Ads Pro</a> has a build-in "
1871
+ "support for Autoptimize."
1872
+ msgstr ""
1873
+
1874
+ #: ../admin/views/support.php:44
1875
+ #, php-format
1876
+ msgid ""
1877
+ "Plugins that are known to cause (partial) problems: <strong>%1$s</strong>. "
1878
+ "<a href=\"%2$s\" target=\"_blank\">Learn more</a>."
1879
+ msgstr ""
1880
+
1881
+ #: ../admin/views/support.php:48
1882
+ #, php-format
1883
+ msgid ""
1884
+ "Ads are disabled for all or some pages. See \"disabled ads\" in <a "
1885
+ "href=\"%s\">settings</a>."
1886
+ msgstr ""
1887
+
1888
+ #: ../admin/views/support.php:59
1889
+ msgid "Contact"
1890
+ msgstr ""
1891
+
1892
+ #: ../admin/views/support.php:60
1893
+ #, php-format
1894
+ msgid ""
1895
+ "Please search the manual for a solution and take a look at <a href=\"%s\" "
1896
+ "target=\"_blank\">Ads not showing up?</a> before contacting me for help."
1897
+ msgstr ""
1898
+
1899
+ #: ../admin/views/support.php:65
1900
+ msgid "your email"
1901
+ msgstr ""
1902
+
1903
+ #: ../admin/views/support.php:69
1904
+ msgid "your name"
1905
+ msgstr ""
1906
+
1907
+ #: ../admin/views/support.php:73
1908
+ msgid "your message"
1909
+ msgstr ""
1910
+
1911
+ #: ../admin/views/support.php:78
1912
+ msgid "send"
1913
+ msgstr ""
1914
+
1915
+ #: ../admin/views/notices/adblock.php:3
1916
+ msgid ""
1917
+ "Please disable your <strong>AdBlocker</strong> to prevent problems with your "
1918
+ "ad setup."
1919
+ msgstr ""
1920
+
1921
+ #: ../classes/ad_placements.php:31
1922
+ msgid "Manual Placement"
1923
+ msgstr ""
1924
+
1925
+ #: ../classes/ad_placements.php:32
1926
+ msgid "Manual placement to use as function or shortcode."
1927
+ msgstr ""
1928
+
1929
+ #: ../classes/ad_placements.php:36
1930
+ msgid "Header Code"
1931
+ msgstr ""
1932
+
1933
+ #: ../classes/ad_placements.php:37
1934
+ msgid "Injected in Header (before closing &lt;/head&gt; Tag, often not visible)."
1935
+ msgstr ""
1936
+
1937
+ #: ../classes/ad_placements.php:41
1938
+ msgid "Footer Code"
1939
+ msgstr ""
1940
+
1941
+ #: ../classes/ad_placements.php:42
1942
+ msgid "Injected in Footer (before closing &lt;/body&gt; Tag)."
1943
+ msgstr ""
1944
+
1945
+ #: ../classes/ad_placements.php:46
1946
+ msgid "Before Content"
1947
+ msgstr ""
1948
+
1949
+ #: ../classes/ad_placements.php:47
1950
+ msgid "Injected before the post content."
1951
+ msgstr ""
1952
+
1953
+ #: ../classes/ad_placements.php:51
1954
+ msgid "After Content"
1955
+ msgstr ""
1956
+
1957
+ #: ../classes/ad_placements.php:52
1958
+ msgid "Injected after the post content."
1959
+ msgstr ""
1960
+
1961
+ #: ../classes/ad_placements.php:56
1962
+ msgid "Post Content"
1963
+ msgstr ""
1964
+
1965
+ #: ../classes/ad_placements.php:57
1966
+ msgid ""
1967
+ "Injected into the post content. You can choose the paragraph after which the "
1968
+ "ad content is displayed."
1969
+ msgstr ""
1970
+
1971
+ #: ../classes/ad_placements.php:61
1972
+ msgid "Sidebar Widget"
1973
+ msgstr ""
1974
+
1975
+ #: ../classes/ad_placements.php:62
1976
+ msgid ""
1977
+ "Create a sidebar widget with an ad. Can be placed and used like any other "
1978
+ "widget."
1979
+ msgstr ""
1980
+
1981
+ #: ../classes/ad_placements.php:204
1982
+ #, php-format
1983
+ msgid "paragraph (%s)"
1984
+ msgstr ""
1985
+
1986
+ #: ../classes/ad_placements.php:205
1987
+ #, php-format
1988
+ msgid "headline 2 (%s)"
1989
+ msgstr ""
1990
+
1991
+ #: ../classes/ad_placements.php:206
1992
+ #, php-format
1993
+ msgid "headline 3 (%s)"
1994
+ msgstr ""
1995
+
1996
+ #: ../classes/ad_placements.php:207
1997
+ #, php-format
1998
+ msgid "headline 4 (%s)"
1999
+ msgstr ""
2000
+
2001
+ #: ../classes/ad_type_content.php:35
2002
+ msgid "Rich Content"
2003
+ msgstr ""
2004
+
2005
+ #: ../classes/ad_type_content.php:36
2006
+ msgid ""
2007
+ "The full content editor from WordPress with all features like shortcodes, "
2008
+ "image upload or styling, but also simple text/html mode for scripts and code."
2009
+ msgstr ""
2010
+
2011
+ #: ../classes/ad_type_image.php:34
2012
+ msgid "Image Ad"
2013
+ msgstr ""
2014
+
2015
+ #: ../classes/ad_type_image.php:35
2016
+ msgid "Ads in various image formats."
2017
+ msgstr ""
2018
+
2019
+ #: ../classes/ad_type_image.php:55
2020
+ msgid "Insert File"
2021
+ msgstr ""
2022
+
2023
+ #: ../classes/ad_type_image.php:55
2024
+ msgid "Insert"
2025
+ msgstr ""
2026
+
2027
+ #: ../classes/ad_type_image.php:55
2028
+ msgid "select image"
2029
+ msgstr ""
2030
+
2031
+ #: ../classes/ad_type_image.php:56
2032
+ msgid "edit"
2033
+ msgstr ""
2034
+
2035
+ #: ../classes/ad_type_image.php:65
2036
+ msgid "url"
2037
+ msgstr ""
2038
+
2039
+ #: ../classes/ad_type_image.php:67
2040
+ #, php-format
2041
+ msgid ""
2042
+ "Pro: Open this url in a new window and track impressions and clicks with the "
2043
+ "<a href=\"%s\" target=\"_blank\">Tracking add-on</a>"
2044
+ msgstr ""
2045
+
2046
+ #: ../classes/ad_type_plain.php:31
2047
+ msgid "Plain Text and Code"
2048
+ msgstr ""
2049
+
2050
+ #: ../classes/ad_type_plain.php:32
2051
+ msgid ""
2052
+ "Simple text editor without any filters. You might use it to display "
2053
+ "unfiltered content, php code or javascript. Shortcodes and other WordPress "
2054
+ "content field magic does not work here."
2055
+ msgstr ""
2056
+
2057
+ #: ../classes/ad_type_plain.php:67
2058
+ msgid "Insert plain text or code into this field."
2059
+ msgstr ""
2060
+
2061
+ #: ../classes/ad_type_plain.php:70
2062
+ msgid "Execute PHP code (wrapped in <code>&lt;?php ?&gt;</code>)"
2063
+ msgstr ""
2064
+
2065
+ #: ../classes/checks.php:223
2066
+ #, php-format
2067
+ msgid ""
2068
+ "Possible conflict between jQueryUI library, used by Advanced Ads and other "
2069
+ "libraries (probably <a href=\"%s\">Twitter Bootstrap</a>). This might lead to "
2070
+ "misfortunate formats in forms, but should not damage features."
2071
+ msgstr ""
2072
+
2073
+ #: ../classes/EDD_SL_Plugin_Updater.php:177
2074
+ #, php-format
2075
+ msgid ""
2076
+ "There is a new version of %1$s available. <a target=\"_blank\" "
2077
+ "class=\"thickbox\" href=\"%2$s\">View version %3$s details</a>."
2078
+ msgstr ""
2079
+
2080
+ #: ../classes/EDD_SL_Plugin_Updater.php:184
2081
+ #, php-format
2082
+ msgid ""
2083
+ "There is a new version of %1$s available. <a target=\"_blank\" "
2084
+ "class=\"thickbox\" href=\"%2$s\">View version %3$s details</a> or <a "
2085
+ "href=\"%4$s\">update now</a>."
2086
+ msgstr ""
2087
+
2088
+ #: ../classes/EDD_SL_Plugin_Updater.php:324
2089
+ msgid "You do not have permission to install plugin updates"
2090
+ msgstr ""
2091
+
2092
+ #: ../classes/EDD_SL_Plugin_Updater.php:324
2093
+ msgid "Error"
2094
+ msgstr ""
2095
+
2096
+ #: ../classes/visitor-conditions.php:32
2097
+ msgid "mobile device"
2098
+ msgstr ""
2099
+
2100
+ #: ../classes/visitor-conditions.php:33
2101
+ msgid "Display ads only on mobile devices or hide them."
2102
+ msgstr ""
2103
+
2104
+ #: ../classes/visitor-conditions.php:38
2105
+ msgid "logged in visitor"
2106
+ msgstr ""
2107
+
2108
+ #: ../classes/visitor-conditions.php:39
2109
+ msgid "Whether the visitor has to be logged in or not in order to see the ads."
2110
+ msgstr ""
2111
+
2112
+ #: ../classes/visitor-conditions.php:72
2113
+ #, php-format
2114
+ msgid ""
2115
+ "Pro: Display ads by the available space on the device using the <a href=\"%s\" "
2116
+ "target=\"_blank\">Responsive add-on</a>"
2117
+ msgstr ""
2118
+
2119
+ #: ../classes/visitor-conditions.php:102
2120
+ msgid "is"
2121
+ msgstr ""
2122
+
2123
+ #: ../classes/visitor-conditions.php:103
2124
+ msgid "is not"
2125
+ msgstr ""
2126
+
2127
+ #: ../classes/visitor-conditions.php:135
2128
+ msgid "equal"
2129
+ msgstr ""
2130
+
2131
+ #: ../classes/visitor-conditions.php:136
2132
+ msgid "equal or higher"
2133
+ msgstr ""
2134
+
2135
+ #: ../classes/visitor-conditions.php:137
2136
+ msgid "equal or lower"
2137
+ msgstr ""
2138
+
2139
+ #: ../classes/visitor-conditions.php:169
2140
+ msgid "contains"
2141
+ msgstr ""
2142
+
2143
+ #: ../classes/visitor-conditions.php:170
2144
+ msgid "starts with"
2145
+ msgstr ""
2146
+
2147
+ #: ../classes/visitor-conditions.php:171
2148
+ msgid "ends with"
2149
+ msgstr ""
2150
+
2151
+ #: ../classes/visitor-conditions.php:172
2152
+ msgid "matches"
2153
+ msgstr ""
2154
+
2155
+ #: ../classes/visitor-conditions.php:173
2156
+ msgid "matches regex"
2157
+ msgstr ""
2158
+
2159
+ #: ../classes/visitor-conditions.php:174
2160
+ msgid "does not contain"
2161
+ msgstr ""
2162
+
2163
+ #: ../classes/visitor-conditions.php:175
2164
+ msgid "does not start with"
2165
+ msgstr ""
2166
+
2167
+ #: ../classes/visitor-conditions.php:176
2168
+ msgid "does not end with"
2169
+ msgstr ""
2170
+
2171
+ #: ../classes/visitor-conditions.php:177
2172
+ msgid "does not match"
2173
+ msgstr ""
2174
+
2175
+ #: ../classes/visitor-conditions.php:178
2176
+ msgid "does not match regex"
2177
+ msgstr ""
2178
+
2179
+ #: ../classes/widget.php:25
2180
+ msgid "Display Ads and Ad Groups."
2181
+ msgstr ""
2182
+
2183
+ #: ../classes/widget.php:67
2184
+ msgid "Title:"
2185
+ msgstr ""
2186
+
2187
+ #: ../includes/array_ad_conditions.php:38
2188
+ msgid "Post Types"
2189
+ msgstr ""
2190
+
2191
+ #: ../includes/array_ad_conditions.php:44
2192
+ msgid "Categories, Tags and Taxonomies"
2193
+ msgstr ""
2194
+
2195
+ #: ../includes/array_ad_conditions.php:45
2196
+ msgid ""
2197
+ "Choose terms from public category, tag and other taxonomies a post must "
2198
+ "belong to in order to have ads."
2199
+ msgstr ""
2200
+
2201
+ #: ../includes/array_ad_conditions.php:50
2202
+ msgid "Category Archives"
2203
+ msgstr ""
2204
+
2205
+ #: ../includes/array_ad_conditions.php:51
2206
+ msgid "comma seperated IDs of category archives"
2207
+ msgstr ""
2208
+
2209
+ #: ../includes/array_ad_conditions.php:56
2210
+ msgid "Individual Posts, Pages and Public Post Types"
2211
+ msgstr ""
2212
+
2213
+ #: ../includes/array_ad_conditions.php:62
2214
+ msgid "Home Page"
2215
+ msgstr ""
2216
+
2217
+ #: ../includes/array_ad_conditions.php:63
2218
+ msgid "show on Home page"
2219
+ msgstr ""
2220
+
2221
+ #: ../includes/array_ad_conditions.php:67
2222
+ msgid "Singular Pages"
2223
+ msgstr ""
2224
+
2225
+ #: ../includes/array_ad_conditions.php:68
2226
+ msgid "show on singular pages/posts"
2227
+ msgstr ""
2228
+
2229
+ #: ../includes/array_ad_conditions.php:72
2230
+ msgid "Archive Pages"
2231
+ msgstr ""
2232
+
2233
+ #: ../includes/array_ad_conditions.php:73
2234
+ msgid "show on any type of archive page (category, tag, author and date)"
2235
+ msgstr ""
2236
+
2237
+ #: ../includes/array_ad_conditions.php:77
2238
+ msgid "Search Results"
2239
+ msgstr ""
2240
+
2241
+ #: ../includes/array_ad_conditions.php:78
2242
+ msgid "show on search result pages"
2243
+ msgstr ""
2244
+
2245
+ #: ../includes/array_ad_conditions.php:82
2246
+ msgid "404 Page"
2247
+ msgstr ""
2248
+
2249
+ #: ../includes/array_ad_conditions.php:83
2250
+ msgid "show on 404 error page"
2251
+ msgstr ""
2252
+
2253
+ #: ../includes/array_ad_conditions.php:87
2254
+ msgid "Attachment Pages"
2255
+ msgstr ""
2256
+
2257
+ #: ../includes/array_ad_conditions.php:88
2258
+ msgid "show on attachment pages"
2259
+ msgstr ""
2260
+
2261
+ #: ../includes/array_ad_conditions.php:92
2262
+ msgid "Secondary Queries"
2263
+ msgstr ""
2264
+
2265
+ #: ../includes/array_ad_conditions.php:93
2266
+ msgid "allow ads in secondary queries"
2267
+ msgstr ""
2268
+
2269
+ #: ../modules/ad-blocker/admin/admin.php:139
2270
+ msgid "The asset folder was rebuilt successfully"
2271
+ msgstr ""
2272
+
2273
+ #: ../modules/ad-blocker/admin/admin.php:261
2274
+ msgid "Ad blocker fix"
2275
+ msgstr ""
2276
+
2277
+ #: ../modules/ad-blocker/admin/admin.php:301
2278
+ msgid "There is no writable upload folder"
2279
+ msgstr ""
2280
+
2281
+ #: ../modules/ad-blocker/admin/admin.php:324
2282
+ #, php-format
2283
+ msgid "Unable to rename \"%s\" directory"
2284
+ msgstr ""
2285
+
2286
+ #: ../modules/ad-blocker/admin/admin.php:342 ../modules/ad-blocker/admin/admin.
2287
+ #: php:356 ../modules/ad-blocker/admin/admin.php:374
2288
+ #, php-format
2289
+ msgid "Unable to copy assets to the \"%s\" directory"
2290
+ msgstr ""
2291
+
2292
+ #: ../modules/ad-blocker/admin/admin.php:406 ../modules/ad-blocker/admin/admin.
2293
+ #: php:416
2294
+ #, php-format
2295
+ msgid "We do not have direct write access to the \"%s\" directory"
2296
+ msgstr ""
2297
+
2298
+ #: ../modules/ad-blocker/admin/admin.php:425
2299
+ msgid "There are no assets to copy"
2300
+ msgstr ""
2301
+
2302
+ #: ../modules/ad-blocker/admin/admin.php:481
2303
+ #, php-format
2304
+ msgid ""
2305
+ "Unable to create \"%s\" directory. Is its parent directory writable by the "
2306
+ "server?"
2307
+ msgstr ""
2308
+
2309
+ #: ../modules/ad-blocker/admin/admin.php:493
2310
+ #, php-format
2311
+ msgid "Unable to copy files to %s"
2312
+ msgstr ""
2313
+
2314
+ #: ../modules/ad-blocker/admin/admin.php:560
2315
+ msgid ""
2316
+ "Prevents ad block software from breaking your website when blocking asset "
2317
+ "files (.js, .css)."
2318
+ msgstr ""
2319
+
2320
+ #: ../modules/ad-blocker/admin/views/rebuild_form.php:1
2321
+ msgid "Ad blocker file folder"
2322
+ msgstr ""
2323
+
2324
+ #: ../modules/ad-blocker/admin/views/rebuild_form.php:10
2325
+ msgid "Upload folder is not writable"
2326
+ msgstr ""
2327
+
2328
+ #: ../modules/ad-blocker/admin/views/rebuild_form.php:23
2329
+ msgid "Asset path"
2330
+ msgstr ""
2331
+
2332
+ #: ../modules/ad-blocker/admin/views/rebuild_form.php:27
2333
+ msgid "Asset URL"
2334
+ msgstr ""
2335
+
2336
+ #: ../modules/ad-blocker/admin/views/rebuild_form.php:31
2337
+ msgid "Rename asset folder"
2338
+ msgstr ""
2339
+
2340
+ #: ../modules/ad-blocker/admin/views/rebuild_form.php:34
2341
+ msgid "Check if you want to change the name of the assets folder"
2342
+ msgstr ""
2343
+
2344
+ #: ../modules/ad-blocker/admin/views/rebuild_form.php:41
2345
+ #, php-format
2346
+ msgid ""
2347
+ "Please, rebuild the asset folder. The new folder will be located in "
2348
+ "<strong>%s</strong>"
2349
+ msgstr ""
2350
+
2351
+ #: ../modules/ad-blocker/admin/views/rebuild_form.php:44
2352
+ msgid "Rebuild asset folder"
2353
+ msgstr ""
2354
+
2355
+ #: ../modules/gadsense/main.php:19
2356
+ msgid " at "
2357
+ msgstr ""
2358
+
2359
+ #: ../modules/gadsense/admin/admin.php:26 ../modules/gadsense/admin/views/adsense-
2360
+ #: ad-parameters.php:51
2361
+ msgid "Responsive"
2362
+ msgstr ""
2363
+
2364
+ #: ../modules/gadsense/admin/admin.php:44
2365
+ msgid "The ad details couldn't be retrieved from the ad code"
2366
+ msgstr ""
2367
+
2368
+ #: ../modules/gadsense/admin/admin.php:45
2369
+ msgid ""
2370
+ "Warning : The AdSense account from this code does not match the one set with "
2371
+ "the Advanced Ads Plugin. This ad might cause troubles when used in the front "
2372
+ "end."
2373
+ msgstr ""
2374
+
2375
+ #: ../modules/gadsense/admin/admin.php:123 ../modules/gadsense/admin/admin.php:262
2376
+ msgid "AdSense"
2377
+ msgstr ""
2378
+
2379
+ #: ../modules/gadsense/admin/admin.php:131
2380
+ msgid "AdSense ID"
2381
+ msgstr ""
2382
+
2383
+ #: ../modules/gadsense/admin/admin.php:140
2384
+ msgid "Limit to 3 ads"
2385
+ msgstr ""
2386
+
2387
+ #: ../modules/gadsense/admin/admin.php:149
2388
+ msgid "Activate Page-Level ads"
2389
+ msgstr ""
2390
+
2391
+ #: ../modules/gadsense/admin/admin.php:169
2392
+ #, php-format
2393
+ msgid ""
2394
+ "Please enter your Publisher ID in order to use AdSense on your page. See the "
2395
+ "<a href=\"%s\" target=\"_blank\">manual</a> for more information."
2396
+ msgstr ""
2397
+
2398
+ #: ../modules/gadsense/admin/admin.php:183
2399
+ msgid "Your AdSense Publisher ID <em>(pub-xxxxxxxxxxxxxx)</em>"
2400
+ msgstr ""
2401
+
2402
+ #: ../modules/gadsense/admin/admin.php:195
2403
+ #, php-format
2404
+ msgid "Limit to %d AdSense ads"
2405
+ msgstr ""
2406
+
2407
+ #: ../modules/gadsense/admin/admin.php:199
2408
+ #, php-format
2409
+ msgid ""
2410
+ "Currently, Google AdSense <a target=\"_blank\" href=\"%s\" title=\"Terms Of "
2411
+ "Service\">TOS</a> imposes a limit of %d display ads per page. You can disable "
2412
+ "this limitation at your own risks."
2413
+ msgstr ""
2414
+
2415
+ #: ../modules/gadsense/admin/admin.php:202
2416
+ msgid "Notice: Advanced Ads only considers the AdSense ad type for this limit."
2417
+ msgstr ""
2418
+
2419
+ #: ../modules/gadsense/admin/admin.php:205
2420
+ msgid ""
2421
+ "Due to technical restrictions, the limit does not work on placements with "
2422
+ "cache-busting enabled."
2423
+ msgstr ""
2424
+
2425
+ #: ../modules/gadsense/admin/admin.php:219
2426
+ msgid "Insert Page-Level ads code on all pages."
2427
+ msgstr ""
2428
+
2429
+ #: ../modules/gadsense/admin/admin.php:221
2430
+ msgid ""
2431
+ "You still need to enable Page-Level ads in your AdSense account. See <a "
2432
+ "href=\"https://support.google.com/adsense/answer/6245304\" "
2433
+ "target=\"_blank\">AdSense Help</a> (requires AdSense-login) for more "
2434
+ "information"
2435
+ msgstr ""
2436
+
2437
+ #: ../modules/gadsense/admin/admin.php:240 ../modules/gadsense/includes/class-ad-
2438
+ #: type-adsense.php:73
2439
+ msgid "The Publisher ID has an incorrect format. (must start with \"pub-\")"
2440
+ msgstr ""
2441
+
2442
+ #: ../modules/gadsense/admin/views/adsense-ad-parameters.php:23
2443
+ msgid "Copy&Paste existing ad code"
2444
+ msgstr ""
2445
+
2446
+ #: ../modules/gadsense/admin/views/adsense-ad-parameters.php:29
2447
+ msgid "Ad Slot ID"
2448
+ msgstr ""
2449
+
2450
+ #: ../modules/gadsense/admin/views/adsense-ad-parameters.php:37
2451
+ #, php-format
2452
+ msgid "Publisher ID: %s"
2453
+ msgstr ""
2454
+
2455
+ #: ../modules/gadsense/admin/views/adsense-ad-parameters.php:44
2456
+ #, php-format
2457
+ msgid "Please <a href=\"%s\" target=\"_blank\">change it here</a>."
2458
+ msgstr ""
2459
+
2460
+ #: ../modules/gadsense/admin/views/adsense-ad-parameters.php:50
2461
+ msgid "Normal"
2462
+ msgstr ""
2463
+
2464
+ #: ../modules/gadsense/admin/views/adsense-ad-parameters.php:55
2465
+ #, php-format
2466
+ msgid ""
2467
+ "Use the <a href=\"%s\" target=\"_blank\">Responsive add-on</a> in order to "
2468
+ "define the exact creative for each browser width."
2469
+ msgstr ""
2470
+
2471
+ #: ../modules/gadsense/admin/views/adsense-ad-parameters.php:60
2472
+ msgid "Resizing"
2473
+ msgstr ""
2474
+
2475
+ #: ../modules/gadsense/admin/views/adsense-ad-parameters.php:72
2476
+ msgid "Copy the ad code from your AdSense account and paste it in the area below"
2477
+ msgstr ""
2478
+
2479
+ #: ../modules/gadsense/admin/views/adsense-ad-parameters.php:75
2480
+ msgid "Get details"
2481
+ msgstr ""
2482
+
2483
+ #: ../modules/gadsense/admin/views/adsense-ad-parameters.php:76
2484
+ msgid "Close"
2485
+ msgstr ""
2486
+
2487
+ #: ../modules/gadsense/includes/class-ad-type-adsense.php:35
2488
+ msgid "AdSense ad"
2489
+ msgstr ""
2490
+
2491
+ #: ../modules/gadsense/includes/class-ad-type-adsense.php:36
2492
+ msgid "Use ads from your Google AdSense account"
2493
+ msgstr ""
2494
+
2495
+ #: ../modules/gadsense/includes/class-ad-type-adsense.php:105
2496
+ msgid "Your AdSense Publisher ID is missing."
2497
+ msgstr ""
2498
+
2499
+ #: ../modules/gadsense/includes/class-gadsense-data.php:46
2500
+ msgid "Auto"
2501
+ msgstr ""
2502
+
2503
+ #: ../public/class-advanced-ads.php:295
2504
+ msgid "Advanced Ads Error following:"
2505
+ msgstr ""
2506
+
2507
+ #: ../public/class-advanced-ads.php:298
2508
+ #, php-format
2509
+ msgid "Advanced Ads Error: %s"
2510
+ msgstr ""
2511
+
2512
+ #: ../public/class-advanced-ads.php:526
2513
+ msgctxt "ad group general name"
2514
+ msgid "Ad Groups"
2515
+ msgstr ""
2516
+
2517
+ #: ../public/class-advanced-ads.php:527
2518
+ msgctxt "ad group singular name"
2519
+ msgid "Ad Group"
2520
+ msgstr ""
2521
+
2522
+ #: ../public/class-advanced-ads.php:528
2523
+ msgid "Search Ad Groups"
2524
+ msgstr ""
2525
+
2526
+ #: ../public/class-advanced-ads.php:529
2527
+ msgid "All Ad Groups"
2528
+ msgstr ""
2529
+
2530
+ #: ../public/class-advanced-ads.php:530
2531
+ msgid "Parent Ad Groups"
2532
+ msgstr ""
2533
+
2534
+ #: ../public/class-advanced-ads.php:531
2535
+ msgid "Parent Ad Groups:"
2536
+ msgstr ""
2537
+
2538
+ #: ../public/class-advanced-ads.php:532
2539
+ msgid "Edit Ad Group"
2540
+ msgstr ""
2541
+
2542
+ #: ../public/class-advanced-ads.php:533
2543
+ msgid "Update Ad Group"
2544
+ msgstr ""
2545
+
2546
+ #: ../public/class-advanced-ads.php:534
2547
+ msgid "Add New Ad Group"
2548
+ msgstr ""
2549
+
2550
+ #: ../public/class-advanced-ads.php:535
2551
+ msgid "New Ad Groups Name"
2552
+ msgstr ""
2553
+
2554
+ #: ../public/class-advanced-ads.php:537
2555
+ msgid "No Ad Group found"
2556
+ msgstr ""
2557
+
2558
+ #: ../public/class-advanced-ads.php:565 ../public/class-advanced-ads.php:569
2559
+ msgid "New Ad"
2560
+ msgstr ""
2561
+
2562
+ #: ../public/class-advanced-ads.php:566
2563
+ msgid "Add New Ad"
2564
+ msgstr ""
2565
+
2566
+ #: ../public/class-advanced-ads.php:568
2567
+ msgid "Edit Ad"
2568
+ msgstr ""
2569
+
2570
+ #: ../public/class-advanced-ads.php:570
2571
+ msgid "View"
2572
+ msgstr ""
2573
+
2574
+ #: ../public/class-advanced-ads.php:571
2575
+ msgid "View the Ad"
2576
+ msgstr ""
2577
+
2578
+ #: ../public/class-advanced-ads.php:572
2579
+ msgid "Search Ads"
2580
+ msgstr ""
2581
+
2582
+ #: ../public/class-advanced-ads.php:573
2583
+ msgid "No Ads found"
2584
+ msgstr ""
2585
+
2586
+ #: ../public/class-advanced-ads.php:574
2587
+ msgid "No Ads found in Trash"
2588
+ msgstr ""
2589
+
2590
+ #: ../public/class-advanced-ads.php:575
2591
+ msgid "Parent Ad"
2592
+ msgstr ""
2593
+
2594
+ #: ../admin/class-advanced-ads-admin.php:550
2595
+ msgid "Display Conditions"
2596
+ msgstr "Anzeigebedingungen"
2597
+
2598
+ #: ../admin/class-advanced-ads-admin.php:1004
2599
+ msgid "(display to all)"
2600
+ msgstr "(für alle anzeigen)"
2601
+
2602
+ #: ../admin/includes/class-display-condition-callbacks.php:87
2603
+ msgid "Display here"
2604
+ msgstr "Hier anzeigen"
languages/advanced-ads.pot CHANGED
@@ -5,7 +5,7 @@ msgstr ""
5
  "Project-Id-Version: Advanved Ads\n"
6
  "Report-Msgid-Bugs-To: http://wordpress.org/plugins/plugin-name\n"
7
  "POT-Creation-Date: 2015-01-27 16:47+0100\n"
8
- "POT-Revision-Date: Mon Dec 07 2015 13:39:53 GMT+0100 (CET)\n"
9
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
10
  "Last-Translator: Thomas Maier <post@webzunft.de>\n"
11
  "Language-Team: webgilde <thomas.maier@webgilde.com>\n"
@@ -923,11 +923,15 @@ msgid ""
923
  "and Advanced Ads from my dedicated newsletter."
924
  msgstr ""
925
 
926
- #: ../admin/includes/notices.php:52 ../admin/views/support.php:35
927
- #, php-format
928
  msgid ""
929
  "One or more license keys for <strong>Advanced Ads add-ons are invalid or "
930
- "missing</strong>. Please add valid license keys <a href=\"%s\">here</a>."
 
 
 
 
 
931
  msgstr ""
932
 
933
  #: ../admin/includes/notices.php:57
@@ -1356,15 +1360,15 @@ msgid ""
1356
  "with a space"
1357
  msgstr ""
1358
 
1359
- #: ../admin/views/ad-parameters-metabox.php:25 ../classes/ad_ajax_callbacks.php:52
1360
  msgid "size:"
1361
  msgstr ""
1362
 
1363
- #: ../admin/views/ad-parameters-metabox.php:26 ../classes/ad_ajax_callbacks.php:53
1364
  msgid "width"
1365
  msgstr ""
1366
 
1367
- #: ../admin/views/ad-parameters-metabox.php:27 ../classes/ad_ajax_callbacks.php:54
1368
  msgid "height"
1369
  msgstr ""
1370
 
@@ -1470,7 +1474,7 @@ msgstr ""
1470
  msgid "not on mobile devices"
1471
  msgstr ""
1472
 
1473
- #: ../admin/views/debug.php:6 ../admin/views/settings.php:41
1474
  msgid "Debug Page"
1475
  msgstr ""
1476
 
@@ -1792,23 +1796,23 @@ msgid ""
1792
  "appear."
1793
  msgstr ""
1794
 
1795
- #: ../admin/views/settings.php:34
1796
  msgid "Save settings on this page"
1797
  msgstr ""
1798
 
1799
- #: ../admin/views/settings.php:42
1800
  msgid "Welcome Page"
1801
  msgstr ""
1802
 
1803
- #: ../admin/views/settings.php:43
1804
  msgid "Advanced Ads on WordPress.org"
1805
  msgstr ""
1806
 
1807
- #: ../admin/views/settings.php:43
1808
  msgid "Advanced Ads on wp.org"
1809
  msgstr ""
1810
 
1811
- #: ../admin/views/settings.php:44
1812
  msgid "the company behind Advanced Ads"
1813
  msgstr ""
1814
 
@@ -1836,8 +1840,8 @@ msgstr ""
1836
 
1837
  #: ../admin/views/support.php:19
1838
  msgid ""
1839
- "Please fix the issues below or try to understand their consequences before "
1840
- "contacting support."
1841
  msgstr ""
1842
 
1843
  #: ../admin/views/support.php:23
@@ -1865,6 +1869,13 @@ msgstr ""
1865
  msgid "There are <strong>plugin updates available</strong>. Please update."
1866
  msgstr ""
1867
 
 
 
 
 
 
 
 
1868
  #: ../admin/views/support.php:41
1869
  #, php-format
1870
  msgid ""
@@ -1888,30 +1899,30 @@ msgid ""
1888
  "href=\"%s\">settings</a>."
1889
  msgstr ""
1890
 
1891
- #: ../admin/views/support.php:57
1892
  msgid "Contact"
1893
  msgstr ""
1894
 
1895
- #: ../admin/views/support.php:58
1896
  #, php-format
1897
  msgid ""
1898
  "Please search the manual for a solution and take a look at <a href=\"%s\" "
1899
  "target=\"_blank\">Ads not showing up?</a> before contacting me for help."
1900
  msgstr ""
1901
 
1902
- #: ../admin/views/support.php:63
1903
  msgid "your email"
1904
  msgstr ""
1905
 
1906
- #: ../admin/views/support.php:67
1907
  msgid "your name"
1908
  msgstr ""
1909
 
1910
- #: ../admin/views/support.php:71
1911
  msgid "your message"
1912
  msgstr ""
1913
 
1914
- #: ../admin/views/support.php:76
1915
  msgid "send"
1916
  msgstr ""
1917
 
@@ -2039,6 +2050,13 @@ msgstr ""
2039
  msgid "url"
2040
  msgstr ""
2041
 
 
 
 
 
 
 
 
2042
  #: ../classes/ad_type_plain.php:31
2043
  msgid "Plain Text and Code"
2044
  msgstr ""
@@ -2105,63 +2123,70 @@ msgstr ""
2105
  msgid "Whether the visitor has to be logged in or not in order to see the ads."
2106
  msgstr ""
2107
 
2108
- #: ../classes/visitor-conditions.php:87
 
 
 
 
 
 
 
2109
  msgid "is"
2110
  msgstr ""
2111
 
2112
- #: ../classes/visitor-conditions.php:88
2113
  msgid "is not"
2114
  msgstr ""
2115
 
2116
- #: ../classes/visitor-conditions.php:120
2117
  msgid "equal"
2118
  msgstr ""
2119
 
2120
- #: ../classes/visitor-conditions.php:121
2121
  msgid "equal or higher"
2122
  msgstr ""
2123
 
2124
- #: ../classes/visitor-conditions.php:122
2125
  msgid "equal or lower"
2126
  msgstr ""
2127
 
2128
- #: ../classes/visitor-conditions.php:154
2129
  msgid "contains"
2130
  msgstr ""
2131
 
2132
- #: ../classes/visitor-conditions.php:155
2133
  msgid "starts with"
2134
  msgstr ""
2135
 
2136
- #: ../classes/visitor-conditions.php:156
2137
  msgid "ends with"
2138
  msgstr ""
2139
 
2140
- #: ../classes/visitor-conditions.php:157
2141
  msgid "matches"
2142
  msgstr ""
2143
 
2144
- #: ../classes/visitor-conditions.php:158
2145
  msgid "matches regex"
2146
  msgstr ""
2147
 
2148
- #: ../classes/visitor-conditions.php:159
2149
  msgid "does not contain"
2150
  msgstr ""
2151
 
2152
- #: ../classes/visitor-conditions.php:160
2153
  msgid "does not start with"
2154
  msgstr ""
2155
 
2156
- #: ../classes/visitor-conditions.php:161
2157
  msgid "does not end with"
2158
  msgstr ""
2159
 
2160
- #: ../classes/visitor-conditions.php:162
2161
  msgid "does not match"
2162
  msgstr ""
2163
 
2164
- #: ../classes/visitor-conditions.php:163
2165
  msgid "does not match regex"
2166
  msgstr ""
2167
 
@@ -2255,6 +2280,92 @@ msgstr ""
2255
  msgid "allow ads in secondary queries"
2256
  msgstr ""
2257
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2258
  #: ../modules/gadsense/main.php:19
2259
  msgid " at "
2260
  msgstr ""
5
  "Project-Id-Version: Advanved Ads\n"
6
  "Report-Msgid-Bugs-To: http://wordpress.org/plugins/plugin-name\n"
7
  "POT-Creation-Date: 2015-01-27 16:47+0100\n"
8
+ "POT-Revision-Date: Wed Dec 16 2015 17:36:23 GMT+0100 (CET)\n"
9
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
10
  "Last-Translator: Thomas Maier <post@webzunft.de>\n"
11
  "Language-Team: webgilde <thomas.maier@webgilde.com>\n"
923
  "and Advanced Ads from my dedicated newsletter."
924
  msgstr ""
925
 
926
+ #: ../admin/includes/notices.php:52
 
927
  msgid ""
928
  "One or more license keys for <strong>Advanced Ads add-ons are invalid or "
929
+ "missing</strong>."
930
+ msgstr ""
931
+
932
+ #: ../admin/includes/notices.php:52
933
+ #, php-format
934
+ msgid "Please add valid license keys <a href=\"%s\">here</a>."
935
  msgstr ""
936
 
937
  #: ../admin/includes/notices.php:57
1360
  "with a space"
1361
  msgstr ""
1362
 
1363
+ #: ../admin/views/ad-parameters-metabox.php:25 ../classes/ad_ajax_callbacks.php:54
1364
  msgid "size:"
1365
  msgstr ""
1366
 
1367
+ #: ../admin/views/ad-parameters-metabox.php:26 ../classes/ad_ajax_callbacks.php:55
1368
  msgid "width"
1369
  msgstr ""
1370
 
1371
+ #: ../admin/views/ad-parameters-metabox.php:27 ../classes/ad_ajax_callbacks.php:56
1372
  msgid "height"
1373
  msgstr ""
1374
 
1474
  msgid "not on mobile devices"
1475
  msgstr ""
1476
 
1477
+ #: ../admin/views/debug.php:6 ../admin/views/settings.php:45
1478
  msgid "Debug Page"
1479
  msgstr ""
1480
 
1796
  "appear."
1797
  msgstr ""
1798
 
1799
+ #: ../admin/views/settings.php:35
1800
  msgid "Save settings on this page"
1801
  msgstr ""
1802
 
1803
+ #: ../admin/views/settings.php:46
1804
  msgid "Welcome Page"
1805
  msgstr ""
1806
 
1807
+ #: ../admin/views/settings.php:47
1808
  msgid "Advanced Ads on WordPress.org"
1809
  msgstr ""
1810
 
1811
+ #: ../admin/views/settings.php:47
1812
  msgid "Advanced Ads on wp.org"
1813
  msgstr ""
1814
 
1815
+ #: ../admin/views/settings.php:48
1816
  msgid "the company behind Advanced Ads"
1817
  msgstr ""
1818
 
1840
 
1841
  #: ../admin/views/support.php:19
1842
  msgid ""
1843
+ "Please fix the red highlighted issues on this page or try to understand "
1844
+ "their consequences before contacting support."
1845
  msgstr ""
1846
 
1847
  #: ../admin/views/support.php:23
1869
  msgid "There are <strong>plugin updates available</strong>. Please update."
1870
  msgstr ""
1871
 
1872
+ #: ../admin/views/support.php:35
1873
+ #, php-format
1874
+ msgid ""
1875
+ "One or more license keys for <strong>Advanced Ads add-ons are invalid or "
1876
+ "missing</strong>. Please add valid license keys <a href=\"%s\">here</a>."
1877
+ msgstr ""
1878
+
1879
  #: ../admin/views/support.php:41
1880
  #, php-format
1881
  msgid ""
1899
  "href=\"%s\">settings</a>."
1900
  msgstr ""
1901
 
1902
+ #: ../admin/views/support.php:59
1903
  msgid "Contact"
1904
  msgstr ""
1905
 
1906
+ #: ../admin/views/support.php:60
1907
  #, php-format
1908
  msgid ""
1909
  "Please search the manual for a solution and take a look at <a href=\"%s\" "
1910
  "target=\"_blank\">Ads not showing up?</a> before contacting me for help."
1911
  msgstr ""
1912
 
1913
+ #: ../admin/views/support.php:65
1914
  msgid "your email"
1915
  msgstr ""
1916
 
1917
+ #: ../admin/views/support.php:69
1918
  msgid "your name"
1919
  msgstr ""
1920
 
1921
+ #: ../admin/views/support.php:73
1922
  msgid "your message"
1923
  msgstr ""
1924
 
1925
+ #: ../admin/views/support.php:78
1926
  msgid "send"
1927
  msgstr ""
1928
 
2050
  msgid "url"
2051
  msgstr ""
2052
 
2053
+ #: ../classes/ad_type_image.php:67
2054
+ #, php-format
2055
+ msgid ""
2056
+ "Pro: Open this url in a new window and track impressions and clicks with the "
2057
+ "<a href=\"%s\" target=\"_blank\">Tracking add-on</a>"
2058
+ msgstr ""
2059
+
2060
  #: ../classes/ad_type_plain.php:31
2061
  msgid "Plain Text and Code"
2062
  msgstr ""
2123
  msgid "Whether the visitor has to be logged in or not in order to see the ads."
2124
  msgstr ""
2125
 
2126
+ #: ../classes/visitor-conditions.php:72
2127
+ #, php-format
2128
+ msgid ""
2129
+ "Pro: Display ads by the available space on the device using the <a href=\"%s\" "
2130
+ "target=\"_blank\">Responsive add-on</a>"
2131
+ msgstr ""
2132
+
2133
+ #: ../classes/visitor-conditions.php:102
2134
  msgid "is"
2135
  msgstr ""
2136
 
2137
+ #: ../classes/visitor-conditions.php:103
2138
  msgid "is not"
2139
  msgstr ""
2140
 
2141
+ #: ../classes/visitor-conditions.php:135
2142
  msgid "equal"
2143
  msgstr ""
2144
 
2145
+ #: ../classes/visitor-conditions.php:136
2146
  msgid "equal or higher"
2147
  msgstr ""
2148
 
2149
+ #: ../classes/visitor-conditions.php:137
2150
  msgid "equal or lower"
2151
  msgstr ""
2152
 
2153
+ #: ../classes/visitor-conditions.php:169
2154
  msgid "contains"
2155
  msgstr ""
2156
 
2157
+ #: ../classes/visitor-conditions.php:170
2158
  msgid "starts with"
2159
  msgstr ""
2160
 
2161
+ #: ../classes/visitor-conditions.php:171
2162
  msgid "ends with"
2163
  msgstr ""
2164
 
2165
+ #: ../classes/visitor-conditions.php:172
2166
  msgid "matches"
2167
  msgstr ""
2168
 
2169
+ #: ../classes/visitor-conditions.php:173
2170
  msgid "matches regex"
2171
  msgstr ""
2172
 
2173
+ #: ../classes/visitor-conditions.php:174
2174
  msgid "does not contain"
2175
  msgstr ""
2176
 
2177
+ #: ../classes/visitor-conditions.php:175
2178
  msgid "does not start with"
2179
  msgstr ""
2180
 
2181
+ #: ../classes/visitor-conditions.php:176
2182
  msgid "does not end with"
2183
  msgstr ""
2184
 
2185
+ #: ../classes/visitor-conditions.php:177
2186
  msgid "does not match"
2187
  msgstr ""
2188
 
2189
+ #: ../classes/visitor-conditions.php:178
2190
  msgid "does not match regex"
2191
  msgstr ""
2192
 
2280
  msgid "allow ads in secondary queries"
2281
  msgstr ""
2282
 
2283
+ #: ../modules/ad-blocker/admin/admin.php:139
2284
+ msgid "The asset folder was rebuilt successfully"
2285
+ msgstr ""
2286
+
2287
+ #: ../modules/ad-blocker/admin/admin.php:261
2288
+ msgid "Ad blocker fix"
2289
+ msgstr ""
2290
+
2291
+ #: ../modules/ad-blocker/admin/admin.php:301
2292
+ msgid "There is no writable upload folder"
2293
+ msgstr ""
2294
+
2295
+ #: ../modules/ad-blocker/admin/admin.php:324
2296
+ #, php-format
2297
+ msgid "Unable to rename \"%s\" directory"
2298
+ msgstr ""
2299
+
2300
+ #: ../modules/ad-blocker/admin/admin.php:342 ../modules/ad-blocker/admin/admin.
2301
+ #: php:356 ../modules/ad-blocker/admin/admin.php:374
2302
+ #, php-format
2303
+ msgid "Unable to copy assets to the \"%s\" directory"
2304
+ msgstr ""
2305
+
2306
+ #: ../modules/ad-blocker/admin/admin.php:406 ../modules/ad-blocker/admin/admin.
2307
+ #: php:416
2308
+ #, php-format
2309
+ msgid "We do not have direct write access to the \"%s\" directory"
2310
+ msgstr ""
2311
+
2312
+ #: ../modules/ad-blocker/admin/admin.php:425
2313
+ msgid "There are no assets to copy"
2314
+ msgstr ""
2315
+
2316
+ #: ../modules/ad-blocker/admin/admin.php:481
2317
+ #, php-format
2318
+ msgid ""
2319
+ "Unable to create \"%s\" directory. Is its parent directory writable by the "
2320
+ "server?"
2321
+ msgstr ""
2322
+
2323
+ #: ../modules/ad-blocker/admin/admin.php:493
2324
+ #, php-format
2325
+ msgid "Unable to copy files to %s"
2326
+ msgstr ""
2327
+
2328
+ #: ../modules/ad-blocker/admin/admin.php:560
2329
+ msgid ""
2330
+ "Prevents ad block software from breaking your website when blocking asset "
2331
+ "files (.js, .css)."
2332
+ msgstr ""
2333
+
2334
+ #: ../modules/ad-blocker/admin/views/rebuild_form.php:1
2335
+ msgid "Ad blocker file folder"
2336
+ msgstr ""
2337
+
2338
+ #: ../modules/ad-blocker/admin/views/rebuild_form.php:10
2339
+ msgid "Upload folder is not writable"
2340
+ msgstr ""
2341
+
2342
+ #: ../modules/ad-blocker/admin/views/rebuild_form.php:23
2343
+ msgid "Asset path"
2344
+ msgstr ""
2345
+
2346
+ #: ../modules/ad-blocker/admin/views/rebuild_form.php:27
2347
+ msgid "Asset URL"
2348
+ msgstr ""
2349
+
2350
+ #: ../modules/ad-blocker/admin/views/rebuild_form.php:31
2351
+ msgid "Rename asset folder"
2352
+ msgstr ""
2353
+
2354
+ #: ../modules/ad-blocker/admin/views/rebuild_form.php:34
2355
+ msgid "Check if you want to change the name of the assets folder"
2356
+ msgstr ""
2357
+
2358
+ #: ../modules/ad-blocker/admin/views/rebuild_form.php:41
2359
+ #, php-format
2360
+ msgid ""
2361
+ "Please, rebuild the asset folder. The new folder will be located in "
2362
+ "<strong>%s</strong>"
2363
+ msgstr ""
2364
+
2365
+ #: ../modules/ad-blocker/admin/views/rebuild_form.php:44
2366
+ msgid "Rebuild asset folder"
2367
+ msgstr ""
2368
+
2369
  #: ../modules/gadsense/main.php:19
2370
  msgid " at "
2371
  msgstr ""
modules/ad-blocker/admin/admin.php ADDED
@@ -0,0 +1,564 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ class Advanced_Ads_Ad_Blocker_Admin
3
+ {
4
+ /**
5
+ * Singleton instance of the plugin
6
+ *
7
+ * @var Advanced_Ads_Ad_Blocker_Admin
8
+ */
9
+ protected static $instance;
10
+
11
+ /**
12
+ * module options
13
+ *
14
+ * @since 1.0.0
15
+ * @var array (if loaded)
16
+ */
17
+ protected $options;
18
+
19
+ /**
20
+ * all assets from advanced-ads plugins
21
+ *
22
+ * @since 1.0.0
23
+ * @var array (filled when searching for assets)
24
+ */
25
+ protected $assets = array();
26
+
27
+ /**
28
+ * pattern to search assets using preg_match
29
+ *
30
+ * @var string
31
+ */
32
+ // the string does not contain 'vendor/composer' or '/admin/' and ends with .css/.js/.png/.gif
33
+ protected $search_pattern = '/^(?!.*(vendor\/composer|\/admin\/)).*\.(css|js|png|gif)$/';
34
+
35
+ /**
36
+ * Array, containing path information on the currently configured uploads directory
37
+ *
38
+ * @var array
39
+ */
40
+ protected $upload_dir;
41
+
42
+ /**
43
+ * Error messages for user
44
+ *
45
+ * @var WP_Error
46
+ */
47
+ protected $error_messages;
48
+
49
+ /**
50
+ * path where the rebuild_form is located
51
+ *
52
+ * @var string
53
+ */
54
+ private $form_url = 'admin.php?page=advanced-ads-settings#top#general';
55
+
56
+ /**
57
+ * Initialize the module
58
+ *
59
+ * @since 1.0.0
60
+ */
61
+ public function __construct()
62
+ {
63
+ // Get the most recent options values
64
+ $this->options = Advanced_Ads_Ad_Blocker::get_instance()->options();
65
+
66
+ $this->upload_dir = Advanced_Ads_Ad_Blocker::get_instance()->get_upload_directory();
67
+
68
+ // add module settings to Advanced Ads settings page
69
+ add_action( 'advanced-ads-settings-init', array( $this, 'settings_init' ), 9, 1 );
70
+ // add rebuild asset form
71
+ add_filter( 'advanced-ads-settings-tab-after-form', array( $this, 'add_asset_rebuild_form_wrap' ) );
72
+
73
+ add_filter( "pre_update_option_" . ADVADS_AB_SLUG, array( $this, 'sanitize_settings' ), 10, 2 );
74
+
75
+ $this->error_messages = new WP_Error();
76
+ }
77
+
78
+ /**
79
+ * Return an instance of Advanced_Ads_Ad_Blocker
80
+ *
81
+ * @since 1.0.0
82
+ * @return Advanced_Ads_Ad_Blocker_Admin
83
+ */
84
+ public static function get_instance()
85
+ {
86
+ // If the single instance hasn't been set, set it now.
87
+ if (null === self::$instance)
88
+ {
89
+ self::$instance = new self;
90
+ }
91
+
92
+ return self::$instance;
93
+ }
94
+
95
+ /**
96
+ * Render the ad-blocker rebuild assets form wrapper with rebuild assets form inside
97
+ *
98
+ * @param str $_setting_tab_id - id of the tab
99
+ */
100
+ public function add_asset_rebuild_form_wrap( $_setting_tab_id ) {
101
+ if ( $_setting_tab_id == 'general' ) {
102
+ $advads_options = Advanced_Ads::get_instance()->options();
103
+ $use_adblocker = isset( $advads_options['use-adblocker'] );
104
+ ?>
105
+ <div id="advads-adblocker-wrapper" <?php if ( ! $use_adblocker ) { echo 'style="display:none"'; } ?>>
106
+ <?php
107
+ // not ajax yet, print the form
108
+ $button_attrs = array( 'disabled' => 'disabled', 'autocomplete' => 'off' );
109
+ include ADVADS_AB_BASE_PATH . 'admin/views/rebuild_form.php';
110
+ ?>
111
+ </div>
112
+ <?php
113
+ }
114
+ }
115
+
116
+ /**
117
+ * Render the ad-blocker rebuild assets form
118
+ *
119
+ */
120
+ public function add_asset_rebuild_form() {
121
+ $success = false;
122
+ $message = '';
123
+ // we already have similar check in the ad_ajax_callback.php, but this check is necessary if JS is disabled
124
+ if ( isset( $_POST['advads_ab_form_submit'] ) ) { //new submission
125
+ if ( false === ( $output = $this->process_form( $this->form_url ) ) ) {
126
+ //we are displaying credentials form - no need for further processing
127
+ return;
128
+ } elseif ( is_wp_error( $output ) ) {
129
+ $success = false;
130
+ $message = $output->get_error_message();
131
+ } else {
132
+ $success = true;
133
+ $message = __( 'The asset folder was rebuilt successfully', 'advanced-ads' );
134
+ }
135
+
136
+ include ADVADS_AB_BASE_PATH . 'admin/views/rebuild_form.php';
137
+ }
138
+ }
139
+
140
+ /**
141
+ * Perform processing of the rebuild_form, sent by user
142
+ *
143
+ * @param str $form_url - URL of the page to display request form
144
+ * @return true on success, false in case of wrong credentials, WP_Error in case of error
145
+ **/
146
+ function process_form( $form_url ){
147
+ check_ajax_referer( 'advads_ab_form_nonce', 'security' );
148
+
149
+ global $wp_filesystem;
150
+ //fields that should be preserved across screens (when ftp/ssh login screen appears)
151
+ $preserved_form_fields = array( 'advads_ab_form_submit', 'advads_ab_assign_new_folder', 'security', '_wp_http_referer' );
152
+ //leave this empty to perform test for 'direct' writing
153
+ $method = '';
154
+ //target folder
155
+ $context = $this->upload_dir['basedir'];
156
+ //page url with nonce value
157
+ $form_url = wp_nonce_url( $form_url, 'advads_ab_form_nonce', 'security' );
158
+
159
+ if ( ! $this->filesystem_init( $form_url, $method, $context, $preserved_form_fields ) ) {
160
+ return false; //stop further processing when request form is displaying
161
+ }
162
+ // at this point we do not need ftp/ssh credentials anymore
163
+ $form_post_fields = array_intersect_key( $_POST, array_flip( array( 'advads_ab_assign_new_folder' ) ) );
164
+
165
+ $this->create_dummy_plugin( $form_post_fields );
166
+
167
+ if ( $error_messages = $this->error_messages->get_error_messages() ) {
168
+ foreach ( $error_messages as $error_message ) {
169
+ error_log( __METHOD__ . ': ' . $error_message );
170
+ }
171
+
172
+ return $this->error_messages; // WP_Error object
173
+ }
174
+
175
+ return true;
176
+ }
177
+
178
+ /**
179
+ * Initialize Filesystem object
180
+ *
181
+ * @param str $form_url - URL of the page to display request form
182
+ * @param str $method - connection method
183
+ * @param str $context - destination folder
184
+ * @param array $fields - fileds of $_POST array that should be preserved between screens
185
+ * @return bool - false on failure, stored text on success
186
+ *
187
+ **/
188
+ function filesystem_init( $form_url, $method, $context, $fields = null ) {
189
+ global $wp_filesystem;
190
+
191
+ // first attempt to get credentials
192
+ if ( false === ( $creds = request_filesystem_credentials( $form_url, $method, false, $context, $fields ) ) ) {
193
+ // we don't have credentials, so the request for them is displaying, no need for further processing
194
+ return false;
195
+ }
196
+
197
+ // now we got some credentials - try to use them
198
+ if ( ! WP_Filesystem( $creds ) ) {
199
+ // incorrect connection data - ask for credentials again, now with error message
200
+ request_filesystem_credentials( $form_url, $method, true, $context, $fields );
201
+ return false;
202
+ }
203
+
204
+ return true; //filesystem object successfully initiated
205
+ }
206
+
207
+ /**
208
+ * Return a hash based on the folder name and the version of the currently activated plugins
209
+ *
210
+ * @return md5 hash
211
+ */
212
+ public function generate_plugins_hash() {
213
+ // Check if get_plugins() function exists. This is required on the front end of the
214
+ // site, since it is in a file that is normally only loaded in the admin.
215
+ if ( ! function_exists( 'get_plugins' ) ) {
216
+ require_once ABSPATH . 'wp-admin/includes/plugin.php';
217
+ }
218
+ // Get all plugins that are installed
219
+ $all_plugins = get_plugins();
220
+ // Get all activated plugins
221
+ $active_plugins = get_option('active_plugins');
222
+ // Set up an array to hold all active Advanced Ads plugins
223
+ $active_advads_plugins = array();
224
+
225
+ // Loop through all active plugins
226
+ foreach( $active_plugins as $plugin )
227
+ {
228
+ // Check if the current plugin is an Advanced Ads plugin
229
+ if( strpos( $plugin, 'advanced-ads' ) !== false )
230
+ {
231
+ // Get the folder name of this plugin
232
+ $folder = explode( '/', $plugin );
233
+ // Make an array holding both the folder name and the version of the currently installed plugin
234
+ $temp_plugin_data = array(
235
+ 'name' => $folder[0],
236
+ 'version' => $all_plugins[ $plugin ]['Version']
237
+ );
238
+ // Add it to the array
239
+ $active_advads_plugins[] = $temp_plugin_data;
240
+ }
241
+ }
242
+
243
+ return md5( serialize( $active_advads_plugins ) );
244
+ }
245
+
246
+ /**
247
+ * Add settings to settings page
248
+ *
249
+ * @since 1.0.0
250
+ * @param string $hook settings page hook
251
+ */
252
+ public function settings_init( $hook )
253
+ {
254
+ //register_setting( ADVADS_AB_SLUG, ADVADS_AB_SLUG, array( $this, 'sanitize_settings' ) );
255
+
256
+ add_settings_field(
257
+ 'use-adblocker',
258
+ __( 'Ad blocker fix', 'advanced-ads' ),
259
+ array( $this, 'render_settings_use_adblocker' ),
260
+ $hook,
261
+ 'advanced_ads_setting_section'
262
+ );
263
+ }
264
+
265
+ /**
266
+ * Catch the update options before it's submitted to the database
267
+ *
268
+ * @param array $new_options new values that need to be saved
269
+ * @param array $old_options old values saved in database
270
+ * @return array - options to save
271
+ */
272
+ public function sanitize_settings( $new_options, $old_options ) {
273
+ if ( is_array( $new_options ) ) {
274
+ $this->options = array_merge( $this->options, $new_options );
275
+ // Error, disable the ad-blocker script
276
+ if ( ! isset( $new_options['active_plugins_hash'] ) ) {
277
+ unset( $this->options['active_plugins_hash'] );
278
+ }
279
+ }
280
+
281
+ return $this->options;
282
+ }
283
+
284
+
285
+ /**
286
+ * Creates dummy plugin and return new options, that need to be stored in database
287
+ *
288
+ * @param array $form_post_fields options, POST data sent by user
289
+ * @return array $new_options - options, that need to be stored in database
290
+ */
291
+ public function create_dummy_plugin( $form_post_fields ) {
292
+ global $wp_filesystem;
293
+
294
+ $need_assign_new_name = isset( $form_post_fields['advads_ab_assign_new_folder'] );
295
+
296
+ if ( ! $this->upload_dir ) {
297
+ $message = __( 'There is no writable upload folder', 'advanced-ads' );
298
+ $this->error_messages->add( 'create_dummy_1', $message);
299
+ return false;
300
+ }
301
+
302
+ $new_options = $new_options_error = array();
303
+ // Create a new hash to check against.
304
+ // $new_options_error does not have the 'active_plugins_hash' key - ad-blocker script will be inactive and the asset folder will be rebuilt next time
305
+ $new_options['active_plugins_hash'] = $this->generate_plugins_hash();
306
+
307
+ if ( ! empty( $this->options['folder_name'] ) ) {
308
+ $new_options['folder_name'] = $new_options_error['folder_name'] = $this->options['folder_name'];
309
+
310
+ $old_folder_normalized = $this->normalize_path( trailingslashit( $this->upload_dir['basedir'] ) . $this->options['folder_name'] );
311
+
312
+ if ( $wp_filesystem->exists( $old_folder_normalized ) ) {
313
+
314
+ if ( $need_assign_new_name ) {
315
+ $new_folder_name = $this->generate_unique_name( array( $new_options['folder_name'] ) );
316
+ $new_folder_normalized = $this->normalize_path( trailingslashit( $this->upload_dir['basedir'] ) . $new_folder_name );
317
+
318
+ if ( ! $wp_filesystem->move( $old_folder_normalized, $new_folder_normalized ) ) {
319
+ $message = sprintf( __( 'Unable to rename "%s" directory', 'advanced-ads' ), $old_folder_normalized );
320
+ $this->error_messages->add( 'create_dummy_2', $message);
321
+ return false;
322
+ }
323
+ $new_options['folder_name'] = $new_options_error['folder_name'] = $new_folder_name;
324
+
325
+ }
326
+
327
+ $is_rebuild_needed = ! isset( $this->options['active_plugins_hash'] ) || $this->options['active_plugins_hash'] != $new_options['active_plugins_hash'];
328
+ // we have an error while the method is being executed
329
+ update_option( ADVADS_AB_SLUG, $new_options_error );
330
+
331
+ if ( $is_rebuild_needed ) {
332
+ $lookup_table = $this->copy_assets( $new_options['folder_name'], true );
333
+ if ( ! $lookup_table ) {
334
+ $message = sprintf( __( 'Unable to copy assets to the "%s" directory', 'advanced-ads' ), $new_options['folder_name'] );
335
+ $this->error_messages->add( 'create_dummy_3', $message);
336
+ return false;
337
+ }
338
+ $new_options['lookup_table'] = $lookup_table;
339
+ }
340
+
341
+ } else {
342
+ // we have an error while the method is being executed
343
+ update_option( ADVADS_AB_SLUG, $new_options_error );
344
+ // old folder does not exist, let's create it
345
+ $lookup_table = $this->copy_assets( $new_options['folder_name'] );
346
+ if ( ! $lookup_table ) {
347
+ $message = sprintf( __( 'Unable to copy assets to the "%s" directory', 'advanced-ads' ), $new_options['folder_name'] );
348
+ $this->error_messages->add( 'create_dummy_4', $message);
349
+ return false;
350
+ }
351
+ $new_options['lookup_table'] = $lookup_table;
352
+ }
353
+ } else {
354
+ // It seems this is the first time this plugin was ran, let's create everything we need in order to
355
+ // have this plugin function normally.
356
+ $new_folder_name = $this->generate_unique_name();
357
+ // Create a unique folder name
358
+ $new_options['folder_name'] = $new_options_error['folder_name'] = $new_folder_name;
359
+ // we have an error while the method is being executed
360
+ update_option( ADVADS_AB_SLUG, $new_options_error );
361
+ // Copy the assets
362
+ $lookup_table = $this->copy_assets( $new_options['folder_name'] );
363
+ if ( ! $lookup_table ) {
364
+ $message = sprintf( __( 'Unable to copy assets to the "%s" directory', 'advanced-ads' ), $new_options['folder_name'] );
365
+ $this->error_messages->add( 'create_dummy_5', $message);
366
+ return false;
367
+ }
368
+ $new_options['lookup_table'] = $lookup_table;
369
+ }
370
+ // successful result, save options and rewrite previous error options
371
+ update_option( ADVADS_AB_SLUG, $new_options);
372
+ }
373
+
374
+ /**
375
+ * Copy all assets (JS/CSS) to the magic directory
376
+ *
377
+ * @since 1.0.0
378
+ * @param string $folder_name destination folder
379
+ * @return bool/array - bool false on failure, array lookup table on success
380
+ */
381
+ public function copy_assets( $folder_name, $rebuild = false ) {
382
+ global $wp_filesystem;
383
+
384
+ // Are we completely rebuilding the assets folder?
385
+ $normalized_asset_path = $this->normalize_path( trailingslashit( $this->upload_dir['basedir'] ) . $folder_name );
386
+ $asset_path = trailingslashit( $this->upload_dir['basedir'] ) . $folder_name ;
387
+ if ( $rebuild ) {
388
+ // Check if there is a previous asset folder
389
+ if ( $wp_filesystem->exists( $normalized_asset_path ) ) {
390
+ // Remove the old directory and its contents
391
+ if ( ! $wp_filesystem->rmdir( trailingslashit( $normalized_asset_path ), true ) ) {
392
+ $message = sprintf( __( 'We do not have direct write access to the "%s" directory', 'advanced-ads' ), $normalized_asset_path );
393
+ $this->error_messages->add( 'copy_assets_1', $message);
394
+ return false;
395
+ }
396
+ }
397
+ }
398
+
399
+ if ( ! $wp_filesystem->exists( $normalized_asset_path ) ) {
400
+ if ( ! $wp_filesystem->mkdir( $normalized_asset_path ) ) {
401
+ $message = sprintf( __( 'We do not have direct write access to the "%s" directory', 'advanced-ads' ), $this->upload_dir['basedir'] );
402
+ $this->error_messages->add( 'copy_assets_2', $message);
403
+ return false;
404
+ }
405
+ }
406
+
407
+ $this->recursive_search( trailingslashit( WP_PLUGIN_DIR ) . 'advanced-ads*', $this->search_pattern );
408
+
409
+ if ( ! $this->assets ) {
410
+ $message = __( 'There are no assets to copy', 'advanced-ads' );
411
+ $this->error_messages->add( 'copy_assets_3', $message);
412
+ return false;
413
+ }
414
+
415
+ // contains associations between the original path of the asset and it path within our magic folder
416
+ // i.e: [advanced-ads-layer/admin/assets/css/admin.css] => /12/34/56/78/1347107783.css
417
+ $lookup_table = array();
418
+ /* Do not rename directories. If, for example, some library uses in file.css something like this:
419
+ 'background: url(/img/image.png)', you should add 'img') to this array */
420
+ $not_rename_dirs = array( 'public', 'assets', 'js', 'css', 'fancybox' );
421
+ //do not rename this files
422
+ $not_rename_files = array( 'advanced.js', 'jquery.fancybox-1.3.4.css' );
423
+
424
+ $rand_file_names = array();
425
+ $rand_folder_names = array();
426
+ // Loop through all the found assets
427
+ foreach( $this->assets as $file ) {
428
+ if ( ! file_exists( $file ) ) {
429
+ continue;
430
+ }
431
+
432
+ $first_cleanup = str_replace( WP_PLUGIN_DIR , '', $file );
433
+ $first_cleanup_dir = dirname( $first_cleanup );
434
+ $first_cleanup_filename = basename( $first_cleanup );
435
+ $first_cleanup_file_extension = pathinfo( $first_cleanup, PATHINFO_EXTENSION );
436
+ $path_components = preg_split('/\//', $first_cleanup_dir, -1, PREG_SPLIT_NO_EMPTY);
437
+ $path_components_new = array();
438
+
439
+ foreach ( $path_components as $k => $dir ) {
440
+ if ( in_array( $dir, $not_rename_dirs ) ) {
441
+ $path_components_new[ $k ] = $dir;
442
+ } elseif ( array_key_exists( $dir, $rand_folder_names ) ) {
443
+ $path_components_new[ $k ] = $rand_folder_names[ $dir ];
444
+ } else {
445
+ $new_rand_folder_name = $this->generate_unique_name( $rand_folder_names );
446
+ $path_components_new[ $k ] = $new_rand_folder_name;
447
+ $rand_folder_names[ $dir ] = $new_rand_folder_name;
448
+ }
449
+ }
450
+
451
+ $new_dir_full = trailingslashit( $asset_path ) . trailingslashit( implode( '/', $path_components_new ) );
452
+ $new_dir = trailingslashit( implode( '/', $path_components_new ) );
453
+ if ( ! in_array( $first_cleanup_filename, $not_rename_files ) && ( $first_cleanup_file_extension == 'js' || $first_cleanup_file_extension == 'css' ) ) {
454
+ $new_filename = $this->generate_unique_name( $rand_file_names ) . '.' . $first_cleanup_file_extension;
455
+ $rand_file_names[] = $new_filename;
456
+ $new_abs_file = $new_dir_full . $new_filename;
457
+ $new_rel_file = $new_dir . $new_filename;
458
+ } else {
459
+ $new_abs_file = $new_dir_full . $first_cleanup_filename;
460
+ $new_rel_file = $new_dir . $first_cleanup_filename;
461
+ }
462
+
463
+ if ( ! file_exists( $new_dir_full ) ) {
464
+ // Create the path if it doesn't exist (prevents the copy() function from failing)
465
+ if ( ! wp_mkdir_p( $new_dir_full ) ) {
466
+ $message = sprintf( __( 'Unable to create "%s" directory. Is its parent directory writable by the server?', 'advanced-ads' ), $asset_path );
467
+ $this->error_messages->add( 'copy_assets_4', $message);
468
+ return false;
469
+ }
470
+ }
471
+
472
+ $file = $this->normalize_path( $file );
473
+ $new_abs_file = $this->normalize_path( $new_abs_file );
474
+
475
+ // Copy the file to our new magic directory
476
+ if ( ! $wp_filesystem->copy( $file, $new_abs_file, false, FS_CHMOD_FILE ) ) {
477
+ $message = sprintf( __( 'Unable to copy files to %s', 'advanced-ads' ), $normalized_asset_path );
478
+ $this->error_messages->add( 'copy_assets_5', $message);
479
+ return false;
480
+ }
481
+
482
+ $lookup_table[ $first_cleanup ] = $new_rel_file;
483
+ }
484
+ return $lookup_table;
485
+ }
486
+
487
+ /**
488
+ * This function will recursively search for files with a certain extension within a given directory
489
+ *
490
+ * @since 1.0.0
491
+ * @param string $dir The directory to search in
492
+ * @param string $pattern pattern for preg_match function
493
+ */
494
+ public function recursive_search( $dir, $pattern )
495
+ {
496
+ $tree = glob( rtrim( $dir, '/' ) . '/*' );
497
+ if ( is_array( $tree ) )
498
+ {
499
+ foreach( $tree as $file )
500
+ {
501
+ if ( is_dir( $file ) )
502
+ {
503
+ $this->recursive_search( $file, $pattern );
504
+ }
505
+ elseif ( is_file( $file ) )
506
+ {
507
+ if ( preg_match( $pattern, $file ) )
508
+ {
509
+ $this->assets[] = $file;
510
+ }
511
+ }
512
+ }
513
+ }
514
+ }
515
+
516
+ /**
517
+ * Replaces the 'direct' absolute path with the Filesystem API path. Useful only when the 'direct' method is not used.
518
+ * Check https://codex.wordpress.org/Filesystem_API for info
519
+ *
520
+ * @param string existing path
521
+ * @return string normalized path
522
+ */
523
+ public function normalize_path( $path ) {
524
+ global $wp_filesystem;
525
+ return str_replace( ABSPATH, $wp_filesystem->abspath(), $path );
526
+ }
527
+
528
+ /**
529
+ * Renders the settings page for this module
530
+ *
531
+ * @since 1.0.0
532
+ */
533
+ public function render_settings(){}
534
+
535
+ /**
536
+ * render setting to enable/disable adblocker
537
+ *
538
+ */
539
+ public function render_settings_use_adblocker() {
540
+ $advads_options = Advanced_Ads::get_instance()->options();
541
+ $checked = ( ! empty( $advads_options['use-adblocker'] ) ) ? 1 : 0;
542
+
543
+ echo '<input id="advanced-ads-use-adblocker" type="checkbox" value="1" name="' . ADVADS_SLUG . '[use-adblocker]" ' . checked( $checked, 1, false ) . '>';
544
+ echo '<p class="description">' . __( 'Prevents ad block software from breaking your website when blocking asset files (.js, .css).', 'advanced-ads' ) . '</p>';
545
+ }
546
+
547
+ /**
548
+ * Generate unique name
549
+ *
550
+ * @param array $haystack array to check, that the returned string does not exist in this array
551
+ * @return string unique name
552
+ */
553
+ function generate_unique_name( $haystack = false ) {
554
+ if ( $haystack ) {
555
+ while ( true ) {
556
+ $needle = mt_rand( 0, 999 );
557
+ if ( ! in_array( $needle, $haystack ) ) {
558
+ return $needle;
559
+ }
560
+ }
561
+ }
562
+ return mt_rand( 0, 999 );
563
+ }
564
+ }
modules/ad-blocker/admin/views/rebuild_form.php ADDED
@@ -0,0 +1,47 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <h3 class="title"><?php _e( 'Ad blocker file folder', 'advanced-ads' ); ?></h3>
2
+ <?php
3
+ $button_attrs = ( isset( $button_attrs ) ) ? $button_attrs : array();
4
+
5
+ if ( ! empty( $message ) && isset( $success ) ): ?>
6
+ <div class="<?php echo $success ? 'updated' : 'error'; ?> notice is-dismissible"><p><?php echo $message;?></p></div>
7
+ <?php endif;
8
+
9
+ if ( ! $this->upload_dir ): ?>
10
+ <p class="advads-error-message"><?php _e( 'Upload folder is not writable', 'advanced-ads' ); ?></p>
11
+ <?php
12
+ else: ?>
13
+ <form method="post" action="">
14
+ <input type="hidden" name="advads_ab_form_submit" value="true">
15
+ <?php wp_nonce_field( 'advads_ab_form_nonce', 'security' );
16
+ if ( ! empty( $this->options['folder_name'] ) && ! empty( $this->options['active_plugins_hash'] ) ): ?>
17
+ <table class="form-table">
18
+ <tbody>
19
+ <?php
20
+ $folder = trailingslashit( $this->upload_dir['basedir'] ) . $this->options['folder_name'];
21
+ $url = trailingslashit( $this->upload_dir['baseurl'] ) . $this->options['folder_name']; ?>
22
+ <tr>
23
+ <th scope="row"><?php _e( 'Asset path', 'advanced-ads' ); ?></th>
24
+ <td><?php echo $folder; ?></td>
25
+ </tr>
26
+ <tr>
27
+ <th scope="row"><?php _e( 'Asset URL', 'advanced-ads' ); ?></th>
28
+ <td><?php echo $url; ?></td>
29
+ </tr>
30
+ <tr>
31
+ <th scope="row"><?php _e( 'Rename asset folder', 'advanced-ads' ); ?></th>
32
+ <td>
33
+ <input type="checkbox" name="advads_ab_assign_new_folder">
34
+ <p class="description"><?php _e( 'Check if you want to change the name of the assets folder', 'advanced-ads' ); ?></p>
35
+ </td>
36
+ </tr>
37
+ </tbody>
38
+ </table>
39
+ <?php
40
+ else: ?>
41
+ <p><?php printf( __( 'Please, rebuild the asset folder. The new folder will be located in <strong>%s</strong>', 'advanced-ads' ), $this->upload_dir['basedir'] ); ?></p>
42
+ <?php
43
+ endif;
44
+ submit_button( __( 'Rebuild asset folder', 'advanced-ads' ), 'primary', 'submit', true, $button_attrs ); ?>
45
+ </form>
46
+ <?php
47
+ endif; ?>
modules/ad-blocker/classes/plugin.php ADDED
@@ -0,0 +1,162 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ class Advanced_Ads_Ad_Blocker
3
+ {
4
+ /**
5
+ * Singleton instance of the plugin
6
+ *
7
+ * @var Advanced_Ads_Ad_Blocker
8
+ */
9
+ protected static $instance;
10
+
11
+ /**
12
+ * module options
13
+ *
14
+ * @since 1.0.0
15
+ * @var array (if loaded)
16
+ */
17
+ protected $options;
18
+
19
+ /**
20
+ * upload directory
21
+ *
22
+ * @var array (if loaded), false on failure
23
+ */
24
+ protected $upload_dir;
25
+
26
+ /**
27
+ * Initialize the module
28
+ *
29
+ * @since 1.0.0
30
+ */
31
+ private function __construct()
32
+ {
33
+ $advads_options = Advanced_Ads::get_instance()->options();
34
+ $options = $this->options();
35
+ if ( ! empty ( $advads_options['use-adblocker'] ) &&
36
+ ! empty ( $this->options['folder_name'] ) &&
37
+ ! empty ( $this->options['active_plugins_hash'] ) &&
38
+ $this->get_upload_directory()
39
+ ) {
40
+ add_action( 'plugins_loaded', array( $this, 'wp_plugins_loaded' ) );
41
+ }
42
+ }
43
+
44
+ /**
45
+ * Return an instance of Advanced_Ads_Ad_Blocker
46
+ *
47
+ * @return Advanced_Ads_Ad_Blocker
48
+ * @since 1.0.0
49
+ */
50
+ public static function get_instance()
51
+ {
52
+ // If the single instance hasn't been set, set it now.
53
+ if ( null === self::$instance )
54
+ {
55
+ self::$instance = new self;
56
+ }
57
+
58
+ return self::$instance;
59
+ }
60
+
61
+ /**
62
+ * Add actions/filters/hooks and localisation after module have been loaded
63
+ *
64
+ * @since 1.0.0
65
+ */
66
+ public function wp_plugins_loaded()
67
+ {
68
+ add_action( 'wp_enqueue_scripts', array( $this, 'edit_script_output' ), 101 );
69
+ }
70
+
71
+ /**
72
+ * Edit the script output (URL's) for all advanced-ads plugins
73
+ *
74
+ * @since 1.0.0
75
+ */
76
+ public function edit_script_output()
77
+ {
78
+ global $wp_scripts, $wp_styles;
79
+
80
+ // Get all plugin options
81
+ $options = $this->options();
82
+
83
+ // Check if the asset folder is set (check if this is installed yet)
84
+ if( isset( $options['folder_name'] ) && $options['folder_name'] != '' )
85
+ {
86
+ // Loop through all script files and change the URL from which they are loaded
87
+ foreach( $wp_scripts->registered as $script )
88
+ {
89
+ if( strpos( $script->src, 'advanced-ads' ) !== false )
90
+ {
91
+ $script->src = $this->clean_up_filename( $script->src );
92
+ }
93
+ }
94
+
95
+ // Loop through all style files and change the URL from which they are loaded
96
+ foreach( $wp_styles->registered as $style )
97
+ {
98
+ if( strpos( $style->src, 'advanced-ads' ) !== false )
99
+ {
100
+ $style->src = $this->clean_up_filename( $style->src );
101
+ }
102
+ }
103
+ }
104
+ }
105
+
106
+ public function clean_up_filename( $file ) {
107
+ $options = $this->options();
108
+ $upload_dir = $this->get_upload_directory();
109
+ $url = str_replace( WP_PLUGIN_URL, '', $file );
110
+ if ( isset( $options['lookup_table'][ $url ] ) ) {
111
+ return trailingslashit( $upload_dir['baseurl'] ) . trailingslashit( $options['folder_name'] ) . $options['lookup_table'][ $url ];
112
+ }
113
+ return $file;
114
+ }
115
+
116
+ /**
117
+ * Return module options
118
+ *
119
+ * @since 1.0.0
120
+ * @return array $options
121
+ */
122
+ public function options()
123
+ {
124
+ if ( ! isset( $this->options ) ) {
125
+ if ( function_exists( 'is_multisite' ) && is_multisite() ) {
126
+ $this->options = get_blog_option( BLOG_ID_CURRENT_SITE, ADVADS_AB_SLUG, array() );
127
+ } else {
128
+ $this->options = get_option( ADVADS_AB_SLUG, array() );
129
+ }
130
+
131
+ if ( ! $this->options ) {
132
+ $this->options = array();
133
+ }
134
+ }
135
+ return $this->options;
136
+ }
137
+
138
+ /**
139
+ * Return path information on the currently configured uploads directory
140
+ *
141
+ * @return array, that have indices 'basedir' and 'baseurl', or false on failure
142
+ */
143
+ public function get_upload_directory()
144
+ {
145
+ if ( ! isset( $this->upload_dir ) ) {
146
+ if ( function_exists( 'is_multisite' ) && is_multisite() ) {
147
+ switch_to_blog( BLOG_ID_CURRENT_SITE );
148
+ $upload_dir = wp_upload_dir();
149
+ restore_current_blog();
150
+ } else {
151
+ $upload_dir = wp_upload_dir();
152
+ }
153
+
154
+ if ( $upload_dir['error'] ) {
155
+ $this->upload_dir = false;
156
+ } else {
157
+ $this->upload_dir = $upload_dir;
158
+ }
159
+ }
160
+ return $this->upload_dir;
161
+ }
162
+ }
modules/ad-blocker/config.php ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ // module configuration
4
+
5
+ $path = dirname( __FILE__ );
6
+
7
+ return array(
8
+ 'classmap' => array(
9
+ 'Advanced_Ads_Ad_Blocker' => $path . '/classes/plugin.php',
10
+ 'Advanced_Ads_Ad_Blocker_Admin' => $path . '/admin/admin.php',
11
+ ),
12
+ 'textdomain' => null,
13
+ );
modules/ad-blocker/main.php ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ if ( class_exists( 'Advanced_Ads', false ) ) {
3
+
4
+ // only load if not already existing (maybe included from another plugin)
5
+ if ( defined( 'ADVADS_AB_BASE_PATH' ) ) {
6
+ return ;
7
+ }
8
+
9
+ // load basic path to the plugin
10
+ define( 'ADVADS_AB_BASE_PATH', plugin_dir_path( __FILE__ ) );
11
+ // general and global slug, e.g. to store options in WP, textdomain
12
+ define( 'ADVADS_AB_SLUG', 'advanced-ads-ab-module' );
13
+
14
+ Advanced_Ads_Ad_Blocker::get_instance();
15
+
16
+ $is_ajax = defined( 'DOING_AJAX' ) && DOING_AJAX;
17
+ $is_main_blog = is_main_site( get_current_blog_id() );
18
+
19
+ if ( is_admin() && ! $is_ajax && $is_main_blog ) {
20
+ Advanced_Ads_Ad_Blocker_Admin::get_instance();
21
+ }
22
+ }
23
+
24
+
25
+
modules/gadsense/includes/class-ad-type-adsense.php CHANGED
@@ -50,7 +50,7 @@ class Advanced_Ads_Ad_Type_Adsense extends Advanced_Ads_Ad_Type_Abstract {
50
  * @since 1.4
51
  */
52
  public function render_parameters($ad) {
53
- $content = (isset($ad->content)) ? $ad->content : '';
54
  $unit_id = '';
55
  $unit_code = '';
56
  $unit_type = '';
@@ -73,8 +73,8 @@ class Advanced_Ads_Ad_Type_Adsense extends Advanced_Ads_Ad_Type_Abstract {
73
  $pub_id_errors = __( 'The Publisher ID has an incorrect format. (must start with "pub-")', 'advanced-ads' );
74
  }
75
 
76
- if ( ! empty($content) ) {
77
-
78
  $json_content = stripslashes( $content );
79
 
80
  // get json content striped by slashes
@@ -84,7 +84,7 @@ class Advanced_Ads_Ad_Type_Adsense extends Advanced_Ads_Ad_Type_Abstract {
84
  $content->json = $json_content;
85
  $unit_type = $content->unitType;
86
  $unit_code = $content->slotId;
87
- if ( 'responsive' != $content->unitType ) {
88
  // Normal ad unit
89
  $unit_width = $ad->width;
90
  $unit_height = $ad->height;
50
  * @since 1.4
51
  */
52
  public function render_parameters($ad) {
53
+ $content = (string) ( isset( $ad->content ) ? $ad->content : '' );
54
  $unit_id = '';
55
  $unit_code = '';
56
  $unit_type = '';
73
  $pub_id_errors = __( 'The Publisher ID has an incorrect format. (must start with "pub-")', 'advanced-ads' );
74
  }
75
 
76
+ if ( trim($content) !== '' ) {
77
+
78
  $json_content = stripslashes( $content );
79
 
80
  // get json content striped by slashes
84
  $content->json = $json_content;
85
  $unit_type = $content->unitType;
86
  $unit_code = $content->slotId;
87
+ if ( 'responsive' !== $content->unitType ) {
88
  // Normal ad unit
89
  $unit_width = $ad->width;
90
  $unit_height = $ad->height;
readme.txt CHANGED
@@ -4,7 +4,7 @@ Donate link:https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id
4
  Tags: ads, ad, adsense, display, banner, advertisements, adverts, advert, monetization
5
  Requires at least: WP 4.2, PHP 5.3
6
  Tested up to: 4.4
7
- Stable tag: 1.6.14
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
@@ -111,6 +111,7 @@ You can also use it to add additional ad network tags into header or footer of y
111
  = ad blocker =
112
 
113
  * basic features to prevent ad blocks from being removed by AdBlock and co
 
114
 
115
  = based on WordPress standards =
116
 
@@ -192,6 +193,17 @@ There is no revenue share. Advanced Ads doesn’t alter your ad codes in a way t
192
 
193
  == Changelog ==
194
 
 
 
 
 
 
 
 
 
 
 
 
195
  = 1.6.14 =
196
 
197
  Please [share your ideas](https://wpadvancedads.com/advanced-ads-1-6-14/) about more capabilities.
4
  Tags: ads, ad, adsense, display, banner, advertisements, adverts, advert, monetization
5
  Requires at least: WP 4.2, PHP 5.3
6
  Tested up to: 4.4
7
+ Stable tag: 1.6.15
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
111
  = ad blocker =
112
 
113
  * basic features to prevent ad blocks from being removed by AdBlock and co
114
+ * prevent ad blockers from breaking sites where plugin scripts are running
115
 
116
  = based on WordPress standards =
117
 
193
 
194
  == Changelog ==
195
 
196
+ = 1.6.15 =
197
+
198
+ * added overview widget for [Geo Targeting add-on](https://wpadvancedads.com/add-ons/geo-targeting/)
199
+ * added ad block disguise for plugin files
200
+ * fixed missing wrapper id
201
+ * fixed link to license page on multisites
202
+ * fixed links on intro page
203
+ * fixed rare license activation error
204
+ * fixed license issue on multisites
205
+ * under the hood: changes for ad select of ads and groups for auto cache-busting
206
+
207
  = 1.6.14 =
208
 
209
  Please [share your ideas](https://wpadvancedads.com/advanced-ads-1-6-14/) about more capabilities.