Plugin Directory

Changeset 2859273


Ignore:
Timestamp:
02/02/2023 11:55:54 PM (3 years ago)
Author:
jtsternberg
Message:
  • Fixed wp_enqueue_script error on widgets page.
  • Addresses issues with page caching by fetching rules data for Easy Digital Downloads and WooCommerce via ajax.
  • Small improvements to onbaording
  • Updated bundled version of Vue and related dependencies to address some security scanners.
  • Introduced Playbooks to the plugin
Location:
optinmonster/trunk
Files:
55 added
46 deleted
15 edited

Legend:

Unmodified
Added
Removed
  • optinmonster/trunk/CHANGELOG.md

    r2850643 r2859273  
    11# Changelog
    22All notable changes to the OptinMonster plugin will be documented in this file.
     3
     4### 2.12.0 - 2023-02-02
     5* Fixed wp_enqueue_script error on widgets page.
     6* Addresses issues with page caching by fetching rules data for Easy Digital Downloads and WooCommerce via ajax.
     7* Small improvements to onbaording
     8* Updated bundled version of Vue and related dependencies to address some security scanners.
     9* Introduced Playbooks to the plugin
    310
    411### 2.11.2 - 2023-01-18
  • optinmonster/trunk/OMAPI/Blocks.php

    r2758201 r2859273  
    136136     */
    137137    public function enqueue_block_editor_assets() {
     138        global $pagenow;
     139
    138140        $version    = $this->base->asset_version();
    139141        $css_handle = $this->base->plugin_slug . '-blocks-admin';
     
    160162        OMAPI_Utils::add_inline_script( $campaign_selector_handle, 'OMAPI', $this->get_data_for_js() );
    161163
    162         wp_enqueue_script(
    163             $this->base->plugin_slug . '-gutenberg-sidebar-settings',
    164             $this->base->url . 'assets/dist/js/om-settings.min.js',
    165             array( $campaign_selector_handle, 'wp-plugins', 'wp-edit-post', 'wp-element' ),
    166             $version
    167         );
    168 
    169         if ( version_compare( get_bloginfo( 'version' ), '5.3', '>=' ) ) {
     164        $is_widgets_page = $pagenow === 'widgets.php';
     165
     166        // Prevent enqueueing sidebar settings on widgets screen...
     167        if ( ! $is_widgets_page ) {
     168            wp_enqueue_script(
     169                $this->base->plugin_slug . '-gutenberg-sidebar-settings',
     170                $this->base->url . 'assets/dist/js/om-settings.min.js',
     171                array( $campaign_selector_handle, 'wp-plugins', 'wp-edit-post', 'wp-element' ),
     172                $version
     173            );
     174        }
     175
     176        if ( version_compare( $GLOBALS['wp_version'], '5.3', '>=' ) ) {
    170177            wp_enqueue_script(
    171178                $this->base->plugin_slug . '-gutenberg-format-button',
    172179                $this->base->url . 'assets/dist/js/om-format.min.js',
    173                 array( $campaign_selector_handle, 'wp-rich-text', 'wp-element', 'wp-editor' ),
     180                array(
     181                    $campaign_selector_handle,
     182                    'wp-rich-text',
     183                    'wp-element',
     184                    $is_widgets_page && version_compare( $GLOBALS['wp_version'], '5.8.0', '>=' )
     185                        ? 'wp-edit-widgets'
     186                        : 'wp-editor',
     187                ),
    174188                $version
    175189            );
     
    241255                'canMonsterlink'        => $this->base->has_rule_type( 'monster-link' ),
    242256                'templatesUri'          => OMAPI_Urls::templates(),
     257                'playbooksUri'          => OMAPI_Urls::playbooks(),
    243258                'campaignsUri'          => OMAPI_Urls::campaigns(),
    244259                'settingsUri'           => OMAPI_Urls::settings(),
  • optinmonster/trunk/OMAPI/EasyDigitalDownloads/Output.php

    r2758201 r2859273  
    6868     */
    6969    public function display_rules_data() {
    70         $output = array(
    71             'cart' => $this->get_cart(),
    72         );
    73 
    74         $user_id = get_current_user_id();
    75 
     70        $cart               = $this->get_cart();
     71        $user_id            = get_current_user_id();
    7672        $purchased_products = edd_get_users_purchased_products( $user_id );
     73        $cart['customer']   = null;
    7774
    7875        if ( ! empty( $purchased_products ) ) {
     
    8481            );
    8582
    86             $output['customer'] = array(
     83            $cart['customer'] = array(
    8784                'products' => $customer_products,
    8885                'stats'    => edd_get_purchase_stats_by_user( $user_id ),
     
    9087        }
    9188
    92         return $output;
     89        return $cart;
    9390    }
    9491
  • optinmonster/trunk/OMAPI/EasyDigitalDownloads/RestApi.php

    r2758201 r2859273  
    3333            'edd/autogenerate',
    3434            array(
    35                 'methods'             => 'POST',
     35                'methods'             => WP_REST_Server::CREATABLE,
    3636                'permission_callback' => array( $this, 'can_manage_shop' ),
    3737                'callback'            => array( $this, 'autogenerate' ),
     
    4343            'edd/save',
    4444            array(
    45                 'methods'             => 'POST',
     45                'methods'             => WP_REST_Server::CREATABLE,
    4646                'permission_callback' => array( $this, 'can_update_settings' ),
    4747                'callback'            => array( $this, 'save' ),
     
    5353            'edd/disconnect',
    5454            array(
    55                 'methods'             => 'POST',
     55                'methods'             => WP_REST_Server::CREATABLE,
    5656                'permission_callback' => array( $this, 'can_update_settings' ),
    5757                'callback'            => array( $this, 'disconnect' ),
     
    6363            'edd/settings',
    6464            array(
    65                 'methods'             => 'GET',
     65                'methods'             => WP_REST_Server::READABLE,
    6666                'permission_callback' => array( $this, 'logged_in_and_can_access_route' ),
    6767                'callback'            => array( $this, 'get_settings' ),
     
    7171        register_rest_route(
    7272            $this->namespace,
    73             'edd/info',
    74             array(
    75                 'methods'             => 'GET',
     73            'edd/display-rules',
     74            array(
     75                'methods'             => WP_REST_Server::READABLE,
    7676                'permission_callback' => '__return_true',
    77                 'callback'            => array( $this, 'get_display_rules_infos' ),
     77                'callback'            => array( $this, 'get_display_rules_info' ),
    7878            )
    7979        );
     
    222222     * This is used when there's an event on cart page to update information in the frontend.
    223223     *
    224      * Route: GET omapp/v1/edd/info
    225      *
    226      * @since 2.8.0
    227      *
    228      * @return WP_REST_Response The API Response
    229      * @throws Exception If plugin action fails.
    230      */
    231     public function get_display_rules_infos() {
     224     * Route: GET omapp/v1/edd/display-rules
     225     *
     226     * @since 2.8.0
     227     *
     228     * @return WP_REST_Response The API Response
     229     * @throws Exception If plugin action fails.
     230     */
     231    public function get_display_rules_info() {
    232232        $edd_output = new OMAPI_EasyDigitalDownloads_Output();
    233233
    234         return array(
    235             'data' => $edd_output->display_rules_data(),
     234        return new WP_REST_Response(
     235            $edd_output->display_rules_data(),
     236            200
    236237        );
    237238    }
  • optinmonster/trunk/OMAPI/Output.php

    r2850643 r2859273  
    778778
    779779        $output = array(
    780             'wc_cart'     => $this->base->woocommerce->get_cart(),
    781780            'object_id'   => $object_id,
    782781            'object_key'  => $object_key,
     
    784783            'term_ids'    => $tax_terms,
    785784            'wp_json'     => untrailingslashit( get_rest_url() ),
     785            'wc_active'   => OMAPI_WooCommerce::is_active(),
     786            'edd_active'  => OMAPI_EasyDigitalDownloads::is_active(),
     787            'nonce'       => wp_create_nonce( 'wp_rest' ),
    786788        );
    787 
    788         if ( OMAPI_EasyDigitalDownloads::is_active() ) {
    789             $output['edd'] = $this->edd_output->display_rules_data();
    790         }
    791789
    792790        $output = apply_filters( 'optin_monster_display_rules_data_output', $output );
  • optinmonster/trunk/OMAPI/Pages.php

    r2826126 r2859273  
    123123                'app'      => true,
    124124                'callback' => array( $this, 'render_app_loading_page' ),
     125            );
     126
     127            $this->pages['optin-monster-playbooks'] = array(
     128                'name'             => __( 'Playbooks', 'optin-monster-api' ),
     129                'app'              => true,
     130                'callback'         => array( $this, 'render_app_loading_page' ),
     131                'new_badge_period' => array(
     132                    'start' => '2023-02-02 00:00:00',
     133                    'end'   => '2023-03-03 59:59:59',
     134                ),
    125135            );
    126136
     
    343353                }
    344354
     355                $menu_title = ! empty( $page['menu'] ) ? $page['menu'] : $page['name'];
     356                if ( $this->maybe_add_new_badge( $page ) ) {
     357                    $menu_title .= ' <span class="omapi-menu-new">New!<span>';
     358                }
     359
    345360                $hooks[] = $hook = add_submenu_page(
    346361                    $parent_slug, // $parent_slug
    347362                    $page['name'], // $page_title
    348                     ! empty( $page['menu'] ) ? $page['menu'] : $page['name'], // $menu_title
     363                    $menu_title,
    349364                    $this->base->access_capability( $page['slug'] ),
    350365                    $page['slug'],
     
    514529            $loader->localize( $js_args );
    515530
    516             wp_enqueue_script( $this->base->plugin_slug . '-api-script', OPTINMONSTER_APIJS_URL, $loader->handles['js'], null, true );
    517             add_filter( 'script_loader_tag', array( $this, 'filter_api_script' ), 10, 2 );
    518 
    519531            return $loader;
    520532
     
    523535
    524536        return false;
    525     }
    526 
    527     /**
    528      * Filters the API script tag to add the preview user/account data attributes.
    529      *
    530      * @since 2.0.0
    531      *
    532      * @param string $tag    The HTML script output.
    533      * @param string $handle The script handle to target.
    534      * @return string $tag   Amended HTML script with our ID attribute appended.
    535      */
    536     public function filter_api_script( $tag, $handle ) {
    537 
    538         // If the handle is not ours, do nothing.
    539         if ( $this->base->plugin_slug . '-api-script' !== $handle ) {
    540             return $tag;
    541         }
    542 
    543         // Adjust the output to add our custom script ID.
    544         return str_replace(
    545             ' src',
    546             sprintf(
    547                 ' data-account="56690" data-user="50374" async %s src',
    548                 defined( 'OPTINMONSTER_ENV' ) ? 'data-env="' . OPTINMONSTER_ENV . '"' : ''
    549             ),
    550             $tag
    551         );
    552537    }
    553538
     
    579564    }
    580565
     566    /**
     567     * Determine if a page should have a "new" badge.
     568     *
     569     * @param array $page The page data.
     570     *
     571     * @return boolean True if the given page should have a new badge
     572     */
     573    public function maybe_add_new_badge( $page ) {
     574        if ( empty( $page['new_badge_period']['start'] ) ) {
     575            return false;
     576        }
     577
     578        $now = new DateTime( 'now', new DateTimeZone( 'America/New_York' ) );
     579
     580        return OMAPI_Utils::date_within(
     581            $now,
     582            $page['new_badge_period']['start'],
     583            $page['new_badge_period']['end']
     584        );
     585    }
     586
    581587}
  • optinmonster/trunk/OMAPI/RestApi.php

    r2784339 r2859273  
    6868            'info',
    6969            array(
    70                 'methods'             => 'GET',
     70                'methods'             => WP_REST_Server::READABLE,
    7171                'permission_callback' => array( $this, 'logged_in_or_has_api_key' ),
    7272                'callback'            => array( $this, 'output_info' ),
     
    7979            'support',
    8080            array(
    81                 'methods'             => 'GET',
     81                'methods'             => WP_REST_Server::READABLE,
    8282                'permission_callback' => array( $this, 'logged_in_or_has_api_key' ),
    8383                'callback'            => array( $this, 'support_info' ),
     
    9090            'support/debug/enable',
    9191            array(
    92                 'methods'             => 'GET',
     92                'methods'             => WP_REST_Server::READABLE,
    9393                'permission_callback' => array( $this, 'logged_in_or_has_api_key' ),
    9494                'callback'            => array( $this, 'rule_debug_enable' ),
     
    9999            'support/debug/disable',
    100100            array(
    101                 'methods'             => 'GET',
     101                'methods'             => WP_REST_Server::READABLE,
    102102                'permission_callback' => array( $this, 'logged_in_or_has_api_key' ),
    103103                'callback'            => array( $this, 'rule_debug_disable' ),
     
    110110            'me',
    111111            array(
    112                 'methods'             => 'GET',
     112                'methods'             => WP_REST_Server::READABLE,
    113113                'permission_callback' => array( $this, 'logged_in_and_can_access_route' ),
    114114                'callback'            => array( $this, 'get_me' ),
     
    121121            'campaigns/refresh',
    122122            array(
    123                 'methods'             => 'POST',
     123                'methods'             => WP_REST_Server::CREATABLE,
    124124                'permission_callback' => array( $this, 'logged_in_and_can_access_route' ),
    125125                'callback'            => array( $this, 'refresh_campaigns' ),
     
    132132            'campaigns/(?P<id>\w+)',
    133133            array(
    134                 'methods'             => 'GET',
     134                'methods'             => WP_REST_Server::READABLE,
    135135                'permission_callback' => array( $this, 'logged_in_and_can_access_route' ),
    136136                'callback'            => array( $this, 'get_campaign_data' ),
     
    143143            'campaigns/(?P<id>\w+)',
    144144            array(
    145                 'methods'             => 'POST',
     145                'methods'             => WP_REST_Server::CREATABLE,
    146146                'permission_callback' => array( $this, 'logged_in_and_can_access_route' ),
    147147                'callback'            => array( $this, 'update_campaign_data' ),
     
    154154            'campaigns/(?P<id>[\w-]+)/sync',
    155155            array(
    156                 'methods'             => 'POST',
     156                'methods'             => WP_REST_Server::CREATABLE,
    157157                'permission_callback' => array( $this, 'logged_in_or_has_api_key' ),
    158158                'callback'            => array( $this, 'sync_campaign' ),
     
    165165            'resources',
    166166            array(
    167                 'methods'             => 'GET',
     167                'methods'             => WP_REST_Server::READABLE,
    168168                'permission_callback' => array( $this, 'logged_in_and_can_access_route' ),
    169169                'callback'            => array( $this, 'get_wp_resources' ),
     
    175175            'notifications',
    176176            array(
    177                 'methods'             => 'GET',
     177                'methods'             => WP_REST_Server::READABLE,
    178178                'permission_callback' => array( $this, 'logged_in_and_can_access_route' ),
    179179                'callback'            => array( $this, 'get_notifications' ),
     
    185185            'notifications/dismiss',
    186186            array(
    187                 'methods'             => 'POST',
     187                'methods'             => WP_REST_Server::CREATABLE,
    188188                'permission_callback' => array( $this, 'logged_in_and_can_access_route' ),
    189189                'callback'            => array( $this, 'dismiss_notification' ),
     
    195195            'notifications/create',
    196196            array(
    197                 'methods'             => 'POST',
     197                'methods'             => WP_REST_Server::CREATABLE,
    198198                'permission_callback' => array( $this, 'logged_in_and_can_access_route' ),
    199199                'callback'            => array( $this, 'create_event_notification' ),
     
    205205            'plugins',
    206206            array(
    207                 'methods'             => 'GET',
     207                'methods'             => WP_REST_Server::READABLE,
    208208                'permission_callback' => array( $this, 'logged_in_and_can_access_route' ),
    209209                'callback'            => array( $this, 'get_am_plugins_list' ),
     
    215215            'plugins',
    216216            array(
    217                 'methods'             => 'POST',
     217                'methods'             => WP_REST_Server::CREATABLE,
    218218                'permission_callback' => array( $this, 'logged_in_and_can_access_route' ),
    219219                'callback'            => array( $this, 'handle_plugin_action' ),
     
    225225            'api',
    226226            array(
    227                 'methods'             => 'POST',
     227                'methods'             => WP_REST_Server::CREATABLE,
    228228                'permission_callback' => array( $this, 'can_store_api_key' ),
    229229                'callback'            => array( $this, 'init_api_key_connection' ),
     
    237237                'api/regenerate',
    238238                array(
    239                     'methods'             => 'POST',
     239                    'methods'             => WP_REST_Server::CREATABLE,
    240240                    'permission_callback' => array( $this, 'can_store_regenerated_api_key' ),
    241241                    'callback'            => array( $this, 'store_regenerated_api_key' ),
     
    248248            'api',
    249249            array(
    250                 'methods'             => 'DELETE',
     250                'methods'             => WP_REST_Server::DELETABLE,
    251251                'permission_callback' => array( $this, 'can_delete_api_key' ),
    252252                'callback'            => array( $this, 'disconnect' ),
     
    258258            'settings',
    259259            array(
    260                 'methods'             => 'GET',
     260                'methods'             => WP_REST_Server::READABLE,
    261261                'permission_callback' => array( $this, 'logged_in_and_can_access_route' ),
    262262                'callback'            => array( $this, 'get_settings' ),
     
    268268            'settings',
    269269            array(
    270                 'methods'             => 'POST',
     270                'methods'             => WP_REST_Server::CREATABLE,
    271271                'permission_callback' => array( $this, 'can_update_settings' ),
    272272                'callback'            => array( $this, 'update_settings' ),
     
    278278            'review/dismiss',
    279279            array(
    280                 'methods'             => 'POST',
     280                'methods'             => WP_REST_Server::CREATABLE,
    281281                'permission_callback' => array( $this, 'can_dismiss_review' ),
    282282                'callback'            => array( $this, 'dismiss_review' ),
     
    288288            'omu/courses',
    289289            array(
    290                 'methods'             => 'GET',
     290                'methods'             => WP_REST_Server::READABLE,
    291291                'permission_callback' => array( $this, 'logged_in_or_has_api_key' ),
    292292                'callback'            => array( $this, 'get_courses' ),
     
    298298            'omu/guides',
    299299            array(
    300                 'methods'             => 'GET',
     300                'methods'             => WP_REST_Server::READABLE,
    301301                'permission_callback' => array( $this, 'logged_in_or_has_api_key' ),
    302302                'callback'            => array( $this, 'get_guides' ),
     
    308308            'account/sync',
    309309            array(
    310                 'methods'             => 'POST',
     310                'methods'             => WP_REST_Server::CREATABLE,
    311311                'permission_callback' => array( $this, 'logged_in_or_has_api_key' ),
    312312                'callback'            => array( $this, 'sync_account' ),
  • optinmonster/trunk/OMAPI/Urls.php

    r2812343 r2859273  
    5858    public static function templates( $args = array() ) {
    5959        return self::om_admin( 'templates', $args );
     60    }
     61
     62    /**
     63     * Get the playbooks url.
     64     *
     65     * @since 2.12.0
     66     *
     67     * @param  array $args Array of query args.
     68     *
     69     * @return string
     70     */
     71    public static function playbooks( $args = array() ) {
     72        return self::om_admin( 'playbooks', $args );
    6073    }
    6174
  • optinmonster/trunk/OMAPI/WPForms/RestApi.php

    r2769517 r2859273  
    3131            'wpforms/forms',
    3232            array(
    33                 'methods'             => 'GET',
     33                'methods'             => WP_REST_Server::READABLE,
    3434                'permission_callback' => array( $this, 'logged_in_or_has_api_key' ),
    3535                'callback'            => array( $this, 'forms' ),
  • optinmonster/trunk/OMAPI/WooCommerce.php

    r2784339 r2859273  
    744744            return array();
    745745        }
     746
     747        // Initialize the cart.
     748        wc_load_cart();
    746749
    747750        // Bail if we don't have a cart object.
  • optinmonster/trunk/OMAPI/WooCommerce/RestApi.php

    r2758201 r2859273  
    3232            'woocommerce/autogenerate',
    3333            array(
    34                 'methods'             => 'POST',
     34                'methods'             => WP_REST_Server::CREATABLE,
    3535                'permission_callback' => array( $this, 'can_update_settings' ),
    3636                'callback'            => array( $this, 'autogenerate' ),
     
    4242            'woocommerce/save',
    4343            array(
    44                 'methods'             => 'POST',
     44                'methods'             => WP_REST_Server::CREATABLE,
    4545                'permission_callback' => array( $this, 'can_update_settings' ),
    4646                'callback'            => array( $this, 'save' ),
     
    5252            'woocommerce/disconnect',
    5353            array(
    54                 'methods'             => 'POST',
     54                'methods'             => WP_REST_Server::CREATABLE,
    5555                'permission_callback' => array( $this, 'can_update_settings' ),
    5656                'callback'            => array( $this, 'disconnect' ),
     
    6262            'woocommerce/key',
    6363            array(
    64                 'methods'             => 'GET',
     64                'methods'             => WP_REST_Server::READABLE,
    6565                'permission_callback' => array( $this, 'logged_in_and_can_access_route' ),
    6666                'callback'            => array( $this, 'get_key' ),
     67            )
     68        );
     69
     70        register_rest_route(
     71            $this->namespace,
     72            'woocommerce/display-rules',
     73            array(
     74                'methods'             => WP_REST_Server::READABLE,
     75                'permission_callback' => '__return_true',
     76                'callback'            => array( $this, 'get_display_rules_info' ),
    6777            )
    6878        );
     
    250260        }
    251261    }
     262
     263    /**
     264     * Retrieves the WooCommerce cart data for display rules.
     265     *
     266     * Route: GET omapp/v1/woocommerce/display-rules
     267     *
     268     * @since 2.12.0
     269     *
     270     * @param WP_REST_Request $request The REST Request.
     271     *
     272     * @return WP_REST_Response The API Response
     273     */
     274    public function get_display_rules_info( $request ) {
     275        return new WP_REST_Response(
     276            $this->base->woocommerce->get_cart(),
     277            200
     278        );
     279    }
    252280}
  • optinmonster/trunk/assets/dist/css/common.min.css

    r2850643 r2859273  
    1 .om-notifications-count{position:relative}.omapi-box{margin:30px 30px;padding:30px;background:#fff;border:1px solid #ddd;line-height:2}.omapi-box--flex{display:flex;flex-wrap:wrap}.omapi-box__half{width:50%;min-width:400px}.omapi-box__image{width:100%}.omapi-box__image img{display:block;width:400px;margin:0 auto;border-radius:5px}.omapi-box__image-subtitle{margin-top:10px;line-height:1.3;color:#41495b;text-align:center}.omapi-screen #wpcontent{padding:0 0 40px}.omapi-screen .omapi-static-banner{background:#0d82df;height:80px;line-height:1;margin-left:-20px}.omapi-static-banner .logo-wrapper{padding:12px 0;line-height:1;display:inline-block}.omapi-static-banner .omapi-svg-logo{height:24px;width:159px}.omapi-static-banner .inner-container{height:80px;padding:0 40px;display:flex;align-items:center;justify-content:space-between}.omapi-plugin-banner{background-color:#087ce1;display:flex;align-items:center;height:74px}.omapi-plugin-banner__wrapper{padding:22px 40px;display:flex;justify-content:space-between;align-items:center;width:100%}.omapi-plugin-banner__logo{display:flex;align-items:flex-end;color:#fff}.omapi-plugin-banner__logo img{width:164px;margin-right:13px}.omapi-plugin-banner__page{font-size:18px;line-height:130%}.omapi-plugin-banner__icons{display:flex;margin:0}.omapi-plugin-banner__icons>li{margin:0}.omapi-plugin-banner__icons>li>a,.omapi-plugin-banner__icons>li>button{color:#fff}.omapi-plugin-banner__icon{margin:0 0 0 20px;cursor:pointer}.logo-wrapper span.omapi-logo-version{color:#fff;vertical-align:middle;margin-bottom:10px;margin-left:5px;display:inline-block}.omapi-app #wpbody-content>.notice{margin:15px 40px 5px}.omapi-screen .static-menu{float:right}.omapi-screen .static-menu>ul{display:flex;align-items:center;justify-content:center;margin:0;padding:0}.omapi-screen .static-menu>ul>li{margin:0;padding:0}.omapi-screen .static-menu>ul>li .static-menu-item{cursor:pointer;text-decoration:none;color:#fff;font-size:13px;font-weight:400;letter-spacing:.04em;padding:13px;padding:9px;margin:4px;display:block}.omapi-screen .static-menu>ul>li .static-menu-item:focus{outline:0;box-shadow:0px 0px 12px rgba(255,255,255,.32)}.omapi-screen .static-menu>ul>li .static-menu-item:focus>*{outline:0;box-shadow:none}.unbutton{-webkit-appearance:none;border:inherit;padding:inherit;background-color:inherit;width:inherit;color:inherit}.om-archie-loading{display:flex;align-items:center;justify-content:center;margin-top:50px}.om-archie-loading svg{max-width:200px}.om-archie-loading circle{animation:2s linear infinite circle-animation;display:block;fill:rgba(0,0,0,0);stroke:#858b98;stroke-dasharray:157;stroke-width:2;transform-origin:50% 50%}@keyframes circle-animation{0%{stroke-dashoffset:33;transform:rotate(0deg)}50%{stroke-dashoffset:157;transform:rotate(720deg)}100%{stroke-dashoffset:33;transform:rotate(1080deg)}}.om-circle-loading{background:url(../../css/images/icons/loading-circle.svg) no-repeat center;background-size:60px;height:60px;margin:20px}.transitioning{background:url(../../css/images/icons/loading-circle.svg) no-repeat center 100px;background-size:60px}.transitioning>*{transition:opacity .2s;opacity:0}
     1.om-notifications-count{position:relative}.omapi-box{margin:30px 30px;padding:30px;background:#fff;border:1px solid #ddd;line-height:2}.omapi-box--flex{display:flex;flex-wrap:wrap}.omapi-box__half{width:50%;min-width:400px}.omapi-box__image{width:100%}.omapi-box__image img{display:block;width:400px;margin:0 auto;border-radius:5px}.omapi-box__image-subtitle{margin-top:10px;line-height:1.3;color:#41495b;text-align:center}.omapi-screen #wpcontent{padding:0 0 40px}.omapi-screen .omapi-static-banner{background:#0d82df;height:80px;line-height:1;margin-left:-20px}.omapi-static-banner .logo-wrapper{padding:12px 0;line-height:1;display:inline-block}.omapi-static-banner .omapi-svg-logo{height:24px;width:159px}.omapi-static-banner .inner-container{height:80px;padding:0 40px;display:flex;align-items:center;justify-content:space-between}.omapi-plugin-banner{background-color:#087ce1;display:flex;align-items:center;height:74px}.omapi-plugin-banner__wrapper{padding:22px 40px;display:flex;justify-content:space-between;align-items:center;width:100%}.omapi-plugin-banner__logo{display:flex;align-items:flex-end;color:#fff}.omapi-plugin-banner__logo img{width:164px;margin-right:13px}.omapi-plugin-banner__page{font-size:18px;line-height:130%}.omapi-plugin-banner__icons{display:flex;margin:0}.omapi-plugin-banner__icons>li{margin:0}.omapi-plugin-banner__icons>li>a,.omapi-plugin-banner__icons>li>button{color:#fff}.omapi-plugin-banner__icon{margin:0 0 0 20px;cursor:pointer}.logo-wrapper span.omapi-logo-version{color:#fff;vertical-align:middle;margin-bottom:10px;margin-left:5px;display:inline-block}.omapi-app #wpbody-content>.notice{margin:15px 40px 5px}.omapi-screen .static-menu{float:right}.omapi-screen .static-menu>ul{display:flex;align-items:center;justify-content:center;margin:0;padding:0}.omapi-screen .static-menu>ul>li{margin:0;padding:0}.omapi-screen .static-menu>ul>li .static-menu-item{cursor:pointer;text-decoration:none;color:#fff;font-size:13px;font-weight:400;letter-spacing:.04em;padding:13px;padding:9px;margin:4px;display:block}.omapi-screen .static-menu>ul>li .static-menu-item:focus{outline:0;box-shadow:0px 0px 12px rgba(255,255,255,.32)}.omapi-screen .static-menu>ul>li .static-menu-item:focus>*{outline:0;box-shadow:none}.unbutton{-webkit-appearance:none;border:inherit;padding:inherit;background-color:inherit;width:inherit;color:inherit}.om-archie-loading{display:flex;align-items:center;justify-content:center;margin-top:50px}.om-archie-loading svg{max-width:200px}.om-archie-loading circle{animation:2s linear infinite circle-animation;display:block;fill:rgba(0,0,0,0);stroke:#858b98;stroke-dasharray:157;stroke-width:2;transform-origin:50% 50%}@keyframes circle-animation{0%{stroke-dashoffset:33;transform:rotate(0deg)}50%{stroke-dashoffset:157;transform:rotate(720deg)}100%{stroke-dashoffset:33;transform:rotate(1080deg)}}.om-circle-loading{background:url(../../css/images/icons/loading-circle.svg) no-repeat center;background-size:60px;height:60px;margin:20px}.transitioning{background:url(../../css/images/icons/loading-circle.svg) no-repeat center 100px;background-size:60px}.transitioning>*{transition:opacity .2s;opacity:0}.omapi-menu-new{background:#3fa548;color:#fff;font-size:10px;border-radius:3px;padding:3px;text-transform:uppercase}
  • optinmonster/trunk/optin-monster-wp-api.php

    r2850643 r2859273  
    66 * Author:      OptinMonster Popup Builder Team
    77 * Author URI:  https://optinmonster.com
    8  * Version:     2.11.2
     8 * Version:     2.12.0
    99 * Text Domain: optin-monster-api
    1010 * Domain Path: languages
     
    6767     * @var string
    6868     */
    69     public $version = '2.11.2';
     69    public $version = '2.12.0';
    7070
    7171    /**
  • optinmonster/trunk/readme.txt

    r2850643 r2859273  
    55Tested up to: 6.1
    66Requires PHP: 5.3
    7 Stable tag: 2.11.2
     7Stable tag: 2.12.0
    88License: GNU General Public License v2.0 or later
    99
     
    462462**Most Recent Changes:**
    463463
     464= Popup Builder 2.12.0 =
     465* Fixed wp_enqueue_script error on widgets page.
     466* Addresses issues with page caching by fetching rules data for Easy Digital Downloads and WooCommerce via ajax.
     467* Small improvements to onbaording
     468* Updated bundled version of Vue and related dependencies to address some security scanners.
     469* Introduced Playbooks to the plugin
     470
    464471= Popup Builder 2.11.2 =
    465472* Fixed issue where plain-text shortcode output could be parsed by search engines.
  • optinmonster/trunk/vue/dist/manifest.json

    r2850643 r2859273  
    11{
    2     "about.css": "/css/about.d1485509.css",
    3     "about.js": "/js/about.19b960a9.js",
    4     "about.js.map": "/js/about.19b960a9.js.map",
    5     "app.js": "/wp-om-app-41fa8fcc.js",
    6     "app.js.map": "/wp-om-app-41fa8fcc.js.map",
    7     "campaign-edit.css": "/css/campaign-edit.197e7e3a.css",
    8     "campaign-edit.js": "/js/campaign-edit.0984a155.js",
    9     "campaign-edit.js.map": "/js/campaign-edit.0984a155.js.map",
    10     "campaigns.css": "/css/campaigns.89824908.css",
    11     "campaigns.js": "/js/campaigns.1c033ca2.js",
    12     "campaigns.js.map": "/js/campaigns.1c033ca2.js.map",
    13     "common.css": "/css/common.6ac52745.css",
    14     "common.js": "/js/common.04b0dc70.js",
    15     "common.js.map": "/js/common.04b0dc70.js.map",
    16     "connect.js": "/js/connect.b5da6291.js",
    17     "connect.js.map": "/js/connect.b5da6291.js.map",
    18     "dashboard.css": "/css/dashboard.ce24d1b7.css",
    19     "dashboard.js": "/js/dashboard.75020e53.js",
    20     "dashboard.js.map": "/js/dashboard.75020e53.js.map",
     2    "about.css": "/css/about.573e0e35.css",
     3    "about.js": "/js/about.e510c43b.js",
     4    "about.js.map": "/js/about.e510c43b.js.map",
     5    "app.js": "/wp-om-app-89571f61.js",
     6    "app.js.map": "/wp-om-app-89571f61.js.map",
     7    "campaign-edit.css": "/css/campaign-edit.c5102a65.css",
     8    "campaign-edit.js": "/js/campaign-edit.62fbd055.js",
     9    "campaign-edit.js.map": "/js/campaign-edit.62fbd055.js.map",
     10    "campaigns.css": "/css/campaigns.e713cf50.css",
     11    "campaigns.js": "/js/campaigns.97db78bd.js",
     12    "campaigns.js.map": "/js/campaigns.97db78bd.js.map",
     13    "common.css": "/css/common.63e3f1f4.css",
     14    "common.js": "/js/common.55ca48a3.js",
     15    "common.js.map": "/js/common.55ca48a3.js.map",
     16    "connect.js": "/js/connect.4ec4c163.js",
     17    "connect.js.map": "/js/connect.4ec4c163.js.map",
     18    "dashboard.css": "/css/dashboard.06f1c35c.css",
     19    "dashboard.js": "/js/dashboard.37c334cd.js",
     20    "dashboard.js.map": "/js/dashboard.37c334cd.js.map",
    2121    "fonts/element-icons.ttf": "/fonts/element-icons.732389de.ttf",
    2222    "fonts/element-icons.woff": "/fonts/element-icons.535877f5.woff",
     
    8080    "img/outbound.svg": "/img/outbound.753654a1.svg",
    8181    "img/play-icon.svg": "/img/play-icon.5eacb21c.svg",
     82    "img/playbooks-limit-exceeded.png": "/img/playbooks-limit-exceeded.920b9499.png",
    8283    "img/popup-icon.svg": "/img/popup-icon.e4f71c68.svg",
    8384    "img/rating.svg": "/img/rating.9d148e32.svg",
     
    101102    "img/white-right-arrow.svg": "/img/white-right-arrow.1fd68bed.svg",
    102103    "img/youtube.svg": "/img/youtube.202220b6.svg",
    103     "integrations.css": "/css/integrations.2586b596.css",
    104     "integrations.js": "/js/integrations.a7ee0b3d.js",
    105     "integrations.js.map": "/js/integrations.a7ee0b3d.js.map",
    106     "monsterleads.css": "/css/monsterleads.9b6ec4a2.css",
    107     "monsterleads.js": "/js/monsterleads.4d8ff778.js",
    108     "monsterleads.js.map": "/js/monsterleads.4d8ff778.js.map",
    109     "onboarding-wizard.css": "/css/onboarding-wizard.ffcaae7a.css",
    110     "onboarding-wizard.js": "/js/onboarding-wizard.e8d159cc.js",
    111     "onboarding-wizard.js.map": "/js/onboarding-wizard.e8d159cc.js.map",
    112     "personalization.css": "/css/personalization.614363ee.css",
    113     "personalization.js": "/js/personalization.c4768d9a.js",
    114     "personalization.js.map": "/js/personalization.c4768d9a.js.map",
    115     "settings.css": "/css/settings.4837c79a.css",
    116     "settings.js": "/js/settings.0d39014a.js",
    117     "settings.js.map": "/js/settings.0d39014a.js.map",
    118     "temp.css": "/css/temp.0966b502.css",
    119     "temp.js": "/js/temp.6b209a61.js",
    120     "temp.js.map": "/js/temp.6b209a61.js.map",
    121     "templates.css": "/css/templates.6e00bef5.css",
    122     "templates.js": "/js/templates.a582635c.js",
    123     "templates.js.map": "/js/templates.a582635c.js.map",
    124     "university.css": "/css/university.1087f89c.css",
    125     "university.js": "/js/university.61cb62e6.js",
    126     "university.js.map": "/js/university.61cb62e6.js.map"
     104    "integrations.css": "/css/integrations.c2747832.css",
     105    "integrations.js": "/js/integrations.e1c95980.js",
     106    "integrations.js.map": "/js/integrations.e1c95980.js.map",
     107    "monsterleads.css": "/css/monsterleads.70434c02.css",
     108    "monsterleads.js": "/js/monsterleads.b674494b.js",
     109    "monsterleads.js.map": "/js/monsterleads.b674494b.js.map",
     110    "onboarding-wizard.css": "/css/onboarding-wizard.6e7013f7.css",
     111    "onboarding-wizard.js": "/js/onboarding-wizard.2be40ddc.js",
     112    "onboarding-wizard.js.map": "/js/onboarding-wizard.2be40ddc.js.map",
     113    "personalization.css": "/css/personalization.2ddffe3b.css",
     114    "personalization.js": "/js/personalization.4ba09eec.js",
     115    "personalization.js.map": "/js/personalization.4ba09eec.js.map",
     116    "playbooks.css": "/css/playbooks.49ce5d72.css",
     117    "playbooks.js": "/js/playbooks.a4164f53.js",
     118    "playbooks.js.map": "/js/playbooks.a4164f53.js.map",
     119    "settings.css": "/css/settings.87112f6a.css",
     120    "settings.js": "/js/settings.1365eaca.js",
     121    "settings.js.map": "/js/settings.1365eaca.js.map",
     122    "temp.css": "/css/temp.6c2fb77b.css",
     123    "temp.js": "/js/temp.98183d2c.js",
     124    "temp.js.map": "/js/temp.98183d2c.js.map",
     125    "templates.css": "/css/templates.9c7f8497.css",
     126    "templates.js": "/js/templates.eaea8ca9.js",
     127    "templates.js.map": "/js/templates.eaea8ca9.js.map",
     128    "university.css": "/css/university.cbb2a098.css",
     129    "university.js": "/js/university.d4db1e47.js",
     130    "university.js.map": "/js/university.d4db1e47.js.map"
    127131}
Note: See TracChangeset for help on using the changeset viewer.