Responsive Add Ons - Version 2.0.6

Version Description

  • 18th September 2019 =
  • Rendered Ready sites importer page on scroll, Added ratings link on responsive-add-ons page
Download this release

Release Info

Developer cyberchimps
Plugin Icon 128x128 Responsive Add Ons
Version 2.0.6
Comparing to
See all releases

Code changes from version 2.0.5 to 2.0.6

admin/css/responsive-ready-sites-admin.css CHANGED
@@ -273,13 +273,14 @@ responsive-ready-site-import-free.button.installing:before {
273
  }
274
  .demo-type.pro{
275
  position: absolute;
276
- right: -0.5em;
277
- top: -0.5em;
278
- background: #0073aa;
279
  z-index: 1;
280
  color: #fff;
281
  padding: 0.5em 1em;
282
  text-transform: uppercase;
 
283
  }
284
  .demo-type.free{
285
  display:none;
@@ -376,8 +377,35 @@ responsive-ready-site-import-free.button.installing:before {
376
  }
377
  .spinner-wrap{
378
  text-align: center;
379
- margin-top: 20%;
380
  }
381
  .spinner-wrap .spinner.is-active{
382
  float:none;
383
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
273
  }
274
  .demo-type.pro{
275
  position: absolute;
276
+ right: 0;
277
+ top: 0;
278
+ background: #ff793f;
279
  z-index: 1;
280
  color: #fff;
281
  padding: 0.5em 1em;
282
  text-transform: uppercase;
283
+ box-shadow: -2px 2px 5px rgba(0,0,0,0.1);
284
  }
285
  .demo-type.free{
286
  display:none;
377
  }
378
  .spinner-wrap{
379
  text-align: center;
 
380
  }
381
  .spinner-wrap .spinner.is-active{
382
  float:none;
383
  }
384
+ #responsive-theme-activation {
385
+ border: none;
386
+ padding: 20px;
387
+ }
388
+ #responsive-theme-activation .responsive-addons-message-inner {
389
+ display: flex;
390
+ -webkit-box-align: center;
391
+ align-items: center;
392
+ }
393
+ #responsive-theme-activation .responsive-addons-message-icon {
394
+ font-size: 20px;
395
+ }
396
+ #responsive-theme-activation .responsive-addons-message-content {
397
+ padding: 0 20px;
398
+ }
399
+ #responsive-theme-activation .responsive-addons-message-content .responsive-addons-message-actions {
400
+ margin-top: 10px;
401
+ }
402
+ #responsive-theme-activation .responsive-addons-message-content p{
403
+ padding: 0px;
404
+ margin: 0px;
405
+ }
406
+ @media screen and (max-width: 768px ) {
407
+ #responsive-theme-activation .responsive-addons-message-inner {
408
+ display: block;
409
+ text-align: center;
410
+ }
411
+ }
admin/images/responsive-thumbnail.jpg ADDED
Binary file
admin/js/render-responsive-ready-sites.js CHANGED
@@ -21,10 +21,13 @@
21
 
22
  active_site : '',
23
 
 
 
24
  init: function()
25
  {
26
  this._bind();
27
- this._getActiveSite();
 
28
  },
29
 
30
  /**
@@ -36,8 +39,11 @@
36
  */
37
  _bind: function()
38
  {
 
39
  $( document ).on( 'responsive-api-post-loaded' , ResponsiveSitesRender._reinitGrid );
 
40
  $( document ).on( 'responsive-get-active-demo-site-done' , ResponsiveSitesRender._loadFirstGrid );
 
41
  },
42
 
43
  _apiAddParam_site_url: function() {
@@ -62,24 +68,22 @@
62
  trigger = 'responsive-api-post-loaded';
63
  }
64
 
65
- // Add Params for API request.
66
- ResponsiveSitesRender._api_params = {};
67
-
68
- var per_page_val = 50;
69
-
70
- ResponsiveSitesRender._api_params['per_page'] = per_page_val;
71
 
 
 
72
  ResponsiveSitesRender._apiAddParam_site_url();
73
 
74
  // API Request.
75
  var api_post = {
76
- id: '',
77
- slug: '?' + decodeURIComponent( $.param( ResponsiveSitesRender._api_params ) ),
78
  trigger: trigger,
79
  };
80
 
81
  ResponsiveSitesAPI._api_request( api_post );
82
-
83
  },
84
 
85
  /**
@@ -105,29 +109,33 @@
105
 
106
  var template = wp.template( 'responsive-sites-list' );
107
 
108
- $( 'body' ).addClass( 'page-builder-selected' );
109
  $( 'body' ).removeClass( 'loading-content' );
110
- $( '.filter-count .count' ).text( data.items_count );
111
-
112
- var active = ResponsiveSitesRender.active_site;
113
-
114
- var temp = data.items[0];
115
- $.each(
116
- data.items,
117
- function(i , val){
118
- if (val.slug == active) {
119
- data.items[i].active = true;
120
- data.items[0] = data.items[i];
121
- data.items[i] = temp;
122
- } else {
123
- data.items[i].active = false;
124
- }
125
- }
126
- );
127
 
128
- jQuery( '.spinner-wrap' ).hide();
 
 
 
 
 
 
 
 
 
 
 
 
 
129
  jQuery( '#responsive-ready-sites-admin-page' ).show();
130
  jQuery( '#responsive-sites' ).show().html( template( data ) );
 
 
 
 
 
 
 
 
 
131
  },
132
 
133
  // Returns if a value is an array.
@@ -135,29 +143,127 @@
135
  return value && typeof value === 'object' && value.constructor === Array;
136
  },
137
 
138
- // Get active site.
139
- _getActiveSite: function() {
140
- $.ajax(
141
- {
142
- url : responsiveSitesAdmin.ajaxurl,
143
- async: false,
144
- type : 'POST',
145
- data : {
146
- action : 'responsive-ready-sites-get-active-site',
147
- },
148
- }
149
- )
150
- .done(
151
- function ( response ) {
152
- if ( response.success ) {
153
- ResponsiveSitesRender.active_site = response.data.active_site;
154
- }
155
- $( document ).trigger( 'responsive-get-active-demo-site-done' );
 
 
 
 
 
 
156
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
157
  );
 
 
 
158
 
159
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
160
 
 
 
 
 
 
 
 
 
 
 
 
 
161
  };
162
 
163
  /**
21
 
22
  active_site : '',
23
 
24
+ active_site_data: {},
25
+
26
  init: function()
27
  {
28
  this._bind();
29
+ this._setActiveSite();
30
+ this._loadFirstGrid();
31
  },
32
 
33
  /**
39
  */
40
  _bind: function()
41
  {
42
+ $( document ).on( 'cyberchimps-sites-api-request-error' , ResponsiveSitesRender._addReadySiteSuggestionBlock );
43
  $( document ).on( 'responsive-api-post-loaded' , ResponsiveSitesRender._reinitGrid );
44
+ $( document ).on( 'responsive-api-post-loaded-on-scroll' , ResponsiveSitesRender._reinitGridScrolled );
45
  $( document ).on( 'responsive-get-active-demo-site-done' , ResponsiveSitesRender._loadFirstGrid );
46
+ $( document ).on( 'scroll' , ResponsiveSitesRender._scroll );
47
  },
48
 
49
  _apiAddParam_site_url: function() {
68
  trigger = 'responsive-api-post-loaded';
69
  }
70
 
71
+ if ( resetPagedCount ) {
72
+ ResponsiveSitesRender._resetPagedCount();
73
+ }
 
 
 
74
 
75
+ ResponsiveSitesRender._apiAddParam_per_page();
76
+ ResponsiveSitesRender._apiAddParam_page();
77
  ResponsiveSitesRender._apiAddParam_site_url();
78
 
79
  // API Request.
80
  var api_post = {
81
+ id: 'cyberchimps-sites',
82
+ slug: 'cyberchimps-sites?' + decodeURIComponent( $.param( ResponsiveSitesRender._api_params ) ),
83
  trigger: trigger,
84
  };
85
 
86
  ResponsiveSitesAPI._api_request( api_post );
 
87
  },
88
 
89
  /**
109
 
110
  var template = wp.template( 'responsive-sites-list' );
111
 
 
112
  $( 'body' ).removeClass( 'loading-content' );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
113
 
114
+ if ( responsiveSitesRender.active_site_data !== "" ) {
115
+ jQuery( 'body' ).attr( 'data-responsive-active-site-data', JSON.stringify( responsiveSitesRender.active_site_data ) );
116
+ data.active_site_data = JSON.parse( jQuery( 'body' ).attr( 'data-responsive-active-site-data' ) );
117
+ jQuery( 'body' ).attr( 'data-responsive-active-site', ResponsiveSitesRender.active_site );
118
+ } else {
119
+ data.active_site_data = "";
120
+ jQuery( 'body' ).attr( 'data-responsive-active-site',"" );
121
+ }
122
+
123
+ data.active_site = jQuery( 'body' ).attr( 'data-responsive-active-site' );
124
+
125
+ // Reset active site data during grid initialization.
126
+ jQuery( 'body' ).attr( 'data-responsive-active-site-data','' );
127
+
128
  jQuery( '#responsive-ready-sites-admin-page' ).show();
129
  jQuery( '#responsive-sites' ).show().html( template( data ) );
130
+
131
+ var items_count = data.items.length;
132
+ if ( items_count <= 0 ) {
133
+ $( '#responsive-ready-sites-admin-page' ).find( '.spinner' ).removeClass( 'is-active' );
134
+ $( '.responsive-sites-suggestions' ).remove();
135
+
136
+ } else {
137
+ $( 'body' ).removeClass( 'listed-all-sites' );
138
+ }
139
  },
140
 
141
  // Returns if a value is an array.
143
  return value && typeof value === 'object' && value.constructor === Array;
144
  },
145
 
146
+ // Set active site.
147
+ _setActiveSite: function() {
148
+ var active = responsiveSitesRender.active_site_data;
149
+ ResponsiveSitesRender.active_site = responsiveSitesRender.active_site_data.slug;
150
+ },
151
+
152
+ /**
153
+ * On Scroll
154
+ */
155
+ _scroll: function(event) {
156
+
157
+ if ( ! $( 'body' ).hasClass( 'listed-all-sites' ) ) {
158
+
159
+ var scrollDistance = jQuery( window ).scrollTop();
160
+
161
+ var responsiveSitesBottom = Math.abs( jQuery( window ).height() - jQuery( '#responsive-ready-sites-admin-page' ).offset().top - jQuery( '#responsive-ready-sites-admin-page' ).height() );
162
+ responsiveSitesBottom = responsiveSitesBottom - 100;
163
+ ajaxLoading = jQuery( 'body' ).data( 'scrolling' );
164
+
165
+ if (scrollDistance > responsiveSitesBottom && ajaxLoading == false) {
166
+ ResponsiveSitesRender._updatedPagedCount();
167
+
168
+ if ( ! $( '#responsive-sites .no-themes' ).length ) {
169
+ $( '#responsive-ready-sites-admin-page' ).find( '.spinner' ).addClass( 'is-active' );
170
  }
171
+
172
+ jQuery( 'body' ).data( 'scrolling', true );
173
+
174
+ ResponsiveSitesRender._showSites( false, 'responsive-api-post-loaded-on-scroll' );
175
+ }
176
+ }
177
+ },
178
+
179
+ /**
180
+ * Append sites on scroll.
181
+ *
182
+ * @param {object} event Object.
183
+ * @param {object} data API response data.
184
+ */
185
+ _reinitGridScrolled: function( event, data ) {
186
+
187
+ var template = wp.template( 'responsive-sites-list' );
188
+ data.active_site = jQuery( 'body' ).attr( 'data-responsive-active-site' );
189
+ data.active_site_data = jQuery( 'body' ).attr( 'data-responsive-active-site-data' );
190
+
191
+ if ( 'undefined' !== typeof data.items && data.items.length > 0 ) {
192
+
193
+ $( 'body' ).removeClass( 'loading-content' );
194
+
195
+ setTimeout(
196
+ function() {
197
+ jQuery( '#responsive-sites' ).append( template( data ) );
198
+
199
+ },
200
+ 800
201
  );
202
+ } else {
203
+ $( 'body' ).addClass( 'listed-all-sites' );
204
+ }
205
 
206
+ },
207
+
208
+ /**
209
+ * Reset Page Count.
210
+ */
211
+ _resetPagedCount: function() {
212
+
213
+ jQuery( 'body' ).attr( 'data-responsive-demo-last-request', '1' );
214
+ jQuery( 'body' ).attr( 'data-responsive-demo-paged', '1' );
215
+ jQuery( 'body' ).attr( 'data-scrolling', false );
216
+ jQuery( 'body' ).attr( 'data-responsive-active-site-data', '' );
217
+ jQuery( 'body' ).attr( 'data-responsive-active-site', '' );
218
+
219
+ },
220
+
221
+ /**
222
+ * Add 'page' to api request.
223
+ *
224
+ * @private
225
+ */
226
+ _apiAddParam_page: function() {
227
+ var page_val = parseInt( jQuery( 'body' ).attr( 'data-responsive-demo-paged' ) ) || 1;
228
+ ResponsiveSitesRender._api_params['page'] = page_val;
229
+ },
230
+
231
+ /**
232
+ * Update Page Count.
233
+ */
234
+ _updatedPagedCount: function() {
235
+ paged = parseInt( jQuery( 'body' ).attr( 'data-responsive-demo-paged' ) );
236
+ jQuery( 'body' ).attr( 'data-responsive-demo-paged', paged + 1 );
237
+ window.setTimeout(
238
+ function () {
239
+ jQuery( 'body' ).data( 'scrolling', false );
240
+ },
241
+ 800
242
+ );
243
+ },
244
+ /**
245
+ * Add per page Parameter.
246
+ */
247
+ _apiAddParam_per_page: function() {
248
+ var per_page_val = 6;
249
+ if ( responsiveSitesRender.sites && responsiveSitesRender.sites["per_page"] ) {
250
+ per_page_val = parseInt( responsiveSitesRender.sites["per_page"] );
251
+ }
252
+ ResponsiveSitesRender._api_params['per_page'] = per_page_val;
253
+ },
254
 
255
+ /**
256
+ * Add ready site suggestion Block
257
+ */
258
+ _addReadySiteSuggestionBlock: function() {
259
+ $( '#responsive-ready-sites-admin-page' ).find( '.spinner' ).removeClass( 'is-active' ).addClass( 'hide-me' );
260
+
261
+ $( 'body' ).addClass( 'listed-all-sites' );
262
+ var template = wp.template( 'responsive-sites-suggestions' );
263
+ if ( ! $( '.responsive-sites-suggestions' ).length ) {
264
+ $( '#responsive-sites' ).append( template );
265
+ }
266
+ },
267
  };
268
 
269
  /**
admin/js/responsive-ready-sites-admin.js CHANGED
@@ -159,7 +159,9 @@ var ResponsiveSitesAjaxQueue = (function() {
159
 
160
  current_site: [],
161
  current_screen: '',
162
- active_site: '',
 
 
163
  widgets_data: '',
164
  site_options_data: '',
165
 
@@ -176,6 +178,7 @@ var ResponsiveSitesAjaxQueue = (function() {
176
 
177
  init: function()
178
  {
 
179
  this._bind();
180
  },
181
 
@@ -236,7 +239,9 @@ var ResponsiveSitesAjaxQueue = (function() {
236
  dataType: 'json',
237
  data : {
238
  action : 'responsive-ready-sites-import-end',
239
- slug: ResponsiveSitesAdmin.active_site,
 
 
240
  }
241
  }
242
  )
@@ -261,6 +266,18 @@ var ResponsiveSitesAjaxQueue = (function() {
261
  );
262
  },
263
 
 
 
 
 
 
 
 
 
 
 
 
 
264
  /**
265
  * Import Site options Screen
266
  */
@@ -936,7 +953,7 @@ var ResponsiveSitesAjaxQueue = (function() {
936
 
937
  var site_id = $( '.responsive-ready-sites-advanced-options-wrap' ).find( '.demo_site_id' ).val();
938
 
939
- var apiURL = responsiveSitesAdmin.ApiURL + site_id;
940
 
941
  $.ajax(
942
  {
@@ -995,14 +1012,16 @@ var ResponsiveSitesAjaxQueue = (function() {
995
 
996
  } else {
997
 
998
- ResponsiveSitesAdmin.xml_path = encodeURI( demo_data.data['xml_path'] ) || '';
999
- ResponsiveSitesAdmin.wpforms_path = encodeURI( demo_data.data['wpforms_path'] ) || '';
1000
- ResponsiveSitesAdmin.active_site = demo_data.data['slug'] || '';
1001
- ResponsiveSitesAdmin.site_customizer_data = JSON.stringify( demo_data.data['site_customizer_data'] ) || '';
1002
- ResponsiveSitesAdmin.required_plugins = JSON.stringify( demo_data.data['required_plugins'] ) || '';
1003
- ResponsiveSitesAdmin.required_pro_plugins = JSON.stringify( demo_data.data['required_pro_plugins'] || '' );
1004
- ResponsiveSitesAdmin.widgets_data = JSON.stringify( demo_data.data['site_widgets_data'] ) || '';
1005
- ResponsiveSitesAdmin.site_options_data = JSON.stringify( demo_data.data['site_options_data'] ) || '';
 
 
1006
 
1007
  $( document ).trigger( 'responsive-ready-sites-import-set-site-data-done' );
1008
  }
159
 
160
  current_site: [],
161
  current_screen: '',
162
+ active_site_slug: '',
163
+ active_site_title: '',
164
+ active_site_featured_image_url: '',
165
  widgets_data: '',
166
  site_options_data: '',
167
 
178
 
179
  init: function()
180
  {
181
+ this._resetPagedCount();
182
  this._bind();
183
  },
184
 
239
  dataType: 'json',
240
  data : {
241
  action : 'responsive-ready-sites-import-end',
242
+ slug: ResponsiveSitesAdmin.active_site_slug,
243
+ title: ResponsiveSitesAdmin.active_site_title,
244
+ featured_image_url: ResponsiveSitesAdmin.active_site_featured_image_url,
245
  }
246
  }
247
  )
266
  );
267
  },
268
 
269
+ /**
270
+ * Reset Page Count.
271
+ */
272
+ _resetPagedCount: function() {
273
+
274
+ $( 'body' ).addClass( 'loading-content' );
275
+ $( 'body' ).attr( 'data-responsive-demo-last-request', '1' );
276
+ $( 'body' ).attr( 'data-responsive-demo-paged', '1' );
277
+ $( 'body' ).attr( 'data-scrolling', false );
278
+
279
+ },
280
+
281
  /**
282
  * Import Site options Screen
283
  */
953
 
954
  var site_id = $( '.responsive-ready-sites-advanced-options-wrap' ).find( '.demo_site_id' ).val();
955
 
956
+ var apiURL = responsiveSitesAdmin.ApiURL + 'cyberchimps-sites/' + site_id;
957
 
958
  $.ajax(
959
  {
1012
 
1013
  } else {
1014
 
1015
+ ResponsiveSitesAdmin.xml_path = encodeURI( demo_data.data['xml_path'] ) || '';
1016
+ ResponsiveSitesAdmin.wpforms_path = encodeURI( demo_data.data['wpforms_path'] ) || '';
1017
+ ResponsiveSitesAdmin.active_site_slug = demo_data.data['slug'] || '';
1018
+ ResponsiveSitesAdmin.active_site_title = demo_data.data['title'];
1019
+ ResponsiveSitesAdmin.active_site_featured_image_url = demo_data.data['featured_image_url'];
1020
+ ResponsiveSitesAdmin.site_customizer_data = JSON.stringify( demo_data.data['site_customizer_data'] ) || '';
1021
+ ResponsiveSitesAdmin.required_plugins = JSON.stringify( demo_data.data['required_plugins'] ) || '';
1022
+ ResponsiveSitesAdmin.required_pro_plugins = JSON.stringify( demo_data.data['required_pro_plugins'] || '' );
1023
+ ResponsiveSitesAdmin.widgets_data = JSON.stringify( demo_data.data['site_widgets_data'] ) || '';
1024
+ ResponsiveSitesAdmin.site_options_data = JSON.stringify( demo_data.data['site_options_data'] ) || '';
1025
 
1026
  $( document ).trigger( 'responsive-ready-sites-import-set-site-data-done' );
1027
  }
admin/js/responsive-ready-sites-api.js CHANGED
@@ -10,7 +10,7 @@
10
 
11
  _api_url : responsiveSitesApi.ApiURL,
12
  _stored_data : {
13
- 'responsive-ready-sites' : [],
14
  },
15
 
16
  /**
@@ -36,6 +36,7 @@
36
  })
37
  )
38
  } else {
 
39
  return response.json();
40
  }
41
  }
@@ -45,7 +46,7 @@
45
  if ( 'object' === typeof data ) {
46
 
47
  data['args'] = args;
48
- if ( data.args.id ) {
49
  ResponsiveSitesAPI._stored_data[ args.id ] = $.merge( ResponsiveSitesAPI._stored_data[ data.args.id ], data.items );
50
  }
51
 
10
 
11
  _api_url : responsiveSitesApi.ApiURL,
12
  _stored_data : {
13
+ 'cyberchimps-sites' : [],
14
  },
15
 
16
  /**
36
  })
37
  )
38
  } else {
39
+ $( document ).trigger( 'cyberchimps-sites-api-request-error' );
40
  return response.json();
41
  }
42
  }
46
  if ( 'object' === typeof data ) {
47
 
48
  data['args'] = args;
49
+ if ( data.args.id && 'undefined' !== typeof data.items ) {
50
  ResponsiveSitesAPI._stored_data[ args.id ] = $.merge( ResponsiveSitesAPI._stored_data[ data.args.id ], data.items );
51
  }
52
 
admin/partials/responsive-ready-sites-admin-display.php CHANGED
@@ -15,10 +15,7 @@
15
  <!-- This file should primarily consist of HTML with a little bit of PHP. -->
16
  <div id="responsive-ready-site-preview"></div>
17
  <div id="responsive-ready-sites-import-options"></div>
18
- <div class="spinner-wrap">
19
- <span class="spinner is-active"></span>
20
- </div>
21
- <div id="responsive-ready-sites-admin-page" style="display: none;">
22
  <div class="responsive-sites-header">
23
  <span class="ready-site-list-title">Responsive Ready Websites</span>
24
  <p class="ready-site-list-intro">Build your Responsive website in 3 simple steps - import a ready website, change content and launch.</p>
@@ -26,6 +23,10 @@
26
  <div class="theme-browser rendered">
27
  <div id="responsive-sites" class="themes wp-clearfix"></div>
28
  </div>
 
 
 
 
29
  </div>
30
 
31
  <?php
@@ -37,19 +38,24 @@
37
  <script type="text/template" id="tmpl-responsive-sites-list">
38
 
39
  <# if ( data.items.length ) { #>
40
- <# for ( key in data.items ) { #>
41
 
42
- <# if (data.items[ key ].active ) { #>
43
- <div class="theme active ra-site-single {{ data.items[ key ].status }}" tabindex="0" aria-describedby="responsive-theme-action responsive-theme-name" data-demo-id="{{{ data.items[ key ].id }}}"
44
- data-demo-url="{{{ data.items[ key ]['site_url'] }}}"
45
- data-demo-slug="{{{ data.items[ key ].slug }}}"
46
- data-demo-name="{{{ data.items[ key ].title.rendered }}}"
47
- data-demo-type="{{{ data.items[ key ].demo_type }}}"
48
- data-screenshot="{{{ data.items[ key ]['featured_image_url'] }}}"
49
- data-required-plugins="{{ JSON.stringify(data.items[ key ]['required_plugins']) }}"
50
- data-required-pro-plugins="{{ JSON.stringify(data.items[ key ]['required_pro_plugins']) }}">
 
 
 
 
51
 
52
- <# } else { #>
 
 
53
 
54
  <div class="theme inactive ra-site-single {{ data.items[ key ].status }}" tabindex="0" aria-describedby="responsive-theme-action responsive-theme-name"
55
  data-demo-id="{{{ data.items[ key ].id }}}"
@@ -60,7 +66,6 @@
60
  data-screenshot="{{{ data.items[ key ]['featured_image_url'] }}}"
61
  data-required-plugins="{{ JSON.stringify(data.items[ key ]['required_plugins']) }}"
62
  data-required-pro-plugins="{{ JSON.stringify(data.items[ key ]['required_pro_plugins']) }}">
63
- <# } #>
64
  <input type="hidden" class="site_options_data" value="{{ JSON.stringify(data.items[ key ][ 'site_options_data' ]) }}">
65
  <div class="inner">
66
  <span class="site-preview" data-href="{{ data.items[ key ]['responsive-site-url'] }}?TB_iframe=true&width=600&height=550" data-title="data title">
@@ -68,14 +73,10 @@
68
  </span>
69
  <span class="demo-type {{{ data.items[ key ].demo_type }}}">{{{ data.items[ key ].demo_type }}}</span>
70
  <div class="theme-id-container">
71
- <# if (data.items[ key ].active ) { #>
72
- <h3 class="theme-name" id="responsive-theme-name">Active : {{{ data.items[ key ].title.rendered }}}</h3>
73
- <# } else { #>
74
  <h3 class="theme-name" id="responsive-theme-name">{{{ data.items[ key ].title.rendered }}}</h3>
75
  <div class="theme-actions">
76
  <button class="button-primary button preview install-theme-preview"><?php esc_html_e( 'Preview', 'responsive-addons' ); ?></button>
77
  </div>
78
- <# } #>
79
  </div>
80
  </div>
81
  </div>
@@ -91,16 +92,21 @@
91
  </span>
92
  </p>
93
  <# } #>
94
- <div class="theme inactive ra-site-single responsive-sites-suggestions">
95
- <div class="inner">
96
- <p>
97
- <?php
98
- /* translators: %1$s External Link */
99
- printf( __( 'Can\'t find a Responsive Ready Site that suits your purpose ?<br><a target="_blank" href="%1$s">Suggest A Site</a>', 'responsive-addons' ), esc_url( 'mailto:support@cyberchimps.com?Subject=New%20Site%20Suggestion' ) );
100
- ?>
101
- </p>
102
- </div>
103
- </div>
 
 
 
 
 
104
  </script>
105
  <?php
106
  /** Single Demo Preview */
15
  <!-- This file should primarily consist of HTML with a little bit of PHP. -->
16
  <div id="responsive-ready-site-preview"></div>
17
  <div id="responsive-ready-sites-import-options"></div>
18
+ <div id="responsive-ready-sites-admin-page">
 
 
 
19
  <div class="responsive-sites-header">
20
  <span class="ready-site-list-title">Responsive Ready Websites</span>
21
  <p class="ready-site-list-intro">Build your Responsive website in 3 simple steps - import a ready website, change content and launch.</p>
23
  <div class="theme-browser rendered">
24
  <div id="responsive-sites" class="themes wp-clearfix"></div>
25
  </div>
26
+ <div class="spinner-wrap">
27
+ <span class="spinner"></span>
28
+ </div>
29
+
30
  </div>
31
 
32
  <?php
38
  <script type="text/template" id="tmpl-responsive-sites-list">
39
 
40
  <# if ( data.items.length ) { #>
 
41
 
42
+ <# if ( data.active_site_data !== "" ) {#>
43
+ <div class="theme active ra-site-single" tabindex="0" aria-describedby="responsive-theme-action responsive-theme-name">
44
+ <div class="inner">
45
+ <span class="site-preview">
46
+ <div class="theme-screenshot" style="background-image: url('{{ data.active_site_data.featured_image_url }}');"></div>
47
+ </span>
48
+ <div class="theme-id-container">
49
+ <h3 class="theme-name" id="responsive-theme-name">Active : {{{ data.active_site_data.title }}}</h3>
50
+ </div>
51
+ </div>
52
+ </div>
53
+ <# } #>
54
+ <# for ( key in data.items ) { #>
55
 
56
+ <# if (data.items[ key ].slug === data.active_site ) { #>
57
+ <# continue; #>
58
+ <# } #>
59
 
60
  <div class="theme inactive ra-site-single {{ data.items[ key ].status }}" tabindex="0" aria-describedby="responsive-theme-action responsive-theme-name"
61
  data-demo-id="{{{ data.items[ key ].id }}}"
66
  data-screenshot="{{{ data.items[ key ]['featured_image_url'] }}}"
67
  data-required-plugins="{{ JSON.stringify(data.items[ key ]['required_plugins']) }}"
68
  data-required-pro-plugins="{{ JSON.stringify(data.items[ key ]['required_pro_plugins']) }}">
 
69
  <input type="hidden" class="site_options_data" value="{{ JSON.stringify(data.items[ key ][ 'site_options_data' ]) }}">
70
  <div class="inner">
71
  <span class="site-preview" data-href="{{ data.items[ key ]['responsive-site-url'] }}?TB_iframe=true&width=600&height=550" data-title="data title">
73
  </span>
74
  <span class="demo-type {{{ data.items[ key ].demo_type }}}">{{{ data.items[ key ].demo_type }}}</span>
75
  <div class="theme-id-container">
 
 
 
76
  <h3 class="theme-name" id="responsive-theme-name">{{{ data.items[ key ].title.rendered }}}</h3>
77
  <div class="theme-actions">
78
  <button class="button-primary button preview install-theme-preview"><?php esc_html_e( 'Preview', 'responsive-addons' ); ?></button>
79
  </div>
 
80
  </div>
81
  </div>
82
  </div>
92
  </span>
93
  </p>
94
  <# } #>
95
+ </script>
96
+ <?php
97
+ /** Site suggestion block */
98
+ ?>
99
+ <script type="text/template" id="tmpl-responsive-sites-suggestions">
100
+ <div class="theme inactive ra-site-single responsive-sites-suggestions">
101
+ <div class="inner">
102
+ <p>
103
+ <?php
104
+ /* translators: %1$s External Link */
105
+ printf( __( 'Can\'t find a Responsive Ready Site that suits your purpose ?<br><a target="_blank" href="%1$s">Suggest A Site</a>', 'responsive-addons' ), esc_url( 'mailto:support@cyberchimps.com?Subject=New%20Site%20Suggestion' ) );
106
+ ?>
107
+ </p>
108
+ </div>
109
+ </div>
110
  </script>
111
  <?php
112
  /** Single Demo Preview */
includes/importers/class-responsive-ready-sites-importer.php CHANGED
@@ -454,8 +454,17 @@ if ( ! class_exists( 'Responsive_Ready_Sites_Importer' ) ) :
454
  */
455
  public function import_end() {
456
 
457
- $current_active_site = isset( $_REQUEST['slug'] ) ? $_REQUEST['slug'] : '';
458
- update_option( 'responsive_current_active_site', $current_active_site );
 
 
 
 
 
 
 
 
 
459
 
460
  do_action( 'responsive_ready_sites_import_complete' );
461
  }
@@ -496,7 +505,7 @@ if ( ! class_exists( 'Responsive_Ready_Sites_Importer' ) ) :
496
  $request_params = apply_filters(
497
  'responsive_sites_api_params',
498
  array(
499
- 'site_url' => '',
500
  )
501
  );
502
 
@@ -524,6 +533,8 @@ if ( ! class_exists( 'Responsive_Ready_Sites_Importer' ) ) :
524
  $remote_args['site_widgets_data'] = json_decode( $data['site_widgets_data'] );
525
  $remote_args['site_options_data'] = $data['site_options_data'];
526
  $remote_args['slug'] = $data['slug'];
 
 
527
  }
528
 
529
  // Merge remote demo and defaults.
454
  */
455
  public function import_end() {
456
 
457
+ $current_active_site_slug = isset( $_REQUEST['slug'] ) ? $_REQUEST['slug'] : '';
458
+ $current_active_site_title = isset( $_REQUEST['title'] ) ? $_REQUEST['title'] : '';
459
+ $current_active_site_featured_image_url = isset( $_REQUEST['featured_image_url'] ) ? $_REQUEST['featured_image_url'] : '';
460
+
461
+ $current_active_site_data = array(
462
+ 'slug' => $current_active_site_slug,
463
+ 'title' => $current_active_site_title,
464
+ 'featured_image_url' => $current_active_site_featured_image_url,
465
+ );
466
+
467
+ update_option( 'responsive_current_active_site', $current_active_site_data );
468
 
469
  do_action( 'responsive_ready_sites_import_complete' );
470
  }
505
  $request_params = apply_filters(
506
  'responsive_sites_api_params',
507
  array(
508
+ 'site_url' => site_url(),
509
  )
510
  );
511
 
533
  $remote_args['site_widgets_data'] = json_decode( $data['site_widgets_data'] );
534
  $remote_args['site_options_data'] = $data['site_options_data'];
535
  $remote_args['slug'] = $data['slug'];
536
+ $remote_args['featured_image_url'] = $data['featured_image_url'];
537
+ $remote_args['title'] = $data['title']['rendered'];
538
  }
539
 
540
  // Merge remote demo and defaults.
readme.txt CHANGED
@@ -1,7 +1,7 @@
1
  === Responsive Add Ons ===
2
  Contributors: cyberchimps
3
  Donate Link: http://cyberchimps.com
4
- Tags: google, yahoo, bing, analytics, verification
5
  Requires at least: 5.0
6
  Tested up to: 5.2.2
7
  Stable tag: trunk
@@ -33,6 +33,9 @@ The Ready Site Importer feature allows you to import ready-made website demos, c
33
  1. Responsive Ready Site importer in action
34
 
35
  == Changelog ==
 
 
 
36
  = 2.0.5 - 9th September 2019 =
37
  * Added Pro Templates, Support Links
38
 
1
  === Responsive Add Ons ===
2
  Contributors: cyberchimps
3
  Donate Link: http://cyberchimps.com
4
+ Tags: Elementor, Demo Importer, Templates, Starter Sites, Ready Websites
5
  Requires at least: 5.0
6
  Tested up to: 5.2.2
7
  Stable tag: trunk
33
  1. Responsive Ready Site importer in action
34
 
35
  == Changelog ==
36
+ = 2.0.6 - 18th September 2019 =
37
+ * Rendered Ready sites importer page on scroll, Added ratings link on responsive-add-ons page
38
+
39
  = 2.0.5 - 9th September 2019 =
40
  * Added Pro Templates, Support Links
41
 
responsive-add-ons.php CHANGED
@@ -3,7 +3,7 @@
3
  Plugin Name: Responsive Add Ons
4
  Plugin URI: http://wordpress.org/plugins/responsive-add-ons/
5
  Description: Import Responsive Ready Sites that help you launch your website quickly. Just import, update & hit the launch button.
6
- Version: 2.0.5
7
  Author: CyberChimps
8
  Author URI: http://www.cyberchimps.com
9
  License: GPL2
@@ -72,9 +72,6 @@ if( !class_exists( 'Responsive_Addons' ) ) {
72
  //Dismiss admin notice
73
  add_action( 'wp_ajax_responsive-notice-dismiss', array(&$this, 'dismiss_notice'));
74
 
75
- //get Active Site
76
- add_action( 'wp_ajax_responsive-ready-sites-get-active-site', array( $this, 'get_active_site' ) );
77
-
78
  //Check if Responsive Addons pro plugin is active
79
  add_action( 'wp_ajax_check-responsive-add-ons-pro-installed', array( $this, 'is_responsive_pro_is_installed') );
80
 
@@ -91,6 +88,10 @@ if( !class_exists( 'Responsive_Addons' ) ) {
91
 
92
  add_action( 'responsive_addons_importer_page', array($this, 'menu_callback'));
93
 
 
 
 
 
94
  self::set_api_url();
95
  }
96
 
@@ -101,14 +102,32 @@ if( !class_exists( 'Responsive_Addons' ) ) {
101
 
102
  $theme = wp_get_theme();
103
 
104
- if ( 'Responsive' === $theme->name || 'Responsive' === $theme->parent_theme || $this->is_activation_theme_notice_expired()) {
105
  return;
106
  }
107
- $class = 'responsive-notice notice notice-error is-dismissible';
 
108
 
109
  $theme_status = 'responsive-sites-theme-' . $this->get_theme_status();
110
- printf( '<div id="responsive-theme-activation" class="%2$s"><p>Responsive Theme needs to be active for you to use currently installed "%1$s" plugin. <a href="#" class="%3$s" data-theme-slug="responsive">Install & Activate Now</a></p></div>', 'Responsive Addons', esc_attr( $class ), $theme_status );
111
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
112
  }
113
 
114
  /**
@@ -238,7 +257,7 @@ if( !class_exists( 'Responsive_Addons' ) ) {
238
  * @since 1.0.0
239
  */
240
  public static function set_api_url() {
241
- self::$api_url = apply_filters( 'responsive_ready_sites_api_url', 'https://ccreadysites.cyberchimps.com/wp-json/wp/v2/cyberchimps-sites/' );
242
  }
243
 
244
  /**
@@ -631,6 +650,7 @@ if( !class_exists( 'Responsive_Addons' ) ) {
631
  'responsive_sites_api_params',
632
  array(
633
  'site_url' => '',
 
634
  )
635
  );
636
 
@@ -640,6 +660,7 @@ if( !class_exists( 'Responsive_Addons' ) ) {
640
  array(
641
  'sites' => $request_params,
642
  'settings' => array(),
 
643
  )
644
  );
645
 
@@ -673,15 +694,11 @@ if( !class_exists( 'Responsive_Addons' ) ) {
673
  }
674
 
675
  /**
676
- * Get Active Site
677
  */
678
- public function get_active_site() {
679
  $current_active_site = get_option('responsive_current_active_site');
680
- wp_send_json_success(
681
- array(
682
- 'active_site' => $current_active_site
683
- )
684
- );
685
  }
686
 
687
  /**
@@ -829,6 +846,23 @@ if( !class_exists( 'Responsive_Addons' ) ) {
829
  }
830
  }
831
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
832
  /**
833
  * Adding the theme menu page
834
  */
@@ -854,13 +888,18 @@ if( !class_exists( 'Responsive_Addons' ) ) {
854
  */
855
  public function responsive_add_ons() {
856
 
 
 
 
 
 
857
  $responsive_addon_dir = plugin_dir_path( __FILE__ );
858
  $responsive_addons_go_pro_screen = ( isset( $_GET['action'] ) && 'go_pro' === $_GET['action'] ) ? true : false; //phpcs:ignore
859
 
860
  $responsive_addon_license_screen = ( isset( $_GET['action'] ) && 'license' === $_GET['action'] ) ? true : false; //phpcs:ignore
861
  $responsive_addon_pro_support_screen = ( isset( $_GET['action'] ) && 'pro_support' === $_GET['action'] ) ? true : false; //phpcs:ignore?>
862
  <div class="wrap">
863
- <h1><?php esc_html_e( 'Responsive Options' ); ?></h1>
864
  <h2 class="nav-tab-wrapper">
865
  <a href="<?php echo esc_url( admin_url( 'admin.php?page=responsive-add-ons' ) ); ?>" class="nav-tab<?php if ( ! isset( $_GET['action'] ) || isset( $_GET['action'] ) && 'go_pro' != $_GET['action'] && 'license' != $_GET['action'] && 'pro_support' != $_GET['action'] ) echo ' nav-tab-active'; ?>"><?php esc_html_e( 'Ready Site Importer' ); ?></a>
866
  <?php
@@ -908,7 +947,40 @@ if( !class_exists( 'Responsive_Addons' ) ) {
908
  }
909
  }
910
 
911
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
912
  }
913
 
914
  /**
3
  Plugin Name: Responsive Add Ons
4
  Plugin URI: http://wordpress.org/plugins/responsive-add-ons/
5
  Description: Import Responsive Ready Sites that help you launch your website quickly. Just import, update & hit the launch button.
6
+ Version: 2.0.6
7
  Author: CyberChimps
8
  Author URI: http://www.cyberchimps.com
9
  License: GPL2
72
  //Dismiss admin notice
73
  add_action( 'wp_ajax_responsive-notice-dismiss', array(&$this, 'dismiss_notice'));
74
 
 
 
 
75
  //Check if Responsive Addons pro plugin is active
76
  add_action( 'wp_ajax_check-responsive-add-ons-pro-installed', array( $this, 'is_responsive_pro_is_installed') );
77
 
88
 
89
  add_action( 'responsive_addons_importer_page', array($this, 'menu_callback'));
90
 
91
+ //Add rating links to the Responsive Addons Admin Page
92
+ add_filter( 'admin_footer_text', array( $this, 'responsive_addons_admin_rate_us' ) );
93
+
94
+ add_action( 'init', array( $this, 'app_output_buffer' ) );
95
  self::set_api_url();
96
  }
97
 
102
 
103
  $theme = wp_get_theme();
104
 
105
+ if ( 'Responsive' === $theme->name || 'Responsive' === $theme->parent_theme || $this->is_activation_theme_notice_expired() || is_plugin_active( 'responsive-addons-pro/responsive-addons-pro.php' )) {
106
  return;
107
  }
108
+
109
+ $class = 'responsive-notice notice notice-error';
110
 
111
  $theme_status = 'responsive-sites-theme-' . $this->get_theme_status();
 
112
 
113
+ $image_path = RESPONSIVE_ADDONS_URI . 'admin/images/responsive-thumbnail.jpg';
114
+ ?>
115
+ <div id="responsive-theme-activation" class="<?php echo $class; ?>">
116
+ <div class="responsive-addons-message-inner">
117
+ <div class="responsive-addons-message-icon">
118
+ <div class="">
119
+ <img src="<?php echo $image_path; ?>" alt="Responsive Addons">
120
+ </div>
121
+ </div>
122
+ <div class="responsive-addons-message-content">
123
+ <p><?php echo esc_html( 'Responsive theme needs to be active to use the Responsive Addons plugin.' ); ?> </p>
124
+ <p class="responsive-addons-message-actions">
125
+ <a href="#" class="<?php echo $theme_status; ?> button button-primary" data-theme-slug="responsive">Install & Activate Now</a>
126
+ </p>
127
+ </div>
128
+ </div>
129
+ </div>
130
+ <?php
131
  }
132
 
133
  /**
257
  * @since 1.0.0
258
  */
259
  public static function set_api_url() {
260
+ self::$api_url = apply_filters( 'responsive_ready_sites_api_url', 'https://ccreadysites.cyberchimps.com/wp-json/wp/v2/' );
261
  }
262
 
263
  /**
650
  'responsive_sites_api_params',
651
  array(
652
  'site_url' => '',
653
+ 'per_page' => 6,
654
  )
655
  );
656
 
660
  array(
661
  'sites' => $request_params,
662
  'settings' => array(),
663
+ 'active_site_data' => $this->get_active_site_data(),
664
  )
665
  );
666
 
694
  }
695
 
696
  /**
697
+ * Get Active site data
698
  */
699
+ public function get_active_site_data() {
700
  $current_active_site = get_option('responsive_current_active_site');
701
+ return $current_active_site;
 
 
 
 
702
  }
703
 
704
  /**
846
  }
847
  }
848
 
849
+ /**
850
+ * Check if Responsive Addons Pro License is Active.
851
+ */
852
+ public function responsive_pro_license_is_active() {
853
+ global $wcam_lib;
854
+ if( is_null( $wcam_lib ) ){
855
+ return false;
856
+ }
857
+ $license_status = $wcam_lib->license_key_status();
858
+
859
+ if ( ! empty( $license_status[ 'data' ][ 'activated' ] ) && $license_status[ 'data' ][ 'activated' ] ) {
860
+ return true;
861
+ } else {
862
+ return false;
863
+ }
864
+ }
865
+
866
  /**
867
  * Adding the theme menu page
868
  */
888
  */
889
  public function responsive_add_ons() {
890
 
891
+ if( $this->is_responsive_addons_pro_is_active() && !$this->responsive_pro_license_is_active() ){
892
+ wp_redirect( admin_url( '/options-general.php?page=wc_am_client_responsive_addons_pro_dashboard' ) );
893
+ exit;
894
+ }
895
+
896
  $responsive_addon_dir = plugin_dir_path( __FILE__ );
897
  $responsive_addons_go_pro_screen = ( isset( $_GET['action'] ) && 'go_pro' === $_GET['action'] ) ? true : false; //phpcs:ignore
898
 
899
  $responsive_addon_license_screen = ( isset( $_GET['action'] ) && 'license' === $_GET['action'] ) ? true : false; //phpcs:ignore
900
  $responsive_addon_pro_support_screen = ( isset( $_GET['action'] ) && 'pro_support' === $_GET['action'] ) ? true : false; //phpcs:ignore?>
901
  <div class="wrap">
902
+ <h1><?php esc_html_e( 'Responsive Add Ons' ); ?></h1>
903
  <h2 class="nav-tab-wrapper">
904
  <a href="<?php echo esc_url( admin_url( 'admin.php?page=responsive-add-ons' ) ); ?>" class="nav-tab<?php if ( ! isset( $_GET['action'] ) || isset( $_GET['action'] ) && 'go_pro' != $_GET['action'] && 'license' != $_GET['action'] && 'pro_support' != $_GET['action'] ) echo ' nav-tab-active'; ?>"><?php esc_html_e( 'Ready Site Importer' ); ?></a>
905
  <?php
947
  }
948
  }
949
 
950
+ /**
951
+ * Add rating links to the Responsive Addons Admin Page
952
+ *
953
+ * @param string $footer_text The existing footer text
954
+ *
955
+ * @return string
956
+ * @since 2.0.6
957
+ * @global string $typenow
958
+ *
959
+ */
960
+ function responsive_addons_admin_rate_us( $footer_text ) {
961
+ $page = isset( $_GET['page'] ) ? $_GET['page'] : '';
962
+ $show_footer = array( 'responsive-add-ons' );
963
+
964
+ if ( in_array( $page, $show_footer ) ) {
965
+ $rate_text = sprintf(
966
+ /* translators: %s: Link to 5 star rating */
967
+ __( 'If you like the <strong>Responsive Add Ons</strong> plugin please leave us a %s rating. It takes a minute and helps a lot. Thanks in advance!', 'responsive-add-ons' ),
968
+ '<a href="https://wordpress.org/support/view/plugin-reviews/responsive-add-ons?filter=5#postform" target="_blank" class="responsive-rating-link" style="text-decoration:none;" data-rated="' . esc_attr__( 'Thanks :)', 'responsive-add-ons' ) . '">&#9733;&#9733;&#9733;&#9733;&#9733;</a>'
969
+ );
970
+
971
+ return $rate_text;
972
+ } else {
973
+ return $footer_text;
974
+ }
975
+ }
976
+
977
+ /**
978
+ * Output buffer
979
+ */
980
+ public function app_output_buffer() {
981
+ ob_start();
982
+ }
983
+ }
984
  }
985
 
986
  /**