Version Description
- New Gutenberg block for embedding inline campaigns.
- Improved syncing of data between the OptinMonster app and the WordPress plugin to help with shortcode parsing, and adding/removing campaigns when going live or pausing. Will also retain previously saved Output Settings when un-pausing a campaign and refreshing.
- Improvements to a11y across the plugin's admin pages.
- Updated Constant Contact branding
- Updates to improve performance on the plugin's admin pages.
- Minified assets to improve performance on the plugin's admin pages.
- Increase timeout time for the WooCommerce auto-generate keys request to accomodate for some servers.
- Clean up admin notices when on the OptinMonster plugin's admin pages.
- New About Us page.
- Added filter for auto-enabling new campaigns (true by default).
- Added filter for changing the API enqueue location from the default footer.
- Added plugin settings menu links to plugin action links in the Plugins table.
- Improvements to the Welcome page to allow connecting account directly.
- Improvements to the account-connection process.
- Improvements to the Campaigns page.
- Improvements to the Campaigns' Output Settings pages.
- Fix bug with mailpoet phone number possibly being set to 0.
- Fix bug to allow campaigns to show on categories, even when the category is registered to a non-"post" post-type.
- Fixed potential issues with storing our embed code for multisite installations.
- Fixed bug where cookie-delete button was not deleting all OptinMonster cookies for given user.
- Improved WooCommerce connect screen by showing the auto-generate option by default.
- Removed duplicate WooCommerce categories/tags from the Output Settings.
- Various other bug fixes, and performance updates.
- Improved debug output.
Download this release
Release Info
Developer | jtsternberg |
Plugin | Popups by OptinMonster – Best WordPress Lead Generation Plugin |
Version | 1.9.10 |
Comparing to | |
See all releases |
Code changes from version 1.9.9 to 1.9.10
- CHANGELOG.md +26 -0
- OMAPI/Actions.php +57 -30
- OMAPI/Ajax.php +88 -68
- OMAPI/Api.php +70 -28
- OMAPI/Blocks.php +193 -0
- OMAPI/ConstantContact.php +42 -295
- OMAPI/Content.php +229 -102
- OMAPI/InstallSkin.php +55 -0
- OMAPI/MailPoet.php +212 -0
- OMAPI/Menu.php +508 -605
- OMAPI/Output.php +39 -28
- OMAPI/Pages.php +179 -0
- OMAPI/Pointer.php +25 -13
- OMAPI/Refresh.php +168 -45
- OMAPI/RestApi.php +390 -20
- OMAPI/Review.php +9 -39
- OMAPI/Rules.php +57 -28
- OMAPI/Save.php +186 -78
- OMAPI/Shortcode.php +22 -15
- OMAPI/Sites.php +130 -23
- OMAPI/Support.php +175 -0
- OMAPI/TrustPulse.php +14 -8
- OMAPI/Type.php +1 -1
- OMAPI/Utils.php +19 -0
- OMAPI/Validate.php +38 -27
- OMAPI/Welcome.php +95 -155
- OMAPI/Widget.php +13 -7
- assets/css/images/constant-contact-OM.png +0 -0
- assets/css/images/constant_OM.png +0 -0
- assets/css/images/dashboard-icon.png +0 -0
- assets/css/images/featured-logos.png +0 -0
- assets/css/images/features-ab-testing.png +0 -0
- assets/css/images/features-analytics.png +0 -0
- assets/css/images/features-builder.png +0 -0
- assets/css/images/features-exit-animated.gif +0 -0
- assets/css/images/logo-color-large.png +0 -0
- assets/css/images/logo-color-large@2x.png +0 -0
- assets/css/images/matthewwoodward.png +0 -0
- assets/css/images/menu-icon@2x.png +0 -0
- assets/css/images/michaelstelzner.png +0 -0
- assets/css/images/neilpatel.png +0 -0
- assets/css/images/omapi-graph.png +0 -0
- assets/css/images/title-icon@2x.png +0 -0
- assets/css/images/video-cta-button.png +0 -0
- assets/css/select2-spinner.gif +0 -0
- assets/css/select2.min.css +0 -0
- assets/css/select2.png +0 -0
- assets/css/select2x2.png +0 -0
- assets/css/settings.css +0 -916
- assets/css/trustpulse-admin.min.css +0 -416
- assets/dist/css/blocks-admin.min.css +53 -0
- assets/dist/css/blocks-admin.min.js +1 -0
- assets/dist/css/common.min.css +153 -0
- assets/dist/css/common.min.js +1 -0
- assets/dist/css/settings.min.css +955 -0
- assets/dist/css/settings.min.js +1 -0
- assets/dist/css/trustpulse.min.css +329 -0
- assets/dist/css/trustpulse.min.js +1 -0
- assets/dist/js/campaign-selector.min.js +1 -0
- assets/dist/js/connect.min.js +1 -0
- assets/dist/js/pointer.min.js +1 -0
- assets/dist/js/settings.min.js +1 -0
- assets/fonts/Averta-ExtraBoldItalic.eot +0 -0
- assets/fonts/FontAwesome.otf +0 -0
- assets/fonts/fontawesome-webfont.eot +0 -0
- assets/fonts/fontawesome-webfont.svg +0 -0
- assets/fonts/fontawesome-webfont.ttf +0 -0
- assets/fonts/fontawesome-webfont.woff +0 -0
- assets/images/BigCommerce-logo.png +0 -0
- assets/images/about/plugin-mi.png +0 -0
- assets/images/about/plugin-wp-forms.png +0 -0
- assets/images/features-event.svg +135 -0
- assets/images/features-fire.svg +60 -0
- assets/images/gravity-forms.png +0 -0
- assets/images/home-flexible.svg +66 -0
- assets/images/home-smart-targeting.svg +126 -0
- assets/images/logo-edd.png +0 -0
- assets/images/logo-formidable.png +0 -0
- assets/images/logo-om.png +0 -0
- assets/images/memberpress-logo.svg +76 -0
- assets/images/ninja-forms.png +0 -0
- assets/images/omteam.jpg +0 -0
- assets/images/trustpulse-admin-icon.svg +3 -0
- assets/images/video-background.png +0 -0
- assets/images/video-cta-button.png +0 -0
- assets/images/woocommerce_logo.png +0 -0
- assets/images/wpforms.png +0 -0
- assets/js/pointer.js +26 -20
- assets/js/select2.min.js +0 -0
- assets/js/settings.js +128 -52
- assets/js/tooltip.min.js +0 -0
- optin-monster-wp-api.php +167 -28
- readme.txt +28 -6
- views/about.php +64 -0
- views/constantcontact.php +248 -0
- views/logo.svg +174 -0
- views/notification-close-js.php +20 -0
- views/notification-css.php +83 -0
- views/notification-pulse-css.php +58 -0
- views/notification.php +11 -0
- views/plugin-banner.php +30 -0
- views/review.php +33 -0
- views/trustpulse-settings-page.php +15 -14
- views/welcome.php +126 -0
CHANGELOG.md
CHANGED
@@ -1,6 +1,32 @@
|
|
1 |
# Changelog
|
2 |
All notable changes to the OptinMonster plugin will be documented in this file.
|
3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4 |
### 1.9.9
|
5 |
* Fix issue where if multiple post tags were selected, popups and other campaigns would only appear on the first tag selected.
|
6 |
* Fix campaign shortcode suggestion in admin being incorrect.
|
1 |
# Changelog
|
2 |
All notable changes to the OptinMonster plugin will be documented in this file.
|
3 |
|
4 |
+
### 1.9.10
|
5 |
+
* New Gutenberg block for embedding inline campaigns.
|
6 |
+
* Improved syncing of data between the OptinMonster app and the WordPress plugin to help with shortcode parsing, and adding/removing campaigns when going live or pausing. Will also retain previously saved Output Settings when un-pausing a campaign and refreshing.
|
7 |
+
* Improvements to a11y across the plugin's admin pages.
|
8 |
+
* Updated Constant Contact branding
|
9 |
+
* Updates to improve performance on the plugin's admin pages.
|
10 |
+
* Minified assets to improve performance on the plugin's admin pages.
|
11 |
+
* Increase timeout time for the WooCommerce auto-generate keys request to accomodate for some servers.
|
12 |
+
* Clean up admin notices when on the OptinMonster plugin's admin pages.
|
13 |
+
* New About Us page.
|
14 |
+
* Added filter for auto-enabling new campaigns (true by default).
|
15 |
+
* Added filter for changing the API enqueue location from the default footer.
|
16 |
+
* Added plugin settings menu links to plugin action links in the Plugins table.
|
17 |
+
* Improvements to the Welcome page to allow connecting account directly.
|
18 |
+
* Improvements to the account-connection process.
|
19 |
+
* Improvements to the Campaigns page.
|
20 |
+
* Improvements to the Campaigns' Output Settings pages.
|
21 |
+
* Fix bug with mailpoet phone number possibly being set to 0.
|
22 |
+
* Fix bug to allow campaigns to show on categories, even when the category is registered to a non-"post" post-type.
|
23 |
+
* Fixed potential issues with storing our embed code for multisite installations.
|
24 |
+
* Fixed bug where cookie-delete button was not deleting all OptinMonster cookies for given user.
|
25 |
+
* Improved WooCommerce connect screen by showing the auto-generate option by default.
|
26 |
+
* Removed duplicate WooCommerce categories/tags from the Output Settings.
|
27 |
+
* Various other bug fixes, and performance updates.
|
28 |
+
* Improved debug output.
|
29 |
+
|
30 |
### 1.9.9
|
31 |
* Fix issue where if multiple post tags were selected, popups and other campaigns would only appear on the first tag selected.
|
32 |
* Fix campaign shortcode suggestion in admin being incorrect.
|
OMAPI/Actions.php
CHANGED
@@ -68,7 +68,7 @@ class OMAPI_Actions {
|
|
68 |
|
69 |
// Add validation messages.
|
70 |
add_action( 'admin_init', array( $this, 'actions' ) );
|
71 |
-
add_action( 'admin_init', array( $this, 'fetch_missing_data' ) );
|
72 |
add_action( 'admin_notices', array( $this, 'notices' ) );
|
73 |
|
74 |
}
|
@@ -106,35 +106,32 @@ class OMAPI_Actions {
|
|
106 |
}
|
107 |
|
108 |
// Prepare variable of args for admin notice.
|
109 |
-
$args
|
110 |
$args['optin_monster_api_action_done'] = $action;
|
111 |
-
$args['optin_monster_api_view'] = 'optins';
|
112 |
|
113 |
switch ( $action ) {
|
114 |
-
case 'status'
|
115 |
if ( $this->status() ) {
|
116 |
$args['optin_monster_api_action_type'] = 'success';
|
117 |
$args['optin_monster_api_action_id'] = $this->optin_id;
|
118 |
} else {
|
119 |
$args['optin_monster_api_action_type'] = 'error';
|
120 |
}
|
121 |
-
|
122 |
|
123 |
-
case 'cookies'
|
124 |
if ( $this->cookies() ) {
|
125 |
$args['optin_monster_api_action_type'] = 'success';
|
126 |
} else {
|
127 |
$args['optin_monster_api_action_type'] = 'error';
|
128 |
}
|
129 |
-
|
130 |
default:
|
131 |
-
|
132 |
}
|
133 |
|
134 |
// Now redirect to prevent reloads from undoing actions.
|
135 |
-
$
|
136 |
-
die( wp_redirect( $redirect ) );
|
137 |
-
|
138 |
}
|
139 |
|
140 |
/**
|
@@ -239,18 +236,29 @@ class OMAPI_Actions {
|
|
239 |
$notice = '';
|
240 |
|
241 |
switch ( $action ) {
|
242 |
-
case 'status'
|
243 |
-
|
244 |
-
|
245 |
-
|
246 |
-
|
247 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
248 |
$notice = 'success' === $type
|
249 |
? esc_html__( 'The local cookies have been cleared successfully.', 'optin-monster-api' )
|
250 |
: esc_html__( 'There was an error clearing the local cookies. Please try again.', 'optin-monster-api' );
|
251 |
-
|
252 |
default:
|
253 |
-
|
254 |
}
|
255 |
|
256 |
return $notice;
|
@@ -264,8 +272,8 @@ class OMAPI_Actions {
|
|
264 |
public function notices() {
|
265 |
|
266 |
// Check to see if any notices should be output based on query args.
|
267 |
-
$action = isset( $_GET['optin_monster_api_action_done'] ) ? strip_tags( stripslashes( $_GET['optin_monster_api_action_done'
|
268 |
-
$type = isset( $_GET['optin_monster_api_action_type'] ) ? strip_tags( stripslashes( $_GET['optin_monster_api_action_type'
|
269 |
|
270 |
// Maybe set the optin ID if it is available.
|
271 |
if ( isset( $_GET['optin_monster_api_action_id'] ) ) {
|
@@ -297,30 +305,30 @@ class OMAPI_Actions {
|
|
297 |
$changed = false;
|
298 |
|
299 |
// If we don't have an API Key yet, we can't fetch anything else.
|
300 |
-
if (
|
301 |
return;
|
302 |
}
|
303 |
|
304 |
// Fetch the userId and accountId, if we don't have them
|
305 |
if ( empty( $option['userId'] ) || empty( $option['accountId'] ) ) {
|
306 |
-
$api
|
307 |
$body = $api->request();
|
308 |
|
309 |
if ( isset( $body->id, $body->accountId ) ) {
|
310 |
$option['userId'] = $body->id;
|
311 |
$option['accountId'] = $body->accountId;
|
312 |
-
$changed
|
313 |
}
|
314 |
-
|
315 |
}
|
316 |
|
317 |
// Fetch the SiteIds for this site, if we don't have them
|
318 |
-
if ( empty( $option['siteIds'] ) ) {
|
319 |
-
$sites = $this->base->sites->fetch();
|
320 |
-
$option['siteIds'] = $sites['ids'];
|
321 |
-
$option['customApiUrl'] = $sites['customApiUrl'];
|
322 |
|
323 |
-
$
|
|
|
|
|
|
|
|
|
324 |
}
|
325 |
|
326 |
// Only update the option if we've changed something
|
@@ -330,4 +338,23 @@ class OMAPI_Actions {
|
|
330 |
|
331 |
}
|
332 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
333 |
}
|
68 |
|
69 |
// Add validation messages.
|
70 |
add_action( 'admin_init', array( $this, 'actions' ) );
|
71 |
+
add_action( 'admin_init', array( $this, 'fetch_missing_data' ), 99 );
|
72 |
add_action( 'admin_notices', array( $this, 'notices' ) );
|
73 |
|
74 |
}
|
106 |
}
|
107 |
|
108 |
// Prepare variable of args for admin notice.
|
109 |
+
$args = array();
|
110 |
$args['optin_monster_api_action_done'] = $action;
|
|
|
111 |
|
112 |
switch ( $action ) {
|
113 |
+
case 'status':
|
114 |
if ( $this->status() ) {
|
115 |
$args['optin_monster_api_action_type'] = 'success';
|
116 |
$args['optin_monster_api_action_id'] = $this->optin_id;
|
117 |
} else {
|
118 |
$args['optin_monster_api_action_type'] = 'error';
|
119 |
}
|
120 |
+
break;
|
121 |
|
122 |
+
case 'cookies':
|
123 |
if ( $this->cookies() ) {
|
124 |
$args['optin_monster_api_action_type'] = 'success';
|
125 |
} else {
|
126 |
$args['optin_monster_api_action_type'] = 'error';
|
127 |
}
|
128 |
+
break;
|
129 |
default:
|
130 |
+
break;
|
131 |
}
|
132 |
|
133 |
// Now redirect to prevent reloads from undoing actions.
|
134 |
+
$this->base->menu->redirect_to_dashboard( 'optins', $args );
|
|
|
|
|
135 |
}
|
136 |
|
137 |
/**
|
236 |
$notice = '';
|
237 |
|
238 |
switch ( $action ) {
|
239 |
+
case 'status':
|
240 |
+
if ( 'success' === $type ) {
|
241 |
+
$url = $this->base->menu->get_settings_link(
|
242 |
+
'optins',
|
243 |
+
array(
|
244 |
+
'optin_monster_api_action' => 'edit',
|
245 |
+
'optin_monster_api_id' => $this->optin_id,
|
246 |
+
)
|
247 |
+
);
|
248 |
+
|
249 |
+
$notice = sprintf( __( 'The campaign status was updated successfully. You can configure more specific loading requirements by <a href="%s" title="Click here to edit the output settings for the updated campaign.">editing the output settings</a> for the campaign.', 'optin-monster-api' ), esc_url_raw( $url ) );
|
250 |
+
} else {
|
251 |
+
$notice = esc_html__( 'There was an error updating the campaign status. Please try again.', 'optin-monster-api' );
|
252 |
+
}
|
253 |
+
|
254 |
+
break;
|
255 |
+
case 'cookies':
|
256 |
$notice = 'success' === $type
|
257 |
? esc_html__( 'The local cookies have been cleared successfully.', 'optin-monster-api' )
|
258 |
: esc_html__( 'There was an error clearing the local cookies. Please try again.', 'optin-monster-api' );
|
259 |
+
break;
|
260 |
default:
|
261 |
+
break;
|
262 |
}
|
263 |
|
264 |
return $notice;
|
272 |
public function notices() {
|
273 |
|
274 |
// Check to see if any notices should be output based on query args.
|
275 |
+
$action = isset( $_GET['optin_monster_api_action_done'] ) ? strip_tags( stripslashes( $_GET['optin_monster_api_action_done'] ) ) : false;
|
276 |
+
$type = isset( $_GET['optin_monster_api_action_type'] ) ? strip_tags( stripslashes( $_GET['optin_monster_api_action_type'] ) ) : false;
|
277 |
|
278 |
// Maybe set the optin ID if it is available.
|
279 |
if ( isset( $_GET['optin_monster_api_action_id'] ) ) {
|
305 |
$changed = false;
|
306 |
|
307 |
// If we don't have an API Key yet, we can't fetch anything else.
|
308 |
+
if ( empty( $creds['apikey'] ) && empty( $creds['user'] ) && empty( $creds['key'] ) ) {
|
309 |
return;
|
310 |
}
|
311 |
|
312 |
// Fetch the userId and accountId, if we don't have them
|
313 |
if ( empty( $option['userId'] ) || empty( $option['accountId'] ) ) {
|
314 |
+
$api = OMAPI_Api::build( 'v2', 'me', 'GET' );
|
315 |
$body = $api->request();
|
316 |
|
317 |
if ( isset( $body->id, $body->accountId ) ) {
|
318 |
$option['userId'] = $body->id;
|
319 |
$option['accountId'] = $body->accountId;
|
320 |
+
$changed = true;
|
321 |
}
|
|
|
322 |
}
|
323 |
|
324 |
// Fetch the SiteIds for this site, if we don't have them
|
325 |
+
if ( empty( $option['siteIds'] ) || empty( $option['siteId'] ) || $this->siteIdsAreNumeric( $option['siteIds'] ) ) {
|
|
|
|
|
|
|
326 |
|
327 |
+
$result = $this->base->sites->fetch();
|
328 |
+
if ( ! is_wp_error( $result ) ) {
|
329 |
+
$option = array_merge( $option, $result );
|
330 |
+
$changed = true;
|
331 |
+
}
|
332 |
}
|
333 |
|
334 |
// Only update the option if we've changed something
|
338 |
|
339 |
}
|
340 |
|
341 |
+
|
342 |
+
/**
|
343 |
+
* In one version of the Plugin, we fetched the numeric SiteIds,
|
344 |
+
* But we actually needed the alphanumeric SiteIds.
|
345 |
+
*
|
346 |
+
* So we use this check to determine if we need to re-fetch Site Ids
|
347 |
+
*
|
348 |
+
* @param array $siteIds
|
349 |
+
* @return bool True if the ids are numeric
|
350 |
+
*/
|
351 |
+
protected function siteIdsAreNumeric( $site_ids ) {
|
352 |
+
foreach ( $site_ids as $id ) {
|
353 |
+
if ( ! ctype_digit( (string) $id ) ) {
|
354 |
+
return false;
|
355 |
+
}
|
356 |
+
}
|
357 |
+
|
358 |
+
return true;
|
359 |
+
}
|
360 |
}
|
OMAPI/Ajax.php
CHANGED
@@ -86,7 +86,11 @@ class OMAPI_Ajax {
|
|
86 |
|
87 |
switch ( $_REQUEST['action'] ) {
|
88 |
case 'mailpoet':
|
89 |
-
$this->mailpoet();
|
|
|
|
|
|
|
|
|
90 |
break;
|
91 |
default:
|
92 |
break;
|
@@ -94,86 +98,102 @@ class OMAPI_Ajax {
|
|
94 |
}
|
95 |
|
96 |
/**
|
97 |
-
*
|
98 |
*
|
99 |
-
* @since 1.
|
|
|
|
|
|
|
100 |
*/
|
101 |
-
public function
|
102 |
-
//
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
$data = array_merge( $_REQUEST, $_REQUEST['optinData'] );
|
107 |
-
unset( $data['optinData'] );
|
108 |
-
|
109 |
-
$optin = $this->base->get_optin_by_slug( stripslashes( $data['optin'] ) );
|
110 |
-
$list = get_post_meta( $optin->ID, '_omapi_mailpoet_list', true );
|
111 |
-
$phone_field = get_post_meta( $optin->ID, '_omapi_mailpoet_phone_field', true );
|
112 |
-
$email = ! empty( $data['email'] ) ? stripslashes( $data['email'] ) : false;
|
113 |
-
$name = ! empty( $data['name'] ) ? stripslashes( $data['name'] ) : false;
|
114 |
-
$user = array();
|
115 |
-
|
116 |
-
// Possibly split name into first and last.
|
117 |
-
if ( $name ) {
|
118 |
-
$names = explode( ' ', $name );
|
119 |
-
if ( isset( $names[0] ) ) {
|
120 |
-
$user['firstname'] = $names[0];
|
121 |
-
}
|
122 |
|
123 |
-
|
124 |
-
|
125 |
-
|
|
|
|
|
126 |
}
|
127 |
|
128 |
-
//
|
129 |
-
|
130 |
|
131 |
-
//
|
132 |
-
|
133 |
-
|
|
|
|
|
|
|
134 |
}
|
135 |
|
136 |
-
|
137 |
-
$data = array(
|
138 |
-
'user' => $user,
|
139 |
-
'user_list' => array( 'list_ids' => array( $list ) ),
|
140 |
-
);
|
141 |
-
$data = apply_filters( 'optin_monster_pre_optin_mailpoet', $data, $_REQUEST, $list, null );
|
142 |
-
|
143 |
-
// Save the subscriber. Check for MailPoet 3 first. Default to legacy.
|
144 |
-
if ( class_exists( 'MailPoet\\API\\API' ) ) {
|
145 |
-
// Customize the lead data for MailPoet 3.
|
146 |
-
if ( isset( $user['firstname'] ) ) {
|
147 |
-
$user['first_name'] = $user['firstname'];
|
148 |
-
unset( $user['firstname'] );
|
149 |
-
}
|
150 |
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
}
|
155 |
|
156 |
-
|
157 |
-
$subscriber = \MailPoet\API\API::MP( 'v1' )->getSubscriber( $user['email'] );
|
158 |
-
} catch ( Exception $e ) {
|
159 |
-
$subscriber = false;
|
160 |
-
}
|
161 |
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
171 |
} else {
|
172 |
-
$
|
173 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
174 |
}
|
175 |
|
176 |
-
|
177 |
-
|
|
|
|
|
|
|
178 |
}
|
179 |
}
|
86 |
|
87 |
switch ( $_REQUEST['action'] ) {
|
88 |
case 'mailpoet':
|
89 |
+
$this->base->mailpoet->handle_ajax_call();
|
90 |
+
break;
|
91 |
+
case 'om_plugin_install':
|
92 |
+
add_action( 'wp_ajax_om_plugin_install', array( $this, 'install_or_activate' ) );
|
93 |
+
add_action( 'wp_ajax_nopriv_om_plugin_install', array( $this, 'install_or_activate' ) );
|
94 |
break;
|
95 |
default:
|
96 |
break;
|
98 |
}
|
99 |
|
100 |
/**
|
101 |
+
* Installs and activates a plugin for a given url
|
102 |
*
|
103 |
+
* @since 1.9.10
|
104 |
+
*
|
105 |
+
* @param string $plugin_url The Plugin URL
|
106 |
+
* @return void
|
107 |
*/
|
108 |
+
public function install_plugin( $plugin_url ) {
|
109 |
+
// Todo: Add Nonce verification
|
110 |
+
if ( ! current_user_can( 'install_plugins' ) ) {
|
111 |
+
wp_send_json_error( esc_html__( 'Sorry, not allowed!', 'optin-monster-api' ) );
|
112 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
113 |
|
114 |
+
$creds = request_filesystem_credentials( admin_url( 'admin.php' ), '', false, false, null );
|
115 |
+
|
116 |
+
// Check for file system permissions.
|
117 |
+
if ( false === $creds ) {
|
118 |
+
wp_send_json_error( esc_html__( 'Sorry, not allowed!', 'optin-monster-api' ) );
|
119 |
}
|
120 |
|
121 |
+
// We do not need any extra credentials if we have gotten this far, so let's install the plugin.
|
122 |
+
require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
|
123 |
|
124 |
+
// Create the plugin upgrader with our custom skin.
|
125 |
+
$installer = new Plugin_Upgrader( new OMAPI_InstallSkin() );
|
126 |
+
|
127 |
+
// Error check.
|
128 |
+
if ( ! method_exists( $installer, 'install' ) ) {
|
129 |
+
wp_send_json_error();
|
130 |
}
|
131 |
|
132 |
+
$installer->install( esc_url_raw( $plugin_url ) ); // phpcs:ignore
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
133 |
|
134 |
+
if ( ! $installer->plugin_info() ) {
|
135 |
+
wp_send_json_error();
|
136 |
+
}
|
|
|
137 |
|
138 |
+
$plugin_basename = $installer->plugin_info();
|
|
|
|
|
|
|
|
|
139 |
|
140 |
+
// Activate the plugin silently.
|
141 |
+
$activated = activate_plugin( $plugin_basename );
|
142 |
+
|
143 |
+
if ( ! is_wp_error( $activated ) ) {
|
144 |
+
wp_send_json_success(
|
145 |
+
array(
|
146 |
+
'msg' => esc_html__( 'Plugin installed & activated.', 'optin-monster-api' ),
|
147 |
+
'is_activated' => true,
|
148 |
+
'basename' => $plugin_basename,
|
149 |
+
)
|
150 |
+
);
|
151 |
+
}
|
152 |
+
|
153 |
+
wp_send_json_success(
|
154 |
+
array(
|
155 |
+
'msg' => esc_html__( 'Plugin installed.', 'optin-monster-api' ),
|
156 |
+
'is_activated' => false,
|
157 |
+
'basename' => $plugin_basename,
|
158 |
+
)
|
159 |
+
);
|
160 |
+
}
|
161 |
+
|
162 |
+
/**
|
163 |
+
* Installs or Activates a plugin with a given plugin name
|
164 |
+
*
|
165 |
+
* @param string $plugin_name
|
166 |
+
* @return void
|
167 |
+
*/
|
168 |
+
public function install_or_activate() {
|
169 |
+
$plugin = $_POST['plugin'];
|
170 |
+
$action = $_POST['installAction'];
|
171 |
+
$url = $_POST['url'];
|
172 |
+
|
173 |
+
if ( 'install' === $action ) {
|
174 |
+
$this->install_plugin( $url );
|
175 |
} else {
|
176 |
+
$this->activate_plugin( $plugin );
|
177 |
+
}
|
178 |
+
}
|
179 |
+
|
180 |
+
/**
|
181 |
+
* Activates a plugin with a given plugin name
|
182 |
+
*
|
183 |
+
* @param string $plugin_name
|
184 |
+
* @return void
|
185 |
+
*/
|
186 |
+
public function activate_plugin( $plugin_name ) {
|
187 |
+
|
188 |
+
// Check for permissions.
|
189 |
+
if ( ! current_user_can( 'activate_plugins' ) ) {
|
190 |
+
wp_send_json_error( esc_html__( 'Sorry, not allowed!', 'optin-monster-api' ) );
|
191 |
}
|
192 |
|
193 |
+
$activate = activate_plugins( sanitize_text_field( $plugin_name ) );
|
194 |
+
|
195 |
+
if ( ! is_wp_error( $activate ) ) {
|
196 |
+
wp_send_json_success( esc_html__( 'Plugin activated.', 'optin-monster-api' ) );
|
197 |
+
}
|
198 |
}
|
199 |
}
|
OMAPI/Api.php
CHANGED
@@ -20,6 +20,13 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
20 |
*/
|
21 |
class OMAPI_Api {
|
22 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
23 |
/**
|
24 |
* Base API route.
|
25 |
*
|
@@ -142,20 +149,27 @@ class OMAPI_Api {
|
|
142 |
*
|
143 |
* @since 1.8.0
|
144 |
*
|
145 |
-
* @param string $version
|
146 |
* @param string $endpoint The Api Endpoint
|
147 |
-
* @param string $method
|
|
|
148 |
*
|
149 |
* @return self
|
150 |
*/
|
151 |
-
public static function build( $version, $route, $method = 'POST' ) {
|
152 |
-
$creds
|
153 |
-
|
154 |
-
|
155 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
156 |
}
|
157 |
|
158 |
-
return new
|
159 |
}
|
160 |
|
161 |
/**
|
@@ -164,19 +178,21 @@ class OMAPI_Api {
|
|
164 |
* @since 1.0.0
|
165 |
*
|
166 |
* @param string $route The API route to target.
|
167 |
-
* @param array
|
168 |
* @param string $method The API method.
|
169 |
* @param string $version The version number of our API
|
170 |
*/
|
171 |
public function __construct( $route, $creds, $method = 'POST', $version = 'v1' ) {
|
172 |
// Set class properties.
|
173 |
-
$this->route
|
174 |
-
$this->version
|
175 |
-
$this->method
|
176 |
-
$this->user
|
177 |
-
$this->key
|
178 |
-
$this->apikey
|
179 |
-
$this->plugin
|
|
|
|
|
180 |
}
|
181 |
|
182 |
/**
|
@@ -190,8 +206,9 @@ class OMAPI_Api {
|
|
190 |
// Build the body of the request.
|
191 |
$body = array(
|
192 |
'omapi-user' => $this->user,
|
193 |
-
'omapi-key' => $this->key
|
194 |
);
|
|
|
195 |
|
196 |
// If a plugin API request, add the data.
|
197 |
if ( 'info' == $this->route || 'update' == $this->route ) {
|
@@ -205,25 +222,25 @@ class OMAPI_Api {
|
|
205 |
|
206 |
$body = wp_parse_args( $args, $body );
|
207 |
$url = in_array( $this->method, array( 'GET', 'DELETE' ), true )
|
208 |
-
? add_query_arg( $body, $this->getUrl() )
|
209 |
: $this->getUrl();
|
210 |
-
|
|
|
211 |
|
212 |
// Build the headers of the request.
|
213 |
$headers = array(
|
214 |
-
'Content-Type'
|
215 |
-
'Cache-Control'
|
216 |
-
'Pragma'
|
217 |
-
'Expires'
|
218 |
-
'Origin'
|
219 |
-
'OMAPI-Referer'
|
220 |
-
'OMAPI-Sender'
|
221 |
);
|
222 |
|
223 |
if ( $this->apikey ) {
|
224 |
$headers['X-OptinMonster-ApiKey'] = $this->apikey;
|
225 |
}
|
226 |
-
|
227 |
// Setup data to be sent to the API.
|
228 |
$data = array(
|
229 |
'headers' => $headers,
|
@@ -259,7 +276,7 @@ class OMAPI_Api {
|
|
259 |
$error = ! empty( $this->response_body->error ) ? stripslashes( $this->response_body->error ) : 'unknown';
|
260 |
}
|
261 |
|
262 |
-
return new WP_Error( $type, sprintf( __( 'The API returned a <strong>%s</strong> response with this message: <strong>%s</strong>', 'optin-monster-api' ), $this->response_code, $error ) );
|
263 |
}
|
264 |
|
265 |
// Return the json decoded content.
|
@@ -301,4 +318,29 @@ class OMAPI_Api {
|
|
301 |
public function set_additional_data( array $data ) {
|
302 |
$this->additional_data = array_merge( $this->additional_data, $data );
|
303 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
304 |
}
|
20 |
*/
|
21 |
class OMAPI_Api {
|
22 |
|
23 |
+
/**
|
24 |
+
* Holds the last instantiated instance of this class.
|
25 |
+
*
|
26 |
+
* @var OMAPI_Api
|
27 |
+
*/
|
28 |
+
protected static $instance = null;
|
29 |
+
|
30 |
/**
|
31 |
* Base API route.
|
32 |
*
|
149 |
*
|
150 |
* @since 1.8.0
|
151 |
*
|
152 |
+
* @param string $version The Api Version (v1 or v2)
|
153 |
* @param string $endpoint The Api Endpoint
|
154 |
+
* @param string $method The Request method
|
155 |
+
* @param array $creds Array of API credentials.
|
156 |
*
|
157 |
* @return self
|
158 |
*/
|
159 |
+
public static function build( $version, $route, $method = 'POST', $creds = array() ) {
|
160 |
+
if ( empty( $creds ) ) {
|
161 |
+
$creds = OMAPI::get_instance()->get_api_credentials();
|
162 |
+
|
163 |
+
// Check if we have the new API and if so only use it
|
164 |
+
$creds = ! empty( $creds['apikey'] )
|
165 |
+
? array( 'apikey' => $creds['apikey'] )
|
166 |
+
: array(
|
167 |
+
'user' => $creds['user'],
|
168 |
+
'key' => $creds['key'],
|
169 |
+
);
|
170 |
}
|
171 |
|
172 |
+
return new self( $route, $creds, $method, $version );
|
173 |
}
|
174 |
|
175 |
/**
|
178 |
* @since 1.0.0
|
179 |
*
|
180 |
* @param string $route The API route to target.
|
181 |
+
* @param array $creds Array of API credentials.
|
182 |
* @param string $method The API method.
|
183 |
* @param string $version The version number of our API
|
184 |
*/
|
185 |
public function __construct( $route, $creds, $method = 'POST', $version = 'v1' ) {
|
186 |
// Set class properties.
|
187 |
+
$this->route = $route;
|
188 |
+
$this->version = $version;
|
189 |
+
$this->method = $method;
|
190 |
+
$this->user = ! empty( $creds['user'] ) ? $creds['user'] : '';
|
191 |
+
$this->key = ! empty( $creds['key'] ) ? $creds['key'] : '';
|
192 |
+
$this->apikey = ! empty( $creds['apikey'] ) ? $creds['apikey'] : '';
|
193 |
+
$this->plugin = OMAPI::get_instance()->plugin_slug;
|
194 |
+
|
195 |
+
self::$instance = $this;
|
196 |
}
|
197 |
|
198 |
/**
|
206 |
// Build the body of the request.
|
207 |
$body = array(
|
208 |
'omapi-user' => $this->user,
|
209 |
+
'omapi-key' => $this->key,
|
210 |
);
|
211 |
+
$body = array_filter( $body );
|
212 |
|
213 |
// If a plugin API request, add the data.
|
214 |
if ( 'info' == $this->route || 'update' == $this->route ) {
|
222 |
|
223 |
$body = wp_parse_args( $args, $body );
|
224 |
$url = in_array( $this->method, array( 'GET', 'DELETE' ), true )
|
225 |
+
? add_query_arg( array_map( 'urlencode', $body ), $this->getUrl() )
|
226 |
: $this->getUrl();
|
227 |
+
|
228 |
+
$url = esc_url_raw( $url );
|
229 |
|
230 |
// Build the headers of the request.
|
231 |
$headers = array(
|
232 |
+
'Content-Type' => 'application/x-www-form-urlencoded',
|
233 |
+
'Cache-Control' => 'no-store, no-cache, must-revalidate, max-age=0, post-check=0, pre-check=0',
|
234 |
+
'Pragma' => 'no-cache',
|
235 |
+
'Expires' => 0,
|
236 |
+
'Origin' => site_url(),
|
237 |
+
'OMAPI-Referer' => site_url(),
|
238 |
+
'OMAPI-Sender' => 'WordPress',
|
239 |
);
|
240 |
|
241 |
if ( $this->apikey ) {
|
242 |
$headers['X-OptinMonster-ApiKey'] = $this->apikey;
|
243 |
}
|
|
|
244 |
// Setup data to be sent to the API.
|
245 |
$data = array(
|
246 |
'headers' => $headers,
|
276 |
$error = ! empty( $this->response_body->error ) ? stripslashes( $this->response_body->error ) : 'unknown';
|
277 |
}
|
278 |
|
279 |
+
return new WP_Error( $type, sprintf( __( 'The API returned a <strong>%1$s</strong> response with this message: <strong>%2$s</strong>', 'optin-monster-api' ), $this->response_code, $error ), $this->response_code );
|
280 |
}
|
281 |
|
282 |
// Return the json decoded content.
|
318 |
public function set_additional_data( array $data ) {
|
319 |
$this->additional_data = array_merge( $this->additional_data, $data );
|
320 |
}
|
321 |
+
|
322 |
+
/**
|
323 |
+
* Clear additional data
|
324 |
+
*
|
325 |
+
* @since 1.9.0
|
326 |
+
*
|
327 |
+
* @param array $data
|
328 |
+
* return void
|
329 |
+
*/
|
330 |
+
public function clear_additional_data() {
|
331 |
+
$this->additional_data = null;
|
332 |
+
|
333 |
+
return $this;
|
334 |
+
}
|
335 |
+
|
336 |
+
/**
|
337 |
+
* Returns the last instantiated instance of this class.
|
338 |
+
*
|
339 |
+
* @since 1.9.10
|
340 |
+
*
|
341 |
+
* @return A single instance of this class.
|
342 |
+
*/
|
343 |
+
public static function instance() {
|
344 |
+
return self::$instance;
|
345 |
+
}
|
346 |
}
|
OMAPI/Blocks.php
ADDED
@@ -0,0 +1,193 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Gutenberg Blocks registration class.
|
4 |
+
*
|
5 |
+
* @since 1.9.10
|
6 |
+
*
|
7 |
+
* @package OMAPI
|
8 |
+
* @author Thomas Griffin
|
9 |
+
*/
|
10 |
+
|
11 |
+
// Exit if accessed directly.
|
12 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
13 |
+
exit;
|
14 |
+
}
|
15 |
+
|
16 |
+
/**
|
17 |
+
* Gutenberg Blocks registration class.
|
18 |
+
*
|
19 |
+
* @since 1.9.10
|
20 |
+
*/
|
21 |
+
class OMAPI_Blocks {
|
22 |
+
|
23 |
+
/**
|
24 |
+
* Holds the class object.
|
25 |
+
*
|
26 |
+
* @since 1.9.10
|
27 |
+
*
|
28 |
+
* @var object
|
29 |
+
*/
|
30 |
+
public static $instance;
|
31 |
+
|
32 |
+
/**
|
33 |
+
* Path to the file.
|
34 |
+
*
|
35 |
+
* @since 1.9.10
|
36 |
+
*
|
37 |
+
* @var string
|
38 |
+
*/
|
39 |
+
public $file = __FILE__;
|
40 |
+
|
41 |
+
/**
|
42 |
+
* Holds the base class object.
|
43 |
+
*
|
44 |
+
* @since 1.9.10
|
45 |
+
*
|
46 |
+
* @var object
|
47 |
+
*/
|
48 |
+
public $base;
|
49 |
+
|
50 |
+
/**
|
51 |
+
* Primary class constructor.
|
52 |
+
*
|
53 |
+
* @since 1.9.10
|
54 |
+
*/
|
55 |
+
public function __construct() {
|
56 |
+
|
57 |
+
if ( function_exists( 'register_block_type' ) ) {
|
58 |
+
|
59 |
+
// Set our object.
|
60 |
+
$this->set();
|
61 |
+
$this->register_blocks();
|
62 |
+
|
63 |
+
add_action( 'enqueue_block_editor_assets', array( $this, 'enqueue_block_editor_assets' ) );
|
64 |
+
}
|
65 |
+
|
66 |
+
}
|
67 |
+
|
68 |
+
/**
|
69 |
+
* Sets our object instance and base class instance.
|
70 |
+
*
|
71 |
+
* @since 1.9.10
|
72 |
+
*/
|
73 |
+
public function set() {
|
74 |
+
self::$instance = $this;
|
75 |
+
$this->base = OMAPI::get_instance();
|
76 |
+
}
|
77 |
+
|
78 |
+
/**
|
79 |
+
* Register OptinMonster Gutenberg blocks on the backend.
|
80 |
+
*
|
81 |
+
* @since 1.9.10
|
82 |
+
*/
|
83 |
+
public function register_blocks() {
|
84 |
+
register_block_type(
|
85 |
+
'optinmonster/campaign-selector',
|
86 |
+
array(
|
87 |
+
'attributes' => array(
|
88 |
+
'slug' => array(
|
89 |
+
'type' => 'string',
|
90 |
+
),
|
91 |
+
'followrules' => array(
|
92 |
+
'type' => 'boolean',
|
93 |
+
),
|
94 |
+
),
|
95 |
+
// 'editor_style' => $this->base->plugin_slug . '-gutenberg-campaign-selector',
|
96 |
+
'render_callback' => array( $this, 'get_output' ),
|
97 |
+
)
|
98 |
+
);
|
99 |
+
}
|
100 |
+
|
101 |
+
/**
|
102 |
+
* Load OptinMonster Gutenberg block scripts.
|
103 |
+
*
|
104 |
+
* @since 1.9.10
|
105 |
+
*/
|
106 |
+
public function enqueue_block_editor_assets() {
|
107 |
+
$version = $this->base->asset_version();
|
108 |
+
$script_id = $this->base->plugin_slug . '-gutenberg-campaign-selector';
|
109 |
+
|
110 |
+
wp_enqueue_style( $this->base->plugin_slug . '-blocks-admin', $this->base->url . 'assets/dist/css/blocks-admin.min.css', array(), $version );
|
111 |
+
|
112 |
+
wp_enqueue_script(
|
113 |
+
$script_id,
|
114 |
+
$this->base->url . 'assets/dist/js/campaign-selector.min.js',
|
115 |
+
array( 'wp-blocks', 'wp-i18n', 'wp-element' ),
|
116 |
+
$version,
|
117 |
+
true
|
118 |
+
);
|
119 |
+
|
120 |
+
// For translation of strings.
|
121 |
+
$i18n = array(
|
122 |
+
'title' => esc_html__( 'OptinMonster Campaign', 'optin-monster-api' ),
|
123 |
+
'description' => esc_html__( 'Select & display one of your OptinMonster inline Campaigns.', 'optin-monster-api' ),
|
124 |
+
'campaign_select' => esc_html__( 'Select a Campaign', 'optin-monster-api' ),
|
125 |
+
'campaign_settings' => esc_html__( 'OptinMonster Settings', 'optin-monster-api' ),
|
126 |
+
'campaign_selected' => esc_html__( 'Campaign', 'optin-monster-api' ),
|
127 |
+
'followrules_label' => esc_html__( 'Use Output Settings' ),
|
128 |
+
'followrules_help' => esc_html__( 'Ensure this campaign follows any conditions you\'ve selected in its %s', 'optin-monster-api' ),
|
129 |
+
'output_settings' => esc_html__( 'Output Settings', 'optin-monster-api' ),
|
130 |
+
'no_campaigns' => esc_html__( 'No inline campaigns available!', 'optin-monster-api' ),
|
131 |
+
'no_campaigns_help' => esc_html__( 'Create an inline campaign in order to display them in your WordPress posts/pages. Alternatively, use a Monster Link to trigger another campaign type.', 'optin-monster-api' ),
|
132 |
+
'found_error' => esc_html__( 'An error was encountered', 'optin-monster-api' ),
|
133 |
+
);
|
134 |
+
$i18n['description'] = html_entity_decode( $i18n['description'] );
|
135 |
+
|
136 |
+
$campaigns = $this->base->get_optins();
|
137 |
+
wp_localize_script(
|
138 |
+
$script_id,
|
139 |
+
'OMAPI',
|
140 |
+
array(
|
141 |
+
'logoUrl' => $this->base->url . 'assets/css/images/logo-om.png',
|
142 |
+
'i18n' => $i18n,
|
143 |
+
'campaigns' => ! empty( $campaigns ) ? $campaigns : array(),
|
144 |
+
'post' => get_post(),
|
145 |
+
'omEnv' => defined( 'OPTINMONSTER_ENV' ) ? OPTINMONSTER_ENV : '',
|
146 |
+
'apiUrl' => esc_url_raw( $this->base->get_api_url() ),
|
147 |
+
'omUserId' => $this->base->get_option( 'userId' ),
|
148 |
+
'editUrl' => $this->base->menu->get_settings_link(
|
149 |
+
'optins',
|
150 |
+
array(
|
151 |
+
'optin_monster_api_action' => 'edit',
|
152 |
+
'optin_monster_api_id' => '%d',
|
153 |
+
)
|
154 |
+
),
|
155 |
+
)
|
156 |
+
);
|
157 |
+
}
|
158 |
+
|
159 |
+
/**
|
160 |
+
* Get form HTML to display in a OptinMonster Gutenberg block.
|
161 |
+
*
|
162 |
+
* @param array $atts Attributes passed by OptinMonster Gutenberg block.
|
163 |
+
*
|
164 |
+
* @since 1.9.10
|
165 |
+
*
|
166 |
+
* @return string
|
167 |
+
*/
|
168 |
+
public function get_output( $atts ) {
|
169 |
+
$is_rest = defined( 'REST_REQUEST' ) && REST_REQUEST;
|
170 |
+
$context = ! empty( $_REQUEST['context'] ) ? sanitize_text_field( $_REQUEST['context'] ) : '';
|
171 |
+
$is_gutes = $is_rest && 'edit' === $context;
|
172 |
+
|
173 |
+
// Our Guten-block handles the embed output manually.
|
174 |
+
if ( $is_gutes ) {
|
175 |
+
return;
|
176 |
+
}
|
177 |
+
|
178 |
+
$output = $this->base->shortcode->shortcode( $atts );
|
179 |
+
|
180 |
+
if (
|
181 |
+
! empty( $output )
|
182 |
+
&& ! wp_script_is( $this->base->plugin_slug . '-api-script', 'enqueued' )
|
183 |
+
) {
|
184 |
+
|
185 |
+
// Need to enqueue the base api script.
|
186 |
+
$this->base->output->api_script();
|
187 |
+
}
|
188 |
+
|
189 |
+
// Just return the shortcode output to the frontend.
|
190 |
+
return $output;
|
191 |
+
}
|
192 |
+
|
193 |
+
}
|
OMAPI/ConstantContact.php
CHANGED
@@ -98,11 +98,15 @@ class OMAPI_ConstantContact {
|
|
98 |
* @since 1.6.0
|
99 |
*/
|
100 |
public function register_cc_page() {
|
101 |
-
$slug
|
102 |
-
$is_current
|
|
|
|
|
|
|
|
|
103 |
|
104 |
$this->hook = add_submenu_page(
|
105 |
-
$
|
106 |
esc_html__( 'OptinMonster with Constant Contact', 'optin-monster-api' ), // page title,
|
107 |
esc_html__( 'OptinMonster + Constant Contact', 'optin-monster-api' ),
|
108 |
apply_filters( 'optin_monster_api_menu_cap', 'manage_options', $slug ), // cap
|
@@ -144,7 +148,7 @@ class OMAPI_ConstantContact {
|
|
144 |
|
145 |
// Only show on the main dashboard page (wp-admin/index.php)
|
146 |
// or any OptinMonster plugin-specific screen.
|
147 |
-
$can_show = $is_om_page =
|
148 |
if ( ! $can_show ) {
|
149 |
$can_show = function_exists( 'get_current_screen' ) && 'dashboard' === get_current_screen()->id;
|
150 |
}
|
@@ -153,8 +157,8 @@ class OMAPI_ConstantContact {
|
|
153 |
return;
|
154 |
}
|
155 |
|
156 |
-
$connect =
|
157 |
-
$learn_more =
|
158 |
|
159 |
// Output the notice message.
|
160 |
?>
|
@@ -193,35 +197,31 @@ class OMAPI_ConstantContact {
|
|
193 |
);
|
194 |
?>
|
195 |
</p>
|
196 |
-
|
197 |
-
|
198 |
-
|
199 |
-
|
200 |
-
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
|
210 |
-
|
211 |
-
|
212 |
-
|
213 |
-
|
214 |
-
|
215 |
-
|
216 |
-
|
217 |
-
|
218 |
-
$( document ).on( 'click', '.om-constant-contact-notice button', function ( event ) {
|
219 |
-
event.preventDefault();
|
220 |
-
$.post( ajaxurl, { action: 'om_constant_contact_dismiss' } );
|
221 |
-
$( '.om-constant-contact-notice' ).remove();
|
222 |
} );
|
223 |
-
|
224 |
-
</
|
225 |
<?php
|
226 |
}
|
227 |
|
@@ -242,20 +242,11 @@ class OMAPI_ConstantContact {
|
|
242 |
* @since 1.6.0
|
243 |
*/
|
244 |
public function assets() {
|
245 |
-
add_action( 'admin_enqueue_scripts', array( $this, 'styles' ) );
|
246 |
add_filter( 'admin_footer_text', array( $this, 'footer' ) );
|
247 |
add_action( 'in_admin_header', array( $this->base->menu, 'output_plugin_screen_banner' ) );
|
248 |
}
|
249 |
|
250 |
-
/**
|
251 |
-
* Register and enqueue settings page specific CSS.
|
252 |
-
*
|
253 |
-
* @since 1.6.0
|
254 |
-
*/
|
255 |
-
public function styles() {
|
256 |
-
wp_enqueue_style( $this->base->plugin_slug . '-settings', plugins_url( '/assets/css/settings.css', OMAPI_FILE ), array(), $this->base->version );
|
257 |
-
}
|
258 |
-
|
259 |
/**
|
260 |
* Customizes the footer text on the OptinMonster settings page.
|
261 |
*
|
@@ -280,257 +271,13 @@ class OMAPI_ConstantContact {
|
|
280 |
* @since 1.6.0
|
281 |
*/
|
282 |
public function display_page() {
|
283 |
-
$
|
284 |
-
|
285 |
-
|
286 |
-
|
287 |
-
|
288 |
-
|
289 |
-
|
290 |
-
.notice {
|
291 |
-
display: none;
|
292 |
-
}
|
293 |
-
|
294 |
-
.om-cc-wrap {
|
295 |
-
max-width: 970px;
|
296 |
-
}
|
297 |
-
|
298 |
-
.om-cc-wrap h1 {
|
299 |
-
/*color: #1a5285;*/
|
300 |
-
font-size: 30px;
|
301 |
-
margin: 0 0 15px 0;
|
302 |
-
}
|
303 |
-
|
304 |
-
.om-cc-wrap h2 {
|
305 |
-
/*color: #1a5285;*/
|
306 |
-
font-size: 26px;
|
307 |
-
margin: 0 0 15px 0;
|
308 |
-
text-align: left;
|
309 |
-
}
|
310 |
-
|
311 |
-
.om-cc-wrap p {
|
312 |
-
font-size: 16px;
|
313 |
-
font-weight: 300;
|
314 |
-
color: #333;
|
315 |
-
margin: 1.2em 0;
|
316 |
-
}
|
317 |
-
|
318 |
-
.om-cc-wrap ul,
|
319 |
-
.om-cc-wrap ol {
|
320 |
-
margin: 1.6em 2.5em 2em;
|
321 |
-
line-height: 1.5;
|
322 |
-
font-size: 16px;
|
323 |
-
font-weight: 300;
|
324 |
-
}
|
325 |
-
|
326 |
-
.om-cc-wrap ul {
|
327 |
-
list-style: disc;
|
328 |
-
}
|
329 |
-
|
330 |
-
.om-cc-wrap li {
|
331 |
-
margin-bottom: 0.8em;
|
332 |
-
}
|
333 |
-
|
334 |
-
.om-cc-wrap hr {
|
335 |
-
margin: 2.2em 0;
|
336 |
-
}
|
337 |
-
|
338 |
-
.om-cc-wrap .logo {
|
339 |
-
float: right;
|
340 |
-
margin-top: 0.8em;
|
341 |
-
border: 1px solid #ddd;
|
342 |
-
}
|
343 |
-
|
344 |
-
.om-cc-wrap .reasons {
|
345 |
-
margin: 2.2em 400px 2.2em 2em;
|
346 |
-
}
|
347 |
-
|
348 |
-
.om-cc-wrap .reasons li {
|
349 |
-
margin-bottom: 1.4em;
|
350 |
-
}
|
351 |
-
|
352 |
-
.om-cc-wrap .steps {
|
353 |
-
clear: both;
|
354 |
-
display: -webkit-box;
|
355 |
-
display: -ms-flexbox;
|
356 |
-
display: flex;
|
357 |
-
-ms-flex-wrap: wrap;
|
358 |
-
flex-wrap: wrap;
|
359 |
-
}
|
360 |
-
|
361 |
-
.om-cc-wrap .step {
|
362 |
-
-webkit-box-flex: 1;
|
363 |
-
-ms-flex-positive: 1;
|
364 |
-
flex-grow: 1;
|
365 |
-
-ms-flex-negative: 1;
|
366 |
-
flex-shrink: 1;
|
367 |
-
margin-bottom: 1.4em;
|
368 |
-
padding: 0 1em 0 0;
|
369 |
-
-ms-flex-preferred-size: 50%;
|
370 |
-
flex-basis: 50%;
|
371 |
-
-webkit-box-sizing: border-box;
|
372 |
-
box-sizing: border-box;
|
373 |
-
}
|
374 |
-
|
375 |
-
.om-cc-wrap .step a {
|
376 |
-
-webkit-box-shadow: rgba(0, 35, 60, 0.1) 3px 7px 13px 0px;
|
377 |
-
box-shadow: rgba(0, 35, 60, 0.1) 3px 7px 13px 0px;
|
378 |
-
border: 1px solid #efefef;
|
379 |
-
display: block;
|
380 |
-
}
|
381 |
-
|
382 |
-
.om-cc-wrap .step a:hover {
|
383 |
-
border-color: #d9d9d9;
|
384 |
-
}
|
385 |
-
|
386 |
-
.om-cc-wrap .step img {
|
387 |
-
max-width: 100%;
|
388 |
-
height: auto;
|
389 |
-
display: block;
|
390 |
-
}
|
391 |
-
|
392 |
-
.om-cc-wrap .dashicons-yes {
|
393 |
-
color: #19BE19;
|
394 |
-
font-size: 26px;
|
395 |
-
}
|
396 |
-
|
397 |
-
.om-cc-wrap .button {
|
398 |
-
background-color: #0078C3;
|
399 |
-
border: 1px solid #005990;
|
400 |
-
border-radius: 4px;
|
401 |
-
color: #fff;
|
402 |
-
font-size: 16px;
|
403 |
-
font-weight: 600;
|
404 |
-
height: auto;
|
405 |
-
line-height: 1;
|
406 |
-
margin-bottom: 10px;
|
407 |
-
padding: 14px 30px;
|
408 |
-
text-align: center;
|
409 |
-
}
|
410 |
-
|
411 |
-
.om-cc-wrap .button:hover,
|
412 |
-
.om-cc-wrap .button:focus {
|
413 |
-
background-color: #005990;
|
414 |
-
color: #fff
|
415 |
-
}
|
416 |
-
|
417 |
-
@media only screen and (max-width: 767px) {
|
418 |
-
.om-cc-wrap h1 {
|
419 |
-
font-size: 26px;
|
420 |
-
}
|
421 |
-
|
422 |
-
.om-cc-wrap h2 {
|
423 |
-
font-size: 22px;
|
424 |
-
}
|
425 |
-
|
426 |
-
.om-cc-wrap p {
|
427 |
-
font-size: 14px;
|
428 |
-
}
|
429 |
-
|
430 |
-
.om-cc-wrap ul,
|
431 |
-
.om-cc-wrap ol {
|
432 |
-
font-size: 14px;
|
433 |
-
}
|
434 |
-
|
435 |
-
.om-cc-wrap .logo {
|
436 |
-
width: 120px;
|
437 |
-
}
|
438 |
-
|
439 |
-
.om-cc-wrap .reasons {
|
440 |
-
margin-right: 150px;
|
441 |
-
}
|
442 |
-
}
|
443 |
-
</style>
|
444 |
-
<div class="wrap omapi-page om-cc-wrap">
|
445 |
-
<h1><?php esc_html_e( 'Grow Your Website with OptinMonster + Email Marketing', 'optin-monster-api' ); ?></h1>
|
446 |
-
<p><?php esc_html_e( 'Wondering if email marketing is really worth your time?', 'optin-monster-api' ); ?></p>
|
447 |
-
<p><?php echo wp_kses( __( 'Email is hands-down the most effective way to nurture leads and turn them into customers, with a return on investment (ROI) of <strong>$44 back for every $1 spent</strong> according to the Direct Marketing Association.', 'optin-monster-api' ), array( 'strong' => array() ) ); ?></p>
|
448 |
-
<p><?php esc_html_e( 'Here are 3 big reasons why every smart business in the world has an email list:', 'optin-monster-api' ); ?></p>
|
449 |
-
<a href="<?php echo esc_url( $this->sign_up ); ?>" target="_blank" rel="noopener noreferrer">
|
450 |
-
<img width="350" class="logo" src="<?php echo $images_url .'constant_OM.png'; ?>" alt="<?php esc_attr_e( 'OptinMonster with Constant Contact - Try us free', 'optin-monster-api' ); ?>"/>
|
451 |
-
</a>
|
452 |
-
<ol class="reasons">
|
453 |
-
<li><?php echo wp_kses( __( '<strong>Email is still #1</strong> - At least 91% of consumers check their email on a daily basis. You get direct access to your subscribers, without having to play by social media's rules and algorithms.', 'optin-monster-api' ), array( 'strong' => array() ) ); ?></li>
|
454 |
-
<li><?php echo wp_kses( __( '<strong>You own your email list</strong> - Unlike with social media, your list is your property and no one can revoke your access to it.', 'optin-monster-api' ), array( 'strong' => array() ) ); ?></li>
|
455 |
-
<li><?php echo wp_kses( __( '<strong>Email converts</strong> - People who buy products marketed through email spend 138% more than those who don't receive email offers.', 'optin-monster-api' ), array( 'strong' => array() ) ); ?></li>
|
456 |
-
</ol>
|
457 |
-
<p><?php esc_html_e( 'That's why it's crucial to start collecting email addresses and building your list as soon as possible.', 'optin-monster-api' ); ?></p>
|
458 |
-
<p>
|
459 |
-
<?php
|
460 |
-
printf(
|
461 |
-
wp_kses(
|
462 |
-
/* translators: %s - WPBeginners.com Guide to Email Lists URL. */
|
463 |
-
__( 'For more details, see this guide on <a href="%s" target="_blank" rel="noopener noreferrer">why building your email list is so important</a>.', 'optin-monster-api' ),
|
464 |
-
array(
|
465 |
-
'a' => array(
|
466 |
-
'href' => array(),
|
467 |
-
'target' => array(),
|
468 |
-
'rel' => array(),
|
469 |
-
),
|
470 |
-
)
|
471 |
-
),
|
472 |
-
'https://optinmonster.com/beginners-guide-to-email-marketing/'
|
473 |
-
);
|
474 |
-
?>
|
475 |
-
</p>
|
476 |
-
<hr/>
|
477 |
-
<h2><?php esc_html_e( 'You've Already Started - Here's the Next Step (It's Easy)', 'optin-monster-api' ); ?></h2>
|
478 |
-
<p><?php esc_html_e( 'Here are the 3 things you need to build an email list:', 'optin-monster-api' ); ?></p>
|
479 |
-
<ol>
|
480 |
-
<li><?php esc_html_e( 'A Website or Blog', 'optin-monster-api' ); ?> <span class="dashicons dashicons-yes"></span></li>
|
481 |
-
<?php // TODO: update the following line ?>
|
482 |
-
<li><?php esc_html_e( 'High-Converting Form Builder', 'optin-monster-api' ); ?> <span class="dashicons dashicons-yes"></span></li>
|
483 |
-
<li><strong><?php esc_html_e( 'The Best Email Marketing Service', 'optin-monster-api' ); ?></strong></li>
|
484 |
-
</ol>
|
485 |
-
<p><?php esc_html_e( 'With a powerful email marketing service like Constant Contact, you can instantly send out mass notifications and beautifully designed newsletters to engage your subscribers.', 'optin-monster-api' ); ?></p>
|
486 |
-
<p>
|
487 |
-
<a href="<?php echo esc_url( $this->sign_up ); ?>" class="button" target="_blank" rel="noopener noreferrer">
|
488 |
-
<?php esc_html_e( 'Get Started with Constant Contact for Free', 'optin-monster-api' ); ?>
|
489 |
-
</a>
|
490 |
-
</p>
|
491 |
-
<p><?php esc_html_e( 'OptinMonster plugin makes it fast and easy to capture all kinds of visitor information right from your WordPress site - even if you don't have a Constant Contact account.', 'optin-monster-api' ); ?></p>
|
492 |
-
<p><?php esc_html_e( 'But when you combine OptinMonster with Constant Contact, you can nurture your contacts and engage with them even after they leave your website. When you use Constant Contact + OptinMonster together, you can:', 'optin-monster-api' ); ?></p>
|
493 |
-
<ul>
|
494 |
-
<li><?php esc_html_e( 'Seamlessly add new contacts to your email list', 'optin-monster-api' ); ?></li>
|
495 |
-
<li><?php esc_html_e( 'Create and send professional email newsletters', 'optin-monster-api' ); ?></li>
|
496 |
-
<li><?php esc_html_e( 'Get expert marketing and support', 'optin-monster-api' ); ?></li>
|
497 |
-
</ul>
|
498 |
-
<p>
|
499 |
-
<a href="<?php echo esc_url( $this->sign_up ); ?>" target="_blank" rel="noopener noreferrer">
|
500 |
-
<strong><?php esc_html_e( 'Try Constant Contact Today', 'optin-monster-api' ); ?></strong>
|
501 |
-
</a>
|
502 |
-
</p>
|
503 |
-
<hr/>
|
504 |
-
<h2><?php esc_html_e( 'OptinMonster Makes List Building Easy', 'optin-monster-api' ); ?></h2>
|
505 |
-
<p><?php esc_html_e( 'When creating OptinMonster, our goal was to make a conversion optimization tool that was both EASY and POWERFUL.', 'optin-monster-api' ); ?></p>
|
506 |
-
<p><?php esc_html_e( 'Here's how it works.', 'optin-monster-api' ); ?></p>
|
507 |
-
<div class="steps">
|
508 |
-
<div class="step1 step">
|
509 |
-
<a href="<?php echo $images_url . 'om-step-1.png'; ?>"><img src="<?php echo $images_url . 'om-step-1-sm.png'; ?>"></a>
|
510 |
-
<p><?php esc_html_e( '1. Select a design from our beautiful, high-converting template library.', 'optin-monster-api' ); ?></p>
|
511 |
-
</div>
|
512 |
-
<div class="step2 step">
|
513 |
-
<a href="<?php echo $images_url . 'om-step-2.png'; ?>"><img src="<?php echo $images_url . 'om-step-2-sm.png'; ?>"></a>
|
514 |
-
<p><?php esc_html_e( '2. Drag and drop elements to completely customize the look and feel of your campaign.', 'optin-monster-api' ); ?></p>
|
515 |
-
</div>
|
516 |
-
<div class="step3 step">
|
517 |
-
<a href="<?php echo $images_url . 'om-step-3.png'; ?>"><img src="<?php echo $images_url . 'om-step-3-sm.png'; ?>"></a>
|
518 |
-
<p><?php esc_html_e( '3. Connect your Constant Contact email list.', 'optin-monster-api' ); ?></p>
|
519 |
-
</div>
|
520 |
-
<div class="step4 step">
|
521 |
-
<a href="<?php echo $images_url . 'om-step-4.png'; ?>"><img src="<?php echo $images_url . 'om-step-4-sm.png'; ?>"></a>
|
522 |
-
<p><?php esc_html_e( '4. Sync your campaign to your WordPress site, then hit Go Live.', 'optin-monster-api' ); ?></p>
|
523 |
-
</div>
|
524 |
-
</div>
|
525 |
-
<p><?php esc_html_e( 'It doesn't matter what kind of business you run, what kind of website you have, or what industry you are in - you need to start building your email list today.', 'optin-monster-api' ); ?></p>
|
526 |
-
<p><?php esc_html_e( 'With Constant Contact + OptinMonster, growing your list is easy.', 'optin-monster-api' ); ?></p>
|
527 |
-
<p>
|
528 |
-
<a href="<?php echo esc_url( $this->sign_up ); ?>" target="_blank" rel="noopener noreferrer">
|
529 |
-
<strong><?php esc_html_e( 'Try Constant Contact Today', 'optin-monster-api' ); ?></strong>
|
530 |
-
</a>
|
531 |
-
</p>
|
532 |
-
</div>
|
533 |
-
<?php
|
534 |
}
|
535 |
|
536 |
}
|
98 |
* @since 1.6.0
|
99 |
*/
|
100 |
public function register_cc_page() {
|
101 |
+
$slug = 'optin-monster-constant-contact';
|
102 |
+
$is_current = isset( $_GET['page'] ) && $slug === $_GET['page'];
|
103 |
+
$parent_slug = $this->base->menu->parent_slug();
|
104 |
+
if ( ! $is_current ) {
|
105 |
+
$parent_slug .= '-no-menu';
|
106 |
+
}
|
107 |
|
108 |
$this->hook = add_submenu_page(
|
109 |
+
$parent_slug, // parent slug
|
110 |
esc_html__( 'OptinMonster with Constant Contact', 'optin-monster-api' ), // page title,
|
111 |
esc_html__( 'OptinMonster + Constant Contact', 'optin-monster-api' ),
|
112 |
apply_filters( 'optin_monster_api_menu_cap', 'manage_options', $slug ), // cap
|
148 |
|
149 |
// Only show on the main dashboard page (wp-admin/index.php)
|
150 |
// or any OptinMonster plugin-specific screen.
|
151 |
+
$can_show = $is_om_page = $this->base->menu->is_om_page();
|
152 |
if ( ! $can_show ) {
|
153 |
$can_show = function_exists( 'get_current_screen' ) && 'dashboard' === get_current_screen()->id;
|
154 |
}
|
157 |
return;
|
158 |
}
|
159 |
|
160 |
+
$connect = $this->base->menu->get_settings_link();
|
161 |
+
$learn_more = $this->base->menu->admin_page_url( array( 'page' => 'optin-monster-constant-contact' ) );
|
162 |
|
163 |
// Output the notice message.
|
164 |
?>
|
197 |
);
|
198 |
?>
|
199 |
</p>
|
200 |
+
<style type="text/css">
|
201 |
+
.om-constant-contact-notice p:first-of-type {
|
202 |
+
margin: 16px 0 8px;
|
203 |
+
}
|
204 |
+
|
205 |
+
.om-constant-contact-notice p:last-of-type {
|
206 |
+
margin: 8px 0 16px;
|
207 |
+
}
|
208 |
+
|
209 |
+
.om-constant-contact-notice .button-primary,
|
210 |
+
.om-constant-contact-notice .button-secondary {
|
211 |
+
display: inline-block;
|
212 |
+
margin: 0 10px 0 0;
|
213 |
+
}
|
214 |
+
</style>
|
215 |
+
<script type="text/javascript">
|
216 |
+
jQuery( function ( $ ) {
|
217 |
+
$( document ).on( 'click', '.om-constant-contact-notice button', function ( event ) {
|
218 |
+
event.preventDefault();
|
219 |
+
$.post( ajaxurl, { action: 'om_constant_contact_dismiss' } );
|
220 |
+
$( '.om-constant-contact-notice' ).remove();
|
221 |
+
} );
|
|
|
|
|
|
|
|
|
222 |
} );
|
223 |
+
</script>
|
224 |
+
</div>
|
225 |
<?php
|
226 |
}
|
227 |
|
242 |
* @since 1.6.0
|
243 |
*/
|
244 |
public function assets() {
|
245 |
+
add_action( 'admin_enqueue_scripts', array( $this->base->menu, 'styles' ) );
|
246 |
add_filter( 'admin_footer_text', array( $this, 'footer' ) );
|
247 |
add_action( 'in_admin_header', array( $this->base->menu, 'output_plugin_screen_banner' ) );
|
248 |
}
|
249 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
250 |
/**
|
251 |
* Customizes the footer text on the OptinMonster settings page.
|
252 |
*
|
271 |
* @since 1.6.0
|
272 |
*/
|
273 |
public function display_page() {
|
274 |
+
$this->base->output_view(
|
275 |
+
'constantcontact.php',
|
276 |
+
array(
|
277 |
+
'images_url' => esc_url( $this->base->url . 'assets/css/images/' ),
|
278 |
+
'signup_url' => esc_url( $this->sign_up ),
|
279 |
+
)
|
280 |
+
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
281 |
}
|
282 |
|
283 |
}
|
OMAPI/Content.php
CHANGED
@@ -56,6 +56,24 @@ class OMAPI_Content {
|
|
56 |
*/
|
57 |
protected $view;
|
58 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
59 |
/**
|
60 |
* Primary class constructor.
|
61 |
*
|
@@ -67,14 +85,15 @@ class OMAPI_Content {
|
|
67 |
$this->set();
|
68 |
|
69 |
// Load actions and filters.
|
70 |
-
|
71 |
-
add_action( '
|
72 |
-
add_action( '
|
73 |
-
add_action( '
|
74 |
-
add_action( '
|
75 |
-
add_action( '
|
76 |
-
add_action( '
|
77 |
-
add_action( '
|
|
|
78 |
|
79 |
}
|
80 |
|
@@ -88,110 +107,177 @@ class OMAPI_Content {
|
|
88 |
self::$instance = $this;
|
89 |
$this->base = OMAPI::get_instance();
|
90 |
$this->view = isset( $_GET['optin_monster_api_view'] ) ? stripslashes( $_GET['optin_monster_api_view'] ) : $this->base->get_view();
|
|
|
91 |
$this->optin = isset( $_GET['optin_monster_api_id'] ) ? $this->base->get_optin( absint( $_GET['optin_monster_api_id'] ) ) : false;
|
92 |
|
93 |
}
|
94 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
95 |
/**
|
96 |
* Loads the starting form HTML for the panel content.
|
97 |
*
|
98 |
* @since 1.0.0
|
99 |
*
|
100 |
-
* @param string $id
|
101 |
-
* @param string $panel
|
|
|
|
|
102 |
*/
|
103 |
-
public function form_start( $id, $panel ) {
|
|
|
|
|
|
|
104 |
|
105 |
-
|
106 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
107 |
<h3><?php echo esc_html( $panel ); ?></h3>
|
108 |
-
|
109 |
-
else:
|
110 |
-
|
111 |
-
<form id="omapi-form-<?php echo sanitize_html_class( $id ); ?>" class="omapi-form" method="post" action="<?php echo
|
112 |
<?php wp_nonce_field( 'omapi_nonce_' . $id, 'omapi_nonce_' . $id ); ?>
|
113 |
<input type="hidden" name="omapi_panel" value="<?php echo $id; ?>" />
|
114 |
<input type="hidden" name="omapi_save" value="true" />
|
115 |
-
<?php if ( 'settings'
|
116 |
<input type="hidden" name="omapi[<?php echo esc_attr( $this->view ); ?>][wpform]" value="true" />
|
117 |
<?php endif; ?>
|
118 |
<h3>
|
119 |
-
<?php if (
|
120 |
-
|
121 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
122 |
<?php else : ?>
|
123 |
-
|
124 |
<?php endif; ?>
|
125 |
</h3>
|
126 |
-
|
127 |
endif;
|
128 |
|
129 |
// Action to load success/reset messages.
|
|
|
130 |
do_action( 'optin_monster_api_messages_' . $id );
|
131 |
-
|
132 |
}
|
133 |
|
134 |
/**
|
135 |
* Loads the ending form HTML for the panel content.
|
136 |
*
|
137 |
* @since 1.0.0
|
|
|
|
|
|
|
|
|
|
|
138 |
*/
|
139 |
-
public function form_end() {
|
|
|
|
|
|
|
|
|
140 |
$hide_submit_button_class = apply_filters( 'omapi_hide_submit_buttom', false ) ? 'omapi-hidden' : '';
|
|
|
141 |
// Load different form buttons based on if credentials have been supplied or not.
|
142 |
if ( ! $this->base->get_api_credentials() && 'support' !== $this->view ) :
|
143 |
-
|
144 |
<p class="submit <?php echo $hide_submit_button_class; ?>">
|
145 |
-
<input class="button button-primary" type="submit" name="omapi_submit" value="<?php esc_attr_e( 'Connect to OptinMonster', 'optin-monster-api' ); ?>"
|
146 |
</p>
|
147 |
</form>
|
148 |
-
|
149 |
-
elseif ( 'optins'
|
150 |
-
if (
|
151 |
-
|
152 |
<p class="submit">
|
153 |
-
<input class="button button-primary" type="submit" name="submit" value="<?php esc_attr_e( 'Save Settings', 'optin-monster-api' ); ?>"
|
154 |
</p>
|
155 |
</form>
|
156 |
-
|
157 |
else :
|
158 |
-
|
159 |
<p class="submit">
|
160 |
-
<input class="button button-primary" type="submit" name="omapi_refresh" value="<?php esc_attr_e( 'Refresh Campaigns', 'optin-monster-api' ); ?>"
|
161 |
-
<a class="button button-secondary" href="<?php echo wp_nonce_url( esc_url_raw(
|
162 |
</p>
|
163 |
</form>
|
164 |
-
|
165 |
endif;
|
166 |
-
elseif ( 'migrate'
|
167 |
?>
|
168 |
</form>
|
169 |
-
|
170 |
-
elseif ( 'support'
|
171 |
|
172 |
// You get nothing.
|
173 |
|
174 |
elseif ( 'woocommerce' === $this->view ) :
|
175 |
-
|
176 |
<p class="submit">
|
177 |
<?php if ( OMAPI_WooCommerce::is_minimum_version() ) : ?>
|
178 |
<?php if ( OMAPI_WooCommerce::is_connected() ) : ?>
|
179 |
-
<input class="button button-
|
180 |
<?php else : ?>
|
181 |
-
<input class="button button-primary" type="submit" name="
|
182 |
-
<
|
|
|
|
|
183 |
<?php endif; ?>
|
184 |
<?php endif; ?>
|
185 |
</p>
|
186 |
</form>
|
187 |
-
|
188 |
else :
|
189 |
-
|
190 |
<p class="submit <?php echo $hide_submit_button_class; ?>">
|
191 |
-
<input class="button button-primary" type="submit" name="submit" value="<?php esc_attr_e( 'Save Settings', 'optin-monster-api' ); ?>"
|
192 |
</p>
|
193 |
</form>
|
194 |
-
|
195 |
endif;
|
196 |
}
|
197 |
|
@@ -201,9 +287,13 @@ class OMAPI_Content {
|
|
201 |
* @since 1.0.0
|
202 |
*
|
203 |
* @param string $panel The panel name we are targeting.
|
204 |
-
* @param object $object The menu object
|
|
|
205 |
*/
|
206 |
-
public function api( $panel, $object ) {
|
|
|
|
|
|
|
207 |
|
208 |
$link = $this->base->menu->get_action_link();
|
209 |
$text = $this->base->menu->has_trial_link()
|
@@ -212,9 +302,12 @@ class OMAPI_Content {
|
|
212 |
|
213 |
$credentials = $this->base->get_api_credentials();
|
214 |
|
215 |
-
if ( ! $credentials ) :
|
216 |
-
|
217 |
-
|
|
|
|
|
|
|
218 |
<?php endif; ?>
|
219 |
|
220 |
<?php echo $object->get_setting_ui( 'api', 'apikey' ); ?>
|
@@ -242,53 +335,58 @@ class OMAPI_Content {
|
|
242 |
* @since 1.0.0
|
243 |
*
|
244 |
* @param string $panel The panel name we are targeting.
|
245 |
-
* @param object $object The menu object
|
|
|
246 |
*/
|
247 |
-
public function optins( $panel, $object ) {
|
|
|
|
|
|
|
248 |
|
249 |
-
|
250 |
-
|
251 |
-
$this->optin_edit( $object );
|
252 |
-
} else {
|
253 |
-
$this->optin_overview( $object );
|
254 |
}
|
255 |
|
|
|
256 |
}
|
257 |
|
258 |
/**
|
259 |
* Shows the optins loaded on the site.
|
260 |
*
|
261 |
* @since 1.0.0
|
262 |
-
*
|
263 |
-
* @param object $object The menu object (useful for settings helpers).
|
264 |
*/
|
265 |
-
public function optin_overview(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
266 |
|
267 |
-
|
268 |
-
|
269 |
-
|
270 |
-
|
271 |
-
|
272 |
-
|
273 |
-
|
274 |
-
|
275 |
-
|
276 |
-
|
277 |
-
|
278 |
-
|
279 |
-
|
280 |
-
|
281 |
-
|
282 |
-
<span class="omapi-status omapi-has-tooltip" data-toggle="tooltip" data-placement="bottom" title="<?php echo $status_tooltip; ?>"><?php echo $status; ?></span><br>
|
283 |
-
<span class="omapi-slug omapi-has-tooltip" data-toggle="tooltip" data-placement="bottom" title="<?php esc_html_e( 'The unique slug of this campaign. Used for shortcodes and embed scripts.', 'optin-monster-api' ); ?>"><?php echo $optin->post_name; ?></span>
|
284 |
-
<span class="omapi-links"><?php echo $this->get_optin_links( $optin->ID ); ?></span>
|
285 |
-
</p>
|
286 |
-
<?php $i++; endforeach; ?>
|
287 |
<?php else : ?>
|
288 |
-
|
289 |
-
|
290 |
endif;
|
291 |
-
|
292 |
}
|
293 |
|
294 |
/**
|
@@ -297,12 +395,15 @@ class OMAPI_Content {
|
|
297 |
* @since 1.0.0
|
298 |
*
|
299 |
* @param string $panel The panel name we are targeting.
|
300 |
-
* @param object $object The menu object
|
|
|
301 |
*/
|
302 |
-
public function settings( $panel, $object ) {
|
|
|
|
|
|
|
303 |
|
304 |
echo $object->get_setting_ui( 'settings', 'cookies' );
|
305 |
-
|
306 |
}
|
307 |
|
308 |
/**
|
@@ -311,13 +412,23 @@ class OMAPI_Content {
|
|
311 |
* @since 1.7.0
|
312 |
*
|
313 |
* @param string $panel The panel name we are targeting.
|
314 |
-
* @param object $object The menu object
|
|
|
315 |
*/
|
316 |
-
public function woocommerce( $panel, $object ) {
|
317 |
echo $object->get_setting_ui( 'woocommerce', 'settings' ); // WPCS: XSS ok.
|
318 |
}
|
319 |
|
320 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
321 |
|
322 |
echo $object->get_setting_ui( 'support', 'video' );
|
323 |
echo $object->get_setting_ui( 'support', 'links' );
|
@@ -330,11 +441,12 @@ class OMAPI_Content {
|
|
330 |
*
|
331 |
* @since 1.0.0
|
332 |
*
|
333 |
-
* @param object $object The menu object
|
|
|
334 |
*/
|
335 |
public function optin_edit( $object ) {
|
336 |
|
337 |
-
//Check for existing optins
|
338 |
if ( $this->optin ) {
|
339 |
$type = get_post_meta( $this->optin->ID, '_omapi_type', true );
|
340 |
echo $object->get_setting_ui( 'optins', 'enabled' );
|
@@ -343,9 +455,8 @@ class OMAPI_Content {
|
|
343 |
if ( OMAPI_Utils::is_inline_type( $type ) ) {
|
344 |
echo $object->get_setting_ui( 'optins', 'automatic' );
|
345 |
echo $object->get_setting_ui( 'optins', 'automatic_shortcode' );
|
346 |
-
} else {
|
347 |
-
echo $object->get_setting_ui( 'optins', 'global' );
|
348 |
}
|
|
|
349 |
echo $object->get_setting_ui( 'optins', 'users' );
|
350 |
}
|
351 |
|
@@ -395,10 +506,9 @@ class OMAPI_Content {
|
|
395 |
echo $object->get_setting_ui( 'toggle', 'advanced-end' );
|
396 |
}
|
397 |
|
398 |
-
if ( 'sidebar'
|
399 |
echo $object->get_setting_ui( 'note', 'sidebar_widget_notice' );
|
400 |
}
|
401 |
-
|
402 |
} else {
|
403 |
?>
|
404 |
<p><strong><?php esc_html_e( 'No campaign could be retrieved for the ID specified.', 'optin-monster-api' ); ?></strong></p>
|
@@ -422,14 +532,31 @@ class OMAPI_Content {
|
|
422 |
$status = (bool) get_post_meta( $optin_id, '_omapi_enabled', true );
|
423 |
$status_link = $status ? esc_html__( 'Disable', 'optin-monster-api' ) : esc_html__( 'Go Live', 'optin-monster-api' );
|
424 |
$status_desc = $status ? esc_attr__( 'Disable this campaign', 'optin-monster-api' ) : esc_attr__( 'Go live with this campaign', 'optin-monster-api' );
|
425 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
426 |
$links['editd'] = '<a href="' . esc_url_raw( OPTINMONSTER_APP_URL . '/campaigns/' . $slug . '/edit/' ) . '" title="' . esc_attr__( 'Edit this campaign on the OptinMonster App', 'optin-monster-api' ) . '" target="_blank">' . esc_html__( 'Edit Design', 'optin-monster-api' ) . '</a>';
|
427 |
-
$links['edito'] = '<a href="' . esc_url_raw(
|
428 |
-
$links['status'] = '<a href="' .
|
429 |
|
430 |
$links = apply_filters( 'optin_monster_api_action_links', $links, $optin_id );
|
431 |
-
return implode( ' | ', (array) $links );
|
432 |
|
|
|
433 |
}
|
434 |
|
435 |
public function migrate() {
|
56 |
*/
|
57 |
protected $view;
|
58 |
|
59 |
+
/**
|
60 |
+
* The current action slug
|
61 |
+
*
|
62 |
+
* @since 1.9.10
|
63 |
+
*
|
64 |
+
* @var string
|
65 |
+
*/
|
66 |
+
protected $action;
|
67 |
+
|
68 |
+
/**
|
69 |
+
* The list of campaigns for the campaign overview.
|
70 |
+
*
|
71 |
+
* @since 1.9.10
|
72 |
+
*
|
73 |
+
* @var array
|
74 |
+
*/
|
75 |
+
protected $campaigns = array();
|
76 |
+
|
77 |
/**
|
78 |
* Primary class constructor.
|
79 |
*
|
85 |
$this->set();
|
86 |
|
87 |
// Load actions and filters.
|
88 |
+
add_filter( 'admin_body_class', array( $this, 'admin_body_classes' ) );
|
89 |
+
add_action( 'optin_monster_api_content_before', array( $this, 'form_start' ), 0, 4 );
|
90 |
+
add_action( 'optin_monster_api_content_after', array( $this, 'form_end' ), 9999, 4 );
|
91 |
+
add_action( 'optin_monster_api_content_api', array( $this, 'api' ), 10, 3 );
|
92 |
+
add_action( 'optin_monster_api_content_optins', array( $this, 'optins' ), 10, 3 );
|
93 |
+
add_action( 'optin_monster_api_content_settings', array( $this, 'settings' ), 10, 3 );
|
94 |
+
add_action( 'optin_monster_api_content_support', array( $this, 'support' ), 10, 3 );
|
95 |
+
add_action( 'optin_monster_api_content_migrate', array( $this, 'migrate' ), 10, 3 );
|
96 |
+
add_action( 'optin_monster_api_content_woocommerce', array( $this, 'woocommerce' ), 10, 3 );
|
97 |
|
98 |
}
|
99 |
|
107 |
self::$instance = $this;
|
108 |
$this->base = OMAPI::get_instance();
|
109 |
$this->view = isset( $_GET['optin_monster_api_view'] ) ? stripslashes( $_GET['optin_monster_api_view'] ) : $this->base->get_view();
|
110 |
+
$this->action = isset( $_GET['optin_monster_api_action'] ) ? stripslashes( $_GET['optin_monster_api_action'] ) : '';
|
111 |
$this->optin = isset( $_GET['optin_monster_api_id'] ) ? $this->base->get_optin( absint( $_GET['optin_monster_api_id'] ) ) : false;
|
112 |
|
113 |
}
|
114 |
|
115 |
+
/**
|
116 |
+
* Adds om admin body classes
|
117 |
+
*
|
118 |
+
* @since 1.9.10
|
119 |
+
*
|
120 |
+
* @param array $classes
|
121 |
+
*
|
122 |
+
* @return array
|
123 |
+
*/
|
124 |
+
public function admin_body_classes( $classes ) {
|
125 |
+
if ( $this->view ) {
|
126 |
+
$classes .= ' omapi-view-'. $this->view .' ';
|
127 |
+
}
|
128 |
+
|
129 |
+
if ( $this->action ) {
|
130 |
+
$classes .= ' omapi-action-'. $this->action .' ';
|
131 |
+
}
|
132 |
+
|
133 |
+
return $classes;
|
134 |
+
}
|
135 |
+
|
136 |
/**
|
137 |
* Loads the starting form HTML for the panel content.
|
138 |
*
|
139 |
* @since 1.0.0
|
140 |
*
|
141 |
+
* @param string $id The panel ID we are targeting.
|
142 |
+
* @param string $panel The panel name we are targeting.
|
143 |
+
* @param object $object The menu object.
|
144 |
+
* @param bool $active Whether current panel is active.
|
145 |
*/
|
146 |
+
public function form_start( $id, $panel, $object, $active ) {
|
147 |
+
if ( empty( $active ) ) {
|
148 |
+
return;
|
149 |
+
}
|
150 |
|
151 |
+
$url = stripslashes( $_SERVER['REQUEST_URI'] );
|
152 |
+
$url = add_query_arg( 'optin_monster_api_view', $id, $url );
|
153 |
+
|
154 |
+
if ( 'optins' === $this->view && 'edit' !== $this->action ) {
|
155 |
+
|
156 |
+
$args = array(
|
157 |
+
// Allow seeing the hidden drafts via query arg (for debugging purposes)
|
158 |
+
'post_status' => ! empty( $_GET['post_status'] )
|
159 |
+
? explode( ',', sanitize_text_field( $_GET['post_status'] ) )
|
160 |
+
: 'publish',
|
161 |
+
);
|
162 |
+
|
163 |
+
$this->campaigns = $this->base->get_optins( $args );
|
164 |
+
if ( ! empty( $this->campaigns ) ) {
|
165 |
+
$panel .= ' (' . count( $this->campaigns ) . ')';
|
166 |
+
}
|
167 |
+
}
|
168 |
+
|
169 |
+
if ( 'support' === $this->view ) :
|
170 |
+
?>
|
171 |
<h3><?php echo esc_html( $panel ); ?></h3>
|
172 |
+
<?php
|
173 |
+
else :
|
174 |
+
?>
|
175 |
+
<form id="omapi-form-<?php echo sanitize_html_class( $id ); ?>" class="omapi-form" method="post" action="<?php echo esc_url( $url ); ?>">
|
176 |
<?php wp_nonce_field( 'omapi_nonce_' . $id, 'omapi_nonce_' . $id ); ?>
|
177 |
<input type="hidden" name="omapi_panel" value="<?php echo $id; ?>" />
|
178 |
<input type="hidden" name="omapi_save" value="true" />
|
179 |
+
<?php if ( 'settings' === $this->view ) : ?>
|
180 |
<input type="hidden" name="omapi[<?php echo esc_attr( $this->view ); ?>][wpform]" value="true" />
|
181 |
<?php endif; ?>
|
182 |
<h3>
|
183 |
+
<?php if ( 'edit' === $this->action ) : ?>
|
184 |
+
<?php if ( ! empty( $this->optin->ID ) ) : ?>
|
185 |
+
<?php printf( esc_html__( 'Output Settings for %s', 'optin-monster-api' ), esc_html( $this->optin->post_title ) ); ?>
|
186 |
+
<?php if ( ! empty( $this->optin->post_status ) && 'publish' !== $this->optin->post_status ) : ?>
|
187 |
+
<?php esc_html_e( ' (Paused)', 'optin-monster-api' ); ?>
|
188 |
+
<?php endif; ?>
|
189 |
+
<?php else : ?>
|
190 |
+
<?php esc_html_e( 'Missing Campaign!', 'optin-monster-api' ); ?>
|
191 |
+
<?php endif; ?>
|
192 |
+
<span class="omapi-back"><a class="button button-secondary button-small" href="<?php echo esc_url_raw( $this->base->menu->get_settings_link( 'optins' ) ); ?>" title="<?php esc_attr_e( 'Back to campaign overview', 'optin-monster-api' ); ?>"><?php esc_html_e( 'Back to Overview', 'optin-monster-api' ); ?></a></span>
|
193 |
+
<?php if ( ! empty( $this->optin->post_name ) ) : ?>
|
194 |
+
<span class="omapi-slug omapi-has-tooltip" data-toggle="tooltip" data-placement="bottom" title="<?php esc_html_e( 'The unique slug of this campaign. Used for shortcodes and embed scripts.', 'optin-monster-api' ); ?>"><?php echo $this->optin->post_name; ?></span>
|
195 |
+
<?php endif; ?>
|
196 |
<?php else : ?>
|
197 |
+
<?php echo esc_html( $panel ); ?>
|
198 |
<?php endif; ?>
|
199 |
</h3>
|
200 |
+
<?php
|
201 |
endif;
|
202 |
|
203 |
// Action to load success/reset messages.
|
204 |
+
// Deprecated. We now use the WP hook (all_admin_notices).
|
205 |
do_action( 'optin_monster_api_messages_' . $id );
|
|
|
206 |
}
|
207 |
|
208 |
/**
|
209 |
* Loads the ending form HTML for the panel content.
|
210 |
*
|
211 |
* @since 1.0.0
|
212 |
+
*
|
213 |
+
* @param string $id The panel ID we are targeting.
|
214 |
+
* @param string $panel The panel name we are targeting.
|
215 |
+
* @param object $object The menu object.
|
216 |
+
* @param bool $active Whether current panel is active.
|
217 |
*/
|
218 |
+
public function form_end( $id, $panel, $object, $active ) {
|
219 |
+
if ( empty( $active ) ) {
|
220 |
+
return;
|
221 |
+
}
|
222 |
+
|
223 |
$hide_submit_button_class = apply_filters( 'omapi_hide_submit_buttom', false ) ? 'omapi-hidden' : '';
|
224 |
+
|
225 |
// Load different form buttons based on if credentials have been supplied or not.
|
226 |
if ( ! $this->base->get_api_credentials() && 'support' !== $this->view ) :
|
227 |
+
?>
|
228 |
<p class="submit <?php echo $hide_submit_button_class; ?>">
|
229 |
+
<input class="button button-primary" type="submit" name="omapi_submit" value="<?php esc_attr_e( 'Connect to OptinMonster', 'optin-monster-api' ); ?>" />
|
230 |
</p>
|
231 |
</form>
|
232 |
+
<?php
|
233 |
+
elseif ( 'optins' === $this->view ) :
|
234 |
+
if ( 'edit' === $this->action ) :
|
235 |
+
?>
|
236 |
<p class="submit">
|
237 |
+
<input class="button button-primary" type="submit" name="submit" value="<?php esc_attr_e( 'Save Settings', 'optin-monster-api' ); ?>" />
|
238 |
</p>
|
239 |
</form>
|
240 |
+
<?php
|
241 |
else :
|
242 |
+
?>
|
243 |
<p class="submit">
|
244 |
+
<input class="button button-primary" type="submit" name="omapi_refresh" value="<?php esc_attr_e( 'Refresh Campaigns', 'optin-monster-api' ); ?>" />
|
245 |
+
<a class="button button-secondary" href="<?php echo wp_nonce_url( esc_url_raw( $this->base->menu->get_settings_link( $this->view, array( 'optin_monster_api_action' => 'cookies' ) ) ), 'omapi-action' ); ?>" title="<?php esc_attr_e( 'Clear Local Cookies', 'optin-monster-api' ); ?>"><?php esc_html_e( 'Clear Local Cookies', 'optin-monster-api' ); ?></a>
|
246 |
</p>
|
247 |
</form>
|
248 |
+
<?php
|
249 |
endif;
|
250 |
+
elseif ( 'migrate' === $this->view ) :
|
251 |
?>
|
252 |
</form>
|
253 |
+
<?php
|
254 |
+
elseif ( 'support' === $this->view ) :
|
255 |
|
256 |
// You get nothing.
|
257 |
|
258 |
elseif ( 'woocommerce' === $this->view ) :
|
259 |
+
?>
|
260 |
<p class="submit">
|
261 |
<?php if ( OMAPI_WooCommerce::is_minimum_version() ) : ?>
|
262 |
<?php if ( OMAPI_WooCommerce::is_connected() ) : ?>
|
263 |
+
<input class="button button-secondary" type="submit" name="omapi_woocommerce_disconnect" value="<?php esc_attr_e( 'Disconnect WooCommerce', 'optin-monster-api' ); ?>" />
|
264 |
<?php else : ?>
|
265 |
+
<input class="button button-primary" type="submit" name="omapi[woocommerce][autogenerate]" value="<?php esc_attr_e( 'Auto-Generate Keys + Connect WooCommerce', 'optin-monster-api' ); ?>" />
|
266 |
+
<span class="manually-connect-wc">
|
267 |
+
<?php printf( esc_html__( 'or %1$sclick here%2$s to enter the the consumer key/secret pair manually.', 'optin-monster-api' ), '<a href="#" id="omapiShowApiKeys">', '</a>' ); ?>
|
268 |
+
</span>
|
269 |
<?php endif; ?>
|
270 |
<?php endif; ?>
|
271 |
</p>
|
272 |
</form>
|
273 |
+
<?php
|
274 |
else :
|
275 |
+
?>
|
276 |
<p class="submit <?php echo $hide_submit_button_class; ?>">
|
277 |
+
<input class="button button-primary" type="submit" name="submit" value="<?php esc_attr_e( 'Save Settings', 'optin-monster-api' ); ?>" />
|
278 |
</p>
|
279 |
</form>
|
280 |
+
<?php
|
281 |
endif;
|
282 |
}
|
283 |
|
287 |
* @since 1.0.0
|
288 |
*
|
289 |
* @param string $panel The panel name we are targeting.
|
290 |
+
* @param object $object The menu object.
|
291 |
+
* @param bool $active Whether current panel is active.
|
292 |
*/
|
293 |
+
public function api( $panel, $object, $active ) {
|
294 |
+
if ( empty( $active ) ) {
|
295 |
+
return;
|
296 |
+
}
|
297 |
|
298 |
$link = $this->base->menu->get_action_link();
|
299 |
$text = $this->base->menu->has_trial_link()
|
302 |
|
303 |
$credentials = $this->base->get_api_credentials();
|
304 |
|
305 |
+
if ( ! $credentials ) :
|
306 |
+
?>
|
307 |
+
<?php if ( ! $credentials && ! isset( $_GET['om-bypass-api-check'] ) ) : ?>
|
308 |
+
<p class="omapi-red"><strong><?php esc_html_e( 'You must authenticate your OptinMonster account before you can use OptinMonster on this site.', 'optin-monster-api' ); ?></strong></p>
|
309 |
+
<?php endif; ?>
|
310 |
+
<p><em><?php printf( __( 'Need an OptinMonster account? <a href="%1$s" title="Click here to learn more about OptinMonster" target="_blank">%2$s</a>', 'optin-monster-api' ), $link, $text ); ?></em></p>
|
311 |
<?php endif; ?>
|
312 |
|
313 |
<?php echo $object->get_setting_ui( 'api', 'apikey' ); ?>
|
335 |
* @since 1.0.0
|
336 |
*
|
337 |
* @param string $panel The panel name we are targeting.
|
338 |
+
* @param object $object The menu object.
|
339 |
+
* @param bool $active Whether current panel is active.
|
340 |
*/
|
341 |
+
public function optins( $panel, $object, $active ) {
|
342 |
+
if ( empty( $active ) ) {
|
343 |
+
return;
|
344 |
+
}
|
345 |
|
346 |
+
if ( 'edit' === $this->action ) {
|
347 |
+
return $this->optin_edit( $object );
|
|
|
|
|
|
|
348 |
}
|
349 |
|
350 |
+
$this->optin_overview();
|
351 |
}
|
352 |
|
353 |
/**
|
354 |
* Shows the optins loaded on the site.
|
355 |
*
|
356 |
* @since 1.0.0
|
|
|
|
|
357 |
*/
|
358 |
+
public function optin_overview() {
|
359 |
+
$first = true;
|
360 |
+
if ( ! empty( $this->campaigns ) ) : ?>
|
361 |
+
<?php foreach ( $this->campaigns as $optin ) :
|
362 |
+
$class = $first ? ' omapi-optin-first' : '';
|
363 |
+
if ( (bool) get_post_meta( $optin->ID, '_omapi_enabled', true ) ) {
|
364 |
+
$status = '<span>' . esc_html__( 'Enabled', 'optin-monster-api' ) . '</span>';
|
365 |
+
$status_tooltip = esc_html__( 'This campaign is enabled on this site.', 'optin-monster-api' );
|
366 |
+
} else {
|
367 |
+
$status = '<span style="opacity: .65;">' . esc_html__( 'Disabled', 'optin-monster-api' ) . '</span>';
|
368 |
+
$status_tooltip = esc_html__( 'This campaign is not embedded by the plugin anywhere on this site.', 'optin-monster-api' );
|
369 |
+
}
|
370 |
|
371 |
+
$url = $this->base->menu->get_settings_link(
|
372 |
+
$this->view,
|
373 |
+
array(
|
374 |
+
'optin_monster_api_action' => 'edit',
|
375 |
+
'optin_monster_api_id' => $optin->ID,
|
376 |
+
)
|
377 |
+
);
|
378 |
+
?>
|
379 |
+
<div class="omapi-optin<?php echo $class; ?>">
|
380 |
+
<a href="<?php echo esc_url_raw( $url ); ?>" title="<?php printf( esc_attr__( 'Manage output settings for %s', 'optin-monster-api' ), $optin->post_title ); ?>"><?php echo $optin->post_title; ?></a>
|
381 |
+
<span tabindex="0" class="omapi-status omapi-has-tooltip" data-toggle="tooltip" data-placement="bottom" title="<?php echo $status_tooltip; ?>"><?php echo $status; ?></span><br>
|
382 |
+
<span tabindex="0" class="omapi-slug omapi-has-tooltip" data-toggle="tooltip" data-placement="bottom" title="<?php esc_html_e( 'The unique slug of this campaign. Used for shortcodes and embed scripts.', 'optin-monster-api' ); ?>"><?php echo $optin->post_name; ?></span>
|
383 |
+
<span class="omapi-links"><?php echo $this->get_optin_links( $optin->ID ); ?></span>
|
384 |
+
</div>
|
385 |
+
<?php $first = false; endforeach; ?>
|
|
|
|
|
|
|
|
|
|
|
386 |
<?php else : ?>
|
387 |
+
<p><strong><?php esc_html_e( 'No campaigns could be retrieved for this site.', 'optin-monster-api' ); ?></strong></p>
|
388 |
+
<?php
|
389 |
endif;
|
|
|
390 |
}
|
391 |
|
392 |
/**
|
395 |
* @since 1.0.0
|
396 |
*
|
397 |
* @param string $panel The panel name we are targeting.
|
398 |
+
* @param object $object The menu object.
|
399 |
+
* @param bool $active Whether current panel is active.
|
400 |
*/
|
401 |
+
public function settings( $panel, $object, $active ) {
|
402 |
+
if ( empty( $active ) ) {
|
403 |
+
return;
|
404 |
+
}
|
405 |
|
406 |
echo $object->get_setting_ui( 'settings', 'cookies' );
|
|
|
407 |
}
|
408 |
|
409 |
/**
|
412 |
* @since 1.7.0
|
413 |
*
|
414 |
* @param string $panel The panel name we are targeting.
|
415 |
+
* @param object $object The menu object.
|
416 |
+
* @param bool $active Whether current panel is active.
|
417 |
*/
|
418 |
+
public function woocommerce( $panel, $object, $active ) {
|
419 |
echo $object->get_setting_ui( 'woocommerce', 'settings' ); // WPCS: XSS ok.
|
420 |
}
|
421 |
|
422 |
+
/**
|
423 |
+
* Loads the content output for the Support panel.
|
424 |
+
*
|
425 |
+
* @since 1.1.5
|
426 |
+
*
|
427 |
+
* @param string $panel The panel name we are targeting.
|
428 |
+
* @param object $object The menu object.
|
429 |
+
* @param bool $active Whether current panel is active.
|
430 |
+
*/
|
431 |
+
public function support( $panel, $object, $active ) {
|
432 |
|
433 |
echo $object->get_setting_ui( 'support', 'video' );
|
434 |
echo $object->get_setting_ui( 'support', 'links' );
|
441 |
*
|
442 |
* @since 1.0.0
|
443 |
*
|
444 |
+
* @param object $object The menu object.
|
445 |
+
* @param bool $active Whether current panel is active.
|
446 |
*/
|
447 |
public function optin_edit( $object ) {
|
448 |
|
449 |
+
// Check for existing optins
|
450 |
if ( $this->optin ) {
|
451 |
$type = get_post_meta( $this->optin->ID, '_omapi_type', true );
|
452 |
echo $object->get_setting_ui( 'optins', 'enabled' );
|
455 |
if ( OMAPI_Utils::is_inline_type( $type ) ) {
|
456 |
echo $object->get_setting_ui( 'optins', 'automatic' );
|
457 |
echo $object->get_setting_ui( 'optins', 'automatic_shortcode' );
|
|
|
|
|
458 |
}
|
459 |
+
|
460 |
echo $object->get_setting_ui( 'optins', 'users' );
|
461 |
}
|
462 |
|
506 |
echo $object->get_setting_ui( 'toggle', 'advanced-end' );
|
507 |
}
|
508 |
|
509 |
+
if ( 'sidebar' === $type || 'inline' === $type ) {
|
510 |
echo $object->get_setting_ui( 'note', 'sidebar_widget_notice' );
|
511 |
}
|
|
|
512 |
} else {
|
513 |
?>
|
514 |
<p><strong><?php esc_html_e( 'No campaign could be retrieved for the ID specified.', 'optin-monster-api' ); ?></strong></p>
|
532 |
$status = (bool) get_post_meta( $optin_id, '_omapi_enabled', true );
|
533 |
$status_link = $status ? esc_html__( 'Disable', 'optin-monster-api' ) : esc_html__( 'Go Live', 'optin-monster-api' );
|
534 |
$status_desc = $status ? esc_attr__( 'Disable this campaign', 'optin-monster-api' ) : esc_attr__( 'Go live with this campaign', 'optin-monster-api' );
|
535 |
+
|
536 |
+
$edit_url = $this->base->menu->get_settings_link(
|
537 |
+
$this->view,
|
538 |
+
array(
|
539 |
+
'optin_monster_api_action' => 'edit',
|
540 |
+
'optin_monster_api_id' => $optin_id,
|
541 |
+
)
|
542 |
+
);
|
543 |
+
$status_url = $this->base->menu->get_settings_link(
|
544 |
+
$this->view,
|
545 |
+
array(
|
546 |
+
'optin_monster_api_action' => 'status',
|
547 |
+
'optin_monster_api_id' => $optin_id,
|
548 |
+
)
|
549 |
+
);
|
550 |
+
$status_url = wp_nonce_url( $status_url, 'omapi-action' );
|
551 |
+
|
552 |
+
$links = array();
|
553 |
$links['editd'] = '<a href="' . esc_url_raw( OPTINMONSTER_APP_URL . '/campaigns/' . $slug . '/edit/' ) . '" title="' . esc_attr__( 'Edit this campaign on the OptinMonster App', 'optin-monster-api' ) . '" target="_blank">' . esc_html__( 'Edit Design', 'optin-monster-api' ) . '</a>';
|
554 |
+
$links['edito'] = '<a href="' . esc_url_raw( $edit_url ) . '" title="' . esc_attr__( 'Edit the output settings for this campaign', 'optin-monster-api' ) . '">' . esc_html__( 'Edit Output Settings', 'optin-monster-api' ) . '</a>';
|
555 |
+
$links['status'] = '<a href="' . esc_url_raw( $status_url ) . '" title="' . $status_desc . '">' . $status_link . '</a>';
|
556 |
|
557 |
$links = apply_filters( 'optin_monster_api_action_links', $links, $optin_id );
|
|
|
558 |
|
559 |
+
return implode( ' | ', (array) $links );
|
560 |
}
|
561 |
|
562 |
public function migrate() {
|
OMAPI/InstallSkin.php
ADDED
@@ -0,0 +1,55 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* WordPress class extended for on-the-fly addon installations.
|
5 |
+
*/
|
6 |
+
class OMAPI_InstallSkin extends WP_Upgrader_Skin {
|
7 |
+
|
8 |
+
/**
|
9 |
+
* Empty out the header of its HTML content and only check to see if it has
|
10 |
+
* been performed or not.
|
11 |
+
*
|
12 |
+
* @since 1.9.10
|
13 |
+
*/
|
14 |
+
public function header() {}
|
15 |
+
|
16 |
+
/**
|
17 |
+
* Empty out the footer of its HTML contents.
|
18 |
+
*
|
19 |
+
* @since 1.9.10
|
20 |
+
*/
|
21 |
+
public function footer() {}
|
22 |
+
|
23 |
+
/**
|
24 |
+
* Instead of outputting HTML for errors, json_encode the errors and send them
|
25 |
+
* back to the Ajax script for processing.
|
26 |
+
*
|
27 |
+
* @since 1.9.10
|
28 |
+
*
|
29 |
+
* @param array $errors Array of errors with the install process.
|
30 |
+
*/
|
31 |
+
public function error( $errors ) {
|
32 |
+
if ( ! empty( $errors ) ) {
|
33 |
+
wp_send_json_error( $errors );
|
34 |
+
}
|
35 |
+
}
|
36 |
+
|
37 |
+
/**
|
38 |
+
* Empty out the feedback method to prevent outputting HTML strings as the install
|
39 |
+
* is progressing.
|
40 |
+
*
|
41 |
+
* @since 1.9.10
|
42 |
+
*
|
43 |
+
* @param string $string The feedback string.
|
44 |
+
*/
|
45 |
+
public function feedback( $string, $args = null ) {}
|
46 |
+
|
47 |
+
/**
|
48 |
+
* Empty out JavaScript output that calls function to decrement the update counts.
|
49 |
+
*
|
50 |
+
* @since 1.9.10
|
51 |
+
*
|
52 |
+
* @param string $type Type of update count to decrement.
|
53 |
+
*/
|
54 |
+
public function decrement_update_count( $type ) {}
|
55 |
+
}
|
OMAPI/MailPoet.php
ADDED
@@ -0,0 +1,212 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Mailpoet integration class.
|
4 |
+
*
|
5 |
+
* @since 1.9.10
|
6 |
+
*
|
7 |
+
* @package OMAPI
|
8 |
+
* @author Justin Sternberg
|
9 |
+
*/
|
10 |
+
|
11 |
+
// Exit if accessed directly.
|
12 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
13 |
+
exit;
|
14 |
+
}
|
15 |
+
|
16 |
+
/**
|
17 |
+
* Mailpoet integration class.
|
18 |
+
*
|
19 |
+
* @since 1.9.10
|
20 |
+
*/
|
21 |
+
class OMAPI_MailPoet {
|
22 |
+
|
23 |
+
/**
|
24 |
+
* Check to see if Mailpoet is active.
|
25 |
+
*
|
26 |
+
* @since 1.2.3
|
27 |
+
*
|
28 |
+
* @return bool
|
29 |
+
*/
|
30 |
+
public static function is_active() {
|
31 |
+
return class_exists( 'WYSIJA_object' ) || class_exists( 'MailPoet\\API\\API' );
|
32 |
+
}
|
33 |
+
|
34 |
+
/**
|
35 |
+
* Returns the available MailPoet lists.
|
36 |
+
*
|
37 |
+
* @since 1.0.0
|
38 |
+
*
|
39 |
+
* @return array An array of MailPoet lists.
|
40 |
+
*/
|
41 |
+
public static function get_lists() {
|
42 |
+
|
43 |
+
// Prepare variables.
|
44 |
+
$mailpoet = null;
|
45 |
+
$lists = array();
|
46 |
+
$ret = array();
|
47 |
+
$listIdKey = 'id';
|
48 |
+
|
49 |
+
// Get lists. Check for MailPoet 3 first. Default to legacy.
|
50 |
+
if ( class_exists( '\\MailPoet\\Config\\Initializer' ) ) {
|
51 |
+
$lists = \MailPoet\API\API::MP( 'v1' )->getLists();
|
52 |
+
} else {
|
53 |
+
$mailpoet = WYSIJA::get( 'list', 'model' );
|
54 |
+
$lists = $mailpoet->get( array( 'name', 'list_id' ), array( 'is_enabled' => 1 ) );
|
55 |
+
$listIdKey = 'list_id';
|
56 |
+
}
|
57 |
+
|
58 |
+
// Add default option.
|
59 |
+
$ret[] = array(
|
60 |
+
'name' => esc_html__( 'Select your MailPoet list...', 'optin-monster-api' ),
|
61 |
+
'value' => 'none',
|
62 |
+
);
|
63 |
+
|
64 |
+
// Loop through the list data and add to array.
|
65 |
+
foreach ( (array) $lists as $list ) {
|
66 |
+
$ret[] = array(
|
67 |
+
'name' => $list['name'],
|
68 |
+
'value' => $list[ $listIdKey ],
|
69 |
+
);
|
70 |
+
}
|
71 |
+
|
72 |
+
/**
|
73 |
+
* Filters the MailPoet lists.
|
74 |
+
*
|
75 |
+
* @param array $ret The MailPoet lists array.
|
76 |
+
* @param array $lists The raw MailPoet lists array. Format differs by plugin verison.
|
77 |
+
* @param WYSIJA|null $mailpoet The MailPoet object if using legacy. Null otherwise.
|
78 |
+
*/
|
79 |
+
return apply_filters( 'optin_monster_api_mailpoet_lists', $ret, $lists, $mailpoet );
|
80 |
+
}
|
81 |
+
|
82 |
+
/**
|
83 |
+
* Returns the available MailPoet custom fields.
|
84 |
+
*
|
85 |
+
* @since 1.9.8
|
86 |
+
*
|
87 |
+
* @return array An array of MailPoet custom fields.
|
88 |
+
*/
|
89 |
+
public static function get_custom_fields() {
|
90 |
+
|
91 |
+
// Prepare variables.
|
92 |
+
$ret = array();
|
93 |
+
$default_fields = array( 'email', 'first_name', 'last_name' );
|
94 |
+
|
95 |
+
// Get lists. Check for MailPoet 3.
|
96 |
+
$custom_fields = class_exists( '\\MailPoet\\Config\\Initializer' )
|
97 |
+
? \MailPoet\API\API::MP( 'v1' )->getSubscriberFields()
|
98 |
+
: array();
|
99 |
+
|
100 |
+
// Add default option.
|
101 |
+
$ret[] = array(
|
102 |
+
'name' => esc_html__( 'Select the phone number field...', 'optin-monster-api' ),
|
103 |
+
'value' => '',
|
104 |
+
);
|
105 |
+
|
106 |
+
// Loop through the list data and add to array.
|
107 |
+
foreach ( (array) $custom_fields as $custom_field ) {
|
108 |
+
if ( in_array( $custom_field['id'], $default_fields ) ) {
|
109 |
+
continue;
|
110 |
+
}
|
111 |
+
|
112 |
+
$ret[] = array(
|
113 |
+
'name' => $custom_field['name'],
|
114 |
+
'value' => $custom_field['id'],
|
115 |
+
);
|
116 |
+
}
|
117 |
+
|
118 |
+
/**
|
119 |
+
* Filters the MailPoet custom fields.
|
120 |
+
*
|
121 |
+
* @param array. $ret The MailPoet custom fields array, except
|
122 |
+
* first name, last name and email
|
123 |
+
* @param array. $custom_fields The raw MailPoet custom fields array.
|
124 |
+
* Format differs by plugin verison.
|
125 |
+
*/
|
126 |
+
return apply_filters( 'optin_monster_api_mailpoet_custom_fields', $ret, $custom_fields );
|
127 |
+
}
|
128 |
+
|
129 |
+
/**
|
130 |
+
* Opts the user into MailPoet.
|
131 |
+
*
|
132 |
+
* @since 1.0.0
|
133 |
+
*/
|
134 |
+
public function handle_ajax_call() {
|
135 |
+
// Run a security check first.
|
136 |
+
check_ajax_referer( 'omapi', 'nonce' );
|
137 |
+
|
138 |
+
// Prepare variables.
|
139 |
+
$data = array_merge( $_REQUEST, $_REQUEST['optinData'] );
|
140 |
+
unset( $data['optinData'] );
|
141 |
+
|
142 |
+
$optin = OMAPI::get_instance()->get_optin_by_slug( stripslashes( $data['optin'] ) );
|
143 |
+
$list = get_post_meta( $optin->ID, '_omapi_mailpoet_list', true );
|
144 |
+
$phone_field = get_post_meta( $optin->ID, '_omapi_mailpoet_phone_field', true );
|
145 |
+
$email = ! empty( $data['email'] ) ? stripslashes( $data['email'] ) : false;
|
146 |
+
$name = ! empty( $data['name'] ) ? stripslashes( $data['name'] ) : false;
|
147 |
+
$user = array();
|
148 |
+
|
149 |
+
// Possibly split name into first and last.
|
150 |
+
if ( $name ) {
|
151 |
+
$names = explode( ' ', $name );
|
152 |
+
if ( isset( $names[0] ) ) {
|
153 |
+
$user['firstname'] = $names[0];
|
154 |
+
}
|
155 |
+
|
156 |
+
if ( isset( $names[1] ) ) {
|
157 |
+
$user['lastname'] = $names[1];
|
158 |
+
}
|
159 |
+
}
|
160 |
+
|
161 |
+
// Save the email address.
|
162 |
+
$user['email'] = $email;
|
163 |
+
|
164 |
+
// Save the phone number
|
165 |
+
if ( ! empty( $phone_field ) && ! empty( $data['phone'] ) ) {
|
166 |
+
$user[ $phone_field ] = stripslashes( $data['phone'] );
|
167 |
+
}
|
168 |
+
|
169 |
+
// Store the data.
|
170 |
+
$data = array(
|
171 |
+
'user' => $user,
|
172 |
+
'user_list' => array( 'list_ids' => array( $list ) ),
|
173 |
+
);
|
174 |
+
$data = apply_filters( 'optin_monster_pre_optin_mailpoet', $data, $_REQUEST, $list, null );
|
175 |
+
|
176 |
+
// Save the subscriber. Check for MailPoet 3 first. Default to legacy.
|
177 |
+
if ( class_exists( 'MailPoet\\API\\API' ) ) {
|
178 |
+
// Customize the lead data for MailPoet 3.
|
179 |
+
if ( isset( $user['firstname'] ) ) {
|
180 |
+
$user['first_name'] = $user['firstname'];
|
181 |
+
unset( $user['firstname'] );
|
182 |
+
}
|
183 |
+
|
184 |
+
if ( isset( $user['lastname'] ) ) {
|
185 |
+
$user['last_name'] = $user['lastname'];
|
186 |
+
unset( $user['lastname'] );
|
187 |
+
}
|
188 |
+
|
189 |
+
try {
|
190 |
+
$subscriber = \MailPoet\API\API::MP( 'v1' )->getSubscriber( $user['email'] );
|
191 |
+
} catch ( Exception $e ) {
|
192 |
+
$subscriber = false;
|
193 |
+
}
|
194 |
+
|
195 |
+
try {
|
196 |
+
if ( $subscriber ) {
|
197 |
+
\MailPoet\API\API::MP( 'v1' )->subscribeToList( $subscriber['email'], array( $list ) );
|
198 |
+
} else {
|
199 |
+
\MailPoet\API\API::MP( 'v1' )->addSubscriber( $user, array( $list ) );
|
200 |
+
}
|
201 |
+
} catch ( Exception $e ) {
|
202 |
+
return wp_send_json_error( $e->getMessage(), 400 );
|
203 |
+
}
|
204 |
+
} else {
|
205 |
+
$userHelper = WYSIJA::get( 'user', 'helper' );
|
206 |
+
$userHelper->addSubscriber( $data );
|
207 |
+
}
|
208 |
+
|
209 |
+
// Send back a response.
|
210 |
+
wp_send_json_success();
|
211 |
+
}
|
212 |
+
}
|
OMAPI/Menu.php
CHANGED
@@ -65,6 +65,15 @@ class OMAPI_Menu {
|
|
65 |
*/
|
66 |
public $tabindex = 429;
|
67 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
68 |
/**
|
69 |
* Panel slugs/names.
|
70 |
*
|
@@ -74,6 +83,15 @@ class OMAPI_Menu {
|
|
74 |
*/
|
75 |
public $panels = array();
|
76 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
77 |
/**
|
78 |
* The OM landing page url.
|
79 |
*
|
@@ -96,11 +114,14 @@ class OMAPI_Menu {
|
|
96 |
|
97 |
// Load actions and filters.
|
98 |
add_action( 'admin_menu', array( $this, 'menu' ) );
|
|
|
99 |
// Load helper body classes
|
100 |
add_filter( 'admin_body_class', array( $this, 'admin_body_classes' ) );
|
101 |
|
102 |
-
add_action( 'admin_notices', array( $this, '
|
103 |
-
add_action( 'all_admin_notices', array( $this, '
|
|
|
|
|
104 |
}
|
105 |
|
106 |
$this->panels = array(
|
@@ -131,38 +152,82 @@ class OMAPI_Menu {
|
|
131 |
* @since 1.0.0
|
132 |
*/
|
133 |
public function menu() {
|
|
|
|
|
|
|
134 |
|
135 |
// Filter to change the menu position if there is any conflict with another menu on the same position.
|
136 |
$menu_position = apply_filters( 'optin_monster_api_menu_position', 26 );
|
137 |
|
138 |
-
$this->hook = add_menu_page(
|
139 |
-
|
140 |
-
|
141 |
-
apply_filters( 'optin_monster_api_menu_cap', 'manage_options',
|
142 |
-
|
143 |
-
array( $this, '
|
144 |
'none',
|
145 |
$menu_position
|
146 |
);
|
147 |
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
157 |
|
158 |
// Load global icon font styles.
|
159 |
-
add_action( 'admin_head', array( $this, '
|
|
|
160 |
|
161 |
-
|
162 |
-
|
163 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
164 |
}
|
165 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
166 |
}
|
167 |
|
168 |
/**
|
@@ -170,63 +235,88 @@ class OMAPI_Menu {
|
|
170 |
*
|
171 |
* @since 1.0.0
|
172 |
*/
|
173 |
-
public function
|
174 |
$this->base->output_min_css( 'archie-css.php' );
|
175 |
|
176 |
-
|
177 |
-
|
|
|
178 |
}
|
179 |
}
|
180 |
|
181 |
/**
|
182 |
-
* Should we show the
|
|
|
|
|
|
|
|
|
183 |
*
|
184 |
* @since 1.9.0
|
185 |
*
|
186 |
* @return bool
|
187 |
*/
|
188 |
-
public function
|
189 |
-
|
190 |
-
$begins = strtotime( '2019-11-25 00:00:00' );
|
191 |
-
// $begins = strtotime( '2019-11-19 00:00:00' );
|
192 |
-
$ends = strtotime( '2019-12-03 11:59:59' );
|
193 |
-
$in_window = $now > $begins && $now < $ends;
|
194 |
-
|
195 |
-
return $in_window && 'off' !== get_user_setting( 'om_cybermonday_notice', 'on' );
|
196 |
}
|
197 |
|
198 |
/**
|
199 |
-
* Outputs
|
|
|
|
|
200 |
*
|
201 |
* @since 1.9.0
|
202 |
*/
|
203 |
-
public function
|
204 |
static $hooked = false;
|
205 |
if (
|
206 |
! $hooked
|
207 |
-
&& $this->
|
208 |
&& $this->is_om_page()
|
209 |
) {
|
210 |
|
211 |
-
$url =
|
212 |
-
|
213 |
-
|
214 |
-
$url .= '/?utm_source=orgplugin&utm_medium=link&utm_campaign=bfcm2019';
|
215 |
-
|
216 |
-
$this->base->output_min_css( 'cybermonday-notification-css.php' );
|
217 |
-
$this->base->output_view( 'cybermonday-notification.php', compact( 'url' ) );
|
218 |
add_action( 'admin_footer', array( $this, 'handle_closing_notice' ) );
|
219 |
}
|
220 |
$hooked = true;
|
221 |
}
|
222 |
|
223 |
/**
|
224 |
-
* Handles the
|
|
|
|
|
225 |
*
|
226 |
* @since 1.9.0
|
227 |
*/
|
228 |
public function handle_closing_notice() {
|
229 |
-
$this->base->output_view( '
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
230 |
}
|
231 |
|
232 |
/**
|
@@ -234,7 +324,7 @@ class OMAPI_Menu {
|
|
234 |
*
|
235 |
* @since 1.3.4
|
236 |
*
|
237 |
-
* @param array
|
238 |
*
|
239 |
* @return array
|
240 |
*/
|
@@ -264,15 +354,14 @@ class OMAPI_Menu {
|
|
264 |
|
265 |
if ( function_exists( 'get_current_screen' ) ) {
|
266 |
$screen = get_current_screen();
|
267 |
-
$page
|
268 |
-
if ( 'toplevel_page_optin-monster-
|
269 |
return true;
|
270 |
}
|
271 |
|
272 |
-
if ( ! empty( $screen->parent_base ) && false !== strpos( $screen->parent_base, 'optin-monster-
|
273 |
return true;
|
274 |
}
|
275 |
-
|
276 |
} else {
|
277 |
$page = isset( $_GET['page'] ) ? $_GET['page'] : '';
|
278 |
}
|
@@ -286,7 +375,6 @@ class OMAPI_Menu {
|
|
286 |
* @since 1.0.0
|
287 |
*/
|
288 |
public function assets() {
|
289 |
-
|
290 |
add_action( 'admin_enqueue_scripts', array( $this, 'styles' ) );
|
291 |
add_action( 'admin_enqueue_scripts', array( $this, 'scripts' ) );
|
292 |
add_filter( 'admin_footer_text', array( $this, 'footer' ) );
|
@@ -301,10 +389,11 @@ class OMAPI_Menu {
|
|
301 |
* @since 1.0.0
|
302 |
*/
|
303 |
public function styles() {
|
|
|
304 |
|
305 |
-
wp_register_style( $this->base->plugin_slug . '-select2',
|
306 |
wp_enqueue_style( $this->base->plugin_slug . '-select2' );
|
307 |
-
wp_register_style( $this->base->plugin_slug . '-settings',
|
308 |
wp_enqueue_style( $this->base->plugin_slug . '-settings' );
|
309 |
|
310 |
// Run a hook to load in custom styles.
|
@@ -320,11 +409,13 @@ class OMAPI_Menu {
|
|
320 |
public function scripts() {
|
321 |
global $wpdb;
|
322 |
|
|
|
|
|
323 |
// Posts query.
|
324 |
$postTypes = array_map( 'esc_sql', get_post_types( array( 'public' => true ) ) );
|
325 |
$postTypes = implode( "','", $postTypes );
|
326 |
|
327 |
-
$sql
|
328 |
SELECT ID AS `id`, post_title AS `text`
|
329 |
FROM $wpdb->posts
|
330 |
WHERE post_type IN ( '{$postTypes}' )
|
@@ -334,7 +425,7 @@ class OMAPI_Menu {
|
|
334 |
$posts = $wpdb->get_results( $sql, ARRAY_A );
|
335 |
|
336 |
// Taxonomies query.
|
337 |
-
$sql
|
338 |
SELECT terms.term_id AS 'id', terms.name AS 'text'
|
339 |
FROM {$wpdb->term_taxonomy} tax
|
340 |
LEFT JOIN {$wpdb->terms} terms ON terms.term_id = tax.term_id
|
@@ -343,32 +434,44 @@ class OMAPI_Menu {
|
|
343 |
";
|
344 |
$tags = $wpdb->get_results( $sql, ARRAY_A );
|
345 |
|
346 |
-
wp_register_script( $this->base->plugin_slug . '-select2',
|
347 |
wp_enqueue_script( $this->base->plugin_slug . '-select2' );
|
348 |
-
wp_register_script( $this->base->plugin_slug . '-
|
349 |
-
|
350 |
-
'posts' => $posts,
|
351 |
-
'tags' => $tags,
|
352 |
-
'app_url' => trailingslashit( OPTINMONSTER_APP_URL ),
|
353 |
-
) );
|
354 |
-
wp_enqueue_script( $this->base->plugin_slug . '-settings' );
|
355 |
-
wp_register_script( $this->base->plugin_slug . '-clipboard', plugins_url( '/assets/js/clipboard.min.js', OMAPI_FILE ), array( $this->base->plugin_slug . '-settings' ), $this->base->version, true );
|
356 |
-
wp_enqueue_script( $this->base->plugin_slug . '-clipboard' );
|
357 |
-
wp_register_script( $this->base->plugin_slug . '-tooltip', plugins_url( '/assets/js/tooltip.min.js', OMAPI_FILE ), array( $this->base->plugin_slug . '-settings' ), $this->base->version, true );
|
358 |
-
wp_enqueue_script( $this->base->plugin_slug . '-tooltip' );
|
359 |
-
wp_register_script( $this->base->plugin_slug . '-jspdf', plugins_url( '/assets/js/jspdf.min.js', OMAPI_FILE ), array( $this->base->plugin_slug . '-settings' ), $this->base->version, true );
|
360 |
-
wp_enqueue_script( $this->base->plugin_slug . '-jspdf' );
|
361 |
-
wp_localize_script(
|
362 |
$this->base->plugin_slug . '-settings',
|
363 |
-
'
|
364 |
array(
|
365 |
-
'
|
366 |
-
'
|
367 |
-
'
|
368 |
-
'
|
369 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
370 |
)
|
371 |
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
372 |
|
373 |
// Run a hook to load in custom styles.
|
374 |
do_action( 'optin_monster_api_admin_scripts', $this->view );
|
@@ -380,121 +483,12 @@ class OMAPI_Menu {
|
|
380 |
*
|
381 |
* @since 1.1.5.9
|
382 |
*/
|
383 |
-
public function fix_plugin_js_conflicts(){
|
384 |
-
|
385 |
-
// Get current screen.
|
386 |
-
$screen = get_current_screen();
|
387 |
|
388 |
-
|
389 |
-
|
390 |
-
return;
|
391 |
}
|
392 |
-
|
393 |
-
// Dequeue scripts that might cause our settings not to work properly.
|
394 |
-
wp_dequeue_script( 'optimizely_config' );
|
395 |
-
|
396 |
-
}
|
397 |
-
|
398 |
-
/**
|
399 |
-
* Combine Support data together to pass into localization
|
400 |
-
*
|
401 |
-
* @since 1.1.5
|
402 |
-
* @return array
|
403 |
-
*/
|
404 |
-
public function get_support_data() {
|
405 |
-
$server_data = '';
|
406 |
-
$optin_data = '';
|
407 |
-
|
408 |
-
if ( isset( $_GET['optin_monster_api_view'] ) && 'support' === $_GET['optin_monster_api_view'] ) {
|
409 |
-
$optin_data = $this->get_optin_data();
|
410 |
-
$server_data = $this->get_server_data();
|
411 |
-
}
|
412 |
-
$data = array(
|
413 |
-
'server' => $server_data,
|
414 |
-
'optins' => $optin_data
|
415 |
-
);
|
416 |
-
|
417 |
-
return $data;
|
418 |
-
}
|
419 |
-
|
420 |
-
/**
|
421 |
-
* Build Current Optin data array to localize
|
422 |
-
*
|
423 |
-
* @since 1.1.5
|
424 |
-
*
|
425 |
-
* @return array
|
426 |
-
*/
|
427 |
-
private function get_optin_data() {
|
428 |
-
|
429 |
-
$optins = $this->base->get_optins();
|
430 |
-
$optin_data = array();
|
431 |
-
|
432 |
-
if ( $optins ) {
|
433 |
-
foreach ( $optins as $optin ) {
|
434 |
-
$optin = get_post( $optin->ID );
|
435 |
-
$slug = $optin->post_name;
|
436 |
-
$design_type = get_post_meta( $optin->ID, '_omapi_type', true );
|
437 |
-
$optin_data[ $slug ] = array(
|
438 |
-
'Campaign Type' => $design_type,
|
439 |
-
'WordPress ID' => $optin->ID,
|
440 |
-
'Associated IDs' => get_post_meta( $optin->ID, '_omapi_ids', true ),
|
441 |
-
'Current Status' => get_post_meta( $optin->ID, '_omapi_enabled', true ) ? 'Live' : 'Disabled',
|
442 |
-
'User Settings' => get_post_meta( $optin->ID, '_omapi_users', true ),
|
443 |
-
'Pages to Never show on' => get_post_meta( $optin->ID, '_omapi_never', true ),
|
444 |
-
'Pages to Only show on' => get_post_meta( $optin->ID, '_omapi_only', true ),
|
445 |
-
'Categories' => get_post_meta( $optin->ID, '_omapi_categories', true ),
|
446 |
-
'Taxonomies' => get_post_meta( $optin->ID, '_omapi_taxonomies', true ),
|
447 |
-
'Template types to Show on' => get_post_meta( $optin->ID, '_omapi_show', true ),
|
448 |
-
'Shortcodes Synced and Recognized' => get_post_meta( $optin->ID, '_omapi_shortcode', true ) ? htmlspecialchars_decode( get_post_meta( $optin->ID, '_omapi_shortcode_output', true ) ) : 'None recognized',
|
449 |
-
);
|
450 |
-
if ( OMAPI_Utils::is_inline_type( $design_type ) ) {
|
451 |
-
$optin_data[$slug][ 'Automatic Output Status' ] = get_post_meta( $optin->ID, '_omapi_automatic', true ) ? 'Enabled' : 'Disabled';
|
452 |
-
}
|
453 |
-
|
454 |
-
}
|
455 |
-
}
|
456 |
-
return $optin_data;
|
457 |
-
}
|
458 |
-
|
459 |
-
/**
|
460 |
-
* Build array of server information to localize
|
461 |
-
*
|
462 |
-
* @since 1.1.5
|
463 |
-
*
|
464 |
-
* @return array
|
465 |
-
*/
|
466 |
-
private function get_server_data() {
|
467 |
-
|
468 |
-
$theme_data = wp_get_theme();
|
469 |
-
$theme = $theme_data->Name . ' ' . $theme_data->Version;
|
470 |
-
|
471 |
-
$plugins = get_plugins();
|
472 |
-
$active_plugins = get_option( 'active_plugins', array() );
|
473 |
-
$used_plugins = "\n";
|
474 |
-
$api_ping = wp_remote_request( OPTINMONSTER_APP_URL . '/v1/ping' );
|
475 |
-
foreach ( $plugins as $plugin_path => $plugin ) {
|
476 |
-
if ( ! in_array( $plugin_path, $active_plugins ) ) {
|
477 |
-
continue;
|
478 |
-
}
|
479 |
-
$used_plugins .= $plugin['Name'] . ': ' . $plugin['Version'] . "\n";
|
480 |
-
}
|
481 |
-
|
482 |
-
$array = array(
|
483 |
-
'Server Info' => esc_html( $_SERVER['SERVER_SOFTWARE'] ),
|
484 |
-
'PHP Version' => function_exists( 'phpversion' ) ? esc_html( phpversion() ) : 'Unable to check.',
|
485 |
-
'Error Log Location' => function_exists( 'ini_get' ) ? ini_get( 'error_log' ) : 'Unable to locate.',
|
486 |
-
'Default Timezone' => date_default_timezone_get(),
|
487 |
-
'WordPress Home URL' => get_home_url(),
|
488 |
-
'WordPress Site URL' => get_site_url(),
|
489 |
-
'WordPress Version' => get_bloginfo( 'version' ),
|
490 |
-
'Multisite' => is_multisite() ? 'Multisite Enabled' : 'Not Multisite',
|
491 |
-
'Language' => get_locale(),
|
492 |
-
'API Ping Response' => wp_remote_retrieve_response_code( $api_ping ),
|
493 |
-
'Active Theme' => $theme,
|
494 |
-
'Active Plugins' => $used_plugins,
|
495 |
-
);
|
496 |
-
|
497 |
-
return $array;
|
498 |
}
|
499 |
|
500 |
/**
|
@@ -508,7 +502,7 @@ class OMAPI_Menu {
|
|
508 |
public function footer( $text ) {
|
509 |
|
510 |
$url = 'https://wordpress.org/support/plugin/optinmonster/reviews?filter=5#new-post';
|
511 |
-
$text = sprintf( __( 'Please rate <strong>OptinMonster</strong> <a href="%s" target="_blank" rel="noopener">★★★★★</a> on <a href="%s" target="_blank" rel="noopener noreferrer">WordPress.org</a> to help us spread the word. Thank you from the OptinMonster team!', 'optin-monster-api' ), $url, $url );
|
512 |
return $text;
|
513 |
|
514 |
}
|
@@ -518,34 +512,34 @@ class OMAPI_Menu {
|
|
518 |
*
|
519 |
* @since 1.0.0
|
520 |
*/
|
521 |
-
public function
|
|
|
522 |
|
523 |
?>
|
524 |
-
|
525 |
<div class="wrap omapi-page">
|
526 |
<h2></h2>
|
527 |
<div class="omapi-ui">
|
528 |
<div class="omapi-tabs">
|
529 |
<ul class="omapi-panels">
|
530 |
-
<?php
|
531 |
-
$
|
532 |
-
$first = 0 == $i ? ' omapi-panel-first' : '';
|
533 |
$active = $id == $this->view ? ' omapi-panel-active' : '';
|
534 |
?>
|
535 |
-
|
536 |
-
<?php $
|
537 |
</ul>
|
538 |
</div>
|
539 |
<div class="omapi-tabs-content">
|
540 |
<?php
|
541 |
-
|
542 |
$active = $id == $this->view ? ' omapi-content-active' : '';
|
543 |
?>
|
544 |
<div class="omapi-content omapi-content-<?php echo sanitize_html_class( $id ); ?><?php echo $active; ?>">
|
545 |
<?php
|
546 |
-
|
547 |
-
|
548 |
-
|
|
|
549 |
</div>
|
550 |
<?php endforeach; ?>
|
551 |
</div>
|
@@ -578,11 +572,11 @@ class OMAPI_Menu {
|
|
578 |
}
|
579 |
|
580 |
// Set default panels.
|
581 |
-
$panels['api']
|
582 |
|
583 |
// Set the WooCommerce panel.
|
584 |
if ( $creds && ( $is_minimum_woo || OMAPI_WooCommerce::is_connected() ) && $can_manage_woo ) {
|
585 |
-
|
586 |
}
|
587 |
|
588 |
// Set the Support panel
|
@@ -612,61 +606,61 @@ class OMAPI_Menu {
|
|
612 |
$ret = '';
|
613 |
$optin_id = isset( $_GET['optin_monster_api_id'] ) ? absint( $_GET['optin_monster_api_id'] ) : 0;
|
614 |
$value = 'optins' == $id ? get_post_meta( $optin_id, '_omapi_' . $setting, true ) : $this->base->get_option( $id, $setting );
|
615 |
-
$optin
|
616 |
|
617 |
// Load the type of setting UI based on the option.
|
618 |
switch ( $id ) {
|
619 |
-
case 'api'
|
620 |
switch ( $setting ) {
|
621 |
-
case 'user'
|
622 |
$ret = $this->get_password_field( $setting, $value, $id, esc_html__( 'Legacy API Username', 'optin-monster-api' ), esc_html__( 'The Legacy API Username found in your OptinMonster Account API area.', 'optin-monster-api' ), esc_html__( 'Enter your Legacy API Username here...', 'optin-monster-api' ) );
|
623 |
-
|
624 |
|
625 |
-
case 'key'
|
626 |
$ret = $this->get_password_field( $setting, $value, $id, esc_html__( 'Legacy API Key', 'optin-monster-api' ), esc_html__( 'The Legacy API Key found in your OptinMonster Account API area.', 'optin-monster-api' ), esc_html__( 'Enter your Legacy API Key here...', 'optin-monster-api' ) );
|
627 |
-
|
628 |
|
629 |
-
case 'apikey'
|
630 |
-
$ret
|
631 |
$ret .= $this->get_password_field( $setting, $value, $id, esc_html__( 'API Key', 'optin-monster-api' ), esc_html__( 'A single API Key found in your OptinMonster Account API area.', 'optin-monster-api' ), esc_html__( 'Enter your API Key here...', 'optin-monster-api' ), array(), true );
|
632 |
add_filter( 'omapi_hide_submit_buttom', '__return_true' );
|
633 |
-
|
634 |
|
635 |
-
case 'omwpdebug'
|
636 |
$ret = $this->get_checkbox_field( $setting, $value, $id, esc_html__( 'Debugging Rules', 'optin-monster-api' ), __( 'Allow logged-out/non-admin debugging of plugin rules with the <code>omwpdebug</code> query variable?', 'optin-monster-api' ) );
|
637 |
-
|
638 |
default:
|
639 |
-
|
640 |
}
|
641 |
-
|
642 |
|
643 |
-
case 'settings'
|
644 |
switch ( $setting ) {
|
645 |
-
case 'cookies'
|
646 |
$ret = $this->get_checkbox_field( $setting, $value, $id, esc_html__( 'Clear local cookies on campaign update?', 'optin-monster-api' ), esc_html__( 'If checked, local cookies will be cleared for all campaigns after campaign settings are adjusted and saved.', 'optin-monster-api' ) );
|
647 |
-
|
648 |
default:
|
649 |
-
|
650 |
}
|
651 |
-
|
652 |
|
653 |
-
case 'woocommerce'
|
654 |
switch ( $setting ) {
|
655 |
-
case 'settings'
|
656 |
$ret = $this->get_woocommerce();
|
657 |
-
|
658 |
default:
|
659 |
-
|
660 |
}
|
661 |
-
|
662 |
|
663 |
-
case 'support'
|
664 |
switch ( $setting ) {
|
665 |
-
case 'video'
|
666 |
$ret = '<div class="omapi-half-column"><div class="omapi-video-container"><iframe width="640" height="360" src="https://www.youtube.com/embed/tUoJcp5Z9H0?rel=0&showinfo=0" frameborder="0" allowfullscreen></iframe></div></div>';
|
667 |
break 2;
|
668 |
|
669 |
-
case 'links'
|
670 |
$ret = $this->get_support_links( $setting, esc_html__( 'Helpful Links', 'optin-monster-api' ) );
|
671 |
break 2;
|
672 |
|
@@ -674,41 +668,41 @@ class OMAPI_Menu {
|
|
674 |
$ret = $this->get_plugin_report( $setting, esc_html__( 'Server / Plugin Report', 'optin-monster-api' ) );
|
675 |
break 2;
|
676 |
default:
|
677 |
-
|
678 |
}
|
679 |
break;
|
680 |
|
681 |
-
case 'toggle'
|
682 |
switch ( $setting ) {
|
683 |
-
case 'advanced-start'
|
684 |
$ret = $this->get_toggle_start( $setting, esc_html__( 'Advanced Settings', 'optin-monster-api' ), esc_html__( 'More specific settings available for campaign visibility.', 'optin-monster-api' ) );
|
685 |
-
|
686 |
-
case 'advanced-end'
|
687 |
$ret = $this->get_toggle_end();
|
688 |
-
|
689 |
-
case 'woocommerce-start'
|
690 |
$ret = $this->get_toggle_start( $setting, esc_html__( 'WooCommerce Settings', 'optin-monster-api' ), esc_html__( 'More specific settings available for WooCommerce integration.', 'optin-monster-api' ) );
|
691 |
break 2;
|
692 |
-
case 'woocommerce-end'
|
693 |
$ret = $this->get_toggle_end();
|
694 |
break 2;
|
695 |
default:
|
696 |
-
|
697 |
}
|
698 |
-
|
699 |
|
700 |
-
case 'optins'
|
701 |
switch ( $setting ) {
|
702 |
-
case 'enabled'
|
703 |
$ret = $this->get_checkbox_field( $setting, $value, $id, esc_html__( 'Enable campaign on site?', 'optin-monster-api' ), esc_html__( 'The campaign will not be displayed on this site unless this setting is checked.', 'optin-monster-api' ) );
|
704 |
-
|
705 |
|
706 |
-
case 'automatic'
|
707 |
$ret = $this->get_checkbox_field( $setting, $value, $id, esc_html__( 'Display the campaign automatically after blog posts', 'optin-monster-api' ), sprintf( __( 'If no advanced settings are selected below, the campaign will display after every post. You can turn this off and add it manually to your posts by <a href="%s" target="_blank" rel="noopener">clicking here and viewing the tutorial.</a>', 'optin-monster-api' ), 'https://optinmonster.com/docs/how-to-manually-add-an-after-post-or-inline-optin/' ), array( 'omapi-after-post-auto-select' ) );
|
708 |
-
|
709 |
-
case 'automatic_shortcode'
|
710 |
-
$full_shortcode ='[optin-monster
|
711 |
-
$ret
|
712 |
$setting,
|
713 |
$full_shortcode,
|
714 |
$id,
|
@@ -718,23 +712,23 @@ class OMAPI_Menu {
|
|
718 |
array(),
|
719 |
true
|
720 |
);
|
721 |
-
|
722 |
|
723 |
-
case 'users'
|
724 |
$ret = $this->get_dropdown_field( $setting, $value, $id, $this->get_user_output(), esc_html__( 'Who should see this campaign?', 'optin-monster-api' ), sprintf( __( 'Determines who should be able to view this campaign. Want to hide for newsletter subscribers? <a href="%s" target="_blank" rel="noopener">Click here to learn how.</a>', 'optin-monster-api' ), 'https://optinmonster.com/docs/how-to-hide-optinmonster-from-existing-newsletter-subscribers/' ) );
|
725 |
-
|
726 |
|
727 |
-
case 'never'
|
728 |
$val = is_array( $value ) ? implode( ',', $value ) : $value;
|
729 |
$ret = $this->get_custom_field( $setting, '<input type="hidden" value="' . esc_attr( $val ) . '" id="omapi-field-' . $setting . '" class="omapi-select" name="omapi[' . $id . '][' . $setting . ']" data-placeholder="' . esc_attr__( 'Type to search and select post(s)...', 'optin-monster-api' ) . '">', esc_html__( 'Never load campaign on:', 'optin-monster-api' ), esc_html__( 'Never loads the campaign on the selected posts and/or pages. Does not disable automatic Global output.', 'optin-monster-api' ) );
|
730 |
-
|
731 |
|
732 |
-
case 'only'
|
733 |
$val = is_array( $value ) ? implode( ',', $value ) : $value;
|
734 |
$ret = $this->get_custom_field( $setting, '<input type="hidden" value="' . esc_attr( $val ) . '" id="omapi-field-' . $setting . '" class="omapi-select" name="omapi[' . $id . '][' . $setting . ']" data-placeholder="' . esc_attr__( 'Type to search and select post(s)...', 'optin-monster-api' ) . '">', esc_html__( 'Load campaign specifically on:', 'optin-monster-api' ), esc_html__( 'Loads the campaign on the selected posts and/or pages.', 'optin-monster-api' ) );
|
735 |
-
|
736 |
|
737 |
-
case 'categories'
|
738 |
$categories = get_categories();
|
739 |
if ( $categories ) {
|
740 |
ob_start();
|
@@ -742,9 +736,9 @@ class OMAPI_Menu {
|
|
742 |
$cats = ob_get_clean();
|
743 |
$ret = $this->get_custom_field( 'categories', $cats, esc_html__( 'Load campaign on post categories:', 'optin-monster-api' ) );
|
744 |
}
|
745 |
-
|
746 |
|
747 |
-
case 'taxonomies'
|
748 |
// Attempt to load post tags.
|
749 |
$html = '';
|
750 |
$tags = get_taxonomy( 'post_tag' );
|
@@ -758,12 +752,22 @@ class OMAPI_Menu {
|
|
758 |
}
|
759 |
|
760 |
// Possibly load taxonomies setting if they exist.
|
761 |
-
$taxonomies = get_taxonomies(
|
|
|
|
|
|
|
|
|
|
|
762 |
$taxonomies['post_format'] = 'post_format';
|
763 |
$data = array();
|
764 |
|
|
|
|
|
|
|
|
|
|
|
765 |
// Allow returned taxonmies to be filtered before creating UI.
|
766 |
-
$taxonomies = apply_filters('optin_monster_api_setting_ui_taxonomies', $taxonomies );
|
767 |
|
768 |
if ( $taxonomies ) {
|
769 |
foreach ( $taxonomies as $taxonomy ) {
|
@@ -775,11 +779,11 @@ class OMAPI_Menu {
|
|
775 |
$tax = get_taxonomy( $taxonomy );
|
776 |
$args = array(
|
777 |
'descendants_and_self' => 0,
|
778 |
-
'selected_cats'
|
779 |
-
'popular_cats'
|
780 |
-
'walker'
|
781 |
-
'taxonomy'
|
782 |
-
'checked_ontop'
|
783 |
);
|
784 |
wp_terms_checklist( 0, $args );
|
785 |
$output = ob_get_clean();
|
@@ -799,93 +803,93 @@ class OMAPI_Menu {
|
|
799 |
|
800 |
// Return the data.
|
801 |
$ret = $html;
|
802 |
-
|
803 |
|
804 |
-
case 'show'
|
805 |
$ret = $this->get_custom_field( 'show', $this->get_show_fields( $value ), esc_html__( 'Load campaign on post types and archives:', 'optin-monster-api' ) );
|
806 |
-
|
807 |
|
808 |
-
case 'mailpoet'
|
809 |
$ret = $this->get_checkbox_field( $setting, $value, $id, esc_html__( 'Save lead to MailPoet?', 'optin-monster-api' ), esc_html__( 'If checked, successful campaign leads will be saved to MailPoet.', 'optin-monster-api' ) );
|
810 |
-
|
811 |
|
812 |
-
case 'mailpoet_list'
|
813 |
-
$ret = $this->get_dropdown_field( $setting, $value, $id, $this->
|
814 |
-
|
815 |
|
816 |
case 'mailpoet_use_phone':
|
817 |
$phone_field = get_post_meta( $optin_id, '_omapi_mailpoet_phone_field', true );
|
818 |
|
819 |
$ret = $this->get_checkbox_field( $setting, ! empty( $phone_field ), $id, esc_html__( 'Save phone number to MailPoet?', 'optin-monster-api' ), esc_html__( 'If checked, Phone number will be saved in Mailpoet.', 'optin-monster-api' ) );
|
820 |
-
|
821 |
|
822 |
-
case 'mailpoet_phone_field'
|
823 |
-
$ret .= $this->get_dropdown_field( $setting, $value, $id, $this->
|
824 |
-
|
825 |
|
826 |
// Start WooCommerce settings.
|
827 |
-
case 'show_on_woocommerce'
|
828 |
$ret = $this->get_checkbox_field( $setting, $value, $id, esc_html__( 'Show on all WooCommerce pages', 'optin-monster-api' ), esc_html__( 'The campaign will show on any page where WooCommerce templates are used.', 'optin-monster-api' ) );
|
829 |
break 2;
|
830 |
|
831 |
-
case 'is_wc_shop'
|
832 |
$ret = $this->get_checkbox_field( $setting, $value, $id, esc_html__( 'Show on WooCommerce shop', 'optin-monster-api' ), esc_html__( 'The campaign will show on the product archive page (shop).', 'optin-monster-api' ) );
|
833 |
break 2;
|
834 |
|
835 |
-
case 'is_wc_product'
|
836 |
$ret = $this->get_checkbox_field( $setting, $value, $id, esc_html__( 'Show on WooCommerce products', 'optin-monster-api' ), esc_html__( 'The campaign will show on any single product.', 'optin-monster-api' ) );
|
837 |
break 2;
|
838 |
|
839 |
-
case 'is_wc_cart'
|
840 |
$ret = $this->get_checkbox_field( $setting, $value, $id, esc_html__( 'Show on WooCommerce Cart', 'optin-monster-api' ), esc_html__( 'The campaign will show on the cart page.', 'optin-monster-api' ) );
|
841 |
break 2;
|
842 |
|
843 |
-
case 'is_wc_checkout'
|
844 |
$ret = $this->get_checkbox_field( $setting, $value, $id, esc_html__( 'Show on WooCommerce Checkout', 'optin-monster-api' ), esc_html__( 'The campaign will show on the checkout page.', 'optin-monster-api' ) );
|
845 |
break 2;
|
846 |
|
847 |
-
case 'is_wc_account'
|
848 |
$ret = $this->get_checkbox_field( $setting, $value, $id, esc_html__( 'Show on WooCommerce Customer Account', 'optin-monster-api' ), esc_html__( 'The campaign will show on the WooCommerce customer account pages.', 'optin-monster-api' ) );
|
849 |
break 2;
|
850 |
|
851 |
-
case 'is_wc_endpoint'
|
852 |
$ret = $this->get_checkbox_field( $setting, $value, $id, esc_html__( 'Show on all WooCommerce Endpoints', 'optin-monster-api' ), esc_html__( 'The campaign will show when on any WooCommerce Endpoint.', 'optin-monster-api' ) );
|
853 |
break 2;
|
854 |
-
case 'is_wc_endpoint_order_pay'
|
855 |
$ret = $this->get_checkbox_field( $setting, $value, $id, esc_html__( 'Show on WooCommerce Order Pay endpoint', 'optin-monster-api' ), esc_html__( 'The campaign will show when the endpoint page for order pay is displayed.', 'optin-monster-api' ) );
|
856 |
break 2;
|
857 |
|
858 |
-
case 'is_wc_endpoint_order_received'
|
859 |
$ret = $this->get_checkbox_field( $setting, $value, $id, esc_html__( 'Show on WooCommerce Order Received endpoint', 'optin-monster-api' ), esc_html__( 'The campaign will show when the endpoint page for order received is displayed.', 'optin-monster-api' ) );
|
860 |
break 2;
|
861 |
|
862 |
-
case 'is_wc_endpoint_view_order'
|
863 |
$ret = $this->get_checkbox_field( $setting, $value, $id, esc_html__( 'Show on WooCommerce View Order endpoint', 'optin-monster-api' ), esc_html__( 'The campaign will show when the endpoint page for view order is displayed.', 'optin-monster-api' ) );
|
864 |
break 2;
|
865 |
|
866 |
-
case 'is_wc_endpoint_edit_account'
|
867 |
$ret = $this->get_checkbox_field( $setting, $value, $id, esc_html__( 'Show on WooCommerce Edit Account endpoint', 'optin-monster-api' ), esc_html__( 'The campaign will show when the endpoint page for edit account is displayed.', 'optin-monster-api' ) );
|
868 |
break 2;
|
869 |
|
870 |
-
case 'is_wc_endpoint_edit_address'
|
871 |
$ret = $this->get_checkbox_field( $setting, $value, $id, esc_html__( 'Show on WooCommerce Edit Address endpoint', 'optin-monster-api' ), esc_html__( 'The campaign will show when the endpoint page for edit address is displayed.', 'optin-monster-api' ) );
|
872 |
break 2;
|
873 |
|
874 |
-
case 'is_wc_endpoint_lost_password'
|
875 |
$ret = $this->get_checkbox_field( $setting, $value, $id, esc_html__( 'Show on WooCommerce Lost Password endpoint', 'optin-monster-api' ), esc_html__( 'The campaign will show when the endpoint page for lost password is displayed.', 'optin-monster-api' ) );
|
876 |
break 2;
|
877 |
|
878 |
-
case 'is_wc_endpoint_customer_logout'
|
879 |
$ret = $this->get_checkbox_field( $setting, $value, $id, esc_html__( 'Show on WooCommerce Customer Logout endpoint', 'optin-monster-api' ), esc_html__( 'The campaign will show when the endpoint page for customer logout is displayed.', 'optin-monster-api' ) );
|
880 |
break 2;
|
881 |
|
882 |
-
case 'is_wc_endpoint_add_payment_method'
|
883 |
$ret = $this->get_checkbox_field( $setting, $value, $id, esc_html__( 'Show on WooCommerce Add Payment Method endpoint', 'optin-monster-api' ), esc_html__( 'The campaign will show when the endpoint page for add payment method is displayed.', 'optin-monster-api' ) );
|
884 |
break 2;
|
885 |
|
886 |
-
case 'is_wc_product_category'
|
887 |
$taxonomy = 'product_cat';
|
888 |
-
$terms
|
889 |
if ( $terms ) {
|
890 |
ob_start();
|
891 |
$display = isset( $value ) ? (array) $value : array();
|
@@ -895,7 +899,7 @@ class OMAPI_Menu {
|
|
895 |
'popular_cats' => false,
|
896 |
'walker' => null,
|
897 |
'taxonomy' => $taxonomy,
|
898 |
-
'checked_ontop' => true
|
899 |
);
|
900 |
wp_terms_checklist( 0, $args );
|
901 |
$output = ob_get_clean();
|
@@ -905,9 +909,9 @@ class OMAPI_Menu {
|
|
905 |
}
|
906 |
break 2;
|
907 |
|
908 |
-
case 'is_wc_product_tag'
|
909 |
$taxonomy = 'product_tag';
|
910 |
-
$terms
|
911 |
if ( $terms ) {
|
912 |
ob_start();
|
913 |
$display = isset( $value ) ? (array) $value : array();
|
@@ -917,7 +921,7 @@ class OMAPI_Menu {
|
|
917 |
'popular_cats' => false,
|
918 |
'walker' => null,
|
919 |
'taxonomy' => $taxonomy,
|
920 |
-
'checked_ontop' => true
|
921 |
);
|
922 |
wp_terms_checklist( 0, $args );
|
923 |
$output = ob_get_clean();
|
@@ -928,20 +932,20 @@ class OMAPI_Menu {
|
|
928 |
break 2;
|
929 |
|
930 |
default:
|
931 |
-
|
932 |
}
|
933 |
-
|
934 |
-
case 'note'
|
935 |
switch ( $setting ) {
|
936 |
-
case 'sidebar_widget_notice'
|
937 |
$ret = $this->get_optin_type_note( $setting, esc_html__( 'Use Widgets to set Sidebar output', 'optin-monster-api' ), esc_html__( 'You can set this campaign to show in your sidebars using the OptinMonster widget within your sidebars.', 'optin-monster-api' ), 'widgets.php', esc_html__( 'Go to Widgets', 'optin-monster-api' ) );
|
938 |
-
|
939 |
default:
|
940 |
-
|
941 |
}
|
942 |
-
|
943 |
default:
|
944 |
-
|
945 |
}
|
946 |
|
947 |
// Return the setting output.
|
@@ -958,127 +962,31 @@ class OMAPI_Menu {
|
|
958 |
*/
|
959 |
public function get_user_output() {
|
960 |
|
961 |
-
return apply_filters(
|
|
|
962 |
array(
|
963 |
array(
|
964 |
'name' => esc_html__( 'Show campaign to all visitors and users', 'optin-monster-api' ),
|
965 |
-
'value' => 'all'
|
966 |
),
|
967 |
array(
|
968 |
'name' => esc_html__( 'Show campaign to only visitors (not logged-in)', 'optin-monster-api' ),
|
969 |
-
'value' => 'out'
|
970 |
),
|
971 |
array(
|
972 |
'name' => esc_html__( 'Show campaign to only users (logged-in)', 'optin-monster-api' ),
|
973 |
-
'value' => 'in'
|
974 |
-
)
|
975 |
)
|
976 |
);
|
977 |
|
978 |
}
|
979 |
|
980 |
-
/**
|
981 |
-
* Returns the available MailPoet lists.
|
982 |
-
*
|
983 |
-
* @since 1.0.0
|
984 |
-
*
|
985 |
-
* @return array An array of MailPoet lists.
|
986 |
-
*/
|
987 |
-
public function get_mailpoet_lists() {
|
988 |
-
|
989 |
-
// Prepare variables.
|
990 |
-
$mailpoet = null;
|
991 |
-
$lists = array();
|
992 |
-
$ret = array();
|
993 |
-
$listIdKey = 'id';
|
994 |
-
|
995 |
-
// Get lists. Check for MailPoet 3 first. Default to legacy.
|
996 |
-
if ( class_exists( '\\MailPoet\\Config\\Initializer' ) ) {
|
997 |
-
$lists = \MailPoet\API\API::MP( 'v1' )->getLists();
|
998 |
-
} else {
|
999 |
-
$mailpoet = WYSIJA::get( 'list', 'model' );
|
1000 |
-
$lists = $mailpoet->get( array( 'name', 'list_id' ), array( 'is_enabled' => 1 ) );
|
1001 |
-
$listIdKey = 'list_id';
|
1002 |
-
}
|
1003 |
-
|
1004 |
-
// Add default option.
|
1005 |
-
$ret[] = array(
|
1006 |
-
'name' => esc_html__( 'Select your MailPoet list...', 'optin-monster-api' ),
|
1007 |
-
'value' => 'none',
|
1008 |
-
);
|
1009 |
-
|
1010 |
-
// Loop through the list data and add to array.
|
1011 |
-
foreach ( (array) $lists as $list ) {
|
1012 |
-
$ret[] = array(
|
1013 |
-
'name' => $list['name'],
|
1014 |
-
'value' => $list[ $listIdKey ],
|
1015 |
-
);
|
1016 |
-
}
|
1017 |
-
|
1018 |
-
/**
|
1019 |
-
* Filters the MailPoet lists.
|
1020 |
-
*
|
1021 |
-
*
|
1022 |
-
* @param array $ret The MailPoet lists array.
|
1023 |
-
* @param array $lists The raw MailPoet lists array. Format differs by plugin verison.
|
1024 |
-
* @param WYSIJA|null $mailpoet The MailPoet object if using legacy. Null otherwise.
|
1025 |
-
*/
|
1026 |
-
return apply_filters( 'optin_monster_api_mailpoet_lists', $ret, $lists, $mailpoet );
|
1027 |
-
|
1028 |
-
}
|
1029 |
-
|
1030 |
-
/**
|
1031 |
-
* Returns the available MailPoet custom fields.
|
1032 |
-
*
|
1033 |
-
* @since 1.9.8
|
1034 |
-
*
|
1035 |
-
* @return array An array of MailPoet custom fields.
|
1036 |
-
*/
|
1037 |
-
public function get_mailpoet_custom_fields() {
|
1038 |
-
// Prepare variables.
|
1039 |
-
$custom_fields = array();
|
1040 |
-
$ret = array();
|
1041 |
-
$default_fields = array( 'email', 'first_name', 'last_name' );
|
1042 |
-
|
1043 |
-
// Get lists. Check for MailPoet 3.
|
1044 |
-
if ( class_exists( '\\MailPoet\\Config\\Initializer' ) ) {
|
1045 |
-
$custom_fields = \MailPoet\API\API::MP( 'v1' )->getSubscriberFields();
|
1046 |
-
}
|
1047 |
-
|
1048 |
-
// Add default option.
|
1049 |
-
$ret[] = array(
|
1050 |
-
'name' => esc_html__( 'Select the phone number field...', 'optin-monster-api' ),
|
1051 |
-
'value' => '',
|
1052 |
-
);
|
1053 |
-
|
1054 |
-
// Loop through the list data and add to array.
|
1055 |
-
foreach ( (array) $custom_fields as $custom_field ) {
|
1056 |
-
if ( in_array( $custom_field['id'], $default_fields ) ) {
|
1057 |
-
continue;
|
1058 |
-
}
|
1059 |
-
|
1060 |
-
$ret[] = array(
|
1061 |
-
'name' => $custom_field['name'],
|
1062 |
-
'value' => $custom_field['id'],
|
1063 |
-
);
|
1064 |
-
}
|
1065 |
-
|
1066 |
-
/**
|
1067 |
-
* Filters the MailPoet custom fields.
|
1068 |
-
*
|
1069 |
-
*
|
1070 |
-
* @param array. $ret The MailPoet custom fields array, except
|
1071 |
-
* first name, last name and email
|
1072 |
-
* @param array. $custom_fields The raw MailPoet custom fields array.
|
1073 |
-
* Format differs by plugin verison.
|
1074 |
-
*/
|
1075 |
-
return apply_filters( 'optin_monster_api_mailpoet_custom_fields', $ret, $custom_fields );
|
1076 |
-
}
|
1077 |
|
1078 |
/**
|
1079 |
* Retrieves the UI output for the single posts show setting.
|
1080 |
*
|
1081 |
-
* @since
|
1082 |
*
|
1083 |
* @param array $value The meta index value for the show setting.
|
1084 |
* @return string $html HTML representation of the data.
|
@@ -1088,8 +996,8 @@ class OMAPI_Menu {
|
|
1088 |
// Increment the global tabindex counter.
|
1089 |
$this->tabindex++;
|
1090 |
|
1091 |
-
$output
|
1092 |
-
$output
|
1093 |
$post_types = get_post_types( array( 'public' => true ) );
|
1094 |
foreach ( (array) $post_types as $show ) {
|
1095 |
$pt_object = get_post_type_object( $show );
|
@@ -1110,13 +1018,13 @@ class OMAPI_Menu {
|
|
1110 |
*
|
1111 |
* @since 1.0.0
|
1112 |
*
|
1113 |
-
* @param string
|
1114 |
-
* @param mixed
|
1115 |
-
* @param string
|
1116 |
-
* @param string
|
1117 |
-
* @param string
|
1118 |
-
* @param string
|
1119 |
-
* @param array
|
1120 |
* @param boolean $copy Turn on clipboard copy button and make field readonly
|
1121 |
* @return string $html HTML representation of the data.
|
1122 |
*/
|
@@ -1129,17 +1037,17 @@ class OMAPI_Menu {
|
|
1129 |
$readonly_output = $copy ? 'readonly' : '';
|
1130 |
|
1131 |
// Build the HTML.
|
1132 |
-
$field
|
1133 |
$field .= '<p class="omapi-field-wrap"><label for="omapi-field-' . $setting . '">' . $label . '</label><br />';
|
1134 |
-
$field .= '<input type="text" id="omapi-field-' . $setting . '" class="' . implode( ' ', (array) $classes ) . '" name="omapi[' . $id . '][' . $setting . ']" tabindex="' . $this->tabindex . '" value="' . esc_attr( $value ) . '"' . ( $place ? ' placeholder="' . $place . '"' : '' ) . $readonly_output .' />';
|
1135 |
-
|
1136 |
-
|
1137 |
-
|
1138 |
-
|
1139 |
-
|
1140 |
-
|
1141 |
$field .= '</p>';
|
1142 |
-
$field
|
1143 |
|
1144 |
// Return the HTML.
|
1145 |
return apply_filters( 'optin_monster_api_text_field', $field, $setting, $value, $id, $label );
|
@@ -1152,13 +1060,13 @@ class OMAPI_Menu {
|
|
1152 |
* @since 1.0.0
|
1153 |
*
|
1154 |
* @param string $setting The name of the setting to be saved to the DB.
|
1155 |
-
* @param mixed
|
1156 |
* @param string $id The setting ID to target for name field.
|
1157 |
* @param string $label The label of the input field.
|
1158 |
* @param string $desc The description for the input field.
|
1159 |
* @param string $place Placeholder text for the field.
|
1160 |
-
* @param array
|
1161 |
-
* @param bool
|
1162 |
* @return string $html HTML representation of the data.
|
1163 |
*/
|
1164 |
public function get_password_field( $setting, $value, $id, $label, $desc = false, $place = false, $classes = array(), $hidden = false ) {
|
@@ -1170,14 +1078,14 @@ class OMAPI_Menu {
|
|
1170 |
$hidden_class = $hidden ? 'omapi-hidden' : '';
|
1171 |
|
1172 |
// Build the HTML.
|
1173 |
-
$field
|
1174 |
-
$field
|
1175 |
$field .= '<input type="password" id="omapi-field-' . $setting . '" class="' . implode( ' ', (array) $classes ) . '" name="omapi[' . $id . '][' . $setting . ']" tabindex="' . $this->tabindex . '" value="' . esc_attr( $value ) . '"' . ( $place ? ' placeholder="' . $place . '"' : '' ) . ' />';
|
1176 |
-
|
1177 |
-
|
1178 |
-
|
1179 |
$field .= '</p>';
|
1180 |
-
$field
|
1181 |
|
1182 |
// Return the HTML.
|
1183 |
return apply_filters( 'optin_monster_api_password_field', $field, $setting, $value, $id, $label );
|
@@ -1190,7 +1098,7 @@ class OMAPI_Menu {
|
|
1190 |
* @since 1.8.0
|
1191 |
*
|
1192 |
* @param string $setting The name of the setting to be saved to the DB.
|
1193 |
-
* @param mixed
|
1194 |
* @param string $id The setting ID to target for name field.
|
1195 |
* @param string $label The label of the input field.
|
1196 |
* @param string $desc The description for the input field.
|
@@ -1203,17 +1111,15 @@ class OMAPI_Menu {
|
|
1203 |
$value = trim( $value );
|
1204 |
|
1205 |
// Build the HTML.
|
1206 |
-
$field
|
1207 |
-
|
1208 |
-
|
1209 |
-
|
1210 |
-
|
1211 |
-
|
1212 |
-
|
1213 |
-
|
1214 |
-
|
1215 |
-
|
1216 |
-
$field .= '</p>';
|
1217 |
$field .= '</div>';
|
1218 |
|
1219 |
// Return the HTML.
|
@@ -1227,9 +1133,9 @@ class OMAPI_Menu {
|
|
1227 |
* @since 1.0.0
|
1228 |
*
|
1229 |
* @param string $setting The name of the setting to be saved to the DB.
|
1230 |
-
* @param mixed
|
1231 |
* @param string $id The setting ID to target for name field.
|
1232 |
-
* @param array
|
1233 |
* @return string $html HTML representation of the data.
|
1234 |
*/
|
1235 |
public function get_hidden_field( $setting, $value, $id, $classes = array() ) {
|
@@ -1252,12 +1158,12 @@ class OMAPI_Menu {
|
|
1252 |
* @since 1.0.0
|
1253 |
*
|
1254 |
* @param string $setting The name of the setting to be saved to the DB.
|
1255 |
-
* @param mixed
|
1256 |
* @param string $id The setting ID to target for name field.
|
1257 |
* @param string $label The label of the input field.
|
1258 |
* @param string $desc The description for the input field.
|
1259 |
* @param string $place Placeholder text for the field.
|
1260 |
-
* @param array
|
1261 |
* @return string $html HTML representation of the data.
|
1262 |
*/
|
1263 |
public function get_textarea_field( $setting, $value, $id, $label, $desc = false, $place = false, $classes = array() ) {
|
@@ -1266,14 +1172,14 @@ class OMAPI_Menu {
|
|
1266 |
$this->tabindex++;
|
1267 |
|
1268 |
// Build the HTML.
|
1269 |
-
$field
|
1270 |
-
$field
|
1271 |
$field .= '<textarea id="omapi-field-' . $setting . '" class="' . implode( ' ', (array) $classes ) . '" name="omapi[' . $id . '][' . $setting . ']" rows="5" tabindex="' . $this->tabindex . '"' . ( $place ? ' placeholder="' . $place . '"' : '' ) . '>' . $value . '</textarea>';
|
1272 |
-
|
1273 |
-
|
1274 |
-
|
1275 |
$field .= '</p>';
|
1276 |
-
$field
|
1277 |
|
1278 |
// Return the HTML.
|
1279 |
return apply_filters( 'optin_monster_api_textarea_field', $field, $setting, $value, $id, $label );
|
@@ -1286,11 +1192,11 @@ class OMAPI_Menu {
|
|
1286 |
* @since 1.0.0
|
1287 |
*
|
1288 |
* @param string $setting The name of the setting to be saved to the DB.
|
1289 |
-
* @param mixed
|
1290 |
* @param string $id The setting ID to target for name field.
|
1291 |
* @param string $label The label of the input field.
|
1292 |
* @param string $desc The description for the input field.
|
1293 |
-
* @param array
|
1294 |
* @return string $html HTML representation of the data.
|
1295 |
*/
|
1296 |
public function get_checkbox_field( $setting, $value, $id, $label, $desc = false, $classes = array() ) {
|
@@ -1299,14 +1205,14 @@ class OMAPI_Menu {
|
|
1299 |
$this->tabindex++;
|
1300 |
|
1301 |
// Build the HTML.
|
1302 |
-
$field
|
1303 |
-
$field
|
1304 |
$field .= '<input type="checkbox" id="omapi-field-' . $setting . '" class="' . implode( ' ', (array) $classes ) . '" name="omapi[' . $id . '][' . $setting . ']" tabindex="' . $this->tabindex . '" value="' . esc_attr( $value ) . '"' . checked( $value, 1, false ) . ' /> ';
|
1305 |
-
|
1306 |
-
|
1307 |
-
|
1308 |
$field .= '</p>';
|
1309 |
-
$field
|
1310 |
|
1311 |
// Return the HTML.
|
1312 |
return apply_filters( 'optin_monster_api_checkbox_field', $field, $setting, $value, $id, $label );
|
@@ -1319,12 +1225,12 @@ class OMAPI_Menu {
|
|
1319 |
* @since 1.0.0
|
1320 |
*
|
1321 |
* @param string $setting The name of the setting to be saved to the DB.
|
1322 |
-
* @param mixed
|
1323 |
* @param string $id The setting ID to target for name field.
|
1324 |
-
* @param array
|
1325 |
* @param string $label The label of the input field.
|
1326 |
* @param string $desc The description for the input field.
|
1327 |
-
* @param array
|
1328 |
* @return string $html HTML representation of the data.
|
1329 |
*/
|
1330 |
public function get_dropdown_field( $setting, $value, $id, $data, $label, $desc = false, $classes = array() ) {
|
@@ -1333,18 +1239,18 @@ class OMAPI_Menu {
|
|
1333 |
$this->tabindex++;
|
1334 |
|
1335 |
// Build the HTML.
|
1336 |
-
$field
|
1337 |
-
$field
|
1338 |
$field .= '<select id="omapi-field-' . $setting . '" class="' . implode( ' ', (array) $classes ) . '" name="omapi[' . $id . '][' . $setting . ']" tabindex="' . $this->tabindex . '">';
|
1339 |
-
|
1340 |
-
|
1341 |
-
|
1342 |
$field .= '</select>';
|
1343 |
-
|
1344 |
-
|
1345 |
-
|
1346 |
$field .= '</p>';
|
1347 |
-
$field
|
1348 |
|
1349 |
// Return the HTML.
|
1350 |
return apply_filters( 'omapi_dropdown_field', $field, $setting, $value, $id, $label, $data );
|
@@ -1357,7 +1263,7 @@ class OMAPI_Menu {
|
|
1357 |
* @since 1.0.0
|
1358 |
*
|
1359 |
* @param string $setting The name of the setting to be saved to the DB.
|
1360 |
-
* @param mixed
|
1361 |
* @param string $label The label of the input field.
|
1362 |
* @param string $desc The description for the input field.
|
1363 |
* @return string $html HTML representation of the data.
|
@@ -1365,12 +1271,12 @@ class OMAPI_Menu {
|
|
1365 |
public function get_custom_field( $setting, $value, $label, $desc = false ) {
|
1366 |
|
1367 |
// Build the HTML.
|
1368 |
-
$field
|
1369 |
$field .= '<p class="omapi-field-wrap"><label for="omapi-field-' . $setting . '">' . $label . '</label></p>';
|
1370 |
$field .= $value;
|
1371 |
-
|
1372 |
-
|
1373 |
-
|
1374 |
$field .= '</div>';
|
1375 |
|
1376 |
// Return the HTML.
|
@@ -1389,15 +1295,15 @@ class OMAPI_Menu {
|
|
1389 |
* @return mixed|void
|
1390 |
*/
|
1391 |
public function get_toggle_start( $setting, $label, $desc ) {
|
1392 |
-
$field
|
1393 |
$field .= '<p class="omapi-field-wrap"><label for="omapi-field-' . $setting . '">' . $label . '</label></p>';
|
1394 |
-
|
1395 |
-
|
1396 |
-
|
1397 |
$field .= '</div>';
|
1398 |
$field .= '<div class="omapi-ui-toggle-content">';
|
1399 |
|
1400 |
-
return apply_filters( 'optin_monster_api_toggle_start_field', $field, $label, $desc
|
1401 |
}
|
1402 |
|
1403 |
/**
|
@@ -1406,7 +1312,7 @@ class OMAPI_Menu {
|
|
1406 |
* @since 1.1.5
|
1407 |
* @return string HTML end for toggle start
|
1408 |
*/
|
1409 |
-
public function get_toggle_end(){
|
1410 |
|
1411 |
$field = '</div>';
|
1412 |
|
@@ -1429,10 +1335,10 @@ class OMAPI_Menu {
|
|
1429 |
public function get_optin_type_note( $setting, $title, $text, $admin_page, $button ) {
|
1430 |
|
1431 |
$field = '<div class="omapi-field-box omapi-inline-notice omapi-field-box-' . $setting . ' omapi-clear">';
|
1432 |
-
if ($title ) {
|
1433 |
$field .= '<p class="omapi-notice-title">' . $title . '</p>';
|
1434 |
}
|
1435 |
-
if ($text) {
|
1436 |
$field .= '<p class="omapi-field-desc">' . $text . '</p>';
|
1437 |
}
|
1438 |
if ( $admin_page && $button ) {
|
@@ -1442,7 +1348,7 @@ class OMAPI_Menu {
|
|
1442 |
}
|
1443 |
$field .= '</div>';
|
1444 |
|
1445 |
-
return apply_filters('optin_monster_api_inline_note_display', $field, $title, $text, $admin_page, $button );
|
1446 |
}
|
1447 |
|
1448 |
/**
|
@@ -1454,25 +1360,25 @@ class OMAPI_Menu {
|
|
1454 |
*/
|
1455 |
public function get_support_links( $setting, $title ) {
|
1456 |
|
1457 |
-
$field ='';
|
1458 |
|
1459 |
$field .= '<div class="omapi-support-links ' . $setting . '"><h3>' . $title . '</h3><ul>';
|
1460 |
-
$field .= '<li><a target="_blank" rel="noopener" href="' . esc_url( 'https://optinmonster.com/docs/' ) . '">'. esc_html__( 'Documentation', 'optin-monster-api' ) . '</a></li>';
|
1461 |
-
$field .= '<li><a target="_blank" rel="noopener noreferrer" href="' . esc_url( 'https://wordpress.org/plugins/optinmonster/changelog/' ) . '">'. esc_html__( 'Changelog', 'optin-monster-api' ) . '</a></li>';
|
1462 |
-
$field .= '<li><a target="_blank" rel="noopener" href="' . esc_url( OPTINMONSTER_APP_URL . '/account/support/' ) . '">'. esc_html__( 'Create a Support Ticket', 'optin-monster-api' ) . '</a></li>';
|
1463 |
$field .= '</ul></div>';
|
1464 |
|
1465 |
-
return apply_filters( 'optin_monster_api_support_links', $field, $setting);
|
1466 |
}
|
1467 |
|
1468 |
public function get_plugin_report( $setting, $title ) {
|
1469 |
|
1470 |
-
$field ='';
|
1471 |
|
1472 |
$field .= '<div class="omapi-support-data ' . $setting . '"><h3>' . $title . '</h3>';
|
1473 |
-
$link
|
1474 |
-
$field .= '<p>' . sprintf( wp_kses( __( 'Download the report and attach to your <a href="%s">support ticket</a> to help speed up the process.', 'optin-monster-api' ), array(
|
1475 |
-
$field .= '<a href="
|
1476 |
$field .= '</div>';
|
1477 |
|
1478 |
return apply_filters( 'optin_monster_api_support_data', $field, $setting, $title );
|
@@ -1492,11 +1398,14 @@ class OMAPI_Menu {
|
|
1492 |
$output = '';
|
1493 |
|
1494 |
if ( ! OMAPI_WooCommerce::is_minimum_version() && OMAPI_WooCommerce::is_connected() ) {
|
|
|
1495 |
$output .= '<p>' . esc_html( sprintf( __( 'OptinMonster requires WooCommerce %s or above.', 'optin-monster-api' ), OMAPI_WooCommerce::MINIMUM_VERSION ) ) . '</p>'
|
1496 |
. '<p>' . esc_html_x( 'This site is currently running: ', 'the current version of WooCommerce: "WooCommerce x.y.z"', 'optin-monster-api' )
|
1497 |
. '<code>WooCommerce ' . esc_html( OMAPI_WooCommerce::version() ) . '</code>.</p>'
|
1498 |
. '<p>' . esc_html__( 'Please upgrade to the latest version of WooCommerce to enjoy deeper integration with OptinMonster.', 'optin-monster-api' ) . '</p>';
|
|
|
1499 |
} elseif ( OMAPI_WooCommerce::is_connected() ) {
|
|
|
1500 |
// Set some default key details.
|
1501 |
$defaults = array(
|
1502 |
'key_id' => '',
|
@@ -1519,9 +1428,11 @@ class OMAPI_Menu {
|
|
1519 |
$output .= '<p>' . $key_string . ' <a href="' . $key_url . '">View key</a></p>';
|
1520 |
$output .= '<p>' . esc_html__( 'You need to disconnect WooCommerce, below, to remove your keys from OptinMonster, or to change the consumer key/secret pair associated with OptinMonster.', 'optin-monster-api' ) . '</p>';
|
1521 |
$output .= $this->get_hidden_field( 'disconnect', '1', 'woocommerce' );
|
|
|
1522 |
} else {
|
1523 |
|
1524 |
-
$output .= '<p>' . sprintf( __( 'In order to integrate WooCommerce with the Display Rules in the campaign builder, OptinMonster needs <a href="%s" target="_blank">WooCommerce REST API credentials</a>. OptinMonster only needs Read access permissions to work.
|
|
|
1525 |
$output .= $this->get_text_field(
|
1526 |
'consumer_key',
|
1527 |
'',
|
@@ -1538,109 +1449,20 @@ class OMAPI_Menu {
|
|
1538 |
'',
|
1539 |
'cs_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
|
1540 |
);
|
|
|
|
|
1541 |
}
|
1542 |
|
1543 |
return $output;
|
1544 |
}
|
1545 |
|
1546 |
-
/**
|
1547 |
-
* Returns svg of OM Logo
|
1548 |
-
*
|
1549 |
-
* @return string The OptinMonster logo SVG data.
|
1550 |
-
*/
|
1551 |
-
public function get_svg_logo() {
|
1552 |
-
return '<svg class="omapi-svg-logo" viewBox="0 0 716 112" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="1.41">
|
1553 |
-
<path d="M527.78 91.4c0 1.1-.55 1.74-1.73 1.92-2.54.36-16 .36-18.35-.1-1.19-.26-1.82-1.08-1.82-2.45 0-3.27.36-13.99.36-17.26 0-2.54-.27-10.9-.27-13.45 0-5.54-2.36-8.27-7.18-8.27-2.9 0-8.9 3.36-8.9 6.63v32.72c0 1.36-.64 2.09-1.91 2.27-2.64.36-15.54.27-17.9-.09-1.28-.18-1.91-.91-1.91-2l.09-28.53c0-10.09-.82-18-2.36-23.72-.19-.82-.28-2 .81-2.27 2.55-.27 5.9-.73 10.18-1.37 6.45-1.27 10-1.9 10.81-1.9 1.18 0 .91 8.18 2.1 8.18.45 0 1.72-1.37 6.53-4.18 4.82-2.82 9-4.19 12.55-4.19 9.81 0 18.62 4.82 18.62 15.27 0 11.63 0 18.81.1 31.17 0 5.27.09 9.18.09 11.81l.09-.18zm40.35-47.24c0 .36-.28.9-.91 1.63-4.91-1.27-12.36.27-12.36 6.27 0 5.27 11.9 9.91 11.9 21.9 0 4-1.72 9.64-4.72 12.09-6 5.09-14.72 9.36-22.45 9.36-1.9 0-9.63-12.9-9.63-14.63 0-.37.27-.55.64-.64 2.81-.54 5.72-1.09 8.54-1.54 3.54-1.19 5.36-3 5.36-5.64 0-1.81-1-3.81-3.09-6.18a179.39 179.39 0 0 1-5.82-6.54C525.14 44.7 542.96 29.9 559.4 29.9c1.55 0 8.64 13 8.64 14.17l.09.1zm47.16 31.26c0 1.9-.91 9-.91 10.9 0 2.36-.27 2.45-2.36 3.64a35.86 35.86 0 0 1-17.36 4.27c-11.72 0-17.54-4.46-17.54-13.45 0-4.45.64-19.54.64-24.08 0-4.82-7-.82-7-4.27 0-1.1.27-4.91.27-5.9 0-1.46-.27-6.37-.27-7.73 0-.82 1.27-1.27 3.9-1.37 1.46 0 2.28-.45 2.37-1.18.27-1.54.36-4 .27-7.27l-.27-7.45c0-4.72.46-7 1.36-7 1.73 0 8 1.46 9.45 1.64 2.1.27 5.18.73 9.36 1.18 1 .1 1.55.45 1.55 1 0 2.73-.82 12-.82 14.72 0 2 .55 3 1.73 3 2.36 0 10.45-.36 12.9-.36.91 0 1.36.27 1.36.9 0 1.82-.63 6.55-.63 8.37l.09 8.45c0 .81-.55 1.27-1.73 1.27-4.18-.1-8.45-.18-12.63-.18-.64 0-.9.9-.9 2.63l.08 8.63c0 6.37.82 9.64 7.55 9.64 3.81 0 9.54-3.09 9.54-.1v.1zm37.53-18.9c0-8-9.9-13.18-15.36-6.28-1.54 2-2.27 4.28-2.27 7 0 1.1.54 1.64 1.73 1.64 3 0 7.63-.46 13.99-1.37 1.36-.18 2-.54 2-1h-.1zm21.26 3.72c0 4.1-1.36 6.45-4 7-.45.09-4.63.54-12.54 1.36-4.81.55-11.9 1.18-21.35 1.91 1.73 8.27 15.45 9.81 23.99 4.82 1.54-1 3.09-1.91 4.63-2.91 1.82.9 7.27 11.36 7.27 13.26 0 .28-.27.73-.9 1.37-4.91 5.27-12.55 7.9-23 7.9-19.08 0-32.35-12.08-32.35-31.26 0-18.35 11.63-32.08 30.35-32.08 7.73 0 14.36 2.82 19.81 8.55a28 28 0 0 1 8.18 20.17l-.09-.09zm41.07-4.82c0 3.1-3.45 2.37-6 2.19-3.72-.28-8.17-.28-10.17 1.45-1.18 1-1.82 3.18-1.82 6.36 0 2.91.19 12.9.19 15.81 0 1.91.45 8.54.45 10.45 0 1-.64 1.55-2 1.64-3.9.36-14.08.36-18.17-.1-1.37-.17-2-.81-2-2l.09-29.07c0-9.54-.91-17.36-2.64-23.45-.18-.81-.27-1.9.82-2.09 2.27-.27 5.45-.72 9.82-1.36 6.36-1.27 9.72-1.9 9.9-1.9 1.82 0 1.1 7.63 2.45 7.63.55 0 1.1-1.1 5-3.18 3.9-2.1 7.63-3.19 11.18-3.19 2.27 0 3.36.46 3.36 1.46 0 1.18-.1 2.82-.36 5-.64 5.9-.28 9.36-.28 14.35h.18zm-348.3 35.54c0 1.36-.64 2.18-1.82 2.36-2.45.36-15.72.36-18.17-.1-1.19-.26-1.82-1.26-1.82-3 0-3.17.36-13.53.36-16.62 0-7.09-.09-12.09-.27-15.09-.27-4.81-2.55-7.17-6.82-7.17-3.81 0-8.36 3.81-8.81 7.72-.18 1.73-.27 6.63-.27 14.9 0 3.18.36 14.09.36 17.36 0 1.36-.55 2-1.73 2h-18.35c-1.1 0-1.73-.82-1.73-2.46 0-3.27.36-13.9.36-17.17 0-2.54-.27-11.08-.27-13.63 0-14.9-15.8-7.27-15.8-1.9l.08 32.89c0 2.09-.18 2.18-2.27 2.36-4.36.36-11.72.36-17.27-.1-2-.17-2-.17-2-2.26l.1-29.08c0-6.63-.46-14.09-1.46-22.36-.18-1-.36-2.08.73-2.45 2-.82 9.09-1.18 10.45-1.45 1.36-.28 7.27-2.1 9.54-2.1 1.82 0 .9 8.55 1.73 8.46 2.45-.64 8.18-8.9 20.08-8.9 7.09 0 14.36 3.36 16.26 10.26 4.28-5.82 12.64-10.27 19.82-10.27 10.17 0 18.71 5 18.71 15.63 0 3.64-.36 15.72-.36 19.36 0 4.27.36 18.72.36 22.99l.28-.18zM41.44 63.15c0-6.09-4-12.09-10.63-12.09-9.91 0-14.09 13-7.91 20.54 6.18 7.54 18.54 3.36 18.54-8.45m66.33.54c0-11.72-12.81-16.26-18.72-8.45-4.9 6.54-3 20.72 8 20.72 7.09 0 10.72-4.09 10.72-12.27m22.45.1c0 16.99-10.9 30.35-28.35 30.35-6.73 0-15.09-4.64-14.82-4.64-.54 0-.81.64-.81 1.82 0 3.63.63 15 .63 18.63 0 1.27-.63 1.9-2 1.9-3.09 0-15.54.28-17.72-.27-1.18-.27-1.81-1-1.81-2.27l.09-46.7c0-9.46-.73-17.36-2.1-23.82-.18-.81-.27-1.9.64-2.27 3.27-1.27 14.82-3 18.45-3 3.73 0 2.36 6.27 3.54 6.27-.45 0 1.37-1.09 5.18-3.27 3.91-2.18 7.36-3.27 10.54-3.27 17.9 0 28.63 12.81 28.63 30.44l-.1.1zm46.34 11.44c0 2.64-.9 8.36-.9 10.9 0 2.2-.19 2.46-2.37 3.64a35.84 35.84 0 0 1-17.36 4.28c-11.72 0-17.53-4.46-17.53-13.45 0-4.64.63-19.45.63-24.08 0-4.91-7-.73-7-4.27 0-1.1.28-4.91.28-5.91 0-1.45-.27-6.36-.27-7.73 0-.81 1.27-1.27 3.9-1.36 1.46 0 2.27-.45 2.37-1.18.27-1.54.36-4 .27-7.27l-.27-7.45c0-4.73.45-7 1.36-7 2.18 0 7.18 1.37 9.45 1.64 2.09.27 5.18.72 9.36 1.18 1 .09 1.54.45 1.54 1 0 3.09-.81 11.63-.81 14.72 0 2 .54 3 1.72 3 2.36 0 10.45-.36 12.9-.36.91 0 1.37.27 1.37.9 0 1.82-.64 6.55-.64 8.36l.1 8.45c0 .82-.55 1.28-1.73 1.28-4.36-.1-8.27-.18-12.63-.18-.64 0-.91.9-.91 2.63l.09 8.63c0 6.36.9 9.64 7.54 9.64 4.27 0 9.54-3.19 9.54-.1v.1zm23.54-10.08c0 5 .36 21.35.36 26.35 0 .82-.54 1.36-1.54 1.55-2.82.45-15.82.54-18.63 0-.91-.19-1.46-.46-1.64-.82-.27-.55.27-24.9.27-27.08 0-11.45-.45-20.63-1.36-27.44-.36-3 .37-2.82 6.73-2.1 8.17.82 9.54-.27 15.8-.27 1.73 0 1.46 1.1 1.37 2.37-.9 7.9-1.36 16.99-1.36 27.44m1.54-45.07c0 7-4 10.54-11.9 10.54-12.54 0-15.36-12.54-8.27-18.27 7.45-6 20.17-1.9 20.17 7.73m65.07 71.15c0 1.09-.55 1.73-1.73 1.9-2.54.37-16 .37-18.36-.08-1.18-.28-1.81-1.1-1.81-2.46 0-3.27.36-14 .36-17.26 0-2.55-.27-10.9-.27-13.45 0-5.54-2.37-8.27-7.18-8.27-3.1 0-8.9 3.45-8.9 6.63v32.72c0 1.36-.64 2.09-1.92 2.27-3 .36-15.08.36-17.9-.1-1.27-.17-1.9-.9-1.9-2l.09-28.52c0-10.1-.82-18-2.37-23.72-.18-.91-.18-2 .82-2.27 2.55-.28 5.9-.73 10.18-1.37 6.45-1.27 10-1.9 10.81-1.9 1.18 0 .91 8.17 2.1 8.17-.46 0 1.72-1.36 6.53-4.18 4.82-2.81 9-4.18 12.55-4.18 9.81 0 18.62 4.82 18.62 15.27 0 11.63 0 18.81.1 31.17 0 5.27.09 9.18.09 11.81l.09-.18zM61.25 63.15c0 18.45-12.18 31.08-30.72 31.08C12.73 94.23 0 81.78 0 63.88c0-18.54 11.54-31.63 30.53-31.63 18.36 0 30.72 12.54 30.72 30.9" fill="#fff" fill-rule="nonzero"/>
|
1554 |
-
<g opacity=".15" transform="translate(-37.66 -251.39)">
|
1555 |
-
<clipPath id="a">
|
1556 |
-
<path d="M385.88 344.16h139.94v15.09H385.88z"/>
|
1557 |
-
</clipPath>
|
1558 |
-
<g clip-path="url(#a)">
|
1559 |
-
<path d="M455.85 344.16c38.62 0 69.97 3.36 69.97 7.54s-31.35 7.55-69.97 7.55-69.97-3.37-69.97-7.55 31.35-7.54 69.97-7.54" fill-rule="nonzero"/>
|
1560 |
-
</g>
|
1561 |
-
</g>
|
1562 |
-
<path d="M460.26 32.8c.91-.55 1.1-3.91 1.18-4.9.28-2.28 3.1-3.28 4.91-2.1 3.18 2.27 4.82 6.63 5.27 10.36.46 3.82.1 8.9-2.63 11.9-2.91 3.28-10.27 4.28-14.63 3.82-1.18-.09-2.28-.36-3.37-.54l-2.09-18.72 2.28.45c2.27.45 6.9.91 9-.27h.08z" fill="#996" fill-rule="nonzero"/>
|
1563 |
-
<path d="M467.35 29.16a7.6 7.6 0 0 0-1.9-1.9c-.74-.55-2.1-.1-2.2.81l-.08.64c1.36-.46 2.9-.1 4.18.45m2.54 12.82c.55-2.91.28-6.27-.72-9.18a6.36 6.36 0 0 0-2.82-2.18c-1.73-.73-2.64-.46-3.45.27-.1.73-.28 1.27-.46 1.82 4.73 1.54 6.73 6.08 7.46 9.36v-.1zm-13.8-6.73a24.9 24.9 0 0 1-5.1-.54l1.64 15.08c2.18.45 4.72.45 7 .18 1.63-5.81 0-12.63-3.64-14.8l.1.08zm5.08-1c-.63.36-1.55.64-2.63.82 3.27 3.45 4.27 9.72 3.08 14.63 2.73-.55 5-1.55 6.18-2.82.28-.27.46-.63.73-.9 0-5.19-2.09-10.73-7.09-11.82-.09.1-.09.1-.18.1h-.09z" fill="#c0c0a0" fill-rule="nonzero"/>
|
1564 |
-
<path d="M460.26 44.06c-2.18.55-4.54.64-6.27.46-.73-.1-1.36-.18-2-.36l-1.09-9.36c1.73.36 3.46.54 5.1.54 2.35 1.46 3.9 4.9 4.17 8.72h.1zm6.64-13.17l.27 1.63c.18 1.1.18 2.37.09 3.64a10.65 10.65 0 0 0-4.82-3.45c.18-.55.37-1.1.46-1.82.72-.64 1.72-1 3.45-.27l.55.27m-1.37-3.55c.28.46.46.91.64 1.37-1-.27-2-.37-3.1-.1l.1-.63c.09-.9 1.45-1.36 2.18-.82l.18.1v.08zm-4.36 6.91c-.64.36-1.55.64-2.63.82 2 2.09 3.08 5.18 3.45 8.45a7.12 7.12 0 0 0 3.18-2c.73-.73-1.18-6.81-3.82-7.36-.09.1-.09.1-.18.1" fill="#fbfac4" fill-rule="nonzero"/>
|
1565 |
-
<path d="M375.03 32.8c-.92-.55-1.1-3.91-1.19-4.9-.27-2.28-3.09-3.28-4.9-2.1-3.19 2.27-4.82 6.63-5.27 10.36-.46 3.82-.1 8.9 2.63 11.9 2.9 3.28 10.27 4.28 14.63 3.82 1.18-.09 2.27-.36 3.36-.54l2.1-18.72-2.28.45c-2.27.45-6.9.91-9-.27h-.08z" fill="#996" fill-rule="nonzero"/>
|
1566 |
-
<path d="M367.94 29.16a7.61 7.61 0 0 1 1.9-1.9c.73-.55 2.1-.1 2.19.81l.09.64c-1.37-.46-2.91-.1-4.18.45m-2.55 12.82c-.54-2.91-.27-6.27.73-9.18a6.36 6.36 0 0 1 2.82-2.18c1.72-.73 2.63-.46 3.45.27.09.73.27 1.27.45 1.82-4.72 1.54-6.72 6.08-7.45 9.36v-.1zm13.82-6.73c1.63 0 3.36-.18 5.08-.54l-1.63 15.08c-2.18.45-4.73.45-7 .18-1.63-5.81 0-12.63 3.64-14.8l-.1.08zm-5.1-1c.64.36 1.55.64 2.64.82-3.27 3.45-4.27 9.72-3.09 14.63-2.72-.55-5-1.55-6.18-2.82-.27-.27-.45-.63-.72-.9 0-5.19 2.09-10.73 7.08-11.82.1.1.1.1.19.1h.09z" fill="#c0c0a0" fill-rule="nonzero"/>
|
1567 |
-
<path d="M375.03 44.06c2.18.55 4.54.64 6.27.46.72-.1 1.36-.18 2-.36l1.08-9.36a24.9 24.9 0 0 1-5.08.54c-2.37 1.46-3.91 4.9-4.19 8.72h-.08zm-6.64-13.17l-.27 1.63c-.18 1.1-.18 2.37-.09 3.64a10.64 10.64 0 0 1 4.81-3.45c-.18-.55-.36-1.1-.45-1.82-.73-.64-1.72-1-3.45-.27l-.55.27m1.36-3.55c-.27.46-.45.91-.63 1.37 1-.27 2-.37 3.09-.1l-.1-.63c-.08-.9-1.44-1.36-2.17-.82l-.19.1v.08zm4.37 6.91c.63.36 1.54.64 2.63.82-2 2.09-3.09 5.18-3.45 8.45a7.12 7.12 0 0 1-3.18-2c-.73-.73 1.18-6.81 3.81-7.36.1.1.1.1.19.1" fill="#fbfac4" fill-rule="nonzero"/>
|
1568 |
-
<path d="M385.11 29.16c-3.18-.27-6.27.37-9.36.82l2.73-2.64a38.36 38.36 0 0 1 9.54-6.45c5-2.54 10.72-4.45 16.45-5-4-1.72-8.55-2.54-12.82-3.54 16.45-3.45 37.53-4.72 52.62 8.09 8.63 7.36 13.36 21 13.36 33.35 0 46.62-79.42 46.62-79.42 0a37.4 37.4 0 0 1 4.45-17.72c-1.09.27-2.09.64-3.18 1.09l-4.82 2 3.45-3.9a28.05 28.05 0 0 1 7.18-5.91l-.18-.19z" fill="#8ed41e" fill-rule="nonzero"/>
|
1569 |
-
<path d="M420.73 14.8c7.73.91 15.27 3.46 21.54 8.82 7.63 6.45 11.72 18.45 11.72 29.26 0 19.8-16.36 30.08-33.26 30.62V14.8z" fill="#70a91b" fill-rule="nonzero"/>
|
1570 |
-
<path d="M391.47 24.9c6-4 15.81-5.28 27.63-4.64-2.1-2.46-4-4-6.82-5.36 5.36-.19 9.63 1 20.27 4.63a51.33 51.33 0 0 0-30.99-6.63 37.93 37.93 0 0 1 10.81 5.09c-10.8-1.19-23.26 4-28.26 8.26 3.27-.36 6.18.28 9.27 1.64-4.36 1.54-7.18 2.9-9.9 5.54 4.72-2.36 8.45-4.36 14.44-5.63-2.36-.82-3.63-2.27-6.45-2.9" fill="#a1e141" fill-rule="nonzero"/>
|
1571 |
-
<path d="M417.82 13.9c10.91 0 19.72 8.54 19.72 19.17 0 10.54-8.8 19.17-19.72 19.17-10.9 0-19.71-8.54-19.71-19.17 0-10.54 8.81-19.17 19.71-19.17" fill="#70a91b" fill-rule="nonzero"/>
|
1572 |
-
<path d="M386.57 50.97c.63-1.18 60.42-1.63 61.6 0 2.1 2.73.92 5.36 0 7.63h-61.6c-.55-2.45-1.46-5.08 0-7.63" fill="#70a91b" fill-rule="nonzero"/>
|
1573 |
-
<path d="M387.38 52.7c.64-1.55 58.89-2.18 60.07 0 2 3.72.82 7.36 0 10.45h-60.07c-.54-3.37-1.36-6.9 0-10.45" fill="#4b7113" fill-rule="nonzero"/>
|
1574 |
-
<path d="M435.82 13.08c-.82-15.54-21.72-17.18-27.17-5 9.63-5.27 19.44-3.36 27.17 5" fill="#70a91b" fill-rule="nonzero"/>
|
1575 |
-
<path d="M424.19.17C418.1-.73 411.47 1.9 408.74 8c3.63-2 7.36-2.9 10.9-2.9.73-1.37 2.46-4 4.64-4.92h-.1z" fill="#85c51f" fill-rule="nonzero"/>
|
1576 |
-
<path d="M417.82 11.9c9.82 0 17.72 7.9 17.72 17.72 0 9.81-7.9 17.72-17.72 17.72-9.8 0-17.71-7.9-17.71-17.72 0-9.82 7.9-17.72 17.71-17.72" fill="#d3e8ef" fill-rule="nonzero"/>
|
1577 |
-
<path d="M406.65 16.44c5.9-4.9 14.17-4.9 18.35.18 4.18 5 2.73 13.09-3.18 18.09-5.9 4.9-14.17 4.9-18.35-.19-4.18-5-2.73-13.08 3.18-18.08" fill="#fff" fill-rule="nonzero"/>
|
1578 |
-
<path d="M418.28 23.62c6.9 0 12.45 5.18 12.45 11.63 0 6.45-5.55 11.63-12.45 11.63-6.9 0-12.45-5.18-12.45-11.63 0-6.45 5.54-11.63 12.45-11.63" fill="#0d82df" fill-rule="nonzero"/>
|
1579 |
-
<path d="M418.28 23.62c3.36 0 6.45 1.27 8.63 3.27a16.47 16.47 0 0 1-5.09 7.82c-4.9 4.08-11.45 4.72-15.9 2-.09-.46-.09-.91-.09-1.46 0-6.45 5.54-11.63 12.45-11.63" fill="#0399ed" fill-rule="nonzero"/>
|
1580 |
-
<path d="M418.28 27.8c4.36 0 8 3.36 8 7.45 0 4.1-3.55 7.45-8 7.45-4.36 0-8-3.36-8-7.45s3.55-7.45 8-7.45" fill="#232323" fill-rule="nonzero"/>
|
1581 |
-
<path d="M418.28 27.8a8.3 8.3 0 0 1 6.72 3.36 14.3 14.3 0 0 1-3.18 3.45 15.33 15.33 0 0 1-10.81 3.64c-.46-.9-.73-2-.73-3.09 0-4.09 3.55-7.45 8-7.45v.09z" fill="#323232" fill-rule="nonzero"/>
|
1582 |
-
<path d="M411.28 24.26c3.27 0 5.9 2.45 5.9 5.54s-2.63 5.54-5.9 5.54c-3.27 0-5.9-2.45-5.9-5.54s2.63-5.54 5.9-5.54" fill="#fff" fill-rule="nonzero"/>
|
1583 |
-
<path d="M376.48 57.06c27.44-4.09 54.98-3.73 82.42 0 2 14.36.9 27.99 0 41.7-27.44 1.1-54.98 1.28-82.42 0-1.64-13.9-1.82-27.8 0-41.7" fill="#9caeb3" fill-rule="nonzero"/>
|
1584 |
-
<path d="M384.38 95.95c22.27.82 44.44.73 66.7 0-8-4.54-15.99-8.9-24.99-11.36-2.9 1.37-6 2.46-9.08 3.37-.46.09-.46.09-.91 0a76.34 76.34 0 0 1-7.55-2.91 97.44 97.44 0 0 0-24.26 11l.1-.1zm-5.27-34.17c-1.18 11-1 22.09.19 33.08 8-5 16.53-9 25.53-11.81-10.36-5.45-17.63-13.27-25.72-21.27M454 59.6c-24.26-2.9-48.61-3.18-72.88 0 10 11.18 21 20.36 35.63 25.17C432.27 80.32 443 70.6 453.99 59.6m2.1 35.26c.72-11 1.45-21.99.26-32.98-8.17 8.09-16.9 15.8-27.08 21.17 9.46 2.81 18.27 7 26.9 11.81h-.09z" fill="#d3e8ef" fill-rule="nonzero"/>
|
1585 |
-
<path d="M384.38 95.95c10.73.37 21.45.55 32.26.55v-8.54c-.09 0-.18 0-.45-.1a75.27 75.27 0 0 1-7.54-2.9 97.5 97.5 0 0 0-24.27 11m-5.27-34.17c-1.18 11-1 22.08.19 33.07 8-5 16.53-9 25.53-11.81-10.36-5.45-17.63-13.27-25.72-21.27m37.53-4.45c-11.9 0-23.71.73-35.53 2.28 9.91 11.17 21 20.26 35.53 25.17V57.33z" fill="#fff" fill-rule="nonzero"/>
|
1586 |
-
<path d="M401.2 63.88c-.1.36-.28.72-.46 1.09a3.26 3.26 0 0 1-1 1.45c-1.09.82-2.45.55-3.63.09-2.64-1.1-4.45-3.73-5.55-6.27-1.27-2.91-1.36-5-.63-8.18 18.35-1 37.16-1.18 54.97-.09v.1h.28c.27 3.08 0 4.35-.73 6.9-.82 2.9-2.54 6.45-5.45 7.81-1.1.55-2.36.82-3.36.1-.46-.37-.82-.91-1.1-1.46-.63-1-.8-2.45-1-3.54-.36.72-.8 1.18-1.54 1.36a26.4 26.4 0 0 1-3.72.54c-1.18.1-2.45.19-3.73.19-1.9 0-4-.19-5.81-.73-.28 1.1-.73 2.09-1.82 2.45-1.18.36-2.64.55-3.9.64-1.37.09-2.73.18-4 .18-2.1 0-4.46-.18-6.37-1a2.45 2.45 0 0 1-1.45-1.54v-.1z" fill="#996" fill-rule="nonzero"/>
|
1587 |
-
<path d="M432 51.43c.73 4.09.55 9.36-.64 9.63-1.81.45-8.81 1.18-12.26-.1-.91-1.72-.91-6.08-.82-9.62 4.72 0 9.45 0 13.72.09m-29.35.81a82.01 82.01 0 0 0-1.9 6.73c-.37 1.64-.65 3.27-.92 4.45-.36 1.64-1.18 1.91-2.73 1.27-4-1.72-6.08-8.45-5.9-12.54 2.72-.18 6.81-.36 11.45-.54 4.45-.1 9.45-.18 14.45-.18.45 5 .45 11-.64 12.26-1.9.64-9.36 1.55-13-.09-1.63-.72-1-6.81-.9-11.26l.09-.1zm30.08-.81c.54 2.18 1.18 4.45 1.81 7.36.37 1.81.55 3.54.82 4.72.37 1.82 1.1 2.1 2.55 1.37 3.54-1.82 5.54-8.55 5.45-13-2.64-.18-6.36-.36-10.63-.45" fill="#c0c0a0" fill-rule="nonzero"/>
|
1588 |
-
<path d="M418.28 53.88c4.27 0 8.54 0 12.45.09.63 2.27.63 6.36-2.1 7.36-2.9.27-7.08.36-9.53-.54-.64-1.28-.82-4.1-.82-6.91m-15.72.27c3.9-.09 8.36-.18 12.81-.18.45 3.27 1.27 9.81-2.82 10.18-3 .27-6.72.27-9.08-.73-1.36-.64-1.18-5.18-1-9.18l.09-.09zm-11.18.55c1.91-.18 4.45-.28 7.45-.37.36 0 1.1 9 1.1 9-.37 1.64-1.19 1.9-2.73 1.27-3.19-1.36-5.18-5.9-5.73-9.81l-.09-.1zm43.98 8.81c.37 1.82 1.1 2.1 2.55 1.37 2.9-1.46 4.72-6.18 5.27-10.27a97.38 97.38 0 0 0-6.27-.37c-1.46 1.1-1.73 8.64-1.55 9.27" fill="#fbfac4" fill-rule="nonzero"/>
|
1589 |
-
<path d="M410.46 54.06c.19 3.55 0 7.09-.45 7.36-.9.55-4.27 1.27-5.9-.09-.64-.45-.55-3.9-.46-7.18 2.18-.09 4.45-.09 6.9-.18l-.09.1zm15.27-.09c.1 2.64-.09 5.09-.45 5.27-.82.45-4 1-5.64-.09-.54-.36-.54-2.82-.45-5.27h6.54v.09zm-28.71.45c-.1 1-.1 2.19-.1 3.37v3.63c0 1.36-.36 1.64-1.09 1-1.45-1.09-2.72-4.54-3.27-7.72 1.27-.1 2.82-.18 4.46-.28m45.07.1c-1.19-.1-2.55-.19-4.1-.19 0 1 .1 2.1.1 3.28v3.9c0 1.46.27 1.73 1 1.1 1.27-1.19 2.45-4.64 3-8.1" fill="#fff" fill-rule="nonzero"/>
|
1590 |
-
<path d="M381.93 96.68c-1 4.54-5.54 7.54-10.09 7.36-6.27-.27-15.99-7.18-15.8-14 .08-3.81 2.9-7.27 5.8-9.44 2.83-2.19 7.55-4.46 11.19-3.46 3.63 1 6.17 6 7.36 9.27 1.09 2.82 2.18 7.27 1.45 10.27h.1z" fill="#85c51f" fill-rule="nonzero"/>
|
1591 |
-
<path d="M380.39 96.22c.09-.54.18-1.09.18-1.72-1.18-5-4-10.72-7.18-11.63-4.9-1.46-14.81 5.09-14.27 11.81 2.73 4.18 8.55 7.63 12.72 7.81 3.82.19 7.73-2.36 8.55-6.18v-.09z" fill="#70a91b" fill-rule="nonzero"/>
|
1592 |
-
<path d="M375.84 91.14c1.27-2.55-.81-7-4-6.64-3.36.46-10.63 5.46-10.63 9.36 0 2.46 3.36 4.18 6.9 3.18 2.64-.72 6.73-3.81 7.73-5.9m2.82 6.36c.64-1.55-.27-4.27-2.09-4-1.9.36-6.45 3.63-6.27 5.45.09 1.46 2.63 2.73 4.63 2a7.69 7.69 0 0 0 3.73-3.45" fill="#5d8d17" fill-rule="nonzero"/>
|
1593 |
-
<path d="M370.84 79.32c.1 1.64-3.09 3.1-4.36 1.91-1.09-2.09-.81-4.63.1-5.18 1-.54 3.45.46 4.26 3.27M364.67 82.32c.36 1.82-2.1 3.36-3.28 2.55-1.54-1.55-2.09-4.27-1.36-4.91.73-.64 3.36.36 4.64 2.36M360.03 86.87c.55 1.18-.64 2.81-2 2.72-1.45-1.09-2.81-3.63-2.27-4.27.55-.72 3 0 4.27 1.55M383.3 69.96c.72-1.36-1.28-2.27-2.91-2.9-1.64-.55-2.46-.55-3.1.81-.72 1.37-1.08 3.46.64 4 1.64.55 4.73-.54 5.46-1.9h-.1z" fill="#2c440c" fill-rule="nonzero"/>
|
1594 |
-
<path d="M384.75 64.88c.18 1.54-2 2.36-3.82 2.72-1.72.37-2.45.18-2.63-1.36-.19-1.55.27-4 2.09-4.36 1.72-.37 4.18 1.45 4.36 3" fill="#2c440c" fill-rule="nonzero"/>
|
1595 |
-
<path d="M385.11 59.79c.19 1.45-2 2.18-3.81 2.54-1.73.36-2.46.18-2.64-1.36-.18-1.45.27-3.73 2-4.09 1.73-.36 4.18 1.36 4.36 2.82l.1.09zM370.84 56.42c.28 1.19 2.55.91 4.28.55 1.72-.45 2.36-.82 2-2-.28-1.18-1.37-2.81-3.1-2.36-1.72.45-3.45 2.63-3.18 3.9v-.09z" fill="#2c440c" fill-rule="nonzero"/>
|
1596 |
-
<path d="M369.3 70.87l.54 1.55-1.18-.91c-.54-.46-1-1.1-1.36-1.82.09.73.18 1.18.36 1.82-1.72-2.82-3.27-5.9-2.27-10 .91-3.72 4.64-5.45 7.27-6.18a13.9 13.9 0 0 1 5.09-.54c1 .09 2.73.36 3.45 1.27.73.91 1.1 2.82 1.27 4.09.28 2 .19 4.09-.08 6.09a13.1 13.1 0 0 1-1.73 5 5.98 5.98 0 0 1-2.64 2.36 6.42 6.42 0 0 1-3.9.36c-1.82-.36-3.46-1.45-4.91-3l.1-.09z" fill="#85c51f" fill-rule="nonzero"/>
|
1597 |
-
<path d="M380.3 57.33c1.09 1.28 1.63 6.64.36 10.54a7.22 7.22 0 0 1-6.45-1.63c.09.55.27.9.45 1.18-1.09-.45-2-1.81-2.63-3.36.08 1.27.27 1.82.45 2.55-1.36-.46-2.45-2-3.27-3.64-.73-1.45-.64-3.54.63-4.45 3.37-2.46 9.1-2.64 10.36-1.1l.1-.09z" fill="#a1e141" fill-rule="nonzero"/>
|
1598 |
-
<path d="M453.45 96.68c1 4.54 5.54 7.54 10.08 7.36 6.27-.27 16-7.18 15.81-14-.09-3.81-2.9-7.27-5.81-9.44-2.82-2.19-7.55-4.46-11.18-3.46s-6.18 6-7.36 9.27c-1.09 2.82-2.18 7.27-1.45 10.27h-.1z" fill="#85c51f" fill-rule="nonzero"/>
|
1599 |
-
<path d="M454.9 96.22c-.09-.54-.18-1.09-.18-1.72 1.18-5 4-10.72 7.18-11.63 4.9-1.46 14.8 5.09 14.26 11.81-2.72 4.18-8.54 7.63-12.72 7.81-3.82.19-7.72-2.36-8.54-6.18v-.09z" fill="#70a91b" fill-rule="nonzero"/>
|
1600 |
-
<path d="M459.53 91.14c-1.27-2.55.82-7 4-6.64 3.37.46 10.63 5.46 10.63 9.36 0 2.46-3.36 4.18-6.9 3.18-2.64-.72-6.73-3.81-7.73-5.9m-2.81 6.36c-.64-1.55.27-4.27 2.09-4 1.9.36 6.45 3.63 6.27 5.45-.1 1.46-2.64 2.73-4.64 2a7.68 7.68 0 0 1-3.72-3.45" fill="#5d8d17" fill-rule="nonzero"/>
|
1601 |
-
<path d="M464.44 79.32c-.09 1.64 3.1 3.1 4.36 1.91 1.1-2.09.82-4.63-.09-5.18-1-.54-3.45.46-4.27 3.27M470.62 82.32c-.36 1.82 2.1 3.36 3.27 2.55 1.55-1.55 2.1-4.27 1.37-4.91-.73-.64-3.37.36-4.64 2.36M475.26 86.87c-.55 1.18.63 2.81 2 2.72 1.45-1.09 2.81-3.63 2.27-4.27-.55-.72-3 0-4.27 1.55M452 69.96c-.74-1.36 1.26-2.27 2.9-2.9 1.64-.55 2.45-.55 3.09.81.73 1.37 1.1 3.46-.64 4-1.63.55-4.72-.54-5.45-1.9h.1z" fill="#2c440c" fill-rule="nonzero"/>
|
1602 |
-
<path d="M450.63 64.88c-.18 1.54 2 2.36 3.82 2.72 1.72.37 2.45.18 2.63-1.36.18-1.55-.27-4-2.09-4.36-1.73-.37-4.18 1.45-4.36 3" fill="#2c440c" fill-rule="nonzero"/>
|
1603 |
-
<path d="M450.18 59.79c-.19 1.45 2 2.18 3.81 2.54 1.73.36 2.45.18 2.63-1.36.19-1.45-.27-3.73-2-4.09-1.72-.36-4.17 1.36-4.36 2.82l-.08.09zM464.53 56.42c-.27 1.19-2.54.91-4.27.55-1.72-.45-2.36-.82-2-2 .28-1.18 1.36-2.81 3.09-2.36 1.73.45 3.45 2.63 3.18 3.9v-.09z" fill="#2c440c" fill-rule="nonzero"/>
|
1604 |
-
<path d="M465.99 70.87l-.55 1.55 1.18-.91c.55-.46 1-1.1 1.37-1.82a10.5 10.5 0 0 1-.37 1.82c1.73-2.82 3.28-5.9 2.28-10-.91-3.72-4.64-5.45-7.28-6.18a13.91 13.91 0 0 0-5.08-.54c-1 .09-2.73.36-3.46 1.27-.72.91-1.09 2.82-1.27 4.09-.27 2-.18 4.09.1 6.09.27 1.81.8 3.54 1.72 5a5.97 5.97 0 0 0 2.63 2.36c1.28.54 2.55.63 3.91.36 1.82-.36 3.45-1.45 4.91-3l-.1-.09z" fill="#85c51f" fill-rule="nonzero"/>
|
1605 |
-
<path d="M455 57.33c-1.1 1.28-1.65 6.64-.37 10.54a7.22 7.22 0 0 0 6.45-1.63c-.1.55-.27.9-.46 1.18 1.1-.45 2-1.81 2.64-3.36-.09 1.27-.27 1.82-.45 2.55 1.36-.46 2.45-2 3.27-3.64.72-1.45.63-3.54-.64-4.45-3.36-2.46-9.09-2.64-10.36-1.1l-.09-.09z" fill="#a1e141" fill-rule="nonzero"/>
|
1606 |
-
</svg>';
|
1607 |
-
}
|
1608 |
-
|
1609 |
-
/**
|
1610 |
-
* Return html of header banner
|
1611 |
-
*
|
1612 |
-
* @return string
|
1613 |
-
*/
|
1614 |
-
public function get_plugin_screen_banner() {
|
1615 |
-
|
1616 |
-
$screen = get_current_screen();
|
1617 |
-
|
1618 |
-
$html = '';
|
1619 |
-
|
1620 |
-
$html .= '<div class="omapi-static-banner">';
|
1621 |
-
$html .= '<div class="inner-container">';
|
1622 |
-
$html .= '<div class="logo-wrapper">' . $this->get_svg_logo() . '<span class="omapi-logo-version">' . sprintf( esc_html__( 'v%s', 'optin-monster-api' ), $this->base->version ) . '</span></div>';
|
1623 |
-
$html .= '<div class="static-menu"><ul>';
|
1624 |
-
$html .= '<li><a target="_blank" rel="noopener" href="' . esc_url_raw( 'https://optinmonster.com/docs/' ) . '">' . esc_html__( 'Need Help?', 'optin-monster-api' ) . '</a></li>';
|
1625 |
-
$html .= '<li><a href="' . esc_url_raw( 'https://optinmonster.com/contact-us/' ) . '" target="_blank" rel="noopener">' . esc_html__( 'Send Us Feedback', 'optin-monster-api' ) . '</a></li>';
|
1626 |
-
if( $screen->id === 'toplevel_page_optin-monster-api-settings' ) {
|
1627 |
-
$html .= '<li class="omapi-menu-button"><a id="omapi-create-new-optin-button" href="' . OPTINMONSTER_APP_URL . '/campaigns/new/" class="button button-secondary omapi-new-optin" title="' . esc_html__( 'Create New Campaign', 'optin-monster-api' ) . '" target="_blank" rel="noopener">' . esc_html__( 'Create New Campaign', 'optin-monster-api' ) . '</a></li>';
|
1628 |
-
}
|
1629 |
-
$html .= '</ul></div>';
|
1630 |
-
$html .= '</div>';
|
1631 |
-
$html .= '</div>';
|
1632 |
-
|
1633 |
-
return $html;
|
1634 |
-
|
1635 |
-
}
|
1636 |
-
|
1637 |
/**
|
1638 |
* Echo out plugin header banner
|
1639 |
*
|
1640 |
* @since 1.1.5.2
|
1641 |
*/
|
1642 |
public function output_plugin_screen_banner() {
|
1643 |
-
|
1644 |
}
|
1645 |
|
1646 |
/**
|
@@ -1683,10 +1505,14 @@ class OMAPI_Menu {
|
|
1683 |
$url = $this->get_affiliate_url( $omSasId );
|
1684 |
}
|
1685 |
|
1686 |
-
return apply_filters(
|
1687 |
-
'
|
1688 |
-
|
1689 |
-
|
|
|
|
|
|
|
|
|
1690 |
}
|
1691 |
|
1692 |
/**
|
@@ -1730,10 +1556,14 @@ class OMAPI_Menu {
|
|
1730 |
. '%2Ffree-trial%2F%3Fid%3D' . urlencode( trim( $omTrialId ) );
|
1731 |
}
|
1732 |
|
1733 |
-
return apply_filters(
|
1734 |
-
'
|
1735 |
-
|
1736 |
-
|
|
|
|
|
|
|
|
|
1737 |
}
|
1738 |
|
1739 |
/**
|
@@ -1741,7 +1571,7 @@ class OMAPI_Menu {
|
|
1741 |
*
|
1742 |
* @since 1.8.4
|
1743 |
*
|
1744 |
-
* @param mixed
|
1745 |
*
|
1746 |
* @return string The affilaite url.
|
1747 |
*/
|
@@ -1763,16 +1593,89 @@ class OMAPI_Menu {
|
|
1763 |
}
|
1764 |
|
1765 |
public function has_trial_link() {
|
1766 |
-
|
1767 |
$link = $this->get_trial_link();
|
|
|
1768 |
return strpos( $link, 'optinmonster.com/wp' ) === false;
|
|
|
1769 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1770 |
}
|
1771 |
|
1772 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1773 |
|
1774 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1775 |
|
|
|
1776 |
}
|
1777 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1778 |
}
|
65 |
*/
|
66 |
public $tabindex = 429;
|
67 |
|
68 |
+
/**
|
69 |
+
* The OMAPI_Pages object.
|
70 |
+
*
|
71 |
+
* @since 1.9.10
|
72 |
+
*
|
73 |
+
* @var OMAPI_Pages
|
74 |
+
*/
|
75 |
+
public $pages = null;
|
76 |
+
|
77 |
/**
|
78 |
* Panel slugs/names.
|
79 |
*
|
83 |
*/
|
84 |
public $panels = array();
|
85 |
|
86 |
+
/**
|
87 |
+
* Registered page hooks.
|
88 |
+
*
|
89 |
+
* @since 1.9.10
|
90 |
+
*
|
91 |
+
* @var array
|
92 |
+
*/
|
93 |
+
public $hooks = array();
|
94 |
+
|
95 |
/**
|
96 |
* The OM landing page url.
|
97 |
*
|
114 |
|
115 |
// Load actions and filters.
|
116 |
add_action( 'admin_menu', array( $this, 'menu' ) );
|
117 |
+
add_action( 'admin_menu', array( $this, 'after_menu_registration' ), 999 );
|
118 |
// Load helper body classes
|
119 |
add_filter( 'admin_body_class', array( $this, 'admin_body_classes' ) );
|
120 |
|
121 |
+
add_action( 'admin_notices', array( $this, 'maybe_output_notice' ), 2 );
|
122 |
+
add_action( 'all_admin_notices', array( $this, 'maybe_output_notice' ), 2 );
|
123 |
+
|
124 |
+
add_filter( 'plugin_action_links_' . plugin_basename( OMAPI_FILE ), array( $this, 'output_plugin_links' ) );
|
125 |
}
|
126 |
|
127 |
$this->panels = array(
|
152 |
* @since 1.0.0
|
153 |
*/
|
154 |
public function menu() {
|
155 |
+
$this->pages = new OMAPI_Pages();
|
156 |
+
|
157 |
+
$parent = $this->base->menu->parent_slug();
|
158 |
|
159 |
// Filter to change the menu position if there is any conflict with another menu on the same position.
|
160 |
$menu_position = apply_filters( 'optin_monster_api_menu_position', 26 );
|
161 |
|
162 |
+
$this->hooks[] = $this->hook = add_menu_page(
|
163 |
+
'OptinMonster',
|
164 |
+
'OptinMonster<span class="om-pulse"></span>',
|
165 |
+
apply_filters( 'optin_monster_api_menu_cap', 'manage_options', $parent ),
|
166 |
+
$parent,
|
167 |
+
array( $this, 'settings_page' ),
|
168 |
'none',
|
169 |
$menu_position
|
170 |
);
|
171 |
|
172 |
+
if ( $this->base->get_api_credentials() ) {
|
173 |
+
|
174 |
+
$title = isset( $this->panels[ $this->view ] )
|
175 |
+
? $this->panels[ $this->view ]
|
176 |
+
: __( 'Campaigns', 'optin-monster-api' );
|
177 |
+
|
178 |
+
// Just add a placeholder secondary page.
|
179 |
+
$this->hooks[] = add_submenu_page(
|
180 |
+
$parent, // parent slug
|
181 |
+
$title, // page title,
|
182 |
+
__( 'Campaigns', 'optin-monster-api' ),
|
183 |
+
apply_filters( 'optin_monster_api_menu_cap', 'manage_options', $parent ), // cap
|
184 |
+
$parent, // slug
|
185 |
+
array( $this, 'settings_page' )
|
186 |
+
);
|
187 |
+
|
188 |
+
$this->hooks = array_merge( $this->hooks, $this->pages->register_submenu_pages( $parent ) );
|
189 |
+
} else {
|
190 |
+
$this->pages->register_submenu_redirects( $parent );
|
191 |
+
}
|
192 |
|
193 |
// Load global icon font styles.
|
194 |
+
add_action( 'admin_head', array( $this, 'global_admin_styles' ) );
|
195 |
+
}
|
196 |
|
197 |
+
/**
|
198 |
+
* Handles enqueueing assets for registered pages, and ensuring about page is at bottom.
|
199 |
+
*
|
200 |
+
* @since 1.9.10
|
201 |
+
*
|
202 |
+
* @return void
|
203 |
+
*/
|
204 |
+
public function after_menu_registration() {
|
205 |
+
global $submenu;
|
206 |
+
$parent = $this->base->menu->parent_slug();
|
207 |
+
|
208 |
+
// Make sure the about page is still the last page.
|
209 |
+
if ( isset( $submenu[ $parent ] ) ) {
|
210 |
+
$after = array();
|
211 |
+
$at_end = array( 'optin-monster-about' );
|
212 |
+
foreach ( $submenu[ $parent ] as $key => $menu ) {
|
213 |
+
if ( isset( $menu[2] ) && in_array( $menu[2], $at_end ) ) {
|
214 |
+
$after[] = $menu;
|
215 |
+
unset( $submenu[ $parent ][ $key ] );
|
216 |
+
}
|
217 |
+
}
|
218 |
+
$submenu[ $parent ] = array_values( $submenu[ $parent ] );
|
219 |
+
foreach ( $after as $menu ) {
|
220 |
+
$submenu[ $parent ][] = $menu;
|
221 |
+
}
|
222 |
}
|
223 |
|
224 |
+
// Load settings page assets.
|
225 |
+
foreach ( $this->hooks as $hook ) {
|
226 |
+
if ( ! empty( $hook ) ) {
|
227 |
+
add_action( 'load-' . $hook, array( $this, 'assets' ) );
|
228 |
+
add_action( 'load-' . $hook, array( $this->pages, 'load_general_styles' ) );
|
229 |
+
}
|
230 |
+
}
|
231 |
}
|
232 |
|
233 |
/**
|
235 |
*
|
236 |
* @since 1.0.0
|
237 |
*/
|
238 |
+
public function global_admin_styles() {
|
239 |
$this->base->output_min_css( 'archie-css.php' );
|
240 |
|
241 |
+
// Note: Completed 2019.
|
242 |
+
if ( ! $this->is_om_page() && $this->should_show_notification_pulse() ) {
|
243 |
+
$this->base->output_min_css( 'notification-pulse-css.php' );
|
244 |
}
|
245 |
}
|
246 |
|
247 |
/**
|
248 |
+
* Should we show the OM menu item notification pulse.
|
249 |
+
*
|
250 |
+
* Disabled for now.
|
251 |
+
*
|
252 |
+
* @see https://github.com/awesomemotive/optin-monster-wp-api/pull/179
|
253 |
*
|
254 |
* @since 1.9.0
|
255 |
*
|
256 |
* @return bool
|
257 |
*/
|
258 |
+
public function should_show_notification_pulse() {
|
259 |
+
return false;
|
|
|
|
|
|
|
|
|
|
|
|
|
260 |
}
|
261 |
|
262 |
/**
|
263 |
+
* Outputs a notice, if allowed.
|
264 |
+
*
|
265 |
+
* @see https://github.com/awesomemotive/optin-monster-wp-api/pull/179
|
266 |
*
|
267 |
* @since 1.9.0
|
268 |
*/
|
269 |
+
public function maybe_output_notice() {
|
270 |
static $hooked = false;
|
271 |
if (
|
272 |
! $hooked
|
273 |
+
&& $this->should_show_notification_pulse()
|
274 |
&& $this->is_om_page()
|
275 |
) {
|
276 |
|
277 |
+
$url = '';
|
278 |
+
$this->base->output_min_css( 'notification-css.php' );
|
279 |
+
$this->base->output_view( 'notification.php', compact( 'url' ) );
|
|
|
|
|
|
|
|
|
280 |
add_action( 'admin_footer', array( $this, 'handle_closing_notice' ) );
|
281 |
}
|
282 |
$hooked = true;
|
283 |
}
|
284 |
|
285 |
/**
|
286 |
+
* Handles the notice-closing and setting the cookie.
|
287 |
+
*
|
288 |
+
* @see https://github.com/awesomemotive/optin-monster-wp-api/pull/179
|
289 |
*
|
290 |
* @since 1.9.0
|
291 |
*/
|
292 |
public function handle_closing_notice() {
|
293 |
+
$this->base->output_view( 'notification-close-js.php' );
|
294 |
+
}
|
295 |
+
|
296 |
+
/**
|
297 |
+
* Add pages to plugin action links in the Plugins table.
|
298 |
+
*
|
299 |
+
* @since 1.9.10
|
300 |
+
*
|
301 |
+
* @param array $links Default plugin action links.
|
302 |
+
*
|
303 |
+
* @return array $links Amended plugin action links.
|
304 |
+
*/
|
305 |
+
public function output_plugin_links( $links ) {
|
306 |
+
|
307 |
+
$new_links = $this->base->get_api_credentials()
|
308 |
+
? array(
|
309 |
+
sprintf( '<a href="%s">%s</a>', $this->get_dashboard_link(), __( 'Campaigns', 'optin-monster-api' ) ),
|
310 |
+
sprintf( '<a href="%s">%s</a>', $this->get_settings_link(), __( 'Settings', 'optin-monster-api' ) ),
|
311 |
+
sprintf( '<a href="%s">%s</a>', $this->admin_page_url( array( 'page' => 'optin-monster-templates' ) ), __( 'Create New Campaign', 'optin-monster-api' ) ),
|
312 |
+
)
|
313 |
+
: array(
|
314 |
+
sprintf( '<a href="%s">%s</a>', $this->get_dashboard_link(), __( 'Connect', 'optin-monster-api' ) ),
|
315 |
+
);
|
316 |
+
|
317 |
+
$links = array_merge( $new_links, $links );
|
318 |
+
|
319 |
+
return $links;
|
320 |
}
|
321 |
|
322 |
/**
|
324 |
*
|
325 |
* @since 1.3.4
|
326 |
*
|
327 |
+
* @param array $classes
|
328 |
*
|
329 |
* @return array
|
330 |
*/
|
354 |
|
355 |
if ( function_exists( 'get_current_screen' ) ) {
|
356 |
$screen = get_current_screen();
|
357 |
+
$page = $screen->id;
|
358 |
+
if ( false !== strpos( $page, 'toplevel_page_optin-monster-' ) ) {
|
359 |
return true;
|
360 |
}
|
361 |
|
362 |
+
if ( ! empty( $screen->parent_base ) && false !== strpos( $screen->parent_base, 'optin-monster-' ) ) {
|
363 |
return true;
|
364 |
}
|
|
|
365 |
} else {
|
366 |
$page = isset( $_GET['page'] ) ? $_GET['page'] : '';
|
367 |
}
|
375 |
* @since 1.0.0
|
376 |
*/
|
377 |
public function assets() {
|
|
|
378 |
add_action( 'admin_enqueue_scripts', array( $this, 'styles' ) );
|
379 |
add_action( 'admin_enqueue_scripts', array( $this, 'scripts' ) );
|
380 |
add_filter( 'admin_footer_text', array( $this, 'footer' ) );
|
389 |
* @since 1.0.0
|
390 |
*/
|
391 |
public function styles() {
|
392 |
+
$version = $this->base->asset_version();
|
393 |
|
394 |
+
wp_register_style( $this->base->plugin_slug . '-select2', $this->base->url . 'assets/css/select2.min.css', array(), $version );
|
395 |
wp_enqueue_style( $this->base->plugin_slug . '-select2' );
|
396 |
+
wp_register_style( $this->base->plugin_slug . '-settings', $this->base->url . 'assets/dist/css/settings.min.css', array(), $version );
|
397 |
wp_enqueue_style( $this->base->plugin_slug . '-settings' );
|
398 |
|
399 |
// Run a hook to load in custom styles.
|
409 |
public function scripts() {
|
410 |
global $wpdb;
|
411 |
|
412 |
+
$version = $this->base->asset_version();
|
413 |
+
|
414 |
// Posts query.
|
415 |
$postTypes = array_map( 'esc_sql', get_post_types( array( 'public' => true ) ) );
|
416 |
$postTypes = implode( "','", $postTypes );
|
417 |
|
418 |
+
$sql = "
|
419 |
SELECT ID AS `id`, post_title AS `text`
|
420 |
FROM $wpdb->posts
|
421 |
WHERE post_type IN ( '{$postTypes}' )
|
425 |
$posts = $wpdb->get_results( $sql, ARRAY_A );
|
426 |
|
427 |
// Taxonomies query.
|
428 |
+
$sql = "
|
429 |
SELECT terms.term_id AS 'id', terms.name AS 'text'
|
430 |
FROM {$wpdb->term_taxonomy} tax
|
431 |
LEFT JOIN {$wpdb->terms} terms ON terms.term_id = tax.term_id
|
434 |
";
|
435 |
$tags = $wpdb->get_results( $sql, ARRAY_A );
|
436 |
|
437 |
+
wp_register_script( $this->base->plugin_slug . '-select2', $this->base->url . 'assets/js/select2.min.js', array( 'jquery' ), $version, true );
|
438 |
wp_enqueue_script( $this->base->plugin_slug . '-select2' );
|
439 |
+
wp_register_script( $this->base->plugin_slug . '-connect', $this->base->url . 'assets/dist/js/connect.min.js', array( 'jquery' ), $version, true );
|
440 |
+
wp_register_script(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
441 |
$this->base->plugin_slug . '-settings',
|
442 |
+
$this->base->url . 'assets/dist/js/settings.min.js',
|
443 |
array(
|
444 |
+
'jquery',
|
445 |
+
'jquery-ui-core',
|
446 |
+
'jquery-ui-datepicker',
|
447 |
+
'underscore',
|
448 |
+
$this->base->plugin_slug . '-select2',
|
449 |
+
$this->base->plugin_slug . '-connect',
|
450 |
+
),
|
451 |
+
$version,
|
452 |
+
true
|
453 |
+
);
|
454 |
+
|
455 |
+
wp_localize_script(
|
456 |
+
$this->base->plugin_slug . '-connect',
|
457 |
+
'OMAPI',
|
458 |
+
array(
|
459 |
+
'posts' => $posts,
|
460 |
+
'tags' => $tags,
|
461 |
+
'app_url' => trailingslashit( OPTINMONSTER_APP_URL ),
|
462 |
+
'blogname' => esc_attr( get_option( 'blogname' ) ),
|
463 |
+
'root' => esc_url_raw( rest_url() ),
|
464 |
+
'nonce' => wp_create_nonce( 'wp_rest' ),
|
465 |
+
'confirm' => __( 'Are you sure you want to reset these settings?', 'optin-monster-api' ),
|
466 |
)
|
467 |
);
|
468 |
+
wp_enqueue_script( $this->base->plugin_slug . '-settings' );
|
469 |
+
wp_register_script( $this->base->plugin_slug . '-clipboard', $this->base->url . 'assets/js/clipboard.min.js', array( $this->base->plugin_slug . '-settings' ), $version, true );
|
470 |
+
wp_enqueue_script( $this->base->plugin_slug . '-clipboard' );
|
471 |
+
wp_register_script( $this->base->plugin_slug . '-tooltip', $this->base->url . 'assets/js/tooltip.min.js', array( $this->base->plugin_slug . '-settings' ), $version, true );
|
472 |
+
wp_enqueue_script( $this->base->plugin_slug . '-tooltip' );
|
473 |
+
wp_register_script( $this->base->plugin_slug . '-jspdf', $this->base->url . 'assets/js/jspdf.min.js', array( $this->base->plugin_slug . '-settings' ), $version, true );
|
474 |
+
wp_enqueue_script( $this->base->plugin_slug . '-jspdf' );
|
475 |
|
476 |
// Run a hook to load in custom styles.
|
477 |
do_action( 'optin_monster_api_admin_scripts', $this->view );
|
483 |
*
|
484 |
* @since 1.1.5.9
|
485 |
*/
|
486 |
+
public function fix_plugin_js_conflicts() {
|
487 |
+
if ( $this->is_om_page() ) {
|
|
|
|
|
488 |
|
489 |
+
// Dequeue scripts that might cause our settings not to work properly.
|
490 |
+
wp_dequeue_script( 'optimizely_config' );
|
|
|
491 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
492 |
}
|
493 |
|
494 |
/**
|
502 |
public function footer( $text ) {
|
503 |
|
504 |
$url = 'https://wordpress.org/support/plugin/optinmonster/reviews?filter=5#new-post';
|
505 |
+
$text = sprintf( __( 'Please rate <strong>OptinMonster</strong> <a href="%1$s" target="_blank" rel="noopener">★★★★★</a> on <a href="%2$s" target="_blank" rel="noopener noreferrer">WordPress.org</a> to help us spread the word. Thank you from the OptinMonster team!', 'optin-monster-api' ), $url, $url );
|
506 |
return $text;
|
507 |
|
508 |
}
|
512 |
*
|
513 |
* @since 1.0.0
|
514 |
*/
|
515 |
+
public function settings_page() {
|
516 |
+
$first = true;
|
517 |
|
518 |
?>
|
|
|
519 |
<div class="wrap omapi-page">
|
520 |
<h2></h2>
|
521 |
<div class="omapi-ui">
|
522 |
<div class="omapi-tabs">
|
523 |
<ul class="omapi-panels">
|
524 |
+
<?php foreach ( $this->get_panels() as $id => $panel ) :
|
525 |
+
$first = $first ? ' omapi-panel-first' : '';
|
|
|
526 |
$active = $id == $this->view ? ' omapi-panel-active' : '';
|
527 |
?>
|
528 |
+
<li class="omapi-panel omapi-panel-<?php echo sanitize_html_class( $id ); ?><?php echo $first . $active; ?>"><a href="<?php echo esc_url_raw( $this->get_settings_link( $id ) ); ?>" class="omapi-panel-link" data-panel="<?php echo $id; ?>" data-panel-title="<?php echo $panel; ?>"><?php echo $panel; ?></a></li>
|
529 |
+
<?php $first = false; endforeach; ?>
|
530 |
</ul>
|
531 |
</div>
|
532 |
<div class="omapi-tabs-content">
|
533 |
<?php
|
534 |
+
foreach ( $this->get_panels() as $id => $panel ) :
|
535 |
$active = $id == $this->view ? ' omapi-content-active' : '';
|
536 |
?>
|
537 |
<div class="omapi-content omapi-content-<?php echo sanitize_html_class( $id ); ?><?php echo $active; ?>">
|
538 |
<?php
|
539 |
+
do_action( 'optin_monster_api_content_before', $id, $panel, $this, $active );
|
540 |
+
do_action( 'optin_monster_api_content_' . $id, $panel, $this, $active );
|
541 |
+
do_action( 'optin_monster_api_content_after', $id, $panel, $this, $active );
|
542 |
+
?>
|
543 |
</div>
|
544 |
<?php endforeach; ?>
|
545 |
</div>
|
572 |
}
|
573 |
|
574 |
// Set default panels.
|
575 |
+
$panels['api'] = $this->panels['api'];
|
576 |
|
577 |
// Set the WooCommerce panel.
|
578 |
if ( $creds && ( $is_minimum_woo || OMAPI_WooCommerce::is_connected() ) && $can_manage_woo ) {
|
579 |
+
$panels['woocommerce'] = $this->panels['woocommerce'];
|
580 |
}
|
581 |
|
582 |
// Set the Support panel
|
606 |
$ret = '';
|
607 |
$optin_id = isset( $_GET['optin_monster_api_id'] ) ? absint( $_GET['optin_monster_api_id'] ) : 0;
|
608 |
$value = 'optins' == $id ? get_post_meta( $optin_id, '_omapi_' . $setting, true ) : $this->base->get_option( $id, $setting );
|
609 |
+
$optin = get_post( $optin_id );
|
610 |
|
611 |
// Load the type of setting UI based on the option.
|
612 |
switch ( $id ) {
|
613 |
+
case 'api':
|
614 |
switch ( $setting ) {
|
615 |
+
case 'user':
|
616 |
$ret = $this->get_password_field( $setting, $value, $id, esc_html__( 'Legacy API Username', 'optin-monster-api' ), esc_html__( 'The Legacy API Username found in your OptinMonster Account API area.', 'optin-monster-api' ), esc_html__( 'Enter your Legacy API Username here...', 'optin-monster-api' ) );
|
617 |
+
break 2;
|
618 |
|
619 |
+
case 'key':
|
620 |
$ret = $this->get_password_field( $setting, $value, $id, esc_html__( 'Legacy API Key', 'optin-monster-api' ), esc_html__( 'The Legacy API Key found in your OptinMonster Account API area.', 'optin-monster-api' ), esc_html__( 'Enter your Legacy API Key here...', 'optin-monster-api' ) );
|
621 |
+
break 2;
|
622 |
|
623 |
+
case 'apikey':
|
624 |
+
$ret = $this->get_api_field( $setting, $value, 'omapiAuthorizeButton', esc_html__( 'Authorize OptinMonster', 'optin-monster-api' ), sprintf( esc_html__( 'Click to connect your OptinMonster Account, or %1$s click here to enter an API Key Manually.%2$s', 'optin-monster-api' ), '<a href="#" id="omapiShowApiKey">', '</a>' ) );
|
625 |
$ret .= $this->get_password_field( $setting, $value, $id, esc_html__( 'API Key', 'optin-monster-api' ), esc_html__( 'A single API Key found in your OptinMonster Account API area.', 'optin-monster-api' ), esc_html__( 'Enter your API Key here...', 'optin-monster-api' ), array(), true );
|
626 |
add_filter( 'omapi_hide_submit_buttom', '__return_true' );
|
627 |
+
break 2;
|
628 |
|
629 |
+
case 'omwpdebug':
|
630 |
$ret = $this->get_checkbox_field( $setting, $value, $id, esc_html__( 'Debugging Rules', 'optin-monster-api' ), __( 'Allow logged-out/non-admin debugging of plugin rules with the <code>omwpdebug</code> query variable?', 'optin-monster-api' ) );
|
631 |
+
break 2;
|
632 |
default:
|
633 |
+
break 2;
|
634 |
}
|
635 |
+
break;
|
636 |
|
637 |
+
case 'settings':
|
638 |
switch ( $setting ) {
|
639 |
+
case 'cookies':
|
640 |
$ret = $this->get_checkbox_field( $setting, $value, $id, esc_html__( 'Clear local cookies on campaign update?', 'optin-monster-api' ), esc_html__( 'If checked, local cookies will be cleared for all campaigns after campaign settings are adjusted and saved.', 'optin-monster-api' ) );
|
641 |
+
break 2;
|
642 |
default:
|
643 |
+
break 2;
|
644 |
}
|
645 |
+
break;
|
646 |
|
647 |
+
case 'woocommerce':
|
648 |
switch ( $setting ) {
|
649 |
+
case 'settings':
|
650 |
$ret = $this->get_woocommerce();
|
651 |
+
break 2;
|
652 |
default:
|
653 |
+
break 2;
|
654 |
}
|
655 |
+
break;
|
656 |
|
657 |
+
case 'support':
|
658 |
switch ( $setting ) {
|
659 |
+
case 'video':
|
660 |
$ret = '<div class="omapi-half-column"><div class="omapi-video-container"><iframe width="640" height="360" src="https://www.youtube.com/embed/tUoJcp5Z9H0?rel=0&showinfo=0" frameborder="0" allowfullscreen></iframe></div></div>';
|
661 |
break 2;
|
662 |
|
663 |
+
case 'links':
|
664 |
$ret = $this->get_support_links( $setting, esc_html__( 'Helpful Links', 'optin-monster-api' ) );
|
665 |
break 2;
|
666 |
|
668 |
$ret = $this->get_plugin_report( $setting, esc_html__( 'Server / Plugin Report', 'optin-monster-api' ) );
|
669 |
break 2;
|
670 |
default:
|
671 |
+
break 2;
|
672 |
}
|
673 |
break;
|
674 |
|
675 |
+
case 'toggle':
|
676 |
switch ( $setting ) {
|
677 |
+
case 'advanced-start':
|
678 |
$ret = $this->get_toggle_start( $setting, esc_html__( 'Advanced Settings', 'optin-monster-api' ), esc_html__( 'More specific settings available for campaign visibility.', 'optin-monster-api' ) );
|
679 |
+
break 2;
|
680 |
+
case 'advanced-end':
|
681 |
$ret = $this->get_toggle_end();
|
682 |
+
break 2;
|
683 |
+
case 'woocommerce-start':
|
684 |
$ret = $this->get_toggle_start( $setting, esc_html__( 'WooCommerce Settings', 'optin-monster-api' ), esc_html__( 'More specific settings available for WooCommerce integration.', 'optin-monster-api' ) );
|
685 |
break 2;
|
686 |
+
case 'woocommerce-end':
|
687 |
$ret = $this->get_toggle_end();
|
688 |
break 2;
|
689 |
default:
|
690 |
+
break 2;
|
691 |
}
|
692 |
+
break;
|
693 |
|
694 |
+
case 'optins':
|
695 |
switch ( $setting ) {
|
696 |
+
case 'enabled':
|
697 |
$ret = $this->get_checkbox_field( $setting, $value, $id, esc_html__( 'Enable campaign on site?', 'optin-monster-api' ), esc_html__( 'The campaign will not be displayed on this site unless this setting is checked.', 'optin-monster-api' ) );
|
698 |
+
break 2;
|
699 |
|
700 |
+
case 'automatic':
|
701 |
$ret = $this->get_checkbox_field( $setting, $value, $id, esc_html__( 'Display the campaign automatically after blog posts', 'optin-monster-api' ), sprintf( __( 'If no advanced settings are selected below, the campaign will display after every post. You can turn this off and add it manually to your posts by <a href="%s" target="_blank" rel="noopener">clicking here and viewing the tutorial.</a>', 'optin-monster-api' ), 'https://optinmonster.com/docs/how-to-manually-add-an-after-post-or-inline-optin/' ), array( 'omapi-after-post-auto-select' ) );
|
702 |
+
break 2;
|
703 |
+
case 'automatic_shortcode':
|
704 |
+
$full_shortcode = '[optin-monster slug="' . $optin->post_name . '"]';
|
705 |
+
$ret = $this->get_text_field(
|
706 |
$setting,
|
707 |
$full_shortcode,
|
708 |
$id,
|
712 |
array(),
|
713 |
true
|
714 |
);
|
715 |
+
break 2;
|
716 |
|
717 |
+
case 'users':
|
718 |
$ret = $this->get_dropdown_field( $setting, $value, $id, $this->get_user_output(), esc_html__( 'Who should see this campaign?', 'optin-monster-api' ), sprintf( __( 'Determines who should be able to view this campaign. Want to hide for newsletter subscribers? <a href="%s" target="_blank" rel="noopener">Click here to learn how.</a>', 'optin-monster-api' ), 'https://optinmonster.com/docs/how-to-hide-optinmonster-from-existing-newsletter-subscribers/' ) );
|
719 |
+
break 2;
|
720 |
|
721 |
+
case 'never':
|
722 |
$val = is_array( $value ) ? implode( ',', $value ) : $value;
|
723 |
$ret = $this->get_custom_field( $setting, '<input type="hidden" value="' . esc_attr( $val ) . '" id="omapi-field-' . $setting . '" class="omapi-select" name="omapi[' . $id . '][' . $setting . ']" data-placeholder="' . esc_attr__( 'Type to search and select post(s)...', 'optin-monster-api' ) . '">', esc_html__( 'Never load campaign on:', 'optin-monster-api' ), esc_html__( 'Never loads the campaign on the selected posts and/or pages. Does not disable automatic Global output.', 'optin-monster-api' ) );
|
724 |
+
break 2;
|
725 |
|
726 |
+
case 'only':
|
727 |
$val = is_array( $value ) ? implode( ',', $value ) : $value;
|
728 |
$ret = $this->get_custom_field( $setting, '<input type="hidden" value="' . esc_attr( $val ) . '" id="omapi-field-' . $setting . '" class="omapi-select" name="omapi[' . $id . '][' . $setting . ']" data-placeholder="' . esc_attr__( 'Type to search and select post(s)...', 'optin-monster-api' ) . '">', esc_html__( 'Load campaign specifically on:', 'optin-monster-api' ), esc_html__( 'Loads the campaign on the selected posts and/or pages.', 'optin-monster-api' ) );
|
729 |
+
break 2;
|
730 |
|
731 |
+
case 'categories':
|
732 |
$categories = get_categories();
|
733 |
if ( $categories ) {
|
734 |
ob_start();
|
736 |
$cats = ob_get_clean();
|
737 |
$ret = $this->get_custom_field( 'categories', $cats, esc_html__( 'Load campaign on post categories:', 'optin-monster-api' ) );
|
738 |
}
|
739 |
+
break;
|
740 |
|
741 |
+
case 'taxonomies':
|
742 |
// Attempt to load post tags.
|
743 |
$html = '';
|
744 |
$tags = get_taxonomy( 'post_tag' );
|
752 |
}
|
753 |
|
754 |
// Possibly load taxonomies setting if they exist.
|
755 |
+
$taxonomies = get_taxonomies(
|
756 |
+
array(
|
757 |
+
'public' => true,
|
758 |
+
'_builtin' => false,
|
759 |
+
)
|
760 |
+
);
|
761 |
$taxonomies['post_format'] = 'post_format';
|
762 |
$data = array();
|
763 |
|
764 |
+
if ( $this->base->is_woocommerce_active() ) {
|
765 |
+
unset( $taxonomies['product_cat'] );
|
766 |
+
unset( $taxonomies['product_tag'] );
|
767 |
+
}
|
768 |
+
|
769 |
// Allow returned taxonmies to be filtered before creating UI.
|
770 |
+
$taxonomies = apply_filters( 'optin_monster_api_setting_ui_taxonomies', $taxonomies );
|
771 |
|
772 |
if ( $taxonomies ) {
|
773 |
foreach ( $taxonomies as $taxonomy ) {
|
779 |
$tax = get_taxonomy( $taxonomy );
|
780 |
$args = array(
|
781 |
'descendants_and_self' => 0,
|
782 |
+
'selected_cats' => (array) $display,
|
783 |
+
'popular_cats' => false,
|
784 |
+
'walker' => null,
|
785 |
+
'taxonomy' => $taxonomy,
|
786 |
+
'checked_ontop' => true,
|
787 |
);
|
788 |
wp_terms_checklist( 0, $args );
|
789 |
$output = ob_get_clean();
|
803 |
|
804 |
// Return the data.
|
805 |
$ret = $html;
|
806 |
+
break;
|
807 |
|
808 |
+
case 'show':
|
809 |
$ret = $this->get_custom_field( 'show', $this->get_show_fields( $value ), esc_html__( 'Load campaign on post types and archives:', 'optin-monster-api' ) );
|
810 |
+
break;
|
811 |
|
812 |
+
case 'mailpoet':
|
813 |
$ret = $this->get_checkbox_field( $setting, $value, $id, esc_html__( 'Save lead to MailPoet?', 'optin-monster-api' ), esc_html__( 'If checked, successful campaign leads will be saved to MailPoet.', 'optin-monster-api' ) );
|
814 |
+
break 2;
|
815 |
|
816 |
+
case 'mailpoet_list':
|
817 |
+
$ret = $this->get_dropdown_field( $setting, $value, $id, $this->base->mailpoet->get_lists(), esc_html__( 'Add lead to this MailPoet list:', 'optin-monster-api' ), esc_html__( 'All successful leads for the campaign will be added to this particular MailPoet list.', 'optin-monster-api' ) );
|
818 |
+
break 2;
|
819 |
|
820 |
case 'mailpoet_use_phone':
|
821 |
$phone_field = get_post_meta( $optin_id, '_omapi_mailpoet_phone_field', true );
|
822 |
|
823 |
$ret = $this->get_checkbox_field( $setting, ! empty( $phone_field ), $id, esc_html__( 'Save phone number to MailPoet?', 'optin-monster-api' ), esc_html__( 'If checked, Phone number will be saved in Mailpoet.', 'optin-monster-api' ) );
|
824 |
+
break 2;
|
825 |
|
826 |
+
case 'mailpoet_phone_field':
|
827 |
+
$ret .= $this->get_dropdown_field( $setting, $value, $id, $this->base->mailpoet->get_custom_fields(), esc_html__( 'Select the custom field for phone:', 'optin-monster-api' ), esc_html__( 'If you have a custom field for phone numbers, select the field here.', 'optin-monster-api' ) );
|
828 |
+
break 2;
|
829 |
|
830 |
// Start WooCommerce settings.
|
831 |
+
case 'show_on_woocommerce':
|
832 |
$ret = $this->get_checkbox_field( $setting, $value, $id, esc_html__( 'Show on all WooCommerce pages', 'optin-monster-api' ), esc_html__( 'The campaign will show on any page where WooCommerce templates are used.', 'optin-monster-api' ) );
|
833 |
break 2;
|
834 |
|
835 |
+
case 'is_wc_shop':
|
836 |
$ret = $this->get_checkbox_field( $setting, $value, $id, esc_html__( 'Show on WooCommerce shop', 'optin-monster-api' ), esc_html__( 'The campaign will show on the product archive page (shop).', 'optin-monster-api' ) );
|
837 |
break 2;
|
838 |
|
839 |
+
case 'is_wc_product':
|
840 |
$ret = $this->get_checkbox_field( $setting, $value, $id, esc_html__( 'Show on WooCommerce products', 'optin-monster-api' ), esc_html__( 'The campaign will show on any single product.', 'optin-monster-api' ) );
|
841 |
break 2;
|
842 |
|
843 |
+
case 'is_wc_cart':
|
844 |
$ret = $this->get_checkbox_field( $setting, $value, $id, esc_html__( 'Show on WooCommerce Cart', 'optin-monster-api' ), esc_html__( 'The campaign will show on the cart page.', 'optin-monster-api' ) );
|
845 |
break 2;
|
846 |
|
847 |
+
case 'is_wc_checkout':
|
848 |
$ret = $this->get_checkbox_field( $setting, $value, $id, esc_html__( 'Show on WooCommerce Checkout', 'optin-monster-api' ), esc_html__( 'The campaign will show on the checkout page.', 'optin-monster-api' ) );
|
849 |
break 2;
|
850 |
|
851 |
+
case 'is_wc_account':
|
852 |
$ret = $this->get_checkbox_field( $setting, $value, $id, esc_html__( 'Show on WooCommerce Customer Account', 'optin-monster-api' ), esc_html__( 'The campaign will show on the WooCommerce customer account pages.', 'optin-monster-api' ) );
|
853 |
break 2;
|
854 |
|
855 |
+
case 'is_wc_endpoint':
|
856 |
$ret = $this->get_checkbox_field( $setting, $value, $id, esc_html__( 'Show on all WooCommerce Endpoints', 'optin-monster-api' ), esc_html__( 'The campaign will show when on any WooCommerce Endpoint.', 'optin-monster-api' ) );
|
857 |
break 2;
|
858 |
+
case 'is_wc_endpoint_order_pay':
|
859 |
$ret = $this->get_checkbox_field( $setting, $value, $id, esc_html__( 'Show on WooCommerce Order Pay endpoint', 'optin-monster-api' ), esc_html__( 'The campaign will show when the endpoint page for order pay is displayed.', 'optin-monster-api' ) );
|
860 |
break 2;
|
861 |
|
862 |
+
case 'is_wc_endpoint_order_received':
|
863 |
$ret = $this->get_checkbox_field( $setting, $value, $id, esc_html__( 'Show on WooCommerce Order Received endpoint', 'optin-monster-api' ), esc_html__( 'The campaign will show when the endpoint page for order received is displayed.', 'optin-monster-api' ) );
|
864 |
break 2;
|
865 |
|
866 |
+
case 'is_wc_endpoint_view_order':
|
867 |
$ret = $this->get_checkbox_field( $setting, $value, $id, esc_html__( 'Show on WooCommerce View Order endpoint', 'optin-monster-api' ), esc_html__( 'The campaign will show when the endpoint page for view order is displayed.', 'optin-monster-api' ) );
|
868 |
break 2;
|
869 |
|
870 |
+
case 'is_wc_endpoint_edit_account':
|
871 |
$ret = $this->get_checkbox_field( $setting, $value, $id, esc_html__( 'Show on WooCommerce Edit Account endpoint', 'optin-monster-api' ), esc_html__( 'The campaign will show when the endpoint page for edit account is displayed.', 'optin-monster-api' ) );
|
872 |
break 2;
|
873 |
|
874 |
+
case 'is_wc_endpoint_edit_address':
|
875 |
$ret = $this->get_checkbox_field( $setting, $value, $id, esc_html__( 'Show on WooCommerce Edit Address endpoint', 'optin-monster-api' ), esc_html__( 'The campaign will show when the endpoint page for edit address is displayed.', 'optin-monster-api' ) );
|
876 |
break 2;
|
877 |
|
878 |
+
case 'is_wc_endpoint_lost_password':
|
879 |
$ret = $this->get_checkbox_field( $setting, $value, $id, esc_html__( 'Show on WooCommerce Lost Password endpoint', 'optin-monster-api' ), esc_html__( 'The campaign will show when the endpoint page for lost password is displayed.', 'optin-monster-api' ) );
|
880 |
break 2;
|
881 |
|
882 |
+
case 'is_wc_endpoint_customer_logout':
|
883 |
$ret = $this->get_checkbox_field( $setting, $value, $id, esc_html__( 'Show on WooCommerce Customer Logout endpoint', 'optin-monster-api' ), esc_html__( 'The campaign will show when the endpoint page for customer logout is displayed.', 'optin-monster-api' ) );
|
884 |
break 2;
|
885 |
|
886 |
+
case 'is_wc_endpoint_add_payment_method':
|
887 |
$ret = $this->get_checkbox_field( $setting, $value, $id, esc_html__( 'Show on WooCommerce Add Payment Method endpoint', 'optin-monster-api' ), esc_html__( 'The campaign will show when the endpoint page for add payment method is displayed.', 'optin-monster-api' ) );
|
888 |
break 2;
|
889 |
|
890 |
+
case 'is_wc_product_category':
|
891 |
$taxonomy = 'product_cat';
|
892 |
+
$terms = get_terms( $taxonomy );
|
893 |
if ( $terms ) {
|
894 |
ob_start();
|
895 |
$display = isset( $value ) ? (array) $value : array();
|
899 |
'popular_cats' => false,
|
900 |
'walker' => null,
|
901 |
'taxonomy' => $taxonomy,
|
902 |
+
'checked_ontop' => true,
|
903 |
);
|
904 |
wp_terms_checklist( 0, $args );
|
905 |
$output = ob_get_clean();
|
909 |
}
|
910 |
break 2;
|
911 |
|
912 |
+
case 'is_wc_product_tag':
|
913 |
$taxonomy = 'product_tag';
|
914 |
+
$terms = get_terms( $taxonomy );
|
915 |
if ( $terms ) {
|
916 |
ob_start();
|
917 |
$display = isset( $value ) ? (array) $value : array();
|
921 |
'popular_cats' => false,
|
922 |
'walker' => null,
|
923 |
'taxonomy' => $taxonomy,
|
924 |
+
'checked_ontop' => true,
|
925 |
);
|
926 |
wp_terms_checklist( 0, $args );
|
927 |
$output = ob_get_clean();
|
932 |
break 2;
|
933 |
|
934 |
default:
|
935 |
+
break 2;
|
936 |
}
|
937 |
+
break;
|
938 |
+
case 'note':
|
939 |
switch ( $setting ) {
|
940 |
+
case 'sidebar_widget_notice':
|
941 |
$ret = $this->get_optin_type_note( $setting, esc_html__( 'Use Widgets to set Sidebar output', 'optin-monster-api' ), esc_html__( 'You can set this campaign to show in your sidebars using the OptinMonster widget within your sidebars.', 'optin-monster-api' ), 'widgets.php', esc_html__( 'Go to Widgets', 'optin-monster-api' ) );
|
942 |
+
break 2;
|
943 |
default:
|
944 |
+
break 2;
|
945 |
}
|
946 |
+
break;
|
947 |
default:
|
948 |
+
break;
|
949 |
}
|
950 |
|
951 |
// Return the setting output.
|
962 |
*/
|
963 |
public function get_user_output() {
|
964 |
|
965 |
+
return apply_filters(
|
966 |
+
'optin_monster_api_user_output',
|
967 |
array(
|
968 |
array(
|
969 |
'name' => esc_html__( 'Show campaign to all visitors and users', 'optin-monster-api' ),
|
970 |
+
'value' => 'all',
|
971 |
),
|
972 |
array(
|
973 |
'name' => esc_html__( 'Show campaign to only visitors (not logged-in)', 'optin-monster-api' ),
|
974 |
+
'value' => 'out',
|
975 |
),
|
976 |
array(
|
977 |
'name' => esc_html__( 'Show campaign to only users (logged-in)', 'optin-monster-api' ),
|
978 |
+
'value' => 'in',
|
979 |
+
),
|
980 |
)
|
981 |
);
|
982 |
|
983 |
}
|
984 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
985 |
|
986 |
/**
|
987 |
* Retrieves the UI output for the single posts show setting.
|
988 |
*
|
989 |
+
* @since 1.9.10
|
990 |
*
|
991 |
* @param array $value The meta index value for the show setting.
|
992 |
* @return string $html HTML representation of the data.
|
996 |
// Increment the global tabindex counter.
|
997 |
$this->tabindex++;
|
998 |
|
999 |
+
$output = '<label for="omapi-field-show-index" class="omapi-custom-label">';
|
1000 |
+
$output .= '<input type="checkbox" id="omapi-field-show-index" name="omapi[optins][show][]" value="index"' . checked( in_array( 'index', (array) $value ), 1, false ) . ' /> ' . esc_html__( 'Front Page and Search Pages', 'optin-monster-api' ) . '</label><br />';
|
1001 |
$post_types = get_post_types( array( 'public' => true ) );
|
1002 |
foreach ( (array) $post_types as $show ) {
|
1003 |
$pt_object = get_post_type_object( $show );
|
1018 |
*
|
1019 |
* @since 1.0.0
|
1020 |
*
|
1021 |
+
* @param string $setting The name of the setting to be saved to the DB.
|
1022 |
+
* @param mixed $value The value of the setting.
|
1023 |
+
* @param string $id The setting ID to target for name field.
|
1024 |
+
* @param string $label The label of the input field.
|
1025 |
+
* @param string $desc The description for the input field.
|
1026 |
+
* @param string $place Placeholder text for the field.
|
1027 |
+
* @param array $classes Array of classes to add to the field.
|
1028 |
* @param boolean $copy Turn on clipboard copy button and make field readonly
|
1029 |
* @return string $html HTML representation of the data.
|
1030 |
*/
|
1037 |
$readonly_output = $copy ? 'readonly' : '';
|
1038 |
|
1039 |
// Build the HTML.
|
1040 |
+
$field = '<div class="omapi-field-box omapi-text-field omapi-field-box-' . $setting . ' omapi-clear">';
|
1041 |
$field .= '<p class="omapi-field-wrap"><label for="omapi-field-' . $setting . '">' . $label . '</label><br />';
|
1042 |
+
$field .= '<input type="text" id="omapi-field-' . $setting . '" class="' . implode( ' ', (array) $classes ) . '" name="omapi[' . $id . '][' . $setting . ']" tabindex="' . $this->tabindex . '" value="' . esc_attr( $value ) . '"' . ( $place ? ' placeholder="' . $place . '"' : '' ) . $readonly_output . ' />';
|
1043 |
+
if ( $copy ) {
|
1044 |
+
$field .= '<span class="omapi-copy-button button" data-clipboard-target="#omapi-field-' . $setting . '">Copy to clipboard</span>';
|
1045 |
+
}
|
1046 |
+
if ( $desc ) {
|
1047 |
+
$field .= '<br /><label for="omapi-field-' . $setting . '"><span class="omapi-field-desc">' . $desc . '</span></label>';
|
1048 |
+
}
|
1049 |
$field .= '</p>';
|
1050 |
+
$field .= '</div>';
|
1051 |
|
1052 |
// Return the HTML.
|
1053 |
return apply_filters( 'optin_monster_api_text_field', $field, $setting, $value, $id, $label );
|
1060 |
* @since 1.0.0
|
1061 |
*
|
1062 |
* @param string $setting The name of the setting to be saved to the DB.
|
1063 |
+
* @param mixed $value The value of the setting.
|
1064 |
* @param string $id The setting ID to target for name field.
|
1065 |
* @param string $label The label of the input field.
|
1066 |
* @param string $desc The description for the input field.
|
1067 |
* @param string $place Placeholder text for the field.
|
1068 |
+
* @param array $classes Array of classes to add to the field.
|
1069 |
+
* @param bool $hidden If the field should be hidden by default.
|
1070 |
* @return string $html HTML representation of the data.
|
1071 |
*/
|
1072 |
public function get_password_field( $setting, $value, $id, $label, $desc = false, $place = false, $classes = array(), $hidden = false ) {
|
1078 |
$hidden_class = $hidden ? 'omapi-hidden' : '';
|
1079 |
|
1080 |
// Build the HTML.
|
1081 |
+
$field = '<div class="omapi-field-box omapi-password-field omapi-field-box-' . $setting . ' omapi-clear ' . $hidden_class . '">';
|
1082 |
+
$field .= '<p class="omapi-field-wrap"><label for="omapi-field-' . $setting . '">' . $label . '</label><br />';
|
1083 |
$field .= '<input type="password" id="omapi-field-' . $setting . '" class="' . implode( ' ', (array) $classes ) . '" name="omapi[' . $id . '][' . $setting . ']" tabindex="' . $this->tabindex . '" value="' . esc_attr( $value ) . '"' . ( $place ? ' placeholder="' . $place . '"' : '' ) . ' />';
|
1084 |
+
if ( $desc ) {
|
1085 |
+
$field .= '<br /><label for="omapi-field-' . $setting . '"><span class="omapi-field-desc">' . $desc . '</span></label>';
|
1086 |
+
}
|
1087 |
$field .= '</p>';
|
1088 |
+
$field .= '</div>';
|
1089 |
|
1090 |
// Return the HTML.
|
1091 |
return apply_filters( 'optin_monster_api_password_field', $field, $setting, $value, $id, $label );
|
1098 |
* @since 1.8.0
|
1099 |
*
|
1100 |
* @param string $setting The name of the setting to be saved to the DB.
|
1101 |
+
* @param mixed $value The value of the setting.
|
1102 |
* @param string $id The setting ID to target for name field.
|
1103 |
* @param string $label The label of the input field.
|
1104 |
* @param string $desc The description for the input field.
|
1111 |
$value = trim( $value );
|
1112 |
|
1113 |
// Build the HTML.
|
1114 |
+
$field = '<div class="omapi-field-box omapi-field-wrap omapi-api-field omapi-field-box-' . $setting . ' omapi-clear">';
|
1115 |
+
if ( empty( $value ) ) {
|
1116 |
+
$field .= "<p><input type='submit' id='{$id}' class='button button-primary button-large button-hero' value='{$label}'></p>";
|
1117 |
+
if ( $desc ) {
|
1118 |
+
$field .= '<p><label for="omapi-field-' . $setting . '"><span class="omapi-field-desc">' . $desc . '</span></label></p>';
|
1119 |
+
}
|
1120 |
+
} else {
|
1121 |
+
$field .= '<p>' . __( 'Your account is <strong>connected.</strong>', 'optin-monster-api' ) . '</p><p><button id="omapiDisconnectButton" class="button button-omapi-gray button-hero">' . esc_html__( 'Disconnect', 'optin-monster-api' ) . '</button></p>';
|
1122 |
+
}
|
|
|
|
|
1123 |
$field .= '</div>';
|
1124 |
|
1125 |
// Return the HTML.
|
1133 |
* @since 1.0.0
|
1134 |
*
|
1135 |
* @param string $setting The name of the setting to be saved to the DB.
|
1136 |
+
* @param mixed $value The value of the setting.
|
1137 |
* @param string $id The setting ID to target for name field.
|
1138 |
+
* @param array $classes Array of classes to add to the field.
|
1139 |
* @return string $html HTML representation of the data.
|
1140 |
*/
|
1141 |
public function get_hidden_field( $setting, $value, $id, $classes = array() ) {
|
1158 |
* @since 1.0.0
|
1159 |
*
|
1160 |
* @param string $setting The name of the setting to be saved to the DB.
|
1161 |
+
* @param mixed $value The value of the setting.
|
1162 |
* @param string $id The setting ID to target for name field.
|
1163 |
* @param string $label The label of the input field.
|
1164 |
* @param string $desc The description for the input field.
|
1165 |
* @param string $place Placeholder text for the field.
|
1166 |
+
* @param array $classes Array of classes to add to the field.
|
1167 |
* @return string $html HTML representation of the data.
|
1168 |
*/
|
1169 |
public function get_textarea_field( $setting, $value, $id, $label, $desc = false, $place = false, $classes = array() ) {
|
1172 |
$this->tabindex++;
|
1173 |
|
1174 |
// Build the HTML.
|
1175 |
+
$field = '<div class="omapi-field-box omapi-textarea-field omapi-field-box-' . $setting . ' omapi-clear">';
|
1176 |
+
$field .= '<p class="omapi-field-wrap"><label for="omapi-field-' . $setting . '">' . $label . '</label><br />';
|
1177 |
$field .= '<textarea id="omapi-field-' . $setting . '" class="' . implode( ' ', (array) $classes ) . '" name="omapi[' . $id . '][' . $setting . ']" rows="5" tabindex="' . $this->tabindex . '"' . ( $place ? ' placeholder="' . $place . '"' : '' ) . '>' . $value . '</textarea>';
|
1178 |
+
if ( $desc ) {
|
1179 |
+
$field .= '<br /><label for="omapi-field-' . $setting . '"><span class="omapi-field-desc">' . $desc . '</span></label>';
|
1180 |
+
}
|
1181 |
$field .= '</p>';
|
1182 |
+
$field .= '</div>';
|
1183 |
|
1184 |
// Return the HTML.
|
1185 |
return apply_filters( 'optin_monster_api_textarea_field', $field, $setting, $value, $id, $label );
|
1192 |
* @since 1.0.0
|
1193 |
*
|
1194 |
* @param string $setting The name of the setting to be saved to the DB.
|
1195 |
+
* @param mixed $value The value of the setting.
|
1196 |
* @param string $id The setting ID to target for name field.
|
1197 |
* @param string $label The label of the input field.
|
1198 |
* @param string $desc The description for the input field.
|
1199 |
+
* @param array $classes Array of classes to add to the field.
|
1200 |
* @return string $html HTML representation of the data.
|
1201 |
*/
|
1202 |
public function get_checkbox_field( $setting, $value, $id, $label, $desc = false, $classes = array() ) {
|
1205 |
$this->tabindex++;
|
1206 |
|
1207 |
// Build the HTML.
|
1208 |
+
$field = '<div class="omapi-field-box omapi-checkbox-field omapi-field-box-' . $setting . ' omapi-clear">';
|
1209 |
+
$field .= '<p class="omapi-field-wrap"><label for="omapi-field-' . $setting . '">' . $label . '</label><br />';
|
1210 |
$field .= '<input type="checkbox" id="omapi-field-' . $setting . '" class="' . implode( ' ', (array) $classes ) . '" name="omapi[' . $id . '][' . $setting . ']" tabindex="' . $this->tabindex . '" value="' . esc_attr( $value ) . '"' . checked( $value, 1, false ) . ' /> ';
|
1211 |
+
if ( $desc ) {
|
1212 |
+
$field .= '<label for="omapi-field-' . $setting . '"><span class="omapi-field-desc">' . $desc . '</span></label>';
|
1213 |
+
}
|
1214 |
$field .= '</p>';
|
1215 |
+
$field .= '</div>';
|
1216 |
|
1217 |
// Return the HTML.
|
1218 |
return apply_filters( 'optin_monster_api_checkbox_field', $field, $setting, $value, $id, $label );
|
1225 |
* @since 1.0.0
|
1226 |
*
|
1227 |
* @param string $setting The name of the setting to be saved to the DB.
|
1228 |
+
* @param mixed $value The value of the setting.
|
1229 |
* @param string $id The setting ID to target for name field.
|
1230 |
+
* @param array $data The data to be used for option fields.
|
1231 |
* @param string $label The label of the input field.
|
1232 |
* @param string $desc The description for the input field.
|
1233 |
+
* @param array $classes Array of classes to add to the field.
|
1234 |
* @return string $html HTML representation of the data.
|
1235 |
*/
|
1236 |
public function get_dropdown_field( $setting, $value, $id, $data, $label, $desc = false, $classes = array() ) {
|
1239 |
$this->tabindex++;
|
1240 |
|
1241 |
// Build the HTML.
|
1242 |
+
$field = '<div class="omapi-field-box omapi-dropdown-field omapi-field-box-' . $setting . ' omapi-clear">';
|
1243 |
+
$field .= '<p class="omapi-field-wrap"><label for="omapi-field-' . $setting . '">' . $label . '</label><br />';
|
1244 |
$field .= '<select id="omapi-field-' . $setting . '" class="' . implode( ' ', (array) $classes ) . '" name="omapi[' . $id . '][' . $setting . ']" tabindex="' . $this->tabindex . '">';
|
1245 |
+
foreach ( $data as $i => $info ) {
|
1246 |
+
$field .= '<option value="' . esc_attr( $info['value'] ) . '"' . selected( $info['value'], $value, false ) . '>' . $info['name'] . '</option>';
|
1247 |
+
}
|
1248 |
$field .= '</select>';
|
1249 |
+
if ( $desc ) {
|
1250 |
+
$field .= '<br /><label for="omapi-field-' . $setting . '"><span class="omapi-field-desc">' . $desc . '</span></label>';
|
1251 |
+
}
|
1252 |
$field .= '</p>';
|
1253 |
+
$field .= '</div>';
|
1254 |
|
1255 |
// Return the HTML.
|
1256 |
return apply_filters( 'omapi_dropdown_field', $field, $setting, $value, $id, $label, $data );
|
1263 |
* @since 1.0.0
|
1264 |
*
|
1265 |
* @param string $setting The name of the setting to be saved to the DB.
|
1266 |
+
* @param mixed $value The value of the setting.
|
1267 |
* @param string $label The label of the input field.
|
1268 |
* @param string $desc The description for the input field.
|
1269 |
* @return string $html HTML representation of the data.
|
1271 |
public function get_custom_field( $setting, $value, $label, $desc = false ) {
|
1272 |
|
1273 |
// Build the HTML.
|
1274 |
+
$field = '<div class="omapi-field-box omapi-custom-field omapi-field-box-' . $setting . ' omapi-clear">';
|
1275 |
$field .= '<p class="omapi-field-wrap"><label for="omapi-field-' . $setting . '">' . $label . '</label></p>';
|
1276 |
$field .= $value;
|
1277 |
+
if ( $desc ) {
|
1278 |
+
$field .= '<br /><label for="omapi-field-' . $setting . '"><span class="omapi-field-desc">' . $desc . '</span></label>';
|
1279 |
+
}
|
1280 |
$field .= '</div>';
|
1281 |
|
1282 |
// Return the HTML.
|
1295 |
* @return mixed|void
|
1296 |
*/
|
1297 |
public function get_toggle_start( $setting, $label, $desc ) {
|
1298 |
+
$field = '<div class="omapi-ui-toggle-controller">';
|
1299 |
$field .= '<p class="omapi-field-wrap"><label for="omapi-field-' . $setting . '">' . $label . '</label></p>';
|
1300 |
+
if ( $desc ) {
|
1301 |
+
$field .= '<span class="omapi-field-desc">' . $desc . '</span>';
|
1302 |
+
}
|
1303 |
$field .= '</div>';
|
1304 |
$field .= '<div class="omapi-ui-toggle-content">';
|
1305 |
|
1306 |
+
return apply_filters( 'optin_monster_api_toggle_start_field', $field, $label, $desc );
|
1307 |
}
|
1308 |
|
1309 |
/**
|
1312 |
* @since 1.1.5
|
1313 |
* @return string HTML end for toggle start
|
1314 |
*/
|
1315 |
+
public function get_toggle_end() {
|
1316 |
|
1317 |
$field = '</div>';
|
1318 |
|
1335 |
public function get_optin_type_note( $setting, $title, $text, $admin_page, $button ) {
|
1336 |
|
1337 |
$field = '<div class="omapi-field-box omapi-inline-notice omapi-field-box-' . $setting . ' omapi-clear">';
|
1338 |
+
if ( $title ) {
|
1339 |
$field .= '<p class="omapi-notice-title">' . $title . '</p>';
|
1340 |
}
|
1341 |
+
if ( $text ) {
|
1342 |
$field .= '<p class="omapi-field-desc">' . $text . '</p>';
|
1343 |
}
|
1344 |
if ( $admin_page && $button ) {
|
1348 |
}
|
1349 |
$field .= '</div>';
|
1350 |
|
1351 |
+
return apply_filters( 'optin_monster_api_inline_note_display', $field, $title, $text, $admin_page, $button );
|
1352 |
}
|
1353 |
|
1354 |
/**
|
1360 |
*/
|
1361 |
public function get_support_links( $setting, $title ) {
|
1362 |
|
1363 |
+
$field = '';
|
1364 |
|
1365 |
$field .= '<div class="omapi-support-links ' . $setting . '"><h3>' . $title . '</h3><ul>';
|
1366 |
+
$field .= '<li><a target="_blank" rel="noopener" href="' . esc_url( 'https://optinmonster.com/docs/' ) . '">' . esc_html__( 'Documentation', 'optin-monster-api' ) . '</a></li>';
|
1367 |
+
$field .= '<li><a target="_blank" rel="noopener noreferrer" href="' . esc_url( 'https://wordpress.org/plugins/optinmonster/changelog/' ) . '">' . esc_html__( 'Changelog', 'optin-monster-api' ) . '</a></li>';
|
1368 |
+
$field .= '<li><a target="_blank" rel="noopener" href="' . esc_url( OPTINMONSTER_APP_URL . '/account/support/' ) . '">' . esc_html__( 'Create a Support Ticket', 'optin-monster-api' ) . '</a></li>';
|
1369 |
$field .= '</ul></div>';
|
1370 |
|
1371 |
+
return apply_filters( 'optin_monster_api_support_links', $field, $setting );
|
1372 |
}
|
1373 |
|
1374 |
public function get_plugin_report( $setting, $title ) {
|
1375 |
|
1376 |
+
$field = '';
|
1377 |
|
1378 |
$field .= '<div class="omapi-support-data ' . $setting . '"><h3>' . $title . '</h3>';
|
1379 |
+
$link = OPTINMONSTER_APP_URL . '/account/support/';
|
1380 |
+
$field .= '<p>' . sprintf( wp_kses( __( 'Download the report and attach to your <a href="%s">support ticket</a> to help speed up the process.', 'optin-monster-api' ), array( 'a' => array( 'href' => array() ) ) ), esc_url( $link ) ) . '</p>';
|
1381 |
+
$field .= '<a href="#" id="js--omapi-support-pdf" class="button button-primary button-large button-hero omapi-support-data-button" title="' . esc_attr__( 'Download a PDF Report for Support', 'optin-monster-api' ) . '" target="_blank">' . esc_html__( 'Download PDF Report', 'optin-monster-api' ) . '</a>';
|
1382 |
$field .= '</div>';
|
1383 |
|
1384 |
return apply_filters( 'optin_monster_api_support_data', $field, $setting, $title );
|
1398 |
$output = '';
|
1399 |
|
1400 |
if ( ! OMAPI_WooCommerce::is_minimum_version() && OMAPI_WooCommerce::is_connected() ) {
|
1401 |
+
|
1402 |
$output .= '<p>' . esc_html( sprintf( __( 'OptinMonster requires WooCommerce %s or above.', 'optin-monster-api' ), OMAPI_WooCommerce::MINIMUM_VERSION ) ) . '</p>'
|
1403 |
. '<p>' . esc_html_x( 'This site is currently running: ', 'the current version of WooCommerce: "WooCommerce x.y.z"', 'optin-monster-api' )
|
1404 |
. '<code>WooCommerce ' . esc_html( OMAPI_WooCommerce::version() ) . '</code>.</p>'
|
1405 |
. '<p>' . esc_html__( 'Please upgrade to the latest version of WooCommerce to enjoy deeper integration with OptinMonster.', 'optin-monster-api' ) . '</p>';
|
1406 |
+
|
1407 |
} elseif ( OMAPI_WooCommerce::is_connected() ) {
|
1408 |
+
|
1409 |
// Set some default key details.
|
1410 |
$defaults = array(
|
1411 |
'key_id' => '',
|
1428 |
$output .= '<p>' . $key_string . ' <a href="' . $key_url . '">View key</a></p>';
|
1429 |
$output .= '<p>' . esc_html__( 'You need to disconnect WooCommerce, below, to remove your keys from OptinMonster, or to change the consumer key/secret pair associated with OptinMonster.', 'optin-monster-api' ) . '</p>';
|
1430 |
$output .= $this->get_hidden_field( 'disconnect', '1', 'woocommerce' );
|
1431 |
+
|
1432 |
} else {
|
1433 |
|
1434 |
+
$output .= '<p>' . sprintf( __( 'In order to integrate WooCommerce with the Display Rules in the campaign builder, OptinMonster needs <a href="%s" target="_blank">WooCommerce REST API credentials</a>. OptinMonster only needs Read access permissions to work. Click below to have us auto-generate the consumer key/secret pair, you can manually enter your own.', 'optin-monster-api' ), esc_url( $keys_admin_url ) ) . '</p>';
|
1435 |
+
$output .= '<div class="omapi-hidden">';
|
1436 |
$output .= $this->get_text_field(
|
1437 |
'consumer_key',
|
1438 |
'',
|
1449 |
'',
|
1450 |
'cs_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
|
1451 |
);
|
1452 |
+
$output .= '<span class="omapi-hidden"><input class="button button-secondary" type="submit" name="omapi_woocommerce_connect" value="' . esc_attr__( 'Connect WooCommerce', 'optin-monster-api' ) . '" /></span>';
|
1453 |
+
$output .= '</div>';
|
1454 |
}
|
1455 |
|
1456 |
return $output;
|
1457 |
}
|
1458 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1459 |
/**
|
1460 |
* Echo out plugin header banner
|
1461 |
*
|
1462 |
* @since 1.1.5.2
|
1463 |
*/
|
1464 |
public function output_plugin_screen_banner() {
|
1465 |
+
$this->base->output_view( 'plugin-banner.php' );
|
1466 |
}
|
1467 |
|
1468 |
/**
|
1505 |
$url = $this->get_affiliate_url( $omSasId );
|
1506 |
}
|
1507 |
|
1508 |
+
return apply_filters(
|
1509 |
+
'optin_monster_action_link',
|
1510 |
+
$url,
|
1511 |
+
array(
|
1512 |
+
'type' => 'sas',
|
1513 |
+
'id' => $omSasId,
|
1514 |
+
)
|
1515 |
+
);
|
1516 |
}
|
1517 |
|
1518 |
/**
|
1556 |
. '%2Ffree-trial%2F%3Fid%3D' . urlencode( trim( $omTrialId ) );
|
1557 |
}
|
1558 |
|
1559 |
+
return apply_filters(
|
1560 |
+
'optin_monster_action_link',
|
1561 |
+
$url,
|
1562 |
+
array(
|
1563 |
+
'type' => 'trial',
|
1564 |
+
'id' => $omTrialId,
|
1565 |
+
)
|
1566 |
+
);
|
1567 |
}
|
1568 |
|
1569 |
/**
|
1571 |
*
|
1572 |
* @since 1.8.4
|
1573 |
*
|
1574 |
+
* @param mixed $reference_id The reference ID.
|
1575 |
*
|
1576 |
* @return string The affilaite url.
|
1577 |
*/
|
1593 |
}
|
1594 |
|
1595 |
public function has_trial_link() {
|
|
|
1596 |
$link = $this->get_trial_link();
|
1597 |
+
|
1598 |
return strpos( $link, 'optinmonster.com/wp' ) === false;
|
1599 |
+
}
|
1600 |
|
1601 |
+
/**
|
1602 |
+
* Get the parent slug (contextual based on beta being enabled).
|
1603 |
+
*
|
1604 |
+
* @since 1.9.10
|
1605 |
+
*
|
1606 |
+
* @return string
|
1607 |
+
*/
|
1608 |
+
public function parent_slug() {
|
1609 |
+
return 'optin-monster-api-settings';
|
1610 |
}
|
1611 |
|
1612 |
+
/**
|
1613 |
+
* Get the OM settings url.
|
1614 |
+
*
|
1615 |
+
* @since 1.9.10
|
1616 |
+
*
|
1617 |
+
* @param string $view The view query arg.
|
1618 |
+
* @param array $args Array of query args.
|
1619 |
+
*
|
1620 |
+
* @return string
|
1621 |
+
*/
|
1622 |
+
public function get_settings_link( $view = '', $args = array() ) {
|
1623 |
+
return $this->get_dashboard_link( $view, $args );
|
1624 |
+
}
|
1625 |
|
1626 |
+
/**
|
1627 |
+
* Get the contextual OM dashboard url.
|
1628 |
+
*
|
1629 |
+
* @since 1.9.10
|
1630 |
+
*
|
1631 |
+
* @param string $view The view query arg.
|
1632 |
+
* @param array $args Array of query args.
|
1633 |
+
*
|
1634 |
+
* @return string
|
1635 |
+
*/
|
1636 |
+
public function get_dashboard_link( $view = '', $args = array() ) {
|
1637 |
+
$page = $this->has_trial_link() || ( ! $this->base->get_api_credentials() && ! isset( $_GET['om-bypass-api-check'] ) )
|
1638 |
+
? 'optin-monster-api-welcome'
|
1639 |
+
: $this->parent_slug();
|
1640 |
+
|
1641 |
+
$defaults = array( 'page' => $page );
|
1642 |
+
if ( $view && 'optin-monster-api-settings' === $page ) {
|
1643 |
+
$defaults['optin_monster_api_view'] = $view;
|
1644 |
+
}
|
1645 |
|
1646 |
+
return $this->admin_page_url( wp_parse_args( $args, $defaults ) );
|
1647 |
}
|
1648 |
|
1649 |
+
/**
|
1650 |
+
* Get an admin page url.
|
1651 |
+
*
|
1652 |
+
* @since 1.9.10
|
1653 |
+
*
|
1654 |
+
* @param array $args Array of query args.
|
1655 |
+
*
|
1656 |
+
* @return string
|
1657 |
+
*/
|
1658 |
+
public function admin_page_url( $args = array() ) {
|
1659 |
+
$url = add_query_arg( $args, admin_url( 'admin.php' ) );
|
1660 |
+
|
1661 |
+
return esc_url_raw( $url );
|
1662 |
+
}
|
1663 |
+
|
1664 |
+
/**
|
1665 |
+
* Redirects to main OM page.
|
1666 |
+
*
|
1667 |
+
* @since 1.9.10
|
1668 |
+
*
|
1669 |
+
* @param string $view The view query arg.
|
1670 |
+
* @param array $args Array of query args.
|
1671 |
+
*
|
1672 |
+
* @return void
|
1673 |
+
*/
|
1674 |
+
public function redirect_to_dashboard( $view = '', $args = array() ) {
|
1675 |
+
$url = $this->get_dashboard_link( $view, $args );
|
1676 |
+
wp_safe_redirect( esc_url_raw( $url ) );
|
1677 |
+
exit;
|
1678 |
+
}
|
1679 |
+
|
1680 |
+
|
1681 |
}
|
OMAPI/Output.php
CHANGED
@@ -101,7 +101,7 @@ class OMAPI_Output {
|
|
101 |
|
102 |
// Checking if AMP is enabled.
|
103 |
if ( OMAPI_Utils::is_amp_enabled() ) {
|
104 |
-
|
105 |
}
|
106 |
|
107 |
// Set our object.
|
@@ -138,7 +138,7 @@ class OMAPI_Output {
|
|
138 |
$rules = new OMAPI_Rules();
|
139 |
|
140 |
// Keep these around for back-compat.
|
141 |
-
$this->fields
|
142 |
|
143 |
}
|
144 |
|
@@ -148,7 +148,11 @@ class OMAPI_Output {
|
|
148 |
* @since 1.0.0
|
149 |
*/
|
150 |
public function api_script() {
|
151 |
-
|
|
|
|
|
|
|
|
|
152 |
|
153 |
if ( version_compare( get_bloginfo( 'version' ), '4.1.0', '>=' ) ) {
|
154 |
add_filter( 'script_loader_tag', array( $this, 'filter_api_script' ), 10, 2 );
|
@@ -175,9 +179,11 @@ class OMAPI_Output {
|
|
175 |
}
|
176 |
|
177 |
// Adjust the output to the JS version embed and to add our custom script ID.
|
178 |
-
return $this->om_script_tag(
|
179 |
-
|
180 |
-
|
|
|
|
|
181 |
}
|
182 |
|
183 |
/**
|
@@ -287,7 +293,7 @@ class OMAPI_Output {
|
|
287 |
|
288 |
// Prepare variables.
|
289 |
$post_id = self::current_id();
|
290 |
-
$optins
|
291 |
|
292 |
// If no optins are found, return early.
|
293 |
if ( empty( $optins ) ) {
|
@@ -448,7 +454,12 @@ class OMAPI_Output {
|
|
448 |
|
449 |
// Output the JS variables to signify shortcode parsing is needed.
|
450 |
?>
|
451 |
-
<script type="text/javascript"
|
|
|
|
|
|
|
|
|
|
|
452 |
<?php
|
453 |
|
454 |
}
|
@@ -489,9 +500,9 @@ class OMAPI_Output {
|
|
489 |
if ( $this->base->is_mailpoet_active() ) {
|
490 |
wp_enqueue_script(
|
491 |
$this->base->plugin_slug . '-wp-mailpoet',
|
492 |
-
|
493 |
array( 'jquery' ),
|
494 |
-
$this->base->
|
495 |
true
|
496 |
);
|
497 |
}
|
@@ -505,9 +516,9 @@ class OMAPI_Output {
|
|
505 |
public function wp_helper() {
|
506 |
wp_enqueue_script(
|
507 |
$this->base->plugin_slug . '-wp-helper',
|
508 |
-
|
509 |
array(),
|
510 |
-
$this->base->
|
511 |
true
|
512 |
);
|
513 |
}
|
@@ -594,7 +605,7 @@ class OMAPI_Output {
|
|
594 |
*
|
595 |
* @since 1.5.0
|
596 |
*
|
597 |
-
* @param object
|
598 |
*
|
599 |
* @return string The optin campaign html.
|
600 |
*/
|
@@ -609,7 +620,7 @@ class OMAPI_Output {
|
|
609 |
*
|
610 |
* @since 1.5.0
|
611 |
*
|
612 |
-
* @param bool
|
613 |
* @param OMAPI_Rules $rules OMAPI_Rules object
|
614 |
*
|
615 |
* @return array
|
@@ -711,8 +722,8 @@ class OMAPI_Output {
|
|
711 |
*
|
712 |
* @since 1.9.8
|
713 |
*
|
714 |
-
* @param array
|
715 |
-
*
|
716 |
*
|
717 |
* @return string The embed script JS.
|
718 |
*/
|
@@ -736,18 +747,18 @@ class OMAPI_Output {
|
|
736 |
? sprintf( 's.dataset.env="%s";', esc_attr( OPTINMONSTER_ENV ) )
|
737 |
: '';
|
738 |
|
739 |
-
$tag
|
740 |
-
|
741 |
-
|
742 |
-
|
743 |
-
|
744 |
-
|
745 |
-
|
746 |
-
|
747 |
-
|
748 |
-
|
749 |
-
|
750 |
-
|
751 |
$tag .= '</script>';
|
752 |
|
753 |
return sprintf(
|
101 |
|
102 |
// Checking if AMP is enabled.
|
103 |
if ( OMAPI_Utils::is_amp_enabled() ) {
|
104 |
+
return;
|
105 |
}
|
106 |
|
107 |
// Set our object.
|
138 |
$rules = new OMAPI_Rules();
|
139 |
|
140 |
// Keep these around for back-compat.
|
141 |
+
$this->fields = $rules->fields;
|
142 |
|
143 |
}
|
144 |
|
148 |
* @since 1.0.0
|
149 |
*/
|
150 |
public function api_script() {
|
151 |
+
|
152 |
+
// A hook to change the API location. Using this hook, we can force to load in header; default location is footer
|
153 |
+
$in_footer = apply_filters( 'optin_monster_api_loading_location', true );
|
154 |
+
|
155 |
+
wp_enqueue_script( $this->base->plugin_slug . '-api-script', $this->base->get_api_url(), array(), null, $in_footer );
|
156 |
|
157 |
if ( version_compare( get_bloginfo( 'version' ), '4.1.0', '>=' ) ) {
|
158 |
add_filter( 'script_loader_tag', array( $this, 'filter_api_script' ), 10, 2 );
|
179 |
}
|
180 |
|
181 |
// Adjust the output to the JS version embed and to add our custom script ID.
|
182 |
+
return $this->om_script_tag(
|
183 |
+
array(
|
184 |
+
'id' => 'omapi-script',
|
185 |
+
)
|
186 |
+
);
|
187 |
}
|
188 |
|
189 |
/**
|
293 |
|
294 |
// Prepare variables.
|
295 |
$post_id = self::current_id();
|
296 |
+
$optins = $this->base->get_optins();
|
297 |
|
298 |
// If no optins are found, return early.
|
299 |
if ( empty( $optins ) ) {
|
454 |
|
455 |
// Output the JS variables to signify shortcode parsing is needed.
|
456 |
?>
|
457 |
+
<script type="text/javascript">
|
458 |
+
<?php
|
459 |
+
foreach ( $this->slugs as $slug => $data ) {
|
460 |
+
echo 'var ' . $slug . '_shortcode = true;'; }
|
461 |
+
?>
|
462 |
+
</script>
|
463 |
<?php
|
464 |
|
465 |
}
|
500 |
if ( $this->base->is_mailpoet_active() ) {
|
501 |
wp_enqueue_script(
|
502 |
$this->base->plugin_slug . '-wp-mailpoet',
|
503 |
+
$this->base->url . 'assets/js/mailpoet.js',
|
504 |
array( 'jquery' ),
|
505 |
+
$this->base->asset_version(),
|
506 |
true
|
507 |
);
|
508 |
}
|
516 |
public function wp_helper() {
|
517 |
wp_enqueue_script(
|
518 |
$this->base->plugin_slug . '-wp-helper',
|
519 |
+
$this->base->url . 'assets/js/helper.js',
|
520 |
array(),
|
521 |
+
$this->base->asset_version(),
|
522 |
true
|
523 |
);
|
524 |
}
|
605 |
*
|
606 |
* @since 1.5.0
|
607 |
*
|
608 |
+
* @param object $optin The option post object.
|
609 |
*
|
610 |
* @return string The optin campaign html.
|
611 |
*/
|
620 |
*
|
621 |
* @since 1.5.0
|
622 |
*
|
623 |
+
* @param bool $should_output Whether it should output.
|
624 |
* @param OMAPI_Rules $rules OMAPI_Rules object
|
625 |
*
|
626 |
* @return array
|
722 |
*
|
723 |
* @since 1.9.8
|
724 |
*
|
725 |
+
* @param array $args Array of arguments for the script, including
|
726 |
+
* optional user id, account id, and script id.
|
727 |
*
|
728 |
* @return string The embed script JS.
|
729 |
*/
|
747 |
? sprintf( 's.dataset.env="%s";', esc_attr( OPTINMONSTER_ENV ) )
|
748 |
: '';
|
749 |
|
750 |
+
$tag = '<script>';
|
751 |
+
$tag .= '(function(d){';
|
752 |
+
$tag .= 'var s=d.createElement("script");';
|
753 |
+
$tag .= 's.type="text/javascript";';
|
754 |
+
$tag .= 's.src="%1$s";';
|
755 |
+
$tag .= 's.async=true;';
|
756 |
+
$tag .= '%2$s';
|
757 |
+
$tag .= '%3$s';
|
758 |
+
$tag .= '%4$s';
|
759 |
+
$tag .= '%5$s';
|
760 |
+
$tag .= 'd.getElementsByTagName("head")[0].appendChild(s);';
|
761 |
+
$tag .= '})(document);';
|
762 |
$tag .= '</script>';
|
763 |
|
764 |
return sprintf(
|
OMAPI/Pages.php
ADDED
@@ -0,0 +1,179 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Menu class.
|
4 |
+
*
|
5 |
+
* @since 1.9.10
|
6 |
+
*
|
7 |
+
* @package OMAPI
|
8 |
+
* @author Erik Jonasson
|
9 |
+
*/
|
10 |
+
class OMAPI_Pages {
|
11 |
+
|
12 |
+
/**
|
13 |
+
* Holds the class object.
|
14 |
+
*
|
15 |
+
* @since 1.9.10
|
16 |
+
*
|
17 |
+
* @var object
|
18 |
+
*/
|
19 |
+
public static $instance;
|
20 |
+
|
21 |
+
/**
|
22 |
+
* Path to the file.
|
23 |
+
*
|
24 |
+
* @since 1.9.10
|
25 |
+
*
|
26 |
+
* @var string
|
27 |
+
*/
|
28 |
+
public $file = __FILE__;
|
29 |
+
|
30 |
+
/**
|
31 |
+
* Holds the base class object.
|
32 |
+
*
|
33 |
+
* @since 1.9.10
|
34 |
+
*
|
35 |
+
* @var OMAPI
|
36 |
+
*/
|
37 |
+
public $base;
|
38 |
+
|
39 |
+
/**
|
40 |
+
* Sets our object instance and base class instance.
|
41 |
+
*
|
42 |
+
* @since 1.9.10
|
43 |
+
*/
|
44 |
+
public function __construct() {
|
45 |
+
self::$instance = $this;
|
46 |
+
$this->base = OMAPI::get_instance();
|
47 |
+
}
|
48 |
+
|
49 |
+
/**
|
50 |
+
* Loads Stylesheets that should only be loaded on a specific page
|
51 |
+
*
|
52 |
+
* @return void
|
53 |
+
*/
|
54 |
+
public function load_general_styles() {
|
55 |
+
wp_enqueue_style( $this->base->plugin_slug . '-common', $this->base->url . 'assets/dist/css/common.min.css', false, $this->base->asset_version() );
|
56 |
+
}
|
57 |
+
|
58 |
+
/**
|
59 |
+
* Returns an array of our registered pages.
|
60 |
+
* If we need more pages, add them to this array
|
61 |
+
*
|
62 |
+
* @return void
|
63 |
+
*/
|
64 |
+
public function get_registered_pages() {
|
65 |
+
$pages = array(
|
66 |
+
array(
|
67 |
+
'name' => __( 'TrustPulse', 'optin-monster-api' ),
|
68 |
+
'slug' => 'optin-monster-trustpulse',
|
69 |
+
),
|
70 |
+
array(
|
71 |
+
'name' => __( 'About Us', 'optin-monster-api' ),
|
72 |
+
'slug' => 'optin-monster-about',
|
73 |
+
'callback' => array( $this, 'render_about_us_page' ),
|
74 |
+
),
|
75 |
+
);
|
76 |
+
|
77 |
+
return $pages;
|
78 |
+
}
|
79 |
+
|
80 |
+
/**
|
81 |
+
* Registers our submenu pages
|
82 |
+
*
|
83 |
+
* @param string $parent_page_name The Parent Page Name
|
84 |
+
* @return void
|
85 |
+
*/
|
86 |
+
public function register_submenu_pages( $parent_page_name ) {
|
87 |
+
$pages = $this->get_registered_pages();
|
88 |
+
$hooks = array();
|
89 |
+
|
90 |
+
foreach ( $pages as $page ) {
|
91 |
+
if ( ! empty( $page['callback'] ) ) {
|
92 |
+
$hooks[] = add_submenu_page(
|
93 |
+
$parent_page_name, // $parent_slug
|
94 |
+
$page['name'], // $page_title
|
95 |
+
! empty( $page['menu'] ) ? $page['menu'] : $page['name'], // $menu_title
|
96 |
+
apply_filters( 'optin_monster_api_menu_cap', 'manage_options', $page['slug'] ),
|
97 |
+
$page['slug'],
|
98 |
+
$page['callback']
|
99 |
+
);
|
100 |
+
}
|
101 |
+
}
|
102 |
+
|
103 |
+
return $hooks;
|
104 |
+
}
|
105 |
+
|
106 |
+
/**
|
107 |
+
* Registers our submenu pages, but redirects to main page when navigating to them.
|
108 |
+
*
|
109 |
+
* @since 1.9.10
|
110 |
+
*
|
111 |
+
* @param string $parent_page_name The Parent Page Name
|
112 |
+
* @return void
|
113 |
+
*/
|
114 |
+
public function register_submenu_redirects( $parent_page_name ) {
|
115 |
+
$hooks = $this->register_submenu_pages( $parent_page_name . '-hidden' );
|
116 |
+
foreach ( $hooks as $hook ) {
|
117 |
+
add_action( 'load-' . $hook, array( $this->base->menu, 'redirect_to_dashboard' ) );
|
118 |
+
}
|
119 |
+
}
|
120 |
+
|
121 |
+
/**
|
122 |
+
* Outputs the OptinMonster about-us page.
|
123 |
+
*
|
124 |
+
* @since 1.9.10
|
125 |
+
*/
|
126 |
+
public function render_about_us_page() {
|
127 |
+
$all_plugins = get_plugins();
|
128 |
+
|
129 |
+
$data = array(
|
130 |
+
'google-analytics-for-wordpress/googleanalytics.php' => array(
|
131 |
+
'icon' => $this->base->url . 'assets/images/about/plugin-mi.png',
|
132 |
+
'class' => 'google-analytics-for-wordpressgoogleanalyticsphp',
|
133 |
+
'name' => 'MonsterInsights',
|
134 |
+
'desc' => sprintf( esc_html__( '%s makes it “effortless” to properly connect your WordPress site with Google Analytics, so you can start making data-driven decisions to grow your business.', 'optin-monster-api' ), 'MonsterInsights' ),
|
135 |
+
'url' => 'https://downloads.wordpress.org/plugin/google-analytics-for-wordpress.zip',
|
136 |
+
'pro' => array(
|
137 |
+
'plugin' => 'google-analytics-premium/googleanalytics-premium.php',
|
138 |
+
'name' => 'MonsterInsights Pro',
|
139 |
+
'url' => 'https://www.monsterinsights.com/?utm_source=proplugin&utm_medium=pluginheader&utm_campaign=pluginurl&utm_content=7%2E0%2E0',
|
140 |
+
),
|
141 |
+
),
|
142 |
+
'wpforms-lite/wpforms.php' => array(
|
143 |
+
'icon' => $this->base->url . 'assets/images/about/plugin-wp-forms.png',
|
144 |
+
'class' => 'wpforms-litewpformsphp',
|
145 |
+
'name' => 'WP Forms',
|
146 |
+
'desc' => sprintf( esc_html__( '%s allows you to create beautiful contact forms, feedback form, subscription forms, payment forms, and other type of forms for your site in minutes, not hours!', 'optin-monster-api' ), 'WP Forms' ),
|
147 |
+
'url' => 'https://downloads.wordpress.org/plugin/wpforms-lite.zip',
|
148 |
+
'pro' => array(
|
149 |
+
'plugin' => 'wpforms-premium/wpforms.php',
|
150 |
+
'name' => 'WP Forms Pro',
|
151 |
+
'url' => 'https://www.wpforms.com/?utm_source=proplugin&utm_medium=pluginheader&utm_campaign=pluginurl&utm_content=7%2E0%2E0',
|
152 |
+
),
|
153 |
+
),
|
154 |
+
);
|
155 |
+
|
156 |
+
foreach ( $data as $plugin_id => $plugin ) {
|
157 |
+
|
158 |
+
$installed = array_key_exists( $plugin_id, $all_plugins ) || array_key_exists( $plugin['pro']['plugin'], $all_plugins );
|
159 |
+
$active = is_plugin_active( $plugin_id ) || is_plugin_active( $plugin['pro']['plugin'] );
|
160 |
+
|
161 |
+
$data[ $plugin_id ]['status'] = $installed ?
|
162 |
+
$active ?
|
163 |
+
__( 'Active', 'optin-monster-api' ) :
|
164 |
+
__( 'Installed', 'optin-monster-api' )
|
165 |
+
: __( 'Not Installed', 'optin-monster-api' );
|
166 |
+
|
167 |
+
$data[ $plugin_id ]['installed'] = $installed;
|
168 |
+
$data[ $plugin_id ]['active'] = $active;
|
169 |
+
}
|
170 |
+
|
171 |
+
$this->base->output_view(
|
172 |
+
'about.php',
|
173 |
+
array(
|
174 |
+
'all_plugins' => $all_plugins,
|
175 |
+
'plugins' => $data,
|
176 |
+
)
|
177 |
+
);
|
178 |
+
}
|
179 |
+
}
|
OMAPI/Pointer.php
CHANGED
@@ -58,26 +58,35 @@ class OMAPI_Pointer {
|
|
58 |
* @since 1.6.5
|
59 |
*/
|
60 |
public function load_pointer() {
|
|
|
61 |
// Don't run on WP < 3.3.
|
62 |
if ( get_bloginfo( 'version' ) < '3.3' ) {
|
63 |
return;
|
64 |
}
|
|
|
65 |
$screen = get_current_screen();
|
|
|
66 |
// If we're not on the dashboard, or we already have an API key, don't trigger the pointer.
|
67 |
if ( 'dashboard' !== $screen->id || $this->base->get_api_credentials() ) {
|
68 |
return;
|
69 |
}
|
70 |
|
|
|
|
|
|
|
|
|
|
|
|
|
71 |
$content = '<h3>' . esc_html__( 'Get More Leads, Subscribers and Sales Today!', 'optin-monster-api' ) . '</h3>';
|
72 |
$content .= '<div class="om-pointer-close-link"><a class="close" href="#"></a></div>';
|
73 |
$content .= '<h4>' . esc_html__( 'Grow Your Business with OptinMonster', 'optin-monster-api' ) . '</h4>';
|
74 |
$content .= '<p>' . esc_html__( 'Turn your website visitors into subscribers and customers with OptinMonster, the #1 conversion optimization toolkit in the world.', 'optin-monster-api' ) . '</p>';
|
75 |
$content .= '<p>' . esc_html__( 'For a limited time, get 50% off any plan AND get instant access to OptinMonster University - our exclusive training portal with over $2,000 worth of courses, courses, content and videos', 'optin-monster-api' ) . '<strong> ' . esc_html__( '100% Free!', 'optin-monster-api' ) . '</strong></p>';
|
76 |
-
$content .= '<p><a class="button button-primary" id="omPointerButton" href="
|
77 |
|
78 |
$pointer = array(
|
79 |
'id' => 'om-welcome-pointer',
|
80 |
-
'target' => '#
|
81 |
'options' => array(
|
82 |
'content' => $content,
|
83 |
'position' => array(
|
@@ -87,20 +96,23 @@ class OMAPI_Pointer {
|
|
87 |
),
|
88 |
);
|
89 |
|
90 |
-
// Make sure the pointer hasn't been dismissed.
|
91 |
-
$dismissed = explode( ',', (string) get_user_meta( get_current_user_id(), 'dismissed_wp_pointers', true ) );
|
92 |
-
if ( in_array( $pointer['id'], $dismissed ) ) {
|
93 |
-
return;
|
94 |
-
}
|
95 |
-
|
96 |
-
// Add pointers style to queue.
|
97 |
-
wp_enqueue_style( 'wp-pointer' );
|
98 |
// Add pointers script to queue. Add custom script.
|
99 |
-
wp_enqueue_script(
|
100 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
101 |
|
102 |
// Add pointer options to script.
|
103 |
wp_localize_script( $this->base->plugin_slug . '-pointer', 'omapiPointer', $pointer );
|
104 |
-
|
105 |
}
|
106 |
}
|
58 |
* @since 1.6.5
|
59 |
*/
|
60 |
public function load_pointer() {
|
61 |
+
|
62 |
// Don't run on WP < 3.3.
|
63 |
if ( get_bloginfo( 'version' ) < '3.3' ) {
|
64 |
return;
|
65 |
}
|
66 |
+
|
67 |
$screen = get_current_screen();
|
68 |
+
|
69 |
// If we're not on the dashboard, or we already have an API key, don't trigger the pointer.
|
70 |
if ( 'dashboard' !== $screen->id || $this->base->get_api_credentials() ) {
|
71 |
return;
|
72 |
}
|
73 |
|
74 |
+
// Make sure the pointer hasn't been dismissed.
|
75 |
+
$dismissed = explode( ',', (string) get_user_meta( get_current_user_id(), 'dismissed_wp_pointers', true ) );
|
76 |
+
if ( in_array( 'om-welcome-pointer', $dismissed, true ) ) {
|
77 |
+
return;
|
78 |
+
}
|
79 |
+
|
80 |
$content = '<h3>' . esc_html__( 'Get More Leads, Subscribers and Sales Today!', 'optin-monster-api' ) . '</h3>';
|
81 |
$content .= '<div class="om-pointer-close-link"><a class="close" href="#"></a></div>';
|
82 |
$content .= '<h4>' . esc_html__( 'Grow Your Business with OptinMonster', 'optin-monster-api' ) . '</h4>';
|
83 |
$content .= '<p>' . esc_html__( 'Turn your website visitors into subscribers and customers with OptinMonster, the #1 conversion optimization toolkit in the world.', 'optin-monster-api' ) . '</p>';
|
84 |
$content .= '<p>' . esc_html__( 'For a limited time, get 50% off any plan AND get instant access to OptinMonster University - our exclusive training portal with over $2,000 worth of courses, courses, content and videos', 'optin-monster-api' ) . '<strong> ' . esc_html__( '100% Free!', 'optin-monster-api' ) . '</strong></p>';
|
85 |
+
$content .= '<p><a class="button button-primary" id="omPointerButton" href="' . $this->base->welcome->get_link() . '">' . esc_html__( 'Click Here to Learn More', 'optin-monster-api' ) . '</a>';
|
86 |
|
87 |
$pointer = array(
|
88 |
'id' => 'om-welcome-pointer',
|
89 |
+
'target' => '#toplevel_page_' . $this->base->menu->parent_slug(),
|
90 |
'options' => array(
|
91 |
'content' => $content,
|
92 |
'position' => array(
|
96 |
),
|
97 |
);
|
98 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
99 |
// Add pointers script to queue. Add custom script.
|
100 |
+
wp_enqueue_script(
|
101 |
+
$this->base->plugin_slug . '-pointer',
|
102 |
+
$this->base->url . 'assets/dist/js/pointer.min.js',
|
103 |
+
array( 'wp-pointer' ),
|
104 |
+
$this->base->asset_version(),
|
105 |
+
true
|
106 |
+
);
|
107 |
+
|
108 |
+
wp_enqueue_style(
|
109 |
+
$this->base->plugin_slug . '-pointer',
|
110 |
+
$this->base->url . 'assets/css/pointer.css',
|
111 |
+
array( 'wp-pointer' ),
|
112 |
+
$this->base->asset_version()
|
113 |
+
);
|
114 |
|
115 |
// Add pointer options to script.
|
116 |
wp_localize_script( $this->base->plugin_slug . '-pointer', 'omapiPointer', $pointer );
|
|
|
117 |
}
|
118 |
}
|
OMAPI/Refresh.php
CHANGED
@@ -54,7 +54,24 @@ class OMAPI_Refresh {
|
|
54 |
*
|
55 |
* @var array
|
56 |
*/
|
57 |
-
protected $api_args = array(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
58 |
|
59 |
/**
|
60 |
* Primary class constructor.
|
@@ -104,28 +121,24 @@ class OMAPI_Refresh {
|
|
104 |
/**
|
105 |
* Refresh the optins.
|
106 |
*
|
107 |
-
* @since
|
|
|
|
|
|
|
|
|
108 |
*/
|
109 |
-
public function refresh() {
|
110 |
-
$api = OMAPI_Api::build( 'v1', 'optins', 'GET' );
|
111 |
-
|
112 |
-
// Set additional flags.
|
113 |
-
$this->api_args['wp'] = $GLOBALS['wp_version'];
|
114 |
-
$this->api_args['restUrl'] = esc_url_raw( get_rest_url() );
|
115 |
-
$this->api_args['homeUrl'] = esc_url_raw( home_url() );
|
116 |
-
|
117 |
-
if ( OMAPI::is_woocommerce_active() ) {
|
118 |
-
$this->api_args['wc'] = OMAPI_WooCommerce::version();
|
119 |
-
}
|
120 |
|
121 |
$results = array();
|
122 |
-
$body = $api->request( $
|
123 |
|
124 |
// Loop through paginated requests until we have fetched all the campaigns.
|
125 |
while ( ! is_wp_error( $body ) || empty( $body ) ) {
|
126 |
-
$limit = absint( wp_remote_retrieve_header( $api->response, 'limit' ) );
|
127 |
-
$page = absint( wp_remote_retrieve_header( $api->response, 'page' ) );
|
128 |
-
$total = absint( wp_remote_retrieve_header( $api->response, 'total' ) );
|
129 |
$total_pages = ceil( $total / $limit );
|
130 |
$results = array_merge( $results, (array) $body );
|
131 |
|
@@ -134,44 +147,85 @@ class OMAPI_Refresh {
|
|
134 |
break;
|
135 |
}
|
136 |
|
137 |
-
$args = $this->api_args;
|
138 |
$args['page'] = $page + 1;
|
139 |
|
140 |
// Request the next page.
|
141 |
-
$body = $api->request( $args
|
142 |
}
|
143 |
|
144 |
if ( is_wp_error( $body ) ) {
|
145 |
-
|
146 |
-
|
147 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
148 |
}
|
149 |
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
|
|
|
|
|
|
|
|
|
|
154 |
}
|
155 |
|
156 |
-
|
157 |
-
|
158 |
|
159 |
-
|
160 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
161 |
|
162 |
-
|
163 |
-
$option = $this->base->get_option();
|
164 |
-
$option['is_invalid'] = false;
|
165 |
-
$option['is_expired'] = false;
|
166 |
-
$option['is_disabled'] = false;
|
167 |
-
$option['connected'] = time();
|
168 |
-
$option['siteIds'] = $sites['ids'];
|
169 |
-
$option['customApiUrl'] = $sites['customApiUrl'];
|
170 |
|
171 |
-
$this->
|
172 |
|
173 |
-
|
174 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
175 |
}
|
176 |
|
177 |
/**
|
@@ -180,10 +234,11 @@ class OMAPI_Refresh {
|
|
180 |
* @since 1.0.0
|
181 |
*/
|
182 |
public function error() {
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
|
|
|
187 |
}
|
188 |
|
189 |
/**
|
@@ -197,4 +252,72 @@ class OMAPI_Refresh {
|
|
197 |
<div class="updated"><p><?php esc_html_e( 'Your campaigns have been refreshed successfully.', 'optin-monster-api' ); ?></p></div>
|
198 |
<?php
|
199 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
200 |
}
|
54 |
*
|
55 |
* @var array
|
56 |
*/
|
57 |
+
protected $api_args = array(
|
58 |
+
'limit' => 100,
|
59 |
+
'status' => 'all',
|
60 |
+
);
|
61 |
+
|
62 |
+
/**
|
63 |
+
* OMAPI_Api object
|
64 |
+
*
|
65 |
+
* @var null|OMAPI_Api
|
66 |
+
*/
|
67 |
+
public $api = null;
|
68 |
+
|
69 |
+
/**
|
70 |
+
* WP_Error object if refresh fails.
|
71 |
+
*
|
72 |
+
* @var null|WP_Error
|
73 |
+
*/
|
74 |
+
public $error = null;
|
75 |
|
76 |
/**
|
77 |
* Primary class constructor.
|
121 |
/**
|
122 |
* Refresh the optins.
|
123 |
*
|
124 |
+
* @since 1.0.0
|
125 |
+
*
|
126 |
+
* @param string $api_key API key.
|
127 |
+
*
|
128 |
+
* @return WP_Error|bool True if successful.
|
129 |
*/
|
130 |
+
public function refresh( $api_key = null ) {
|
131 |
+
$this->api = OMAPI_Api::build( 'v1', 'optins', 'GET', $api_key ? array( 'apikey' => $api_key ) : $api_key );
|
132 |
+
$args = $this->setup_api( $api_key, $this->api_args );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
133 |
|
134 |
$results = array();
|
135 |
+
$body = $this->api->request( $args );
|
136 |
|
137 |
// Loop through paginated requests until we have fetched all the campaigns.
|
138 |
while ( ! is_wp_error( $body ) || empty( $body ) ) {
|
139 |
+
$limit = absint( wp_remote_retrieve_header( $this->api->response, 'limit' ) );
|
140 |
+
$page = absint( wp_remote_retrieve_header( $this->api->response, 'page' ) );
|
141 |
+
$total = absint( wp_remote_retrieve_header( $this->api->response, 'total' ) );
|
142 |
$total_pages = ceil( $total / $limit );
|
143 |
$results = array_merge( $results, (array) $body );
|
144 |
|
147 |
break;
|
148 |
}
|
149 |
|
|
|
150 |
$args['page'] = $page + 1;
|
151 |
|
152 |
// Request the next page.
|
153 |
+
$body = $this->api->request( $args );
|
154 |
}
|
155 |
|
156 |
if ( is_wp_error( $body ) ) {
|
157 |
+
$this->handle_error( $body );
|
158 |
+
} else {
|
159 |
+
// Store the optin data.
|
160 |
+
$this->base->save->store_optins( $results );
|
161 |
+
|
162 |
+
// Update our sites as well
|
163 |
+
$result = $this->base->sites->fetch( $api_key );
|
164 |
+
|
165 |
+
// Update the option to remove stale error messages.
|
166 |
+
$option = $this->base->get_option();
|
167 |
+
$option['is_invalid'] = false;
|
168 |
+
$option['is_expired'] = false;
|
169 |
+
$option['is_disabled'] = false;
|
170 |
+
$option['connected'] = time();
|
171 |
+
if ( is_wp_error( $result ) ) {
|
172 |
+
$this->error = $result;
|
173 |
+
} else {
|
174 |
+
$option = array_merge( $option, $result );
|
175 |
}
|
176 |
|
177 |
+
$this->base->save->update_option( $option, $this->view );
|
178 |
+
}
|
179 |
+
|
180 |
+
add_action( 'all_admin_notices', array( $this, 'error' ) );
|
181 |
+
|
182 |
+
if ( ! $this->error ) {
|
183 |
+
|
184 |
+
// Set success message.
|
185 |
+
add_action( 'all_admin_notices', array( $this, 'message' ) );
|
186 |
}
|
187 |
|
188 |
+
return $this->error ? $this->error : true;
|
189 |
+
}
|
190 |
|
191 |
+
/**
|
192 |
+
* Trigger a refresh for given campaign.
|
193 |
+
*
|
194 |
+
* @since 1.9.10
|
195 |
+
*
|
196 |
+
* @param string $campaign_id The campaign id (slug).
|
197 |
+
* @param mixed $is_legacy Whether campaign is legacy.
|
198 |
+
*
|
199 |
+
* @return WP_Error|bool True if successful.
|
200 |
+
*/
|
201 |
+
public function sync( $campaign_id, $is_legacy ) {
|
202 |
+
$path = "for-wp/{$campaign_id}";
|
203 |
+
if ( $is_legacy ) {
|
204 |
+
$path .= '?legacy=true';
|
205 |
+
}
|
206 |
|
207 |
+
$this->api = OMAPI_Api::build( 'v1', $path, 'GET' );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
208 |
|
209 |
+
$body = $this->api->request( $this->setup_api() );
|
210 |
|
211 |
+
if ( is_wp_error( $body ) ) {
|
212 |
+
|
213 |
+
// If campaign is gone, delete the optin.
|
214 |
+
if (
|
215 |
+
'campaign-error' === $body->get_error_code()
|
216 |
+
&& (string) '404' === (string) $body->get_error_data()
|
217 |
+
) {
|
218 |
+
$result = $this->base->save->delete_optin( $campaign_id, true );
|
219 |
+
}
|
220 |
+
|
221 |
+
$this->handle_error( $body );
|
222 |
+
} else {
|
223 |
+
|
224 |
+
// Store the optin data.
|
225 |
+
$this->base->save->add_optins( (array) $body, false );
|
226 |
+
}
|
227 |
+
|
228 |
+
return $this->error ? $this->error : true;
|
229 |
}
|
230 |
|
231 |
/**
|
234 |
* @since 1.0.0
|
235 |
*/
|
236 |
public function error() {
|
237 |
+
if ( is_wp_error( $this->error ) ) {
|
238 |
+
?>
|
239 |
+
<div class="updated error"><p><?php echo $this->error->get_error_message(); ?></p></div>
|
240 |
+
<?php
|
241 |
+
}
|
242 |
}
|
243 |
|
244 |
/**
|
252 |
<div class="updated"><p><?php esc_html_e( 'Your campaigns have been refreshed successfully.', 'optin-monster-api' ); ?></p></div>
|
253 |
<?php
|
254 |
}
|
255 |
+
|
256 |
+
/**
|
257 |
+
* Gets contextual info for API requests.
|
258 |
+
*
|
259 |
+
* @since 1.9.10
|
260 |
+
*
|
261 |
+
* @param array $args Array of args.
|
262 |
+
*
|
263 |
+
* @return arry Modified array of args.
|
264 |
+
*/
|
265 |
+
public function get_info_args( $args = array() ) {
|
266 |
+
|
267 |
+
// Set additional flags.
|
268 |
+
$args['wp'] = $GLOBALS['wp_version'];
|
269 |
+
$args['v'] = $this->base->asset_version();
|
270 |
+
$args['restUrl'] = esc_url_raw( get_rest_url() );
|
271 |
+
$args['homeUrl'] = esc_url_raw( home_url() );
|
272 |
+
|
273 |
+
if ( OMAPI::is_woocommerce_active() ) {
|
274 |
+
$args['wc'] = OMAPI_WooCommerce::version();
|
275 |
+
}
|
276 |
+
|
277 |
+
return $args;
|
278 |
+
}
|
279 |
+
|
280 |
+
/**
|
281 |
+
* Handles setting up the API request.
|
282 |
+
*
|
283 |
+
* @since 1.9.10
|
284 |
+
*
|
285 |
+
* @param string $api_key API key.
|
286 |
+
* @param array $args Array of request args.
|
287 |
+
*
|
288 |
+
* @return arry Modified array of request args.
|
289 |
+
*/
|
290 |
+
protected function setup_api( $api_key = null, $args = array() ) {
|
291 |
+
if ( $api_key ) {
|
292 |
+
$this->api->set( 'apikey', $api_key );
|
293 |
+
}
|
294 |
+
|
295 |
+
$this->api->clear_additional_data();
|
296 |
+
|
297 |
+
// Set additional flags.
|
298 |
+
return $this->get_info_args( $args );
|
299 |
+
}
|
300 |
+
|
301 |
+
/**
|
302 |
+
* Handles errors occurring during refresh.
|
303 |
+
*
|
304 |
+
* @since 1.9.10
|
305 |
+
*
|
306 |
+
* @param WP_Error $error WP_Error object.
|
307 |
+
*
|
308 |
+
* @return OMAPI_Refresh
|
309 |
+
*/
|
310 |
+
protected function handle_error( $error ) {
|
311 |
+
|
312 |
+
// If no optins available, make sure they get deleted.
|
313 |
+
if ( in_array( $error->get_error_code(), array( 'optins', 'no-campaigns-error' ), true ) ) {
|
314 |
+
$this->base->save->store_optins( array() );
|
315 |
+
}
|
316 |
+
|
317 |
+
// Set an error message.
|
318 |
+
$this->error = $error;
|
319 |
+
|
320 |
+
return $this;
|
321 |
+
}
|
322 |
+
|
323 |
}
|
OMAPI/RestApi.php
CHANGED
@@ -35,8 +35,8 @@ class OMAPI_RestApi {
|
|
35 |
*/
|
36 |
protected $namespace = 'omapp/v1';
|
37 |
|
38 |
-
public function __construct(
|
39 |
-
$this->base
|
40 |
$this->register_rest_routes();
|
41 |
}
|
42 |
|
@@ -48,44 +48,410 @@ class OMAPI_RestApi {
|
|
48 |
* @return void
|
49 |
*/
|
50 |
public function register_rest_routes() {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
51 |
register_rest_route(
|
52 |
$this->namespace,
|
53 |
-
'
|
54 |
array(
|
55 |
-
'methods'
|
56 |
-
'
|
|
|
57 |
)
|
58 |
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
59 |
}
|
60 |
|
61 |
/**
|
62 |
-
*
|
63 |
*
|
64 |
-
* @since 1.
|
65 |
*
|
66 |
* @param WP_REST_Request The REST Request
|
67 |
* @return WP_REST_Response The API Response
|
68 |
*/
|
69 |
-
public function
|
70 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
71 |
|
72 |
-
|
73 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
74 |
|
75 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
76 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
77 |
return new WP_REST_Response(
|
78 |
-
array( 'message' => esc_html__( '
|
79 |
-
|
80 |
);
|
81 |
}
|
82 |
|
|
|
|
|
83 |
return new WP_REST_Response(
|
84 |
-
array( 'message' => esc_html__( '
|
85 |
-
|
86 |
);
|
87 |
}
|
88 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
89 |
/**
|
90 |
* Validate this API Key
|
91 |
* We validate an API Key by fetching the Sites this key can fetch
|
@@ -94,11 +460,15 @@ class OMAPI_RestApi {
|
|
94 |
* @since 1.8.0
|
95 |
*
|
96 |
* @param string $api_key
|
|
|
97 |
* @return bool True if the Key can be validated
|
98 |
*/
|
99 |
public function validate_api_key( $api_key ) {
|
100 |
-
$
|
101 |
-
|
|
|
|
|
|
|
102 |
|
103 |
if ( empty( $site_ids ) ) {
|
104 |
return false;
|
@@ -106,12 +476,12 @@ class OMAPI_RestApi {
|
|
106 |
|
107 |
$api_key_sites = $this->base->sites->fetch( $api_key );
|
108 |
|
109 |
-
if ( empty( $api_key_sites ) ) {
|
110 |
return false;
|
111 |
}
|
112 |
|
113 |
foreach ( $site_ids as $site_id ) {
|
114 |
-
if ( in_array( $site_id, $api_key_sites['
|
115 |
return true;
|
116 |
}
|
117 |
}
|
35 |
*/
|
36 |
protected $namespace = 'omapp/v1';
|
37 |
|
38 |
+
public function __construct() {
|
39 |
+
$this->base = OMAPI::get_instance();
|
40 |
$this->register_rest_routes();
|
41 |
}
|
42 |
|
48 |
* @return void
|
49 |
*/
|
50 |
public function register_rest_routes() {
|
51 |
+
|
52 |
+
add_filter( 'rest_pre_serve_request', array( $this, 'allow_headers' ) );
|
53 |
+
|
54 |
+
// Fetch some quick info about this WP installation
|
55 |
+
register_rest_route(
|
56 |
+
$this->namespace,
|
57 |
+
'info',
|
58 |
+
array(
|
59 |
+
'methods' => 'GET',
|
60 |
+
'permission_callback' => array( $this, 'logged_in_or_has_api_key' ),
|
61 |
+
'callback' => array( $this, 'output_info' ),
|
62 |
+
)
|
63 |
+
);
|
64 |
+
|
65 |
+
// Fetch in-depth support info about this WP installation.
|
66 |
register_rest_route(
|
67 |
$this->namespace,
|
68 |
+
'support',
|
69 |
array(
|
70 |
+
'methods' => 'GET',
|
71 |
+
'permission_callback' => array( $this, 'logged_in_or_has_api_key' ),
|
72 |
+
'callback' => array( $this, 'support_info' ),
|
73 |
)
|
74 |
);
|
75 |
+
|
76 |
+
// Route for triggering refreshing/syncing of all campaigns.
|
77 |
+
// TODO: Keeping for future settings revamp.
|
78 |
+
register_rest_route(
|
79 |
+
$this->namespace,
|
80 |
+
'/campaigns/refresh',
|
81 |
+
array(
|
82 |
+
'methods' => 'POST',
|
83 |
+
'permission_callback' => array( $this, 'has_valid_api_key' ),
|
84 |
+
'callback' => array( $this, 'refresh_campaigns' ),
|
85 |
+
)
|
86 |
+
);
|
87 |
+
|
88 |
+
// Route for fetching the campaign data for specific campaign.
|
89 |
+
// TODO: Keeping for future settings revamp.
|
90 |
+
register_rest_route(
|
91 |
+
$this->namespace,
|
92 |
+
'/campaigns/(?P<id>\w+)',
|
93 |
+
array(
|
94 |
+
'methods' => 'GET',
|
95 |
+
'permission_callback' => array( $this, 'logged_in_or_has_api_key' ),
|
96 |
+
'callback' => array( $this, 'get_campaign_data' ),
|
97 |
+
)
|
98 |
+
);
|
99 |
+
|
100 |
+
// Route for updating the campaign data
|
101 |
+
// TODO: Keeping for future settings revamp.
|
102 |
+
register_rest_route(
|
103 |
+
$this->namespace,
|
104 |
+
'/campaigns/(?P<id>\w+)',
|
105 |
+
array(
|
106 |
+
'methods' => 'PUT',
|
107 |
+
'permission_callback' => array( $this, 'has_valid_api_key' ),
|
108 |
+
'callback' => array( $this, 'update_campaign_data' ),
|
109 |
+
)
|
110 |
+
);
|
111 |
+
|
112 |
+
// Route for triggering refreshing/syncing of a single campaign.
|
113 |
+
// TODO: Keeping for future settings revamp.
|
114 |
+
register_rest_route(
|
115 |
+
$this->namespace,
|
116 |
+
'/campaigns/(?P<id>[\w-]+)/sync',
|
117 |
+
array(
|
118 |
+
'methods' => 'POST',
|
119 |
+
'permission_callback' => array( $this, 'has_valid_api_key' ),
|
120 |
+
'callback' => array( $this, 'sync_campaign' ),
|
121 |
+
)
|
122 |
+
);
|
123 |
+
|
124 |
+
// Route for fetching the campaign data
|
125 |
+
// TODO: Keeping for future settings revamp.
|
126 |
+
register_rest_route(
|
127 |
+
$this->namespace,
|
128 |
+
'/campaign-dashboard',
|
129 |
+
array(
|
130 |
+
'methods' => 'GET',
|
131 |
+
'permission_callback' => array( $this, 'logged_in_or_has_api_key' ),
|
132 |
+
'callback' => array( $this, 'get_campaigns_data' ),
|
133 |
+
)
|
134 |
+
);
|
135 |
+
}
|
136 |
+
|
137 |
+
public function allow_headers() {
|
138 |
+
header( 'Access-Control-Allow-Headers: X-OptinMonster-ApiKey, content-type' );
|
139 |
}
|
140 |
|
141 |
/**
|
142 |
+
* Triggers refreshing our campaigns.
|
143 |
*
|
144 |
+
* @since 1.9.10
|
145 |
*
|
146 |
* @param WP_REST_Request The REST Request
|
147 |
* @return WP_REST_Response The API Response
|
148 |
*/
|
149 |
+
public function refresh_campaigns( $request ) {
|
150 |
+
$this->base->refresh->refresh();
|
151 |
+
|
152 |
+
return new WP_REST_Response(
|
153 |
+
array( 'message' => esc_html__( 'OK', 'optin-monster-api' ) ),
|
154 |
+
200
|
155 |
+
);
|
156 |
+
}
|
157 |
|
158 |
+
/**
|
159 |
+
* Fetch some quick info about this WP installation
|
160 |
+
* (WP version, plugin version, rest url, home url, WooCommerce version)
|
161 |
+
*
|
162 |
+
* @since 1.9.10
|
163 |
+
*
|
164 |
+
* @param WP_REST_Request The REST Request
|
165 |
+
*
|
166 |
+
* @return WP_REST_Response
|
167 |
+
*/
|
168 |
+
public function output_info( $request ) {
|
169 |
+
return new WP_REST_Response( $this->base->refresh->get_info_args(), 200 );
|
170 |
+
}
|
171 |
|
172 |
+
/**
|
173 |
+
* Fetch in-depth support info about this WP installation.
|
174 |
+
* Used for the debug PDF, but can also be requested by support staff with the right api key.
|
175 |
+
*
|
176 |
+
* @since 1.9.10
|
177 |
+
*
|
178 |
+
* @param WP_REST_Request The REST Request
|
179 |
+
*
|
180 |
+
* @return WP_REST_Response
|
181 |
+
*/
|
182 |
+
public function support_info( $request ) {
|
183 |
+
$support = new OMAPI_Support();
|
184 |
+
|
185 |
+
$format = $request->get_param( 'format' );
|
186 |
+
if ( empty( $format ) ) {
|
187 |
+
$format = 'raw';
|
188 |
+
}
|
189 |
|
190 |
+
return new WP_REST_Response( $support->get_support_data( $format ), 200 );
|
191 |
+
}
|
192 |
+
|
193 |
+
/**
|
194 |
+
* Triggering refreshing/syncing of a single campaign.
|
195 |
+
*
|
196 |
+
* @since 1.9.10
|
197 |
+
*
|
198 |
+
* @param WP_REST_Request The REST Request
|
199 |
+
* @return WP_REST_Response The API Response
|
200 |
+
*/
|
201 |
+
public function sync_campaign( $request ) {
|
202 |
+
$campaign_id = $request->get_param( 'id' );
|
203 |
+
|
204 |
+
if ( empty( $campaign_id ) ) {
|
205 |
return new WP_REST_Response(
|
206 |
+
array( 'message' => esc_html__( 'No campaign ID given.', 'optin-monster-api' ) ),
|
207 |
+
401
|
208 |
);
|
209 |
}
|
210 |
|
211 |
+
$this->base->refresh->sync( $campaign_id, $request->get_param( 'legacy' ) );
|
212 |
+
|
213 |
return new WP_REST_Response(
|
214 |
+
array( 'message' => esc_html__( 'OK', 'optin-monster-api' ) ),
|
215 |
+
200
|
216 |
);
|
217 |
}
|
218 |
|
219 |
+
/**
|
220 |
+
* Gets all the data needed for the campaign dashboard for a given campaign.
|
221 |
+
*
|
222 |
+
* @since 1.9.10
|
223 |
+
*
|
224 |
+
* @param WP_REST_Request The REST Request
|
225 |
+
* @return WP_REST_Response The API Response
|
226 |
+
*/
|
227 |
+
public function get_campaign_data( $request ) {
|
228 |
+
$campaign_id = $request->get_param( 'id' );
|
229 |
+
|
230 |
+
if ( empty( $campaign_id ) ) {
|
231 |
+
return new WP_REST_Response(
|
232 |
+
array( 'message' => esc_html__( 'No campaign ID given.', 'optin-monster-api' ) ),
|
233 |
+
401
|
234 |
+
);
|
235 |
+
}
|
236 |
+
|
237 |
+
$campaign = $this->base->get_optin_by_slug( $campaign_id );
|
238 |
+
if ( empty( $campaign->ID ) ) {
|
239 |
+
return new WP_REST_Response(
|
240 |
+
array(
|
241 |
+
'message' => sprintf( esc_html__( 'Could not find campaign by given ID: %s.', 'optin-monster-api' ), $campaign_id ),
|
242 |
+
),
|
243 |
+
401
|
244 |
+
);
|
245 |
+
}
|
246 |
+
|
247 |
+
// Get Campaigns Data
|
248 |
+
$data = $this->base->collect_campaign_data( $campaign );
|
249 |
+
$data = apply_filters( 'optin_monster_api_setting_ui_data_for_campaign', $data, $campaign );
|
250 |
+
|
251 |
+
return new WP_REST_Response( $data, 200 );
|
252 |
+
}
|
253 |
+
|
254 |
+
/**
|
255 |
+
* Updates data for given campaign.
|
256 |
+
*
|
257 |
+
* @since 1.9.10
|
258 |
+
*
|
259 |
+
* @param WP_REST_Request The REST Request
|
260 |
+
*
|
261 |
+
* @return WP_REST_Response The API Response
|
262 |
+
*/
|
263 |
+
public function update_campaign_data( $request ) {
|
264 |
+
$campaign_id = $request->get_param( 'id' );
|
265 |
+
|
266 |
+
// If no campaign_id, return error
|
267 |
+
|
268 |
+
$campaign = $this->base->get_optin_by_slug( $campaign_id );
|
269 |
+
|
270 |
+
// If no campaign, return 404
|
271 |
+
|
272 |
+
// Get the Request Params
|
273 |
+
$fields = json_decode( $request->get_body(), true );
|
274 |
+
|
275 |
+
if ( ! empty( $fields['taxonomies'] ) ) {
|
276 |
+
|
277 |
+
if ( isset( $fields['taxonomies']['categories'] ) ) {
|
278 |
+
$fields['categories'] = $fields['taxonomies']['categories'];
|
279 |
+
}
|
280 |
+
|
281 |
+
// Save the data from the regular taxonomies fields into the WC specific tax field.
|
282 |
+
// For back-compatibility.
|
283 |
+
$fields['is_wc_product_category'] = isset( $fields['taxonomies']['product_cat'] )
|
284 |
+
? $fields['taxonomies']['product_cat']
|
285 |
+
: array();
|
286 |
+
$fields['is_wc_product_tag'] = isset( $fields['taxonomies']['product_tag'] )
|
287 |
+
? $fields['taxonomies']['product_tag']
|
288 |
+
: array();
|
289 |
+
}
|
290 |
+
|
291 |
+
// Escape Parameters as needed
|
292 |
+
// Update Post Meta
|
293 |
+
foreach ( $fields as $key => $value ) {
|
294 |
+
$value = $this->sanitize( $value );
|
295 |
+
|
296 |
+
switch ( $key ) {
|
297 |
+
default:
|
298 |
+
update_post_meta( $campaign->ID, '_omapi_' . $key, $value );
|
299 |
+
}
|
300 |
+
}
|
301 |
+
|
302 |
+
return new WP_REST_Response(
|
303 |
+
array( 'message' => esc_html__( 'OK', 'optin-monster-api' ) ),
|
304 |
+
200
|
305 |
+
);
|
306 |
+
}
|
307 |
+
|
308 |
+
/**
|
309 |
+
* Gets all the data needed for the campaigns.
|
310 |
+
*
|
311 |
+
* @since 1.9.10
|
312 |
+
*
|
313 |
+
* @param WP_REST_Request The REST Request
|
314 |
+
* @return WP_REST_Response The API Response
|
315 |
+
*/
|
316 |
+
public function get_campaigns_data( $request ) {
|
317 |
+
global $wpdb;
|
318 |
+
|
319 |
+
if ( $request->get_param( 'refresh' ) ) {
|
320 |
+
$this->base->refresh->refresh();
|
321 |
+
}
|
322 |
+
|
323 |
+
// Get Campaigns Data
|
324 |
+
$campaigns = $this->base->get_optins();
|
325 |
+
$campaigns = ! empty( $campaigns ) ? $campaigns : array();
|
326 |
+
$campaign_data = array();
|
327 |
+
|
328 |
+
foreach ( $campaigns as $campaign ) {
|
329 |
+
$campaign_data[] = $this->base->collect_campaign_data( $campaign );
|
330 |
+
}
|
331 |
+
|
332 |
+
$woo = $this->base->is_woocommerce_active();
|
333 |
+
$mp = $this->base->is_mailpoet_active();
|
334 |
+
|
335 |
+
// Get Taxonomies Data
|
336 |
+
$taxonomies = get_taxonomies( array( 'public' => true ), 'objects' );
|
337 |
+
$taxonomies = apply_filters( 'optin_monster_api_setting_ui_taxonomies', $taxonomies );
|
338 |
+
$taxonomy_map = array();
|
339 |
+
$cats = get_categories();
|
340 |
+
$taxonomy_map['categories'] = array(
|
341 |
+
'name' => 'categories',
|
342 |
+
'label' => 'Post categories',
|
343 |
+
'terms' => is_array( $cats ) ? array_values( $cats ) : array(),
|
344 |
+
'wc' => false,
|
345 |
+
);
|
346 |
+
|
347 |
+
$ignore = array(
|
348 |
+
'category' => 1,
|
349 |
+
);
|
350 |
+
foreach ( $taxonomies as $taxonomy ) {
|
351 |
+
if ( isset( $ignore[ $taxonomy->name ] ) ) {
|
352 |
+
continue;
|
353 |
+
}
|
354 |
+
$terms = get_terms(
|
355 |
+
array(
|
356 |
+
'taxonomy' => $taxonomy->name,
|
357 |
+
'get' => 'all',
|
358 |
+
)
|
359 |
+
);
|
360 |
+
$taxonomy_map[ $taxonomy->name ] = array(
|
361 |
+
'name' => $taxonomy->name,
|
362 |
+
'label' => ucwords( $taxonomy->label ),
|
363 |
+
'terms' => is_array( $terms ) ? array_values( $terms ) : array(),
|
364 |
+
'wc' => $woo && 0 === strpos( $taxonomy->name, 'product_' ),
|
365 |
+
);
|
366 |
+
}
|
367 |
+
|
368 |
+
// Get "Config" data
|
369 |
+
$config = array(
|
370 |
+
'hasMailPoet' => $mp,
|
371 |
+
'hasWooCommerce' => $woo,
|
372 |
+
'mailPoetLists' => $mp ? $this->base->mailpoet->get_lists() : array(),
|
373 |
+
);
|
374 |
+
|
375 |
+
// Posts query.
|
376 |
+
$post_types = implode( '","', get_post_types( array( 'public' => true ) ) );
|
377 |
+
$posts = $wpdb->get_results( "SELECT ID AS `value`, post_title AS `name` FROM {$wpdb->prefix}posts WHERE post_type IN (\"{$post_types}\") AND post_status IN('publish', 'future') ORDER BY post_title ASC", ARRAY_A );
|
378 |
+
|
379 |
+
$response_data = apply_filters(
|
380 |
+
'optin_monster_api_setting_ui_data',
|
381 |
+
array(
|
382 |
+
'campaigns' => $campaign_data,
|
383 |
+
'taxonomies' => $taxonomy_map,
|
384 |
+
'config' => $config,
|
385 |
+
'posts' => $posts,
|
386 |
+
'post_types' => array_values( get_post_types( array( 'public' => true ), 'object' ) ),
|
387 |
+
)
|
388 |
+
);
|
389 |
+
|
390 |
+
return new WP_REST_Response( $response_data, 200 );
|
391 |
+
}
|
392 |
+
|
393 |
+
/**
|
394 |
+
* Sanitize value recursively.
|
395 |
+
*
|
396 |
+
* @since 1.9.10
|
397 |
+
*
|
398 |
+
* @param mixed $value
|
399 |
+
*
|
400 |
+
* @return mixed
|
401 |
+
*/
|
402 |
+
public function sanitize( $value ) {
|
403 |
+
if ( empty( $value ) ) {
|
404 |
+
return $value;
|
405 |
+
}
|
406 |
+
|
407 |
+
if ( is_scalar( $value ) ) {
|
408 |
+
return sanitize_text_field( $value );
|
409 |
+
}
|
410 |
+
|
411 |
+
if ( is_array( $value ) ) {
|
412 |
+
return array_map( array( $this, 'sanitize' ), $value );
|
413 |
+
}
|
414 |
+
}
|
415 |
+
|
416 |
+
/**
|
417 |
+
* Determine if OM API key is provided and valid.
|
418 |
+
*
|
419 |
+
* @since 1.9.10
|
420 |
+
*
|
421 |
+
* @param WP_REST_Request The REST Request
|
422 |
+
*
|
423 |
+
* @return bool
|
424 |
+
*/
|
425 |
+
public function has_valid_api_key( $request ) {
|
426 |
+
$header = $request->get_header( 'X-OptinMonster-ApiKey' );
|
427 |
+
|
428 |
+
// Use this API Key to validate
|
429 |
+
if ( ! $this->validate_api_key( $header ) ) {
|
430 |
+
return new WP_Error(
|
431 |
+
'omapp_rest_forbidden',
|
432 |
+
esc_html__( 'Could not verify your API Key.', 'optin-monster-api' ),
|
433 |
+
array(
|
434 |
+
'status' => rest_authorization_required_code(),
|
435 |
+
)
|
436 |
+
);
|
437 |
+
}
|
438 |
+
|
439 |
+
return true;
|
440 |
+
}
|
441 |
+
|
442 |
+
/**
|
443 |
+
* Determine if logged in or OM API key is provided and valid.
|
444 |
+
*
|
445 |
+
* @since 1.9.10
|
446 |
+
*
|
447 |
+
* @param WP_REST_Request The REST Request
|
448 |
+
*
|
449 |
+
* @return bool
|
450 |
+
*/
|
451 |
+
public function logged_in_or_has_api_key( $request ) {
|
452 |
+
return is_user_logged_in() || true === $this->has_valid_api_key( $request );
|
453 |
+
}
|
454 |
+
|
455 |
/**
|
456 |
* Validate this API Key
|
457 |
* We validate an API Key by fetching the Sites this key can fetch
|
460 |
* @since 1.8.0
|
461 |
*
|
462 |
* @param string $api_key
|
463 |
+
*
|
464 |
* @return bool True if the Key can be validated
|
465 |
*/
|
466 |
public function validate_api_key( $api_key ) {
|
467 |
+
if ( empty( $api_key ) ) {
|
468 |
+
return false;
|
469 |
+
}
|
470 |
+
|
471 |
+
$site_ids = $this->base->get_site_ids();
|
472 |
|
473 |
if ( empty( $site_ids ) ) {
|
474 |
return false;
|
476 |
|
477 |
$api_key_sites = $this->base->sites->fetch( $api_key );
|
478 |
|
479 |
+
if ( is_wp_error( $api_key_sites ) || empty( $api_key_sites['siteIds'] ) ) {
|
480 |
return false;
|
481 |
}
|
482 |
|
483 |
foreach ( $site_ids as $site_id ) {
|
484 |
+
if ( in_array( $site_id, $api_key_sites['siteIds'] ) ) {
|
485 |
return true;
|
486 |
}
|
487 |
}
|
OMAPI/Review.php
CHANGED
@@ -117,45 +117,15 @@ class OMAPI_Review {
|
|
117 |
// We have a candidate! Output a review message.
|
118 |
|
119 |
wp_enqueue_script( $this->base->plugin_slug . '-notice', plugins_url( 'assets/js/notice.js', OMAPI_FILE ), array( 'jquery' ), $this->base->version, true );
|
120 |
-
wp_localize_script(
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
<a href="#" class="button button-primary om-review-btns" data-res="yes" rel="noopener"><?php esc_html_e( 'Yes!', 'optin-monster-api' ); ?> 🙂</a>
|
130 |
-
<a href="#" class="button button-secondary om-review-btns" data-res="no" target="_blank" rel="noopener"><?php esc_html_e( 'Not Really!', 'optin-monster-api' ); ?></a>
|
131 |
-
<?php if ( ! $this->base->get_api_credentials() ) : ?>
|
132 |
-
<a href="<?php echo esc_url( admin_url( 'admin.php?page=optin-monster-api-welcome' ) ); ?>" class="om-dismiss-review-notice om-dismiss-review-notice-delay button button-secondary" rel="noopener">
|
133 |
-
<?php esc_html_e( 'What is OptinMonster?', 'optin-monster-api' ); ?>
|
134 |
-
</a>
|
135 |
-
<?php endif; ?>
|
136 |
-
</p>
|
137 |
-
</div>
|
138 |
-
<br>
|
139 |
-
<div class="om-notice-review">
|
140 |
-
<div class="om-steps om-step-yes" style="display: none">
|
141 |
-
<p><?php esc_html_e( 'That\'s awesome! Could you please do me a BIG favor and give it a 5-star rating on WordPress to help us spread the word and boost our motivation?', 'optin-monster-api' ); ?></p>
|
142 |
-
<p><strong>~ Thomas Griffin<br><?php printf( esc_html__( 'Co-Founder of %1$s', 'optin-monster-api' ), 'OptinMonster' ); ?></strong></p>
|
143 |
-
<p>
|
144 |
-
<a href="https://wordpress.org/support/plugin/optinmonster/reviews/?filter=5#new-post" class="om-dismiss-review-notice button button-primary" target="_blank" rel="noopener noreferrer"><?php esc_html_e( 'Ok, you deserve it', 'optin-monster-api' ); ?></a>
|
145 |
-
<a href="#" class="om-dismiss-review-notice om-dismiss-review-notice-delay" rel="noopener noreferrer"><?php esc_html_e( 'Nope, maybe later!', 'optin-monster-api' ); ?></a>
|
146 |
-
<a href="#" class="om-dismiss-review-notice" rel="noopener noreferrer"><?php esc_html_e( 'I already did!', 'optin-monster-api' ); ?></a>
|
147 |
-
</p>
|
148 |
-
</div>
|
149 |
-
<div class="om-steps om-step-no" style="display: none">
|
150 |
-
<p><?php printf( esc_html__( 'We\'re sorry to hear you aren\'t enjoying %1$s. We would love a chance to improve. Could you take a minute and let us know what we can do better?', 'optin-monster-api' ), 'OptinMonster' ); ?></p>
|
151 |
-
<p>
|
152 |
-
<a href="https://optinmonster.com/plugin-review-feedback/" class="om-dismiss-review-notice button button-primary" target="_blank" rel="noopener noreferrer"><?php esc_html_e( 'Give feedback', 'optin-monster-api' ); ?></a>
|
153 |
-
<a href="#" class="om-dismiss-review-notice" rel="noopener noreferrer"><?php esc_html_e( 'No thanks!', 'optin-monster-api' ); ?></a>
|
154 |
-
</p>
|
155 |
-
</div>
|
156 |
-
</div>
|
157 |
-
</div>
|
158 |
-
<?php
|
159 |
}
|
160 |
|
161 |
/**
|
117 |
// We have a candidate! Output a review message.
|
118 |
|
119 |
wp_enqueue_script( $this->base->plugin_slug . '-notice', plugins_url( 'assets/js/notice.js', OMAPI_FILE ), array( 'jquery' ), $this->base->version, true );
|
120 |
+
wp_localize_script(
|
121 |
+
$this->base->plugin_slug . '-notice',
|
122 |
+
'omNotice',
|
123 |
+
array(
|
124 |
+
'nonce' => wp_create_nonce( 'om-review-nonce' ),
|
125 |
+
)
|
126 |
+
);
|
127 |
+
|
128 |
+
$this->base->output_view( 'review.php' );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
129 |
}
|
130 |
|
131 |
/**
|
OMAPI/Rules.php
CHANGED
@@ -20,10 +20,11 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
20 |
*/
|
21 |
class OMAPI_Rules_Exception extends Exception {
|
22 |
protected $bool = null;
|
|
|
23 |
public function __construct( $message = null, $code = 0, Exception $previous = null ) {
|
24 |
if ( is_bool( $message ) ) {
|
25 |
$this->bool = $message;
|
26 |
-
$message
|
27 |
}
|
28 |
parent::__construct( $message, $code, $previous );
|
29 |
}
|
@@ -31,6 +32,15 @@ class OMAPI_Rules_Exception extends Exception {
|
|
31 |
public function get_bool() {
|
32 |
return $this->bool;
|
33 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
34 |
}
|
35 |
class OMAPI_Rules_False extends OMAPI_Rules_Exception {
|
36 |
protected $bool = false;
|
@@ -66,9 +76,6 @@ class OMAPI_Rules {
|
|
66 |
'taxonomies',
|
67 |
'show',
|
68 |
'type',
|
69 |
-
'shortcode',
|
70 |
-
'shortcode_output',
|
71 |
-
'mailpoet',
|
72 |
'test',
|
73 |
'show_on_woocommerce',
|
74 |
'is_wc_shop',
|
@@ -157,6 +164,13 @@ class OMAPI_Rules {
|
|
157 |
*/
|
158 |
public static $last_instance = null;
|
159 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
160 |
/**
|
161 |
* Primary class constructor.
|
162 |
*
|
@@ -175,7 +189,7 @@ class OMAPI_Rules {
|
|
175 |
$this->is_inline_check = $is_inline_check;
|
176 |
$this->global_override = ! $is_inline_check;
|
177 |
|
178 |
-
self::$last_instance
|
179 |
}
|
180 |
|
181 |
/**
|
@@ -297,18 +311,23 @@ class OMAPI_Rules {
|
|
297 |
$this->include_if_inline_and_automatic_and_no_advanced_settings();
|
298 |
$this->output_if_global_override();
|
299 |
|
300 |
-
|
301 |
-
|
|
|
|
|
|
|
|
|
|
|
302 |
|
303 |
} catch ( OMAPI_Rules_Exception $e ) {
|
304 |
-
$this->caught
|
305 |
$should_output = $e instanceof OMAPI_Rules_True;
|
306 |
}
|
307 |
|
308 |
$rules_debug = ! empty( $_GET['omwpdebug'] );
|
309 |
|
310 |
if ( $rules_debug ) {
|
311 |
-
$option
|
312 |
$rules_debug = ! empty( $option['api']['omwpdebug'] ) || is_user_logged_in() && apply_filters( 'optin_monster_api_menu_cap', 'manage_options', '' );
|
313 |
}
|
314 |
|
@@ -424,7 +443,7 @@ class OMAPI_Rules {
|
|
424 |
|
425 |
// Set flag for possibly not loading globally.
|
426 |
if ( $this->field_not_empty_array( 'only' ) ) {
|
427 |
-
$this->global_override
|
428 |
$this->advanced_settings['show'] = $this->get_field_value( 'only' );
|
429 |
|
430 |
// If the optin is only to be shown on specific post IDs...
|
@@ -446,6 +465,7 @@ class OMAPI_Rules {
|
|
446 |
if ( $e instanceof OMAPI_Rules_True ) {
|
447 |
throw new OMAPI_Rules_True( 'include on categories', 0, $e );
|
448 |
}
|
|
|
449 |
}
|
450 |
|
451 |
try {
|
@@ -455,11 +475,12 @@ class OMAPI_Rules {
|
|
455 |
if ( $e instanceof OMAPI_Rules_True ) {
|
456 |
throw new OMAPI_Rules_True( 'include on taxonomies', 0, $e );
|
457 |
}
|
|
|
458 |
}
|
459 |
|
460 |
if ( $this->field_not_empty_array( 'show' ) ) {
|
461 |
// Set flag for not loading globally.
|
462 |
-
$this->global_override
|
463 |
$this->advanced_settings['show'] = $this->get_field_value( 'show' );
|
464 |
}
|
465 |
|
@@ -504,6 +525,7 @@ class OMAPI_Rules {
|
|
504 |
if ( $e instanceof OMAPI_Rules_True ) {
|
505 |
throw new OMAPI_Rules_True( 'include woocommerce', 0, $e );
|
506 |
}
|
|
|
507 |
}
|
508 |
}
|
509 |
}
|
@@ -567,15 +589,10 @@ class OMAPI_Rules {
|
|
567 |
|
568 |
if ( $this->field_not_empty_array( 'categories' ) ) {
|
569 |
// Set flag for possibly not loading globally.
|
570 |
-
$this->global_override
|
571 |
$this->advanced_settings['categories'] = $categories;
|
572 |
}
|
573 |
|
574 |
-
// If the optin is only to be shown on particular categories...
|
575 |
-
if ( 'post' !== get_post_type() ) {
|
576 |
-
throw new OMAPI_Rules_False( 'not post post_type' );
|
577 |
-
}
|
578 |
-
|
579 |
// If this is the home page, check to see if they have decided to load on certain archive pages.
|
580 |
// Run a check for archive-type pages.
|
581 |
// If showing on home and we are on an index page, show the optin.
|
@@ -589,8 +606,8 @@ class OMAPI_Rules {
|
|
589 |
// But has not worked for 3+ years as the is_home() condition was precluding it.
|
590 |
// Also applies to logic in check_taxonomies_field
|
591 |
// if ( in_array( 'post', (array) $fields['show'] ) && ! ( is_front_page() || is_home() || is_archive() || is_search() ) ) {
|
592 |
-
//
|
593 |
-
//
|
594 |
// }
|
595 |
|
596 |
if ( $this->post_id ) {
|
@@ -632,7 +649,7 @@ class OMAPI_Rules {
|
|
632 |
if ( $values ) {
|
633 |
foreach ( $values as $i => $value ) {
|
634 |
if ( OMAPI_Utils::field_not_empty_array( $values, $i ) ) {
|
635 |
-
$this->global_override
|
636 |
$this->advanced_settings['taxonomies'] = $values;
|
637 |
break;
|
638 |
}
|
@@ -715,7 +732,7 @@ class OMAPI_Rules {
|
|
715 |
continue;
|
716 |
}
|
717 |
|
718 |
-
$this->global_override
|
719 |
$this->advanced_settings[ $field ] = $this->get_field_value( $field );
|
720 |
|
721 |
if ( call_user_func_array( array_shift( $callback ), $callback ) ) {
|
@@ -747,7 +764,7 @@ class OMAPI_Rules {
|
|
747 |
case 'advanced_settings':
|
748 |
return $this->$property;
|
749 |
default:
|
750 |
-
|
751 |
}
|
752 |
|
753 |
throw new Exception( sprintf( esc_html__( 'Invalid %1$s property: %2$s', 'optin-monster-api' ), __CLASS__, $property ) );
|
@@ -763,19 +780,31 @@ class OMAPI_Rules {
|
|
763 |
protected function output_debug() {
|
764 |
$show = $this->caught instanceof OMAPI_Rules_True;
|
765 |
|
766 |
-
echo '<xmp class="_om-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
767 |
|
768 |
if ( ! empty( $this->advanced_settings ) ) {
|
769 |
-
echo '<xmp class="_om-advanced-settings">$advanced_settings: '. print_r( $this->advanced_settings, true ) .'</xmp>';
|
770 |
}
|
771 |
|
772 |
if ( ! empty( $this->field_values ) ) {
|
773 |
-
echo '<xmp class="_om-field-values" style="display:none;">$field_values: '. print_r( $this->field_values, true ) .'</xmp>';
|
774 |
}
|
775 |
|
776 |
-
echo '<xmp class="_om-is-inline-check" style="display:none;">$is_inline_check?: '. print_r( $this->is_inline_check, true ) .'</xmp>';
|
777 |
-
echo '<xmp class="_om-global-override" style="display:none;">$global_override?: '. print_r( $this->global_override, true ) .'</xmp>';
|
778 |
-
echo '<xmp class="_om-optin" style="display:none;">$optin: '. print_r( $this->optin, true ) .'</xmp>';
|
779 |
}
|
780 |
|
781 |
}
|
20 |
*/
|
21 |
class OMAPI_Rules_Exception extends Exception {
|
22 |
protected $bool = null;
|
23 |
+
protected $exceptions = array();
|
24 |
public function __construct( $message = null, $code = 0, Exception $previous = null ) {
|
25 |
if ( is_bool( $message ) ) {
|
26 |
$this->bool = $message;
|
27 |
+
$message = null;
|
28 |
}
|
29 |
parent::__construct( $message, $code, $previous );
|
30 |
}
|
32 |
public function get_bool() {
|
33 |
return $this->bool;
|
34 |
}
|
35 |
+
|
36 |
+
public function add_exceptions( array $exceptions ) {
|
37 |
+
$this->exceptions = $exceptions;
|
38 |
+
}
|
39 |
+
|
40 |
+
public function get_exceptions() {
|
41 |
+
return (array) $this->exceptions;
|
42 |
+
}
|
43 |
+
|
44 |
}
|
45 |
class OMAPI_Rules_False extends OMAPI_Rules_Exception {
|
46 |
protected $bool = false;
|
76 |
'taxonomies',
|
77 |
'show',
|
78 |
'type',
|
|
|
|
|
|
|
79 |
'test',
|
80 |
'show_on_woocommerce',
|
81 |
'is_wc_shop',
|
164 |
*/
|
165 |
public static $last_instance = null;
|
166 |
|
167 |
+
/**
|
168 |
+
* Exceptions which were not caught/were ignored and may be the reason for the final exclusion.
|
169 |
+
*
|
170 |
+
* @var array
|
171 |
+
*/
|
172 |
+
public $reasons = array();
|
173 |
+
|
174 |
/**
|
175 |
* Primary class constructor.
|
176 |
*
|
189 |
$this->is_inline_check = $is_inline_check;
|
190 |
$this->global_override = ! $is_inline_check;
|
191 |
|
192 |
+
self::$last_instance = $this;
|
193 |
}
|
194 |
|
195 |
/**
|
311 |
$this->include_if_inline_and_automatic_and_no_advanced_settings();
|
312 |
$this->output_if_global_override();
|
313 |
|
314 |
+
$e = new OMAPI_Rules_False( 'default no show' );
|
315 |
+
|
316 |
+
if ( ! empty( $this->reasons ) ) {
|
317 |
+
$e->add_exceptions( $this->reasons );
|
318 |
+
}
|
319 |
+
|
320 |
+
throw $e;
|
321 |
|
322 |
} catch ( OMAPI_Rules_Exception $e ) {
|
323 |
+
$this->caught = $e;
|
324 |
$should_output = $e instanceof OMAPI_Rules_True;
|
325 |
}
|
326 |
|
327 |
$rules_debug = ! empty( $_GET['omwpdebug'] );
|
328 |
|
329 |
if ( $rules_debug ) {
|
330 |
+
$option = OMAPI::get_instance()->get_option();
|
331 |
$rules_debug = ! empty( $option['api']['omwpdebug'] ) || is_user_logged_in() && apply_filters( 'optin_monster_api_menu_cap', 'manage_options', '' );
|
332 |
}
|
333 |
|
443 |
|
444 |
// Set flag for possibly not loading globally.
|
445 |
if ( $this->field_not_empty_array( 'only' ) ) {
|
446 |
+
$this->global_override = false;
|
447 |
$this->advanced_settings['show'] = $this->get_field_value( 'only' );
|
448 |
|
449 |
// If the optin is only to be shown on specific post IDs...
|
465 |
if ( $e instanceof OMAPI_Rules_True ) {
|
466 |
throw new OMAPI_Rules_True( 'include on categories', 0, $e );
|
467 |
}
|
468 |
+
$this->reasons[] = $e;
|
469 |
}
|
470 |
|
471 |
try {
|
475 |
if ( $e instanceof OMAPI_Rules_True ) {
|
476 |
throw new OMAPI_Rules_True( 'include on taxonomies', 0, $e );
|
477 |
}
|
478 |
+
$this->reasons[] = $e;
|
479 |
}
|
480 |
|
481 |
if ( $this->field_not_empty_array( 'show' ) ) {
|
482 |
// Set flag for not loading globally.
|
483 |
+
$this->global_override = false;
|
484 |
$this->advanced_settings['show'] = $this->get_field_value( 'show' );
|
485 |
}
|
486 |
|
525 |
if ( $e instanceof OMAPI_Rules_True ) {
|
526 |
throw new OMAPI_Rules_True( 'include woocommerce', 0, $e );
|
527 |
}
|
528 |
+
$this->reasons[] = $e;
|
529 |
}
|
530 |
}
|
531 |
}
|
589 |
|
590 |
if ( $this->field_not_empty_array( 'categories' ) ) {
|
591 |
// Set flag for possibly not loading globally.
|
592 |
+
$this->global_override = false;
|
593 |
$this->advanced_settings['categories'] = $categories;
|
594 |
}
|
595 |
|
|
|
|
|
|
|
|
|
|
|
596 |
// If this is the home page, check to see if they have decided to load on certain archive pages.
|
597 |
// Run a check for archive-type pages.
|
598 |
// If showing on home and we are on an index page, show the optin.
|
606 |
// But has not worked for 3+ years as the is_home() condition was precluding it.
|
607 |
// Also applies to logic in check_taxonomies_field
|
608 |
// if ( in_array( 'post', (array) $fields['show'] ) && ! ( is_front_page() || is_home() || is_archive() || is_search() ) ) {
|
609 |
+
// $omapi_output->set_slug( $optin );
|
610 |
+
// return $html;
|
611 |
// }
|
612 |
|
613 |
if ( $this->post_id ) {
|
649 |
if ( $values ) {
|
650 |
foreach ( $values as $i => $value ) {
|
651 |
if ( OMAPI_Utils::field_not_empty_array( $values, $i ) ) {
|
652 |
+
$this->global_override = false;
|
653 |
$this->advanced_settings['taxonomies'] = $values;
|
654 |
break;
|
655 |
}
|
732 |
continue;
|
733 |
}
|
734 |
|
735 |
+
$this->global_override = false;
|
736 |
$this->advanced_settings[ $field ] = $this->get_field_value( $field );
|
737 |
|
738 |
if ( call_user_func_array( array_shift( $callback ), $callback ) ) {
|
764 |
case 'advanced_settings':
|
765 |
return $this->$property;
|
766 |
default:
|
767 |
+
break;
|
768 |
}
|
769 |
|
770 |
throw new Exception( sprintf( esc_html__( 'Invalid %1$s property: %2$s', 'optin-monster-api' ), __CLASS__, $property ) );
|
780 |
protected function output_debug() {
|
781 |
$show = $this->caught instanceof OMAPI_Rules_True;
|
782 |
|
783 |
+
echo '<xmp class="_om-post-id">$post_id: ' . print_r( $this->post_id, true ) . '</xmp>';
|
784 |
+
echo '<xmp class="_om-campaign-status" style="color: ' . ( $show ? 'green' : 'red' ) . ';">' . $this->optin->post_name . ":\n" . print_r( $this->caught->getMessage(), true );
|
785 |
+
$reasons = $this->caught->get_exceptions();
|
786 |
+
if ( ! empty( $reasons ) ) {
|
787 |
+
$messages = array();
|
788 |
+
foreach ( $reasons as $e ) {
|
789 |
+
$messages[] = $e->getMessage();
|
790 |
+
}
|
791 |
+
|
792 |
+
echo ":\n\t- " . implode( "\n\t- ", $messages );
|
793 |
+
}
|
794 |
+
echo '</xmp>';
|
795 |
+
|
796 |
|
797 |
if ( ! empty( $this->advanced_settings ) ) {
|
798 |
+
echo '<xmp class="_om-advanced-settings">$advanced_settings: ' . print_r( $this->advanced_settings, true ) . '</xmp>';
|
799 |
}
|
800 |
|
801 |
if ( ! empty( $this->field_values ) ) {
|
802 |
+
echo '<xmp class="_om-field-values" style="display:none;">$field_values: ' . print_r( $this->field_values, true ) . '</xmp>';
|
803 |
}
|
804 |
|
805 |
+
echo '<xmp class="_om-is-inline-check" style="display:none;">$is_inline_check?: ' . print_r( $this->is_inline_check, true ) . '</xmp>';
|
806 |
+
echo '<xmp class="_om-global-override" style="display:none;">$global_override?: ' . print_r( $this->global_override, true ) . '</xmp>';
|
807 |
+
echo '<xmp class="_om-optin" style="display:none;">$optin: ' . print_r( $this->optin, true ) . '</xmp>';
|
808 |
}
|
809 |
|
810 |
}
|
OMAPI/Save.php
CHANGED
@@ -125,7 +125,7 @@ class OMAPI_Save {
|
|
125 |
|
126 |
// Save the data.
|
127 |
switch ( $this->view ) {
|
128 |
-
case 'api'
|
129 |
// Create a new API instance to verify API credentials.
|
130 |
$option = $this->base->get_option();
|
131 |
$apikey = isset( $data['apikey'] ) ? $data['apikey'] : false;
|
@@ -142,38 +142,71 @@ class OMAPI_Save {
|
|
142 |
|
143 |
// Check for new single apikey and break early with only that data check
|
144 |
if ( $apikey ) {
|
|
|
|
|
|
|
145 |
// Verify this new API Key works but posting to the Legacy route
|
146 |
-
$
|
147 |
-
$ret = $api->request();
|
148 |
|
149 |
-
if ( is_wp_error( $
|
150 |
-
$this->errors['error'] = $
|
151 |
-
|
152 |
-
|
153 |
|
154 |
-
|
155 |
-
|
156 |
-
$option['api']['key'] = '';
|
157 |
|
158 |
-
|
159 |
-
$option['is_invalid'] = false;
|
160 |
-
$option['is_expired'] = false;
|
161 |
-
$option['is_disabled'] = false;
|
162 |
-
$option['connected'] = time();
|
163 |
|
164 |
-
|
165 |
-
|
|
|
166 |
|
167 |
-
|
168 |
-
|
169 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
170 |
}
|
171 |
-
|
172 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
173 |
}
|
174 |
|
175 |
// Catch apikey not set errors
|
176 |
-
|
177 |
|
178 |
// Did we used to have one and user is trying to remove it?
|
179 |
if ( $old_apikey ) {
|
@@ -183,7 +216,7 @@ class OMAPI_Save {
|
|
183 |
update_option( 'optin_monster_api', $option );
|
184 |
|
185 |
// Explicitly end here so we don't accidentally try grabbing the next round of checks on $user and $key
|
186 |
-
|
187 |
}
|
188 |
}
|
189 |
|
@@ -201,7 +234,13 @@ class OMAPI_Save {
|
|
201 |
$this->errors['error'] = esc_html__( 'You must provide a valid API Key to authenticate with OptinMonster.', 'optin-monster-api' );
|
202 |
}
|
203 |
} else {
|
204 |
-
$api = new OMAPI_Api(
|
|
|
|
|
|
|
|
|
|
|
|
|
205 |
$ret = $api->request();
|
206 |
if ( is_wp_error( $ret ) ) {
|
207 |
$this->errors['error'] = $ret->get_error_message();
|
@@ -223,15 +262,15 @@ class OMAPI_Save {
|
|
223 |
$this->update_optin_monster_api_option( $option, $data );
|
224 |
}
|
225 |
}
|
226 |
-
|
227 |
|
228 |
-
case 'optins'
|
229 |
// Prepare variables.
|
230 |
-
$data['categories']
|
231 |
-
$data['taxonomies']
|
232 |
-
$optin_id
|
233 |
-
$fields
|
234 |
-
$fields['enabled']
|
235 |
|
236 |
$fields['automatic'] = isset( $data['automatic'] ) ? 1 : 0;
|
237 |
$fields['users'] = isset( $data['users'] ) ? esc_attr( $data['users'] ) : 'all';
|
@@ -259,8 +298,8 @@ class OMAPI_Save {
|
|
259 |
$fields['is_wc_endpoint_add_payment_method'] = isset( $data['is_wc_endpoint_add_payment_method'] ) ? 1 : 0;
|
260 |
|
261 |
// Save the data from the regular taxonomies fields into the WC specific tax field.
|
262 |
-
$fields['is_wc_product_category']
|
263 |
-
$fields['is_wc_product_tag']
|
264 |
|
265 |
// Convert old test mode data and remove.
|
266 |
$test_mode = get_post_meta( $optin_id, '_omapi_test', true );
|
@@ -282,15 +321,15 @@ class OMAPI_Save {
|
|
282 |
foreach ( $fields as $key => $val ) {
|
283 |
update_post_meta( $optin_id, '_omapi_' . $key, $val );
|
284 |
}
|
285 |
-
|
286 |
|
287 |
-
case 'settings'
|
288 |
-
$option
|
289 |
$option['settings']['cookies'] = isset( $data['cookies'] ) ? 1 : 0;
|
290 |
|
291 |
// Save the option.
|
292 |
$this->update_optin_monster_api_option( $option, $data );
|
293 |
-
|
294 |
|
295 |
case 'woocommerce':
|
296 |
if ( ! empty( $data['autogenerate'] ) ) {
|
@@ -312,7 +351,7 @@ class OMAPI_Save {
|
|
312 |
}
|
313 |
break;
|
314 |
default:
|
315 |
-
|
316 |
}
|
317 |
|
318 |
// If selected, clear out all local cookies.
|
@@ -322,10 +361,10 @@ class OMAPI_Save {
|
|
322 |
|
323 |
// Add message to show error or success messages.
|
324 |
if ( ! empty( $this->errors ) ) {
|
325 |
-
add_action( '
|
326 |
} else {
|
327 |
// Add a success message.
|
328 |
-
add_action( '
|
329 |
}
|
330 |
|
331 |
}
|
@@ -335,9 +374,10 @@ class OMAPI_Save {
|
|
335 |
*
|
336 |
* @since 1.0.0
|
337 |
*
|
338 |
-
* @param array $optins
|
|
|
339 |
*/
|
340 |
-
public function store_optins( $optins ) {
|
341 |
/**
|
342 |
* Allows the filtering of what campaigns are stored locally.
|
343 |
*
|
@@ -358,9 +398,9 @@ class OMAPI_Save {
|
|
358 |
// Loop through all of the local optins so we can try to match and update.
|
359 |
$local_optins = $this->base->get_optins();
|
360 |
if ( ! empty( $local_optins ) ) {
|
361 |
-
$this->sync_optins( $local_optins, $optins );
|
362 |
} else {
|
363 |
-
$this->add_optins( $optins );
|
364 |
}
|
365 |
|
366 |
}
|
@@ -370,16 +410,17 @@ class OMAPI_Save {
|
|
370 |
*
|
371 |
* @since 1.3.5
|
372 |
*
|
373 |
-
* @param array $optins
|
|
|
374 |
*/
|
375 |
-
public function add_optins( $optins ) {
|
376 |
foreach ( (array) $optins as $slug => $optin ) {
|
377 |
// Maybe update an optin rather than add a new one.
|
378 |
$local = $this->base->get_optin_by_slug( $slug );
|
379 |
if ( $local ) {
|
380 |
$this->update_optin( $local, $optin );
|
381 |
} else {
|
382 |
-
$this->new_optin( $slug, $optin );
|
383 |
}
|
384 |
}
|
385 |
}
|
@@ -391,8 +432,9 @@ class OMAPI_Save {
|
|
391 |
*
|
392 |
* @param array $local_optins Array of local optin objects to sync.
|
393 |
* @param array $optins Array of optin objects to store.
|
|
|
394 |
*/
|
395 |
-
public function sync_optins( $local_optins, $remote_optins ) {
|
396 |
foreach ( $local_optins as $local ) {
|
397 |
|
398 |
if ( isset( $remote_optins[ $local->post_name ] ) ) {
|
@@ -401,8 +443,9 @@ class OMAPI_Save {
|
|
401 |
|
402 |
unset( $remote_optins[ $local->post_name ] );
|
403 |
} else {
|
|
|
404 |
// Delete the local optin. It does not exist remotely.
|
405 |
-
|
406 |
unset( $remote_optins[ $local->post_name ] );
|
407 |
}
|
408 |
}
|
@@ -410,7 +453,7 @@ class OMAPI_Save {
|
|
410 |
// If we still have optins, they are new and we need to add them.
|
411 |
if ( ! empty( $remote_optins ) ) {
|
412 |
foreach ( (array) $remote_optins as $slug => $optin ) {
|
413 |
-
$this->new_optin( $slug, $optin );
|
414 |
}
|
415 |
}
|
416 |
}
|
@@ -420,18 +463,25 @@ class OMAPI_Save {
|
|
420 |
*
|
421 |
* @since 1.3.5
|
422 |
*
|
423 |
-
* @param object
|
424 |
-
* @param object
|
425 |
*
|
426 |
* @return void
|
427 |
*/
|
428 |
public function update_optin( $local, $optin ) {
|
429 |
-
|
430 |
-
|
431 |
-
'
|
432 |
-
|
433 |
-
|
434 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
435 |
|
436 |
$this->update_optin_meta( $local->ID, $optin );
|
437 |
}
|
@@ -441,30 +491,87 @@ class OMAPI_Save {
|
|
441 |
*
|
442 |
* @since 1.3.5
|
443 |
*
|
444 |
-
* @param string
|
445 |
-
* @param object
|
|
|
446 |
*
|
447 |
* @return void
|
448 |
*/
|
449 |
-
public function new_optin( $slug, $optin ) {
|
450 |
-
$
|
451 |
-
|
452 |
-
'
|
453 |
-
|
454 |
-
|
455 |
-
|
456 |
-
|
457 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
458 |
|
459 |
if ( 'post' === $optin->type ) {
|
460 |
update_post_meta( $post_id, '_omapi_automatic', 1 );
|
461 |
}
|
462 |
|
463 |
-
|
|
|
|
|
|
|
464 |
|
465 |
$this->update_optin_meta( $post_id, $optin );
|
466 |
}
|
467 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
468 |
/**
|
469 |
* Update the optin post object's post-meta with an API object's values.
|
470 |
*
|
@@ -489,8 +596,8 @@ class OMAPI_Save {
|
|
489 |
*
|
490 |
* @since 1.3.5
|
491 |
*
|
492 |
-
* @param int
|
493 |
-
* @param string|array|null The shortcodes to store to meta, or delete from meta if null.
|
494 |
*
|
495 |
* @return void
|
496 |
*/
|
@@ -583,13 +690,14 @@ class OMAPI_Save {
|
|
583 |
'user' => get_current_user_id(),
|
584 |
'security' => wp_create_nonce( 'update-api-key' ),
|
585 |
),
|
|
|
586 |
'headers' => array(
|
587 |
'cookie' => $cookies,
|
588 |
),
|
589 |
);
|
590 |
-
$response
|
591 |
-
$code
|
592 |
-
$body
|
593 |
|
594 |
if (
|
595 |
200 === intval( $code )
|
@@ -704,9 +812,9 @@ class OMAPI_Save {
|
|
704 |
public function errors() {
|
705 |
|
706 |
foreach ( $this->errors as $id => $message ) :
|
707 |
-
|
708 |
<div class="<?php echo sanitize_html_class( $id, 'error' ); ?>"><p><?php echo $message; ?></p></div>
|
709 |
-
|
710 |
endforeach;
|
711 |
|
712 |
}
|
125 |
|
126 |
// Save the data.
|
127 |
switch ( $this->view ) {
|
128 |
+
case 'api':
|
129 |
// Create a new API instance to verify API credentials.
|
130 |
$option = $this->base->get_option();
|
131 |
$apikey = isset( $data['apikey'] ) ? $data['apikey'] : false;
|
142 |
|
143 |
// Check for new single apikey and break early with only that data check
|
144 |
if ( $apikey ) {
|
145 |
+
|
146 |
+
$creds = array( 'apikey' => $apikey );
|
147 |
+
|
148 |
// Verify this new API Key works but posting to the Legacy route
|
149 |
+
$result = OMAPI_Api::build( 'v1', 'verify/', 'POST', $creds )->request();
|
|
|
150 |
|
151 |
+
if ( is_wp_error( $result ) ) {
|
152 |
+
$this->errors['error'] = $result->get_error_message();
|
153 |
+
break;
|
154 |
+
}
|
155 |
|
156 |
+
// Store the optin data.
|
157 |
+
$this->store_optins( $result );
|
|
|
158 |
|
159 |
+
$option['api']['apikey'] = $apikey;
|
|
|
|
|
|
|
|
|
160 |
|
161 |
+
// Go ahead and remove the old user and key so we get the 'new' user stuff
|
162 |
+
$option['api']['user'] = '';
|
163 |
+
$option['api']['key'] = '';
|
164 |
|
165 |
+
// Remove any error messages.
|
166 |
+
$option['is_invalid'] = false;
|
167 |
+
$option['is_expired'] = false;
|
168 |
+
$option['is_disabled'] = false;
|
169 |
+
$option['connected'] = time();
|
170 |
+
|
171 |
+
// Remove any pre-saved site/user/account data, so we re-fetch it elsewhere
|
172 |
+
unset( $option['userId'] );
|
173 |
+
unset( $option['accountId'] );
|
174 |
+
unset( $option['siteId'] );
|
175 |
+
unset( $option['siteIds'] );
|
176 |
+
unset( $option['customApiUrl'] );
|
177 |
+
|
178 |
+
// Fetch the userId and accountId now.
|
179 |
+
$result = OMAPI_Api::build( 'v2', 'me', 'GET', $creds )->request();
|
180 |
+
if ( is_wp_error( $result ) ) {
|
181 |
+
$this->errors['error'] = $result->get_error_message();
|
182 |
+
break;
|
183 |
+
}
|
184 |
+
|
185 |
+
if ( isset( $result->id, $result->accountId ) ) {
|
186 |
+
$option['userId'] = $result->id;
|
187 |
+
$option['accountId'] = $result->accountId;
|
188 |
+
}
|
189 |
+
|
190 |
+
// Fetch the SiteIds for this site now.
|
191 |
+
$result = $this->base->sites->fetch( $apikey );
|
192 |
+
if ( is_wp_error( $result ) ) {
|
193 |
+
$this->errors['error'] = $result->get_error_message();
|
194 |
+
break;
|
195 |
}
|
196 |
+
|
197 |
+
$option = array_merge( $option, $result );
|
198 |
+
|
199 |
+
// Fetch the campaigns for this site now.
|
200 |
+
$this->base->refresh->refresh( $apikey );
|
201 |
+
|
202 |
+
// Save the option.
|
203 |
+
$this->update_optin_monster_api_option( $option, $data );
|
204 |
+
|
205 |
+
$this->base->menu->redirect_to_dashboard( 'optins' );
|
206 |
}
|
207 |
|
208 |
// Catch apikey not set errors
|
209 |
+
else {
|
210 |
|
211 |
// Did we used to have one and user is trying to remove it?
|
212 |
if ( $old_apikey ) {
|
216 |
update_option( 'optin_monster_api', $option );
|
217 |
|
218 |
// Explicitly end here so we don't accidentally try grabbing the next round of checks on $user and $key
|
219 |
+
$this->base->menu->redirect_to_dashboard();
|
220 |
}
|
221 |
}
|
222 |
|
234 |
$this->errors['error'] = esc_html__( 'You must provide a valid API Key to authenticate with OptinMonster.', 'optin-monster-api' );
|
235 |
}
|
236 |
} else {
|
237 |
+
$api = new OMAPI_Api(
|
238 |
+
'verify/',
|
239 |
+
array(
|
240 |
+
'user' => $user,
|
241 |
+
'key' => $key,
|
242 |
+
)
|
243 |
+
);
|
244 |
$ret = $api->request();
|
245 |
if ( is_wp_error( $ret ) ) {
|
246 |
$this->errors['error'] = $ret->get_error_message();
|
262 |
$this->update_optin_monster_api_option( $option, $data );
|
263 |
}
|
264 |
}
|
265 |
+
break;
|
266 |
|
267 |
+
case 'optins':
|
268 |
// Prepare variables.
|
269 |
+
$data['categories'] = isset( $_POST['post_category'] ) ? stripslashes_deep( $_POST['post_category'] ) : array();
|
270 |
+
$data['taxonomies'] = isset( $_POST['tax_input'] ) ? stripslashes_deep( $_POST['tax_input'] ) : array();
|
271 |
+
$optin_id = absint( $_GET['optin_monster_api_id'] );
|
272 |
+
$fields = array();
|
273 |
+
$fields['enabled'] = isset( $data['enabled'] ) ? 1 : 0;
|
274 |
|
275 |
$fields['automatic'] = isset( $data['automatic'] ) ? 1 : 0;
|
276 |
$fields['users'] = isset( $data['users'] ) ? esc_attr( $data['users'] ) : 'all';
|
298 |
$fields['is_wc_endpoint_add_payment_method'] = isset( $data['is_wc_endpoint_add_payment_method'] ) ? 1 : 0;
|
299 |
|
300 |
// Save the data from the regular taxonomies fields into the WC specific tax field.
|
301 |
+
$fields['is_wc_product_category'] = isset( $data['taxonomies']['product_cat'] ) ? $data['taxonomies']['product_cat'] : array();
|
302 |
+
$fields['is_wc_product_tag'] = isset( $data['taxonomies']['product_tag'] ) ? $data['taxonomies']['product_tag'] : array();
|
303 |
|
304 |
// Convert old test mode data and remove.
|
305 |
$test_mode = get_post_meta( $optin_id, '_omapi_test', true );
|
321 |
foreach ( $fields as $key => $val ) {
|
322 |
update_post_meta( $optin_id, '_omapi_' . $key, $val );
|
323 |
}
|
324 |
+
break;
|
325 |
|
326 |
+
case 'settings':
|
327 |
+
$option = $this->base->get_option();
|
328 |
$option['settings']['cookies'] = isset( $data['cookies'] ) ? 1 : 0;
|
329 |
|
330 |
// Save the option.
|
331 |
$this->update_optin_monster_api_option( $option, $data );
|
332 |
+
break;
|
333 |
|
334 |
case 'woocommerce':
|
335 |
if ( ! empty( $data['autogenerate'] ) ) {
|
351 |
}
|
352 |
break;
|
353 |
default:
|
354 |
+
break;
|
355 |
}
|
356 |
|
357 |
// If selected, clear out all local cookies.
|
361 |
|
362 |
// Add message to show error or success messages.
|
363 |
if ( ! empty( $this->errors ) ) {
|
364 |
+
add_action( 'all_admin_notices', array( $this, 'errors' ) );
|
365 |
} else {
|
366 |
// Add a success message.
|
367 |
+
add_action( 'all_admin_notices', array( $this, 'message' ) );
|
368 |
}
|
369 |
|
370 |
}
|
374 |
*
|
375 |
* @since 1.0.0
|
376 |
*
|
377 |
+
* @param array $optins Array of optin objects to store.
|
378 |
+
* @param bool $enabled Whether newly-added campaigns are auto-enabled. Default is true.
|
379 |
*/
|
380 |
+
public function store_optins( $optins, $enabled = true ) {
|
381 |
/**
|
382 |
* Allows the filtering of what campaigns are stored locally.
|
383 |
*
|
398 |
// Loop through all of the local optins so we can try to match and update.
|
399 |
$local_optins = $this->base->get_optins();
|
400 |
if ( ! empty( $local_optins ) ) {
|
401 |
+
$this->sync_optins( $local_optins, $optins, $enabled );
|
402 |
} else {
|
403 |
+
$this->add_optins( $optins, $enabled );
|
404 |
}
|
405 |
|
406 |
}
|
410 |
*
|
411 |
* @since 1.3.5
|
412 |
*
|
413 |
+
* @param array $optins Array of optin objects to store.
|
414 |
+
* @param bool $enabled Whether newly-added campaigns are auto-enabled. Default is true.
|
415 |
*/
|
416 |
+
public function add_optins( $optins, $enabled = true ) {
|
417 |
foreach ( (array) $optins as $slug => $optin ) {
|
418 |
// Maybe update an optin rather than add a new one.
|
419 |
$local = $this->base->get_optin_by_slug( $slug );
|
420 |
if ( $local ) {
|
421 |
$this->update_optin( $local, $optin );
|
422 |
} else {
|
423 |
+
$this->new_optin( $slug, $optin, $enabled );
|
424 |
}
|
425 |
}
|
426 |
}
|
432 |
*
|
433 |
* @param array $local_optins Array of local optin objects to sync.
|
434 |
* @param array $optins Array of optin objects to store.
|
435 |
+
* @param bool $enabled Whether newly-added campaigns are auto-enabled. Default is true.
|
436 |
*/
|
437 |
+
public function sync_optins( $local_optins, $remote_optins, $enabled = true ) {
|
438 |
foreach ( $local_optins as $local ) {
|
439 |
|
440 |
if ( isset( $remote_optins[ $local->post_name ] ) ) {
|
443 |
|
444 |
unset( $remote_optins[ $local->post_name ] );
|
445 |
} else {
|
446 |
+
|
447 |
// Delete the local optin. It does not exist remotely.
|
448 |
+
$this->delete_optin( $local );
|
449 |
unset( $remote_optins[ $local->post_name ] );
|
450 |
}
|
451 |
}
|
453 |
// If we still have optins, they are new and we need to add them.
|
454 |
if ( ! empty( $remote_optins ) ) {
|
455 |
foreach ( (array) $remote_optins as $slug => $optin ) {
|
456 |
+
$this->new_optin( $slug, $optin, $enabled );
|
457 |
}
|
458 |
}
|
459 |
}
|
463 |
*
|
464 |
* @since 1.3.5
|
465 |
*
|
466 |
+
* @param object $local The local optin post object.
|
467 |
+
* @param object $optin The optin object.
|
468 |
*
|
469 |
* @return void
|
470 |
*/
|
471 |
public function update_optin( $local, $optin ) {
|
472 |
+
$status = 'publish';
|
473 |
+
if ( ! empty( $optin->status ) && 'active' !== $optin->status ) {
|
474 |
+
$status = 'draft';
|
475 |
+
}
|
476 |
+
|
477 |
+
$this->optin_to_db(
|
478 |
+
array(
|
479 |
+
'ID' => $local->ID, // Existing ID
|
480 |
+
'post_title' => $optin->title,
|
481 |
+
'post_content' => $optin->output,
|
482 |
+
'post_status' => $status,
|
483 |
+
)
|
484 |
+
);
|
485 |
|
486 |
$this->update_optin_meta( $local->ID, $optin );
|
487 |
}
|
491 |
*
|
492 |
* @since 1.3.5
|
493 |
*
|
494 |
+
* @param string $slug The campaign slug.
|
495 |
+
* @param object $optin. The optin object.
|
496 |
+
* @param bool $enabled Whether the new campaigns are auto-enabled. Default is true.
|
497 |
*
|
498 |
* @return void
|
499 |
*/
|
500 |
+
public function new_optin( $slug, $optin, $enabled = true ) {
|
501 |
+
$status = 'publish';
|
502 |
+
if ( ! empty( $optin->status ) && 'active' !== $optin->status ) {
|
503 |
+
$status = 'draft';
|
504 |
+
}
|
505 |
+
|
506 |
+
$post_id = $this->optin_to_db(
|
507 |
+
array(
|
508 |
+
'post_name' => $slug,
|
509 |
+
'post_title' => $optin->title,
|
510 |
+
'post_excerpt' => $optin->id,
|
511 |
+
'post_content' => $optin->output,
|
512 |
+
'post_status' => $status,
|
513 |
+
'post_type' => 'omapi',
|
514 |
+
)
|
515 |
+
);
|
516 |
|
517 |
if ( 'post' === $optin->type ) {
|
518 |
update_post_meta( $post_id, '_omapi_automatic', 1 );
|
519 |
}
|
520 |
|
521 |
+
$enabled = apply_filters( 'optin_monster_auto_enable_campaign', $enabled );
|
522 |
+
if ( $enabled ) {
|
523 |
+
update_post_meta( $post_id, '_omapi_enabled', true );
|
524 |
+
}
|
525 |
|
526 |
$this->update_optin_meta( $post_id, $optin );
|
527 |
}
|
528 |
|
529 |
+
/**
|
530 |
+
* Adds/updates the optin post-object in the DB.
|
531 |
+
*
|
532 |
+
* @since 1.9.10
|
533 |
+
*
|
534 |
+
* @param array $args Array of args for post object.
|
535 |
+
*
|
536 |
+
* @return mixed Result
|
537 |
+
*/
|
538 |
+
protected function optin_to_db( $args ) {
|
539 |
+
$priority = has_filter( 'content_save_pre', 'wp_filter_post_kses' );
|
540 |
+
if ( false !== $priority ) {
|
541 |
+
remove_filter( 'content_save_pre', 'wp_filter_post_kses', $priority );
|
542 |
+
}
|
543 |
+
|
544 |
+
if ( ! empty( $args['ID'] ) ) {
|
545 |
+
$result = wp_update_post( $args );
|
546 |
+
} else {
|
547 |
+
$result = wp_insert_post( $args );
|
548 |
+
}
|
549 |
+
|
550 |
+
if ( false !== $priority ) {
|
551 |
+
add_filter( 'content_save_pre', 'wp_filter_post_kses', $priority );
|
552 |
+
}
|
553 |
+
|
554 |
+
return $result;
|
555 |
+
}
|
556 |
+
|
557 |
+
/**
|
558 |
+
* Deletes the optin post-type object from the DB.
|
559 |
+
*
|
560 |
+
* @since 1.9.10
|
561 |
+
*
|
562 |
+
* @param mixed $id WP_Post object, or post ID, or campaign slug (post_name).
|
563 |
+
* @param boolean $by_slug Whether id passed in was the campaign slug.
|
564 |
+
*
|
565 |
+
* @return mixed Result of wp_delete_post.
|
566 |
+
*/
|
567 |
+
public function delete_optin( $id, $by_slug = false ) {
|
568 |
+
if ( $by_slug ) {
|
569 |
+
$id = $this->base->get_optin_by_slug( $id );
|
570 |
+
}
|
571 |
+
|
572 |
+
return wp_delete_post( absint( ! empty( $id->ID ) ? $id->ID : $id ), true );
|
573 |
+
}
|
574 |
+
|
575 |
/**
|
576 |
* Update the optin post object's post-meta with an API object's values.
|
577 |
*
|
596 |
*
|
597 |
* @since 1.3.5
|
598 |
*
|
599 |
+
* @param int $post_id The post (optin) ID.
|
600 |
+
* @param string|array|null $shortcodes The shortcodes to store to meta, or delete from meta if null.
|
601 |
*
|
602 |
* @return void
|
603 |
*/
|
690 |
'user' => get_current_user_id(),
|
691 |
'security' => wp_create_nonce( 'update-api-key' ),
|
692 |
),
|
693 |
+
'timeout' => 60,
|
694 |
'headers' => array(
|
695 |
'cookie' => $cookies,
|
696 |
),
|
697 |
);
|
698 |
+
$response = wp_remote_post( admin_url( 'admin-ajax.php' ), $request_args );
|
699 |
+
$code = wp_remote_retrieve_response_code( $response );
|
700 |
+
$body = json_decode( wp_remote_retrieve_body( $response ) );
|
701 |
|
702 |
if (
|
703 |
200 === intval( $code )
|
812 |
public function errors() {
|
813 |
|
814 |
foreach ( $this->errors as $id => $message ) :
|
815 |
+
?>
|
816 |
<div class="<?php echo sanitize_html_class( $id, 'error' ); ?>"><p><?php echo $message; ?></p></div>
|
817 |
+
<?php
|
818 |
endforeach;
|
819 |
|
820 |
}
|
OMAPI/Shortcode.php
CHANGED
@@ -73,7 +73,7 @@ class OMAPI_Shortcode {
|
|
73 |
public function set() {
|
74 |
|
75 |
self::$instance = $this;
|
76 |
-
$this->base
|
77 |
|
78 |
}
|
79 |
|
@@ -91,27 +91,31 @@ class OMAPI_Shortcode {
|
|
91 |
|
92 |
// Checking if AMP is enabled.
|
93 |
if ( OMAPI_Utils::is_amp_enabled() ) {
|
94 |
-
|
95 |
}
|
96 |
|
97 |
global $post;
|
98 |
|
99 |
// Merge default attributes with passed attributes.
|
100 |
-
$atts = shortcode_atts(
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
|
|
|
|
|
|
|
|
106 |
|
107 |
$optin_id = false;
|
108 |
if ( ! empty( $atts['id'] ) ) {
|
109 |
$optin_id = absint( $atts['id'] );
|
110 |
} elseif ( isset( $atts['slug'] ) ) {
|
111 |
-
$optin =
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
} else {
|
116 |
// A custom attribute must have been passed. Allow it to be filtered to grab the optin ID from a custom source.
|
117 |
$optin_id = apply_filters( 'optin_monster_api_custom_optin_id', false, $atts, $post );
|
@@ -125,9 +129,12 @@ class OMAPI_Shortcode {
|
|
125 |
return false;
|
126 |
}
|
127 |
|
|
|
|
|
|
|
|
|
128 |
// Try to grab the stored HTML.
|
129 |
-
$
|
130 |
-
$html = $this->base->output->prepare_campaign( $optin );
|
131 |
if ( ! $html ) {
|
132 |
return false;
|
133 |
}
|
@@ -161,7 +168,7 @@ class OMAPI_Shortcode {
|
|
161 |
|
162 |
// Checking if AMP is enabled.
|
163 |
if ( OMAPI_Utils::is_amp_enabled() ) {
|
164 |
-
|
165 |
}
|
166 |
|
167 |
// Run the v2 implementation.
|
73 |
public function set() {
|
74 |
|
75 |
self::$instance = $this;
|
76 |
+
$this->base = OMAPI::get_instance();
|
77 |
|
78 |
}
|
79 |
|
91 |
|
92 |
// Checking if AMP is enabled.
|
93 |
if ( OMAPI_Utils::is_amp_enabled() ) {
|
94 |
+
return;
|
95 |
}
|
96 |
|
97 |
global $post;
|
98 |
|
99 |
// Merge default attributes with passed attributes.
|
100 |
+
$atts = shortcode_atts(
|
101 |
+
array(
|
102 |
+
'slug' => '',
|
103 |
+
'followrules' => 'false',
|
104 |
+
// id attribute is deprecated.
|
105 |
+
'id' => '',
|
106 |
+
),
|
107 |
+
$atts,
|
108 |
+
'optin-monster'
|
109 |
+
);
|
110 |
|
111 |
$optin_id = false;
|
112 |
if ( ! empty( $atts['id'] ) ) {
|
113 |
$optin_id = absint( $atts['id'] );
|
114 |
} elseif ( isset( $atts['slug'] ) ) {
|
115 |
+
$optin = $this->base->get_optin_by_slug( $atts['slug'] );
|
116 |
+
if ( $optin ) {
|
117 |
+
$optin_id = $optin->ID;
|
118 |
+
}
|
119 |
} else {
|
120 |
// A custom attribute must have been passed. Allow it to be filtered to grab the optin ID from a custom source.
|
121 |
$optin_id = apply_filters( 'optin_monster_api_custom_optin_id', false, $atts, $post );
|
129 |
return false;
|
130 |
}
|
131 |
|
132 |
+
if ( empty( $optin->ID ) || (int) $optin_id !== (int) $optin->ID ) {
|
133 |
+
$optin = $this->base->get_optin( $optin_id );
|
134 |
+
}
|
135 |
+
|
136 |
// Try to grab the stored HTML.
|
137 |
+
$html = $this->base->output->prepare_campaign( $optin );
|
|
|
138 |
if ( ! $html ) {
|
139 |
return false;
|
140 |
}
|
168 |
|
169 |
// Checking if AMP is enabled.
|
170 |
if ( OMAPI_Utils::is_amp_enabled() ) {
|
171 |
+
return;
|
172 |
}
|
173 |
|
174 |
// Run the v2 implementation.
|
OMAPI/Sites.php
CHANGED
@@ -26,7 +26,7 @@ class OMAPI_Sites {
|
|
26 |
*/
|
27 |
protected $base;
|
28 |
|
29 |
-
public function __construct(
|
30 |
$this->base = OMAPI::get_instance();
|
31 |
}
|
32 |
|
@@ -40,43 +40,150 @@ class OMAPI_Sites {
|
|
40 |
* @return array|null $sites An array of sites if the request is successful
|
41 |
*/
|
42 |
public function fetch( $api_key = null ) {
|
43 |
-
$
|
|
|
44 |
|
45 |
-
if ( $
|
46 |
-
$
|
47 |
}
|
48 |
|
49 |
-
$
|
50 |
-
|
51 |
-
'
|
52 |
-
'customApiUrl' => ''
|
53 |
);
|
54 |
|
55 |
-
|
|
|
|
|
56 |
foreach ( $body->data as $site ) {
|
57 |
-
$
|
58 |
-
$sites['ids'][] = (int) $site->numericId;
|
59 |
|
60 |
-
|
|
|
|
|
61 |
|
62 |
-
|
63 |
-
// We need to make sure that it matches the home_url to ensure that the correct domain
|
64 |
-
// is loaded.
|
65 |
$wildcardDomain = '*.' === substr( $site->domain, 0, 2 );
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
70 |
if ( $site->settings->cdnCname && $site->settings->cdnCnameVerified ) {
|
71 |
-
|
72 |
-
|
|
|
|
|
|
|
|
|
73 |
// Not sure if this will wreak havoc during verification of the domains, so leaving it commented out for now.
|
74 |
-
// $
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
75 |
}
|
76 |
}
|
77 |
}
|
78 |
}
|
79 |
|
80 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
81 |
}
|
|
|
82 |
}
|
26 |
*/
|
27 |
protected $base;
|
28 |
|
29 |
+
public function __construct() {
|
30 |
$this->base = OMAPI::get_instance();
|
31 |
}
|
32 |
|
40 |
* @return array|null $sites An array of sites if the request is successful
|
41 |
*/
|
42 |
public function fetch( $api_key = null ) {
|
43 |
+
$creds = ! empty( $api_key ) ? array( 'apikey' => $api_key ) : array();
|
44 |
+
$body = OMAPI_Api::build( 'v2', 'sites/origin', 'GET', $creds )->request();
|
45 |
|
46 |
+
if ( is_wp_error( $body ) ) {
|
47 |
+
return $this->handle_error( $body );
|
48 |
}
|
49 |
|
50 |
+
$results = array(
|
51 |
+
'siteId' => '',
|
52 |
+
'siteIds' => array(),
|
53 |
+
'customApiUrl' => '',
|
54 |
);
|
55 |
|
56 |
+
$domain = $this->get_domain();
|
57 |
+
if ( ! empty( $body->data ) ) {
|
58 |
+
$checkCnames = true;
|
59 |
foreach ( $body->data as $site ) {
|
60 |
+
$results['siteIds'][] = (string) $site->siteId;
|
|
|
61 |
|
62 |
+
if ( empty( $site->domain ) ) {
|
63 |
+
continue;
|
64 |
+
}
|
65 |
|
66 |
+
$matches = $domain === (string) $site->domain;
|
|
|
|
|
67 |
$wildcardDomain = '*.' === substr( $site->domain, 0, 2 );
|
68 |
+
|
69 |
+
if ( ! $matches && ! $wildcardDomain ) {
|
70 |
+
continue;
|
71 |
+
}
|
72 |
+
|
73 |
+
// If we don't have a siteId yet, set it to this one.
|
74 |
+
// If we DO already have a siteId and this one is NOT a wildcard,
|
75 |
+
// we want to overwrite with this one.
|
76 |
+
if ( empty( $results['siteId'] ) || ! $wildcardDomain ) {
|
77 |
+
$results['siteId'] = (string) $site->siteId;
|
78 |
+
}
|
79 |
+
|
80 |
+
// Do we have a custom cnamed api url to use?
|
81 |
+
if ( $site->settings->enableCustomCnames && $checkCnames ) {
|
82 |
+
|
83 |
+
$found = false;
|
84 |
if ( $site->settings->cdnCname && $site->settings->cdnCnameVerified ) {
|
85 |
+
|
86 |
+
// If we have a custom CNAME, let's enable it and add the data to the output array.
|
87 |
+
$results['customApiUrl'] = 'https://' . $site->settings->cdnUrl . '/app/js/api.min.js';
|
88 |
+
$found = true;
|
89 |
+
|
90 |
+
} elseif ( $site->settings->apiCname && $site->settings->apiCnameVerified ) {
|
91 |
// Not sure if this will wreak havoc during verification of the domains, so leaving it commented out for now.
|
92 |
+
// $results['customApiUrl'] = 'https://' . $site->settings->apiUrl . '/a/app/js/api.min.js';
|
93 |
+
// $found = true;
|
94 |
+
}
|
95 |
+
|
96 |
+
// If this isn't a wildcard domain, and we found a custom api url, we don't
|
97 |
+
// need to continue checking cnames.
|
98 |
+
if ( $found && ! $wildcardDomain ) {
|
99 |
+
$checkCnames = false;
|
100 |
}
|
101 |
}
|
102 |
}
|
103 |
}
|
104 |
|
105 |
+
if ( empty( $results['siteId'] ) ) {
|
106 |
+
$site = $this->attempt_create_site( $creds );
|
107 |
+
if ( is_wp_error( $site ) ) {
|
108 |
+
return $this->handle_error( $site );
|
109 |
+
}
|
110 |
+
|
111 |
+
if ( ! empty( $site->siteId ) ) {
|
112 |
+
$results['siteId'] = (string) $site->siteId;
|
113 |
+
}
|
114 |
+
}
|
115 |
+
|
116 |
+
return $results;
|
117 |
+
}
|
118 |
+
|
119 |
+
/**
|
120 |
+
* Attempt to create the associated site in the app.
|
121 |
+
*
|
122 |
+
* @since 1.9.10
|
123 |
+
*
|
124 |
+
* @param array $creds Array of credentials for request.
|
125 |
+
*
|
126 |
+
* @return mixed Site-created response or WP_Error.
|
127 |
+
*/
|
128 |
+
public function attempt_create_site( $creds ) {
|
129 |
+
$site_args = array(
|
130 |
+
'domain' => esc_url_raw( site_url() ),
|
131 |
+
'name' => esc_attr( get_option( 'blogname' ) ),
|
132 |
+
'settings' => array(
|
133 |
+
'wordpress' => 1,
|
134 |
+
'homeUrl' => esc_url_raw( home_url() ),
|
135 |
+
'restUrl' => esc_url_raw( get_rest_url() ),
|
136 |
+
),
|
137 |
+
);
|
138 |
+
|
139 |
+
// Create/update the site for this WordPress site.
|
140 |
+
$result = OMAPI_Api::build( 'v2', 'sites', 'POST', $creds )
|
141 |
+
->request( $site_args );
|
142 |
+
|
143 |
+
return 201 === (int) OMAPI_Api::instance()->response_code
|
144 |
+
? OMAPI_Api::instance()->response_body
|
145 |
+
: $result;
|
146 |
+
}
|
147 |
+
|
148 |
+
/**
|
149 |
+
* Get the domain for this WP site.
|
150 |
+
* Borrowed heavily from AwesomeMotive\OptinMonsterApp\Utils\Url
|
151 |
+
*
|
152 |
+
* @since 1.9.10
|
153 |
+
*
|
154 |
+
* @return string
|
155 |
+
*/
|
156 |
+
public function get_domain() {
|
157 |
+
$url = site_url();
|
158 |
+
$parsed = parse_url( $url );
|
159 |
+
$hostname = ! empty( $parsed['host'] ) ? $parsed['host'] : $url;
|
160 |
+
$domain = preg_replace( '/^www\./', '', $hostname );
|
161 |
+
|
162 |
+
return $domain;
|
163 |
+
}
|
164 |
+
|
165 |
+
/**
|
166 |
+
* Updates the error text when we try to auto-create this WP site, but it fails.
|
167 |
+
*
|
168 |
+
* @since 1.9.10
|
169 |
+
*
|
170 |
+
* @param WP_Error $error The error object.
|
171 |
+
*
|
172 |
+
* @return WP_Error
|
173 |
+
*/
|
174 |
+
public function handle_error( $error ) {
|
175 |
+
if ( 402 === (int) $error->get_error_data() && ! empty( OMAPI_Api::instance()->response_body->siteAmount ) ) {
|
176 |
+
|
177 |
+
$message = sprintf(
|
178 |
+
__( 'We tried to register your WordPress site with OptinMonster, but You have reached the maximum number of registered sites for your current OptinMonster plan.<br>Additional sites can be added to your account by <a href="%1$s" target="_blank" rel="noopener">upgrading</a> or <a href="%2$s" target="_blank" rel="noopener">purchasing additional site licenses</a>.', 'optin-monster-api' ),
|
179 |
+
esc_url_raw( OPTINMONSTER_APP_URL . '/account/upgrade/?utm_source=app&utm_medium=upsell&utm_campaign=header&feature=sites/' ),
|
180 |
+
esc_url_raw( OPTINMONSTER_APP_URL . '/account/billing/#additional-licenses' )
|
181 |
+
);
|
182 |
+
|
183 |
+
$error = new WP_Error( $error->get_error_code(), $message, 402 );
|
184 |
+
}
|
185 |
+
|
186 |
+
return $error;
|
187 |
}
|
188 |
+
|
189 |
}
|
OMAPI/Support.php
ADDED
@@ -0,0 +1,175 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Suppor Class, handles generating info for support.
|
4 |
+
*
|
5 |
+
* @since 1.9.10
|
6 |
+
*/
|
7 |
+
|
8 |
+
// Exit if accessed directly.
|
9 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
10 |
+
exit;
|
11 |
+
}
|
12 |
+
|
13 |
+
/**
|
14 |
+
* Rest Api class.
|
15 |
+
*
|
16 |
+
* @since 1.9.10
|
17 |
+
*/
|
18 |
+
class OMAPI_Support {
|
19 |
+
|
20 |
+
/**
|
21 |
+
* The Base OMAPI Object
|
22 |
+
*
|
23 |
+
* @since 1.9.10
|
24 |
+
*
|
25 |
+
* @var OMAPI
|
26 |
+
*/
|
27 |
+
protected $base;
|
28 |
+
|
29 |
+
/**
|
30 |
+
* Class constructor.
|
31 |
+
*
|
32 |
+
* @since 1.9.10
|
33 |
+
*/
|
34 |
+
public function __construct() {
|
35 |
+
$this->base = OMAPI::get_instance();
|
36 |
+
}
|
37 |
+
|
38 |
+
/**
|
39 |
+
* Combine Support data together.
|
40 |
+
*
|
41 |
+
* @since 1.9.10
|
42 |
+
* @return array
|
43 |
+
*/
|
44 |
+
public function get_support_data( $format = 'raw' ) {
|
45 |
+
return array(
|
46 |
+
'server' => $this->get_server_data( $format ),
|
47 |
+
'campaigns' => $this->get_campaign_data( $format ),
|
48 |
+
);
|
49 |
+
}
|
50 |
+
|
51 |
+
/**
|
52 |
+
* Build Current Optin data array to localize
|
53 |
+
*
|
54 |
+
* @since 1.9.10
|
55 |
+
*
|
56 |
+
* @return array
|
57 |
+
*/
|
58 |
+
public function get_campaign_data( $format = 'raw' ) {
|
59 |
+
|
60 |
+
$campaigns = $this->base->get_optins();
|
61 |
+
$data = array();
|
62 |
+
|
63 |
+
if ( empty( $campaigns ) ) {
|
64 |
+
return $data;
|
65 |
+
}
|
66 |
+
|
67 |
+
foreach ( (array) $campaigns as $campaign ) {
|
68 |
+
if ( empty( $campaign->ID ) ) {
|
69 |
+
continue;
|
70 |
+
}
|
71 |
+
|
72 |
+
$slug = $campaign->post_name;
|
73 |
+
$design_type = get_post_meta( $campaign->ID, '_omapi_type', true );
|
74 |
+
|
75 |
+
$data[ $slug ] = array(
|
76 |
+
'Campaign Type' => $design_type,
|
77 |
+
'WordPress ID' => $campaign->ID,
|
78 |
+
'Associated IDs' => get_post_meta( $campaign->ID, '_omapi_ids', true ),
|
79 |
+
'Current Status' => get_post_meta( $campaign->ID, '_omapi_enabled', true ) ? 'Enabled' : 'Disabled',
|
80 |
+
'User Settings' => get_post_meta( $campaign->ID, '_omapi_users', true ),
|
81 |
+
'Pages to Never show on' => get_post_meta( $campaign->ID, '_omapi_never', true ),
|
82 |
+
'Pages to Only show on' => get_post_meta( $campaign->ID, '_omapi_only', true ),
|
83 |
+
'Categories' => get_post_meta( $campaign->ID, '_omapi_categories', true ),
|
84 |
+
'Taxonomies' => get_post_meta( $campaign->ID, '_omapi_taxonomies', true ),
|
85 |
+
'Template types to Show on' => get_post_meta( $campaign->ID, '_omapi_show', true ),
|
86 |
+
'Shortcodes Synced and Recognized' => get_post_meta( $campaign->ID, '_omapi_shortcode', true ) ? htmlspecialchars_decode( get_post_meta( $campaign->ID, '_omapi_shortcode_output', true ) ) : 'None recognized',
|
87 |
+
);
|
88 |
+
|
89 |
+
if ( OMAPI_Utils::is_inline_type( $design_type ) ) {
|
90 |
+
$data[ $slug ]['Automatic Output Status'] = get_post_meta( $campaign->ID, '_omapi_automatic', true ) ? 'Enabled' : 'Disabled';
|
91 |
+
}
|
92 |
+
|
93 |
+
if ( 'raw' === $format ) {
|
94 |
+
$data[ $slug ]['raw'] = $this->base->collect_campaign_data( $campaign );
|
95 |
+
}
|
96 |
+
}
|
97 |
+
|
98 |
+
return $data;
|
99 |
+
}
|
100 |
+
|
101 |
+
/**
|
102 |
+
* Build array of server information to localize
|
103 |
+
*
|
104 |
+
* @since 1.9.10
|
105 |
+
*
|
106 |
+
* @return array
|
107 |
+
*/
|
108 |
+
public function get_server_data( $format = 'raw' ) {
|
109 |
+
if ( ! function_exists( 'get_plugins' ) ) {
|
110 |
+
require_once ABSPATH . 'wp-admin/includes/plugin.php';
|
111 |
+
}
|
112 |
+
|
113 |
+
$theme_data = wp_get_theme();
|
114 |
+
$theme = 'raw' === $format
|
115 |
+
? array(
|
116 |
+
'Name' => $theme_data->Name,
|
117 |
+
'Author' => $theme_data->Author,
|
118 |
+
'Author Name' => $theme_data->{'Author Name'},
|
119 |
+
'Author URI' => $theme_data->{'Author URI'},
|
120 |
+
'Description' => $theme_data->Description,
|
121 |
+
'Version' => $theme_data->Version,
|
122 |
+
'Template' => $theme_data->Template,
|
123 |
+
'Stylesheet' => $theme_data->Stylesheet,
|
124 |
+
'Template Files' => $theme_data->{'Template Files'},
|
125 |
+
'Stylesheet Files' => $theme_data->{'Stylesheet Files'},
|
126 |
+
'Template Dir' => $theme_data->{'Template Dir'},
|
127 |
+
'Stylesheet Dir' => $theme_data->{'Stylesheet Dir'},
|
128 |
+
'Screenshot' => $theme_data->Screenshot,
|
129 |
+
'Tags' => $theme_data->Tags,
|
130 |
+
'Theme Root' => $theme_data->{'Theme Root'},
|
131 |
+
'Theme Root URI' => $theme_data->{'Theme Root URI'},
|
132 |
+
'Parent Theme' => $theme_data->{'Parent Theme'},
|
133 |
+
)
|
134 |
+
: $theme_data->Name . ' ' . $theme_data->Version;
|
135 |
+
|
136 |
+
$active_plugins = get_option( 'active_plugins', array() );
|
137 |
+
$plugins = 'raw' === $format ? array() : "\n";
|
138 |
+
foreach ( get_plugins() as $plugin_path => $plugin ) {
|
139 |
+
if ( ! in_array( $plugin_path, $active_plugins ) ) {
|
140 |
+
continue;
|
141 |
+
}
|
142 |
+
|
143 |
+
if ( 'raw' === $format ) {
|
144 |
+
$plugins[] = $plugin;
|
145 |
+
} else {
|
146 |
+
$plugins .= $plugin['Name'] . ': ' . $plugin['Version'] . "\n";
|
147 |
+
}
|
148 |
+
}
|
149 |
+
|
150 |
+
$api_ping = wp_remote_request( OPTINMONSTER_APP_URL . '/v1/ping' );
|
151 |
+
|
152 |
+
$array = array(
|
153 |
+
'Plugin Version' => esc_html( $this->base->version ),
|
154 |
+
'Server Info' => esc_html( $_SERVER['SERVER_SOFTWARE'] ),
|
155 |
+
'PHP Version' => function_exists( 'phpversion' ) ? esc_html( phpversion() ) : 'Unable to check.',
|
156 |
+
'Error Log Location' => function_exists( 'ini_get' ) ? ini_get( 'error_log' ) : 'Unable to locate.',
|
157 |
+
'Default Timezone' => date_default_timezone_get(),
|
158 |
+
'WordPress Home URL' => esc_url_raw( get_home_url() ),
|
159 |
+
'WordPress Site URL' => esc_url_raw( get_site_url() ),
|
160 |
+
'WordPress REST URL' => esc_url_raw( get_rest_url() ),
|
161 |
+
'WordPress Version' => $GLOBALS['wp_version'],
|
162 |
+
'Multisite' => is_multisite(),
|
163 |
+
'Language' => get_locale(),
|
164 |
+
'API Ping Response' => wp_remote_retrieve_response_code( $api_ping ),
|
165 |
+
'Active Theme' => $theme,
|
166 |
+
'Active Plugins' => $plugins,
|
167 |
+
);
|
168 |
+
|
169 |
+
if ( 'raw' !== $format ) {
|
170 |
+
$array['Multisite'] = $array['Multisite'] ? 'Multisite Enabled' : 'Not Multisite';
|
171 |
+
}
|
172 |
+
|
173 |
+
return $array;
|
174 |
+
}
|
175 |
+
}
|
OMAPI/TrustPulse.php
CHANGED
@@ -94,7 +94,7 @@ class OMAPI_TrustPulse {
|
|
94 |
}
|
95 |
|
96 |
// If user is in admin ajax or doing cron, return.
|
97 |
-
if ( ( defined( 'DOING_AJAX' ) && DOING_AJAX
|
98 |
return;
|
99 |
}
|
100 |
|
@@ -126,7 +126,7 @@ class OMAPI_TrustPulse {
|
|
126 |
|
127 |
$this->trustpulse_active = function_exists( 'trustpulse_dir_uri' );
|
128 |
|
129 |
-
$account_id
|
130 |
$this->trustpulse_setup = ! empty( $account_id );
|
131 |
}
|
132 |
|
@@ -139,8 +139,8 @@ class OMAPI_TrustPulse {
|
|
139 |
$this->hook = add_submenu_page(
|
140 |
// If trustpulse is active/setup, don't show the TP sub-menu item under OM.
|
141 |
$this->trustpulse_active && $this->trustpulse_setup
|
142 |
-
? '
|
143 |
-
:
|
144 |
esc_html__( 'TrustPulse', 'optin-monster-api' ), // Page title
|
145 |
esc_html__( 'Social Proof Widget', 'optin-monster-api' ),
|
146 |
apply_filters( 'optin_monster_api_menu_cap', 'manage_options', 'optin-monster-trustpulse' ), // Cap
|
@@ -174,7 +174,13 @@ class OMAPI_TrustPulse {
|
|
174 |
* @since 1.9.0
|
175 |
*/
|
176 |
public function display_page() {
|
177 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
178 |
}
|
179 |
|
180 |
/**
|
@@ -184,10 +190,10 @@ class OMAPI_TrustPulse {
|
|
184 |
*/
|
185 |
public function assets() {
|
186 |
add_filter( 'admin_body_class', array( $this, 'add_body_classes' ) );
|
|
|
|
|
187 |
|
188 |
-
wp_enqueue_style(
|
189 |
-
|
190 |
-
wp_enqueue_style( 'om-tp-admin-css', $this->base->url . 'assets/css/trustpulse-admin.min.css', false, $this->base->version );
|
191 |
add_action( 'in_admin_header', array( $this, 'render_banner' ) );
|
192 |
}
|
193 |
|
94 |
}
|
95 |
|
96 |
// If user is in admin ajax or doing cron, return.
|
97 |
+
if ( ( defined( 'DOING_AJAX' ) && DOING_AJAX ) || ( defined( 'DOING_CRON' ) && DOING_CRON ) ) {
|
98 |
return;
|
99 |
}
|
100 |
|
126 |
|
127 |
$this->trustpulse_active = function_exists( 'trustpulse_dir_uri' );
|
128 |
|
129 |
+
$account_id = get_option( 'trustpulse_script_id', null );
|
130 |
$this->trustpulse_setup = ! empty( $account_id );
|
131 |
}
|
132 |
|
139 |
$this->hook = add_submenu_page(
|
140 |
// If trustpulse is active/setup, don't show the TP sub-menu item under OM.
|
141 |
$this->trustpulse_active && $this->trustpulse_setup
|
142 |
+
? $this->base->menu->parent_slug() . '-no-menu'
|
143 |
+
: $this->base->menu->parent_slug(), // Parent slug
|
144 |
esc_html__( 'TrustPulse', 'optin-monster-api' ), // Page title
|
145 |
esc_html__( 'Social Proof Widget', 'optin-monster-api' ),
|
146 |
apply_filters( 'optin_monster_api_menu_cap', 'manage_options', 'optin-monster-trustpulse' ), // Cap
|
174 |
* @since 1.9.0
|
175 |
*/
|
176 |
public function display_page() {
|
177 |
+
$all = get_plugins();
|
178 |
+
$this->base->output_view(
|
179 |
+
'trustpulse-settings-page.php',
|
180 |
+
array(
|
181 |
+
'has_plugin' => ! empty( $all['trustpulse-api/trustpulse.php'] ),
|
182 |
+
)
|
183 |
+
);
|
184 |
}
|
185 |
|
186 |
/**
|
190 |
*/
|
191 |
public function assets() {
|
192 |
add_filter( 'admin_body_class', array( $this, 'add_body_classes' ) );
|
193 |
+
$this->base->menu->styles();
|
194 |
+
$this->base->menu->scripts();
|
195 |
|
196 |
+
wp_enqueue_style( 'om-tp-admin-css', $this->base->url . 'assets/dist/css/trustpulse.min.css', false, $this->base->asset_version() );
|
|
|
|
|
197 |
add_action( 'in_admin_header', array( $this, 'render_banner' ) );
|
198 |
}
|
199 |
|
OMAPI/Type.php
CHANGED
@@ -83,7 +83,7 @@ class OMAPI_Type {
|
|
83 |
register_post_type(
|
84 |
'omapi',
|
85 |
array(
|
86 |
-
'labels'
|
87 |
'optin_monster_api_post_type_labels',
|
88 |
array(
|
89 |
'name' => _x( 'Campaigns', 'post type general name', 'optin-monster-api' ),
|
83 |
register_post_type(
|
84 |
'omapi',
|
85 |
array(
|
86 |
+
'labels' => apply_filters(
|
87 |
'optin_monster_api_post_type_labels',
|
88 |
array(
|
89 |
'name' => _x( 'Campaigns', 'post type general name', 'optin-monster-api' ),
|
OMAPI/Utils.php
CHANGED
@@ -77,4 +77,23 @@ class OMAPI_Utils {
|
|
77 |
return function_exists( 'is_amp_endpoint' ) && is_amp_endpoint();
|
78 |
}
|
79 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
80 |
}
|
77 |
return function_exists( 'is_amp_endpoint' ) && is_amp_endpoint();
|
78 |
}
|
79 |
|
80 |
+
/**
|
81 |
+
* Ensures a unique array.
|
82 |
+
*
|
83 |
+
* @since 1.9.10
|
84 |
+
*
|
85 |
+
* @param array $val Array to clean.
|
86 |
+
*
|
87 |
+
* @return array Cleaned array.
|
88 |
+
*/
|
89 |
+
public static function unique_array( $val ) {
|
90 |
+
if ( empty( $val ) ) {
|
91 |
+
return array();
|
92 |
+
}
|
93 |
+
|
94 |
+
$val = array_filter( $val );
|
95 |
+
|
96 |
+
return array_unique( $val );
|
97 |
+
}
|
98 |
+
|
99 |
}
|
OMAPI/Validate.php
CHANGED
@@ -117,39 +117,45 @@ class OMAPI_Validate {
|
|
117 |
|
118 |
// Check for new apikey and only use the old user/key if we don't have it
|
119 |
if ( ! $creds['apikey'] ) {
|
120 |
-
$api
|
|
|
|
|
|
|
|
|
|
|
|
|
121 |
} else {
|
122 |
-
$api
|
123 |
}
|
124 |
|
125 |
-
$ret
|
126 |
if ( is_wp_error( $ret ) ) {
|
127 |
$option = $this->base->get_option();
|
128 |
$type = $ret->get_error_code();
|
129 |
switch ( $type ) {
|
130 |
-
case 'missing'
|
131 |
-
case 'auth'
|
132 |
// Set option values.
|
133 |
$option['is_invalid'] = true;
|
134 |
$option['is_expired'] = false;
|
135 |
$option['is_disabled'] = false;
|
136 |
-
|
137 |
|
138 |
-
case 'disabled'
|
139 |
// Set option values.
|
140 |
$option['is_invalid'] = false;
|
141 |
$option['is_expired'] = false;
|
142 |
$option['is_disabled'] = true;
|
143 |
-
|
144 |
|
145 |
-
case 'expired'
|
146 |
// Set option values.
|
147 |
$option['is_invalid'] = false;
|
148 |
$option['is_expired'] = true;
|
149 |
$option['is_disabled'] = false;
|
150 |
-
|
151 |
default:
|
152 |
-
|
153 |
}
|
154 |
|
155 |
// Update option.
|
@@ -178,7 +184,7 @@ class OMAPI_Validate {
|
|
178 |
if ( 'optin-monster-api-settings' !== $page && 'optin-monster-api-welcome' !== $page ) {
|
179 |
if ( ! $this->base->menu->has_trial_link() ) {
|
180 |
echo '<div class="notice notice-error"><p>' . esc_html__( 'There was an error verifying your OptinMonster API credentials. They are either missing or they are no longer valid.', 'optin-monster-api' ) . '</p>';
|
181 |
-
echo '<p><a href="' . esc_url_raw(
|
182 |
}
|
183 |
}
|
184 |
} elseif ( isset( $option['is_disabled'] ) && $option['is_disabled'] ) {
|
@@ -188,14 +194,11 @@ class OMAPI_Validate {
|
|
188 |
echo '<div class="notice notice-error"><p>' . esc_html__( 'The subscription to this OptinMonster account has expired. Please renew your subscription to use the OptinMonster API.', 'optin-monster-api' ) . '</p>';
|
189 |
echo '<p><a href="' . OPTINMONSTER_APP_URL . '/account/billing/?utm_source=orgplugin&utm_medium=link&utm_campaign=wpdashboard" class="button button-primary button-large omapi-new-optin" title="' . esc_html__( 'Renew Subscription', 'optin-monster-api' ) . '" target="_blank">' . esc_html__( 'Renew Subscription', 'optin-monster-api' ) . '</a></p></div>';
|
190 |
} else {
|
191 |
-
// If user has dismissed before no point going through page checks
|
192 |
if ( $this->should_user_see_connect_nag() ) {
|
193 |
-
if ( 'optin-monster-api-settings' !== $page && 'optin-monster-api-welcome' !== $page && 'index.php' !== $pagenow && ! $this->base->get_api_credentials() ) {
|
194 |
-
echo '<div id="omapi-please-connect-notice" class="notice notice-success is-dismissible"><h3 style="padding:2px;font-weight:normal;margin:.5em 0 0;">' . esc_html__( 'Get More Email Subscribers with OptinMonster', 'optin-monster-api' ) . '</h3><p>' . esc_html__( 'Please connect to or create an OptinMonster account to start using OptinMonster. This will enable you to start turning website visitors into subscribers & customers.', 'optin-monster-api' ) . '</p>';
|
195 |
-
echo '<p><a href="' . esc_url_raw( $this->base->menu->get_dashboard_link() ) . '" class="button button-primary button-large omapi-new-optin" title="' . esc_html__( 'Connect OptinMonster', 'optin-monster-api' ) . '">' . esc_html__( 'Connect OptinMonster' ) . '</a></p></div>';
|
196 |
-
}
|
197 |
-
}
|
198 |
|
|
|
|
|
|
|
199 |
}
|
200 |
|
201 |
}
|
@@ -209,7 +212,7 @@ class OMAPI_Validate {
|
|
209 |
jQuery(document).on( 'click', '#omapi-please-connect-notice .notice-dismiss', function( event ) {
|
210 |
event.preventDefault();
|
211 |
|
212 |
-
//Set the pointer to be closed for this user
|
213 |
jQuery.post( ajaxurl, {
|
214 |
pointer: 'omapi_please_connect_notice',
|
215 |
action: 'dismiss-wp-pointer'
|
@@ -230,26 +233,34 @@ class OMAPI_Validate {
|
|
230 |
* @return bool default false and true only if the 'omapi_please_connect_notice' is not in the wp dismissed pointers usermeta
|
231 |
*/
|
232 |
public function should_user_see_connect_nag() {
|
|
|
|
|
233 |
|
234 |
-
|
235 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
236 |
|
237 |
// Get array list of dismissed pointers for current user and convert it to array
|
238 |
-
$dismissed_pointers = explode( ',', get_user_meta( get_current_user_id(), 'dismissed_wp_pointers', true ) );
|
239 |
|
240 |
// Check if our pointer is not among dismissed ones and that the user should see this
|
241 |
-
if
|
242 |
-
$
|
|
|
|
|
|
|
243 |
// Add footer script to save when user dismisses
|
244 |
add_action( 'admin_print_footer_scripts', array( $this, 'hide_connect_notice_script' ) );
|
245 |
-
}
|
246 |
|
247 |
-
if ( $show_the_nag ) {
|
248 |
return true;
|
249 |
}
|
250 |
|
251 |
return false;
|
252 |
-
|
253 |
}
|
254 |
|
255 |
}
|
117 |
|
118 |
// Check for new apikey and only use the old user/key if we don't have it
|
119 |
if ( ! $creds['apikey'] ) {
|
120 |
+
$api = new OMAPI_Api(
|
121 |
+
'validate/',
|
122 |
+
array(
|
123 |
+
'user' => $creds['user'],
|
124 |
+
'key' => $creds['key'],
|
125 |
+
)
|
126 |
+
);
|
127 |
} else {
|
128 |
+
$api = new OMAPI_Api( 'verify/', array( 'apikey' => $creds['apikey'] ) );
|
129 |
}
|
130 |
|
131 |
+
$ret = $api->request();
|
132 |
if ( is_wp_error( $ret ) ) {
|
133 |
$option = $this->base->get_option();
|
134 |
$type = $ret->get_error_code();
|
135 |
switch ( $type ) {
|
136 |
+
case 'missing':
|
137 |
+
case 'auth':
|
138 |
// Set option values.
|
139 |
$option['is_invalid'] = true;
|
140 |
$option['is_expired'] = false;
|
141 |
$option['is_disabled'] = false;
|
142 |
+
break;
|
143 |
|
144 |
+
case 'disabled':
|
145 |
// Set option values.
|
146 |
$option['is_invalid'] = false;
|
147 |
$option['is_expired'] = false;
|
148 |
$option['is_disabled'] = true;
|
149 |
+
break;
|
150 |
|
151 |
+
case 'expired':
|
152 |
// Set option values.
|
153 |
$option['is_invalid'] = false;
|
154 |
$option['is_expired'] = true;
|
155 |
$option['is_disabled'] = false;
|
156 |
+
break;
|
157 |
default:
|
158 |
+
break;
|
159 |
}
|
160 |
|
161 |
// Update option.
|
184 |
if ( 'optin-monster-api-settings' !== $page && 'optin-monster-api-welcome' !== $page ) {
|
185 |
if ( ! $this->base->menu->has_trial_link() ) {
|
186 |
echo '<div class="notice notice-error"><p>' . esc_html__( 'There was an error verifying your OptinMonster API credentials. They are either missing or they are no longer valid.', 'optin-monster-api' ) . '</p>';
|
187 |
+
echo '<p><a href="' . esc_url_raw( $this->base->menu->get_settings_link() ) . '" class="button button-primary button-large omapi-new-optin" title="' . esc_html__( 'View API Settings', 'optin-monster-api' ) . '">' . esc_html__( 'View API Settings', 'optin-monster-api' ) . '</a></p></div>';
|
188 |
}
|
189 |
}
|
190 |
} elseif ( isset( $option['is_disabled'] ) && $option['is_disabled'] ) {
|
194 |
echo '<div class="notice notice-error"><p>' . esc_html__( 'The subscription to this OptinMonster account has expired. Please renew your subscription to use the OptinMonster API.', 'optin-monster-api' ) . '</p>';
|
195 |
echo '<p><a href="' . OPTINMONSTER_APP_URL . '/account/billing/?utm_source=orgplugin&utm_medium=link&utm_campaign=wpdashboard" class="button button-primary button-large omapi-new-optin" title="' . esc_html__( 'Renew Subscription', 'optin-monster-api' ) . '" target="_blank">' . esc_html__( 'Renew Subscription', 'optin-monster-api' ) . '</a></p></div>';
|
196 |
} else {
|
|
|
197 |
if ( $this->should_user_see_connect_nag() ) {
|
|
|
|
|
|
|
|
|
|
|
198 |
|
199 |
+
echo '<div id="omapi-please-connect-notice" class="notice notice-success is-dismissible"><h3 style="padding:2px;font-weight:normal;margin:.5em 0 0;">' . esc_html__( 'Get More Email Subscribers with OptinMonster', 'optin-monster-api' ) . '</h3><p>' . esc_html__( 'Please connect to or create an OptinMonster account to start using OptinMonster. This will enable you to start turning website visitors into subscribers & customers.', 'optin-monster-api' ) . '</p>';
|
200 |
+
echo '<p><a href="' . esc_url_raw( $this->base->menu->get_dashboard_link() ) . '" class="button button-primary button-large omapi-new-optin" title="' . esc_html__( 'Connect OptinMonster', 'optin-monster-api' ) . '">' . esc_html__( 'Connect OptinMonster' ) . '</a></p></div>';
|
201 |
+
}
|
202 |
}
|
203 |
|
204 |
}
|
212 |
jQuery(document).on( 'click', '#omapi-please-connect-notice .notice-dismiss', function( event ) {
|
213 |
event.preventDefault();
|
214 |
|
215 |
+
// Set the pointer to be closed for this user
|
216 |
jQuery.post( ajaxurl, {
|
217 |
pointer: 'omapi_please_connect_notice',
|
218 |
action: 'dismiss-wp-pointer'
|
233 |
* @return bool default false and true only if the 'omapi_please_connect_notice' is not in the wp dismissed pointers usermeta
|
234 |
*/
|
235 |
public function should_user_see_connect_nag() {
|
236 |
+
global $pagenow;
|
237 |
+
$page = isset( $_GET['page'] ) ? $_GET['page'] : '';
|
238 |
|
239 |
+
if (
|
240 |
+
$this->base->menu->is_om_page()
|
241 |
+
|| 'index.php' === $pagenow
|
242 |
+
|| $this->base->get_api_credentials()
|
243 |
+
|
244 |
+
) {
|
245 |
+
return false;
|
246 |
+
}
|
247 |
|
248 |
// Get array list of dismissed pointers for current user and convert it to array
|
249 |
+
$dismissed_pointers = explode( ',', (string) get_user_meta( get_current_user_id(), 'dismissed_wp_pointers', true ) );
|
250 |
|
251 |
// Check if our pointer is not among dismissed ones and that the user should see this
|
252 |
+
if (
|
253 |
+
! in_array( 'omapi_please_connect_notice', $dismissed_pointers, true )
|
254 |
+
&& current_user_can( 'activate_plugins' )
|
255 |
+
) {
|
256 |
+
|
257 |
// Add footer script to save when user dismisses
|
258 |
add_action( 'admin_print_footer_scripts', array( $this, 'hide_connect_notice_script' ) );
|
|
|
259 |
|
|
|
260 |
return true;
|
261 |
}
|
262 |
|
263 |
return false;
|
|
|
264 |
}
|
265 |
|
266 |
}
|
OMAPI/Welcome.php
CHANGED
@@ -68,7 +68,7 @@ class OMAPI_Welcome {
|
|
68 |
}
|
69 |
|
70 |
// If user is in admin ajax or doing cron, return.
|
71 |
-
if ( ( defined( 'DOING_AJAX' ) && DOING_AJAX
|
72 |
return;
|
73 |
}
|
74 |
|
@@ -85,13 +85,13 @@ class OMAPI_Welcome {
|
|
85 |
// Set our object.
|
86 |
$this->set();
|
87 |
|
88 |
-
//Load the Welcome screen
|
89 |
-
add_action( 'admin_menu', array($this, 'register_welcome_page' ) );
|
90 |
|
91 |
-
//maybe redirect
|
92 |
add_action( 'admin_init', array( $this, 'maybe_welcome_redirect' ) );
|
93 |
|
94 |
-
//maybe add body classes
|
95 |
add_action( 'current_screen', array( $this, 'welcome_screen_helpers' ) );
|
96 |
|
97 |
// Maybe load a dashboard widget.
|
@@ -114,17 +114,16 @@ class OMAPI_Welcome {
|
|
114 |
public function welcome_screen_helpers() {
|
115 |
|
116 |
$screen = get_current_screen();
|
117 |
-
|
118 |
-
if ( 'admin_page_optin-monster-api-welcome' === $screen->id ) {
|
119 |
-
update_option( 'optin_monster_viewed_welcome', true );
|
120 |
add_filter( 'admin_body_class', array( $this, 'add_body_classes' ) );
|
121 |
}
|
122 |
|
123 |
// Make sure welcome page is always first page to view.
|
124 |
-
if ( '
|
|
|
125 |
// If We don't have the OM API Key set, and the "Bypass welcome screen" query string isn't set
|
126 |
if ( ! $this->base->get_api_credentials() && ! isset( $_GET['om-bypass-api-check'] ) ) {
|
127 |
-
|
128 |
}
|
129 |
}
|
130 |
}
|
@@ -147,31 +146,29 @@ class OMAPI_Welcome {
|
|
147 |
|
148 |
$options = $this->base->get_option();
|
149 |
|
150 |
-
//Check for the new option
|
151 |
-
if ( ! empty( $options['welcome']['status'] ) ){
|
152 |
|
153 |
// Check if they have been welcomed
|
154 |
if ( 'none' === $options['welcome']['status'] ) {
|
155 |
|
156 |
// Update the option.
|
157 |
$options['welcome']['status'] = 'welcomed';
|
158 |
-
update_option('optin_monster_api', $options );
|
159 |
|
160 |
// If this was not a bulk activate send them to the page
|
161 |
if ( ! isset( $_GET['activate-multi'] ) ) {
|
162 |
// Only redirect if no trial is found.
|
163 |
$trial = $this->base->menu->has_trial_link();
|
164 |
if ( ! $trial ) {
|
165 |
-
|
166 |
}
|
167 |
}
|
168 |
-
|
169 |
}
|
170 |
-
|
171 |
} else {
|
172 |
-
//welcome option didn't exist so must be pre-existing user updating
|
173 |
$options['welcome']['status'] = 'welcomed';
|
174 |
-
update_option('optin_monster_api', $options );
|
175 |
}
|
176 |
|
177 |
}
|
@@ -182,159 +179,70 @@ class OMAPI_Welcome {
|
|
182 |
* @since 1.1.4.2
|
183 |
*/
|
184 |
public function register_welcome_page() {
|
185 |
-
$slug
|
186 |
$is_current = isset( $_GET['page'] ) && $slug === $_GET['page'];
|
187 |
|
188 |
$this->hook = add_submenu_page(
|
189 |
-
$is_current ? 'optin-monster-api-settings' : 'optin-monster-api-settings-no-menu', //parent slug
|
190 |
-
esc_html__( 'Welcome to OptinMonster', 'optin-monster-api' ), //page title,
|
191 |
esc_html__( 'Welcome', 'optin-monster-api' ),
|
192 |
-
apply_filters( 'optin_monster_api_menu_cap', 'manage_options', $slug ), //cap
|
193 |
-
$slug, //slug
|
194 |
-
array( $this, 'callback_to_display_page' ) //callback
|
195 |
);
|
196 |
|
197 |
// Load settings page assets.
|
198 |
if ( $this->hook ) {
|
|
|
199 |
add_action( 'load-' . $this->hook, array( $this, 'assets' ) );
|
200 |
}
|
201 |
|
202 |
}
|
203 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
204 |
/**
|
205 |
* Outputs the OptinMonster settings page.
|
206 |
*
|
207 |
* @since 1.1.4.2
|
208 |
*/
|
209 |
public function callback_to_display_page() {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
210 |
|
211 |
-
|
212 |
-
|
213 |
-
|
214 |
-
|
215 |
-
|
216 |
-
|
217 |
-
|
218 |
-
|
219 |
-
<div class="omapi-well welcome-connect">
|
220 |
-
<p><?php esc_html_e( 'Please connect to or create an OptinMonster account to start using OptinMonster. This will enable you to start turning website visitors into subscribers & customers.', 'optin-monster-api' ); ?></p>
|
221 |
-
<div class="actions">
|
222 |
-
<a class="button button-omapi-green button-hero" href="<?php echo $link; ?>" target="_blank"><?php echo $text; ?></a>
|
223 |
-
<span class="or">or</span>
|
224 |
-
<a class="button button-omapi-gray button-hero" href="<?php echo $api_link; ?>"><?php esc_html_e( 'Connect Your Account', 'optin-monster-api' ) ?></a>
|
225 |
-
</div>
|
226 |
-
</div>
|
227 |
-
<div id="js__omapi-video-well" class="omapi-well welcome-data-vid">
|
228 |
-
<h2><?php esc_html_e( 'Get More Email Subscribers, FAST!', 'optin-monster-api' ); ?></h2>
|
229 |
-
<p><?php esc_html_e( 'OptinMonster helps you convert abandoning website visitors into email subscribers with smart web forms and behavior personalization.', 'optin-monster-api' ); ?></p>
|
230 |
-
<div class="actions">
|
231 |
-
<a id="js_omapi-welcome-video-link" class="omapi-video-link" href="https://www.youtube.com/embed/jbP9C9bQtv4?rel=0&controls=0&showinfo=0&autoplay=1">
|
232 |
-
<img width="188" src="<?php echo plugins_url( '/assets/css/images/video-cta-button.png', OMAPI_FILE ) ?>">
|
233 |
-
</a>
|
234 |
-
</div>
|
235 |
-
<div class="omapi-welcome-video-holder">
|
236 |
-
<iframe id="js__omapi-welcome-video-frame" width="640" height="360" src="" frameborder="0" allowfullscreen></iframe>
|
237 |
-
</div>
|
238 |
-
</div>
|
239 |
-
|
240 |
-
<div class="omapi-sub-title">
|
241 |
-
<h2><?php esc_html_e( 'Top 4 Reasons Why People Love OptinMonster', 'optin-monster-api' ); ?></h2>
|
242 |
-
<p><?php esc_html_e( 'Here\'s why smart business owners love OptinMonster, and you will too!', 'optin-monster-api' ); ?></p>
|
243 |
-
</div>
|
244 |
-
<div class="divider"></div>
|
245 |
-
|
246 |
-
<div class="omapi-feature-box omapi-clear">
|
247 |
-
<div class="omapi-feature-image"><img src="<?php echo plugins_url( '/assets/css/images/features-builder.png', OMAPI_FILE ); ?>" alt="<?php esc_attr_e( 'OptinMonster Form Builder', 'optin-monster-api' ); ?>" /></div>
|
248 |
-
<div class="omapi-feature-text">
|
249 |
-
<h3><?php esc_html_e( 'Build high converting forms in minutes, not hours', 'optin-monster-api' ); ?></h3>
|
250 |
-
<p><?php esc_html_e( 'Create visually stunning optin forms that are optimized for the highest conversion rates.', 'optin-monster-api' ); ?></p>
|
251 |
-
<p><?php esc_html_e( 'You can create various types of optin forms such as lightbox popups, floating bars, slide-ins, and more.', 'optin-monster-api' ); ?></p>
|
252 |
-
</div>
|
253 |
-
</div>
|
254 |
-
|
255 |
-
<div class="omapi-feature-box omapi-clear">
|
256 |
-
<div class="omapi-feature-text">
|
257 |
-
<h3><?php esc_html_e( 'Convert abandoning visitors into subscribers & customers', 'optin-monster-api' ); ?></h3>
|
258 |
-
<p><?php esc_html_e( 'Did you know that over 70% of visitors who abandon your website will never return?', 'optin-monster-api' ); ?></p>
|
259 |
-
<p><?php esc_html_e( 'Our exit-intent® technology detects user behavior and prompts them with a targeted campaign at the precise moment they are about to leave.', 'optin-monster-api' ); ?></p>
|
260 |
-
</div>
|
261 |
-
<div class="omapi-feature-image"><img src="<?php echo plugins_url( '/assets/css/images/features-exit-animated.gif', OMAPI_FILE ); ?>" alt="<?php esc_attr_e( 'OptinMonster Exit Intent Technology', 'optin-monster-api' ); ?>" /></div>
|
262 |
-
</div>
|
263 |
-
|
264 |
-
<div class="omapi-feature-box omapi-clear">
|
265 |
-
<div class="omapi-feature-image"><img src="<?php echo plugins_url( '/assets/css/images/features-ab-testing.png', OMAPI_FILE ); ?>" alt="<?php esc_attr_e( 'OptinMonster uses smart A/B testing', 'optin-monster-api' ); ?>" /></div>
|
266 |
-
<div class="omapi-feature-text">
|
267 |
-
<h3><?php esc_html_e( 'Easily A/B test your ideas and increase conversions', 'optin-monster-api' ); ?></h3>
|
268 |
-
<p><?php esc_html_e( 'A/B testing helps you eliminate the guess work and make data-driven decisions on what works best.', 'optin-monster-api' ); ?></p>
|
269 |
-
<p><?php esc_html_e( 'Try different content, headlines, layouts, and styles to see what converts best with our smart and easy to use A/B testing tool.', 'optin-monster-api' ); ?></p>
|
270 |
-
</div>
|
271 |
-
</div>
|
272 |
-
|
273 |
-
<div class="omapi-feature-box omapi-clear">
|
274 |
-
<div class="omapi-feature-text">
|
275 |
-
<h3><?php esc_html_e( 'Measuring your results has never been easier', 'optin-monster-api' ); ?></h3>
|
276 |
-
<p><?php esc_html_e( 'Get the stats that matter and take action to imrpove your lead-generation strategy.', 'optin-monster-api' ); ?></p>
|
277 |
-
<p><?php esc_html_e( 'Our built-in analytics help you analyze clicks, views, and overall conversion rates for each page and optin form.', 'optin-monster-api' ); ?></p>
|
278 |
-
</div>
|
279 |
-
<div class="omapi-feature-image"><img src="<?php echo plugins_url( '/assets/css/images/features-analytics.png', OMAPI_FILE ); ?>" alt="<?php esc_attr_e( 'OptinMonster Segmenting with Page Level Targeting', 'optin-monster-api' ); ?>" /></div>
|
280 |
-
</div>
|
281 |
-
|
282 |
-
<div class="omapi-single-cta">
|
283 |
-
<a class="button button-omapi-green button-hero" href="<?php echo $link; ?>" target="_blank"><?php echo $text; ?></a>
|
284 |
-
</div>
|
285 |
-
<div class="omapi-well welcome-featuredin">
|
286 |
-
<h2><?php esc_html_e( 'OptinMonster has been featured in:', 'optin-monster-api' ); ?></h2>
|
287 |
-
<img src="<?php echo plugins_url( '/assets/css/images/featured-logos.png', OMAPI_FILE ); ?>" alt="<?php esc_attr_e( 'OptinMonster has been featured in Inc., Forbes, VB, Yahoo, Entrepreneur, Huff Post, and more', 'optin-monster-api' ); ?>" />
|
288 |
-
</div>
|
289 |
-
|
290 |
-
<div class="omapi-reviews">
|
291 |
-
<div class="omapi-well omapi-mini-well">
|
292 |
-
<div class="omapi-talking-head">
|
293 |
-
<img src="<?php echo plugins_url( '/assets/css/images/michaelstelzner.png', OMAPI_FILE ); ?>">
|
294 |
-
</div>
|
295 |
-
<p class="ompai-review">
|
296 |
-
<?php _e( '<strong>We added more than 95,000 names to our email list</strong> using OptinMonster\'s Exit Intent® technology. We strongly recommend it!', 'optin-monster-api' ); ?>
|
297 |
-
<span class="reviewer-name"><?php esc_html_e( 'Michael Stelzner', 'optin-monster-api' ); ?></span>
|
298 |
-
<span class="reviewer-title"><?php esc_html_e( 'Founder Social Media Examiner', 'optin-monster-api' ); ?></span>
|
299 |
-
</p>
|
300 |
-
</div>
|
301 |
-
<div class="omapi-well omapi-mini-well">
|
302 |
-
<div class="omapi-talking-head">
|
303 |
-
<img src="<?php echo plugins_url( '/assets/css/images/neilpatel.png', OMAPI_FILE ); ?>">
|
304 |
-
</div>
|
305 |
-
<p class="ompai-review">
|
306 |
-
<?php _e( 'Exit Intent® popups have doubled my email opt-in rate. <strong>When done right, you can see an instant 10% lift on driving sales.</strong> I highly recommend that you use OptinMonster for growing your email list and sales.', 'optin-monster-api' ); ?>
|
307 |
-
<span class="reviewer-name"><?php esc_html_e( 'Neil Patel', 'optin-monster-api' ); ?></span>
|
308 |
-
<span class="reviewer-title"><?php esc_html_e( 'Founder QuickSprout', 'optin-monster-api' ); ?></span>
|
309 |
-
</p>
|
310 |
-
</div>
|
311 |
-
<div class="omapi-well omapi-mini-well">
|
312 |
-
<div class="omapi-talking-head">
|
313 |
-
<img src="<?php echo plugins_url( '/assets/css/images/matthewwoodward.png', OMAPI_FILE ); ?>">
|
314 |
-
</div>
|
315 |
-
<p class="ompai-review">
|
316 |
-
<?php _e( 'OptinMonster played a critical role in increasing my email optin conversion rate by 469%. In real numbers, <strong>that is the difference between $7,765 and $47,748 per month.</strong>', 'optin-monster-api' ); ?>
|
317 |
-
<span class="reviewer-name"><?php esc_html_e( 'Matthew Woodward', 'optin-monster-api' ); ?></span>
|
318 |
-
<span class="reviewer-title"><?php esc_html_e( 'SEO Expert', 'optin-monster-api' ); ?></span>
|
319 |
-
</p>
|
320 |
-
</div>
|
321 |
-
</div>
|
322 |
-
|
323 |
-
<div class="omapi-well welcome-connect">
|
324 |
-
<p><?php esc_html_e( 'Join the thousands of users who use OptinMonster to convert abandoning website visitors into subscribers and customers.', 'optin-monster-api' ); ?></p>
|
325 |
-
<div class="actions">
|
326 |
-
<a class="button button-omapi-green button-hero" href="<?php echo $link; ?>" target="_blank"><?php echo $text; ?></a>
|
327 |
-
<span class="or">or</span>
|
328 |
-
<a class="button button-omapi-gray button-hero" href="<?php echo $api_link; ?>"><?php esc_html_e( 'Connect Your Account', 'optin-monster-api' ) ?></a>
|
329 |
-
</div>
|
330 |
-
</div>
|
331 |
-
|
332 |
-
</div>
|
333 |
-
|
334 |
-
</div>
|
335 |
-
|
336 |
-
<?php
|
337 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
338 |
}
|
339 |
|
340 |
/**
|
@@ -354,10 +262,10 @@ class OMAPI_Welcome {
|
|
354 |
);
|
355 |
|
356 |
global $wp_meta_boxes;
|
357 |
-
$normal_dashboard
|
358 |
$example_widget_backup = array( 'optin_monster_db_widget' => $normal_dashboard['optin_monster_db_widget'] );
|
359 |
unset( $normal_dashboard['optin_monster_db_widget'] );
|
360 |
-
$sorted_dashboard
|
361 |
$wp_meta_boxes['dashboard']['normal']['core'] = $sorted_dashboard;
|
362 |
}
|
363 |
|
@@ -398,7 +306,7 @@ class OMAPI_Welcome {
|
|
398 |
*/
|
399 |
public function styles() {
|
400 |
|
401 |
-
wp_register_style( $this->base->plugin_slug . '-settings', plugins_url( '/assets/css/settings.css', OMAPI_FILE ), array(), $this->base->
|
402 |
wp_enqueue_style( $this->base->plugin_slug . '-settings' );
|
403 |
|
404 |
}
|
@@ -410,7 +318,7 @@ class OMAPI_Welcome {
|
|
410 |
.on( 'click', function ( e ) {
|
411 |
e.preventDefault();
|
412 |
jQuery( this ).parents( '#js__omapi-video-well' ).addClass( 'active' );
|
413 |
-
jQuery( '#js__omapi-welcome-video-frame' ).prop( 'src', jQuery( e.currentTarget ).attr( 'href' ) );
|
414 |
})
|
415 |
</script>
|
416 |
<?php
|
@@ -426,11 +334,43 @@ class OMAPI_Welcome {
|
|
426 |
*/
|
427 |
public function footer( $text ) {
|
428 |
|
429 |
-
$new_text = sprintf(
|
|
|
430 |
'https://optinmonster.com'
|
431 |
);
|
432 |
return str_replace( '</span>', '', $text ) . ' | ' . $new_text . '</span>';
|
433 |
|
434 |
}
|
435 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
436 |
}
|
68 |
}
|
69 |
|
70 |
// If user is in admin ajax or doing cron, return.
|
71 |
+
if ( ( defined( 'DOING_AJAX' ) && DOING_AJAX ) || ( defined( 'DOING_CRON' ) && DOING_CRON ) ) {
|
72 |
return;
|
73 |
}
|
74 |
|
85 |
// Set our object.
|
86 |
$this->set();
|
87 |
|
88 |
+
// Load the Welcome screen
|
89 |
+
add_action( 'admin_menu', array( $this, 'register_welcome_page' ) );
|
90 |
|
91 |
+
// maybe redirect
|
92 |
add_action( 'admin_init', array( $this, 'maybe_welcome_redirect' ) );
|
93 |
|
94 |
+
// maybe add body classes
|
95 |
add_action( 'current_screen', array( $this, 'welcome_screen_helpers' ) );
|
96 |
|
97 |
// Maybe load a dashboard widget.
|
114 |
public function welcome_screen_helpers() {
|
115 |
|
116 |
$screen = get_current_screen();
|
117 |
+
if ( 'optinmonster_page_optin-monster-api-welcome' === $screen->id ) {
|
|
|
|
|
118 |
add_filter( 'admin_body_class', array( $this, 'add_body_classes' ) );
|
119 |
}
|
120 |
|
121 |
// Make sure welcome page is always first page to view.
|
122 |
+
if ( 'toplevel_page_' . $this->base->menu->parent_slug() === $screen->id ) {
|
123 |
+
|
124 |
// If We don't have the OM API Key set, and the "Bypass welcome screen" query string isn't set
|
125 |
if ( ! $this->base->get_api_credentials() && ! isset( $_GET['om-bypass-api-check'] ) ) {
|
126 |
+
$this->redirect_to();
|
127 |
}
|
128 |
}
|
129 |
}
|
146 |
|
147 |
$options = $this->base->get_option();
|
148 |
|
149 |
+
// Check for the new option
|
150 |
+
if ( ! empty( $options['welcome']['status'] ) ) {
|
151 |
|
152 |
// Check if they have been welcomed
|
153 |
if ( 'none' === $options['welcome']['status'] ) {
|
154 |
|
155 |
// Update the option.
|
156 |
$options['welcome']['status'] = 'welcomed';
|
157 |
+
update_option( 'optin_monster_api', $options );
|
158 |
|
159 |
// If this was not a bulk activate send them to the page
|
160 |
if ( ! isset( $_GET['activate-multi'] ) ) {
|
161 |
// Only redirect if no trial is found.
|
162 |
$trial = $this->base->menu->has_trial_link();
|
163 |
if ( ! $trial ) {
|
164 |
+
$this->redirect_to();
|
165 |
}
|
166 |
}
|
|
|
167 |
}
|
|
|
168 |
} else {
|
169 |
+
// welcome option didn't exist so must be pre-existing user updating
|
170 |
$options['welcome']['status'] = 'welcomed';
|
171 |
+
update_option( 'optin_monster_api', $options );
|
172 |
}
|
173 |
|
174 |
}
|
179 |
* @since 1.1.4.2
|
180 |
*/
|
181 |
public function register_welcome_page() {
|
182 |
+
$slug = 'optin-monster-api-welcome';
|
183 |
$is_current = isset( $_GET['page'] ) && $slug === $_GET['page'];
|
184 |
|
185 |
$this->hook = add_submenu_page(
|
186 |
+
$is_current ? 'optin-monster-api-settings' : 'optin-monster-api-settings-no-menu', // parent slug
|
187 |
+
esc_html__( 'Welcome to OptinMonster', 'optin-monster-api' ), // page title,
|
188 |
esc_html__( 'Welcome', 'optin-monster-api' ),
|
189 |
+
apply_filters( 'optin_monster_api_menu_cap', 'manage_options', $slug ), // cap
|
190 |
+
$slug, // slug
|
191 |
+
array( $this, 'callback_to_display_page' ) // callback
|
192 |
);
|
193 |
|
194 |
// Load settings page assets.
|
195 |
if ( $this->hook ) {
|
196 |
+
add_action( 'load-' . $this->hook, array( $this, 'maybe_redirect' ) );
|
197 |
add_action( 'load-' . $this->hook, array( $this, 'assets' ) );
|
198 |
}
|
199 |
|
200 |
}
|
201 |
|
202 |
+
/**
|
203 |
+
* If user already has credentials set, redirect them to the main page.
|
204 |
+
*
|
205 |
+
* @since 1.9.10
|
206 |
+
*
|
207 |
+
* @return void
|
208 |
+
*/
|
209 |
+
public function maybe_redirect() {
|
210 |
+
if ( $this->base->get_api_credentials() ) {
|
211 |
+
$this->base->menu->redirect_to_dashboard();
|
212 |
+
}
|
213 |
+
}
|
214 |
+
|
215 |
/**
|
216 |
* Outputs the OptinMonster settings page.
|
217 |
*
|
218 |
* @since 1.1.4.2
|
219 |
*/
|
220 |
public function callback_to_display_page() {
|
221 |
+
wp_enqueue_script(
|
222 |
+
$this->base->plugin_slug . '-connect',
|
223 |
+
$this->base->url . 'assets/dist/js/connect.min.js',
|
224 |
+
array( 'jquery' ),
|
225 |
+
$this->base->asset_version(),
|
226 |
+
true
|
227 |
+
);
|
228 |
|
229 |
+
wp_localize_script(
|
230 |
+
$this->base->plugin_slug . '-connect',
|
231 |
+
'OMAPI',
|
232 |
+
array(
|
233 |
+
'app_url' => trailingslashit( OPTINMONSTER_APP_URL ),
|
234 |
+
'blogname' => esc_attr( get_option( 'blogname' ) ),
|
235 |
+
)
|
236 |
+
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
237 |
|
238 |
+
$this->base->output_view(
|
239 |
+
'welcome.php',
|
240 |
+
array(
|
241 |
+
'button_text' => $this->base->menu->has_trial_link() ? __( 'Get Started for Free', 'optin-monster-api' ) : __( 'Get OptinMonster Now', 'optin-monster-api' ),
|
242 |
+
'button_link' => esc_url( $this->base->menu->get_action_link() ),
|
243 |
+
'api_link' => esc_url_raw( admin_url( 'admin.php?page=' . $this->base->menu->parent_slug() . '&om-bypass-api-check=true' ) ),
|
244 |
+
)
|
245 |
+
);
|
246 |
}
|
247 |
|
248 |
/**
|
262 |
);
|
263 |
|
264 |
global $wp_meta_boxes;
|
265 |
+
$normal_dashboard = $wp_meta_boxes['dashboard']['normal']['core'];
|
266 |
$example_widget_backup = array( 'optin_monster_db_widget' => $normal_dashboard['optin_monster_db_widget'] );
|
267 |
unset( $normal_dashboard['optin_monster_db_widget'] );
|
268 |
+
$sorted_dashboard = array_merge( $example_widget_backup, $normal_dashboard );
|
269 |
$wp_meta_boxes['dashboard']['normal']['core'] = $sorted_dashboard;
|
270 |
}
|
271 |
|
306 |
*/
|
307 |
public function styles() {
|
308 |
|
309 |
+
wp_register_style( $this->base->plugin_slug . '-settings', plugins_url( '/assets/dist/css/settings.min.css', OMAPI_FILE ), array(), $this->base->asset_version() );
|
310 |
wp_enqueue_style( $this->base->plugin_slug . '-settings' );
|
311 |
|
312 |
}
|
318 |
.on( 'click', function ( e ) {
|
319 |
e.preventDefault();
|
320 |
jQuery( this ).parents( '#js__omapi-video-well' ).addClass( 'active' );
|
321 |
+
jQuery( '#js__omapi-welcome-video-frame' ).show().prop( 'src', jQuery( e.currentTarget ).attr( 'href' ) );
|
322 |
})
|
323 |
</script>
|
324 |
<?php
|
334 |
*/
|
335 |
public function footer( $text ) {
|
336 |
|
337 |
+
$new_text = sprintf(
|
338 |
+
__( 'Thank you for using <a href="%1$s" target="_blank">OptinMonster</a>!', 'optin-monster-api' ),
|
339 |
'https://optinmonster.com'
|
340 |
);
|
341 |
return str_replace( '</span>', '', $text ) . ' | ' . $new_text . '</span>';
|
342 |
|
343 |
}
|
344 |
|
345 |
+
/**
|
346 |
+
* Get the OM welcome url.
|
347 |
+
*
|
348 |
+
* @since 1.9.10
|
349 |
+
*
|
350 |
+
* @return string
|
351 |
+
*/
|
352 |
+
public function get_link() {
|
353 |
+
return $this->base->menu->admin_page_url(
|
354 |
+
array(
|
355 |
+
'page' => 'optin-monster-api-welcome',
|
356 |
+
)
|
357 |
+
);
|
358 |
+
}
|
359 |
+
|
360 |
+
/**
|
361 |
+
* Redirect to the welcome page.
|
362 |
+
*
|
363 |
+
* @since 1.9.10
|
364 |
+
*
|
365 |
+
* @return void
|
366 |
+
*/
|
367 |
+
public function redirect_to() {
|
368 |
+
$this->base->menu->redirect_to_dashboard(
|
369 |
+
'',
|
370 |
+
array(
|
371 |
+
'page' => 'optin-monster-api-welcome',
|
372 |
+
)
|
373 |
+
);
|
374 |
+
}
|
375 |
+
|
376 |
}
|
OMAPI/Widget.php
CHANGED
@@ -57,18 +57,20 @@ class OMAPI_Widget extends WP_Widget {
|
|
57 |
// Load the base class object.
|
58 |
$this->base = OMAPI::get_instance();
|
59 |
|
60 |
-
$widget_ops = apply_filters(
|
|
|
61 |
array(
|
62 |
'classname' => 'optin-monster-api',
|
63 |
-
'description' => esc_html__( 'Place an OptinMonster campaign into a widgetized area.', 'optin-monster-api' )
|
64 |
)
|
65 |
);
|
66 |
|
67 |
-
$control_ops = apply_filters(
|
|
|
68 |
array(
|
69 |
'id_base' => 'optin-monster-api',
|
70 |
'height' => 350,
|
71 |
-
'width' => 225
|
72 |
)
|
73 |
);
|
74 |
|
@@ -124,9 +126,13 @@ class OMAPI_Widget extends WP_Widget {
|
|
124 |
}
|
125 |
|
126 |
// Load the optin.
|
127 |
-
optin_monster(
|
128 |
-
|
129 |
-
|
|
|
|
|
|
|
|
|
130 |
}
|
131 |
|
132 |
do_action( 'optin_monster_api_widget_after_optin', $args, $instance );
|
57 |
// Load the base class object.
|
58 |
$this->base = OMAPI::get_instance();
|
59 |
|
60 |
+
$widget_ops = apply_filters(
|
61 |
+
'optin_monster_api_widget_ops',
|
62 |
array(
|
63 |
'classname' => 'optin-monster-api',
|
64 |
+
'description' => esc_html__( 'Place an OptinMonster campaign into a widgetized area.', 'optin-monster-api' ),
|
65 |
)
|
66 |
);
|
67 |
|
68 |
+
$control_ops = apply_filters(
|
69 |
+
'optin_monster_api_widget_control_ops',
|
70 |
array(
|
71 |
'id_base' => 'optin-monster-api',
|
72 |
'height' => 350,
|
73 |
+
'width' => 225,
|
74 |
)
|
75 |
);
|
76 |
|
126 |
}
|
127 |
|
128 |
// Load the optin.
|
129 |
+
optin_monster(
|
130 |
+
$optin->ID,
|
131 |
+
'id',
|
132 |
+
array(
|
133 |
+
'followrules' => ! empty( $instance['followrules'] ) ? 'true' : 'false',
|
134 |
+
)
|
135 |
+
);
|
136 |
}
|
137 |
|
138 |
do_action( 'optin_monster_api_widget_after_optin', $args, $instance );
|
assets/css/images/constant-contact-OM.png
ADDED
Binary file
|
assets/css/images/constant_OM.png
DELETED
Binary file
|
assets/css/images/dashboard-icon.png
CHANGED
File without changes
|
assets/css/images/featured-logos.png
CHANGED
File without changes
|
assets/css/images/features-ab-testing.png
CHANGED
File without changes
|
assets/css/images/features-analytics.png
CHANGED
File without changes
|
assets/css/images/features-builder.png
CHANGED
File without changes
|
assets/css/images/features-exit-animated.gif
CHANGED
File without changes
|
assets/css/images/logo-color-large.png
CHANGED
File without changes
|
assets/css/images/logo-color-large@2x.png
CHANGED
File without changes
|
assets/css/images/matthewwoodward.png
CHANGED
File without changes
|
assets/css/images/menu-icon@2x.png
CHANGED
File without changes
|
assets/css/images/michaelstelzner.png
CHANGED
File without changes
|
assets/css/images/neilpatel.png
CHANGED
File without changes
|
assets/css/images/omapi-graph.png
CHANGED
File without changes
|
assets/css/images/title-icon@2x.png
CHANGED
File without changes
|
assets/css/images/video-cta-button.png
CHANGED
File without changes
|
assets/css/select2-spinner.gif
CHANGED
File without changes
|
assets/css/select2.min.css
CHANGED
File without changes
|
assets/css/select2.png
CHANGED
File without changes
|
assets/css/select2x2.png
CHANGED
File without changes
|
assets/css/settings.css
DELETED
@@ -1,916 +0,0 @@
|
|
1 |
-
/* ==========================================================================
|
2 |
-
Settings Styles
|
3 |
-
========================================================================== */
|
4 |
-
|
5 |
-
.omapi-screen div.updated,
|
6 |
-
.omapi-screen div.error {
|
7 |
-
margin-top: 15px;
|
8 |
-
}
|
9 |
-
|
10 |
-
.omapi-hidden {
|
11 |
-
display: none;
|
12 |
-
visibility: hidden;
|
13 |
-
opacity: 0;
|
14 |
-
height: 0;
|
15 |
-
line-height: 0;
|
16 |
-
}
|
17 |
-
|
18 |
-
.omapi-clear {
|
19 |
-
clear: both;
|
20 |
-
}
|
21 |
-
|
22 |
-
.omapi-clear:after {
|
23 |
-
clear: both;
|
24 |
-
content: '.';
|
25 |
-
display: block;
|
26 |
-
height: 0;
|
27 |
-
line-height: 0;
|
28 |
-
overflow: auto;
|
29 |
-
visibility: hidden;
|
30 |
-
zoom: 1;
|
31 |
-
}
|
32 |
-
|
33 |
-
.omapi-red {
|
34 |
-
color: red !important;
|
35 |
-
}
|
36 |
-
|
37 |
-
.omapi-green {
|
38 |
-
color: green !important;
|
39 |
-
}
|
40 |
-
/* Remove default WP padding */
|
41 |
-
.omapi-screen #wpcontent {
|
42 |
-
padding-left: 0;
|
43 |
-
}
|
44 |
-
.omapi-screen h2 {
|
45 |
-
padding-right: 0 !important;
|
46 |
-
}
|
47 |
-
|
48 |
-
.omapi-screen h2 span {
|
49 |
-
font-size: 13px;
|
50 |
-
color: #666;
|
51 |
-
}
|
52 |
-
|
53 |
-
/* Static Banner */
|
54 |
-
.omapi-screen .omapi-static-banner {
|
55 |
-
background: #0d82df;
|
56 |
-
height: 50px;
|
57 |
-
line-height: 1;
|
58 |
-
}
|
59 |
-
.omapi-static-banner .logo-wrapper {
|
60 |
-
padding: 12px 0;
|
61 |
-
line-height: 1;
|
62 |
-
display: inline-block;
|
63 |
-
}
|
64 |
-
.omapi-static-banner .omapi-svg-logo {
|
65 |
-
height: 24px;
|
66 |
-
width: 159px;
|
67 |
-
}
|
68 |
-
.logo-wrapper span.omapi-logo-version {
|
69 |
-
color: #fff;
|
70 |
-
vertical-align: middle;
|
71 |
-
margin-bottom: 10px;
|
72 |
-
margin-left: 5px;
|
73 |
-
display: inline-block;
|
74 |
-
}
|
75 |
-
.omapi-screen .static-menu {
|
76 |
-
float: right;
|
77 |
-
}
|
78 |
-
.omapi-screen .static-menu ul {
|
79 |
-
margin: 0;
|
80 |
-
}
|
81 |
-
.omapi-screen .static-menu ul li {
|
82 |
-
display: inline-block;
|
83 |
-
padding: 18px 0;
|
84 |
-
margin: 0;
|
85 |
-
font-size: 14px;
|
86 |
-
}
|
87 |
-
.omapi-screen .static-menu ul li:last-of-type {
|
88 |
-
padding-right: 0;
|
89 |
-
}
|
90 |
-
.omapi-screen .static-menu ul li a {
|
91 |
-
text-decoration: none;
|
92 |
-
color: #fff;
|
93 |
-
font-size: 13px;
|
94 |
-
font-weight: 400;
|
95 |
-
letter-spacing: .04em;
|
96 |
-
padding: 5px 10px;
|
97 |
-
}
|
98 |
-
/* Cleaner screen even when updates needed */
|
99 |
-
.omapi-screen .update-nag{
|
100 |
-
display: none;
|
101 |
-
}
|
102 |
-
/* Only shown on main plugin view */
|
103 |
-
.omapi-screen .static-menu ul li.omapi-menu-button {
|
104 |
-
padding: 0 !important;
|
105 |
-
margin-top: -3px !important;
|
106 |
-
vertical-align: middle;
|
107 |
-
margin-left: 10px;
|
108 |
-
}
|
109 |
-
.omapi-screen #omapi-create-new-optin-button {
|
110 |
-
padding: 0 10px;
|
111 |
-
background: #83c11f;
|
112 |
-
box-shadow: none;
|
113 |
-
border: 0;
|
114 |
-
}
|
115 |
-
.omapi-screen #omapi-create-new-optin-button:hover {
|
116 |
-
color: #f5f5f5;
|
117 |
-
}
|
118 |
-
.omapi-screen .static-menu ul li a:hover {
|
119 |
-
background: rgba(0, 0, 0, 0.08);
|
120 |
-
}
|
121 |
-
|
122 |
-
.omapi-screen .omapi-static-banner .inner-container {
|
123 |
-
padding: 0 1.2rem;
|
124 |
-
max-width: 100%;
|
125 |
-
}
|
126 |
-
|
127 |
-
/* Welcome Page*/
|
128 |
-
body.omapi-welcome {
|
129 |
-
background: #f3f6f8;
|
130 |
-
}
|
131 |
-
.omapi-welcome-content a.button.button-hero {
|
132 |
-
line-height: 50px;
|
133 |
-
height: 50px;
|
134 |
-
}
|
135 |
-
.omapi-welcome-content a.button.button-hero.button-omapi-green {
|
136 |
-
background: #83c11f;
|
137 |
-
color: #fff;
|
138 |
-
text-transform: uppercase;
|
139 |
-
letter-spacing: .05em;
|
140 |
-
font-weight: 400;
|
141 |
-
border-color: #659519;
|
142 |
-
box-shadow: none;
|
143 |
-
}
|
144 |
-
.omapi-welcome .inner-container {
|
145 |
-
max-width: 45rem;
|
146 |
-
margin: 0 auto;
|
147 |
-
padding: 0;
|
148 |
-
}
|
149 |
-
.omapi-welcome .logo-wrapper span.omapi-logo-version {
|
150 |
-
display: none;
|
151 |
-
}
|
152 |
-
.omapi-welcome-content h1 {
|
153 |
-
font-weight: 400;
|
154 |
-
color: #23282d;
|
155 |
-
text-align: center;
|
156 |
-
margin: 44px 0;
|
157 |
-
margin-bottom: 30px;
|
158 |
-
}
|
159 |
-
.omapi-welcome-content .omapi-sub-title {
|
160 |
-
text-align: center;
|
161 |
-
padding-top: 30px;
|
162 |
-
padding-bottom: 20px;
|
163 |
-
}
|
164 |
-
.omapi-welcome-content h2 {
|
165 |
-
color: #23282d;
|
166 |
-
}
|
167 |
-
.omapi-welcome-content p {
|
168 |
-
font-size: 16px;
|
169 |
-
font-weight: 300;
|
170 |
-
color: #444;
|
171 |
-
margin: 10px 0;
|
172 |
-
}
|
173 |
-
.omapi-welcome-content .divider {
|
174 |
-
height: 1px;
|
175 |
-
background: #dee4e9;
|
176 |
-
box-shadow: 0px 0px 1px #e8edf0;
|
177 |
-
width: 320px;
|
178 |
-
margin: 0 auto;
|
179 |
-
}
|
180 |
-
.omapi-welcome-content .welcome-connect .actions {
|
181 |
-
margin: 40px 0;
|
182 |
-
margin-bottom: 8px;
|
183 |
-
}
|
184 |
-
|
185 |
-
.omapi-welcome-content .omapi-well span.or {
|
186 |
-
padding: 1em;
|
187 |
-
text-align: center;
|
188 |
-
vertical-align: middle;
|
189 |
-
display: inline-block;
|
190 |
-
}
|
191 |
-
.omapi-welcome-content .welcome-data-vid {
|
192 |
-
background-image: url(images/omapi-graph.png);
|
193 |
-
background-size: contain;
|
194 |
-
background-position-y: bottom;
|
195 |
-
min-height: 338px;
|
196 |
-
background-repeat: no-repeat;
|
197 |
-
position: relative;
|
198 |
-
}
|
199 |
-
.omapi-welcome-content .welcome-data-vid.active {
|
200 |
-
background-image: none;
|
201 |
-
}
|
202 |
-
.omapi-welcome-content .welcome-data-vid .actions {
|
203 |
-
margin-top: 45px;
|
204 |
-
z-index: 200;
|
205 |
-
position: relative;
|
206 |
-
}
|
207 |
-
.omapi-welcome-content .welcome-data-vid.active .actions {
|
208 |
-
display: none;
|
209 |
-
}
|
210 |
-
.omapi-welcome-content .omapi-welcome-video-holder {
|
211 |
-
height: 1px;
|
212 |
-
margin: 0 auto;
|
213 |
-
width: 100%;
|
214 |
-
}
|
215 |
-
.omapi-welcome-content .welcome-data-vid.active .omapi-welcome-video-holder {
|
216 |
-
height: auto;
|
217 |
-
}
|
218 |
-
|
219 |
-
|
220 |
-
.omapi-welcome-content .omapi-feature-box {
|
221 |
-
margin: 50px 0;
|
222 |
-
}
|
223 |
-
.omapi-welcome-content .omapi-feature-image,
|
224 |
-
.omapi-welcome-content .omapi-feature-text {
|
225 |
-
width: 47%;
|
226 |
-
display: inline-block;
|
227 |
-
vertical-align: middle;
|
228 |
-
}
|
229 |
-
|
230 |
-
.omapi-welcome-content .omapi-feature-image img {
|
231 |
-
max-width: 100%;
|
232 |
-
height: auto;
|
233 |
-
}
|
234 |
-
.omapi-welcome-content .omapi-feature-text p {
|
235 |
-
font-size: 14px;
|
236 |
-
}
|
237 |
-
.omapi-welcome-content .omapi-feature-text {
|
238 |
-
margin-left: 5%;
|
239 |
-
}
|
240 |
-
.omapi-welcome-content .omapi-feature-box:nth-of-type(even) .omapi-feature-image {
|
241 |
-
|
242 |
-
}
|
243 |
-
.omapi-welcome-content .omapi-feature-box:nth-of-type(even) .omapi-feature-text {
|
244 |
-
margin-right: 5%;
|
245 |
-
margin-left: 0;
|
246 |
-
}
|
247 |
-
|
248 |
-
.omapi-welcome-content .omapi-well img {
|
249 |
-
max-width: 100%;
|
250 |
-
}
|
251 |
-
|
252 |
-
.omapi-welcome-content .omapi-single-cta {
|
253 |
-
margin: 5rem;
|
254 |
-
text-align: center;
|
255 |
-
}
|
256 |
-
|
257 |
-
.omapi-welcome-content .welcome-featuredin img {
|
258 |
-
margin: 40px 0;
|
259 |
-
width: 475px;
|
260 |
-
}
|
261 |
-
|
262 |
-
.omapi-welcome-content .welcome-featuredin h2 {
|
263 |
-
font-size: 20px;
|
264 |
-
font-weight: 600;
|
265 |
-
}
|
266 |
-
|
267 |
-
.omapi-welcome-content .omapi-reviews {
|
268 |
-
display: flex;
|
269 |
-
flex-direction: row;
|
270 |
-
}
|
271 |
-
.omapi-welcome-content .omapi-reviews p {
|
272 |
-
font-size: 14px;
|
273 |
-
}
|
274 |
-
.omapi-welcome-content .omapi-talking-head {
|
275 |
-
height: 60px;
|
276 |
-
width: 60px;
|
277 |
-
margin: 0 auto;
|
278 |
-
}
|
279 |
-
.omapi-welcome-content .omapi-reviews span.reviewer-name {
|
280 |
-
margin-top: 15px;
|
281 |
-
display: block;
|
282 |
-
font-weight: 500;
|
283 |
-
}
|
284 |
-
|
285 |
-
.omapi-welcome-content .omapi-reviews span.reviewer-title {
|
286 |
-
font-weight: 300;
|
287 |
-
}
|
288 |
-
|
289 |
-
.omapi-welcome-content .omapi-mini-well {
|
290 |
-
margin-right: 15px;
|
291 |
-
flex: 1;
|
292 |
-
}
|
293 |
-
.omapi-welcome-content .omapi-mini-well:last-of-type {
|
294 |
-
margin-right: 0;
|
295 |
-
}
|
296 |
-
|
297 |
-
/* Keep WordPress Page Styling */
|
298 |
-
.omapi-page {
|
299 |
-
padding-left: 20px;
|
300 |
-
margin-left: 0;
|
301 |
-
}
|
302 |
-
|
303 |
-
/* Build out UI */
|
304 |
-
.omapi-screen .inner-container {
|
305 |
-
max-width: 45rem;
|
306 |
-
margin: 0 auto;
|
307 |
-
padding: 0;
|
308 |
-
}
|
309 |
-
.omapi-well {
|
310 |
-
padding: 2.1rem;
|
311 |
-
text-align: center;
|
312 |
-
background: #fff;
|
313 |
-
border: 1px solid #e9eff3;
|
314 |
-
margin-bottom: 15px;
|
315 |
-
}
|
316 |
-
.omapi-well img {
|
317 |
-
max-width: 100%;
|
318 |
-
height: auto;
|
319 |
-
}
|
320 |
-
.omapi-mini-well {
|
321 |
-
padding: 1rem;
|
322 |
-
}
|
323 |
-
|
324 |
-
.omapi-ui {
|
325 |
-
margin-top: 20px;
|
326 |
-
background: #f1f1f1;
|
327 |
-
border: 1px solid #ddd;
|
328 |
-
border-top: 0;
|
329 |
-
height: 100%;
|
330 |
-
width: 100%;
|
331 |
-
display: inline-block;
|
332 |
-
}
|
333 |
-
|
334 |
-
.omapi-ui,
|
335 |
-
.omapi-ui * {
|
336 |
-
box-sizing: border-box;
|
337 |
-
-moz-box-sizing: border-box;
|
338 |
-
-webkit-box-sizing: border-box;
|
339 |
-
}
|
340 |
-
|
341 |
-
.omapi-tabs {
|
342 |
-
float: left;
|
343 |
-
width: 25%;
|
344 |
-
min-width: 175px;
|
345 |
-
margin: 0;
|
346 |
-
background: #fff;
|
347 |
-
display: inline-block;
|
348 |
-
height: 100%;
|
349 |
-
}
|
350 |
-
|
351 |
-
.omapi-panels {
|
352 |
-
list-style: none;
|
353 |
-
margin: 0;
|
354 |
-
padding: 0;
|
355 |
-
}
|
356 |
-
|
357 |
-
.omapi-panels li {
|
358 |
-
list-style: none;
|
359 |
-
padding: 0;
|
360 |
-
margin: 0;
|
361 |
-
}
|
362 |
-
|
363 |
-
.omapi-panels li a {
|
364 |
-
display: block;
|
365 |
-
padding: 15px 10px;
|
366 |
-
border-bottom: 1px solid #ddd;
|
367 |
-
text-decoration: none;
|
368 |
-
font-size: 16px;
|
369 |
-
outline: none;
|
370 |
-
background: #f1f1f1;
|
371 |
-
}
|
372 |
-
|
373 |
-
.omapi-panels li a:focus {
|
374 |
-
outline: none !important;
|
375 |
-
box-shadow: none;
|
376 |
-
-webkit-box-shadow: none;
|
377 |
-
}
|
378 |
-
|
379 |
-
.omapi-panels li.omapi-panel-first a {
|
380 |
-
border-top: 1px solid #ddd;
|
381 |
-
}
|
382 |
-
|
383 |
-
.omapi-panels li.omapi-panel-active a,
|
384 |
-
.omapi-panels li a:hover {
|
385 |
-
background: #ffffff;
|
386 |
-
}
|
387 |
-
|
388 |
-
.omapi-panels li.omapi-panel-active a {
|
389 |
-
color: #222;
|
390 |
-
}
|
391 |
-
|
392 |
-
.omapi-panels li.omapi-panel-button-item {
|
393 |
-
padding: 20px 10px;
|
394 |
-
background: #f1f1f1;
|
395 |
-
}
|
396 |
-
|
397 |
-
.omapi-panels li.omapi-panel-button-item #omapi-create-new-optin-button {
|
398 |
-
width: 100%;
|
399 |
-
text-align: center;
|
400 |
-
}
|
401 |
-
|
402 |
-
.omapi-tabs-content {
|
403 |
-
float: left;
|
404 |
-
width: 75%;
|
405 |
-
border: 1px solid #ddd;
|
406 |
-
border-bottom: 0;
|
407 |
-
border-right: 0;
|
408 |
-
background: #fff;
|
409 |
-
padding: 15px 30px;
|
410 |
-
display: inline-block;
|
411 |
-
/* Match the minimum height of our tabs */
|
412 |
-
min-height: 197px;
|
413 |
-
}
|
414 |
-
|
415 |
-
.omapi-content {
|
416 |
-
display: none;
|
417 |
-
}
|
418 |
-
|
419 |
-
.omapi-content.omapi-content-active {
|
420 |
-
display: block;
|
421 |
-
}
|
422 |
-
|
423 |
-
.omapi-content h3 {
|
424 |
-
padding: 0;
|
425 |
-
margin: 0;
|
426 |
-
}
|
427 |
-
|
428 |
-
.omapi-field-box {
|
429 |
-
margin: 1.5em 0;
|
430 |
-
}
|
431 |
-
|
432 |
-
.omapi-field-wrap {
|
433 |
-
margin: 0;
|
434 |
-
}
|
435 |
-
|
436 |
-
.omapi-field-box li {
|
437 |
-
list-style: none;
|
438 |
-
margin: 0;
|
439 |
-
}
|
440 |
-
|
441 |
-
.omapi-field-box ul.children {
|
442 |
-
margin: 1px 0 1px 20px;
|
443 |
-
}
|
444 |
-
|
445 |
-
.omapi-field-box .wp-hidden-children {
|
446 |
-
display: none;
|
447 |
-
}
|
448 |
-
|
449 |
-
.omapi-field-box > div {
|
450 |
-
max-width: 350px;
|
451 |
-
}
|
452 |
-
|
453 |
-
.omapi-field-box p.hide-if-no-js,
|
454 |
-
.omapi-field-box li.hide-if-no-js {
|
455 |
-
display: none;
|
456 |
-
}
|
457 |
-
|
458 |
-
.omapi-field-wrap label {
|
459 |
-
font-size: 14px;
|
460 |
-
font-weight: 600;
|
461 |
-
margin-bottom: 2px;
|
462 |
-
}
|
463 |
-
|
464 |
-
.omapi-field-wrap input[type=email],
|
465 |
-
.omapi-field-wrap input[type=number],
|
466 |
-
.omapi-field-wrap input[type=password],
|
467 |
-
.omapi-field-wrap input[type=search],
|
468 |
-
.omapi-field-wrap input[type=text],
|
469 |
-
.omapi-field-wrap select {
|
470 |
-
min-width: 350px;
|
471 |
-
padding: 6px 8px;
|
472 |
-
}
|
473 |
-
|
474 |
-
.omapi-field-box .select2-container {
|
475 |
-
min-width: 350px;
|
476 |
-
}
|
477 |
-
|
478 |
-
.omapi-field-wrap textarea {
|
479 |
-
width: 100%;
|
480 |
-
padding: 6px 8px;
|
481 |
-
}
|
482 |
-
|
483 |
-
.omapi-field-wrap .omapi-field-desc {
|
484 |
-
font-size: 12px;
|
485 |
-
font-style: italic;
|
486 |
-
font-weight: normal;
|
487 |
-
color: #666;
|
488 |
-
vertical-align: middle;
|
489 |
-
margin-bottom: 0;
|
490 |
-
}
|
491 |
-
|
492 |
-
.omapi-back {
|
493 |
-
float: right;
|
494 |
-
font-size: 13px;
|
495 |
-
font-weight: normal;
|
496 |
-
}
|
497 |
-
|
498 |
-
.omapi-optin {
|
499 |
-
padding: 20px 27px 20px 10px;
|
500 |
-
border-bottom: 1px solid #eee;
|
501 |
-
font-size: 15px;
|
502 |
-
margin: 0;
|
503 |
-
}
|
504 |
-
|
505 |
-
.omapi-optin-first {
|
506 |
-
border-top: 1px solid #eee;
|
507 |
-
margin-top: 1em;
|
508 |
-
}
|
509 |
-
|
510 |
-
.omapi-optin.omapi-test-mode {
|
511 |
-
background: #fcf8e3 !important;
|
512 |
-
}
|
513 |
-
|
514 |
-
.omapi-optin a {
|
515 |
-
text-decoration: none;
|
516 |
-
border-bottom: 0 none;
|
517 |
-
}
|
518 |
-
|
519 |
-
.omapi-optin .omapi-test {
|
520 |
-
color: #8a6d3b;
|
521 |
-
font-size: 11px;
|
522 |
-
text-transform: uppercase;
|
523 |
-
font-weight: 700;
|
524 |
-
}
|
525 |
-
|
526 |
-
.omapi-optin .omapi-status,
|
527 |
-
.omapi-optin .omapi-slug {
|
528 |
-
float: right;
|
529 |
-
}
|
530 |
-
|
531 |
-
.omapi-optin .omapi-slug {
|
532 |
-
font-size: 13px;
|
533 |
-
color: #999;
|
534 |
-
margin-top: 3px;
|
535 |
-
}
|
536 |
-
|
537 |
-
.omapi-optin .omapi-links,
|
538 |
-
.omapi-optin .omapi-links a {
|
539 |
-
font-size: 12px;
|
540 |
-
}
|
541 |
-
|
542 |
-
/* Inline Note */
|
543 |
-
.omapi-inline-notice .omapi-notice-title {
|
544 |
-
font-size: 14px;
|
545 |
-
font-weight: 600;
|
546 |
-
margin-bottom: 2px;
|
547 |
-
margin-top: 0;
|
548 |
-
}
|
549 |
-
|
550 |
-
.omapi-inline-notice .omapi-field-desc {
|
551 |
-
margin: 0;
|
552 |
-
margin-bottom: 5px;
|
553 |
-
}
|
554 |
-
|
555 |
-
.omapi-inline-notice {
|
556 |
-
padding: 15px 0;
|
557 |
-
position: relative;
|
558 |
-
border: 1px solid #ddd;
|
559 |
-
border-left: 0;
|
560 |
-
border-right: 0;
|
561 |
-
}
|
562 |
-
|
563 |
-
|
564 |
-
|
565 |
-
/* Toggler */
|
566 |
-
.omapi-ui-toggle-controller {
|
567 |
-
margin-right: 8px;
|
568 |
-
cursor: pointer;
|
569 |
-
margin: 1.5em 0;
|
570 |
-
font-size: 13px;
|
571 |
-
position: relative;
|
572 |
-
}
|
573 |
-
.omapi-ui-toggle-controller .omapi-field-desc {
|
574 |
-
padding-left: 25px;
|
575 |
-
}
|
576 |
-
.omapi-ui-toggle-controller:after {
|
577 |
-
content: "\f132";
|
578 |
-
position: absolute;
|
579 |
-
height: 15px;
|
580 |
-
width: 20px;
|
581 |
-
top: 24px;
|
582 |
-
left: -2px;
|
583 |
-
font-size: 20px;
|
584 |
-
line-height: 1;
|
585 |
-
font-family: dashicons;
|
586 |
-
}
|
587 |
-
.omapi-ui-toggle-controller.toggled:after {
|
588 |
-
content: '\f460';
|
589 |
-
position: absolute;
|
590 |
-
height: 15px;
|
591 |
-
width: 20px;
|
592 |
-
top: 23px;
|
593 |
-
left: -2px;
|
594 |
-
font-size: 20px;
|
595 |
-
line-height: 1;
|
596 |
-
font-family: dashicons;
|
597 |
-
}
|
598 |
-
|
599 |
-
.omapi-ui-toggle-content {
|
600 |
-
display: none;
|
601 |
-
}
|
602 |
-
.visible.omapi-ui-toggle-content {
|
603 |
-
display: block;
|
604 |
-
}
|
605 |
-
|
606 |
-
.omapi-video-container {
|
607 |
-
position: relative;
|
608 |
-
padding-bottom: 50%;
|
609 |
-
padding-top: 25px;
|
610 |
-
height: 0;
|
611 |
-
}
|
612 |
-
.omapi-video-container iframe {
|
613 |
-
position: absolute;
|
614 |
-
top: 0;
|
615 |
-
left: 0;
|
616 |
-
width: 100%;
|
617 |
-
height: 100%;
|
618 |
-
}
|
619 |
-
.omapi-support-links {
|
620 |
-
width: 40%;
|
621 |
-
margin-top: 1.25em;
|
622 |
-
display: inline-block;
|
623 |
-
}
|
624 |
-
.omapi-support-links li {
|
625 |
-
font-size: 15px;
|
626 |
-
}
|
627 |
-
.omapi-support-data {
|
628 |
-
width: 60%;
|
629 |
-
display: inline-block;
|
630 |
-
}
|
631 |
-
.omapi-half-column {
|
632 |
-
margin-top: 1.25em;
|
633 |
-
}
|
634 |
-
|
635 |
-
@media all and (min-width: 1400px){
|
636 |
-
.omapi-half-column {
|
637 |
-
width: 50%;
|
638 |
-
display: inline-block;
|
639 |
-
float: left;
|
640 |
-
}
|
641 |
-
.omapi-support-links,
|
642 |
-
.omapi-support-data {
|
643 |
-
width: calc(50% - 30px);
|
644 |
-
margin-left: 30px;
|
645 |
-
float: right;
|
646 |
-
}
|
647 |
-
}
|
648 |
-
|
649 |
-
.omapi-copy-button.button {
|
650 |
-
margin-left: 10px;
|
651 |
-
}
|
652 |
-
|
653 |
-
|
654 |
-
|
655 |
-
/* DatePicker Container */
|
656 |
-
.ui-datepicker {
|
657 |
-
width: auto;
|
658 |
-
height: auto;
|
659 |
-
margin: 5px auto 0;
|
660 |
-
font: 9pt Arial, sans-serif;
|
661 |
-
-webkit-box-shadow: 0 0 10px 0 rgba(0, 0, 0, .5);
|
662 |
-
box-shadow: 0 1px 4px 1px rgba(0, 0, 0, .4);
|
663 |
-
background-color: #eee;
|
664 |
-
border: 1px solid #ddd;
|
665 |
-
}
|
666 |
-
.ui-datepicker a {
|
667 |
-
text-decoration: none;
|
668 |
-
position: relative;
|
669 |
-
}
|
670 |
-
|
671 |
-
.ui-datepicker table {
|
672 |
-
width: 100%;
|
673 |
-
padding: 0px;
|
674 |
-
}
|
675 |
-
.ui-datepicker-header {
|
676 |
-
color: #e0e0e0;
|
677 |
-
font-weight: bold;
|
678 |
-
-webkit-box-shadow: inset 0 1px 1px 0 rgba(250, 250, 250, 2);
|
679 |
-
box-shadow: inset 0 1px 1px 0 rgba(250, 250, 250, .2);
|
680 |
-
text-shadow: 1px -1px 0px #000;
|
681 |
-
line-height: 30px;
|
682 |
-
border-width: 1px 0 0 0;
|
683 |
-
border-style: solid;
|
684 |
-
border-color: #444;
|
685 |
-
}
|
686 |
-
.ui-datepicker-title {
|
687 |
-
text-align: center;
|
688 |
-
background: #444;
|
689 |
-
}
|
690 |
-
.ui-datepicker-prev, .ui-datepicker-next {
|
691 |
-
display: inline-block;
|
692 |
-
width: 30px;
|
693 |
-
height: 30px;
|
694 |
-
text-align: center;
|
695 |
-
cursor: pointer;
|
696 |
-
overflow: hidden;
|
697 |
-
padding-right: 10px;
|
698 |
-
padding-left: 10px;
|
699 |
-
color: #FFF;
|
700 |
-
text-indent: 100%;
|
701 |
-
}
|
702 |
-
.ui-datepicker-prev {
|
703 |
-
float: left;
|
704 |
-
}
|
705 |
-
.ui-datepicker-next {
|
706 |
-
float: right;
|
707 |
-
}
|
708 |
-
.ui-datepicker-prev:before {
|
709 |
-
content: '<';
|
710 |
-
position: absolute;
|
711 |
-
left: -10px;
|
712 |
-
height: 10px;
|
713 |
-
width: 10px;
|
714 |
-
}
|
715 |
-
.ui-datepicker-next:before {
|
716 |
-
content: '>';
|
717 |
-
position: absolute;
|
718 |
-
left: -10px;
|
719 |
-
height: 10px;
|
720 |
-
width: 10px;
|
721 |
-
}
|
722 |
-
.ui-datepicker thead {
|
723 |
-
background-color: #f7f7f7;
|
724 |
-
border-bottom: 1px solid #000;
|
725 |
-
}
|
726 |
-
.ui-datepicker th {
|
727 |
-
text-transform: uppercase;
|
728 |
-
font-size: 6pt;
|
729 |
-
padding: 5px 0;
|
730 |
-
margin-bottom: 1px;
|
731 |
-
color: #666666;
|
732 |
-
text-shadow: 1px 0px 0px #fff;
|
733 |
-
box-shadow: 0px 1px 0px 1px #E0E0E0;
|
734 |
-
}
|
735 |
-
.ui-datepicker tbody td {
|
736 |
-
box-shadow: 0px 1px 0px 1px #E0E0E0;
|
737 |
-
padding: 0px;
|
738 |
-
}
|
739 |
-
.ui-datepicker tbody td:last-child {
|
740 |
-
border-right: 0px;
|
741 |
-
}
|
742 |
-
.ui-datepicker tbody tr {
|
743 |
-
border-bottom: 1px solid #bbb;
|
744 |
-
}
|
745 |
-
.ui-datepicker td span, .ui-datepicker td a {
|
746 |
-
display: inline-block;
|
747 |
-
font-weight: bold;
|
748 |
-
text-align: center;
|
749 |
-
width: 30px;
|
750 |
-
height: 30px;
|
751 |
-
line-height: 30px;
|
752 |
-
color: #666666;
|
753 |
-
}
|
754 |
-
.ui-datepicker-calendar .ui-state-default {
|
755 |
-
background: #ededed;
|
756 |
-
}
|
757 |
-
.ui-datepicker-calendar .ui-state-hover {
|
758 |
-
background: #8ed41e;
|
759 |
-
color: #fff;
|
760 |
-
}
|
761 |
-
.ui-datepicker-calendar .ui-state-active {
|
762 |
-
background: #0d82df;
|
763 |
-
color: #fff;
|
764 |
-
position: relative;
|
765 |
-
}
|
766 |
-
.ui-datepicker-unselectable .ui-state-default {
|
767 |
-
background: #f4f4f4;
|
768 |
-
color: #b4b3b3;
|
769 |
-
}
|
770 |
-
.ui-datepicker-calendar td:first-child .ui-state-active {
|
771 |
-
width: 29px;
|
772 |
-
margin-left: 0;
|
773 |
-
}
|
774 |
-
.ui-datepicker-calendar td:last-child .ui-state-active {
|
775 |
-
width: 29px;
|
776 |
-
margin-right: 0;
|
777 |
-
}
|
778 |
-
|
779 |
-
/** Tooltips **/
|
780 |
-
.omapi-has-tooltip:after {
|
781 |
-
content: '\f223';
|
782 |
-
color: #ccc;
|
783 |
-
position: absolute;
|
784 |
-
display: inline-block;
|
785 |
-
width: 17px;
|
786 |
-
height: 17px;
|
787 |
-
font-size: 17px;
|
788 |
-
line-height: 1;
|
789 |
-
font-family: dashicons;
|
790 |
-
text-decoration: inherit;
|
791 |
-
font-weight: 400;
|
792 |
-
font-style: normal;
|
793 |
-
vertical-align: middle;
|
794 |
-
text-align: center;
|
795 |
-
-webkit-transition: color .1s ease-in 0;
|
796 |
-
transition: color .1s ease-in 0;
|
797 |
-
-webkit-font-smoothing: antialiased;
|
798 |
-
-moz-osx-font-smoothing: grayscale;
|
799 |
-
padding-left: 3px;
|
800 |
-
padding-top: 2px;
|
801 |
-
}
|
802 |
-
|
803 |
-
.tooltip {
|
804 |
-
position: absolute;
|
805 |
-
z-index: 1070;
|
806 |
-
display: block;
|
807 |
-
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
|
808 |
-
font-style: normal;
|
809 |
-
font-weight: normal;
|
810 |
-
letter-spacing: normal;
|
811 |
-
line-break: auto;
|
812 |
-
line-height: 1.42857143;
|
813 |
-
text-align: left;
|
814 |
-
text-align: start;
|
815 |
-
text-decoration: none;
|
816 |
-
text-shadow: none;
|
817 |
-
text-transform: none;
|
818 |
-
white-space: normal;
|
819 |
-
word-break: normal;
|
820 |
-
word-spacing: normal;
|
821 |
-
word-wrap: normal;
|
822 |
-
font-size: 12px;
|
823 |
-
opacity: 0;
|
824 |
-
filter: alpha(opacity=0);
|
825 |
-
}
|
826 |
-
.tooltip.in {
|
827 |
-
opacity: 0.9;
|
828 |
-
filter: alpha(opacity=90);
|
829 |
-
}
|
830 |
-
.tooltip.top {
|
831 |
-
margin-top: -3px;
|
832 |
-
padding: 5px 0;
|
833 |
-
}
|
834 |
-
.tooltip.right {
|
835 |
-
margin-left: 3px;
|
836 |
-
padding: 0 5px;
|
837 |
-
}
|
838 |
-
.tooltip.bottom {
|
839 |
-
margin-top: 3px;
|
840 |
-
padding: 5px 0;
|
841 |
-
}
|
842 |
-
.tooltip.left {
|
843 |
-
margin-left: -3px;
|
844 |
-
padding: 0 5px;
|
845 |
-
}
|
846 |
-
.tooltip-inner {
|
847 |
-
max-width: 200px;
|
848 |
-
padding: 10px 10px 9px;
|
849 |
-
color: #ffffff;
|
850 |
-
text-align: center;
|
851 |
-
background-color: #000000;
|
852 |
-
border-radius: 4px;
|
853 |
-
}
|
854 |
-
.tooltip-arrow {
|
855 |
-
position: absolute;
|
856 |
-
width: 0;
|
857 |
-
height: 0;
|
858 |
-
border-color: transparent;
|
859 |
-
border-style: solid;
|
860 |
-
}
|
861 |
-
.tooltip.top .tooltip-arrow {
|
862 |
-
bottom: 0;
|
863 |
-
left: 50%;
|
864 |
-
margin-left: -5px;
|
865 |
-
border-width: 5px 5px 0;
|
866 |
-
border-top-color: #000000;
|
867 |
-
}
|
868 |
-
.tooltip.top-left .tooltip-arrow {
|
869 |
-
bottom: 0;
|
870 |
-
right: 5px;
|
871 |
-
margin-bottom: -5px;
|
872 |
-
border-width: 5px 5px 0;
|
873 |
-
border-top-color: #000000;
|
874 |
-
}
|
875 |
-
.tooltip.top-right .tooltip-arrow {
|
876 |
-
bottom: 0;
|
877 |
-
left: 5px;
|
878 |
-
margin-bottom: -5px;
|
879 |
-
border-width: 5px 5px 0;
|
880 |
-
border-top-color: #000000;
|
881 |
-
}
|
882 |
-
.tooltip.right .tooltip-arrow {
|
883 |
-
top: 50%;
|
884 |
-
left: 0;
|
885 |
-
margin-top: -5px;
|
886 |
-
border-width: 5px 5px 5px 0;
|
887 |
-
border-right-color: #000000;
|
888 |
-
}
|
889 |
-
.tooltip.left .tooltip-arrow {
|
890 |
-
top: 50%;
|
891 |
-
right: 0;
|
892 |
-
margin-top: -5px;
|
893 |
-
border-width: 5px 0 5px 5px;
|
894 |
-
border-left-color: #000000;
|
895 |
-
}
|
896 |
-
.tooltip.bottom .tooltip-arrow {
|
897 |
-
top: 0;
|
898 |
-
left: 50%;
|
899 |
-
margin-left: -5px;
|
900 |
-
border-width: 0 5px 5px;
|
901 |
-
border-bottom-color: #000000;
|
902 |
-
}
|
903 |
-
.tooltip.bottom-left .tooltip-arrow {
|
904 |
-
top: 0;
|
905 |
-
right: 5px;
|
906 |
-
margin-top: -5px;
|
907 |
-
border-width: 0 5px 5px;
|
908 |
-
border-bottom-color: #000000;
|
909 |
-
}
|
910 |
-
.tooltip.bottom-right .tooltip-arrow {
|
911 |
-
top: 0;
|
912 |
-
left: 5px;
|
913 |
-
margin-top: -5px;
|
914 |
-
border-width: 0 5px 5px;
|
915 |
-
border-bottom-color: #000000;
|
916 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
assets/css/trustpulse-admin.min.css
DELETED
@@ -1,416 +0,0 @@
|
|
1 |
-
#wpcontent #wpcontent{
|
2 |
-
padding-left:0
|
3 |
-
}
|
4 |
-
#wpcontent .main-navigation{
|
5 |
-
display:-webkit-box;
|
6 |
-
display:-ms-flexbox;
|
7 |
-
display:flex;
|
8 |
-
-webkit-box-pack:end;
|
9 |
-
-ms-flex-pack:end;
|
10 |
-
justify-content:flex-end
|
11 |
-
}
|
12 |
-
#wpcontent .navbar-header{
|
13 |
-
width:100%;
|
14 |
-
background-color:#fff;
|
15 |
-
border-bottom:1px solid #e5ecf6
|
16 |
-
}
|
17 |
-
#wpcontent .navbar-brand{
|
18 |
-
height:38px
|
19 |
-
}
|
20 |
-
#wpcontent .navbar{
|
21 |
-
display:-webkit-box;
|
22 |
-
display:-ms-flexbox;
|
23 |
-
display:flex;
|
24 |
-
margin:0 auto;
|
25 |
-
font-size:16px;
|
26 |
-
-webkit-box-align:center;
|
27 |
-
-ms-flex-align:center;
|
28 |
-
align-items:center;
|
29 |
-
background:transparent;
|
30 |
-
-webkit-box-pack:justify;
|
31 |
-
-ms-flex-pack:justify;
|
32 |
-
justify-content:space-between;
|
33 |
-
padding:10px 20px;
|
34 |
-
line-height:1
|
35 |
-
}
|
36 |
-
#wpcontent .navbar img{
|
37 |
-
max-height:100%
|
38 |
-
}
|
39 |
-
#wpcontent .navbar .hover-underline{
|
40 |
-
border-bottom:2px solid transparent
|
41 |
-
}
|
42 |
-
#wpcontent .navbar .navbar-menu{
|
43 |
-
text-align:right
|
44 |
-
}
|
45 |
-
#wpcontent .navbar a{
|
46 |
-
font-weight:400
|
47 |
-
}
|
48 |
-
#wpcontent .navbar .menu-top-navbar-menu-container{
|
49 |
-
height:38px
|
50 |
-
}
|
51 |
-
#wpcontent a.navbar-item{
|
52 |
-
text-decoration:none;
|
53 |
-
color:#364150;
|
54 |
-
margin-right:10px
|
55 |
-
}
|
56 |
-
#wpcontent a.navbar-item.is-active,#wpcontent a.navbar-item:hover{
|
57 |
-
background-color:transparent;
|
58 |
-
height:calc($navbar-height + 2px);
|
59 |
-
color:#3a546f
|
60 |
-
}
|
61 |
-
#wpcontent a.navbar-item.is-active .hover-underline,#wpcontent a.navbar-item:hover .hover-underline{
|
62 |
-
border-bottom:2px solid #0db1eb
|
63 |
-
}
|
64 |
-
@media screen and (max-width:1087px){
|
65 |
-
#wpcontent .navbar-brand{
|
66 |
-
width:100%
|
67 |
-
}
|
68 |
-
|
69 |
-
}
|
70 |
-
@media screen and (max-width:1087px){
|
71 |
-
#wpcontent .navbar-menu.is-active{
|
72 |
-
display:block;
|
73 |
-
position:absolute;
|
74 |
-
top:65px
|
75 |
-
}
|
76 |
-
#wpcontent .navbar-menu.is-active .navbar{
|
77 |
-
display:-webkit-box;
|
78 |
-
display:-ms-flexbox;
|
79 |
-
display:flex;
|
80 |
-
-webkit-box-orient:vertical;
|
81 |
-
-webkit-box-direction:normal;
|
82 |
-
-ms-flex-direction:column;
|
83 |
-
flex-direction:column;
|
84 |
-
width:100vw;
|
85 |
-
text-align:left;
|
86 |
-
-webkit-box-align:start;
|
87 |
-
-ms-flex-align:start;
|
88 |
-
align-items:flex-start;
|
89 |
-
padding-right:0
|
90 |
-
}
|
91 |
-
#wpcontent .navbar-menu.is-active .navbar-item{
|
92 |
-
width:100%;
|
93 |
-
border-top:1px solid #e5ecf6
|
94 |
-
}
|
95 |
-
|
96 |
-
}
|
97 |
-
#adminmenu .toplevel-page-trustpulse-settings div.wp-menu-image{
|
98 |
-
height:30px
|
99 |
-
}
|
100 |
-
.tp-works-on{
|
101 |
-
margin-top:60px
|
102 |
-
}
|
103 |
-
.tp-works-on .tp-heading{
|
104 |
-
line-height:36px
|
105 |
-
}
|
106 |
-
.tp-works-on__icons{
|
107 |
-
display:-webkit-box;
|
108 |
-
display:-ms-flexbox;
|
109 |
-
display:flex;
|
110 |
-
-ms-flex-wrap:wrap;
|
111 |
-
flex-wrap:wrap;
|
112 |
-
-webkit-box-pack:justify;
|
113 |
-
-ms-flex-pack:justify;
|
114 |
-
justify-content:space-between;
|
115 |
-
-webkit-box-align:center;
|
116 |
-
-ms-flex-align:center;
|
117 |
-
align-items:center;
|
118 |
-
margin-bottom:30px
|
119 |
-
}
|
120 |
-
.tp-works-on__icon{
|
121 |
-
width:200px;
|
122 |
-
height:auto;
|
123 |
-
margin-bottom:20px
|
124 |
-
}
|
125 |
-
#tpVideo{
|
126 |
-
display:none
|
127 |
-
}
|
128 |
-
.omapi-trustpulse #wpwrap{
|
129 |
-
background:#f7faff
|
130 |
-
}
|
131 |
-
.omapi-trustpulse #wpcontent{
|
132 |
-
padding:0
|
133 |
-
}
|
134 |
-
.omapi-trustpulse #wpbody{
|
135 |
-
font-family:Averta,Helvetica,sans-serif;
|
136 |
-
color:#364150
|
137 |
-
}
|
138 |
-
.omapi-trustpulse #wpbody .text-center{
|
139 |
-
text-align:center
|
140 |
-
}
|
141 |
-
.omapi-trustpulse #wpbody .notice{
|
142 |
-
margin-top:20px
|
143 |
-
}
|
144 |
-
.omapi-trustpulse #wpbody .update-nag{
|
145 |
-
display:none
|
146 |
-
}
|
147 |
-
.omapi-trustpulse #wpbody p{
|
148 |
-
font-size:16px
|
149 |
-
}
|
150 |
-
.omapi-trustpulse #wpbody a{
|
151 |
-
color:#364150;
|
152 |
-
-webkit-text-decoration-color:#0db1eb;
|
153 |
-
text-decoration-color:#0db1eb;
|
154 |
-
font-weight:500
|
155 |
-
}
|
156 |
-
.omapi-trustpulse #wpbody a:hover{
|
157 |
-
color:#0db1eb
|
158 |
-
}
|
159 |
-
.omapi-trustpulse #wpbody .trustpulse-wrap{
|
160 |
-
max-width:720px;
|
161 |
-
margin:0 auto
|
162 |
-
}
|
163 |
-
.omapi-trustpulse #wpbody .tp-admin-box{
|
164 |
-
position:relative;
|
165 |
-
-webkit-box-sizing:border-box;
|
166 |
-
box-sizing:border-box;
|
167 |
-
background:#fff;
|
168 |
-
max-width:840px;
|
169 |
-
margin:0 auto;
|
170 |
-
padding:30px;
|
171 |
-
border-radius:10px;
|
172 |
-
border:1px solid #e5ecf6;
|
173 |
-
text-align:center
|
174 |
-
}
|
175 |
-
.omapi-trustpulse #wpbody .tp-admin-box p{
|
176 |
-
margin-bottom:30px
|
177 |
-
}
|
178 |
-
.omapi-trustpulse #wpbody .tp-admin-box--video{
|
179 |
-
margin-top:40px;
|
180 |
-
height:360px
|
181 |
-
}
|
182 |
-
.omapi-trustpulse #wpbody .tp-admin-box--video .tp-video-button{
|
183 |
-
cursor:pointer;
|
184 |
-
position:absolute;
|
185 |
-
left:calc(50% - 125px);
|
186 |
-
top:calc(50% - 40px);
|
187 |
-
width:250px;
|
188 |
-
z-index:1
|
189 |
-
}
|
190 |
-
.omapi-trustpulse #wpbody .tp-admin-box--video .tp-video-background{
|
191 |
-
position:absolute;
|
192 |
-
left:0;
|
193 |
-
bottom:0;
|
194 |
-
width:100%;
|
195 |
-
opacity:.3
|
196 |
-
}
|
197 |
-
.omapi-trustpulse #wpbody .tp-admin-box--video p{
|
198 |
-
margin-top:0
|
199 |
-
}
|
200 |
-
.omapi-trustpulse #wpbody .tp-or-line{
|
201 |
-
margin:5px auto
|
202 |
-
}
|
203 |
-
.omapi-trustpulse #wpbody .tp-admin-box-group{
|
204 |
-
display:-webkit-box;
|
205 |
-
display:-ms-flexbox;
|
206 |
-
display:flex;
|
207 |
-
-webkit-box-pack:justify;
|
208 |
-
-ms-flex-pack:justify;
|
209 |
-
justify-content:space-between;
|
210 |
-
width:840px;
|
211 |
-
margin:20px auto
|
212 |
-
}
|
213 |
-
.omapi-trustpulse #wpbody .tp-admin-box-group .tp-admin-box{
|
214 |
-
width:32%
|
215 |
-
}
|
216 |
-
.omapi-trustpulse #wpbody .tp-heading{
|
217 |
-
font-size:28px;
|
218 |
-
font-weight:700;
|
219 |
-
letter-spacing:-1px;
|
220 |
-
text-align:center;
|
221 |
-
margin-top:50px
|
222 |
-
}
|
223 |
-
.omapi-trustpulse #wpbody .tp-subheading{
|
224 |
-
text-align:center;
|
225 |
-
margin-top:-15px;
|
226 |
-
margin-bottom:70px
|
227 |
-
}
|
228 |
-
.omapi-trustpulse #wpbody .tp-features{
|
229 |
-
max-width:840px;
|
230 |
-
margin:0 auto
|
231 |
-
}
|
232 |
-
.omapi-trustpulse #wpbody .tp-features .tp-feature{
|
233 |
-
display:-webkit-box;
|
234 |
-
display:-ms-flexbox;
|
235 |
-
display:flex;
|
236 |
-
-ms-flex-wrap:wrap;
|
237 |
-
flex-wrap:wrap;
|
238 |
-
-webkit-box-pack:justify;
|
239 |
-
-ms-flex-pack:justify;
|
240 |
-
justify-content:space-between;
|
241 |
-
margin-bottom:20px
|
242 |
-
}
|
243 |
-
.omapi-trustpulse #wpbody .tp-features .tp-feature.tp-feature--text-left{
|
244 |
-
-webkit-box-orient:horizontal;
|
245 |
-
-webkit-box-direction:reverse;
|
246 |
-
-ms-flex-direction:row-reverse;
|
247 |
-
flex-direction:row-reverse
|
248 |
-
}
|
249 |
-
.omapi-trustpulse #wpbody .tp-features .tp-feature__image{
|
250 |
-
width:325px
|
251 |
-
}
|
252 |
-
@media screen and (max-width:400px){
|
253 |
-
.omapi-trustpulse #wpbody .tp-features .tp-feature__image{
|
254 |
-
width:100%;
|
255 |
-
margin-bottom:20px
|
256 |
-
}
|
257 |
-
|
258 |
-
}
|
259 |
-
.omapi-trustpulse #wpbody .tp-features .tp-feature__text{
|
260 |
-
display:-webkit-box;
|
261 |
-
display:-ms-flexbox;
|
262 |
-
display:flex;
|
263 |
-
-webkit-box-orient:vertical;
|
264 |
-
-webkit-box-direction:normal;
|
265 |
-
-ms-flex-direction:column;
|
266 |
-
flex-direction:column;
|
267 |
-
-webkit-box-pack:center;
|
268 |
-
-ms-flex-pack:center;
|
269 |
-
justify-content:center;
|
270 |
-
width:350px
|
271 |
-
}
|
272 |
-
@media screen and (max-width:400px){
|
273 |
-
.omapi-trustpulse #wpbody .tp-features .tp-feature__text{
|
274 |
-
width:100%
|
275 |
-
}
|
276 |
-
|
277 |
-
}
|
278 |
-
.omapi-trustpulse #wpbody .tp-features .tp-feature__text h3{
|
279 |
-
font-size:22px;
|
280 |
-
font-weight:700;
|
281 |
-
margin-bottom:0
|
282 |
-
}
|
283 |
-
.omapi-trustpulse #wpbody .tp-content-row{
|
284 |
-
display:-webkit-box;
|
285 |
-
display:-ms-flexbox;
|
286 |
-
display:flex;
|
287 |
-
-ms-flex-line-pack:center;
|
288 |
-
align-content:center;
|
289 |
-
-webkit-box-pack:center;
|
290 |
-
-ms-flex-pack:center;
|
291 |
-
justify-content:center
|
292 |
-
}
|
293 |
-
.omapi-trustpulse #wpbody .tp-content-row__item{
|
294 |
-
display:-webkit-box;
|
295 |
-
display:-ms-flexbox;
|
296 |
-
display:flex;
|
297 |
-
-webkit-box-align:center;
|
298 |
-
-ms-flex-align:center;
|
299 |
-
align-items:center;
|
300 |
-
margin:0 5px
|
301 |
-
}
|
302 |
-
.omapi-trustpulse #wpbody .tp-button{
|
303 |
-
cursor:pointer;
|
304 |
-
display:-webkit-inline-box;
|
305 |
-
display:-ms-inline-flexbox;
|
306 |
-
display:inline-flex;
|
307 |
-
font-weight:700;
|
308 |
-
background-color:#16bd83;
|
309 |
-
font-size:18px;
|
310 |
-
border-radius:100px;
|
311 |
-
border-color:transparent;
|
312 |
-
color:#fff;
|
313 |
-
-webkit-box-align:center;
|
314 |
-
-ms-flex-align:center;
|
315 |
-
align-items:center;
|
316 |
-
-webkit-box-pack:center;
|
317 |
-
-ms-flex-pack:center;
|
318 |
-
justify-content:center;
|
319 |
-
padding:10px 25px;
|
320 |
-
text-align:center;
|
321 |
-
white-space:nowrap;
|
322 |
-
min-width:100px;
|
323 |
-
text-decoration:none
|
324 |
-
}
|
325 |
-
.omapi-trustpulse #wpbody .tp-button:hover{
|
326 |
-
background-color:#19d191;
|
327 |
-
color:#fff
|
328 |
-
}
|
329 |
-
.omapi-trustpulse #wpbody .tp-button--full{
|
330 |
-
width:100%
|
331 |
-
}
|
332 |
-
.omapi-trustpulse #wpbody .tp-button--large{
|
333 |
-
padding:15px 60px;
|
334 |
-
font-size:22px
|
335 |
-
}
|
336 |
-
.omapi-trustpulse #wpbody .tp-button--blue{
|
337 |
-
cursor:pointer;
|
338 |
-
background:#fff;
|
339 |
-
border:1px solid #e5ecf6;
|
340 |
-
border-radius:100px;
|
341 |
-
padding:10px 25px;
|
342 |
-
color:#364150;
|
343 |
-
font-weight:700
|
344 |
-
}
|
345 |
-
.omapi-trustpulse #wpbody .tp-button--blue:hover{
|
346 |
-
background-color:#205fbd;
|
347 |
-
border-color:#205fbd
|
348 |
-
}
|
349 |
-
.omapi-trustpulse #wpbody .tp-button--white{
|
350 |
-
color:#364150;
|
351 |
-
background-color:#fff;
|
352 |
-
border:1px solid #e5ecf6
|
353 |
-
}
|
354 |
-
.omapi-trustpulse #wpbody .tp-button--white:hover{
|
355 |
-
background-color:#205fbd
|
356 |
-
}
|
357 |
-
@font-face {
|
358 |
-
font-family: 'Averta';
|
359 |
-
src: url( '../fonts/Averta-Regular.eot');
|
360 |
-
src: url( '../fonts/Averta-Regular.eot?#iefix') format('embedded-opentype'),
|
361 |
-
url( '../fonts/Averta-Regular.woff') format('woff'),
|
362 |
-
url( '../fonts/Averta-Regular.ttf') format('truetype');
|
363 |
-
font-weight: normal;
|
364 |
-
font-style: normal;
|
365 |
-
}
|
366 |
-
@font-face {
|
367 |
-
font-family: 'Averta';
|
368 |
-
src: url( '../fonts/Averta-Light.eot');
|
369 |
-
src: url( '../fonts/Averta-Light.eot?#iefix') format('embedded-opentype'),
|
370 |
-
url( '../fonts/Averta-Light.woff') format('woff'),
|
371 |
-
url( '../fonts/Averta-Light.ttf') format('truetype');
|
372 |
-
font-weight: 300;
|
373 |
-
font-style: normal;
|
374 |
-
}
|
375 |
-
|
376 |
-
@font-face {
|
377 |
-
font-family: 'Averta';
|
378 |
-
src: url( '../fonts/Averta-Semibold.eot');
|
379 |
-
src: url( '../fonts/Averta-Semibold.eot?#iefix') format('embedded-opentype'),
|
380 |
-
url( '../fonts/Averta-Semibold.woff') format('woff'),
|
381 |
-
url( '../fonts/Averta-Semibold.ttf') format('truetype');
|
382 |
-
font-weight: 500;
|
383 |
-
font-style: normal;
|
384 |
-
}
|
385 |
-
|
386 |
-
@font-face {
|
387 |
-
font-family: 'Averta';
|
388 |
-
src: url( '../fonts/Averta-Semibold.eot');
|
389 |
-
src: url( '../fonts/Averta-Semibold.eot?#iefix') format('embedded-opentype'),
|
390 |
-
url( '../fonts/Averta-Semibold.woff') format('woff'),
|
391 |
-
url( '../fonts/Averta-Semibold.ttf') format('truetype');
|
392 |
-
font-weight: 600;
|
393 |
-
font-style: normal;
|
394 |
-
}
|
395 |
-
|
396 |
-
@font-face {
|
397 |
-
font-family: 'Averta';
|
398 |
-
src: url( '../fonts/Averta-Bold.eot');
|
399 |
-
src: url( '../fonts/Averta-Bold.eot?#iefix') format('embedded-opentype'),
|
400 |
-
url( '../fonts/Averta-Bold.woff') format('woff'),
|
401 |
-
url( '../fonts/Averta-Bold.ttf') format('truetype');
|
402 |
-
font-weight: bold;
|
403 |
-
font-style: normal;
|
404 |
-
}
|
405 |
-
|
406 |
-
@font-face {
|
407 |
-
font-family: 'Averta';
|
408 |
-
src: url( '../fonts/Averta-ExtraBoldItalic.eot');
|
409 |
-
src: url( '../fonts/Averta-ExtraBoldItalic.eot?#iefix') format('embedded-opentype'),
|
410 |
-
url( '../fonts/Averta-ExtraBoldItalic.woff') format('woff'),
|
411 |
-
url( '../fonts/Averta-ExtraBoldItalic.ttf') format('truetype');
|
412 |
-
font-weight: bold;
|
413 |
-
font-style: italic, oblique;
|
414 |
-
}
|
415 |
-
|
416 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
assets/dist/css/blocks-admin.min.css
ADDED
@@ -0,0 +1,53 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
.optinmonster-gutenberg-campaign-selector-wrap {
|
2 |
+
text-align: center !important;
|
3 |
+
-webkit-box-align: center !important;
|
4 |
+
-ms-flex-align: center !important;
|
5 |
+
align-items: center !important; }
|
6 |
+
.optinmonster-gutenberg-campaign-selector-wrap h2 {
|
7 |
+
margin-bottom: 0.65em !important;
|
8 |
+
padding-top: 20px !important; }
|
9 |
+
.optinmonster-gutenberg-campaign-selector-wrap .components-base-control {
|
10 |
+
width: 100% !important; }
|
11 |
+
.optinmonster-gutenberg-campaign-selector-wrap .components-base-control select {
|
12 |
+
display: block;
|
13 |
+
max-width: 90%;
|
14 |
+
margin: 0 auto; }
|
15 |
+
|
16 |
+
.om-archie-loader circle {
|
17 |
+
-webkit-animation: 2s linear infinite circle-animation;
|
18 |
+
animation: 2s linear infinite circle-animation;
|
19 |
+
display: block;
|
20 |
+
fill: transparent;
|
21 |
+
stroke: #858b98;
|
22 |
+
stroke-dasharray: 157;
|
23 |
+
stroke-width: 2;
|
24 |
+
-webkit-transform-origin: 50% 50%;
|
25 |
+
transform-origin: 50% 50%; }
|
26 |
+
|
27 |
+
@-webkit-keyframes circle-animation {
|
28 |
+
0% {
|
29 |
+
stroke-dashoffset: 33;
|
30 |
+
-webkit-transform: rotate(0deg);
|
31 |
+
transform: rotate(0deg); }
|
32 |
+
50% {
|
33 |
+
stroke-dashoffset: 157;
|
34 |
+
-webkit-transform: rotate(720deg);
|
35 |
+
transform: rotate(720deg); }
|
36 |
+
100% {
|
37 |
+
stroke-dashoffset: 33;
|
38 |
+
-webkit-transform: rotate(1080deg);
|
39 |
+
transform: rotate(1080deg); } }
|
40 |
+
|
41 |
+
@keyframes circle-animation {
|
42 |
+
0% {
|
43 |
+
stroke-dashoffset: 33;
|
44 |
+
-webkit-transform: rotate(0deg);
|
45 |
+
transform: rotate(0deg); }
|
46 |
+
50% {
|
47 |
+
stroke-dashoffset: 157;
|
48 |
+
-webkit-transform: rotate(720deg);
|
49 |
+
transform: rotate(720deg); }
|
50 |
+
100% {
|
51 |
+
stroke-dashoffset: 33;
|
52 |
+
-webkit-transform: rotate(1080deg);
|
53 |
+
transform: rotate(1080deg); } }
|
assets/dist/css/blocks-admin.min.js
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
(function(a){function b(d){if(c[d])return c[d].exports;var e=c[d]={i:d,l:!1,exports:{}};return a[d].call(e.exports,e,e.exports,b),e.l=!0,e.exports}var c={};return b.m=a,b.c=c,b.d=function(a,c,d){b.o(a,c)||Object.defineProperty(a,c,{configurable:!1,enumerable:!0,get:d})},b.n=function(a){var c=a&&a.__esModule?function(){return a['default']}:function(){return a};return b.d(c,'a',c),c},b.o=function(a,b){return Object.prototype.hasOwnProperty.call(a,b)},b.p='',b(b.s=102)})({102:function(){}});
|
assets/dist/css/common.min.css
ADDED
@@ -0,0 +1,153 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
.optinmonster_page_optin-monster-about * {
|
2 |
+
font-family: 'proxima-nova'; }
|
3 |
+
|
4 |
+
.optinmonster_page_optin-monster-about .dashicons {
|
5 |
+
font-family: 'dashicons'; }
|
6 |
+
|
7 |
+
.optinmonster_page_optin-monster-about p, .optinmonster_page_optin-monster-about ul {
|
8 |
+
color: #60656f; }
|
9 |
+
|
10 |
+
.optinmonster_page_optin-monster-about h1, .optinmonster_page_optin-monster-about h2, .optinmonster_page_optin-monster-about h3, .optinmonster_page_optin-monster-about h4, .optinmonster_page_optin-monster-about h5 {
|
11 |
+
color: #41495b; }
|
12 |
+
|
13 |
+
.optinmonster_page_optin-monster-about h1 {
|
14 |
+
font-weight: 400; }
|
15 |
+
|
16 |
+
.optinmonster_page_optin-monster-about p, .optinmonster_page_optin-monster-about li {
|
17 |
+
font-size: 15px;
|
18 |
+
margin: 10px 0;
|
19 |
+
font-weight: 400; }
|
20 |
+
|
21 |
+
.optinmonster_page_optin-monster-about #wpbody-content > .notice {
|
22 |
+
margin: 28px 30px 30px; }
|
23 |
+
|
24 |
+
.optinmonster_page_optin-monster-about .omapi-box {
|
25 |
+
border: 0;
|
26 |
+
border-radius: 5px; }
|
27 |
+
|
28 |
+
.omapi-plugin-recommendations {
|
29 |
+
display: -webkit-box;
|
30 |
+
display: -ms-flexbox;
|
31 |
+
display: flex;
|
32 |
+
-webkit-box-pack: justify;
|
33 |
+
-ms-flex-pack: justify;
|
34 |
+
justify-content: space-between;
|
35 |
+
margin: 30px; }
|
36 |
+
.omapi-plugin-recommendations .omapi-plugin-recommendation {
|
37 |
+
width: 49%;
|
38 |
+
background-color: #fff;
|
39 |
+
border-radius: 5px;
|
40 |
+
margin: 0 0 40px 0; }
|
41 |
+
.omapi-plugin-recommendations .omapi-plugin-recommendation__name {
|
42 |
+
font-size: 22px; }
|
43 |
+
.omapi-plugin-recommendations .omapi-plugin-recommendation__details {
|
44 |
+
display: -webkit-box;
|
45 |
+
display: -ms-flexbox;
|
46 |
+
display: flex;
|
47 |
+
-webkit-box-orient: horizontal;
|
48 |
+
-webkit-box-direction: normal;
|
49 |
+
-ms-flex-direction: row;
|
50 |
+
flex-direction: row;
|
51 |
+
padding: 30px 30px 15px;
|
52 |
+
border-bottom: 2px solid #eee; }
|
53 |
+
.omapi-plugin-recommendations .omapi-plugin-recommendation__details h5 {
|
54 |
+
font-weight: 600;
|
55 |
+
margin: 0 0 20px 0; }
|
56 |
+
.omapi-plugin-recommendations .omapi-plugin-recommendation__text-wrapper {
|
57 |
+
margin-left: 30px; }
|
58 |
+
.omapi-plugin-recommendations .omapi-plugin-recommendation__status {
|
59 |
+
font-size: 15px; }
|
60 |
+
.omapi-plugin-recommendations .omapi-plugin-recommendation__description {
|
61 |
+
color: #41495B;
|
62 |
+
line-height: 1.75; }
|
63 |
+
.omapi-plugin-recommendations .omapi-plugin-recommendation__actions {
|
64 |
+
padding: 30px;
|
65 |
+
display: -webkit-box;
|
66 |
+
display: -ms-flexbox;
|
67 |
+
display: flex;
|
68 |
+
-webkit-box-align: center;
|
69 |
+
-ms-flex-align: center;
|
70 |
+
align-items: center;
|
71 |
+
-webkit-box-pack: justify;
|
72 |
+
-ms-flex-pack: justify;
|
73 |
+
justify-content: space-between; }
|
74 |
+
.omapi-plugin-recommendations .omapi-plugin-recommendation img {
|
75 |
+
padding: 10px;
|
76 |
+
border: 1px solid #eee;
|
77 |
+
background-color: #eee;
|
78 |
+
float: left;
|
79 |
+
max-width: 75px; }
|
80 |
+
|
81 |
+
.omapi-box {
|
82 |
+
margin: 30px 30px;
|
83 |
+
padding: 30px;
|
84 |
+
background: #fff;
|
85 |
+
border: 1px solid #DDDDDD;
|
86 |
+
line-height: 2; }
|
87 |
+
.omapi-box--flex {
|
88 |
+
display: -webkit-box;
|
89 |
+
display: -ms-flexbox;
|
90 |
+
display: flex;
|
91 |
+
-ms-flex-wrap: wrap;
|
92 |
+
flex-wrap: wrap; }
|
93 |
+
.omapi-box__half {
|
94 |
+
width: 50%;
|
95 |
+
min-width: 400px; }
|
96 |
+
.omapi-box__image {
|
97 |
+
width: 100%; }
|
98 |
+
.omapi-box__image img {
|
99 |
+
display: block;
|
100 |
+
width: 400px;
|
101 |
+
margin: 0 auto;
|
102 |
+
border-radius: 5px; }
|
103 |
+
.omapi-box__image-subtitle {
|
104 |
+
margin-top: 10px;
|
105 |
+
line-height: 1.3;
|
106 |
+
color: #41495B;
|
107 |
+
text-align: center; }
|
108 |
+
|
109 |
+
/* Static Banner */
|
110 |
+
.omapi-screen .omapi-static-banner {
|
111 |
+
background: #0d82df;
|
112 |
+
height: 50px;
|
113 |
+
line-height: 1;
|
114 |
+
margin-left: -20px; }
|
115 |
+
|
116 |
+
.omapi-static-banner .logo-wrapper {
|
117 |
+
padding: 12px 0;
|
118 |
+
line-height: 1;
|
119 |
+
display: inline-block; }
|
120 |
+
|
121 |
+
.omapi-static-banner .omapi-svg-logo {
|
122 |
+
height: 24px;
|
123 |
+
width: 159px; }
|
124 |
+
|
125 |
+
.logo-wrapper span.omapi-logo-version {
|
126 |
+
color: #fff;
|
127 |
+
vertical-align: middle;
|
128 |
+
margin-bottom: 10px;
|
129 |
+
margin-left: 5px;
|
130 |
+
display: inline-block; }
|
131 |
+
|
132 |
+
.omapi-screen .static-menu {
|
133 |
+
float: right; }
|
134 |
+
|
135 |
+
.omapi-screen .static-menu ul {
|
136 |
+
margin: 0; }
|
137 |
+
|
138 |
+
.omapi-screen .static-menu ul li {
|
139 |
+
display: inline-block;
|
140 |
+
padding: 18px 0;
|
141 |
+
margin: 0;
|
142 |
+
font-size: 14px; }
|
143 |
+
|
144 |
+
.omapi-screen .static-menu ul li:last-of-type {
|
145 |
+
padding-right: 0; }
|
146 |
+
|
147 |
+
.omapi-screen .static-menu ul li a {
|
148 |
+
text-decoration: none;
|
149 |
+
color: #fff;
|
150 |
+
font-size: 13px;
|
151 |
+
font-weight: 400;
|
152 |
+
letter-spacing: .04em;
|
153 |
+
padding: 5px 10px; }
|
assets/dist/css/common.min.js
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
(function(a){function b(d){if(c[d])return c[d].exports;var e=c[d]={i:d,l:!1,exports:{}};return a[d].call(e.exports,e,e.exports,b),e.l=!0,e.exports}var c={};return b.m=a,b.c=c,b.d=function(a,c,d){b.o(a,c)||Object.defineProperty(a,c,{configurable:!1,enumerable:!0,get:d})},b.n=function(a){var c=a&&a.__esModule?function(){return a['default']}:function(){return a};return b.d(c,'a',c),c},b.o=function(a,b){return Object.prototype.hasOwnProperty.call(a,b)},b.p='',b(b.s=45)})({45:function(){}});
|
assets/dist/css/settings.min.css
ADDED
@@ -0,0 +1,955 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/* ==========================================================================
|
2 |
+
Settings Styles
|
3 |
+
========================================================================== */
|
4 |
+
.omapi-screen div.updated,
|
5 |
+
.omapi-screen div.error {
|
6 |
+
margin-top: 15px; }
|
7 |
+
|
8 |
+
.omapi-screen *:focus {
|
9 |
+
-webkit-box-shadow: 0 0 2px 1px rgba(151, 171, 204, 0.6);
|
10 |
+
box-shadow: 0 0 2px 1px rgba(151, 171, 204, 0.6);
|
11 |
+
outline-width: 0; }
|
12 |
+
|
13 |
+
.omapi-hidden {
|
14 |
+
display: none;
|
15 |
+
visibility: hidden;
|
16 |
+
opacity: 0;
|
17 |
+
height: 0;
|
18 |
+
line-height: 0; }
|
19 |
+
|
20 |
+
.omapi-clear {
|
21 |
+
clear: both; }
|
22 |
+
|
23 |
+
.omapi-clear:after {
|
24 |
+
clear: both;
|
25 |
+
content: '.';
|
26 |
+
display: block;
|
27 |
+
height: 0;
|
28 |
+
line-height: 0;
|
29 |
+
overflow: auto;
|
30 |
+
visibility: hidden;
|
31 |
+
zoom: 1; }
|
32 |
+
|
33 |
+
.omapi-red {
|
34 |
+
color: red !important; }
|
35 |
+
|
36 |
+
.omapi-green {
|
37 |
+
color: #74BA0D !important; }
|
38 |
+
|
39 |
+
/* Remove default WP padding */
|
40 |
+
.omapi-screen #wpcontent {
|
41 |
+
padding-left: 0; }
|
42 |
+
|
43 |
+
.omapi-screen h2 {
|
44 |
+
padding-right: 0 !important; }
|
45 |
+
|
46 |
+
.omapi-screen h2 span {
|
47 |
+
font-size: 13px;
|
48 |
+
color: #666; }
|
49 |
+
|
50 |
+
/* Static Banner */
|
51 |
+
.omapi-screen .omapi-static-banner {
|
52 |
+
background: #0d82df;
|
53 |
+
height: 50px;
|
54 |
+
line-height: 1;
|
55 |
+
padding-left: 15px; }
|
56 |
+
@media screen and (max-width: 1000px) {
|
57 |
+
.omapi-screen .omapi-static-banner {
|
58 |
+
height: auto; } }
|
59 |
+
|
60 |
+
.omapi-static-banner .logo-wrapper {
|
61 |
+
padding: 12px 0;
|
62 |
+
line-height: 1;
|
63 |
+
display: inline-block; }
|
64 |
+
@media screen and (max-width: 1000px) {
|
65 |
+
.omapi-static-banner .logo-wrapper {
|
66 |
+
padding-bottom: 0; } }
|
67 |
+
|
68 |
+
.omapi-static-banner .omapi-svg-logo {
|
69 |
+
height: 24px;
|
70 |
+
width: 159px; }
|
71 |
+
|
72 |
+
.omapi-static-banner svg {
|
73 |
+
display: initial;
|
74 |
+
vertical-align: initial; }
|
75 |
+
|
76 |
+
@media screen and (max-width: 1000px) {
|
77 |
+
.omapi-static-banner .inner-container {
|
78 |
+
display: -webkit-box;
|
79 |
+
display: -ms-flexbox;
|
80 |
+
display: flex;
|
81 |
+
-webkit-box-align: center;
|
82 |
+
-ms-flex-align: center;
|
83 |
+
align-items: center;
|
84 |
+
-webkit-box-pack: center;
|
85 |
+
-ms-flex-pack: center;
|
86 |
+
justify-content: center;
|
87 |
+
-webkit-box-orient: vertical;
|
88 |
+
-webkit-box-direction: normal;
|
89 |
+
-ms-flex-direction: column;
|
90 |
+
flex-direction: column; } }
|
91 |
+
|
92 |
+
.logo-wrapper span.omapi-logo-version {
|
93 |
+
color: #fff;
|
94 |
+
vertical-align: middle;
|
95 |
+
margin-bottom: 10px;
|
96 |
+
margin-left: 5px;
|
97 |
+
display: inline-block; }
|
98 |
+
|
99 |
+
.omapi-screen .static-menu {
|
100 |
+
float: right; }
|
101 |
+
|
102 |
+
.omapi-screen .static-menu ul {
|
103 |
+
margin: 0; }
|
104 |
+
|
105 |
+
.omapi-screen .static-menu ul li {
|
106 |
+
display: inline-block;
|
107 |
+
padding: 18px 0;
|
108 |
+
margin: 0;
|
109 |
+
font-size: 14px; }
|
110 |
+
|
111 |
+
.omapi-screen .static-menu ul li:last-of-type {
|
112 |
+
padding-right: 0; }
|
113 |
+
|
114 |
+
.omapi-screen .static-menu ul li a {
|
115 |
+
text-decoration: none;
|
116 |
+
color: #fff;
|
117 |
+
font-size: 13px;
|
118 |
+
font-weight: 400;
|
119 |
+
letter-spacing: .04em;
|
120 |
+
padding: 5px 10px; }
|
121 |
+
|
122 |
+
/* Cleaner screen even when updates needed */
|
123 |
+
.omapi-screen .update-nag {
|
124 |
+
display: none; }
|
125 |
+
|
126 |
+
/* Only shown on main plugin view */
|
127 |
+
.omapi-screen .static-menu ul li.omapi-menu-button {
|
128 |
+
padding: 0 !important;
|
129 |
+
margin-top: -3px !important;
|
130 |
+
vertical-align: middle;
|
131 |
+
margin-left: 10px; }
|
132 |
+
|
133 |
+
.omapi-screen #omapi-create-new-optin-button {
|
134 |
+
padding: 0 10px;
|
135 |
+
background: #74ba0d;
|
136 |
+
border-color: #74ba0d;
|
137 |
+
-webkit-box-shadow: none;
|
138 |
+
box-shadow: none;
|
139 |
+
border: 0;
|
140 |
+
color: #fff; }
|
141 |
+
.omapi-screen #omapi-create-new-optin-button:hover {
|
142 |
+
border-color: #76b118;
|
143 |
+
background-color: #76b118; }
|
144 |
+
.omapi-screen #omapi-create-new-optin-button:focus, .omapi-screen #omapi-create-new-optin-button:active {
|
145 |
+
-webkit-box-shadow: 0 0 2px 1px #fff;
|
146 |
+
box-shadow: 0 0 2px 1px #fff;
|
147 |
+
outline-width: 0; }
|
148 |
+
|
149 |
+
.omapi-screen .static-menu ul li a:hover {
|
150 |
+
background: rgba(0, 0, 0, 0.08); }
|
151 |
+
|
152 |
+
.omapi-screen .omapi-static-banner .inner-container {
|
153 |
+
padding: 0 1.2rem;
|
154 |
+
max-width: 100%; }
|
155 |
+
|
156 |
+
/* Welcome Page*/
|
157 |
+
body.omapi-welcome #wpbody-content > .notice, body[class*="toplevel_page_optin-monster-api-"] #wpbody-content > .notice, body[class*="optinmonster_page_"] #wpbody-content > .notice {
|
158 |
+
margin: 28px 20px 15px; }
|
159 |
+
|
160 |
+
.omapi-welcome .inner-container {
|
161 |
+
max-width: 45rem;
|
162 |
+
margin: 0 auto;
|
163 |
+
padding: 0; }
|
164 |
+
|
165 |
+
.omapi-welcome .logo-wrapper span.omapi-logo-version {
|
166 |
+
display: none; }
|
167 |
+
|
168 |
+
.omapi-welcome-content *,
|
169 |
+
.admin_page_optin-monster-api-review #wpbody-content *,
|
170 |
+
.optinmonster_page_optin-monster-constant-contact #wpbody-content * {
|
171 |
+
font-family: 'proxima-nova'; }
|
172 |
+
|
173 |
+
.omapi-welcome-content .dashicons,
|
174 |
+
.admin_page_optin-monster-api-review #wpbody-content .dashicons,
|
175 |
+
.optinmonster_page_optin-monster-constant-contact #wpbody-content .dashicons {
|
176 |
+
font-family: 'dashicons'; }
|
177 |
+
|
178 |
+
.omapi-welcome-content p, .omapi-welcome-content h3, .omapi-welcome-content h4, .omapi-welcome-content h5, .omapi-welcome-content ul,
|
179 |
+
.admin_page_optin-monster-api-review #wpbody-content p,
|
180 |
+
.admin_page_optin-monster-api-review #wpbody-content h3,
|
181 |
+
.admin_page_optin-monster-api-review #wpbody-content h4,
|
182 |
+
.admin_page_optin-monster-api-review #wpbody-content h5,
|
183 |
+
.admin_page_optin-monster-api-review #wpbody-content ul,
|
184 |
+
.optinmonster_page_optin-monster-constant-contact #wpbody-content p,
|
185 |
+
.optinmonster_page_optin-monster-constant-contact #wpbody-content h3,
|
186 |
+
.optinmonster_page_optin-monster-constant-contact #wpbody-content h4,
|
187 |
+
.optinmonster_page_optin-monster-constant-contact #wpbody-content h5,
|
188 |
+
.optinmonster_page_optin-monster-constant-contact #wpbody-content ul {
|
189 |
+
color: #60656f; }
|
190 |
+
|
191 |
+
.omapi-welcome-content h1,
|
192 |
+
.admin_page_optin-monster-api-review #wpbody-content h1,
|
193 |
+
.optinmonster_page_optin-monster-constant-contact #wpbody-content h1 {
|
194 |
+
font-weight: 400;
|
195 |
+
color: #41495b; }
|
196 |
+
|
197 |
+
.omapi-welcome-content h2,
|
198 |
+
.admin_page_optin-monster-api-review #wpbody-content h2,
|
199 |
+
.optinmonster_page_optin-monster-constant-contact #wpbody-content h2 {
|
200 |
+
color: #41495b; }
|
201 |
+
|
202 |
+
.omapi-welcome-content p, .omapi-welcome-content li,
|
203 |
+
.admin_page_optin-monster-api-review #wpbody-content p,
|
204 |
+
.admin_page_optin-monster-api-review #wpbody-content li,
|
205 |
+
.optinmonster_page_optin-monster-constant-contact #wpbody-content p,
|
206 |
+
.optinmonster_page_optin-monster-constant-contact #wpbody-content li {
|
207 |
+
font-size: 17px;
|
208 |
+
margin: 10px 0;
|
209 |
+
font-weight: 400; }
|
210 |
+
|
211 |
+
.omapi-welcome-content {
|
212 |
+
padding-top: 20px; }
|
213 |
+
.omapi-welcome-content a.button.button-hero {
|
214 |
+
line-height: 50px;
|
215 |
+
height: 50px; }
|
216 |
+
.omapi-welcome-content a.button.button-hero.button-omapi-green {
|
217 |
+
background: #71b406;
|
218 |
+
color: #fff;
|
219 |
+
font-weight: 400;
|
220 |
+
-webkit-box-shadow: none;
|
221 |
+
box-shadow: none;
|
222 |
+
border: 1px solid #71b406; }
|
223 |
+
.omapi-welcome-content a.button.button-hero.button-omapi-green:hover, .omapi-welcome-content a.button.button-hero.button-omapi-green:focus {
|
224 |
+
border-color: #6aa807;
|
225 |
+
background-color: #6aa807; }
|
226 |
+
.omapi-welcome-content a.button.button-hero.button-omapi-green:focus {
|
227 |
+
-webkit-box-shadow: 0 0 3px 3px rgba(151, 171, 204, 0.4);
|
228 |
+
box-shadow: 0 0 3px 3px rgba(151, 171, 204, 0.4);
|
229 |
+
outline-width: 0; }
|
230 |
+
.omapi-welcome-content h1 {
|
231 |
+
text-align: center;
|
232 |
+
margin: 44px 0;
|
233 |
+
margin-bottom: 30px; }
|
234 |
+
.omapi-welcome-content .omapi-sub-title {
|
235 |
+
text-align: center;
|
236 |
+
padding-top: 30px;
|
237 |
+
padding-bottom: 20px; }
|
238 |
+
.omapi-welcome-content p {
|
239 |
+
color: #60656f; }
|
240 |
+
.omapi-welcome-content .divider {
|
241 |
+
height: 1px;
|
242 |
+
background: #60656f;
|
243 |
+
-webkit-box-shadow: 0px 0px 1px #e8edf0;
|
244 |
+
box-shadow: 0px 0px 1px #e8edf0;
|
245 |
+
width: 320px;
|
246 |
+
margin: 0 auto; }
|
247 |
+
.omapi-welcome-content .welcome-connect .actions {
|
248 |
+
margin: 40px 0;
|
249 |
+
margin-bottom: 8px; }
|
250 |
+
.omapi-welcome-content .omapi-well span.or {
|
251 |
+
padding: 1em;
|
252 |
+
text-align: center;
|
253 |
+
vertical-align: middle;
|
254 |
+
display: inline-block; }
|
255 |
+
.omapi-welcome-content .welcome-data-vid {
|
256 |
+
background-image: url("/assets/images/omapi-graph.png");
|
257 |
+
background-size: contain;
|
258 |
+
background-position-y: bottom;
|
259 |
+
background-repeat: no-repeat;
|
260 |
+
position: relative; }
|
261 |
+
.omapi-welcome-content .welcome-data-vid .actions {
|
262 |
+
margin-top: 25px;
|
263 |
+
z-index: 200;
|
264 |
+
position: relative; }
|
265 |
+
.omapi-welcome-content .welcome-data-vid .omapi-video-link {
|
266 |
+
display: inline-block;
|
267 |
+
padding-top: 20px; }
|
268 |
+
.omapi-welcome-content .welcome-data-vid.active {
|
269 |
+
background-image: none; }
|
270 |
+
.omapi-welcome-content .welcome-data-vid.active .actions {
|
271 |
+
display: none; }
|
272 |
+
.omapi-welcome-content .omapi-welcome-video-holder {
|
273 |
+
height: 1px;
|
274 |
+
margin: 0 auto;
|
275 |
+
width: 100%; }
|
276 |
+
.omapi-welcome-content .welcome-data-vid.active .omapi-welcome-video-holder {
|
277 |
+
height: auto; }
|
278 |
+
.omapi-welcome-content .omapi-feature-box {
|
279 |
+
margin: 50px 0; }
|
280 |
+
.omapi-welcome-content .omapi-feature-image,
|
281 |
+
.omapi-welcome-content .omapi-feature-text {
|
282 |
+
width: 47%;
|
283 |
+
display: inline-block;
|
284 |
+
vertical-align: middle; }
|
285 |
+
.omapi-welcome-content .omapi-feature-image img {
|
286 |
+
max-width: 100%;
|
287 |
+
height: auto; }
|
288 |
+
.omapi-welcome-content .omapi-feature-text p {
|
289 |
+
font-size: 15px; }
|
290 |
+
.omapi-welcome-content .omapi-feature-text {
|
291 |
+
margin-left: 5%;
|
292 |
+
margin-top: -2em; }
|
293 |
+
.omapi-welcome-content .omapi-feature-box:nth-of-type(even) .omapi-feature-text {
|
294 |
+
margin-right: 5%;
|
295 |
+
margin-left: 0; }
|
296 |
+
.omapi-welcome-content .omapi-well img {
|
297 |
+
max-width: 100%; }
|
298 |
+
.omapi-welcome-content .omapi-single-cta {
|
299 |
+
margin: 0 auto 60px;
|
300 |
+
text-align: center; }
|
301 |
+
.omapi-welcome-content .welcome-featuredin img {
|
302 |
+
margin: 40px 0;
|
303 |
+
width: 475px; }
|
304 |
+
.omapi-welcome-content .welcome-featuredin h2 {
|
305 |
+
font-size: 20px;
|
306 |
+
font-weight: 600; }
|
307 |
+
.omapi-welcome-content .omapi-reviews {
|
308 |
+
display: -webkit-box;
|
309 |
+
display: -ms-flexbox;
|
310 |
+
display: flex;
|
311 |
+
-webkit-box-orient: horizontal;
|
312 |
+
-webkit-box-direction: normal;
|
313 |
+
-ms-flex-direction: row;
|
314 |
+
flex-direction: row; }
|
315 |
+
.omapi-welcome-content .omapi-reviews p {
|
316 |
+
font-size: 14px; }
|
317 |
+
.omapi-welcome-content .omapi-talking-head {
|
318 |
+
height: 60px;
|
319 |
+
width: 60px;
|
320 |
+
margin: 0 auto; }
|
321 |
+
.omapi-welcome-content .omapi-reviews span.reviewer-name {
|
322 |
+
margin-top: 15px;
|
323 |
+
display: block;
|
324 |
+
font-weight: 500; }
|
325 |
+
.omapi-welcome-content .omapi-reviews span.reviewer-title {
|
326 |
+
font-weight: 300; }
|
327 |
+
.omapi-welcome-content .omapi-mini-well {
|
328 |
+
margin-right: 15px;
|
329 |
+
-webkit-box-flex: 1;
|
330 |
+
-ms-flex: 1;
|
331 |
+
flex: 1; }
|
332 |
+
.omapi-welcome-content .omapi-mini-well:last-of-type {
|
333 |
+
margin-right: 0; }
|
334 |
+
|
335 |
+
input.button.button-omapi-outline,
|
336 |
+
button.button.button-omapi-outline,
|
337 |
+
a.button.button-omapi-outline {
|
338 |
+
background-color: #fff;
|
339 |
+
color: #a4badb;
|
340 |
+
border: 1px solid #a4badb;
|
341 |
+
border-radius: 4px;
|
342 |
+
padding: 0 15px;
|
343 |
+
font-size: 16px;
|
344 |
+
font-weight: 600;
|
345 |
+
margin: 0 auto; }
|
346 |
+
input.button.button-omapi-outline:hover,
|
347 |
+
button.button.button-omapi-outline:hover,
|
348 |
+
a.button.button-omapi-outline:hover {
|
349 |
+
background-color: #1287dd;
|
350 |
+
color: #fff;
|
351 |
+
border-color: #1287dd; }
|
352 |
+
input.button.button-omapi-outline:focus,
|
353 |
+
button.button.button-omapi-outline:focus,
|
354 |
+
a.button.button-omapi-outline:focus {
|
355 |
+
-webkit-box-shadow: 0 0 2px 1px rgba(151, 171, 204, 0.6);
|
356 |
+
box-shadow: 0 0 2px 1px rgba(151, 171, 204, 0.6);
|
357 |
+
outline-width: 0; }
|
358 |
+
|
359 |
+
input.button.button-omapi-blue,
|
360 |
+
button.button.button-omapi-blue,
|
361 |
+
a.button.button-omapi-blue {
|
362 |
+
color: #fff;
|
363 |
+
background: #0d82df;
|
364 |
+
border: 1px solid #0d82df;
|
365 |
+
border-radius: 4px;
|
366 |
+
padding: 0 15px;
|
367 |
+
font-size: 16px;
|
368 |
+
font-weight: 600;
|
369 |
+
margin: 0 auto; }
|
370 |
+
input.button.button-omapi-blue:hover, input.button.button-omapi-blue:focus,
|
371 |
+
button.button.button-omapi-blue:hover,
|
372 |
+
button.button.button-omapi-blue:focus,
|
373 |
+
a.button.button-omapi-blue:hover,
|
374 |
+
a.button.button-omapi-blue:focus {
|
375 |
+
border-color: #0c76cb;
|
376 |
+
background: #0c76cb;
|
377 |
+
color: #fff; }
|
378 |
+
input.button.button-omapi-blue:focus,
|
379 |
+
button.button.button-omapi-blue:focus,
|
380 |
+
a.button.button-omapi-blue:focus {
|
381 |
+
-webkit-box-shadow: 0 0 3px 3px rgba(151, 171, 204, 0.4);
|
382 |
+
box-shadow: 0 0 3px 3px rgba(151, 171, 204, 0.4);
|
383 |
+
outline-width: 0; }
|
384 |
+
|
385 |
+
/* Keep WordPress Page Styling */
|
386 |
+
.omapi-page {
|
387 |
+
padding-left: 20px;
|
388 |
+
margin-left: 0; }
|
389 |
+
|
390 |
+
/* Build out UI */
|
391 |
+
.omapi-screen .inner-container {
|
392 |
+
max-width: 45rem;
|
393 |
+
margin: 0 auto;
|
394 |
+
padding: 0; }
|
395 |
+
|
396 |
+
.omapi-well {
|
397 |
+
padding: 2.1rem;
|
398 |
+
text-align: center;
|
399 |
+
background: #fff;
|
400 |
+
border: 1px solid #e9eff3;
|
401 |
+
margin-bottom: 15px;
|
402 |
+
border-radius: 5px; }
|
403 |
+
|
404 |
+
.omapi-well img {
|
405 |
+
max-width: 100%;
|
406 |
+
height: auto; }
|
407 |
+
|
408 |
+
.omapi-mini-well {
|
409 |
+
padding: 1rem; }
|
410 |
+
|
411 |
+
.omapi-ui {
|
412 |
+
margin-top: 20px;
|
413 |
+
border-top: 0;
|
414 |
+
height: 100%;
|
415 |
+
width: 100%;
|
416 |
+
display: -webkit-box;
|
417 |
+
display: -ms-flexbox;
|
418 |
+
display: flex;
|
419 |
+
background: #f1f1f1;
|
420 |
+
border: 1px solid #ddd; }
|
421 |
+
.omapi-ui p, .omapi-ui h1, .omapi-ui h2, .omapi-ui h3, .omapi-ui h4, .omapi-ui h5, .omapi-ui ul {
|
422 |
+
color: #41495b;
|
423 |
+
font-family: 'proxima-nova'; }
|
424 |
+
|
425 |
+
.omapi-ui,
|
426 |
+
.omapi-ui * {
|
427 |
+
box-sizing: border-box;
|
428 |
+
-moz-box-sizing: border-box;
|
429 |
+
-webkit-box-sizing: border-box; }
|
430 |
+
|
431 |
+
.omapi-tabs {
|
432 |
+
width: calc(25% - 20px);
|
433 |
+
min-width: 175px;
|
434 |
+
margin: 0;
|
435 |
+
height: 100%; }
|
436 |
+
|
437 |
+
.omapi-panels {
|
438 |
+
list-style: none;
|
439 |
+
margin: 0;
|
440 |
+
padding: 0 20px; }
|
441 |
+
.omapi-panels li {
|
442 |
+
list-style: none;
|
443 |
+
padding: 0;
|
444 |
+
margin: 0; }
|
445 |
+
.omapi-panels li a {
|
446 |
+
display: block;
|
447 |
+
padding: 15px 10px;
|
448 |
+
border-bottom: 1px solid #ddd;
|
449 |
+
text-decoration: none;
|
450 |
+
font-size: 16px;
|
451 |
+
outline: none;
|
452 |
+
padding: 20px 0; }
|
453 |
+
.omapi-panels li a:focus {
|
454 |
+
outline: none !important; }
|
455 |
+
.omapi-panels li.omapi-panel-active a,
|
456 |
+
.omapi-panels li a:hover,
|
457 |
+
.omapi-panels li a:focus {
|
458 |
+
color: #222;
|
459 |
+
background: #ffffff;
|
460 |
+
margin-left: -20px;
|
461 |
+
margin-right: -20px;
|
462 |
+
padding: 20px;
|
463 |
+
cursor: pointer;
|
464 |
+
border-top: 1px solid #ddd;
|
465 |
+
margin-top: -1px; }
|
466 |
+
.omapi-panels li:last-child a {
|
467 |
+
border-bottom: 0; }
|
468 |
+
.omapi-panels li.omapi-panel-active a {
|
469 |
+
color: #222; }
|
470 |
+
.omapi-panels li.omapi-panel-button-item {
|
471 |
+
padding: 20px 10px;
|
472 |
+
background: #eef2f9; }
|
473 |
+
.omapi-panels li.omapi-panel-button-item #omapi-create-new-optin-button {
|
474 |
+
width: 100%;
|
475 |
+
text-align: center; }
|
476 |
+
|
477 |
+
.omapi-tabs-content {
|
478 |
+
width: calc(100% - 40px);
|
479 |
+
background: #fff;
|
480 |
+
padding: 20px; }
|
481 |
+
|
482 |
+
.omapi-content {
|
483 |
+
display: none; }
|
484 |
+
|
485 |
+
.omapi-content.omapi-content-active {
|
486 |
+
display: block; }
|
487 |
+
|
488 |
+
.omapi-content h3 {
|
489 |
+
padding: 0;
|
490 |
+
margin: 0; }
|
491 |
+
|
492 |
+
.omapi-field-box {
|
493 |
+
margin: 1.5em 0; }
|
494 |
+
|
495 |
+
.omapi-field-wrap {
|
496 |
+
margin: 0; }
|
497 |
+
|
498 |
+
.omapi-field-box li {
|
499 |
+
list-style: none;
|
500 |
+
margin: 0; }
|
501 |
+
|
502 |
+
.omapi-field-box ul.children {
|
503 |
+
margin: 1px 0 1px 20px; }
|
504 |
+
|
505 |
+
.omapi-field-box .wp-hidden-children {
|
506 |
+
display: none; }
|
507 |
+
|
508 |
+
.omapi-field-box > div {
|
509 |
+
max-width: 350px; }
|
510 |
+
|
511 |
+
.omapi-field-box p.hide-if-no-js,
|
512 |
+
.omapi-field-box li.hide-if-no-js {
|
513 |
+
display: none; }
|
514 |
+
|
515 |
+
.omapi-field-wrap label {
|
516 |
+
font-size: 14px;
|
517 |
+
font-weight: 600;
|
518 |
+
margin-bottom: 2px; }
|
519 |
+
|
520 |
+
.omapi-field-wrap input[type=email],
|
521 |
+
.omapi-field-wrap input[type=number],
|
522 |
+
.omapi-field-wrap input[type=password],
|
523 |
+
.omapi-field-wrap input[type=search],
|
524 |
+
.omapi-field-wrap input[type=text],
|
525 |
+
.omapi-field-wrap select {
|
526 |
+
min-width: 350px;
|
527 |
+
padding: 6px 8px; }
|
528 |
+
|
529 |
+
.omapi-field-box .select2-container {
|
530 |
+
min-width: 350px; }
|
531 |
+
|
532 |
+
.omapi-field-wrap textarea {
|
533 |
+
width: 100%;
|
534 |
+
padding: 6px 8px; }
|
535 |
+
|
536 |
+
.omapi-field-wrap .omapi-field-desc {
|
537 |
+
font-size: 12px;
|
538 |
+
font-style: italic;
|
539 |
+
font-weight: normal;
|
540 |
+
color: #666;
|
541 |
+
vertical-align: middle;
|
542 |
+
margin-bottom: 0; }
|
543 |
+
|
544 |
+
.omapi-back {
|
545 |
+
float: right;
|
546 |
+
font-size: 13px;
|
547 |
+
font-weight: normal; }
|
548 |
+
|
549 |
+
.omapi-optin {
|
550 |
+
padding: 20px 27px 20px 10px;
|
551 |
+
border-bottom: 1px solid #cad1e2;
|
552 |
+
font-size: 15px;
|
553 |
+
margin: 0; }
|
554 |
+
|
555 |
+
.omapi-optin-first {
|
556 |
+
border-top: 1px solid #cad1e2;
|
557 |
+
margin-top: 20px; }
|
558 |
+
|
559 |
+
.omapi-optin.omapi-test-mode {
|
560 |
+
background: #fcf8e3 !important; }
|
561 |
+
|
562 |
+
.omapi-optin a {
|
563 |
+
text-decoration: none;
|
564 |
+
border-bottom: 0 none; }
|
565 |
+
|
566 |
+
.omapi-optin .omapi-test {
|
567 |
+
color: #8a6d3b;
|
568 |
+
font-size: 11px;
|
569 |
+
text-transform: uppercase;
|
570 |
+
font-weight: 700; }
|
571 |
+
|
572 |
+
.omapi-optin .omapi-status,
|
573 |
+
.omapi-optin .omapi-slug {
|
574 |
+
float: right; }
|
575 |
+
|
576 |
+
.omapi-optin .omapi-slug,
|
577 |
+
.omapi-content .omapi-slug {
|
578 |
+
font-size: 13px;
|
579 |
+
color: #999;
|
580 |
+
margin-top: 3px; }
|
581 |
+
|
582 |
+
.omapi-content .omapi-slug {
|
583 |
+
float: right;
|
584 |
+
line-height: 1.8em; }
|
585 |
+
|
586 |
+
.omapi-view-optins.omapi-action-edit .omapi-slug {
|
587 |
+
margin-right: 35px; }
|
588 |
+
|
589 |
+
.omapi-optin .omapi-links,
|
590 |
+
.omapi-optin .omapi-links a {
|
591 |
+
font-size: 12px; }
|
592 |
+
|
593 |
+
/* Inline Note */
|
594 |
+
.omapi-inline-notice .omapi-notice-title {
|
595 |
+
font-size: 14px;
|
596 |
+
font-weight: 600;
|
597 |
+
margin-bottom: 2px;
|
598 |
+
margin-top: 0; }
|
599 |
+
|
600 |
+
.omapi-inline-notice .omapi-field-desc {
|
601 |
+
margin: 0;
|
602 |
+
margin-bottom: 5px; }
|
603 |
+
|
604 |
+
.omapi-inline-notice {
|
605 |
+
padding: 15px 0;
|
606 |
+
position: relative;
|
607 |
+
border: 1px solid #ddd;
|
608 |
+
border-left: 0;
|
609 |
+
border-right: 0; }
|
610 |
+
|
611 |
+
/* Toggler */
|
612 |
+
.omapi-ui-toggle-controller {
|
613 |
+
margin-right: 8px;
|
614 |
+
cursor: pointer;
|
615 |
+
margin: 1.5em 0;
|
616 |
+
font-size: 13px;
|
617 |
+
position: relative; }
|
618 |
+
|
619 |
+
.omapi-ui-toggle-controller .omapi-field-desc {
|
620 |
+
padding-left: 25px; }
|
621 |
+
|
622 |
+
.omapi-ui-toggle-controller:after {
|
623 |
+
content: "\f132";
|
624 |
+
position: absolute;
|
625 |
+
height: 15px;
|
626 |
+
width: 20px;
|
627 |
+
top: 24px;
|
628 |
+
left: -2px;
|
629 |
+
font-size: 20px;
|
630 |
+
line-height: 1;
|
631 |
+
font-family: 'dashicons'; }
|
632 |
+
|
633 |
+
.omapi-ui-toggle-controller.toggled:after {
|
634 |
+
content: '\f460';
|
635 |
+
position: absolute;
|
636 |
+
height: 15px;
|
637 |
+
width: 20px;
|
638 |
+
top: 23px;
|
639 |
+
left: -2px;
|
640 |
+
font-size: 20px;
|
641 |
+
line-height: 1;
|
642 |
+
font-family: 'dashicons'; }
|
643 |
+
|
644 |
+
.omapi-ui-toggle-content {
|
645 |
+
display: none; }
|
646 |
+
|
647 |
+
.visible.omapi-ui-toggle-content {
|
648 |
+
display: block; }
|
649 |
+
|
650 |
+
.omapi-video-container {
|
651 |
+
position: relative;
|
652 |
+
padding-bottom: 50%;
|
653 |
+
padding-top: 25px;
|
654 |
+
height: 0; }
|
655 |
+
|
656 |
+
.omapi-video-container iframe {
|
657 |
+
position: absolute;
|
658 |
+
top: 0;
|
659 |
+
left: 0;
|
660 |
+
width: 100%;
|
661 |
+
height: 100%; }
|
662 |
+
|
663 |
+
.omapi-support-links {
|
664 |
+
width: 40%;
|
665 |
+
margin-top: 1.25em;
|
666 |
+
display: inline-block; }
|
667 |
+
|
668 |
+
.omapi-support-links li {
|
669 |
+
font-size: 15px; }
|
670 |
+
|
671 |
+
.omapi-support-data {
|
672 |
+
width: 60%;
|
673 |
+
display: inline-block; }
|
674 |
+
|
675 |
+
.omapi-half-column {
|
676 |
+
margin-top: 1.25em; }
|
677 |
+
|
678 |
+
@media all and (min-width: 1400px) {
|
679 |
+
.omapi-half-column {
|
680 |
+
width: 50%;
|
681 |
+
display: inline-block;
|
682 |
+
float: left; }
|
683 |
+
.omapi-support-links,
|
684 |
+
.omapi-support-data {
|
685 |
+
width: calc(50% - 30px);
|
686 |
+
margin-left: 30px;
|
687 |
+
float: right; } }
|
688 |
+
|
689 |
+
.omapi-copy-button.button {
|
690 |
+
margin-left: 10px; }
|
691 |
+
|
692 |
+
/* DatePicker Container */
|
693 |
+
.ui-datepicker {
|
694 |
+
width: auto;
|
695 |
+
height: auto;
|
696 |
+
margin: 5px auto 0;
|
697 |
+
font: 9pt Arial, sans-serif;
|
698 |
+
-webkit-box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.5);
|
699 |
+
box-shadow: 0 1px 4px 1px rgba(0, 0, 0, 0.4);
|
700 |
+
background-color: #eee;
|
701 |
+
border: 1px solid #ddd; }
|
702 |
+
|
703 |
+
.ui-datepicker a {
|
704 |
+
text-decoration: none;
|
705 |
+
position: relative; }
|
706 |
+
|
707 |
+
.ui-datepicker table {
|
708 |
+
width: 100%;
|
709 |
+
padding: 0px; }
|
710 |
+
|
711 |
+
.ui-datepicker-header {
|
712 |
+
color: #e0e0e0;
|
713 |
+
font-weight: bold;
|
714 |
+
-webkit-box-shadow: inset 0 1px 1px 0 #fafafa;
|
715 |
+
box-shadow: inset 0 1px 1px 0 rgba(250, 250, 250, 0.2);
|
716 |
+
text-shadow: 1px -1px 0px #000;
|
717 |
+
line-height: 30px;
|
718 |
+
border-width: 1px 0 0 0;
|
719 |
+
border-style: solid;
|
720 |
+
border-color: #444; }
|
721 |
+
|
722 |
+
.ui-datepicker-title {
|
723 |
+
text-align: center;
|
724 |
+
background: #444; }
|
725 |
+
|
726 |
+
.ui-datepicker-prev, .ui-datepicker-next {
|
727 |
+
display: inline-block;
|
728 |
+
width: 30px;
|
729 |
+
height: 30px;
|
730 |
+
text-align: center;
|
731 |
+
cursor: pointer;
|
732 |
+
overflow: hidden;
|
733 |
+
padding-right: 10px;
|
734 |
+
padding-left: 10px;
|
735 |
+
color: #FFF;
|
736 |
+
text-indent: 100%; }
|
737 |
+
|
738 |
+
.ui-datepicker-prev {
|
739 |
+
float: left; }
|
740 |
+
|
741 |
+
.ui-datepicker-next {
|
742 |
+
float: right; }
|
743 |
+
|
744 |
+
.ui-datepicker-prev:before {
|
745 |
+
content: '<';
|
746 |
+
position: absolute;
|
747 |
+
left: -10px;
|
748 |
+
height: 10px;
|
749 |
+
width: 10px; }
|
750 |
+
|
751 |
+
.ui-datepicker-next:before {
|
752 |
+
content: '>';
|
753 |
+
position: absolute;
|
754 |
+
left: -10px;
|
755 |
+
height: 10px;
|
756 |
+
width: 10px; }
|
757 |
+
|
758 |
+
.ui-datepicker thead {
|
759 |
+
background-color: #f7f7f7;
|
760 |
+
border-bottom: 1px solid #000; }
|
761 |
+
|
762 |
+
.ui-datepicker th {
|
763 |
+
text-transform: uppercase;
|
764 |
+
font-size: 6pt;
|
765 |
+
padding: 5px 0;
|
766 |
+
margin-bottom: 1px;
|
767 |
+
color: #666666;
|
768 |
+
text-shadow: 1px 0px 0px #fff;
|
769 |
+
-webkit-box-shadow: 0px 1px 0px 1px #E0E0E0;
|
770 |
+
box-shadow: 0px 1px 0px 1px #E0E0E0; }
|
771 |
+
|
772 |
+
.ui-datepicker tbody td {
|
773 |
+
-webkit-box-shadow: 0px 1px 0px 1px #E0E0E0;
|
774 |
+
box-shadow: 0px 1px 0px 1px #E0E0E0;
|
775 |
+
padding: 0px; }
|
776 |
+
|
777 |
+
.ui-datepicker tbody td:last-child {
|
778 |
+
border-right: 0px; }
|
779 |
+
|
780 |
+
.ui-datepicker tbody tr {
|
781 |
+
border-bottom: 1px solid #bbb; }
|
782 |
+
|
783 |
+
.ui-datepicker td span, .ui-datepicker td a {
|
784 |
+
display: inline-block;
|
785 |
+
font-weight: bold;
|
786 |
+
text-align: center;
|
787 |
+
width: 30px;
|
788 |
+
height: 30px;
|
789 |
+
line-height: 30px;
|
790 |
+
color: #666666; }
|
791 |
+
|
792 |
+
.ui-datepicker-calendar .ui-state-default {
|
793 |
+
background: #ededed; }
|
794 |
+
|
795 |
+
.ui-datepicker-calendar .ui-state-hover {
|
796 |
+
background: #8ed41e;
|
797 |
+
color: #fff; }
|
798 |
+
|
799 |
+
.ui-datepicker-calendar .ui-state-active {
|
800 |
+
background: #0d82df;
|
801 |
+
color: #fff;
|
802 |
+
position: relative; }
|
803 |
+
|
804 |
+
.ui-datepicker-unselectable .ui-state-default {
|
805 |
+
background: #f4f4f4;
|
806 |
+
color: #b4b3b3; }
|
807 |
+
|
808 |
+
.ui-datepicker-calendar td:first-child .ui-state-active {
|
809 |
+
width: 29px;
|
810 |
+
margin-left: 0; }
|
811 |
+
|
812 |
+
.ui-datepicker-calendar td:last-child .ui-state-active {
|
813 |
+
width: 29px;
|
814 |
+
margin-right: 0; }
|
815 |
+
|
816 |
+
/** Tooltips **/
|
817 |
+
.omapi-has-tooltip:after {
|
818 |
+
content: '\f223';
|
819 |
+
color: #ccc;
|
820 |
+
position: absolute;
|
821 |
+
display: inline-block;
|
822 |
+
width: 17px;
|
823 |
+
height: 17px;
|
824 |
+
font-size: 17px;
|
825 |
+
line-height: 1;
|
826 |
+
font-family: 'dashicons';
|
827 |
+
text-decoration: inherit;
|
828 |
+
font-weight: 400;
|
829 |
+
font-style: normal;
|
830 |
+
vertical-align: middle;
|
831 |
+
text-align: center;
|
832 |
+
-webkit-transition: color .1s ease-in 0;
|
833 |
+
transition: color .1s ease-in 0;
|
834 |
+
-webkit-font-smoothing: antialiased;
|
835 |
+
-moz-osx-font-smoothing: grayscale;
|
836 |
+
padding-left: 3px;
|
837 |
+
padding-top: 2px; }
|
838 |
+
|
839 |
+
.tooltip {
|
840 |
+
position: absolute;
|
841 |
+
z-index: 1070;
|
842 |
+
display: block;
|
843 |
+
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
|
844 |
+
font-style: normal;
|
845 |
+
font-weight: normal;
|
846 |
+
letter-spacing: normal;
|
847 |
+
line-break: auto;
|
848 |
+
line-height: 1.42857143;
|
849 |
+
text-align: left;
|
850 |
+
text-align: start;
|
851 |
+
text-decoration: none;
|
852 |
+
text-shadow: none;
|
853 |
+
text-transform: none;
|
854 |
+
white-space: normal;
|
855 |
+
word-break: normal;
|
856 |
+
word-spacing: normal;
|
857 |
+
word-wrap: normal;
|
858 |
+
font-size: 12px;
|
859 |
+
opacity: 0;
|
860 |
+
filter: alpha(opacity=0); }
|
861 |
+
|
862 |
+
.tooltip.in {
|
863 |
+
opacity: 0.9;
|
864 |
+
filter: alpha(opacity=90); }
|
865 |
+
|
866 |
+
.tooltip.top {
|
867 |
+
margin-top: -3px;
|
868 |
+
padding: 5px 0; }
|
869 |
+
|
870 |
+
.tooltip.right {
|
871 |
+
margin-left: 3px;
|
872 |
+
padding: 0 5px; }
|
873 |
+
|
874 |
+
.tooltip.bottom {
|
875 |
+
margin-top: 3px;
|
876 |
+
padding: 5px 0; }
|
877 |
+
|
878 |
+
.tooltip.left {
|
879 |
+
margin-left: -3px;
|
880 |
+
padding: 0 5px; }
|
881 |
+
|
882 |
+
.tooltip-inner {
|
883 |
+
max-width: 200px;
|
884 |
+
padding: 10px 10px 9px;
|
885 |
+
color: #ffffff;
|
886 |
+
text-align: center;
|
887 |
+
background-color: #000000;
|
888 |
+
border-radius: 4px; }
|
889 |
+
|
890 |
+
.tooltip-arrow {
|
891 |
+
position: absolute;
|
892 |
+
width: 0;
|
893 |
+
height: 0;
|
894 |
+
border-color: transparent;
|
895 |
+
border-style: solid; }
|
896 |
+
|
897 |
+
.tooltip.top .tooltip-arrow {
|
898 |
+
bottom: 0;
|
899 |
+
left: 50%;
|
900 |
+
margin-left: -5px;
|
901 |
+
border-width: 5px 5px 0;
|
902 |
+
border-top-color: #000000; }
|
903 |
+
|
904 |
+
.tooltip.top-left .tooltip-arrow {
|
905 |
+
bottom: 0;
|
906 |
+
right: 5px;
|
907 |
+
margin-bottom: -5px;
|
908 |
+
border-width: 5px 5px 0;
|
909 |
+
border-top-color: #000000; }
|
910 |
+
|
911 |
+
.tooltip.top-right .tooltip-arrow {
|
912 |
+
bottom: 0;
|
913 |
+
left: 5px;
|
914 |
+
margin-bottom: -5px;
|
915 |
+
border-width: 5px 5px 0;
|
916 |
+
border-top-color: #000000; }
|
917 |
+
|
918 |
+
.tooltip.right .tooltip-arrow {
|
919 |
+
top: 50%;
|
920 |
+
left: 0;
|
921 |
+
margin-top: -5px;
|
922 |
+
border-width: 5px 5px 5px 0;
|
923 |
+
border-right-color: #000000; }
|
924 |
+
|
925 |
+
.tooltip.left .tooltip-arrow {
|
926 |
+
top: 50%;
|
927 |
+
right: 0;
|
928 |
+
margin-top: -5px;
|
929 |
+
border-width: 5px 0 5px 5px;
|
930 |
+
border-left-color: #000000; }
|
931 |
+
|
932 |
+
.tooltip.bottom .tooltip-arrow {
|
933 |
+
top: 0;
|
934 |
+
left: 50%;
|
935 |
+
margin-left: -5px;
|
936 |
+
border-width: 0 5px 5px;
|
937 |
+
border-bottom-color: #000000; }
|
938 |
+
|
939 |
+
.tooltip.bottom-left .tooltip-arrow {
|
940 |
+
top: 0;
|
941 |
+
right: 5px;
|
942 |
+
margin-top: -5px;
|
943 |
+
border-width: 0 5px 5px;
|
944 |
+
border-bottom-color: #000000; }
|
945 |
+
|
946 |
+
.tooltip.bottom-right .tooltip-arrow {
|
947 |
+
top: 0;
|
948 |
+
left: 5px;
|
949 |
+
margin-top: -5px;
|
950 |
+
border-width: 0 5px 5px;
|
951 |
+
border-bottom-color: #000000; }
|
952 |
+
|
953 |
+
.manually-connect-wc {
|
954 |
+
display: block;
|
955 |
+
padding-top: 8px; }
|
assets/dist/css/settings.min.js
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
(function(a){function b(d){if(c[d])return c[d].exports;var e=c[d]={i:d,l:!1,exports:{}};return a[d].call(e.exports,e,e.exports,b),e.l=!0,e.exports}var c={};return b.m=a,b.c=c,b.d=function(a,c,d){b.o(a,c)||Object.defineProperty(a,c,{configurable:!1,enumerable:!0,get:d})},b.n=function(a){var c=a&&a.__esModule?function(){return a['default']}:function(){return a};return b.d(c,'a',c),c},b.o=function(a,b){return Object.prototype.hasOwnProperty.call(a,b)},b.p='',b(b.s=48)})({48:function(){}});
|
assets/dist/css/trustpulse.min.css
ADDED
@@ -0,0 +1,329 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
#adminmenu .toplevel-page-trustpulse-settings div.wp-menu-image {
|
2 |
+
height: 30px; }
|
3 |
+
|
4 |
+
@font-face {
|
5 |
+
font-family: 'Averta';
|
6 |
+
src: url(../../fonts/Averta-Regular.eot);
|
7 |
+
src: url(../../fonts/Averta-Regular.eot?#iefix) format("embedded-opentype"), url(../../fonts/Averta-Regular.woff) format("woff"), url(../../fonts/Averta-Regular.ttf) format("truetype");
|
8 |
+
font-weight: normal;
|
9 |
+
font-style: normal; }
|
10 |
+
|
11 |
+
@font-face {
|
12 |
+
font-family: 'Averta';
|
13 |
+
src: url(../../fonts/Averta-Semibold.eot);
|
14 |
+
src: url(../../fonts/Averta-Semibold.eot?#iefix) format("embedded-opentype"), url(../../fonts/Averta-Semibold.woff) format("woff"), url(../../fonts/Averta-Semibold.ttf) format("truetype");
|
15 |
+
font-weight: 500;
|
16 |
+
font-style: normal; }
|
17 |
+
|
18 |
+
@font-face {
|
19 |
+
font-family: 'Averta';
|
20 |
+
src: url(../../fonts/Averta-Bold.eot);
|
21 |
+
src: url(../../fonts/Averta-Bold.eot?#iefix) format("embedded-opentype"), url(../../fonts/Averta-Bold.woff) format("woff"), url(../../fonts/Averta-Bold.ttf) format("truetype");
|
22 |
+
font-weight: bold;
|
23 |
+
font-style: normal; }
|
24 |
+
|
25 |
+
@font-face {
|
26 |
+
font-family: 'Averta';
|
27 |
+
src: url(../../fonts/Averta-ExtraBoldItalic.eot);
|
28 |
+
src: url(../../fonts/Averta-ExtraBoldItalic.eot?#iefix) format("embedded-opentype"), url(../../fonts/Averta-ExtraBoldItalic.woff) format("woff"), url(../../fonts/Averta-ExtraBoldItalic.ttf) format("truetype");
|
29 |
+
font-weight: bold;
|
30 |
+
font-style: italic, oblique; }
|
31 |
+
|
32 |
+
.tp-works-on {
|
33 |
+
margin-top: 60px; }
|
34 |
+
.tp-works-on .tp-heading {
|
35 |
+
line-height: 36px; }
|
36 |
+
.tp-works-on__icons {
|
37 |
+
display: -webkit-box;
|
38 |
+
display: -ms-flexbox;
|
39 |
+
display: flex;
|
40 |
+
-ms-flex-wrap: wrap;
|
41 |
+
flex-wrap: wrap;
|
42 |
+
-webkit-box-pack: justify;
|
43 |
+
-ms-flex-pack: justify;
|
44 |
+
justify-content: space-between;
|
45 |
+
-webkit-box-align: center;
|
46 |
+
-ms-flex-align: center;
|
47 |
+
align-items: center;
|
48 |
+
margin-bottom: 30px; }
|
49 |
+
.tp-works-on__icon {
|
50 |
+
width: 200px;
|
51 |
+
height: auto;
|
52 |
+
margin-bottom: 20px; }
|
53 |
+
|
54 |
+
#wpcontent .main-navigation {
|
55 |
+
display: -webkit-box;
|
56 |
+
display: -ms-flexbox;
|
57 |
+
display: flex;
|
58 |
+
-webkit-box-pack: end;
|
59 |
+
-ms-flex-pack: end;
|
60 |
+
justify-content: flex-end; }
|
61 |
+
|
62 |
+
#wpcontent .navbar-header {
|
63 |
+
width: 100%;
|
64 |
+
background-color: #fff;
|
65 |
+
border-bottom: 1px solid #e5ecf6; }
|
66 |
+
|
67 |
+
#wpcontent .navbar-brand {
|
68 |
+
height: 38px; }
|
69 |
+
|
70 |
+
#wpcontent .navbar {
|
71 |
+
display: -webkit-box;
|
72 |
+
display: -ms-flexbox;
|
73 |
+
display: flex;
|
74 |
+
margin: 0 auto;
|
75 |
+
font-size: 16px;
|
76 |
+
-webkit-box-align: center;
|
77 |
+
-ms-flex-align: center;
|
78 |
+
align-items: center;
|
79 |
+
background: transparent;
|
80 |
+
-webkit-box-pack: justify;
|
81 |
+
-ms-flex-pack: justify;
|
82 |
+
justify-content: space-between;
|
83 |
+
padding: 10px 20px;
|
84 |
+
line-height: 1; }
|
85 |
+
#wpcontent .navbar img {
|
86 |
+
max-height: 100%; }
|
87 |
+
#wpcontent .navbar .hover-underline {
|
88 |
+
border-bottom: 2px solid transparent; }
|
89 |
+
#wpcontent .navbar .navbar-menu {
|
90 |
+
text-align: right; }
|
91 |
+
#wpcontent .navbar a {
|
92 |
+
font-weight: 400; }
|
93 |
+
#wpcontent .navbar .menu-top-navbar-menu-container {
|
94 |
+
height: 38px; }
|
95 |
+
|
96 |
+
#wpcontent a.navbar-item {
|
97 |
+
text-decoration: none;
|
98 |
+
color: #364150;
|
99 |
+
margin-right: 10px; }
|
100 |
+
#wpcontent a.navbar-item.is-active, #wpcontent a.navbar-item:hover {
|
101 |
+
background-color: transparent;
|
102 |
+
height: calc($navbar-height + 2px);
|
103 |
+
color: #3a546f; }
|
104 |
+
#wpcontent a.navbar-item.is-active .hover-underline, #wpcontent a.navbar-item:hover .hover-underline {
|
105 |
+
border-bottom: 2px solid #0db1eb; }
|
106 |
+
|
107 |
+
@media screen and (max-width: 1087px) {
|
108 |
+
#wpcontent .navbar-brand {
|
109 |
+
width: 100%; } }
|
110 |
+
|
111 |
+
@media screen and (max-width: 1087px) {
|
112 |
+
#wpcontent .navbar-menu.is-active {
|
113 |
+
display: block;
|
114 |
+
position: absolute;
|
115 |
+
top: 65px; }
|
116 |
+
#wpcontent .navbar-menu.is-active .navbar {
|
117 |
+
display: -webkit-box;
|
118 |
+
display: -ms-flexbox;
|
119 |
+
display: flex;
|
120 |
+
-webkit-box-orient: vertical;
|
121 |
+
-webkit-box-direction: normal;
|
122 |
+
-ms-flex-direction: column;
|
123 |
+
flex-direction: column;
|
124 |
+
width: 100vw;
|
125 |
+
text-align: left;
|
126 |
+
-webkit-box-align: start;
|
127 |
+
-ms-flex-align: start;
|
128 |
+
align-items: flex-start;
|
129 |
+
padding-right: 0; }
|
130 |
+
#wpcontent .navbar-menu.is-active .navbar-item {
|
131 |
+
width: 100%;
|
132 |
+
border-top: 1px solid #e5ecf6; } }
|
133 |
+
|
134 |
+
#adminmenu .toplevel-page-trustpulse-settings div.wp-menu-image {
|
135 |
+
height: 30px; }
|
136 |
+
|
137 |
+
.optinmonster_page_optin-monster-trustpulse #wpwrap {
|
138 |
+
background: #f7faff; }
|
139 |
+
|
140 |
+
.optinmonster_page_optin-monster-trustpulse #wpcontent {
|
141 |
+
padding: 0; }
|
142 |
+
|
143 |
+
.optinmonster_page_optin-monster-trustpulse #wpbody {
|
144 |
+
font-family: "Averta", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
|
145 |
+
color: #364150; }
|
146 |
+
.optinmonster_page_optin-monster-trustpulse #wpbody .button {
|
147 |
+
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; }
|
148 |
+
.optinmonster_page_optin-monster-trustpulse #wpbody .text-center {
|
149 |
+
text-align: center; }
|
150 |
+
.optinmonster_page_optin-monster-trustpulse #wpbody .notice {
|
151 |
+
margin-top: 20px; }
|
152 |
+
.optinmonster_page_optin-monster-trustpulse #wpbody .update-nag {
|
153 |
+
display: none; }
|
154 |
+
.optinmonster_page_optin-monster-trustpulse #wpbody p {
|
155 |
+
font-size: 16px; }
|
156 |
+
.optinmonster_page_optin-monster-trustpulse #wpbody a:not(.button-primary) {
|
157 |
+
color: #364150;
|
158 |
+
-webkit-text-decoration-color: #0db1eb;
|
159 |
+
text-decoration-color: #0db1eb;
|
160 |
+
font-weight: 500; }
|
161 |
+
.optinmonster_page_optin-monster-trustpulse #wpbody a:not(.button-primary):hover {
|
162 |
+
color: #0db1eb; }
|
163 |
+
.optinmonster_page_optin-monster-trustpulse #wpbody .trustpulse-wrap {
|
164 |
+
max-width: 720px;
|
165 |
+
margin: 0 auto; }
|
166 |
+
.optinmonster_page_optin-monster-trustpulse #wpbody .tp-admin-box {
|
167 |
+
position: relative;
|
168 |
+
-webkit-box-sizing: border-box;
|
169 |
+
box-sizing: border-box;
|
170 |
+
background: #ffffff;
|
171 |
+
max-width: 840px;
|
172 |
+
margin: 0 auto;
|
173 |
+
padding: 30px;
|
174 |
+
border-radius: 10px;
|
175 |
+
border: 1px solid #e5ecf6;
|
176 |
+
text-align: center; }
|
177 |
+
.optinmonster_page_optin-monster-trustpulse #wpbody .tp-admin-box p {
|
178 |
+
margin-bottom: 30px; }
|
179 |
+
.optinmonster_page_optin-monster-trustpulse #wpbody .tp-admin-box--video {
|
180 |
+
margin-top: 40px;
|
181 |
+
height: 360px; }
|
182 |
+
.optinmonster_page_optin-monster-trustpulse #wpbody .tp-admin-box--video .tp-video-button {
|
183 |
+
cursor: pointer;
|
184 |
+
position: absolute;
|
185 |
+
left: calc(50% - 125px);
|
186 |
+
top: calc(50% - 40px);
|
187 |
+
width: 250px;
|
188 |
+
z-index: 1; }
|
189 |
+
.optinmonster_page_optin-monster-trustpulse #wpbody .tp-admin-box--video .tp-video-background {
|
190 |
+
position: absolute;
|
191 |
+
left: 0;
|
192 |
+
bottom: 0;
|
193 |
+
width: 100%;
|
194 |
+
opacity: .3; }
|
195 |
+
.optinmonster_page_optin-monster-trustpulse #wpbody .tp-admin-box--video p {
|
196 |
+
margin-top: 0; }
|
197 |
+
.optinmonster_page_optin-monster-trustpulse #wpbody .tp-or-line {
|
198 |
+
margin: 5px auto; }
|
199 |
+
.optinmonster_page_optin-monster-trustpulse #wpbody .tp-admin-box-group {
|
200 |
+
display: -webkit-box;
|
201 |
+
display: -ms-flexbox;
|
202 |
+
display: flex;
|
203 |
+
-webkit-box-pack: justify;
|
204 |
+
-ms-flex-pack: justify;
|
205 |
+
justify-content: space-between;
|
206 |
+
width: 840px;
|
207 |
+
margin: 20px auto; }
|
208 |
+
.optinmonster_page_optin-monster-trustpulse #wpbody .tp-admin-box-group .tp-admin-box {
|
209 |
+
width: 32%; }
|
210 |
+
.optinmonster_page_optin-monster-trustpulse #wpbody .tp-heading, .optinmonster_page_optin-monster-trustpulse #wpbody .tp-subheading {
|
211 |
+
line-height: 1.5em;
|
212 |
+
text-align: center; }
|
213 |
+
.optinmonster_page_optin-monster-trustpulse #wpbody .tp-heading {
|
214 |
+
font-size: 28px;
|
215 |
+
font-weight: bold;
|
216 |
+
letter-spacing: -1px;
|
217 |
+
margin-top: 50px; }
|
218 |
+
.optinmonster_page_optin-monster-trustpulse #wpbody .tp-subheading {
|
219 |
+
margin-top: -15px;
|
220 |
+
margin-bottom: 70px; }
|
221 |
+
.optinmonster_page_optin-monster-trustpulse #wpbody .tp-features {
|
222 |
+
max-width: 840px;
|
223 |
+
margin: 0 auto; }
|
224 |
+
.optinmonster_page_optin-monster-trustpulse #wpbody .tp-features .tp-feature {
|
225 |
+
display: -webkit-box;
|
226 |
+
display: -ms-flexbox;
|
227 |
+
display: flex;
|
228 |
+
-ms-flex-wrap: wrap;
|
229 |
+
flex-wrap: wrap;
|
230 |
+
-webkit-box-pack: justify;
|
231 |
+
-ms-flex-pack: justify;
|
232 |
+
justify-content: space-between;
|
233 |
+
margin-bottom: 20px; }
|
234 |
+
.optinmonster_page_optin-monster-trustpulse #wpbody .tp-features .tp-feature.tp-feature--text-left {
|
235 |
+
-webkit-box-orient: horizontal;
|
236 |
+
-webkit-box-direction: reverse;
|
237 |
+
-ms-flex-direction: row-reverse;
|
238 |
+
flex-direction: row-reverse; }
|
239 |
+
.optinmonster_page_optin-monster-trustpulse #wpbody .tp-features .tp-feature__image {
|
240 |
+
width: 325px; }
|
241 |
+
@media screen and (max-width: 400px) {
|
242 |
+
.optinmonster_page_optin-monster-trustpulse #wpbody .tp-features .tp-feature__image {
|
243 |
+
width: 100%;
|
244 |
+
margin-bottom: 20px; } }
|
245 |
+
.optinmonster_page_optin-monster-trustpulse #wpbody .tp-features .tp-feature__text {
|
246 |
+
display: -webkit-box;
|
247 |
+
display: -ms-flexbox;
|
248 |
+
display: flex;
|
249 |
+
-webkit-box-orient: vertical;
|
250 |
+
-webkit-box-direction: normal;
|
251 |
+
-ms-flex-direction: column;
|
252 |
+
flex-direction: column;
|
253 |
+
-webkit-box-pack: center;
|
254 |
+
-ms-flex-pack: center;
|
255 |
+
justify-content: center;
|
256 |
+
width: 350px; }
|
257 |
+
@media screen and (max-width: 400px) {
|
258 |
+
.optinmonster_page_optin-monster-trustpulse #wpbody .tp-features .tp-feature__text {
|
259 |
+
width: 100%; } }
|
260 |
+
.optinmonster_page_optin-monster-trustpulse #wpbody .tp-features .tp-feature__text h3 {
|
261 |
+
font-size: 22px;
|
262 |
+
font-weight: bold;
|
263 |
+
margin-bottom: 0; }
|
264 |
+
.optinmonster_page_optin-monster-trustpulse #wpbody .tp-content-row {
|
265 |
+
display: -webkit-box;
|
266 |
+
display: -ms-flexbox;
|
267 |
+
display: flex;
|
268 |
+
-ms-flex-line-pack: center;
|
269 |
+
align-content: center;
|
270 |
+
-webkit-box-pack: center;
|
271 |
+
-ms-flex-pack: center;
|
272 |
+
justify-content: center; }
|
273 |
+
.optinmonster_page_optin-monster-trustpulse #wpbody .tp-content-row__item {
|
274 |
+
display: -webkit-box;
|
275 |
+
display: -ms-flexbox;
|
276 |
+
display: flex;
|
277 |
+
-webkit-box-align: center;
|
278 |
+
-ms-flex-align: center;
|
279 |
+
align-items: center;
|
280 |
+
margin: 0 5px; }
|
281 |
+
.optinmonster_page_optin-monster-trustpulse #wpbody .tp-button {
|
282 |
+
cursor: pointer;
|
283 |
+
display: -webkit-inline-box;
|
284 |
+
display: -ms-inline-flexbox;
|
285 |
+
display: inline-flex;
|
286 |
+
font-weight: bold;
|
287 |
+
background-color: #16bd83;
|
288 |
+
font-size: 18px;
|
289 |
+
border-radius: 100px;
|
290 |
+
border-color: transparent;
|
291 |
+
color: #ffffff;
|
292 |
+
-webkit-box-align: center;
|
293 |
+
-ms-flex-align: center;
|
294 |
+
align-items: center;
|
295 |
+
-webkit-box-pack: center;
|
296 |
+
-ms-flex-pack: center;
|
297 |
+
justify-content: center;
|
298 |
+
padding: 10px 25px;
|
299 |
+
text-align: center;
|
300 |
+
white-space: nowrap;
|
301 |
+
min-width: 100px;
|
302 |
+
text-decoration: none; }
|
303 |
+
.optinmonster_page_optin-monster-trustpulse #wpbody .tp-button:hover {
|
304 |
+
background-color: #19d191;
|
305 |
+
color: #ffffff; }
|
306 |
+
.optinmonster_page_optin-monster-trustpulse #wpbody .tp-button--full {
|
307 |
+
width: 100%; }
|
308 |
+
.optinmonster_page_optin-monster-trustpulse #wpbody .tp-button--large {
|
309 |
+
padding: 15px 60px;
|
310 |
+
font-size: 22px; }
|
311 |
+
.optinmonster_page_optin-monster-trustpulse #wpbody .tp-button--blue {
|
312 |
+
cursor: pointer;
|
313 |
+
background: #fff;
|
314 |
+
border: 1px solid #e5ecf6;
|
315 |
+
border-radius: 100px;
|
316 |
+
padding: 10px 25px;
|
317 |
+
color: #364150;
|
318 |
+
font-weight: 700; }
|
319 |
+
.optinmonster_page_optin-monster-trustpulse #wpbody .tp-button--blue:hover {
|
320 |
+
background-color: #205fbd;
|
321 |
+
border-color: #205fbd; }
|
322 |
+
.optinmonster_page_optin-monster-trustpulse #wpbody .tp-button--white {
|
323 |
+
color: #364150;
|
324 |
+
background-color: #ffffff;
|
325 |
+
border: 1px solid #e5ecf6; }
|
326 |
+
.optinmonster_page_optin-monster-trustpulse #wpbody .tp-button--white:hover {
|
327 |
+
background-color: #205fbd; }
|
328 |
+
.optinmonster_page_optin-monster-trustpulse #wpbody .tp-alert {
|
329 |
+
color: #ee7979; }
|
assets/dist/css/trustpulse.min.js
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
(function(a){function b(d){if(c[d])return c[d].exports;var e=c[d]={i:d,l:!1,exports:{}};return a[d].call(e.exports,e,e.exports,b),e.l=!0,e.exports}var c={};return b.m=a,b.c=c,b.d=function(a,c,d){b.o(a,c)||Object.defineProperty(a,c,{configurable:!1,enumerable:!0,get:d})},b.n=function(a){var c=a&&a.__esModule?function(){return a['default']}:function(){return a};return b.d(c,'a',c),c},b.o=function(a,b){return Object.prototype.hasOwnProperty.call(a,b)},b.p='',b(b.s=44)})({44:function(){}});
|
assets/dist/js/campaign-selector.min.js
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
(function(e){function t(o){if(n[o])return n[o].exports;var r=n[o]={i:o,l:!1,exports:{}};return e[o].call(r.exports,r,r.exports,t),r.l=!0,r.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,o){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:o})},t.n=function(e){var n=e&&e.__esModule?function(){return e['default']}:function(){return e};return t.d(n,'a',n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p='',t(t.s=49)})([function(e){var t=e.exports={version:'2.6.9'};'number'==typeof __e&&(__e=t)},function(e){var t=e.exports='undefined'!=typeof window&&window.Math==Math?window:'undefined'!=typeof self&&self.Math==Math?self:Function('return this')();'number'==typeof __g&&(__g=t)},function(e,t,n){e.exports=!n(9)(function(){return 7!=Object.defineProperty({},'a',{get:function(){return 7}}).a})},function(e){var t={}.hasOwnProperty;e.exports=function(e,n){return t.call(e,n)}},function(e,t,n){var o=n(1),r=n(0),l=n(34),a=n(7),s=n(3),i='prototype',p=function(e,t,n){var d,c,u,m=e&p.F,C=e&p.G,f=e&p.S,g=e&p.P,y=e&p.B,E=e&p.W,h=C?r:r[t]||(r[t]={}),_=h[i],b=C?o:f?o[t]:(o[t]||{})[i];for(d in C&&(n=t),n)c=!m&&b&&void 0!==b[d],c&&s(h,d)||(u=c?b[d]:n[d],h[d]=C&&'function'!=typeof b[d]?n[d]:y&&c?l(u,o):E&&b[d]==u?function(e){var t=function(t,n,o){if(this instanceof e){switch(arguments.length){case 0:return new e;case 1:return new e(t);case 2:return new e(t,n);}return new e(t,n,o)}return e.apply(this,arguments)};return t[i]=e[i],t}(u):g&&'function'==typeof u?l(Function.call,u):u,g&&((h.virtual||(h.virtual={}))[d]=u,e&p.R&&_&&!_[d]&&a(_,d,u)))};p.F=1,p.G=2,p.S=4,p.P=8,p.B=16,p.W=32,p.U=64,p.R=128,e.exports=p},function(e,t,n){var o=n(13),r=n(35),l=n(23),a=Object.defineProperty;t.f=n(2)?Object.defineProperty:function(e,t,n){if(o(e),t=l(t,!0),o(n),r)try{return a(e,t,n)}catch(t){}if('get'in n||'set'in n)throw TypeError('Accessors not supported!');return'value'in n&&(e[t]=n.value),e}},function(e,t,n){var o=n(31),r=n(18);e.exports=function(e){return o(r(e))}},function(e,t,n){var o=n(5),r=n(16);e.exports=n(2)?function(e,t,n){return o.f(e,t,r(1,n))}:function(e,t,n){return e[t]=n,e}},function(e){e.exports=function(e){return'object'==typeof e?null!==e:'function'==typeof e}},function(e){e.exports=function(e){try{return!!e()}catch(t){return!0}}},function(e,t,n){var o=n(21)('wks'),r=n(15),l=n(1).Symbol,a='function'==typeof l,s=e.exports=function(e){return o[e]||(o[e]=a&&l[e]||(a?l:r)('Symbol.'+e))};s.store=o},function(e,t,n){var o=n(18);e.exports=function(e){return Object(o(e))}},function(e,t,n){var o=n(30),r=n(22);e.exports=Object.keys||function(e){return o(e,r)}},function(e,t,n){var o=n(8);e.exports=function(e){if(!o(e))throw TypeError(e+' is not an object!');return e}},function(e){e.exports=!0},function(e){var t=0,n=Math.random();e.exports=function(e){return'Symbol('.concat(e===void 0?'':e,')_',(++t+n).toString(36))}},function(e){e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},function(e,t){t.f={}.propertyIsEnumerable},function(e){e.exports=function(e){if(e==void 0)throw TypeError('Can\'t call method on '+e);return e}},function(e){var t=Math.ceil,n=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(0<e?n:t)(e)}},function(e,t,n){var o=n(21)('keys'),r=n(15);e.exports=function(e){return o[e]||(o[e]=r(e))}},function(e,t,n){var o=n(0),r=n(1),l='__core-js_shared__',a=r[l]||(r[l]={});(e.exports=function(e,t){return a[e]||(a[e]=t===void 0?{}:t)})('versions',[]).push({version:o.version,mode:n(14)?'pure':'global',copyright:'\xA9 2019 Denis Pushkarev (zloirock.ru)'})},function(e){e.exports=['constructor','hasOwnProperty','isPrototypeOf','propertyIsEnumerable','toLocaleString','toString','valueOf']},function(e,t,n){var o=n(8);e.exports=function(e,t){if(!o(e))return e;var n,r;if(t&&'function'==typeof(n=e.toString)&&!o(r=n.call(e)))return r;if('function'==typeof(n=e.valueOf)&&!o(r=n.call(e)))return r;if(!t&&'function'==typeof(n=e.toString)&&!o(r=n.call(e)))return r;throw TypeError('Can\'t convert object to primitive value')}},function(e){e.exports={}},function(e,t,n){var o=n(13),r=n(71),l=n(22),a=n(20)('IE_PROTO'),s=function(){},p='prototype',d=function(){var e,t=n(36)('iframe'),o=l.length,r='<',a='>';for(t.style.display='none',n(72).appendChild(t),t.src='javascript:',e=t.contentWindow.document,e.open(),e.write(r+'script'+a+'document.F=Object'+r+'/script'+a),e.close(),d=e.F;o--;)delete d[p][l[o]];return d()};e.exports=Object.create||function(e,t){var n;return null===e?n=d():(s[p]=o(e),n=new s,s[p]=null,n[a]=e),void 0===t?n:r(n,t)}},function(e,t,n){var o=n(5).f,r=n(3),l=n(10)('toStringTag');e.exports=function(e,t,n){e&&!r(e=n?e:e.prototype,l)&&o(e,l,{configurable:!0,value:t})}},function(e,t,n){t.f=n(10)},function(e,t,n){var o=n(1),r=n(0),l=n(14),a=n(27),s=n(5).f;e.exports=function(e){var t=r.Symbol||(r.Symbol=l?{}:o.Symbol||{});'_'==e.charAt(0)||e in t||s(t,e,{value:a.f(e)})}},function(e,t){t.f=Object.getOwnPropertySymbols},function(e,t,n){var o=n(3),r=n(6),l=n(53)(!1),a=n(20)('IE_PROTO');e.exports=function(e,t){var n,s=r(e),p=0,i=[];for(n in s)n!=a&&o(s,n)&&i.push(n);for(;t.length>p;)o(s,n=t[p++])&&(~l(i,n)||i.push(n));return i}},function(e,t,n){var o=n(32);e.exports=Object('z').propertyIsEnumerable(0)?Object:function(e){return'String'==o(e)?e.split(''):Object(e)}},function(e){var t={}.toString;e.exports=function(e){return t.call(e).slice(8,-1)}},function(e,t,n){var o=n(4),r=n(0),l=n(9);e.exports=function(e,t){var n=(r.Object||{})[e]||Object[e],a={};a[e]=t(n),o(o.S+o.F*l(function(){n(1)}),'Object',a)}},function(e,t,n){var o=n(56);e.exports=function(e,t,n){return(o(e),void 0===t)?e:1===n?function(n){return e.call(t,n)}:2===n?function(n,o){return e.call(t,n,o)}:3===n?function(n,o,r){return e.call(t,n,o,r)}:function(){return e.apply(t,arguments)}}},function(e,t,n){e.exports=!n(2)&&!n(9)(function(){return 7!=Object.defineProperty(n(36)('div'),'a',{get:function(){return 7}}).a})},function(e,t,n){var o=n(8),r=n(1).document,l=o(r)&&o(r.createElement);e.exports=function(e){return l?r.createElement(e):{}}},function(e,t,n){var o=n(3),r=n(11),l=n(20)('IE_PROTO'),a=Object.prototype;e.exports=Object.getPrototypeOf||function(e){return e=r(e),o(e,l)?e[l]:'function'==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?a:null}},function(e,t,n){'use strict';function o(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var r=n(66),l=o(r),a=n(77),s=o(a),i='function'==typeof s.default&&'symbol'==typeof l.default?function(e){return typeof e}:function(e){return e&&'function'==typeof s.default&&e.constructor===s.default&&e!==s.default.prototype?'symbol':typeof e};t.default='function'==typeof s.default&&'symbol'===i(l.default)?function(e){return'undefined'==typeof e?'undefined':i(e)}:function(e){return e&&'function'==typeof s.default&&e.constructor===s.default&&e!==s.default.prototype?'symbol':'undefined'==typeof e?'undefined':i(e)}},function(e,t,n){'use strict';var o=n(14),r=n(4),l=n(40),a=n(7),s=n(24),i=n(70),p=n(26),d=n(37),c=n(10)('iterator'),u=!([].keys&&'next'in[].keys()),m='keys',C='values',f=function(){return this};e.exports=function(e,t,n,g,y,E,h){i(n,t,g);var _,b,x,O=function(e){return!u&&e in k?k[e]:e===m?function(){return new n(this,e)}:e===C?function(){return new n(this,e)}:function(){return new n(this,e)}},v=t+' Iterator',S=y==C,P=!1,k=e.prototype,M=k[c]||k['@@iterator']||y&&k[y],T=M||O(y),w=y?S?O('entries'):T:void 0,L='Array'==t?k.entries||M:M;if(L&&(x=d(L.call(new e)),x!==Object.prototype&&x.next&&(p(x,v,!0),!o&&'function'!=typeof x[c]&&a(x,c,f))),S&&M&&M.name!==C&&(P=!0,T=function(){return M.call(this)}),(!o||h)&&(u||P||!k[c])&&a(k,c,T),s[t]=T,s[v]=f,y)if(_={values:S?T:O(C),keys:E?T:O(m),entries:w},h)for(b in _)b in k||l(k,b,_[b]);else r(r.P+r.F*(u||P),t,_);return _}},function(e,t,n){e.exports=n(7)},function(e,t,n){var o=n(30),r=n(22).concat('length','prototype');t.f=Object.getOwnPropertyNames||function(e){return o(e,r)}},function(e,t,n){var o=n(17),r=n(16),l=n(6),a=n(23),s=n(3),i=n(35),p=Object.getOwnPropertyDescriptor;t.f=n(2)?p:function(e,t){if(e=l(e),t=a(t,!0),i)try{return p(e,t)}catch(t){}return s(e,t)?r(!o.f.call(e,t),e[t]):void 0}},function(e){e.exports=React},,,,,,function(e,t,n){'use strict';function o(e){return e&&e.__esModule?e:{default:e}}var r,l,a,s=n(50),i=o(s),p=n(57),d=o(p),c=n(60),u=o(c),m=n(61),C=o(m),f=n(65),g=o(f),y=n(87),E=o(y),h=n(95),_=o(h),b=n(101),x=o(b),O=wp.i18n.__,v=wp.element,S=v.Component,P=v.Fragment,k=wp.blockEditor.InspectorControls,M=wp.components,T=M.SelectControl,w=M.ToggleControl,L=M.PanelBody,R=M.Placeholder,I=M.Notice,A=[];wp.blocks.registerBlockType('optinmonster/campaign-selector',{title:OMAPI.i18n.title,description:OMAPI.i18n.description,icon:x.default,category:'embed',keywords:[O('Popup','optin-monster-api'),O('Form','optin-monster-api'),O('Campaign','optin-monster-api'),O('Email','optin-monster-api'),O('Conversion','optin-monster-api')],attributes:{slug:{type:'string'},followrules:{type:'boolean'}},edit:(l=r=function(e){function t(e){(0,u.default)(this,t);var n=(0,g.default)(this,(t.__proto__||(0,d.default)(t)).apply(this,arguments));return a.call(n),n.props=e,n.state={embed:{},loading:!1,hasError:null},n}return(0,E.default)(t,e),(0,C.default)(t,[{key:'componentDidMount',value:function(){document.addEventListener('om.Campaign.init',this.setAsPreview),document.addEventListener('om.Campaign.afterShow',this.loadingStop),document.addEventListener('om.Main.getCampaigns.error',this.foundError),document.addEventListener('om.Campaign.show.error',this.foundError),document.addEventListener('om.Campaign.load.error',this.foundError),this.slug()&&this.fetch()}},{key:'componentWillUnmount',value:function(){var e=this.campaign();e&&(A.push(e),e.off()),document.removeEventListener('om.Campaign.init',this.setAsPreview),document.removeEventListener('om.Campaign.afterShow',this.loadingStop),document.removeEventListener('om.Main.getCampaigns.error',this.foundError),document.removeEventListener('om.Campaign.show.error',this.foundError),document.removeEventListener('om.Campaign.load.error',this.foundError)}},{key:'componentDidUpdate',value:function(e){var t=this.slug(),n=this.getSlug(e);if(t&&n!==t){var o=this.campaign(),r=this.getCampaign(n);this.setState({loading:!0,hasError:!1}),o?o.reset():this.fetch()}}},{key:'render',value:function(){var e=this,t=this.props,n=t.attributes,o=n.slug,r=void 0===o?'':o,l=n.followrules,a=t.setAttributes,s=this.state,i=s.embed,p=s.hasError,d=this.getAvailableOptions(),c=this.getAvailableOptions(!0),u=function(e){return a({slug:e})},m=r&&(!i||this.state.loading);return wp.element.createElement(P,null,function(){return 0<c.length||r?wp.element.createElement(k,{key:'optinmonster-gutenberg-campaign-selector-inspector-controls'},wp.element.createElement(L,{title:OMAPI.i18n.campaign_settings},wp.element.createElement(T,{label:OMAPI.i18n.campaign_selected,value:r,options:c,onChange:u}),r?wp.element.createElement(w,{label:OMAPI.i18n.followrules_label,help:function(){var t=OMAPI.i18n.followrules_help.replace('%s',''),n=OMAPI.editUrl.replace('%d',e.getCampaignId(r));return wp.element.createElement('span',null,wp.element.createElement('span',{dangerouslySetInnerHTML:{__html:t}}),' ',wp.element.createElement('a',{target:'_blank',href:n},OMAPI.i18n.output_settings),'.')}(),checked:!!l,onChange:function(){return a({followrules:!l})}}):null)):null}(),function(){return!p&&m&&wp.element.createElement(_.default,null)}(),function(){if(!p)return null;var e=OMAPI.i18n.found_error;return r&&-1===p.indexOf(r)&&(e=wp.element.createElement(P,null,e,' ',wp.element.createElement('code',null,wp.element.createElement('small',null,r)))),wp.element.createElement('p',{className:'error'},wp.element.createElement('strong',null,e,':'),' ',p)}(),i&&r?this.getOutput():function(){return wp.element.createElement(R,{key:'optinmonster-gutenberg-campaign-selector-wrap',className:'optinmonster-gutenberg-campaign-selector-wrap',label:wp.element.createElement('div',null,wp.element.createElement('img',{src:OMAPI.logoUrl}),wp.element.createElement('h2',null,OMAPI.i18n.title)),instructions:0<d.length?null:wp.element.createElement(I,{status:'warning',isDismissible:!1},wp.element.createElement('div',{style:{marginBottom:'.5em'}},wp.element.createElement('strong',null,OMAPI.i18n.no_campaigns)),wp.element.createElement('p',{class:'description'},OMAPI.i18n.no_campaigns_help))},0<d.length?wp.element.createElement(T,{key:'optinmonster-gutenberg-campaign-selector-select-control',value:r,options:d,onChange:u}):null)}())}}]),t}(S),a=function(){var e=this;this.setAsPreview=function(e){e.detail.Campaign.preview=!0},this.loadingStop=function(t){e.slug()===t.detail.Campaign.id&&e.setState({loading:!1,hasError:!1})},this.foundError=function(t){var n=t.detail,o=n.Campaign,r=n.error,l=e.slug();if(!(o&&l!==o.id)&&!(r.responseURL&&0>r.responseURL.indexOf(l))){var a=r;r.response&&(a=JSON.parse(r.response).message||JSON.parse(r.response).error),r.message&&(a=r.message),e.setState({loading:!1,hasError:a})}},this.fetch=function(){e.setState({loading:!0,hasError:!1});var t=e.slug(),n={type:'text/javascript',src:OMAPI.apiUrl,async:!0,"data-user":OMAPI.omUserId,"data-campaign":t};OMAPI.omEnv&&(n['data-env']=OMAPI.omEnv),e.setState({embed:n})},this.getSlug=function(e){var t=e.attributes.slug,n=t===void 0?'':t;return n},this.slug=function(){return e.getSlug(e.props)},this.getCampaign=function(){var e=0<arguments.length&&arguments[0]!==void 0?arguments[0]:'',t='om'+e;return window[t]?window[t]:null},this.campaign=function(){return e.getCampaign(e.slug())},this.getOutput=function(){var t=e.slug(),n=e.state.embed,o=e.campaign();if(!o&&(A.length&&(o=A.find(function(e){return t===e.id}),o&&(A.splice(A.indexOf(o),1),o.reset())),!o&&n&&0<(0,i.default)(n).length)){var r=document.getElementsByTagName('head')[0]||document.documentElement,l=document.createElement('script'),a=void 0;for(a in n)l.setAttribute(a,n[a]);r.appendChild(l)}return wp.element.createElement('div',{key:'om-'+t+'-holder',id:'om-'+t+'-holder'})},this.getAvailableOptions=function(){var t=!!(0<arguments.length&&void 0!==arguments[0])&&arguments[0],n=e.slug();if(!OMAPI.campaigns||1>OMAPI.campaigns.length||!OMAPI.omUserId)return[];var o=OMAPI.campaigns.filter(function(e){return'inline'===e.campaign_type}),r=o.map(function(e){return{value:e.post_name,label:e.post_title}});return 0<r.length&&r.unshift({value:'',label:OMAPI.i18n.campaign_select}),r},this.getCampaignId=function(e){var t=OMAPI.campaigns.find(function(t){return e===t.post_name});return t?t.ID:0}},l),save:function(){return null}})},function(e,t,n){e.exports={default:n(51),__esModule:!0}},function(e,t,n){n(52),e.exports=n(0).Object.keys},function(e,t,n){var o=n(11),r=n(12);n(33)('keys',function(){return function(e){return r(o(e))}})},function(e,t,n){var o=n(6),r=n(54),l=n(55);e.exports=function(e){return function(t,n,a){var s,i=o(t),p=r(i.length),d=l(a,p);if(e&&n!=n){for(;p>d;)if(s=i[d++],s!=s)return!0;}else for(;p>d;d++)if((e||d in i)&&i[d]===n)return e||d||0;return!e&&-1}}},function(e,t,n){var o=n(19),r=Math.min;e.exports=function(e){return 0<e?r(o(e),9007199254740991):0}},function(e,t,n){var o=n(19),r=Math.max,l=Math.min;e.exports=function(e,t){return e=o(e),0>e?r(e+t,0):l(e,t)}},function(e){e.exports=function(e){if('function'!=typeof e)throw TypeError(e+' is not a function!');return e}},function(e,t,n){e.exports={default:n(58),__esModule:!0}},function(e,t,n){n(59),e.exports=n(0).Object.getPrototypeOf},function(e,t,n){var o=n(11),r=n(37);n(33)('getPrototypeOf',function(){return function(e){return r(o(e))}})},function(e,t){'use strict';t.__esModule=!0,t.default=function(e,t){if(!(e instanceof t))throw new TypeError('Cannot call a class as a function')}},function(e,t,n){'use strict';t.__esModule=!0;var o=n(62),r=function(e){return e&&e.__esModule?e:{default:e}}(o);t.default=function(){function e(e,t){for(var n,o=0;o<t.length;o++)n=t[o],n.enumerable=n.enumerable||!1,n.configurable=!0,'value'in n&&(n.writable=!0),(0,r.default)(e,n.key,n)}return function(t,n,o){return n&&e(t.prototype,n),o&&e(t,o),t}}()},function(e,t,n){e.exports={default:n(63),__esModule:!0}},function(e,t,n){n(64);var o=n(0).Object;e.exports=function(e,t,n){return o.defineProperty(e,t,n)}},function(e,t,n){var o=n(4);o(o.S+o.F*!n(2),'Object',{defineProperty:n(5).f})},function(e,t,n){'use strict';t.__esModule=!0;var o=n(38),r=function(e){return e&&e.__esModule?e:{default:e}}(o);t.default=function(e,t){if(!e)throw new ReferenceError('this hasn\'t been initialised - super() hasn\'t been called');return t&&('object'===('undefined'==typeof t?'undefined':(0,r.default)(t))||'function'==typeof t)?t:e}},function(e,t,n){e.exports={default:n(67),__esModule:!0}},function(e,t,n){n(68),n(73),e.exports=n(27).f('iterator')},function(e,t,n){'use strict';var o=n(69)(!0);n(39)(String,'String',function(e){this._t=e+'',this._i=0},function(){var e,t=this._t,n=this._i;return n>=t.length?{value:void 0,done:!0}:(e=o(t,n),this._i+=e.length,{value:e,done:!1})})},function(e,t,n){var o=n(19),r=n(18);e.exports=function(e){return function(t,n){var p,a,d=r(t)+'',s=o(n),i=d.length;return 0>s||s>=i?e?'':void 0:(p=d.charCodeAt(s),55296>p||56319<p||s+1===i||56320>(a=d.charCodeAt(s+1))||57343<a?e?d.charAt(s):p:e?d.slice(s,s+2):(p-55296<<10)+(a-56320)+65536)}}},function(e,t,n){'use strict';var o=n(25),r=n(16),l=n(26),a={};n(7)(a,n(10)('iterator'),function(){return this}),e.exports=function(e,t,n){e.prototype=o(a,{next:r(1,n)}),l(e,t+' Iterator')}},function(e,t,n){var o=n(5),r=n(13),l=n(12);e.exports=n(2)?Object.defineProperties:function(e,t){r(e);for(var n,a=l(t),s=a.length,p=0;s>p;)o.f(e,n=a[p++],t[n]);return e}},function(e,t,n){var o=n(1).document;e.exports=o&&o.documentElement},function(e,t,n){n(74);for(var o=n(1),r=n(7),l=n(24),a=n(10)('toStringTag'),s='CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,TextTrackList,TouchList'.split(','),p=0;p<s.length;p++){var i=s[p],d=o[i],c=d&&d.prototype;c&&!c[a]&&r(c,a,i),l[i]=l.Array}},function(e,t,n){'use strict';var o=n(75),r=n(76),l=n(24),a=n(6);e.exports=n(39)(Array,'Array',function(e,t){this._t=a(e),this._i=0,this._k=t},function(){var e=this._t,t=this._k,n=this._i++;return!e||n>=e.length?(this._t=void 0,r(1)):'keys'==t?r(0,n):'values'==t?r(0,e[n]):r(0,[n,e[n]])},'values'),l.Arguments=l.Array,o('keys'),o('values'),o('entries')},function(e){e.exports=function(){}},function(e){e.exports=function(e,t){return{value:t,done:!!e}}},function(e,t,n){e.exports={default:n(78),__esModule:!0}},function(e,t,n){n(79),n(84),n(85),n(86),e.exports=n(0).Symbol},function(e,t,n){'use strict';var o=n(1),r=n(3),l=n(2),a=n(4),s=n(40),p=n(80).KEY,i=n(9),d=n(21),c=n(26),u=n(15),m=n(10),C=n(27),f=n(28),g=n(81),y=n(82),E=n(13),h=n(8),_=n(11),b=n(6),x=n(23),O=n(16),v=n(25),S=n(83),P=n(42),M=n(29),T=n(5),w=n(12),L=P.f,R=T.f,I=S.f,A=o.Symbol,D=o.JSON,N=D&&D.stringify,Z='prototype',F=m('_hidden'),Y=m('toPrimitive'),z={}.propertyIsEnumerable,H=d('symbol-registry'),G=d('symbols'),U=d('op-symbols'),W=Object[Z],V='function'==typeof A&&!!M.f,B=o.QObject,K=!B||!B[Z]||!B[Z].findChild,J=l&&i(function(){return 7!=v(R({},'a',{get:function(){return R(this,'a',{value:7}).a}})).a})?function(e,t,n){var o=L(W,t);o&&delete W[t],R(e,t,n),o&&e!==W&&R(W,t,o)}:R,q=function(e){var t=G[e]=v(A[Z]);return t._k=e,t},Q=V&&'symbol'==typeof A.iterator?function(e){return'symbol'==typeof e}:function(e){return e instanceof A},X=function(e,t,n){return e===W&&X(U,t,n),E(e),t=x(t,!0),E(n),r(G,t)?(n.enumerable?(r(e,F)&&e[F][t]&&(e[F][t]=!1),n=v(n,{enumerable:O(0,!1)})):(!r(e,F)&&R(e,F,O(1,{})),e[F][t]=!0),J(e,t,n)):R(e,t,n)},$=function(e,t){E(e);for(var n,o=g(t=b(t)),r=0,a=o.length;a>r;)X(e,n=o[r++],t[n]);return e},ee=function(e){var t=z.call(this,e=x(e,!0));return(this!==W||!r(G,e)||r(U,e))&&(!(t||!r(this,e)||!r(G,e)||r(this,F)&&this[F][e])||t)},te=function(e,t){if(e=b(e),t=x(t,!0),e!==W||!r(G,t)||r(U,t)){var n=L(e,t);return n&&r(G,t)&&!(r(e,F)&&e[F][t])&&(n.enumerable=!0),n}},ne=function(e){for(var t,n=I(b(e)),o=[],l=0;n.length>l;)r(G,t=n[l++])||t==F||t==p||o.push(t);return o},oe=function(e){for(var t,n=e===W,o=I(n?U:b(e)),l=[],a=0;o.length>a;)r(G,t=o[a++])&&(!n||r(W,t))&&l.push(G[t]);return l};V||(A=function(){if(this instanceof A)throw TypeError('Symbol is not a constructor!');var e=u(0<arguments.length?arguments[0]:void 0),t=function(n){this===W&&t.call(U,n),r(this,F)&&r(this[F],e)&&(this[F][e]=!1),J(this,e,O(1,n))};return l&&K&&J(W,e,{configurable:!0,set:t}),q(e)},s(A[Z],'toString',function(){return this._k}),P.f=te,T.f=X,n(41).f=S.f=ne,n(17).f=ee,M.f=oe,l&&!n(14)&&s(W,'propertyIsEnumerable',ee,!0),C.f=function(e){return q(m(e))}),a(a.G+a.W+a.F*!V,{Symbol:A});for(var re=['hasInstance','isConcatSpreadable','iterator','match','replace','search','species','split','toPrimitive','toStringTag','unscopables'],le=0;re.length>le;)m(re[le++]);for(var j=w(m.store),ae=0;j.length>ae;)f(j[ae++]);a(a.S+a.F*!V,'Symbol',{for:function(e){return r(H,e+='')?H[e]:H[e]=A(e)},keyFor:function(e){if(!Q(e))throw TypeError(e+' is not a symbol!');for(var t in H)if(H[t]===e)return t},useSetter:function(){K=!0},useSimple:function(){K=!1}}),a(a.S+a.F*!V,'Object',{create:function(e,t){return t===void 0?v(e):$(v(e),t)},defineProperty:X,defineProperties:$,getOwnPropertyDescriptor:te,getOwnPropertyNames:ne,getOwnPropertySymbols:oe});var k=i(function(){M.f(1)});a(a.S+a.F*k,'Object',{getOwnPropertySymbols:function(e){return M.f(_(e))}}),D&&a(a.S+a.F*(!V||i(function(){var e=A();return'[null]'!=N([e])||'{}'!=N({a:e})||'{}'!=N(Object(e))})),'JSON',{stringify:function(e){for(var t,n,o=[e],r=1;arguments.length>r;)o.push(arguments[r++]);if(n=t=o[1],(h(t)||void 0!==e)&&!Q(e))return y(t)||(t=function(e,t){if('function'==typeof n&&(t=n.call(this,e,t)),!Q(t))return t}),o[1]=t,N.apply(D,o)}}),A[Z][Y]||n(7)(A[Z],Y,A[Z].valueOf),c(A,'Symbol'),c(Math,'Math',!0),c(o.JSON,'JSON',!0)},function(e,t,n){var o=n(15)('meta'),r=n(8),l=n(3),a=n(5).f,s=0,i=Object.isExtensible||function(){return!0},p=!n(9)(function(){return i(Object.preventExtensions({}))}),d=function(e){a(e,o,{value:{i:'O'+ ++s,w:{}}})},c=e.exports={KEY:o,NEED:!1,fastKey:function(e,t){if(!r(e))return'symbol'==typeof e?e:('string'==typeof e?'S':'P')+e;if(!l(e,o)){if(!i(e))return'F';if(!t)return'E';d(e)}return e[o].i},getWeak:function(e,t){if(!l(e,o)){if(!i(e))return!0;if(!t)return!1;d(e)}return e[o].w},onFreeze:function(e){return p&&c.NEED&&i(e)&&!l(e,o)&&d(e),e}}},function(e,t,n){var o=n(12),r=n(29),l=n(17);e.exports=function(e){var t=o(e),n=r.f;if(n)for(var a,s=n(e),p=l.f,d=0;s.length>d;)p.call(e,a=s[d++])&&t.push(a);return t}},function(e,t,n){var o=n(32);e.exports=Array.isArray||function(e){return'Array'==o(e)}},function(e,t,n){var o=n(6),r=n(41).f,l={}.toString,a='object'==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],s=function(e){try{return r(e)}catch(t){return a.slice()}};e.exports.f=function(e){return a&&'[object Window]'==l.call(e)?s(e):r(o(e))}},function(){},function(e,t,n){n(28)('asyncIterator')},function(e,t,n){n(28)('observable')},function(e,t,n){'use strict';function o(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var r=n(88),l=o(r),a=n(92),s=o(a),i=n(38),p=o(i);t.default=function(e,t){if('function'!=typeof t&&null!==t)throw new TypeError('Super expression must either be null or a function, not '+('undefined'==typeof t?'undefined':(0,p.default)(t)));e.prototype=(0,s.default)(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(l.default?(0,l.default)(e,t):e.__proto__=t)}},function(e,t,n){e.exports={default:n(89),__esModule:!0}},function(e,t,n){n(90),e.exports=n(0).Object.setPrototypeOf},function(e,t,n){var o=n(4);o(o.S,'Object',{setPrototypeOf:n(91).set})},function(e,t,n){var o=n(8),r=n(13),l=function(e,t){if(r(e),!o(t)&&null!==t)throw TypeError(t+': can\'t set as prototype!')};e.exports={set:Object.setPrototypeOf||('__proto__'in{}?function(e,t,o){try{o=n(34)(Function.call,n(42).f(Object.prototype,'__proto__').set,2),o(e,[]),t=!(e instanceof Array)}catch(n){t=!0}return function(e,n){return l(e,n),t?e.__proto__=n:o(e,n),e}}({},!1):void 0),check:l}},function(e,t,n){e.exports={default:n(93),__esModule:!0}},function(e,t,n){n(94);var o=n(0).Object;e.exports=function(e,t){return o.create(e,t)}},function(e,t,n){var o=n(4);o(o.S,'Object',{create:n(25)})},function(e,t,n){'use strict';function o(e){return e&&e.__esModule?e:{default:e}}function r(e){var t=e.width,n=e.fill,o=(0,a.default)({},e.wrapperStyles,{display:'flex',alignItems:'center',justifyContent:'center'});return wp.element.createElement('div',{style:o,className:'om-archie-loader'},wp.element.createElement('svg',{height:'100%',width:'100%',version:'1.1',viewBox:'0 0 50 50',style:{maxWidth:t+'px'}},wp.element.createElement('circle',{cx:'25',cy:'25',r:'23',style:{stroke:n}}),wp.element.createElement('path',{d:'M12.75 27.84c.3.06.83.12 1.07.42l.12.11c.36-.05.72-.05 1.08-.11-.18-.12-.36-.24-.54-.3-.36-.6-.9-.72-1.61-.78V27c-1.32-.06-2.94-.36-3.66-1.2-.84-.9-.96-2.46-.84-3.66A4.7 4.7 0 0110 18.91c.54-.36 1.44-.06 1.5.66.06.3.12 1.38.36 1.5.3.18.84.24 1.38.24a8.83 8.83 0 011.73-1.32c-.96-.12-1.91.12-2.93.24l.84-.84a15.24 15.24 0 018.03-3.54c-1.26-.54-2.64-.78-3.96-1.08 5.1-1.07 11.63-1.5 16.24 2.52 1.2 1.02 2.16 2.4 2.81 4.02.72.11 1.68.11 2.16-.18.3-.18.36-1.2.36-1.5.06-.66.96-1.02 1.5-.66.96.72 1.5 2.04 1.62 3.17.12 1.2 0 2.76-.84 3.66-.72.84-2.28 1.14-3.6 1.2v.18c-.71 0-1.31.18-1.67.78-.18.06-.36.18-.54.3.36.06.78.11 1.14.11 0-.05.06-.11.12-.11.23-.3.77-.36 1.07-.42h.24c.12-.36.48-.78.96-.66s.96.66 1.02 1.08c.72.3 1.5.77 1.68 1.73a17.55 17.55 0 01-2.15 3.67 4 4 0 01-.6.17c-.13 0-.25.06-.3.06v.86c-.28.31-.57.6-.87.9.02-.67.02-1.35.02-2-.18-.12-.36-.3-.54-.48a1.72 1.72 0 01-1.01-.6c-.12-.3.12-.48.42-.66 0-.06-.06-.12-.06-.18a1.21 1.21 0 01-.48-.24 31.57 31.57 0 01-6.9 5.1c1.65.5 3.24 1.1 4.8 1.83-.37.2-.74.4-1.12.57a25.37 25.37 0 00-4.7-1.87c-.9.42-1.85.78-2.81 1.02-.12.06-.12.06-.3 0-.78-.24-1.56-.54-2.34-.9A29 29 0 0017.7 39c-.38-.17-.76-.36-1.12-.56 1.5-.73 3.04-1.34 4.62-1.8a26.15 26.15 0 01-6.48-5.15c-.12.06-.36.18-.53.24 0 .06 0 .12-.07.18.3.18.55.42.42.66-.11.3-.6.48-1.01.6-.12.18-.36.3-.54.42v2.24c-.38-.35-.74-.72-1.08-1.1v-.84c-.12 0-.18 0-.3-.06a4.24 4.24 0 01-.57-.16 17.6 17.6 0 01-2.18-3.7 2.7 2.7 0 011.67-1.71c.06-.42.54-.96 1.02-1.08.48-.12.84.3.96.66h.24zm1.73 2.21c2.94 3.12 6.18 5.7 10.37 7.07 4.5-1.25 7.67-4.01 10.84-7.13-.3-.12-.6-.36-.53-.6 0-.06.06-.12.06-.18l-1.74-.18c-.66 2.22-2.4 3.54-3.12 2.1-.18-.36-.24-.78-.3-1.14-.24.54-.9.54-1.61.6-.9.06-2.1.06-2.94-.18-.18.84-.72.84-1.8.96-.96.06-3.23.3-3.65-.72-.06 1.92-2.34.66-3-.48-.24-.36-.36-.78-.48-1.2l-1.56.18c.06.06.06.12.06.18 0 .42-.24.6-.6.72zm16.24.54c.06.42.18.48.6.3 1.08-.54 1.5-2.63 1.56-3.77-.84-.06-1.74-.06-2.64-.06.24 1.14.3 2.33.48 3.53zm-11.92.24c.36.18.6.18.66-.3.12-.6.18-2.45.3-3.47-.84 0-1.62.06-2.46.12-.3 1.32.06 3 1.5 3.65zM24.55 27c-1.32 0-2.58 0-3.83.06-.12.6-.3 3.23.11 3.41.84.36 2.76.36 3.66.12.24-.18.12-3.05.06-3.6zm.9 0c0 .3 0 2.51.3 2.7.72.35 2.64.3 3.41.05.36-.12.18-2.45.12-2.81-1.26 0-2.57 0-3.83.06zm-11.2-4.92c-.37.06-.67.18-1.02.3l-.84.36a5.36 5.36 0 00-.36 3.54c.3.06.6.06.84.06.18-1.5.66-2.94 1.37-4.26zm22.94-.06h-.78c.48 1.38.84 2.82.96 4.32.24 0 .48 0 .78-.06.42-1.62 0-3.42-.96-4.26zm-25.7 4.14a5.3 5.3 0 01.84-4.2c-.3-.06-.72-.18-.96-.36-1.26.36-1.86 1.8-1.98 3.24.12.18.18.36.3.48.42.42 1.08.66 1.8.84zm27.26 0a3.34 3.34 0 001.74-.78c.12-.12.24-.3.3-.48-.06-1.44-.66-2.82-1.98-3.24-.24.24-.6.3-.96.36.9.96 1.14 2.7.9 4.14zm-18.63-5.63a5.09 5.09 0 1010.18 0 5.04 5.04 0 00-5.09-5.04 5.08 5.08 0 00-5.1 5.04zm5.15-1.62c-.48 0-.96.06-1.38.24.6.18 1.08.78 1.08 1.44 0 .83-.72 1.55-1.68 1.55-.6 0-1.14-.3-1.44-.78-.06.24-.06.48-.06.78 0 1.8 1.56 3.24 3.42 3.24 1.92 0 3.47-1.44 3.47-3.24.06-1.8-1.5-3.23-3.41-3.23zm-14.2 2.22c-.06-.18-.18-.54-.18-.96 0-.42-.48-.54-.96-.06-.78.78-.96 2.7-.9 3.41.3-.9.9-1.92 2.04-2.4zm28.04 0a3.78 3.78 0 012.04 2.4c.06-.73-.18-2.64-.9-3.42-.48-.48-.96-.36-.96.06s-.12.78-.18.96zm-16.78-7.67c1.68-3.72 8.15-3.24 8.4 1.55-2.34-2.63-5.4-3.17-8.4-1.55z',fill:n})))}Object.defineProperty(t,'__esModule',{value:!0});var l=n(96),a=o(l),s=n(43),i=o(s);r.defaultProps={fill:'#858b98',width:100},t.default=r},function(e,t,n){'use strict';t.__esModule=!0;var o=n(97),r=function(e){return e&&e.__esModule?e:{default:e}}(o);t.default=r.default||function(e){for(var t,n=1;n<arguments.length;n++)for(var o in t=arguments[n],t)Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e}},function(e,t,n){e.exports={default:n(98),__esModule:!0}},function(e,t,n){n(99),e.exports=n(0).Object.assign},function(e,t,n){var o=n(4);o(o.S+o.F,'Object',{assign:n(100)})},function(e,t,n){'use strict';var o=n(2),r=n(12),l=n(29),a=n(17),s=n(11),i=n(31),p=Object.assign;e.exports=!p||n(9)(function(){var e={},t={},n=Symbol(),o='abcdefghijklmnopqrst';return e[n]=7,o.split('').forEach(function(e){t[e]=e}),7!=p({},e)[n]||Object.keys(p({},t)).join('')!=o})?function(e){for(var t=s(e),n=arguments.length,p=1,d=l.f,c=a.f;n>p;)for(var u,m=i(arguments[p++]),C=d?r(m).concat(d(m)):r(m),f=C.length,g=0;f>g;)u=C[g++],(!o||c.call(m,u))&&(t[u]=m[u]);return t}:p},function(e,t,n){'use strict';Object.defineProperty(t,'__esModule',{value:!0});var o=n(43),r=function(e){return e&&e.__esModule?e:{default:e}}(o);t.default=function(){return wp.element.createElement('svg',{width:'100%',height:'100%',viewBox:'0 0 73 56',version:'1.1',xmlns:'http://www.w3.org/2000/svg',xmlnsXlink:'http://www.w3.org/1999/xlink',xmlSpace:'preserve',style:{fillRule:'evenodd',clipRule:'evenodd',strokeLinejoin:'round',strokeMiterlimit:'1.41421',maxWidth:'28px',maxHeight:'28px',minWidth:'28px',minHeight:'28px'}},wp.element.createElement('g',{transform:'matrix(1.00193,0,0,1.00199,3.98066,-4.90841)'},wp.element.createElement('path',{d:'M63.6,50C63.7,50.4 63.8,50.8 63.8,51.2C63.9,54.7 58.9,58.3 55.6,58.4C53.7,58.5 51.8,57.5 50.9,55.8C38.3,56.3 25.7,56.3 13.1,55.8C12.2,57.5 10.2,58.5 8.3,58.4C5.1,58.3 0.1,54.7 0.1,51.2C0.1,50.8 0.2,50.4 0.3,50C0,49.5 -0.2,49 0,48.7C0.1,48.5 0.5,48.5 0.9,48.7C1.3,48.1 1.7,47.7 2.1,47.2C2,46.7 2,46.2 2.2,46.1C2.4,45.9 2.9,46 3.4,46.2C3.9,45.8 4.5,45.5 5.2,45.2C5.2,44.7 5.4,44.2 5.6,44.1C6,43.9 6.6,44 7.1,44.6C7.7,44.5 8.4,44.5 8.9,44.7C9.3,44.8 9.7,45 10,45.3C10,44.6 10,43.9 10,43.1C9.8,43.1 9.7,43.1 9.5,43C7.5,42.6 5.4,41.3 4.9,39C4.7,38.3 4.7,37.4 4.9,36.6C5.3,35.1 6.5,34.2 7.7,33.7C7.8,33 8.6,32.1 9.4,31.9C10.2,31.7 10.8,32.4 11,33C11.1,33 11.3,33 11.4,33C11.9,33.1 12.8,33.2 13.2,33.7C13.3,33.8 13.3,33.8 13.4,33.9C14,33.8 14.6,33.8 15.2,33.7C14.9,33.5 14.6,33.3 14.3,33.2C13.7,32.2 12.8,32 11.6,31.9C11.6,31.8 11.6,31.7 11.6,31.6C9.4,31.5 6.7,31 5.5,29.6C4.1,28.1 3.9,25.5 4.1,23.5C4.3,21.5 5.2,19.3 6.8,18.1C7.7,17.5 9.2,18 9.3,19.2C9.4,19.7 9.5,21.5 9.9,21.7C10.4,22 11.3,22.1 12.2,22.1C13.1,21.2 14.1,20.5 15.1,19.9C13.5,19.7 11.9,20.1 10.2,20.3L11.6,18.9C13,17.6 14.8,16.4 16.5,15.6C19.1,14.3 22.1,13.3 25,13C22.9,12.1 20.6,11.7 18.4,11.2C26.9,9.4 37.8,8.7 45.5,15.4C47.5,17.1 49.1,19.4 50.2,22.1C51.4,22.3 53,22.3 53.8,21.8C54.3,21.5 54.4,19.8 54.4,19.3C54.5,18.2 56,17.6 56.9,18.2C58.5,19.4 59.4,21.6 59.6,23.5C59.8,25.5 59.6,28.1 58.2,29.6C57,31 54.4,31.5 52.2,31.6C52.2,31.7 52.2,31.8 52.2,31.9C51,31.9 50,32.2 49.4,33.2C49.1,33.3 48.8,33.5 48.5,33.7C49.1,33.8 49.8,33.9 50.4,33.9C50.4,33.8 50.5,33.7 50.6,33.7C51,33.2 51.9,33.1 52.4,33C52.5,33 52.6,33 52.8,33C53,32.4 53.6,31.7 54.4,31.9C55.2,32.1 56,33 56.1,33.7C57.3,34.2 58.6,35 58.9,36.6C59.1,37.5 59.1,38.3 58.9,39C58.4,41.3 56.3,42.6 54.3,43C54.1,43 53.9,43.1 53.8,43.1C53.8,43.9 53.8,44.6 53.8,45.3C54.2,45 54.5,44.8 54.9,44.7C55.5,44.5 56.1,44.5 56.7,44.6C57.2,44.1 57.9,43.9 58.2,44.1C58.4,44.2 58.6,44.7 58.6,45.2C59.2,45.5 59.9,45.9 60.4,46.2C60.9,46 61.3,45.9 61.5,46.1C61.7,46.3 61.7,46.7 61.6,47.2C62.1,47.7 62.5,48.2 62.8,48.7C63.2,48.5 63.6,48.5 63.7,48.7C64.1,49 63.9,49.5 63.6,50ZM12.8,53.6C12.2,51 10.7,48.1 9.1,47.6C6.6,46.9 1.4,50.2 1.7,53.7C3.1,55.9 6.1,57.7 8.3,57.8C10.3,57.9 12.3,56.6 12.7,54.6C12.8,54.2 12.8,53.9 12.8,53.6ZM6.4,54.9C4.6,55.4 2.8,54.5 2.8,53.2C2.8,51.2 6.6,48.6 8.3,48.4C10,48.2 11,50.5 10.4,51.8C9.8,52.9 7.7,54.5 6.4,54.9ZM8.6,21.8C8.5,21.5 8.3,20.9 8.3,20.2C8.3,19.5 7.5,19.3 6.7,20.1C5.4,21.4 5.1,24.6 5.2,25.8C5.7,24.3 6.7,22.6 8.6,21.8ZM9.3,30.2C8.8,27.8 9.3,24.9 10.7,23.2C10.2,23.1 9.5,22.9 9.1,22.6C7,23.2 6,25.6 5.8,28C6,28.3 6.1,28.6 6.3,28.8C7,29.5 8.1,29.9 9.3,30.2ZM10,56.9C8.9,57.3 7.7,56.6 7.6,55.8C7.5,54.9 9.9,53.2 10.8,53C11.8,52.8 12.2,54.3 11.9,55C11.6,55.8 10.7,56.6 10,56.9ZM13.9,23.4C13.3,23.5 12.8,23.7 12.2,23.9L10.8,24.5C10,26.1 9.7,28.3 10.2,30.4C10.7,30.5 11.2,30.5 11.6,30.5C11.9,28 12.7,25.6 13.9,23.4ZM13.7,52.9C17.4,50.7 21.4,48.9 25.5,47.7C21.2,45.4 17.9,42.4 14.7,39.1C14.5,39.2 14.1,39.4 13.8,39.5C13.8,39.6 13.8,39.7 13.7,39.8C14.2,40.1 14.6,40.5 14.4,40.9C14.2,41.4 13.4,41.7 12.7,41.9C12.5,42.2 12.1,42.4 11.8,42.6C11.8,44.1 11.8,45.6 11.8,47.1C12.2,47.9 12.6,48.6 12.9,49.3C13.2,50.4 13.6,51.7 13.7,52.9ZM14.3,36.7C19.2,41.9 24.6,46.2 31.6,48.5C39.1,46.4 44.4,41.8 49.7,36.6C49.2,36.4 48.7,36 48.8,35.6C48.8,35.5 48.9,35.4 48.9,35.3C47.9,35.2 46.9,35.1 46,35C44.9,38.7 42,40.9 40.8,38.5C40.5,37.9 40.4,37.2 40.3,36.6C39.9,37.5 38.8,37.5 37.6,37.6C36.1,37.7 34.1,37.7 32.7,37.3C32.4,38.7 31.5,38.7 29.7,38.9C28.1,39 24.3,39.4 23.6,37.7C23.5,40.9 19.7,38.8 18.6,36.9C18.2,36.3 18,35.6 17.8,34.9C16.9,35 16.1,35.1 15.2,35.2C15.3,35.3 15.3,35.4 15.3,35.5C15.3,36.2 14.9,36.5 14.3,36.7ZM49.3,54.4C45.2,52 41.1,49.8 36.4,48.5C34.9,49.2 33.3,49.8 31.7,50.2C31.5,50.3 31.5,50.3 31.2,50.2C29.9,49.8 28.6,49.3 27.3,48.7C22.8,50 18.7,51.9 14.8,54.3C26.4,54.8 37.9,54.7 49.3,54.4ZM21.5,38C22.1,38.3 22.5,38.3 22.6,37.5C22.8,36.5 22.9,33.4 23.1,31.7C21.7,31.7 20.4,31.8 19,31.9C18.5,34.1 19.1,36.9 21.5,38ZM23.7,20.8C23.7,25.5 27.5,29.3 32.2,29.3C36.9,29.3 40.7,25.5 40.7,20.8C40.7,16.1 36.9,12.4 32.2,12.4C27.5,12.4 23.7,16.2 23.7,20.8ZM31.1,31.6C28.9,31.6 26.8,31.6 24.7,31.7C24.5,32.7 24.2,37.1 24.9,37.4C26.3,38 29.5,38 31,37.6C31.4,37.3 31.2,32.5 31.1,31.6ZM32.3,18.1C31.5,18.1 30.7,18.2 30,18.5C31,18.8 31.8,19.8 31.8,20.9C31.8,22.3 30.6,23.5 29,23.5C28,23.5 27.1,23 26.6,22.2C26.5,22.6 26.5,23 26.5,23.5C26.5,26.5 29.1,28.9 32.2,28.9C35.4,28.9 38,26.5 38,23.5C38.1,20.5 35.5,18.1 32.3,18.1ZM27.4,9C30.2,2.8 41,3.6 41.4,11.6C37.5,7.2 32.4,6.3 27.4,9ZM32.6,31.6C32.6,32.1 32.6,35.8 33.1,36.1C34.3,36.7 37.5,36.6 38.8,36.2C39.4,36 39.1,32.1 39,31.5C36.9,31.5 34.7,31.5 32.6,31.6ZM51.3,49.4C51.5,48.7 51.9,48 52.3,47.3C52.4,45.8 52.4,44.2 52.4,42.7C52.1,42.5 51.8,42.2 51.5,41.9C50.8,41.8 50.1,41.3 49.8,40.9C49.6,40.4 50,40.1 50.5,39.8C50.5,39.7 50.4,39.6 50.4,39.5C50.1,39.4 49.8,39.3 49.6,39.1C46.1,42.4 42.3,45.4 38.1,47.6C42.4,48.9 46.5,50.7 50.5,52.9C50.6,51.7 50.9,50.4 51.3,49.4ZM41.4,37.6C41.5,38.3 41.7,38.4 42.4,38.1C44.2,37.2 44.9,33.7 45,31.8C43.6,31.7 42.1,31.7 40.6,31.7C41,33.6 41.1,35.6 41.4,37.6ZM50.9,23.3C51.7,25.6 52.3,28 52.5,30.5C52.9,30.5 53.3,30.5 53.8,30.4C54.5,27.7 53.8,24.7 52.2,23.3C51.8,23.3 51.3,23.3 50.9,23.3ZM54.9,47.6C53.3,48.1 51.8,51 51.2,53.6C51.2,53.9 51.2,54.2 51.3,54.5C51.7,56.5 53.7,57.8 55.7,57.7C57.8,57.6 60.9,55.8 62.3,53.6C62.6,50.2 57.4,46.8 54.9,47.6ZM54.1,56.9C55.1,57.3 56.4,56.6 56.5,55.8C56.6,54.9 54.3,53.2 53.3,53C52.4,52.8 51.9,54.3 52.3,55C52.4,55.8 53.3,56.6 54.1,56.9ZM54.8,30.2C56,30 57.1,29.5 57.7,28.9C57.9,28.7 58.1,28.4 58.2,28.1C58.1,25.7 57.1,23.4 54.9,22.7C54.5,23.1 53.9,23.2 53.3,23.3C54.8,24.9 55.2,27.8 54.8,30.2ZM57.6,54.9C59.4,55.4 61.2,54.5 61.2,53.2C61.2,51.2 57.4,48.6 55.7,48.4C54,48.2 53,50.5 53.6,51.8C54.1,52.9 56.3,54.5 57.6,54.9ZM55.4,21.8C57.3,22.6 58.3,24.3 58.8,25.8C58.9,24.6 58.5,21.4 57.3,20.1C56.5,19.3 55.7,19.5 55.7,20.2C55.7,20.9 55.5,21.5 55.4,21.8Z',fill:'currentColor',style:{fillRule:'nonzero'}})))}}]);
|
assets/dist/js/connect.min.js
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
(function(a){function b(d){if(c[d])return c[d].exports;var e=c[d]={i:d,l:!1,exports:{}};return a[d].call(e.exports,e,e.exports,b),e.l=!0,e.exports}var c={};return b.m=a,b.c=c,b.d=function(a,c,d){b.o(a,c)||Object.defineProperty(a,c,{configurable:!1,enumerable:!0,get:d})},b.n=function(a){var c=a&&a.__esModule?function(){return a['default']}:function(){return a};return b.d(c,'a',c),c},b.o=function(a,b){return Object.prototype.hasOwnProperty.call(a,b)},b.p='',b(b.s=46)})({46:function(){'use strict';window.OMAPI=window.OMAPI||{},function(a,b,c,d){d.updateForm=function(d,e){var f=b.getElementById('omapi-field-apikey');f.value=d,e.prop('disabled',!0).attr('disabled','disabled'),c('.om-api-key-spinner').remove(),e.after('<div class="om-api-key-spinner spinner is-active" style="float: none;margin-top: -1px;"></div>'),a.sessionStorage&&(sessionStorage.removeItem('omTemplates'),sessionStorage.removeItem('omTemplatesAuth')),HTMLFormElement.prototype.submit.call(f.form)},d.handleAuthorizeClick=function(b){b.preventDefault(),d.$btn=c(b.target);try{var e=OMAPI.app_url+'wordpress/connect/?site='+encodeURIComponent(OMAPI.blogname),f=a.open(e,'_blank','location=no,width=500,height=730,scrollbars=0');f.focus()}catch(a){alert('Your browser blocked the authorization window from opening. Please check your popup settings.')}},d.handleIframeMessage=function(a){return a.origin.replace(/\/$/,'')===OMAPI.app_url.replace(/\/$/,'')?a.data&&'string'==typeof a.data?void d.updateForm(a.data,d.$btn):void console.error('Messages from "'+OMAPI.app_url+'" must contain an api key string.'):void 0},d.initConnect=function(){d.$btn=c('#omapiAuthorizeButton, .omapi-authorize-button').first(),c('body').on('click','#omapiAuthorizeButton, .omapi-authorize-button',d.handleAuthorizeClick),'#authorize'===a.location.hash&&setTimeout(function(){d.$btn.click()},100),a.addEventListener('message',d.handleIframeMessage)},c(d.initConnect)}(window,document,jQuery,window.OMAPI)}});
|
assets/dist/js/pointer.min.js
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
(function(a){function b(d){if(c[d])return c[d].exports;var e=c[d]={i:d,l:!1,exports:{}};return a[d].call(e.exports,e,e.exports,b),e.l=!0,e.exports}var c={};return b.m=a,b.c=c,b.d=function(a,c,d){b.o(a,c)||Object.defineProperty(a,c,{configurable:!1,enumerable:!0,get:d})},b.n=function(a){var c=a&&a.__esModule?function(){return a['default']}:function(){return a};return b.d(c,'a',c),c},b.o=function(a,b){return Object.prototype.hasOwnProperty.call(a,b)},b.p='',b(b.s=103)})({103:function(){'use strict';window.omapiPointer=window.omapiPointer||{},function(a,b,c,d){d.close=function(){return c(d.target).pointer('close')},d.open=function(){var a=c.extend(d.options,{close:function(){c.post(ajaxurl,{pointer:d.id,action:'dismiss-wp-pointer'})}});c(d.target).pointer(a).pointer('open')},d.init=function(){c('#omPointerButton, .om-pointer-close-link').click(d.close),d.open()},c(d.init)}(window,document,jQuery,window.omapiPointer)}});
|
assets/dist/js/settings.min.js
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
(function(a){function b(d){if(c[d])return c[d].exports;var e=c[d]={i:d,l:!1,exports:{}};return a[d].call(e.exports,e,e.exports,b),e.l=!0,e.exports}var c={};return b.m=a,b.c=c,b.d=function(a,c,d){b.o(a,c)||Object.defineProperty(a,c,{configurable:!1,enumerable:!0,get:d})},b.n=function(a){var c=a&&a.__esModule?function(){return a['default']}:function(){return a};return b.d(c,'a',c),c},b.o=function(a,b){return Object.prototype.hasOwnProperty.call(a,b)},b.p='',b(b.s=47)})({47:function(){'use strict';jQuery(document).ready(function(a){function b(b,c){a(b).attr('data-original-title',c).tooltip('show')}function c(b){setTimeout(function(){a(b).tooltip('destroy')},2e3)}(function(){a('.omapi-select').each(function(){var b=-1<a(this).attr('id').indexOf('taxonomies')?OMAPI.tags:OMAPI.posts;a(this).select2({minimumInputLength:1,multiple:!0,data:b,initSelection:function(c,d){var e=a(c).val();e=e.split(',');var f=b.filter(function(a){return-1<e.indexOf(a.id)});d(f)}}).on('change select2-removed',function(){})})})(),function(){var b=a('#omapi-field-automatic'),c=a('#omapi-field-mailpoet'),d=a('#omapi-field-mailpoet_use_phone'),e=function(){var c=b.is(':checked')?'hide':'show';a('.omapi-field-box-automatic_shortcode')[c]()},f=function(){var b=d.is(':checked')?'show':'hide';a('.omapi-field-box-mailpoet_phone_field')[b]()},g=function(){var b=c.is(':checked'),d=b?'show':'hide';a('.omapi-field-box-mailpoet_list')[d](),a('.omapi-field-box-mailpoet_use_phone')[d](),a('.omapi-field-box-mailpoet_phone_field')[d](),b&&f()};e(),g(),a(document).on('change','#omapi-field-automatic',e),a(document).on('change','#omapi-field-mailpoet',g),a(document).on('change','#omapi-field-mailpoet_use_phone',f)}(),function(){a('.omapi-ui-toggle-controller').click(function(b){var c=b.currentTarget;a(c).toggleClass('toggled'),a(c).next('.omapi-ui-toggle-content').toggleClass('visible')})}(),function(){a(document).on('click','input[name=reset]',function(){return confirm(OMAPI.confirm)})}(),function(){var a=new Clipboard('.omapi-copy-button');a.on('success',function(a){b(a.trigger,'Copied to Clipboard!'),c(a.trigger)}),a.on('error',function(a){var d='';d=/iPhone|iPad/i.test(navigator.userAgent)?'Unable to Copy on this device':/Mac/i.test(navigator.userAgent)?'Press \u2318-C to Copy':'Press Ctrl-C to Copy',b(a.trigger,d),c(a.trigger)})}(),function(){a('omapi-copy-button').tooltip({trigger:'click',placement:'top'})}(),function(){var b=a('#js--omapi-support-pdf'),c=function(b){var c=new jsPDF('p','mm','letter');c.text(10,10,'OptinMonster Support Assistance');var d=10;a.each(b.server,function(a,b){d+=10,c.text(10,d,a+' : '+b)}),a.each(b.campaigns,function(b,d){var e=10;c.addPage(),c.text(10,10,b),a.each(d,function(b,d){var f=a.isPlainObject(d)?'':d;e+=10,c.text(10,e,b+' : '+f),a.isPlainObject(d)&&a.each(d,function(a,b){e+=10,c.text(20,e,a+' : '+b)})})}),c.save('OMSupportHelp.pdf')};b.click(function(d){d.preventDefault(),a('.om-api-key-spinner').remove(),b.after('<div class="om-api-key-spinner spinner is-active" style="float: none;margin-top:7px;"></div>'),a.ajax({url:OMAPI.root+'omapp/v1/support?format=pdf',beforeSend:function(a){return a.setRequestHeader('X-WP-Nonce',OMAPI.nonce)},dataType:'json',data:{format:'pdf'},success:c}).done(function(){return a('.om-api-key-spinner').remove()}).fail(function(a,b){return console.error({jqXHR:a,textStatus:b})})})}(),function(){a('[data-toggle="tooltip"]').tooltip()}(),function(){a('#omapiShowApiKey').click(function(b){b.preventDefault(),a('#omapi-form-api .omapi-hidden').removeClass('omapi-hidden'),a('#omapi-field-apikey').focus().select()}),a('#omapiShowApiKeys').click(function(b){b.preventDefault(),a('#omapi-form-woocommerce .omapi-hidden').removeClass('omapi-hidden'),a('.manually-connect-wc').hide(),a('#omapi-field-consumer_key').focus().select()}),a('#omapiDisconnectButton').click(function(b){b.preventDefault(),OMAPI.updateForm('',a(this))})}(),function(){a('.install-plugin-form').submit(function(b){b.preventDefault();var c=a(b.currentTarget).serializeArray(),d=c.find(function(a){return'nonce'===a.name}).value,e=c.find(function(a){return'plugin'===a.name}).value,f=e.replace('.','').replace('/',''),g=c.find(function(a){return'action'===a.name}).value,h=c.find(function(a){return'url'===a.name}).value,i=a('.omapi-plugin-recommendation--'+f);i.length||(i=a('html')),a('.button-install',i).html('Installing...'),a('.button-activate',i).html('Activating...'),a('#om-plugin-alerts').hide(),a.post(ajaxurl,{action:'om_plugin_install',"optin-monster-ajax-route":!0,nonce:d,plugin:e,installAction:g,url:h},function(b){b.success?window.location.reload():(a('.button-install',i).html('Install Plugin'),a('.button-activate',i).html('Activate Plugin'),a('#om-plugin-alerts').show().html(a('<p/>').html(b.data||'Something went wrong!')))})})}(),function(){if(window.history.replaceState&&window.location.search){var a=function(a,b){var c=b.split('?');if(2>c.length)return b;for(var d=encodeURIComponent(a)+'=',e=c[1].split(/[&;]/g),f=e.length;0<f--;)-1!==e[f].lastIndexOf(d,0)&&e.splice(f,1);return c[0]+(0<e.length?'?'+e.join('&'):'')},b=['optin_monster_api_action_done','optin_monster_api_action_type','optin_monster_api_action_id'],c=document.location.href;window.location.search.split('&').forEach(function(d){b.forEach(function(b){0===d.indexOf(b)&&(c=a(d.split('=')[0],c))})}),window.history.replaceState(null,null,c)}}()})}});
|
assets/fonts/Averta-ExtraBoldItalic.eot
ADDED
Binary file
|
assets/fonts/FontAwesome.otf
CHANGED
File without changes
|
assets/fonts/fontawesome-webfont.eot
CHANGED
File without changes
|
assets/fonts/fontawesome-webfont.svg
CHANGED
File without changes
|
assets/fonts/fontawesome-webfont.ttf
CHANGED
File without changes
|
assets/fonts/fontawesome-webfont.woff
CHANGED
File without changes
|
assets/images/BigCommerce-logo.png
ADDED
Binary file
|
assets/images/about/plugin-mi.png
ADDED
Binary file
|
assets/images/about/plugin-wp-forms.png
ADDED
Binary file
|
assets/images/features-event.svg
ADDED
@@ -0,0 +1,135 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0" encoding="utf-8"?>
|
2 |
+
<svg viewBox="0 0 562 412" xmlns="http://www.w3.org/2000/svg" xmlns:serif="http://www.serif.com/" fill-rule="evenodd" clip-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="1.41421">
|
3 |
+
<g opacity=".5" transform="matrix(.7821 0 0 .7821 -149.3014 -85.4476)">
|
4 |
+
<path d="M909.09 158.88v420.67c-.01 10.694-8.82 19.485-19.51 19.48H210.4c-10.697 0-19.5-8.803-19.5-19.5V158.88c0-10.703 8.807-19.51 19.51-19.51h679.17c10.7 0 19.51 8.807 19.51 19.51z" fill="#fff" fill-rule="nonzero"/>
|
5 |
+
<path fill="#1d58bf" fill-opacity=".3" d="M224.9963 186.33337h649.99992v80.00016H224.9963z"/>
|
6 |
+
<path fill="#1d58bf" fill-opacity=".2" d="M225.03963 289.74781h199.99914v120.00024H225.03963zM674.99493 289.74781h199.99914v120.00024H674.99493zM449.99493 289.74781h199.99914v120.00024H449.99493zM225.03963 434.74781h199.99914v120.00024H225.03963zM674.99493 434.74781h199.99914v120.00024H674.99493zM449.99493 434.74781h199.99914v120.00024H449.99493z"/>
|
7 |
+
<path d="M909.09 158.89H190.9v-.01c0-10.697 8.803-19.5 19.5-19.5H889.59c10.7 0 19.5 8.803 19.5 19.5v.01z" fill="#c8cad7" fill-rule="nonzero"/>
|
8 |
+
<circle cx="210.41" cy="149.13" r="4.88" fill="#ededf4"/>
|
9 |
+
<circle cx="225.04" cy="149.13" r="4.88" fill="#ededf4"/>
|
10 |
+
<circle cx="239.67" cy="149.13" r="4.88" fill="#ededf4"/>
|
11 |
+
</g>
|
12 |
+
<path d="M590.46 285.225c0-29.872-24.253-54.125-54.125-54.125h-327.2c-29.872 0-54.125 24.253-54.125 54.125s24.253 54.125 54.125 54.125h327.2c29.872 0 54.125-24.253 54.125-54.125z" fill="url(#_Linear1)" transform="matrix(.74209 0 0 .74209 82.16726 159.83489)"/>
|
13 |
+
<path d="M519.43452 371.50403c0-21.17248-17.1897-38.36218-38.36218-38.36218H237.36359c-21.17248 0-38.36218 17.1897-38.36218 38.36218 0 21.17248 17.1897 38.36218 38.36218 38.36218h243.70875c21.17248 0 38.36218-17.1897 38.36218-38.36218z" fill="#fff"/>
|
14 |
+
<path d="M480.95184 352.25763c0-2.27186-1.84484-4.11652-4.11671-4.11652H285.58108c-2.27243 0-4.11671 1.84466-4.11671 4.11652v8.23348c0 2.27229 1.84428 4.11695 4.1167 4.11695h191.25406c2.27187 0 4.1167-1.84466 4.1167-4.11695v-8.23348z" fill="#3f3d56"/>
|
15 |
+
<path d="M480.95184 371.02555c0-1.51458-1.23008-2.74435-2.74448-2.74435H284.20884c-1.51495 0-2.74447 1.22977-2.74447 2.74435v5.48898c0 1.51486 1.22952 2.74463 2.74447 2.74463h193.99852c1.5144 0 2.74448-1.22977 2.74448-2.74463v-5.48898z" fill="#00aded"/>
|
16 |
+
<path d="M342.00676 386.05141c0-1.51458-1.2299-2.74435-2.74448-2.74435h-55.05373c-1.51476 0-2.74449 1.22977-2.74449 2.74435v5.48898c0 1.51487 1.22973 2.74464 2.74449 2.74464h55.05373c1.51459 0 2.74448-1.22977 2.74448-2.74464v-5.48898z" fill="#9795b1"/>
|
17 |
+
<g fill-rule="nonzero">
|
18 |
+
<path d="M358.2531 392.02014c.59163 0 .87848-.11696 1.16533-.26893l-.30478-.94122c-.1972.09875-.41235.15267-.55577.15267-.26892 0-.38545-.17998-.38545-.55605v-1.86494h1.19221v-.96784h-1.19221v-1.5596l-1.16533.12536v1.43424h-.51991v.96784h.51991v2.02601c0 .98605.49302 1.45246 1.246 1.45246zM362.29567 387.5024c-.51963 0-.9948.25072-1.32647.71713h-.00896v-.6457h-1.17429v4.37487h1.17429v-2.03511c0-.6457.39442-1.13871 1.12043-1.13871.06303 0 .18839 0 .30464.0091v-1.27317c-.0175-.0084-.05322-.0084-.08964-.0084zM365.55004 387.57383v2.12476c0 .84248-.45731 1.27247-.96854 1.27247-.54695 0-.78855-.26892-.78855-1.07568v-2.32155h-1.16533v2.6353c0 1.3362.6632 1.811 1.60442 1.811.49302 0 .96854-.20659 1.29979-.60997h.0182v.53854h1.17443v-4.37487h-1.17442zM368.83942 392.02014c1.14781 0 1.70316-.58267 1.70316-1.36282 0-.85998-.55535-1.06658-1.50568-1.41603-.43069-.16108-.6632-.28713-.6632-.46641 0-.2332.24162-.33125.43-.33125.32285 0 .70802.14356 1.04907.4657l.56446-.86068c-.49303-.38517-.98605-.54625-1.59532-.54625-.8964 0-1.57781.51964-1.57781 1.3089 0 .84247.62748 1.18282 1.3446 1.42513.57356.17928.79766.27803.79766.48392 0 .215-.19679.35856-.53784.35856-.47481 0-.85158-.17017-1.21014-.51123l-.57356.81587c.48392.41249 1.07568.63659 1.7746.63659zM372.3536 392.02014c.59176 0 .8782-.11696 1.16532-.26893l-.30464-.94122c-.19748.09875-.41248.15267-.55605.15267-.26892 0-.38517-.17998-.38517-.55605v-1.86494h1.19194v-.96784h-1.19194v-1.5596l-1.16532.12536v1.43424h-.52034v.96784h.52034v2.02601c0 .98605.49302 1.45246 1.24586 1.45246z" fill="#1d58bf"/>
|
19 |
+
<path d="M376.40562 387.5024c-.53784 0-.99515.1968-1.3271.57356h-.0175v-.50213h-1.17443v6.14947h1.17443v-2.26762h.0175c.30464.35786.73533.56446 1.29068.56446 1.21925 0 2.09745-.8964 2.09745-2.25012 0-1.3264-.8873-2.26762-2.06103-2.26762zm-.25141 3.46866c-.63659 0-1.13871-.47481-1.13871-1.19193 0-.69892.4664-1.22836 1.1387-1.22836.62749 0 1.12051.47552 1.12051 1.22836 0 .70802-.4573 1.19193-1.1205 1.19193zM381.81976 387.57383v2.12476c0 .84248-.4573 1.27247-.96854 1.27247-.54694 0-.78855-.26892-.78855-1.07568v-2.32155h-1.16533v2.6353c0 1.3362.6632 1.811 1.60442 1.811.49303 0 .96854-.20659 1.29979-.60997h.0182v.53854h1.17444v-4.37487h-1.17443zM383.74702 385.35103h1.1743v6.59753h-1.1743zM387.12605 392.02014c1.14781 0 1.70316-.58267 1.70316-1.36282 0-.85998-.55535-1.06658-1.50568-1.41603-.42999-.16108-.6632-.28713-.6632-.46641 0-.2332.24161-.33125.43-.33125.32284 0 .70802.14356 1.04907.4657l.56446-.86068c-.49303-.38517-.98605-.54625-1.59532-.54625-.8964 0-1.57781.51964-1.57781 1.3089 0 .84247.62748 1.18282 1.3446 1.42513.57356.17928.79766.27803.79766.48392 0 .215-.19679.35856-.53784.35856-.47481 0-.85158-.17017-1.21015-.51123l-.57355.81587c.48391.41249 1.07568.63659 1.7746.63659zM393.32033 389.7161c0-1.28158-.86068-2.2137-2.14226-2.2137-1.24586 0-2.16958.92302-2.16958 2.24942 0 1.37191.96854 2.26832 2.25011 2.26832.8782 0 1.51479-.34946 1.89156-.82498l-.76195-.70801c-.2423.29553-.58266.50212-1.04907.49302-.56445 0-.97694-.32285-1.1205-.84248h3.07508c.02661-.07213.02661-.27803.02661-.4216zm-2.10655-1.18283c.51123 0 .82498.30463.94123.76194h-1.92727c.13446-.50213.51123-.76194.98604-.76194z" fill="#00aded"/>
|
20 |
+
</g>
|
21 |
+
<path d="M352.3362 386.0945c-.38985-.10526-.77051-.24529-1.1363-.4248-.31034-.15228-.6097-.32576-.90302-.50839a4.28059 4.28059 0 0 1-.01708.01058c-.77208.4791-1.59296.8661-2.50488 1.03731-.32904.06177-.66185.10054-.99532.12898l-.01063.0009c-.08214 1.83573.04032 3.72786 1.01521 5.302.59423.95947 1.51362 1.67795 2.48731 2.27517l.0254.01547c.39845-.2435.7898-.50318 1.15398-.79322h.82667c-.58592.55146-1.2694 1.0136-1.96423 1.42616-.03256-.02228-.03286 0-.03286 0-.87643-.52039-1.7297-1.09562-2.39376-1.85939-.45109-.51878-.80827-1.11492-1.06569-1.76016-.64686-1.62151-.68784-3.42666-.57505-5.12153.71687-.04271 1.44492-.11159 2.13114-.33286.6768-.21823 1.30011-.58061 1.90217-.97149l.01762-.01147c.01171.00765.02342.01524.03519.02288.75935.4919 1.56971.92602 2.4621 1.11205a6.70181 6.70181 0 0 0 .15359.03011l-.61155.4217zm-.18136 6.3196h-1.13481c-.18968-.00806-.20246-.10413-.20646-.19786-.00472-.11147.06756-.20944.20646-.21536h.97722l.3089-1.12615s.05963-.13943.17947-.15096c.09582-.00926.1782.03119.21793.14708l.46674 1.57933.28591-.89854s.09248-.1638.23932-.13955c.08005.0205.08328.0242.1297.088l.33232.5008h.79573c.00096.00011.14768.01995.1917.12957.05096.12676-.02968.27677-.1917.28364h-.9066c-.09857-.00406-.12671-.0297-.17211-.09236l-.15532-.234-.35934 1.1295s-.06332.13453-.18149.14337c-.09444.00705-.1745-.03333-.21356-.1475l-.45205-1.52962-.15873.5787s-.0721.14635-.19923.15191zm2.22392-6.0194c.04014.97769.0101 1.95688-.15741 2.9234-.07635.44076-.24279 1.04897-.38855 1.47276l-.52451-.1705c.4453-1.17471.553-2.4526.53371-3.7033l.53676-.52237z" fill="#00aded" fill-rule="nonzero"/>
|
22 |
+
<path d="M350.08965 388.9102c.03129-.03568.0394-.0591.08606-.12695.26903-.39144 1.0659-1.44673 2.07848-2.25844.44062-.35324.91685-.67436 1.33812-.88486.70208-.35081.92816-.39358 1.25422-.46954.06193-.01442.2862-.05445.3234.03392.0359.0853-.10399.17519-.15647.21643-.05901.04637-1.40842 1.05545-2.54368 2.55402-.98784 1.30389-1.63428 3.0147-1.63428 3.0147-.01986.03799-.24452.43946-.54593.45902-.27857.0181-.63633-.34424-.63633-.34424-.06877-.06417-.40417-.4622-.68325-.95451-.35593-.6277-.66242-1.37176-.66242-1.37176s-.31816-.62588.28165-.9701c.59141-.33942.85484.00518.9832.20862.10969.17388.33069.59624.4375.80283.0372.07196.06126.11186.07973.09085z" fill="#1d58bf" fill-rule="nonzero"/>
|
23 |
+
<g transform="translate(128.5517 -88.00126) scale(1.24681)">
|
24 |
+
<circle cx="88.506" cy="368.331" r="25.699" fill="#00aded"/>
|
25 |
+
</g>
|
26 |
+
<g>
|
27 |
+
<path d="M251.8583 391.91583c-1.13193 2.18277-3.0103 3.8883-5.2925 4.80302-1.34914.49253-2.77016.76175-4.20647.7954-1.55257.11472-3.11126-.07801-4.58888-.56596-1.9671-.77399-3.65733-2.12312-4.8489-3.86995-1.17629-1.74683-2.12312-3.63898-2.81451-5.62902-.46501-.99272-.65927-2.08946-.56597-3.18162 1.2084-.14684 2.30974-.7694 3.05925-1.72847.44512-.9652.47266-2.07264.07648-3.05925-.09177-.30592-.18355-.59655-.29062-.87188-.22945-.67304-1.02485-1.94263-.47419-2.50859.55067-.56596 1.83555-.55066 2.34033-.7801 1.49597-.8933 3.0929-1.60764 4.75713-2.12618 1.5082-.20039 3.04242-.10249 4.51239.29062.20038.03366.39311.10555.56596.21415.19273.16061.33652.37323.413.61185.4283 1.04015.67303 2.18736 1.00955 3.2581a6.71716 6.71716 0 0 0 1.68259 2.98277c.69904.5935 1.48832 1.06768 2.34032 1.40725l2.0497.93307c.35946.14379.6868.3564.96366.62715.26157.37017.42065.80305.45889 1.2543.37935 2.4428-.02141 4.9422-1.14722 7.14334z" fill="#a0616a" fill-rule="nonzero"/>
|
28 |
+
<path d="M245.49506 377.61384c-3.33764 3.46613-8.63167 4.25388-12.83355 1.91203-.09178-.30592-.18356-.59655-.29063-.87189-.22944-.67303-1.02485-1.94262-.47418-2.50858.55066-.56596 1.83554-.55066 2.34032-.7801 1.49597-.8933 3.0929-1.60764 4.75713-2.12619 1.50821-.20038 3.04242-.10248 4.5124.29063.20037.03365.3931.10555.56595.21415.19274.16061.33652.37323.413.61185.4283 1.08603.67304 2.18736 1.00956 3.2581z" fill-opacity=".1" fill-rule="nonzero"/>
|
29 |
+
<circle cx="263.84" cy="289.36" r="6.94" fill="#a0616a" transform="matrix(1.52962 0 0 1.52962 -165.72867 -72.81407)"/>
|
30 |
+
<path d="M264.63677 390.3036c-11.84082 16.48476-36.14502 16.80904-49.00304 2.93382.1652-.8107.47418-1.59387.90554-2.30055.44818-.69904 1.2191-1.1304 2.0497-1.14722.44359 0 .94836.16826 1.26958-.15296.32122-.32123.21415-.58126.4436-.7954.22944-.21416.7801-.21416 1.2084-.18356.93307.03059 1.82025-.413 2.35562-1.17781.16367-.28451.36405-.54761.59655-.78011.4023-.1958.83824-.30899 1.28489-.33652 1.239-.27533 1.97321-1.52962 2.90628-2.30973.45736-.51549 1.17934-.71434 1.83555-.50478.1499.07801.27992.18662.3824.32122.25087.38547.42218.81682.50478 1.2696.55373 2.5407 1.96404 4.81372 3.99232 6.4397 1.57246 1.18853 3.4906 1.8325 5.46076 1.8325 3.51967 0 6.73188-2.05123 8.21408-5.24355.73881-1.84932 1.16405-3.80877 1.2543-5.79728v-.26004c1.25888-.31204 2.59424-.04894 3.6405.71893 1.01567.77705 2.10017 1.45926 3.2428 2.0344 1.36137.53537 3.05925.53537 3.99232 1.52962.3977.3977.67304.94837 1.17781 1.1931.31358.12238.64398.20039.97896.22945 1.73.46654 1.3063 2.48717 1.3063 2.48717z" fill="#f86d70" fill-rule="nonzero"/>
|
31 |
+
<path d="M230.52003 352.5739c-.7388.59807-1.36595 1.32312-1.85084 2.14147a10.5459 10.5459 0 0 1-3.7017 3.6405c-.63632.22333-1.21604.58279-1.69787 1.05544-.2371.35946-.38853.76634-.4436 1.1931a22.36596 22.36596 0 0 0-.47418 4.5124c-.0566.76328.06883 1.5281.36711 2.23325.30593.64244.88718 1.1931.99426 1.89674.02294.55678-.03977 1.11356-.18356 1.65199-.14684.57667.07954 1.18699.56596 1.52962.27686.0979.56443.1652.8566.19885 1.52962.33652 2.04969 2.14148 2.27913 3.62521.52007 0 .74952-.62714.87189-1.11662l1.52962-7.11275c.18356-.76482.45889-1.6673 1.239-1.92733a3.86232 3.86232 0 0 1 1.6214 0c2.11088.18355 3.88524-1.45314 5.95024-1.91203.66538-.12543 1.343-.16673 2.0191-.12237 1.6214 0 3.51814.74952 3.86995 2.26384 0 .24474.09178.55067.32122.67304.23403.06883.4849.06883.71893 0 1.02484-.10708 1.6367 1.05544 1.94262 2.0038l1.07073 3.47225c.16826.52007.4436 1.14722 1.00956 1.2084.53384-.00305.9866-.40382 1.05544-.93307.02294-.51854-.04895-1.03708-.21415-1.52962-.50478-2.26384.27533-4.58887.74952-6.86801.47418-2.27914.55066-4.8948-1.04015-6.65387-.58126-.62714-1.34607-1.10133-1.88144-1.77436-.53536-.67304-.7801-1.39196-1.30018-2.0191-2.07723-1.82179-4.66994-2.95524-7.41867-3.2428-3.0669-.27075-6.14603.39616-8.82594 1.91202z" fill="#3f3d56" fill-rule="nonzero"/>
|
32 |
+
<g opacity=".1">
|
33 |
+
<path d="M223.71365 367.62592c-.10707-.70363-.68833-1.2543-.99426-1.89673a3.90032 3.90032 0 0 1-.35181-1.37666v.7648c-.0566.76329.06883 1.5281.36711 2.23326.24474.52007.67303.97896.88718 1.52962.1086-.4084.1392-.83364.09178-1.25429zM251.04803 362.71583c-.60726 1.98086-.90247 4.04585-.87188 6.1185.19885-1.50516.48948-2.99654.87188-4.4665.25392-1.12275.34264-2.27762.26004-3.42637-.04895.59656-.1346 1.18852-.26004 1.77437z" fill-rule="nonzero"/>
|
34 |
+
</g>
|
35 |
+
</g>
|
36 |
+
<g>
|
37 |
+
<path d="M590.46 285.225c0-29.872-24.253-54.125-54.125-54.125h-327.2c-29.872 0-54.125 24.253-54.125 54.125s24.253 54.125 54.125 54.125h327.2c29.872 0 54.125-24.253 54.125-54.125z" fill="url(#_Linear2)" transform="matrix(.74209 0 0 .74209 -79.40377 49.16549)"/>
|
38 |
+
<path d="M357.86349 260.83463c0-21.17248-17.1897-38.36218-38.36218-38.36218H75.79256c-21.17248 0-38.36218 17.1897-38.36218 38.36218 0 21.17248 17.1897 38.36218 38.36218 38.36218h243.70875c21.17248 0 38.36218-17.1897 38.36218-38.36218z" fill="#fff"/>
|
39 |
+
<path d="M319.3808 241.58823c0-2.27186-1.84483-4.11652-4.1167-4.11652H124.01005c-2.27243 0-4.11671 1.84466-4.11671 4.11652v8.23348c0 2.27229 1.84428 4.11695 4.1167 4.11695H315.2641c2.27187 0 4.1167-1.84466 4.1167-4.11695v-8.23348z" fill="#3f3d56"/>
|
40 |
+
<path d="M319.3808 260.35615c0-1.51458-1.23007-2.74435-2.74447-2.74435H122.63781c-1.51495 0-2.74447 1.22977-2.74447 2.74435v5.48898c0 1.51486 1.22952 2.74463 2.74447 2.74463h193.99852c1.5144 0 2.74448-1.22977 2.74448-2.74463v-5.48898z" fill="#1d58bf"/>
|
41 |
+
<path d="M180.43573 275.38201c0-1.51458-1.2299-2.74435-2.74448-2.74435h-55.05373c-1.51476 0-2.74449 1.22977-2.74449 2.74435v5.48898c0 1.51487 1.22973 2.74464 2.74449 2.74464h55.05373c1.51459 0 2.74448-1.22977 2.74448-2.74464v-5.48898z" fill="#9795b1"/>
|
42 |
+
<g serif:id="text" fill-rule="nonzero">
|
43 |
+
<path d="M196.68207 281.35074c.59163 0 .87848-.11696 1.16533-.26893l-.30478-.94122c-.1972.09875-.41235.15267-.55577.15267-.26892 0-.38545-.17998-.38545-.55605v-1.86494h1.19221v-.96784h-1.19221v-1.5596l-1.16533.12536v1.43424h-.51991v.96784h.51991v2.02601c0 .98605.49302 1.45246 1.246 1.45246zM200.72464 276.833c-.51963 0-.9948.25072-1.32647.71713h-.00896v-.6457h-1.17429v4.37487h1.17429v-2.03511c0-.6457.39442-1.13871 1.12043-1.13871.06303 0 .18839 0 .30464.0091v-1.27317c-.0175-.0084-.05322-.0084-.08964-.0084zM203.979 276.90443v2.12476c0 .84248-.4573 1.27247-.96853 1.27247-.54695 0-.78855-.26892-.78855-1.07568v-2.32155h-1.16533v2.6353c0 1.3362.6632 1.811 1.60442 1.811.49302 0 .96854-.20659 1.29979-.60997h.0182v.53854h1.17443v-4.37487h-1.17442zM207.26839 281.35074c1.14781 0 1.70316-.58267 1.70316-1.36282 0-.85998-.55535-1.06658-1.50568-1.41603-.43069-.16108-.6632-.28713-.6632-.46641 0-.2332.24162-.33125.43-.33125.32285 0 .70802.14356 1.04907.4657l.56446-.86068c-.49303-.38517-.98605-.54625-1.59532-.54625-.8964 0-1.57781.51964-1.57781 1.3089 0 .84247.62748 1.18282 1.3446 1.42513.57356.17928.79766.27803.79766.48392 0 .215-.19679.35856-.53784.35856-.47481 0-.85158-.17017-1.21014-.51123l-.57356.81587c.48392.41249 1.07568.63659 1.7746.63659zM210.78257 281.35074c.59176 0 .8782-.11696 1.16532-.26893l-.30464-.94122c-.19748.09875-.41248.15267-.55605.15267-.26892 0-.38517-.17998-.38517-.55605v-1.86494h1.19194v-.96784h-1.19194v-1.5596l-1.16532.12536v1.43424h-.52034v.96784h.52034v2.02601c0 .98605.49302 1.45246 1.24586 1.45246z" fill="#1d58bf"/>
|
44 |
+
<path d="M214.8346 276.833c-.53785 0-.99516.1968-1.3271.57356h-.01751v-.50213h-1.17443v6.14947h1.17443v-2.26762h.0175c.30464.35786.73533.56446 1.29068.56446 1.21925 0 2.09745-.8964 2.09745-2.25012 0-1.3264-.8873-2.26762-2.06103-2.26762zm-.25142 3.46866c-.63659 0-1.13871-.47481-1.13871-1.19193 0-.69892.4664-1.22836 1.1387-1.22836.62749 0 1.12051.47552 1.12051 1.22836 0 .70802-.4573 1.19193-1.1205 1.19193zM220.24873 276.90443v2.12476c0 .84248-.4573 1.27247-.96854 1.27247-.54694 0-.78855-.26892-.78855-1.07568v-2.32155h-1.16533v2.6353c0 1.3362.6632 1.811 1.60442 1.811.49303 0 .96854-.20659 1.29979-.60997h.0182v.53854h1.17444v-4.37487h-1.17443zM222.176 274.68163h1.17428v6.59753H222.176zM225.55502 281.35074c1.14781 0 1.70316-.58267 1.70316-1.36282 0-.85998-.55535-1.06658-1.50568-1.41603-.42999-.16108-.6632-.28713-.6632-.46641 0-.2332.24161-.33125.43-.33125.32284 0 .70802.14356 1.04907.4657l.56446-.86068c-.49303-.38517-.98605-.54625-1.59532-.54625-.8964 0-1.57781.51964-1.57781 1.3089 0 .84247.62748 1.18282 1.3446 1.42513.57356.17928.79766.27803.79766.48392 0 .215-.19679.35856-.53784.35856-.47481 0-.85158-.17017-1.21015-.51123l-.57355.81587c.48391.41249 1.07568.63659 1.7746.63659zM231.7493 279.0467c0-1.28158-.86068-2.2137-2.14226-2.2137-1.24586 0-2.16958.92302-2.16958 2.24942 0 1.37191.96854 2.26832 2.25011 2.26832.8782 0 1.51479-.34946 1.89156-.82498l-.76195-.70801c-.2423.29553-.58266.50212-1.04907.49302-.56445 0-.97694-.32285-1.1205-.84248h3.07508c.02661-.07213.02661-.27803.02661-.4216zm-2.10655-1.18283c.51123 0 .82498.30463.94123.76194h-1.92727c.13446-.50213.51123-.76194.98604-.76194z" fill="#00aded"/>
|
45 |
+
</g>
|
46 |
+
<g serif:id="mark">
|
47 |
+
<path d="M190.76518 275.4251c-.38986-.10526-.77052-.24529-1.1363-.4248-.31035-.15228-.6097-.32576-.90303-.50839a4.28059 4.28059 0 0 1-.01708.01058c-.77208.4791-1.59296.8661-2.50488 1.03731-.32904.06177-.66185.10054-.99532.12898l-.01063.0009c-.08214 1.83573.04032 3.72786 1.01521 5.302.59423.95947 1.51362 1.67795 2.48731 2.27517l.0254.01547c.39845-.2435.7898-.50318 1.15398-.79322h.82667c-.58592.55146-1.2694 1.0136-1.96423 1.42616-.03256-.02228-.03286 0-.03286 0-.87643-.52039-1.7297-1.09562-2.39376-1.85939-.45109-.51878-.80827-1.11492-1.06569-1.76016-.64686-1.62151-.68784-3.42666-.57505-5.12153.71687-.04271 1.44492-.11159 2.13114-.33286.6768-.21823 1.30011-.58061 1.90217-.97149l.01762-.01147c.01171.00765.02342.01524.03519.02288.75935.4919 1.56971.92602 2.4621 1.11205a6.70181 6.70181 0 0 0 .15359.03011l-.61155.4217zm-.18137 6.3196H189.449c-.18968-.00806-.20246-.10413-.20646-.19786-.00472-.11147.06756-.20944.20646-.21536h.97722l.3089-1.12615s.05963-.13943.17947-.15096c.09582-.00926.1782.03119.21793.14708l.46674 1.57933.28591-.89854s.09248-.1638.23932-.13955c.08005.0205.08328.0242.1297.088l.33232.5008h.79573c.00096.00011.14768.01995.1917.12957.05096.12676-.02968.27677-.1917.28364h-.9066c-.09857-.00406-.12671-.0297-.17211-.09236l-.15532-.234-.35934 1.1295s-.06332.13453-.18149.14337c-.09444.00705-.1745-.03333-.21356-.1475l-.45205-1.52962-.15873.5787s-.0721.14635-.19923.15191zm2.22392-6.0194c.04014.97769.0101 1.95688-.15741 2.9234-.07635.44076-.24279 1.04897-.38855 1.47276l-.52451-.1705c.4453-1.17471.553-2.4526.53371-3.7033l.53676-.52237z" fill="#00aded" fill-rule="nonzero"/>
|
48 |
+
<path d="M188.51862 278.2408c.03129-.03568.0394-.0591.08606-.12695.26903-.39144 1.0659-1.44673 2.07848-2.25844.44062-.35324.91685-.67436 1.33812-.88486.70208-.35081.92816-.39358 1.25422-.46954.06193-.01442.2862-.05445.3234.03392.0359.0853-.10399.17519-.15647.21643-.05901.04637-1.40842 1.05545-2.54368 2.55402-.98784 1.30389-1.63428 3.0147-1.63428 3.0147-.01986.03799-.24452.43946-.54593.45902-.27857.0181-.63633-.34424-.63633-.34424-.06877-.06417-.40417-.4622-.68325-.95451-.35593-.6277-.66242-1.37176-.66242-1.37176s-.31816-.62588.28165-.9701c.59141-.33942.85484.00518.9832.20862.10969.17388.33069.59624.4375.80283.0372.07196.06126.11186.07973.09085z" fill="#1d58bf" fill-rule="nonzero"/>
|
49 |
+
</g>
|
50 |
+
<circle cx="88.506" cy="368.331" r="25.699" fill="#1d58bf" transform="translate(-33.01933 -198.67066) scale(1.24681)"/>
|
51 |
+
<g>
|
52 |
+
<path d="M90.30982 281.9644c-1.13192 2.18278-3.0103 3.88831-5.2925 4.80303-1.34913.49254-2.77015.76175-4.20647.7954-1.55256.11472-3.11125-.078-4.58887-.56596-1.9671-.77399-3.65733-2.12312-4.8489-3.86995-1.17629-1.74683-2.12313-3.63897-2.81452-5.62902-.465-.99272-.65926-2.08946-.56596-3.18161 1.2084-.14685 2.30974-.7694 3.05925-1.72848.44512-.9652.47266-2.07264.07648-3.05925-.09177-.30592-.18355-.59655-.29063-.87188-.22944-.67304-1.02484-1.94263-.47418-2.50859.55067-.56596 1.83555-.55066 2.34033-.7801 1.49597-.8933 3.0929-1.60764 4.75713-2.12618 1.5082-.20038 3.04242-.10249 4.51239.29063.20038.03365.39311.10554.56596.21414.19273.16061.33652.37323.413.61185.4283 1.04015.67303 2.18736 1.00955 3.2581a6.71716 6.71716 0 0 0 1.68259 2.98277c.69904.5935 1.48832 1.06768 2.34032 1.40725l2.0497.93307c.35946.14379.6868.3564.96366.62715.26157.37017.42065.80305.45889 1.2543.37935 2.4428-.02142 4.9422-1.14722 7.14334z" fill="#cc959f" fill-rule="nonzero"/>
|
53 |
+
<path d="M83.94658 267.66242c-3.33764 3.46613-8.63167 4.25389-12.83354 1.91203-.09178-.30592-.18356-.59655-.29063-.87188-.22945-.67304-1.02485-1.94263-.47419-2.50859.55067-.56596 1.83555-.55066 2.34033-.7801 1.49597-.8933 3.0929-1.60764 4.75713-2.12618 1.50821-.20039 3.04242-.10249 4.5124.29062.20037.03366.3931.10555.56595.21415.19274.16061.33652.37323.413.61185.4283 1.08603.67304 2.18736 1.00955 3.2581z" fill-opacity=".1" fill-rule="nonzero"/>
|
54 |
+
<circle cx="263.84" cy="289.36" r="6.94" fill="#d7a5ad" transform="matrix(1.52962 0 0 1.52962 -327.27714 -182.76549)"/>
|
55 |
+
<path d="M103.0883 280.35218c-11.84082 16.48476-36.14502 16.80904-49.00304 2.93382.1652-.8107.47418-1.59387.90554-2.30055.44818-.69904 1.2191-1.1304 2.0497-1.14722.44359 0 .94836.16826 1.26958-.15296.32122-.32122.21415-.58126.4436-.7954.22944-.21416.7801-.21416 1.2084-.18356.93307.03059 1.82025-.413 2.35562-1.17781.16367-.28451.36405-.5476.59655-.78011.4023-.1958.83824-.30899 1.28489-.33652 1.239-.27533 1.97321-1.52962 2.90628-2.30973.45736-.51548 1.17934-.71434 1.83555-.50478.1499.07801.27992.18662.3824.32122.25087.38547.42218.81682.50478 1.2696.55373 2.5407 7.78426 7.73836 9.81254 9.36435 1.57246 1.18852 9.01867-10.14447 9.10891-12.13298v-.26003c1.25888-.31205 2.59425-.04895 3.64051.71892 1.01567.77705 2.10017 1.45926 3.2428 2.0344 1.36137.53537 3.05925.53537 3.99232 1.52962.3977.3977.67304.94837 1.17781 1.19311.31358.12237.64397.20038.97896.22944 1.73.46654 1.3063 2.48717 1.3063 2.48717z" fill="#fff" fill-rule="nonzero"/>
|
56 |
+
<path d="M68.97156 242.62247c-.7388.59809-1.19157 1.4562-1.85084 2.14148-1.14416 1.19004-3.4753 6.8726-3.57167 8.3808-.29981 4.70207 1.2344 10.37545 2.74567 9.9961l1.78966-5.06917c.18356-.76482.45889-1.6673 1.239-1.92733a3.86232 3.86232 0 0 1 1.6214 0c2.11088.18356 4.01985.05966 6.10779-1.16251.66538-.12543 3.7537-3.6344 4.42826-3.59156 1.6214 0 .95143 3.46919 1.30324 4.98351 0 .24474.09178.55067.32122.67304.23403.06883.4849.06883.71892 0 1.02485-.10708 1.6367 1.05544 1.94263 2.0038l1.07073 3.47225c.16826.52008 1.6933-.76022 1.85085-1.25429.72351-2.26231 1.17016-4.58734.74952-6.86801-.42218-2.28985.55066-4.8948-1.04015-6.65387-.58126-.62714-1.34607-1.10133-1.88144-1.77436-.53537-.67304-.7801-1.39196-1.30018-2.0191-2.07723-1.82179-4.66994-2.95524-7.41868-3.2428-3.0669-.27075-6.14603.39616-8.82593 1.91202z" fill="#e4d2aa" fill-rule="nonzero"/>
|
57 |
+
</g>
|
58 |
+
</g>
|
59 |
+
<g>
|
60 |
+
<path d="M590.46 285.225c0-29.872-24.253-54.125-54.125-54.125h-327.2c-29.872 0-54.125 24.253-54.125 54.125s24.253 54.125 54.125 54.125h327.2c29.872 0 54.125-24.253 54.125-54.125z" fill="url(#_Linear3)" transform="matrix(.74209 0 0 .74209 82.16726 -61.16541)"/>
|
61 |
+
<path d="M519.43452 150.50373c0-21.17248-17.1897-38.36218-38.36218-38.36218H237.36359c-21.17248 0-38.36218 17.1897-38.36218 38.36218 0 21.17248 17.1897 38.36218 38.36218 38.36218h243.70875c21.17248 0 38.36218-17.1897 38.36218-38.36218z" fill="#fff"/>
|
62 |
+
<path d="M480.95184 131.25733c0-2.27186-1.84484-4.11652-4.11671-4.11652H285.58108c-2.27243 0-4.11671 1.84466-4.11671 4.11652v8.23348c0 2.27229 1.84428 4.11695 4.1167 4.11695h191.25406c2.27187 0 4.1167-1.84466 4.1167-4.11695v-8.23348z" fill="#3f3d56"/>
|
63 |
+
<path d="M480.95184 150.02525c0-1.51458-1.23008-2.74435-2.74448-2.74435H284.20884c-1.51495 0-2.74447 1.22977-2.74447 2.74435v5.48898c0 1.51486 1.22952 2.74463 2.74447 2.74463h193.99852c1.5144 0 2.74448-1.22977 2.74448-2.74463v-5.48898z" fill="#16bd83"/>
|
64 |
+
<path d="M342.00676 165.05111c0-1.51458-1.2299-2.74435-2.74448-2.74435h-55.05373c-1.51476 0-2.74449 1.22977-2.74449 2.74435v5.48898c0 1.51487 1.22973 2.74464 2.74449 2.74464h55.05373c1.51459 0 2.74448-1.22977 2.74448-2.74464v-5.48898z" fill="#9795b1"/>
|
65 |
+
<g serif:id="text" fill-rule="nonzero">
|
66 |
+
<path d="M358.2531 171.01984c.59163 0 .87848-.11696 1.16533-.26893l-.30478-.94122c-.1972.09875-.41235.15267-.55577.15267-.26892 0-.38545-.17998-.38545-.55605v-1.86494h1.19221v-.96784h-1.19221v-1.5596l-1.16533.12536v1.43424h-.51991v.96784h.51991v2.02601c0 .98605.49302 1.45246 1.246 1.45246zM362.29567 166.5021c-.51963 0-.9948.25072-1.32647.71713h-.00896v-.6457h-1.17429v4.37487h1.17429v-2.03511c0-.6457.39442-1.13871 1.12043-1.13871.06303 0 .18839 0 .30464.0091v-1.27317c-.0175-.0084-.05322-.0084-.08964-.0084zM365.55004 166.57353v2.12476c0 .84248-.45731 1.27247-.96854 1.27247-.54695 0-.78855-.26892-.78855-1.07568v-2.32155h-1.16533v2.6353c0 1.3362.6632 1.811 1.60442 1.811.49302 0 .96854-.20659 1.29979-.60997h.0182v.53854h1.17443v-4.37487h-1.17442zM368.83942 171.01984c1.14781 0 1.70316-.58267 1.70316-1.36282 0-.85998-.55535-1.06658-1.50568-1.41603-.43069-.16108-.6632-.28713-.6632-.46641 0-.2332.24162-.33125.43-.33125.32285 0 .70802.14356 1.04907.4657l.56446-.86068c-.49303-.38517-.98605-.54625-1.59532-.54625-.8964 0-1.57781.51964-1.57781 1.3089 0 .84247.62748 1.18282 1.3446 1.42513.57356.17928.79766.27803.79766.48392 0 .215-.19679.35856-.53784.35856-.47481 0-.85158-.17017-1.21014-.51123l-.57356.81587c.48392.41249 1.07568.63659 1.7746.63659zM372.3536 171.01984c.59176 0 .8782-.11696 1.16532-.26893l-.30464-.94122c-.19748.09875-.41248.15267-.55605.15267-.26892 0-.38517-.17998-.38517-.55605v-1.86494h1.19194v-.96784h-1.19194v-1.5596l-1.16532.12536v1.43424h-.52034v.96784h.52034v2.02601c0 .98605.49302 1.45246 1.24586 1.45246z" fill="#1d58bf"/>
|
67 |
+
<path d="M376.40562 166.5021c-.53784 0-.99515.1968-1.3271.57356h-.0175v-.50213h-1.17443v6.14947h1.17443v-2.26762h.0175c.30464.35786.73533.56446 1.29068.56446 1.21925 0 2.09745-.8964 2.09745-2.25012 0-1.3264-.8873-2.26762-2.06103-2.26762zm-.25141 3.46866c-.63659 0-1.13871-.47481-1.13871-1.19193 0-.69892.4664-1.22836 1.1387-1.22836.62749 0 1.12051.47552 1.12051 1.22836 0 .70802-.4573 1.19193-1.1205 1.19193zM381.81976 166.57353v2.12476c0 .84248-.4573 1.27247-.96854 1.27247-.54694 0-.78855-.26892-.78855-1.07568v-2.32155h-1.16533v2.6353c0 1.3362.6632 1.811 1.60442 1.811.49303 0 .96854-.20659 1.29979-.60997h.0182v.53854h1.17444v-4.37487h-1.17443zM383.74702 164.35073h1.1743v6.59753h-1.1743zM387.12605 171.01984c1.14781 0 1.70316-.58267 1.70316-1.36282 0-.85998-.55535-1.06658-1.50568-1.41603-.42999-.16108-.6632-.28713-.6632-.46641 0-.2332.24161-.33125.43-.33125.32284 0 .70802.14356 1.04907.4657l.56446-.86068c-.49303-.38517-.98605-.54625-1.59532-.54625-.8964 0-1.57781.51964-1.57781 1.3089 0 .84247.62748 1.18282 1.3446 1.42513.57356.17928.79766.27803.79766.48392 0 .215-.19679.35856-.53784.35856-.47481 0-.85158-.17017-1.21015-.51123l-.57355.81587c.48391.41249 1.07568.63659 1.7746.63659zM393.32033 168.7158c0-1.28158-.86068-2.2137-2.14226-2.2137-1.24586 0-2.16958.92302-2.16958 2.24942 0 1.37191.96854 2.26832 2.25011 2.26832.8782 0 1.51479-.34946 1.89156-.82498l-.76195-.70801c-.2423.29553-.58266.50212-1.04907.49302-.56445 0-.97694-.32285-1.1205-.84248h3.07508c.02661-.07213.02661-.27803.02661-.4216zm-2.10655-1.18283c.51123 0 .82498.30463.94123.76194h-1.92727c.13446-.50213.51123-.76194.98604-.76194z" fill="#00aded"/>
|
68 |
+
</g>
|
69 |
+
<g serif:id="mark">
|
70 |
+
<path d="M352.3362 165.0942c-.38985-.10526-.77051-.24529-1.1363-.4248-.31034-.15228-.6097-.32576-.90302-.50839a4.28059 4.28059 0 0 1-.01708.01058c-.77208.4791-1.59296.8661-2.50488 1.03731-.32904.06177-.66185.10054-.99532.12898l-.01063.0009c-.08214 1.83573.04032 3.72786 1.01521 5.302.59423.95947 1.51362 1.67795 2.48731 2.27517l.0254.01547c.39845-.2435.7898-.50318 1.15398-.79322h.82667c-.58592.55146-1.2694 1.0136-1.96423 1.42616-.03256-.02228-.03286 0-.03286 0-.87643-.52039-1.7297-1.09562-2.39376-1.85939-.45109-.51878-.80827-1.11492-1.06569-1.76016-.64686-1.62151-.68784-3.42666-.57505-5.12153.71687-.04271 1.44492-.11159 2.13114-.33286.6768-.21823 1.30011-.58061 1.90217-.97149l.01762-.01147c.01171.00765.02342.01524.03519.02288.75935.4919 1.56971.92602 2.4621 1.11205a6.70181 6.70181 0 0 0 .15359.03011l-.61155.4217zm-.18136 6.3196h-1.13481c-.18968-.00806-.20246-.10413-.20646-.19786-.00472-.11147.06756-.20944.20646-.21536h.97722l.3089-1.12615s.05963-.13943.17947-.15096c.09582-.00926.1782.03119.21793.14708l.46674 1.57933.28591-.89854s.09248-.1638.23932-.13955c.08005.0205.08328.0242.1297.088l.33232.5008h.79573c.00096.00011.14768.01995.1917.12957.05096.12676-.02968.27677-.1917.28364h-.9066c-.09857-.00406-.12671-.0297-.17211-.09236l-.15532-.234-.35934 1.1295s-.06332.13453-.18149.14337c-.09444.00705-.1745-.03333-.21356-.1475l-.45205-1.52962-.15873.5787s-.0721.14635-.19923.15191zm2.22392-6.0194c.04014.97769.0101 1.95688-.15741 2.9234-.07635.44076-.24279 1.04897-.38855 1.47276l-.52451-.1705c.4453-1.17471.553-2.4526.53371-3.7033l.53676-.52237z" fill="#00aded" fill-rule="nonzero"/>
|
71 |
+
<path d="M350.08965 167.9099c.03129-.03568.0394-.0591.08606-.12695.26903-.39144 1.0659-1.44673 2.07848-2.25844.44062-.35324.91685-.67436 1.33812-.88486.70208-.35081.92816-.39358 1.25422-.46954.06193-.01442.2862-.05445.3234.03392.0359.0853-.10399.17519-.15647.21643-.05901.04637-1.40842 1.05545-2.54368 2.55402-.98784 1.30389-1.63428 3.0147-1.63428 3.0147-.01986.03799-.24452.43946-.54593.45902-.27857.0181-.63633-.34424-.63633-.34424-.06877-.06417-.40417-.4622-.68325-.95451-.35593-.6277-.66242-1.37176-.66242-1.37176s-.31816-.62588.28165-.9701c.59141-.33942.85484.00518.9832.20862.10969.17388.33069.59624.4375.80283.0372.07196.06126.11186.07973.09085z" fill="#1d58bf" fill-rule="nonzero"/>
|
72 |
+
</g>
|
73 |
+
<g>
|
74 |
+
<circle cx="88.506" cy="368.331" r="25.699" fill="#16bd83" transform="matrix(1.24515 0 0 1.24515 128.79025 -308.60286)"/>
|
75 |
+
<g transform="matrix(.06627 0 0 .06536 219.03341 123.08496)">
|
76 |
+
<clipPath id="a">
|
77 |
+
<ellipse cx="301.161" cy="412.162" rx="482.83" ry="489.567"/>
|
78 |
+
</clipPath>
|
79 |
+
<g clip-path="url(#a)">
|
80 |
+
<path d="M204.8661 153.28986c56.75005-49.87448 141.04683-49.80035 197.71882.17006C516.35825 253.78882 687.788 404.96022 687.788 404.96022l-768.05126-1.10318S91.0711 253.29174 204.8661 153.28986z" fill="#caeafd"/>
|
81 |
+
<path d="M188.84657 730.71631c28.67426 34.82609 71.12188 54.94595 115.86795 54.91574 44.74173-.03625 87.16333-20.21049 115.78989-55.08491 112.74986-137.3407 267.28817-325.58526 267.28817-325.58526l-768.0556-1.10568S75.46356 593.00705 188.84658 730.7163z" fill="#b2e2fc"/>
|
82 |
+
<path d="M400.72664 653.43536l276.23198 247.19779c9.5224 8.55156 12.75423 22.0308 8.1293 33.91464-4.62491 11.88385-16.14612 19.7235-28.99552 19.7235H-48.07247c-12.90565 0-24.4831-7.87396-29.12532-19.80927-4.64223-11.9396-1.39743-25.47887 8.16824-34.06475l281.47126-247.18492 188.28493.22301z" fill="#eff9ff"/>
|
83 |
+
<path d="M212.44437 653.43536l-288.78911-243.8269-2.94202 515.45712c.61328 6.08131 5.11207 14.26834 7.90399 18.52697l283.82714-290.15719z" fill="#caeafd"/>
|
84 |
+
<path d="M212.4412 653.43536L-80.26343 403.85737l1.02498 521.20821 291.67967-271.63022z" fill="#f8fcff"/>
|
85 |
+
<path d="M399.64663 653.43536l288.14581-248.4758-.61756 522.13885c-.61328 6.0813-2.40593 9.1434-5.19784 13.40203L399.64663 653.43536z" fill="#caeafd"/>
|
86 |
+
<path d="M399.64663 653.43536l288.14581-248.4758-.83628 522.13885-287.30953-273.66305z" fill="#f8fcff"/>
|
87 |
+
</g>
|
88 |
+
</g>
|
89 |
+
</g>
|
90 |
+
</g>
|
91 |
+
<g>
|
92 |
+
<path d="M590.46 285.225c0-29.872-24.253-54.125-54.125-54.125h-327.2c-29.872 0-54.125 24.253-54.125 54.125s24.253 54.125 54.125 54.125h327.2c29.872 0 54.125-24.253 54.125-54.125z" fill="url(#_Linear5)" transform="matrix(.74209 0 0 .74209 -79.40377 -171.49611)"/>
|
93 |
+
<path d="M357.86349 40.17303c0-21.17248-17.1897-38.36218-38.36218-38.36218H75.79256c-21.17248 0-38.36218 17.1897-38.36218 38.36218 0 21.17248 17.1897 38.36218 38.36218 38.36218h243.70875c21.17248 0 38.36218-17.1897 38.36218-38.36218z" fill="#fff"/>
|
94 |
+
<path d="M319.3808 20.92663c0-2.27186-1.84483-4.11652-4.1167-4.11652H124.01005c-2.27243 0-4.11671 1.84466-4.11671 4.11652v8.23348c0 2.27229 1.84428 4.11695 4.1167 4.11695H315.2641c2.27187 0 4.1167-1.84466 4.1167-4.11695v-8.23348z" fill="#3f3d56"/>
|
95 |
+
<path d="M319.3808 39.69455c0-1.51458-1.23007-2.74435-2.74447-2.74435H122.63781c-1.51495 0-2.74447 1.22977-2.74447 2.74435v5.48898c0 1.51486 1.22952 2.74463 2.74447 2.74463h193.99852c1.5144 0 2.74448-1.22977 2.74448-2.74463v-5.48898z" fill="#6c63ff"/>
|
96 |
+
<path d="M180.43573 54.72041c0-1.51458-1.2299-2.74435-2.74448-2.74435h-55.05373c-1.51476 0-2.74449 1.22977-2.74449 2.74435v5.48898c0 1.51487 1.22973 2.74464 2.74449 2.74464h55.05373c1.51459 0 2.74448-1.22977 2.74448-2.74464v-5.48898z" fill="#9795b1"/>
|
97 |
+
<g serif:id="text" fill-rule="nonzero">
|
98 |
+
<path d="M196.68207 60.68914c.59163 0 .87848-.11696 1.16533-.26893l-.30478-.94122c-.1972.09875-.41235.15267-.55577.15267-.26892 0-.38545-.17998-.38545-.55605v-1.86494h1.19221v-.96784h-1.19221v-1.5596l-1.16533.12536v1.43424h-.51991v.96784h.51991v2.02601c0 .98605.49302 1.45246 1.246 1.45246zM200.72464 56.1714c-.51963 0-.9948.25072-1.32647.71713h-.00896v-.6457h-1.17429v4.37487h1.17429V58.5826c0-.6457.39442-1.13871 1.12043-1.13871.06303 0 .18839 0 .30464.0091v-1.27317c-.0175-.0084-.05322-.0084-.08964-.0084zM203.979 56.24283v2.12476c0 .84248-.4573 1.27247-.96853 1.27247-.54695 0-.78855-.26892-.78855-1.07568v-2.32155h-1.16533v2.6353c0 1.3362.6632 1.811 1.60442 1.811.49302 0 .96854-.20659 1.29979-.60997h.0182v.53854h1.17443v-4.37487h-1.17442zM207.26839 60.68914c1.14781 0 1.70316-.58267 1.70316-1.36282 0-.85998-.55535-1.06658-1.50568-1.41603-.43069-.16108-.6632-.28713-.6632-.46641 0-.2332.24162-.33125.43-.33125.32285 0 .70802.14356 1.04907.4657l.56446-.86068c-.49303-.38517-.98605-.54625-1.59532-.54625-.8964 0-1.57781.51964-1.57781 1.3089 0 .84247.62748 1.18282 1.3446 1.42513.57356.17928.79766.27803.79766.48392 0 .215-.19679.35856-.53784.35856-.47481 0-.85158-.17017-1.21014-.51123l-.57356.81587c.48392.41249 1.07568.63659 1.7746.63659zM210.78257 60.68914c.59176 0 .8782-.11696 1.16532-.26893l-.30464-.94122c-.19748.09875-.41248.15267-.55605.15267-.26892 0-.38517-.17998-.38517-.55605v-1.86494h1.19194v-.96784h-1.19194v-1.5596l-1.16532.12536v1.43424h-.52034v.96784h.52034v2.02601c0 .98605.49302 1.45246 1.24586 1.45246z" fill="#1d58bf"/>
|
99 |
+
<path d="M214.8346 56.1714c-.53785 0-.99516.1968-1.3271.57356h-.01751v-.50213h-1.17443v6.14947h1.17443v-2.26762h.0175c.30464.35786.73533.56446 1.29068.56446 1.21925 0 2.09745-.8964 2.09745-2.25012 0-1.3264-.8873-2.26762-2.06103-2.26762zm-.25142 3.46866c-.63659 0-1.13871-.47481-1.13871-1.19193 0-.69892.4664-1.22836 1.1387-1.22836.62749 0 1.12051.47552 1.12051 1.22836 0 .70802-.4573 1.19193-1.1205 1.19193zM220.24873 56.24283v2.12476c0 .84248-.4573 1.27247-.96854 1.27247-.54694 0-.78855-.26892-.78855-1.07568v-2.32155h-1.16533v2.6353c0 1.3362.6632 1.811 1.60442 1.811.49303 0 .96854-.20659 1.29979-.60997h.0182v.53854h1.17444v-4.37487h-1.17443zM222.176 54.02003h1.17428v6.59753H222.176zM225.55502 60.68914c1.14781 0 1.70316-.58267 1.70316-1.36282 0-.85998-.55535-1.06658-1.50568-1.41603-.42999-.16108-.6632-.28713-.6632-.46641 0-.2332.24161-.33125.43-.33125.32284 0 .70802.14356 1.04907.4657l.56446-.86068c-.49303-.38517-.98605-.54625-1.59532-.54625-.8964 0-1.57781.51964-1.57781 1.3089 0 .84247.62748 1.18282 1.3446 1.42513.57356.17928.79766.27803.79766.48392 0 .215-.19679.35856-.53784.35856-.47481 0-.85158-.17017-1.21015-.51123l-.57355.81587c.48391.41249 1.07568.63659 1.7746.63659zM231.7493 58.3851c0-1.28158-.86068-2.2137-2.14226-2.2137-1.24586 0-2.16958.92302-2.16958 2.24942 0 1.37191.96854 2.26832 2.25011 2.26832.8782 0 1.51479-.34946 1.89156-.82498l-.76195-.70801c-.2423.29553-.58266.50212-1.04907.49302-.56445 0-.97694-.32285-1.1205-.84248h3.07508c.02661-.07213.02661-.27803.02661-.4216zm-2.10655-1.18283c.51123 0 .82498.30463.94123.76194h-1.92727c.13446-.50213.51123-.76194.98604-.76194z" fill="#00aded"/>
|
100 |
+
</g>
|
101 |
+
<g serif:id="mark">
|
102 |
+
<path d="M190.76518 54.7635c-.38986-.10526-.77052-.24529-1.1363-.4248-.31035-.15228-.6097-.32576-.90303-.50839a4.28059 4.28059 0 0 1-.01708.01058c-.77208.4791-1.59296.8661-2.50488 1.03731-.32904.06177-.66185.10054-.99532.12898l-.01063.0009c-.08214 1.83573.04032 3.72786 1.01521 5.302.59423.95947 1.51362 1.67795 2.48731 2.27517l.0254.01547c.39845-.2435.7898-.50318 1.15398-.79322h.82667c-.58592.55146-1.2694 1.0136-1.96423 1.42616-.03256-.02228-.03286 0-.03286 0-.87643-.52039-1.7297-1.09562-2.39376-1.85939-.45109-.51878-.80827-1.11492-1.06569-1.76016-.64686-1.62151-.68784-3.42666-.57505-5.12153.71687-.04271 1.44492-.11159 2.13114-.33286.6768-.21823 1.30011-.58061 1.90217-.97149l.01762-.01147c.01171.00765.02342.01524.03519.02288.75935.4919 1.56971.92602 2.4621 1.11205a6.70181 6.70181 0 0 0 .15359.03011l-.61155.4217zm-.18137 6.3196H189.449c-.18968-.00806-.20246-.10413-.20646-.19786-.00472-.11147.06756-.20944.20646-.21536h.97722l.3089-1.12615s.05963-.13943.17947-.15096c.09582-.00926.1782.03119.21793.14708l.46674 1.57933.28591-.89854s.09248-.1638.23932-.13955c.08005.0205.08328.0242.1297.088l.33232.5008h.79573c.00096.00011.14768.01995.1917.12957.05096.12676-.02968.27677-.1917.28364h-.9066c-.09857-.00406-.12671-.0297-.17211-.09236l-.15532-.234-.35934 1.1295s-.06332.13453-.18149.14337c-.09444.00705-.1745-.03333-.21356-.1475l-.45205-1.52962-.15873.5787s-.0721.14635-.19923.15191zm2.22392-6.0194c.04014.97769.0101 1.95688-.15741 2.9234-.07635.44076-.24279 1.04897-.38855 1.47276l-.52451-.1705c.4453-1.17471.553-2.4526.53371-3.7033l.53676-.52237z" fill="#00aded" fill-rule="nonzero"/>
|
103 |
+
<path d="M188.51862 57.5792c.03129-.03568.0394-.0591.08606-.12695.26903-.39144 1.0659-1.44673 2.07848-2.25844.44062-.35324.91685-.67436 1.33812-.88486.70208-.35081.92816-.39358 1.25422-.46954.06193-.01442.2862-.05445.3234.03392.0359.0853-.10399.17519-.15647.21643-.05901.04637-1.40842 1.05545-2.54368 2.55402-.98784 1.30389-1.63428 3.0147-1.63428 3.0147-.01986.03799-.24452.43946-.54593.45902-.27857.0181-.63633-.34424-.63633-.34424-.06877-.06417-.40417-.4622-.68325-.95451-.35593-.6277-.66242-1.37176-.66242-1.37176s-.31816-.62588.28165-.9701c.59141-.33942.85484.00518.9832.20862.10969.17388.33069.59624.4375.80283.0372.07196.06126.11186.07973.09085z" fill="#1d58bf" fill-rule="nonzero"/>
|
104 |
+
</g>
|
105 |
+
<circle cx="88.506" cy="368.331" r="25.699" fill="#d1ceff" transform="translate(-33.01933 -419.33226) scale(1.24681)"/>
|
106 |
+
<g>
|
107 |
+
<path d="M72.70322 31.51997c-1.28829-2.16884-1.71512-4.9399-.9589-7.68535 1.39848-5.07718 6.31646-8.1573 10.97559-6.87397 4.65912 1.28332 7.30633 6.44723 5.90785 11.5244-.75622 2.74546-2.54174 4.90713-4.75886 6.11044 1.49218-1.30606 2.69146-3.18496 3.3083-5.42441 1.39844-5.07701-.7234-10.0962-4.73527-11.20125-4.01187-1.10504-8.4043 2.11984-9.80272 7.19685-.61685 2.23945-.54878 4.46744.064 6.3533z" fill="#4a41df"/>
|
108 |
+
<path d="M67.54961 23.68095l-2.53994-.31091-6.84307 32.05362 1.20437 2.33145 8.17864-34.07416z" fill="#342ada" fill-rule="nonzero"/>
|
109 |
+
<path d="M66.75708 23.13525l-7.36405 34.43968 26.80336 5.51828 7.2562-33.5586-26.69551-6.39936z" fill="#6c63ff" fill-rule="nonzero"/>
|
110 |
+
<path d="M67.8951 48.228l2.56138-1.89506c.5772.91782 1.27595 1.6768 2.09644 2.27698.82034.59993 1.65499 1.00499 2.50418 1.21502.83984.20772 1.56524.18375 2.17584-.07219.6108-.25589.99733-.71233 1.15991-1.36968.0926-.37435.10477-.71773.03673-1.03012-.06808-.31219-.23693-.6181-.50702-.91741-.2699-.29928-.58302-.5801-.9395-.8427-.35647-.26261-.83858-.57552-1.44626-.9389-.48891-.29537-.89627-.54865-1.22181-.76-.32555-.21135-.69053-.46883-1.09499-.77224-.40466-.30346-.73194-.5855-.98247-.8461-.25034-.26054-.49876-.56896-.74481-.92538-.24606-.35641-.42252-.71008-.52958-1.06105-.10687-.35093-.16607-.74835-.17745-1.19202-.01143-.44348.04273-.90731.1624-1.39112.35454-1.4335 1.11367-2.51478 2.27749-3.24423 1.16381-.72945 2.58532-.96402 4.26491-.70362l.8739-3.5333 2.53355.62663-.90776 3.67022c.82439.38805 1.61423.87648 2.36953 1.4653.7555.58885 1.3814 1.21117 1.87813 1.86686l-2.49301 1.91197c-.6086-.7123-1.27213-1.30031-1.99062-1.76386-.7185-.46355-1.41559-.77878-2.09124-.9459-.82173-.20323-1.51227-.19235-2.0716.03266-.5595.22477-.91604.6477-1.06962 1.26863-.149.60242-.00324 1.1496.43693 1.64124.4404.4915 1.20655 1.07576 2.29862 1.75282.42956.26126.79095.48395 1.0846.66798.29365.18403.61867.39752.975.64067.35652.24319.64851.46319.87597.65999.2275.1966.46861.42593.72363.68762.255.2617.4553.50986.6007.74424.14536.23457.28301.50113.41257.7996.12951.29865.21188.60238.24687.91135.03498.30896.04162.6448.0197 1.0075-.02195.36287-.08255.74492-.18193 1.14673-.36582 1.47908-1.13688 2.57932-2.31317 3.30072-1.17634.7216-2.61107.97956-4.304.77393l-.82982 3.3551-2.53356-.62663.83324-3.36892c-2.09856-.83857-3.75578-2.24653-4.972-4.22333z" fill="#fff" fill-rule="nonzero"/>
|
111 |
+
</g>
|
112 |
+
</g>
|
113 |
+
<defs>
|
114 |
+
<linearGradient id="_Linear1" x2="1" gradientUnits="userSpaceOnUse" gradientTransform="rotate(-90 356.05 -16.69) scale(108.26)">
|
115 |
+
<stop offset="0" stop-color="gray" stop-opacity=".24706"/>
|
116 |
+
<stop offset=".54" stop-color="gray" stop-opacity=".11765"/>
|
117 |
+
<stop offset="1" stop-color="gray" stop-opacity=".09804"/>
|
118 |
+
</linearGradient>
|
119 |
+
<linearGradient id="_Linear2" x2="1" gradientUnits="userSpaceOnUse" gradientTransform="rotate(-90 356.05 -16.69) scale(108.26)">
|
120 |
+
<stop offset="0" stop-color="gray" stop-opacity=".24706"/>
|
121 |
+
<stop offset=".54" stop-color="gray" stop-opacity=".11765"/>
|
122 |
+
<stop offset="1" stop-color="gray" stop-opacity=".09804"/>
|
123 |
+
</linearGradient>
|
124 |
+
<linearGradient id="_Linear3" x2="1" gradientUnits="userSpaceOnUse" gradientTransform="rotate(-90 356.05 -16.69) scale(108.26)">
|
125 |
+
<stop offset="0" stop-color="gray" stop-opacity=".24706"/>
|
126 |
+
<stop offset=".54" stop-color="gray" stop-opacity=".11765"/>
|
127 |
+
<stop offset="1" stop-color="gray" stop-opacity=".09804"/>
|
128 |
+
</linearGradient>
|
129 |
+
<linearGradient id="_Linear5" x2="1" gradientUnits="userSpaceOnUse" gradientTransform="rotate(-90 356.05 -16.69) scale(108.26)">
|
130 |
+
<stop offset="0" stop-color="gray" stop-opacity=".24706"/>
|
131 |
+
<stop offset=".54" stop-color="gray" stop-opacity=".11765"/>
|
132 |
+
<stop offset="1" stop-color="gray" stop-opacity=".09804"/>
|
133 |
+
</linearGradient>
|
134 |
+
</defs>
|
135 |
+
</svg>
|
assets/images/features-fire.svg
ADDED
@@ -0,0 +1,60 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0" encoding="utf-8"?>
|
2 |
+
<svg viewBox="0 0 584 448" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="1.41421">
|
3 |
+
<path d="M189.59818 18.37229s-66.37622-41.54605-106.72752 25.0658c-20.57684 33.96683 6.88083 88.82258 1.63307 87.80267-34.08952-6.27889-55.73244-1.19743-65.90882 14.34997 25.19084 7.2841 35.34685 21.19308 21.27964 52.57056-12.03466 26.84669-33.5644 51.6592-32.22785 80.84196 2.41847 61.18891 37.27982 95.34118 91.51387 110.31304-26.95745-23.4387-37.92038-68.15075-30.5167-89.71924 11.67478-34.0098 39.29428-49.14561 57.27836-74.00675 8.87378-12.26831 9.03675-26.31638 2.33586-48.2614 49.5793 40.46282 46.49765 79.46814 17.82225 116.48678 19.27877 10.77916 37.61482 3.65675 54.82594-24.84757 16.92366 50.56354-4.30731 87.20452-33.88242 119.22877 64.3097-18.3154 98.7444-61.7113 99.07373-132.00817-2.32907-55.40867-30.75436-104.52828-91.25131-160.70584-34.04765-31.6172-21.50372-75.01762 14.7519-77.11058z" fill="#ed4500"/>
|
4 |
+
<path d="M583.79669 80.02688v292.83723c-.00695 7.44431-6.13186 13.56391-13.56379 13.56043H98.05177c-7.4368 0-13.55684-6.12795-13.55684-13.57436V80.02688c0-7.45058 6.12283-13.58132 13.5638-13.58132H570.2329c7.43888 0 13.56379 6.13074 13.56379 13.58132z" fill="#fff" fill-rule="nonzero"/>
|
5 |
+
<path d="M561.1278 107.46498c0-2.94215-2.38806-5.33112-5.33142-5.33112H113.58244c-2.94337 0-5.33142 2.38897-5.33142 5.33112v45.02798c0 2.94215 2.38805 5.33069 5.33142 5.33069h442.21394c2.94336 0 5.33142-2.38854 5.33142-5.33069v-45.02798z" fill="#d2def2"/>
|
6 |
+
<path d="M304.51417 141.38434c-1.39732 1.9698-3.31104 3.19358-5.70392 3.19358-3.57855 0-5.5883-1.95022-4.89943-7.60996l1.43553-11.91277h5.85678l-1.24445 10.15347c-.38216 3.09763-.13327 4.11092 1.24445 4.11092 1.66483 0 3.96168-2.81078 4.30562-5.5452l1.072-8.71919h5.87637l-2.35466 19.15951h-5.8754l.34394-2.83036h-.05683zm17.02356-16.32915h3.96266l-.57422 4.761h-3.98127l-.93775 7.85863c-.13425 1.09063.23027 1.587.86132 1.587.5164 0 1.16802-.20951 1.93331-.59231l.95637 4.5319c-1.68442.93693-3.36885 1.37651-5.16792 1.37651-2.96612 0-5.10913-1.70154-4.57313-6.1189l1.0328-8.64283h-1.91372l.57422-4.761h1.93331l.70846-5.58337 6.02826-1.1856-.8427 6.76897zm-74.75845 19.52273c3.65595 0 6.31634-1.47245 8.3065-4.22645l-4.57412-2.86756c-1.12883 1.3579-2.1822 1.85427-3.32965 1.85427-1.11021 0-2.58396-.66867-2.58396-3.3463 0-3.19358 1.79907-6.04254 4.287-6.06115.95637 0 2.04796.24868 2.79366 1.4147l4.49767-3.34631c-1.39633-2.1421-3.88426-3.30812-6.9464-3.30812-6.54565 0-10.56514 5.41106-10.56514 11.54955 0 5.41107 3.11996 8.33737 8.11542 8.33737h-.00098zm37.66682-19.86734c-6.77493 0-10.58375 5.46883-10.58375 11.62591 0 5.23876 3.2346 8.24143 8.09582 8.24143 7.34914 0 10.66018-5.45023 10.66018-11.68368 0-5.23876-3.2346-8.18366-8.17225-8.18366zm-84.79837 15.06816l-4.42124-4.09232c-1.43554 1.7593-3.50212 2.88714-5.79897 2.88714-3.13857 0-5.0905-2.10294-5.0905-6.1189 0-5.00967 3.04254-10.40214 7.65486-10.40214 2.39289 0 3.9999 1.43427 5.14833 3.5568l5.01407-3.7477c-2.66039-4.3596-6.18112-5.83206-9.8939-5.83206-8.45936 0-14.52682 7.59136-14.52682 16.5974 0 8.06913 4.88081 11.95096 11.2922 11.95096 4.43987 0 8.07623-1.85525 10.62197-4.79918zm62.24237 4.43596h-5.8754l3.54033-28.8352h5.8754l-2.1244 17.41978h.09603c3.10036-2.12253 4.49768-4.64645 5.24435-7.74507h6.08608c-.74668 3.92002-2.6986 7.13318-5.3786 9.6757l.51738 1.64476c.87994 2.754 1.8755 3.21218 3.57855 3.3659l-1.32089 4.77959c-.42135.03818-.8035.05776-1.72264.05776-3.00433-.01958-4.42027-2.27525-5.45405-5.52561l-.26848-.88015h-.03822c-.70748.4014-1.43455.76462-2.18123 1.10924l-.57421 4.9333zm-32.07853-4.49372c-.99459 0-2.06658-.53553-2.58396-1.7779l.24889-.34462c5.6461-.86057 10.88947-3.07806 10.88947-7.45723 0-3.72813-3.32965-5.44926-6.50644-5.44926-6.60247 0-10.54553 5.50604-10.54553 11.70228 0 5.1624 3.02392 8.1641 8.038 8.1641 3.75199 0 6.31635-1.4147 8.3261-4.2059l-4.36344-2.56309c-1.0916 1.41567-2.23904 1.93162-3.5031 1.93162zm-22.80391 4.49372h-5.85678l3.5413-28.8352h5.85679l-1.53157 12.4101h.13327c1.68442-2.00797 3.80882-3.07902 6.35456-3.07902 3.63636 0 5.12872 2.42896 4.42125 7.78226l-1.55018 11.72186h-5.85678l1.39732-10.38255c.34394-2.63945.13326-3.86323-1.14843-3.86323-1.74224 0-4.21057 2.3712-4.88081 7.03723l-.87994 7.20855zm76.96025-14.26536c1.0524 0 2.71723.44056 2.71723 3.3277 0 3.13582-1.68443 6.06114-4.287 6.06114-1.2817 0-2.60258-.91734-2.60258-3.32672 0-2.94491 1.55018-6.06212 4.17235-6.06212zm-52.54835-.34364c.84172 0 1.32089.45916 1.32089 1.08965 0 1.7407-2.4311 2.65805-5.24435 3.17498l-.2489-.1723c.70846-2.6003 2.4311-4.09233 4.17236-4.09233z" fill="#fff" fill-rule="nonzero"/>
|
7 |
+
<path d="M402.2168 176.1176c0-1.10118-.89386-1.9952-1.99462-1.9952H110.24521c-1.10076 0-1.99462.89402-1.99462 1.9952v15.59036c0 1.10118.89386 1.99503 1.99462 1.99503h289.97697c1.10076 0 1.99462-.89385 1.99462-1.99503v-15.59037zM561.12665 176.1176c0-1.10118-.89418-1.9952-1.99526-1.9952H445.53555c-1.10108 0-1.99526.89402-1.99526 1.9952v15.59036c0 1.10118.89418 1.99503 1.99526 1.99503h113.59584c1.10108 0 1.99526-.89385 1.99526-1.99503v-15.59037zM402.2168 205.48833c0-1.10117-.89386-1.99518-1.99462-1.99518H110.24521c-1.10076 0-1.99462.894-1.99462 1.99518v15.59037c0 1.10117.89386 1.99503 1.99462 1.99503h289.97697c1.10076 0 1.99462-.89386 1.99462-1.99503v-15.59037zM561.12665 205.48833c0-1.10117-.89418-1.99518-1.99526-1.99518H445.53555c-1.10108 0-1.99526.894-1.99526 1.99518v15.59037c0 1.10117.89418 1.99503 1.99526 1.99503h113.59584c1.10108 0 1.99526-.89386 1.99526-1.99503v-15.59037zM402.2168 234.85907c0-1.10118-.89386-1.99519-1.99462-1.99519H110.24521c-1.10076 0-1.99462.89401-1.99462 1.99519v15.59036c0 1.10118.89386 1.99504 1.99462 1.99504h289.97697c1.10076 0 1.99462-.89386 1.99462-1.99504v-15.59036zM561.12665 234.85907c0-1.10118-.89418-1.99519-1.99526-1.99519H445.53555c-1.10108 0-1.99526.89401-1.99526 1.99519v15.59036c0 1.10118.89418 1.99504 1.99526 1.99504h113.59584c1.10108 0 1.99526-.89386 1.99526-1.99504v-15.59036zM561.12665 283.811c0-1.10118-.89418-1.9952-1.99526-1.9952H445.53555c-1.10108 0-1.99526.89402-1.99526 1.9952v15.59036c0 1.10117.89418 1.99503 1.99526 1.99503h113.59584c1.10108 0 1.99526-.89386 1.99526-1.99503v-15.59037zM400.21898 283.811c0-1.10118-.89385-1.9952-1.99514-1.9952h-93.99827c-1.1013 0-1.99515.89402-1.99515 1.9952v15.59036c0 1.10117.89386 1.99503 1.99515 1.99503h93.99827c1.10129 0 1.99514-.89386 1.99514-1.99503v-15.59037z" fill="#d2def2"/>
|
8 |
+
<path d="M561.12587 335.46628c0-1.68715-1.36918-3.0569-3.057-3.0569H111.4404c-1.68782 0-3.057 1.36975-3.057 3.0569v23.88655c0 1.68715 1.36918 3.05666 3.057 3.05666h446.62846c1.68783 0 3.057-1.36951 3.057-3.05666v-23.88655z" fill="#b1f6dc"/>
|
9 |
+
<g transform="matrix(.34795 0 0 .32413 77.16395 71.70824)">
|
10 |
+
<circle cx="186.632" cy="234.546" r="10.39" fill="#fff"/>
|
11 |
+
<circle cx="186.632" cy="234.546" r="10.39" fill="#fff" transform="translate(42)"/>
|
12 |
+
<path d="M151.22262 144.6002c2.00801-.17762 3.95468 1.0272 4.63305 3.01951l20.8177 61.13133h63.95896c2.4731 0 4.4804 2.0073 4.4804 4.47968v.05279c0 2.47239-2.0073 4.47969-4.4804 4.47969h-67.16321c-1.99803 0-3.69218-1.31038-4.26926-3.11867-.0856-.17333-.1605-.3538-.2247-.54212l-20.59942-60.49005h-15.39572c-2.47239 0-4.47969-2.0073-4.47969-4.47969v-.05278c0-2.47239 2.0073-4.47969 4.4797-4.47969h18.2426z" fill="#fff"/>
|
13 |
+
<path d="M200.7482 118.73991c-.83199-1.95645-3.01793-2.90164-4.87745-2.11087l-28.63923 12.17895c-1.85951.79076-2.69402 3.02042-1.86204 4.97687l18.02561 42.38784c.83199 1.95644 3.01682 2.90211 4.87634 2.11135l28.63922-12.17896c1.85952-.79076 2.69515-3.0209 1.86316-4.97734l-18.0256-42.38784z" fill="#fff"/>
|
14 |
+
<path d="M245.72468 136.85363c-.1633-1.8178-1.67331-3.17057-3.36862-3.01828l-26.1101 2.34559c-1.69531.1523-2.93902 1.75245-2.77572 3.57024l3.04851 33.935c.1633 1.8178 1.6723 3.17066 3.3676 3.01837l26.11011-2.34559c1.6953-.1523 2.94003-1.75254 2.77673-3.57034l-3.04851-33.935z" fill="#fff"/>
|
15 |
+
<path d="M230.54506 149.70948c.7378-1.81209-.06063-3.85311-1.78099-4.55355l-26.49594-10.7878c-1.72036-.70044-3.71635.20284-4.45414 2.01493l-15.96242 39.20534c-.73779 1.8121.0596 3.8527 1.77996 4.55313l26.49594 10.7878c1.72036.70044 3.71738-.20242 4.45517-2.0145l15.96242-39.20535z" fill="#eaf0f9"/>
|
16 |
+
<path d="M251.34 170.774c.195-2.488-.547-4.956-2.058-6.854-1.512-1.897-3.668-3.067-5.988-3.247-14.863-1.153-45.056-3.497-62.463-4.848-2.894-.225-5.697 1.139-7.447 3.624-1.75 2.484-2.209 5.751-1.219 8.679 3.002 8.88 6.807 20.136 9.121 26.977 1.248 3.694 4.518 6.154 8.179 6.154h51.673c4.421 0 8.104-3.636 8.474-8.365.505-6.462 1.204-15.406 1.728-22.12z" fill="#fff"/>
|
17 |
+
</g>
|
18 |
+
<path d="M581.2833 66.06111H87.03028c-1.39079 0-2.53493 1.20616-2.53493 2.67232v11.3004h499.30178V68.75567v-.02223c0-1.45783-1.13308-2.6601-2.51385-2.67232z" fill="#3f3d56" fill-rule="nonzero"/>
|
19 |
+
<circle cx="96.72" cy="164.18" r="6.5" fill="#fff" transform="matrix(.55606 0 0 .55558 41.2557 -18.16968)"/>
|
20 |
+
<circle cx="114.22" cy="164.18" r="6.5" fill="#fff" transform="matrix(.55606 0 0 .55558 41.2557 -18.16968)"/>
|
21 |
+
<circle cx="131.72" cy="164.18" r="6.5" fill="#fff" transform="matrix(.55606 0 0 .55558 41.2557 -18.16968)"/>
|
22 |
+
<g>
|
23 |
+
<path d="M590.46 285.225c0-29.872-24.182-54.125-53.968-54.125H208.978c-29.786 0-53.968 24.253-53.968 54.125s24.182 54.125 53.968 54.125h327.514c29.786 0 53.968-24.253 53.968-54.125z" fill="url(#_Linear1)" transform="matrix(.98606 0 0 .9832 -134.55633 114.13986)"/>
|
24 |
+
<path d="M445.60511 394.58452c0-28.05184-22.77435-50.82682-50.82627-50.82682H71.50959c-28.05192 0-50.82627 22.77498-50.82627 50.82682s22.77435 50.82681 50.82627 50.82681h323.26925c28.05192 0 50.82627-22.77497 50.82627-50.82681z" fill="#fff"/>
|
25 |
+
<path d="M208.17876 365.25134c0-1.12039-.9089-2.03063-2.03003-2.03063H134.623c-1.12114 0-2.03004.91024-2.03004 2.03063v15.81336c0 1.12039.9089 2.02949 2.03004 2.02949h71.52572c1.12114 0 2.03003-.9091 2.03003-2.0295v-15.81335z" fill="#ed4500" fill-opacity=".1"/>
|
26 |
+
<g font-family="'Averta-Semibold','Averta'" font-weight="600" font-size="13.333">
|
27 |
+
<text x="117.581" y="14.323" fill="#ed4500" transform="matrix(1.32609 0 0 1.32492 -22.46957 358.57658)">
|
28 |
+
4<tspan x="124.623px 130.545px 133.446px 141.054px 147.874px 155.209px 162.817px 165.776px" y="14.323px 14.323px 14.323px 14.323px 14.323px 14.323px 14.323px 14.323px">7 people</tspan>
|
29 |
+
</text>
|
30 |
+
<text x="175.498" y="14.323" fill="#3f3d56" transform="matrix(1.32609 0 0 1.32492 -22.46957 358.57658)">
|
31 |
+
<tspan x="175.498px 183.106px 190.141px 194.435px 200.865px 208.174px 215.658px 220.974px 227.795px 235.396px 238.297px 243.614px 250.922px 258.257px 265.077px 270.394px 273.295px 276.254px 283.498px 286.399px 290.595px 297.904px" y="14.323px 14.323px 14.323px 14.323px 14.323px 14.323px 14.323px 14.323px 14.323px 14.323px 14.323px 14.323px 14.323px 14.323px 14.323px 14.323px 14.323px 14.323px 14.323px 14.323px 14.323px 14.323px">purchased shoes in the</tspan>
|
32 |
+
</text>
|
33 |
+
<text x="117.581" y="31.656" fill="#3f3d56" transform="matrix(1.32609 0 0 1.32492 -22.46957 358.57658)">
|
34 |
+
l<tspan x="120.541px 128.025px 133.342px 137.538px 140.439px 146.869px 153.911px 156.812px 164.12px 171.455px 178.49px 182.784px" y="31.656px 31.656px 31.656px 31.656px 31.656px 31.656px 31.656px 31.656px 31.656px 31.656px 31.656px 31.656px">ast 24 hours</tspan>
|
35 |
+
</text>
|
36 |
+
</g>
|
37 |
+
<g fill-rule="nonzero">
|
38 |
+
<path d="M217.29198 421.7667c.78455 0 1.16493-.15494 1.54532-.3563l-.40416-1.24704c-.26152.13083-.5468.20228-.737.20228-.35661 0-.51114-.23846-.51114-.73672v-2.4709h1.58098v-1.2823H217.185v-2.06635l-1.54532.16609v1.90026h-.68946v1.2823h.68946v2.6843c0 1.30643.65378 1.92439 1.6523 1.92439zM222.65277 415.78107c-.68908 0-1.31918.33218-1.759.95013h-.0119v-.85548h-1.5572v5.79635h1.5572v-2.69637c0-.85549.52304-1.5087 1.4858-1.5087.08358 0 .24981 0 .40397.01206v-1.68685c-.02321-.01114-.07058-.01114-.11887-.01114zM226.96834 415.87572v2.81513c0 1.11621-.60643 1.68592-1.28436 1.68592-.7253 0-1.0457-.3563-1.0457-1.4252v-3.07585h-1.54531v3.49154c0 1.77036.87945 2.39945 2.1276 2.39945.65379 0 1.28436-.27372 1.72362-.80817h.02415v.71353h1.5574v-5.79635h-1.5574zM231.33034 421.7667c1.5221 0 2.25854-.77197 2.25854-1.80561 0-1.13941-.73644-1.41313-1.99665-1.87614-.57114-.2134-.87946-.38042-.87946-.61795 0-.30898.3204-.43888.5702-.43888.42813 0 .9389.19021 1.39117.61703l.74851-1.14034c-.65379-.51033-1.30758-.72374-2.11553-.72374-1.1887 0-2.0923.68848-2.0923 1.73418 0 1.11621.83209 1.56716 1.78305 1.8882.76059.23753 1.05777.36836 1.05777.64115 0 .28485-.26096.47506-.71323.47506-.62964 0-1.12927-.22547-1.60475-.67734l-.76059 1.08096c.64172.54651 1.42645.84343 2.35327.84343zM235.99045 421.7667c.78473 0 1.16456-.15494 1.54532-.3563l-.40398-1.24704c-.26189.13083-.54699.20228-.73737.20228-.35661 0-.51077-.23846-.51077-.73672v-2.4709h1.5806v-1.2823h-1.5806v-2.06635l-1.54532.16609v1.90026h-.69001v1.2823h.69v2.6843c0 1.30643.6538 1.92439 1.65213 1.92439z" fill="#1d58bf"/>
|
39 |
+
<path d="M241.36378 415.78107c-.71323 0-1.31965.26073-1.75985.75992h-.02321v-.66527h-1.5574v8.14755h1.5574v-3.00442h.02321c.40398.47414.97511.74786 1.71156.74786 1.61682 0 2.78139-1.18766 2.78139-2.98122 0-1.75737-1.17664-3.00442-2.7331-3.00442zm-.3334 4.5957c-.84417 0-1.51003-.62909-1.51003-1.57922 0-.926.6185-1.62747 1.51003-1.62747.8321 0 1.48589.63002 1.48589 1.62747 0 .93807-.60643 1.57922-1.48589 1.57922zM248.54339 415.87572v2.81513c0 1.11621-.60643 1.68592-1.28437 1.68592-.7253 0-1.04569-.3563-1.04569-1.4252v-3.07585h-1.54532v3.49154c0 1.77036.87946 2.39945 2.1276 2.39945.6538 0 1.28437-.27372 1.72363-.80817h.02415v.71353h1.55739v-5.79635h-1.5574zM251.0991 412.93068h1.55722v8.7412h-1.55721zM255.57998 421.7667c1.5221 0 2.25854-.77197 2.25854-1.80561 0-1.13941-.73644-1.41313-1.99665-1.87614-.57021-.2134-.87946-.38042-.87946-.61795 0-.30898.3204-.43888.5702-.43888.42813 0 .9389.19021 1.39117.61703l.74851-1.14034c-.65379-.51033-1.30758-.72374-2.11553-.72374-1.1887 0-2.0923.68848-2.0923 1.73418 0 1.11621.83209 1.56716 1.78305 1.8882.76059.23753 1.05777.36836 1.05777.64115 0 .28485-.26096.47506-.71323.47506-.62964 0-1.12927-.22547-1.60475-.67734l-.7606 1.08096c.64173.54651 1.42646.84343 2.35328.84343zM263.79414 418.71404c0-1.69798-1.14135-2.93297-2.84083-2.93297-1.65212 0-2.87704 1.22293-2.87704 2.9803 0 1.81768 1.28436 3.00534 2.98384 3.00534 1.16456 0 2.00873-.463 2.50836-1.09302l-1.0104-.93807c-.32133.39156-.77266.66528-1.39116.65321-.74852 0-1.29551-.42774-1.48589-1.11621h4.07783c.03529-.09557.03529-.36836.03529-.55858zm-2.79347-1.56715c.67794 0 1.09399.40362 1.24815 1.0095h-2.55573c.17831-.66527.67794-1.0095 1.30758-1.0095z" fill="#00aded"/>
|
40 |
+
</g>
|
41 |
+
<path d="M209.44567 413.91572c-.51699-.13946-1.02178-.325-1.50684-.56284-.41154-.20175-.80851-.4316-1.19748-.67356a5.67728 5.67728 0 0 1-.02266.014c-1.02383.63479-2.11239 1.14752-3.32168 1.37437-.43634.08184-.87767.1332-1.31988.17088l-.0141.00119c-.10892 2.4322.05348 4.93912 1.34626 7.02472.788 1.27123 2.00719 2.22316 3.29839 3.01443l.03367.0205c.5284-.32262 1.04736-.66669 1.53028-1.05096h1.09625c-.777.73064-1.68334 1.34294-2.60475 1.88955-.04317-.02952-.04357 0-.04357 0-1.16223-.68948-2.29372-1.45161-3.17433-2.46354-.59819-.68734-1.07184-1.47718-1.4132-2.33208-.85779-2.14837-.91213-4.54004-.76257-6.7856.95064-.0566 1.91609-.14786 2.82609-.44103.89748-.28913 1.72405-.76926 2.52243-1.28714l.02337-.0152c.01553.01014.03105.02019.04666.03032 1.00696.65172 2.08157 1.2269 3.26496 1.47338a8.89413 8.89413 0 0 0 .20367.03989l-.81097.55872zm-.24051 8.37296h-1.50486c-.25152-.01069-.26847-.13796-.27378-.26215-.00626-.14769.0896-.2775.27378-.28533h1.29588l.40964-1.49206s.07906-.18473.23798-.20001c.12707-.01227.2363.04132.289.19487l.61893 2.09249.37915-1.1905s.12263-.21703.31735-.1849c.10616.02715.11043.03206.17199.1166l.4407.6635h1.0552c.00127.00017.19583.02644.25422.17168.06757.16796-.03937.3667-.25422.3758h-1.20223c-.13072-.00537-.16803-.03933-.22824-.12236l-.20597-.31003-.4765 1.4965s-.08398.17824-.24067.18995c-.12525.00934-.2314-.04416-.28321-.19542l-.59946-2.02664-.21048.76673s-.09562.19392-.2642.20128zm2.9491-7.97523c.05324 1.29537.0134 2.59271-.20874 3.87328-.10124.58397-.32194 1.3898-.51524 1.95129l-.69555-.2259c.5905-1.5564.73334-3.2495.70775-4.90659l.71179-.69208z" fill="#00aded" fill-rule="nonzero"/>
|
42 |
+
<path d="M206.46654 417.64628c.0415-.04726.05226-.07829.11412-.16818.35676-.51863 1.41349-1.91681 2.75625-2.99226.5843-.46801 1.21582-.89348 1.77446-1.17236.93102-.4648 1.23082-.52146 1.6632-.62212.08212-.0191.37952-.07213.42887.04495.0476.11302-.1379.23211-.20751.28676-.07825.06143-1.86768 1.39838-3.37313 3.38386-1.30996 1.72755-2.1672 3.99424-2.1672 3.99424-.02634.05034-.32425.58226-.72395.60816-.3694.024-.84382-.45608-.84382-.45608-.0912-.08502-.53596-.61239-.90605-1.26466-.472-.83164-.87842-1.81746-.87842-1.81746s-.42192-.82925.37349-1.2853c.78425-.44972 1.13359.00686 1.3038.2764.14545.23037.43852.78997.58015 1.06368.04935.09534.08125.14821.10574.12037z" fill="#1d58bf" fill-rule="nonzero"/>
|
43 |
+
<text x="35.99" y="29.951" font-family="'Averta-Semibold','Averta'" font-weight="600" font-size="9.333" fill="#a9b6d4" transform="matrix(1.32609 0 0 1.32492 85.82303 382.12314)">
|
44 |
+
P<tspan x="41.398px 46.532px 53.261px 58.035px 61.041px 65.816px 71.137px 73.167px 78.493px" y="29.951px 29.951px 29.951px 29.951px 29.951px 29.951px 29.951px 29.951px 29.951px">owered by</tspan>
|
45 |
+
</text>
|
46 |
+
<g transform="matrix(1.65338 0 0 1.65193 -72.73905 -214.22319)">
|
47 |
+
<circle cx="88.506" cy="368.331" r="25.699" fill="#fbdacc"/>
|
48 |
+
</g>
|
49 |
+
<g>
|
50 |
+
<path d="M82.59618 363.67917s-11.32535-7.08874-18.21024 4.27682c-3.5109 5.79554 1.17403 15.15523.27864 14.9812-5.81647-1.07132-9.50927-.2043-11.2456 2.44845 4.29815 1.24284 6.031 3.61604 3.63081 8.96978-2.0534 4.58068-5.72688 8.81428-5.49883 13.79354.41265 10.44028 6.36082 16.26746 15.61442 18.82201-4.59957-3.9992-6.4701-11.62813-5.20686-15.30822 1.99199-5.80287 6.70453-8.3854 9.77304-12.6273 1.51407-2.09326 1.54188-4.4902.39855-8.23453 8.4594 6.90391 7.9336 13.55914 3.0409 19.8754 3.2894 1.83917 6.41797.62392 9.3546-4.23959 2.88757 8.62733-.73493 14.87915-5.78115 20.34324 10.97276-3.12504 16.84813-10.5294 16.90432-22.5237-.3974-9.45403-5.24742-17.835-15.56963-27.42021-5.80933-5.39464-3.66904-12.79978 2.51703-13.15689z" fill="#ed4500"/>
|
51 |
+
</g>
|
52 |
+
</g>
|
53 |
+
<defs>
|
54 |
+
<linearGradient id="_Linear1" x2="1" gradientUnits="userSpaceOnUse" gradientTransform="rotate(-90 356.05 -16.69) scale(108.26)">
|
55 |
+
<stop offset="0" stop-color="gray" stop-opacity=".24706"/>
|
56 |
+
<stop offset=".54" stop-color="gray" stop-opacity=".11765"/>
|
57 |
+
<stop offset="1" stop-color="gray" stop-opacity=".09804"/>
|
58 |
+
</linearGradient>
|
59 |
+
</defs>
|
60 |
+
</svg>
|
assets/images/gravity-forms.png
ADDED
Binary file
|
assets/images/home-flexible.svg
ADDED
@@ -0,0 +1,66 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0" encoding="utf-8"?>
|
2 |
+
<svg viewBox="0 0 561 420" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="1.5">
|
3 |
+
<path d="M541.04438 349.44386c0 3.9122-3.17788 7.0878-7.0878 7.0878H10.49218c-3.91163 0-7.0878-3.1756-7.0878-7.0878V10.53238c0-3.91163 3.1756-7.0878 7.0878-7.0878h523.4644c3.90992 0 7.0878 3.17617 7.0878 7.0878v338.91148z" fill="#f5f5f7"/>
|
4 |
+
<path d="M538.31483-.00001H6.11126c-1.49757 0-2.72957 1.232-2.72957 2.72957v11.5425h537.64V2.72956c0-1.48906-1.22007-2.71709-2.70686-2.72957z" fill="#3f3d56" fill-rule="nonzero"/>
|
5 |
+
<circle cx="96.72" cy="164.18" r="6.5" fill="#fff" transform="translate(-40.74542 -86.03535) scale(.56748)"/>
|
6 |
+
<circle cx="114.22" cy="164.18" r="6.5" fill="#fff" transform="translate(-40.74542 -86.03535) scale(.56748)"/>
|
7 |
+
<circle cx="131.72" cy="164.18" r="6.5" fill="#fff" transform="translate(-40.74542 -86.03535) scale(.56748)"/>
|
8 |
+
<path fill="#dcdbdc" d="M28.37284 38.86226h488.82123V161.9703H28.37284z"/>
|
9 |
+
<path fill="#fff" d="M32.93322 42.81193h479.8486v114.89474H32.93323z"/>
|
10 |
+
<path d="M478.03484 71.437c0-3.40211-2.76264-6.16449-6.16477-6.16449h-286.4028c-3.40296 0-6.16477 2.76238-6.16477 6.1645v12.32963c0 3.40276 2.76181 6.16513 6.16476 6.16513h286.4028c3.40214 0 6.16478-2.76237 6.16478-6.16513V71.437z" fill="#16bd83"/>
|
11 |
+
<path d="M478.03484 99.54337c0-2.26808-1.84204-4.10966-4.10985-4.10966H183.41234c-2.26863 0-4.10984 1.84158-4.10984 4.10966v8.21975c0 2.2685 1.8412 4.11008 4.10984 4.11008H473.925c2.26781 0 4.10985-1.84158 4.10985-4.11008v-8.21975z" fill="#6c63ff"/>
|
12 |
+
<path d="M269.96526 122.04447c0-2.26808-1.84177-4.10966-4.10987-4.10966h-82.44321c-2.26835 0-4.10987 1.84158-4.10987 4.10966v8.21974c0 2.2685 1.84152 4.1101 4.10987 4.1101h82.4432c2.2681 0 4.10988-1.8416 4.10988-4.1101v-8.21974z" fill="#9795b1"/>
|
13 |
+
<g fill-rule="nonzero">
|
14 |
+
<path d="M294.29306 130.98143c.88596 0 1.31552-.17513 1.74507-.4027l-.4564-1.40949c-.29532.14787-.61749.22862-.83226.22862-.40271 0-.57722-.26952-.57722-.83268v-2.79275h1.78534v-1.44933h-1.78534v-2.3355l-1.74507.18772v2.14778h-.77857v1.44933h.77857v3.03395c0 1.4766.7383 2.17505 1.86588 2.17505zm6.05374-6.7653c-.77814 0-1.4897.37544-1.98638 1.0739h-.01342v-.96693h-1.7585v6.55136h1.7585v-3.04758c0-.96692.59064-1.70522 1.67785-1.70522.09438 0 .2821 0 .4562.01363v-1.90658c-.02623-.01258-.07971-.01258-.13424-.01258zm4.87342.10697v3.18182c0 1.26161-.68482 1.90553-1.45039 1.90553-.81905 0-1.18086-.40271-1.18086-1.61084v-3.47651h-1.74507v3.94634c0 2.00096.99314 2.712 2.40262 2.712.7383 0 1.45038-.30938 1.94643-.91344h.02727v.80646h1.7587v-6.55136h-1.7587zm4.92584 6.65833c1.71885 0 2.5505-.87253 2.5505-2.04081 0-1.28783-.83165-1.5972-2.25476-2.12051-.64496-.24121-.99314-.42998-.99314-.69845 0-.34923.3618-.49605.64392-.49605.48346 0 1.06025.21499 1.57098.6974l.84527-1.28888c-.7383-.5768-1.4766-.818-2.38899-.818-1.34236 0-2.36277.77815-2.36277 1.96006 0 1.26161.93966 1.7713 2.01355 2.13415.8589.26847 1.1945.41634 1.1945.72467 0 .32195-.2947.53694-.80543.53694-.71103 0-1.27524-.25484-1.81219-.76557l-.8589 1.22176c.72467.6177 1.61084.9533 2.65746.9533zm5.26248 0c.88617 0 1.3151-.17513 1.74508-.4027l-.4562-1.40949c-.29574.14787-.6177.22862-.83268.22862-.40271 0-.5768-.26952-.5768-.83268v-2.79275h1.78493v-1.44933h-1.78493v-2.3355l-1.74507.18772v2.14778h-.7792v1.44933h.7792v3.03395c0 1.4766.7383 2.17505 1.86567 2.17505z" fill="#1d58bf"/>
|
15 |
+
<path d="M321.47645 124.21613c-.80542 0-1.49024.2947-1.98733.8589h-.02622v-.75193h-1.7587v9.20882h1.7587v-3.39576h.02622c.4562.5359 1.10116.84527 1.9328.84527 1.82582 0 3.14091-1.34236 3.14091-3.36954 0-1.98628-1.32873-3.39576-3.08638-3.39576zm-.3765 5.19432c-.95328 0-1.70522-.71104-1.70522-1.78493 0-1.04662.69845-1.83945 1.70523-1.83945.93965 0 1.67795.71208 1.67795 1.83945 0 1.06026-.68481 1.78493-1.67795 1.78493zm8.48416-5.08735v3.18182c0 1.26161-.68481 1.90553-1.45038 1.90553-.81905 0-1.18086-.40271-1.18086-1.61084v-3.47651h-1.74507v3.94634c0 2.00096.99314 2.712 2.40262 2.712.7383 0 1.45038-.30938 1.94643-.91344h.02726v.80646h1.7587v-6.55136h-1.7587zm2.88609-3.32864h1.7585v9.8798h-1.7585zm5.06008 9.98697c1.71885 0 2.55049-.87253 2.55049-2.04081 0-1.28783-.83164-1.5972-2.25476-2.12051-.64391-.24121-.99313-.42998-.99313-.69845 0-.34923.3618-.49605.64391-.49605.48346 0 1.06026.21499 1.57099.6974l.84527-1.28888c-.7383-.5768-1.4766-.818-2.389-.818-1.34236 0-2.36276.77815-2.36276 1.96006 0 1.26161.93965 1.7713 2.01354 2.13415.8589.26847 1.1945.41634 1.1945.72467 0 .32195-.2947.53694-.80542.53694-.71103 0-1.27525-.25484-1.8122-.76557l-.8589 1.22176c.72467.6177 1.61084.9533 2.65747.9533zm9.27594-3.45029c0-1.91916-1.28888-3.31501-3.20804-3.31501-1.86568 0-3.24894 1.38222-3.24894 3.3685 0 2.05444 1.45038 3.3968 3.36954 3.3968 1.3151 0 2.26839-.52331 2.8326-1.2354l-1.14101-1.06025c-.36286.44256-.87254.75193-1.57099.7383-.84527 0-1.46296-.48346-1.67795-1.26161h4.60494c.03985-.10802.03985-.41634.03985-.63133zm-3.15456-1.7713c.76557 0 1.2354.4562 1.40948 1.14102h-2.88608c.20136-.75194.76557-1.14101 1.4766-1.14101z" fill="#00aded"/>
|
16 |
+
</g>
|
17 |
+
<path d="M285.43252 122.1078c-.58382-.15763-1.15386-.36732-1.70162-.63615-.46474-.22803-.91303-.48782-1.35227-.7613a6.41018 6.41018 0 0 1-.02559.01583c-1.15618.71747-2.38544 1.297-3.75105 1.55338-.49274.0925-.99112.15056-1.49049.19315l-.01592.00134c-.123 2.749.06038 5.58247 1.52028 7.93973.88986 1.43682 2.26664 2.51275 3.72475 3.40708l.03802.02317c.5967-.36464 1.18274-.75352 1.7281-1.18785h1.23794c-.87743.8258-1.90094 1.51787-2.94144 2.13568-.04876-.03337-.0492 0-.0492 0-1.31247-.77929-2.59022-1.6407-3.58466-2.78444-.6755-.77687-1.21039-1.66959-1.59587-2.63584-.96867-2.42821-1.03004-5.13142-.86114-7.66948 1.07352-.06396 2.16376-.16711 3.19139-.49847 1.01349-.3268 1.94691-.86946 2.84849-1.4548l.02639-.01717c.01753.01145.03506.02281.05269.03426 1.13712.73661 2.35064 1.38672 3.687 1.6653.07648.01592.15315.03095.23.04508l-.9158.6315zm-.2716 9.4636h-1.69938c-.28404-.01208-.30318-.15594-.30918-.2963-.00706-.16693.10118-.31364.30918-.3225h1.46338l.4626-1.6864s.08928-.2088.26873-.22607c.1435-.01387.26686.0467.32635.22025l.69895 2.36505.42816-1.34557s.13848-.2453.35837-.20898c.11988.03069.12471.03624.19422.13178l.49767.74994h1.1916c.00143.00018.22114.02988.28708.19404.0763.18983-.04447.41447-.28708.42475h-1.35764c-.14761-.00608-.18975-.04446-.25774-.1383l-.2326-.35042-.5381 1.69142s-.09482.20146-.27177.2147c-.14144.01056-.26131-.04991-.31982-.22087l-.67694-2.29062-.2377.8666s-.10797.21917-.29834.2275zm3.33032-9.01406c.06011 1.4641.01511 2.93043-.23573 4.3778-.11433.66003-.36357 1.57082-.58185 2.20545l-.78545-.25532c.66683-1.75913.82812-3.67277.79923-5.5457l.8038-.78223z" fill="#00aded" fill-rule="nonzero"/>
|
18 |
+
<path d="M282.0683 126.3243c.04685-.05343.05901-.0885.12887-.1901.40287-.58618 1.5962-2.16649 3.11253-3.38201.65983-.52898 1.37298-1.00987 2.00383-1.32508 1.05137-.52534 1.38992-.58938 1.8782-.70314.09273-.02159.42857-.08153.4843.0508.05375.12774-.15573.26235-.23434.3241-.08836.06943-2.1091 1.58053-3.80914 3.82464-1.4793 1.95257-2.44735 4.51451-2.44735 4.51451-.02974.0569-.36616.6581-.81752.68738-.41715.02713-.9529-.51549-.9529-.51549-.103-.09609-.60524-.69215-1.02317-1.42938-.533-.93997-.99197-2.0542-.99197-2.0542s-.47645-.93727.42177-1.45273c.88563-.50829 1.28012.00776 1.47234.31241.16425.26038.4952.89287.65514 1.20223.05573.10776.09175.16752.1194.13605z" fill="#1d58bf" fill-rule="nonzero"/>
|
19 |
+
<path fill="#dce0ed" fill-opacity=".5" d="M27.83207 174.56487h487.8311v1.6297H27.83207zm0 37.84138h487.8311v1.6297H27.83207zm0 37.85225h487.8311v1.62968H27.83207zm0 37.84137h487.8311v1.6297H27.83207zm0 37.84138h487.8311v1.6297H27.83207z"/>
|
20 |
+
<path d="M515.67403 327.56008H27.23451v-13.98165c15.2137 5.88861 31.87998 8.9231 48.09973 6.38404 15.89056-4.09052 30.1775-8.70472 42.61745-13.9208l37.54478-24.79084c14.09355-11.14598 27.834-21.49125 39.00063-25.99897 9.17406-4.4534 18.35682-8.61019 27.68733-8.6254l26.3021-1.60905 26.03156-.08148 20.54386-.67904 37.2786-20.43304 39.30048-13.03968c12.74417-3.0258 26.2456-4.53814 38.4335-3.72873l32.83606 1.0267 26.49223-2.35218c8.68624-1.30267 18.27098-5.0792 28.54889-10.76464l17.72232-20.20054v152.7953z" fill="#16bd83" fill-opacity=".3" fill-rule="nonzero"/>
|
21 |
+
<path d="M370.919 601.569s60.278 43.615 172.315-49.33c75.552-62.676 139.168-17.37 179.667-44.589 117.436-78.927 199.455 3.832 256.65-77.309" fill="none" stroke="#16bd83" stroke-width="5" transform="matrix(.79937 0 0 .80095 -268.1162 -169.22389)"/>
|
22 |
+
<circle cx="647.55" cy="275.37" r="11.13" fill="#16bd83" transform="translate(-490.77973 -52.8303) scale(1.08646)"/>
|
23 |
+
<circle cx="647.55" cy="275.37" r="11.13" fill="#16bd83" transform="translate(-362.86099 -81.7835) scale(1.08646)"/>
|
24 |
+
<circle cx="647.55" cy="275.37" r="11.13" fill="#16bd83" transform="translate(-607.09042 9.68565) scale(1.08646)"/>
|
25 |
+
<circle cx="647.55" cy="275.37" r="11.13" fill="#16bd83" transform="translate(-246.76292 -94.28274) scale(1.08646)"/>
|
26 |
+
<g>
|
27 |
+
<circle cx="88.506" cy="368.331" r="25.699" fill="#6c63ff" transform="matrix(2.15937 0 -.44436 2.15937 80.43453 -678.27047)"/>
|
28 |
+
<path d="M121.98366 154.09019c-2.61326 3.6077-6.29794 6.42663-10.3811 7.93848-2.39737.81407-4.83762 1.25903-7.22302 1.31465-2.60512.18961-5.11578-.12894-7.39204-.93543-2.988-1.27925-5.32277-3.5091-6.69809-6.39629-1.35004-2.88718-2.27143-6.01454-2.73732-9.3037-.43092-1.64078-.37897-3.45349.1467-5.2586 2.04721-.24271 4.07924-1.27168 5.64425-2.85685 1.06398-1.59528 1.48615-3.42568 1.16692-5.05636-.04764-.50563-.10049-.98599-.18381-1.44106-.15032-1.1124-1.03316-3.21079.06948-4.14621 1.10264-.93543 3.2211-.91015 4.13344-1.28938 2.77639-1.47645 5.65877-2.65711 8.58579-3.51416 2.56094-.3312 5.0634-.1694 7.35928.48035.31975.05562.61384.17444.8626.35394.26391.26546.42925.61688.4745 1.01128.35412 1.71916.36843 3.6153.56046 5.38502.10354 1.85568.7121 3.55462 1.7665 4.92995.95352.98093 2.09678 1.76467 3.38948 2.32592l3.0704 1.54219c.54522.23765 1.01394.58907 1.37945 1.03655.30642.61182.42212 1.3273.33185 2.07311-.20386 4.0375-1.71634 8.16855-4.32572 11.8066z" fill="#f2bfc8" fill-rule="nonzero"/>
|
29 |
+
<path d="M116.3308 130.45171c-6.69538 5.72886-15.71333 7.03087-21.86173 3.16023-.04764-.50564-.10048-.986-.18381-1.44107-.15032-1.1124-1.03316-3.21078.06948-4.1462 1.10264-.93543 3.2211-.91015 4.13344-1.28938 2.77639-1.47646 5.65877-2.65712 8.5858-3.51417 2.56093-.33119 5.0634-.16939 7.35927.48036.31975.05562.61385.17444.8626.35394.26392.26546.42925.61688.4745 1.01127.3385 1.795.36843 3.6153.56046 5.38502z" fill-opacity=".1" fill-rule="nonzero"/>
|
30 |
+
<circle cx="263.84" cy="289.36" r="6.94" fill="#eebdbc" transform="matrix(2.52818 0 -.52025 2.52818 -410.14515 -614.02026)"/>
|
31 |
+
<path d="M143.65241 151.42549c-25.1774 27.24618-65.45793 27.78215-81.99058 4.84904.54877-1.33993 1.32584-2.63436 2.27914-3.80238.97851-1.15538 2.39943-1.86832 3.77795-1.89613.73317 0 1.51024.2781 2.15041-.25282.64017-.53092.55164-.9607 1.0037-1.31465.45207-.35395 1.36221-.35395 2.0597-.30339 1.53178.05057 3.149-.6826 4.29399-1.9467.36728-.47023.78796-.90508 1.25132-1.28936.7315-.32361 1.49053-.5107 2.23812-.5562 2.14148-.45508 3.7816-2.52818 5.58913-3.81755.93125-.852 2.19218-1.18066 3.2055-.8343.22122.12893.39918.30843.52279.53091.28352.6371.41996 1.35005.40249 2.0984.05106 4.1993-1.27003 4.6114 1.52931 7.29885 2.19473 1.9644 23.10548 2.98325 26.64105-2.29306 1.8501-3.05657 3.21938-6.29517 4.04487-9.5818l.08844-.4298c2.18682-.51574 4.30444-.0809 5.77255 1.18825 1.41442 1.28432 2.97487 2.41189 4.6678 3.36248 2.06799.88486 4.87427.88486 6.0783 2.52818.52205.65733.78983 1.56747 1.5409 1.97198.47665.20225.9962.3312 1.53999.37923 2.7007.7711 1.31313 4.11082 1.31313 4.11082z" fill="#3f3d56" fill-rule="nonzero"/>
|
32 |
+
<path d="M100.09649 89.06542c-1.42453.98852-2.46474 2.40683-3.78745 3.53945-2.29584 1.96693-8.08153 11.35911-8.75377 13.8519-2.09478 7.77162-1.48864 17.14863 1.13822 16.52165-3.0469-2.197 6.9098-20.07627 11.56564-18.14222.92388-.1896 15.01883 4.82124 18.886 2.7987 1.1419-.20478-.8238-1.2919.31469-1.43095 4.97034-.6017 3.88945 8.11545 2.80855 10.01412l.58875 5.73896c.10121.85958 3.05726-1.2565 3.4857-2.0731 1.96528-3.73918 3.4943-7.58201 3.57475-11.35153.08104-3.78468 2.57495-8.09017.54394-10.99758-.7474-1.03655-1.85022-1.82029-2.50617-2.93268-.65595-1.1124-.81594-2.30065-1.46221-3.3372-2.81365-3.01106-6.7134-4.88444-11.15873-5.35974-4.97692-.44749-10.29297.6548-15.23791 3.16022z" fill="#6e2e16" fill-rule="nonzero"/>
|
33 |
+
</g>
|
34 |
+
<g>
|
35 |
+
<ellipse cx="140.04" cy="838.19" rx="100.11" ry="24.73" fill="#1d58bf" fill-opacity=".1" transform="translate(-25.71766 -135.89034) scale(.64406)"/>
|
36 |
+
<path d="M78.778 409.97841l9.09264-2.84603c2.55246-1.90823 1.85114-4.21605.6687-5.93672-.82528-1.11476-2.09824-1.81608-3.48212-1.91638-.60753-.1003-1.18653-.33109-1.6962-.67685-.55535-.33598-1.0218-.8008-1.36186-1.3537-.61243-1.06503-.92068-2.27846-.88888-3.50658.0318-1.22812-9.73686-3.26193-12.54212-.48114-.49582.50479-.9158 1.07889-1.2477 1.70436-.96226 1.96042-1.4752 4.11167-1.50048 6.29553-.02528 2.18386-.61977 3.10699-1.57388 6.65434-.95412 3.54735 14.5319 2.06317 14.5319 2.06317zm-43.71804-6.10796l9.09264-2.84604c2.55246-1.90823 1.85114-4.21605.6687-5.92856-.82527-1.12047-2.10232-1.82424-3.49027-1.92454-.3523-.04648-.69398-.15168-1.0112-.30988-.23241-.10846-.45912-.2316-.67685-.36697-2.44645-1.47602-2.25889-4.8929-2.25889-4.8929s-9.73687-3.26193-12.54213-.48113c-.37593.37512-.71028.79102-.99489 1.23953-1.14004 2.07214-1.74513 4.39545-1.76144 6.76035-.0163 2.3649-.62792 3.11515-1.57388 6.65434-.94596 3.5392 14.54821 2.0958 14.54821 2.0958z" fill="#2d293d" fill-rule="nonzero"/>
|
37 |
+
<path d="M22.55046 376.4213c.6483 1.23055 1.19305 2.5125 1.63096 3.83276l-.39959 9.89996c2.3486 4.24051 15.44525 3.3598 17.28824 1.1743 1.843-2.1855 3.94694-8.0162 1.98163-9.09264-1.96532-1.07643-3.40872-6.16505-3.40872-6.16505s2.1121.58715 5.65945-3.26193 2.87865-12.82754 2.32413-14.98042c-.55453-2.15287.36696-9.2802.36696-9.2802s.06524-5.02337 1.13352-6.61356c1.06829-1.5902 3.5555-10.78884 3.5555-10.78884s.11418-3.1396 1.9327-4.69718c1.81853-1.55757 3.1967-7.91834 3.1967-7.91834 1.0903-1.55676 1.6065-3.44623 1.45971-5.34141-.2528-3.14777 2.38121-6.44232 2.38121-6.44232l4.78689-13.37392 4.4036-10.00597 2.03056 5.97749s.09785 13.82243-.51376 16.68478c-.61161 2.86234-1.63096 10.4871-1.63096 10.4871s2.31597 5.11308 1.0275 9.33729c-1.28846 4.2242-1.27215 13.38207-1.27215 13.38207s-1.8593 18.89474-.91334 20.436c.94596 1.54126.67685 5.30064.67685 5.30064s-5.5616 10.83777-3.99587 12.41165c1.56573 1.57388.91335 5.70838.91335 5.70838s-3.50658-.13863-2.06318 1.4271c1.4434 1.56572 2.21812 9.45144 2.21812 9.45144l15.09459 2.34044a31.93975 31.93975 0 0 0 3.63705-6.27106c2.1855-4.55855-.21203-4.15081-2.20996-4.7298-1.99793-.579-.67685-1.78591 1.76144-3.1967 2.4383-1.41078 1.1906-4.85212 1.1906-4.85212s-3.40055-6.28737-2.12025-6.73589c1.28031-.44852 1.72883-9.10079 1.72883-9.10079s2.90312-10.19354 2.3812-12.97433c-.5219-2.7808 2.37306-9.32913 2.37306-9.32913l1.1743-7.86125c2.85827-4.37588 4.04316-9.63901 3.33532-14.81733l.47298-12.167s4.43623-23.3962 5.43112-35.33488c.61977-7.6166.92965-18.03032 1.06828-24.52972.08155-3.65337.11417-6.0672.11417-6.0672l-53.9605-7.73077c-.18757 2.70332-.6214 5.38381-1.29662 8.00804-.66054 2.9602-1.6799 6.77666-3.26193 11.53908-4.41992 13.64303-2.44645 24.01597-2.44645 24.01597l-.17125 17.45134s-5.2191 11.482-4.36284 15.53495a33.17357 33.17357 0 0 1 .71763 7.33934c-.03425 2.4652-11.61248 25.01902-10.76438 32.43176.8481 7.41274-4.24866 18.92736-4.24866 18.92736s-1.57388 8.25268-.40774 10.5605z" fill="#575988" fill-rule="nonzero"/>
|
38 |
+
<path d="M56.04234 312.2754l-16.40752-2.85418s8.97847 9.91627 16.40752 2.85419z" fill-opacity=".05" fill-rule="nonzero"/>
|
39 |
+
<path d="M76.29078 318.39153s10.3811 2.78895 10.53604 6.99684c.15494 4.2079-10.53604-6.99684-10.53604-6.99684z" fill-opacity=".1" fill-rule="nonzero"/>
|
40 |
+
<path d="M46.34625 117.0488l.76655 4.61563-.13048 2.0387-.09785 1.5005 5.21093.74209.62792-1.06013c1.15799-1.91639 3.5555-5.82255 4.3139-6.4097.9949-.7747 3.21301-13.43916 1.10906-12.77046-1.28275.442-2.35756 1.34228-3.01728 2.528-.65973 1.1857-10.32402.78286-8.78275 8.81537z" fill="#ffcdd3" fill-rule="nonzero"/>
|
41 |
+
<path d="M46.88447 125.20363l5.21093.74209.62792-1.06013c-1.3806-1.6856-3.77487-2.17816-5.70838-1.1743l-.13047 1.49234z" fill-opacity=".1" fill-rule="nonzero"/>
|
42 |
+
<path d="M45.46553 127.63376l6.8419 1.86746.1794-1.0275.49745-2.74819c-.88806-1.27541-2.34778-2.03789-3.90209-2.03789-.98265 0-1.94166.30418-2.7441.87175l-.39143 1.39448-.48113 1.6799z" fill="#dce6f2" fill-rule="nonzero"/>
|
43 |
+
<path d="M157.62705 121.86015l7.20886 4.2405s.30173-.57899.72578-1.37c.7584-1.4434 1.88377-3.6126 2.2018-4.39546.48114-1.19876 3.6126-2.62585 3.6126-2.62585 7.99988-7.07024-.94596-13.74904-.94596-13.74904-4.48516-9.97336-10.40557 2.91942-10.40557 2.91942s-1.01935 6.87453-.5056 7.33935c.51376.46483.44037 2.37306.44037 2.37306a27.72058 27.72058 0 0 0-1.94085 4.14265c-.2528.67685-.39143 1.12537-.39143 1.12537z" fill="#ffcdd3" fill-rule="nonzero"/>
|
44 |
+
<path d="M156.7871 124.03749l8.15483 4.39545.22833-1.77775.1631-1.22323s-4.63194-4.28944-6.05088-4.19158a7.70816 7.70816 0 0 1-2.16919-.0897l-.14679 1.48417-.1794 1.40264z" fill="#dce6f2" fill-rule="nonzero"/>
|
45 |
+
<path d="M65.24099 148.23286s35.93833 5.46374 29.27583 3.01729c-4.6401-1.71251-6.39338-4.77058-6.65434-8.09775-.0897-2.855.46809-5.69288 1.63097-8.30161.94433-2.24258 2.11047-4.38404 3.48211-6.39339 1.37164-2.00935-27.0088-16.23626-22.01804-2.22627a22.1168 22.1168 0 0 1 1.31293 6.59726 18.6016 18.6016 0 0 1-.96227 6.5891c-1.17185 3.44053-3.27172 6.49206-6.0672 8.81537z" fill="#ffcdd3" fill-rule="nonzero"/>
|
46 |
+
<path d="M70.99014 126.23113a22.1168 22.1168 0 0 1 1.31293 6.59726c2.51169 2.2752 5.36588 2.24258 9.0274 2.38121 2.81341.11417 5.89594.91334 8.15482-.35881.94433-2.24258 2.11047-4.38404 3.48212-6.39339 1.37164-2.00935-26.96802-16.23626-21.97727-2.22627z" fill-opacity=".1" fill-rule="nonzero"/>
|
47 |
+
<circle cx="183.01" cy="496.73" r="18.31" fill="#ffcdd3" transform="translate(-66.88348 -283.81029) scale(.81548)"/>
|
48 |
+
<path d="M65.24099 148.23286s35.93833 5.46374 29.27583 3.01729c-4.6401-1.71251-6.39338-4.77058-6.65434-8.09775-1.72067-2.01424-5.27617-3.5555-7.56768-4.39545-2.086-.7853-4.36446-.9109-6.52386-.35881a8.9808 8.9808 0 0 0-2.44645 1.01935c-1.17593 3.44297-3.28232 6.4945-6.0835 8.81537zm-19.77546-20.5991l6.8419 1.86746.1794-1.0275c-1.42465-2.12353-4.04153-3.13472-6.52386-2.51985l-.49744 1.6799zm111.32157-3.59627l8.15483 4.39545.22833-1.77775c-2.64298-1.52822-5.39605-2.85827-8.23638-3.97956l-.14678 1.36186z" fill-opacity=".1" fill-rule="nonzero"/>
|
49 |
+
<path d="M33.65733 234.80453s45.71597 9.67163 50.71489 8.3587c4.9989-1.31293 30.29519 1.28846 30.29519 1.28846 11.11503 8.0896 6.78481-3.3761 6.78481-3.3761s1.23138-5.85516 0-10.67467c-.78857-3.53022-1.28275-7.11998-1.47602-10.73175-.19327-3.61178.54637-7.51876-.76655-9.32097-1.31293-1.80222-2.44645-14.41774-2.44645-14.41774s-.9215-8.57073-.72578-10.44634c.19571-1.8756-.09786-7.1681-.09786-7.1681l-1.29662-8.83983c9.45145-.88887 38.71913-17.34532 38.71913-17.34532 1.63097-5.83886 12.79493-19.22909 12.79493-19.22909.2006-1.1539.53985-2.27927 1.0112-3.35163.81548-1.97347-10.29955-6.41785-10.29955-6.41785s-8.81537 9.95705-10.64206 12.64814c-1.82668 2.6911-8.08143 7.6003-8.08143 7.6003-.93128-.12966-1.8805-.04322-2.77264.2528h-.1468a22.42072 22.42072 0 0 0-5.70837 3.00913c-2.82402-.17614-5.6089.75106-7.7634 2.58508-2.1545 1.83402-5.11308-.94596-6.01826-.10601-.90519.83995-5.26802-.20387-5.26802-.20387s-4.07742-9.4433-7.02131-6.85821c-2.9439 2.58508-15.22507 1.98978-15.22507 1.98978-1.54126-2.23443-5.45558-3.93879-7.90202-4.83582-2.0852-.7902-4.36447-.91497-6.52387-.35881-.93699.23078-1.8275.61977-2.634 1.14983l-7.69817 6.98053s-2.03055-2.83788-1.75328-3.45764c.27726-.61977-2.44645-1.22323-2.44645-1.22323s-3.59628-1.27215-4.95814-1.6962c-1.36186-.42405-2.6911 1.0112-2.80526 1.14167.62221-1.7598.89948-3.62319.81548-5.4882-.28542-2.39752 1.67174-4.46069 1.67174-4.46069-3.9714-10.95193-14.22202-2.29966-14.22202-2.29966s-1.36186 5.84701-.44036 8.15483c.9215 2.30782-1.27215 6.98053-1.07644 8.24453.19572 1.264-.62792 3.36795-.71762 5.74916-.0897 2.3812.98673 6.94791 1.63096 8.9703.64423 2.0224 6.52387 6.78483 6.52387 6.78483s.106 7.15994 2.57692 11.41676.30173 18.34836.30173 18.34836-2.93574 10.93563-6.20582 14.32804c-3.2701 3.3924-8.7012 23.3065-8.7012 23.3065z" fill="#656691" fill-rule="nonzero"/>
|
50 |
+
<path d="M102.54933 188.85207c.12232-.13864-29.52048 34.47046-50.6741 12.9988 0 0 34.49492 6.03457 50.6741-12.9988z" fill-opacity=".1" fill-rule="nonzero"/>
|
51 |
+
<path d="M110.25564 170.95222c-1.8854 3.93144-4.23072 7.62395-6.98869 11.00086-3.0132 3.7341-6.61682 6.95118-10.66651 9.52484-4.04969 2.57367 17.28008-18.24235 17.6552-20.5257z" fill-opacity=".1" fill-rule="nonzero"/>
|
52 |
+
<path d="M85.8727 134.94865c-.1533.79101-.59856 1.4964-1.24769 1.97347-.44606.19571-.9329.28215-1.41894.2528-4.55854.11416-9.30466.13047-13.43915-1.78591a5.0721 5.0721 0 0 1-1.99794-1.43525c-.71762-.94596-.81548-2.19365-1.06828-3.35164-.5056-2.25073-1.68805-4.28128-2.51169-6.44231-1.38713-3.63787-1.74513-7.58889-1.03566-11.41676a7.63626 7.63626 0 0 1 1.264-3.26193c1.27215-1.67174 3.49842-2.28336 5.1457-3.59628 1.64727-1.31293 2.75633-3.36795 4.66456-4.33022 1.71251-.86441 3.75937-.67685 5.64314-.27726 3.6974.7747 7.21295 2.25073 10.35663 4.34652 1.05198.70947 2.20996 1.5168 3.4658 1.32924 1.07644-.29847 2.01588-.96146 2.65848-1.87561.80733 2.07377 1.10416 4.31146.86441 6.52386a2.81735 2.81735 0 0 0 0 .97858 2.98752 2.98752 0 0 0 .65239 1.06828c1.06828 1.34555 1.6962 3.43319.53822 4.70534-.5056.55453-1.264.81548-1.7533 1.41078-.88071 1.0112-.66053 2.528-.69315 3.87355.02935.46727-.10275.93128-.37512 1.31293-.51376.43546-1.21834.5741-1.8593.36696-.62874-.21447-1.29418-.30336-1.95716-.26095-.70703.20305-1.32598.64015-1.7533 1.23953-2.20995 2.56062-3.1233 5.4719-4.14265 8.65228z" fill="#2d293d" fill-rule="nonzero"/>
|
53 |
+
<path d="M88.18052 144.09836s-18.7561 1.7533-20.30552-1.1172" fill-opacity=".1" fill-rule="nonzero"/>
|
54 |
+
</g>
|
55 |
+
<g>
|
56 |
+
<path fill="#535461" d="M526.25682 301.60485h2.1798v49.02164h-2.1798z"/>
|
57 |
+
<path d="M542.11714 350.47574l-.13758 2.20989-.18918 3.11705-.08169 1.28982-.19347 3.11706-.08169 1.28981-.19347 3.11276-2.19699 35.44847c-.19605 3.148-2.83501 5.6352-5.98905 5.6451h-11.41487c-3.14974-.00903-5.78655-2.48892-5.98905-5.6322l-2.2013-35.44847-.18916-3.11276-.0817-1.28981-.19776-3.11706-.0774-1.28982-.19347-3.11706-.13758-2.20988a3.07748 3.07748 0 0 1-.00559-.18917c0-1.70514 1.4029-3.10846 3.10846-3.10846h23.34827c1.7004 0 3.09986 1.39945 3.09986 3.09986 0 .06148-.00172.12339-.0056.18487z" fill="#3f3d56" fill-rule="nonzero"/>
|
58 |
+
<path d="M541.98399 352.6859l-.19347 3.11705h-28.8876l-.18917-3.11705h29.27024zm-.27086 4.41547l-.19348 3.12135h-28.34157l-.19347-3.12135h28.72852zm-.27946 4.41977l-.18918 3.11706h-27.79125l-.19347-3.11706h28.1739z" fill="#9d9cb5" fill-rule="nonzero"/>
|
59 |
+
<path d="M509.38586 319.98049c12.6789 9.1706 17.95856 23.52196 17.95856 23.52196s-15.28004-.52452-27.94604-9.69942-17.99295-23.52197-17.99295-23.52197 15.29723.52453 27.98043 9.69943z" fill="#16bd83" fill-rule="nonzero"/>
|
60 |
+
<path d="M481.40543 310.28106s15.86045 8.80515 20.94663 16.09262c5.08618 7.28747 24.97516 17.12877 24.97516 17.12877" fill="none" stroke="#fff" stroke-width=".85988" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="10"/>
|
61 |
+
<path d="M517.5676 301.4974c6.90482 4.9916 9.77682 12.8036 9.77682 12.8036s-8.31502-.28807-15.21985-5.27966c-6.90482-4.9916-9.77251-12.80358-9.77251-12.80358s8.31502.28376 15.21554 5.27965z" fill="#16bd83" fill-rule="nonzero"/>
|
62 |
+
<path d="M502.35206 296.21776s8.62888 4.79382 11.40198 8.75785c2.77311 3.96404 13.59038 9.32538 13.59038 9.32538" fill="none" stroke="#fff" stroke-width=".85988" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="10"/>
|
63 |
+
<path d="M537.3749 313.90115c-7.92808 8.71486-9.60484 20.09965-9.60484 20.09965s11.17841-2.74301 19.10649-11.45788c7.92807-8.71486 9.60483-20.09535 9.60483-20.09535s-11.17841 2.73871-19.10649 11.45358z" fill="#16bd83" fill-rule="nonzero"/>
|
64 |
+
<path d="M556.48138 302.44757s-10.31853 8.92984-12.95406 15.08656c-2.63552 6.15673-15.75726 16.46667-15.75726 16.46667" fill="none" stroke="#fff" stroke-width=".85988" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="10"/>
|
65 |
+
</g>
|
66 |
+
</svg>
|
assets/images/home-smart-targeting.svg
ADDED
@@ -0,0 +1,126 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0" encoding="utf-8"?>
|
2 |
+
<svg viewBox="0 0 600 500" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:serif="http://www.serif.com/" fill-rule="evenodd" clip-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="1.5">
|
3 |
+
<path d="M272.91048 457.96044c43.8601-24.27188 93.96317-32.02863 142.92805-21.62559 69.38399 14.75093 156.58632 8.96893 173.47704-104.83287 28.84739-194.3571-92.03964-245.65527-92.03964-245.65527s-80.39026-6.73239-127.92672-32.3644C301.82617 17.06027 224.6456 12.42216 156.7811 43.23861c-43.39914 19.69067-79.13826 47.10964-85.24464 84.75523C54.4636 233.27629 82.50289 291.28408 30.04947 325.65169c-52.45343 34.3676-7.62587 128.72345 32.58634 125.45685 40.2122-3.2666 131.0795-39.10247 166.48855 2.40727 12.57699 14.72247 28.48887 12.91275 43.78612 4.44463z" fill="#1d58bf" fill-opacity=".1" fill-rule="nonzero"/>
|
4 |
+
<path fill="url(#_Linear1)" d="M155.01 231.1h435.45v108.25H155.01z" transform="matrix(.74209 0 0 .74209 49.55684 49.0428)"/>
|
5 |
+
<path fill="#fff" d="M166.39116 222.35002h320.43358v76.72447H166.39116z"/>
|
6 |
+
<path d="M448.34178 241.46528c0-2.27186-1.84483-4.11653-4.1167-4.11653H252.97083c-2.27242 0-4.1167 1.84467-4.1167 4.11653v8.2335c0 2.27229 1.84428 4.11695 4.1167 4.11695h191.25423c2.27188 0 4.11671-1.84466 4.11671-4.11696v-8.23349z" fill="#3f3d56"/>
|
7 |
+
<path d="M448.34178 260.23417c0-1.51458-1.23007-2.74435-2.74447-2.74435H251.5986c-1.51495 0-2.74448 1.22977-2.74448 2.74435v5.48898c0 1.51487 1.22953 2.74464 2.74448 2.74464h193.9987c1.5144 0 2.74447-1.22977 2.74447-2.74464v-5.48898z" fill="#16bd83"/>
|
8 |
+
<path d="M309.39697 275.25996c0-1.51457-1.2299-2.74435-2.7445-2.74435H251.5985c-1.51476 0-2.7445 1.22978-2.7445 2.74435v5.489c0 1.51485 1.22974 2.74463 2.7445 2.74463h55.05397c1.5146 0 2.7445-1.22978 2.7445-2.74464v-5.48899z" fill="#9795b1"/>
|
9 |
+
<g fill-rule="nonzero">
|
10 |
+
<path d="M325.6426 281.2279c.59162 0 .87847-.11696 1.16532-.26893l-.30477-.94122c-.19721.09874-.41235.15267-.55578.15267-.26892 0-.38545-.17998-.38545-.55605v-1.86494h1.19222v-.96784h-1.19222v-1.5596l-1.16532.12535v1.43425h-.51992v.96784h.51992v2.02601c0 .98604.49302 1.45246 1.246 1.45246zM329.68517 276.71016c-.51963 0-.9948.25071-1.32647.71712h-.00896v-.64569h-1.1743v4.37487h1.1743v-2.03511c0-.6457.39442-1.13872 1.12043-1.13872.06303 0 .18839 0 .30464.0091v-1.27317c-.0175-.0084-.05322-.0084-.08964-.0084zM332.93954 276.78159v2.12476c0 .84248-.4573 1.27247-.96854 1.27247-.54695 0-.78855-.26892-.78855-1.07568v-2.32155h-1.16533v2.63529c0 1.3362.6632 1.81102 1.60442 1.81102.49303 0 .96854-.2066 1.29979-.60998h.0182v.53854h1.17444v-4.37487h-1.17443zM336.22892 281.2279c1.14782 0 1.70317-.58267 1.70317-1.36282 0-.85999-.55535-1.06658-1.50568-1.41604-.4307-.16107-.6632-.28713-.6632-.4664 0-.23321.24161-.33126.43-.33126.32284 0 .70801.14357 1.04907.46571l.56445-.86069c-.49302-.38517-.98604-.54624-1.59532-.54624-.8964 0-1.5778.51963-1.5778 1.30889 0 .84248.62748 1.18283 1.3446 1.42514.57356.17928.79766.27803.79766.48392 0 .215-.19679.35856-.53784.35856-.47482 0-.85159-.17018-1.21015-.51123l-.57356.81587c.48392.41248 1.07569.63659 1.7746.63659zM339.7431 281.2279c.59177 0 .8782-.11696 1.16533-.26893l-.30464-.94122c-.19748.09874-.41248.15267-.55605.15267-.26892 0-.38517-.17998-.38517-.55605v-1.86494h1.19194v-.96784h-1.19194v-1.5596l-1.16533.12535v1.43425h-.52033v.96784h.52033v2.02601c0 .98604.49303 1.45246 1.24587 1.45246z" fill="#1d58bf"/>
|
11 |
+
<path d="M343.79513 276.71016c-.53784 0-.99514.19679-1.3271.57356h-.0175v-.50213h-1.17443v6.14947h1.17443v-2.26762h.0175c.30464.35786.73534.56446 1.29069.56446 1.21925 0 2.09744-.8964 2.09744-2.25012 0-1.3264-.8873-2.26762-2.06103-2.26762zm-.25141 3.46866c-.63659 0-1.13871-.47481-1.13871-1.19194 0-.69891.4664-1.22835 1.13871-1.22835.62748 0 1.1205.47551 1.1205 1.22835 0 .70802-.4573 1.19194-1.1205 1.19194zM349.20928 276.78159v2.12476c0 .84248-.45731 1.27247-.96854 1.27247-.54695 0-.78856-.26892-.78856-1.07568v-2.32155h-1.16532v2.63529c0 1.3362.6632 1.81102 1.60442 1.81102.49302 0 .96854-.2066 1.29979-.60998h.0182v.53854h1.17444v-4.37487h-1.17443zM351.13654 274.55879h1.1743v6.59753h-1.1743zM354.51557 281.2279c1.14782 0 1.70317-.58267 1.70317-1.36282 0-.85999-.55535-1.06658-1.50568-1.41604-.43-.16107-.6632-.28713-.6632-.4664 0-.23321.2416-.33126.43-.33126.32284 0 .70801.14357 1.04907.46571l.56445-.86069c-.49302-.38517-.98604-.54624-1.59532-.54624-.8964 0-1.57781.51963-1.57781 1.30889 0 .84248.62748 1.18283 1.3446 1.42514.57356.17928.79767.27803.79767.48392 0 .215-.1968.35856-.53785.35856-.47481 0-.85158-.17018-1.21014-.51123l-.57356.81587c.48392.41248 1.07568.63659 1.7746.63659zM360.70986 278.92386c0-1.28158-.86069-2.2137-2.14226-2.2137-1.24587 0-2.16958.92301-2.16958 2.24941 0 1.37192.96853 2.26833 2.25011 2.26833.8782 0 1.51479-.34946 1.89156-.82498l-.76195-.70802c-.2423.29554-.58266.50213-1.04907.49303-.56446 0-.97694-.32285-1.1205-.84248h3.07508c.02661-.07214.02661-.27803.02661-.4216zm-2.10655-1.18284c.51123 0 .82497.30464.94123.76195h-1.92727c.13446-.50213.51123-.76195.98604-.76195z" fill="#00aded"/>
|
12 |
+
</g>
|
13 |
+
<path d="M319.7257 275.30226c-.38986-.10527-.77052-.2453-1.1363-.42481-.31036-.15228-.60971-.32576-.90303-.50838a4.2806 4.2806 0 0 1-.01709.01057c-.77207.47911-1.59295.8661-2.50487 1.03732-.32905.06177-.66186.10054-.99532.12897l-.01064.0009c-.08214 1.83573.04033 3.72786 1.01522 5.302.59422.95948 1.51362 1.67796 2.48731 2.27518l.02539.01547c.39846-.2435.78982-.50318 1.15399-.79322h.82667c-.58592.55146-1.2694 1.0136-1.96423 1.42616-.03256-.02228-.03286 0-.03286 0-.87644-.52039-1.7297-1.09562-2.39376-1.85939-.4511-.51878-.80828-1.11492-1.0657-1.76017-.64685-1.6215-.68783-3.42665-.57505-5.12152.71688-.04272 1.44492-.1116 2.13115-.33287.67679-.21823 1.30011-.58061 1.90217-.97149l.01762-.01147c.0117.00765.02342.01524.03519.02289.75934.49189 1.56971.92602 2.4621 1.11205a6.70182 6.70182 0 0 0 .15359.0301l-.61155.4217zm-.18137 6.3196h-1.13481c-.18968-.00807-.20246-.10413-.20646-.19786-.00472-.11147.06756-.20944.20646-.21536h.97721l.30892-1.12615s.05962-.13943.17946-.15096c.09582-.00926.1782.03118.21793.14708l.46674 1.57933.28591-.89854s.09248-.1638.23932-.13955c.08005.02049.08328.0242.1297.088l.33232.5008h.79574c.00095.00011.14767.01994.1917.12957.05096.12676-.0297.27677-.1917.28364h-.90661c-.09857-.00406-.1267-.0297-.17211-.09236l-.15532-.234-.35934 1.1295s-.06332.13453-.18149.14337c-.09444.00705-.1745-.03333-.21356-.1475l-.45205-1.52962-.15873.5787s-.0721.14635-.19923.1519zm2.22392-6.01941c.04015.9777.0101 1.95688-.15741 2.92341-.07635.44076-.24278 1.04897-.38855 1.47276l-.52451-.1705c.4453-1.17472.553-2.4526.53371-3.70331l.53676-.52236z" fill="#00aded" fill-rule="nonzero"/>
|
14 |
+
<path d="M317.47913 278.11795c.0313-.03567.03942-.0591.08607-.12694.26902-.39144 1.0659-1.44674 2.07848-2.25845.44062-.35324.91685-.67436 1.33812-.88485.70208-.35082.92816-.39358 1.25422-.46955.06193-.01441.2862-.05444.3234.03392.0359.0853-.10398.1752-.15647.21644-.05901.04636-1.40842 1.05544-2.54368 2.55401-.98784 1.3039-1.63428 3.0147-1.63428 3.0147-.01987.038-.24452.43947-.54593.45902-.27857.01812-.63633-.34423-.63633-.34423-.06877-.06417-.40417-.4622-.68325-.95452-.35593-.62769-.66242-1.37175-.66242-1.37175s-.31816-.62589.28165-.9701c.5914-.33943.85484.00518.9832.20862.10968.17387.33068.59624.4375.80282.0372.07196.06126.11187.07972.09086z" fill="#1d58bf" fill-rule="nonzero"/>
|
15 |
+
<g>
|
16 |
+
<circle cx="88.506" cy="368.331" r="25.699" fill="#16bd83" transform="matrix(1.18365 0 0 1.18365 100.94546 -175.28964)"/>
|
17 |
+
<use xlink:href="#_Image2" x="181.346" y="244.303" width="49.842" height="52.476" transform="matrix(.99684 0 0 .99012 -.00022 -.0002)"/>
|
18 |
+
</g>
|
19 |
+
<g>
|
20 |
+
<path d="M170.49794 160.88521a7.8653 7.8653 0 0 1-2.90097 1.10064c-3.78148.11007-6.89472-10.12589-6.89472-10.12589s1.07705-1.08491 2.7909-2.61008c5.06295-4.51263 15.72343-12.83032 20.67631-8.17619 5.57396 5.22018-7.16988 16.28947-13.67152 19.81152zM113.06026 404.85777l-13.93881 15.02374s-12.90108.1415-10.37747-6.97334a26.13126 26.13126 0 0 0 1.0692-4.71703c.64073-5.05273.94498-10.1424.91196-15.236 0-3.34123-.05504-5.68402-.05504-5.68402s20.31467-8.89946 18.23918.3695c-.25944 1.1596-.39938 2.342-.41667 3.5299-.00393 3.434.7901 6.82319 2.3192 9.8979.62344 1.33414 1.3766 2.60302 2.24845 3.78935z" fill="#ecb4b6" fill-rule="nonzero"/>
|
21 |
+
<path d="M145.41122 427.53095c-4.72961 4.02992-10.77684 6.19032-16.98917 6.06925-11.49382-.17296-33.0192-.50315-37.97994-.71542-6.66673-.28302-4.45759-5.98276-4.23746-9.91362v-.39309c.07076-3.93085.88837-12.45295 2.19342-13.78944 1.30504-1.3365 5.88842 5.92773 5.88842 5.92773s8.89946 2.60223 11.34446-5.18873c2.44499-7.79096 7.42931-8.51424 7.42931-8.51424 2.26418-.98271 2.35852 4.88999 2.35852 4.88999l18.86811 9.70922 11.05357 1.7453c.35378.1651.68397.33019.98272.48742 4.95287 2.75946 2.74373 6.51736-.91196 9.68563z" fill="#6c63ff" fill-rule="nonzero"/>
|
22 |
+
<circle cx="169.35" cy="649.12" r="1.04" fill="#fff" fill-opacity=".25" transform="translate(-22.52281 -98.55965) scale(.78617)"/>
|
23 |
+
<circle cx="179.06" cy="653.93" r="1.04" fill="#fff" fill-opacity=".25" transform="translate(-22.52281 -98.55965) scale(.78617)"/>
|
24 |
+
<circle cx="184.06" cy="656.17" r="1.04" fill="#fff" fill-opacity=".25" transform="translate(-22.52281 -98.55965) scale(.78617)"/>
|
25 |
+
<circle cx="194.44" cy="660.15" r="1.04" fill="#fff" fill-opacity=".25" transform="translate(-22.52281 -98.55965) scale(.78617)"/>
|
26 |
+
<circle cx="189.16" cy="658.45" r="1.04" fill="#fff" fill-opacity=".25" transform="translate(-22.52281 -98.55965) scale(.78617)"/>
|
27 |
+
<path d="M145.41122 427.53095c-4.72961 4.02992-10.77684 6.19032-16.98917 6.06925-11.49382-.17296-33.0192-.50315-37.97994-.71542-6.66673-.28302-4.45759-5.98276-4.23746-9.91362l41.9108 2.5865s17.16212-2.60222 18.18414-7.7202c4.97646 2.76732 2.76732 6.52522-.88837 9.6935z" fill="#6c63ff" fill-rule="nonzero"/>
|
28 |
+
<path d="M145.41122 427.358c-4.72647 4.0362-10.77527 6.19738-16.98917 6.06924-11.49382-.1651-33.0192-.49529-37.97207-.70756-6.6746-.29088-4.46546-5.99062-4.24533-9.92148l41.9108 2.5865s17.16212-2.60222 18.18414-7.71234c4.97646 2.76733 2.76732 6.52523-.88837 9.68564z" fill="#fff" fill-opacity=".25" fill-rule="nonzero"/>
|
29 |
+
<path d="M67.3837 367.04293c-1.5464 1.25316-2.956 2.66512-4.206 4.21388-4.15886 4.83495-9.30042 12.06773-11.85547 15.72342l-1.57235 2.31135-5.57395-.85693s-6.00635-9.19034-5.92773-9.43406c.07861-.2437 4.71703-10.08657 4.71703-10.08657l1.80819-2.1148 5.69188-6.65888 2.57864-3.0189s19.38699 6.28938 14.33977 9.92149z" fill="#ecb4b6" fill-rule="nonzero"/>
|
30 |
+
<path d="M45.08789 398.65488s-3.71073 8.01109-5.71547 12.57874c-2.00473 4.56766-1.25787 7.93247-1.25787 7.93247a7.31259 7.31259 0 0 1-.6368 1.72172c-.91196 1.81605-3.0189 4.46545-7.59442 4.8035a2.65628 2.65628 0 0 1-.35377 0c-6.76108-.18082-8.90732-19.80365-8.90732-19.80365s1.02988-37.3746 2.956-39.74883c.26966-.26572.61164-.44654.98271-.51887 1.9678-.34199 3.97567-.39545 5.95918-.15724 6.11642.44026 13.97027 1.94185 13.97027 1.94185h1.4151c-4.97646 5.18873.36165 16.60394.36165 16.60394s2.35851.22799 4.2296 3.56135c1.87109 3.33337-5.40886 11.08502-5.40886 11.08502z" fill="#6c63ff" fill-rule="nonzero"/>
|
31 |
+
<circle cx="75.64" cy="618.27" r="1.04" fill="#fff" fill-opacity=".25" transform="translate(-22.52281 -98.55965) scale(.78617)"/>
|
32 |
+
<circle cx="75.13" cy="626.51" r="1.04" fill="#fff" fill-opacity=".25" transform="translate(-22.52281 -98.55965) scale(.78617)"/>
|
33 |
+
<path d="M36.94315 420.73843c-1.44734 2.87818-4.37347 4.73197-7.59441 4.81137h-.35378c-6.76107-.1651-8.91518-19.81938-8.91518-19.81938s1.03774-37.36672 2.96386-39.74096c.26573-.27202.60929-.45598.98272-.52674 1.96621-.33412 3.97016-.3868 5.95131-.15723-.11006 6.7139-.43239 27.9484.03931 30.05533.4717 2.10694 4.23747 19.7329 6.92617 25.37761z" fill="#6c63ff" fill-rule="nonzero"/>
|
34 |
+
<path d="M37.43058 420.87994c-1.44813 2.8766-4.37504 4.72725-7.59442 4.80351a2.65628 2.65628 0 0 1-.35377 0c-6.76894-.18082-8.91519-19.80366-8.91519-19.80366s1.03775-37.37458 2.96387-39.74882c.26494-.2673.60535-.44812.97485-.51887 1.96779-.34199 3.97567-.39466 5.95918-.15724-.11006 6.7139-.4324 27.9484 0 30.05533.4324 2.10694 4.26891 19.71718 6.96548 25.36975z" fill="#fff" fill-opacity=".25" fill-rule="nonzero"/>
|
35 |
+
<path d="M28.99496 425.5498c-6.76107-.1651-8.91518-19.81938-8.91518-19.81938s1.03774-37.36672 2.96386-39.74096c.26573-.27202.60929-.45598.98272-.52674 1.4151 2.1148 2.65726 6.78466 1.57234 17.05992-2.1148 19.4656.4324 20.68417.4324 20.68417s3.1211 16.53318 2.96386 22.343z" fill="#6c63ff" fill-rule="nonzero"/>
|
36 |
+
<path d="M28.93993 425.5498c-6.76108-.1651-8.91518-19.81938-8.91518-19.81938s1.03774-37.36672 2.96386-39.74096c.26573-.27202.60928-.45598.98272-.52674 1.4151 2.1148 2.65725 6.78466 1.57234 17.05992-2.1148 19.4656.4324 20.68417.4324 20.68417s3.11323 16.53318 2.96386 22.343z" fill-opacity=".1" fill-rule="nonzero"/>
|
37 |
+
<path d="M146.24456 157.20593s3.14468.22013 5.11797-1.11636c1.9733-1.3365 10.56615-5.00792 10.78627-7.4529 0 0 5.11798 12.4608 8.0111 12.90106 0 0-8.89947 7.01265-9.56771 9.23752-.66825 2.22486-18.01905 7.67303-18.01905 7.67303l3.67142-21.24235z" fill="#ff748e" fill-rule="nonzero"/>
|
38 |
+
<path d="M146.24456 157.20593s3.14468.22013 5.11797-1.11636c1.9733-1.3365 10.56615-5.00792 10.78627-7.4529 0 0 5.11798 12.4608 8.0111 12.90106 0 0-8.89947 7.01265-9.56771 9.23752-.66825 2.22486-18.01905 7.67303-18.01905 7.67303l3.67142-21.24235z" fill="#6c63ff" fill-rule="nonzero"/>
|
39 |
+
<path d="M99.12145 303.94481S88.24083 318.47326 84.2628 320.1085c-3.97803 1.63523-33.63241 37.96421-33.63241 37.96421s6.37585 11.71396 18.08194 13.64008c0 0 6.37585-2.52361 8.75009-8.1526 2.37423-5.62899 21.08511-21.50965 21.08511-21.50965l.5739-38.10573z" fill="#5e5a6b" fill-rule="nonzero"/>
|
40 |
+
<path d="M99.12145 303.94481S88.24083 318.47326 84.2628 320.1085c-3.97803 1.63523-33.63241 37.96421-33.63241 37.96421s6.37585 11.71396 18.08194 13.64008c0 0 6.37585-2.52361 8.75009-8.1526 2.37423-5.62899 21.08511-21.50965 21.08511-21.50965l.5739-38.10573z" fill-opacity=".1" fill-rule="nonzero"/>
|
41 |
+
<path d="M144.93165 194.20315l-.22799 4.10382-1.83178 34.46575s-1.48586 7.71234-.88837 22.5474c.59749 14.83505-8.30983 38.2551-8.30983 38.2551s-4.30036 15.8728-5.63685 23.13702c-1.3365 7.26422-5.5032 9.48909-5.5032 9.48909s1.03775 8.16045-1.92612 11.0064c-2.96387 2.84594-3.14469 7.56296-3.14469 7.56296s-4.5991 25.5034-6.0771 28.02701c-1.478 2.52361-1.3365 15.8728-1.3365 15.8728-9.63845 11.41521-23.72664 1.03775-23.72664 1.03775l.14937-35.73935s4.00161-32.92486 6.96548-37.52396c2.96386-4.5991 2.96386-17.20143 2.96386-17.20143l-1.3129-29.3635s-1.05347-3.14469-.14938-4.88999c.9041-1.7453-2.53933-6.6746-2.53933-6.6746-8.30197-10.08657-9.48909-32.77548-7.07554-37.2252 2.41354-4.44974 9.61487-22.2408 9.61487-22.2408l9.92149-5.78621 17.9247.5346 22.14645.60534z" fill="#5e5a6b" fill-rule="nonzero"/>
|
42 |
+
<path d="M142.57314 141.18376v9.82714l-6.46233-2.78305-6.43874-2.77518-14.01744-13.78945s-11.08502-7.20919-17.02061-13.77372c-3.3884-3.74218-5.09439-7.27995-2.10694-9.14317 1.44341-.9497 2.74767-2.09594 3.87583-3.40413a63.32041 63.32041 0 0 0 7.73592-11.40734l.27516-.50315c2.88525-5.29094 4.79565-9.81928 4.79565-9.81928s8.129 2.61009 13.36491 6.28937c.42453.29088.82548.59749 1.20284.9041 2.9167 2.39782 4.36325 5.16514 1.6824 7.9246a19.3845 19.3845 0 0 0-1.91825 2.28776c-.4316.603-.82862 1.23036-1.18712 1.87895-.1651.28302-.31447.5739-.45598.86479-1.79954 3.67928-2.42062 7.82634-1.77674 11.87119l18.45144 25.55057z" fill="#ecb4b6" fill-rule="nonzero"/>
|
43 |
+
<path d="M129.45194 98.69906a19.3845 19.3845 0 0 0-1.91826 2.28776c-.4316.60299-.82863 1.23035-1.18712 1.87894-.1651.28303-.31447.57391-.45598.8648-6.93717-.37816-13.3539-3.84203-17.47659-9.43406-.09434-.13365-.18868-.25944-.27516-.39309l.27516-.50315c2.88525-5.29093 4.79565-9.81928 4.79565-9.81928s8.129 2.61009 13.36491 6.28937c.42453.29089.82548.5975 1.20284.9041 2.90884 2.39782 4.3554 5.20445 1.67455 7.9246z" fill-opacity=".1" fill-rule="nonzero"/>
|
44 |
+
<path d="M150.56064 79.52434v.01572c0 12.80437-10.53706 23.34143-23.34143 23.34143h-.9041c-12.48911-.4544-22.51594-10.85231-22.51594-23.3493 0-12.81773 10.54727-23.365 23.365-23.365 12.81775 0 23.36502 10.54727 23.36502 23.365v.00787l.03145-.01572z" fill="#ecb4b6" fill-rule="nonzero"/>
|
45 |
+
<path d="M130.70981 137.2529s11.79257 6.64315 8.75009 1.03775l-15.34607-22.65746 17.42156 22.39802s11.12433 15.2753 5.03936 25.80214c0 0-.88837 8.7501.14937 10.82558 1.03775 2.0755-.29874 24.17477-.29874 24.17477s-4.15099-3.8601-6.37585-3.14468c-2.22487.71541-17.91685 2.07549-17.91685 2.07549l8.57713-60.51161z" fill="#464353" fill-rule="nonzero"/>
|
46 |
+
<path d="M136.99918 148.65238c-.69183 7.12272-3.62425 15.6055-3.62425 15.6055s-2.06763 21.06154-4.71703 27.29588c-2.6494 6.23434-1.48586 14.82719-2.96386 30.66068-.5346 5.71547-2.35852 9.63846-4.85854 12.28786-4.0881 4.35539-9.91362 5.26735-14.52059 5.00005l-1.09277-.08648c-7.4136-.739-14.52845-36.47835-14.52845-36.47835s-3.41198-30.40125-2.0755-34.55223c1.3365-4.15099-1.33648-27.8855-2.22486-33.07423-.56604-3.2862 1.13209-8.64789 2.45286-12.16207.78617-2.0126 1.39938-3.41199 1.39938-3.41199s2.52361-8.00322 6.6746-12.1542c1.15567-1.18713 2.7461-1.85459 4.40256-1.84751 1.9552.06997 3.85617.6651 5.5032 1.72172l.18868.12578s26.98926 27.5789 29.505 33.95474c.67612 1.80034.74687 4.34753.47957 7.11485z" fill-opacity=".1" fill-rule="nonzero"/>
|
47 |
+
<path d="M136.1108 148.18854c-.69182 7.13058-3.62424 15.61337-3.62424 15.61337s-2.0755 21.06153-4.71703 27.288c-2.64153 6.22648-1.48586 14.8272-2.97173 30.66069-.52673 5.7076-2.35851 9.6306-4.85854 12.28786-4.08023 4.35539-9.90576 5.25948-14.51272 4.99218-.37736 0-.73114-.04717-1.09278-.08647-7.4136-.739-14.52844-36.47836-14.52844-36.47836s-3.41199-30.40124-2.0755-34.55223c1.3365-4.15098-1.33649-27.87763-2.22486-33.07423-.56605-3.2862 1.13208-8.64788 2.45285-12.1542.78617-2.02047 1.39939-3.41199 1.39939-3.41199s2.5236-8.01109 6.6746-12.16207c1.1541-1.18476 2.74059-1.85222 4.3947-1.8475 1.95441.07468 3.85459.66903 5.50319 1.72171l.19654.12579s26.98927 27.58675 29.50501 33.9626c.65253 1.81606.74687 4.36325.47957 7.11485z" fill="#6c63ff" fill-rule="nonzero"/>
|
48 |
+
<path d="M105.8668 256.74309s-6.11642 5.45603-8.23122 5.22804c-2.1148-.228 8.23122-5.22804 8.23122-5.22804zM107.49417 261.97899s-6.4466 2.99531-8.37272 3.44343c-1.92612.44812 5.88842-4.21388 8.37272-3.44343zM110.54452 252.427s-6.10856 26.58046 6.17144 28.24714c12.28 1.66669 8.50638-30.25187 8.50638-30.25187l-14.67782 2.00474z" fill-opacity=".1" fill-rule="nonzero"/>
|
49 |
+
<path d="M110.0964 251.96316s-6.10855 26.58046 6.1793 28.255c12.28786 1.67455 8.49852-30.25973 8.49852-30.25973l-14.67782 2.00473z" fill="#ecb4b6" fill-rule="nonzero"/>
|
50 |
+
<path d="M120.60751 140.374c-.62894-15.975-22.98765-19.27692-28.19997-4.1667l-.11006.3066c-3.40412 10.22023-1.92612 36.16388-1.92612 36.16388s.44812 17.39797 2.0755 23.17633c1.62737 5.77836 6.22647 22.39803 6.22647 25.06315 0 2.66512 4.26105 12.90107 6.06138 13.64793 1.80033.74686 2.70443 6.52522 3.14469 7.56297.44025 1.03775 1.76888 14.52845 1.76888 14.52845s16.76117-1.03775 17.05992-3.70287c.29874-2.66512-3.71073-15.72343-3.71073-15.72343s-2.956-5.3381-3.33337-9.63846c-.37736-4.30036-2.74373-6.22648-2.30348-9.19034.44026-2.96387-1.33649-4.44973-1.33649-6.38371s-1.32863-7.11485-1.32863-7.11485-2.82235-2.22487-2.35851-4.88999c.46384-2.66512-4.00162-8.01109-2.8145-9.9372 1.18712-1.92613 1.478-6.6746 1.478-6.6746s1.47015-21.38386 2.4843-27.16222c1.01417-5.77836 7.07555-15.12594 7.07555-15.12594s.0629-.2673.04717-.739z" fill-opacity=".1" fill-rule="nonzero"/>
|
51 |
+
<path d="M119.91568 234.07777c-4.08023 4.35538-9.90576 5.25948-14.51272 4.99218-.52674-2.02046-1.30505-4.50476-2.445-4.97646-1.80033-.739-6.06138-11.0064-6.06138-13.64007 0-2.63368-4.5991-19.28479-6.22648-25.06315-1.62737-5.77836-2.07549-23.15274-2.07549-23.15274s-1.48586-25.94366 1.92612-36.16389c.03931-.1022.07076-.2044.1022-.31447 5.22018-15.1102 27.57103-11.79257 28.20783 4.17457v.73114s-6.08496 9.33972-7.07554 15.12594c-.99058 5.78622-2.52361 27.13864-2.52361 27.13864s-.29875 4.71702-1.48586 6.6746c-1.18712 1.95756 3.2626 7.27208 2.82235 9.9372-.44025 2.66512 2.35852 4.89784 2.35852 4.89784s1.33649 5.18087 1.33649 7.11486c0 1.93398 1.77674 3.41198 1.33649 6.37585-.44026 2.96386 1.92612 4.88998 2.30348 9.1982a24.11451 24.11451 0 0 0 2.0126 6.94976z" fill-opacity=".1" fill-rule="nonzero"/>
|
52 |
+
<path d="M119.71914 139.93374c-.6368-15.975-22.98765-19.28478-28.20783-4.1667 0 .1022-.0629.2044-.1022.3066-3.41199 10.22023-1.92612 36.16389-1.92612 36.16389s.44811 17.3901 2.07549 23.17633c1.62737 5.78622 6.20289 22.36657 6.20289 25.03956 0 2.67298 4.26105 12.90107 6.06138 13.64007 1.80033.739 2.70443 6.52522 3.14469 7.56297.44025 1.03774 1.80033 14.5363 1.80033 14.5363s16.76117-1.03774 17.05206-3.71072c.29088-2.67299-3.70287-15.72343-3.70287-15.72343s-2.956-5.3381-3.33337-9.63846c-.37736-4.30036-2.7516-6.23434-2.30348-9.1982.44812-2.96387-1.3365-4.44974-1.3365-6.37586s-1.32862-7.1227-1.32862-7.1227-2.82236-2.22487-2.35852-4.89c.46385-2.66512-4.00947-8.01108-2.82235-9.9372 1.18712-1.92612 1.48586-6.6746 1.48586-6.6746s1.48587-21.35241 2.52361-27.13863c1.03775-5.78622 7.07555-15.12594 7.07555-15.12594s.05503-.25157 0-.72328z" fill="#6c63ff" fill-rule="nonzero"/>
|
53 |
+
<path d="M83.71249 106.19913c.20047.22956.3522.49686.44812.78617.32783-1.02595.16195-2.14782-.44812-3.03462-.39309-.44812-.97485-.72328-1.32863-1.20284 0-.03931-.04717-.08648-.07862-.12579-.39702.74293-.36636 1.64389.07862 2.35852.35378.51887.93554.78617 1.32863 1.21856zM95.03336 77.39381c0-.8412.0393-1.6824 0-2.51575-.14938-3.02676-.71542-6.13213-.8412-9.16675-.18083 3.71859.65251 7.618.8412 11.39162v.29088z" fill-rule="nonzero"/>
|
54 |
+
<path d="M173.73697 154.53295l.45598.31447c-.82784-.5692-1.0409-1.71936-.4717-2.5472l20.61341-29.92168c.57233-.82941 1.72486-1.04168 2.55506-.4717l-.46384-.31447c.80897.54796 1.29482 1.46385 1.29482 2.44106 0 .58963-.17767 1.16668-.50865 1.65489l-19.35554 28.0899c-.54482.80661-1.45678 1.2909-2.43006 1.2909-.60456 0-1.19498-.1879-1.68948-.53617z" fill="#464353" fill-rule="nonzero"/>
|
55 |
+
<path d="M196.52585 121.6438l.47911.33001-22.69098 32.94175-.45968-.31663c-.6183-.4259-.77646-1.28423-.35056-1.90254l21.139-30.68866c.42055-.61054 1.26544-.77413 1.88311-.36394z" fill="#9f9eff" fill-rule="nonzero"/>
|
56 |
+
<path d="M192.32025 126.13702c.05378-.07735.03471-.18335-.04265-.23713l-.0232-.01613c-.07736-.05378-.18336-.03471-.23714.04265l-1.6652 2.39557c-.05378.07735-.03471.18335.04265.23713l.0232.01613c.07737.05378.18336.03471.23714-.04265l1.6652-2.39557z" fill="#464353"/>
|
57 |
+
<path d="M153.4852 75.79788c-.3302-1.57234-1.63524-2.77518-2.53148-4.1274-2.24845-3.3884-1.89467-7.8617-.8412-11.79257a8.41365 8.41365 0 0 0 .4717-3.34122c-.30031-1.45206-1.20048-2.7123-2.47644-3.46702-2.7516-1.81606-6.28937-1.83964-9.38688-2.97959-4.4969-1.66668-8.56927-5.7705-13.26271-4.77206-2.56292.54246-4.53621 2.52361-6.75322 3.93086-2.44577 1.54482-5.26105 2.40804-8.1526 2.50002-2.42926.07076-4.88998-.40094-7.27994 0-.43003.07312-.85142.18868-1.25787.34592-2.02282-.69734-4.1502-1.0409-6.28937-1.01416-2.10616-.04796-4.18008.52988-5.95918 1.65882-3.23117 2.2799-4.0881 6.69032-4.04092 10.64476.04717 3.95444.71541 8.01895-.4953 11.79257-1.50158 4.67772-5.7469 8.2548-6.59597 13.09761-.58963 3.2862.50315 6.6117 1.47014 9.81142 2.78305 9.19035 4.62269 19.34768.92768 28.2157-.93554 2.24844-2.35851 4.4733-4.55193 5.5032l7.86171-.46385c.34513 2.31056-1.2673 4.49769-3.57708 4.85068a18.21192 18.21192 0 0 0 5.75478-1.3129c1.85222-.78382 3.20758-2.42692 3.62425-4.3947.14937-1.05347-.07076-2.16198.22013-3.19186.511-1.76102 2.35851-2.73588 3.78148-3.8601 3.82866-2.9796 5.63685-8.00323 5.78622-12.8539.14938-4.85068-1.13995-9.62274-2.51575-14.27688-1.3758-4.65413-2.8538-9.34757-3.07393-14.19039a18.40753 18.40753 0 0 1 .48743-5.28307c.28302.52673.5975 1.0456.91982 1.57234 1.89467 2.89311 4.11168 5.63685 5.27521 8.8916.40645 1.54011.95913 3.03855 1.65096 4.47331.78617 1.3758 2.31134 2.51575 3.89155 2.27204 1.5802-.24371 2.75946-1.94184 3.27833-3.56136.51888-1.6195.74687-3.3884 1.72958-4.77206 1.87109-2.61009 5.6054-2.84594 8.81298-2.7516 6.76108.21227 16.08507 1.24215 21.376-3.93085 1.0063-.98272 1.48586-2.49217 3.0582-2.12267 1.40725.3302 2.19343 2.61796 3.69501 3.14469 2.41355.77045 5.53465-1.52517 4.9686-4.24533z" fill="#464353" fill-rule="nonzero"/>
|
58 |
+
<path d="M85.72509 61.87479c0 .51101-.03931 1.02988 0 1.53303 0 1.65096.1415 3.31765.19654 4.97647.04717-2.14625-.12579-4.33967-.19654-6.5095zM83.04424 113.825c.2044-6.10856-1.18712-12.41365-2.97173-18.32566a34.98924 34.98924 0 0 1-1.57234-6.52522c-.3302 3.06606.65252 6.14786 1.57234 9.11958a63.14764 63.14764 0 0 1 2.97173 15.7313zM149.34207 64.18613a23.36905 23.36905 0 0 1 .78617-4.30822 8.41365 8.41365 0 0 0 .4717-3.34122c-.03065-.20048-.07782-.3978-.1415-.58963-.09434.44812-.21227.89623-.3302 1.34435-.65566 2.23587-.92139 4.56844-.78617 6.89472z" fill-rule="nonzero"/>
|
59 |
+
</g>
|
60 |
+
<g>
|
61 |
+
<path d="M590.46 285.225c0-29.872-24.253-54.125-54.125-54.125h-327.2c-29.872 0-54.125 24.253-54.125 54.125s24.253 54.125 54.125 54.125h327.2c29.872 0 54.125-24.253 54.125-54.125z" fill="url(#_Linear3)" transform="matrix(.74209 0 0 .74209 82.6893 -118.21955)"/>
|
62 |
+
<path d="M519.95786 93.45023c0-21.17255-17.18975-38.3623-38.36229-38.3623H237.8861c-21.17254 0-38.3623 17.18975-38.3623 38.3623 0 21.17254 17.18976 38.36229 38.3623 38.36229h243.70947c21.17254 0 38.3623-17.18975 38.3623-38.3623z" fill="#fff"/>
|
63 |
+
<path d="M481.47507 74.20377c0-2.27187-1.84484-4.11654-4.11672-4.11654H286.10373c-2.27243 0-4.11672 1.84467-4.11672 4.11654v8.2335c0 2.2723 1.84429 4.11696 4.11672 4.11696h191.25462c2.27188 0 4.11672-1.84466 4.11672-4.11696v-8.2335z" fill="#3f3d56"/>
|
64 |
+
<path d="M481.47507 92.97174c0-1.51458-1.23008-2.74436-2.74448-2.74436h-193.9991c-1.51496 0-2.74448 1.22978-2.74448 2.74436v5.489c0 1.51486 1.22952 2.74464 2.74448 2.74464h193.9991c1.5144 0 2.74448-1.22978 2.74448-2.74464v-5.489z" fill="#6c63ff"/>
|
65 |
+
<path d="M342.52958 107.99765c0-1.51458-1.2299-2.74436-2.7445-2.74436H284.7312c-1.51476 0-2.74449 1.22978-2.74449 2.74436v5.489c0 1.51486 1.22973 2.74464 2.7445 2.74464h55.05389c1.5146 0 2.74449-1.22978 2.74449-2.74464v-5.489z" fill="#9795b1"/>
|
66 |
+
<g serif:id="text" fill-rule="nonzero">
|
67 |
+
<path d="M358.77597 113.96639c.59162 0 .87847-.11695 1.16532-.26892l-.30477-.94123c-.19721.09875-.41235.15267-.55578.15267-.26892 0-.38545-.17998-.38545-.55605v-1.86495h1.19222v-.96783h-1.19222v-1.55961l-1.16533.12536v1.43425h-.51991v.96783h.51991v2.02602c0 .98605.49303 1.45246 1.246 1.45246zM362.81855 109.44864c-.51964 0-.9948.25072-1.32647.71713h-.00897v-.6457h-1.17429v4.37489h1.1743v-2.03512c0-.6457.39441-1.13872 1.12043-1.13872.06303 0 .18839 0 .30464.0091v-1.27317c-.0175-.0084-.05323-.0084-.08964-.0084zM366.07292 109.52008v2.12476c0 .84248-.4573 1.27247-.96854 1.27247-.54694 0-.78855-.26892-.78855-1.07568v-2.32155h-1.16533v2.63529c0 1.3362.6632 1.81102 1.60443 1.81102.49302 0 .96853-.2066 1.29978-.60998h.01821v.53855h1.17443v-4.37488h-1.17443zM369.36231 113.96639c1.14782 0 1.70317-.58266 1.70317-1.36282 0-.85999-.55535-1.06658-1.50568-1.41604-.4307-.16107-.6632-.28713-.6632-.46641 0-.2332.24161-.33125.43-.33125.32284 0 .70802.14356 1.04907.46571l.56446-.86069c-.49303-.38517-.98605-.54625-1.59533-.54625-.8964 0-1.57781.51964-1.57781 1.3089 0 .84248.62748 1.18283 1.3446 1.42514.57357.17928.79767.27803.79767.48392 0 .215-.19679.35856-.53784.35856-.47482 0-.85159-.17017-1.21015-.51123l-.57356.81587c.48392.41249 1.07569.63659 1.7746.63659zM372.8765 113.96639c.59177 0 .8782-.11695 1.16533-.26892l-.30464-.94123c-.19749.09875-.41248.15267-.55605.15267-.26892 0-.38517-.17998-.38517-.55605v-1.86495h1.19194v-.96783h-1.19194v-1.55961l-1.16533.12536v1.43425h-.52034v.96783h.52034v2.02602c0 .98605.49302 1.45246 1.24586 1.45246z" fill="#1d58bf"/>
|
68 |
+
<path d="M376.92854 109.44864c-.53784 0-.99515.1968-1.3271.57356h-.01751v-.50212h-1.17443v6.14948h1.17443v-2.26763h.0175c.30465.35787.73534.56446 1.2907.56446 1.21925 0 2.09744-.8964 2.09744-2.25012 0-1.3264-.8873-2.26763-2.06103-2.26763zm-.25141 3.46867c-.6366 0-1.13872-.47481-1.13872-1.19194 0-.69891.46641-1.22835 1.13872-1.22835.62748 0 1.1205.47551 1.1205 1.22835 0 .70803-.4573 1.19194-1.1205 1.19194zM382.3427 109.52008v2.12476c0 .84248-.45732 1.27247-.96855 1.27247-.54694 0-.78855-.26892-.78855-1.07568v-2.32155h-1.16533v2.63529c0 1.3362.6632 1.81102 1.60443 1.81102.49302 0 .96853-.2066 1.29978-.60998h.01821v.53855h1.17443v-4.37488h-1.17443zM384.26997 107.29727h1.17429v6.59755h-1.1743zM387.649 113.96639c1.14782 0 1.70317-.58266 1.70317-1.36282 0-.85999-.55535-1.06658-1.50568-1.41604-.43-.16107-.6632-.28713-.6632-.46641 0-.2332.2416-.33125.42999-.33125.32285 0 .70802.14356 1.04907.46571l.56446-.86069c-.49302-.38517-.98605-.54625-1.59532-.54625-.8964 0-1.57782.51964-1.57782 1.3089 0 .84248.62749 1.18283 1.34461 1.42514.57356.17928.79766.27803.79766.48392 0 .215-.19679.35856-.53784.35856-.47482 0-.85159-.17017-1.21015-.51123l-.57356.81587c.48392.41249 1.07569.63659 1.7746.63659zM393.8433 111.66235c0-1.28158-.86069-2.2137-2.14227-2.2137-1.24586 0-2.16958.92301-2.16958 2.24941 0 1.37192.96854 2.26833 2.25012 2.26833.8782 0 1.51478-.34946 1.89155-.82497l-.76194-.70802c-.24231.29553-.58266.50212-1.04908.49302-.56445 0-.97694-.32285-1.1205-.84248h3.07509c.02661-.07214.02661-.27803.02661-.4216zm-2.10655-1.18284c.51123 0 .82497.30464.94122.76195h-1.92727c.13446-.50213.51123-.76195.98605-.76195z" fill="#00aded"/>
|
69 |
+
</g>
|
70 |
+
<g serif:id="mark">
|
71 |
+
<path d="M352.85905 108.04074c-.38986-.10526-.77052-.2453-1.1363-.42481-.31035-.15228-.6097-.32576-.90303-.50838a4.2806 4.2806 0 0 1-.01708.01057c-.77208.47911-1.59296.8661-2.50489 1.03732-.32904.06177-.66185.10054-.99532.12898l-.01063.0009c-.08214 1.83573.04032 3.72787 1.01521 5.302.59423.95948 1.51363 1.67797 2.48732 2.27519l.0254.01547c.39846-.2435.78981-.50319 1.15398-.79322h.82668c-.58593.55145-1.2694 1.0136-1.96424 1.42616-.03256-.02228-.03286 0-.03286 0-.87644-.52039-1.7297-1.09562-2.39376-1.8594-.4511-.51877-.80828-1.11491-1.0657-1.76016-.64686-1.62152-.68784-3.42667-.57505-5.12154.71687-.04271 1.44492-.1116 2.13115-.33287.67679-.21823 1.30011-.5806 1.90217-.97149l.01762-.01147c.01171.00765.02342.01524.03519.02288.75935.4919 1.56972.92603 2.4621 1.11206a6.70183 6.70183 0 0 0 .1536.0301l-.61156.4217zm-.18137 6.31962h-1.1348c-.18968-.00807-.20247-.10413-.20647-.19786-.00472-.11148.06757-.20945.20646-.21536h.97722l.30892-1.12616s.05962-.13943.17945-.15096c.09583-.00926.1782.03119.21793.14708l.46675 1.57934.28591-.89855s.09248-.1638.23932-.13955c.08005.0205.08328.0242.1297.088l.33233.5008h.79573c.00095.00012.14767.01995.1917.12957.05096.12677-.02969.27677-.1917.28365h-.90661c-.09857-.00407-.1267-.0297-.17211-.09236l-.15532-.234-.35934 1.1295s-.06332.13453-.18149.14337c-.09444.00705-.1745-.03334-.21357-.1475l-.45205-1.52963-.15872.5787s-.0721.14636-.19924.15192zm2.22393-6.01943c.04015.9777.0101 1.9569-.15741 2.92342-.07635.44076-.24278 1.04897-.38855 1.47276l-.52451-.1705c.4453-1.17472.553-2.4526.53371-3.70332l.53676-.52236z" fill="#00aded" fill-rule="nonzero"/>
|
72 |
+
<path d="M350.61249 110.85644c.03129-.03568.03941-.0591.08606-.12694.26903-.39144 1.06591-1.44674 2.07849-2.25845.44062-.35324.91685-.67437 1.33812-.88486.70209-.35082.92816-.39358 1.25422-.46955.06193-.01441.2862-.05444.32341.03392.0359.0853-.10399.1752-.15648.21644-.059.04636-1.40842 1.05544-2.54368 2.55402-.98784 1.3039-1.63429 3.0147-1.63429 3.0147-.01986.038-.24452.43948-.54593.45903-.27857.01811-.63633-.34424-.63633-.34424-.06877-.06416-.40417-.4622-.68325-.95451-.35593-.6277-.66242-1.37177-.66242-1.37177s-.31817-.62588.28165-.9701c.5914-.33942.85484.00518.9832.20863.10969.17387.33069.59623.4375.80282.0372.07196.06126.11187.07973.09086z" fill="#1d58bf" fill-rule="nonzero"/>
|
73 |
+
</g>
|
74 |
+
<circle cx="88.506" cy="368.331" r="25.699" fill="#d1ceff" transform="matrix(1.24682 0 0 1.24682 129.07388 -366.05644)"/>
|
75 |
+
<g>
|
76 |
+
<path d="M234.79674 84.79714c-1.28828-2.16885-1.71512-4.93991-.9589-7.68538 1.39849-5.07719 6.31648-8.15732 10.97562-6.87399 4.65914 1.28333 7.30636 6.44725 5.90788 11.52444-.75623 2.74547-2.54175 4.90715-4.75888 6.11045 1.49218-1.30605 2.69147-3.18496 3.30831-5.42442 1.39844-5.07703-.7234-10.09624-4.73528-11.20128-4.01188-1.10505-8.40432 2.11984-9.80276 7.19687-.61684 2.23946-.54878 4.46745.06401 6.35331z" fill="#4a41df"/>
|
77 |
+
<path d="M229.64312 76.9581l-2.53994-.31092-6.8431 32.05372 1.20438 2.33146 8.17866-34.07426z" fill="#342ada" fill-rule="nonzero"/>
|
78 |
+
<path d="M228.85059 76.4124l-7.36407 34.43978 26.80343 5.5183 7.25622-33.5587-26.69558-6.39939z" fill="#6c63ff" fill-rule="nonzero"/>
|
79 |
+
<path d="M229.98862 101.50522l2.56138-1.89507c.5772.91783 1.27595 1.6768 2.09644 2.27698.82035.59994 1.655 1.005 2.5042 1.21503.83984.20772 1.56523.18376 2.17584-.07218.6108-.2559.99734-.71234 1.15992-1.3697.09259-.37434.10476-.71773.03673-1.03012-.06809-.31219-.23693-.61809-.50703-.91741-.2699-.29928-.58302-.5801-.9395-.8427-.35648-.26262-.83858-.57552-1.44626-.9389-.48892-.29537-.89628-.54866-1.22182-.76-.32555-.21136-.69053-.46883-1.095-.77225-.40465-.30346-.73193-.5855-.98246-.8461-.25034-.26054-.49876-.56897-.74482-.92538-.24605-.35642-.42252-.71009-.52958-1.06106-.10687-.35093-.16607-.74835-.17745-1.19202-.01143-.44348.04273-.90732.1624-1.39112.35454-1.4335 1.11368-2.51479 2.2775-3.24424 1.16382-.72945 2.58533-.96402 4.26492-.70362l.8739-3.53332 2.53356.62663-.90776 3.67024c.82439.38805 1.61423.87648 2.36954 1.4653.7555.58885 1.3814 1.21118 1.87813 1.86687l-2.49302 1.91197c-.6086-.7123-1.27213-1.30032-1.99062-1.76387-.7185-.46355-1.4156-.77878-2.09125-.94589-.82173-.20324-1.51227-.19235-2.07161.03265-.55949.22477-.91604.64771-1.06962 1.26864-.149.60242-.00324 1.1496.43693 1.64125.44041.4915 1.20656 1.07575 2.29863 1.75282.42956.26126.79095.48395 1.0846.66798.29366.18403.61867.39752.975.64067.35653.2432.64852.46319.87598.66.2275.1966.46861.42592.72363.68762.25501.2617.4553.50985.6007.74423.14536.23458.28302.50114.41258.7996.1295.29866.21188.6024.24686.91136.03499.30896.04162.64481.01971 1.0075-.02196.36288-.08255.74493-.18193 1.14674-.36583 1.47908-1.13688 2.57932-2.31318 3.30073-1.17635.7216-2.61108.97956-4.30402.77394l-.82982 3.3551-2.53356-.62663.83324-3.36893c-2.09857-.83857-3.7558-2.24653-4.97201-4.22334z" fill="#fff" fill-rule="nonzero"/>
|
80 |
+
</g>
|
81 |
+
</g>
|
82 |
+
<g transform="matrix(.9544 0 0 .9544 -317.20694 -197.00686)">
|
83 |
+
<path d="M926.79 654.4s-3.59 21.65-21.79 24.86c-18.2 3.21-78.94 2.56-78.94 2.56s-34.73-5-47.29-34.34c-12.56-29.34-20.63-41-9.87-41.53 10.76-.53 68.82 19.61 72.15 19.87 3.33.26 88.94-44.6 85.74 28.58z" fill="#65617d" fill-rule="nonzero"/>
|
84 |
+
<path d="M926.79 654.4s-3.59 21.65-21.79 24.86c-18.2 3.21-78.94 2.56-78.94 2.56s-34.73-5-47.29-34.34c-12.56-29.34-20.63-41-9.87-41.53 10.76-.53 68.82 19.61 72.15 19.87 3.33.26 88.94-44.6 85.74 28.58z" fill-opacity=".05" fill-rule="nonzero"/>
|
85 |
+
<path d="M763.9 678.49s1.81 4.77 6.8 5.12c.732.052 1.468.011 2.19-.12 6.67-1.16 22.3-3.85 27.81-2.82 3.32.61 9.45-.3 13.82-1.12 2.9-.55 5-1.06 5-1.06s-5.12-17-5.77-17.56c-.65-.56-23.06-14-23.06-14l-17.79-1.24c-2.379.367-4.528 1.635-6 3.54-1.87 2.27-3.48 6-3.59 12.1-.31 14.98.59 17.16.59 17.16z" fill="#3f3d56" fill-rule="nonzero"/>
|
86 |
+
<path d="M763.9 678.49s1.81 4.77 6.8 5.12a73.811 73.811 0 0 1-4.82-7l.09-12.43c-.728-6.907 1.874-13.764 7-18.45h-.07s-9.35.64-9.61 15.64c-.26 15 .61 17.12.61 17.12z" fill-opacity=".05" fill-rule="nonzero"/>
|
87 |
+
<path d="M840.9 651.32l16.53-12.94 26-25.63s-2.81-.14-7.05-.32c-1 .67-4 2.78-4.12 5.35-.12 3.14-7 .22-10.62 2-3.62 1.78-21.1 24.28-24.18 24.12-3.08-.16-5.51-1.56-6.79.62l-.09.14 10.32 6.66z" fill-opacity=".1" fill-rule="nonzero"/>
|
88 |
+
<path d="M731.99 612.49c1.67 4.1 15.64 19.86 15.64 19.86s8.84 11.54 21.4 16.92c12.56 5.38 28.06 16.66 29.22 18.71.74 1.32 10.75 7.35 17.8 11.49l1.58.92 3.5 2 1.85 1.07s4.29-3.45 8.57-6.92c4.28-3.47 8.41-6.86 8.48-7 .12-.38 1.79-4.74 1.4-5-.2-.13-1.08-1.91-2.69-4-1.723-2.287-3.96-4.137-6.53-5.4-5.9-2.69-8.46-8.82-8.46-8.82s-.56-.4-1.41-.94c-1.747-1.208-3.704-2.079-5.77-2.57-2.82-.35-8.07-6.12-8.07-6.12s-3.59-2.31-5-5.25c-1.41-2.94-21.22-16.46-23.06-17.73l48.18 30.95 11.53 7.41 16.54-12.94 26-25.63s-3.5-.17-8.58-.39c-12.65-.55-35.1-1.41-37.94-.77-2.292.536-4.657.692-7 .46-2.343-.232-6.4.29-10.63-1.94s-10.9-3.28-11.67-4.93c-.77-1.65-23.45-9.61-23.45-9.61s-30.88-16.4-41.91-6.66c-11.03 9.74-11.18 18.73-9.52 22.83z" fill="#65617d" fill-rule="nonzero"/>
|
89 |
+
<path d="M831.57 518.43l4 13.19 5.13 29.74 18.83 1.28 5.46-9 5.44-9s3.39-12 5.83-23.64c2.15-10.28 3.56-20.26 1.22-21.34-2.08-1-3.45-4.43-4.34-8.15-.11-.46-.22-.93-.31-1.39-.624-3.156-1.042-6.35-1.25-9.56-.208-3.21-39.47-2.05-34 14.23.987 2.777 1.491 5.703 1.49 8.65-.01.735-.056 1.469-.14 2.2-.567 5.099-3.236 9.738-7.36 12.79z" fill="#ee8e9e" fill-rule="nonzero"/>
|
90 |
+
<path d="M823.36 516.25l1.42 22.42 3.2 19.1 3.59 8.84 3.2 48.38s30.9 3.57 38.42-.06c.54-.231 1.009-.6 1.36-1.07 9.07-13.7 6.1-53.4 6.1-53.4l3.46-25.63-2.31-13.3-5.57-.6-4.29-.45s-1 1.19-2.37 3c-3.8 5-10.79 14.88-10.32 19 .64 5.64-.77 11.4-3 12.3-2.23.9-4 2.44-4.35.9-.35-1.54-.77-1.92-.39-4.1.38-2.18-1.67-8.85-1.67-8.85s-3.46-7.81-3.2-11.15c.26-3.34-.38-7.17-1.41-8.07-1.03-.9-2.43-1.79-1.28-5.89 1.15-4.1-5.05-12.05-5.05-12.05l-15.54 10.68z" fill="#e3e8f4" fill-rule="nonzero"/>
|
91 |
+
<path d="M872.9 490.58s6.46.8 8.51 3.5 7.43 3.07 7.43 3.07 6.15 2 6 2.56c-.15.56 1.79 1.29 5.63 2.31s10.26 4.74 10.26 5.64c0 .9 10.17 10.89 10.17 11.92 0 1.03 3.08 4.87 2.69 11.66-.39 6.79-.77 15.38.77 16.79 1.54 1.41 0 6.92 0 6.92-.844 1.22-.895 2.829-.13 4.1 1.28 2.31-.25 11.92-.25 11.92l.12 10s-1.41 6.28.26 6.54c1.67.26-.26 3.08-.26 3.08s-1.41 5.12.39 7.43c1.8 2.31 2.31 12.17 2.31 12.17l27.42 39.86s.39 7.3-8.33 7.18c-8.72-.12-8.59 1.66-8.33 3.33.26 1.67-2.43 3.46-2.43 3.46s-3.46 1.79-1.41 4 7.94 7.18-1.8 10.51c-1.148-1.587-2.095-3.31-2.82-5.13-.826-2.262-1.511-4.573-2.05-6.92-.539-2.347-.9-9.74-2.69-11-1.79-1.26-1.54-7.43-1.54-7.43s2.57-5-1-7.05-55.62-30.89-55.62-30.89l-1.3-38.37s-.9-28.32 4.48-37.81c0 0-.64-4.1.26-6.41.9-2.31-.13-9.74-.13-9.74l3.39-27.2zM838.9 505.57s-12.88-2.65-16.34-.86c-3.46 1.79-10.22 3.19-11.24 4.19-1.02 1-3.59.26-5.9 6.28-2.31 6.02-2.56 12.18-5.51 15-2.95 2.82-4.48 4.74-4.61 6.79-.13 2.05.38 2.56-.77 3.2-1.15.64-2.82 3.33-2.31 4.36.51 1.03 26.68 23.62 26.68 23.62s1.28 8.58 2.44 10.76c1.16 2.18-1.29 32.17-3.85 34.22-2.56 2.05 17.3 1.86 17.3 1.86s.9-19.67 1.67-20.7c.77-1.03-.52-22-.52-22s-.12-17.94 1.54-22.68c1.66-4.74 1.42-20.55 1.42-20.55s1.47-9.46 3.26-11.66c1.79-2.2-3.26-11.83-3.26-11.83z" fill="#3f3d56" fill-rule="nonzero"/>
|
92 |
+
<path d="M837.59 494.72c.987 2.777 1.491 5.703 1.49 8.65 12.923 3.846 26.914-1.681 33.72-13.32-.624-3.156-1.042-6.35-1.25-9.56-.208-3.21-39.47-2.05-33.96 14.23z" fill-opacity=".1" fill-rule="nonzero"/>
|
93 |
+
<path d="M818.11 474.47c.002 16.099 13.251 29.346 29.35 29.346 16.101 0 29.35-13.249 29.35-29.35s-13.249-29.35-29.35-29.35c-13.809 0-25.842 9.746-28.71 23.254-.426 2.005-.64 4.05-.64 6.1z" fill="#ee8e9e" fill-rule="nonzero"/>
|
94 |
+
<path d="M799.27 542.39l-7 2.18s.65 2.56-1.41 3.84c-1.233.876-1.915 2.342-1.79 3.85s-.77 2.82-2.56 3.46c-1.79.64-2.95 4.87-2.95 4.87l-5.9 6.79s-2.17 1.79-1.79 2.69c.38.9-2.31 1.15-2.31 1.15l1.34 22.82 12.18 2.3 7.56-.77 6.15-2.3 5.38-3.21 2.44-6.28 10.76-16.4-20.1-24.99z" fill="#3f3d56" fill-rule="nonzero"/>
|
95 |
+
<path d="M775.31 573.02s-15.64-22.56-27.3-10.38c-11.66 12.18 4.74 31.91 8.59 31.27 3.85-.64 22.17-1.67 22.17-1.67l-3.46-19.22z" fill="#ee8e9e" fill-rule="nonzero"/>
|
96 |
+
<path d="M813.29749 565.70272c.40506-.7936.08977-1.76626-.70383-2.17132L742.58372 527.798c-.7936-.40506-1.76625-.08978-2.17131.70383l-27.41856 53.71923c-.40506.7936-.08978 1.76626.70383 2.17132l70.00993 35.73341c.7936.40506 1.76626.08978 2.17132-.70383l27.41856-53.71923z" fill="#3f3d56"/>
|
97 |
+
<path fill="#16bd83" d="M744.3983 535.1576l61.2616 31.26821-23.56254 46.16441-61.2616-31.26821z"/>
|
98 |
+
<circle cx="730.3" cy="557" r="1.13" fill="#e6e8ec"/>
|
99 |
+
<circle cx="796.61" cy="590.97" r="1.86" fill="#e6e8ec"/>
|
100 |
+
<path d="M765.18 577.76c-.12 16.92 34.86 20.5 34.86 20.5l8.94 1.42 4 .64 1.67-16.54s-1.83-.27-4.12-.8c-3.39-.79-7.78-2.16-8.7-4.07-1.53-3.2-36.52-18.07-36.65-1.15z" fill="#ee8e9e" fill-rule="nonzero"/>
|
101 |
+
<path d="M855.96 486.61c-.143-.605-.143-1.235 0-1.84.327-1.764-.117-3.585-1.22-5-1.65-1.86-4.42-2-6.88-2.34-2.46-.34-5.3-1.26-6-3.64-.51-1.71.26-3.8-.84-5.21-.508-.575-1.166-.997-1.9-1.22-1.797-.814-3.819-.99-5.73-.5-3.27 1.06-5.24 4.91-8.65 5.39-.516.097-1.05.034-1.53-.18-1.29-.64-1.34-2.5-2.33-3.55-1.56-1.65-4.51-.58-6.42-1.81-1.24-.8-1.72-2.36-2.07-3.79-.67-2.79-1.22-5.71-.56-8.5 1.11-4.77 5.37-8 8.09-12.11 2.54-3.79 4-8.59 7.77-11.11 3.77-2.52 8.7-1.94 13-.66 1.982.698 4.019 1.23 6.09 1.59 3.46.43 6.94-.51 10.43-.63 4.923-.155 9.763 1.315 13.77 4.18.903.592 1.67 1.37 2.25 2.28.581 1.287.92 2.67 1 4.08.412 2.651 1.332 5.198 2.71 7.5 1.07 1.8 2.43 3.43 3.4 5.3 1.083 1.827 1.413 4.005.92 6.07-.33 1.05-1 2-1.23 3.09-.57 2.5 1.08 4.89 2.21 7.2 1.089 2.106 1.606 4.461 1.5 6.83-.13 2.384-1.247 4.61-3.08 6.14-1.898 1.334-4.17 2.035-6.49 2-2.811.086-5.614-.345-8.27-1.27-.983-.445-2.064-.631-3.14-.54-1.49.3-1.3 1.22-1.94 2.32-.86 1.56-4.18 1.85-4.86-.07z" fill="#3f3d56" fill-rule="nonzero"/>
|
102 |
+
<path d="M840.15 652.09l16.54-12.94 26-25.63s-3.5-.17-8.58-.39c-1.009.909-1.655 2.152-1.82 3.5-.12 3.13-7 .22-10.62 2-3.62 1.78-21.13 24.27-24.21 24.13-3.08-.14-5.51-1.56-6.79.62l-.09.14c-.525.591-1.226.998-2 1.16l11.57 7.41z" fill-opacity=".1" fill-rule="nonzero"/>
|
103 |
+
<path d="M806.83 651.19l8.31 26.52 1.3 4.16 4-1.08 8.72-2.4L868 667.72c4.882-.211 9.66-1.484 14-3.73 7.346-4.108 15.751-5.939 24.14-5.26 5.13.48 10.84-1.73 15.58-10.49 0 0 10.76-31.78-16.41-40.88-27.17-9.1-28.46 4.84-28.46 4.84l-.37.23c-1 .67-4 2.78-4.12 5.35-.12 3.14-7 .22-10.62 2-3.62 1.78-21.2 24.28-24.28 24.12-3.08-.16-5.51-1.56-6.79.62l-.09.14c-.95 1.31-3.81 1.61-5.69 1.67h-1.78l-.24.07-2 .59-14.04 4.2z" fill="#65617d" fill-rule="nonzero"/>
|
104 |
+
<path d="M913.46 519.83s11.92-3.46 9 30.38c-2.92 33.84-25 55.23-25 55.23s-25.38 11.15-36.78 9.36c-11.4-1.79-19.78-2.18-19.78-2.18a28.99603 28.99603 0 0 0-11.53-3.08c-6.41-.25-19.86-4.23-20.12-5.51-.26-1.28 3.33-20.12 1.79-21.53 0 0 17.94.74 19.74 2 1.8 1.26 4.36.36 6.28 0s7.82-5.5 19.48-1c0 0 4 .38 5.51-.64 1.51-1.02 4-.26 4-.26.987-.339 1.923-.814 2.78-1.41.38-.51 3.46 0 3.46 0 .186.091.391.139.598.139.626 0 1.174-.431 1.322-1.039.409-1.049 1.021-2.007 1.8-2.82.779-.813 3.46-19.48 10-26.78 0 0 1.93-1.67 1.41-3.72-.52-2.05 10.66-31.24 26.04-27.14z" fill="#3f3d56" fill-rule="nonzero"/>
|
105 |
+
<path d="M820.9 646.98l16.92 20.48c.07-.06.11-.1.11-.12.13-.38 1.79-4.74 1.41-5-.38-.26-3.33-6.67-9.23-9.36-2.992-1.465-5.505-3.756-7.24-6.6l-1.97.6z" fill-opacity=".1" fill-rule="nonzero"/>
|
106 |
+
<path d="M835.28 688.9l2.44 1.41 24.73.64c2.776 1.684 5.71 3.094 8.76 4.21.405.128.82.221 1.24.28 2.292.179 4.593.222 6.89.13 1.9 0 3.36-.13 3.36-.13s-1.17-31.2-2-34.48c-.42-1.57-2.5-1.22-4.54-.44-1.536.623-3.018 1.372-4.43 2.24-1.412.868-10.51 1-12.18 1.93-1.67.93-6.4-.52-9.35 0-2.95.52-8.2-3.47-8.2-3.47-14.36-4.74-6.28 4.1-5.26 4.48 0 0-14-3.2-14.73 12-.73 15.2 13.27 11.2 13.27 11.2z" fill="#3f3d56" fill-rule="nonzero"/>
|
107 |
+
<path d="M871.04 676.82c.27 6.46 5.3 14.48 8.3 18.72 1.9 0 3.36-.13 3.36-.13s-1.17-31.2-2-34.48c-.42-1.57-2.5-1.22-4.54-.44-2.53 4.65-5.34 11.13-5.12 16.33z" fill="#565387" fill-rule="nonzero"/>
|
108 |
+
<path d="M871.04 676.82c.27 6.46 5.3 14.48 8.3 18.72 1.9 0 3.36-.13 3.36-.13s-1.17-31.2-2-34.48c-.42-1.57-2.5-1.22-4.54-.44-2.53 4.65-5.34 11.13-5.12 16.33z" fill-opacity=".1" fill-rule="nonzero"/>
|
109 |
+
<path d="M866.81 677.68c1.7 6.23 1.68 13.22 4.4 17.45.405.128.82.221 1.24.28 2.292.179 4.593.222 6.89.13 1.9 0 3.36-.13 3.36-.13s-1.17-31.2-2-34.48c-.42-1.57-2.5-1.22-4.54-.44-1.536.623-3.018 1.372-4.43 2.24-1.412.868-7.1 6.97-4.92 14.95z" fill-opacity=".05" fill-rule="nonzero"/>
|
110 |
+
<path d="M781.48 614.45s12.29 4 22.7 18.16l-22.7-18.16z" fill-opacity=".1" fill-rule="nonzero"/>
|
111 |
+
<path d="M881.31 460.67c0 .1 0 .19-.07.28-.124.364-.268.721-.43 1.07.126-.464.294-.916.5-1.35z" fill-rule="nonzero"/>
|
112 |
+
<path d="M883.3 557.03c-2.35 3.17-5 6.1-7.11 9.45-2.11 3.35-3.54 7.27-3.11 11.19 2.15-2.2 3.13-5.25 4.49-8 2.29-4.68 5.72-8.65 8.62-13 .55-.82 4.09-5.57 2.3-5.8-1.48-.17-4.39 5.08-5.19 6.16z" fill-opacity=".1" fill-rule="nonzero"/>
|
113 |
+
</g>
|
114 |
+
<defs>
|
115 |
+
<linearGradient id="_Linear1" x2="1" gradientUnits="userSpaceOnUse" gradientTransform="rotate(-90 356.05 -16.69) scale(108.26)">
|
116 |
+
<stop offset="0" stop-color="gray" stop-opacity=".24706"/>
|
117 |
+
<stop offset=".54" stop-color="gray" stop-opacity=".11765"/>
|
118 |
+
<stop offset="1" stop-color="gray" stop-opacity=".09804"/>
|
119 |
+
</linearGradient>
|
120 |
+
<linearGradient id="_Linear3" x2="1" gradientUnits="userSpaceOnUse" gradientTransform="rotate(-90 356.05 -16.69) scale(108.26)">
|
121 |
+
<stop offset="0" stop-color="gray" stop-opacity=".24706"/>
|
122 |
+
<stop offset=".54" stop-color="gray" stop-opacity=".11765"/>
|
123 |
+
<stop offset="1" stop-color="gray" stop-opacity=".09804"/>
|
124 |
+
</linearGradient>
|
125 |
+
</defs>
|
126 |
+
</svg>
|
assets/images/logo-edd.png
ADDED
Binary file
|
assets/images/logo-formidable.png
ADDED
Binary file
|
assets/images/logo-om.png
ADDED
Binary file
|
assets/images/memberpress-logo.svg
ADDED
@@ -0,0 +1,76 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0" encoding="utf-8"?>
|
2 |
+
<!-- Generator: Adobe Illustrator 20.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
3 |
+
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
4 |
+
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
5 |
+
viewBox="0 0 252 40" style="enable-background:new 0 0 252 40;" xml:space="preserve">
|
6 |
+
<style type="text/css">
|
7 |
+
.st0{fill:#20D1CC;}
|
8 |
+
.st1{fill:#05D0E0;}
|
9 |
+
.st2{fill:#01A9B2;}
|
10 |
+
.st3{fill:#0282C9;}
|
11 |
+
.st4{fill:#016BB1;}
|
12 |
+
.st5{fill:#06429E;}
|
13 |
+
.st6{fill:#01569A;}
|
14 |
+
.st7{fill:#008C9D;}
|
15 |
+
.st8{fill:#03ABA3;}
|
16 |
+
</style>
|
17 |
+
<g>
|
18 |
+
<g>
|
19 |
+
<path class="st0" d="M48,17.5c0-4.1,3.3-7.4,7.4-7.4s7.4,3.3,7.4,7.4V35c0,2.8,2.3,5,5,5c2.8,0,5-2.3,5-5V17.5
|
20 |
+
C72.9,7.8,65.1,0,55.4,0C50.6,0,46.2,2,43,5.2C46.1,8.4,48,12.7,48,17.5L48,17.5z"/>
|
21 |
+
<path class="st1" d="M38,17.5c0-4.8,1.9-9.1,5-12.3C39.8,2,35.4,0,30.6,0c-4.9,0-9.3,2-12.4,5.2c3.1,3.1,5,7.5,5,12.2
|
22 |
+
c0-4.1,3.3-7.4,7.4-7.4C34.7,10.1,38,13.4,38,17.5L38,17.5z"/>
|
23 |
+
<path class="st2" d="M48,35V17.5c0-4.8-1.9-9.1-5-12.3c-3.1,3.2-5,7.5-5,12.3V35c0,1.4,0.6,2.6,1.5,3.6c0.9,0.9,2.2,1.5,3.6,1.5
|
24 |
+
C45.8,40,48,37.7,48,35z"/>
|
25 |
+
<path class="st3" d="M5.7,0c-2.8,0-5,2.3-5,5c0,2.8,2.3,5,5,5c4.1,0,7.4,3.3,7.4,7.4c0-4.8,1.9-9.1,5-12.2C15,2,10.6,0,5.7,0z"/>
|
26 |
+
<path class="st4" d="M13.1,17.4C13.1,17.4,13.1,17.4,13.1,17.4l0,17.5c0,2.8,2.3,5,5,5c0.9,0,1.7-0.2,2.4-0.6
|
27 |
+
c1.6-0.9,2.6-2.5,2.6-4.4V17.5c0,0,0,0,0,0c0-4.8-1.9-9.1-5-12.2C15,8.4,13.1,12.7,13.1,17.4z"/>
|
28 |
+
</g>
|
29 |
+
<circle class="st5" cx="5.7" cy="5" r="5"/>
|
30 |
+
<circle class="st6" cx="18.1" cy="35" r="5"/>
|
31 |
+
<circle class="st7" cx="43" cy="35" r="5"/>
|
32 |
+
<circle class="st8" cx="67.9" cy="35" r="5"/>
|
33 |
+
</g>
|
34 |
+
<g>
|
35 |
+
<path class="st5" d="M101,15.6c-1.8,0-3.6,0.8-4.5,2.8c-0.6-2.1-2.3-2.8-4.3-2.8c-1.5,0-3,0.6-3.8,2.1c0,0,0-0.8,0-0.8
|
36 |
+
c0-0.6-0.5-1.1-1.1-1.1c-0.6,0-1.1,0.5-1.1,1.1c0,0,0,10.9,0,10.9c0,0.6,0.5,1.1,1.1,1.1c0.6,0,1.1-0.5,1.1-1.1h0v-6.5
|
37 |
+
c0-2.1,1.4-3.7,3.5-3.7c2.3,0,3.5,1.6,3.5,3.7v6.5h0c0,0.6,0.5,1.1,1.1,1.1s1.1-0.5,1.1-1.1v-6.5c0-2.1,1.4-3.7,3.5-3.7
|
38 |
+
c2.3,0,3.4,1.5,3.4,3.7v6.5h0c0,0.6,0.5,1.1,1.1,1.1c0.6,0,1.1-0.5,1.1-1.1v-6.5C106.4,17.8,104.5,15.6,101,15.6z"/>
|
39 |
+
<path class="st5" d="M138.3,15.6c-1.8,0-3.6,0.8-4.5,2.8c-0.6-2.1-2.3-2.8-4.3-2.8c-1.5,0-3,0.6-3.8,2.1c0,0,0-0.8,0-0.8
|
40 |
+
c0-0.6-0.5-1.1-1.1-1.1c-0.6,0-1.1,0.5-1.1,1.1c0,0,0,10.9,0,10.9c0,0.6,0.5,1.1,1.1,1.1c0.6,0,1.1-0.5,1.1-1.1h0v-6.5
|
41 |
+
c0-2.1,1.4-3.7,3.5-3.7c2.3,0,3.5,1.6,3.5,3.7v6.5h0c0,0.6,0.5,1.1,1.1,1.1c0.6,0,1.1-0.5,1.1-1.1v-6.5c0-2.1,1.4-3.7,3.5-3.7
|
42 |
+
c2.3,0,3.4,1.5,3.4,3.7v6.5h0c0,0.6,0.5,1.1,1.1,1.1c0.6,0,1.1-0.5,1.1-1.1v-6.5C143.7,17.8,141.9,15.6,138.3,15.6z"/>
|
43 |
+
<path class="st5" d="M120.5,23.1c0.5,0,1-0.4,1-1c0-4.5-2.8-6.6-6.5-6.6c-3.9,0-6.7,2.8-6.7,6.7c0,4.1,2.8,6.7,6.8,6.7
|
44 |
+
c1.9,0,4-0.7,5.3-2c0.2-0.2,0.3-0.4,0.3-0.7c0-0.5-0.4-1-1-1c-0.3,0-0.5,0.1-0.7,0.3c-0.9,0.9-2.5,1.4-3.9,1.4
|
45 |
+
c-2.5,0-4.4-1.5-4.7-3.8L120.5,23.1z M110.5,21.3c0.4-2.5,2.3-3.8,4.5-3.8c2.5,0,4.2,1.3,4.3,3.8H110.5z"/>
|
46 |
+
<path class="st5" d="M173.4,23.1c0.5,0,1-0.4,1-1c0-4.5-2.8-6.6-6.5-6.6c-3.9,0-6.7,2.8-6.7,6.7c0,4.1,2.8,6.7,6.8,6.7
|
47 |
+
c1.9,0,4-0.7,5.3-2c0.2-0.2,0.3-0.4,0.3-0.7c0-0.5-0.4-1-1-1c-0.3,0-0.5,0.1-0.7,0.3c-0.9,0.9-2.5,1.4-3.9,1.4
|
48 |
+
c-2.5,0-4.4-1.5-4.7-3.8L173.4,23.1z M163.4,21.3c0.4-2.5,2.3-3.8,4.5-3.8c2.5,0,4.2,1.3,4.3,3.8H163.4z"/>
|
49 |
+
<path class="st5" d="M225.1,23.1c0.5,0,1-0.4,1-1c0-4.5-2.8-6.6-6.5-6.6c-3.9,0-6.7,2.8-6.7,6.7c0,4.1,2.8,6.7,6.8,6.7
|
50 |
+
c1.9,0,4-0.7,5.3-2c0.2-0.2,0.3-0.4,0.3-0.7c0-0.5-0.4-1-1-1c-0.3,0-0.5,0.1-0.7,0.3c-0.9,0.9-2.5,1.4-3.9,1.4
|
51 |
+
c-2.5,0-4.4-1.5-4.7-3.8L225.1,23.1z M215.1,21.3c0.4-2.5,2.3-3.8,4.5-3.8c2.5,0,4.2,1.3,4.3,3.8H215.1z"/>
|
52 |
+
<path class="st5" d="M153.3,15.6c-1.8,0-3.9,0.8-4.8,2.5l0-6.6c0-0.6-0.5-1.1-1.1-1.1c-0.6,0-1.1,0.5-1.1,1.1v16.3
|
53 |
+
c0,0.6,0.5,1.1,1.1,1.1c0.6,0,1.1-0.5,1.1-1.1l0-1.4c1,1.7,2.9,2.4,4.8,2.4c3.7,0,6.6-2.4,6.6-6.6C159.9,17.9,157,15.6,153.3,15.6z
|
54 |
+
M153.2,26.9c-2.5,0-4.5-1.9-4.5-4.7c0-2.8,2-4.7,4.5-4.7c2.5,0,4.5,1.6,4.5,4.7C157.7,25.2,155.7,26.9,153.2,26.9z"/>
|
55 |
+
<path class="st5" d="M194.4,15.6c-1.9,0-3.8,0.8-4.8,2.4l0-1.4c0-0.6-0.5-1.1-1.1-1.1c-0.6,0-1.1,0.5-1.1,1.1c0,0,0,16.5,0,17.1
|
56 |
+
c0,0.6,0.5,1.1,1.1,1.1c0.6,0,1.1-0.5,1.1-1.1s0-7.4,0-7.4c0.9,1.7,3,2.5,4.8,2.5c3.7,0,6.5-2.3,6.5-6.7
|
57 |
+
C200.9,18,198.1,15.6,194.4,15.6z M194.3,26.9c-2.5,0-4.5-1.9-4.5-4.7c0-2.8,2-4.7,4.5-4.7c2.5,0,4.5,1.7,4.5,4.6
|
58 |
+
C198.8,25.3,196.8,26.9,194.3,26.9z"/>
|
59 |
+
<path class="st5" d="M185.1,16.1c-0.7-0.3-1.4-0.5-2.3-0.5c-1.6,0-3.2,0.6-4,2v-0.9c0-0.6-0.5-1-1-1c-0.6,0-1,0.5-1,1
|
60 |
+
c0,0,0,10.6,0,11.2c0,0.6,0.5,1.1,1.1,1.1c0.6,0,1.1-0.5,1.1-1.1c0-0.6,0-6.3,0-6.3c0-2.4,1.4-3.8,3.8-3.8c0.6,0,1.1,0.1,1.6,0.3
|
61 |
+
c0.1,0.1,0.3,0.1,0.4,0.1c0.6,0,1-0.5,1-1C185.7,16.6,185.4,16.3,185.1,16.1z"/>
|
62 |
+
<path class="st5" d="M211.7,16.1c-0.7-0.3-1.4-0.5-2.3-0.5c-1.6,0-3.2,0.6-4,2v-0.9c0-0.6-0.5-1-1-1c-0.6,0-1,0.5-1,1
|
63 |
+
c0,0,0,10.6,0,11.2c0,0.6,0.5,1.1,1.1,1.1c0.6,0,1.1-0.5,1.1-1.1c0-0.6,0-6.3,0-6.3c0-2.4,1.4-3.8,3.8-3.8c0.6,0,1.1,0.1,1.6,0.3
|
64 |
+
c0.1,0.1,0.3,0.1,0.4,0.1c0.6,0,1-0.5,1-1C212.3,16.6,212,16.3,211.7,16.1z"/>
|
65 |
+
<path class="st5" d="M233.2,21.1c-1.6-0.2-3.2-0.5-3.2-1.8c0-1.4,1.4-2.1,3.2-2.1c0.8,0,2.2,0.2,2.9,0.5l0.6,0.3l0,0
|
66 |
+
c0.1,0.1,0.3,0.1,0.4,0.1c0.5,0,1-0.4,1-1c0-0.4-0.3-0.8-0.6-0.9c-0.2-0.1-0.4-0.2-0.6-0.2c-1.2-0.4-2.5-0.6-3.6-0.6
|
67 |
+
c-2.5,0-5.3,1.1-5.3,3.9c0,2.7,2.7,3.3,5.2,3.7c2,0.2,3.6,0.6,3.6,2.1c-0.1,1.7-2.1,2-3.4,2c-1.2,0-2.4-0.3-3.4-0.8l0,0
|
68 |
+
c-0.1-0.1-0.3-0.1-0.5-0.1c-0.6,0-1,0.5-1,1c0,0.4,0.2,0.8,0.6,0.9l0,0c0,0,0,0,0,0c0,0,0,0,0,0c1.3,0.6,2.6,0.9,4.2,0.9
|
69 |
+
c2.9,0,5.4-1.2,5.5-3.9C238.8,21.9,235.6,21.5,233.2,21.1z"/>
|
70 |
+
<path class="st5" d="M245.8,21.1c-1.6-0.2-3.2-0.5-3.2-1.8c0-1.4,1.4-2.1,3.2-2.1c0.8,0,2.2,0.2,2.9,0.5l0.6,0.3l0,0
|
71 |
+
c0.1,0.1,0.3,0.1,0.4,0.1c0.5,0,1-0.4,1-1c0-0.4-0.3-0.8-0.6-0.9c-0.2-0.1-0.4-0.2-0.6-0.2c-1.2-0.4-2.5-0.6-3.6-0.6
|
72 |
+
c-2.5,0-5.3,1.1-5.3,3.9c0,2.7,2.7,3.3,5.2,3.7c2,0.2,3.6,0.6,3.6,2.1c-0.1,1.7-2.1,2-3.4,2c-1.2,0-2.4-0.3-3.4-0.8l0,0
|
73 |
+
c-0.1-0.1-0.3-0.1-0.5-0.1c-0.6,0-1,0.5-1,1c0,0.4,0.2,0.8,0.6,0.9l0,0c0,0,0,0,0,0c0,0,0,0,0,0c1.3,0.6,2.6,0.9,4.2,0.9
|
74 |
+
c2.9,0,5.4-1.2,5.5-3.9C251.4,21.9,248.2,21.5,245.8,21.1z"/>
|
75 |
+
</g>
|
76 |
+
</svg>
|
assets/images/ninja-forms.png
ADDED
Binary file
|
assets/images/omteam.jpg
ADDED
Binary file
|
assets/images/trustpulse-admin-icon.svg
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
2 |
+
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
3 |
+
<svg width="100%" height="100%" viewBox="0 0 151 169" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.41421;"><g id="mark" transform="matrix(0.461143,0,0,0.461143,-106.676,-1411.44)"><g transform="matrix(2.16852,0,0,2.16852,230.412,3060.73)"> <path d="M103.188,26.561C96.662,24.799 90.29,22.455 84.167,19.45C78.972,16.901 73.961,13.997 69.051,10.94C68.956,10.999 68.861,11.058 68.765,11.117C55.841,19.137 42.1,25.615 26.835,28.481C21.327,29.515 15.756,30.164 10.174,30.64L9.996,30.655C8.621,61.384 10.671,93.057 26.99,119.407C36.937,135.468 52.327,147.495 68.626,157.492L69.051,157.751C75.721,153.675 82.272,149.328 88.368,144.473L102.206,144.473C92.398,153.704 80.957,161.44 69.326,168.346C68.781,167.973 68.776,168.346 68.776,168.346C54.105,159.635 39.822,150.006 28.706,137.221C21.155,128.537 15.176,118.558 10.867,107.757C0.039,80.614 -0.647,50.397 1.241,22.026C13.241,21.311 25.428,20.158 36.915,16.454C48.244,12.801 58.678,6.735 68.756,0.192L69.051,0C69.247,0.128 69.443,0.255 69.64,0.383C82.351,8.617 95.916,15.884 110.854,18.998C111.709,19.176 112.566,19.344 113.425,19.502L103.188,26.561ZM100.152,132.347L81.156,132.347C77.981,132.212 77.767,130.604 77.7,129.035C77.621,127.169 78.831,125.529 81.156,125.43L97.514,125.43L102.685,106.579C102.685,106.579 103.683,104.245 105.689,104.052C107.293,103.897 108.672,104.574 109.337,106.514L117.15,132.951L121.936,117.91C121.936,117.91 123.484,115.168 125.942,115.574C127.282,115.917 127.336,115.979 128.113,117.047L133.676,125.43L146.996,125.43C147.012,125.432 149.468,125.764 150.205,127.599C151.058,129.721 149.708,132.232 146.996,132.347L131.82,132.347C130.17,132.279 129.699,131.85 128.939,130.801L126.339,126.884L120.324,145.791C120.324,145.791 119.264,148.043 117.286,148.191C115.705,148.309 114.365,147.633 113.711,145.722L106.144,120.117L103.487,129.804C103.487,129.804 102.28,132.254 100.152,132.347ZM137.379,31.586C138.051,47.952 137.548,64.343 134.744,80.522C133.466,87.9 130.68,98.081 128.24,105.175L119.46,102.321C126.914,82.657 128.717,61.266 128.394,40.33L137.379,31.586Z" style="fill:white;fill-rule:nonzero;"/></g><g transform="matrix(0.746317,0,0,0.746317,244.486,3011.77)"> <path d="M171.699,279.729C173.221,277.994 173.616,276.855 175.885,273.555C188.97,254.516 227.729,203.188 276.979,163.708C298.41,146.527 321.573,130.908 342.063,120.67C376.211,103.607 387.207,101.527 403.066,97.832C406.078,97.131 416.986,95.184 418.796,99.482C420.542,103.631 413.738,108.003 411.185,110.009C408.315,112.264 342.682,161.344 287.465,234.232C239.418,297.651 207.976,380.862 207.976,380.862C207.01,382.71 196.083,402.237 181.423,403.188C167.874,404.069 150.473,386.445 150.473,386.445C147.128,383.324 130.815,363.964 117.241,340.019C99.929,309.489 85.022,273.299 85.022,273.299C85.022,273.299 69.547,242.857 98.721,226.115C127.486,209.606 140.299,226.367 146.542,236.262C151.877,244.719 162.626,265.262 167.821,275.31C169.631,278.81 170.801,280.751 171.699,279.729Z" style="fill:white;fill-rule:nonzero;"/></g></g></svg>
|
assets/images/video-background.png
ADDED
Binary file
|
assets/images/video-cta-button.png
ADDED
Binary file
|
assets/images/woocommerce_logo.png
ADDED
Binary file
|
assets/images/wpforms.png
ADDED
Binary file
|
assets/js/pointer.js
CHANGED
@@ -1,23 +1,29 @@
|
|
1 |
-
|
2 |
-
|
|
|
3 |
|
4 |
-
|
5 |
-
$('#omPointerButton, .om-pointer-close-link').click(function () {
|
6 |
-
omapiPointer;
|
7 |
-
$(omapiPointer.target).pointer('close');
|
8 |
-
});
|
9 |
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
});
|
20 |
|
21 |
-
|
22 |
-
|
23 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
window.omapiPointer = window.omapiPointer || {};
|
2 |
+
( function( window, document, $, app, undefined ) {
|
3 |
+
'use strict';
|
4 |
|
5 |
+
app.close = () => $(app.target).pointer('close');
|
|
|
|
|
|
|
|
|
6 |
|
7 |
+
app.open = () => {
|
8 |
+
const options = $.extend(app.options, {
|
9 |
+
close: () => {
|
10 |
+
$.post( ajaxurl, {
|
11 |
+
pointer: app.id,
|
12 |
+
action: 'dismiss-wp-pointer'
|
13 |
+
});
|
14 |
+
}
|
15 |
+
});
|
|
|
16 |
|
17 |
+
$(app.target).pointer( options ).pointer('open');
|
18 |
+
};
|
19 |
+
|
20 |
+
app.init = () => {
|
21 |
+
// Trigger a pointer close when clicking on the link in the pointer
|
22 |
+
$('#omPointerButton, .om-pointer-close-link').click(app.close);
|
23 |
+
|
24 |
+
app.open();
|
25 |
+
};
|
26 |
+
|
27 |
+
$( app.init );
|
28 |
+
|
29 |
+
} )( window, document, jQuery, window.omapiPointer );
|
assets/js/select2.min.js
CHANGED
File without changes
|
assets/js/settings.js
CHANGED
@@ -1,7 +1,7 @@
|
|
1 |
/* ==========================================================
|
2 |
-
*
|
3 |
* ==========================================================
|
4 |
-
* Copyright
|
5 |
* https://awesomemotive.com
|
6 |
* ========================================================== */
|
7 |
jQuery(document).ready(function ($) {
|
@@ -31,54 +31,34 @@ jQuery(document).ready(function ($) {
|
|
31 |
omapiFindTooltips();
|
32 |
|
33 |
// Add "Connect to OptinMonster" functionality
|
34 |
-
|
|
|
|
|
|
|
35 |
|
36 |
/**
|
37 |
* Add the listeners necessary for the connect to OptinMonster button
|
38 |
*/
|
39 |
-
function
|
40 |
-
function updateForm(val, $btn) {
|
41 |
-
var field = document.getElementById('omapi-field-apikey');
|
42 |
-
field.value = val;
|
43 |
-
|
44 |
-
// Start spinner.
|
45 |
-
$('.om-api-key-spinner').remove();
|
46 |
-
$btn.after('<div class="om-api-key-spinner spinner is-active" style="float: none;margin-top: 13px;"></div>');
|
47 |
-
|
48 |
-
HTMLFormElement.prototype.submit.call(field.form)
|
49 |
-
}
|
50 |
-
|
51 |
-
$('#omapiAuthorizeButton').click(function (e) {
|
52 |
-
e.preventDefault();
|
53 |
-
var w = window.open(OMAPI.app_url + 'wordpress/connect/', '_blank', 'location=no,width=500,height=730,scrollbars=0');
|
54 |
-
w.focus();
|
55 |
-
});
|
56 |
-
|
57 |
-
window.addEventListener('message', function(msg) {
|
58 |
-
if (msg.origin.replace(/\/$/, '') !== OMAPI.app_url.replace(/\/$/, '')) {
|
59 |
-
return;
|
60 |
-
}
|
61 |
-
|
62 |
-
if (!msg.data || 'string' !== typeof msg.data) {
|
63 |
-
console.error('Messages from "' + OMAPI.app_url + '" must contain an api key string.');
|
64 |
-
return;
|
65 |
-
}
|
66 |
-
|
67 |
-
updateForm(msg.data, $('#omapiAuthorizeButton'));
|
68 |
-
});
|
69 |
|
70 |
// Also initialize the "Click Here to enter an API Key" link
|
71 |
$('#omapiShowApiKey').click(function (e) {
|
72 |
e.preventDefault();
|
73 |
$('#omapi-form-api .omapi-hidden').removeClass('omapi-hidden');
|
74 |
$('#omapi-field-apikey').focus().select();
|
|
|
75 |
|
|
|
|
|
|
|
|
|
|
|
76 |
});
|
77 |
|
78 |
// Add the listener for disconnecting the API Key.
|
79 |
$('#omapiDisconnectButton').click(function (e) {
|
80 |
e.preventDefault();
|
81 |
-
updateForm('', $(this));
|
82 |
});
|
83 |
}
|
84 |
|
@@ -102,7 +82,7 @@ jQuery(document).ready(function ($) {
|
|
102 |
*/
|
103 |
function omapiResetSettings() {
|
104 |
$(document).on('click', 'input[name=reset]', function (e) {
|
105 |
-
return confirm(
|
106 |
});
|
107 |
}
|
108 |
|
@@ -160,7 +140,7 @@ jQuery(document).ready(function ($) {
|
|
160 |
initSelection: function (el, cb) {
|
161 |
var ids = $(el).val();
|
162 |
ids = ids.split(',');
|
163 |
-
items = data.filter(function(d) {
|
164 |
return ids.indexOf(d.id) > -1;
|
165 |
});
|
166 |
cb(items);
|
@@ -175,44 +155,38 @@ jQuery(document).ready(function ($) {
|
|
175 |
* @since 1.1.5
|
176 |
*/
|
177 |
function omapiBuildSupportPDF() {
|
178 |
-
var selector = $('#js--omapi-support-pdf');
|
179 |
-
|
180 |
-
selector.click(function (e) {
|
181 |
-
e.preventDefault();
|
182 |
|
|
|
183 |
var doc = new jsPDF('p', 'mm', 'letter');
|
184 |
|
185 |
-
var supportData = omapi.supportData;
|
186 |
-
var serverData = supportData.server;
|
187 |
-
var optinData = supportData.optins;
|
188 |
-
|
189 |
// Doc Title
|
190 |
doc.text(10, 10, 'OptinMonster Support Assistance');
|
191 |
|
192 |
// Server Info
|
193 |
-
i = 10;
|
194 |
-
$.each(
|
195 |
i += 10;
|
196 |
doc.text(10, i, key + ' : ' + value);
|
197 |
});
|
198 |
|
199 |
// Optin Info
|
200 |
-
$.each(
|
201 |
|
202 |
-
//Move down 10mm
|
203 |
-
i = 10;
|
204 |
// Add a new page
|
205 |
doc.addPage();
|
206 |
-
//Title as slug
|
207 |
doc.text(10, 10, key);
|
208 |
$.each(value, function (key, value) {
|
209 |
|
210 |
// Keep from outputing ugly Object text
|
211 |
-
output = ($.isPlainObject(value) ? '' : value);
|
212 |
// new line
|
213 |
i += 10;
|
214 |
doc.text(10, i, key + ' : ' + output);
|
215 |
-
//Output any object data from the value
|
216 |
if ($.isPlainObject(value)) {
|
217 |
$.each(value, function (key, value) {
|
218 |
i += 10;
|
@@ -225,6 +199,24 @@ jQuery(document).ready(function ($) {
|
|
225 |
|
226 |
// Save the PDF
|
227 |
doc.save('OMSupportHelp.pdf');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
228 |
|
229 |
});
|
230 |
}
|
@@ -298,4 +290,88 @@ jQuery(document).ready(function ($) {
|
|
298 |
$('[data-toggle="tooltip"]').tooltip()
|
299 |
}
|
300 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
301 |
});
|
1 |
/* ==========================================================
|
2 |
+
* settings.js
|
3 |
* ==========================================================
|
4 |
+
* Copyright 2020 Awesome Motive.
|
5 |
* https://awesomemotive.com
|
6 |
* ========================================================== */
|
7 |
jQuery(document).ready(function ($) {
|
31 |
omapiFindTooltips();
|
32 |
|
33 |
// Add "Connect to OptinMonster" functionality
|
34 |
+
omapiHandleApiKeyButtons();
|
35 |
+
|
36 |
+
omapiInitInstallButtons();
|
37 |
+
omapiRemoveQueryVars();
|
38 |
|
39 |
/**
|
40 |
* Add the listeners necessary for the connect to OptinMonster button
|
41 |
*/
|
42 |
+
function omapiHandleApiKeyButtons() {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
43 |
|
44 |
// Also initialize the "Click Here to enter an API Key" link
|
45 |
$('#omapiShowApiKey').click(function (e) {
|
46 |
e.preventDefault();
|
47 |
$('#omapi-form-api .omapi-hidden').removeClass('omapi-hidden');
|
48 |
$('#omapi-field-apikey').focus().select();
|
49 |
+
});
|
50 |
|
51 |
+
$('#omapiShowApiKeys').click(function (e) {
|
52 |
+
e.preventDefault();
|
53 |
+
$('#omapi-form-woocommerce .omapi-hidden').removeClass('omapi-hidden');
|
54 |
+
$('.manually-connect-wc').hide();
|
55 |
+
$('#omapi-field-consumer_key').focus().select();
|
56 |
});
|
57 |
|
58 |
// Add the listener for disconnecting the API Key.
|
59 |
$('#omapiDisconnectButton').click(function (e) {
|
60 |
e.preventDefault();
|
61 |
+
OMAPI.updateForm('', $(this));
|
62 |
});
|
63 |
}
|
64 |
|
82 |
*/
|
83 |
function omapiResetSettings() {
|
84 |
$(document).on('click', 'input[name=reset]', function (e) {
|
85 |
+
return confirm(OMAPI.confirm);
|
86 |
});
|
87 |
}
|
88 |
|
140 |
initSelection: function (el, cb) {
|
141 |
var ids = $(el).val();
|
142 |
ids = ids.split(',');
|
143 |
+
var items = data.filter(function(d) {
|
144 |
return ids.indexOf(d.id) > -1;
|
145 |
});
|
146 |
cb(items);
|
155 |
* @since 1.1.5
|
156 |
*/
|
157 |
function omapiBuildSupportPDF() {
|
158 |
+
var $selector = $('#js--omapi-support-pdf');
|
|
|
|
|
|
|
159 |
|
160 |
+
const generateDoc = data => {
|
161 |
var doc = new jsPDF('p', 'mm', 'letter');
|
162 |
|
|
|
|
|
|
|
|
|
163 |
// Doc Title
|
164 |
doc.text(10, 10, 'OptinMonster Support Assistance');
|
165 |
|
166 |
// Server Info
|
167 |
+
var i = 10;
|
168 |
+
$.each(data.server, function (key, value) {
|
169 |
i += 10;
|
170 |
doc.text(10, i, key + ' : ' + value);
|
171 |
});
|
172 |
|
173 |
// Optin Info
|
174 |
+
$.each(data.campaigns, function (key, value) {
|
175 |
|
176 |
+
// Move down 10mm
|
177 |
+
var i = 10;
|
178 |
// Add a new page
|
179 |
doc.addPage();
|
180 |
+
// Title as slug
|
181 |
doc.text(10, 10, key);
|
182 |
$.each(value, function (key, value) {
|
183 |
|
184 |
// Keep from outputing ugly Object text
|
185 |
+
var output = ( $.isPlainObject(value) ? '' : value );
|
186 |
// new line
|
187 |
i += 10;
|
188 |
doc.text(10, i, key + ' : ' + output);
|
189 |
+
// Output any object data from the value
|
190 |
if ($.isPlainObject(value)) {
|
191 |
$.each(value, function (key, value) {
|
192 |
i += 10;
|
199 |
|
200 |
// Save the PDF
|
201 |
doc.save('OMSupportHelp.pdf');
|
202 |
+
}
|
203 |
+
|
204 |
+
$selector.click(function (e) {
|
205 |
+
e.preventDefault();
|
206 |
+
|
207 |
+
// Start spinner.
|
208 |
+
$('.om-api-key-spinner').remove();
|
209 |
+
$selector.after('<div class="om-api-key-spinner spinner is-active" style="float: none;margin-top:7px;"></div>');
|
210 |
+
|
211 |
+
$.ajax( {
|
212 |
+
url: OMAPI.root + 'omapp/v1/support?format=pdf',
|
213 |
+
beforeSend: xhr => xhr.setRequestHeader( 'X-WP-Nonce', OMAPI.nonce ),
|
214 |
+
dataType: 'json',
|
215 |
+
data: { format : 'pdf' },
|
216 |
+
success: generateDoc,
|
217 |
+
} )
|
218 |
+
.done( () => $('.om-api-key-spinner').remove() )
|
219 |
+
.fail( ( jqXHR, textStatus ) => console.error({ jqXHR, textStatus }) );
|
220 |
|
221 |
});
|
222 |
}
|
290 |
$('[data-toggle="tooltip"]').tooltip()
|
291 |
}
|
292 |
|
293 |
+
function omapiInitInstallButtons() {
|
294 |
+
$('.install-plugin-form').submit((e) => {
|
295 |
+
e.preventDefault();
|
296 |
+
let fields = $(e.currentTarget).serializeArray();
|
297 |
+
let nonce = fields.find((field) => 'nonce' === field.name).value;
|
298 |
+
let plugin = fields.find((field) => 'plugin' === field.name).value;
|
299 |
+
let pluginClassName = plugin.replace('.', '').replace('/', '');
|
300 |
+
let installAction = fields.find((field) => 'action' === field.name).value;
|
301 |
+
let url = fields.find((field) => 'url' === field.name).value;
|
302 |
+
let el = $(`.omapi-plugin-recommendation--${pluginClassName}`);
|
303 |
+
|
304 |
+
if (! el.length) {
|
305 |
+
el = $('html')
|
306 |
+
}
|
307 |
+
|
308 |
+
$('.button-install', el).html('Installing...');
|
309 |
+
$('.button-activate', el).html('Activating...');
|
310 |
+
$('#om-plugin-alerts').hide();
|
311 |
+
|
312 |
+
$.post(ajaxurl, {
|
313 |
+
action: 'om_plugin_install',
|
314 |
+
'optin-monster-ajax-route': true,
|
315 |
+
nonce,
|
316 |
+
plugin,
|
317 |
+
installAction,
|
318 |
+
url
|
319 |
+
}, function (data) {
|
320 |
+
if (data.success) {
|
321 |
+
window.location.reload();
|
322 |
+
} else {
|
323 |
+
$('.button-install', el).html('Install Plugin');
|
324 |
+
$('.button-activate', el).html('Activate Plugin');
|
325 |
+
|
326 |
+
$('#om-plugin-alerts').show().html($( '<p/>' ).html( data.data || 'Something went wrong!' ));
|
327 |
+
}
|
328 |
+
});
|
329 |
+
})
|
330 |
+
}
|
331 |
+
|
332 |
+
/**
|
333 |
+
* Helper to remove the OM query vars.
|
334 |
+
*
|
335 |
+
* @since 1.9.9
|
336 |
+
*
|
337 |
+
* @return {void}
|
338 |
+
*/
|
339 |
+
function omapiRemoveQueryVars() {
|
340 |
+
if ( window.history.replaceState && window.location.search ) {
|
341 |
+
function removeParam(parameter, url) {
|
342 |
+
var urlparts = url.split('?');
|
343 |
+
if ( urlparts.length < 2) {
|
344 |
+
return url;
|
345 |
+
}
|
346 |
+
|
347 |
+
var prefix = encodeURIComponent(parameter) + '=';
|
348 |
+
var pars = urlparts[1].split(/[&;]/g);
|
349 |
+
for ( var i = pars.length; i-- > 0;) {
|
350 |
+
if (pars[i].lastIndexOf(prefix, 0) !== -1) {
|
351 |
+
pars.splice(i, 1);
|
352 |
+
}
|
353 |
+
}
|
354 |
+
|
355 |
+
return urlparts[0] + (pars.length > 0 ? '?' + pars.join('&') : '');
|
356 |
+
}
|
357 |
+
|
358 |
+
const toRemove = [
|
359 |
+
'optin_monster_api_action_done',
|
360 |
+
'optin_monster_api_action_type',
|
361 |
+
'optin_monster_api_action_id',
|
362 |
+
];
|
363 |
+
let url = document.location.href;
|
364 |
+
|
365 |
+
window.location.search.split('&').forEach( bit => {
|
366 |
+
toRemove.forEach( key => {
|
367 |
+
if ( 0 === bit.indexOf( key ) ) {
|
368 |
+
url = removeParam( bit.split('=')[0], url );
|
369 |
+
}
|
370 |
+
} );
|
371 |
+
});
|
372 |
+
|
373 |
+
window.history.replaceState( null, null, url );
|
374 |
+
}
|
375 |
+
}
|
376 |
+
|
377 |
});
|
assets/js/tooltip.min.js
CHANGED
File without changes
|
optin-monster-wp-api.php
CHANGED
@@ -5,7 +5,7 @@
|
|
5 |
* Description: OptinMonster is the best WordPress popup plugin that helps you grow your email list and sales with email popups, exit intent popups, floating bars and more!
|
6 |
* Author: OptinMonster Team
|
7 |
* Author URI: https://optinmonster.com
|
8 |
-
* Version: 1.9.
|
9 |
* Text Domain: optin-monster-api
|
10 |
* Domain Path: languages
|
11 |
* WC requires at least: 3.2.0
|
@@ -62,7 +62,7 @@ class OMAPI {
|
|
62 |
*
|
63 |
* @var string
|
64 |
*/
|
65 |
-
public $version = '1.9.
|
66 |
|
67 |
/**
|
68 |
* The name of the plugin.
|
@@ -133,6 +133,13 @@ class OMAPI {
|
|
133 |
*/
|
134 |
public $woocommerce;
|
135 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
136 |
/**
|
137 |
* OMAPI_Actions object (loaded only in the admin)
|
138 |
*
|
@@ -247,7 +254,6 @@ class OMAPI {
|
|
247 |
* @since 1.0.0
|
248 |
*/
|
249 |
public function load_plugin_textdomain() {
|
250 |
-
|
251 |
$domain = 'optin-monster-api';
|
252 |
$locale = apply_filters( 'plugin_locale', get_locale(), $domain );
|
253 |
|
@@ -280,10 +286,17 @@ class OMAPI {
|
|
280 |
define( 'OPTINMONSTER_APP_URL', 'https://app.optinmonster.com' );
|
281 |
}
|
282 |
|
|
|
|
|
|
|
|
|
283 |
if ( ! defined( 'OPTINMONSTER_CDN_URL' ) ) {
|
284 |
-
define(
|
|
|
|
|
285 |
? 'https://a.omwpapi.com'
|
286 |
-
|
|
|
287 |
}
|
288 |
|
289 |
if ( ! defined( 'OPTINMONSTER_APIJS_URL' ) ) {
|
@@ -317,7 +330,7 @@ class OMAPI {
|
|
317 |
// Check/set the plugin options.
|
318 |
$option = get_option( 'optin_monster_api' );
|
319 |
if ( empty( $option ) ) {
|
320 |
-
$option =
|
321 |
update_option( 'optin_monster_api', $option );
|
322 |
}
|
323 |
|
@@ -355,11 +368,13 @@ class OMAPI {
|
|
355 |
|
356 |
// Register global components.
|
357 |
$this->ajax = new OMAPI_Ajax();
|
|
|
358 |
$this->type = new OMAPI_Type();
|
359 |
$this->output = new OMAPI_Output();
|
360 |
$this->shortcode = new OMAPI_Shortcode();
|
361 |
$this->woocommerce = new OMAPI_WooCommerce();
|
362 |
-
|
|
|
363 |
|
364 |
// Fire a hook to say that the global classes are loaded.
|
365 |
do_action( 'optin_monster_api_global_loaded' );
|
@@ -428,9 +443,7 @@ class OMAPI {
|
|
428 |
* @return array|bool Array of optin data or false if none found.
|
429 |
*/
|
430 |
public function get_optin( $id ) {
|
431 |
-
|
432 |
-
return get_post( $id );
|
433 |
-
|
434 |
}
|
435 |
|
436 |
/**
|
@@ -442,9 +455,49 @@ class OMAPI {
|
|
442 |
* @return array|bool Array of optin data or false if none found.
|
443 |
*/
|
444 |
public function get_optin_by_slug( $slug ) {
|
|
|
|
|
445 |
|
446 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
447 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
448 |
}
|
449 |
|
450 |
/**
|
@@ -474,6 +527,10 @@ class OMAPI {
|
|
474 |
return false;
|
475 |
}
|
476 |
|
|
|
|
|
|
|
|
|
477 |
// Return the optin data.
|
478 |
return $optins;
|
479 |
}
|
@@ -490,7 +547,7 @@ class OMAPI {
|
|
490 |
$option = get_option( 'optin_monster_api' );
|
491 |
if ( ! empty( $key ) && ! empty( $subkey ) ) {
|
492 |
return isset( $option[ $key ][ $subkey ] ) ? $option[ $key ][ $subkey ] : $default;
|
493 |
-
}
|
494 |
return isset( $option[ $key ] ) ? $option[ $key ] : $default;
|
495 |
} else {
|
496 |
return $option;
|
@@ -548,10 +605,11 @@ class OMAPI {
|
|
548 |
}
|
549 |
|
550 |
// Return the API credentials.
|
551 |
-
return apply_filters(
|
|
|
552 |
array(
|
553 |
-
'key'
|
554 |
-
'user'
|
555 |
'apikey' => $apikey,
|
556 |
)
|
557 |
);
|
@@ -579,8 +637,8 @@ class OMAPI {
|
|
579 |
*/
|
580 |
public function can_migrate() {
|
581 |
if ( false == ( $old_optins = get_transient( '_om_old_optins' ) ) ) {
|
582 |
-
$args
|
583 |
-
'post_type'
|
584 |
'posts_per_page' => -1,
|
585 |
);
|
586 |
$old_optins = get_posts( $args );
|
@@ -654,7 +712,7 @@ class OMAPI {
|
|
654 |
* @return bool
|
655 |
*/
|
656 |
public static function is_mailpoet_active() {
|
657 |
-
return
|
658 |
}
|
659 |
|
660 |
/**
|
@@ -689,8 +747,8 @@ class OMAPI {
|
|
689 |
*
|
690 |
* @since 1.9.0
|
691 |
*
|
692 |
-
* @param string
|
693 |
-
* @param mixed
|
694 |
*
|
695 |
* @return void
|
696 |
*/
|
@@ -703,8 +761,8 @@ class OMAPI {
|
|
703 |
*
|
704 |
* @since 1.9.0
|
705 |
*
|
706 |
-
* @param string
|
707 |
-
* @param mixed
|
708 |
*
|
709 |
* @return void
|
710 |
*/
|
@@ -731,6 +789,7 @@ class OMAPI {
|
|
731 |
'is_invalid' => false,
|
732 |
'installed' => time(),
|
733 |
'connected' => '',
|
|
|
734 |
'welcome' => array(
|
735 |
'status' => 'none',
|
736 |
),
|
@@ -761,6 +820,30 @@ class OMAPI {
|
|
761 |
|
762 |
}
|
763 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
764 |
/**
|
765 |
* Hides unrelated admin notices.
|
766 |
*
|
@@ -806,6 +889,63 @@ class OMAPI {
|
|
806 |
}
|
807 |
}
|
808 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
809 |
/**
|
810 |
* Returns the singleton instance of the class.
|
811 |
*
|
@@ -822,7 +962,6 @@ class OMAPI {
|
|
822 |
return self::$instance;
|
823 |
|
824 |
}
|
825 |
-
|
826 |
}
|
827 |
|
828 |
register_activation_hook( __FILE__, 'optin_monster_api_activation_hook' );
|
@@ -838,9 +977,9 @@ register_activation_hook( __FILE__, 'optin_monster_api_activation_hook' );
|
|
838 |
function optin_monster_api_activation_hook( $network_wide ) {
|
839 |
|
840 |
global $wp_version;
|
841 |
-
if ( version_compare( $wp_version, '
|
842 |
deactivate_plugins( plugin_basename( __FILE__ ) );
|
843 |
-
wp_die( sprintf( __( 'Sorry, but your version of WordPress does not meet OptinMonster\'s required version of <strong>
|
844 |
}
|
845 |
|
846 |
$instance = OMAPI::get_instance();
|
@@ -863,7 +1002,7 @@ function optin_monster_api_activation_hook( $network_wide ) {
|
|
863 |
|
864 |
// If we don't have api credentials, set up the redirect on plugin activation.
|
865 |
if ( ! $instance->get_api_credentials() ) {
|
866 |
-
$options
|
867 |
$options['welcome']['status'] = 'none';
|
868 |
update_option( 'optin_monster_api', $options );
|
869 |
}
|
@@ -940,8 +1079,8 @@ if ( ! function_exists( 'optin_monster_tag' ) ) {
|
|
940 |
*
|
941 |
* @since 1.0.0
|
942 |
*
|
943 |
-
* @param int
|
944 |
-
* @param bool
|
945 |
*/
|
946 |
function optin_monster_tag( $id, $return = false ) {
|
947 |
|
5 |
* Description: OptinMonster is the best WordPress popup plugin that helps you grow your email list and sales with email popups, exit intent popups, floating bars and more!
|
6 |
* Author: OptinMonster Team
|
7 |
* Author URI: https://optinmonster.com
|
8 |
+
* Version: 1.9.10
|
9 |
* Text Domain: optin-monster-api
|
10 |
* Domain Path: languages
|
11 |
* WC requires at least: 3.2.0
|
62 |
*
|
63 |
* @var string
|
64 |
*/
|
65 |
+
public $version = '1.9.10';
|
66 |
|
67 |
/**
|
68 |
* The name of the plugin.
|
133 |
*/
|
134 |
public $woocommerce;
|
135 |
|
136 |
+
/**
|
137 |
+
* OMAPI_MailPoet object.
|
138 |
+
*
|
139 |
+
* @var OMAPI_MailPoet;
|
140 |
+
*/
|
141 |
+
public $mailpoet;
|
142 |
+
|
143 |
/**
|
144 |
* OMAPI_Actions object (loaded only in the admin)
|
145 |
*
|
254 |
* @since 1.0.0
|
255 |
*/
|
256 |
public function load_plugin_textdomain() {
|
|
|
257 |
$domain = 'optin-monster-api';
|
258 |
$locale = apply_filters( 'plugin_locale', get_locale(), $domain );
|
259 |
|
286 |
define( 'OPTINMONSTER_APP_URL', 'https://app.optinmonster.com' );
|
287 |
}
|
288 |
|
289 |
+
if ( ! defined( 'OPTINMONSTER_API_URL' ) ) {
|
290 |
+
define( 'OPTINMONSTER_API_URL', 'https://api.omwpapi.com' );
|
291 |
+
}
|
292 |
+
|
293 |
if ( ! defined( 'OPTINMONSTER_CDN_URL' ) ) {
|
294 |
+
define(
|
295 |
+
'OPTINMONSTER_CDN_URL',
|
296 |
+
is_admin()
|
297 |
? 'https://a.omwpapi.com'
|
298 |
+
: 'https://a.omappapi.com'
|
299 |
+
);
|
300 |
}
|
301 |
|
302 |
if ( ! defined( 'OPTINMONSTER_APIJS_URL' ) ) {
|
330 |
// Check/set the plugin options.
|
331 |
$option = get_option( 'optin_monster_api' );
|
332 |
if ( empty( $option ) ) {
|
333 |
+
$option = self::default_options();
|
334 |
update_option( 'optin_monster_api', $option );
|
335 |
}
|
336 |
|
368 |
|
369 |
// Register global components.
|
370 |
$this->ajax = new OMAPI_Ajax();
|
371 |
+
$this->blocks = new OMAPI_Blocks();
|
372 |
$this->type = new OMAPI_Type();
|
373 |
$this->output = new OMAPI_Output();
|
374 |
$this->shortcode = new OMAPI_Shortcode();
|
375 |
$this->woocommerce = new OMAPI_WooCommerce();
|
376 |
+
$this->mailpoet = new OMAPI_MailPoet();
|
377 |
+
$this->url = plugin_dir_url( __FILE__ );
|
378 |
|
379 |
// Fire a hook to say that the global classes are loaded.
|
380 |
do_action( 'optin_monster_api_global_loaded' );
|
443 |
* @return array|bool Array of optin data or false if none found.
|
444 |
*/
|
445 |
public function get_optin( $id ) {
|
446 |
+
return get_post( absint( $id ) );
|
|
|
|
|
447 |
}
|
448 |
|
449 |
/**
|
455 |
* @return array|bool Array of optin data or false if none found.
|
456 |
*/
|
457 |
public function get_optin_by_slug( $slug ) {
|
458 |
+
return get_page_by_path( sanitize_text_field( $slug ), OBJECT, 'omapi' );
|
459 |
+
}
|
460 |
|
461 |
+
/**
|
462 |
+
* Get all data for given campaign (optin).
|
463 |
+
*
|
464 |
+
* @since 1.9.10
|
465 |
+
*
|
466 |
+
* @param WP_Post $campaign The campaign post object.
|
467 |
+
*
|
468 |
+
* @return array
|
469 |
+
*/
|
470 |
+
public function collect_campaign_data( $campaign ) {
|
471 |
+
$meta = array();
|
472 |
+
$keys = get_post_meta( $campaign->ID );
|
473 |
+
|
474 |
+
if ( ! empty( $keys ) ) {
|
475 |
+
foreach ( $keys as $key => $x ) {
|
476 |
+
$val = get_post_meta( $campaign->ID, $key, true );
|
477 |
+
switch ( $key ) {
|
478 |
+
case '_omapi_never':
|
479 |
+
case '_omapi_only':
|
480 |
+
$val = OMAPI_Utils::unique_array( $val );
|
481 |
+
break;
|
482 |
+
case '_omapi_taxonomies':
|
483 |
+
$val = ! empty( $val )
|
484 |
+
? array_map( array( 'OMAPI_Utils', 'unique_array' ), $val )
|
485 |
+
: array();
|
486 |
+
break;
|
487 |
+
}
|
488 |
+
$meta[ $key ] = $val;
|
489 |
+
}
|
490 |
+
}
|
491 |
+
|
492 |
+
$type = get_post_meta( $campaign->ID, '_omapi_type', true );
|
493 |
|
494 |
+
return array(
|
495 |
+
'id' => $campaign->post_name,
|
496 |
+
'post' => $campaign,
|
497 |
+
'type' => $type,
|
498 |
+
'inline' => OMAPI_Utils::is_inline_type( $type ),
|
499 |
+
'post_meta' => $meta,
|
500 |
+
);
|
501 |
}
|
502 |
|
503 |
/**
|
527 |
return false;
|
528 |
}
|
529 |
|
530 |
+
foreach ( $optins as $optin ) {
|
531 |
+
$optin->campaign_type = get_post_meta( $optin->ID, '_omapi_type', true );
|
532 |
+
}
|
533 |
+
|
534 |
// Return the optin data.
|
535 |
return $optins;
|
536 |
}
|
547 |
$option = get_option( 'optin_monster_api' );
|
548 |
if ( ! empty( $key ) && ! empty( $subkey ) ) {
|
549 |
return isset( $option[ $key ][ $subkey ] ) ? $option[ $key ][ $subkey ] : $default;
|
550 |
+
} elseif ( ! empty( $key ) ) {
|
551 |
return isset( $option[ $key ] ) ? $option[ $key ] : $default;
|
552 |
} else {
|
553 |
return $option;
|
605 |
}
|
606 |
|
607 |
// Return the API credentials.
|
608 |
+
return apply_filters(
|
609 |
+
'optin_monster_api_creds',
|
610 |
array(
|
611 |
+
'key' => $key,
|
612 |
+
'user' => $user,
|
613 |
'apikey' => $apikey,
|
614 |
)
|
615 |
);
|
637 |
*/
|
638 |
public function can_migrate() {
|
639 |
if ( false == ( $old_optins = get_transient( '_om_old_optins' ) ) ) {
|
640 |
+
$args = array(
|
641 |
+
'post_type' => 'optin',
|
642 |
'posts_per_page' => -1,
|
643 |
);
|
644 |
$old_optins = get_posts( $args );
|
712 |
* @return bool
|
713 |
*/
|
714 |
public static function is_mailpoet_active() {
|
715 |
+
return OMAPI_MailPoet::is_active();
|
716 |
}
|
717 |
|
718 |
/**
|
747 |
*
|
748 |
* @since 1.9.0
|
749 |
*
|
750 |
+
* @param string $file The view file.
|
751 |
+
* @param mixed $data Arbitrary data to be made available to the view file.
|
752 |
*
|
753 |
* @return void
|
754 |
*/
|
761 |
*
|
762 |
* @since 1.9.0
|
763 |
*
|
764 |
+
* @param string $file The view file.
|
765 |
+
* @param mixed $data Arbitrary data to be made available to the view file.
|
766 |
*
|
767 |
* @return void
|
768 |
*/
|
789 |
'is_invalid' => false,
|
790 |
'installed' => time(),
|
791 |
'connected' => '',
|
792 |
+
'beta' => false,
|
793 |
'welcome' => array(
|
794 |
'status' => 'none',
|
795 |
),
|
820 |
|
821 |
}
|
822 |
|
823 |
+
/**
|
824 |
+
* Gets all site IDs associated with this site
|
825 |
+
*
|
826 |
+
* @since 1.9.10
|
827 |
+
*
|
828 |
+
* @return array
|
829 |
+
*/
|
830 |
+
public function get_site_ids() {
|
831 |
+
$option = $this->get_option();
|
832 |
+
return ! empty( $option['siteIds'] ) ? (array) $option['siteIds'] : array();
|
833 |
+
}
|
834 |
+
|
835 |
+
/**
|
836 |
+
* Gets the site ID associated with this site
|
837 |
+
*
|
838 |
+
* @since 1.9.10
|
839 |
+
*
|
840 |
+
* @return string
|
841 |
+
*/
|
842 |
+
public function get_site_id() {
|
843 |
+
$option = $this->get_option();
|
844 |
+
return ! empty( $option['siteId'] ) ? (string) $option['siteId'] : '';
|
845 |
+
}
|
846 |
+
|
847 |
/**
|
848 |
* Hides unrelated admin notices.
|
849 |
*
|
889 |
}
|
890 |
}
|
891 |
|
892 |
+
/**
|
893 |
+
* Get beta version.
|
894 |
+
*
|
895 |
+
* @param string $format The php date format.
|
896 |
+
*
|
897 |
+
* @return bool
|
898 |
+
*/
|
899 |
+
public function beta_version( $format = 'd M Y H:i:s' ) {
|
900 |
+
$version = false;
|
901 |
+
if ( false !== strpos( $this->version, 'beta' ) ) {
|
902 |
+
$file = plugin_dir_path( __FILE__ ) . '.betaversion';
|
903 |
+
if ( file_exists( $file ) ) {
|
904 |
+
ob_start();
|
905 |
+
include plugin_dir_path( __FILE__ ) . '.betaversion';
|
906 |
+
$timestamp = ob_get_clean();
|
907 |
+
|
908 |
+
if ( ! empty( $timestamp ) ) {
|
909 |
+
$version = date( $format, (int) $timestamp );
|
910 |
+
}
|
911 |
+
}
|
912 |
+
}
|
913 |
+
|
914 |
+
return $version;
|
915 |
+
}
|
916 |
+
|
917 |
+
/**
|
918 |
+
* Get the asset version for enqueued assets.
|
919 |
+
*
|
920 |
+
* @since 1.9.10
|
921 |
+
*
|
922 |
+
* @return mixed
|
923 |
+
*/
|
924 |
+
public function asset_version() {
|
925 |
+
if ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ) {
|
926 |
+
return time();
|
927 |
+
}
|
928 |
+
|
929 |
+
if ( defined( 'OPTINMONSTER_ENV' ) && 'dev' === strtolower( OPTINMONSTER_ENV ) ) {
|
930 |
+
return time();
|
931 |
+
}
|
932 |
+
|
933 |
+
return $this->beta_enabled() && $this->beta_version( 'U' )
|
934 |
+
? $this->beta_version( 'U' )
|
935 |
+
: $this->version;
|
936 |
+
}
|
937 |
+
|
938 |
+
/**
|
939 |
+
* Check if beta is enabled.
|
940 |
+
*
|
941 |
+
* @return bool
|
942 |
+
*/
|
943 |
+
public function beta_enabled() {
|
944 |
+
$option = $this->get_option();
|
945 |
+
|
946 |
+
return apply_filters( 'optin_monster_beta_enabled', ! empty( $option['beta'] ) );
|
947 |
+
}
|
948 |
+
|
949 |
/**
|
950 |
* Returns the singleton instance of the class.
|
951 |
*
|
962 |
return self::$instance;
|
963 |
|
964 |
}
|
|
|
965 |
}
|
966 |
|
967 |
register_activation_hook( __FILE__, 'optin_monster_api_activation_hook' );
|
977 |
function optin_monster_api_activation_hook( $network_wide ) {
|
978 |
|
979 |
global $wp_version;
|
980 |
+
if ( version_compare( $wp_version, '4.7.0', '<' ) && ! defined( 'OPTINMONSTER_FORCE_ACTIVATION' ) ) {
|
981 |
deactivate_plugins( plugin_basename( __FILE__ ) );
|
982 |
+
wp_die( sprintf( __( 'Sorry, but your version of WordPress does not meet OptinMonster\'s required version of <strong>4.7.0</strong> to run properly. The plugin has been deactivated. <a href="%s">Click here to return to the Dashboard</a>.', 'optin-monster-api' ), get_admin_url() ) );
|
983 |
}
|
984 |
|
985 |
$instance = OMAPI::get_instance();
|
1002 |
|
1003 |
// If we don't have api credentials, set up the redirect on plugin activation.
|
1004 |
if ( ! $instance->get_api_credentials() ) {
|
1005 |
+
$options = $instance->get_option();
|
1006 |
$options['welcome']['status'] = 'none';
|
1007 |
update_option( 'optin_monster_api', $options );
|
1008 |
}
|
1079 |
*
|
1080 |
* @since 1.0.0
|
1081 |
*
|
1082 |
+
* @param int $string The post name of the optin to load.
|
1083 |
+
* @param bool $return Flag to echo or return the optin HTML.
|
1084 |
*/
|
1085 |
function optin_monster_tag( $id, $return = false ) {
|
1086 |
|
readme.txt
CHANGED
@@ -4,7 +4,7 @@ Tags: marketing, popups, popup builder, newsletter, conversion, optin forms, for
|
|
4 |
Requires at least: 4.7.0
|
5 |
Tested up to: 5.4.2
|
6 |
Requires PHP: 5.3
|
7 |
-
Stable tag: 1.9.
|
8 |
License: GNU General Public License v2.0 or later
|
9 |
|
10 |
Create popups, opt-in forms, & floating bars to get more email newsletter subscribers, leads, and increase sales conversion - #1 marketing popup plugin.
|
@@ -218,7 +218,7 @@ Other Powerful Popup Features:
|
|
218 |
|
219 |
After reading this feature list, you can probably imagine why OptinMonster is the best WordPress popup form plugin in the market.
|
220 |
|
221 |
-
<a href="https://optinmonster.com/wp
|
222 |
|
223 |
= Credits =
|
224 |
|
@@ -471,6 +471,32 @@ Syed Balkhi
|
|
471 |
|
472 |
**Most Recent Changes:**
|
473 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
474 |
= 1.9.9 =
|
475 |
* Fix issue where if multiple post tags were selected, popups and other campaigns would only appear on the first tag selected.
|
476 |
* Fix campaign shortcode suggestion in admin being incorrect.
|
@@ -492,8 +518,4 @@ Syed Balkhi
|
|
492 |
* You can now use Gravity Forms AJAX submissions and form validation with your OptinMonster campaigns.
|
493 |
* Update admin notices to use the recommended classes
|
494 |
|
495 |
-
= 1.9.5 =
|
496 |
-
* Add support for www domains in Api.js embed code.
|
497 |
-
* Improve MailPoet error outputs.
|
498 |
-
|
499 |
**[View entire changelog](https://plugins.svn.wordpress.org/optinmonster/trunk/CHANGELOG.md)**
|
4 |
Requires at least: 4.7.0
|
5 |
Tested up to: 5.4.2
|
6 |
Requires PHP: 5.3
|
7 |
+
Stable tag: 1.9.10
|
8 |
License: GNU General Public License v2.0 or later
|
9 |
|
10 |
Create popups, opt-in forms, & floating bars to get more email newsletter subscribers, leads, and increase sales conversion - #1 marketing popup plugin.
|
218 |
|
219 |
After reading this feature list, you can probably imagine why OptinMonster is the best WordPress popup form plugin in the market.
|
220 |
|
221 |
+
<a href="https://optinmonster.com/wp/?utm_source=orgplugin&utm_medium=link&utm_campaign=wpreadme" rel="friend">Give OptinMonster a try</a>.
|
222 |
|
223 |
= Credits =
|
224 |
|
471 |
|
472 |
**Most Recent Changes:**
|
473 |
|
474 |
+
= 1.9.10 =
|
475 |
+
* New Gutenberg block for embedding inline campaigns.
|
476 |
+
* Improved syncing of data between the OptinMonster app and the WordPress plugin to help with shortcode parsing, and adding/removing campaigns when going live or pausing. Will also retain previously saved Output Settings when un-pausing a campaign and refreshing.
|
477 |
+
* Improvements to a11y across the plugin's admin pages.
|
478 |
+
* Updated Constant Contact branding
|
479 |
+
* Updates to improve performance on the plugin's admin pages.
|
480 |
+
* Minified assets to improve performance on the plugin's admin pages.
|
481 |
+
* Increase timeout time for the WooCommerce auto-generate keys request to accomodate for some servers.
|
482 |
+
* Clean up admin notices when on the OptinMonster plugin's admin pages.
|
483 |
+
* New About Us page.
|
484 |
+
* Added filter for auto-enabling new campaigns (true by default).
|
485 |
+
* Added filter for changing the API enqueue location from the default footer.
|
486 |
+
* Added plugin settings menu links to plugin action links in the Plugins table.
|
487 |
+
* Improvements to the Welcome page to allow connecting account directly.
|
488 |
+
* Improvements to the account-connection process.
|
489 |
+
* Improvements to the Campaigns page.
|
490 |
+
* Improvements to the Campaigns' Output Settings pages.
|
491 |
+
* Fix bug with mailpoet phone number possibly being set to 0.
|
492 |
+
* Fix bug to allow campaigns to show on categories, even when the category is registered to a non-"post" post-type.
|
493 |
+
* Fixed potential issues with storing our embed code for multisite installations.
|
494 |
+
* Fixed bug where cookie-delete button was not deleting all OptinMonster cookies for given user.
|
495 |
+
* Improved WooCommerce connect screen by showing the auto-generate option by default.
|
496 |
+
* Removed duplicate WooCommerce categories/tags from the Output Settings.
|
497 |
+
* Various other bug fixes, and performance updates.
|
498 |
+
* Improved debug output.
|
499 |
+
|
500 |
= 1.9.9 =
|
501 |
* Fix issue where if multiple post tags were selected, popups and other campaigns would only appear on the first tag selected.
|
502 |
* Fix campaign shortcode suggestion in admin being incorrect.
|
518 |
* You can now use Gravity Forms AJAX submissions and form validation with your OptinMonster campaigns.
|
519 |
* Update admin notices to use the recommended classes
|
520 |
|
|
|
|
|
|
|
|
|
521 |
**[View entire changelog](https://plugins.svn.wordpress.org/optinmonster/trunk/CHANGELOG.md)**
|
views/about.php
ADDED
@@ -0,0 +1,64 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<h2></h2>
|
2 |
+
<div class="omapi-box omapi-box--flex">
|
3 |
+
<div class="omapi-box__half">
|
4 |
+
<p><strong><?php esc_html_e( 'Over the years, we found that many businesses struggle to collect emails simply because the tools aren’t easy to use and are far too expensive. So we started with a simple goal: build powerful enterprise-level technology to help businesses grow their customer base and revenue.', 'optin-monster-api' ); ?></strong></p>
|
5 |
+
<p><?php esc_html_e( 'Since our launch in 2013, we have been improving conversions for small independent businesses to Fortune 500 companies. Over a billion people see a website with OptinMonster on it every month. Our customers are seeing huge increases in their subscriber growth and overall sales', 'optin-monster-api' ); ?></p>
|
6 |
+
<p><?php esc_html_e( 'We are humbly considered thought leaders by many in our space because of our rapid growth and innovations. Whatever the market conditions or current trends, you will always find OptinMonster leading the way to help our customers gain competitive business advantage and stay ahead of the curve.', 'optin-monster-api' ); ?></p>
|
7 |
+
</div>
|
8 |
+
<div class="omapi-box__half">
|
9 |
+
<div class="omapi-box__image">
|
10 |
+
<img src="<?php echo esc_url( $this->url . 'assets/images/omteam.jpg' ); ?>" alt="OptinMonster Team">
|
11 |
+
<div class="omapi-box__image-subtitle">
|
12 |
+
<?php printf( esc_html__( 'The %1$s Team: %2$s', 'optin-monster-api' ), 'OptinMonster', 'Syed, Christina, Muneeb, Keri, Pranaya, Anna, Tommy, Thomas, Justin, Rahul, Erica, Ben, Devin, Calista, Brandon,
Jonathan, Briana' ); ?>
|
13 |
+
</div>
|
14 |
+
</div>
|
15 |
+
</div>
|
16 |
+
</div>
|
17 |
+
<div class="notice notice-error" style="display:none;" id="om-plugin-alerts"></div>
|
18 |
+
<div class="omapi-plugin-recommendations">
|
19 |
+
<?php foreach ( $data['plugins'] as $plugin_id => $plugin ) : ?>
|
20 |
+
<div class="omapi-plugin-recommendation omapi-plugin-recommendation--<?php echo $plugin['class']; ?>">
|
21 |
+
<div class="omapi-plugin-recommendation__details">
|
22 |
+
<div class="omapi-plugin-recommendation__image-wrapper">
|
23 |
+
<img src="<?php echo esc_url( $plugin['icon'] ); ?>" alt="<?php echo esc_html( $plugin['name'] ); ?>">
|
24 |
+
</div>
|
25 |
+
<div class="omapi-plugin-recommendation__text-wrapper">
|
26 |
+
<h5 class="omapi-plugin-recommendation__name">
|
27 |
+
<?php echo esc_html( $plugin['name'] ); ?>
|
28 |
+
</h5>
|
29 |
+
<p class="omapi-plugin-recommendation__description">
|
30 |
+
<?php echo esc_html( $plugin['desc'] ); ?>
|
31 |
+
</p>
|
32 |
+
</div>
|
33 |
+
</div>
|
34 |
+
<div class="omapi-plugin-recommendation__actions">
|
35 |
+
<div class="omapi-plugin-recommendation__status">
|
36 |
+
<strong><?php esc_html_e( 'Status:', 'optin-monster-api' ); ?></strong> <?php echo $plugin['active'] ? '<span class="omapi-green">'. $plugin['status'] .'</span>' : $plugin['status']; ?>
|
37 |
+
</div>
|
38 |
+
<div class="omapi-plugin-recommendation__action-button">
|
39 |
+
<form class="install-plugin-form">
|
40 |
+
<input type="hidden" name="plugin" value="<?php echo esc_attr( $plugin_id ); ?>">
|
41 |
+
<input type="hidden" name="url" value="<?php echo esc_attr( $plugin['url'] ); ?>">
|
42 |
+
<?php if ( empty( $plugin['installed'] ) ) : ?>
|
43 |
+
<?php wp_nonce_field( 'install_plugin', 'nonce' ); ?>
|
44 |
+
<input type="hidden" name="action" value="install">
|
45 |
+
<button type="submit" class="button button-omapi-blue button-install">
|
46 |
+
<?php esc_html_e( 'Install Plugin', 'optin-monster-api' ); ?>
|
47 |
+
</button>
|
48 |
+
<?php elseif ( empty( $plugin['active'] ) ): ?>
|
49 |
+
<input type="hidden" name="action" value="activate">
|
50 |
+
<?php wp_nonce_field( 'activate_plugin', 'nonce' ); ?>
|
51 |
+
<button type="submit" class="button button-omapi-blue button-activate">
|
52 |
+
<?php esc_html_e( 'Activate Plugin', 'optin-monster-api' ); ?>
|
53 |
+
</button>
|
54 |
+
<?php else: ?>
|
55 |
+
<button disabled class="button button-omapi-outline disabled">
|
56 |
+
<?php esc_html_e( 'Already Active', 'optin-monster-api' ); ?>
|
57 |
+
</button>
|
58 |
+
<?php endif; ?>
|
59 |
+
</form>
|
60 |
+
</div>
|
61 |
+
</div>
|
62 |
+
</div>
|
63 |
+
<?php endforeach; ?>
|
64 |
+
</div>
|
views/constantcontact.php
ADDED
@@ -0,0 +1,248 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<style type="text/css">
|
2 |
+
.admin_page_optin-monster-constant-contact #wpbody {
|
3 |
+
background: #fff;
|
4 |
+
}
|
5 |
+
|
6 |
+
.notice {
|
7 |
+
display: none;
|
8 |
+
}
|
9 |
+
|
10 |
+
.om-cc-wrap {
|
11 |
+
max-width: 970px;
|
12 |
+
}
|
13 |
+
|
14 |
+
.om-cc-wrap h1 {
|
15 |
+
/*color: #1a5285;*/
|
16 |
+
font-size: 30px;
|
17 |
+
margin: 0 0 15px 0;
|
18 |
+
}
|
19 |
+
|
20 |
+
.om-cc-wrap h2 {
|
21 |
+
/*color: #1a5285;*/
|
22 |
+
font-size: 26px;
|
23 |
+
margin: 0 0 15px 0;
|
24 |
+
text-align: left;
|
25 |
+
}
|
26 |
+
|
27 |
+
.om-cc-wrap p {
|
28 |
+
font-size: 16px;
|
29 |
+
font-weight: 300;
|
30 |
+
color: #333;
|
31 |
+
margin: 1.2em 0;
|
32 |
+
}
|
33 |
+
|
34 |
+
.om-cc-wrap ul,
|
35 |
+
.om-cc-wrap ol {
|
36 |
+
margin: 1.6em 2.5em 2em;
|
37 |
+
line-height: 1.5;
|
38 |
+
font-size: 16px;
|
39 |
+
font-weight: 300;
|
40 |
+
}
|
41 |
+
|
42 |
+
.om-cc-wrap ul {
|
43 |
+
list-style: disc;
|
44 |
+
}
|
45 |
+
|
46 |
+
.om-cc-wrap li {
|
47 |
+
margin-bottom: 0.8em;
|
48 |
+
}
|
49 |
+
|
50 |
+
.om-cc-wrap hr {
|
51 |
+
margin: 2.2em 0;
|
52 |
+
}
|
53 |
+
|
54 |
+
.om-cc-wrap .logo {
|
55 |
+
float: right;
|
56 |
+
margin-top: 0.8em;
|
57 |
+
border: 1px solid #ddd;
|
58 |
+
}
|
59 |
+
|
60 |
+
.om-cc-wrap .reasons {
|
61 |
+
margin: 2.2em 400px 2.2em 2em;
|
62 |
+
}
|
63 |
+
|
64 |
+
.om-cc-wrap .reasons li {
|
65 |
+
margin-bottom: 1.4em;
|
66 |
+
}
|
67 |
+
|
68 |
+
.om-cc-wrap .steps {
|
69 |
+
clear: both;
|
70 |
+
display: -webkit-box;
|
71 |
+
display: -ms-flexbox;
|
72 |
+
display: flex;
|
73 |
+
-ms-flex-wrap: wrap;
|
74 |
+
flex-wrap: wrap;
|
75 |
+
}
|
76 |
+
|
77 |
+
.om-cc-wrap .step {
|
78 |
+
-webkit-box-flex: 1;
|
79 |
+
-ms-flex-positive: 1;
|
80 |
+
flex-grow: 1;
|
81 |
+
-ms-flex-negative: 1;
|
82 |
+
flex-shrink: 1;
|
83 |
+
margin-bottom: 1.4em;
|
84 |
+
padding: 0 1em 0 0;
|
85 |
+
-ms-flex-preferred-size: 50%;
|
86 |
+
flex-basis: 50%;
|
87 |
+
-webkit-box-sizing: border-box;
|
88 |
+
box-sizing: border-box;
|
89 |
+
}
|
90 |
+
|
91 |
+
.om-cc-wrap .step a {
|
92 |
+
-webkit-box-shadow: rgba(0, 35, 60, 0.1) 3px 7px 13px 0px;
|
93 |
+
box-shadow: rgba(0, 35, 60, 0.1) 3px 7px 13px 0px;
|
94 |
+
border: 1px solid #efefef;
|
95 |
+
display: block;
|
96 |
+
}
|
97 |
+
|
98 |
+
.om-cc-wrap .step a:hover {
|
99 |
+
border-color: #d9d9d9;
|
100 |
+
}
|
101 |
+
|
102 |
+
.om-cc-wrap .step img {
|
103 |
+
max-width: 100%;
|
104 |
+
height: auto;
|
105 |
+
display: block;
|
106 |
+
}
|
107 |
+
|
108 |
+
.om-cc-wrap .dashicons-yes {
|
109 |
+
color: #19BE19;
|
110 |
+
font-size: 26px;
|
111 |
+
}
|
112 |
+
|
113 |
+
.om-cc-wrap .button {
|
114 |
+
background-color: #0078C3;
|
115 |
+
border: 1px solid #005990;
|
116 |
+
border-radius: 4px;
|
117 |
+
color: #fff;
|
118 |
+
font-size: 16px;
|
119 |
+
font-weight: 600;
|
120 |
+
height: auto;
|
121 |
+
line-height: 1;
|
122 |
+
margin-bottom: 10px;
|
123 |
+
padding: 14px 30px;
|
124 |
+
text-align: center;
|
125 |
+
}
|
126 |
+
|
127 |
+
.om-cc-wrap .button:hover,
|
128 |
+
.om-cc-wrap .button:focus {
|
129 |
+
background-color: #005990;
|
130 |
+
color: #fff
|
131 |
+
}
|
132 |
+
|
133 |
+
@media only screen and (max-width: 767px) {
|
134 |
+
.om-cc-wrap h1 {
|
135 |
+
font-size: 26px;
|
136 |
+
}
|
137 |
+
|
138 |
+
.om-cc-wrap h2 {
|
139 |
+
font-size: 22px;
|
140 |
+
}
|
141 |
+
|
142 |
+
.om-cc-wrap p {
|
143 |
+
font-size: 14px;
|
144 |
+
}
|
145 |
+
|
146 |
+
.om-cc-wrap ul,
|
147 |
+
.om-cc-wrap ol {
|
148 |
+
font-size: 14px;
|
149 |
+
}
|
150 |
+
|
151 |
+
.om-cc-wrap .logo {
|
152 |
+
width: 120px;
|
153 |
+
}
|
154 |
+
|
155 |
+
.om-cc-wrap .reasons {
|
156 |
+
margin-right: 150px;
|
157 |
+
}
|
158 |
+
}
|
159 |
+
</style>
|
160 |
+
<div class="wrap omapi-page om-cc-wrap">
|
161 |
+
<h1><?php esc_html_e( 'Grow Your Website with OptinMonster + Email Marketing', 'optin-monster-api' ); ?></h1>
|
162 |
+
<p><?php esc_html_e( 'Wondering if email marketing is really worth your time?', 'optin-monster-api' ); ?></p>
|
163 |
+
<p><?php echo wp_kses( __( 'Email is hands-down the most effective way to nurture leads and turn them into customers, with a return on investment (ROI) of <strong>$44 back for every $1 spent</strong> according to the Direct Marketing Association.', 'optin-monster-api' ), array( 'strong' => array() ) ); ?></p>
|
164 |
+
<p><?php esc_html_e( 'Here are 3 big reasons why every smart business in the world has an email list:', 'optin-monster-api' ); ?></p>
|
165 |
+
<a href="<?php echo $data['signup_url']; ?>" target="_blank" rel="noopener noreferrer">
|
166 |
+
<img width="350" class="logo" src="<?php echo $data['images_url'] .'constant-contact-OM.png'; ?>" alt="<?php esc_attr_e( 'OptinMonster with Constant Contact - Try us free', 'optin-monster-api' ); ?>"/>
|
167 |
+
</a>
|
168 |
+
<ol class="reasons">
|
169 |
+
<li><?php echo wp_kses( __( '<strong>Email is still #1</strong> - At least 91% of consumers check their email on a daily basis. You get direct access to your subscribers, without having to play by social media's rules and algorithms.', 'optin-monster-api' ), array( 'strong' => array() ) ); ?></li>
|
170 |
+
<li><?php echo wp_kses( __( '<strong>You own your email list</strong> - Unlike with social media, your list is your property and no one can revoke your access to it.', 'optin-monster-api' ), array( 'strong' => array() ) ); ?></li>
|
171 |
+
<li><?php echo wp_kses( __( '<strong>Email converts</strong> - People who buy products marketed through email spend 138% more than those who don't receive email offers.', 'optin-monster-api' ), array( 'strong' => array() ) ); ?></li>
|
172 |
+
</ol>
|
173 |
+
<p><?php esc_html_e( 'That's why it's crucial to start collecting email addresses and building your list as soon as possible.', 'optin-monster-api' ); ?></p>
|
174 |
+
<p>
|
175 |
+
<?php
|
176 |
+
printf(
|
177 |
+
wp_kses(
|
178 |
+
/* translators: %s - WPBeginners.com Guide to Email Lists URL. */
|
179 |
+
__( 'For more details, see this guide on <a href="%s" target="_blank" rel="noopener noreferrer">why building your email list is so important</a>.', 'optin-monster-api' ),
|
180 |
+
array(
|
181 |
+
'a' => array(
|
182 |
+
'href' => array(),
|
183 |
+
'target' => array(),
|
184 |
+
'rel' => array(),
|
185 |
+
),
|
186 |
+
)
|
187 |
+
),
|
188 |
+
'https://optinmonster.com/beginners-guide-to-email-marketing/'
|
189 |
+
);
|
190 |
+
?>
|
191 |
+
</p>
|
192 |
+
<hr/>
|
193 |
+
<h2><?php esc_html_e( 'You've Already Started - Here's the Next Step (It's Easy)', 'optin-monster-api' ); ?></h2>
|
194 |
+
<p><?php esc_html_e( 'Here are the 3 things you need to build an email list:', 'optin-monster-api' ); ?></p>
|
195 |
+
<ol>
|
196 |
+
<li><?php esc_html_e( 'A Website or Blog', 'optin-monster-api' ); ?> <span class="dashicons dashicons-yes"></span></li>
|
197 |
+
<?php // TODO: update the following line ?>
|
198 |
+
<li><?php esc_html_e( 'High-Converting Form Builder', 'optin-monster-api' ); ?> <span class="dashicons dashicons-yes"></span></li>
|
199 |
+
<li><strong><?php esc_html_e( 'The Best Email Marketing Service', 'optin-monster-api' ); ?></strong></li>
|
200 |
+
</ol>
|
201 |
+
<p><?php esc_html_e( 'With a powerful email marketing service like Constant Contact, you can instantly send out mass notifications and beautifully designed newsletters to engage your subscribers.', 'optin-monster-api' ); ?></p>
|
202 |
+
<p>
|
203 |
+
<a href="<?php echo $data['signup_url']; ?>" class="button" target="_blank" rel="noopener noreferrer">
|
204 |
+
<?php esc_html_e( 'Get Started with Constant Contact for Free', 'optin-monster-api' ); ?>
|
205 |
+
</a>
|
206 |
+
</p>
|
207 |
+
<p><?php esc_html_e( 'OptinMonster plugin makes it fast and easy to capture all kinds of visitor information right from your WordPress site - even if you don't have a Constant Contact account.', 'optin-monster-api' ); ?></p>
|
208 |
+
<p><?php esc_html_e( 'But when you combine OptinMonster with Constant Contact, you can nurture your contacts and engage with them even after they leave your website. When you use Constant Contact + OptinMonster together, you can:', 'optin-monster-api' ); ?></p>
|
209 |
+
<ul>
|
210 |
+
<li><?php esc_html_e( 'Seamlessly add new contacts to your email list', 'optin-monster-api' ); ?></li>
|
211 |
+
<li><?php esc_html_e( 'Create and send professional email newsletters', 'optin-monster-api' ); ?></li>
|
212 |
+
<li><?php esc_html_e( 'Get expert marketing and support', 'optin-monster-api' ); ?></li>
|
213 |
+
</ul>
|
214 |
+
<p>
|
215 |
+
<a href="<?php echo $data['signup_url']; ?>" target="_blank" rel="noopener noreferrer">
|
216 |
+
<strong><?php esc_html_e( 'Try Constant Contact Today', 'optin-monster-api' ); ?></strong>
|
217 |
+
</a>
|
218 |
+
</p>
|
219 |
+
<hr/>
|
220 |
+
<h2><?php esc_html_e( 'OptinMonster Makes List Building Easy', 'optin-monster-api' ); ?></h2>
|
221 |
+
<p><?php esc_html_e( 'When creating OptinMonster, our goal was to make a conversion optimization tool that was both EASY and POWERFUL.', 'optin-monster-api' ); ?></p>
|
222 |
+
<p><?php esc_html_e( 'Here's how it works.', 'optin-monster-api' ); ?></p>
|
223 |
+
<div class="steps">
|
224 |
+
<div class="step1 step">
|
225 |
+
<a href="<?php echo $data['images_url'] . 'om-step-1.png'; ?>"><img src="<?php echo $data['images_url'] . 'om-step-1-sm.png'; ?>"></a>
|
226 |
+
<p><?php esc_html_e( '1. Select a design from our beautiful, high-converting template library.', 'optin-monster-api' ); ?></p>
|
227 |
+
</div>
|
228 |
+
<div class="step2 step">
|
229 |
+
<a href="<?php echo $data['images_url'] . 'om-step-2.png'; ?>"><img src="<?php echo $data['images_url'] . 'om-step-2-sm.png'; ?>"></a>
|
230 |
+
<p><?php esc_html_e( '2. Drag and drop elements to completely customize the look and feel of your campaign.', 'optin-monster-api' ); ?></p>
|
231 |
+
</div>
|
232 |
+
<div class="step3 step">
|
233 |
+
<a href="<?php echo $data['images_url'] . 'om-step-3.png'; ?>"><img src="<?php echo $data['images_url'] . 'om-step-3-sm.png'; ?>"></a>
|
234 |
+
<p><?php esc_html_e( '3. Connect your Constant Contact email list.', 'optin-monster-api' ); ?></p>
|
235 |
+
</div>
|
236 |
+
<div class="step4 step">
|
237 |
+
<a href="<?php echo $data['images_url'] . 'om-step-4.png'; ?>"><img src="<?php echo $data['images_url'] . 'om-step-4-sm.png'; ?>"></a>
|
238 |
+
<p><?php esc_html_e( '4. Sync your campaign to your WordPress site, then hit Go Live.', 'optin-monster-api' ); ?></p>
|
239 |
+
</div>
|
240 |
+
</div>
|
241 |
+
<p><?php esc_html_e( 'It doesn't matter what kind of business you run, what kind of website you have, or what industry you are in - you need to start building your email list today.', 'optin-monster-api' ); ?></p>
|
242 |
+
<p><?php esc_html_e( 'With Constant Contact + OptinMonster, growing your list is easy.', 'optin-monster-api' ); ?></p>
|
243 |
+
<p>
|
244 |
+
<a href="<?php echo $data['signup_url']; ?>" target="_blank" rel="noopener noreferrer">
|
245 |
+
<strong><?php esc_html_e( 'Try Constant Contact Today', 'optin-monster-api' ); ?></strong>
|
246 |
+
</a>
|
247 |
+
</p>
|
248 |
+
</div>
|
views/logo.svg
ADDED
@@ -0,0 +1,174 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<svg class ="omapi-svg-logo" width="100%" height="100%" viewBox="0 0 716 112" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.41421;">
|
2 |
+
<g transform="matrix(1,0,0,1,-37.6592,-251.388)">
|
3 |
+
<path d="M565.437,342.797C565.437,343.888 564.892,344.524 563.711,344.707C561.166,345.071 547.717,345.071 545.355,344.616C544.174,344.344 543.54,343.526 543.54,342.162C543.54,338.891 543.903,328.168 543.903,324.897C543.903,322.354 543.63,313.993 543.63,311.447C543.63,305.905 541.268,303.179 536.451,303.179C533.543,303.179 527.546,306.541 527.546,309.813L527.546,342.526C527.546,343.889 526.91,344.616 525.635,344.799C523,345.161 510.097,345.072 507.735,344.708C506.462,344.525 505.827,343.798 505.827,342.709L505.917,314.176C505.917,304.089 505.099,296.183 503.555,290.458C503.372,289.64 503.281,288.459 504.371,288.187C506.916,287.914 510.277,287.46 514.549,286.823C520.999,285.551 524.544,284.916 525.361,284.916C526.544,284.916 526.272,293.094 527.451,293.094C527.906,293.094 529.178,291.731 533.994,288.914C538.81,286.097 542.992,284.733 546.536,284.733C556.35,284.733 565.164,289.548 565.164,299.998C565.164,311.63 565.164,318.809 565.255,331.167C565.255,336.44 565.346,340.346 565.346,342.981L565.437,342.797ZM605.785,295.545C605.785,295.908 605.51,296.453 604.875,297.18C599.967,295.908 592.516,297.453 592.516,303.45C592.516,308.72 604.421,313.358 604.421,325.352C604.421,329.35 602.695,334.984 599.697,337.436C593.699,342.525 584.975,346.795 577.251,346.795C575.343,346.795 567.619,333.892 567.619,332.165C567.619,331.802 567.891,331.62 568.255,331.529C571.071,330.984 573.98,330.439 576.796,329.984C580.342,328.802 582.158,326.986 582.158,324.351C582.158,322.533 581.158,320.534 579.07,318.171C575.344,314.082 573.434,311.901 573.254,311.629C562.803,296.088 580.615,281.277 597.063,281.277C598.607,281.277 605.695,294.272 605.695,295.453L605.785,295.545ZM652.946,326.804C652.946,328.714 652.038,335.8 652.038,337.71C652.038,340.073 651.765,340.162 649.675,341.345C644.496,344.16 638.679,345.615 632.319,345.615C620.596,345.615 614.781,341.162 614.781,332.166C614.781,327.716 615.417,312.631 615.417,308.086C615.417,303.272 608.42,307.27 608.42,303.815C608.42,302.725 608.693,298.908 608.693,297.909C608.693,296.454 608.42,291.547 608.42,290.185C608.42,289.367 609.692,288.913 612.328,288.821C613.782,288.821 614.599,288.367 614.69,287.64C614.962,286.095 615.053,283.642 614.962,280.371C614.781,275.191 614.69,273.192 614.69,272.919C614.69,268.194 615.145,265.922 616.053,265.922C617.78,265.922 624.049,267.376 625.504,267.557C627.592,267.83 630.683,268.284 634.864,268.739C635.864,268.83 636.408,269.193 636.408,269.738C636.408,272.464 635.589,281.734 635.589,284.46C635.589,286.459 636.137,287.458 637.317,287.458C639.679,287.458 647.767,287.094 650.222,287.094C651.13,287.094 651.584,287.368 651.584,288.004C651.584,289.821 650.947,294.547 650.947,296.364L651.039,304.815C651.039,305.633 650.494,306.087 649.311,306.087C645.132,305.996 640.863,305.905 636.68,305.905C636.044,305.905 635.772,306.814 635.772,308.54L635.864,317.173C635.864,323.534 636.679,326.805 643.405,326.805C647.222,326.805 652.946,323.718 652.946,326.716L652.946,326.804ZM690.476,307.903C690.476,299.906 680.572,294.727 675.119,301.633C673.575,303.632 672.847,305.904 672.847,308.63C672.847,309.719 673.392,310.266 674.575,310.266C677.573,310.266 682.208,309.811 688.568,308.902C689.931,308.719 690.568,308.358 690.568,307.903L690.476,307.903ZM711.74,311.629C711.74,315.719 710.379,318.079 707.742,318.626C707.289,318.717 703.107,319.171 695.202,319.989C690.385,320.534 683.298,321.17 673.847,321.898C675.575,330.166 689.295,331.712 697.836,326.714C699.381,325.714 700.927,324.804 702.471,323.804C704.289,324.715 709.741,335.163 709.741,337.073C709.741,337.346 709.469,337.798 708.834,338.437C703.926,343.706 696.292,346.342 685.842,346.342C666.759,346.342 653.492,334.256 653.492,315.08C653.492,296.726 665.124,283.003 683.844,283.003C691.567,283.003 698.201,285.82 703.653,291.545C709.103,297.179 711.83,303.903 711.83,311.717L711.74,311.629ZM752.813,306.813C752.813,309.902 749.363,309.175 746.816,308.995C743.092,308.72 738.639,308.72 736.64,310.447C735.457,311.446 734.822,313.629 734.822,316.808C734.822,319.718 735.005,329.714 735.005,332.62C735.005,334.528 735.459,341.161 735.459,343.07C735.459,344.07 734.822,344.615 733.46,344.706C729.552,345.069 719.376,345.069 715.287,344.615C713.923,344.434 713.288,343.797 713.288,342.615L713.377,313.537C713.377,303.995 712.469,296.181 710.743,290.092C710.56,289.274 710.469,288.184 711.56,288.002C713.832,287.73 717.012,287.275 721.375,286.639C727.735,285.367 731.097,284.731 731.279,284.731C733.097,284.731 732.37,292.364 733.733,292.364C734.278,292.364 734.821,291.274 738.731,289.184C742.637,287.093 746.364,286.003 749.906,286.003C752.177,286.003 753.268,286.457 753.268,287.457C753.268,288.638 753.177,290.274 752.905,292.455C752.268,298.361 752.632,301.815 752.632,306.813L752.813,306.813ZM404.505,342.344C404.505,343.706 403.869,344.524 402.687,344.706C400.236,345.069 386.967,345.069 384.515,344.615C383.333,344.343 382.698,343.343 382.698,341.616C382.698,338.437 383.061,328.075 383.061,324.987C383.061,317.899 382.97,312.901 382.788,309.902C382.516,305.086 380.244,302.724 375.973,302.724C372.156,302.724 367.613,306.54 367.159,310.447C366.977,312.174 366.886,317.08 366.886,325.352C366.886,328.531 367.249,339.436 367.249,342.708C367.249,344.071 366.704,344.707 365.523,344.707L347.166,344.707C346.077,344.707 345.44,343.889 345.44,342.253C345.44,338.983 345.804,328.351 345.804,325.081C345.804,322.534 345.531,313.994 345.531,311.447C345.531,296.546 329.72,304.178 329.72,309.54L329.81,342.436C329.81,344.524 329.628,344.616 327.539,344.797C323.177,345.159 315.816,345.159 310.273,344.707C308.274,344.524 308.274,344.524 308.274,342.436L308.365,313.358C308.365,306.723 307.91,299.272 306.911,291.002C306.729,290.003 306.548,288.913 307.638,288.549C309.637,287.731 316.725,287.368 318.088,287.094C319.451,286.822 325.358,285.005 327.629,285.005C329.447,285.005 328.538,293.547 329.356,293.456C331.81,292.819 337.535,284.551 349.439,284.551C356.526,284.551 363.796,287.913 365.704,294.819C369.976,289.003 378.335,284.551 385.515,284.551C395.69,284.551 404.234,289.548 404.234,300.18C404.234,303.815 403.871,315.901 403.871,319.535C403.871,323.807 404.234,338.255 404.234,342.526L404.505,342.344Z" style="fill:white;fill-rule:nonzero;"/>
|
4 |
+
</g>
|
5 |
+
<g transform="matrix(1,0,0,1,-37.6592,-251.388)">
|
6 |
+
<path d="M79.096,314.536C79.096,308.448 75.098,302.45 68.465,302.45C58.559,302.45 54.379,315.445 60.558,322.988C66.738,330.529 79.096,326.35 79.096,314.536M145.432,315.081C145.432,303.359 132.619,298.815 126.713,306.63C121.806,313.173 123.714,327.35 134.709,327.35C141.798,327.349 145.432,323.26 145.432,315.081M167.878,315.173C167.878,332.165 156.973,345.523 139.525,345.523C132.801,345.523 124.441,340.889 124.714,340.889C124.168,340.889 123.896,341.524 123.896,342.707C123.896,346.342 124.532,357.7 124.532,361.335C124.532,362.607 123.896,363.243 122.533,363.243C119.443,363.243 106.993,363.515 104.813,362.971C103.631,362.698 102.995,361.971 102.995,360.699L103.087,313.991C103.087,304.54 102.359,296.635 100.996,290.183C100.814,289.365 100.724,288.274 101.632,287.911C104.904,286.639 116.445,284.913 120.079,284.913C123.805,284.913 122.442,291.182 123.623,291.182C123.169,291.182 124.986,290.092 128.803,287.911C132.71,285.729 136.163,284.64 139.344,284.64C157.245,284.64 167.968,297.453 167.968,315.081L167.878,315.173ZM214.221,326.622C214.221,329.258 213.313,334.982 213.313,337.526C213.313,339.709 213.131,339.98 210.95,341.161C205.771,343.978 199.955,345.434 193.594,345.434C181.871,345.434 176.056,340.981 176.056,331.985C176.056,327.35 176.692,312.538 176.692,307.904C176.692,302.997 169.695,307.177 169.695,303.634C169.695,302.543 169.967,298.726 169.967,297.726C169.967,296.273 169.695,291.366 169.695,290.002C169.695,289.184 170.967,288.73 173.602,288.64C175.056,288.64 175.874,288.185 175.965,287.458C176.238,285.913 176.328,283.46 176.238,280.188C176.056,275.009 175.965,272.464 175.965,272.737C175.965,268.012 176.419,265.74 177.328,265.74C179.509,265.74 184.507,267.103 186.779,267.376C188.868,267.648 191.958,268.102 196.138,268.557C197.138,268.648 197.683,269.012 197.683,269.557C197.683,272.646 196.865,281.188 196.865,284.277C196.865,286.277 197.41,287.276 198.592,287.276C200.954,287.276 209.042,286.913 211.496,286.913C212.404,286.913 212.858,287.185 212.858,287.822C212.858,289.639 212.222,294.364 212.222,296.182L212.313,304.633C212.313,305.451 211.768,305.905 210.587,305.905C206.225,305.814 202.318,305.723 197.956,305.723C197.32,305.723 197.047,306.632 197.047,308.359L197.138,316.991C197.138,323.352 198.047,326.624 204.68,326.624C208.951,326.624 214.221,323.441 214.221,326.532L214.221,326.622ZM237.757,316.535C237.757,321.533 238.12,337.89 238.12,342.888C238.12,343.706 237.575,344.251 236.575,344.434C233.759,344.887 220.764,344.979 217.947,344.434C217.038,344.251 216.493,343.98 216.312,343.616C216.039,343.071 216.584,318.719 216.584,316.537C216.584,305.087 216.13,295.909 215.221,289.094C214.857,286.095 215.585,286.277 221.946,287.004C230.124,287.822 231.487,286.731 237.757,286.731C239.484,286.731 239.211,287.822 239.12,289.094C238.212,296.998 237.757,306.086 237.757,316.535M239.302,271.464C239.302,278.46 235.304,282.005 227.398,282.005C214.857,282.005 212.04,269.464 219.129,263.739C226.58,257.742 239.302,261.831 239.302,271.464M304.366,342.615C304.366,343.706 303.821,344.343 302.639,344.523C300.095,344.887 286.646,344.887 284.283,344.434C283.102,344.16 282.466,343.344 282.466,341.98C282.466,338.71 282.829,327.987 282.829,324.716C282.829,322.17 282.556,313.809 282.556,311.266C282.556,305.723 280.194,302.997 275.378,302.997C272.288,302.997 266.472,306.45 266.472,309.631L266.472,342.345C266.472,343.708 265.836,344.434 264.564,344.616C261.565,344.979 249.479,344.979 246.662,344.524C245.39,344.344 244.754,343.616 244.754,342.525L244.845,313.994C244.845,303.907 244.027,296.001 242.482,290.276C242.301,289.368 242.301,288.277 243.3,288.005C245.845,287.732 249.207,287.277 253.478,286.641C259.93,285.369 263.473,284.733 264.292,284.733C265.472,284.733 265.2,292.912 266.382,292.912C265.928,292.912 268.108,291.549 272.924,288.732C277.741,285.915 281.921,284.552 285.465,284.552C295.279,284.552 304.093,289.368 304.093,299.818C304.093,311.449 304.093,318.629 304.184,330.987C304.184,336.257 304.275,340.163 304.275,342.799L304.366,342.615ZM98.907,314.536C98.907,332.983 86.73,345.614 68.192,345.614C50.381,345.614 37.659,333.165 37.659,315.264C37.659,296.726 49.2,283.64 68.192,283.64C86.548,283.64 98.907,296.181 98.907,314.536" style="fill:white;fill-rule:nonzero;"/>
|
7 |
+
</g>
|
8 |
+
<g transform="matrix(1,0,0,1,-37.6592,-251.388)">
|
9 |
+
<g opacity="0.149002">
|
10 |
+
<clipPath id="_clip1">
|
11 |
+
<rect x="385.878" y="344.16" width="139.94" height="15.086"/>
|
12 |
+
</clipPath>
|
13 |
+
<g clip-path="url(#_clip1)">
|
14 |
+
<path d="M455.848,344.16C494.47,344.16 525.819,347.522 525.819,351.704C525.819,355.884 494.469,359.246 455.848,359.246C417.228,359.246 385.879,355.884 385.879,351.704C385.878,347.522 417.228,344.16 455.848,344.16" style="fill:black;fill-rule:nonzero;"/>
|
15 |
+
</g>
|
16 |
+
</g>
|
17 |
+
</g>
|
18 |
+
<g transform="matrix(1,0,0,1,-37.6592,-251.388)">
|
19 |
+
<path d="M497.921,284.186C498.831,283.641 499.012,280.278 499.104,279.279C499.376,277.007 502.193,276.008 504.011,277.189C507.192,279.46 508.827,283.823 509.28,287.548C509.735,291.364 509.372,296.453 506.646,299.452C503.738,302.724 496.377,303.724 492.016,303.269C490.835,303.178 489.744,302.905 488.653,302.724L486.563,284.004L488.837,284.458C491.108,284.912 495.743,285.368 497.833,284.186L497.921,284.186Z" style="fill:rgb(153,153,102);fill-rule:nonzero;"/>
|
20 |
+
</g>
|
21 |
+
<g transform="matrix(1,0,0,1,-37.6592,-251.388)">
|
22 |
+
<path d="M505.009,280.551C504.464,279.824 503.828,279.097 503.101,278.643C502.374,278.097 501.011,278.552 500.918,279.461L500.829,280.096C502.193,279.642 503.737,280.006 505.009,280.551M507.554,293.364C508.099,290.456 507.826,287.093 506.827,284.186C506.1,283.277 505.372,282.551 504.009,282.005C502.282,281.278 501.374,281.551 500.559,282.278C500.467,283.005 500.283,283.55 500.104,284.095C504.829,285.64 506.828,290.183 507.555,293.454L507.555,293.364L507.554,293.364ZM493.741,286.639C492.106,286.639 490.379,286.457 488.653,286.094L490.287,301.178C492.471,301.633 495.013,301.633 497.284,301.361C498.92,295.545 497.284,288.73 493.651,286.549L493.741,286.639ZM498.83,285.64C498.195,286.003 497.283,286.276 496.196,286.457C499.466,289.911 500.466,296.181 499.282,301.088C502.009,300.543 504.28,299.543 505.462,298.271C505.735,297.998 505.916,297.634 506.19,297.362C506.19,292.182 504.1,286.639 499.102,285.549C499.01,285.64 499.01,285.64 498.918,285.64L498.83,285.64Z" style="fill:rgb(192,192,160);fill-rule:nonzero;"/>
|
23 |
+
</g>
|
24 |
+
<g transform="matrix(1,0,0,1,-37.6592,-251.388)">
|
25 |
+
<path d="M497.921,295.453C495.74,295.999 493.378,296.09 491.65,295.908C490.924,295.817 490.287,295.726 489.651,295.544L488.561,286.185C490.287,286.548 492.015,286.73 493.65,286.73C496.013,288.184 497.56,291.637 497.832,295.453L497.921,295.453ZM504.556,282.277C504.644,282.823 504.736,283.368 504.827,283.912C505.009,285.003 505.009,286.275 504.918,287.548C503.735,286.094 502.192,284.822 500.103,284.095C500.283,283.55 500.466,283.004 500.557,282.277C501.281,281.641 502.281,281.277 504.008,282.005C504.192,282.095 504.373,282.186 504.556,282.277M503.192,278.733C503.465,279.188 503.645,279.642 503.828,280.096C502.828,279.824 501.829,279.732 500.738,280.006L500.829,279.37C500.918,278.46 502.281,278.006 503.01,278.552L503.193,278.642L503.193,278.733L503.192,278.733ZM498.83,285.64C498.194,286.003 497.283,286.275 496.195,286.457C498.194,288.547 499.282,291.637 499.647,294.909C500.918,294.453 502.1,293.818 502.828,292.91C503.556,292.182 501.646,286.094 499.012,285.549C498.92,285.64 498.92,285.64 498.83,285.64" style="fill:rgb(251,250,196);fill-rule:nonzero;"/>
|
26 |
+
</g>
|
27 |
+
<g transform="matrix(1,0,0,1,-37.6592,-251.388)">
|
28 |
+
<path d="M412.685,284.186C411.774,283.641 411.594,280.278 411.501,279.279C411.229,277.007 408.412,276.008 406.595,277.189C403.413,279.46 401.779,283.823 401.325,287.548C400.871,291.364 401.234,296.453 403.96,299.452C406.868,302.724 414.228,303.724 418.59,303.269C419.771,303.178 420.862,302.905 421.953,302.724L424.042,284.004L421.769,284.458C419.498,284.912 414.863,285.368 412.773,284.186L412.685,284.186Z" style="fill:rgb(153,153,102);fill-rule:nonzero;"/>
|
29 |
+
</g>
|
30 |
+
<g transform="matrix(1,0,0,1,-37.6592,-251.388)">
|
31 |
+
<path d="M405.597,280.551C406.142,279.824 406.778,279.097 407.504,278.643C408.232,278.097 409.595,278.552 409.688,279.461L409.776,280.096C408.413,279.642 406.868,280.006 405.597,280.551M403.051,293.364C402.507,290.456 402.78,287.093 403.779,284.186C404.506,283.277 405.233,282.551 406.596,282.005C408.323,281.278 409.232,281.551 410.047,282.278C410.139,283.005 410.323,283.55 410.502,284.095C405.777,285.64 403.778,290.183 403.05,293.454L403.05,293.364L403.051,293.364ZM416.865,286.639C418.5,286.639 420.227,286.457 421.953,286.094L420.318,301.178C418.135,301.633 415.592,301.633 413.321,301.361C411.685,295.545 413.321,288.73 416.955,286.549L416.865,286.639ZM411.776,285.64C412.411,286.003 413.323,286.276 414.41,286.457C411.139,289.911 410.14,296.181 411.323,301.088C408.597,300.543 406.326,299.543 405.143,298.271C404.87,297.998 404.69,297.634 404.416,297.362C404.416,292.182 406.506,286.639 411.504,285.549C411.595,285.64 411.595,285.64 411.688,285.64L411.776,285.64Z" style="fill:rgb(192,192,160);fill-rule:nonzero;"/>
|
32 |
+
</g>
|
33 |
+
<g transform="matrix(1,0,0,1,-37.6592,-251.388)">
|
34 |
+
<path d="M412.685,295.453C414.866,295.999 417.228,296.09 418.955,295.908C419.682,295.817 420.318,295.726 420.954,295.544L422.044,286.185C420.318,286.548 418.591,286.73 416.956,286.73C414.593,288.184 413.048,291.637 412.774,295.453L412.685,295.453ZM406.05,282.277C405.961,282.823 405.87,283.368 405.778,283.912C405.597,285.003 405.597,286.275 405.689,287.548C406.87,286.094 408.414,284.822 410.503,284.095C410.323,283.55 410.14,283.004 410.048,282.277C409.324,281.641 408.325,281.277 406.598,282.005C406.414,282.095 406.233,282.186 406.05,282.277M407.414,278.733C407.141,279.188 406.961,279.642 406.778,280.096C407.777,279.824 408.777,279.732 409.868,280.006L409.776,279.37C409.688,278.46 408.325,278.006 407.596,278.552L407.413,278.642L407.413,278.733L407.414,278.733ZM411.776,285.64C412.412,286.003 413.323,286.275 414.411,286.457C412.412,288.547 411.323,291.637 410.959,294.909C409.688,294.453 408.505,293.818 407.777,292.91C407.051,292.182 408.96,286.094 411.594,285.549C411.685,285.64 411.685,285.64 411.776,285.64" style="fill:rgb(251,250,196);fill-rule:nonzero;"/>
|
35 |
+
</g>
|
36 |
+
<g transform="matrix(1,0,0,1,-37.6592,-251.388)">
|
37 |
+
<path d="M422.77,280.551C419.59,280.278 416.499,280.914 413.41,281.369L416.136,278.733C418.773,276.189 422.316,273.917 425.681,272.281C430.677,269.737 436.403,267.829 442.126,267.284C438.126,265.557 433.583,264.739 429.314,263.739C445.763,260.287 466.843,259.014 481.929,271.827C490.563,279.188 495.287,292.819 495.287,305.177C495.287,351.796 415.866,351.796 415.866,305.177C415.866,298.907 417.41,292.91 420.319,287.457C419.229,287.73 418.229,288.093 417.136,288.548L412.323,290.547L415.773,286.639C417.864,284.277 420.227,282.278 422.953,280.733L422.77,280.551Z" style="fill:rgb(142,212,30);fill-rule:nonzero;"/>
|
38 |
+
</g>
|
39 |
+
<g transform="matrix(1,0,0,1,-37.6592,-251.388)">
|
40 |
+
<path d="M458.393,266.193C466.118,267.101 473.659,269.646 479.927,275.007C487.56,281.459 491.65,293.454 491.65,304.268C491.65,324.076 475.293,334.346 458.392,334.891L458.392,266.193L458.393,266.193Z" style="fill:rgb(112,169,27);fill-rule:nonzero;"/>
|
41 |
+
</g>
|
42 |
+
<g transform="matrix(1,0,0,1,-37.6592,-251.388)">
|
43 |
+
<path d="M429.131,276.28C435.129,272.281 444.944,271.009 456.758,271.646C454.668,269.193 452.76,267.647 449.943,266.284C455.304,266.102 459.574,267.284 470.206,270.919C461.03,265.557 449.763,263.104 439.22,264.285C443.036,265.375 446.671,267.102 450.033,269.374C439.22,268.193 426.769,273.372 421.771,277.643C425.044,277.28 427.95,277.915 431.042,279.279C426.68,280.823 423.862,282.187 421.135,284.822C425.86,282.459 429.586,280.46 435.584,279.188C433.221,278.37 431.949,276.916 429.131,276.28" style="fill:rgb(161,225,65);fill-rule:nonzero;"/>
|
44 |
+
</g>
|
45 |
+
<g transform="matrix(1,0,0,1,-37.6592,-251.388)">
|
46 |
+
<path d="M455.483,265.284C466.39,265.284 475.203,273.826 475.203,284.458C475.203,294.999 466.39,303.632 455.483,303.632C444.58,303.632 435.767,295.09 435.767,284.458C435.765,273.917 444.58,265.284 455.483,265.284" style="fill:rgb(112,169,27);fill-rule:nonzero;"/>
|
47 |
+
</g>
|
48 |
+
<g transform="matrix(1,0,0,1,-37.6592,-251.388)">
|
49 |
+
<path d="M424.225,302.36C424.861,301.178 484.654,300.724 485.836,302.36C487.924,305.086 486.745,307.721 485.836,309.993L424.225,309.993C423.68,307.539 422.771,304.904 424.225,302.36" style="fill:rgb(112,169,27);fill-rule:nonzero;"/>
|
50 |
+
</g>
|
51 |
+
<g transform="matrix(1,0,0,1,-37.6592,-251.388)">
|
52 |
+
<path d="M425.043,304.086C425.679,302.541 483.926,301.905 485.108,304.086C487.107,307.811 485.925,311.446 485.108,314.536L425.043,314.536C424.497,311.173 423.68,307.63 425.043,304.086" style="fill:rgb(75,113,19);fill-rule:nonzero;"/>
|
53 |
+
</g>
|
54 |
+
<g transform="matrix(1,0,0,1,-37.6592,-251.388)">
|
55 |
+
<path d="M473.477,264.467C472.66,248.928 451.758,247.292 446.307,259.469C455.939,254.198 465.752,256.107 473.477,264.467" style="fill:rgb(112,169,27);fill-rule:nonzero;"/>
|
56 |
+
</g>
|
57 |
+
<g transform="matrix(1,0,0,1,-37.6592,-251.388)">
|
58 |
+
<path d="M461.845,251.563C455.759,250.654 449.125,253.29 446.399,259.377C450.033,257.378 453.76,256.47 457.303,256.47C458.031,255.107 459.757,252.472 461.938,251.563L461.845,251.563Z" style="fill:rgb(133,197,31);fill-rule:nonzero;"/>
|
59 |
+
</g>
|
60 |
+
<g transform="matrix(1,0,0,1,-37.6592,-251.388)">
|
61 |
+
<path d="M455.483,263.285C465.297,263.285 473.204,271.191 473.204,281.005C473.204,290.819 465.297,298.725 455.483,298.725C445.671,298.725 437.766,290.819 437.766,281.005C437.766,271.191 445.67,263.285 455.483,263.285" style="fill:rgb(211,232,239);fill-rule:nonzero;"/>
|
62 |
+
</g>
|
63 |
+
<g transform="matrix(1,0,0,1,-37.6592,-251.388)">
|
64 |
+
<path d="M444.308,267.829C450.214,262.922 458.484,262.922 462.663,268.011C466.843,273.009 465.39,281.096 459.483,286.094C453.575,291.001 445.307,291.001 441.125,285.912C436.947,280.914 438.402,272.827 444.308,267.829" style="fill:white;fill-rule:nonzero;"/>
|
65 |
+
</g>
|
66 |
+
<g transform="matrix(1,0,0,1,-37.6592,-251.388)">
|
67 |
+
<path d="M455.938,275.008C462.844,275.008 468.388,280.188 468.388,286.639C468.388,293.091 462.842,298.271 455.938,298.271C449.034,298.271 443.489,293.091 443.489,286.639C443.489,280.188 449.033,275.008 455.938,275.008" style="fill:rgb(13,130,223);fill-rule:nonzero;"/>
|
68 |
+
</g>
|
69 |
+
<g transform="matrix(1,0,0,1,-37.6592,-251.388)">
|
70 |
+
<path d="M455.938,275.008C459.3,275.008 462.39,276.28 464.571,278.279C463.754,281.096 462.027,283.913 459.482,286.094C454.575,290.183 448.034,290.82 443.58,288.093C443.489,287.639 443.489,287.185 443.489,286.639C443.489,280.188 449.033,275.008 455.938,275.008" style="fill:rgb(3,153,237);fill-rule:nonzero;"/>
|
71 |
+
</g>
|
72 |
+
<g transform="matrix(1,0,0,1,-37.6592,-251.388)">
|
73 |
+
<path d="M455.938,279.188C460.3,279.188 463.935,282.55 463.935,286.639C463.935,290.729 460.391,294.09 455.938,294.09C451.577,294.09 447.942,290.729 447.942,286.639C447.942,282.55 451.485,279.188 455.938,279.188" style="fill:rgb(35,35,35);fill-rule:nonzero;"/>
|
74 |
+
</g>
|
75 |
+
<g transform="matrix(1,0,0,1,-37.6592,-251.388)">
|
76 |
+
<path d="M455.938,279.188C458.755,279.188 461.209,280.551 462.663,282.55C461.844,283.822 460.754,285.003 459.482,286.003C456.209,288.73 452.21,289.911 448.668,289.638C448.214,288.73 447.942,287.639 447.942,286.548C447.942,282.459 451.485,279.097 455.938,279.097L455.938,279.188Z" style="fill:rgb(50,50,50);fill-rule:nonzero;"/>
|
77 |
+
</g>
|
78 |
+
<g transform="matrix(1,0,0,1,-37.6592,-251.388)">
|
79 |
+
<path d="M448.941,275.644C452.212,275.644 454.847,278.098 454.847,281.187C454.847,284.277 452.212,286.731 448.941,286.731C445.67,286.731 443.035,284.277 443.035,281.187C443.035,278.098 445.67,275.644 448.941,275.644" style="fill:white;fill-rule:nonzero;"/>
|
80 |
+
</g>
|
81 |
+
<g transform="matrix(1,0,0,1,-37.6592,-251.388)">
|
82 |
+
<path d="M414.138,308.448C441.581,304.359 469.117,304.722 496.56,308.448C498.559,322.805 497.468,336.438 496.56,350.157C469.117,351.248 441.581,351.431 414.138,350.157C412.502,336.255 412.322,322.351 414.138,308.448" style="fill:rgb(156,174,179);fill-rule:nonzero;"/>
|
83 |
+
</g>
|
84 |
+
<g transform="matrix(1,0,0,1,-37.6592,-251.388)">
|
85 |
+
<path d="M422.044,347.341C444.308,348.157 466.481,348.069 488.743,347.341C480.747,342.796 472.75,338.437 463.754,335.983C460.844,337.346 457.757,338.437 454.667,339.345C454.212,339.435 454.212,339.435 453.758,339.345C451.212,338.527 448.669,337.527 446.214,336.438C437.49,338.981 429.585,342.707 421.952,347.433L422.044,347.341ZM416.773,313.173C415.592,324.169 415.773,335.255 416.956,346.25C424.953,341.253 433.494,337.254 442.489,334.438C432.13,328.986 424.86,321.17 416.773,313.173M491.65,310.993C467.389,308.083 443.035,307.811 418.773,310.993C428.768,322.168 439.766,331.348 454.396,336.162C469.933,331.712 480.655,321.988 491.65,310.993M493.741,346.25C494.469,335.255 495.195,324.26 494.014,313.265C485.837,321.353 477.112,329.076 466.934,334.436C476.385,337.253 485.201,341.435 493.834,346.249L493.741,346.249L493.741,346.25Z" style="fill:rgb(211,232,239);fill-rule:nonzero;"/>
|
86 |
+
</g>
|
87 |
+
<g transform="matrix(1,0,0,1,-37.6592,-251.388)">
|
88 |
+
<path d="M422.044,347.341C432.765,347.705 443.487,347.886 454.303,347.886L454.303,339.345C454.212,339.345 454.122,339.345 453.849,339.253C451.305,338.438 448.762,337.437 446.307,336.346C437.583,338.89 429.678,342.615 422.044,347.341M416.773,313.173C415.592,324.169 415.773,335.255 416.956,346.25C424.953,341.253 433.494,337.254 442.489,334.438C432.13,328.986 424.86,321.17 416.773,313.173M454.303,308.72C442.399,308.72 430.586,309.447 418.773,310.994C428.679,322.17 439.766,331.258 454.303,336.163L454.303,308.72Z" style="fill:white;fill-rule:nonzero;"/>
|
89 |
+
</g>
|
90 |
+
<g transform="matrix(1,0,0,1,-37.6592,-251.388)">
|
91 |
+
<path d="M438.855,315.264C438.765,315.627 438.583,315.992 438.403,316.355C438.219,316.9 437.856,317.443 437.403,317.807C436.312,318.625 434.95,318.354 433.766,317.898C431.131,316.807 429.315,314.172 428.223,311.628C426.952,308.718 426.86,306.63 427.587,303.449C445.943,302.45 464.754,302.268 482.564,303.358L482.564,303.449L482.838,303.449C483.111,306.539 482.838,307.811 482.112,310.358C481.293,313.265 479.565,316.807 476.659,318.17C475.568,318.717 474.296,318.989 473.296,318.261C472.843,317.898 472.481,317.353 472.206,316.807C471.57,315.808 471.39,314.356 471.207,313.264C470.844,313.991 470.39,314.445 469.662,314.626C468.481,314.899 467.118,315.079 465.936,315.171C464.755,315.263 463.485,315.355 462.21,315.355C460.302,315.355 458.211,315.171 456.396,314.628C456.124,315.719 455.669,316.716 454.579,317.079C453.398,317.443 451.943,317.626 450.671,317.718C449.308,317.807 447.945,317.899 446.673,317.899C444.583,317.899 442.22,317.718 440.312,316.9C439.584,316.627 439.128,316.081 438.858,315.355L438.858,315.264L438.855,315.264Z" style="fill:rgb(153,153,102);fill-rule:nonzero;"/>
|
92 |
+
</g>
|
93 |
+
<g transform="matrix(1,0,0,1,-37.6592,-251.388)">
|
94 |
+
<path d="M469.66,302.814C470.388,306.903 470.205,312.174 469.024,312.446C467.206,312.901 460.209,313.629 456.757,312.357C455.846,310.631 455.846,306.269 455.938,302.725C460.664,302.724 465.389,302.724 469.66,302.814M440.308,303.632C439.673,305.541 439.037,307.721 438.401,310.358C438.037,311.994 437.764,313.629 437.49,314.809C437.127,316.444 436.309,316.718 434.764,316.081C430.765,314.356 428.678,307.632 428.857,303.541C431.584,303.359 435.674,303.178 440.307,302.996C444.761,302.905 449.759,302.814 454.757,302.814C455.209,307.812 455.209,313.81 454.121,315.081C452.21,315.72 444.761,316.628 441.124,314.992C439.488,314.266 440.124,308.177 440.215,303.724L440.308,303.632ZM470.388,302.814C470.931,304.995 471.568,307.267 472.203,310.175C472.566,311.992 472.75,313.721 473.021,314.9C473.385,316.717 474.112,316.99 475.565,316.264C479.111,314.445 481.11,307.72 481.017,303.269C478.384,303.087 474.658,302.905 470.388,302.814" style="fill:rgb(192,192,160);fill-rule:nonzero;"/>
|
95 |
+
</g>
|
96 |
+
<g transform="matrix(1,0,0,1,-37.6592,-251.388)">
|
97 |
+
<path d="M455.938,305.268C460.209,305.268 464.482,305.268 468.388,305.358C469.024,307.631 469.024,311.72 466.297,312.719C463.39,312.993 459.209,313.082 456.756,312.174C456.121,310.901 455.938,308.084 455.938,305.268M440.217,305.54C444.125,305.449 448.578,305.358 453.031,305.358C453.483,308.63 454.302,315.173 450.213,315.536C447.214,315.809 443.489,315.809 441.125,314.809C439.765,314.173 439.945,309.63 440.126,305.631L440.217,305.54ZM429.041,306.086C430.949,305.904 433.492,305.812 436.49,305.722C436.854,305.722 437.581,314.718 437.581,314.718C437.217,316.354 436.4,316.627 434.855,315.991C431.674,314.628 429.675,310.082 429.129,306.176L429.041,306.086ZM473.022,314.9C473.385,316.717 474.113,316.99 475.566,316.264C478.476,314.809 480.292,310.083 480.838,305.995C479.112,305.812 477.022,305.722 474.566,305.631C473.113,306.722 472.839,314.264 473.022,314.9" style="fill:rgb(251,250,196);fill-rule:nonzero;"/>
|
98 |
+
</g>
|
99 |
+
<g transform="matrix(1,0,0,1,-37.6592,-251.388)">
|
100 |
+
<path d="M448.123,305.449C448.307,308.995 448.123,312.537 447.671,312.809C446.763,313.357 443.4,314.082 441.765,312.719C441.126,312.266 441.218,308.811 441.31,305.54C443.49,305.449 445.763,305.449 448.216,305.358L448.123,305.449ZM463.391,305.358C463.481,307.994 463.299,310.447 462.936,310.629C462.119,311.082 458.937,311.629 457.302,310.538C456.757,310.175 456.757,307.72 456.847,305.268L463.392,305.268L463.392,305.358L463.391,305.358ZM434.675,305.812C434.584,306.812 434.584,307.995 434.584,309.175L434.584,312.809C434.584,314.173 434.221,314.445 433.493,313.809C432.041,312.719 430.767,309.266 430.222,306.086C431.494,305.994 433.04,305.904 434.675,305.812M479.747,305.904C478.563,305.812 477.201,305.722 475.657,305.722C475.657,306.721 475.749,307.811 475.749,308.994L475.749,312.901C475.749,314.355 476.021,314.628 476.748,313.991C478.02,312.809 479.202,309.357 479.747,305.904" style="fill:white;fill-rule:nonzero;"/>
|
101 |
+
</g>
|
102 |
+
<g transform="matrix(1,0,0,1,-37.6592,-251.388)">
|
103 |
+
<path d="M419.591,348.068C418.591,352.611 414.045,355.61 409.504,355.428C403.234,355.154 393.51,348.249 393.692,341.434C393.783,337.618 396.6,334.163 399.508,331.984C402.325,329.8 407.05,327.531 410.686,328.53C414.32,329.53 416.864,334.528 418.046,337.798C419.135,340.616 420.227,345.071 419.498,348.069L419.591,348.069L419.591,348.068Z" style="fill:rgb(133,197,31);fill-rule:nonzero;"/>
|
104 |
+
</g>
|
105 |
+
<g transform="matrix(1,0,0,1,-37.6592,-251.388)">
|
106 |
+
<path d="M418.046,347.613C418.135,347.068 418.228,346.522 418.228,345.886C417.047,340.888 414.229,335.164 411.049,334.256C406.142,332.8 396.238,339.344 396.781,346.069C399.508,350.249 405.325,353.702 409.504,353.882C413.32,354.065 417.228,351.519 418.047,347.703L418.047,347.613L418.046,347.613Z" style="fill:rgb(112,169,27);fill-rule:nonzero;"/>
|
107 |
+
</g>
|
108 |
+
<g transform="matrix(1,0,0,1,-37.6592,-251.388)">
|
109 |
+
<path d="M413.502,342.524C414.773,339.98 412.686,335.527 409.504,335.89C406.142,336.345 398.872,341.343 398.872,345.251C398.872,347.705 402.234,349.432 405.777,348.433C408.413,347.705 412.502,344.615 413.502,342.524M416.319,348.885C416.955,347.34 416.046,344.615 414.229,344.886C412.321,345.251 407.776,348.521 407.959,350.339C408.048,351.794 410.594,353.066 412.594,352.338C414.047,351.794 415.773,350.157 416.319,348.885" style="fill:rgb(93,141,23);fill-rule:nonzero;"/>
|
110 |
+
</g>
|
111 |
+
<g transform="matrix(1,0,0,1,-37.6592,-251.388)">
|
112 |
+
<path d="M408.504,330.712C408.595,332.348 405.414,333.8 404.142,332.62C403.051,330.529 403.326,327.985 404.233,327.44C405.233,326.895 407.687,327.895 408.504,330.712" style="fill:rgb(44,68,12);fill-rule:nonzero;"/>
|
113 |
+
</g>
|
114 |
+
<g transform="matrix(1,0,0,1,-37.6592,-251.388)">
|
115 |
+
<path d="M402.325,333.711C402.686,335.526 400.235,337.073 399.052,336.255C397.508,334.71 396.964,331.984 397.688,331.348C398.417,330.712 401.052,331.712 402.325,333.711" style="fill:rgb(44,68,12);fill-rule:nonzero;"/>
|
116 |
+
</g>
|
117 |
+
<g transform="matrix(1,0,0,1,-37.6592,-251.388)">
|
118 |
+
<path d="M397.69,338.254C398.238,339.436 397.054,341.071 395.691,340.981C394.239,339.89 392.876,337.346 393.419,336.709C393.965,335.983 396.419,336.709 397.69,338.254" style="fill:rgb(44,68,12);fill-rule:nonzero;"/>
|
119 |
+
</g>
|
120 |
+
<g transform="matrix(1,0,0,1,-37.6592,-251.388)">
|
121 |
+
<path d="M420.953,321.352C421.681,319.989 419.682,319.078 418.046,318.442C416.408,317.898 415.592,317.898 414.956,319.261C414.228,320.624 413.865,322.713 415.592,323.258C417.227,323.804 420.317,322.713 421.045,321.35L420.953,321.35L420.953,321.352Z" style="fill:rgb(44,68,12);fill-rule:nonzero;"/>
|
122 |
+
</g>
|
123 |
+
<g transform="matrix(1,0,0,1,-37.6592,-251.388)">
|
124 |
+
<path d="M422.408,316.264C422.59,317.808 420.407,318.626 418.592,318.99C416.865,319.354 416.137,319.171 415.957,317.626C415.773,316.079 416.229,313.628 418.047,313.265C419.771,312.902 422.225,314.718 422.408,316.264" style="fill:rgb(44,68,12);fill-rule:nonzero;"/>
|
125 |
+
</g>
|
126 |
+
<g transform="matrix(1,0,0,1,-37.6592,-251.388)">
|
127 |
+
<path d="M422.77,311.174C422.955,312.629 420.771,313.358 418.956,313.721C417.229,314.082 416.501,313.902 416.321,312.358C416.136,310.903 416.593,308.632 418.319,308.268C420.047,307.904 422.499,309.631 422.682,311.083L422.77,311.174Z" style="fill:rgb(44,68,12);fill-rule:nonzero;"/>
|
128 |
+
</g>
|
129 |
+
<g transform="matrix(1,0,0,1,-37.6592,-251.388)">
|
130 |
+
<path d="M408.504,307.812C408.776,308.996 411.048,308.72 412.775,308.36C414.501,307.905 415.138,307.541 414.774,306.36C414.501,305.178 413.41,303.543 411.687,303.997C409.96,304.451 408.233,306.633 408.504,307.905L408.504,307.812Z" style="fill:rgb(44,68,12);fill-rule:nonzero;"/>
|
131 |
+
</g>
|
132 |
+
<g transform="matrix(1,0,0,1,-37.6592,-251.388)">
|
133 |
+
<path d="M406.96,322.261L407.504,323.805L406.323,322.897C405.776,322.442 405.324,321.806 404.96,321.079C405.049,321.806 405.142,322.262 405.324,322.897C403.598,320.079 402.051,316.99 403.05,312.902C403.961,309.175 407.687,307.448 410.322,306.722C411.957,306.268 413.773,305.995 415.408,306.177C416.408,306.268 418.135,306.54 418.862,307.448C419.589,308.36 419.953,310.266 420.134,311.538C420.406,313.537 420.317,315.627 420.045,317.626C419.771,319.442 419.227,321.17 418.318,322.624C417.591,323.715 416.772,324.532 415.684,324.988C414.409,325.532 413.137,325.623 411.773,325.351C409.958,324.988 408.322,323.897 406.867,322.352L406.96,322.261Z" style="fill:rgb(133,197,31);fill-rule:nonzero;"/>
|
134 |
+
</g>
|
135 |
+
<g transform="matrix(1,0,0,1,-37.6592,-251.388)">
|
136 |
+
<path d="M417.955,308.72C419.046,309.994 419.591,315.357 418.318,319.263C417.955,319.355 417.5,319.445 417.047,319.445C415.047,319.628 413.137,318.72 411.866,317.629C411.957,318.174 412.139,318.537 412.321,318.81C411.23,318.358 410.322,316.994 409.685,315.448C409.774,316.721 409.958,317.266 410.139,317.994C408.775,317.539 407.686,315.994 406.867,314.36C406.14,312.905 406.231,310.814 407.503,309.907C410.865,307.453 416.591,307.271 417.862,308.816L417.955,308.72Z" style="fill:rgb(161,225,65);fill-rule:nonzero;"/>
|
137 |
+
</g>
|
138 |
+
<g transform="matrix(1,0,0,1,-37.6592,-251.388)">
|
139 |
+
<path d="M491.106,348.068C492.105,352.611 496.648,355.61 501.193,355.428C507.462,355.154 517.185,348.249 517.002,341.434C516.914,337.618 514.094,334.163 511.188,331.984C508.371,329.8 503.644,327.531 500.01,328.53C496.377,329.53 493.832,334.528 492.65,337.798C491.559,340.616 490.469,345.071 491.198,348.069L491.106,348.069L491.106,348.068Z" style="fill:rgb(133,197,31);fill-rule:nonzero;"/>
|
140 |
+
</g>
|
141 |
+
<g transform="matrix(1,0,0,1,-37.6592,-251.388)">
|
142 |
+
<path d="M492.561,347.613C492.469,347.068 492.376,346.522 492.376,345.886C493.559,340.888 496.375,335.164 499.556,334.256C504.463,332.8 514.367,339.344 513.823,346.069C511.096,350.249 505.279,353.702 501.101,353.882C497.284,354.065 493.376,351.519 492.558,347.703L492.558,347.613L492.561,347.613Z" style="fill:rgb(112,169,27);fill-rule:nonzero;"/>
|
143 |
+
</g>
|
144 |
+
<g transform="matrix(1,0,0,1,-37.6592,-251.388)">
|
145 |
+
<path d="M497.194,342.524C495.92,339.98 498.01,335.527 501.193,335.89C504.555,336.345 511.824,341.343 511.824,345.251C511.824,347.705 508.462,349.432 504.918,348.433C502.282,347.705 498.194,344.615 497.194,342.524M494.377,348.885C493.741,347.34 494.649,344.615 496.467,344.886C498.375,345.251 502.917,348.521 502.737,350.339C502.646,351.794 500.102,353.066 498.102,352.338C496.648,351.794 494.922,350.157 494.377,348.885" style="fill:rgb(93,141,23);fill-rule:nonzero;"/>
|
146 |
+
</g>
|
147 |
+
<g transform="matrix(1,0,0,1,-37.6592,-251.388)">
|
148 |
+
<path d="M502.102,330.712C502.01,332.348 505.192,333.8 506.463,332.62C507.554,330.529 507.28,327.985 506.373,327.44C505.373,326.895 502.918,327.895 502.102,330.712" style="fill:rgb(44,68,12);fill-rule:nonzero;"/>
|
149 |
+
</g>
|
150 |
+
<g transform="matrix(1,0,0,1,-37.6592,-251.388)">
|
151 |
+
<path d="M508.28,333.711C507.919,335.526 510.37,337.073 511.553,336.255C513.097,334.71 513.641,331.984 512.917,331.348C512.188,330.712 509.552,331.712 508.28,333.711" style="fill:rgb(44,68,12);fill-rule:nonzero;"/>
|
152 |
+
</g>
|
153 |
+
<g transform="matrix(1,0,0,1,-37.6592,-251.388)">
|
154 |
+
<path d="M512.915,338.254C512.368,339.436 513.552,341.071 514.914,340.981C516.366,339.89 517.729,337.346 517.186,336.709C516.64,335.983 514.187,336.709 512.915,338.254" style="fill:rgb(44,68,12);fill-rule:nonzero;"/>
|
155 |
+
</g>
|
156 |
+
<g transform="matrix(1,0,0,1,-37.6592,-251.388)">
|
157 |
+
<path d="M489.651,321.352C488.924,319.989 490.923,319.078 492.561,318.442C494.197,317.898 495.012,317.898 495.649,319.261C496.376,320.624 496.74,322.713 495.012,323.258C493.378,323.804 490.287,322.713 489.56,321.35L489.651,321.35L489.651,321.352Z" style="fill:rgb(44,68,12);fill-rule:nonzero;"/>
|
158 |
+
</g>
|
159 |
+
<g transform="matrix(1,0,0,1,-37.6592,-251.388)">
|
160 |
+
<path d="M488.288,316.264C488.107,317.808 490.287,318.626 492.105,318.99C493.832,319.354 494.559,319.171 494.74,317.626C494.922,316.079 494.469,313.628 492.65,313.265C490.924,312.902 488.471,314.718 488.288,316.264" style="fill:rgb(44,68,12);fill-rule:nonzero;"/>
|
161 |
+
</g>
|
162 |
+
<g transform="matrix(1,0,0,1,-37.6592,-251.388)">
|
163 |
+
<path d="M487.835,311.174C487.651,312.629 489.834,313.358 491.649,313.721C493.376,314.082 494.104,313.902 494.284,312.358C494.469,310.903 494.013,308.632 492.285,308.268C490.559,307.904 488.106,309.631 487.924,311.083L487.835,311.174Z" style="fill:rgb(44,68,12);fill-rule:nonzero;"/>
|
164 |
+
</g>
|
165 |
+
<g transform="matrix(1,0,0,1,-37.6592,-251.388)">
|
166 |
+
<path d="M502.192,307.812C501.918,308.996 499.646,308.72 497.919,308.36C496.195,307.905 495.557,307.541 495.92,306.36C496.195,305.178 497.283,303.543 499.009,303.997C500.737,304.451 502.463,306.633 502.192,307.905L502.192,307.812Z" style="fill:rgb(44,68,12);fill-rule:nonzero;"/>
|
167 |
+
</g>
|
168 |
+
<g transform="matrix(1,0,0,1,-37.6592,-251.388)">
|
169 |
+
<path d="M503.646,322.261L503.101,323.805L504.282,322.897C504.83,322.442 505.282,321.806 505.645,321.079C505.556,321.806 505.464,322.262 505.282,322.897C507.008,320.079 508.555,316.99 507.555,312.902C506.645,309.175 502.918,307.448 500.284,306.722C498.648,306.268 496.833,305.995 495.197,306.177C494.198,306.268 492.471,306.54 491.744,307.448C491.016,308.36 490.653,310.266 490.472,311.538C490.2,313.537 490.288,315.627 490.562,317.626C490.835,319.442 491.378,321.17 492.288,322.624C493.014,323.715 493.834,324.532 494.922,324.988C496.197,325.532 497.468,325.623 498.832,325.351C500.647,324.988 502.283,323.897 503.739,322.352L503.646,322.261Z" style="fill:rgb(133,197,31);fill-rule:nonzero;"/>
|
170 |
+
</g>
|
171 |
+
<g transform="matrix(1,0,0,1,-37.6592,-251.388)">
|
172 |
+
<path d="M492.65,308.72C491.559,309.994 491.014,315.357 492.287,319.263C492.65,319.355 493.105,319.445 493.558,319.445C495.558,319.628 497.467,318.72 498.739,317.629C498.647,318.174 498.466,318.537 498.284,318.81C499.375,318.358 500.283,316.994 500.919,315.448C500.83,316.721 500.646,317.266 500.466,317.994C501.83,317.539 502.918,315.994 503.738,314.36C504.464,312.905 504.374,310.814 503.102,309.907C499.74,307.453 494.014,307.271 492.743,308.816L492.65,308.72Z" style="fill:rgb(161,225,65);fill-rule:nonzero;"/>
|
173 |
+
</g>
|
174 |
+
</svg>
|
views/notification-close-js.php
ADDED
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<script type="text/javascript">
|
2 |
+
(function() {
|
3 |
+
var turnOff = function() {
|
4 |
+
window.setUserSetting( 'om_cybermonday_notice', 'off' );
|
5 |
+
};
|
6 |
+
if ( jQuery ) {
|
7 |
+
jQuery( function( $ ) {
|
8 |
+
$( '#om-cybermonday-notice' ).on( 'click', '.notice-dismiss', turnOff );
|
9 |
+
});
|
10 |
+
} else {
|
11 |
+
var el = document.getElementById( 'om-cybermonday-notice' );
|
12 |
+
el.addEventListener('click', function( e ) {
|
13 |
+
if ( ( ' ' + e.target.className + ' ' ).indexOf( ' notice-dismiss ' ) > -1 ) {
|
14 |
+
turnOff();
|
15 |
+
}
|
16 |
+
});
|
17 |
+
}
|
18 |
+
setTimeout( turnOff, 4000 );
|
19 |
+
})();
|
20 |
+
</script>
|
views/notification-css.php
ADDED
@@ -0,0 +1,83 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<style type="text/css">
|
2 |
+
#om-cybermonday-notice {
|
3 |
+
display: block;
|
4 |
+
text-align: center;
|
5 |
+
position: relative;
|
6 |
+
overflow: hidden;
|
7 |
+
}
|
8 |
+
#om-cybermonday-notice p {
|
9 |
+
font-size: 1.3em;
|
10 |
+
margin: 1.5em 0 1em;
|
11 |
+
}
|
12 |
+
#om-cybermonday-notice a {
|
13 |
+
border: 0;
|
14 |
+
text-decoration: none;
|
15 |
+
display: block;
|
16 |
+
margin: 15px auto 8px;
|
17 |
+
max-width: 510px;
|
18 |
+
background: #0b82de;
|
19 |
+
font-size: 1.2em;
|
20 |
+
padding: 0.65rem 1.25rem .75rem;
|
21 |
+
color: #fff;
|
22 |
+
text-align: center;
|
23 |
+
border-radius: 3px;
|
24 |
+
color: #fff !important;
|
25 |
+
}
|
26 |
+
#archie-peeking {
|
27 |
+
position: absolute;
|
28 |
+
bottom: -31px;
|
29 |
+
right: -44px;
|
30 |
+
width: 120px;
|
31 |
+
height: auto;
|
32 |
+
-webkit-transform: rotate(-18deg);
|
33 |
+
transform: rotate(-18deg);
|
34 |
+
-webkit-animation: omring 6.5s 1s ease-in-out infinite;
|
35 |
+
-webkit-transform-origin: 40% 150px;
|
36 |
+
-moz-animation: omring 6.5s 1s ease-in-out infinite;
|
37 |
+
-moz-transform-origin: 40% 150px;
|
38 |
+
animation: omring 6.5s 1s ease-in-out infinite;
|
39 |
+
transform-origin: 40% 150px;
|
40 |
+
}
|
41 |
+
@-webkit-keyframes omring{
|
42 |
+
0%{transform:rotate(-18deg)}
|
43 |
+
1%{transform:rotate(-20deg)}
|
44 |
+
2%{transform:rotate(-10deg)}
|
45 |
+
3%{transform:rotate(-20deg)}
|
46 |
+
4%{transform:rotate(-10deg)}
|
47 |
+
5%{transform:rotate(-18deg)}
|
48 |
+
6%{transform:rotate(-12deg)}
|
49 |
+
7%{transform:rotate(-17deg)}
|
50 |
+
8%{transform:rotate(-14deg)}
|
51 |
+
9%{transform:rotate(-16deg)}
|
52 |
+
10%{transform:rotate(-18deg)}
|
53 |
+
100%{transform:rotate(-18deg)}
|
54 |
+
}
|
55 |
+
@-moz-keyframes omring{
|
56 |
+
0%{transform:rotate(-18deg)}
|
57 |
+
1%{transform:rotate(-20deg)}
|
58 |
+
2%{transform:rotate(-10deg)}
|
59 |
+
3%{transform:rotate(-20deg)}
|
60 |
+
4%{transform:rotate(-10deg)}
|
61 |
+
5%{transform:rotate(-18deg)}
|
62 |
+
6%{transform:rotate(-12deg)}
|
63 |
+
7%{transform:rotate(-17deg)}
|
64 |
+
8%{transform:rotate(-14deg)}
|
65 |
+
9%{transform:rotate(-16deg)}
|
66 |
+
10%{transform:rotate(-18deg)}
|
67 |
+
100%{transform:rotate(-18deg)}
|
68 |
+
}
|
69 |
+
@keyframes omring{
|
70 |
+
0%{transform:rotate(-18deg)}
|
71 |
+
1%{transform:rotate(-20deg)}
|
72 |
+
2%{transform:rotate(-10deg)}
|
73 |
+
3%{transform:rotate(-20deg)}
|
74 |
+
4%{transform:rotate(-10deg)}
|
75 |
+
5%{transform:rotate(-18deg)}
|
76 |
+
6%{transform:rotate(-12deg)}
|
77 |
+
7%{transform:rotate(-17deg)}
|
78 |
+
8%{transform:rotate(-14deg)}
|
79 |
+
9%{transform:rotate(-16deg)}
|
80 |
+
10%{transform:rotate(-18deg)}
|
81 |
+
100%{transform:rotate(-18deg)}
|
82 |
+
}
|
83 |
+
</style>
|
views/notification-pulse-css.php
ADDED
@@ -0,0 +1,58 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<style type="text/css">
|
2 |
+
.om-pulse{
|
3 |
+
text-align: center;
|
4 |
+
cursor: pointer;
|
5 |
+
z-index: 99;
|
6 |
+
left: 123px;
|
7 |
+
top: 7px;
|
8 |
+
}
|
9 |
+
.om-pulse, .om-pulse:before {
|
10 |
+
display: inline-block;
|
11 |
+
width: 12px;
|
12 |
+
height: 12px;
|
13 |
+
border-radius: 100%;
|
14 |
+
background-color: #74ba0d;
|
15 |
+
position: absolute;
|
16 |
+
top: 7px;
|
17 |
+
right: 40px;
|
18 |
+
}
|
19 |
+
.om-pulse:before {
|
20 |
+
content: '';
|
21 |
+
border: 1px solid #74ba0d;
|
22 |
+
left: -3px;
|
23 |
+
top: -3px;
|
24 |
+
width: 16px;
|
25 |
+
height: 16px;
|
26 |
+
background: transparent;
|
27 |
+
}
|
28 |
+
.om-pulse:after{
|
29 |
+
content: '';
|
30 |
+
position: absolute;
|
31 |
+
top: -2px;
|
32 |
+
left: -2px;
|
33 |
+
width: 16px;
|
34 |
+
height: 16px;
|
35 |
+
background-color: #7dd004;
|
36 |
+
border-radius: 100%;
|
37 |
+
z-index: -1;
|
38 |
+
animation: ompulse 2s infinite;
|
39 |
+
will-change: transform;
|
40 |
+
}
|
41 |
+
|
42 |
+
.om-pulse:hover:after{
|
43 |
+
animation: none;
|
44 |
+
}
|
45 |
+
|
46 |
+
@-webkit-keyframes ompulse{
|
47 |
+
0%{transform: scale(1);opacity: 1;}
|
48 |
+
100%{transform: scale(2);opacity: 0;}
|
49 |
+
}
|
50 |
+
@-moz-keyframes ompulse{
|
51 |
+
0%{transform: scale(1);opacity: 1;}
|
52 |
+
100%{transform: scale(2);opacity: 0;}
|
53 |
+
}
|
54 |
+
@keyframes ompulse{
|
55 |
+
0%{transform: scale(1);opacity: 1;}
|
56 |
+
100%{transform: scale(2);opacity: 0;}
|
57 |
+
}
|
58 |
+
</style>
|
views/notification.php
ADDED
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<div id="om-cybermonday-notice" class="notice notice-info is-dismissible">
|
2 |
+
<p>
|
3 |
+
<img id="archie-peeking" src="<?php echo $this->url; ?>assets/css/images/dashboard-icon.png" alt="<?php esc_attr_e( 'Archie, OptinMonster Mascot', 'optin-monster-api' ); ?>">
|
4 |
+
OptinMonster Black Friday / Cyber Monday special - <strong>35% off</strong> all purchases, upgrades and pre-payments!
|
5 |
+
<a
|
6 |
+
href="<?php echo esc_url( $data['url'] ); ?>"
|
7 |
+
target="_blank" rel="noopener"
|
8 |
+
title="Click here to claim your Cyber Monday deal."
|
9 |
+
>Click here to claim your deal →</a>
|
10 |
+
</p>
|
11 |
+
</div>
|
views/plugin-banner.php
ADDED
@@ -0,0 +1,30 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<script src="//use.typekit.net/pef1xgi.js"></script>
|
2 |
+
<script>try{Typekit.load();}catch(e){}</script>
|
3 |
+
<div class="omapi-static-banner">
|
4 |
+
<div class="inner-container">
|
5 |
+
<div class="logo-wrapper">
|
6 |
+
<?php require dirname( __FILE__ ) . '/logo.svg' ?>
|
7 |
+
<span class="omapi-logo-version">
|
8 |
+
<?php printf( esc_html__( 'v%s', 'optin-monster-api' ), $this->version ); ?>
|
9 |
+
<?php if ( $this->beta_version() ) : ?>
|
10 |
+
— <strong>Beta Version: <?php echo $this->beta_version(); ?></strong>
|
11 |
+
<?php endif; ?>
|
12 |
+
</span>
|
13 |
+
</div>
|
14 |
+
<div class="static-menu">
|
15 |
+
<ul>
|
16 |
+
<li>
|
17 |
+
<a target="_blank" rel="noopener" href="https://optinmonster.com/docs/"><?php esc_html_e( 'Need Help?', 'optin-monster-api' ); ?> </a>
|
18 |
+
</li>
|
19 |
+
<li>
|
20 |
+
<a href="https://optinmonster.com/contact-us/" target="_blank" rel="noopener"><?php esc_html_e( 'Send Us Feedback', 'optin-monster-api' ); ?></a>
|
21 |
+
</li>
|
22 |
+
<?php if ( $this->get_api_credentials() ) : ?>
|
23 |
+
<li class="omapi-menu-button">
|
24 |
+
<a id="omapi-create-new-optin-button" href="<?php echo esc_url( OPTINMONSTER_APP_URL . '/campaigns/new/' ); ?>" class="button button-secondary omapi-new-optin" title="<?php echo esc_attr_e( 'Create New Campaign', 'optin-monster-api' ); ?>" rel="noopener"><?php esc_html_e( 'Create New Campaign', 'optin-monster-api' ); ?></a>
|
25 |
+
</li>
|
26 |
+
<?php endif; ?>
|
27 |
+
</ul>
|
28 |
+
</div>
|
29 |
+
</div>
|
30 |
+
</div>
|
views/review.php
ADDED
@@ -0,0 +1,33 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<div class="notice notice-info is-dismissible om-review-notice">
|
2 |
+
<div class="om-notice-wrap">
|
3 |
+
<h3><?php esc_html_e( 'Are you enjoying OptinMonster?', 'optin-monster-api' ); ?></h3>
|
4 |
+
<p style="margin-bottom:0">
|
5 |
+
<a href="#" class="button button-primary om-review-btns" data-res="yes" rel="noopener"><?php esc_html_e( 'Yes!', 'optin-monster-api' ); ?> 🙂</a>
|
6 |
+
<a href="#" class="button button-secondary om-review-btns" data-res="no" target="_blank" rel="noopener"><?php esc_html_e( 'Not Really!', 'optin-monster-api' ); ?></a>
|
7 |
+
<?php if ( ! $this->get_api_credentials() ) : ?>
|
8 |
+
<a href="<?php echo esc_url( $this->welcome->get_link() ); ?>" class="om-dismiss-review-notice om-dismiss-review-notice-delay button button-secondary" rel="noopener">
|
9 |
+
<?php esc_html_e( 'What is OptinMonster?', 'optin-monster-api' ); ?>
|
10 |
+
</a>
|
11 |
+
<?php endif; ?>
|
12 |
+
</p>
|
13 |
+
</div>
|
14 |
+
<br>
|
15 |
+
<div class="om-notice-review">
|
16 |
+
<div class="om-steps om-step-yes" style="display: none">
|
17 |
+
<p><?php esc_html_e( 'That\'s awesome! Could you please do me a BIG favor and give it a 5-star rating on WordPress to help us spread the word and boost our motivation?', 'optin-monster-api' ); ?></p>
|
18 |
+
<p><strong>~ Thomas Griffin<br><?php printf( esc_html__( 'Co-Founder of %1$s', 'optin-monster-api' ), 'OptinMonster' ); ?></strong></p>
|
19 |
+
<p>
|
20 |
+
<a href="https://wordpress.org/support/plugin/optinmonster/reviews/?filter=5#new-post" class="om-dismiss-review-notice button button-primary" target="_blank" rel="noopener noreferrer"><?php esc_html_e( 'Ok, you deserve it', 'optin-monster-api' ); ?></a>
|
21 |
+
<a href="#" class="om-dismiss-review-notice om-dismiss-review-notice-delay" rel="noopener noreferrer"><?php esc_html_e( 'Nope, maybe later!', 'optin-monster-api' ); ?></a>
|
22 |
+
<a href="#" class="om-dismiss-review-notice" rel="noopener noreferrer"><?php esc_html_e( 'I already did!', 'optin-monster-api' ); ?></a>
|
23 |
+
</p>
|
24 |
+
</div>
|
25 |
+
<div class="om-steps om-step-no" style="display: none">
|
26 |
+
<p><?php printf( esc_html__( 'We\'re sorry to hear you aren\'t enjoying %1$s. We would love a chance to improve. Could you take a minute and let us know what we can do better?', 'optin-monster-api' ), 'OptinMonster' ); ?></p>
|
27 |
+
<p>
|
28 |
+
<a href="https://optinmonster.com/plugin-review-feedback/" class="om-dismiss-review-notice button button-primary" target="_blank" rel="noopener noreferrer"><?php esc_html_e( 'Give feedback', 'optin-monster-api' ); ?></a>
|
29 |
+
<a href="#" class="om-dismiss-review-notice" rel="noopener noreferrer"><?php esc_html_e( 'No thanks!', 'optin-monster-api' ); ?></a>
|
30 |
+
</p>
|
31 |
+
</div>
|
32 |
+
</div>
|
33 |
+
</div>
|
views/trustpulse-settings-page.php
CHANGED
@@ -1,12 +1,21 @@
|
|
1 |
<div id="wrap" class="trustpulse-wrap">
|
2 |
<h1 class="tp-heading">Boost Your Sales and Conversions with Social Proof Notifications</h1>
|
3 |
<div class="tp-admin-box">
|
4 |
-
<p>
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
<
|
9 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
10 |
</div>
|
11 |
<h2 class="tp-heading">Top 4 Reasons Why People Love TrustPulse</h2>
|
12 |
<p class="tp-subheading">Here's why smart business owners love TrustPulse, and you will too!</p>
|
@@ -62,12 +71,4 @@
|
|
62 |
<img class="tp-works-on__icon" src="<?php echo $this->url . 'assets/css/images/logo-formidable.png'; ?>" alt="Formidable">
|
63 |
</div>
|
64 |
</div>
|
65 |
-
<div class="tp-admin-box">
|
66 |
-
<p>
|
67 |
-
Join other smart business owners who use TrustPulse to convert visitors into subscribers and customers.
|
68 |
-
</p>
|
69 |
-
<div class="tp-content-row">
|
70 |
-
<a target="_blank" rel="noopener" href="<?php echo TRUSTPULSE_APP_URL; ?>checkout/1/monthly/?utm_source=orgplugin&utm_medium=link&utm_campaign=wpdashboard" class="tp-content-row__item tp-button tp-button--green">Get Started For Free</a>
|
71 |
-
</div>
|
72 |
-
</div>
|
73 |
</div>
|
1 |
<div id="wrap" class="trustpulse-wrap">
|
2 |
<h1 class="tp-heading">Boost Your Sales and Conversions with Social Proof Notifications</h1>
|
3 |
<div class="tp-admin-box">
|
4 |
+
<p>TrustPulse helps you leverage the true power of social proof to instantly increase trust, conversions and sales by up to 15%</p>
|
5 |
+
<div class="notice notice-error" style="display:none;" id="om-plugin-alerts"></div>
|
6 |
+
<form class="install-plugin-form">
|
7 |
+
<?php wp_nonce_field( 'install_plugin', 'nonce' ); ?>
|
8 |
+
<input type="hidden" name="plugin" value="trustpulse-api/trustpulse.php">
|
9 |
+
<input type="hidden" name="url" value="https://downloads.wordpress.org/plugin/trustpulse-api.zip">
|
10 |
+
|
11 |
+
<?php if ( $data['has_plugin'] ) : ?>
|
12 |
+
<input type="hidden" name="action" value="activate">
|
13 |
+
<button type="submit" id="activateButton" class="button button-primary button-activate">Activate the TrustPulse Plugin</button>
|
14 |
+
<?php else : ?>
|
15 |
+
<input type="hidden" name="action" value="install">
|
16 |
+
<button type="submit" id="installButton" class="button button-primary button-install">Install & Activate the TrustPulse Plugin</button>
|
17 |
+
<?php endif; ?>
|
18 |
+
</form>
|
19 |
</div>
|
20 |
<h2 class="tp-heading">Top 4 Reasons Why People Love TrustPulse</h2>
|
21 |
<p class="tp-subheading">Here's why smart business owners love TrustPulse, and you will too!</p>
|
71 |
<img class="tp-works-on__icon" src="<?php echo $this->url . 'assets/css/images/logo-formidable.png'; ?>" alt="Formidable">
|
72 |
</div>
|
73 |
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
74 |
</div>
|
views/welcome.php
ADDED
@@ -0,0 +1,126 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<div class="omapi-welcome-content">
|
2 |
+
<div class="inner-container">
|
3 |
+
<h1><?php esc_html_e( 'Welcome to OptinMonster', 'optin-monster-api' ); ?></h1>
|
4 |
+
|
5 |
+
<div class="omapi-well welcome-connect">
|
6 |
+
<p><?php esc_html_e( 'Please connect to or create an OptinMonster account to start using OptinMonster. This will enable you to start turning website visitors into subscribers & customers.', 'optin-monster-api' ); ?></p>
|
7 |
+
<div class="actions">
|
8 |
+
<a class="button button-omapi-green button-hero" href="<?php echo $data['button_link']; ?>" target="_blank"><?php echo $data['button_text']; ?></a>
|
9 |
+
<span class="or">or</span>
|
10 |
+
<a class="button button-omapi-gray button-hero omapi-authorize-button" href="<?php echo $data['api_link']; ?>"><?php esc_html_e( 'Connect Your Account', 'optin-monster-api' ) ?></a>
|
11 |
+
</div>
|
12 |
+
</div>
|
13 |
+
<div id="js__omapi-video-well" class="omapi-well welcome-data-vid">
|
14 |
+
<h2><?php esc_html_e( 'Get More Email Subscribers, FAST!', 'optin-monster-api' ); ?></h2>
|
15 |
+
<p><?php esc_html_e( 'OptinMonster helps you convert abandoning website visitors into email subscribers with smart web forms and behavior personalization.', 'optin-monster-api' ); ?></p>
|
16 |
+
<div class="actions">
|
17 |
+
<a id="js_omapi-welcome-video-link" class="omapi-video-link" href="https://www.youtube.com/embed/jbP9C9bQtv4?rel=0&controls=0&showinfo=0&autoplay=1">
|
18 |
+
<img width="188" src="<?php echo plugins_url( '/assets/css/images/video-cta-button.png', OMAPI_FILE ) ?>">
|
19 |
+
</a>
|
20 |
+
</div>
|
21 |
+
<div class="omapi-welcome-video-holder">
|
22 |
+
<iframe id="js__omapi-welcome-video-frame" width="640" height="360" src="" frameborder="0" allowfullscreen></iframe>
|
23 |
+
</div>
|
24 |
+
</div>
|
25 |
+
|
26 |
+
<div class="omapi-sub-title">
|
27 |
+
<h2><?php esc_html_e( 'Top 4 Reasons Why People Love OptinMonster', 'optin-monster-api' ); ?></h2>
|
28 |
+
<p><?php esc_html_e( 'Here\'s why smart business owners love OptinMonster, and you will too!', 'optin-monster-api' ); ?></p>
|
29 |
+
</div>
|
30 |
+
<div class="divider"></div>
|
31 |
+
|
32 |
+
<div class="omapi-feature-box omapi-clear">
|
33 |
+
<div class="omapi-feature-image"><img src="<?php echo plugins_url( '/assets/css/images/features-builder.png', OMAPI_FILE ); ?>" alt="<?php esc_attr_e( 'OptinMonster Form Builder', 'optin-monster-api' ); ?>" /></div>
|
34 |
+
<div class="omapi-feature-text">
|
35 |
+
<h3><?php esc_html_e( 'Build high converting forms in minutes, not hours', 'optin-monster-api' ); ?></h3>
|
36 |
+
<p><?php esc_html_e( 'Create visually stunning optin forms that are optimized for the highest conversion rates.', 'optin-monster-api' ); ?></p>
|
37 |
+
<p><?php esc_html_e( 'You can create various types of optin forms such as lightbox popups, floating bars, slide-ins, and more.', 'optin-monster-api' ); ?></p>
|
38 |
+
</div>
|
39 |
+
</div>
|
40 |
+
|
41 |
+
<div class="omapi-feature-box omapi-clear">
|
42 |
+
<div class="omapi-feature-text">
|
43 |
+
<h3><?php esc_html_e( 'Convert abandoning visitors into subscribers & customers', 'optin-monster-api' ); ?></h3>
|
44 |
+
<p><?php esc_html_e( 'Did you know that over 70% of visitors who abandon your website will never return?', 'optin-monster-api' ); ?></p>
|
45 |
+
<p><?php esc_html_e( 'Our exit-intent® technology detects user behavior and prompts them with a targeted campaign at the precise moment they are about to leave.', 'optin-monster-api' ); ?></p>
|
46 |
+
</div>
|
47 |
+
<div class="omapi-feature-image"><img src="<?php echo plugins_url( '/assets/css/images/features-exit-animated.gif', OMAPI_FILE ); ?>" alt="<?php esc_attr_e( 'OptinMonster Exit Intent Technology', 'optin-monster-api' ); ?>" /></div>
|
48 |
+
</div>
|
49 |
+
|
50 |
+
<div class="omapi-feature-box omapi-clear">
|
51 |
+
<div class="omapi-feature-image"><img src="<?php echo plugins_url( '/assets/css/images/features-ab-testing.png', OMAPI_FILE ); ?>" alt="<?php esc_attr_e( 'OptinMonster uses smart A/B testing', 'optin-monster-api' ); ?>" /></div>
|
52 |
+
<div class="omapi-feature-text">
|
53 |
+
<h3><?php esc_html_e( 'Easily A/B test your ideas and increase conversions', 'optin-monster-api' ); ?></h3>
|
54 |
+
<p><?php esc_html_e( 'A/B testing helps you eliminate the guess work and make data-driven decisions on what works best.', 'optin-monster-api' ); ?></p>
|
55 |
+
<p><?php esc_html_e( 'Try different content, headlines, layouts, and styles to see what converts best with our smart and easy to use A/B testing tool.', 'optin-monster-api' ); ?></p>
|
56 |
+
</div>
|
57 |
+
</div>
|
58 |
+
|
59 |
+
<div class="omapi-feature-box omapi-clear">
|
60 |
+
<div class="omapi-feature-text">
|
61 |
+
<h3><?php esc_html_e( 'Measuring your results has never been easier', 'optin-monster-api' ); ?></h3>
|
62 |
+
<p><?php esc_html_e( 'Get the stats that matter and take action to imrpove your lead-generation strategy.', 'optin-monster-api' ); ?></p>
|
63 |
+
<p><?php esc_html_e( 'Our built-in analytics help you analyze clicks, views, and overall conversion rates for each page and optin form.', 'optin-monster-api' ); ?></p>
|
64 |
+
</div>
|
65 |
+
<div class="omapi-feature-image"><img src="<?php echo plugins_url( '/assets/css/images/features-analytics.png', OMAPI_FILE ); ?>" alt="<?php esc_attr_e( 'OptinMonster Segmenting with Page Level Targeting', 'optin-monster-api' ); ?>" /></div>
|
66 |
+
</div>
|
67 |
+
|
68 |
+
<div class="omapi-single-cta">
|
69 |
+
<a class="button button-omapi-green button-hero" href="<?php echo $data['button_link']; ?>" target="_blank"><?php echo $data['button_text']; ?></a>
|
70 |
+
</div>
|
71 |
+
<div class="omapi-well welcome-featuredin">
|
72 |
+
<h2><?php esc_html_e( 'OptinMonster has been featured in:', 'optin-monster-api' ); ?></h2>
|
73 |
+
<img src="<?php echo plugins_url( '/assets/css/images/featured-logos.png', OMAPI_FILE ); ?>" alt="<?php esc_attr_e( 'OptinMonster has been featured in Inc., Forbes, VB, Yahoo, Entrepreneur, Huff Post, and more', 'optin-monster-api' ); ?>" />
|
74 |
+
</div>
|
75 |
+
|
76 |
+
<div class="omapi-reviews">
|
77 |
+
<div class="omapi-well omapi-mini-well">
|
78 |
+
<div class="omapi-talking-head">
|
79 |
+
<img src="<?php echo plugins_url( '/assets/css/images/michaelstelzner.png', OMAPI_FILE ); ?>">
|
80 |
+
</div>
|
81 |
+
<p class="ompai-review">
|
82 |
+
<?php _e( '<strong>We added more than 95,000 names to our email list</strong> using OptinMonster\'s Exit Intent® technology. We strongly recommend it!', 'optin-monster-api' ); ?>
|
83 |
+
<span class="reviewer-name"><?php esc_html_e( 'Michael Stelzner', 'optin-monster-api' ); ?></span>
|
84 |
+
<span class="reviewer-title"><?php esc_html_e( 'Founder Social Media Examiner', 'optin-monster-api' ); ?></span>
|
85 |
+
</p>
|
86 |
+
</div>
|
87 |
+
<div class="omapi-well omapi-mini-well">
|
88 |
+
<div class="omapi-talking-head">
|
89 |
+
<img src="<?php echo plugins_url( '/assets/css/images/neilpatel.png', OMAPI_FILE ); ?>">
|
90 |
+
</div>
|
91 |
+
<p class="ompai-review">
|
92 |
+
<?php _e( 'Exit Intent® popups have doubled my email opt-in rate. <strong>When done right, you can see an instant 10% lift on driving sales.</strong> I highly recommend that you use OptinMonster for growing your email list and sales.', 'optin-monster-api' ); ?>
|
93 |
+
<span class="reviewer-name"><?php esc_html_e( 'Neil Patel', 'optin-monster-api' ); ?></span>
|
94 |
+
<span class="reviewer-title"><?php esc_html_e( 'Founder QuickSprout', 'optin-monster-api' ); ?></span>
|
95 |
+
</p>
|
96 |
+
</div>
|
97 |
+
<div class="omapi-well omapi-mini-well">
|
98 |
+
<div class="omapi-talking-head">
|
99 |
+
<img src="<?php echo plugins_url( '/assets/css/images/matthewwoodward.png', OMAPI_FILE ); ?>">
|
100 |
+
</div>
|
101 |
+
<p class="ompai-review">
|
102 |
+
<?php _e( 'OptinMonster played a critical role in increasing my email optin conversion rate by 469%. In real numbers, <strong>that is the difference between $7,765 and $47,748 per month.</strong>', 'optin-monster-api' ); ?>
|
103 |
+
<span class="reviewer-name"><?php esc_html_e( 'Matthew Woodward', 'optin-monster-api' ); ?></span>
|
104 |
+
<span class="reviewer-title"><?php esc_html_e( 'SEO Expert', 'optin-monster-api' ); ?></span>
|
105 |
+
</p>
|
106 |
+
</div>
|
107 |
+
</div>
|
108 |
+
|
109 |
+
<div class="omapi-well welcome-connect">
|
110 |
+
<p><?php esc_html_e( 'Join the thousands of users who use OptinMonster to convert abandoning website visitors into subscribers and customers.', 'optin-monster-api' ); ?></p>
|
111 |
+
<div class="actions">
|
112 |
+
<a class="button button-omapi-green button-hero" href="<?php echo $data['button_link']; ?>" target="_blank"><?php echo $data['button_text']; ?></a>
|
113 |
+
<span class="or">or</span>
|
114 |
+
<a class="button button-omapi-gray button-hero omapi-authorize-button" href="<?php echo $data['api_link']; ?>"><?php esc_html_e( 'Connect Your Account', 'optin-monster-api' ) ?></a>
|
115 |
+
</div>
|
116 |
+
</div>
|
117 |
+
|
118 |
+
</div>
|
119 |
+
|
120 |
+
<form style="display:none" method="post" action="<?php echo esc_url( add_query_arg( 'optin_monster_api_view', 'api', $data['api_link'] ) ); ?>">
|
121 |
+
<?php wp_nonce_field( 'omapi_nonce_api', 'omapi_nonce_api' ); ?>
|
122 |
+
<input type="hidden" name="omapi_panel" value="api" />
|
123 |
+
<input type="hidden" name="omapi_save" value="true" />
|
124 |
+
<input type="password" id="omapi-field-apikey" name="omapi[api][apikey]" />
|
125 |
+
</form>
|
126 |
+
</div>
|