/**
  * Front end styles and scripts.
  *
  * @return void
  */
 public static function frontend_scripts()
 {
     wp_register_style('wcsatt-css', WCS_ATT()->plugin_url() . '/assets/css/wcsatt-frontend.css', false, WCS_ATT::VERSION, 'all');
     wp_enqueue_style('wcsatt-css');
     if (is_cart()) {
         wp_register_script('wcsatt-cart', WCS_ATT()->plugin_url() . '/assets/js/wcsatt-cart.js', array('jquery', 'wc-country-select', 'wc-address-i18n'), WCS_ATT::VERSION, true);
     }
     wp_enqueue_script('wcsatt-cart');
     $params = array('update_cart_option_nonce' => wp_create_nonce('wcsatt_update_cart_option'), 'wc_ajax_url' => WCS_ATT_Core_Compatibility::is_wc_version_gte_2_4() ? WC_AJAX::get_endpoint("%%endpoint%%") : WC()->ajax_url());
     wp_localize_script('wcsatt-cart', 'wcsatt_cart_params', $params);
 }
 public static function init()
 {
     // Allow subs to recognize a cart item of any product type as a subscription
     add_filter('woocommerce_is_subscription', __CLASS__ . '::is_converted_to_sub', 10, 3);
     // Add convert-to-sub configuration data to cart items that can be converted
     add_filter('woocommerce_add_cart_item', __CLASS__ . '::add_cart_item_convert_to_sub_data', 10, 2);
     // Load convert-to-sub cart item session data
     add_filter('woocommerce_get_cart_item_from_session', __CLASS__ . '::load_convert_to_sub_session_data', 5, 2);
     // Finalize covert-to-sub product-level/cart-level session data
     add_filter('woocommerce_cart_loaded_from_session', __CLASS__ . '::apply_convert_to_sub_session_data', 5);
     // Save the convert to sub radio button setting when clicking the 'update cart' button
     add_filter('woocommerce_update_cart_action_cart_updated', __CLASS__ . '::update_convert_to_sub_options', 10);
     // Save the convert to sub cart-level setting via ajax
     if (WCS_ATT_Core_Compatibility::is_wc_version_gte_2_4()) {
         add_action('wc_ajax_wcsatt_update_cart_option', __CLASS__ . '::update_convert_to_sub_cart_options');
     } else {
         add_action('wp_ajax_wcsatt_update_cart_option', __CLASS__ . '::update_convert_to_sub_cart_options');
         add_action('wp_ajax_nopriv_wcsatt_update_cart_option', __CLASS__ . '::update_convert_to_sub_cart_options');
     }
 }
    /**
     * Product writepanel for Subscriptions.
     *
     * @return void
     */
    public static function product_write_panel()
    {
        global $post;
        $subscription_schemes = get_post_meta($post->ID, '_wcsatt_schemes', true);
        ?>
<div id="wcsatt_data" class="panel woocommerce_options_panel wc-metaboxes-wrapper">
			<div class="options_group"><?php 
        // Subscription Status.
        woocommerce_wp_checkbox(array('id' => '_wcsatt_force_subscription', 'label' => __('Force subscription', WCS_ATT::TEXT_DOMAIN), 'desc_tip' => true, 'description' => __('Check this option to prevent one-time purchases of this product. In effect when at least one Subscription Option has been added below.', WCS_ATT::TEXT_DOMAIN)));
        // Default Status.
        woocommerce_wp_select(array('id' => '_wcsatt_default_status', 'wrapper_class' => 'wcsatt_default_status', 'label' => __('Default to', WCS_ATT::TEXT_DOMAIN), 'description' => '', 'options' => array('one-time' => __('One-time purchase', WCS_ATT::TEXT_DOMAIN), 'subscription' => __('Subscription', WCS_ATT::TEXT_DOMAIN))));
        // Subscription Prompt.
        woocommerce_wp_textarea_input(array('id' => '_wcsatt_subscription_prompt', 'label' => __('Subscription prompt', WCS_ATT::TEXT_DOMAIN), 'description' => __('Custom html/text to display before the available Subscription Options. In effect when at least one Subscription Option has been added below.', WCS_ATT::TEXT_DOMAIN), 'desc_tip' => true));
        ?>
</div>

			<p class="form-field">
				<label>
					<?php 
        echo __('Subscription Options', WCS_ATT::TEXT_DOMAIN);
        echo WCS_ATT_Core_Compatibility::wc_help_tip(__('Add one or more subscription options for this product.', WCS_ATT::TEXT_DOMAIN));
        ?>
</label></p>
			<div class="subscription_schemes wc-metaboxes ui-sortable" data-count=""><?php 
        if ($subscription_schemes) {
            $i = 0;
            foreach ($subscription_schemes as $subscription_scheme) {
                do_action('wcsatt_subscription_scheme', $i, $subscription_scheme, $post->ID);
                $i++;
            }
        }
        ?>
</div>

			<p class="toolbar">
				<button type="button" class="button button-primary add_subscription_scheme"><?php 
        _e('Add Option', WCS_ATT::TEXT_DOMAIN);
        ?>
</button>
			</p>
		</div><?php 
    }