PluginProbe
BlockSpare – Gutenberg Blocks, AI Content Generator & Site Builder for News, Magazine & Blogs / 2.6.6
BlockSpare – Gutenberg Blocks, AI Content Generator & Site Builder for News, Magazine & Blogs v2.6.6
5.0.1 4.1.0 trunk 1.0.0 1.0.1 1.0.2 1.0.3 1.0.4 1.0.5 1.1.0 1.1.1 1.1.2 1.2.0 1.2.1 1.2.2 1.2.3 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.3.5 2.1.2 2.5.0 2.5.3 All 39 releases
← All changes | freemius/templates/pricing.php +107 -9 5.0.1 → 2.6.6 View file →
@@ -5,14 +5,42 @@
5 5 * @license https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License Version 3
6 6 * @since 1.0.3
7 7 */
8 8
9 + /**
10 + * Note for WordPress.org Theme/Plugin reviewer:
11 + * Freemius is an SDK for plugin and theme developers. Since the core
12 + * of the SDK is relevant both for plugins and themes, for obvious reasons,
13 + * we only develop and maintain one code base.
14 + *
15 + * This code (and page) will not run for wp.org themes (only plugins).
16 + *
17 + * In addition, this page loads an i-frame. We intentionally named it 'frame'
18 + * so it will pass the "Theme Check" that is looking for the string "i" . "frame".
19 + *
20 + * UPDATE:
21 + * After ongoing conversations with the WordPress.org TRT we received
22 + * an official approval for including i-frames in the theme's WP Admin setting's
23 + * page tab (the SDK will never add any i-frames on the sitefront). i-frames
24 + * were never against the guidelines, but we wanted to get the team's blessings
25 + * before we move forward. For the record, I got the final approval from
26 + * Ulrich Pogson (@grapplerulrich), a team lead at the TRT during WordCamp
27 + * Europe 2017 (June 16th, 2017).
28 + *
29 + * If you have any questions or need clarifications, please don't hesitate
30 + * pinging me on slack, my username is @svovaf.
31 + *
32 + * @author Vova Feldman (@svovaf)
33 + * @since 1.2.2
34 + */
35 +
9 36 if ( ! defined( 'ABSPATH' ) ) {
10 37 exit;
11 38 }
12 39
13 40 wp_enqueue_script( 'jquery' );
14 - fs_enqueue_local_script( 'postmessage', 'nojquery.ba-postmessage.js' );
41 + wp_enqueue_script( 'json2' );
42 + fs_enqueue_local_script( 'postmessage', 'nojquery.ba-postmessage.min.js' );
15 43 fs_enqueue_local_script( 'fs-postmessage', 'postmessage.js' );
16 44 fs_enqueue_local_style( 'fs_common', '/admin/common.css' );
17 45
18 46 /**
@@ -63,15 +91,26 @@
63 91 'currency' => $fs->apply_filters( 'default_currency', 'usd' ),
64 92 'discounts_model' => $fs->apply_filters( 'pricing/discounts_model', 'absolute' ),
65 93 ) );
66 94
67 - $pricing_js_url = fs_asset_url( $fs->get_pricing_js_path() );
95 + $use_external_pricing = $fs->should_use_external_pricing();
68 96
69 - wp_enqueue_script( 'freemius-pricing', $pricing_js_url );
97 + if ( ! $use_external_pricing ) {
98 + $pricing_js_url = fs_asset_url( $fs->get_pricing_js_path() );
99 + wp_enqueue_script( 'freemius-pricing', $pricing_js_url );
100 + } else {
101 + if ( ! $fs->is_registered() ) {
102 + $template_data = array(
103 + 'id' => $fs->get_id(),
104 + );
105 + fs_require_template( 'forms/trial-start.php', $template_data);
106 + }
70 107
71 - $pricing_css_path = $fs->apply_filters( 'pricing/css_path', null );
72 - if ( is_string( $pricing_css_path ) ) {
73 - wp_enqueue_style( 'freemius-pricing', fs_asset_url( $pricing_css_path ) );
108 + $view_params = array(
109 + 'id' => $VARS['id'],
110 + 'page' => strtolower( $fs->get_text_x_inline( 'Pricing', 'noun', 'pricing' ) ),
111 + );
112 + fs_require_once_template('secure-https-header.php', $view_params);
74 113 }
75 114
76 115 $has_tabs = $fs->_add_tabs_before_content();
77 116
@@ -79,8 +118,9 @@
79 118 $query_params['tabs'] = 'true';
80 119 }
81 120 ?>
82 121 <div id="fs_pricing" class="wrap fs-section fs-full-size-wrapper">
122 + <?php if ( ! $use_external_pricing ) : ?>
83 123 <div id="fs_pricing_wrapper" data-public-url="<?php echo trailingslashit( dirname( $pricing_js_url ) ) ?>"></div>
84 124 <?php
85 125 $pricing_config = array_merge( array(
86 126 'contact_url' => $fs->contact_url(),
@@ -97,16 +137,74 @@
97 137 ),
98 138 'selector' => '#fs_pricing_wrapper',
99 139 'unique_affix' => $fs->get_unique_affix(),
100 140 'show_annual_in_monthly' => $fs->apply_filters( 'pricing/show_annual_in_monthly', true ),
101 - 'license' => $fs->has_active_valid_license() ? $fs->_get_license() : null,
102 - 'plugin_icon' => $fs->get_local_icon_url(),
103 - 'disable_single_package' => $fs->apply_filters( 'pricing/disable_single_package', false ),
104 141 ), $query_params );
105 142
106 143 wp_add_inline_script( 'freemius-pricing', 'Freemius.pricing.new( ' . json_encode( $pricing_config ) . ' )' );
107 144 ?>
145 + <?php else : ?>
146 + <div id="fs_frame"></div>
147 + <form action="" method="POST">
148 + <input type="hidden" name="user_id"/>
149 + <input type="hidden" name="user_email"/>
150 + <input type="hidden" name="site_id"/>
151 + <input type="hidden" name="public_key"/>
152 + <input type="hidden" name="secret_key"/>
153 + <input type="hidden" name="action" value="account"/>
154 + </form>
155 +
156 + <script type="text/javascript">
157 + (function ($, undef) {
158 + $(function () {
159 + var
160 + // Keep track of the i-frame height.
161 + frame_height = 800,
162 + base_url = '<?php echo WP_FS__ADDRESS ?>',
163 + // Pass the parent page URL into the i-frame in a meaningful way (this URL could be
164 + // passed via query string or hard coded into the child page, it depends on your needs).
165 + src = base_url + '/pricing/?<?php echo http_build_query( $query_params ) ?>#' + encodeURIComponent(document.location.href),
166 +
167 + // Append the I-frame into the DOM.
168 + frame = $('<i' + 'frame " src="' + src + '" width="100%" height="' + frame_height + 'px" scrolling="no" frameborder="0" style="background: transparent; width: 1px; min-width: 100%;"><\/i' + 'frame>')
169 + .appendTo('#fs_frame');
170 +
171 + FS.PostMessage.init(base_url, [frame[0]]);
172 +
173 + FS.PostMessage.receive('height', function (data) {
174 + var h = data.height;
175 + if (!isNaN(h) && h > 0 && h != frame_height) {
176 + frame_height = h;
177 + frame.height(frame_height + 'px');
178 +
179 + FS.PostMessage.postScroll(frame[0]);
180 + }
181 + });
182 +
183 + FS.PostMessage.receive('get_dimensions', function (data) {
184 + FS.PostMessage.post('dimensions', {
185 + height : $(document.body).height(),
186 + scrollTop: $(document).scrollTop()
187 + }, frame[0]);
188 + });
189 +
190 + FS.PostMessage.receive('start_trial', function (data) {
191 + openTrialConfirmationModal(data);
192 + });
193 + });
194 + })(jQuery);
195 + </script>
196 + <?php endif ?>
108 197 </div>
109 198 <?php
110 199 if ( $has_tabs ) {
111 200 $fs->_add_tabs_after_content();
112 201 }
202 +
203 + $params = array(
204 + 'page' => 'pricing',
205 + 'module_id' => $fs->get_id(),
206 + 'module_type' => $fs->get_module_type(),
207 + 'module_slug' => $slug,
208 + 'module_version' => $fs->get_plugin_version(),
209 + );
210 + fs_require_template( 'powered-by.php', $params );