1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
|
<?php
namespace Objectiv\Plugins\Checkout\Features;
use Objectiv\Plugins\Checkout\Action\SmartyStreetsAddressValidationAction; use Objectiv\Plugins\Checkout\Admin\Pages\PageAbstract; use Objectiv\Plugins\Checkout\Interfaces\SettingsGetterInterface; use Objectiv\Plugins\Checkout\Managers\PlanManager; use Objectiv\Plugins\Checkout\Managers\SettingsManager;
class SmartyStreets extends FeaturesAbstract { public function __construct( bool $enabled, bool $available, string $required_plans_list, SettingsGetterInterface $settings_getter ) { parent::__construct( $enabled, $available, $required_plans_list, $settings_getter ); }
public function init() { parent::init();
add_action( 'cfw_do_plugin_activation', array( $this, 'run_on_plugin_activation' ) ); add_action( 'cfw_checkout_after_main_admin_page_controls', array( $this, 'output_admin_settings' ) ); }
protected function run_if_cfw_is_enabled() { add_action( 'cfw_checkout_customer_info_tab', array( $this, 'output_modal' ), 60 ); add_filter( 'cfw_event_data', array( $this, 'add_localized_settings' ) ); }
/** * @param PageAbstract $checkout_admin_page */ public function output_admin_settings( PageAbstract $checkout_admin_page ) { if ( ! $this->available ) { $notice = $checkout_admin_page->get_upgrade_required_notice( $this->required_plans_list ); }
$checkout_admin_page->output_checkbox_row( 'enable_smartystreets_integration', cfw__( 'SmartyStreets', 'checkout-wc' ), cfw__( 'Enable SmartyStreets address validation.', 'checkout-wc' ), cfw__( 'Validates shipping address with SmartyStreets and provides alternative, corrected addresses for incorrect or incomplete addresses.', 'checkout-wc' ), PlanManager::has_required_plan( PlanManager::PRO ), $notice ?? '' );
$checkout_admin_page->output_text_input_row( 'smartystreets_auth_id', cfw__( 'SmartyStreets Auth ID', 'checkout-wc' ), cfw__( 'SmartyStreets Auth ID. Available in your <a target="_blank" href="https://account.smartystreets.com/#keys">SmartyStreets Account</a>.', 'checkout-wc' ) );
$checkout_admin_page->output_text_input_row( 'smartystreets_auth_token', cfw__( 'SmartyStreets Auth Token', 'checkout-wc' ), cfw__( 'SmartyStreets Auth Token. Available in your <a target="_blank" href="https://account.smartystreets.com/#keys">SmartyStreets Account</a>.', 'checkout-wc' ) ); }
/** * @param array $event_data * @return array */ public function add_localized_settings( array $event_data ): array { $event_data['settings']['enable_smartystreets_integration'] = apply_filters( 'cfw_enable_smartystreets_integration', true );
return $event_data; }
public function output_modal() { $translated_button_label = __( 'Use This Address', 'checkout-wc' ); ?> <a href="#cfw_smartystreets_confirm_modal" class="cfw-smartystreets-modal-trigger cfw-hidden"></a> <div id="cfw_smartystreets_confirm_modal" class="cfw-hidden"> <h2><?php _e( 'Address Verification', 'checkout-wc' ); ?></h2>
<h4 class="cfw-small"> <?php _e( 'The shipping address you provided does not match the suggested address from our verification service. Please verify your address.', 'checkout-wc' ); ?> </h4>
<div class="container"> <div class="row"> <div class="cfw-smartystreets-option-wrap col-5 cfw-selected-smartystreets-address"> <h4> <label> <input type="radio" name="cfw_smartystreets_address_selection" class="cfw-radio-user-address" value="user-value" checked /> <?php _e( 'You Entered', 'checkout-wc' ); ?> </label> </h4>
<p class="cfw-smartystreets-user-address"></p>
<p class="cfw-smartystreets-button-wrap"> <a href="javascript:" class="cfw-smartystreets-button cfw-primary-btn cfw-smartystreets-user-address-button"><?php echo $translated_button_label; ?></a> </p> </div>
<div class="cfw-smartystreets-option-wrap col-5 offset-2"> <h4> <label> <input type="radio" name="cfw_smartystreets_address_selection" class="cfw-radio-suggested-address" value="suggested-value" /> <?php _e( 'We Suggest', 'checkout-wc' ); ?> </label> </h4>
<p class="cfw-smartystreets-suggested-address"></p>
<p class="cfw-smartystreets-button-wrap"> <a href="javascript:" class="cfw-smartystreets-button cfw-primary-btn cfw-smartystreets-suggested-address-button"><?php echo $translated_button_label; ?></a> </p> </div> </div> </div> </div> <?php }
public function load_ajax_action() { ( new SmartyStreetsAddressValidationAction( $this->settings_getter->get_setting( 'smartystreets_auth_id' ), $this->settings_getter->get_setting( 'smartystreets_auth_token' ) ) )->load(); }
public function run_on_plugin_activation() { SettingsManager::instance()->add_setting( 'enable_smartystreets_integration', 'no' ); } }
|