WordPress Infinite Scroll – Ajax Load More - Version 2.7.2

Version Description

  • NEW - Adding multisite support for Repeater Templates - if using a multisite, please deactivate then re-activate Ajax Load More.
  • NEW - Completely rebuilt update script for repeater templates to be more efficient and integrate with multisite installations.
  • UPDATE - Split up ALM setting fields into Global and Admin settings for increased usability.
  • NEW - Added new setting field for Error Reporting - User can now choose to display error notices regarding repeater template updating in the browser console.
Download this release

Release Info

Developer dcooney
Plugin Icon 128x128 WordPress Infinite Scroll – Ajax Load More
Version 2.7.2
Comparing to
See all releases

Code changes from version 2.7.1 to 2.7.2

README.txt CHANGED
@@ -1,10 +1,10 @@
1
  === Ajax Load More ===
2
  Contributors: dcooney
3
  Donate link: http://connekthq.com/donate/
4
- Tags: ajax, query, ajax pagination, paging, filter, infinite scroll, infinite, pagination, loop, dynamic, shortcode builder, shortcode, search, tags, category, post types, taxonomy, meta_query, post_format, wmpl, archives, date
5
  Requires at least: 3.6
6
  Tested up to: 4.2.3
7
- Stable tag: 2.7.1
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
@@ -12,8 +12,8 @@ A simple solution for lazy loading/infinite scrolling posts and pages with Ajax.
12
 
13
  == Description ==
14
 
15
- Ajax Load More is a simple yet powerful solution for lazy loading/infinite scrolling WordPress posts and pages with Ajax.
16
- Build complex WordPress queries using our shortcode builder then add the shortcode to your pages via the content editor or directly into your template files.
17
 
18
 
19
  = Features =
@@ -22,6 +22,7 @@ Build complex WordPress queries using our shortcode builder then add the shortco
22
  * **Customizable Repeater Templates** - Edit and extend the functionality of Ajax Load More by creating your own repeater template to match the look and feel of your website (see screenshots).
23
  * **Setting Panel** - Customize your version of Ajax Load More by updating various plugin settings (see screenshots).
24
  * **Multiple Instances** - You can include multiple instances of Ajax Load More on a single page, post or template.
 
25
 
26
  Check out the **[demo site](http://connekthq.com/plugins/ajax-load-more/)** for more information!
27
 
@@ -110,20 +111,20 @@ Ajax Load More accepts a number of parameters that are passed to the WordPress q
110
  The following Add-ons are available to increase the functionality of Ajax Load More.
111
 
112
  > #### Custom Repeaters
113
- > The **[Custom Repeaters](http://connekthq.com/plugins/ajax-load-more/custom-repeaters)** add-on will allow for **unlimited repeater templates** and provide the ability to create unique templates for different content types throughout your theme.<br />
114
- > [Get More Information](http://connekthq.com/plugins/ajax-load-more/custom-repeaters)
115
  >
116
  > #### Cache
117
- > The **[Cache](http://connekthq.com/plugins/ajax-load-more/cache)** creates static HTML files of Ajax Load More requests then serves those static pages to your visitors without querying the database.<br />
118
- > [Get More Information](http://connekthq.com/plugins/ajax-load-more/cache)
119
  >
120
  > #### Paging
121
- > The **[Paging](http://connekthq.com/plugins/ajax-load-more/paging)** add-on will transform Ajax Load More’s lazy load/infinite scroll functionality into a robust ajax powered navigation system.<br />
122
- > [Get More Information](http://connekthq.com/plugins/ajax-load-more/paging)
123
- > >
124
  > #### Preloaded
125
- > The **[Preloaded](http://connekthq.com/plugins/ajax-load-more/preloaded)** add-on will allow you to quickly and easily preload an initial set of posts before completing any Ajax requests to the server.<br />
126
- > [Get More Information](http://connekthq.com/plugins/ajax-load-more/preloaded)
127
  >
128
  > #### Search Engine Optimization
129
  > The **[SEO](http://connekthq.com/plugins/ajax-load-more/seo/)** add-on will optimize your ajax loaded content for search engines and site visitors by generating standard WordPress paging URLs with each Ajax Load More query.<br />
@@ -264,6 +265,13 @@ How to install Ajax Load More.
264
  == Changelog ==
265
 
266
 
 
 
 
 
 
 
 
267
  = 2.7.1 =
268
  * FIX - Fixed issue for querying by meta_key - users are not required to enter a meta_value to query by meta_key.
269
 
1
  === Ajax Load More ===
2
  Contributors: dcooney
3
  Donate link: http://connekthq.com/donate/
4
+ Tags: ajax, query, lazy load, lazy loading, ajax pagination, paging, filter, infinite scroll, infinite, pagination, loop, dynamic, shortcode builder, shortcode, search, tags, category, post types, taxonomy, meta_query, archives, date
5
  Requires at least: 3.6
6
  Tested up to: 4.2.3
7
+ Stable tag: 2.7.2
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
12
 
13
  == Description ==
14
 
15
+ Ajax Load More is a powerful solution for infinite scrolling WordPress posts and pages using Ajax.
16
+ Build complex WordPress queries using the custom shortcode builder and then add the shortcode to your pages via the content editor or directly into your template files.
17
 
18
 
19
  = Features =
22
  * **Customizable Repeater Templates** - Edit and extend the functionality of Ajax Load More by creating your own repeater template to match the look and feel of your website (see screenshots).
23
  * **Setting Panel** - Customize your version of Ajax Load More by updating various plugin settings (see screenshots).
24
  * **Multiple Instances** - You can include multiple instances of Ajax Load More on a single page, post or template.
25
+ * **Multisite Compatibility** - As of Ajax Load More 2.7.2 you can now manage repeater templates across all sites in your network.
26
 
27
  Check out the **[demo site](http://connekthq.com/plugins/ajax-load-more/)** for more information!
28
 
111
  The following Add-ons are available to increase the functionality of Ajax Load More.
112
 
113
  > #### Custom Repeaters
114
+ > The **[Custom Repeaters](http://connekthq.com/plugins/ajax-load-more/custom-repeaters/)** add-on will allow for **unlimited repeater templates** and provide the ability to create unique templates for different content types throughout your theme.<br />
115
+ > [Get More Information](http://connekthq.com/plugins/ajax-load-more/custom-repeaters/)
116
  >
117
  > #### Cache
118
+ > The **[Cache](http://connekthq.com/plugins/ajax-load-more/cache/)** creates static HTML files of Ajax Load More requests then serves those static pages to your visitors without querying the database.<br />
119
+ > [Get More Information](http://connekthq.com/plugins/ajax-load-more/cache/)
120
  >
121
  > #### Paging
122
+ > The **[Paging](http://connekthq.com/plugins/ajax-load-more/paging/)** add-on will transform Ajax Load More’s lazy load/infinite scroll functionality into a robust ajax powered navigation system.<br />
123
+ > [Get More Information](http://connekthq.com/plugins/ajax-load-more/paging/)
124
+ >
125
  > #### Preloaded
126
+ > The **[Preloaded](http://connekthq.com/plugins/ajax-load-more/preloaded/)** add-on will allow you to quickly and easily preload an initial set of posts before completing any Ajax requests to the server.<br />
127
+ > [Get More Information](http://connekthq.com/plugins/ajax-load-more/preloaded/)
128
  >
129
  > #### Search Engine Optimization
130
  > The **[SEO](http://connekthq.com/plugins/ajax-load-more/seo/)** add-on will optimize your ajax loaded content for search engines and site visitors by generating standard WordPress paging URLs with each Ajax Load More query.<br />
265
  == Changelog ==
266
 
267
 
268
+ = 2.7.2 =
269
+ * NEW - Adding multisite support for Repeater Templates - if using a multisite, please deactivate then re-activate Ajax Load More.
270
+ * NEW - Completely rebuilt update script for repeater templates to be more efficient and integrate with multisite installations.
271
+ * UPDATE - Split up ALM setting fields into Global and Admin settings for increased usability.
272
+ * NEW - Added new setting field for Error Reporting - User can now choose to display error notices regarding repeater template updating in the browser console.
273
+
274
+
275
  = 2.7.1 =
276
  * FIX - Fixed issue for querying by meta_key - users are not required to enter a meta_value to query by meta_key.
277
 
admin/admin.php CHANGED
@@ -40,67 +40,103 @@ function alm_admin_vars() { ?>
40
 
41
  function alm_core_update() {
42
 
43
- if( !get_option( 'alm_version' ) )
44
- add_option( 'alm_version', ALM_VERSION ); // Add 'alm_version' to WP options table
45
- else
46
- update_option( 'alm_version', ALM_VERSION ); // Update 'alm_version'
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
47
 
48
- //$installed_ver = get_option( "alm_version" ); // Get value from WP Option tbl
49
-
50
- global $wpdb;
51
- $table_name = $wpdb->prefix . "alm";
52
- // **********************************************
53
- // If table exists
54
- // **********************************************
55
- if($wpdb->get_var("SHOW TABLES LIKE '$table_name'") == $table_name) {
56
-
57
- // Compare versions of repeaters, if template versions do not match, update the repeater with value from DB
58
- $version = $wpdb->get_var("SELECT pluginVersion FROM $table_name WHERE name = 'default'");
59
- if($version != ALM_VERSION){ // First, make sure versions do not match.
60
-
61
- //Write to repeater file
62
- $data = $wpdb->get_var("SELECT repeaterDefault FROM $table_name WHERE name = 'default'");
63
- $f = ALM_PATH. 'core/repeater/default.php'; // File
64
-
65
- try {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
66
  $o = fopen($f, 'w+'); //Open file
67
  if ( !$o ) {
68
- throw new Exception(__('[Ajax Load More] Unable to open the default repeater template (/core/repeater/default.php).', ALM_NAME));
69
  }
70
  $w = fwrite($o, $data); //Save the file
71
  if ( !$w ) {
72
- throw new Exception(__('[Ajax Load More] Unable to save the default repeater (/core/repeater/default.php).', ALM_NAME));
73
  }
74
  fclose($o); //now close it
75
 
76
  } catch ( Exception $e ) {
77
- echo '<script>console.log("' .$e->getMessage(). '");</script>';
78
- }
79
- }
80
- }
81
-
82
- // **********************************************
83
- // If table DOES NOT exist, create it.
84
- // **********************************************
85
- if($wpdb->get_var("SHOW TABLES LIKE '$table_name'") != $table_name) {
86
- $createRepeater = '<li><?php if ( has_post_thumbnail() ) { the_post_thumbnail(array(100,100));}?><h3><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a></h3><p class="entry-meta"><?php the_time("F d, Y"); ?></p><?php the_excerpt(); ?></li>';
87
- $sql = "CREATE TABLE $table_name (
88
- id mediumint(9) NOT NULL AUTO_INCREMENT,
89
- name text NOT NULL,
90
- repeaterDefault longtext NOT NULL,
91
- pluginVersion text NOT NULL,
92
- UNIQUE KEY id (id)
93
- );";
94
- require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
95
- dbDelta( $sql );
96
-
97
- //Insert default data into created table
98
- $wpdb->insert($table_name , array('name' => 'default', 'repeaterDefault' => $createRepeater, 'pluginVersion' => ALM_VERSION));
99
  }
 
100
  }
101
 
102
 
103
 
 
104
  /**
105
  * alm_admin_menu
106
  * Create Admin Menu
@@ -394,6 +430,12 @@ function alm_delete_cache(){
394
  */
395
 
396
  function alm_save_repeater(){
 
 
 
 
 
 
397
  $nonce = $_POST["nonce"];
398
  // Check our nonce, if they don't match then bounce!
399
  if (! wp_verify_nonce( $nonce, 'alm_repeater_nonce' ))
@@ -405,37 +447,62 @@ function alm_save_repeater(){
405
  $t = Trim(stripslashes($_POST["type"])); // Repeater name
406
  $a = Trim(stripslashes($_POST["alias"])); // Repeater alias
407
 
408
- // Write to repeater file
 
 
409
  if($t === 'default'){
410
- $f = ALM_PATH. 'core/repeater/'.$n .'.php'; // File
 
 
 
 
 
 
 
 
 
 
411
  }
412
- elseif($t === 'unlimited'){
413
- $f = ALM_UNLIMITED_PATH. 'repeaters/'.$n .'.php'; // File
 
 
 
 
 
 
 
 
 
 
 
414
  }
 
415
  else{
416
- $f = ALM_REPEATER_PATH. 'repeaters/'.$n .'.php'; // File
 
 
417
  }
418
 
419
-
420
- try {
421
  $o = fopen($f, 'w+'); //Open file
422
  if ( !$o ) {
423
- throw new Exception(__('[Ajax Load More] Error opening repeater template - Please check your file path and ensure your server is configured to allow Ajax Load More to read and write files within the /ajax-load-more/core/repeater directory', ALM_NAME));
424
  }
425
  $w = fwrite($o, $c); //Save the file
426
  if ( !$w ) {
427
- throw new Exception(__('[Ajax Load More]Error saving repeater template - Please check your file path and ensure your server is configured to allow Ajax Load More to read and write files within the /ajax-load-more/core/repeater directory.', ALM_NAME));
428
  }
429
  fclose($o); //now close it
430
 
431
  } catch ( Exception $e ) {
432
- //echo $e;
433
- echo '<script>console.log("' .$e->getMessage(). '");</script>';
 
 
434
  }
435
 
436
- //Save to database
437
- global $wpdb;
438
- $table_name = $wpdb->prefix . "alm";
439
 
440
  if($t === 'default') {
441
  $data_update = array('repeaterDefault' => "$c", 'pluginVersion' => ALM_VERSION);
@@ -562,6 +629,12 @@ function alm_admin_init(){
562
  'ajax-load-more'
563
  );
564
 
 
 
 
 
 
 
565
 
566
  add_settings_field( // Container type
567
  '_alm_container_type',
@@ -579,18 +652,26 @@ function alm_admin_init(){
579
  'alm_general_settings'
580
  );
581
 
582
- add_settings_field( // Hide btn
583
- '_alm_hide_btn',
584
- __('Editor Button', ALM_NAME ),
585
- 'alm_hide_btn_callback',
586
  'ajax-load-more',
587
  'alm_general_settings'
588
  );
589
 
590
- add_settings_field( // Load dynamic queries
591
- '_alm_disable_dynamic',
592
- __('Dynamic Content', ALM_NAME ),
593
- 'alm_disable_dynamic_callback',
 
 
 
 
 
 
 
 
594
  'ajax-load-more',
595
  'alm_general_settings'
596
  );
@@ -611,28 +692,28 @@ function alm_admin_init(){
611
  'alm_general_settings'
612
  );
613
 
614
- add_settings_field( // Disbale CSS
615
- '_alm_disable_css',
616
- __('Disable CSS', ALM_NAME ),
617
- 'alm_disable_css_callback',
618
  'ajax-load-more',
619
- 'alm_general_settings'
620
- );
621
 
622
- add_settings_field( // Btn color
623
- '_alm_btn_color',
624
- __('Button Color', ALM_NAME ),
625
- 'alm_btn_color_callback',
626
  'ajax-load-more',
627
- 'alm_general_settings'
628
- );
629
 
630
- add_settings_field( // Button classes
631
- '_alm_btn_classname',
632
- __('Button Classes', ALM_NAME ),
633
- 'alm_btn_class_callback',
634
  'ajax-load-more',
635
- 'alm_general_settings'
636
  );
637
 
638
 
@@ -676,7 +757,20 @@ function alm_admin_init(){
676
  */
677
 
678
  function alm_general_settings_callback() {
679
- echo '<p>' . __('Customize your version of Ajax Load More by updating the fields below.', ALM_NAME) . '</p>';
 
 
 
 
 
 
 
 
 
 
 
 
 
680
  }
681
 
682
 
@@ -734,6 +828,27 @@ function alm_hide_btn_callback(){
734
 
735
 
736
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
737
  /*
738
  * alm_disable_dynamic_callback
739
  * Disable the dynamic population of categories, tags and authors
@@ -764,7 +879,7 @@ function alm_disable_dynamic_callback(){
764
  function alm_class_callback(){
765
  $options = get_option( 'alm_settings' );
766
 
767
- $html = '<label for="alm_settings[_alm_classname]">'.__('Add classes to Ajax Load More container - these classes are applied globally and will appear with every instance of Ajax Load More.<span style="display:block">You can also add classes to the ALM container when building a shortcode.</span>', ALM_NAME).'</label><br/>';
768
  $html .= '<input type="text" id="alm_settings[_alm_classname]" name="alm_settings[_alm_classname]" value="'.$options['_alm_classname'].'" placeholder="posts listing etc..." /> ';
769
 
770
  echo $html;
40
 
41
  function alm_core_update() {
42
 
43
+ if(!get_option( 'alm_version')){ // Add 'alm_version' to WP options table if it does not exist
44
+ add_option( 'alm_version', ALM_VERSION );
45
+ }
46
+
47
+ $alm_installed_ver = get_option( "alm_version" ); // Get value from WP Option tbl
48
+ if ( $alm_installed_ver != ALM_VERSION ) {
49
+ alm_run_update();
50
+ }
51
+ }
52
+
53
+
54
+
55
+ /**
56
+ * alm_run_update
57
+ * Run the update on all 'blogs'
58
+ *
59
+ * @since 2.7.2
60
+ */
61
+
62
+ function alm_run_update(){
63
+ global $wpdb;
64
 
65
+ if ( is_multisite()) {
66
+ $blog_ids = $wpdb->get_col( "SELECT blog_id FROM $wpdb->blogs" );
67
+
68
+ // Loop all blogs and run update routine
69
+ foreach ( $blog_ids as $blog_id ) {
70
+ switch_to_blog( $blog_id );
71
+ alm_update_template_files();
72
+ restore_current_blog();
73
+ }
74
+
75
+ } else {
76
+ alm_update_template_files();
77
+ }
78
+
79
+ update_option( "alm_version", ALM_VERSION ); // Update the WP Option tbl with the new version num
80
+ }
81
+
82
+
83
+
84
+ /**
85
+ * alm_update_template_files
86
+ * Update routine for template files
87
+ *
88
+ * @since 2.7.2
89
+ */
90
+
91
+ function alm_update_template_files(){
92
+ global $wpdb;
93
+ $table_name = $wpdb->prefix . "alm";
94
+ $blog_id = $wpdb->blogid;
95
+
96
+ // Get all templates ($rows) where name is 'default'
97
+ $rows = $wpdb->get_results("SELECT * FROM $table_name WHERE name = 'default'");
98
+
99
+ if($rows){
100
+ foreach( $rows as $row ) { // Loop $rows
101
+
102
+ $data = $wpdb->get_var("SELECT repeaterDefault FROM $table_name WHERE name = 'default'");
103
+
104
+ if($blog_id > 1){
105
+ $dir = ALM_PATH. 'core/repeater/'. $blog_id;
106
+ if( !is_dir($dir) ){
107
+ mkdir($dir);
108
+ }
109
+ $f = ALM_PATH. 'core/repeater/'. $blog_id .'/default.php';
110
+ }else{
111
+ $f = ALM_PATH. 'core/repeater/default.php';
112
+ }
113
+
114
+ try {
115
  $o = fopen($f, 'w+'); //Open file
116
  if ( !$o ) {
117
+ throw new Exception(__('[Ajax Load More] Error opening default repeater template - Please check your file path and ensure your server is configured to allow Ajax Load More to read and write files within the /ajax-load-more/core/repeater directory', ALM_NAME));
118
  }
119
  $w = fwrite($o, $data); //Save the file
120
  if ( !$w ) {
121
+ throw new Exception(__('[Ajax Load More] Error updating default repeater template - Please check your file path and ensure your server is configured to allow Ajax Load More to read and write files within the /ajax-load-more/core/repeater directory.', ALM_NAME));
122
  }
123
  fclose($o); //now close it
124
 
125
  } catch ( Exception $e ) {
126
+ // Display error message in console.
127
+ if(!isset($options['_alm_error_notices']) || $options['_alm_error_notices'] == '1'){
128
+ echo '<script>console.log("' .$e->getMessage(). '");</script>';
129
+ }
130
+ }
131
+
132
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
133
  }
134
+
135
  }
136
 
137
 
138
 
139
+
140
  /**
141
  * alm_admin_menu
142
  * Create Admin Menu
430
  */
431
 
432
  function alm_save_repeater(){
433
+
434
+ global $wpdb;
435
+ $table_name = $wpdb->prefix . "alm";
436
+ $blog_id = $wpdb->blogid;
437
+ $options = get_option( 'alm_settings' ); //Get plugin options
438
+
439
  $nonce = $_POST["nonce"];
440
  // Check our nonce, if they don't match then bounce!
441
  if (! wp_verify_nonce( $nonce, 'alm_repeater_nonce' ))
447
  $t = Trim(stripslashes($_POST["type"])); // Repeater name
448
  $a = Trim(stripslashes($_POST["alias"])); // Repeater alias
449
 
450
+ // Write to repeater templates
451
+
452
+ // (Default)
453
  if($t === 'default'){
454
+
455
+ if($blog_id > 1){
456
+ $dir = ALM_PATH. 'core/repeater/'. $blog_id;
457
+ if( !is_dir($dir) ){
458
+ mkdir($dir);
459
+ }
460
+ $f = ALM_PATH. 'core/repeater/'. $blog_id .'/default.php';
461
+ }else{
462
+ $f = ALM_PATH. 'core/repeater/default.php';
463
+ }
464
+
465
  }
466
+ // (Unlimited)
467
+ elseif($t === 'unlimited'){
468
+
469
+ if($blog_id > 1){
470
+ $dir = ALM_UNLIMITED_PATH. 'repeaters/'. $blog_id;
471
+ if( !is_dir($dir) ){
472
+ mkdir($dir);
473
+ }
474
+ $f = ALM_UNLIMITED_PATH. 'repeaters/'. $blog_id .'/'.$n .'.php';
475
+ }else{
476
+ $f = ALM_UNLIMITED_PATH. 'repeaters/'.$n .'.php';
477
+ }
478
+
479
  }
480
+ // (Unlimited v1)
481
  else{
482
+
483
+ $f = ALM_REPEATER_PATH. 'repeaters/'.$n .'.php';
484
+
485
  }
486
 
487
+ try {
 
488
  $o = fopen($f, 'w+'); //Open file
489
  if ( !$o ) {
490
+ throw new Exception(__('[Ajax Load More] Unable to open repeater template - '.$f.' - Please check your file path and ensure your server is configured to allow Ajax Load More to read and write files.', ALM_NAME));
491
  }
492
  $w = fwrite($o, $c); //Save the file
493
  if ( !$w ) {
494
+ throw new Exception(__('[Ajax Load More] Error saving repeater template - '.$f.' - Please check your file path and ensure your server is configured to allow Ajax Load More to read and write files.', ALM_NAME));
495
  }
496
  fclose($o); //now close it
497
 
498
  } catch ( Exception $e ) {
499
+ // Display error message in console.
500
+ if(!isset($options['_alm_error_notices']) || $options['_alm_error_notices'] == '1'){
501
+ echo '<script>console.log("' .$e->getMessage(). '");</script>';
502
+ }
503
  }
504
 
505
+ //Save to database
 
 
506
 
507
  if($t === 'default') {
508
  $data_update = array('repeaterDefault' => "$c", 'pluginVersion' => ALM_VERSION);
629
  'ajax-load-more'
630
  );
631
 
632
+ add_settings_section(
633
+ 'alm_admin_settings',
634
+ 'Admin Settings',
635
+ 'alm_admin_settings_callback',
636
+ 'ajax-load-more'
637
+ );
638
 
639
  add_settings_field( // Container type
640
  '_alm_container_type',
652
  'alm_general_settings'
653
  );
654
 
655
+ add_settings_field( // Disbale CSS
656
+ '_alm_disable_css',
657
+ __('Disable CSS', ALM_NAME ),
658
+ 'alm_disable_css_callback',
659
  'ajax-load-more',
660
  'alm_general_settings'
661
  );
662
 
663
+ add_settings_field( // Btn color
664
+ '_alm_btn_color',
665
+ __('Button Color', ALM_NAME ),
666
+ 'alm_btn_color_callback',
667
+ 'ajax-load-more',
668
+ 'alm_general_settings'
669
+ );
670
+
671
+ add_settings_field( // Button classes
672
+ '_alm_btn_classname',
673
+ __('Button Classes', ALM_NAME ),
674
+ 'alm_btn_class_callback',
675
  'ajax-load-more',
676
  'alm_general_settings'
677
  );
692
  'alm_general_settings'
693
  );
694
 
695
+ add_settings_field( // Load dynamic queries
696
+ '_alm_disable_dynamic',
697
+ __('Dynamic Content', ALM_NAME ),
698
+ 'alm_disable_dynamic_callback',
699
  'ajax-load-more',
700
+ 'alm_admin_settings'
701
+ );
702
 
703
+ add_settings_field( // Hide btn
704
+ '_alm_hide_btn',
705
+ __('Editor Button', ALM_NAME ),
706
+ 'alm_hide_btn_callback',
707
  'ajax-load-more',
708
+ 'alm_admin_settings'
709
+ );
710
 
711
+ add_settings_field( // Display error notices
712
+ '_alm_error_notices',
713
+ __('Error Notices', ALM_NAME ),
714
+ '_alm_error_notices_callback',
715
  'ajax-load-more',
716
+ 'alm_admin_settings'
717
  );
718
 
719
 
757
  */
758
 
759
  function alm_general_settings_callback() {
760
+ echo '<p>' . __('Customize the user experience of Ajax Load More by updating the fields below.', ALM_NAME) . '</p>';
761
+ }
762
+
763
+
764
+
765
+ /*
766
+ * alm_admin_settings_callback
767
+ * Some general admin settings text
768
+ *
769
+ * @since 2.0.0
770
+ */
771
+
772
+ function alm_admin_settings_callback() {
773
+ echo '<p>' . __('The following settings affect the WordPress admin area only.', ALM_NAME) . '</p>';
774
  }
775
 
776
 
828
 
829
 
830
 
831
+ /*
832
+ * _alm_error_notices_callback
833
+ * Display admin error notices in browser console.
834
+ *
835
+ * @since 2.7.2
836
+ */
837
+
838
+ function _alm_error_notices_callback(){
839
+ $options = get_option( 'alm_settings' );
840
+ if(!isset($options['_alm_error_notices']))
841
+ $options['_alm_error_notices'] = '1';
842
+
843
+ $html = '<input type="hidden" name="alm_settings[_alm_error_notices]" value="0" />';
844
+ $html .= '<input type="checkbox" name="alm_settings[_alm_error_notices]" id="_alm_error_notices" value="1"'. (($options['_alm_error_notices']) ? ' checked="checked"' : '') .' />';
845
+ $html .= '<label for="_alm_error_notices">'.__('Display error messaging regarding repeater template updates in the browser console.', ALM_NAME).'</label>';
846
+
847
+ echo $html;
848
+ }
849
+
850
+
851
+
852
  /*
853
  * alm_disable_dynamic_callback
854
  * Disable the dynamic population of categories, tags and authors
879
  function alm_class_callback(){
880
  $options = get_option( 'alm_settings' );
881
 
882
+ $html = '<label for="alm_settings[_alm_classname]">'.__('Add classes to Ajax Load More container - classes are applied globally and will appear with every instance of Ajax Load More.<span style="display:block">You can also add classes to the ALM container when building a shortcode.</span>', ALM_NAME).'</label><br/>';
883
  $html .= '<input type="text" id="alm_settings[_alm_classname]" name="alm_settings[_alm_classname]" value="'.$options['_alm_classname'].'" placeholder="posts listing etc..." /> ';
884
 
885
  echo $html;
admin/css/admin.css CHANGED
@@ -951,6 +951,9 @@
951
  margin: 0 0 20px;
952
  border-bottom: 1px solid #efefef;
953
  }
 
 
 
954
  .ajax-load-more h3{
955
  margin-bottom: 10px;
956
  }
@@ -1394,6 +1397,13 @@ table.highlight{
1394
  overflow: hidden;
1395
  position: relative;
1396
  }
 
 
 
 
 
 
 
1397
  .ajax-load-more .cnkt-sidebar .cta.padding-bottom{
1398
  padding-bottom: 60px;
1399
  }
@@ -2200,7 +2210,115 @@ p.cache-stats{
2200
  color: #ec4745 !important;
2201
  }
2202
 
2203
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2204
  /*
2205
  * Admin screen media queries
2206
  *
951
  margin: 0 0 20px;
952
  border-bottom: 1px solid #efefef;
953
  }
954
+ .ajax-load-more .cnkt-sidebar h3{
955
+ font-size: 17px;
956
+ }
957
  .ajax-load-more h3{
958
  margin-bottom: 10px;
959
  }
1397
  overflow: hidden;
1398
  position: relative;
1399
  }
1400
+ .ajax-load-more .cnkt-sidebar .cta.mailing-list{
1401
+ padding: 0;
1402
+ }
1403
+ .ajax-load-more .cnkt-sidebar .cta.mailing-list .head-wrap{
1404
+ display: block;
1405
+ padding: 20px;
1406
+ }
1407
  .ajax-load-more .cnkt-sidebar .cta.padding-bottom{
1408
  padding-bottom: 60px;
1409
  }
2210
  color: #ec4745 !important;
2211
  }
2212
 
2213
+
2214
+
2215
+ /*
2216
+ * Mailchimp Sign-up
2217
+ *
2218
+ * @since 2.7.2
2219
+ */
2220
+
2221
+ #alm-mailing-list{}
2222
+
2223
+ #alm-mailing-list .form-wrap{
2224
+ background-color: #f7f7f7;
2225
+ padding: 18px;
2226
+ border-top: 1px solid #ccc;
2227
+ -webkit-box-shadow: 0 1px 0 1px rgba(0, 0, 0, 0.05);
2228
+ -moz-box-shadow: 0 1px 0 1px rgba(0, 0, 0, 0.05);
2229
+ box-shadow: 0 -1px 0 1px rgba(0, 0, 0, 0.05);
2230
+ position: relative;
2231
+ }
2232
+ #alm-mailing-list .form-wrap .inner-wrap{
2233
+ position: relative;
2234
+ display: block;
2235
+ }
2236
+ #alm-mailing-list .form-wrap input{
2237
+ width: 100%;
2238
+ display: block;
2239
+ margin: 0;
2240
+ background: #fff;
2241
+ font-size: 13px;
2242
+ border-color: #ccc;
2243
+ padding: 0 7px 0 40px;
2244
+ height: 34px;
2245
+ line-height: 34px;
2246
+ }
2247
+ #alm-mailing-list .form-wrap i.fa-envelope{
2248
+ color: #fff;
2249
+ background: #ff5a58;
2250
+ position: absolute;
2251
+ top: 0;
2252
+ left: 0;
2253
+ font-size: 18px;
2254
+ z-index: 1;
2255
+ height: 34px;
2256
+ width: 34px;
2257
+ text-align: center;
2258
+ line-height: 34px;
2259
+ -webkit-border-radius: 2px 0 0 2px;
2260
+ -moz-border-radius: 2px 0 0 2px;
2261
+ border-radius: 2px 0 0 2px;
2262
+ }
2263
+ #alm-mailing-list .form-wrap button{
2264
+ padding: 0;
2265
+ margin: 0;
2266
+ height: auto;
2267
+ line-height: 1.2;
2268
+ font-weight: 600;
2269
+ position: absolute;
2270
+ right: 0;
2271
+ top:0;
2272
+ z-index: 1;
2273
+ height: 100%;
2274
+ font-size: 13px;
2275
+ border-radius: 0;
2276
+ width: 34px;
2277
+ height: 34px;
2278
+ color: #ff5a58;
2279
+ background: none !important;
2280
+ cursor: pointer;
2281
+ }
2282
+
2283
+ #alm-mailing-list .form-wrap button i{
2284
+ color: #ccc;
2285
+ line-height: 34px;
2286
+ width: 20px;
2287
+ text-align: center;
2288
+ position: absolute;
2289
+ right: 5px;
2290
+ top:0;
2291
+ font-size: 20px;
2292
+ }
2293
+ #alm-mailing-list .form-wrap button:hover i{
2294
+ color: #999;
2295
+ }
2296
+
2297
+ #alm-mailing-list .form-wrap button span{
2298
+ position: absolute;
2299
+ left: -9999px;
2300
+ top: -9999px;
2301
+ }
2302
+
2303
+ #alm-mailing-list .form-wrap label{
2304
+ font-size: 11px;
2305
+ text-transform: uppercase;
2306
+ margin: 0 0;
2307
+ padding: 0;
2308
+ font-weight: 600;
2309
+ position: absolute;
2310
+ left: -9999px;
2311
+ top:-9999px;
2312
+ }
2313
+ #alm-mailing-list .form-wrap #response{
2314
+ padding-top: 10px;
2315
+ font-size: 13px;
2316
+ display: none;
2317
+ text-align: center;
2318
+ }
2319
+ #alm-mailing-list .form-wrap #response p{
2320
+ font-style: normal !important;
2321
+ }
2322
  /*
2323
  * Admin screen media queries
2324
  *
admin/includes/cta/mailinglist.php ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div class="cta mailing-list" id="alm-mailing-list">
2
+ <div class="head-wrap">
3
+ <h3><?php _e('Subscribe to Newsletter', ALM_NAME); ?></h3>
4
+ <p><?php _e('Get product updates and release notifications delivered (infrequently) to your inbox.', ALM_NAME); ?></p>
5
+ </div>
6
+ <form action="" method="post" id="alm-mc-embedded" name="mc-embedded-subscribe-form" class="validate" data-path="<?php echo ALM_ADMIN_URL; ?>includes/mailchimp/mailchimp-info.php" novalidate>
7
+ <div class="form-wrap">
8
+ <div class="inner-wrap">
9
+ <i class="fa fa-envelope"></i>
10
+ <label for="mc_email" class="offscreen"><?php _e('Email Address', ALM_NAME); ?> <span class="asterisk">*</span> </label>
11
+ <input type="email" value="" name="email" placeholder="<?php _e('Enter email address', ALM_NAME); ?>" class="required email" id="mc_email">
12
+ <button type="submit" class="submit" id="mc_signup_submit" name="mc_signup_submit" title="Subscribe"><span class="offscreen"><?php _e('Subscribe', ALM_NAME); ?></span><i class="fa fa-arrow-circle-right"></i></button>
13
+ <div id="response"><div class="p-wrap"><p></p></div></div>
14
+ </div>
15
+ </div>
16
+ </form>
17
+ </div>
admin/includes/mailchimp/MailChimp.php ADDED
@@ -0,0 +1,87 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Drewm;
4
+
5
+ /**
6
+ * Super-simple, minimum abstraction MailChimp API v2 wrapper
7
+ *
8
+ * Uses curl if available, falls back to file_get_contents and HTTP stream.
9
+ * This probably has more comments than code.
10
+ *
11
+ * Contributors:
12
+ * Michael Minor <me@pixelbacon.com>
13
+ * Lorna Jane Mitchell, github.com/lornajane
14
+ *
15
+ * @author Drew McLellan <drew.mclellan@gmail.com>
16
+ * @version 1.1.1
17
+ */
18
+ class MailChimp
19
+ {
20
+ private $api_key;
21
+ private $api_endpoint = 'https://<dc>.api.mailchimp.com/2.0';
22
+ private $verify_ssl = false;
23
+
24
+ /**
25
+ * Create a new instance
26
+ * @param string $api_key Your MailChimp API key
27
+ */
28
+ function __construct($api_key)
29
+ {
30
+ $this->api_key = $api_key;
31
+ list(, $datacentre) = explode('-', $this->api_key);
32
+ $this->api_endpoint = str_replace('<dc>', $datacentre, $this->api_endpoint);
33
+ }
34
+
35
+ /**
36
+ * Call an API method. Every request needs the API key, so that is added automatically -- you don't need to pass it in.
37
+ * @param string $method The API method to call, e.g. 'lists/list'
38
+ * @param array $args An array of arguments to pass to the method. Will be json-encoded for you.
39
+ * @return array Associative array of json decoded API response.
40
+ */
41
+ public function call($method, $args=array(), $timeout = 10)
42
+ {
43
+ return $this->makeRequest($method, $args, $timeout);
44
+ }
45
+
46
+ /**
47
+ * Performs the underlying HTTP request. Not very exciting
48
+ * @param string $method The API method to be called
49
+ * @param array $args Assoc array of parameters to be passed
50
+ * @return array Assoc array of decoded result
51
+ */
52
+ private function makeRequest($method, $args=array(), $timeout = 10)
53
+ {
54
+ $args['apikey'] = $this->api_key;
55
+
56
+ $url = $this->api_endpoint.'/'.$method.'.json';
57
+ $json_data = json_encode($args);
58
+
59
+ if (function_exists('curl_init') && function_exists('curl_setopt')){
60
+ $ch = curl_init();
61
+ curl_setopt($ch, CURLOPT_URL, $url);
62
+ curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
63
+ curl_setopt($ch, CURLOPT_USERAGENT, 'PHP-MCAPI/2.0');
64
+ curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
65
+ curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
66
+ curl_setopt($ch, CURLOPT_POST, true);
67
+ curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, $this->verify_ssl);
68
+ curl_setopt($ch, CURLOPT_POSTFIELDS, $json_data);
69
+ $result = curl_exec($ch);
70
+ curl_close($ch);
71
+ } else {
72
+ $result = file_get_contents($url, null, stream_context_create(array(
73
+ 'http' => array(
74
+ 'protocol_version' => 1.1,
75
+ 'user_agent' => 'PHP-MCAPI/2.0',
76
+ 'method' => 'POST',
77
+ 'header' => "Content-type: application/json\r\n".
78
+ "Connection: close\r\n" .
79
+ "Content-length: " . strlen($json_data) . "\r\n",
80
+ 'content' => $json_data,
81
+ ),
82
+ )));
83
+ }
84
+
85
+ return $result ? json_decode($result, true) : false;
86
+ }
87
+ }
admin/includes/mailchimp/mailchimp-info.php ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ <?php
3
+ function mailchimpInfo(){
4
+ require_once('MailChimp.php'); // same directory as mailchimp-info.php
5
+
6
+ $email_field = trim($_GET['email']);
7
+ $merge_vars = Array(
8
+ 'EMAIL' => $email_field,
9
+ );
10
+
11
+
12
+ $MailChimp = new \Drewm\MailChimp('ec3c9165886020b954bde777ad52b432-us2');
13
+ $result = $MailChimp->call('lists/subscribe', array(
14
+ 'id' => '216cf21285',
15
+ 'email' => array('email'=> $email_field),
16
+ 'merge_vars' => $merge_vars,
17
+ 'double_optin' => false,
18
+ 'send_welcome' => true,
19
+ ));
20
+
21
+ $status = $result['status'];
22
+ if($status != 'error'){
23
+ // It worked!
24
+ echo '<i class="fa fa-check-square"></i> You\'ve been subscribed to our list!';
25
+ }else{
26
+ echo '<i class="fa fa-exclamation-circle"></i> Error - ' . $result['error'];
27
+ }
28
+ }
29
+ // If being called via ajax, autorun the function
30
+ if($_GET['ajax']){
31
+ echo mailchimpInfo();
32
+ }
33
+ ?>
admin/js/admin.js CHANGED
@@ -3,6 +3,50 @@ var _alm = _alm || {};
3
  jQuery(document).ready(function($) {
4
  "use strict";
5
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6
  /*
7
  * _alm.copyToClipboard
8
  * Copy shortcode to clipboard
3
  jQuery(document).ready(function($) {
4
  "use strict";
5
 
6
+ /*
7
+ * Mailchimp Signup
8
+ * From the setting screen
9
+ *
10
+ * @since 2.7.2
11
+ */
12
+ $('form#alm-mc-embedded').submit(function() {
13
+ var el = $('#alm-mailing-list'),
14
+ email = $('input#mc_email', el).val(),
15
+ data_path = $('form', el).data('path');
16
+
17
+ // update user interface
18
+ $('#response', el).fadeIn(250).addClass('loading');
19
+ $('#response p', el).html('Adding email address...');
20
+
21
+ // Verify email address
22
+ if(!IsEmail(email)){
23
+ $('#response p', el).html('<i class="fa fa-exclamation-circle"></i> Please enter a valid email address.');
24
+ $('#response', el).removeClass('loading');
25
+ $('#response', el).delay(2000).fadeOut(250);
26
+ return false;
27
+ }
28
+ // Prepare query string and send AJAX request
29
+ $.ajax({
30
+ url: data_path,
31
+ data: 'ajax=true&email=' + escape(email),
32
+ success: function(msg) {
33
+ $('#response', el).removeClass('loading');
34
+ $('#response p', el).html(msg);
35
+ },
36
+ error: function() {
37
+ $('#response', el).removeClass('loading').delay(2000).fadeOut(250);
38
+ $('#response p', el).html('There was an error submitting your email address.');
39
+ }
40
+ });
41
+
42
+ return false;
43
+ });
44
+ function IsEmail(email) {
45
+ var regex = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/;
46
+ return regex.test(email);
47
+ }
48
+
49
+
50
  /*
51
  * _alm.copyToClipboard
52
  * Copy shortcode to clipboard
admin/views/add-ons.php CHANGED
@@ -21,7 +21,7 @@
21
  </div>
22
  </div>
23
  <?php
24
- $cache_url = 'http://connekthq.com/plugins/ajax-load-more/cache/';
25
  if (has_action('alm_cache_installed')){
26
  echo '<a class="cnkt-button installed" href="'. $cache_url .'" target="_blank"><i class="fa fa-check-square"></i> Installed</a> ';
27
  }else{
@@ -47,7 +47,7 @@
47
  </div>
48
  </div>
49
  <?php
50
- $cr_url = 'http://connekthq.com/plugins/ajax-load-more/custom-repeaters/';
51
  if (has_action('alm_unlimited_installed')){
52
  echo '<a class="cnkt-button installed" href="'. $cr_url .'" target="_blank"><i class="fa fa-check-square"></i> Installed</a> ';
53
  }else{
@@ -73,7 +73,7 @@
73
  </div>
74
  </div>
75
  <?php
76
- $paging_url = 'http://connekthq.com/plugins/ajax-load-more/paging/';
77
  if (has_action('alm_paging_installed')){
78
  echo '<a class="cnkt-button installed" href="'. $paging_url .'" target="_blank"><i class="fa fa-check-square"></i> Installed</a> ';
79
  }else{
@@ -99,11 +99,11 @@
99
  </div>
100
  </div>
101
  <?php
102
- $cr_url = 'http://connekthq.com/plugins/ajax-load-more/preloaded/';
103
  if (has_action('alm_preload_installed')){
104
- echo '<a class="cnkt-button installed" href="'. $cr_url .'" target="_blank"><i class="fa fa-check-square"></i> Installed</a> ';
105
  }else{
106
- echo '<a class="cnkt-button" href="'. $cr_url .'" target="_blank"><i class="fa fa-download"></i> Purchase &amp; Install</a>';
107
  }
108
  ?>
109
  </div>
@@ -125,7 +125,7 @@
125
  </div>
126
  </div>
127
  <?php
128
- $seo_url = 'http://connekthq.com/plugins/ajax-load-more/seo/';
129
  if (has_action('alm_seo_installed')){
130
  echo '<a class="cnkt-button installed" href="'. $seo_url .'" target="_blank"><i class="fa fa-check-square"></i> Installed</a> ';
131
  }else{
@@ -140,7 +140,7 @@
140
  <div class="cnkt-sidebar">
141
  <div class="cta">
142
  <h3><?php _e('Add-on Updates', ALM_NAME); ?></h3>
143
- <p><?php _e('All add-ons are installed as stand alone plugins and will receive plugin update notifications directly within the <a href="plugins.php">WordPress Plugin dashboard</a>.', ALM_NAME); ?></p>
144
  </div>
145
  <?php include_once( ALM_PATH . 'admin/includes/cta/writeable.php'); ?>
146
  </div>
21
  </div>
22
  </div>
23
  <?php
24
+ $cache_url = 'https://connekthq.com/plugins/ajax-load-more/add-ons/cache/?utm_source=WP%20Admin&utm_medium=ALM%20Add-ons&utm_campaign=Cache';
25
  if (has_action('alm_cache_installed')){
26
  echo '<a class="cnkt-button installed" href="'. $cache_url .'" target="_blank"><i class="fa fa-check-square"></i> Installed</a> ';
27
  }else{
47
  </div>
48
  </div>
49
  <?php
50
+ $cr_url = 'https://connekthq.com/plugins/ajax-load-more/add-ons/custom-repeaters/?utm_source=WP%20Admin&utm_medium=ALM%20Add-ons&utm_campaign=Custom%20Repeaters';
51
  if (has_action('alm_unlimited_installed')){
52
  echo '<a class="cnkt-button installed" href="'. $cr_url .'" target="_blank"><i class="fa fa-check-square"></i> Installed</a> ';
53
  }else{
73
  </div>
74
  </div>
75
  <?php
76
+ $paging_url = 'https://connekthq.com/plugins/ajax-load-more/add-ons/paging/?utm_source=WP%20Admin&utm_medium=ALM%20Add-ons&utm_campaign=Paging';
77
  if (has_action('alm_paging_installed')){
78
  echo '<a class="cnkt-button installed" href="'. $paging_url .'" target="_blank"><i class="fa fa-check-square"></i> Installed</a> ';
79
  }else{
99
  </div>
100
  </div>
101
  <?php
102
+ $preload_url = 'https://connekthq.com/plugins/ajax-load-more/add-ons/preloaded/?utm_source=WP%20Admin&utm_medium=ALM%20Add-ons&utm_campaign=Preloaded';
103
  if (has_action('alm_preload_installed')){
104
+ echo '<a class="cnkt-button installed" href="'. $preload_url .'" target="_blank"><i class="fa fa-check-square"></i> Installed</a> ';
105
  }else{
106
+ echo '<a class="cnkt-button" href="'. $preload_url .'" target="_blank"><i class="fa fa-download"></i> Purchase &amp; Install</a>';
107
  }
108
  ?>
109
  </div>
125
  </div>
126
  </div>
127
  <?php
128
+ $seo_url = 'https://connekthq.com/plugins/ajax-load-more/add-ons/seo/?utm_source=WP%20Admin&utm_medium=ALM%20Add-ons&utm_campaign=SEO';
129
  if (has_action('alm_seo_installed')){
130
  echo '<a class="cnkt-button installed" href="'. $seo_url .'" target="_blank"><i class="fa fa-check-square"></i> Installed</a> ';
131
  }else{
140
  <div class="cnkt-sidebar">
141
  <div class="cta">
142
  <h3><?php _e('Add-on Updates', ALM_NAME); ?></h3>
143
+ <p><?php _e('All add-ons are installed as stand alone plugins and with a valid license key will receive plugin update notifications directly within the <a href="plugins.php">WordPress Plugin dashboard</a>.', ALM_NAME); ?></p>
144
  </div>
145
  <?php include_once( ALM_PATH . 'admin/includes/cta/writeable.php'); ?>
146
  </div>
admin/views/licenses.php CHANGED
@@ -88,7 +88,7 @@
88
  <div class="license-title">
89
  <div class="status <?php if($alm_unlimited_status == 'valid'){echo 'valid';}else{echo 'invalid';} ?> "></div>
90
  <h2><?php _e('Custom Repeaters v2', ALM_NAME); ?></h2>
91
- <a class="cnkt-button installed" href="http://connekthq.com/plugins/ajax-load-more/paging/" target="_blank"><i class="fa fa-check-square"></i> Installed</a>
92
  </div>
93
  <div class="license-wrap">
94
  <form method="post" action="options.php">
88
  <div class="license-title">
89
  <div class="status <?php if($alm_unlimited_status == 'valid'){echo 'valid';}else{echo 'invalid';} ?> "></div>
90
  <h2><?php _e('Custom Repeaters v2', ALM_NAME); ?></h2>
91
+ <a class="cnkt-button installed" href="http://connekthq.com/plugins/ajax-load-more/custom-repeaters/" target="_blank"><i class="fa fa-check-square"></i> Installed</a>
92
  </div>
93
  <div class="license-wrap">
94
  <form method="post" action="options.php">
admin/views/repeater-templates.php CHANGED
@@ -15,8 +15,16 @@
15
 
16
  <!-- Default -->
17
  <div class="row template default-repeater">
18
- <?php
19
- $filename = ALM_PATH. 'core/repeater/default.php';
 
 
 
 
 
 
 
 
20
  $handle = fopen ($filename, "r");
21
  $contents = '';
22
  if(filesize ($filename) != 0){
15
 
16
  <!-- Default -->
17
  <div class="row template default-repeater">
18
+ <?php
19
+ global $wpdb;
20
+ $table_name = $wpdb->prefix . "alm";
21
+ $blog_id = $wpdb->blogid;
22
+ if($blog_id > 1){
23
+ $filename = ALM_PATH. 'core/repeater/'. $blog_id .'/default.php';
24
+ }else{
25
+ $filename = ALM_PATH. 'core/repeater/default.php';
26
+ }
27
+
28
  $handle = fopen ($filename, "r");
29
  $contents = '';
30
  if(filesize ($filename) != 0){
admin/views/settings.php CHANGED
@@ -43,6 +43,7 @@
43
  </div>
44
  </div>
45
  <div class="cnkt-sidebar">
 
46
  <?php include_once( ALM_PATH . 'admin/includes/cta/resources.php'); ?>
47
  <?php include_once( ALM_PATH . 'admin/includes/cta/about.php'); ?>
48
  </div>
43
  </div>
44
  </div>
45
  <div class="cnkt-sidebar">
46
+ <?php include_once( ALM_PATH . 'admin/includes/cta/mailinglist.php'); ?>
47
  <?php include_once( ALM_PATH . 'admin/includes/cta/resources.php'); ?>
48
  <?php include_once( ALM_PATH . 'admin/includes/cta/about.php'); ?>
49
  </div>
ajax-load-more.php CHANGED
@@ -6,31 +6,77 @@ Description: A simple solution for lazy loading WordPress posts and pages with A
6
  Author: Darren Cooney
7
  Twitter: @KaptonKaos
8
  Author URI: http://connekthq.com
9
- Version: 2.7.1
10
  License: GPL
11
  Copyright: Darren Cooney & Connekt Media
12
  */
13
 
14
- define('ALM_VERSION', '2.7.1');
15
- define('ALM_RELEASE', 'July 9, 2015');
16
  define( 'ALM_STORE_URL', 'https://connekthq.com' ); // EDD CONSTANT - Store URL
17
 
18
 
19
  /*
20
  * alm_install
 
 
21
  * Create table for storing repeater
22
  *
23
  * @since 2.0.0
24
  */
25
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
26
  register_activation_hook( __FILE__, 'alm_install' );
27
- function alm_install() {
 
 
 
 
28
  global $wpdb;
29
  $table_name = $wpdb->prefix . "alm";
 
 
30
  $defaultRepeater = '<li <?php if (!has_post_thumbnail()) { ?> class="no-img"<?php } ?>><?php if ( has_post_thumbnail() ) { the_post_thumbnail(array(100,100));}?><h3><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a></h3><p class="entry-meta"><?php the_time("F d, Y"); ?></p><?php the_excerpt(); ?></li>';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
31
 
32
  //Create table, if it doesn't already exist.
33
  if($wpdb->get_var("SHOW TABLES LIKE '$table_name'") != $table_name) {
 
34
  $sql = "CREATE TABLE $table_name (
35
  id mediumint(9) NOT NULL AUTO_INCREMENT,
36
  name text NOT NULL,
@@ -43,17 +89,14 @@ function alm_install() {
43
 
44
  //Insert the default data in created table
45
  $wpdb->insert($table_name , array('name' => 'default', 'repeaterDefault' => $defaultRepeater, 'pluginVersion' => ALM_VERSION));
 
46
  }
47
 
48
- if( !get_option( 'alm_version' ) )
49
- add_option( 'alm_version', ALM_VERSION ); // Add 'alm_version' to WP options table
50
- else
51
- update_option( 'alm_version', ALM_VERSION ); // Update 'alm_version'
52
-
53
  }
54
 
55
 
56
 
 
57
  if( !class_exists('AjaxLoadMore') ):
58
  class AjaxLoadMore {
59
 
6
  Author: Darren Cooney
7
  Twitter: @KaptonKaos
8
  Author URI: http://connekthq.com
9
+ Version: 2.7.2
10
  License: GPL
11
  Copyright: Darren Cooney & Connekt Media
12
  */
13
 
14
+ define( 'ALM_VERSION', '2.7.2' );
15
+ define( 'ALM_RELEASE', 'July 28, 2015' );
16
  define( 'ALM_STORE_URL', 'https://connekthq.com' ); // EDD CONSTANT - Store URL
17
 
18
 
19
  /*
20
  * alm_install
21
+ *
22
+ * Activation hook
23
  * Create table for storing repeater
24
  *
25
  * @since 2.0.0
26
  */
27
 
28
+ function alm_install($network_wide) {
29
+
30
+ global $wpdb;
31
+ add_option( "alm_version", ALM_VERSION ); // Add to WP Option tbl
32
+
33
+ if ( is_multisite() && $network_wide ) {
34
+
35
+ // Get all blogs in the network and activate plugin on each one
36
+ $blog_ids = $wpdb->get_col( "SELECT blog_id FROM $wpdb->blogs" );
37
+ foreach ( $blog_ids as $blog_id ) {
38
+ switch_to_blog( $blog_id );
39
+ alm_create_table();
40
+ restore_current_blog();
41
+ }
42
+ } else {
43
+ alm_create_table();
44
+ }
45
+
46
+ }
47
  register_activation_hook( __FILE__, 'alm_install' );
48
+ add_action( 'wpmu_new_blog', 'alm_install' );
49
+
50
+ /* Create table function */
51
+ function alm_create_table(){
52
+
53
  global $wpdb;
54
  $table_name = $wpdb->prefix . "alm";
55
+ $blog_id = $wpdb->blogid;
56
+
57
  $defaultRepeater = '<li <?php if (!has_post_thumbnail()) { ?> class="no-img"<?php } ?>><?php if ( has_post_thumbnail() ) { the_post_thumbnail(array(100,100));}?><h3><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a></h3><p class="entry-meta"><?php the_time("F d, Y"); ?></p><?php the_excerpt(); ?></li>';
58
+
59
+ /* MULTISITE */
60
+ /* if this is a multisite blog and it's not id = 1, create default template */
61
+ if($blog_id > 1){
62
+
63
+ $dir = ALM_PATH. 'core/repeater/'. $blog_id;
64
+ if( !is_dir($dir) ){
65
+ mkdir($dir);
66
+ }
67
+
68
+ $file = ALM_PATH. 'core/repeater/'. $blog_id .'/default.php';
69
+ if( !file_exists($file) ){
70
+ $tmp = fopen($file, 'w');
71
+ $w = fwrite($tmp, $defaultRepeater);
72
+ fclose($tmp);
73
+ }
74
+
75
+ }
76
 
77
  //Create table, if it doesn't already exist.
78
  if($wpdb->get_var("SHOW TABLES LIKE '$table_name'") != $table_name) {
79
+
80
  $sql = "CREATE TABLE $table_name (
81
  id mediumint(9) NOT NULL AUTO_INCREMENT,
82
  name text NOT NULL,
89
 
90
  //Insert the default data in created table
91
  $wpdb->insert($table_name , array('name' => 'default', 'repeaterDefault' => $defaultRepeater, 'pluginVersion' => ALM_VERSION));
92
+
93
  }
94
 
 
 
 
 
 
95
  }
96
 
97
 
98
 
99
+
100
  if( !class_exists('AjaxLoadMore') ):
101
  class AjaxLoadMore {
102
 
core/functions.php CHANGED
@@ -18,27 +18,56 @@ function alm_get_current_repeater($repeater, $type) {
18
  $include = ALM_REPEATER_PATH . 'repeaters/'. $template .'.php';
19
 
20
  if(!file_exists($include)) //confirm file exists
21
- $include = ALM_PATH . 'core/repeater/default.php';
22
 
23
  }
24
  // If is Unlimited Repeaters (Custom Repeaters v2)
25
  elseif( $type == 'template_' && has_action('alm_unlimited_installed' ))
26
  {
27
- $include = ALM_UNLIMITED_REPEATER_PATH. ''.$template.'.php';
 
 
 
 
 
 
 
28
 
29
  if(!file_exists($include)) //confirm file exists
30
- $include = ALM_PATH . 'core/repeater/default.php';
31
 
32
  }
33
  // Default repeater
34
  else
35
  {
36
- $include = ALM_PATH . 'core/repeater/default.php';
37
  }
38
 
39
  return $include;
40
  }
41
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
42
 
43
 
44
  /*
18
  $include = ALM_REPEATER_PATH . 'repeaters/'. $template .'.php';
19
 
20
  if(!file_exists($include)) //confirm file exists
21
+ alm_get_default_repeater();
22
 
23
  }
24
  // If is Unlimited Repeaters (Custom Repeaters v2)
25
  elseif( $type == 'template_' && has_action('alm_unlimited_installed' ))
26
  {
27
+ global $wpdb;
28
+ $blog_id = $wpdb->blogid;
29
+
30
+ if($blog_id > 1){
31
+ $include = ALM_UNLIMITED_PATH. 'repeaters/'. $blog_id .'/'.$template .'.php';
32
+ }else{
33
+ $include = ALM_UNLIMITED_PATH. 'repeaters/'.$repeater .'.php';
34
+ }
35
 
36
  if(!file_exists($include)) //confirm file exists
37
+ alm_get_default_repeater();
38
 
39
  }
40
  // Default repeater
41
  else
42
  {
43
+ $include = alm_get_default_repeater();
44
  }
45
 
46
  return $include;
47
  }
48
 
49
+ /*
50
+ * alm_get_default_repeater
51
+ * Get the default repeater template for current blog
52
+ *
53
+ * @return $include (file path)
54
+ * @since 2.5.0
55
+ */
56
+
57
+ function alm_get_default_repeater() {
58
+ global $wpdb;
59
+ $blog_id = $wpdb->blogid;
60
+
61
+ if($blog_id > 1){
62
+ $file = ALM_PATH. 'core/repeater/'. $blog_id .'/default.php'; // File
63
+ }else{
64
+ $file = ALM_PATH. 'core/repeater/default.php';
65
+ }
66
+
67
+ return $file;
68
+ }
69
+
70
+
71
 
72
 
73
  /*
lang/ajax-load-more.pot CHANGED
@@ -1,8 +1,8 @@
1
  msgid ""
2
  msgstr ""
3
  "Project-Id-Version: Ajax Load More\n"
4
- "POT-Creation-Date: 2015-07-05 08:06-0500\n"
5
- "PO-Revision-Date: 2015-07-05 08:06-0500\n"
6
  "Last-Translator: Darren Cooney <darren.cooney@gmail.com>\n"
7
  "Language-Team: \n"
8
  "Language: en_CA\n"
@@ -15,127 +15,137 @@ msgstr ""
15
  "X-Poedit-KeywordsList: __;_e\n"
16
  "X-Poedit-SearchPath-0: ..\n"
17
 
18
- #: ../admin/admin.php:68
19
  msgid ""
20
- "[Ajax Load More] Unable to open the default repeater template (/core/"
21
- "repeater/default.php)."
 
22
  msgstr ""
23
 
24
- #: ../admin/admin.php:72
25
  msgid ""
26
- "[Ajax Load More] Unable to save the default repeater (/core/repeater/default."
27
- "php)."
 
28
  msgstr ""
29
 
30
- #: ../admin/admin.php:423
31
- msgid ""
32
- "[Ajax Load More] Error opening repeater template - Please check your file "
33
- "path and ensure your server is configured to allow Ajax Load More to read "
34
- "and write files within the /ajax-load-more/core/repeater directory"
35
  msgstr ""
36
 
37
- #: ../admin/admin.php:427
38
- msgid ""
39
- "[Ajax Load More]Error saving repeater template - Please check your file path "
40
- "and ensure your server is configured to allow Ajax Load More to read and "
41
- "write files within the /ajax-load-more/core/repeater directory."
42
  msgstr ""
43
 
44
- #: ../admin/admin.php:460
45
  msgid "Error Writing File"
46
  msgstr ""
47
 
48
- #: ../admin/admin.php:568
49
  msgid "Container Type"
50
  msgstr ""
51
 
52
- #: ../admin/admin.php:576 ../admin/shortcode-builder/shortcode-builder.php:816
53
  msgid "Container Classes"
54
  msgstr ""
55
 
56
- #: ../admin/admin.php:584
57
- msgid "Editor Button"
58
  msgstr ""
59
 
60
- #: ../admin/admin.php:592
61
- msgid "Dynamic Content"
 
 
 
 
62
  msgstr ""
63
 
64
- #: ../admin/admin.php:600
65
  msgid "Ajax Security"
66
  msgstr ""
67
 
68
- #: ../admin/admin.php:608
69
  msgid "Top of Page"
70
  msgstr ""
71
 
72
- #: ../admin/admin.php:616
73
- msgid "Disable CSS"
74
  msgstr ""
75
 
76
- #: ../admin/admin.php:624
77
- msgid "Button Color"
78
  msgstr ""
79
 
80
- #: ../admin/admin.php:632
81
- msgid "Button Classes"
82
  msgstr ""
83
 
84
- #: ../admin/admin.php:679
85
- msgid "Customize your version of Ajax Load More by updating the fields below."
 
 
 
 
 
86
  msgstr ""
87
 
88
- #: ../admin/admin.php:710
89
  msgid "I want to use my own CSS styles."
90
  msgstr ""
91
 
92
- #: ../admin/admin.php:710
93
  msgid "View Ajax Load More CSS"
94
  msgstr ""
95
 
96
- #: ../admin/admin.php:730
97
  msgid "Hide shortcode button in WYSIWYG editor."
98
  msgstr ""
99
 
100
- #: ../admin/admin.php:751
 
 
 
 
 
101
  msgid ""
102
  "Disable dynamic population of categories, tags and authors in the Shortcode "
103
  "Builder.<span style=\"display:block\">Recommended if you have an "
104
  "extraordinary number of categories, tags and/or authors."
105
  msgstr ""
106
 
107
- #: ../admin/admin.php:767
108
  msgid ""
109
- "Add classes to Ajax Load More container - these classes are applied globally "
110
- "and will appear with every instance of Ajax Load More.<span style=\"display:"
111
- "block\">You can also add classes to the ALM container when building a "
112
- "shortcode.</span>"
113
  msgstr ""
114
 
115
- #: ../admin/admin.php:789 ../admin/admin.php:792
116
  msgid "Ajax Posts Here"
117
  msgstr ""
118
 
119
- #: ../admin/admin.php:836
120
  msgid "Choose your <strong>Load More</strong> button color"
121
  msgstr ""
122
 
123
- #: ../admin/admin.php:847
124
  msgid "Preview"
125
  msgstr ""
126
 
127
- #: ../admin/admin.php:866
128
  msgid "Add classes to your <strong>Load More</strong> button"
129
  msgstr ""
130
 
131
- #: ../admin/admin.php:919
132
  msgid ""
133
  "On initial page load, move the user's browser window to the top of the "
134
  "screen.<span style=\"display:block\">This <u>may</u> help prevent the "
135
  "loading of unnecessary posts.</span>"
136
  msgstr ""
137
 
138
- #: ../admin/admin.php:940
139
  msgid ""
140
  "Enable <a href=\"https://codex.wordpress.org/WordPress_Nonces\" target="
141
  "\"_blank\">WP nonce</a> verification to help protect URLs against certain "
@@ -197,6 +207,28 @@ msgstr ""
197
  msgid "More Info"
198
  msgstr ""
199
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
200
  #: ../admin/includes/cta/resources.php:2
201
  msgid "Help/Resources"
202
  msgstr ""
@@ -698,7 +730,7 @@ msgid "Customize the <em>Load More</em> button label."
698
  msgstr ""
699
 
700
  #: ../admin/shortcode-builder/shortcode-builder.php:808
701
- #: ../ajax-load-more.php:219
702
  msgid "Older Posts"
703
  msgstr ""
704
 
@@ -786,9 +818,9 @@ msgstr ""
786
 
787
  #: ../admin/views/add-ons.php:143
788
  msgid ""
789
- "All add-ons are installed as stand alone plugins and will receive plugin "
790
- "update notifications directly within the <a href=\"plugins.php\">WordPress "
791
- "Plugin dashboard</a>."
792
  msgstr ""
793
 
794
  #: ../admin/views/examples.php:4
@@ -939,9 +971,7 @@ msgid "About Licenses"
939
  msgstr ""
940
 
941
  #: ../admin/views/licenses.php:317
942
- msgid ""
943
- "All licenses are valid for <strong>one year</strong> from the date of "
944
- "purchase."
945
  msgstr ""
946
 
947
  #: ../admin/views/licenses.php:318
@@ -969,64 +999,64 @@ msgstr ""
969
  msgid "The library of available templates to use within your theme"
970
  msgstr ""
971
 
972
- #: ../admin/views/repeater-templates.php:27
973
  msgid "Default Template"
974
  msgstr ""
975
 
976
- #: ../admin/views/repeater-templates.php:30
977
  msgid "Enter the HTML and PHP code for the default template"
978
  msgstr ""
979
 
980
- #: ../admin/views/repeater-templates.php:44
981
  msgid "Save Template"
982
  msgstr ""
983
 
984
- #: ../admin/views/repeater-templates.php:112
985
  msgid "Saving template..."
986
  msgstr ""
987
 
988
- #: ../admin/views/repeater-templates.php:144
989
  msgid "Something went wrong and the data could not be saved."
990
  msgstr ""
991
 
992
- #: ../admin/views/repeater-templates.php:184
993
  msgid "Updating template..."
994
  msgstr ""
995
 
996
- #: ../admin/views/repeater-templates.php:205
997
  msgid "Template Updated"
998
  msgstr ""
999
 
1000
- #: ../admin/views/repeater-templates.php:234
1001
  msgid "Templating Help"
1002
  msgstr ""
1003
 
1004
- #: ../admin/views/repeater-templates.php:236
1005
  msgid "What is a repeater template?"
1006
  msgstr ""
1007
 
1008
- #: ../admin/views/repeater-templates.php:237
1009
  msgid ""
1010
  "A repeater template is a snippet of code that will execute over and over "
1011
  "within a <a href=\"http://codex.wordpress.org/The_Loop\" target=\"_blank"
1012
  "\">WordPress loop</a>.</p>"
1013
  msgstr ""
1014
 
1015
- #: ../admin/views/repeater-templates.php:240
1016
  msgid "Can I include PHP in the repeater template?"
1017
  msgstr ""
1018
 
1019
- #: ../admin/views/repeater-templates.php:241
1020
  msgid ""
1021
  "Yes, PHP and core WordPress functions such as, <code>the_title()</code> and "
1022
  "<code>the_permalink()</code> are required.</p>"
1023
  msgstr ""
1024
 
1025
- #: ../admin/views/repeater-templates.php:244
1026
  msgid "Tips and Tricks"
1027
  msgstr ""
1028
 
1029
- #: ../admin/views/repeater-templates.php:246
1030
  msgid ""
1031
  "Always open and close your templates with an HTML element. In some rare "
1032
  "cases data may not be displayed if not wrapped in HTML.<br/>e.g. <code>&lt;"
@@ -1069,11 +1099,11 @@ msgstr ""
1069
  msgid "Clear all Shortcode Builder settings"
1070
  msgstr ""
1071
 
1072
- #: ../ajax-load-more.php:117
1073
  msgid "Settings"
1074
  msgstr ""
1075
 
1076
- #: ../ajax-load-more.php:118
1077
  msgid "Shortcode Builder"
1078
  msgstr ""
1079
 
1
  msgid ""
2
  msgstr ""
3
  "Project-Id-Version: Ajax Load More\n"
4
+ "POT-Creation-Date: 2015-07-28 22:58-0500\n"
5
+ "PO-Revision-Date: 2015-07-28 22:58-0500\n"
6
  "Last-Translator: Darren Cooney <darren.cooney@gmail.com>\n"
7
  "Language-Team: \n"
8
  "Language: en_CA\n"
15
  "X-Poedit-KeywordsList: __;_e\n"
16
  "X-Poedit-SearchPath-0: ..\n"
17
 
18
+ #: ../admin/admin.php:117
19
  msgid ""
20
+ "[Ajax Load More] Error opening default repeater template - Please check your "
21
+ "file path and ensure your server is configured to allow Ajax Load More to "
22
+ "read and write files within the /ajax-load-more/core/repeater directory"
23
  msgstr ""
24
 
25
+ #: ../admin/admin.php:121
26
  msgid ""
27
+ "[Ajax Load More] Error updating default repeater template - Please check "
28
+ "your file path and ensure your server is configured to allow Ajax Load More "
29
+ "to read and write files within the /ajax-load-more/core/repeater directory."
30
  msgstr ""
31
 
32
+ #: ../admin/admin.php:490
33
+ msgid "[Ajax Load More] Unable to open repeater template - "
 
 
 
34
  msgstr ""
35
 
36
+ #: ../admin/admin.php:494
37
+ msgid "[Ajax Load More] Error saving repeater template - "
 
 
 
38
  msgstr ""
39
 
40
+ #: ../admin/admin.php:527
41
  msgid "Error Writing File"
42
  msgstr ""
43
 
44
+ #: ../admin/admin.php:641
45
  msgid "Container Type"
46
  msgstr ""
47
 
48
+ #: ../admin/admin.php:649 ../admin/shortcode-builder/shortcode-builder.php:816
49
  msgid "Container Classes"
50
  msgstr ""
51
 
52
+ #: ../admin/admin.php:657
53
+ msgid "Disable CSS"
54
  msgstr ""
55
 
56
+ #: ../admin/admin.php:665
57
+ msgid "Button Color"
58
+ msgstr ""
59
+
60
+ #: ../admin/admin.php:673
61
+ msgid "Button Classes"
62
  msgstr ""
63
 
64
+ #: ../admin/admin.php:681
65
  msgid "Ajax Security"
66
  msgstr ""
67
 
68
+ #: ../admin/admin.php:689
69
  msgid "Top of Page"
70
  msgstr ""
71
 
72
+ #: ../admin/admin.php:697
73
+ msgid "Dynamic Content"
74
  msgstr ""
75
 
76
+ #: ../admin/admin.php:705
77
+ msgid "Editor Button"
78
  msgstr ""
79
 
80
+ #: ../admin/admin.php:713
81
+ msgid "Error Notices"
82
  msgstr ""
83
 
84
+ #: ../admin/admin.php:760
85
+ msgid ""
86
+ "Customize the user experience of Ajax Load More by updating the fields below."
87
+ msgstr ""
88
+
89
+ #: ../admin/admin.php:773
90
+ msgid "The following settings affect the WordPress admin area only."
91
  msgstr ""
92
 
93
+ #: ../admin/admin.php:804
94
  msgid "I want to use my own CSS styles."
95
  msgstr ""
96
 
97
+ #: ../admin/admin.php:804
98
  msgid "View Ajax Load More CSS"
99
  msgstr ""
100
 
101
+ #: ../admin/admin.php:824
102
  msgid "Hide shortcode button in WYSIWYG editor."
103
  msgstr ""
104
 
105
+ #: ../admin/admin.php:845
106
+ msgid ""
107
+ "Display messaging regarding repeater template updates in the browser console."
108
+ msgstr ""
109
+
110
+ #: ../admin/admin.php:866
111
  msgid ""
112
  "Disable dynamic population of categories, tags and authors in the Shortcode "
113
  "Builder.<span style=\"display:block\">Recommended if you have an "
114
  "extraordinary number of categories, tags and/or authors."
115
  msgstr ""
116
 
117
+ #: ../admin/admin.php:882
118
  msgid ""
119
+ "Add classes to Ajax Load More container - classes are applied globally and "
120
+ "will appear with every instance of Ajax Load More.<span style=\"display:block"
121
+ "\">You can also add classes to the ALM container when building a shortcode.</"
122
+ "span>"
123
  msgstr ""
124
 
125
+ #: ../admin/admin.php:904 ../admin/admin.php:907
126
  msgid "Ajax Posts Here"
127
  msgstr ""
128
 
129
+ #: ../admin/admin.php:951
130
  msgid "Choose your <strong>Load More</strong> button color"
131
  msgstr ""
132
 
133
+ #: ../admin/admin.php:962
134
  msgid "Preview"
135
  msgstr ""
136
 
137
+ #: ../admin/admin.php:981
138
  msgid "Add classes to your <strong>Load More</strong> button"
139
  msgstr ""
140
 
141
+ #: ../admin/admin.php:1034
142
  msgid ""
143
  "On initial page load, move the user's browser window to the top of the "
144
  "screen.<span style=\"display:block\">This <u>may</u> help prevent the "
145
  "loading of unnecessary posts.</span>"
146
  msgstr ""
147
 
148
+ #: ../admin/admin.php:1055
149
  msgid ""
150
  "Enable <a href=\"https://codex.wordpress.org/WordPress_Nonces\" target="
151
  "\"_blank\">WP nonce</a> verification to help protect URLs against certain "
207
  msgid "More Info"
208
  msgstr ""
209
 
210
+ #: ../admin/includes/cta/mailinglist.php:3
211
+ msgid "Subscribe to Newsletter"
212
+ msgstr ""
213
+
214
+ #: ../admin/includes/cta/mailinglist.php:4
215
+ msgid ""
216
+ "Get product updates and release notifications delivered (infrequently) to "
217
+ "your inbox."
218
+ msgstr ""
219
+
220
+ #: ../admin/includes/cta/mailinglist.php:10
221
+ msgid "Email Address"
222
+ msgstr ""
223
+
224
+ #: ../admin/includes/cta/mailinglist.php:11
225
+ msgid "Enter email address"
226
+ msgstr ""
227
+
228
+ #: ../admin/includes/cta/mailinglist.php:12
229
+ msgid "Subscribe"
230
+ msgstr ""
231
+
232
  #: ../admin/includes/cta/resources.php:2
233
  msgid "Help/Resources"
234
  msgstr ""
730
  msgstr ""
731
 
732
  #: ../admin/shortcode-builder/shortcode-builder.php:808
733
+ #: ../ajax-load-more.php:262
734
  msgid "Older Posts"
735
  msgstr ""
736
 
818
 
819
  #: ../admin/views/add-ons.php:143
820
  msgid ""
821
+ "All add-ons are installed as stand alone plugins and with a valid license "
822
+ "key will receive plugin update notifications directly within the <a href="
823
+ "\"plugins.php\">WordPress Plugin dashboard</a>."
824
  msgstr ""
825
 
826
  #: ../admin/views/examples.php:4
971
  msgstr ""
972
 
973
  #: ../admin/views/licenses.php:317
974
+ msgid "Add-on licenses will enable updates directly in your WP dashboard."
 
 
975
  msgstr ""
976
 
977
  #: ../admin/views/licenses.php:318
999
  msgid "The library of available templates to use within your theme"
1000
  msgstr ""
1001
 
1002
+ #: ../admin/views/repeater-templates.php:35
1003
  msgid "Default Template"
1004
  msgstr ""
1005
 
1006
+ #: ../admin/views/repeater-templates.php:38
1007
  msgid "Enter the HTML and PHP code for the default template"
1008
  msgstr ""
1009
 
1010
+ #: ../admin/views/repeater-templates.php:52
1011
  msgid "Save Template"
1012
  msgstr ""
1013
 
1014
+ #: ../admin/views/repeater-templates.php:120
1015
  msgid "Saving template..."
1016
  msgstr ""
1017
 
1018
+ #: ../admin/views/repeater-templates.php:152
1019
  msgid "Something went wrong and the data could not be saved."
1020
  msgstr ""
1021
 
1022
+ #: ../admin/views/repeater-templates.php:192
1023
  msgid "Updating template..."
1024
  msgstr ""
1025
 
1026
+ #: ../admin/views/repeater-templates.php:213
1027
  msgid "Template Updated"
1028
  msgstr ""
1029
 
1030
+ #: ../admin/views/repeater-templates.php:242
1031
  msgid "Templating Help"
1032
  msgstr ""
1033
 
1034
+ #: ../admin/views/repeater-templates.php:244
1035
  msgid "What is a repeater template?"
1036
  msgstr ""
1037
 
1038
+ #: ../admin/views/repeater-templates.php:245
1039
  msgid ""
1040
  "A repeater template is a snippet of code that will execute over and over "
1041
  "within a <a href=\"http://codex.wordpress.org/The_Loop\" target=\"_blank"
1042
  "\">WordPress loop</a>.</p>"
1043
  msgstr ""
1044
 
1045
+ #: ../admin/views/repeater-templates.php:248
1046
  msgid "Can I include PHP in the repeater template?"
1047
  msgstr ""
1048
 
1049
+ #: ../admin/views/repeater-templates.php:249
1050
  msgid ""
1051
  "Yes, PHP and core WordPress functions such as, <code>the_title()</code> and "
1052
  "<code>the_permalink()</code> are required.</p>"
1053
  msgstr ""
1054
 
1055
+ #: ../admin/views/repeater-templates.php:252
1056
  msgid "Tips and Tricks"
1057
  msgstr ""
1058
 
1059
+ #: ../admin/views/repeater-templates.php:254
1060
  msgid ""
1061
  "Always open and close your templates with an HTML element. In some rare "
1062
  "cases data may not be displayed if not wrapped in HTML.<br/>e.g. <code>&lt;"
1099
  msgid "Clear all Shortcode Builder settings"
1100
  msgstr ""
1101
 
1102
+ #: ../ajax-load-more.php:160
1103
  msgid "Settings"
1104
  msgstr ""
1105
 
1106
+ #: ../ajax-load-more.php:161
1107
  msgid "Shortcode Builder"
1108
  msgstr ""
1109