Slider by Nivo – Responsive WordPress Image Slider - Version 2.1.0

Version Description

  • 2017-06-26
Download this release

Release Info

Developer codeinwp
Plugin Icon 128x128 Slider by Nivo – Responsive WordPress Image Slider
Version 2.1.0
Comparing to
See all releases

Code changes from version 2.0.4 to 2.1.0

Files changed (43) hide show
  1. CHANGELOG.md +9 -0
  2. assets/css/nivo-slider.css +1 -1
  3. assets/images/logo.png +0 -0
  4. assets/images/nivo-slider-carousel-integration.jpg +0 -0
  5. assets/images/nivo-slider-create-slider-from-posts-categories-galleries.jpg +0 -0
  6. assets/images/nivo-slider-plugin-mobile-friendly.jpg +0 -0
  7. assets/js/jquery.nivo.slider.pack.js +4 -4
  8. includes/abstract/class-nivo-model-abstract.php +20 -16
  9. includes/admin/class-nivo-slider-admin.php +44 -7
  10. includes/admin/libs/class-nivo-core-admin-edit.php +7 -3
  11. includes/admin/libs/class-nivo-core-shortcode.php +126 -110
  12. includes/class-nivo-slider.php +5 -2
  13. includes/layouts/css/upsell.css +178 -0
  14. includes/layouts/nivo-upsell.php +59 -0
  15. key.enc +0 -0
  16. languages/nivo-slider.pot +204 -25
  17. nivo-slider-lite.php +7 -2
  18. readme.md +106 -0
  19. readme.txt +11 -3
  20. vendor/autoload.php +1 -1
  21. vendor/autoload_52.php +1 -1
  22. vendor/codeinwp/themeisle-sdk/README.md +0 -2
  23. vendor/codeinwp/themeisle-sdk/class-themeisle-sdk-feedback-deactivate.php +470 -0
  24. vendor/codeinwp/themeisle-sdk/class-themeisle-sdk-feedback-factory.php +50 -0
  25. vendor/codeinwp/themeisle-sdk/class-themeisle-sdk-feedback-review.php +185 -0
  26. vendor/codeinwp/themeisle-sdk/class-themeisle-sdk-feedback.php +90 -0
  27. vendor/codeinwp/themeisle-sdk/class-themeisle-sdk-licenser.php +96 -46
  28. vendor/codeinwp/themeisle-sdk/class-themeisle-sdk-loader.php +25 -23
  29. vendor/codeinwp/themeisle-sdk/class-themeisle-sdk-logger.php +144 -13
  30. vendor/codeinwp/themeisle-sdk/class-themeisle-sdk-notification-manager.php +119 -0
  31. vendor/codeinwp/themeisle-sdk/class-themeisle-sdk-product.php +148 -12
  32. vendor/codeinwp/themeisle-sdk/class-themeisle-sdk-widget-dashboard-blog.php +374 -0
  33. vendor/codeinwp/themeisle-sdk/class-themeisle-sdk-widget.php +50 -0
  34. vendor/codeinwp/themeisle-sdk/class-themeisle-sdk-widgets-factory.php +37 -0
  35. vendor/codeinwp/themeisle-sdk/composer.json +2 -5
  36. vendor/codeinwp/themeisle-sdk/load.php +35 -0
  37. vendor/codeinwp/themeisle-sdk/phpcs.xml +0 -34
  38. vendor/codeinwp/themeisle-sdk/start.php +35 -0
  39. vendor/composer/autoload_classmap.php +0 -4
  40. vendor/composer/autoload_files.php +10 -0
  41. vendor/composer/autoload_real.php +17 -3
  42. vendor/composer/autoload_real_52.php +5 -3
  43. vendor/composer/installed.json +9 -13
CHANGELOG.md CHANGED
@@ -1,4 +1,13 @@
1
 
 
 
 
 
 
 
 
 
 
2
  ### v2.0.4 - 2017-05-12
3
  **Changes:**
4
  - Changed required core style loading
1
 
2
+ ### v2.1.0 - 2017-11-16
3
+ **Changes:**
4
+
5
+ ### v2.1.0 - 2017-06-26
6
+ **Changes:**
7
+ * Added carousel compatibility
8
+ * Fixed warnings with taxonomy name change.
9
+ * Added upsell page.
10
+
11
  ### v2.0.4 - 2017-05-12
12
  **Changes:**
13
  - Changed required core style loading
assets/css/nivo-slider.css CHANGED
@@ -1,7 +1,7 @@
1
  /*
2
  * jQuery Nivo Slider v3.2
3
  * http://nivo.dev7studios.com
4
- * Version: 2.0.4
5
  * Copyright 2012, Dev7studios
6
  * Free to use and abuse under the MIT license.
7
  * http://www.opensource.org/licenses/mit-license.php
1
  /*
2
  * jQuery Nivo Slider v3.2
3
  * http://nivo.dev7studios.com
4
+ * Version: 2.1.0
5
  * Copyright 2012, Dev7studios
6
  * Free to use and abuse under the MIT license.
7
  * http://www.opensource.org/licenses/mit-license.php
assets/images/logo.png ADDED
Binary file
assets/images/nivo-slider-carousel-integration.jpg ADDED
Binary file
assets/images/nivo-slider-create-slider-from-posts-categories-galleries.jpg ADDED
Binary file
assets/images/nivo-slider-plugin-mobile-friendly.jpg ADDED
Binary file
assets/js/jquery.nivo.slider.pack.js CHANGED
@@ -443,7 +443,7 @@
443
  S[w] = [];
444
  y = e(".nivo-box", t);
445
  if (o === "boxRainReverse" || o === "boxRainGrowReverse") {
446
- y = e(".nivo-box", t)._reverse()
447
  }
448
  y.each(function () {
449
  S[w][E] = e(this);
@@ -501,13 +501,13 @@
501
  this.stop = function () {
502
  if (!e(t).data("nivo:vars").stop) {
503
  e(t).data("nivo:vars").stop = true;
504
- m("Stop Slider");
505
  }
506
  };
507
  this.start = function () {
508
  if (e(t).data("nivo:vars").stop) {
509
  e(t).data("nivo:vars").stop = false;
510
- m("Start Slider");
511
  }
512
  };
513
  r.afterLoad.call(this);
@@ -551,4 +551,4 @@
551
  }
552
  };
553
  e.fn._reverse = [].reverse;
554
- })(jQuery)
443
  S[w] = [];
444
  y = e(".nivo-box", t);
445
  if (o === "boxRainReverse" || o === "boxRainGrowReverse") {
446
+ y = e(".nivo-box", t)._reverse();
447
  }
448
  y.each(function () {
449
  S[w][E] = e(this);
501
  this.stop = function () {
502
  if (!e(t).data("nivo:vars").stop) {
503
  e(t).data("nivo:vars").stop = true;
504
+ //m("Stop Slider");
505
  }
506
  };
507
  this.start = function () {
508
  if (e(t).data("nivo:vars").stop) {
509
  e(t).data("nivo:vars").stop = false;
510
+ //m("Start Slider");
511
  }
512
  };
513
  r.afterLoad.call(this);
551
  }
552
  };
553
  e.fn._reverse = [].reverse;
554
+ })(jQuery);
includes/abstract/class-nivo-model-abstract.php CHANGED
@@ -53,7 +53,7 @@ abstract class Nivo_Model_Abstract extends Nivo_Core_Settings_Abstract {
53
  $labels = array(
54
  'name' => '%2$s',
55
  'singular_name' => '%1$s',
56
- 'add_new' => __( 'Add New', 'nivo-slider' ),
57
  'add_new_item' => __( 'Add New %1$s', 'nivo-slider' ),
58
  'edit_item' => __( 'Edit %1$s', 'nivo-slider' ),
59
  'new_item' => __( 'New %1$s', 'nivo-slider' ),
@@ -78,13 +78,7 @@ abstract class Nivo_Model_Abstract extends Nivo_Core_Settings_Abstract {
78
  'menu_position' => apply_filters( $defaults['post_type'] . '_post_type_menu_position', 100 ),
79
  'supports' => $supports,
80
  'menu_icon' => apply_filters( $defaults['post_type'] . '_post_type_menu_icon', '' ),
81
- );
82
- register_post_type(
83
- $this->labels['post_type'],
84
- apply_filters(
85
- $defaults['post_type'] . '_post_type_args',
86
- $post_type_args
87
- )
88
  );
89
  register_taxonomy(
90
  $defaults['taxonomy'],
@@ -96,6 +90,14 @@ abstract class Nivo_Model_Abstract extends Nivo_Core_Settings_Abstract {
96
  'hierarchical' => true,
97
  )
98
  );
 
 
 
 
 
 
 
 
99
  }
100
 
101
  /**
@@ -123,6 +125,8 @@ abstract class Nivo_Model_Abstract extends Nivo_Core_Settings_Abstract {
123
  $settings = $_POST[ $this->labels['post_meta_key'] ];
124
  $settings = apply_filters( $this->labels['post_type'] . '_post_meta_save', $settings );
125
  update_post_meta( $post_id, $this->labels['post_meta_key'], $settings );
 
 
126
 
127
  return true;
128
  }
@@ -146,28 +150,28 @@ abstract class Nivo_Model_Abstract extends Nivo_Core_Settings_Abstract {
146
  if ( ! is_numeric( $settings['dim_y'] ) || $settings['dim_y'] <= 0 ) {
147
  $settings['dim_y'] = 150;
148
  }
149
- if ( ! is_numeric( $settings['slices'] ) || $settings['slices'] <= 0 ) {
150
  $settings['slices'] = 15;
151
  }
152
- if ( ! is_numeric( $settings['boxCols'] ) || $settings['boxCols'] <= 0 ) {
153
  $settings['boxCols'] = 8;
154
  }
155
- if ( ! is_numeric( $settings['boxRows'] ) || $settings['boxRows'] <= 0 ) {
156
  $settings['boxRows'] = 4;
157
  }
158
- if ( ! is_numeric( $settings['animSpeed'] ) || $settings['animSpeed'] <= 0 ) {
159
  $settings['animSpeed'] = 500;
160
  }
161
- if ( ! is_numeric( $settings['pauseTime'] ) || $settings['pauseTime'] <= 0 ) {
162
  $settings['pauseTime'] = 3000;
163
  }
164
- if ( ! is_numeric( $settings['startSlide'] ) || $settings['startSlide'] < 0 ) {
165
  $settings['startSlide'] = 0;
166
  }
167
- if ( ! is_numeric( $settings['thumbSizeWidth'] ) || $settings['thumbSizeWidth'] <= 0 ) {
168
  $settings['thumbSizeWidth'] = 70;
169
  }
170
- if ( ! is_numeric( $settings['thumbSizeHeight'] ) || $settings['thumbSizeHeight'] <= 0 ) {
171
  $settings['thumbSizeHeight'] = 50;
172
  }
173
 
53
  $labels = array(
54
  'name' => '%2$s',
55
  'singular_name' => '%1$s',
56
+ 'add_new' => __( 'Add new Slider', 'nivo-slider' ),
57
  'add_new_item' => __( 'Add New %1$s', 'nivo-slider' ),
58
  'edit_item' => __( 'Edit %1$s', 'nivo-slider' ),
59
  'new_item' => __( 'New %1$s', 'nivo-slider' ),
78
  'menu_position' => apply_filters( $defaults['post_type'] . '_post_type_menu_position', 100 ),
79
  'supports' => $supports,
80
  'menu_icon' => apply_filters( $defaults['post_type'] . '_post_type_menu_icon', '' ),
81
+ 'taxonomies' => array( $defaults['taxonomy'] ),
 
 
 
 
 
 
82
  );
83
  register_taxonomy(
84
  $defaults['taxonomy'],
90
  'hierarchical' => true,
91
  )
92
  );
93
+ register_post_type(
94
+ $this->labels['post_type'],
95
+ apply_filters(
96
+ $defaults['post_type'] . '_post_type_args',
97
+ $post_type_args
98
+ )
99
+ );
100
+
101
  }
102
 
103
  /**
125
  $settings = $_POST[ $this->labels['post_meta_key'] ];
126
  $settings = apply_filters( $this->labels['post_type'] . '_post_meta_save', $settings );
127
  update_post_meta( $post_id, $this->labels['post_meta_key'], $settings );
128
+ $taxonomy = ( isset( $_POST['taxonomy'] ) ) ? $_POST['taxonomy'] : 'slider';
129
+ wp_set_object_terms( $post_id, $taxonomy, $this->labels['taxonomy'] );
130
 
131
  return true;
132
  }
150
  if ( ! is_numeric( $settings['dim_y'] ) || $settings['dim_y'] <= 0 ) {
151
  $settings['dim_y'] = 150;
152
  }
153
+ if ( ! isset( $settings['slices'] ) || ( ! is_numeric( $settings['slices'] ) || $settings['slices'] <= 0 ) ) {
154
  $settings['slices'] = 15;
155
  }
156
+ if ( ! isset( $settings['boxCols'] ) || ( ! is_numeric( $settings['boxCols'] ) || $settings['boxCols'] <= 0 ) ) {
157
  $settings['boxCols'] = 8;
158
  }
159
+ if ( ! isset( $settings['boxRows'] ) || ( ! is_numeric( $settings['boxRows'] ) || $settings['boxRows'] <= 0 ) ) {
160
  $settings['boxRows'] = 4;
161
  }
162
+ if ( ! isset( $settings['animSpeed'] ) || ( ! is_numeric( $settings['animSpeed'] ) || $settings['animSpeed'] <= 0 ) ) {
163
  $settings['animSpeed'] = 500;
164
  }
165
+ if ( ! isset( $settings['pauseTime'] ) || ( ! is_numeric( $settings['pauseTime'] ) || $settings['pauseTime'] <= 0 ) ) {
166
  $settings['pauseTime'] = 3000;
167
  }
168
+ if ( ! isset( $settings['startSlide'] ) || ( ! is_numeric( $settings['startSlide'] ) || $settings['startSlide'] < 0 ) ) {
169
  $settings['startSlide'] = 0;
170
  }
171
+ if ( ! isset( $settings['thumbSizeWidth'] ) || ( ! is_numeric( $settings['thumbSizeWidth'] ) || $settings['thumbSizeWidth'] <= 0 ) ) {
172
  $settings['thumbSizeWidth'] = 70;
173
  }
174
+ if ( ! isset( $settings['thumbSizeHeight'] ) || ( ! is_numeric( $settings['thumbSizeHeight'] ) || $settings['thumbSizeHeight'] <= 0 ) ) {
175
  $settings['thumbSizeHeight'] = 50;
176
  }
177
 
includes/admin/class-nivo-slider-admin.php CHANGED
@@ -74,7 +74,7 @@ class Nivo_Slider_Admin extends Nivo_Core_Abstract {
74
  'shortcode' => 'nivoslider',
75
  'function' => 'nivo_slider',
76
  'slug' => 'nivo-slider',
77
- 'taxonomy' => 'nivo-slider',
78
  'post_meta_key' => 'nivo_settings',
79
  'options_key' => 'nivoslider_settings',
80
  'source_name' => 'type',
@@ -89,6 +89,10 @@ class Nivo_Slider_Admin extends Nivo_Core_Abstract {
89
  return false;
90
  }
91
 
 
 
 
 
92
  /**
93
  * Track the nivo slider usage.
94
  *
@@ -213,9 +217,17 @@ class Nivo_Slider_Admin extends Nivo_Core_Abstract {
213
  * Adds a new menu item under the plugin post type
214
  *
215
  * @since 2.2.*
 
216
  * @access public
217
  */
218
  public function admin_menu() {
 
 
 
 
 
 
 
219
  add_submenu_page(
220
  'edit.php?post_type=' . $this->labels['post_type'], 'Settings', 'Settings', 'manage_options', $this->labels['post_type'] . '-settings', array(
221
  $this,
@@ -224,6 +236,31 @@ class Nivo_Slider_Admin extends Nivo_Core_Abstract {
224
  );
225
  }
226
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
227
  /**
228
  * Controls the visibility of the plugin menu. Can be filtered.
229
  *
@@ -269,7 +306,7 @@ class Nivo_Slider_Admin extends Nivo_Core_Abstract {
269
  <?php do_settings_sections( $this->labels['post_type'] . '-settings' ); ?>
270
  <p class="submit">
271
  <input type="submit" name="submit" id="submit" class="button-primary"
272
- value="<?php _e( 'Save Changes', 'nivo-slider' ); ?>">
273
  </p>
274
  </form>
275
  </div>
@@ -331,7 +368,7 @@ class Nivo_Slider_Admin extends Nivo_Core_Abstract {
331
  case 'text':
332
  ?>
333
  <input type="text" name="<?php echo $element_name; ?>" value="<?php echo $element_value; ?>"
334
- class="<?php echo $element_class; ?> "/>
335
  <?php
336
  break;
337
  case 'textarea':
@@ -339,21 +376,21 @@ class Nivo_Slider_Admin extends Nivo_Core_Abstract {
339
  $cols = ( isset( $args['cols'] ) ) ? $args['cols'] : 80;
340
  ?>
341
  <textarea class="<?php echo $element_class; ?>" name="<?php echo $element_name; ?>"
342
- rows="<?php echo $rows; ?>"
343
- cols="<?php echo $cols; ?>"><?php echo $element_value; ?></textarea>
344
  <?php
345
  break;
346
  case 'number':
347
  ?>
348
  <input type="number" name="<?php echo $element_name; ?>" value="<?php echo $element_value; ?>"
349
- class="<?php echo $element_class; ?> "/>
350
  <?php
351
  break;
352
  case 'checkbox':
353
  ?>
354
  <input type="hidden" name="<?php echo $element_name; ?>" value="off"/>
355
  <input type="checkbox" name="<?php echo $element_name; ?>"
356
- value="on"<?php if ( $element_value == 'on' ) {
357
  echo ' checked="checked"';
358
  } ?> class="<?php echo $element_class; ?> "/>
359
  <?php
74
  'shortcode' => 'nivoslider',
75
  'function' => 'nivo_slider',
76
  'slug' => 'nivo-slider',
77
+ 'taxonomy' => 'nivo_slider',
78
  'post_meta_key' => 'nivo_settings',
79
  'options_key' => 'nivoslider_settings',
80
  'source_name' => 'type',
89
  return false;
90
  }
91
 
92
+ public function get_nivo_settings() {
93
+ return $this::get_plugin_settings();
94
+ }
95
+
96
  /**
97
  * Track the nivo slider usage.
98
  *
217
  * Adds a new menu item under the plugin post type
218
  *
219
  * @since 2.2.*
220
+ * @updated 3.0.3
221
  * @access public
222
  */
223
  public function admin_menu() {
224
+ if ( ! class_exists( 'Nivo_Slider_PRO_Admin' ) ) {
225
+ add_submenu_page( 'edit.php?post_type=' . $this->labels['post_type'], __( 'More Features', 'nivo-slider' ), __( 'More Features', 'nivo-slider' ) . '<span class="dashicons
226
+ dashicons-star-filled more-features-icon" style=" width: 17px; height: 17px; margin-left: 4px; color: #ffca54; font-size: 17px; vertical-align: -3px;"></span>', 'manage_options', 'nivo-slider-admin-menu-pro-upsell', array(
227
+ $this,
228
+ 'render_upsell',
229
+ ) );
230
+ }
231
  add_submenu_page(
232
  'edit.php?post_type=' . $this->labels['post_type'], 'Settings', 'Settings', 'manage_options', $this->labels['post_type'] . '-settings', array(
233
  $this,
236
  );
237
  }
238
 
239
+ /**
240
+ * Method used to render upsell page.
241
+ *
242
+ * @since 3.0.3
243
+ * @access public
244
+ */
245
+ public function render_upsell() {
246
+ $this->load_layout( 'nivo-upsell' );
247
+ }
248
+
249
+ /**
250
+ * Method used to render pages
251
+ *
252
+ * @since 3.0.3
253
+ * @access public
254
+ *
255
+ * @param string $layout_name The name of the layout.
256
+ *
257
+ * @return mixed
258
+ */
259
+ public function load_layout( $layout_name ) {
260
+ wp_enqueue_style( 'nivo-upsell', NIVO_SLIDER_PLUGIN_URL . '/includes/layouts/css/upsell.css' );
261
+ include( NIVO_SLIDER_PLUGIN_DIR . '/includes/layouts/' . $layout_name . '.php' );
262
+ }
263
+
264
  /**
265
  * Controls the visibility of the plugin menu. Can be filtered.
266
  *
306
  <?php do_settings_sections( $this->labels['post_type'] . '-settings' ); ?>
307
  <p class="submit">
308
  <input type="submit" name="submit" id="submit" class="button-primary"
309
+ value="<?php _e( 'Save Changes', 'nivo-slider' ); ?>">
310
  </p>
311
  </form>
312
  </div>
368
  case 'text':
369
  ?>
370
  <input type="text" name="<?php echo $element_name; ?>" value="<?php echo $element_value; ?>"
371
+ class="<?php echo $element_class; ?> "/>
372
  <?php
373
  break;
374
  case 'textarea':
376
  $cols = ( isset( $args['cols'] ) ) ? $args['cols'] : 80;
377
  ?>
378
  <textarea class="<?php echo $element_class; ?>" name="<?php echo $element_name; ?>"
379
+ rows="<?php echo $rows; ?>"
380
+ cols="<?php echo $cols; ?>"><?php echo $element_value; ?></textarea>
381
  <?php
382
  break;
383
  case 'number':
384
  ?>
385
  <input type="number" name="<?php echo $element_name; ?>" value="<?php echo $element_value; ?>"
386
+ class="<?php echo $element_class; ?> "/>
387
  <?php
388
  break;
389
  case 'checkbox':
390
  ?>
391
  <input type="hidden" name="<?php echo $element_name; ?>" value="off"/>
392
  <input type="checkbox" name="<?php echo $element_name; ?>"
393
+ value="on"<?php if ( $element_value == 'on' ) {
394
  echo ' checked="checked"';
395
  } ?> class="<?php echo $element_class; ?> "/>
396
  <?php
includes/admin/libs/class-nivo-core-admin-edit.php CHANGED
@@ -59,7 +59,7 @@ class Nivo_Core_Admin_Edit extends Nivo_Core_Abstract implements Nivo_Library_In
59
  *
60
  * @return array
61
  */
62
- public function admin_edit_settings( $settings ) {
63
  $settings = array();
64
  $settings[] = array(
65
  'name' => 'enable_captions',
@@ -399,6 +399,7 @@ class Nivo_Core_Admin_Edit extends Nivo_Core_Abstract implements Nivo_Library_In
399
  global $post;
400
  $options = get_post_meta( $post->ID, $this->labels['post_meta_key'], true );
401
  wp_nonce_field( $this->labels['plugin_name'], $this->labels['post_type'] . '_noncename' );
 
402
  ?>
403
  <table id="<?php echo $this->labels['post_type']; ?>-settings" class="form-table">
404
  <tr valign="top">
@@ -787,8 +788,11 @@ class Nivo_Core_Admin_Edit extends Nivo_Core_Abstract implements Nivo_Library_In
787
  }
788
  break;
789
  case 'type':
790
- echo 'slider';
791
- // TODO add custom switch for custom taxonomy `nivo_type`
 
 
 
792
  break;
793
  case 'source':
794
  echo isset( $types[ $type ] ) ? $types[ $type ] : 'Manual';
59
  *
60
  * @return array
61
  */
62
+ public function admin_edit_settings( $settings = array() ) {
63
  $settings = array();
64
  $settings[] = array(
65
  'name' => 'enable_captions',
399
  global $post;
400
  $options = get_post_meta( $post->ID, $this->labels['post_meta_key'], true );
401
  wp_nonce_field( $this->labels['plugin_name'], $this->labels['post_type'] . '_noncename' );
402
+ echo '<input type="hidden" name="taxonomy" value="' . ( ( isset( $_GET['taxonomy'] ) ) ? $_GET['taxonomy'] : 'slider' ) . '" />';
403
  ?>
404
  <table id="<?php echo $this->labels['post_type']; ?>-settings" class="form-table">
405
  <tr valign="top">
788
  }
789
  break;
790
  case 'type':
791
+ $taxonomy = wp_get_post_terms( $post->ID, 'nivo_slider', array(
792
+ 'fields' => 'names',
793
+ ) );
794
+
795
+ echo ( ! is_wp_error( $taxonomy ) && isset( $taxonomy[0] ) ) ? $taxonomy[0] : 'slider';
796
  break;
797
  case 'source':
798
  echo isset( $types[ $type ] ) ? $types[ $type ] : 'Manual';
includes/admin/libs/class-nivo-core-shortcode.php CHANGED
@@ -256,6 +256,7 @@ class Nivo_Core_Shortcode extends Nivo_Core_Abstract implements Nivo_Library_Int
256
  * @access public
257
  */
258
  public function register_scripts() {
 
259
  if ( $this->scripts && count( $this->scripts ) > 0 ) {
260
  $required = array( 'jquery' );
261
  foreach ( $this->scripts as $name => $url ) {
@@ -272,6 +273,7 @@ class Nivo_Core_Shortcode extends Nivo_Core_Abstract implements Nivo_Library_Int
272
  * @access public
273
  */
274
  public function register_styles() {
 
275
  if ( $this->styles && count( $this->styles ) > 0 ) {
276
  foreach ( $this->styles as $name => $url ) {
277
  wp_register_style( $name, $url, array(), $this->labels['plugin_version'] );
@@ -370,134 +372,148 @@ class Nivo_Core_Shortcode extends Nivo_Core_Abstract implements Nivo_Library_Int
370
  * @return string
371
  */
372
  public function shortcode_output( $id, $output, $options, $images, $slider_type ) {
373
-
374
- if ( isset( $options[ $this->labels['source_name'] ] ) ) {
375
- $type = $options[ $this->labels['source_name'] ];
376
- } else {
377
- $type = $options[ $this->labels['type_name'] ]; // backwards compatibility for < v3.0.0
378
- }
379
-
380
- $captions = array();
381
- $output .= '<div class="slider-wrapper';
382
- if ( isset( $options['theme'] ) && $options['theme'] != '' ) {
383
- $output .= ' theme-' . $options['theme'];
384
- }
385
- if ( isset( $options['controlNavThumbs'] ) && $options['controlNavThumbs'] == 'on' ) {
386
- $output .= ' controlnav-thumbs';
387
- }
388
- $output .= '"><div class="ribbon"></div>';
389
- $output .= '<div id="nivoslider-' . $id . '" class="nivoSlider"';
390
- if ( $options['sizing'] == 'fixed' ) {
391
- $output .= ' style="width:' . $options['dim_x'] . 'px;height:' . $options['dim_y'] . 'px;"';
392
- }
393
- $output .= '>';
394
- $i = 0;
395
- foreach ( $images as $image ) {
396
-
397
- $image_link = $this->nivo_default_val( $options, 'imageLink', 'on' );
398
- $target_blank = $this->nivo_default_val( $options, 'targetBlank', 'on' );
399
- if ( ( isset( $image['post_permalink'] ) && $image['post_permalink'] != '' ) && $image_link == 'on' ) {
400
- $target = ( $target_blank == 'on' ) ? ' target="_blank"' : '';
401
- $output .= '<a ' . $target . ' href="' . $image['post_permalink'] . '">';
402
  }
403
-
404
- if ( $options['sizing'] == 'fixed' && isset( $image['attachment_id'] ) ) {
405
- $resized_image = $this->core_images->resize_image( $image['attachment_id'], '', $options['dim_x'], $options['dim_y'], true );
406
- if ( is_wp_error( $resized_image ) ) {
407
- echo '<p>Error: ' . $resized_image->get_error_message() . '</p>';
408
- $output .= '<img src="" ';
409
- } else {
410
- $output .= '<img src="' . $resized_image['url'] . '" ';
411
- }
412
  } else {
413
- $output .= '<img src="' . $image['image_src'] . '" ';
414
  }
415
 
416
- if ( ( $type == 'manual' || $type == 'gallery' ) && isset( $image['post_title'] ) && $image['post_title'] != '' ) {
417
- $captions[] = $image['post_title'];
418
- $output .= 'title="#nivoslider-' . $id . '-caption-' . $i . '" ';
419
- $i ++;
420
  }
421
- if ( ( $type == 'category' || $type == 'sticky' || $type == 'custom' ) && $options['enable_captions'] == 'on' && isset( $image['post_title'] ) && $image['post_title'] != '' ) {
422
- $captions[] = $image['post_title'];
423
- $output .= 'title="#nivoslider-' . $id . '-caption-' . $i . '" ';
424
- $i ++;
 
 
 
425
  }
 
 
 
 
 
 
 
 
 
 
426
 
427
- if ( isset( $options['controlNavThumbs'] ) && $options['controlNavThumbs'] == 'on' ) {
428
- if ( isset( $image['thumbnail'] ) ) {
429
- $output .= 'data-thumb="' . $image['thumbnail'] . '" ';
430
- } else {
431
- $resized_image = $this->core_images->resize_image( $image['attachment_id'], '', $options['thumbSizeWidth'], $options['thumbSizeHeight'], true );
432
  if ( is_wp_error( $resized_image ) ) {
433
  echo '<p>Error: ' . $resized_image->get_error_message() . '</p>';
434
- $output .= 'data-thumb="" ';
435
  } else {
436
- $output .= 'data-thumb="' . $resized_image['url'] . '" ';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
437
  }
438
  }
439
- }
440
 
441
- $output .= 'alt="' . $image['alt_text'] . '" />';
442
- if ( isset( $image['post_permalink'] ) && $image['post_permalink'] != '' ) {
443
- $output .= '</a>';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
444
  }
445
- }
446
- $output .= '</div></div>';
447
-
448
- if ( isset( $options['controlNavThumbs'] ) && 'on' == $options['controlNavThumbs'] ) {
449
-
450
- // Get the height and width.
451
- $thumbnail_height = $options['thumbSizeHeight'];
452
- $thumbnail_width = $options['thumbSizeWidth'];
453
-
454
- // Force the height/width of thumbnails set in slider settings.
455
- $output .= "<style type='text/css' media='screen'> \n";
456
- $output .= ".theme-default .nivo-controlNav.nivo-thumbs-enabled img, \n";
457
- $output .= ".nivo-thumbs-enabled img { \n";
458
- $output .= " width: {$thumbnail_width}px !important; \n";
459
- $output .= " height: {$thumbnail_height}px !important; \n";
460
- $output .= "} \n";
461
- $output .= "</style> \n";
462
- }
463
 
464
- $i = 0;
465
- foreach ( $captions as $caption ) {
466
- $output .= '<div id="nivoslider-' . $id . '-caption-' . $i . '" class="nivo-html-caption">';
467
- $output .= $caption ;
468
- $output .= '</div>';
469
- $i ++;
470
- }
471
 
472
- if ( count( $images ) > 1 ) {
473
- $output .= '<script type="text/javascript">' . "\n";
474
- $output .= 'jQuery(window).load(function(){' . "\n";
475
- $output .= ' jQuery("#nivoslider-' . $id . '").nivoSlider({' . "\n";
476
- $output .= ' effect:"' . $options['effect'] . '",' . "\n";
477
- $output .= ' slices:' . $options['slices'] . ',' . "\n";
478
- $output .= ' boxCols:' . $options['boxCols'] . ',' . "\n";
479
- $output .= ' boxRows:' . $options['boxRows'] . ',' . "\n";
480
- $output .= ' animSpeed:' . $options['animSpeed'] . ',' . "\n";
481
- $output .= ' pauseTime:' . $options['pauseTime'] . ',' . "\n";
482
- if ( isset( $options['randomStart'] ) && $options['randomStart'] == 'on' ) {
483
- $output .= ' startSlide:' . floor( rand( 0, count( $images ) ) ) . ',' . "\n";
 
 
 
 
 
 
 
 
 
 
 
484
  } else {
485
- $output .= ' startSlide:' . $options['startSlide'] . ',' . "\n";
 
 
 
 
486
  }
487
- $output .= ' directionNav:' . ( ( $options['directionNav'] == 'on' ) ? 'true' : 'false' ) . ',' . "\n";
488
- $output .= ' controlNav:' . ( ( $options['controlNav'] == 'on' ) ? 'true' : 'false' ) . ',' . "\n";
489
- $output .= ' controlNavThumbs:' . ( ( isset( $options['controlNavThumbs'] ) && $options['controlNavThumbs'] == 'on' ) ? 'true' : 'false' ) . ',' . "\n";
490
- $output .= ' pauseOnHover:' . ( ( $options['pauseOnHover'] == 'on' ) ? 'true' : 'false' ) . ',' . "\n";
491
- $output .= ' manualAdvance:' . ( ( $options['manualAdvance'] == 'on' ) ? 'true' : 'false' ) . "\n";
492
- $output .= ' });' . "\n";
493
- $output .= '});' . "\n";
494
- $output .= '</script>' . "\n";
495
- } else {
496
- $output .= '<script type="text/javascript">' . "\n";
497
- $output .= 'jQuery(window).load(function(){' . "\n";
498
- $output .= ' jQuery("#nivoslider-' . $id . ' img").css("position","relative").show();' . "\n";
499
- $output .= '});' . "\n";
500
- $output .= '</script>' . "\n";
501
  }
502
 
503
  return $output;
256
  * @access public
257
  */
258
  public function register_scripts() {
259
+ $this->scripts = apply_filters( 'nivo_external_shortcode_scripts', $this->scripts );
260
  if ( $this->scripts && count( $this->scripts ) > 0 ) {
261
  $required = array( 'jquery' );
262
  foreach ( $this->scripts as $name => $url ) {
273
  * @access public
274
  */
275
  public function register_styles() {
276
+ $this->styles = apply_filters( 'nivo_external_shortcode_styles', $this->styles );
277
  if ( $this->styles && count( $this->styles ) > 0 ) {
278
  foreach ( $this->styles as $name => $url ) {
279
  wp_register_style( $name, $url, array(), $this->labels['plugin_version'] );
372
  * @return string
373
  */
374
  public function shortcode_output( $id, $output, $options, $images, $slider_type ) {
375
+ $module = false;
376
+ list( $prefix, $post_id ) = explode( '-', $id );
377
+ if ( get_post_type( $post_id ) == $this->labels['post_type'] ) {
378
+ $taxonomy = wp_get_post_terms( $post_id, 'nivo_slider', array(
379
+ 'fields' => 'names',
380
+ ) );
381
+ if ( isset( $taxonomy[0] ) && in_array( $taxonomy[0], array( 'carousel' ) ) ) {
382
+ $module = true;
383
+ $module_name = $taxonomy[0];
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
384
  }
385
+ }
386
+ if ( $module && isset( $module_name ) ) {
387
+ $output = apply_filters( $this->labels['post_type'] . '_' . $module_name, $id, $output, $options, $images, $slider_type );
388
+ } else {
389
+ if ( isset( $options[ $this->labels['source_name'] ] ) ) {
390
+ $type = $options[ $this->labels['source_name'] ];
 
 
 
391
  } else {
392
+ $type = $options[ $this->labels['type_name'] ]; // backwards compatibility for < v3.0.0
393
  }
394
 
395
+ $captions = array();
396
+ $output .= '<div class="slider-wrapper';
397
+ if ( isset( $options['theme'] ) && $options['theme'] != '' ) {
398
+ $output .= ' theme-' . $options['theme'];
399
  }
400
+ if ( isset( $options['controlNavThumbs'] ) && $options['controlNavThumbs'] == 'on' ) {
401
+ $output .= ' controlnav-thumbs';
402
+ }
403
+ $output .= '"><div class="ribbon"></div>';
404
+ $output .= '<div id="nivoslider-' . $id . '" class="nivoSlider"';
405
+ if ( isset( $options['sizing'] ) && $options['sizing'] == 'fixed' ) {
406
+ $output .= ' style="width:' . $options['dim_x'] . 'px;height:' . $options['dim_y'] . 'px;"';
407
  }
408
+ $output .= '>';
409
+ $i = 0;
410
+ foreach ( $images as $image ) {
411
+
412
+ $image_link = $this->nivo_default_val( $options, 'imageLink', 'on' );
413
+ $target_blank = $this->nivo_default_val( $options, 'targetBlank', 'on' );
414
+ if ( ( isset( $image['post_permalink'] ) && $image['post_permalink'] != '' ) && $image_link == 'on' ) {
415
+ $target = ( $target_blank == 'on' ) ? ' target="_blank"' : '';
416
+ $output .= '<a ' . $target . ' href="' . $image['post_permalink'] . '">';
417
+ }
418
 
419
+ if ( isset( $options['sizing'] ) && $options['sizing'] == 'fixed' && isset( $image['attachment_id'] ) ) {
420
+ $resized_image = $this->core_images->resize_image( $image['attachment_id'], '', $options['dim_x'], $options['dim_y'], true );
 
 
 
421
  if ( is_wp_error( $resized_image ) ) {
422
  echo '<p>Error: ' . $resized_image->get_error_message() . '</p>';
423
+ $output .= '<img src="" ';
424
  } else {
425
+ $output .= '<img src="' . $resized_image['url'] . '" ';
426
+ }
427
+ } else {
428
+ $output .= '<img src="' . $image['image_src'] . '" ';
429
+ }
430
+
431
+ if ( ( $type == 'manual' || $type == 'gallery' ) && isset( $image['post_title'] ) && $image['post_title'] != '' ) {
432
+ $captions[] = $image['post_title'];
433
+ $output .= 'title="#nivoslider-' . $id . '-caption-' . $i . '" ';
434
+ $i ++;
435
+ }
436
+ if ( ( $type == 'category' || $type == 'sticky' || $type == 'custom' ) && $options['enable_captions'] == 'on' && isset( $image['post_title'] ) && $image['post_title'] != '' ) {
437
+ $captions[] = $image['post_title'];
438
+ $output .= 'title="#nivoslider-' . $id . '-caption-' . $i . '" ';
439
+ $i ++;
440
+ }
441
+
442
+ if ( isset( $options['controlNavThumbs'] ) && $options['controlNavThumbs'] == 'on' ) {
443
+ if ( isset( $image['thumbnail'] ) ) {
444
+ $output .= 'data-thumb="' . $image['thumbnail'] . '" ';
445
+ } else {
446
+ $resized_image = $this->core_images->resize_image( $image['attachment_id'], '', $options['thumbSizeWidth'], $options['thumbSizeHeight'], true );
447
+ if ( is_wp_error( $resized_image ) ) {
448
+ echo '<p>Error: ' . $resized_image->get_error_message() . '</p>';
449
+ $output .= 'data-thumb="" ';
450
+ } else {
451
+ $output .= 'data-thumb="' . $resized_image['url'] . '" ';
452
+ }
453
  }
454
  }
 
455
 
456
+ $output .= 'alt="' . $image['alt_text'] . '" />';
457
+ if ( isset( $image['post_permalink'] ) && $image['post_permalink'] != '' ) {
458
+ $output .= '</a>';
459
+ }
460
+ }
461
+ $output .= '</div></div>';
462
+
463
+ if ( isset( $options['controlNavThumbs'] ) && 'on' == $options['controlNavThumbs'] ) {
464
+
465
+ // Get the height and width.
466
+ $thumbnail_height = $options['thumbSizeHeight'];
467
+ $thumbnail_width = $options['thumbSizeWidth'];
468
+
469
+ // Force the height/width of thumbnails set in slider settings.
470
+ $output .= "<style type='text/css' media='screen'> \n";
471
+ $output .= ".theme-default .nivo-controlNav.nivo-thumbs-enabled img, \n";
472
+ $output .= ".nivo-thumbs-enabled img { \n";
473
+ $output .= " width: {$thumbnail_width}px !important; \n";
474
+ $output .= " height: {$thumbnail_height}px !important; \n";
475
+ $output .= "} \n";
476
+ $output .= "</style> \n";
477
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
478
 
479
+ $i = 0;
480
+ foreach ( $captions as $caption ) {
481
+ $output .= '<div id="nivoslider-' . $id . '-caption-' . $i . '" class="nivo-html-caption">';
482
+ $output .= $caption ;
483
+ $output .= '</div>';
484
+ $i ++;
485
+ }
486
 
487
+ if ( count( $images ) > 1 ) {
488
+ $output .= '<script type="text/javascript">' . "\n";
489
+ $output .= 'jQuery(window).load(function(){' . "\n";
490
+ $output .= ' jQuery("#nivoslider-' . $id . '").nivoSlider({' . "\n";
491
+ $output .= ' effect:"' . $options['effect'] . '",' . "\n";
492
+ $output .= ' slices:' . $options['slices'] . ',' . "\n";
493
+ $output .= ' boxCols:' . $options['boxCols'] . ',' . "\n";
494
+ $output .= ' boxRows:' . $options['boxRows'] . ',' . "\n";
495
+ $output .= ' animSpeed:' . $options['animSpeed'] . ',' . "\n";
496
+ $output .= ' pauseTime:' . $options['pauseTime'] . ',' . "\n";
497
+ if ( isset( $options['randomStart'] ) && $options['randomStart'] == 'on' ) {
498
+ $output .= ' startSlide:' . floor( rand( 0, count( $images ) ) ) . ',' . "\n";
499
+ } else {
500
+ $output .= ' startSlide:' . $options['startSlide'] . ',' . "\n";
501
+ }
502
+ $output .= ' directionNav:' . ( ( $options['directionNav'] == 'on' ) ? 'true' : 'false' ) . ',' . "\n";
503
+ $output .= ' controlNav:' . ( ( $options['controlNav'] == 'on' ) ? 'true' : 'false' ) . ',' . "\n";
504
+ $output .= ' controlNavThumbs:' . ( ( isset( $options['controlNavThumbs'] ) && $options['controlNavThumbs'] == 'on' ) ? 'true' : 'false' ) . ',' . "\n";
505
+ $output .= ' pauseOnHover:' . ( ( $options['pauseOnHover'] == 'on' ) ? 'true' : 'false' ) . ',' . "\n";
506
+ $output .= ' manualAdvance:' . ( ( $options['manualAdvance'] == 'on' ) ? 'true' : 'false' ) . "\n";
507
+ $output .= ' });' . "\n";
508
+ $output .= '});' . "\n";
509
+ $output .= '</script>' . "\n";
510
  } else {
511
+ $output .= '<script type="text/javascript">' . "\n";
512
+ $output .= 'jQuery(window).load(function(){' . "\n";
513
+ $output .= ' jQuery("#nivoslider-' . $id . ' img").css("position","relative").show();' . "\n";
514
+ $output .= '});' . "\n";
515
+ $output .= '</script>' . "\n";
516
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
517
  }
518
 
519
  return $output;
includes/class-nivo-slider.php CHANGED
@@ -69,7 +69,7 @@ class Nivo_Slider {
69
  public function __construct() {
70
 
71
  $this->plugin_name = 'nivo-slider';
72
- $this->version = '2.0.4';
73
 
74
  $this->load_dependencies();
75
  $this->set_locale();
@@ -131,7 +131,7 @@ class Nivo_Slider {
131
  $this->loader->add_action( 'admin_enqueue_scripts', $plugin_admin, 'enqueue_scripts' );
132
  $this->loader->add_action( 'init', $plugin_admin, 'init_tinymce' );
133
  $this->loader->add_action( 'admin_print_scripts', $plugin_admin, 'admin_print_scripts' );
134
- $this->loader->add_action( 'admin_menu', $plugin_admin, 'admin_menu' );
135
  $this->loader->add_action( 'admin_menu', $plugin_admin, 'remove_admin_menu' );
136
  $this->loader->add_action( 'admin_init', $plugin_admin, 'register_settings' );
137
  // Filters Nivo_Slider_Admin
@@ -141,6 +141,8 @@ class Nivo_Slider {
141
  $this->loader->add_filter( 'plugin_action_links', $plugin_admin, 'plugin_action_links', 10, 2 );
142
  $this->loader->add_filter( 'nivo_field_upsell', $plugin_admin, 'add_upsell', 10, 2 );
143
  $this->loader->add_filter( 'nivo_slider_lite_logger_flag', $plugin_admin, 'check_logger', 10, 2 );
 
 
144
 
145
  $plugin_admin_edit = new Nivo_Core_Admin_Edit();
146
  // Actions Nivo_Core_Admin_Edit
@@ -149,6 +151,7 @@ class Nivo_Slider {
149
  $this->loader->add_action( 'manage_' . $post_type . '_posts_custom_column', $plugin_admin_edit, 'custom_columns' );
150
  // Filters Nivo_Core_Admin_Edit
151
  $this->loader->add_filter( $post_type . '_admin_edit_settings', $plugin_admin_edit, 'admin_edit_settings' );
 
152
 
153
  $plugin_admin_ajax = new Nivo_Core_Admin_Ajax();
154
  // Actions Nivo_Core_Admin_Ajax
69
  public function __construct() {
70
 
71
  $this->plugin_name = 'nivo-slider';
72
+ $this->version = '2.1.0';
73
 
74
  $this->load_dependencies();
75
  $this->set_locale();
131
  $this->loader->add_action( 'admin_enqueue_scripts', $plugin_admin, 'enqueue_scripts' );
132
  $this->loader->add_action( 'init', $plugin_admin, 'init_tinymce' );
133
  $this->loader->add_action( 'admin_print_scripts', $plugin_admin, 'admin_print_scripts' );
134
+ $this->loader->add_action( 'admin_menu', $plugin_admin, 'admin_menu', 999 );
135
  $this->loader->add_action( 'admin_menu', $plugin_admin, 'remove_admin_menu' );
136
  $this->loader->add_action( 'admin_init', $plugin_admin, 'register_settings' );
137
  // Filters Nivo_Slider_Admin
141
  $this->loader->add_filter( 'plugin_action_links', $plugin_admin, 'plugin_action_links', 10, 2 );
142
  $this->loader->add_filter( 'nivo_field_upsell', $plugin_admin, 'add_upsell', 10, 2 );
143
  $this->loader->add_filter( 'nivo_slider_lite_logger_flag', $plugin_admin, 'check_logger', 10, 2 );
144
+ $this->loader->add_filter( 'get_nivo_settings', $plugin_admin, 'get_nivo_settings' );
145
+ $this->loader->add_filter( 'nivo_default_val', $plugin_admin, 'nivo_default_val', 10, 3 );
146
 
147
  $plugin_admin_edit = new Nivo_Core_Admin_Edit();
148
  // Actions Nivo_Core_Admin_Edit
151
  $this->loader->add_action( 'manage_' . $post_type . '_posts_custom_column', $plugin_admin_edit, 'custom_columns' );
152
  // Filters Nivo_Core_Admin_Edit
153
  $this->loader->add_filter( $post_type . '_admin_edit_settings', $plugin_admin_edit, 'admin_edit_settings' );
154
+ $this->loader->add_filter( 'get_image_source_details', $plugin_admin_edit, 'get_image_source_details', 10, 2 );
155
 
156
  $plugin_admin_ajax = new Nivo_Core_Admin_Ajax();
157
  // Actions Nivo_Core_Admin_Ajax
includes/layouts/css/upsell.css ADDED
@@ -0,0 +1,178 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * upsell.css
3
+ * Feedzy RSS Feed Upsell Style
4
+ *
5
+ * @since 3.0.12
6
+ * @package feedzy-rss-feeds
7
+ */
8
+
9
+ #pro-features .pro-features-header {
10
+ padding: 20px 10px;
11
+ border-top: 5px solid #252b37;
12
+ background: #fff;
13
+ }
14
+
15
+ #pro-features .logo {
16
+ display: inline-block;
17
+ margin: 0 0 0 20px;
18
+ padding: 0 0 0 0;
19
+ color: #3c3c3c;
20
+ font-family: "Open Sans", sans-serif;
21
+ font-size: 2em;
22
+ font-weight: 700;
23
+ line-height: 60px;
24
+ letter-spacing: -1px;
25
+ }
26
+
27
+ #pro-features .slogan {
28
+ display: inline-block;
29
+ margin: 0 0 0 5px;
30
+ padding: 0;
31
+ color: #858585;
32
+ font-family: "Open Sans", sans-serif;
33
+ font-size: 17px;
34
+ line-height: 3.5;
35
+ }
36
+
37
+ #pro-features .slogan a {
38
+ color: #858585;
39
+ font-weight: 600;
40
+ font-style: italic;
41
+ text-decoration: none;
42
+ -webkit-transition: all 0.250s ease-in-out;
43
+ transition: all 0.250s ease-in-out;
44
+ }
45
+
46
+ #pro-features .slogan a:hover {
47
+ color: #ff6160;
48
+ }
49
+
50
+ #pro-features .slogan a:focus {
51
+ outline: none;
52
+ -webkit-box-shadow: none;
53
+ box-shadow: none;
54
+ }
55
+
56
+ #pro-features .header-btns {
57
+ float: right;
58
+ margin: 7px 20px;
59
+ text-align: right;
60
+ }
61
+
62
+ #pro-features .header-btns .buy-now {
63
+ display: inline-block;
64
+ margin-top: 2px;
65
+ margin-right: 5px;
66
+ padding: 15px 25px;
67
+ border-radius: 3px;
68
+ border-radius: 3px;
69
+ color: #fff;
70
+ background: #e33b3f;
71
+ font-family: "Open Sans", sans-serif;
72
+ font-size: 18px;
73
+ font-weight: bold;
74
+ text-decoration: none;
75
+ text-transform: uppercase;
76
+ -webkit-transition: all 0.250s ease-in-out;
77
+ transition: all 0.250s ease-in-out;
78
+ }
79
+
80
+ #pro-features .header-btns .buy-now:hover {
81
+ background: #252b37;
82
+ }
83
+
84
+ #pro-features .header-btns .buy-now .dashicons {
85
+ padding-right: 3px;
86
+ }
87
+
88
+ #pro-features .pro-features-header,
89
+ #pro-features .pro-feature {
90
+ display: block;
91
+ margin: 30px 15px 0;
92
+ background-color: #fff;
93
+ -webkit-box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.1);
94
+ box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.1);
95
+ }
96
+
97
+ #pro-features .pro-feature .pro-feature-features,
98
+ #pro-features .pro-feature .pro-feature-image {
99
+ display: table-cell;
100
+ margin: 0;
101
+ vertical-align: middle;
102
+ }
103
+
104
+ #pro-features .pro-feature .pro-feature-features {
105
+ -webkit-box-sizing: border-box;
106
+ box-sizing: border-box;
107
+ padding: 30px;
108
+ }
109
+
110
+ #pro-features .pro-feature .pro-feature-image {
111
+ width: 470px;
112
+ }
113
+
114
+ #pro-features .pro-feature .pro-feature-features h2 {
115
+ margin: 0 0 20px;
116
+ font-size: 28px;
117
+ }
118
+
119
+ #pro-features .pro-feature .pro-feature-features h4 {
120
+ margin: 0 0 10px;
121
+ font-size: 20px;
122
+ }
123
+
124
+ #pro-features .pro-feature .pro-feature-features p {
125
+ margin: 0 0 15px;
126
+ font-size: 16px;
127
+ line-height: 1.5;
128
+ }
129
+
130
+ #pro-features .pro-feature .pro-feature-image img {
131
+ width: 100%;
132
+ height: auto;
133
+ padding: 20px 0;
134
+ }
135
+
136
+ #pro-features .subtitle-pro {
137
+ margin: 0 0 0 20px;
138
+ padding: 0;
139
+ color: #858585;
140
+ font-family: "Open Sans", sans-serif;
141
+ font-size: 16px;
142
+ font-size: 17px;
143
+ line-height: 1.5;
144
+ }
145
+
146
+ @media screen and (max-width: 1200px) {
147
+ #pro-features .pro-feature .pro-feature-features,
148
+ #pro-features .pro-feature .pro-feature-image {
149
+ display: block;
150
+ }
151
+
152
+ #pro-features .pro-feature .pro-feature-image {
153
+ width: 470px;
154
+ margin: 0 auto 20px;
155
+ text-align: center;
156
+ }
157
+
158
+ #pro-features .slogan {
159
+ display: none;
160
+ }
161
+ }
162
+
163
+ @media screen and (max-width: 1100px) {
164
+ #pro-features {
165
+ text-align: center;
166
+ }
167
+
168
+ #pro-features .logo {
169
+ margin-left: 0;
170
+ }
171
+
172
+ #pro-features .header-btns {
173
+ display: block;
174
+ float: none;
175
+ margin: 0 0 10px 0;
176
+ text-align: center;
177
+ }
178
+ }
includes/layouts/nivo-upsell.php ADDED
@@ -0,0 +1,59 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Layout For Upsell Page of Nivo Slider
4
+ *
5
+ * @since 3.0.12
6
+ * @package feedzy-rss-feeds
7
+ */
8
+ ?>
9
+ <div id="pro-features" class="nivo-pro-upsell">
10
+
11
+ <div class="pro-features-header">
12
+ <p class="logo"> Nivo Slider</p>
13
+ <span class="slogan">by <a
14
+ href="https://themeisle.com/">ThemeIsle</a></span>
15
+ <div class="header-btns">
16
+
17
+ <a target="_blank" href="<?php echo NIVO_PRO_UPSELL; ?>" class="buy-now"><span
18
+ class="dashicons dashicons-cart"></span> Buy now</a>
19
+ </div>
20
+ <p class="subtitle-pro">Extend your Nivo Slider and add more powerfull features .</p>
21
+ <div class="clear"></div>
22
+ </div>
23
+
24
+ <div class="pro-feature">
25
+ <div class="pro-feature-features">
26
+ <h2>Create sliders from categories or galleries</h2>
27
+ <p>Besides the classic image sliders, Nivo allows you to choose between Category and Gallery sliders. This
28
+ allows you to easily showcase your visitors your website’s content</p>
29
+ </div>
30
+ <div class="pro-feature-image">
31
+ <img src="<?php echo NIVO_SLIDER_PLUGIN_URL . '/assets/images/nivo-slider-create-slider-from-posts-categories-galleries.jpg'; ?>"/>
32
+ </div>
33
+ <div class="clear"></div>
34
+ </div>
35
+ <div class="pro-feature">
36
+ <div class="pro-feature-image">
37
+ <img src="<?php echo NIVO_SLIDER_PLUGIN_URL . '/assets/images/nivo-slider-plugin-mobile-friendly.jpg'; ?>"/>
38
+ </div>
39
+ <div class="pro-feature-features">
40
+ <h2>Post types support</h2>
41
+ <p>Image sliders created with the Nivo Slider plugin are compatible with WordPress post types. Include
42
+ sliders anywhere in your website, it’s super easy.</p>
43
+ </div>
44
+ <div class="clear"></div>
45
+ </div>
46
+ <div class="pro-feature">
47
+ <div class="pro-feature-features">
48
+ <h2>Carousel support</h2>
49
+ <p>You can leverage the use of the Nivo and create also powerfull carousels besides the regular sliders
50
+ which you are already familiar. You can add as many as you want and fetch images from posts, categories
51
+ or custom post types.</p>
52
+ </div>
53
+ <div class="pro-feature-image">
54
+ <img src="<?php echo NIVO_SLIDER_PLUGIN_URL . '/assets/images/nivo-slider-carousel-integration.jpg'; ?>"/>
55
+ </div>
56
+ <div class="clear"></div>
57
+ </div>
58
+ <div class="clear"></div>
59
+ </div>
key.enc ADDED
Binary file
languages/nivo-slider.pot CHANGED
@@ -2,9 +2,9 @@
2
  # This file is distributed under the no.
3
  msgid ""
4
  msgstr ""
5
- "Project-Id-Version: Slider by Nivo - Responsive Image Slider 2.0.1\n"
6
  "Report-Msgid-Bugs-To: https://github.com/Codeinwp/nivo-slider-lite/issues\n"
7
- "POT-Creation-Date: 2017-05-06 10:27:26+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=utf-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
@@ -24,356 +24,466 @@ msgstr ""
24
  "X-Poedit-Bookmarks: \n"
25
  "X-Textdomain-Support: yes\n"
26
 
27
- #: includes/abstract/class-nivo-model-abstract.php:56
28
  msgid "Add New"
29
  msgstr ""
30
 
 
31
  #: includes/abstract/class-nivo-model-abstract.php:57
32
  msgid "Add New %1$s"
33
  msgstr ""
34
 
 
 
35
  #: includes/abstract/class-nivo-model-abstract.php:58
36
  #: includes/admin/libs/class-nivo-core-admin-images.php:59
37
  msgid "Edit %1$s"
38
  msgstr ""
39
 
 
40
  #: includes/abstract/class-nivo-model-abstract.php:59
41
  msgid "New %1$s"
42
  msgstr ""
43
 
 
44
  #: includes/abstract/class-nivo-model-abstract.php:60
45
  msgid "All %2$s"
46
  msgstr ""
47
 
 
48
  #: includes/abstract/class-nivo-model-abstract.php:61
49
  msgid "View %1$s"
50
  msgstr ""
51
 
 
52
  #: includes/abstract/class-nivo-model-abstract.php:62
53
  msgid "Search %2$s"
54
  msgstr ""
55
 
 
56
  #: includes/abstract/class-nivo-model-abstract.php:63
57
  msgid "No %2$s found"
58
  msgstr ""
59
 
 
60
  #: includes/abstract/class-nivo-model-abstract.php:64
61
  msgid "No %2$s found in Trash"
62
  msgstr ""
63
 
 
 
 
64
  #: includes/admin/class-nivo-slider-admin.php:83
65
- #: includes/admin/class-nivo-slider-admin.php:206
66
  #: includes/admin/libs/class-nivo-slider-widget.php:31
67
  msgid "Nivo Slider"
68
  msgstr ""
69
 
 
70
  #: includes/admin/class-nivo-slider-admin.php:84
71
  msgid "Nivo Sliders"
72
  msgstr ""
73
 
74
- #: includes/admin/class-nivo-slider-admin.php:272
 
75
  msgid "Save Changes"
76
  msgstr ""
77
 
78
- #: includes/admin/class-nivo-slider-admin.php:300
 
79
  msgid "Management Roles"
80
  msgstr ""
81
 
82
- #: includes/admin/class-nivo-slider-admin.php:499
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
83
  #: includes/admin/libs/class-nivo-core-admin-edit.php:281
84
  msgid "Settings"
85
  msgstr ""
86
 
87
- #: includes/admin/class-nivo-slider-admin.php:578
 
88
  msgid ""
89
  "You can automatically build slider from post galleries, categories and "
90
  "sticky posts using the %1$s FULL%2$s version."
91
  msgstr ""
92
 
 
93
  #: includes/admin/libs/class-nivo-core-admin-edit.php:68
94
  msgid "Enable Captions"
95
  msgstr ""
96
 
 
97
  #: includes/admin/libs/class-nivo-core-admin-edit.php:69
98
  msgid "Enable automatic captions from post titles"
99
  msgstr ""
100
 
 
101
  #: includes/admin/libs/class-nivo-core-admin-edit.php:77
102
  msgid "Number of Images"
103
  msgstr ""
104
 
 
105
  #: includes/admin/libs/class-nivo-core-admin-edit.php:78
106
  msgid ""
107
  "The number of images to use in the slider. Leave blank for all images. "
108
  "External sources default to 20"
109
  msgstr ""
110
 
 
111
  #: includes/admin/libs/class-nivo-core-admin-edit.php:87
112
  msgid "Slider Sizing"
113
  msgstr ""
114
 
 
115
  #: includes/admin/libs/class-nivo-core-admin-edit.php:88
116
  msgid "Responsive sliders will fill the width of the container"
117
  msgstr ""
118
 
 
119
  #: includes/admin/libs/class-nivo-core-admin-edit.php:90
120
  msgid "Responsive"
121
  msgstr ""
122
 
 
123
  #: includes/admin/libs/class-nivo-core-admin-edit.php:91
124
  msgid "Fixed Size"
125
  msgstr ""
126
 
 
127
  #: includes/admin/libs/class-nivo-core-admin-edit.php:98
128
  msgid "Image Size"
129
  msgstr ""
130
 
 
131
  #: includes/admin/libs/class-nivo-core-admin-edit.php:99
132
  msgid "Select the size of image from the WordPress media library"
133
  msgstr ""
134
 
 
135
  #: includes/admin/libs/class-nivo-core-admin-edit.php:107
136
  msgid "Slider Size"
137
  msgstr ""
138
 
 
139
  #: includes/admin/libs/class-nivo-core-admin-edit.php:108
140
  msgid "(Size in px) Images will be cropped to these dimensions (eg 400 x 150)"
141
  msgstr ""
142
 
 
143
  #: includes/admin/libs/class-nivo-core-admin-edit.php:121
144
  msgid "Slider Theme"
145
  msgstr ""
146
 
 
147
  #: includes/admin/libs/class-nivo-core-admin-edit.php:122
148
  msgid "Use a pre-built theme or provide your own styles."
149
  msgstr ""
150
 
 
151
  #: includes/admin/libs/class-nivo-core-admin-edit.php:126
152
  msgid "Random"
153
  msgstr ""
154
 
 
155
  #: includes/admin/libs/class-nivo-core-admin-edit.php:127
156
  msgid "Fade"
157
  msgstr ""
158
 
 
159
  #: includes/admin/libs/class-nivo-core-admin-edit.php:128
160
  msgid "Fold"
161
  msgstr ""
162
 
 
163
  #: includes/admin/libs/class-nivo-core-admin-edit.php:129
164
  msgid "Slice Down"
165
  msgstr ""
166
 
 
167
  #: includes/admin/libs/class-nivo-core-admin-edit.php:130
168
  msgid "Slice Down (Left)"
169
  msgstr ""
170
 
 
171
  #: includes/admin/libs/class-nivo-core-admin-edit.php:131
172
  msgid "Slice Up"
173
  msgstr ""
174
 
 
175
  #: includes/admin/libs/class-nivo-core-admin-edit.php:132
176
  msgid "Slice Up (Left)"
177
  msgstr ""
178
 
 
179
  #: includes/admin/libs/class-nivo-core-admin-edit.php:133
180
  msgid "Slice Up/Down"
181
  msgstr ""
182
 
 
183
  #: includes/admin/libs/class-nivo-core-admin-edit.php:134
184
  msgid "Slice Up/Down (Left)"
185
  msgstr ""
186
 
 
187
  #: includes/admin/libs/class-nivo-core-admin-edit.php:135
188
  msgid "Slide In (Right)"
189
  msgstr ""
190
 
 
191
  #: includes/admin/libs/class-nivo-core-admin-edit.php:136
192
  msgid "Slide In (Left)"
193
  msgstr ""
194
 
 
195
  #: includes/admin/libs/class-nivo-core-admin-edit.php:137
196
  msgid "Box Random"
197
  msgstr ""
198
 
 
199
  #: includes/admin/libs/class-nivo-core-admin-edit.php:138
200
  msgid "Box Rain"
201
  msgstr ""
202
 
 
203
  #: includes/admin/libs/class-nivo-core-admin-edit.php:139
204
  msgid "Box Rain (Reverse)"
205
  msgstr ""
206
 
 
207
  #: includes/admin/libs/class-nivo-core-admin-edit.php:140
208
  msgid "Box Rain Grow"
209
  msgstr ""
210
 
 
211
  #: includes/admin/libs/class-nivo-core-admin-edit.php:141
212
  msgid "Box Rain Grow (Reverse)"
213
  msgstr ""
214
 
 
215
  #: includes/admin/libs/class-nivo-core-admin-edit.php:147
216
  msgid "Transition Effect"
217
  msgstr ""
218
 
 
219
  #: includes/admin/libs/class-nivo-core-admin-edit.php:154
220
  msgid "Slices"
221
  msgstr ""
222
 
 
223
  #: includes/admin/libs/class-nivo-core-admin-edit.php:155
224
  msgid "The number of slices to use in the \"Slice\" transitions (eg 15)"
225
  msgstr ""
226
 
 
227
  #: includes/admin/libs/class-nivo-core-admin-edit.php:161
228
  msgid "Box (Cols x Rows)"
229
  msgstr ""
230
 
 
231
  #: includes/admin/libs/class-nivo-core-admin-edit.php:162
232
  msgid "The number of columns and rows to use in the \"Box\" transitions (eg 8 x 4)"
233
  msgstr ""
234
 
 
235
  #: includes/admin/libs/class-nivo-core-admin-edit.php:169
236
  msgid "Animation Speed"
237
  msgstr ""
238
 
 
239
  #: includes/admin/libs/class-nivo-core-admin-edit.php:170
240
  msgid "The speed of the transition animation in milliseconds (eg 500)"
241
  msgstr ""
242
 
 
243
  #: includes/admin/libs/class-nivo-core-admin-edit.php:176
244
  msgid "Enable Thumbnail Navigation"
245
  msgstr ""
246
 
 
247
  #: includes/admin/libs/class-nivo-core-admin-edit.php:183
248
  msgid "Thumbnail Size"
249
  msgstr ""
250
 
 
251
  #: includes/admin/libs/class-nivo-core-admin-edit.php:184
252
  msgid "The width and height of the thumbnails"
253
  msgstr ""
254
 
 
255
  #: includes/admin/libs/class-nivo-core-admin-edit.php:192
256
  msgid "Pause Time"
257
  msgstr ""
258
 
 
259
  #: includes/admin/libs/class-nivo-core-admin-edit.php:193
260
  msgid "The amount of time to show each slide in milliseconds (eg 3000)"
261
  msgstr ""
262
 
 
263
  #: includes/admin/libs/class-nivo-core-admin-edit.php:199
264
  msgid "Start Slide"
265
  msgstr ""
266
 
 
267
  #: includes/admin/libs/class-nivo-core-admin-edit.php:200
268
  msgid "Set which slide the slider starts from (zero based index: usually 0)"
269
  msgstr ""
270
 
 
271
  #: includes/admin/libs/class-nivo-core-admin-edit.php:206
272
  msgid "Enable Direction Navigation"
273
  msgstr ""
274
 
 
275
  #: includes/admin/libs/class-nivo-core-admin-edit.php:207
276
  msgid "Prev &amp; Next arrows"
277
  msgstr ""
278
 
 
279
  #: includes/admin/libs/class-nivo-core-admin-edit.php:213
280
  msgid "Enable Control Navigation"
281
  msgstr ""
282
 
 
283
  #: includes/admin/libs/class-nivo-core-admin-edit.php:214
284
  msgid "eg 1,2,3..."
285
  msgstr ""
286
 
 
287
  #: includes/admin/libs/class-nivo-core-admin-edit.php:220
288
  msgid "Enable Images Links"
289
  msgstr ""
290
 
 
291
  #: includes/admin/libs/class-nivo-core-admin-edit.php:221
292
  msgid ""
293
  "If a link has been added to an image when configuring, the image links to "
294
  "the url."
295
  msgstr ""
296
 
 
297
  #: includes/admin/libs/class-nivo-core-admin-edit.php:227
298
  msgid "Open Links in New Window"
299
  msgstr ""
300
 
 
301
  #: includes/admin/libs/class-nivo-core-admin-edit.php:228
302
  msgid "Open the links in a new window."
303
  msgstr ""
304
 
 
305
  #: includes/admin/libs/class-nivo-core-admin-edit.php:236
306
  msgid "Pause the Slider on Hover"
307
  msgstr ""
308
 
 
309
  #: includes/admin/libs/class-nivo-core-admin-edit.php:242
310
  msgid "Manual Transitions"
311
  msgstr ""
312
 
 
313
  #: includes/admin/libs/class-nivo-core-admin-edit.php:243
314
  msgid "Slider is always paused"
315
  msgstr ""
316
 
 
317
  #: includes/admin/libs/class-nivo-core-admin-edit.php:249
318
  msgid "Random Start Slide"
319
  msgstr ""
320
 
 
321
  #: includes/admin/libs/class-nivo-core-admin-edit.php:250
322
  msgid "Overrides Start Slide value"
323
  msgstr ""
324
 
 
325
  #: includes/admin/libs/class-nivo-core-admin-edit.php:275
326
  msgid "%1$s Images"
327
  msgstr ""
328
 
 
329
  #: includes/admin/libs/class-nivo-core-admin-edit.php:287
330
  msgid "Using this %1$s"
331
  msgstr ""
332
 
 
333
  #: includes/admin/libs/class-nivo-core-admin-edit.php:294
334
  msgid "Full Version"
335
  msgstr ""
336
 
 
337
  #: includes/admin/libs/class-nivo-core-admin-edit.php:300
338
  msgid "Contribute to Nivo"
339
  msgstr ""
340
 
 
341
  #: includes/admin/libs/class-nivo-core-admin-edit.php:317
342
  msgid "To use this %1$s in your posts or pages use the following shortcode:"
343
  msgstr ""
344
 
 
345
  #: includes/admin/libs/class-nivo-core-admin-edit.php:323
346
  msgid "To use this %1$s in a theme template file use the following code:"
347
  msgstr ""
348
 
 
349
  #: includes/admin/libs/class-nivo-core-admin-edit.php:340
350
  msgid " Extend Nivo Slider "
351
  msgstr ""
352
 
 
353
  #: includes/admin/libs/class-nivo-core-admin-edit.php:342
354
  msgid "More slider types"
355
  msgstr ""
356
 
 
357
  #: includes/admin/libs/class-nivo-core-admin-edit.php:343
358
  msgid "Build carousels"
359
  msgstr ""
360
 
 
361
  #: includes/admin/libs/class-nivo-core-admin-edit.php:344
362
  msgid "Create lightboxes"
363
  msgstr ""
364
 
 
365
  #: includes/admin/libs/class-nivo-core-admin-edit.php:345
366
  msgid "Automatic updates"
367
  msgstr ""
368
 
 
369
  #: includes/admin/libs/class-nivo-core-admin-edit.php:346
370
  msgid "Priority support"
371
  msgstr ""
372
 
 
373
  #: includes/admin/libs/class-nivo-core-admin-edit.php:364
374
  msgid "Enable Tracking"
375
  msgstr ""
376
 
 
377
  #: includes/admin/libs/class-nivo-core-admin-edit.php:366
378
  msgid ""
379
  "Allow Nivo to anonymously track how this plugin is used and help us make "
@@ -381,205 +491,274 @@ msgid ""
381
  "\t\t\t\t\tplugin better. No sensitive data is tracked."
382
  msgstr ""
383
 
384
- #: includes/admin/libs/class-nivo-core-admin-edit.php:405
 
385
  msgid " %1$s Type"
386
  msgstr ""
387
 
388
- #: includes/admin/libs/class-nivo-core-admin-edit.php:425
 
389
  msgid "No Sources"
390
  msgstr ""
391
 
392
- #: includes/admin/libs/class-nivo-core-admin-edit.php:430
 
393
  msgid "Choose to manually upload images or use images from the media library . "
394
  msgstr ""
395
 
396
- #: includes/admin/libs/class-nivo-core-admin-edit.php:436
 
397
  msgid "Gallery Location"
398
  msgstr ""
399
 
400
- #: includes/admin/libs/class-nivo-core-admin-edit.php:466
 
401
  msgid "Select the post gallery you want to use"
402
  msgstr ""
403
 
404
- #: includes/admin/libs/class-nivo-core-admin-edit.php:470
 
 
405
  #: includes/admin/libs/class-nivo-core-images.php:423
406
  msgid "Category"
407
  msgstr ""
408
 
409
- #: includes/admin/libs/class-nivo-core-admin-edit.php:486
 
410
  msgid "Select the category you want to use for post thumbnails"
411
  msgstr ""
412
 
413
- #: includes/admin/libs/class-nivo-core-admin-edit.php:490
 
 
414
  #: includes/admin/libs/class-nivo-core-images.php:425
415
  msgid "Custom Post Type"
416
  msgstr ""
417
 
418
- #: includes/admin/libs/class-nivo-core-admin-edit.php:509
 
419
  msgid "Select the custom post type you want to use for post thumbnails"
420
  msgstr ""
421
 
422
- #: includes/admin/libs/class-nivo-core-admin-edit.php:723
 
 
423
  #: includes/admin/libs/class-nivo-core-admin-images.php:142
424
  msgid "Title"
425
  msgstr ""
426
 
427
- #: includes/admin/libs/class-nivo-core-admin-edit.php:724
 
428
  msgid "Shortcode"
429
  msgstr ""
430
 
431
- #: includes/admin/libs/class-nivo-core-admin-edit.php:725
 
432
  msgid "Source"
433
  msgstr ""
434
 
435
- #: includes/admin/libs/class-nivo-core-admin-edit.php:726
 
436
  msgid "Type"
437
  msgstr ""
438
 
439
- #: includes/admin/libs/class-nivo-core-admin-edit.php:727
 
440
  msgid "Images"
441
  msgstr ""
442
 
443
- #: includes/admin/libs/class-nivo-core-admin-edit.php:728
 
444
  msgid "Author"
445
  msgstr ""
446
 
447
- #: includes/admin/libs/class-nivo-core-admin-edit.php:729
 
448
  msgid "Date"
449
  msgstr ""
450
 
 
 
451
  #: includes/admin/libs/class-nivo-core-admin-images.php:55
452
  #: includes/admin/libs/class-nivo-core-admin-images.php:56
453
  msgid "Create %1$s"
454
  msgstr ""
455
 
 
 
 
456
  #: includes/admin/libs/class-nivo-core-admin-images.php:57
457
  #: includes/admin/libs/class-nivo-core-admin-images.php:58
458
  #: includes/admin/libs/class-nivo-core-admin-images.php:64
459
  msgid "Add to %1$s"
460
  msgstr ""
461
 
 
462
  #: includes/admin/libs/class-nivo-core-admin-images.php:60
463
  msgid "Save %1$s"
464
  msgstr ""
465
 
 
 
466
  #: includes/admin/libs/class-nivo-core-admin-images.php:61
467
  #: includes/admin/libs/class-nivo-core-admin-images.php:67
468
  msgid "Update %1$s"
469
  msgstr ""
470
 
 
 
471
  #: includes/admin/libs/class-nivo-core-admin-images.php:62
472
  #: includes/admin/libs/class-nivo-core-admin-images.php:90
473
  msgid "Slide Details"
474
  msgstr ""
475
 
 
476
  #: includes/admin/libs/class-nivo-core-admin-images.php:66
477
  msgid "Add from "
478
  msgstr ""
479
 
 
480
  #: includes/admin/libs/class-nivo-core-admin-images.php:93
481
  msgid "Saved."
482
  msgstr ""
483
 
 
 
484
  #: includes/admin/libs/class-nivo-core-admin-images.php:111
485
  #: includes/admin/libs/class-nivo-core-admin-images.php:137
486
  msgid "Caption"
487
  msgstr ""
488
 
 
 
489
  #: includes/admin/libs/class-nivo-core-admin-images.php:116
490
  #: includes/admin/libs/class-nivo-core-admin-images.php:147
491
  msgid "Alt Text"
492
  msgstr ""
493
 
 
494
  #: includes/admin/libs/class-nivo-core-admin-images.php:121
495
  msgid "Link"
496
  msgstr ""
497
 
 
498
  #: includes/admin/libs/class-nivo-core-images.php:45
499
  msgid "File doesn't exist"
500
  msgstr ""
501
 
 
502
  #: includes/admin/libs/class-nivo-core-images.php:420
503
  msgid "Manual"
504
  msgstr ""
505
 
 
506
  #: includes/admin/libs/class-nivo-core-images.php:422
507
  msgid "Gallery"
508
  msgstr ""
509
 
 
510
  #: includes/admin/libs/class-nivo-core-images.php:424
511
  msgid "Sticky Posts"
512
  msgstr ""
513
 
 
 
514
  #: includes/admin/libs/class-nivo-core-model.php:46
515
  #: includes/admin/libs/class-nivo-core-model.php:49
516
  msgid "%1$s updated."
517
  msgstr ""
518
 
 
519
  #: includes/admin/libs/class-nivo-core-model.php:47
520
  msgid "Custom field updated."
521
  msgstr ""
522
 
 
523
  #: includes/admin/libs/class-nivo-core-model.php:48
524
  msgid "Custom field deleted."
525
  msgstr ""
526
 
 
527
  #: includes/admin/libs/class-nivo-core-model.php:51
528
  msgid "%1$s published."
529
  msgstr ""
530
 
 
531
  #: includes/admin/libs/class-nivo-core-model.php:52
532
  msgid "%1$s saved."
533
  msgstr ""
534
 
 
535
  #: includes/admin/libs/class-nivo-core-model.php:53
536
  msgid "%1$s submitted."
537
  msgstr ""
538
 
 
539
  #: includes/admin/libs/class-nivo-core-model.php:54
540
  msgid ""
541
  "%1$s scheduled for: <strong>%2$s</strong>. <a target=\"_blank\" "
542
  "href=\"%2$s\">Preview %1$s</a>"
543
  msgstr ""
544
 
 
545
  #: includes/admin/libs/class-nivo-core-model.php:55
546
  msgid "%1$s draft updated."
547
  msgstr ""
548
 
 
549
  #: includes/admin/libs/class-nivo-core-model.php:60
550
  msgid "M j, Y @ G:i"
551
  msgstr ""
552
 
 
553
  #: includes/admin/libs/class-nivo-core-model.php:64
554
  msgid "%1$s restored to revision from %2$s"
555
  msgstr ""
556
 
 
557
  #: includes/admin/libs/class-nivo-core-shortcode.php:114
558
  msgid "Invalid %1$s"
559
  msgstr ""
560
 
 
561
  #: includes/admin/libs/class-nivo-core-shortcode.php:122
562
  msgid "Invalid %1$s Slug"
563
  msgstr ""
564
 
 
565
  #: includes/admin/libs/class-nivo-slider-widget.php:33
566
  msgid "Display a Nivo Slider"
567
  msgstr ""
568
 
 
569
  #: includes/admin/libs/class-nivo-slider-widget.php:104
570
  msgid "Title:"
571
  msgstr ""
572
 
 
573
  #: includes/admin/libs/class-nivo-slider-widget.php:119
574
  msgid "Select Slider"
575
  msgstr ""
576
 
577
- #: vendor/codeinwp/themeisle-sdk/class-themeisle-sdk-licenser.php:453
 
578
  msgid ""
579
  "Updating this theme will lose any customizations you have made. Cancel to "
580
  "stop, OK to update."
581
  msgstr ""
582
 
 
 
 
 
 
 
 
 
 
 
 
 
583
  #. Plugin Name of the plugin/theme
584
  msgid "Slider by Nivo - Responsive Image Slider"
585
  msgstr ""
2
  # This file is distributed under the no.
3
  msgid ""
4
  msgstr ""
5
+ "Project-Id-Version: Slider by Nivo - Responsive Image Slider 2.0.3\n"
6
  "Report-Msgid-Bugs-To: https://github.com/Codeinwp/nivo-slider-lite/issues\n"
7
+ "POT-Creation-Date: 2017-06-26 16:44:33+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=utf-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
24
  "X-Poedit-Bookmarks: \n"
25
  "X-Textdomain-Support: yes\n"
26
 
27
+ #: dist/includes/abstract/class-nivo-model-abstract.php:56
28
  msgid "Add New"
29
  msgstr ""
30
 
31
+ #: dist/includes/abstract/class-nivo-model-abstract.php:57
32
  #: includes/abstract/class-nivo-model-abstract.php:57
33
  msgid "Add New %1$s"
34
  msgstr ""
35
 
36
+ #: dist/includes/abstract/class-nivo-model-abstract.php:58
37
+ #: dist/includes/admin/libs/class-nivo-core-admin-images.php:59
38
  #: includes/abstract/class-nivo-model-abstract.php:58
39
  #: includes/admin/libs/class-nivo-core-admin-images.php:59
40
  msgid "Edit %1$s"
41
  msgstr ""
42
 
43
+ #: dist/includes/abstract/class-nivo-model-abstract.php:59
44
  #: includes/abstract/class-nivo-model-abstract.php:59
45
  msgid "New %1$s"
46
  msgstr ""
47
 
48
+ #: dist/includes/abstract/class-nivo-model-abstract.php:60
49
  #: includes/abstract/class-nivo-model-abstract.php:60
50
  msgid "All %2$s"
51
  msgstr ""
52
 
53
+ #: dist/includes/abstract/class-nivo-model-abstract.php:61
54
  #: includes/abstract/class-nivo-model-abstract.php:61
55
  msgid "View %1$s"
56
  msgstr ""
57
 
58
+ #: dist/includes/abstract/class-nivo-model-abstract.php:62
59
  #: includes/abstract/class-nivo-model-abstract.php:62
60
  msgid "Search %2$s"
61
  msgstr ""
62
 
63
+ #: dist/includes/abstract/class-nivo-model-abstract.php:63
64
  #: includes/abstract/class-nivo-model-abstract.php:63
65
  msgid "No %2$s found"
66
  msgstr ""
67
 
68
+ #: dist/includes/abstract/class-nivo-model-abstract.php:64
69
  #: includes/abstract/class-nivo-model-abstract.php:64
70
  msgid "No %2$s found in Trash"
71
  msgstr ""
72
 
73
+ #: dist/includes/admin/class-nivo-slider-admin.php:83
74
+ #: dist/includes/admin/class-nivo-slider-admin.php:206
75
+ #: dist/includes/admin/libs/class-nivo-slider-widget.php:31
76
  #: includes/admin/class-nivo-slider-admin.php:83
77
+ #: includes/admin/class-nivo-slider-admin.php:210
78
  #: includes/admin/libs/class-nivo-slider-widget.php:31
79
  msgid "Nivo Slider"
80
  msgstr ""
81
 
82
+ #: dist/includes/admin/class-nivo-slider-admin.php:84
83
  #: includes/admin/class-nivo-slider-admin.php:84
84
  msgid "Nivo Sliders"
85
  msgstr ""
86
 
87
+ #: dist/includes/admin/class-nivo-slider-admin.php:272
88
+ #: includes/admin/class-nivo-slider-admin.php:309
89
  msgid "Save Changes"
90
  msgstr ""
91
 
92
+ #: dist/includes/admin/class-nivo-slider-admin.php:300
93
+ #: includes/admin/class-nivo-slider-admin.php:337
94
  msgid "Management Roles"
95
  msgstr ""
96
 
97
+ #: dist/includes/admin/class-nivo-slider-admin.php:504
98
+ msgid "Active: "
99
+ msgstr ""
100
+
101
+ #: dist/includes/admin/class-nivo-slider-admin.php:506
102
+ msgid "Deactivate License"
103
+ msgstr ""
104
+
105
+ #: dist/includes/admin/class-nivo-slider-admin.php:511
106
+ msgid "Activate this license key to enable automatic upgrades"
107
+ msgstr ""
108
+
109
+ #: dist/includes/admin/class-nivo-slider-admin.php:514
110
+ msgid "Enter a valid license key to enable automatic upgrades"
111
+ msgstr ""
112
+
113
+ #: dist/includes/admin/class-nivo-slider-admin.php:516
114
+ msgid "Activate License"
115
+ msgstr ""
116
+
117
+ #: dist/includes/admin/class-nivo-slider-admin.php:532
118
+ #: dist/includes/admin/class-nivo-slider-admin.php:556
119
+ #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:281
120
+ #: includes/admin/class-nivo-slider-admin.php:536
121
  #: includes/admin/libs/class-nivo-core-admin-edit.php:281
122
  msgid "Settings"
123
  msgstr ""
124
 
125
+ #: dist/includes/admin/class-nivo-slider-admin.php:655
126
+ #: includes/admin/class-nivo-slider-admin.php:615
127
  msgid ""
128
  "You can automatically build slider from post galleries, categories and "
129
  "sticky posts using the %1$s FULL%2$s version."
130
  msgstr ""
131
 
132
+ #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:68
133
  #: includes/admin/libs/class-nivo-core-admin-edit.php:68
134
  msgid "Enable Captions"
135
  msgstr ""
136
 
137
+ #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:69
138
  #: includes/admin/libs/class-nivo-core-admin-edit.php:69
139
  msgid "Enable automatic captions from post titles"
140
  msgstr ""
141
 
142
+ #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:77
143
  #: includes/admin/libs/class-nivo-core-admin-edit.php:77
144
  msgid "Number of Images"
145
  msgstr ""
146
 
147
+ #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:78
148
  #: includes/admin/libs/class-nivo-core-admin-edit.php:78
149
  msgid ""
150
  "The number of images to use in the slider. Leave blank for all images. "
151
  "External sources default to 20"
152
  msgstr ""
153
 
154
+ #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:87
155
  #: includes/admin/libs/class-nivo-core-admin-edit.php:87
156
  msgid "Slider Sizing"
157
  msgstr ""
158
 
159
+ #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:88
160
  #: includes/admin/libs/class-nivo-core-admin-edit.php:88
161
  msgid "Responsive sliders will fill the width of the container"
162
  msgstr ""
163
 
164
+ #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:90
165
  #: includes/admin/libs/class-nivo-core-admin-edit.php:90
166
  msgid "Responsive"
167
  msgstr ""
168
 
169
+ #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:91
170
  #: includes/admin/libs/class-nivo-core-admin-edit.php:91
171
  msgid "Fixed Size"
172
  msgstr ""
173
 
174
+ #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:98
175
  #: includes/admin/libs/class-nivo-core-admin-edit.php:98
176
  msgid "Image Size"
177
  msgstr ""
178
 
179
+ #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:99
180
  #: includes/admin/libs/class-nivo-core-admin-edit.php:99
181
  msgid "Select the size of image from the WordPress media library"
182
  msgstr ""
183
 
184
+ #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:107
185
  #: includes/admin/libs/class-nivo-core-admin-edit.php:107
186
  msgid "Slider Size"
187
  msgstr ""
188
 
189
+ #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:108
190
  #: includes/admin/libs/class-nivo-core-admin-edit.php:108
191
  msgid "(Size in px) Images will be cropped to these dimensions (eg 400 x 150)"
192
  msgstr ""
193
 
194
+ #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:121
195
  #: includes/admin/libs/class-nivo-core-admin-edit.php:121
196
  msgid "Slider Theme"
197
  msgstr ""
198
 
199
+ #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:122
200
  #: includes/admin/libs/class-nivo-core-admin-edit.php:122
201
  msgid "Use a pre-built theme or provide your own styles."
202
  msgstr ""
203
 
204
+ #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:126
205
  #: includes/admin/libs/class-nivo-core-admin-edit.php:126
206
  msgid "Random"
207
  msgstr ""
208
 
209
+ #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:127
210
  #: includes/admin/libs/class-nivo-core-admin-edit.php:127
211
  msgid "Fade"
212
  msgstr ""
213
 
214
+ #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:128
215
  #: includes/admin/libs/class-nivo-core-admin-edit.php:128
216
  msgid "Fold"
217
  msgstr ""
218
 
219
+ #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:129
220
  #: includes/admin/libs/class-nivo-core-admin-edit.php:129
221
  msgid "Slice Down"
222
  msgstr ""
223
 
224
+ #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:130
225
  #: includes/admin/libs/class-nivo-core-admin-edit.php:130
226
  msgid "Slice Down (Left)"
227
  msgstr ""
228
 
229
+ #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:131
230
  #: includes/admin/libs/class-nivo-core-admin-edit.php:131
231
  msgid "Slice Up"
232
  msgstr ""
233
 
234
+ #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:132
235
  #: includes/admin/libs/class-nivo-core-admin-edit.php:132
236
  msgid "Slice Up (Left)"
237
  msgstr ""
238
 
239
+ #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:133
240
  #: includes/admin/libs/class-nivo-core-admin-edit.php:133
241
  msgid "Slice Up/Down"
242
  msgstr ""
243
 
244
+ #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:134
245
  #: includes/admin/libs/class-nivo-core-admin-edit.php:134
246
  msgid "Slice Up/Down (Left)"
247
  msgstr ""
248
 
249
+ #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:135
250
  #: includes/admin/libs/class-nivo-core-admin-edit.php:135
251
  msgid "Slide In (Right)"
252
  msgstr ""
253
 
254
+ #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:136
255
  #: includes/admin/libs/class-nivo-core-admin-edit.php:136
256
  msgid "Slide In (Left)"
257
  msgstr ""
258
 
259
+ #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:137
260
  #: includes/admin/libs/class-nivo-core-admin-edit.php:137
261
  msgid "Box Random"
262
  msgstr ""
263
 
264
+ #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:138
265
  #: includes/admin/libs/class-nivo-core-admin-edit.php:138
266
  msgid "Box Rain"
267
  msgstr ""
268
 
269
+ #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:139
270
  #: includes/admin/libs/class-nivo-core-admin-edit.php:139
271
  msgid "Box Rain (Reverse)"
272
  msgstr ""
273
 
274
+ #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:140
275
  #: includes/admin/libs/class-nivo-core-admin-edit.php:140
276
  msgid "Box Rain Grow"
277
  msgstr ""
278
 
279
+ #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:141
280
  #: includes/admin/libs/class-nivo-core-admin-edit.php:141
281
  msgid "Box Rain Grow (Reverse)"
282
  msgstr ""
283
 
284
+ #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:147
285
  #: includes/admin/libs/class-nivo-core-admin-edit.php:147
286
  msgid "Transition Effect"
287
  msgstr ""
288
 
289
+ #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:154
290
  #: includes/admin/libs/class-nivo-core-admin-edit.php:154
291
  msgid "Slices"
292
  msgstr ""
293
 
294
+ #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:155
295
  #: includes/admin/libs/class-nivo-core-admin-edit.php:155
296
  msgid "The number of slices to use in the \"Slice\" transitions (eg 15)"
297
  msgstr ""
298
 
299
+ #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:161
300
  #: includes/admin/libs/class-nivo-core-admin-edit.php:161
301
  msgid "Box (Cols x Rows)"
302
  msgstr ""
303
 
304
+ #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:162
305
  #: includes/admin/libs/class-nivo-core-admin-edit.php:162
306
  msgid "The number of columns and rows to use in the \"Box\" transitions (eg 8 x 4)"
307
  msgstr ""
308
 
309
+ #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:169
310
  #: includes/admin/libs/class-nivo-core-admin-edit.php:169
311
  msgid "Animation Speed"
312
  msgstr ""
313
 
314
+ #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:170
315
  #: includes/admin/libs/class-nivo-core-admin-edit.php:170
316
  msgid "The speed of the transition animation in milliseconds (eg 500)"
317
  msgstr ""
318
 
319
+ #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:176
320
  #: includes/admin/libs/class-nivo-core-admin-edit.php:176
321
  msgid "Enable Thumbnail Navigation"
322
  msgstr ""
323
 
324
+ #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:183
325
  #: includes/admin/libs/class-nivo-core-admin-edit.php:183
326
  msgid "Thumbnail Size"
327
  msgstr ""
328
 
329
+ #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:184
330
  #: includes/admin/libs/class-nivo-core-admin-edit.php:184
331
  msgid "The width and height of the thumbnails"
332
  msgstr ""
333
 
334
+ #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:192
335
  #: includes/admin/libs/class-nivo-core-admin-edit.php:192
336
  msgid "Pause Time"
337
  msgstr ""
338
 
339
+ #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:193
340
  #: includes/admin/libs/class-nivo-core-admin-edit.php:193
341
  msgid "The amount of time to show each slide in milliseconds (eg 3000)"
342
  msgstr ""
343
 
344
+ #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:199
345
  #: includes/admin/libs/class-nivo-core-admin-edit.php:199
346
  msgid "Start Slide"
347
  msgstr ""
348
 
349
+ #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:200
350
  #: includes/admin/libs/class-nivo-core-admin-edit.php:200
351
  msgid "Set which slide the slider starts from (zero based index: usually 0)"
352
  msgstr ""
353
 
354
+ #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:206
355
  #: includes/admin/libs/class-nivo-core-admin-edit.php:206
356
  msgid "Enable Direction Navigation"
357
  msgstr ""
358
 
359
+ #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:207
360
  #: includes/admin/libs/class-nivo-core-admin-edit.php:207
361
  msgid "Prev &amp; Next arrows"
362
  msgstr ""
363
 
364
+ #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:213
365
  #: includes/admin/libs/class-nivo-core-admin-edit.php:213
366
  msgid "Enable Control Navigation"
367
  msgstr ""
368
 
369
+ #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:214
370
  #: includes/admin/libs/class-nivo-core-admin-edit.php:214
371
  msgid "eg 1,2,3..."
372
  msgstr ""
373
 
374
+ #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:220
375
  #: includes/admin/libs/class-nivo-core-admin-edit.php:220
376
  msgid "Enable Images Links"
377
  msgstr ""
378
 
379
+ #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:221
380
  #: includes/admin/libs/class-nivo-core-admin-edit.php:221
381
  msgid ""
382
  "If a link has been added to an image when configuring, the image links to "
383
  "the url."
384
  msgstr ""
385
 
386
+ #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:227
387
  #: includes/admin/libs/class-nivo-core-admin-edit.php:227
388
  msgid "Open Links in New Window"
389
  msgstr ""
390
 
391
+ #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:228
392
  #: includes/admin/libs/class-nivo-core-admin-edit.php:228
393
  msgid "Open the links in a new window."
394
  msgstr ""
395
 
396
+ #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:236
397
  #: includes/admin/libs/class-nivo-core-admin-edit.php:236
398
  msgid "Pause the Slider on Hover"
399
  msgstr ""
400
 
401
+ #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:242
402
  #: includes/admin/libs/class-nivo-core-admin-edit.php:242
403
  msgid "Manual Transitions"
404
  msgstr ""
405
 
406
+ #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:243
407
  #: includes/admin/libs/class-nivo-core-admin-edit.php:243
408
  msgid "Slider is always paused"
409
  msgstr ""
410
 
411
+ #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:249
412
  #: includes/admin/libs/class-nivo-core-admin-edit.php:249
413
  msgid "Random Start Slide"
414
  msgstr ""
415
 
416
+ #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:250
417
  #: includes/admin/libs/class-nivo-core-admin-edit.php:250
418
  msgid "Overrides Start Slide value"
419
  msgstr ""
420
 
421
+ #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:275
422
  #: includes/admin/libs/class-nivo-core-admin-edit.php:275
423
  msgid "%1$s Images"
424
  msgstr ""
425
 
426
+ #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:287
427
  #: includes/admin/libs/class-nivo-core-admin-edit.php:287
428
  msgid "Using this %1$s"
429
  msgstr ""
430
 
431
+ #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:294
432
  #: includes/admin/libs/class-nivo-core-admin-edit.php:294
433
  msgid "Full Version"
434
  msgstr ""
435
 
436
+ #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:300
437
  #: includes/admin/libs/class-nivo-core-admin-edit.php:300
438
  msgid "Contribute to Nivo"
439
  msgstr ""
440
 
441
+ #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:317
442
  #: includes/admin/libs/class-nivo-core-admin-edit.php:317
443
  msgid "To use this %1$s in your posts or pages use the following shortcode:"
444
  msgstr ""
445
 
446
+ #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:323
447
  #: includes/admin/libs/class-nivo-core-admin-edit.php:323
448
  msgid "To use this %1$s in a theme template file use the following code:"
449
  msgstr ""
450
 
451
+ #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:340
452
  #: includes/admin/libs/class-nivo-core-admin-edit.php:340
453
  msgid " Extend Nivo Slider "
454
  msgstr ""
455
 
456
+ #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:342
457
  #: includes/admin/libs/class-nivo-core-admin-edit.php:342
458
  msgid "More slider types"
459
  msgstr ""
460
 
461
+ #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:343
462
  #: includes/admin/libs/class-nivo-core-admin-edit.php:343
463
  msgid "Build carousels"
464
  msgstr ""
465
 
466
+ #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:344
467
  #: includes/admin/libs/class-nivo-core-admin-edit.php:344
468
  msgid "Create lightboxes"
469
  msgstr ""
470
 
471
+ #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:345
472
  #: includes/admin/libs/class-nivo-core-admin-edit.php:345
473
  msgid "Automatic updates"
474
  msgstr ""
475
 
476
+ #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:346
477
  #: includes/admin/libs/class-nivo-core-admin-edit.php:346
478
  msgid "Priority support"
479
  msgstr ""
480
 
481
+ #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:364
482
  #: includes/admin/libs/class-nivo-core-admin-edit.php:364
483
  msgid "Enable Tracking"
484
  msgstr ""
485
 
486
+ #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:366
487
  #: includes/admin/libs/class-nivo-core-admin-edit.php:366
488
  msgid ""
489
  "Allow Nivo to anonymously track how this plugin is used and help us make "
491
  "\t\t\t\t\tplugin better. No sensitive data is tracked."
492
  msgstr ""
493
 
494
+ #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:405
495
+ #: includes/admin/libs/class-nivo-core-admin-edit.php:406
496
  msgid " %1$s Type"
497
  msgstr ""
498
 
499
+ #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:425
500
+ #: includes/admin/libs/class-nivo-core-admin-edit.php:426
501
  msgid "No Sources"
502
  msgstr ""
503
 
504
+ #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:430
505
+ #: includes/admin/libs/class-nivo-core-admin-edit.php:431
506
  msgid "Choose to manually upload images or use images from the media library . "
507
  msgstr ""
508
 
509
+ #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:436
510
+ #: includes/admin/libs/class-nivo-core-admin-edit.php:437
511
  msgid "Gallery Location"
512
  msgstr ""
513
 
514
+ #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:466
515
+ #: includes/admin/libs/class-nivo-core-admin-edit.php:467
516
  msgid "Select the post gallery you want to use"
517
  msgstr ""
518
 
519
+ #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:470
520
+ #: dist/includes/admin/libs/class-nivo-core-images.php:424
521
+ #: includes/admin/libs/class-nivo-core-admin-edit.php:471
522
  #: includes/admin/libs/class-nivo-core-images.php:423
523
  msgid "Category"
524
  msgstr ""
525
 
526
+ #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:486
527
+ #: includes/admin/libs/class-nivo-core-admin-edit.php:487
528
  msgid "Select the category you want to use for post thumbnails"
529
  msgstr ""
530
 
531
+ #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:490
532
+ #: dist/includes/admin/libs/class-nivo-core-images.php:426
533
+ #: includes/admin/libs/class-nivo-core-admin-edit.php:491
534
  #: includes/admin/libs/class-nivo-core-images.php:425
535
  msgid "Custom Post Type"
536
  msgstr ""
537
 
538
+ #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:509
539
+ #: includes/admin/libs/class-nivo-core-admin-edit.php:510
540
  msgid "Select the custom post type you want to use for post thumbnails"
541
  msgstr ""
542
 
543
+ #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:723
544
+ #: dist/includes/admin/libs/class-nivo-core-admin-images.php:142
545
+ #: includes/admin/libs/class-nivo-core-admin-edit.php:724
546
  #: includes/admin/libs/class-nivo-core-admin-images.php:142
547
  msgid "Title"
548
  msgstr ""
549
 
550
+ #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:724
551
+ #: includes/admin/libs/class-nivo-core-admin-edit.php:725
552
  msgid "Shortcode"
553
  msgstr ""
554
 
555
+ #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:725
556
+ #: includes/admin/libs/class-nivo-core-admin-edit.php:726
557
  msgid "Source"
558
  msgstr ""
559
 
560
+ #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:726
561
+ #: includes/admin/libs/class-nivo-core-admin-edit.php:727
562
  msgid "Type"
563
  msgstr ""
564
 
565
+ #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:727
566
+ #: includes/admin/libs/class-nivo-core-admin-edit.php:728
567
  msgid "Images"
568
  msgstr ""
569
 
570
+ #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:728
571
+ #: includes/admin/libs/class-nivo-core-admin-edit.php:729
572
  msgid "Author"
573
  msgstr ""
574
 
575
+ #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:729
576
+ #: includes/admin/libs/class-nivo-core-admin-edit.php:730
577
  msgid "Date"
578
  msgstr ""
579
 
580
+ #: dist/includes/admin/libs/class-nivo-core-admin-images.php:55
581
+ #: dist/includes/admin/libs/class-nivo-core-admin-images.php:56
582
  #: includes/admin/libs/class-nivo-core-admin-images.php:55
583
  #: includes/admin/libs/class-nivo-core-admin-images.php:56
584
  msgid "Create %1$s"
585
  msgstr ""
586
 
587
+ #: dist/includes/admin/libs/class-nivo-core-admin-images.php:57
588
+ #: dist/includes/admin/libs/class-nivo-core-admin-images.php:58
589
+ #: dist/includes/admin/libs/class-nivo-core-admin-images.php:64
590
  #: includes/admin/libs/class-nivo-core-admin-images.php:57
591
  #: includes/admin/libs/class-nivo-core-admin-images.php:58
592
  #: includes/admin/libs/class-nivo-core-admin-images.php:64
593
  msgid "Add to %1$s"
594
  msgstr ""
595
 
596
+ #: dist/includes/admin/libs/class-nivo-core-admin-images.php:60
597
  #: includes/admin/libs/class-nivo-core-admin-images.php:60
598
  msgid "Save %1$s"
599
  msgstr ""
600
 
601
+ #: dist/includes/admin/libs/class-nivo-core-admin-images.php:61
602
+ #: dist/includes/admin/libs/class-nivo-core-admin-images.php:67
603
  #: includes/admin/libs/class-nivo-core-admin-images.php:61
604
  #: includes/admin/libs/class-nivo-core-admin-images.php:67
605
  msgid "Update %1$s"
606
  msgstr ""
607
 
608
+ #: dist/includes/admin/libs/class-nivo-core-admin-images.php:62
609
+ #: dist/includes/admin/libs/class-nivo-core-admin-images.php:90
610
  #: includes/admin/libs/class-nivo-core-admin-images.php:62
611
  #: includes/admin/libs/class-nivo-core-admin-images.php:90
612
  msgid "Slide Details"
613
  msgstr ""
614
 
615
+ #: dist/includes/admin/libs/class-nivo-core-admin-images.php:66
616
  #: includes/admin/libs/class-nivo-core-admin-images.php:66
617
  msgid "Add from "
618
  msgstr ""
619
 
620
+ #: dist/includes/admin/libs/class-nivo-core-admin-images.php:93
621
  #: includes/admin/libs/class-nivo-core-admin-images.php:93
622
  msgid "Saved."
623
  msgstr ""
624
 
625
+ #: dist/includes/admin/libs/class-nivo-core-admin-images.php:111
626
+ #: dist/includes/admin/libs/class-nivo-core-admin-images.php:137
627
  #: includes/admin/libs/class-nivo-core-admin-images.php:111
628
  #: includes/admin/libs/class-nivo-core-admin-images.php:137
629
  msgid "Caption"
630
  msgstr ""
631
 
632
+ #: dist/includes/admin/libs/class-nivo-core-admin-images.php:116
633
+ #: dist/includes/admin/libs/class-nivo-core-admin-images.php:147
634
  #: includes/admin/libs/class-nivo-core-admin-images.php:116
635
  #: includes/admin/libs/class-nivo-core-admin-images.php:147
636
  msgid "Alt Text"
637
  msgstr ""
638
 
639
+ #: dist/includes/admin/libs/class-nivo-core-admin-images.php:121
640
  #: includes/admin/libs/class-nivo-core-admin-images.php:121
641
  msgid "Link"
642
  msgstr ""
643
 
644
+ #: dist/includes/admin/libs/class-nivo-core-images.php:45
645
  #: includes/admin/libs/class-nivo-core-images.php:45
646
  msgid "File doesn't exist"
647
  msgstr ""
648
 
649
+ #: dist/includes/admin/libs/class-nivo-core-images.php:421
650
  #: includes/admin/libs/class-nivo-core-images.php:420
651
  msgid "Manual"
652
  msgstr ""
653
 
654
+ #: dist/includes/admin/libs/class-nivo-core-images.php:423
655
  #: includes/admin/libs/class-nivo-core-images.php:422
656
  msgid "Gallery"
657
  msgstr ""
658
 
659
+ #: dist/includes/admin/libs/class-nivo-core-images.php:425
660
  #: includes/admin/libs/class-nivo-core-images.php:424
661
  msgid "Sticky Posts"
662
  msgstr ""
663
 
664
+ #: dist/includes/admin/libs/class-nivo-core-model.php:46
665
+ #: dist/includes/admin/libs/class-nivo-core-model.php:49
666
  #: includes/admin/libs/class-nivo-core-model.php:46
667
  #: includes/admin/libs/class-nivo-core-model.php:49
668
  msgid "%1$s updated."
669
  msgstr ""
670
 
671
+ #: dist/includes/admin/libs/class-nivo-core-model.php:47
672
  #: includes/admin/libs/class-nivo-core-model.php:47
673
  msgid "Custom field updated."
674
  msgstr ""
675
 
676
+ #: dist/includes/admin/libs/class-nivo-core-model.php:48
677
  #: includes/admin/libs/class-nivo-core-model.php:48
678
  msgid "Custom field deleted."
679
  msgstr ""
680
 
681
+ #: dist/includes/admin/libs/class-nivo-core-model.php:51
682
  #: includes/admin/libs/class-nivo-core-model.php:51
683
  msgid "%1$s published."
684
  msgstr ""
685
 
686
+ #: dist/includes/admin/libs/class-nivo-core-model.php:52
687
  #: includes/admin/libs/class-nivo-core-model.php:52
688
  msgid "%1$s saved."
689
  msgstr ""
690
 
691
+ #: dist/includes/admin/libs/class-nivo-core-model.php:53
692
  #: includes/admin/libs/class-nivo-core-model.php:53
693
  msgid "%1$s submitted."
694
  msgstr ""
695
 
696
+ #: dist/includes/admin/libs/class-nivo-core-model.php:54
697
  #: includes/admin/libs/class-nivo-core-model.php:54
698
  msgid ""
699
  "%1$s scheduled for: <strong>%2$s</strong>. <a target=\"_blank\" "
700
  "href=\"%2$s\">Preview %1$s</a>"
701
  msgstr ""
702
 
703
+ #: dist/includes/admin/libs/class-nivo-core-model.php:55
704
  #: includes/admin/libs/class-nivo-core-model.php:55
705
  msgid "%1$s draft updated."
706
  msgstr ""
707
 
708
+ #: dist/includes/admin/libs/class-nivo-core-model.php:60
709
  #: includes/admin/libs/class-nivo-core-model.php:60
710
  msgid "M j, Y @ G:i"
711
  msgstr ""
712
 
713
+ #: dist/includes/admin/libs/class-nivo-core-model.php:64
714
  #: includes/admin/libs/class-nivo-core-model.php:64
715
  msgid "%1$s restored to revision from %2$s"
716
  msgstr ""
717
 
718
+ #: dist/includes/admin/libs/class-nivo-core-shortcode.php:114
719
  #: includes/admin/libs/class-nivo-core-shortcode.php:114
720
  msgid "Invalid %1$s"
721
  msgstr ""
722
 
723
+ #: dist/includes/admin/libs/class-nivo-core-shortcode.php:122
724
  #: includes/admin/libs/class-nivo-core-shortcode.php:122
725
  msgid "Invalid %1$s Slug"
726
  msgstr ""
727
 
728
+ #: dist/includes/admin/libs/class-nivo-slider-widget.php:33
729
  #: includes/admin/libs/class-nivo-slider-widget.php:33
730
  msgid "Display a Nivo Slider"
731
  msgstr ""
732
 
733
+ #: dist/includes/admin/libs/class-nivo-slider-widget.php:104
734
  #: includes/admin/libs/class-nivo-slider-widget.php:104
735
  msgid "Title:"
736
  msgstr ""
737
 
738
+ #: dist/includes/admin/libs/class-nivo-slider-widget.php:119
739
  #: includes/admin/libs/class-nivo-slider-widget.php:119
740
  msgid "Select Slider"
741
  msgstr ""
742
 
743
+ #: dist/vendor/codeinwp/themeisle-sdk/class-themeisle-sdk-licenser.php:453
744
+ #: vendor/codeinwp/themeisle-sdk/class-themeisle-sdk-licenser.php:476
745
  msgid ""
746
  "Updating this theme will lose any customizations you have made. Cancel to "
747
  "stop, OK to update."
748
  msgstr ""
749
 
750
+ #: includes/abstract/class-nivo-model-abstract.php:56
751
+ msgid "Add new Slider"
752
+ msgstr ""
753
+
754
+ #: includes/admin/class-nivo-slider-admin.php:225
755
+ msgid "More Features"
756
+ msgstr ""
757
+
758
+ #: vendor/codeinwp/themeisle-sdk/class-themeisle-sdk-widget-dashboard-blog.php:197
759
+ msgid "Install"
760
+ msgstr ""
761
+
762
  #. Plugin Name of the plugin/theme
763
  msgid "Slider by Nivo - Responsive Image Slider"
764
  msgstr ""
nivo-slider-lite.php CHANGED
@@ -3,13 +3,14 @@
3
  * Plugin Name: Slider by Nivo - Responsive Image Slider
4
  * Plugin URI: https://themeisle.com/plugins/nivo-slider-lite
5
  * Description: Nivo Slider is The Most Popular And Easiest to Use WordPress Slider Plugin.
6
- * Version: 2.0.4
7
  * Author: ThemeIsle
8
  * Author URI: https://themeisle.com/
9
  * Text Domain: nivo-slider
10
  * Domain Path: languages
11
  * WordPress Available: yes
12
  * Requires License: no
 
13
  **/
14
  // If this file is called directly, abort.
15
  if ( ! defined( 'WPINC' ) ) {
@@ -114,8 +115,12 @@ function run_nivo_slider() {
114
  $vendor_file = NIVO_SLIDER_PLUGIN_DIR . '/vendor/autoload_52.php';
115
  if ( is_readable( $vendor_file ) ) {
116
  require_once $vendor_file;
117
- ThemeIsle_SDK_Loader::init_product( NIVO_SLIDER_PLUGIN_FILE );
118
  }
 
 
 
 
 
119
 
120
  }
121
 
3
  * Plugin Name: Slider by Nivo - Responsive Image Slider
4
  * Plugin URI: https://themeisle.com/plugins/nivo-slider-lite
5
  * Description: Nivo Slider is The Most Popular And Easiest to Use WordPress Slider Plugin.
6
+ * Version: 2.1.0
7
  * Author: ThemeIsle
8
  * Author URI: https://themeisle.com/
9
  * Text Domain: nivo-slider
10
  * Domain Path: languages
11
  * WordPress Available: yes
12
  * Requires License: no
13
+ * Pro Slug: nivo-slider
14
  **/
15
  // If this file is called directly, abort.
16
  if ( ! defined( 'WPINC' ) ) {
115
  $vendor_file = NIVO_SLIDER_PLUGIN_DIR . '/vendor/autoload_52.php';
116
  if ( is_readable( $vendor_file ) ) {
117
  require_once $vendor_file;
 
118
  }
119
+ add_filter( 'themeisle_sdk_products', function ( $products ) {
120
+ $products[] = NIVO_SLIDER_PLUGIN_FILE;
121
+
122
+ return $products;
123
+ } );
124
 
125
  }
126
 
readme.md ADDED
@@ -0,0 +1,106 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Slider by Nivo - Responsive WordPress Image Slider #
2
+ **Contributors:** [themeisle](https://profiles.wordpress.org/themeisle), [codeinwp](https://profiles.wordpress.org/codeinwp), [nivoslider](https://profiles.wordpress.org/nivoslider)
3
+ **Tags:** slider, nivo,slider plugin, slideshow, slideshow plugin, template tag, wordpress gallery, wordpress image slider, wordpress photo gallery
4
+ **Requires at least:** 3.0
5
+ **Tested up to:** 4.9
6
+ **Stable tag:** trunk
7
+ **License:** GPLv3
8
+
9
+ Nivo Slider is The Most Popular And Easiest to Use Responsive WordPress Slider Plugin.
10
+
11
+ ## Description ##
12
+
13
+ The Nivo Slider is the worlds most popular jquery image slider plugin, downloaded over **3,000,000** times since it's inception. This
14
+ is the "Lite" version of the official [Nivo Slider WordPress plugin](https://themeisle.com/plugins/nivo-slider?utm_source=wordpress.org&utm_medium=web&utm_content=description_link&utm_campaign=nivoslider_lite_plugin)
15
+ which comes with email support and more features.
16
+
17
+ The plugin let's you easily create a post slider, an image carousel or a slideshow, right from your dashboard, without settings that you don't need. Can act as a homepage slider as well and it works great with our [WordPress themes](https://themeisle.com/wordpress-themes/free/).
18
+
19
+ Why Choose Nivo Slider?
20
+ Nivo Slider is the best choice for a WordPress slider plugin because it is fast, intuitive and super easy to use. Is not the most feature-rich plugin on the market (like revolution slider or layer slider), but if you need just a responsive content slider that works, check it out!
21
+
22
+ **Get more awesome features by upgrading to the full plugin:**
23
+
24
+ * Create sliders from **Galleries, Categories and Sticky Posts**
25
+ * More custom **themes**
26
+ * Build carousels.
27
+ * Upcoming lightboxes support.
28
+ * Automatic updates.
29
+ * Priority support.
30
+
31
+ **[Click here to purchase the full plugin](https://themeisle.com/plugins/nivo-slider?utm_source=wordpress.org&utm_medium=web&utm_content=purchase_link&utm_campaign=nivoslider_lite_plugin)**
32
+
33
+ = See how Nivo can integrate with your website =
34
+
35
+ * [ Slider with bar using fading transition ](https://demo.themeisle.com/nivo-slider/slider-bar-fade)
36
+ * [ Dark slider with slice transition ](https://demo.themeisle.com/nivo-slider/slider-dark-slice/)
37
+ * [ Light slider with box transition ](https://demo.themeisle.com/nivo-slider/slider-light-box/)
38
+ * [ Slider with thumbnail navigation ](https://demo.themeisle.com/nivo-slider/slider-thumbnail/)
39
+ * [ Slider from category ](https://demo.themeisle.com/nivo-slider/slider-category/)
40
+ * [ Slider from gallery posts ](https://demo.themeisle.com/nivo-slider/slider-gallery/)
41
+ * [ Circular carousel ](https://demo.themeisle.com/nivo-slider/circular-carousel/)
42
+
43
+ ## Installation ##
44
+
45
+ 1. Use WordPress' built-in installer
46
+ 2. Start adding your sliders in the "Nivo Slider" menu that appears
47
+
48
+ ## Frequently Asked Questions ##
49
+
50
+ ### How to use Custom Themes with the Nivo Slider ###
51
+ http://docs.themeisle.com/article/510-using-custom-themes-with-the-nivo-slider
52
+
53
+ ### How to use Nivo Slider template tag ###
54
+ http://docs.themeisle.com/article/509-using-the-nivo-slider-template-tag
55
+
56
+
57
+ ### I'd like access to more features and support. How can I get them? ###
58
+
59
+ You can get access to more features and support by visiting the Themeisle website and
60
+ [purchasing a license](https://themeisle.com/plugins/nivo-slider?utm_source=wordpress.org&utm_medium=web&utm_content=faq_link&utm_campaign=nivoslider_lite_plugin).
61
+ Purchasing a license gets you access to the full version of the Nivo Slider WordPress plugin, automatic updates and support.
62
+
63
+ ## Screenshots ##
64
+
65
+ 1. Slider list screen
66
+ 2. Edit slider screen
67
+ 3. Configuring images
68
+ 4. The final result
69
+
70
+ ## Changelog ##
71
+ ### 2.1.0 - 2017-06-26 ###
72
+
73
+ * Added carousel compatibility
74
+ * Fixed warnings with taxonomy name change.
75
+ * Added upsell page.
76
+
77
+
78
+
79
+ ### 2.0.4 ###
80
+ * Changed required core style loading.
81
+
82
+ ### 2.0.3 ###
83
+ * Improved integration with themes.
84
+
85
+ ### 2.0.2 ###
86
+ * Removed redundant code
87
+ * Added future support for carousels.
88
+
89
+
90
+ ### 2.0.0 ###
91
+ * Added more slider themes.
92
+ * Added responsive option.
93
+ * Added more transition effects.
94
+ * Major code refactor.
95
+
96
+ ### 1.0.3 ###
97
+ * Added themeisle as author
98
+
99
+ ### 1.0.2 ###
100
+ * Fixed fatal error
101
+
102
+ ### 1.0.1 ###
103
+ * Various small bug fixes
104
+
105
+ ### 1.0.0 ###
106
+ * Initial release
readme.txt CHANGED
@@ -1,8 +1,8 @@
1
  === Slider by Nivo - Responsive WordPress Image Slider ===
2
  Contributors: themeisle, codeinwp, nivoslider
3
- Tags: image, slider, nivo,slider plugin, slideshow, slideshow plugin, template tag, wordpress gallery, wordpress image slider, wordpress photo gallery, wordpress picture gallery, wordpress picture slider, wordpress responsive slider, wordpress slider, wordpress slider plugin, wordpress slideshow, wp slider
4
  Requires at least: 3.0
5
- Tested up to: 4.7.4
6
  Stable tag: trunk
7
  License: GPLv3
8
 
@@ -23,7 +23,7 @@ Nivo Slider is the best choice for a WordPress slider plugin because it is fast,
23
 
24
  * Create sliders from **Galleries, Categories and Sticky Posts**
25
  * More custom **themes**
26
- * Upcoming carousels builders support.
27
  * Upcoming lightboxes support.
28
  * Automatic updates.
29
  * Priority support.
@@ -38,6 +38,7 @@ Nivo Slider is the best choice for a WordPress slider plugin because it is fast,
38
  * [ Slider with thumbnail navigation ](https://demo.themeisle.com/nivo-slider/slider-thumbnail/)
39
  * [ Slider from category ](https://demo.themeisle.com/nivo-slider/slider-category/)
40
  * [ Slider from gallery posts ](https://demo.themeisle.com/nivo-slider/slider-gallery/)
 
41
 
42
  == Installation ==
43
 
@@ -67,6 +68,13 @@ Purchasing a license gets you access to the full version of the Nivo Slider Word
67
  4. The final result
68
 
69
  == Changelog ==
 
 
 
 
 
 
 
70
 
71
  = 2.0.4 =
72
  * Changed required core style loading.
1
  === Slider by Nivo - Responsive WordPress Image Slider ===
2
  Contributors: themeisle, codeinwp, nivoslider
3
+ Tags: slider, nivo,slider plugin, slideshow, slideshow plugin, template tag, wordpress gallery, wordpress image slider, wordpress photo gallery
4
  Requires at least: 3.0
5
+ Tested up to: 4.9
6
  Stable tag: trunk
7
  License: GPLv3
8
 
23
 
24
  * Create sliders from **Galleries, Categories and Sticky Posts**
25
  * More custom **themes**
26
+ * Build carousels.
27
  * Upcoming lightboxes support.
28
  * Automatic updates.
29
  * Priority support.
38
  * [ Slider with thumbnail navigation ](https://demo.themeisle.com/nivo-slider/slider-thumbnail/)
39
  * [ Slider from category ](https://demo.themeisle.com/nivo-slider/slider-category/)
40
  * [ Slider from gallery posts ](https://demo.themeisle.com/nivo-slider/slider-gallery/)
41
+ * [ Circular carousel ](https://demo.themeisle.com/nivo-slider/circular-carousel/)
42
 
43
  == Installation ==
44
 
68
  4. The final result
69
 
70
  == Changelog ==
71
+ = 2.1.0 - 2017-06-26 =
72
+
73
+ * Added carousel compatibility
74
+ * Fixed warnings with taxonomy name change.
75
+ * Added upsell page.
76
+
77
+
78
 
79
  = 2.0.4 =
80
  * Changed required core style loading.
vendor/autoload.php CHANGED
@@ -4,4 +4,4 @@
4
 
5
  require_once __DIR__ . '/composer' . '/autoload_real.php';
6
 
7
- return ComposerAutoloaderInitd9bb93e455577b6aba3346f179c8a570::getLoader();
4
 
5
  require_once __DIR__ . '/composer' . '/autoload_real.php';
6
 
7
+ return ComposerAutoloaderInit10fe3fd2e8ddae0802151df1d2b0e7cf::getLoader();
vendor/autoload_52.php CHANGED
@@ -4,4 +4,4 @@
4
 
5
  require_once dirname(__FILE__) . '/composer'.'/autoload_real_52.php';
6
 
7
- return ComposerAutoloaderInita068fc18cd43301bd6e505f325f8155c::getLoader();
4
 
5
  require_once dirname(__FILE__) . '/composer'.'/autoload_real_52.php';
6
 
7
+ return ComposerAutoloaderInit0fc127e51dc28fab98c5e4f3a39d42f1::getLoader();
vendor/codeinwp/themeisle-sdk/README.md DELETED
@@ -1,2 +0,0 @@
1
- # themeisle-sdk
2
- ThemeIsle SDK library
 
 
vendor/codeinwp/themeisle-sdk/class-themeisle-sdk-feedback-deactivate.php ADDED
@@ -0,0 +1,470 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * The deactivate feedback model class for ThemeIsle SDK
4
+ *
5
+ * @package ThemeIsleSDK
6
+ * @subpackage Feedback
7
+ * @copyright Copyright (c) 2017, Marius Cristea
8
+ * @license http://opensource.org/licenses/gpl-3.0.php GNU Public License
9
+ * @since 1.0.0
10
+ */
11
+ // Exit if accessed directly.
12
+ if ( ! defined( 'ABSPATH' ) ) {
13
+ exit;
14
+ }
15
+ if ( ! class_exists( 'ThemeIsle_SDK_Feedback_Deactivate' ) ) :
16
+ /**
17
+ * Deactivate feedback model for ThemeIsle SDK.
18
+ */
19
+ class ThemeIsle_SDK_Feedback_Deactivate extends ThemeIsle_SDK_Feedback {
20
+
21
+ /**
22
+ * @var array $options_plugin The main options list for plugins.
23
+ */
24
+ private $options_plugin = array(
25
+ 'I only needed the plugin for a short period' => array(
26
+ 'id' => 1,
27
+ ),
28
+ 'The plugin broke my site' => array(
29
+ 'id' => 2,
30
+ ),
31
+ 'I found a better plugin' => array(
32
+ 'id' => 3,
33
+ 'type' => 'text',
34
+ 'placeholder' => 'What\'s the plugin\'s name?',
35
+ ),
36
+ 'The plugin suddenly stopped working' => array(
37
+ 'id' => 4,
38
+ ),
39
+ 'I no longer need the plugin' => array(
40
+ 'id' => 5,
41
+ 'type' => 'textarea',
42
+ 'placeholder' => 'If you could improve one thing about our product, what would it be?',
43
+ ),
44
+ 'It\'s a temporary deactivation. I\'m just debugging an issue.' => array(
45
+ 'id' => 6,
46
+ ),
47
+ );
48
+
49
+ /**
50
+ * @var array $options_theme The main options list for themes.
51
+ */
52
+ private $options_theme = array(
53
+ 'I don\'t know how to make it look like demo' => array(
54
+ 'id' => 7,
55
+ ),
56
+ 'It lacks options' => array(
57
+ 'id' => 8,
58
+ ),
59
+ 'Is not working with a plugin that I need' => array(
60
+ 'id' => 9,
61
+ 'type' => 'text',
62
+ 'placeholder' => 'What is the name of the plugin',
63
+ ),
64
+ 'I want to try a new design, I don\'t like {theme} style' => array(
65
+ 'id' => 10,
66
+ ),
67
+ );
68
+
69
+ /**
70
+ * @var array $other The other option
71
+ */
72
+ private $other = array(
73
+ 'Other' => array(
74
+ 'id' => 999,
75
+ 'type' => 'textarea',
76
+ 'placeholder' => 'cmon cmon tell us',
77
+ ),
78
+ );
79
+
80
+ /**
81
+ * @var string $heading_plugin The heading of the modal
82
+ */
83
+ private $heading_plugin = 'If you have a moment, please let us know why you are deactivating:';
84
+
85
+ /**
86
+ * @var string $heading_theme The heading of the modal
87
+ */
88
+ private $heading_theme = 'Looking to change {theme}, what doesn\'t work for you?';
89
+
90
+ /**
91
+ * @var string $button_submit_before The text of the deactivate button before an option is chosen
92
+ */
93
+ private $button_submit_before = 'Skip &amp; Deactivate';
94
+
95
+ /**
96
+ * @var string $button_submit The text of the deactivate button
97
+ */
98
+ private $button_submit = 'Submit &amp; Deactivate';
99
+
100
+ /**
101
+ * @var string $button_cancel The text of the cancel button
102
+ */
103
+ private $button_cancel = 'Cancel';
104
+
105
+ /**
106
+ * @var int how many seconds before the deactivation window is triggered for themes
107
+ */
108
+ const AUTO_TRIGGER_DEACTIVATE_WINDOW_SECONDS = 3;
109
+
110
+ /**
111
+ * @var int how many days before the deactivation window pops up again for the theme
112
+ */
113
+ const PAUSE_DEACTIVATE_WINDOW_DAYS = 100;
114
+
115
+ /**
116
+ * ThemeIsle_SDK_Feedback_Deactivate constructor.
117
+ *
118
+ * @param ThemeIsle_SDK_Product $product_object The product object.
119
+ */
120
+ public function __construct( $product_object ) {
121
+ parent::__construct( $product_object );
122
+ }
123
+
124
+ /**
125
+ * Registers the hooks
126
+ */
127
+ public function setup_hooks_child() {
128
+ global $pagenow;
129
+
130
+ if ( ( $this->product->get_type() === 'plugin' && $pagenow === 'plugins.php' ) || ( $this->product->get_type() === 'theme' && $pagenow === 'theme-install.php' ) ) {
131
+ add_action( 'admin_head', array( $this, 'load_resources' ) );
132
+ }
133
+ add_action( 'wp_ajax_' . $this->product->get_key() . __CLASS__, array( $this, 'post_deactivate' ) );
134
+ }
135
+
136
+ /**
137
+ * Loads the additional resources
138
+ */
139
+ function load_resources() {
140
+ add_thickbox();
141
+
142
+ $id = $this->product->get_key() . '_deactivate';
143
+
144
+ $this->add_css( $this->product->get_type(), $this->product->get_key() );
145
+ $this->add_js( $this->product->get_type(), $this->product->get_key(), '#TB_inline?' . apply_filters( $this->product->get_key() . '_feedback_deactivate_attributes', 'width=600&height=550' ) . '&inlineId=' . $id );
146
+
147
+ echo '<div id="' . $id . '" style="display:none;" class="themeisle-deactivate-box">' . $this->get_html( $this->product->get_type(), $this->product->get_key() ) . '</div>';
148
+ }
149
+
150
+ /**
151
+ * Loads the css
152
+ *
153
+ * @param string $type The type of product.
154
+ * @param string $key The product key.
155
+ */
156
+ function add_css( $type, $key ) {
157
+ $suffix = 'theme' === $type ? 'theme-install-php' : 'plugins-php';
158
+ ?>
159
+ <style type="text/css" id="<?php echo $key; ?>ti-deactivate-css">
160
+ input[name="ti-deactivate-option"] ~ div {
161
+ display: none;
162
+ }
163
+
164
+ input[name="ti-deactivate-option"]:checked ~ div {
165
+ display: block;
166
+ }
167
+
168
+ body.<?php echo $suffix; ?> .<?php echo $key; ?>-container #TB_window.thickbox-loading:before {
169
+ background: none !important;
170
+ }
171
+
172
+ body.<?php echo $suffix; ?> .<?php echo $key; ?>-container #TB_title {
173
+ font-size: 21px;
174
+ padding: 20px 0;
175
+ background-color: #f3f3f3;
176
+ }
177
+
178
+ body.<?php echo $suffix; ?> .<?php echo $key; ?>-container div.actions {
179
+ padding: 20px 0;
180
+ background-color: #f3f3f3;
181
+ border-top: 1px solid #dddddd;
182
+ }
183
+
184
+ body.<?php echo $suffix; ?> .<?php echo $key; ?>-container input.button.button-primary {
185
+ margin-right: 20px;
186
+ }
187
+
188
+ body.<?php echo $suffix; ?> .<?php echo $key; ?>-container input.button {
189
+ margin-right: 20px;
190
+ }
191
+
192
+ body.<?php echo $suffix; ?> .<?php echo $key; ?>-container #TB_ajaxWindowTitle {
193
+ text-align: left;
194
+ margin-left: 15px;
195
+ }
196
+
197
+ body.<?php echo $suffix; ?> .<?php echo $key; ?>-container div.revive_network-container {
198
+ background-color: #ffffff;
199
+ }
200
+
201
+ body.<?php echo $suffix; ?> .<?php echo $key; ?>-container ul.ti-list li {
202
+ font-size: 14px;
203
+ }
204
+
205
+ body.<?php echo $suffix; ?> .<?php echo $key; ?>-container ul.ti-list li label {
206
+ margin-left: 10px;
207
+ line-height: 32px;
208
+ font-size: 16px;
209
+ }
210
+
211
+ body.<?php echo $suffix; ?> .<?php echo $key; ?>-container #TB_ajaxContent {
212
+ padding: 10px 20px;
213
+ }
214
+
215
+ body.<?php echo $suffix; ?> .<?php echo $key; ?>-container li div textarea {
216
+ padding: 10px 15px;
217
+ width: 100%;
218
+ }
219
+
220
+ body.<?php echo $suffix; ?> .<?php echo $key; ?>-container ul.ti-list li div {
221
+ margin: 10px 30px;
222
+ }
223
+
224
+ .<?php echo $key; ?>-container #TB_title #TB_ajaxWindowTitle {
225
+ display: block;
226
+ }
227
+
228
+ body.<?php echo $suffix; ?> .<?php echo $key; ?>-container .actions {
229
+
230
+ width: 100%;
231
+ display: block;
232
+ position: absolute;
233
+ left: 0px;
234
+ bottom: 0px;
235
+ text-align: right;
236
+ }
237
+
238
+ body.<?php echo $suffix; ?> .<?php echo $key; ?>-container #TB_title {
239
+
240
+ height: 33px;
241
+ width: 100%;
242
+ text-align: center;
243
+ }
244
+
245
+ .theme-install-php .<?php echo $key; ?>-container #TB_closeWindowButton .tb-close-icon:before {
246
+ font-size: 32px;
247
+ }
248
+
249
+ .<?php echo $key; ?>-container #TB_closeWindowButton .tb-close-icon {
250
+
251
+ color: #eee;
252
+ }
253
+
254
+ .<?php echo $key; ?>-container #TB_closeWindowButton {
255
+ left: auto;
256
+ right: -30px;
257
+ color: #eee;
258
+ }
259
+
260
+ body.<?php echo $suffix; ?> .<?php echo $key; ?>-container {
261
+
262
+ margin: auto !important;
263
+ height: 550px !important;
264
+ top: 0 !important;
265
+ left: 0 !important;
266
+ bottom: 0 !important;
267
+ right: 0 !important;
268
+ }
269
+ </style>
270
+ <?php
271
+ }
272
+
273
+ /**
274
+ * Loads the js
275
+ *
276
+ * @param string $type The type of product.
277
+ * @param string $key The product key.
278
+ * @param string $src The url that will hijack the deactivate button url.
279
+ */
280
+ function add_js( $type, $key, $src ) {
281
+ $heading = 'plugin' === $type ? $this->heading_plugin : str_replace( '{theme}', $this->product->get_name(), $this->heading_theme );
282
+ $heading = apply_filters( $this->product->get_key() . '_feedback_deactivate_heading', $heading );
283
+ ?>
284
+ <script type="text/javascript" id="ti-deactivate-js">
285
+ (function ($) {
286
+ $(document).ready(function () {
287
+ var auto_trigger = false;
288
+ var target_element = 'tr[data-plugin^="<?php echo $this->product->get_slug(); ?>/"] span.deactivate a';
289
+ <?php
290
+ if ( 'theme' === $type ) {
291
+ ?>
292
+ auto_trigger = true;
293
+ if ($('a.ti-auto-anchor').length == 0) {
294
+ $('body').append($('<a class="ti-auto-anchor" href=""></a>'));
295
+ }
296
+ target_element = 'a.ti-auto-anchor';
297
+ <?php
298
+ }
299
+ ?>
300
+
301
+ if (auto_trigger) {
302
+ setTimeout(function () {
303
+ $('a.ti-auto-anchor').trigger('click');
304
+ }, <?php echo self::AUTO_TRIGGER_DEACTIVATE_WINDOW_SECONDS * 1000; ?> );
305
+ }
306
+ $( document ).on( 'thickbox:removed', function() {
307
+ $.ajax({
308
+ url: ajaxurl,
309
+ method: 'post',
310
+ data: {
311
+ 'action' : '<?php echo $key . __CLASS__; ?>',
312
+ 'nonce' : '<?php echo wp_create_nonce( (string) __CLASS__ ); ?>',
313
+ 'type' : '<?php echo $type; ?>',
314
+ 'key' : '<?php echo $key; ?>'
315
+ },
316
+ });
317
+ });
318
+ var href = $(target_element).attr('href');
319
+ $('#<?php echo $key; ?>ti-deactivate-no').on('click', function (e) {
320
+ e.preventDefault();
321
+ e.stopPropagation();
322
+
323
+ $('body').unbind('thickbox:removed');
324
+ tb_remove();
325
+ });
326
+
327
+ $('#<?php echo $key; ?> ul.ti-list label, #<?php echo $key; ?> ul.ti-list input[name="ti-deactivate-option"]').on('click', function (e) {
328
+ $('#<?php echo $key; ?>ti-deactivate-yes').val($('#<?php echo $key; ?>ti-deactivate-yes').attr('data-after-text'));
329
+
330
+ var radio = $(this).prop('tagName') === 'LABEL' ? $(this).parent() : $(this);
331
+ if (radio.parent().find('textarea').length > 0 && radio.parent().find('textarea').val().length === 0) {
332
+ $('#<?php echo $key; ?>ti-deactivate-yes').attr('disabled', 'disabled');
333
+ radio.parent().find('textarea').on('keyup', function (ee) {
334
+ if ($(this).val().length === 0) {
335
+ $('#<?php echo $key; ?>ti-deactivate-yes').attr('disabled', 'disabled');
336
+ } else {
337
+ $('#<?php echo $key; ?>ti-deactivate-yes').removeAttr('disabled');
338
+ }
339
+ });
340
+ } else {
341
+ $('#<?php echo $key; ?>ti-deactivate-yes').removeAttr('disabled');
342
+ }
343
+ });
344
+
345
+ $('#<?php echo $key; ?>ti-deactivate-yes').attr('data-ti-action', href).on('click', function (e) {
346
+ e.preventDefault();
347
+ e.stopPropagation();
348
+ $.ajax({
349
+ url: ajaxurl,
350
+ method: 'post',
351
+ data: {
352
+ 'action' : '<?php echo $key . __CLASS__; ?>',
353
+ 'nonce' : '<?php echo wp_create_nonce( (string) __CLASS__ ); ?>',
354
+ 'id' : $('#<?php echo $key; ?> input[name="ti-deactivate-option"]:checked').parent().attr('ti-option-id'),
355
+ 'msg' : $('#<?php echo $key; ?> input[name="ti-deactivate-option"]:checked').parent().find('textarea').val(),
356
+ 'type' : '<?php echo $type; ?>',
357
+ 'key' : '<?php echo $key; ?>'
358
+ },
359
+ });
360
+ var redirect = $(this).attr('data-ti-action');
361
+ if (redirect != '') {
362
+ location.href = redirect;
363
+ } else {
364
+ $('body').unbind('thickbox:removed');
365
+ tb_remove();
366
+ }
367
+ });
368
+
369
+ $(target_element).attr('name', '<?php echo esc_html( $heading ); ?>').attr('href', '<?php echo $src; ?>').addClass('thickbox');
370
+ var thicbox_timer;
371
+ $(target_element).on('click', function () {
372
+ tiBindThickbox();
373
+ });
374
+
375
+ function tiBindThickbox() {
376
+ var thicbox_timer = setTimeout(function () {
377
+ if ($("#<?php echo esc_html( $key ); ?>").is(":visible")) {
378
+ $("body").trigger('thickbox:iframe:loaded');
379
+ $("#TB_window").addClass("<?php echo $key; ?>-container");
380
+ clearTimeout(thicbox_timer);
381
+ $('body').unbind('thickbox:removed');
382
+ } else {
383
+ tiBindThickbox();
384
+ }
385
+ }, 100);
386
+ }
387
+ });
388
+ })(jQuery);
389
+ </script>
390
+ <?php
391
+ }
392
+
393
+ /**
394
+ * Generates the HTML
395
+ *
396
+ * @param string $type The type of product.
397
+ * @param string $key The product key.
398
+ */
399
+ function get_html( $type, $key ) {
400
+ $options = 'plugin' === $type ? $this->options_plugin : $this->options_theme;
401
+ $button_submit_before = 'plugin' === $type ? $this->button_submit_before : 'Submit';
402
+ $button_submit = 'plugin' === $type ? $this->button_submit : 'Submit';
403
+ $options = $this->randomize_options( apply_filters( $this->product->get_key() . '_feedback_deactivate_options', $options ) );
404
+ $button_submit_before = apply_filters( $this->product->get_key() . '_feedback_deactivate_button_submit_before', $button_submit_before );
405
+ $button_submit = apply_filters( $this->product->get_key() . '_feedback_deactivate_button_submit', $button_submit );
406
+ $button_cancel = apply_filters( $this->product->get_key() . '_feedback_deactivate_button_cancel', $this->button_cancel );
407
+
408
+ $options += $this->other;
409
+
410
+ $list = '';
411
+ foreach ( $options as $title => $attributes ) {
412
+ $id = $attributes['id'];
413
+ $list .= '<li ti-option-id="' . $id . '"><input type="radio" name="ti-deactivate-option" id="' . $key . $id . '"><label for="' . $key . $id . '">' . str_replace( '{theme}', $this->product->get_name(), $title ) . '</label>';
414
+ if ( array_key_exists( 'type', $attributes ) ) {
415
+ $list .= '<div>';
416
+ $placeholder = array_key_exists( 'placeholder', $attributes ) ? $attributes['placeholder'] : '';
417
+ switch ( $attributes['type'] ) {
418
+ case 'text':
419
+ $list .= '<textarea style="width: 100%" rows="1" name="comments" placeholder="' . $placeholder . '"></textarea>';
420
+ break;
421
+ case 'textarea':
422
+ $list .= '<textarea style="width: 100%" rows="2" name="comments" placeholder="' . $placeholder . '"></textarea>';
423
+ break;
424
+ }
425
+ $list .= '</div>';
426
+ }
427
+ $list .= '</li>';
428
+ }
429
+
430
+ return '<div id="' . $this->product->get_key() . '">'
431
+ . '<ul class="ti-list">' . $list . '</ul>'
432
+ . '<div class="actions">'
433
+ . get_submit_button(
434
+ $button_submit_before , 'secondary', $this->product->get_key() . 'ti-deactivate-yes', false, array(
435
+ 'data-after-text' => $button_submit,
436
+ )
437
+ )
438
+ . get_submit_button( $button_cancel, 'primary', $this->product->get_key() . 'ti-deactivate-no', false )
439
+ . '</div></div>';
440
+ }
441
+
442
+ /**
443
+ * Called when the deactivate button is clicked
444
+ */
445
+ function post_deactivate() {
446
+ check_ajax_referer( (string) __CLASS__, 'nonce' );
447
+
448
+ if ( ! empty( $_POST['id'] ) ) {
449
+ $this->call_api(
450
+ array(
451
+ 'type' => 'deactivate',
452
+ 'id' => $_POST['id'],
453
+ 'comment' => isset( $_POST['msg'] ) ? $_POST['msg'] : '',
454
+ )
455
+ );
456
+ }
457
+
458
+ $this->post_deactivate_or_cancel();
459
+ }
460
+
461
+ /**
462
+ * Called when the deactivate/cancel button is clicked
463
+ */
464
+ private function post_deactivate_or_cancel() {
465
+ if ( isset( $_POST['type'] ) && isset( $_POST['key'] ) && 'theme' === $_POST['type'] ) {
466
+ set_transient( 'ti_sdk_pause_' . $_POST['key'], true, PAUSE_DEACTIVATE_WINDOW_DAYS * DAY_IN_SECONDS );
467
+ }
468
+ }
469
+ }
470
+ endif;
vendor/codeinwp/themeisle-sdk/class-themeisle-sdk-feedback-factory.php ADDED
@@ -0,0 +1,50 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * The feedback factory class for ThemeIsle SDK
4
+ *
5
+ * @package ThemeIsleSDK
6
+ * @subpackage Feedback
7
+ * @copyright Copyright (c) 2017, Marius Cristea
8
+ * @license http://opensource.org/licenses/gpl-3.0.php GNU Public License
9
+ * @since 1.0.0
10
+ */
11
+ // Exit if accessed directly.
12
+ if ( ! defined( 'ABSPATH' ) ) {
13
+ exit;
14
+ }
15
+ if ( ! class_exists( 'ThemeIsle_SDK_Feedback_Factory' ) ) :
16
+ /**
17
+ * Feedback model for ThemeIsle SDK.
18
+ */
19
+ class ThemeIsle_SDK_Feedback_Factory {
20
+
21
+ /**
22
+ * @var array $instances collection of the instances that are registered with the factory
23
+ */
24
+ private $_instances = array();
25
+
26
+ /**
27
+ * ThemeIsle_SDK_Feedback_Factory constructor.
28
+ *
29
+ * @param ThemeIsle_SDK_Product $product_object Product Object.
30
+ * @param array $feedback_types the feedback types.
31
+ */
32
+ public function __construct( $product_object, $feedback_types ) {
33
+ if ( $product_object instanceof ThemeIsle_SDK_Product && $feedback_types && is_array( $feedback_types ) ) {
34
+ foreach ( $feedback_types as $type ) {
35
+ $class = 'ThemeIsle_SDK_Feedback_' . ucwords( $type );
36
+ $instance = new $class( $product_object );
37
+ $this->_instances[ $type ] = $instance;
38
+ $instance->setup_hooks();
39
+ }
40
+ }
41
+ }
42
+
43
+ /**
44
+ * Get the registered instances
45
+ */
46
+ public function get_instances() {
47
+ return $this->_instances;
48
+ }
49
+ }
50
+ endif;
vendor/codeinwp/themeisle-sdk/class-themeisle-sdk-feedback-review.php ADDED
@@ -0,0 +1,185 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * The review feedback model class for ThemeIsle SDK
4
+ *
5
+ * @package ThemeIsleSDK
6
+ * @subpackage Feedback
7
+ * @copyright Copyright (c) 2017, Marius Cristea
8
+ * @license http://opensource.org/licenses/gpl-3.0.php GNU Public License
9
+ * @since 1.0.0
10
+ */
11
+ // Exit if accessed directly.
12
+ if ( ! defined( 'ABSPATH' ) ) {
13
+ exit;
14
+ }
15
+ if ( ! class_exists( 'ThemeIsle_SDK_Feedback_Review' ) ) :
16
+ /**
17
+ * Deactivate feedback model for ThemeIsle SDK.
18
+ */
19
+ class ThemeIsle_SDK_Feedback_Review extends ThemeIsle_SDK_Feedback {
20
+
21
+ /**
22
+ * @var string $heading The heading of the modal
23
+ */
24
+ private $heading = 'Hey, it’s great to see you have {product} active for a few days now. How is everything going? If you can spare a few moments to rate it on WordPress.org it would help us a lot (and boost my motivation). Cheers! <br/> <br/>~ {developer}, developer of {product}';
25
+
26
+ /**
27
+ * @var string $button_cancel The text of the cancel button
28
+ */
29
+ private $button_cancel = 'No, thanks.';
30
+ /**
31
+ * @var array Developers who work for each type of product for review purpose.
32
+ */
33
+ private $developers = array(
34
+ 'plugin' => array( 'Marius', 'Bogdan' ),
35
+ 'theme' => array( 'Rodica', 'Andrei', 'Bogdan', 'Cristi' ),
36
+ );
37
+ /**
38
+ * @var string $button_already The text of the already did it button
39
+ */
40
+ private $button_do = 'Ok, I will gladly help.';
41
+
42
+ /**
43
+ * ThemeIsle_SDK_Feedback_Deactivate constructor.
44
+ *
45
+ * @param ThemeIsle_SDK_Product $product_object The product object.
46
+ */
47
+ public function __construct( $product_object ) {
48
+ parent::__construct( $product_object );
49
+ }
50
+
51
+ /**
52
+ * Registers the hooks
53
+ */
54
+ public function setup_hooks_child() {
55
+ add_action( 'wp_ajax_' . $this->product->get_key() . __CLASS__, array( $this, 'dismiss' ) );
56
+ }
57
+
58
+ /**
59
+ * Shows the notification
60
+ */
61
+ function show_notification() {
62
+ if ( ! $this->product->is_wordpress_available() ) {
63
+ $this->disable();
64
+
65
+ return false;
66
+ }
67
+ $show = get_option( $this->product->get_key() . '_review_flag', 'yes' );
68
+ if ( 'no' === $show ) {
69
+ return false;
70
+ }
71
+ add_action( 'admin_notices', array( $this, 'admin_notices' ) );
72
+
73
+ return true;
74
+ }
75
+
76
+ /**
77
+ * Shows the admin notice
78
+ */
79
+ function admin_notices() {
80
+ $id = $this->product->get_key() . '_review';
81
+
82
+ $this->add_css( $this->product->get_key() );
83
+ $this->add_js( $this->product->get_key() );
84
+
85
+ echo '<div class="notice notice-success is-dismissible" id="' . $id . '" ><div class="themeisle-review-box">' . $this->get_html( $this->product->get_key() ) . '</div></div>';
86
+ }
87
+
88
+ /**
89
+ * Loads the css
90
+ *
91
+ * @param string $key The product key.
92
+ */
93
+ function add_css( $key ) {
94
+ ?>
95
+ <style type="text/css" id="<?php echo $key; ?>ti-review-css">
96
+ #<?php echo $key; ?>-review-notification {
97
+ padding-bottom: 5px;
98
+ }
99
+
100
+ #<?php echo $key; ?>-review-notification .review-dismiss {
101
+ margin-left: 5px;
102
+ }
103
+ </style>
104
+ <?php
105
+ }
106
+
107
+ /**
108
+ * Loads the js
109
+ *
110
+ * @param string $key The product key.
111
+ */
112
+ function add_js( $key ) {
113
+ ?>
114
+ <script type="text/javascript" id="<?php echo $key; ?>ti-review-js">
115
+ (function ($) {
116
+ $(document).ready(function () {
117
+ $('#<?php echo $key; ?>_review').on('click', '.notice-dismiss, .review-dismiss', function (e) {
118
+
119
+ $.ajax({
120
+ url: ajaxurl,
121
+ method: "post",
122
+ data: {
123
+ 'nonce': '<?php echo wp_create_nonce( (string) __CLASS__ ); ?>',
124
+ 'action': '<?php echo $this->product->get_key() . __CLASS__; ?>'
125
+ },
126
+ success: function () {
127
+ $('#<?php echo $key; ?>_review').hide();
128
+ }
129
+ });
130
+ });
131
+ });
132
+ })(jQuery);
133
+ </script>
134
+ <?php
135
+ }
136
+
137
+ /**
138
+ * Generates the HTML
139
+ *
140
+ * @param string $key The product key.
141
+ */
142
+ function get_html( $key ) {
143
+ $link = 'https://wordpress.org/support/' . $this->product->get_type() . '/' . $this->product->get_slug() . '/reviews/#wporg-footer';
144
+ $heading = apply_filters( $this->product->get_key() . '_feedback_review_heading', $this->heading );
145
+ $heading = str_replace(
146
+ array( '{product}' ),
147
+ trim( str_replace( 'Lite', '', $this->product->get_name() ) ), $heading
148
+ );
149
+ $heading = str_replace( '{developer}', $this->developers[ $this->product->get_type() ][ rand( 0, ( count( $this->developers[ $this->product->get_type() ] ) - 1 ) ) ], $heading );
150
+
151
+ $button_cancel = apply_filters( $this->product->get_key() . '_feedback_review_button_cancel', $this->button_cancel );
152
+ $button_do = apply_filters( $this->product->get_key() . '_feedback_review_button_do', $this->button_do );
153
+
154
+ return '<div id="' . $this->product->get_key() . '-review-notification" class="themeisle-sdk-review-box">'
155
+ . '<p>' . $heading . '</p>'
156
+ . '<div class="actions">'
157
+ . '<a href="' . $link . '" target="_blank" class="button button-primary review-dismiss"> ' . $button_do . '</a>'
158
+ . get_submit_button( $button_cancel, 'review-dismiss ' . $this->product->get_key() . '-ti-review', $this->product->get_key() . 'ti-review-no', false )
159
+ . '</div></div>';
160
+ }
161
+
162
+ /**
163
+ * Called when the either button is clicked
164
+ */
165
+ function dismiss() {
166
+ check_ajax_referer( (string) __CLASS__, 'nonce' );
167
+
168
+ $this->disable();
169
+ }
170
+
171
+ /**
172
+ * Disables the notification
173
+ */
174
+ protected function disable() {
175
+ update_option( $this->product->get_key() . '_review_flag', 'no' );
176
+ }
177
+
178
+ /**
179
+ * Enables the notification
180
+ */
181
+ protected function enable() {
182
+ update_option( $this->product->get_key() . '_review_flag', 'yes' );
183
+ }
184
+ }
185
+ endif;
vendor/codeinwp/themeisle-sdk/class-themeisle-sdk-feedback.php ADDED
@@ -0,0 +1,90 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * The feedback model class for ThemeIsle SDK
4
+ *
5
+ * @package ThemeIsleSDK
6
+ * @subpackage Feedback
7
+ * @copyright Copyright (c) 2017, Marius Cristea
8
+ * @license http://opensource.org/licenses/gpl-3.0.php GNU Public License
9
+ * @since 1.0.0
10
+ */
11
+ // Exit if accessed directly.
12
+ if ( ! defined( 'ABSPATH' ) ) {
13
+ exit;
14
+ }
15
+ if ( ! class_exists( 'ThemeIsle_SDK_Feedback' ) ) :
16
+ /**
17
+ * Feedback model for ThemeIsle SDK.
18
+ */
19
+ abstract class ThemeIsle_SDK_Feedback {
20
+ /**
21
+ * @var ThemeIsle_SDK_Product $product Themeisle Product.
22
+ */
23
+ protected $product;
24
+
25
+ /**
26
+ * @var string $feedback_url Url where to send the feedback
27
+ */
28
+ private $feedback_url = 'http://feedback.themeisle.com/wordpress/wp-json/__pirate_feedback_/v1/feedback';
29
+
30
+ /**
31
+ * ThemeIsle_SDK_Feedback constructor.
32
+ *
33
+ * @param ThemeIsle_SDK_Product $product_object Product Object.
34
+ */
35
+ public function __construct( $product_object ) {
36
+ if ( $product_object instanceof ThemeIsle_SDK_Product ) {
37
+ $this->product = $product_object;
38
+ }
39
+ $this->setup_hooks();
40
+ }
41
+
42
+ /**
43
+ * Registers the hooks and then delegates to the child
44
+ */
45
+ public function setup_hooks() {
46
+ $this->setup_hooks_child();
47
+ }
48
+
49
+ /**
50
+ * Calls the API
51
+ *
52
+ * @param string $attributes The attributes of the post body.
53
+ */
54
+ protected function call_api( $attributes ) {
55
+ $slug = $this->product->get_slug();
56
+ $version = $this->product->get_version();
57
+ $attributes['slug'] = $slug;
58
+ $attributes['version'] = $version;
59
+
60
+ $response = wp_remote_post(
61
+ $this->feedback_url, array(
62
+ 'body' => $attributes,
63
+ )
64
+ );
65
+ }
66
+
67
+ /**
68
+ * Randomizes the options array
69
+ *
70
+ * @param array $options The options array.
71
+ */
72
+ function randomize_options( $options ) {
73
+ $new = array();
74
+ $keys = array_keys( $options );
75
+ shuffle( $keys );
76
+
77
+ foreach ( $keys as $key ) {
78
+ $new[ $key ] = $options[ $key ];
79
+ }
80
+
81
+ return $new;
82
+ }
83
+
84
+ /**
85
+ * Abstract function for delegating to the child
86
+ */
87
+ protected abstract function setup_hooks_child();
88
+
89
+ }
90
+ endif;
vendor/codeinwp/themeisle-sdk/class-themeisle-sdk-licenser.php CHANGED
@@ -75,6 +75,29 @@ if ( ! class_exists( 'ThemeIsle_SDK_Licenser' ) ) :
75
  add_action( 'admin_notices', array( $this, 'show_notice' ) );
76
  }
77
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
78
  /**
79
  * Register the setting for the license of the product
80
  *
@@ -105,7 +128,7 @@ if ( ! class_exists( 'ThemeIsle_SDK_Licenser' ) ) :
105
  $invalid_string = apply_filters( $this->product->get_key() . '_lc_invalid_string', 'Invalid' );
106
  $license_message = apply_filters( $this->product->get_key() . '_lc_license_message', 'Enter your license from %s purchase history in order to get %s updates' );
107
 
108
- echo '<p ><input ' . ( ( $status === 'valid' ) ? ( 'style="border:1px solid #7ad03a; "' ) : '' ) . ' type="text" id="' . $this->product->get_key() . '_license" name="' . $this->product->get_key() . '_license" value="' . $value . '" /><a ' . ( ( $status === 'valid' ) ? ( 'style="color:#fff;background: #7ad03a; display: inline-block;text-decoration: none;font-size: 13px;line-height: 26px;height: 26px; margin-left:5px; padding: 0 10px 1px; -webkit-border-radius: 3px;border-radius: 3px; ">' . $valid_string ) : ( 'style="color:#fff;background: #dd3d36; display: inline-block;text-decoration: none;font-size: 13px;line-height: 26px;height: 26px; margin-left:5px; padding: 0 10px 1px; -webkit-border-radius: 3px;border-radius: 3px; ">' . $invalid_string ) ) . ' </a>&nbsp;&nbsp;&nbsp;<button name="' . $this->product->get_key() . '_btn_trigger" ' . ( ( $status === 'valid' ) ? ( ' class="button button-primary">' . $deactivate_string ) : ( ' class="button button-primary" value="yes" type="submit" >' . $activate_string ) ) . ' </button></p><p class="description">' . sprintf( $license_message, '<a href="' . $this->product->get_store_url() . '">' . $this->product->get_store_url() . '</a> ', $this->product->get_type() ) . '</p>';
109
 
110
  }
111
 
@@ -206,25 +229,35 @@ if ( ! class_exists( 'ThemeIsle_SDK_Licenser' ) ) :
206
  return false;
207
  }
208
  $status = $this->get_license_status();
209
- $no_activations_string = apply_filters( $this->product->get_key() . '_lc_no_activations_string', 'No activations left for %s !!!. You need to
 
210
  upgrade your plan in order to use %s on more
211
  websites. Please ask the %s
212
- Staff for more details.' );
213
- $no_valid_string = apply_filters( $this->product->get_key() . '_lc_no_valid_string', 'In order to benefit from updates and support for %s , please add
 
 
214
  your license code from your <a href="%s" target="_blank">purchase history</a> and validate it <a
215
- href="%s">here</a> ' );
216
- $expiration_string = apply_filters( $this->product->get_key() . '_lc_expiration_string', 'Your license is about to expire
217
- for %s. You can go to %s and renew it ' );
 
 
 
218
  $hide_notice_string = apply_filters( $this->product->get_key() . '_lc_hide_notice_string', 'Hide Notice' );
219
  if ( $status != 'valid' ) {
220
  if ( $this->check_activation() ) {
221
  if ( $this->check_hide( 'activation' ) ) {
222
  ?>
223
  <div class="error">
224
- <p><strong><?php
225
- echo sprintf( $no_activations_string, $this->product->get_name(), $this->product->get_name(), '<a href="' . $this->product->get_store_url() . '"
226
- target="_blank">' . $this->product->get_store_name() . '</a>' );
227
- ?></strong> | <a
 
 
 
 
228
  href="<?php echo add_query_arg( $this->product->get_key() . '_activation', 'yes' ); ?> "><?php echo $hide_notice_string; ?></a>
229
  </p>
230
  </div>
@@ -236,7 +269,7 @@ if ( ! class_exists( 'ThemeIsle_SDK_Licenser' ) ) :
236
  <?php if ( $this->check_hide( 'valid' ) ) : ?>
237
  <div class="error">
238
  <p>
239
- <strong><?php echo sprintf( $no_valid_string, $this->product->get_name() . ' ' . $this->product->get_type(), $this->product->get_type(), admin_url( 'options-general.php' ) . '#' . $this->product->get_key() ); ?> </strong>|
240
  <a
241
  href="<?php echo add_query_arg( $this->product->get_key() . '_hide_valid', 'yes' ); ?> "><?php echo $hide_notice_string; ?></a>
242
  </p>
@@ -249,9 +282,15 @@ if ( ! class_exists( 'ThemeIsle_SDK_Licenser' ) ) :
249
  ?>
250
  <div class="update-nag">
251
  <p>
252
- <strong><?php echo sprintf( $expiration_string, $this->product->get_name() . ' ' . $this->product->get_type(), '<a
 
 
 
253
  href="' . $this->renew_url() . '"
254
- target="_blank">' . $this->product->get_store_name() . '</a>' ); ?> </strong> |
 
 
 
255
  <a
256
  href="<?php echo add_query_arg( $this->product->get_key() . '_hide_expiration', 'yes' ); ?> "><?php echo $hide_notice_string; ?></a>
257
  </p>
@@ -307,14 +346,16 @@ if ( ! class_exists( 'ThemeIsle_SDK_Licenser' ) ) :
307
  $api_params = array(
308
  'edd_action' => 'check_license',
309
  'license' => $license,
310
- 'item_name' => urlencode( $this->product->get_name() ),
311
- 'url' => urlencode( home_url() ),
312
  );
313
  // Call the custom API.
314
- $response = wp_remote_get( add_query_arg( $api_params, $this->product->get_store_url() ), array(
315
- 'timeout' => 15,
316
- 'sslverify' => false,
317
- ) );
 
 
318
  if ( is_wp_error( $response ) ) {
319
  $license_data = new stdClass();
320
  $license_data->license = 'valid';
@@ -368,8 +409,8 @@ if ( ! class_exists( 'ThemeIsle_SDK_Licenser' ) ) :
368
  $license = $_POST[ $this->product->get_key() . '_license' ];
369
  $api_params = array(
370
  'license' => $license,
371
- 'item_name' => urlencode( $this->product->get_name() ),
372
- 'url' => urlencode( home_url() ),
373
  );
374
  if ( $status != 'valid' ) {
375
  // data to send in our API request
@@ -414,10 +455,12 @@ if ( ! class_exists( 'ThemeIsle_SDK_Licenser' ) ) :
414
  */
415
  public function enable() {
416
  if ( $this->product->get_type() == 'plugin' ) {
417
- add_filter( 'pre_set_site_transient_update_plugins', array(
418
- $this,
419
- 'pre_set_site_transient_update_plugins_filter',
420
- ) );
 
 
421
  add_filter( 'plugins_api', array( $this, 'plugins_api_filter' ), 10, 3 );
422
  add_filter( 'http_request_args', array( $this, 'http_request_args' ), 10, 2 );
423
  }
@@ -427,6 +470,7 @@ if ( ! class_exists( 'ThemeIsle_SDK_Licenser' ) ) :
427
  add_action( 'load-update-core.php', array( &$this, 'delete_theme_update_transient' ) );
428
  add_action( 'load-themes.php', array( &$this, 'delete_theme_update_transient' ) );
429
  add_action( 'load-themes.php', array( &$this, 'load_themes_screen' ) );
 
430
 
431
  }
432
 
@@ -450,10 +494,12 @@ if ( ! class_exists( 'ThemeIsle_SDK_Licenser' ) ) :
450
  return;
451
  }
452
  $update_url = wp_nonce_url( 'update.php?action=upgrade-theme&amp;theme=' . urlencode( $this->product->get_slug() ), 'upgrade-theme_' . $this->product->get_slug() );
453
- $update_onclick = ' onclick="if ( confirm(\'' . esc_js( __( 'Updating this theme will lose any customizations you have made. Cancel to stop, OK to update.' ) ) . '\') ) {return true;}return false;"';
 
454
  if ( version_compare( $this->product->get_version(), $api_response->new_version, '<' ) ) {
455
  echo '<div id="update-nag">';
456
- printf( '<strong>%1$s %2$s</strong> is available. <a href="%3$s" class="thickbox" title="%4s">Check out what\'s new</a> or <a href="%5$s"%6$s>update now</a>.',
 
457
  $theme->get( 'Name' ),
458
  $api_response->new_version,
459
  '#TB_inline?width=640&amp;inlineId=' . $this->product->get_version() . '_changelog',
@@ -509,13 +555,15 @@ if ( ! class_exists( 'ThemeIsle_SDK_Licenser' ) ) :
509
  'name' => $this->product->get_name(),
510
  'slug' => $this->product->get_slug(),
511
  'author' => $this->product->get_store_name(),
512
- 'url' => urlencode( home_url() ),
 
 
 
 
 
 
 
513
  );
514
- $response = wp_remote_post( $this->product->get_store_url(), array(
515
- 'timeout' => 15,
516
- 'sslverify' => false,
517
- 'body' => $api_params,
518
- ) );
519
  // make sure the response was successful
520
  if ( is_wp_error( $response ) || 200 != wp_remote_retrieve_response_code( $response ) ) {
521
  $failed = true;
@@ -583,7 +631,7 @@ if ( ! class_exists( 'ThemeIsle_SDK_Licenser' ) ) :
583
  * @uses is_wp_error()
584
  *
585
  * @param string $_action The requested action.
586
- * @param array $_data Parameters for the API action.
587
  *
588
  * @return false||object
589
  */
@@ -594,16 +642,18 @@ if ( ! class_exists( 'ThemeIsle_SDK_Licenser' ) ) :
594
  $api_params = array(
595
  'edd_action' => 'get_version',
596
  'license' => $this->license_key,
597
- 'name' => urlencode( $this->product->get_name() ),
598
- 'slug' => urlencode( $this->product->get_slug() ),
599
  'author' => $this->product->get_store_name(),
600
- 'url' => urlencode( home_url() ),
 
 
 
 
 
 
 
601
  );
602
- $request = wp_remote_post( $this->product->get_store_url(), array(
603
- 'timeout' => 15,
604
- 'sslverify' => false,
605
- 'body' => $api_params,
606
- ) );
607
  if ( ! is_wp_error( $request ) ) :
608
  $request = json_decode( wp_remote_retrieve_body( $request ) );
609
  if ( $request && isset( $request->sections ) ) {
@@ -621,9 +671,9 @@ if ( ! class_exists( 'ThemeIsle_SDK_Licenser' ) ) :
621
  *
622
  * @uses api_request()
623
  *
624
- * @param mixed $_data Plugin data.
625
  * @param string $_action Action to send.
626
- * @param object $_args Arguments to use.
627
  *
628
  * @return object $_data
629
  */
@@ -643,7 +693,7 @@ if ( ! class_exists( 'ThemeIsle_SDK_Licenser' ) ) :
643
  * Disable SSL verification in order to prevent download update failures
644
  *
645
  * @param array $args Http args.
646
- * @param string $url Url to check.
647
  *
648
  * @return object $array
649
  */
75
  add_action( 'admin_notices', array( $this, 'show_notice' ) );
76
  }
77
 
78
+ /**
79
+ * @param string $r Update payload.
80
+ * @param string $url The api url.
81
+ *
82
+ * @return mixed List of themes to check for update.
83
+ */
84
+ function disable_wporg_update( $r, $url ) {
85
+
86
+ if ( 0 !== strpos( $url, 'https://api.wordpress.org/themes/update-check/' ) ) {
87
+ return $r;
88
+ }
89
+
90
+ // Decode the JSON response
91
+ $themes = json_decode( $r['body']['themes'] );
92
+
93
+ unset( $themes->themes->{$this->product->get_slug()} );
94
+
95
+ // Encode the updated JSON response
96
+ $r['body']['themes'] = json_encode( $themes );
97
+
98
+ return $r;
99
+ }
100
+
101
  /**
102
  * Register the setting for the license of the product
103
  *
128
  $invalid_string = apply_filters( $this->product->get_key() . '_lc_invalid_string', 'Invalid' );
129
  $license_message = apply_filters( $this->product->get_key() . '_lc_license_message', 'Enter your license from %s purchase history in order to get %s updates' );
130
 
131
+ echo '<p ><input ' . ( ( $status === 'valid' ) ? ( 'style="border:1px solid #7ad03a; "' ) : '' ) . ' type="text" id="' . $this->product->get_key() . '_license" name="' . $this->product->get_key() . '_license" value="' . $value . '" /><a ' . ( ( $status === 'valid' ) ? ( 'style="color:#fff;background: #7ad03a; display: inline-block;text-decoration: none;font-size: 13px;line-height: 26px;height: 26px; margin-left:5px; padding: 0 10px 1px; -webkit-border-radius: 3px;border-radius: 3px; ">' . $valid_string ) : ( 'style="color:#fff;background: #dd3d36; display: inline-block;text-decoration: none;font-size: 13px;line-height: 26px;height: 26px; margin-left:5px; padding: 0 10px 1px; -webkit-border-radius: 3px;border-radius: 3px; ">' . $invalid_string ) ) . ' </a>&nbsp;&nbsp;&nbsp;<button name="' . $this->product->get_key() . '_btn_trigger" ' . ( ( $status === 'valid' ) ? ( ' class="button button-primary">' . $deactivate_string ) : ( ' class="button button-primary" value="yes" type="submit" >' . $activate_string ) ) . ' </button></p><p class="description">' . sprintf( $license_message, '<a href="' . $this->product->get_store_url() . '">' . $this->product->get_store_name() . '</a> ', $this->product->get_type() ) . '</p>';
132
 
133
  }
134
 
229
  return false;
230
  }
231
  $status = $this->get_license_status();
232
+ $no_activations_string = apply_filters(
233
+ $this->product->get_key() . '_lc_no_activations_string', 'No activations left for %s !!!. You need to
234
  upgrade your plan in order to use %s on more
235
  websites. Please ask the %s
236
+ Staff for more details.'
237
+ );
238
+ $no_valid_string = apply_filters(
239
+ $this->product->get_key() . '_lc_no_valid_string', 'In order to benefit from updates and support for %s , please add
240
  your license code from your <a href="%s" target="_blank">purchase history</a> and validate it <a
241
+ href="%s">here</a> '
242
+ );
243
+ $expiration_string = apply_filters(
244
+ $this->product->get_key() . '_lc_expiration_string', 'Your license is about to expire
245
+ for %s. You can go to %s and renew it '
246
+ );
247
  $hide_notice_string = apply_filters( $this->product->get_key() . '_lc_hide_notice_string', 'Hide Notice' );
248
  if ( $status != 'valid' ) {
249
  if ( $this->check_activation() ) {
250
  if ( $this->check_hide( 'activation' ) ) {
251
  ?>
252
  <div class="error">
253
+ <p><strong>
254
+ <?php
255
+ echo sprintf(
256
+ $no_activations_string, $this->product->get_name(), $this->product->get_name(), '<a href="' . $this->product->get_store_url() . '"
257
+ target="_blank">' . $this->product->get_store_name() . '</a>'
258
+ );
259
+ ?>
260
+ </strong> | <a
261
  href="<?php echo add_query_arg( $this->product->get_key() . '_activation', 'yes' ); ?> "><?php echo $hide_notice_string; ?></a>
262
  </p>
263
  </div>
269
  <?php if ( $this->check_hide( 'valid' ) ) : ?>
270
  <div class="error">
271
  <p>
272
+ <strong><?php echo sprintf( $no_valid_string, $this->product->get_name() . ' ' . $this->product->get_type(), $this->product->get_store_url(), admin_url( 'options-general.php' ) . '#' . $this->product->get_key() ); ?> </strong>|
273
  <a
274
  href="<?php echo add_query_arg( $this->product->get_key() . '_hide_valid', 'yes' ); ?> "><?php echo $hide_notice_string; ?></a>
275
  </p>
282
  ?>
283
  <div class="update-nag">
284
  <p>
285
+ <strong>
286
+ <?php
287
+ echo sprintf(
288
+ $expiration_string, $this->product->get_name() . ' ' . $this->product->get_type(), '<a
289
  href="' . $this->renew_url() . '"
290
+ target="_blank">' . $this->product->get_store_name() . '</a>'
291
+ );
292
+ ?>
293
+ </strong> |
294
  <a
295
  href="<?php echo add_query_arg( $this->product->get_key() . '_hide_expiration', 'yes' ); ?> "><?php echo $hide_notice_string; ?></a>
296
  </p>
346
  $api_params = array(
347
  'edd_action' => 'check_license',
348
  'license' => $license,
349
+ 'item_name' => rawurlencode( $this->product->get_name() ),
350
+ 'url' => rawurlencode( home_url() ),
351
  );
352
  // Call the custom API.
353
+ $response = wp_remote_get(
354
+ add_query_arg( $api_params, $this->product->get_store_url() ), array(
355
+ 'timeout' => 15,
356
+ 'sslverify' => false,
357
+ )
358
+ );
359
  if ( is_wp_error( $response ) ) {
360
  $license_data = new stdClass();
361
  $license_data->license = 'valid';
409
  $license = $_POST[ $this->product->get_key() . '_license' ];
410
  $api_params = array(
411
  'license' => $license,
412
+ 'item_name' => rawurlencode( $this->product->get_name() ),
413
+ 'url' => rawurlencode( home_url() ),
414
  );
415
  if ( $status != 'valid' ) {
416
  // data to send in our API request
455
  */
456
  public function enable() {
457
  if ( $this->product->get_type() == 'plugin' ) {
458
+ add_filter(
459
+ 'pre_set_site_transient_update_plugins', array(
460
+ $this,
461
+ 'pre_set_site_transient_update_plugins_filter',
462
+ )
463
+ );
464
  add_filter( 'plugins_api', array( $this, 'plugins_api_filter' ), 10, 3 );
465
  add_filter( 'http_request_args', array( $this, 'http_request_args' ), 10, 2 );
466
  }
470
  add_action( 'load-update-core.php', array( &$this, 'delete_theme_update_transient' ) );
471
  add_action( 'load-themes.php', array( &$this, 'delete_theme_update_transient' ) );
472
  add_action( 'load-themes.php', array( &$this, 'load_themes_screen' ) );
473
+ add_filter( 'http_request_args', array( $this, 'disable_wporg_update' ), 5, 2 );
474
 
475
  }
476
 
494
  return;
495
  }
496
  $update_url = wp_nonce_url( 'update.php?action=upgrade-theme&amp;theme=' . urlencode( $this->product->get_slug() ), 'upgrade-theme_' . $this->product->get_slug() );
497
+ $update_message = apply_filters( 'themeisle_sdk_license_update_message', 'Updating this theme will lose any customizations you have made. Cancel to stop, OK to update.' );
498
+ $update_onclick = ' onclick="if ( confirm(\'' . esc_js( $update_message ) . '\') ) {return true;}return false;"';
499
  if ( version_compare( $this->product->get_version(), $api_response->new_version, '<' ) ) {
500
  echo '<div id="update-nag">';
501
+ printf(
502
+ '<strong>%1$s %2$s</strong> is available. <a href="%3$s" class="thickbox" title="%4s">Check out what\'s new</a> or <a href="%5$s"%6$s>update now</a>.',
503
  $theme->get( 'Name' ),
504
  $api_response->new_version,
505
  '#TB_inline?width=640&amp;inlineId=' . $this->product->get_version() . '_changelog',
555
  'name' => $this->product->get_name(),
556
  'slug' => $this->product->get_slug(),
557
  'author' => $this->product->get_store_name(),
558
+ 'url' => rawurlencode( home_url() ),
559
+ );
560
+ $response = wp_remote_post(
561
+ $this->product->get_store_url(), array(
562
+ 'timeout' => 15,
563
+ 'sslverify' => false,
564
+ 'body' => $api_params,
565
+ )
566
  );
 
 
 
 
 
567
  // make sure the response was successful
568
  if ( is_wp_error( $response ) || 200 != wp_remote_retrieve_response_code( $response ) ) {
569
  $failed = true;
631
  * @uses is_wp_error()
632
  *
633
  * @param string $_action The requested action.
634
+ * @param array $_data Parameters for the API action.
635
  *
636
  * @return false||object
637
  */
642
  $api_params = array(
643
  'edd_action' => 'get_version',
644
  'license' => $this->license_key,
645
+ 'name' => rawurlencode( $this->product->get_name() ),
646
+ 'slug' => rawurlencode( $this->product->get_slug() ),
647
  'author' => $this->product->get_store_name(),
648
+ 'url' => rawurlencode( home_url() ),
649
+ );
650
+ $request = wp_remote_post(
651
+ $this->product->get_store_url(), array(
652
+ 'timeout' => 15,
653
+ 'sslverify' => false,
654
+ 'body' => $api_params,
655
+ )
656
  );
 
 
 
 
 
657
  if ( ! is_wp_error( $request ) ) :
658
  $request = json_decode( wp_remote_retrieve_body( $request ) );
659
  if ( $request && isset( $request->sections ) ) {
671
  *
672
  * @uses api_request()
673
  *
674
+ * @param mixed $_data Plugin data.
675
  * @param string $_action Action to send.
676
+ * @param object $_args Arguments to use.
677
  *
678
  * @return object $_data
679
  */
693
  * Disable SSL verification in order to prevent download update failures
694
  *
695
  * @param array $args Http args.
696
+ * @param string $url Url to check.
697
  *
698
  * @return object $array
699
  */
vendor/codeinwp/themeisle-sdk/class-themeisle-sdk-loader.php CHANGED
@@ -38,49 +38,51 @@ if ( ! class_exists( 'ThemeIsle_SDK_Loader' ) ) :
38
  * @return ThemeIsle_SDK_Loader The singleton object.
39
  */
40
  public static function init_product( $basefile ) {
 
41
  if ( ! isset( self::$instance ) && ! ( self::$instance instanceof ThemeIsle_SDK_Loader ) ) {
42
  self::$instance = new ThemeIsle_SDK_Loader;
43
- self::$instance->setup_hooks();
44
  }
45
  $product_object = new ThemeIsle_SDK_Product( $basefile );
46
  self::$products[ $product_object->get_slug() ] = $product_object;
47
- // Based on the Wordpress Available file header we enable the logger or not.
 
 
48
  if ( ! $product_object->is_wordpress_available() ) {
49
  $licenser = new ThemeIsle_SDK_Licenser( $product_object );
50
  $licenser->enable();
51
  }
52
- // We enable the logger feature.
 
53
  if ( $product_object->is_logger_active() ) {
54
- $logger = new ThemeIsle_SDK_Logger( $product_object );
55
  $logger->enable();
 
 
56
  }
57
 
58
- return self::$instance;
59
- }
60
 
61
- /**
62
- * Setup loader hookds.
63
- */
64
- public function setup_hooks() {
65
- add_filter( 'extra_plugin_headers', array( $this, 'add_extra_headers' ) );
66
- add_filter( 'extra_theme_headers', array( $this, 'add_extra_headers' ) );
 
 
 
 
67
  }
68
 
69
  /**
70
- * @param array $headers The extra headers.
71
  *
72
- * @return array The new headers.
73
  */
74
- function add_extra_headers( $headers ) {
75
- if ( ! in_array( 'Requires License', $headers ) ) {
76
- $headers[] = 'Requires License';
77
- }
78
- if ( ! in_array( 'WordPress Available', $headers ) ) {
79
- $headers[] = 'WordPress Available';
80
- }
81
-
82
- return $headers;
83
  }
84
 
 
85
  }
86
  endif;
38
  * @return ThemeIsle_SDK_Loader The singleton object.
39
  */
40
  public static function init_product( $basefile ) {
41
+
42
  if ( ! isset( self::$instance ) && ! ( self::$instance instanceof ThemeIsle_SDK_Loader ) ) {
43
  self::$instance = new ThemeIsle_SDK_Loader;
44
+
45
  }
46
  $product_object = new ThemeIsle_SDK_Product( $basefile );
47
  self::$products[ $product_object->get_slug() ] = $product_object;
48
+
49
+ $notifications = array();
50
+ // Based on the WordPress Available file header we enable the logger or not.
51
  if ( ! $product_object->is_wordpress_available() ) {
52
  $licenser = new ThemeIsle_SDK_Licenser( $product_object );
53
  $licenser->enable();
54
  }
55
+
56
+ $logger = new ThemeIsle_SDK_Logger( $product_object );
57
  if ( $product_object->is_logger_active() ) {
 
58
  $logger->enable();
59
+ } else {
60
+ $notifications[] = $logger;
61
  }
62
 
63
+ $feedback = new ThemeIsle_SDK_Feedback_Factory( $product_object, $product_object->get_feedback_types() );
 
64
 
65
+ $instances = $feedback->get_instances();
66
+ if ( array_key_exists( 'review', $instances ) ) {
67
+ $notifications[] = $instances['review'];
68
+ }
69
+ new ThemeIsle_SDK_Notification_Manager( $product_object, $notifications );
70
+ if ( ! $product_object->is_external_author() ) {
71
+ new ThemeIsle_SDK_Widgets_Factory( $product_object, $product_object->get_widget_types() );
72
+ }
73
+
74
+ return self::$instance;
75
  }
76
 
77
  /**
78
+ * Get all products using the SDK.
79
  *
80
+ * @return array Products available.
81
  */
82
+ public static function get_products() {
83
+ return self::$products;
 
 
 
 
 
 
 
84
  }
85
 
86
+
87
  }
88
  endif;
vendor/codeinwp/themeisle-sdk/class-themeisle-sdk-logger.php CHANGED
@@ -22,7 +22,7 @@ if ( ! class_exists( 'ThemeIsle_SDK_Logger' ) ) :
22
  /**
23
  * @var string $logging_url Url where to send the logs
24
  */
25
- private $logging_url = 'http://mirror.themeisle.com';
26
 
27
  /**
28
  * @var ThemeIsle_SDK_Product $product Themeisle Product.
@@ -34,6 +34,21 @@ if ( ! class_exists( 'ThemeIsle_SDK_Logger' ) ) :
34
  */
35
  private $product_cron;
36
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
37
  /**
38
  * ThemeIsle_SDK_Logger constructor.
39
  *
@@ -44,6 +59,7 @@ if ( ! class_exists( 'ThemeIsle_SDK_Logger' ) ) :
44
  $this->product = $product_object;
45
  $this->product_cron = $product_object->get_key() . '_log_activity';
46
  }
 
47
  }
48
 
49
 
@@ -61,19 +77,134 @@ if ( ! class_exists( 'ThemeIsle_SDK_Logger' ) ) :
61
  * Send the statistics to the api endpoint
62
  */
63
  public function send_log() {
64
- wp_remote_post( $this->logging_url, array(
65
- 'method' => 'POST',
66
- 'timeout' => 3,
67
- 'redirection' => 5,
68
- 'headers' => array(
69
- 'X-ThemeIsle-Event' => 'log_site',
70
- ),
71
- 'body' => array(
72
- 'site' => get_site_url(),
73
- 'product' => $this->product->get_slug(),
74
- 'version' => $this->product->get_version(),
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
75
  ),
76
- ) );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
77
  }
78
 
79
  }
22
  /**
23
  * @var string $logging_url Url where to send the logs
24
  */
25
+ private $logging_url = 'http://log.themeisle.com/wp-json/v1/logs/';
26
 
27
  /**
28
  * @var ThemeIsle_SDK_Product $product Themeisle Product.
34
  */
35
  private $product_cron;
36
 
37
+ /**
38
+ * @var string $heading The heading of the modal
39
+ */
40
+ private $heading = 'Do you enjoy {product}? Become a contributor by opting in to our anonymous data tracking. We guarantee no sensitive data is collected.';
41
+
42
+ /**
43
+ * @var string $button_submit The text of the submit button
44
+ */
45
+ private $button_submit = 'Sure, I would love to help.';
46
+
47
+ /**
48
+ * @var string $button_cancel The text of the cancel button
49
+ */
50
+ private $button_cancel = 'No, thanks.';
51
+
52
  /**
53
  * ThemeIsle_SDK_Logger constructor.
54
  *
59
  $this->product = $product_object;
60
  $this->product_cron = $product_object->get_key() . '_log_activity';
61
  }
62
+ add_action( 'wp_ajax_' . $this->product->get_key() . __CLASS__, array( $this, 'dismiss' ) );
63
  }
64
 
65
 
77
  * Send the statistics to the api endpoint
78
  */
79
  public function send_log() {
80
+ wp_remote_post(
81
+ $this->logging_url, array(
82
+ 'method' => 'POST',
83
+ 'timeout' => 3,
84
+ 'redirection' => 5,
85
+ 'headers' => array(
86
+ 'X-ThemeIsle-Event' => 'log_site',
87
+ ),
88
+ 'body' => array(
89
+ 'site' => get_site_url(),
90
+ 'slug' => $this->product->get_slug(),
91
+ 'version' => $this->product->get_version(),
92
+ 'data' => apply_filters( $this->product->get_key() . '_logger_data', array() ),
93
+ ),
94
+ )
95
+ );
96
+ }
97
+
98
+ /**
99
+ * Dismiss the notification
100
+ */
101
+ function dismiss() {
102
+ check_ajax_referer( (string) __CLASS__, 'nonce' );
103
+
104
+ $flag = intval( $_POST['enable'] ) === 1;
105
+ update_option( $this->product->logger_option, ( $flag ? 'yes' : 'no' ) );
106
+
107
+ if ( true === $flag ) {
108
+ $this->enable();
109
+ }
110
+ }
111
+
112
+ /**
113
+ * Shows the notification
114
+ */
115
+ function show_notification() {
116
+ $show = $this->product->is_logger_active();
117
+ $checked = get_option( $this->product->logger_option, '' );
118
+ if ( ! $show && $checked == '' ) {
119
+ add_action( 'admin_notices', array( $this, 'admin_notices' ) );
120
+
121
+ return true;
122
+ }
123
+
124
+ return false;
125
+ }
126
+
127
+ /**
128
+ * Shows the admin notice
129
+ */
130
+ function admin_notices() {
131
+ $id = $this->product->get_key() . '_logger';
132
+
133
+ $this->add_media( $this->product->get_key() );
134
+
135
+ echo '<div class="notice notice-success is-dismissible " id="' . $this->product->get_key() . '-logger-notification" ><div id="' . $id . '" class="themeisle-logger-box">' . $this->get_html( $this->product->get_key() ) . '</div></div>';
136
+ }
137
+
138
+ /**
139
+ * Generates the HTML
140
+ *
141
+ * @param string $key The product key.
142
+ */
143
+ function get_html( $key ) {
144
+ $heading = apply_filters( $this->product->get_key() . '_logger_heading', $this->heading );
145
+ $heading = str_replace(
146
+ array( '{product}' ), array(
147
+ trim( str_replace( 'Lite', '', $this->product->get_name() ) ),
148
  ),
149
+ $heading
150
+ );
151
+ $button_submit = apply_filters( $this->product->get_key() . '_logger_button_submit', $this->button_submit );
152
+ $button_cancel = apply_filters( $this->product->get_key() . '_logger_button_cancel', $this->button_cancel );
153
+
154
+ return '<div >'
155
+ . '<p>' . $heading . '</p>'
156
+ . '<div class="actions">'
157
+ . get_submit_button(
158
+ $button_submit, 'primary ' . $this->product->get_key() . '-ti-logger', $this->product->get_key() . 'ti-logger-yes', false, array(
159
+ 'data-ti-log-enable' => 1,
160
+ )
161
+ )
162
+ . get_submit_button(
163
+ $button_cancel, 'secondary ' . $this->product->get_key() . '-ti-logger', $this->product->get_key() . 'ti-logger-no', false, array(
164
+ 'data-ti-log-enable' => 0,
165
+ )
166
+ )
167
+ . '</div></div>';
168
+ }
169
+
170
+ /**
171
+ * Loads the js
172
+ *
173
+ * @param string $key The product key.
174
+ */
175
+ function add_media( $key ) {
176
+ ?>
177
+ <style type="text/css">
178
+ #<?php echo $key; ?>-logger-notification {
179
+ padding-bottom: 5px;
180
+ }
181
+
182
+ #<?php echo $key; ?>-logger-notification .button {
183
+ margin-left: 5px;
184
+ }
185
+ </style>
186
+ <script type="text/javascript" id="<?php echo $key; ?>ti-logger-js">
187
+ (function ($) {
188
+ $(document).ready(function () {
189
+ $('.<?php echo $key; ?>-ti-logger').on('click', function (e) {
190
+
191
+ $.ajax({
192
+ url: ajaxurl,
193
+ method: "post",
194
+ data: {
195
+ 'nonce': '<?php echo wp_create_nonce( (string) __CLASS__ ); ?>',
196
+ 'action': '<?php echo $this->product->get_key() . __CLASS__; ?>',
197
+ 'enable': $(this).attr('data-ti-log-enable')
198
+ },
199
+ success: function () {
200
+ $('#<?php echo $key; ?>-logger-notification').hide();
201
+ }
202
+ });
203
+ });
204
+ });
205
+ })(jQuery);
206
+ </script>
207
+ <?php
208
  }
209
 
210
  }
vendor/codeinwp/themeisle-sdk/class-themeisle-sdk-notification-manager.php ADDED
@@ -0,0 +1,119 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * The notification manager class for ThemeIsle SDK
4
+ *
5
+ * @package ThemeIsleSDK
6
+ * @subpackage Notification
7
+ * @copyright Copyright (c) 2017, Marius Cristea
8
+ * @license http://opensource.org/licenses/gpl-3.0.php GNU Public License
9
+ * @since 1.0.0
10
+ */
11
+ // Exit if accessed directly.
12
+ if ( ! defined( 'ABSPATH' ) ) {
13
+ exit;
14
+ }
15
+ if ( ! class_exists( 'ThemeIsle_SDK_Notification_Manager' ) ) :
16
+ /**
17
+ * Notification manager model for ThemeIsle SDK.
18
+ */
19
+ class ThemeIsle_SDK_Notification_Manager {
20
+ /**
21
+ * Time between notifications.
22
+ */
23
+ const NOTIFICATION_INTERVAL_HOURS = 100;
24
+ /**
25
+ * @var array Notifications for the current product.
26
+ */
27
+ private $notifications = array();
28
+ /**
29
+ * @var ThemeIsle_SDK_Product Current product.
30
+ */
31
+ private $product;
32
+ /**
33
+ * @var array ThemeIsle_SDK_Feedback Feedbacks available.
34
+ */
35
+ private $callbacks = array();
36
+
37
+ /**
38
+ * ThemeIsle_SDK_Notification_Manager constructor.
39
+ *
40
+ * @param ThemeIsle_SDK_Product $product_object Product Object.
41
+ * @param array $callbacks the objects that will be called when a notification is due.
42
+ */
43
+ public function __construct( $product_object, $callbacks ) {
44
+ $this->product = $product_object;
45
+ $this->callbacks = $callbacks;
46
+ $this->setup_hooks();
47
+ }
48
+
49
+ /**
50
+ * Setup the notifications.
51
+ */
52
+ function setup_notifications() {
53
+ if ( ! current_user_can( 'manage_options' ) ) {
54
+ return;
55
+ }
56
+ // Load the notifications only if we have it installed after the required interval.
57
+ if ( ( time() - $this->product->get_install_time() ) > self::NOTIFICATION_INTERVAL_HOURS * HOUR_IN_SECONDS ) {
58
+ if ( $this->product instanceof ThemeIsle_SDK_Product && $this->callbacks && is_array( $this->callbacks ) ) {
59
+ foreach ( $this->callbacks as $instance ) {
60
+ $this->notifications[ $this->product->get_key() . get_class( $instance ) ] = $instance;
61
+ }
62
+ }
63
+ }
64
+ }
65
+
66
+ /**
67
+ * Setup the internal hooks
68
+ */
69
+ private function setup_hooks() {
70
+ add_action( 'admin_head', array( $this, 'show_notification' ) );
71
+ add_action( 'admin_init', array( $this, 'setup_notifications' ) );
72
+ }
73
+
74
+ /**
75
+ * Shows the notification
76
+ */
77
+ function show_notification() {
78
+
79
+ $hidden = get_option( 'themeisle_sdk_notification_hidden', array() );
80
+ $instances = $this->notifications;
81
+ if ( empty( $instances ) ) {
82
+ return;
83
+ }
84
+
85
+ // Get timestamp of last notification.
86
+ $old = 0;
87
+ if ( ! empty( $hidden ) ) {
88
+ $old = $hidden[ count( $hidden ) - 1 ]['time'];
89
+ }
90
+ // Check if the current one is expired.
91
+ if ( ( time() - $old ) > self::NOTIFICATION_INTERVAL_HOURS * HOUR_IN_SECONDS ) {
92
+ // Get hidden notifications key.
93
+ $hidden_ones = wp_list_pluck( $hidden, 'key' );
94
+ // Get the non-hidden notifications.
95
+ $available_notifications = array_diff( array_keys( $instances ), $hidden_ones );
96
+ if ( empty( $available_notifications ) ) {
97
+ return;
98
+ }
99
+ // Get the first notification available.
100
+ $new_one = reset( $available_notifications );
101
+
102
+ $instance = $instances[ $new_one ];
103
+ $hidden[] = array(
104
+ 'time' => time(),
105
+ 'key' => $new_one,
106
+ );
107
+ update_option( 'themeisle_sdk_notification_hidden', $hidden );
108
+ } else {
109
+ $key = $hidden[ count( $hidden ) - 1 ]['key'];
110
+ if ( ! isset( $this->notifications[ $key ] ) ) {
111
+ return;
112
+ } else {
113
+ $instance = $this->notifications[ $key ];
114
+ }
115
+ }
116
+ $instance->show_notification();
117
+ }
118
+ }
119
+ endif;
vendor/codeinwp/themeisle-sdk/class-themeisle-sdk-product.php CHANGED
@@ -41,26 +41,55 @@ if ( ! class_exists( 'ThemeIsle_SDK_Product' ) ) :
41
  * @var string $key The product ready key.
42
  */
43
  private $key;
 
 
 
 
44
  /**
45
  * @var string $store_url The store url.
46
  */
47
  private $store_url;
 
 
 
 
48
  /**
49
  * @var string $store_name The store name.
50
  */
51
  private $store_name;
 
 
 
 
52
  /**
53
  * @var bool $requires_license Either user needs to activate it with license.
54
  */
55
  private $requires_license;
56
  /**
57
- * @var bool $wordpress_available Either is available on wordpress or not.
58
  */
59
  private $wordpress_available;
60
  /**
61
  * @var string $version The product version.
62
  */
63
  private $version;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
64
 
65
  /**
66
  * ThemeIsle_SDK_Product constructor.
@@ -75,27 +104,72 @@ if ( ! class_exists( 'ThemeIsle_SDK_Product' ) ) :
75
  $this->setup_from_fileheaders();
76
  }
77
  }
 
 
 
 
 
 
 
 
 
78
  }
79
 
80
  /**
81
  * Setup props from fileheaders.
82
  */
83
  public function setup_from_fileheaders() {
84
- $file_headers = array();
 
 
 
 
 
85
  if ( $this->type == 'plugin' ) {
86
- require_once( ABSPATH . 'wp-admin/includes/plugin.php' );
87
- $file_headers = get_plugin_data( $this->basefile );
 
88
  }
89
  if ( $this->type == 'theme' ) {
90
- $file_headers = wp_get_theme( $this->basefile );
 
 
 
 
 
 
 
 
 
 
 
 
91
  }
92
- $this->name = $file_headers['Name'];
93
- $this->store_name = $file_headers['AuthorName'];
94
- $this->store_url = $file_headers['AuthorURI'];
95
  $this->requires_license = ( $file_headers['Requires License'] == 'yes' ) ? true : false;
96
  $this->wordpress_available = ( $file_headers['WordPress Available'] == 'yes' ) ? true : false;
 
97
  $this->version = $file_headers['Version'];
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
98
 
 
99
  }
100
 
101
  /**
@@ -245,20 +319,82 @@ if ( ! class_exists( 'ThemeIsle_SDK_Product' ) ) :
245
  return $this->file;
246
  }
247
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
248
  /**
249
  * We log the user website and product version.
250
  *
251
  * @return bool Either we log the data or not.
252
  */
253
  public function is_logger_active() {
254
- // If is not available on wordpress log this automatically.
255
  if ( ! $this->is_wordpress_available() ) {
256
  return true;
257
  } else {
258
- // If we have the product on wprog, by default this will be false
259
- // and we can change it in each product.
260
- return apply_filters( $this->get_key() . '_logger_flag', false );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
261
  }
 
 
262
  }
263
 
264
  }
41
  * @var string $key The product ready key.
42
  */
43
  private $key;
44
+ /**
45
+ * @var string $author_url The url of the author.
46
+ */
47
+ private $author_url;
48
  /**
49
  * @var string $store_url The store url.
50
  */
51
  private $store_url;
52
+ /**
53
+ * @var int $install The date of install.
54
+ */
55
+ private $install;
56
  /**
57
  * @var string $store_name The store name.
58
  */
59
  private $store_name;
60
+ /**
61
+ * @var array $allowed_authors The allowed authors.
62
+ */
63
+ private $allowed_authors = array( 'proteusthemes.com', 'anarieldesign.com' );
64
  /**
65
  * @var bool $requires_license Either user needs to activate it with license.
66
  */
67
  private $requires_license;
68
  /**
69
+ * @var bool $wordpress_available Either is available on WordPress or not.
70
  */
71
  private $wordpress_available;
72
  /**
73
  * @var string $version The product version.
74
  */
75
  private $version;
76
+ /**
77
+ * @var string $logger_option Logger option key.
78
+ */
79
+ public $logger_option;
80
+ /**
81
+ * @var string $pro_slug Pro slug, if available.
82
+ */
83
+ public $pro_slug;
84
+ /**
85
+ * @var string $feedback_types All the feedback types the product supports
86
+ */
87
+ private $feedback_types = array();
88
+
89
+ /**
90
+ * @var string $widget_types All the widget types the product supports
91
+ */
92
+ private $widget_types = array( 'dashboard_blog' );
93
 
94
  /**
95
  * ThemeIsle_SDK_Product constructor.
104
  $this->setup_from_fileheaders();
105
  }
106
  }
107
+ $install = get_option( $this->get_key() . '_install', 0 );
108
+ if ( $install === 0 ) {
109
+ $install = time();
110
+ update_option( $this->get_key() . '_install', time() );
111
+ }
112
+ $this->install = $install;
113
+
114
+ $this->logger_option = $this->get_key() . '_logger_flag';
115
+
116
  }
117
 
118
  /**
119
  * Setup props from fileheaders.
120
  */
121
  public function setup_from_fileheaders() {
122
+ $file_headers = array(
123
+ 'Requires License' => 'Requires License',
124
+ 'WordPress Available' => 'WordPress Available',
125
+ 'Pro Slug' => 'Pro Slug',
126
+ 'Version' => 'Version',
127
+ );
128
  if ( $this->type == 'plugin' ) {
129
+ $file_headers['Name'] = 'Plugin Name';
130
+ $file_headers['AuthorName'] = 'Author';
131
+ $file_headers['AuthorURI'] = 'Author URI';
132
  }
133
  if ( $this->type == 'theme' ) {
134
+ $file_headers['Name'] = 'Theme Name';
135
+ $file_headers['AuthorName'] = 'Author';
136
+ $file_headers['AuthorURI'] = 'Author URI';
137
+ }
138
+ $file_headers = get_file_data( $this->basefile, $file_headers );
139
+
140
+ $this->name = $file_headers['Name'];
141
+ $this->store_name = $file_headers['AuthorName'];
142
+ $this->author_url = $file_headers['AuthorURI'];
143
+ $this->store_url = $file_headers['AuthorURI'];
144
+ if ( $this->is_external_author() ) {
145
+ $this->store_url = 'https://themeisle.com';
146
+ $this->store_name = 'ThemeIsle';
147
  }
 
 
 
148
  $this->requires_license = ( $file_headers['Requires License'] == 'yes' ) ? true : false;
149
  $this->wordpress_available = ( $file_headers['WordPress Available'] == 'yes' ) ? true : false;
150
+ $this->pro_slug = ! empty( $file_headers['Pro Slug'] ) ? $file_headers['Pro Slug'] : '';
151
  $this->version = $file_headers['Version'];
152
+ if ( $this->require_uninstall_feedback() ) {
153
+ $this->feedback_types[] = 'deactivate';
154
+ }
155
+ if ( $this->is_wordpress_available() ) {
156
+ $this->feedback_types[] = 'review';
157
+ }
158
+ }
159
+
160
+ /**
161
+ * Check if the product is by external author or not.
162
+ *
163
+ * @return bool Either is external author or no.
164
+ */
165
+ public function is_external_author() {
166
+ foreach ( $this->allowed_authors as $author ) {
167
+ if ( strpos( $this->author_url, $author ) !== false ) {
168
+ return true;
169
+ }
170
+ }
171
 
172
+ return false;
173
  }
174
 
175
  /**
319
  return $this->file;
320
  }
321
 
322
+ /**
323
+ * Returns feedback types
324
+ *
325
+ * @return array The feedback types.
326
+ */
327
+ public function get_feedback_types() {
328
+ return apply_filters( $this->get_key() . '_feedback_types', $this->feedback_types );
329
+ }
330
+
331
+ /**
332
+ * Returns widget types
333
+ *
334
+ * @return array The widget types.
335
+ */
336
+ public function get_widget_types() {
337
+ return apply_filters( $this->get_key() . '_widget_types', $this->widget_types );
338
+ }
339
+
340
  /**
341
  * We log the user website and product version.
342
  *
343
  * @return bool Either we log the data or not.
344
  */
345
  public function is_logger_active() {
346
+ // If is not available on WordPress log this automatically.
347
  if ( ! $this->is_wordpress_available() ) {
348
  return true;
349
  } else {
350
+ $pro_slug = $this->get_pro_slug();
351
+ if ( ! empty( $pro_slug ) ) {
352
+
353
+ $all_products = ThemeIsle_SDK_Loader::get_products();
354
+ if ( isset( $all_products[ $pro_slug ] ) ) {
355
+ return true;
356
+ }
357
+ }
358
+
359
+ return ( get_option( $this->get_key() . '_logger_flag', 'no' ) === 'yes' );
360
+
361
+ }
362
+ }
363
+
364
+ /**
365
+ * Returns the pro slug, if available.
366
+ *
367
+ * @return string The pro slug.
368
+ */
369
+ public function get_pro_slug() {
370
+ return $this->pro_slug;
371
+ }
372
+
373
+ /**
374
+ * Return the install timestamp.
375
+ *
376
+ * @return int The install timestamp.
377
+ */
378
+ public function get_install_time() {
379
+ return $this->install;
380
+ }
381
+
382
+ /**
383
+ * We require feedback on uninstall.
384
+ *
385
+ * @return bool Either we should require feedback on uninstall or not.
386
+ */
387
+ public function require_uninstall_feedback() {
388
+ if ( $this->get_type() == 'theme' && ! $this->is_external_author() ) {
389
+ return ! get_transient( 'ti_sdk_pause_' . $this->get_key(), false );
390
+ }
391
+
392
+ if ( $this->get_type() == 'plugin' ) {
393
+
394
+ return true;
395
  }
396
+
397
+ return false;
398
  }
399
 
400
  }
vendor/codeinwp/themeisle-sdk/class-themeisle-sdk-widget-dashboard-blog.php ADDED
@@ -0,0 +1,374 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * The blog dashboard model class for ThemeIsle SDK
4
+ *
5
+ * @package ThemeIsleSDK
6
+ * @subpackage Widgets
7
+ * @copyright Copyright (c) 2017, Marius Cristea
8
+ * @license http://opensource.org/licenses/gpl-3.0.php GNU Public License
9
+ * @since 1.0.0
10
+ */
11
+ // Exit if accessed directly.
12
+ if ( ! defined( 'ABSPATH' ) ) {
13
+ exit;
14
+ }
15
+ if ( ! class_exists( 'ThemeIsle_SDK_Widget_Dashboard_Blog' ) ) :
16
+ /**
17
+ * Blog dashboard widget model for ThemeIsle SDK.
18
+ */
19
+ class ThemeIsle_SDK_Widget_Dashboard_Blog extends ThemeIsle_SDK_Widget {
20
+
21
+ /**
22
+ * @var array instance The instances.
23
+ */
24
+ protected $product;
25
+ /**
26
+ * @var array Feed items.
27
+ */
28
+ private $items = array();
29
+
30
+ /**
31
+ * ThemeIsle_SDK_Widget_Dashboard_Blog constructor.
32
+ *
33
+ * @param ThemeIsle_SDK_Product $product_object The product object.
34
+ */
35
+ public function __construct( $product_object ) {
36
+ $this->product = $product_object;
37
+ parent::__construct( $product_object );
38
+ }
39
+
40
+ /**
41
+ * Registers the hooks
42
+ */
43
+ public function setup_hooks_child() {
44
+ $this->setup_vars();
45
+ add_action( 'wp_dashboard_setup', array( &$this, 'add_widget' ) );
46
+ add_action( 'wp_network_dashboard_setup', array( &$this, 'add_widget' ) );
47
+ add_filter( 'themeisle_sdk_recommend_plugin_or_theme', array( &$this, 'recommend_plugin_or_theme' ) );
48
+ }
49
+
50
+ /**
51
+ * Setup class variables
52
+ */
53
+ function setup_vars() {
54
+ $this->dashboard_name = apply_filters( 'themeisle_sdk_dashboard_widget_name', 'WordPress Guides/Tutorials' );
55
+ $this->feeds = apply_filters(
56
+ 'themeisle_sdk_dashboard_widget_feeds', array(
57
+ 'https://themeisle.com/blog/feed',
58
+ )
59
+ );
60
+ }
61
+
62
+ /**
63
+ * Add widget to the dashboard
64
+ *
65
+ * @return string|void
66
+ */
67
+ function add_widget() {
68
+ global $wp_meta_boxes;
69
+ if ( isset( $wp_meta_boxes['dashboard']['normal']['core']['themeisle'] ) ) {
70
+ return;
71
+ }
72
+ wp_add_dashboard_widget(
73
+ 'themeisle', $this->dashboard_name, array(
74
+ &$this,
75
+ 'render_dashboard_widget',
76
+ )
77
+ );
78
+ }
79
+
80
+ /**
81
+ * Setup feed items.
82
+ */
83
+ private function setup_feeds() {
84
+ $items_normalized = array();
85
+ if ( false === ( $items_normalized = get_transient( 'themeisle_sdk_feed_items' ) ) ) {
86
+ // Load SimplePie Instance
87
+ $feed = fetch_feed( $this->feeds );
88
+ // TODO report error when is an error loading the feed
89
+ if ( is_wp_error( $feed ) ) {
90
+ return;
91
+ }
92
+
93
+ $items = $feed->get_items( 0, 5 );
94
+ foreach ( (array) $items as $item ) {
95
+ $items_normalized[] = array(
96
+ 'title' => $item->get_title(),
97
+ 'date' => $item->get_date( 'U' ),
98
+ 'link' => $item->get_permalink(),
99
+ );
100
+ }
101
+ set_transient( 'themeisle_sdk_feed_items', $items_normalized, 48 * HOUR_IN_SECONDS );
102
+ }
103
+ $this->items = $items_normalized;
104
+ }
105
+
106
+ /**
107
+ * Render widget content
108
+ */
109
+ function render_dashboard_widget() {
110
+ $this->setup_feeds();
111
+ ?>
112
+ <style type="text/css">
113
+ #themeisle ul {
114
+ margin-bottom: 0px;
115
+ }
116
+
117
+ #themeisle ul li.ti-dw-recommend-item {
118
+
119
+ padding-left: 7px;
120
+ border-top: 1px solid #eee;
121
+
122
+ margin-bottom: 0px;
123
+ padding-top: 6px;
124
+ }
125
+
126
+ #themeisle h2.hndle {
127
+ background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAdCAYAAABWk2cPAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAALfSURBVEhL7VW/ayJBFL7/5ZqziBzIcSCHxUE4hAiCgnAQsBASOAikEAIeCAaCiJAyIBICQURYwoJoEUmxa6MWioWxURu30mq77b57s86acX+oOQhp8sFjdmbfzrfve2/efMI74IP0VTB0gz/th/8iNbQxOt0eOmoN6WgAn78cwJeoYcLf78KrSPVneU3isEQZoz0D3pt03jhDrDTERJXxWM3A5yAOIPmgce/t2IvUGFzjkDa+7C5RTx0gWbxG0v8bBXUG3fLReigk4rh55gtbsAfpGDfhVTS+VA19bYbH7BkqU/56AzNU7nrYpbI7qfbEcxfBkSOHJGO27Vk0htqEYoXvARdS+tsEJyAJY1GRkOxnGTdq2zuaRZOkJ1Wi1+h7ODlJB/l1kYRKZVyKhMwoSmUw5M4uWMhIcl9f1l1qB2m/aMkZQIE2d5BeDTGiSD0VfC4jZPmSKiO+LMJGuoRE1bkiOIW00CAdW3NuxzLmxhD1hyHmug7dbBRD9KdLc4dR6Zfgn0ffXN2EjVSMLIcOrWxuwiyyPhYGI7X0m/agqPeIib5+yit/LWILKYuUlrTa5kbMwjko7J0AXc1RLZwifRF58Us1YXMzYSMV5WQ5ZWsG5VnYaG1BxM7zKBRzOAkHac460gxK9sUnVBqbu9rhKCS9lRaq1/poCeUq7tL6uPnjSLeoBRo9/KXjslqP4Na1gbiQssiULK9gP+VVqPnFQMblnwi+WmTfIji5amLES1mn/mz9yCFVuddZdiFlIJlTK+JtH2/AaPMogzipzrZ+4yQ1qCL1JSaNDL6bf81y1aOb5R6Vhow6G1tPNK9Borl0R2NLRiEaxNEF9Wa3yrHBSarTbeHot7ySqVmYR4AucDYuaJyzkfptZ0e/FeGa03m3jOQPizCAo0QG9W2ktL5HgGt45JRgaBh1x9R1WHY0KCTnLZOW5Kw0miuZq01ITGa6Z18Db9I3xAfpm+IdSIF/du91gSA2+I8AAAAASUVORK5CYII=');
128
+ background-repeat: no-repeat;
129
+ background-position: 90% 50%;
130
+ background-size: 29px;
131
+ }
132
+
133
+ .ti-dw-feed-item {
134
+ display: flex;
135
+ align-items: center;
136
+ }
137
+
138
+ .ti-dw-feed-item a {
139
+ float: left;
140
+ width: 89.9%;
141
+ }
142
+
143
+ .ti-dw-feed-item .ti-dw-day-container {
144
+ width: 100%;
145
+ letter-spacing: 3px;
146
+ display: block;
147
+ }
148
+
149
+ .ti-dw-feed-item .ti-dw-month-container {
150
+
151
+ width: 100%;
152
+ display: block;
153
+ font-weight: 600;
154
+ padding: 0px;
155
+ margin-top: -6px;
156
+ text-transform: uppercase;
157
+ font-size: 10px;
158
+ letter-spacing: 1px;
159
+ }
160
+
161
+ .ti-dw-feed-item .ti-dw-date-container {
162
+ float: left;
163
+ min-height: 30px;
164
+ margin-right: 0.1%;
165
+ width: 10%;
166
+ text-align: center;
167
+ }
168
+
169
+ .ti-dw-recommend-item span {
170
+ color: #72777c;
171
+ }
172
+
173
+ </style>
174
+ <ul>
175
+ <?php
176
+ foreach ( $this->items as $item ) {
177
+ ?>
178
+ <li class="ti-dw-feed-item"><span class="ti-dw-date-container"><span
179
+ class="ti-dw-day-container"><?php echo date( 'd', $item['date'] ); ?></span> <span
180
+ class="ti-dw-month-container"><?php echo substr( date( 'M', $item['date'] ), 0, 3 ); ?></span></span><a
181
+ href="
182
+ <?php
183
+ echo add_query_arg(
184
+ array(
185
+ 'utm_campaign' => 'feed',
186
+ 'utm_medium' => 'dashboard_widget',
187
+ ), $item['link']
188
+ );
189
+ ?>
190
+ " target="_blank"><?php echo $item['title']; ?></a>
191
+ <div class="clear"></div>
192
+ </li>
193
+ <?php
194
+ }
195
+
196
+ $recommend = apply_filters( 'themeisle_sdk_recommend_plugin_or_theme', array() );
197
+ if ( is_array( $recommend ) && ! empty( $recommend ) ) {
198
+
199
+ $type = $recommend['type'];
200
+ if ( ( $type == 'theme' && current_user_can( 'install_themes' ) ) || ( $type == 'plugin' && current_user_can( 'install_plugins' ) ) ) {
201
+ add_thickbox();
202
+ $url = add_query_arg(
203
+ array(
204
+ 'theme' => $recommend['slug'],
205
+ ), network_admin_url( 'theme-install.php' )
206
+ );
207
+
208
+ if ( 'plugin' === $type ) {
209
+
210
+ $url = add_query_arg(
211
+ array(
212
+ 'tab' => 'plugin-information',
213
+ 'plugin' => $recommend['slug'],
214
+ ), network_admin_url( 'plugin-install.php' )
215
+ );
216
+ }
217
+ ?>
218
+ <li class="ti-dw-recommend-item ">
219
+ <span class="ti-dw-recommend"><?php echo apply_filters( 'themeisle_sdk_dashboard_popular_label', sprintf( 'Popular %s', ucwords( $type ) ) ); ?>
220
+ : </span>
221
+ <?php
222
+ echo trim(
223
+ str_replace(
224
+ array(
225
+ 'lite',
226
+ 'Lite',
227
+ ), '', $recommend['name']
228
+ )
229
+ );
230
+ ?>
231
+ (<a class="thickbox open-plugin-details-modal"
232
+ href="<?php echo $url . '&TB_iframe=true&width=600&height=500'; ?>"><?php echo apply_filters( 'themeisle_sdk_dashboard_install_label', 'Install' ); ?></a>)
233
+ </li>
234
+
235
+ <?php
236
+ }
237
+ }
238
+ ?>
239
+ </ul>
240
+
241
+ <?php
242
+
243
+ }
244
+
245
+ /**
246
+ * Either the current product is installed or not.
247
+ *
248
+ * @param array $val The current recommended product.
249
+ *
250
+ * @return bool Either we should exclude the plugin or not.
251
+ */
252
+ public function remove_current_products( $val ) {
253
+ if ( $val['type'] === 'theme' ) {
254
+ $exist = wp_get_theme( $val['slug'] );
255
+
256
+ return ! $exist->exists();
257
+ } else {
258
+ $all_plugins = array_keys( get_plugins() );
259
+ foreach ( $all_plugins as $slug ) {
260
+ if ( strpos( $slug, $val['slug'] ) !== false ) {
261
+ return false;
262
+ }
263
+ }
264
+
265
+ return true;
266
+ }
267
+ }
268
+
269
+ /**
270
+ * Fetch themes from wporg api.
271
+ *
272
+ * @param string $author The author name.
273
+ *
274
+ * @return array The list of themes.
275
+ */
276
+ function get_themes_from_wporg( $author ) {
277
+ $products = wp_remote_get(
278
+ 'https://api.wordpress.org/themes/info/1.1/?action=query_themes&request[author]=' . $author . '&request[per_page]=30&request[fields][active_installs]=true'
279
+ );
280
+ $products = json_decode( wp_remote_retrieve_body( $products ) );
281
+ if ( is_object( $products ) ) {
282
+ $products = isset( $products->themes ) ? $products->themes : array();
283
+ } else {
284
+ $products = array();
285
+ }
286
+
287
+ return $products;
288
+ }
289
+
290
+ /**
291
+ * Fetch plugin from wporg api.
292
+ *
293
+ * @param string $author The author slug.
294
+ *
295
+ * @return array The list of plugins for the selected author.
296
+ */
297
+ function get_plugins_from_wporg( $author ) {
298
+ $products = wp_remote_get(
299
+ 'https://api.wordpress.org/plugins/info/1.1/?action=query_plugins&request[author]=' . $author . '&request[author]=codeinwp&request[per_page]=20&request[fields][active_installs]=true'
300
+ );
301
+ $products = json_decode( wp_remote_retrieve_body( $products ) );
302
+ if ( is_object( $products ) ) {
303
+ $products = isset( $products->plugins ) ? $products->plugins : array();
304
+ } else {
305
+ $products = array();
306
+ }
307
+
308
+ return $products;
309
+ }
310
+
311
+ /**
312
+ * Fetch products from the recomended section.
313
+ *
314
+ * @return array|mixed The list of products to use in recomended section.
315
+ */
316
+ function get_product_from_api() {
317
+ if ( false === ( $products = get_transient( 'themeisle_sdk_products' ) ) ) {
318
+ $products = array();
319
+ $themeisle_themes = $this->get_themes_from_wporg( 'themeisle' );
320
+ $codeinwp_themes = $this->get_themes_from_wporg( 'codeinwp' );
321
+
322
+ $themeisle_plugins = $this->get_plugins_from_wporg( 'themeisle' );
323
+ $codeinwp_plugins = $this->get_plugins_from_wporg( 'codeinwp' );
324
+
325
+ $all_themes = array_merge( $themeisle_themes, $codeinwp_themes );
326
+ foreach ( $all_themes as $theme ) {
327
+ if ( $theme->active_installs < 4999 ) {
328
+ continue;
329
+ }
330
+ $products[] = array(
331
+ 'name' => $theme->name,
332
+ 'type' => 'theme',
333
+ 'slug' => $theme->slug,
334
+ 'installs' => $theme->active_installs,
335
+ );
336
+ }
337
+ $all_plugins = array_merge( $themeisle_plugins, $codeinwp_plugins );
338
+ foreach ( $all_plugins as $plugin ) {
339
+ if ( $plugin->active_installs < 5999 ) {
340
+ continue;
341
+ }
342
+ $products[] = array(
343
+ 'name' => $plugin->name,
344
+ 'type' => 'plugin',
345
+ 'slug' => $plugin->slug,
346
+ 'installs' => $plugin->active_installs,
347
+ );
348
+ }
349
+ set_transient( 'themeisle_sdk_products', $products, 6 * HOUR_IN_SECONDS );
350
+ }
351
+
352
+ return $products;
353
+ }
354
+
355
+ /**
356
+ * Contact the API and fetch the recommended plugins/themes
357
+ */
358
+ function recommend_plugin_or_theme() {
359
+ $products = $this->get_product_from_api();
360
+ if ( ! is_array( $products ) ) {
361
+ $products = array();
362
+ }
363
+ $products = array_filter( $products, array( $this, 'remove_current_products' ) );
364
+ $products = array_merge( $products );
365
+ if ( count( $products ) > 1 ) {
366
+ shuffle( $products );
367
+ $products = array_slice( $products, 0, 1 );
368
+ }
369
+ $to_recommend = isset( $products[0] ) ? $products[0] : $products;
370
+
371
+ return $to_recommend;
372
+ }
373
+ }
374
+ endif;
vendor/codeinwp/themeisle-sdk/class-themeisle-sdk-widget.php ADDED
@@ -0,0 +1,50 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * The widget model class for ThemeIsle SDK
4
+ *
5
+ * @package ThemeIsleSDK
6
+ * @subpackage Widgets
7
+ * @copyright Copyright (c) 2017, Marius Cristea
8
+ * @license http://opensource.org/licenses/gpl-3.0.php GNU Public License
9
+ * @since 1.0.0
10
+ */
11
+ // Exit if accessed directly.
12
+ if ( ! defined( 'ABSPATH' ) ) {
13
+ exit;
14
+ }
15
+ if ( ! class_exists( 'ThemeIsle_SDK_Widget' ) ) :
16
+ /**
17
+ * Widget model for ThemeIsle SDK.
18
+ */
19
+ abstract class ThemeIsle_SDK_Widget {
20
+ /**
21
+ * @var ThemeIsle_SDK_Product $product Themeisle Product.
22
+ */
23
+ protected $product;
24
+
25
+ /**
26
+ * ThemeIsle_SDK_Widget constructor.
27
+ *
28
+ * @param ThemeIsle_SDK_Product $product_object Product Object.
29
+ */
30
+ public function __construct( $product_object ) {
31
+ if ( $product_object instanceof ThemeIsle_SDK_Product ) {
32
+ $this->product = $product_object;
33
+ }
34
+ $this->setup_hooks();
35
+ }
36
+
37
+ /**
38
+ * Registers the hooks and then delegates to the child
39
+ */
40
+ public function setup_hooks() {
41
+ $this->setup_hooks_child();
42
+ }
43
+
44
+ /**
45
+ * Abstract function for delegating to the child
46
+ */
47
+ protected abstract function setup_hooks_child();
48
+
49
+ }
50
+ endif;
vendor/codeinwp/themeisle-sdk/class-themeisle-sdk-widgets-factory.php ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * The widgets factory class for ThemeIsle SDK
4
+ *
5
+ * @package ThemeIsleSDK
6
+ * @subpackage Widgets
7
+ * @copyright Copyright (c) 2017, Marius Cristea
8
+ * @license http://opensource.org/licenses/gpl-3.0.php GNU Public License
9
+ * @since 1.0.0
10
+ */
11
+ // Exit if accessed directly.
12
+ if ( ! defined( 'ABSPATH' ) ) {
13
+ exit;
14
+ }
15
+ if ( ! class_exists( 'ThemeIsle_SDK_Widgets_Factory' ) ) :
16
+ /**
17
+ * Widgets factory model for ThemeIsle SDK.
18
+ */
19
+ class ThemeIsle_SDK_Widgets_Factory {
20
+
21
+ /**
22
+ * ThemeIsle_SDK_Widgets_Factory constructor.
23
+ *
24
+ * @param ThemeIsle_SDK_Product $product_object Product Object.
25
+ * @param array $widgets the widgets.
26
+ */
27
+ public function __construct( $product_object, $widgets ) {
28
+ if ( $product_object instanceof ThemeIsle_SDK_Product && $widgets && is_array( $widgets ) ) {
29
+ foreach ( $widgets as $widget ) {
30
+ $class = 'ThemeIsle_SDK_Widget_' . str_replace( ' ', '_', ucwords( str_replace( '_', ' ', $widget ) ) );
31
+ $instance = new $class( $product_object );
32
+ $instance->setup_hooks();
33
+ }
34
+ }
35
+ }
36
+ }
37
+ endif;
vendor/codeinwp/themeisle-sdk/composer.json CHANGED
@@ -14,11 +14,8 @@
14
  }
15
  ],
16
  "autoload": {
17
- "classmap": [
18
- "class-themeisle-sdk-loader.php",
19
- "class-themeisle-sdk-product.php",
20
- "class-themeisle-sdk-logger.php",
21
- "class-themeisle-sdk-licenser.php"
22
  ]
23
  },
24
  "support": {
14
  }
15
  ],
16
  "autoload": {
17
+ "files": [
18
+ "load.php"
 
 
 
19
  ]
20
  },
21
  "support": {
vendor/codeinwp/themeisle-sdk/load.php ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Loader for the ThemeIsleSDK
4
+ *
5
+ * Logic for loading always the latest SDK from the installed themes/plugins.
6
+ *
7
+ * @package ThemeIsleSDK
8
+ * @copyright Copyright (c) 2017, Marius Cristea
9
+ * @license http://opensource.org/licenses/gpl-2.0.php GNU Public License
10
+ * @since 1.1.0
11
+ */
12
+
13
+ // Current SDK version and path.
14
+ $themeisle_sdk_version = '1.5.6';
15
+ $themeisle_sdk_path = dirname( __FILE__ );
16
+
17
+ global $themeisle_sdk_max_version;
18
+ global $themeisle_sdk_max_path;
19
+
20
+ if ( version_compare( $themeisle_sdk_version, $themeisle_sdk_max_version ) >= 0 ) {
21
+ $themeisle_sdk_max_version = $themeisle_sdk_version;
22
+ $themeisle_sdk_max_path = $themeisle_sdk_path;
23
+ }
24
+
25
+ // load the latest sdk version from the active Themeisle products
26
+ if ( ! function_exists( 'themeisle_sdk_load_latest' ) ) :
27
+ /**
28
+ * Always load the latest sdk version.
29
+ */
30
+ function themeisle_sdk_load_latest() {
31
+ global $themeisle_sdk_max_path;
32
+ require_once $themeisle_sdk_max_path . '/start.php';
33
+ }
34
+ endif;
35
+ add_action( 'init', 'themeisle_sdk_load_latest' );
vendor/codeinwp/themeisle-sdk/phpcs.xml DELETED
@@ -1,34 +0,0 @@
1
- <?xml version="1.0"?>
2
- <ruleset name="Themeisle">
3
- <description>Themeisle rules for PHP_CodeSnifferr</description>
4
-
5
- <file>.</file>
6
-
7
- <exclude-pattern>node_modules/*</exclude-pattern>
8
- <exclude-pattern>vendor/*</exclude-pattern>
9
- <exclude-pattern>lib/*</exclude-pattern>
10
- <exclude-pattern>old/*</exclude-pattern>
11
- <exclude-pattern>*.min.js</exclude-pattern>
12
- <exclude-pattern>*.min.css</exclude-pattern>
13
- <rule ref="WordPress-Core">
14
- <exclude name="Squiz.Commenting.FileComment.SpacingAfterComment"/>
15
- <exclude name="Squiz.Commenting.FunctionComment.MissingParamTag"/>
16
- <exclude name="Squiz.Commenting.InlineComment.InvalidEndChar"/>
17
- <exclude name="Generic.Commenting.DocComment.MissingShort"/>
18
- <exclude name="Squiz.Commenting.InlineComment.NotCapital"/>
19
- <exclude name="Squiz.Commenting.LongConditionClosingComment.Missing"/>
20
- <exclude name="Squiz.Commenting.LongConditionClosingComment.Invalid"/>
21
- <exclude name="WordPress.NamingConvention.ValidVariableName.StringNotSnakeCase"/>
22
- <exclude name="WordPress.NamingConventions.ValidVariableName.NotSnakeCase"/>
23
- <exclude name="WordPress.PHP.YodaConditions.NotYoda"/>
24
- <exclude name="Squiz.PHP.DisallowMultipleAssignments" />
25
- </rule>
26
- <rule ref="WordPress-Docs">
27
-
28
- </rule>
29
-
30
- <rule ref="Squiz.Commenting.FunctionComment.ScalarTypeHintMissing">
31
- <severity>0</severity>
32
- </rule>
33
-
34
- </ruleset>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/codeinwp/themeisle-sdk/start.php ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * File responsible for sdk files loading.
4
+ *
5
+ * @package ThemeIsleSDK
6
+ * @copyright Copyright (c) 2017, Marius Cristea
7
+ * @license http://opensource.org/licenses/gpl-2.0.php GNU Public License
8
+ * @since 1.1.0
9
+ */
10
+ $products = apply_filters( 'themeisle_sdk_products', array() );
11
+ $path = dirname( __FILE__ );
12
+ $files_to_load = array(
13
+ 'class-themeisle-sdk-loader.php',
14
+ 'class-themeisle-sdk-product.php',
15
+ 'class-themeisle-sdk-logger.php',
16
+ 'class-themeisle-sdk-licenser.php',
17
+ 'class-themeisle-sdk-feedback-factory.php',
18
+ 'class-themeisle-sdk-feedback.php',
19
+ 'class-themeisle-sdk-feedback-deactivate.php',
20
+ 'class-themeisle-sdk-feedback-review.php',
21
+ 'class-themeisle-sdk-notification-manager.php',
22
+ 'class-themeisle-sdk-widget.php',
23
+ 'class-themeisle-sdk-widget-dashboard-blog.php',
24
+ 'class-themeisle-sdk-widgets-factory.php',
25
+ );
26
+
27
+ foreach ( $files_to_load as $file ) {
28
+ $file_path = $path . '/' . $file;
29
+ if ( is_readable( $file_path ) ) {
30
+ require_once $file_path;
31
+ }
32
+ }
33
+ foreach ( $products as $product ) {
34
+ ThemeIsle_SDK_Loader::init_product( $product );
35
+ }
vendor/composer/autoload_classmap.php CHANGED
@@ -6,8 +6,4 @@ $vendorDir = dirname(dirname(__FILE__));
6
  $baseDir = dirname($vendorDir);
7
 
8
  return array(
9
- 'ThemeIsle_SDK_Licenser' => $vendorDir . '/codeinwp/themeisle-sdk/class-themeisle-sdk-licenser.php',
10
- 'ThemeIsle_SDK_Loader' => $vendorDir . '/codeinwp/themeisle-sdk/class-themeisle-sdk-loader.php',
11
- 'ThemeIsle_SDK_Logger' => $vendorDir . '/codeinwp/themeisle-sdk/class-themeisle-sdk-logger.php',
12
- 'ThemeIsle_SDK_Product' => $vendorDir . '/codeinwp/themeisle-sdk/class-themeisle-sdk-product.php',
13
  );
6
  $baseDir = dirname($vendorDir);
7
 
8
  return array(
 
 
 
 
9
  );
vendor/composer/autoload_files.php ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ // autoload_files.php @generated by Composer
4
+
5
+ $vendorDir = dirname(dirname(__FILE__));
6
+ $baseDir = dirname($vendorDir);
7
+
8
+ return array(
9
+ '957c51f8f334b5ea3be310bfb8b3492c' => $vendorDir . '/codeinwp/themeisle-sdk/load.php',
10
+ );
vendor/composer/autoload_real.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
- class ComposerAutoloaderInitd9bb93e455577b6aba3346f179c8a570
6
  {
7
  private static $loader;
8
 
@@ -19,9 +19,9 @@ class ComposerAutoloaderInitd9bb93e455577b6aba3346f179c8a570
19
  return self::$loader;
20
  }
21
 
22
- spl_autoload_register(array('ComposerAutoloaderInitd9bb93e455577b6aba3346f179c8a570', 'loadClassLoader'), true, true);
23
  self::$loader = $loader = new \Composer\Autoload\ClassLoader();
24
- spl_autoload_unregister(array('ComposerAutoloaderInitd9bb93e455577b6aba3346f179c8a570', 'loadClassLoader'));
25
 
26
  $map = require __DIR__ . '/autoload_namespaces.php';
27
  foreach ($map as $namespace => $path) {
@@ -40,6 +40,20 @@ class ComposerAutoloaderInitd9bb93e455577b6aba3346f179c8a570
40
 
41
  $loader->register(true);
42
 
 
 
 
 
 
43
  return $loader;
44
  }
45
  }
 
 
 
 
 
 
 
 
 
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
+ class ComposerAutoloaderInit10fe3fd2e8ddae0802151df1d2b0e7cf
6
  {
7
  private static $loader;
8
 
19
  return self::$loader;
20
  }
21
 
22
+ spl_autoload_register(array('ComposerAutoloaderInit10fe3fd2e8ddae0802151df1d2b0e7cf', 'loadClassLoader'), true, true);
23
  self::$loader = $loader = new \Composer\Autoload\ClassLoader();
24
+ spl_autoload_unregister(array('ComposerAutoloaderInit10fe3fd2e8ddae0802151df1d2b0e7cf', 'loadClassLoader'));
25
 
26
  $map = require __DIR__ . '/autoload_namespaces.php';
27
  foreach ($map as $namespace => $path) {
40
 
41
  $loader->register(true);
42
 
43
+ $includeFiles = require __DIR__ . '/autoload_files.php';
44
+ foreach ($includeFiles as $fileIdentifier => $file) {
45
+ composerRequire10fe3fd2e8ddae0802151df1d2b0e7cf($fileIdentifier, $file);
46
+ }
47
+
48
  return $loader;
49
  }
50
  }
51
+
52
+ function composerRequire10fe3fd2e8ddae0802151df1d2b0e7cf($fileIdentifier, $file)
53
+ {
54
+ if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
55
+ require $file;
56
+
57
+ $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
58
+ }
59
+ }
vendor/composer/autoload_real_52.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  // autoload_real_52.php generated by xrstf/composer-php52
4
 
5
- class ComposerAutoloaderInita068fc18cd43301bd6e505f325f8155c {
6
  private static $loader;
7
 
8
  public static function loadClassLoader($class) {
@@ -19,9 +19,9 @@ class ComposerAutoloaderInita068fc18cd43301bd6e505f325f8155c {
19
  return self::$loader;
20
  }
21
 
22
- spl_autoload_register(array('ComposerAutoloaderInita068fc18cd43301bd6e505f325f8155c', 'loadClassLoader'), true /*, true */);
23
  self::$loader = $loader = new xrstf_Composer52_ClassLoader();
24
- spl_autoload_unregister(array('ComposerAutoloaderInita068fc18cd43301bd6e505f325f8155c', 'loadClassLoader'));
25
 
26
  $vendorDir = dirname(dirname(__FILE__));
27
  $baseDir = dirname($vendorDir);
@@ -39,6 +39,8 @@ class ComposerAutoloaderInita068fc18cd43301bd6e505f325f8155c {
39
 
40
  $loader->register(true);
41
 
 
 
42
  return $loader;
43
  }
44
  }
2
 
3
  // autoload_real_52.php generated by xrstf/composer-php52
4
 
5
+ class ComposerAutoloaderInit0fc127e51dc28fab98c5e4f3a39d42f1 {
6
  private static $loader;
7
 
8
  public static function loadClassLoader($class) {
19
  return self::$loader;
20
  }
21
 
22
+ spl_autoload_register(array('ComposerAutoloaderInit0fc127e51dc28fab98c5e4f3a39d42f1', 'loadClassLoader'), true /*, true */);
23
  self::$loader = $loader = new xrstf_Composer52_ClassLoader();
24
+ spl_autoload_unregister(array('ComposerAutoloaderInit0fc127e51dc28fab98c5e4f3a39d42f1', 'loadClassLoader'));
25
 
26
  $vendorDir = dirname(dirname(__FILE__));
27
  $baseDir = dirname($vendorDir);
39
 
40
  $loader->register(true);
41
 
42
+ require $vendorDir . '/codeinwp/themeisle-sdk/load.php';
43
+
44
  return $loader;
45
  }
46
  }
vendor/composer/installed.json CHANGED
@@ -38,24 +38,21 @@
38
  "version_normalized": "9999999-dev",
39
  "source": {
40
  "type": "git",
41
- "url": "https://github.com/Codeinwp/themeisle-sdk.git",
42
- "reference": "beb20b65c6916d14e2222d40252a48faa440e72e"
43
  },
44
  "dist": {
45
  "type": "zip",
46
- "url": "https://api.github.com/repos/Codeinwp/themeisle-sdk/zipball/beb20b65c6916d14e2222d40252a48faa440e72e",
47
- "reference": "beb20b65c6916d14e2222d40252a48faa440e72e",
48
  "shasum": ""
49
  },
50
- "time": "2017-03-30 15:34:04",
51
  "type": "library",
52
- "installation-source": "source",
53
  "autoload": {
54
- "classmap": [
55
- "class-themeisle-sdk-loader.php",
56
- "class-themeisle-sdk-product.php",
57
- "class-themeisle-sdk-logger.php",
58
- "class-themeisle-sdk-licenser.php"
59
  ]
60
  },
61
  "license": [
@@ -74,8 +71,7 @@
74
  "wordpress"
75
  ],
76
  "support": {
77
- "issues": "https://github.com/Codeinwp/themeisle-sdk/issues",
78
- "source": "https://github.com/Codeinwp/themeisle-sdk/tree/master"
79
  }
80
  }
81
  ]
38
  "version_normalized": "9999999-dev",
39
  "source": {
40
  "type": "git",
41
+ "url": "git@github.com:Codeinwp/themeisle-sdk.git",
42
+ "reference": "1fb829fd268e739864b6f1822239c1112d80853f"
43
  },
44
  "dist": {
45
  "type": "zip",
46
+ "url": "https://api.github.com/repos/Codeinwp/themeisle-sdk/zipball/1fb829fd268e739864b6f1822239c1112d80853f",
47
+ "reference": "1fb829fd268e739864b6f1822239c1112d80853f",
48
  "shasum": ""
49
  },
50
+ "time": "2017-08-22 16:09:34",
51
  "type": "library",
52
+ "installation-source": "dist",
53
  "autoload": {
54
+ "files": [
55
+ "load.php"
 
 
 
56
  ]
57
  },
58
  "license": [
71
  "wordpress"
72
  ],
73
  "support": {
74
+ "issues": "https://github.com/Codeinwp/themeisle-sdk/issues"
 
75
  }
76
  }
77
  ]