Yasr – Yet Another Stars Rating - Version 2.7.6

Version Description

  • TWEAKED: new pricing page
  • Minor changes
Download this release

Release Info

Developer Dudo
Plugin Icon 128x128 Yasr – Yet Another Stars Rating
Version 2.7.6
Comparing to
See all releases

Code changes from version 2.7.5 to 2.7.6

admin/css/yasr-pricing-page.css ADDED
@@ -0,0 +1,370 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* There is already a notice in the bottom,
2
+ * there is no need to another one
3
+ */
4
+ .fs-secure-notice{
5
+ display:none;
6
+ }
7
+
8
+ #yasr-table-container {
9
+ display: flex;
10
+ flex-direction: column;
11
+ justify-content: safe center;
12
+ align-items: safe center;
13
+ }
14
+
15
+ #yasr-pricing-table {
16
+ --nb-items: 3;
17
+ color: #434446;
18
+ font-family: sans-serif;
19
+ line-height: 1.5;
20
+ display: flex;
21
+ max-width: 100%;
22
+ padding: 32px;
23
+ justify-content: center;
24
+ flex-wrap: wrap;
25
+ gap: var(--gap);
26
+ }
27
+
28
+ .yasr-pricing-table-item {
29
+ --primary: #F34A4E;
30
+ display: flex;
31
+ flex-direction: column;
32
+ flex-grow: 1;
33
+ min-width: max-content;
34
+ background: white;
35
+ overflow: hidden;
36
+ flex-basis: calc( calc(100% - (var(--gap) * var(--nb-items)) )/var(--nb-items) );
37
+ min-height: 660px;
38
+ box-shadow: 0 18px 58px rgba(66, 11, 89, 0.07),
39
+ 0 6.5703px 21.171px rgba(66, 11, 89, 0.0482987),
40
+ 0 3.18976px 10.2781px rgba(66, 11, 89, 0.0389404),
41
+ 0 1.56368px 5.03852px rgba(66, 11, 89, 0.0310596),
42
+ 0 0.618281px 1.99224px rgba(66, 11, 89, 0.0217013);
43
+ }
44
+
45
+ .yasr-pricing-table-item:nth-last-child(4):first-child,
46
+ .yasr-pricing-table-item:nth-last-child(4):first-child ~ .yasr-pricing-table-item {
47
+ --nb-items: 4;
48
+ }
49
+
50
+ .yasr-pricing-table-item:nth-last-child(5):first-child,
51
+ .yasr-pricing-table-item:nth-last-child(5):first-child ~ .yasr-pricing-table-item {
52
+ --nb-items: 5;
53
+ }
54
+
55
+ .yasr-pricing-table-item.is-highlighted {
56
+ --primary: #1FA19C;
57
+ transform: scale(1.05);
58
+ }
59
+
60
+ .yasr-pricing-table-item > * {
61
+ padding: 24px;
62
+ }
63
+
64
+ .yasr-pricing-table-item p,
65
+ .yasr-pricing-table-item ul,
66
+ .yasr-pricing-table-item h2 {
67
+ margin-top: 0;
68
+ margin-bottom: 0;
69
+ }
70
+
71
+ .yasr-pricing-table-heading {
72
+ background: var(--primary);
73
+ }
74
+ .yasr-pricing-table-title, .yasr-pricing-table-subtitle {
75
+ text-align: center;
76
+ color: white;
77
+ }
78
+ .yasr-pricing-table-title {
79
+ font-size: 24px;
80
+ }
81
+ .yasr-pricing-table-subtitle {
82
+ font-size: 16px;
83
+ }
84
+
85
+ .yasr-pricing-table-feature {
86
+ font-size: 15px;
87
+ padding: 8px 0;
88
+ list-style: none;
89
+ border-top: 1px solid #eee;
90
+ margin-bottom: 0;
91
+ }
92
+
93
+ .yasr-pricing-table-footer {
94
+ padding-top: 0;
95
+ margin-top: auto;
96
+ text-align: center;
97
+ }
98
+
99
+ .yasr-pring-table-price {
100
+ font-size: 40px;
101
+ font-weight: bold;
102
+ color: var(--primary);
103
+ }
104
+
105
+ .yasr-pring-table-price small {
106
+ font-size: 16px;
107
+ color: #737373;
108
+ }
109
+
110
+ .yasr-pricing-table-price-desc {
111
+ font-weight: normal;
112
+ font-size: 14px;
113
+ color: #737373;
114
+ }
115
+
116
+ .yasr-buy-button {
117
+ display: block;
118
+ text-align: center;
119
+ margin-top: 16px;
120
+ padding: 8px 16px;
121
+ font-size: 22px;
122
+ font-weight: bold;
123
+ text-decoration: none;
124
+ color: white;
125
+ border: 2px solid #F34A4EFF;
126
+ background: #F34A4EFF;
127
+ }
128
+
129
+ a.yasr-buy-button{
130
+ text-decoration: none;
131
+ color: white;
132
+ }
133
+
134
+ a.yasr-buy-button:active, a.yasr-buy-button:focus {
135
+ box-shadow: none;
136
+ }
137
+
138
+ .is-highlighted .yasr-buy-button {
139
+ background: #1FA19CFF;
140
+ color: white;
141
+ border: 2px solid #1FA19CFF;
142
+ }
143
+
144
+ /** Customize Radio cycle **/
145
+ #yasr-radio-billing-cycle {
146
+ margin: 10px;
147
+ text-align: center;
148
+ }
149
+
150
+ #yasr-radio-billing-cycle input[type="radio"] {
151
+ opacity: 0;
152
+ position: fixed;
153
+ width: 0;
154
+ }
155
+
156
+ #yasr-radio-billing-cycle label {
157
+ display: inline-block;
158
+ padding: 10px 20px;
159
+ font-size: 16px;
160
+ background-color: #fff;
161
+ cursor: pointer;
162
+ border: 1px solid #adadad;
163
+ }
164
+
165
+ #yasr-radio-billing-cycle label:hover {
166
+ background-color: #1FA19C;
167
+ color: #FFF;
168
+ }
169
+
170
+ #yasr-radio-billing-cycle input[type="radio"]:checked + label {
171
+ background-color: #1FA19C;
172
+ color: #FFF;
173
+ }
174
+
175
+ /*Middle bottom, remove left and right border*/
176
+ #yasr-billing-cycle-annual + label{
177
+ border-left: none;
178
+ border-right: none;
179
+ }
180
+
181
+ /** switch **/
182
+ #yasr-pricing-switch-container {
183
+ margin-top: 20px;
184
+ text-align: center;
185
+ }
186
+
187
+ .yasr-pricing-text-switcher {
188
+ font-size: 18px;
189
+ font-weight: bold;
190
+ color: #434446;
191
+ }
192
+
193
+ .yasr-pricing-switch {
194
+ position: relative;
195
+ display: inline-block;
196
+ width: 54px;
197
+ height: 28px;
198
+ }
199
+
200
+ .yasr-pricing-switch input {
201
+ opacity: 0;
202
+ width: 0;
203
+ height: 0;
204
+ }
205
+
206
+ .yasr-pricing-slider {
207
+ position: absolute;
208
+ cursor: pointer;
209
+ top: 0;
210
+ left: 0;
211
+ right: 0;
212
+ bottom: 0;
213
+ background-color: #1FA19C;
214
+ -webkit-transition: .4s;
215
+ transition: .4s;
216
+ }
217
+
218
+ .yasr-pricing-slider:before {
219
+ position: absolute;
220
+ content: "";
221
+ height: 20px;
222
+ width: 20px;
223
+ left: 4px;
224
+ bottom: 4px;
225
+ background-color: white;
226
+ -webkit-transition: .4s;
227
+ transition: .4s;
228
+ }
229
+
230
+ input:focus + .yasr-pricing-slider {
231
+ box-shadow: 0 0 1px #2196F3;
232
+ }
233
+
234
+ input:checked + .yasr-pricing-slider:before {
235
+ -webkit-transform: translateX(26px);
236
+ -ms-transform: translateX(26px);
237
+ transform: translateX(26px);
238
+ }
239
+
240
+ /* Money Back */
241
+ #money_back_guarantee_cont {
242
+ margin-top: 10px;
243
+ display: flex;
244
+ justify-content: center;
245
+ }
246
+
247
+ #money_back_guarantee {
248
+ text-align: center;
249
+ background-color: white;
250
+ margin-bottom: 30px;
251
+ padding: 10px 30px 20px 30px;
252
+ max-width: 800px;
253
+ }
254
+
255
+ #money_back_guarantee span {
256
+ line-height: 0;
257
+ }
258
+
259
+ #money_back_guarantee h1 {
260
+ text-align: center;
261
+ font-size: 2em;
262
+ font-weight: bold;
263
+ color: #6bc406;
264
+ -webkit-font-smoothing: antialiased;
265
+ margin-top: 10px;
266
+ }
267
+
268
+ #money_back_guarantee p {
269
+ margin: 10px 0;
270
+ font-size: 16px;
271
+ }
272
+
273
+ #money_back_guarantee li {
274
+ font-size: 16px;
275
+ list-style: disc;
276
+ }
277
+
278
+ #money_back_guarantee h1 .stars, #money_back_guarantee h1 .stars i {
279
+ display: inline-block;
280
+ vertical-align: middle;
281
+ font-style: normal;
282
+ }
283
+
284
+ #money_back_guarantee h1 .stars .last {
285
+ font-size: 0.9em;
286
+ }
287
+
288
+ #money_back_guarantee h1 .stars .middle {
289
+ font-size: 1.2em;
290
+ }
291
+
292
+ #money_back_guarantee h1 .stars .first {
293
+ font-size: 1.5em;
294
+ }
295
+
296
+ #yasr-refund-policy-cont {
297
+ display: flex;
298
+ justify-content: center;
299
+ background-color: rgba(0,0,0,0.4); /* Black w/ opacity */
300
+ }
301
+
302
+ .yasr-refund-policy {
303
+ display: none; /* Hidden by default */
304
+ position: fixed; /* Stay in place */
305
+ z-index: 9999; /* Sit on top */
306
+ padding-top: 100px; /* Location of the box */
307
+ top: 0;
308
+ overflow: auto; /* Enable scroll if needed */
309
+ }
310
+
311
+ #yasr-modal-content {
312
+ background-color: #fefefe;
313
+ margin: auto;
314
+ padding-top: 10px;
315
+ padding-left: 20px;
316
+ padding-right: 15px;
317
+ border: 1px solid #888;
318
+ }
319
+
320
+ #yasr-modal-content p {
321
+ font-size: 14px;
322
+ }
323
+
324
+ #yasr-modal-content ul {
325
+ padding-left: 14px;
326
+ list-style: disc;
327
+ }
328
+ #yasr-modal-content li {
329
+ font-size: 14px;
330
+ }
331
+
332
+ /* The Close Button */
333
+ .yasr-close-modal-policy {
334
+ color: #aaaaaa;
335
+ float: right;
336
+ font-size: 28px;
337
+ font-weight: bold;
338
+ }
339
+
340
+ .yasr-close-modal-policy:hover,
341
+ .yasr-close-modal-policy:focus {
342
+ color: #000;
343
+ text-decoration: none;
344
+ cursor: pointer;
345
+ }
346
+
347
+ /**** FAQ ****/
348
+ #yasr-pricing-faq {
349
+ margin-top: 30px;
350
+ padding: 30px;
351
+ display: flex;
352
+ justify-content: space-between;
353
+ flex-wrap: wrap;
354
+ }
355
+
356
+ .yasr-pricing-faq-row {
357
+ display: inline-block;
358
+ text-align: center;
359
+ width: 100%;
360
+ background-color: white;
361
+ }
362
+
363
+ .yasr-pricing-faq-row h2, h3 {
364
+ font-size: 18px;
365
+ color: #434446;
366
+ }
367
+ .yasr-pricing-faq-row p {
368
+ font-size: 14px;
369
+ color: #434446;
370
+ }
admin/js/src/yasr-pricing-page.js ADDED
@@ -0,0 +1,415 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Print the currency
3
+ *
4
+ * @param props
5
+ * @return {JSX.Element}
6
+ * @constructor
7
+ */
8
+ function YasrPricingCurrency (props) {
9
+ let symbol = '$';
10
+ if(props.name === 'eur') {
11
+ symbol = '€';
12
+ }
13
+ return (
14
+ <small>{symbol} </small>
15
+ )
16
+ }
17
+
18
+ /**
19
+ * Print the billing cycle near the price
20
+ *
21
+ * @param props
22
+ * @return {JSX.Element}
23
+ * @constructor
24
+ */
25
+ function YasrPricingBillingCycle (props) {
26
+ let cycle = '/year';
27
+ if(props.name === 'monthly') {
28
+ cycle = '/month';
29
+ }
30
+ if(props.name === 'lifetime') {
31
+ cycle = '';
32
+ }
33
+ return (
34
+ <small>{cycle}</small>
35
+ )
36
+ }
37
+
38
+ /**
39
+ * Print the rows with the features
40
+ *
41
+ * @param props
42
+ * @return {JSX.Element}
43
+ * @constructor
44
+ */
45
+
46
+ function YasrPricingPrintFeatures(props) {
47
+ let numberOfSites = ' 1 website';
48
+ if(props.license === 'plus') {
49
+ numberOfSites = ' 5 websites'
50
+ }
51
+ if(props.license === 'enterprise') {
52
+ numberOfSites = ' 30 websites'
53
+ }
54
+ return (
55
+ <ul className="PT-Features">
56
+ <li className="yasr-pricing-table-feature"><strong>1 year</strong> of supports and updates <br/>for
57
+ <strong>{numberOfSites}</strong></li>
58
+ <li className="yasr-pricing-table-feature">User reviews</li>
59
+ <li className="yasr-pricing-table-feature">Custom rankings</li>
60
+ <li className="yasr-pricing-table-feature">20 + ready to use themes</li>
61
+ <li className="yasr-pricing-table-feature">Upload your own theme</li>
62
+ <li className="yasr-pricing-table-feature">Add fake ratings</li>
63
+ <li className="yasr-pricing-table-feature">Direct email support</li>
64
+ {props.cycle === 'lifetime' && (
65
+ <li className="yasr-pricing-table-feature">We setup the plugin for free <br/>(only lifetime plans)</li>
66
+ )}
67
+ </ul>
68
+ );
69
+ }
70
+
71
+ function YasrPricingPrice(props) {
72
+ let price = '';
73
+ let licenses = 1;
74
+ if(props.license === 'single') {
75
+ if(props.cycle === 'monthly') {
76
+ if(props.currency === 'eur') {
77
+ //eur
78
+ price = '4.49'
79
+ } else {
80
+ //usd
81
+ price = '4.99'
82
+ }
83
+ }
84
+ else if (props.cycle === 'lifetime') {
85
+ if(props.currency === 'eur') {
86
+ //eur
87
+ price = '129.99'
88
+ } else {
89
+ //usd
90
+ price = '149.99'
91
+ }
92
+ }
93
+ //annual prices
94
+ else {
95
+ if(props.currency === 'eur') {
96
+ //eur
97
+ price = '41.99'
98
+ } else {
99
+ //usd
100
+ price = '47.88'
101
+ }
102
+ }
103
+ }
104
+ else if(props.license === 'plus') {
105
+ licenses = 5;
106
+ if(props.cycle === 'monthly') {
107
+ if(props.currency === 'eur') {
108
+ //eur
109
+ price = '8.99'
110
+ } else {
111
+ //usd
112
+ price = '9.99'
113
+ }
114
+ }
115
+ else if (props.cycle === 'lifetime') {
116
+ if(props.currency === 'eur') {
117
+ //eur
118
+ price = '249.99'
119
+ } else {
120
+ //usd
121
+ price = '289.99'
122
+ }
123
+ }
124
+ //annual prices
125
+ else {
126
+ if(props.currency === 'eur') {
127
+ //eur
128
+ price = '83.88'
129
+ } else {
130
+ //usd
131
+ price = '95.88'
132
+ }
133
+ }
134
+ }
135
+ else if(props.license === 'enterprise') {
136
+ licenses = 30;
137
+ if(props.cycle === 'monthly') {
138
+ if(props.currency === 'eur') {
139
+ //eur
140
+ price = '12.99'
141
+ } else {
142
+ //usd
143
+ price = '14.99'
144
+ }
145
+ }
146
+ else if (props.cycle === 'lifetime') {
147
+ if(props.currency === 'eur') {
148
+ //eur
149
+ price = '359.99'
150
+ } else {
151
+ //usd
152
+ price = '439.99'
153
+ }
154
+ }
155
+ //annual prices
156
+ else {
157
+ if(props.currency === 'eur') {
158
+ //eur
159
+ price = '119.88'
160
+ } else {
161
+ //usd
162
+ price = '143.88'
163
+ }
164
+ }
165
+ }
166
+ return (
167
+ <div className="yasr-pring-table-price">
168
+ <YasrPricingCurrency name={props.currency} />
169
+ <span>{price}</span>
170
+ <YasrPricingBillingCycle name={props.cycle} />
171
+ <YasrPricingPriceDesc cycle={props.cycle} currency={props.currency} license={props.license}/>
172
+ <p className="PT-CTA">
173
+ <a href="#"
174
+ className="yasr-buy-button"
175
+ onClick={(event) => {
176
+ YasrPricingRedirect(props.cycle, licenses, props.currency)
177
+ event.preventDefault();
178
+ }}
179
+ >Buy YASR </a>
180
+ </p>
181
+ </div>
182
+ );
183
+ }
184
+
185
+ /**
186
+ * Print the monthly price for annual
187
+ *
188
+ * @param props
189
+ * @return {JSX.Element}
190
+ * @constructor
191
+ */
192
+ function YasrPricingPriceDesc(props) {
193
+ if(props.cycle === 'annual') {
194
+ let price = '';
195
+ if(props.license === 'plus') {
196
+ if(props.currency === 'eur') {
197
+ //eur
198
+ price = '6.99'
199
+ } else {
200
+ //usd
201
+ price = '7.99'
202
+ }
203
+ } else if(props.license === 'enterprise') {
204
+ if(props.currency === 'eur') {
205
+ //eur
206
+ price = '9.99'
207
+ } else {
208
+ //usd
209
+ price = '11.99'
210
+ }
211
+ }
212
+ //single site price
213
+ else{
214
+ if(props.currency === 'eur') {
215
+ //eur
216
+ price = '3.49'
217
+ } else {
218
+ //usd
219
+ price = '3.99'
220
+ }
221
+ }
222
+
223
+ return (
224
+ <p className="yasr-pricing-table-price-desc">
225
+ <YasrPricingCurrency name={props.currency}/>
226
+ {price} /month
227
+ </p>
228
+ );
229
+ }
230
+ return (
231
+ <></>
232
+ )
233
+ }
234
+
235
+ /**
236
+ *
237
+ * @param cycle
238
+ * @param licenses
239
+ * @param currency
240
+ *
241
+ * @return void;
242
+ */
243
+ function YasrPricingRedirect (cycle, licenses, currency) {
244
+ const params = {
245
+ billing_cycle: cycle,
246
+ licenses: licenses,
247
+ id: 'yasr_checkout',
248
+ page: 'yasr_settings_page-pricing',
249
+ checkout: 'true',
250
+ plan_id: '2778',
251
+ plan_name: 'yasrpro',
252
+ disable_licenses_selector: true,
253
+ hide_billing_cycles: true,
254
+ currency: currency
255
+ };
256
+
257
+ let paramsBody = [];
258
+ for (let property in params) {
259
+ let encodedKey = encodeURIComponent(property);
260
+ let encodedValue = encodeURIComponent(params[property]);
261
+ paramsBody.push(encodedKey + "=" + encodedValue);
262
+ }
263
+ paramsBody = paramsBody.join("&");
264
+
265
+ let linkRedirect = yasrCommonData.adminUrl+'admin.php?'+paramsBody;
266
+
267
+ window.open(linkRedirect,"_self");
268
+ }
269
+
270
+ /**
271
+ *
272
+ */
273
+ class PricingTable extends React.Component {
274
+ constructor(props) {
275
+ super(props)
276
+ this.state = {
277
+ currencyName: 'usd',
278
+ cycle: 'annual'
279
+ }
280
+
281
+ this.updateCurrency = this.updateCurrency.bind(this);
282
+ this.updateCycle = this.updateCycle.bind(this);
283
+ }
284
+
285
+ updateCurrency (event) {
286
+ const target = event.target;
287
+ const currencySelected = target.type === 'checkbox' ? target.checked : target.value;
288
+
289
+ if (currencySelected === true) {
290
+ this.setState({currencyName: 'eur'});
291
+ } else {
292
+ this.setState({currencyName: 'usd'});
293
+ }
294
+ }
295
+
296
+ updateCycle (event) {
297
+ this.setState({cycle: event.target.value});
298
+ }
299
+
300
+ render() {
301
+ return (
302
+ <>
303
+ <div id="yasr-radio-billing-cycle">
304
+ <input
305
+ type="radio"
306
+ id="yasr-billing-cycle-monthly"
307
+ name="billing-cycle"
308
+ value="monthly"
309
+ onChange={this.updateCycle}
310
+ checked={this.state.cycle === "monthly"}
311
+ />
312
+ <label htmlFor='yasr-billing-cycle-monthly'>
313
+ Monthly
314
+ </label>
315
+
316
+ <input
317
+ type="radio"
318
+ id="yasr-billing-cycle-annual"
319
+ name="billing-cycle"
320
+ value="annual"
321
+ onChange={this.updateCycle}
322
+ checked={this.state.cycle === "annual"}
323
+ />
324
+ <label htmlFor='yasr-billing-cycle-annual'>
325
+ Annual
326
+ </label>
327
+
328
+ <input
329
+ type="radio"
330
+ id="yasr-billing-cycle-lifetime"
331
+ name="billing-cycle"
332
+ value="lifetime"
333
+ onChange={this.updateCycle}
334
+ checked={this.state.cycle === "lifetime"}
335
+ />
336
+ <label htmlFor='yasr-billing-cycle-lifetime'>
337
+ Lifetime
338
+ </label>
339
+ </div>
340
+
341
+ <div id="yasr-pricing-table">
342
+ <div className="yasr-pricing-table-item">
343
+ <header className="yasr-pricing-table-heading">
344
+ <h2 className="yasr-pricing-table-title">Plus</h2>
345
+ <p className="yasr-pricing-table-subtitle">5 websites</p>
346
+ </header>
347
+ <YasrPricingPrintFeatures cycle={this.state.cycle} license='plus'/>
348
+ <div className="yasr-pricing-table-footer">
349
+ <YasrPricingPrice cycle={this.state.cycle} currency={this.state.currencyName} license='plus'/>
350
+ </div>
351
+ </div>
352
+
353
+ <div className="yasr-pricing-table-item is-highlighted">
354
+ <header className="yasr-pricing-table-heading">
355
+ <h2 className="yasr-pricing-table-title">Single</h2>
356
+ <p className="yasr-pricing-table-subtitle"> 1 website</p>
357
+ </header>
358
+ <YasrPricingPrintFeatures cycle={this.state.cycle} license='single'/>
359
+ <div className="yasr-pricing-table-footer">
360
+ <YasrPricingPrice cycle={this.state.cycle} currency={this.state.currencyName} license='single'/>
361
+ </div>
362
+ </div>
363
+
364
+ <div className="yasr-pricing-table-item">
365
+ <header className="yasr-pricing-table-heading">
366
+ <h2 className="yasr-pricing-table-title">Enterprise</h2>
367
+ <p className="yasr-pricing-table-subtitle"> 30 websites</p>
368
+ </header>
369
+ <YasrPricingPrintFeatures cycle={this.state.cycle} license='enterprise'/>
370
+ <div className="yasr-pricing-table-footer">
371
+ <YasrPricingPrice cycle={this.state.cycle} currency={this.state.currencyName} license='enterprise'/>
372
+ </div>
373
+ </div>
374
+ </div>
375
+
376
+ <div id="switch-container">
377
+ <span className="yasr-pricing-text-switcher"> Display Prices In US $ </span>
378
+ <label className="yasr-pricing-switch">
379
+ <input type="checkbox" onChange={this.updateCurrency} />
380
+ <span className="yasr-pricing-slider" />
381
+ </label>
382
+ <span className="yasr-pricing-text-switcher"> €</span>
383
+ </div>
384
+ </>
385
+ );
386
+ }
387
+ }
388
+
389
+ ReactDOM.render(<PricingTable />, document.getElementById('yasr-table-container'));
390
+
391
+ // Get the button that opens the modal
392
+ const btn = document.getElementById('yasr-link-policy');
393
+ const btn2 = document.getElementById('yasr-link-policy-faq');
394
+ // Get the modal
395
+ const modal = document.getElementById('yasr-refund-policy');
396
+ //
397
+ const close = document.getElementById('yasr-close-modal-policy');
398
+
399
+ // When the user clicks on the button, open the modal
400
+ btn.addEventListener("click", ()=>{
401
+ modal.style.display = "block";
402
+ document.body.style.backgroundColor = 'rgba(0,0,0,0.7)'; /* Black w/ opacity */
403
+ });
404
+
405
+ // When the user clicks on the button, open the modal
406
+ btn2.addEventListener("click", ()=>{
407
+ modal.style.display = "block";
408
+ document.body.style.backgroundColor = 'rgba(0,0,0,0.7)'; /* Black w/ opacity */
409
+ });
410
+
411
+ // When the user clicks on <span> (x), close the modal
412
+ close.onclick = function() {
413
+ modal.style.display = "none";
414
+ document.body.style.backgroundColor = '#f1f1f1';
415
+ }
admin/js/yasr-pricing-page.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(e){var t={};function c(n){if(t[n])return t[n].exports;var r=t[n]={i:n,l:!1,exports:{}};return e[n].call(r.exports,r,r.exports,c),r.l=!0,r.exports}c.m=e,c.c=t,c.d=function(e,t,n){c.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},c.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},c.t=function(e,t){if(1&t&&(e=c(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(c.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)c.d(n,r,function(t){return e[t]}.bind(null,r));return n},c.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return c.d(t,"a",t),t},c.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},c.p="",c(c.s=0)}([function(e,t,c){e.exports=c(1)},function(e,t){function c(e){return(c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function n(e,t){for(var c=0;c<t.length;c++){var n=t[c];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function r(e,t){return(r=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function a(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var c,n=s(e);if(t){var r=s(this).constructor;c=Reflect.construct(n,arguments,r)}else c=n.apply(this,arguments);return l(this,c)}}function l(e,t){return!t||"object"!==c(t)&&"function"!=typeof t?i(e):t}function i(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function s(e){return(s=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function u(e){var t="$";return"eur"===e.name&&(t="€"),React.createElement("small",null,t," ")}function o(e){var t="/year";return"monthly"===e.name&&(t="/month"),"lifetime"===e.name&&(t=""),React.createElement("small",null,t)}function y(e){var t=" 1 website";return"plus"===e.license&&(t=" 5 websites"),"enterprise"===e.license&&(t=" 30 websites"),React.createElement("ul",{className:"PT-Features"},React.createElement("li",{className:"yasr-pricing-table-feature"},React.createElement("strong",null,"1 year")," of supports and updates ",React.createElement("br",null),"for",React.createElement("strong",null,t)),React.createElement("li",{className:"yasr-pricing-table-feature"},"User reviews"),React.createElement("li",{className:"yasr-pricing-table-feature"},"Custom rankings"),React.createElement("li",{className:"yasr-pricing-table-feature"},"20 + ready to use themes"),React.createElement("li",{className:"yasr-pricing-table-feature"},"Upload your own theme"),React.createElement("li",{className:"yasr-pricing-table-feature"},"Add fake ratings"),React.createElement("li",{className:"yasr-pricing-table-feature"},"Direct email support"),"lifetime"===e.cycle&&React.createElement("li",{className:"yasr-pricing-table-feature"},"We setup the plugin for free ",React.createElement("br",null),"(only lifetime plans)"))}function m(e){var t="",c=1;return"single"===e.license?t="monthly"===e.cycle?"eur"===e.currency?"4.49":"4.99":"lifetime"===e.cycle?"eur"===e.currency?"129.99":"149.99":"eur"===e.currency?"41.99":"47.88":"plus"===e.license?(c=5,t="monthly"===e.cycle?"eur"===e.currency?"8.99":"9.99":"lifetime"===e.cycle?"eur"===e.currency?"249.99":"289.99":"eur"===e.currency?"83.88":"95.88"):"enterprise"===e.license&&(c=30,t="monthly"===e.cycle?"eur"===e.currency?"12.99":"14.99":"lifetime"===e.cycle?"eur"===e.currency?"359.99":"439.99":"eur"===e.currency?"119.88":"143.88"),React.createElement("div",{className:"yasr-pring-table-price"},React.createElement(u,{name:e.currency}),React.createElement("span",null,t),React.createElement(o,{name:e.cycle}),React.createElement(p,{cycle:e.cycle,currency:e.currency,license:e.license}),React.createElement("p",{className:"PT-CTA"},React.createElement("a",{href:"#",className:"yasr-buy-button",onClick:function(t){!function(e,t,c){var n={billing_cycle:e,licenses:t,id:"yasr_checkout",page:"yasr_settings_page-pricing",checkout:"true",plan_id:"2778",plan_name:"yasrpro",disable_licenses_selector:!0,hide_billing_cycles:!0,currency:c},r=[];for(var a in n){var l=encodeURIComponent(a),i=encodeURIComponent(n[a]);r.push(l+"="+i)}r=r.join("&");var s=yasrCommonData.adminUrl+"admin.php?"+r;window.open(s,"_self")}(e.cycle,c,e.currency),t.preventDefault()}},"Buy YASR ")))}function p(e){if("annual"===e.cycle){var t="";return t="plus"===e.license?"eur"===e.currency?"6.99":"7.99":"enterprise"===e.license?"eur"===e.currency?"9.99":"11.99":"eur"===e.currency?"3.49":"3.99",React.createElement("p",{className:"yasr-pricing-table-price-desc"},React.createElement(u,{name:e.currency}),t," /month")}return React.createElement(React.Fragment,null)}var f=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&r(e,t)}(u,React.Component);var t,c,l,s=a(u);function u(e){var t;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,u),(t=s.call(this,e)).state={currencyName:"usd",cycle:"annual"},t.updateCurrency=t.updateCurrency.bind(i(t)),t.updateCycle=t.updateCycle.bind(i(t)),t}return t=u,(c=[{key:"updateCurrency",value:function(e){var t=e.target;!0===("checkbox"===t.type?t.checked:t.value)?this.setState({currencyName:"eur"}):this.setState({currencyName:"usd"})}},{key:"updateCycle",value:function(e){this.setState({cycle:e.target.value})}},{key:"render",value:function(){return React.createElement(React.Fragment,null,React.createElement("div",{id:"yasr-radio-billing-cycle"},React.createElement("input",{type:"radio",id:"yasr-billing-cycle-monthly",name:"billing-cycle",value:"monthly",onChange:this.updateCycle,checked:"monthly"===this.state.cycle}),React.createElement("label",{htmlFor:"yasr-billing-cycle-monthly"},"Monthly"),React.createElement("input",{type:"radio",id:"yasr-billing-cycle-annual",name:"billing-cycle",value:"annual",onChange:this.updateCycle,checked:"annual"===this.state.cycle}),React.createElement("label",{htmlFor:"yasr-billing-cycle-annual"},"Annual"),React.createElement("input",{type:"radio",id:"yasr-billing-cycle-lifetime",name:"billing-cycle",value:"lifetime",onChange:this.updateCycle,checked:"lifetime"===this.state.cycle}),React.createElement("label",{htmlFor:"yasr-billing-cycle-lifetime"},"Lifetime")),React.createElement("div",{id:"yasr-pricing-table"},React.createElement("div",{className:"yasr-pricing-table-item"},React.createElement("header",{className:"yasr-pricing-table-heading"},React.createElement("h2",{className:"yasr-pricing-table-title"},"Plus"),React.createElement("p",{className:"yasr-pricing-table-subtitle"},"5 websites")),React.createElement(y,{cycle:this.state.cycle,license:"plus"}),React.createElement("div",{className:"yasr-pricing-table-footer"},React.createElement(m,{cycle:this.state.cycle,currency:this.state.currencyName,license:"plus"}))),React.createElement("div",{className:"yasr-pricing-table-item is-highlighted"},React.createElement("header",{className:"yasr-pricing-table-heading"},React.createElement("h2",{className:"yasr-pricing-table-title"},"Single"),React.createElement("p",{className:"yasr-pricing-table-subtitle"}," 1 website")),React.createElement(y,{cycle:this.state.cycle,license:"single"}),React.createElement("div",{className:"yasr-pricing-table-footer"},React.createElement(m,{cycle:this.state.cycle,currency:this.state.currencyName,license:"single"}))),React.createElement("div",{className:"yasr-pricing-table-item"},React.createElement("header",{className:"yasr-pricing-table-heading"},React.createElement("h2",{className:"yasr-pricing-table-title"},"Enterprise"),React.createElement("p",{className:"yasr-pricing-table-subtitle"}," 30 websites")),React.createElement(y,{cycle:this.state.cycle,license:"enterprise"}),React.createElement("div",{className:"yasr-pricing-table-footer"},React.createElement(m,{cycle:this.state.cycle,currency:this.state.currencyName,license:"enterprise"})))),React.createElement("div",{id:"switch-container"},React.createElement("span",{className:"yasr-pricing-text-switcher"}," Display Prices In US $ "),React.createElement("label",{className:"yasr-pricing-switch"},React.createElement("input",{type:"checkbox",onChange:this.updateCurrency}),React.createElement("span",{className:"yasr-pricing-slider"})),React.createElement("span",{className:"yasr-pricing-text-switcher"}," €")))}}])&&n(t.prototype,c),l&&n(t,l),u}();ReactDOM.render(React.createElement(f,null),document.getElementById("yasr-table-container"));var d=document.getElementById("yasr-link-policy"),b=document.getElementById("yasr-link-policy-faq"),g=document.getElementById("yasr-refund-policy"),h=document.getElementById("yasr-close-modal-policy");d.addEventListener("click",(function(){g.style.display="block",document.body.style.backgroundColor="rgba(0,0,0,0.7)"})),b.addEventListener("click",(function(){g.style.display="block",document.body.style.backgroundColor="rgba(0,0,0,0.7)"})),h.onclick=function(){g.style.display="none",document.body.style.backgroundColor="#f1f1f1"}}]);
admin/settings/classes/YasrSettings.php CHANGED
@@ -478,8 +478,10 @@ class YasrSettings {
478
  <?php _e('Example', 'yet-another-stars-rating') ?>:
479
  </strong>
480
  <br />
481
- <img src="<?php echo YASR_IMG_DIR . 'yasr-settings-stats.png'?>" class="yasr-help-box-settings"
482
- style="display: block" alt="yasr-statsexplained">
 
 
483
  </div>
484
  </div>
485
  <hr />
478
  <?php _e('Example', 'yet-another-stars-rating') ?>:
479
  </strong>
480
  <br />
481
+ <img src="<?php echo YASR_IMG_DIR . 'yasr-settings-stats.png'?>"
482
+ class="yasr-help-box-settings"
483
+ style="display: block; width: 330px"
484
+ alt="yasr-statsexplained">
485
  </div>
486
  </div>
487
  <hr />
admin/settings/yasr-pricing-page.php ADDED
@@ -0,0 +1,126 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+
4
+ Copyright 2020 Dario Curvino (email : d.curvino@tiscali.it)
5
+
6
+ This program is free software: you can redistribute it and/or modify
7
+ it under the terms of the GNU General Public License as published by
8
+ the Free Software Foundation, either version 2 of the License, or
9
+ (at your option) any later version.
10
+
11
+ This program is distributed in the hope that it will be useful,
12
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
+ GNU General Public License for more details.
15
+
16
+ You should have received a copy of the GNU General Public License
17
+ along with this program. If not, see <http://www.gnu.org/licenses/>
18
+ */
19
+
20
+ if (!defined('ABSPATH')) {
21
+ exit('You\'re not allowed to see this page');
22
+ } // Exit if accessed directly
23
+
24
+ ?>
25
+
26
+ <div id="money_back_guarantee_cont">
27
+ <section id="money_back_guarantee">
28
+ <h1>
29
+ <b class="stars">
30
+ <i class="last">⋆</i>
31
+ <i class="middle">⋆</i>
32
+ <i class="first">⋆</i>
33
+ </b>
34
+ <span>7-Day Money Back Guarantee</span>
35
+ <b class="stars">
36
+ <i class="first">⋆</i>
37
+ <i class="middle">⋆</i>
38
+ <i class="last">⋆</i>
39
+ </b>
40
+ </h1>
41
+ <p>
42
+ You are fully protected by our 100% Money Back Guarantee. If during the next 7 days you experience an issue
43
+ that makes the plugin unusable and we are unable to resolve it, we'll happily consider offering a full refund
44
+ of your money. <a id="yasr-link-policy" href="#">Learn more...</a>
45
+ </p>
46
+ </section>
47
+ </div>
48
+
49
+ <div id="yasr-refund-policy-cont">
50
+ <div id="yasr-refund-policy" class="yasr-refund-policy">
51
+ <!-- Modal content -->
52
+ <div id="yasr-modal-content">
53
+ <span class="yasr-close-modal-policy" id="yasr-close-modal-policy">&times;</span>
54
+ <header class="yasr-modal-header">
55
+ <h2>Refund Policy</h2>
56
+ </header>
57
+
58
+ <p>
59
+ We stand behind our plugin’s quality and your satisfaction with it is important to us. If you experience problems with the plugin, we will be happy to provide a full refund within 7 days of the original upgrade date.
60
+ </p>
61
+ <p>
62
+ Refunds will be offered at our sole discretion and must meet all of the following conditions <b>fully</b>:
63
+ </p>
64
+ <ul>
65
+ <li>You are within the first 7 days of the purchase of the plugin.</li>
66
+ <li>Your issue(s) derives from not being able to install the plugin properly or get the plugin to perform its basic functions.</li>
67
+ <li>You have attempted to resolve your issue(s) with our support team by opening a support ticket through the "Contact Us" in the plugin’s admin settings.</li>
68
+ <li>No refunds will be granted after the first 7 days of the original purchase whatsoever.</li>
69
+ <li>Refunds will not be granted for missing feature(s). If you are not sure we support a specific feature, please contact us first.</li>
70
+ <li>Issues caused by conflicts with 3rd party plugins, themes or other software will not provide grounds for a refund.</li>
71
+ <li>Refunds will not be granted if you simply decide not to use the plugin.</li>
72
+ </ul>
73
+ <p>By upgrading, you agree to this refund policy and relinquish any rights to subject it to any questions, judgment or legal actions.</p> <p>
74
+ </p>
75
+ </div>
76
+ </div>
77
+ </div>
78
+
79
+ <div id="yasr-table-container">
80
+ </div>
81
+
82
+ <div id="yasr-pricing-faq">
83
+ <div class="yasr-pricing-faq-row">
84
+ <h2>Frequently Asked Questions</h2>
85
+ </div>
86
+ <div class="">
87
+ <p>&nbsp;</p>
88
+ </div>
89
+
90
+ <div class="yasr-pricing-faq-row">
91
+ <h3>Is there a setup fee?</h3>
92
+ <p>No. There are no setup fees on any of our plans.</p>
93
+
94
+ <h3>Can I cancel my account at any time?</h3>
95
+ <p>Yes, if you ever decide that Yasr - Yet Another Stars Rating isn't the best plugin for your business, simply cancel your account from your Account panel.</p>
96
+
97
+ <h3>What's the time span for your contracts?</h3>
98
+ <p>All plans are month-to-month unless you subscribe for an annual or lifetime plan.</p>
99
+
100
+ <h3>Do you offer any discounted plans?</h3>
101
+ <p>Yes, as you can see in the table!.</p>
102
+
103
+ <h3>Can I change my plan later on?</h3>
104
+ <p>Absolutely! You can upgrade or downgrade your plan at any time.</p>
105
+
106
+ <h3>What payment methods are accepted?</h3>
107
+ <p>We accept all major credit cards including Visa, Mastercard, American Express, as well as PayPal payments.</p>
108
+
109
+ <h3>Do you offer refunds?</h3>
110
+ <p><a href="#" id="yasr-link-policy-faq">Yes we do!</a> We stand behind the
111
+ quality of our product and will refund 100% of your money if you experience an issue that makes
112
+ the plugin unusable and we are unable to resolve it.
113
+ </p>
114
+
115
+ <h3>Do I get updates for the premium plugin?</h3>
116
+ <p>Yes! Automatic updates to our premium plugin are available free of charge as long as you stay our paying customer.</p>
117
+
118
+ <h3>Do you offer support if I need help?</h3>
119
+ <p>Yes! Top-notch customer support for our paid customers is key for a quality product, so we'll do our very best to resolve any issues you encounter via our support page.</p>
120
+
121
+ <h3>I have other pre-sale questions, can you help?</h3>
122
+ <p>Yes! You can ask us any question writing at
123
+ <a href="mailto:support@yetanotherstarsrating.com?subject=Presale%20Question">this link</a>.
124
+ </p>
125
+ </div>
126
+ </div>
admin/settings/yasr-settings-functions-misc.php CHANGED
@@ -199,9 +199,8 @@ function yasr_description_strucutured_data() {
199
  }
200
 
201
  function yasr_upgrade_pro_box($position = false) {
202
-
203
  if (yasr_fs()->is_free_plan()) {
204
- if ($position && $position === "bottom") {
205
  $yasr_upgrade_class = "yasr-donatedivbottom";
206
  } else {
207
  $yasr_upgrade_class = "yasr-donatedivdx";
@@ -260,8 +259,7 @@ function yasr_upgrade_pro_box($position = false) {
260
  *
261
  */
262
  function yasr_resources_box($position = false) {
263
-
264
- if ($position && $position === "bottom") {
265
  $yasr_metabox_class = "yasr-donatedivbottom";
266
  } else {
267
  $yasr_metabox_class = "yasr-donatedivdx";
@@ -307,13 +305,45 @@ function yasr_resources_box($position = false) {
307
 
308
  }
309
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
310
  /** Add a box on the right for asking to rate 5 stars on Wordpress.org
311
  * Since version 0.9.0
312
  */
313
-
314
  function yasr_ask_rating($position = false) {
315
-
316
- if ($position && $position === "bottom") {
317
  $yasr_metabox_class = "yasr-donatedivbottom";
318
  } else {
319
  $yasr_metabox_class = "yasr-donatedivdx";
@@ -350,6 +380,7 @@ function yasr_right_settings_panel($position = false) {
350
  do_action('yasr_right_settings_panel_box', $position);
351
  yasr_upgrade_pro_box($position);
352
  yasr_resources_box($position);
 
353
  yasr_ask_rating($position);
354
  }
355
 
199
  }
200
 
201
  function yasr_upgrade_pro_box($position = false) {
 
202
  if (yasr_fs()->is_free_plan()) {
203
+ if ($position === "bottom") {
204
  $yasr_upgrade_class = "yasr-donatedivbottom";
205
  } else {
206
  $yasr_upgrade_class = "yasr-donatedivdx";
259
  *
260
  */
261
  function yasr_resources_box($position = false) {
262
+ if ($position === "bottom") {
 
263
  $yasr_metabox_class = "yasr-donatedivbottom";
264
  } else {
265
  $yasr_metabox_class = "yasr-donatedivdx";
305
 
306
  }
307
 
308
+ function yasr_buy_cofee($position = false) {
309
+ if ($position === "bottom") {
310
+ $yasr_metabox_class = "yasr-donatedivbottom";
311
+ } else {
312
+ $yasr_metabox_class = "yasr-donatedivdx";
313
+ }
314
+
315
+ $buymecofeetext = __('Coffee is vital to make YASR development going on!', 'yet-another-stars-rating');
316
+ $buymecofeetext .= '<br />';
317
+
318
+ if(yasr_fs()->is_free_plan()) {
319
+ $buymecofeetext .= __('If you are enjoying YASR, and you don\'t need the pro version, please consider to buy me a coffee, thanks!',
320
+ 'yet-another-stars-rating');
321
+ } else {
322
+ $buymecofeetext .= __('If you are enjoying YASR, please consider to buy me a coffee, thanks!',
323
+ 'yet-another-stars-rating');
324
+ }
325
+
326
+ $div = "<div class='$yasr_metabox_class' id='yasr-buy-cofee' style='display:none;'>";
327
+
328
+ $text = '<div class="yasr-donate-title">' . __('Buy me a coffee!', 'yet-another-stars-rating') .'</div>';
329
+ $text .= '<div style="text-align: center">';
330
+ $text .= '<a href="https://www.buymeacoffee.com/dariocurvino" target="_blank">
331
+ <img src="'.YASR_IMG_DIR.'/buymecofyel.png" alt="buymeacofee">
332
+ </a>';
333
+ $text .= '</div>';
334
+ $text .= '<div style="margin-top: 15px;">';
335
+ $text .= $buymecofeetext;
336
+ $text .= '</div>';
337
+ $div_and_text = $div . $text . '</div>';
338
+
339
+ echo $div_and_text;
340
+ }
341
+
342
  /** Add a box on the right for asking to rate 5 stars on Wordpress.org
343
  * Since version 0.9.0
344
  */
 
345
  function yasr_ask_rating($position = false) {
346
+ if ($position === "bottom") {
 
347
  $yasr_metabox_class = "yasr-donatedivbottom";
348
  } else {
349
  $yasr_metabox_class = "yasr-donatedivdx";
380
  do_action('yasr_right_settings_panel_box', $position);
381
  yasr_upgrade_pro_box($position);
382
  yasr_resources_box($position);
383
+ yasr_buy_cofee($position);
384
  yasr_ask_rating($position);
385
  }
386
 
admin/yasr-admin-functions.php CHANGED
@@ -67,9 +67,34 @@ function yasr_add_admin_scripts($hook) {
67
  );
68
  }
69
 
70
- if ($hook === 'index.php' || $hook === 'edit.php' || $hook === 'post.php' || $hook === 'post-new.php' ||
71
- $hook === 'edit-comments.php' || $hook === 'term.php' || $hook === $yasr_settings_page ||
72
- $hook === 'yet-another-stars-rating_page_yasr_stats_page'
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
73
  ) {
74
 
75
  do_action('yasr_add_admin_scripts_begin', $hook);
@@ -143,6 +168,8 @@ function yasr_add_pages() {
143
  'yasr_stats_page_callback'
144
  );
145
 
 
 
146
  if (yasr_fs()->is_free_plan() && !yasr_fs()->is_trial()) {
147
  global $submenu;
148
  $permalink = '#';
@@ -160,6 +187,7 @@ function yasr_settings_page_callback() {
160
  if (!current_user_can('manage_options')) {
161
  wp_die(__('You do not have sufficient permissions to access this page.', 'yet-another-stars-rating'));
162
  }
 
163
  include(YASR_ABSOLUTE_PATH_ADMIN . '/settings/yasr-settings-page.php');
164
  } //End yasr_settings_page_content
165
 
@@ -172,6 +200,14 @@ function yasr_stats_page_callback() {
172
  include(YASR_ABSOLUTE_PATH_ADMIN . '/settings/yasr-stats-page.php');
173
  }
174
 
 
 
 
 
 
 
 
 
175
 
176
  /**
177
  * Check if the current page is the Gutenberg block editor.
67
  );
68
  }
69
 
70
+ if ($hook === 'yet-another-stars-rating_page_yasr_pricing_page'
71
+ || $hook === 'yet-another-stars-rating_page_yasr_settings_page-pricing') {
72
+ wp_enqueue_style(
73
+ 'yasrcss-pricing',
74
+ YASR_CSS_DIR_ADMIN . 'yasr-pricing-page.css',
75
+ false,
76
+ YASR_VERSION_NUM
77
+ );
78
+
79
+ wp_enqueue_script(
80
+ 'yasrjs-pricing',
81
+ YASR_JS_DIR_ADMIN . 'yasr-pricing-page.js',
82
+ array('wp-element', 'yasradmin'),
83
+ YASR_VERSION_NUM,
84
+ true
85
+ );
86
+ }
87
+
88
+ if ($hook === 'index.php'
89
+ || $hook === 'edit.php'
90
+ || $hook === 'post.php'
91
+ || $hook === 'post-new.php'
92
+ || $hook === 'edit-comments.php'
93
+ || $hook === 'term.php'
94
+ || $hook === $yasr_settings_page
95
+ || $hook === 'yet-another-stars-rating_page_yasr_stats_page'
96
+ || $hook === 'yet-another-stars-rating_page_yasr_pricing_page'
97
+ || $hook === 'yet-another-stars-rating_page_yasr_settings_page-pricing'
98
  ) {
99
 
100
  do_action('yasr_add_admin_scripts_begin', $hook);
168
  'yasr_stats_page_callback'
169
  );
170
 
171
+ yasr_fs()->add_filter('templates/pricing.php', 'yasr_pricing_page_callback');
172
+
173
  if (yasr_fs()->is_free_plan() && !yasr_fs()->is_trial()) {
174
  global $submenu;
175
  $permalink = '#';
187
  if (!current_user_can('manage_options')) {
188
  wp_die(__('You do not have sufficient permissions to access this page.', 'yet-another-stars-rating'));
189
  }
190
+
191
  include(YASR_ABSOLUTE_PATH_ADMIN . '/settings/yasr-settings-page.php');
192
  } //End yasr_settings_page_content
193
 
200
  include(YASR_ABSOLUTE_PATH_ADMIN . '/settings/yasr-stats-page.php');
201
  }
202
 
203
+ function yasr_pricing_page_callback() {
204
+ if (!current_user_can('manage_options')) {
205
+ wp_die(__('You do not have sufficient permissions to access this page.', 'yet-another-stars-rating'));
206
+ }
207
+
208
+ include(YASR_ABSOLUTE_PATH_ADMIN . '/settings/yasr-pricing-page.php');
209
+ }
210
+
211
 
212
  /**
213
  * Check if the current page is the Gutenberg block editor.
includes/img/buymecofyel.png ADDED
Binary file
includes/img/yasr-settings-stats.png CHANGED
Binary file
includes/yasr-includes-functions.php CHANGED
@@ -59,6 +59,7 @@ function yasr_add_scripts_includes() {
59
  wp_localize_script(YASR_HANDLE_SCRIPT, 'yasrCommonData',
60
  array(
61
  'restEndpoint' => esc_url_raw(rest_url()),
 
62
  'ajaxurl' => admin_url('admin-ajax.php'),
63
  'visitorStatsEnabled' => YASR_VISITORS_STATS,
64
  'ajaxEnabled' => YASR_ENABLE_AJAX,
59
  wp_localize_script(YASR_HANDLE_SCRIPT, 'yasrCommonData',
60
  array(
61
  'restEndpoint' => esc_url_raw(rest_url()),
62
+ 'adminUrl' => admin_url(),
63
  'ajaxurl' => admin_url('admin-ajax.php'),
64
  'visitorStatsEnabled' => YASR_VISITORS_STATS,
65
  'ajaxEnabled' => YASR_ENABLE_AJAX,
readme.txt CHANGED
@@ -5,7 +5,7 @@ Requires at least: 5.0
5
  Contributors: Dudo
6
  Tested up to: 5.7.2
7
  Requires PHP: 5.4
8
- Stable tag: 2.7.5
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
11
  Boost the way people interact with your site with an easy WordPress stars rating system! With schema.org rich snippets YASR will improve your SEO
@@ -192,6 +192,10 @@ If doesn't, you should work on your seo reputation.
192
 
193
  The full changelog can be found in the plugin's directory. Recent entries:
194
 
 
 
 
 
195
  = 2.7.5 =
196
  * TWEAKED: in yasr_visitor_votes, chart icon now has same color of the text.
197
 
5
  Contributors: Dudo
6
  Tested up to: 5.7.2
7
  Requires PHP: 5.4
8
+ Stable tag: 2.7.6
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
11
  Boost the way people interact with your site with an easy WordPress stars rating system! With schema.org rich snippets YASR will improve your SEO
192
 
193
  The full changelog can be found in the plugin's directory. Recent entries:
194
 
195
+ = 2.7.6 =
196
+ * TWEAKED: new pricing page
197
+ * Minor changes
198
+
199
  = 2.7.5 =
200
  * TWEAKED: in yasr_visitor_votes, chart icon now has same color of the text.
201
 
yet-another-stars-rating.php CHANGED
@@ -4,7 +4,7 @@
4
  * Plugin Name: Yet Another Stars Rating
5
  * Plugin URI: http://wordpress.org/plugins/yet-another-stars-rating/
6
  * Description: Boost the way people interact with your site with an easy WordPress stars rating system! With schema.org rich snippets YASR will improve your SEO
7
- * Version: 2.7.5
8
  * Author: Dario Curvino
9
  * Author URI: https://dariocurvino.it/
10
  * Text Domain: yet-another-stars-rating
@@ -76,7 +76,7 @@ if ( !function_exists( 'yasr_fs' ) ) {
76
  yasr_fs();
77
  // Signal that SDK was initiated.
78
  do_action( 'yasr_fs_loaded' );
79
- define( 'YASR_VERSION_NUM', '2.7.5' );
80
  //Plugin absolute path
81
  //e.g. /var/www/html/plugin_development/wp-content/plugins/yet-another-stars-rating
82
  define( 'YASR_ABSOLUTE_PATH', __DIR__ );
4
  * Plugin Name: Yet Another Stars Rating
5
  * Plugin URI: http://wordpress.org/plugins/yet-another-stars-rating/
6
  * Description: Boost the way people interact with your site with an easy WordPress stars rating system! With schema.org rich snippets YASR will improve your SEO
7
+ * Version: 2.7.6
8
  * Author: Dario Curvino
9
  * Author URI: https://dariocurvino.it/
10
  * Text Domain: yet-another-stars-rating
76
  yasr_fs();
77
  // Signal that SDK was initiated.
78
  do_action( 'yasr_fs_loaded' );
79
+ define( 'YASR_VERSION_NUM', '2.7.6' );
80
  //Plugin absolute path
81
  //e.g. /var/www/html/plugin_development/wp-content/plugins/yet-another-stars-rating
82
  define( 'YASR_ABSOLUTE_PATH', __DIR__ );