Changeset 356312
- Timestamp:
- 10/30/2026 01:25:15 PM (23 hours ago)
- Location:
- skin-care-solutions/1.4.2
- Files:
-
- 13 edited
- 1 copied
-
. (copied) (copied from skin-care-solutions/1.4.1 )
-
classes/class-svg-icons.php (modified) (1 diff)
-
functions.php (modified) (5 diffs)
-
inc/custom-functions.php (modified) (1 diff)
-
inc/homepage-setup/assets/css/homepage-setup-style.css (modified) (1 diff)
-
inc/homepage-setup/assets/js/homepage-setup-script.js (modified) (1 diff)
-
inc/homepage-setup/homepage-setup-contents.php (modified) (26 diffs)
-
inc/homepage-setup/homepage-setup-settings.php (modified) (2 diffs)
-
inc/homepage-setup/tgm/class-tgm-plugin-activation.php (modified) (8 diffs)
-
inc/metabox.php (modified) (1 diff)
-
languages/skin-care-solutions.pot (modified) (3 diffs)
-
lib/breadcrumbs/breadcrumbs.php (modified) (1 diff)
-
readme.txt (modified) (3 diffs)
-
style.css (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
skin-care-solutions/1.4.2/classes/class-svg-icons.php
r354504 r356312 99 99 ), 100 100 'wp' => array( 101 ' wordpress.com',102 ' wordpress.org',101 'WordPress.com', 102 'WordPress.org', 103 103 ), 104 104 ); -
skin-care-solutions/1.4.2/functions.php
r354504 r356312 83 83 } 84 84 if (! defined( 'SKIN_CARE_SOLUTIONS_SUPPORT_FREE' ) ){ 85 define('SKIN_CARE_SOLUTIONS_SUPPORT_FREE',__('https:// wordpress.org/support/theme/skin-care-solutions/','skin-care-solutions'));85 define('SKIN_CARE_SOLUTIONS_SUPPORT_FREE',__('https://WordPress.org/support/theme/skin-care-solutions/','skin-care-solutions')); 86 86 } 87 87 if (! defined( 'SKIN_CARE_SOLUTIONS_REVIEW_FREE' ) ){ 88 define('SKIN_CARE_SOLUTIONS_REVIEW_FREE',__('https:// wordpress.org/support/theme/skin-care-solutions/reviews/#new-post/','skin-care-solutions'));88 define('SKIN_CARE_SOLUTIONS_REVIEW_FREE',__('https://WordPress.org/support/theme/skin-care-solutions/reviews/#new-post/','skin-care-solutions')); 89 89 } 90 90 if (! defined( 'SKIN_CARE_SOLUTIONS_DEMO_PRO' ) ){ … … 96 96 if (! defined( 'SKIN_CARE_SOLUTIONS_BUNDLE_BUTTON' ) ){ 97 97 define('SKIN_CARE_SOLUTIONS_BUNDLE_BUTTON',__('https://www.omegathemes.com/products/wp-theme-bundle','skin-care-solutions')); 98 } 99 if (! defined( 'SKIN_CARE_SOLUTIONS_HIRE_EXPERT' ) ){ 100 define('SKIN_CARE_SOLUTIONS_HIRE_EXPERT',__('https://www.omegathemes.com/pages/contact','skin-care-solutions')); 98 101 } 99 102 … … 263 266 // NOTICE FUNCTION 264 267 265 function skin_care_solutions_admin_notice() { 266 global $pagenow; 267 $theme_args = wp_get_theme(); 268 $meta = get_option( 'skin_care_solutions_admin_notice' ); 269 $name = $theme_args->get( 'Name' ); 270 $current_screen = get_current_screen(); 271 272 if ( ! $meta ) { 273 if ( is_network_admin() ) { 274 return; 275 } 276 277 if ( ! current_user_can( 'manage_options' ) ) { 278 return; 279 } 280 281 if ( $current_screen->base != 'appearance_page_skincaresolutions-wizard' ) { 282 ?> 283 <div class="notice notice-success notice-content"> 284 <h2><?php esc_html_e('Welcome! Thank you for choosing Skin Care Solutions. Let’s Set Up Your Website!', 'skin-care-solutions') ?> </h2> 285 <p><?php esc_html_e('Before you dive into customization, let’s go through a quick setup process to ensure everything runs smoothly. Click below to start setting up your website in minutes!', 'skin-care-solutions') ?> </p> 286 <div class="info-link"> 287 <a href="<?php echo esc_url( admin_url( 'themes.php?page=skincaresolutions-wizard' ) ); ?>"><?php esc_html_e('Get Started with Skin Care Solutions', 'skin-care-solutions'); ?></a> 288 <a href="#" class="notice-bundle" id="bundleTrigger"><?php esc_html_e('Get All WP Themes', 'skin-care-solutions'); ?></a> 289 <div class="bundle-overlay" id="bundlePopup"> 290 <div class="bundle-modal"> 291 <span class="close-popup">×</span> 292 <div class="sale-badge"><?php esc_html_e('🔥 MEGA SALE', 'skin-care-solutions'); ?></div> 293 <h2><?php esc_html_e('Unlock All Premium WP Themes', 'skin-care-solutions'); ?></h2> 294 <p> <?php esc_html_e('Unlock the Full Potential of Your Website with Our 70+ WordPress Themes Bundle', 'skin-care-solutions'); ?></p> 295 <ul> 296 <li><?php esc_html_e('✔ Expert Support', 'skin-care-solutions'); ?></li> 297 <li><?php esc_html_e('✔ Premium Theme ZIP File', 'skin-care-solutions'); ?></li> 298 <li><?php esc_html_e('✔ Ready-to-Use Website Templates', 'skin-care-solutions'); ?></li> 299 <li><?php esc_html_e('✔ Demo Content (Included in the file)', 'skin-care-solutions'); ?></li> 300 <li><?php esc_html_e('✔ Access to the Premium Support Forum', 'skin-care-solutions'); ?></li> 301 </ul> 302 <a href="<?php echo esc_url( SKIN_CARE_SOLUTIONS_BUNDLE_BUTTON ); ?>" target="_blank" class="bundle-cta"><?php esc_html_e('Get the Bundle Now →', 'skin-care-solutions'); ?></a> 303 </div> 304 </div> 305 </div> 306 <p class="dismiss-link"><strong><a href="?skin_care_solutions_admin_notice=1"><?php esc_html_e( 'Dismiss', 'skin-care-solutions' ); ?></a></strong></p> 268 /** 269 * Whether the welcome notice should be shown on the current admin screen. 270 */ 271 function skin_care_solutions_show_admin_notice() { 272 if ( get_option( 'skin_care_solutions_admin_notice' ) || is_network_admin() || ! current_user_can( 'manage_options' ) ) { 273 return false; 274 } 275 276 $skin_care_solutions_current_screen = function_exists( 'get_current_screen' ) ? get_current_screen() : null; 277 if ( $skin_care_solutions_current_screen && 'appearance_page_skincaresolutions-wizard' === $skin_care_solutions_current_screen->base ) { 278 return false; 279 } 280 281 // Once every setup step is done the notice only stays on the Dashboard. 282 if ( skin_care_solutions_setup_is_complete() ) { 283 return $skin_care_solutions_current_screen && 'dashboard' === $skin_care_solutions_current_screen->base; 284 } 285 286 return true; 287 } 288 289 /** 290 * Whether every Getting Started step is done. 291 */ 292 function skin_care_solutions_setup_is_complete() { 293 return function_exists( 'skin_care_solutions_get_setup_progress' ) && ! in_array( false, skin_care_solutions_get_setup_progress(), true ); 294 } 295 296 function skin_care_solutions_admin_notice() { 297 if ( ! skin_care_solutions_show_admin_notice() ) { 298 return; 299 } 300 301 $skin_care_solutions_theme_args = wp_get_theme(); 302 $skin_care_solutions_name = $skin_care_solutions_theme_args->get( 'Name' ); 303 $skin_care_solutions_progress = function_exists( 'skin_care_solutions_get_setup_progress' ) ? skin_care_solutions_get_setup_progress() : array(); 304 $skin_care_solutions_done = count( array_filter( $skin_care_solutions_progress ) ); 305 $skin_care_solutions_total = max( 1, count( $skin_care_solutions_progress ) ); 306 $skin_care_solutions_complete = skin_care_solutions_setup_is_complete(); 307 $skin_care_solutions_dismiss_url = wp_nonce_url( add_query_arg( 'skin_care_solutions_admin_notice', '1' ), 'skin_care_solutions_dismiss_notice' ); 308 ?> 309 <div class="notice omg-notice<?php echo $skin_care_solutions_complete ? ' omg-notice--complete' : ''; ?>" data-nonce="<?php echo esc_attr( wp_create_nonce( 'skin_care_solutions_dismiss_notice' ) ); ?>"> 310 <div class="omg-notice__media"> 311 <img src="<?php echo esc_url( get_template_directory_uri() . '/screenshot.png' ); ?>" alt="<?php echo esc_attr( $skin_care_solutions_name ); ?>"> 312 </div> 313 <div class="omg-notice__body"> 314 <p class="omg-notice__eyebrow"> 315 <?php 316 if ( $skin_care_solutions_complete ) { 317 /* translators: %s: theme name */ 318 printf( esc_html__( '%s setup complete', 'skin-care-solutions' ), esc_html( $skin_care_solutions_name ) ); 319 } else { 320 /* translators: %s: theme name */ 321 printf( esc_html__( 'Thanks for choosing %s', 'skin-care-solutions' ), esc_html( $skin_care_solutions_name ) ); 322 } 323 ?> 324 </p> 325 <?php if ( $skin_care_solutions_complete ) : ?> 326 <h2 class="omg-notice__title"><?php esc_html_e( 'Your store is ready', 'skin-care-solutions' ); ?></h2> 327 <p class="omg-notice__text"><?php esc_html_e( 'Every setup step is done. Add your products, fine-tune the design in the Customizer, or unlock more layouts with Pro.', 'skin-care-solutions' ); ?></p> 328 <?php else : ?> 329 <h2 class="omg-notice__title"><?php esc_html_e( 'Let’s set up your store in a few minutes', 'skin-care-solutions' ); ?></h2> 330 <p class="omg-notice__text"><?php esc_html_e( 'Install the recommended plugins, import the demo and make it yours, all from one Getting Started page.', 'skin-care-solutions' ); ?></p> 331 <?php endif; ?> 332 <div class="omg-notice__progress"> 333 <span class="omg-progress"><span class="omg-progress__bar" style="width: <?php echo esc_attr( max( 3, round( $skin_care_solutions_done / $skin_care_solutions_total * 100 ) ) ); ?>%"></span></span> 334 <span class="omg-notice__count"> 335 <?php 336 /* translators: 1: steps done, 2: total steps */ 337 printf( esc_html__( '%1$s of %2$s steps done', 'skin-care-solutions' ), esc_html( $skin_care_solutions_done ), esc_html( $skin_care_solutions_total ) ); 338 ?> 339 </span> 307 340 </div> 308 <?php 309 } 310 } 341 <div class="omg-notice__actions"> 342 <?php if ( $skin_care_solutions_complete ) : ?> 343 <a class="omg-btn omg-btn--primary" href="<?php echo esc_url( admin_url( 'themes.php?page=skincaresolutions-wizard' ) ); ?>"><?php esc_html_e( 'Getting Started', 'skin-care-solutions' ); ?></a> 344 <a class="omg-btn omg-btn--outline" href="<?php echo esc_url( home_url( '/' ) ); ?>" target="_blank"><?php esc_html_e( 'View your site', 'skin-care-solutions' ); ?></a> 345 <a class="omg-btn omg-btn--outline" href="<?php echo esc_url( admin_url( 'customize.php' ) ); ?>"><?php esc_html_e( 'Customize', 'skin-care-solutions' ); ?></a> 346 <?php else : ?> 347 <a class="omg-btn omg-btn--primary" href="<?php echo esc_url( admin_url( 'themes.php?page=skincaresolutions-wizard&omg-focus=1' ) ); ?>"><?php echo $skin_care_solutions_done ? esc_html__( 'Continue setup', 'skin-care-solutions' ) : esc_html__( 'Get started', 'skin-care-solutions' ); ?></a> 348 <?php endif; ?> 349 <a class="omg-btn omg-btn--premium" href="<?php echo esc_url( SKIN_CARE_SOLUTIONS_BUY_NOW ); ?>" target="_blank"><?php esc_html_e( 'Go To Premium', 'skin-care-solutions' ); ?></a> 350 <a class="omg-btn omg-btn--outline-pink" href="<?php echo esc_url( SKIN_CARE_SOLUTIONS_BUNDLE_BUTTON ); ?>" target="_blank"><?php esc_html_e( 'Get all WP themes for $69', 'skin-care-solutions' ); ?></a> 351 </div> 352 </div> 353 <a class="omg-notice__close" href="<?php echo esc_url( $skin_care_solutions_dismiss_url ); ?>" aria-label="<?php esc_attr_e( 'Dismiss this notice', 'skin-care-solutions' ); ?>"> 354 <svg viewBox="0 0 24 24" aria-hidden="true"><path d="M6 6l12 12M18 6L6 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"/></svg> 355 </a> 356 </div> 357 <?php 311 358 } 312 359 add_action( 'admin_notices', 'skin_care_solutions_admin_notice' ); … … 314 361 if ( ! function_exists( 'skin_care_solutions_update_admin_notice' ) ) : 315 362 /** 316 * Updating admin notice on dismiss 363 * Updating admin notice on dismiss (link fallback when JS is off) 317 364 */ 318 365 function skin_care_solutions_update_admin_notice() { 319 if ( isset( $_GET['skin_care_solutions_admin_notice'] ) && $_GET['skin_care_solutions_admin_notice'] == '1' ) { 366 if ( isset( $_GET['skin_care_solutions_admin_notice'] ) && '1' === $_GET['skin_care_solutions_admin_notice'] && current_user_can( 'manage_options' ) ) { 367 check_admin_referer( 'skin_care_solutions_dismiss_notice' ); 320 368 update_option( 'skin_care_solutions_admin_notice', true ); 369 wp_safe_redirect( remove_query_arg( array( 'skin_care_solutions_admin_notice', '_wpnonce' ) ) ); 370 exit; 321 371 } 322 372 } 323 373 endif; 324 374 add_action( 'admin_init', 'skin_care_solutions_update_admin_notice' ); 375 376 /** 377 * Dismiss the welcome notice over AJAX 378 */ 379 function skin_care_solutions_dismiss_admin_notice() { 380 check_ajax_referer( 'skin_care_solutions_dismiss_notice', 'nonce' ); 381 if ( ! current_user_can( 'manage_options' ) ) { 382 wp_send_json_error(); 383 } 384 update_option( 'skin_care_solutions_admin_notice', true ); 385 wp_send_json_success(); 386 } 387 add_action( 'wp_ajax_skin_care_solutions_dismiss_notice', 'skin_care_solutions_dismiss_admin_notice' ); 325 388 326 389 // After Switch theme function … … 330 393 } 331 394 395 332 396 add_filter( 'woocommerce_enable_setup_wizard', '__return_false' ); -
skin-care-solutions/1.4.2/inc/custom-functions.php
r354504 r356312 377 377 echo '<br>'; 378 378 echo esc_html__('Theme: ', 'skin-care-solutions') . '<a href="' . esc_url('https://www.omegathemes.com/products/free-skin-care-wordpress-theme') . '" title="' . esc_attr__('Skin Care Solutions', 'skin-care-solutions') . '" target="_blank"><span>' . esc_html__('Skin Care Solutions', 'skin-care-solutions') . '</span></a>' . esc_html__(' By ', 'skin-care-solutions') . ' <span>' . esc_html__('OMEGA ', 'skin-care-solutions') . '</span>'; 379 echo esc_html__('Powered by ', 'skin-care-solutions') . '<a href="' . esc_url('https:// wordpress.org') . '" title="' . esc_attr__('WordPress', 'skin-care-solutions') . '" target="_blank"><span>' . esc_html__('wordpress.', 'skin-care-solutions') . '</span></a>';379 echo esc_html__('Powered by ', 'skin-care-solutions') . '<a href="' . esc_url('https://WordPress.org') . '" title="' . esc_attr__('WordPress', 'skin-care-solutions') . '" target="_blank"><span>' . esc_html__('WordPress.', 'skin-care-solutions') . '</span></a>'; 380 380 ?> 381 381 </div> -
skin-care-solutions/1.4.2/inc/homepage-setup/assets/css/homepage-setup-style.css
r312863 r356312 1 .whizzie-wrap { 1 /*-------------------------------------------------------------- 2 # Getting Started page & welcome notice 3 # All selectors are prefixed with .omg- so they never touch core admin UI 4 --------------------------------------------------------------*/ 5 6 .omg-wrap, 7 .omg-notice { 8 --omg-ink: #111318; 9 --omg-text: #2b2f38; 10 --omg-muted: #555a69; 11 --omg-border: #e4e6ec; 12 --omg-surface: #ffffff; 13 --omg-soft: #f5f6f9; 14 --omg-blue: #2546e0; 15 --omg-blue-dark: #1b36b8; 16 --omg-blue-soft: #e8ecfd; 17 --omg-pink: #e3165b; 18 --omg-pink-dark: #c20f4b; 19 --omg-pink-soft: #fde8ef; 20 --omg-green: #12a150; 21 --omg-radius: 14px; 22 --omg-radius-sm: 9px; 23 --omg-shadow: 0 1px 2px rgba(17, 19, 24, .04), 0 6px 20px rgba(17, 19, 24, .04); 24 --omg-ease: cubic-bezier(.22, .8, .3, 1); 25 font-family: 'Plus Jakarta Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; 26 color: var(--omg-text); 27 font-weight: 500; 28 -webkit-font-smoothing: antialiased; 29 } 30 .omg-wrap *, 31 .omg-notice * { 32 box-sizing: border-box; 33 } 34 .omg-wrap { 35 margin: 24px 20px 0 0; 36 } 37 .omg-icon { 38 width: 1em; 39 height: 1em; 40 flex: none; 41 } 42 43 /* Buttons 44 --------------------------------------------- */ 45 .omg-btn { 46 display: inline-flex; 47 align-items: center; 48 justify-content: center; 49 gap: 6px; 50 min-height: 44px; 51 padding: 0 18px; 52 border: 1px solid transparent; 53 border-radius: var(--omg-radius-sm); 54 font-weight: 700; 55 font-size: 14px; 56 line-height: 1.2; 57 font-family: inherit; 58 text-decoration: none; 59 cursor: pointer; 60 transition: background-color .2s, border-color .2s, color .2s, transform .2s var(--omg-ease), box-shadow .2s; 61 } 62 .omg-btn:hover { 63 transform: translateY(-1px); 64 } 65 .omg-btn:active { 66 transform: translateY(0); 67 } 68 .omg-btn:focus-visible, 69 .omg-step__head:focus-visible, 70 .omg-code__copy:focus-visible, 71 .omg-chip:focus-visible, 72 .omg-links__item:focus-visible, 73 .omg-notice__close:focus-visible { 74 outline: 2px solid var(--omg-blue); 75 outline-offset: 2px; 76 box-shadow: none; 77 } 78 .omg-btn--primary { 79 background: var(--omg-blue); 80 color: #fff; 81 } 82 .omg-btn--primary:hover, 83 .omg-btn--primary:focus { 84 background: var(--omg-blue-dark); 85 color: #fff; 86 box-shadow: 0 6px 16px rgba(37, 70, 224, .25); 87 } 88 .omg-btn--dark { 89 background: var(--omg-ink); 90 color: #fff; 91 } 92 .omg-btn--dark:hover, 93 .omg-btn--dark:focus { 94 background: #000; 95 color: #fff; 96 } 97 .omg-btn--pink { 98 background: var(--omg-pink); 99 color: #fff; 100 } 101 .omg-btn--pink:hover, 102 .omg-btn--pink:focus { 103 background: var(--omg-pink-dark); 104 color: #fff; 105 box-shadow: 0 6px 16px rgba(227, 22, 91, .3); 106 } 107 .omg-btn--ghost, 108 .omg-btn--outline { 109 background: var(--omg-surface); 110 border-color: var(--omg-border); 111 color: var(--omg-ink); 112 } 113 .omg-btn--ghost:hover, 114 .omg-btn--ghost:focus, 115 .omg-btn--outline:hover, 116 .omg-btn--outline:focus { 117 border-color: var(--omg-ink); 118 color: var(--omg-ink); 119 } 120 .omg-btn--outline-pink { 121 background: var(--omg-surface); 122 border-color: var(--omg-pink); 123 color: var(--omg-pink); 124 } 125 .omg-btn--outline-pink:hover, 126 .omg-btn--outline-pink:focus { 127 background: var(--omg-pink); 128 color: #fff; 129 } 130 .omg-btn--block { 131 display: flex; 132 width: 100%; 133 } 134 .omg-btn[disabled], 135 .omg-btn.is-busy { 136 opacity: .65; 137 cursor: not-allowed; 138 transform: none; 139 box-shadow: none; 140 } 141 .omg-btn.is-busy::before { 142 content: ''; 143 width: 14px; 144 height: 14px; 145 border: 2px solid currentColor; 146 border-right-color: transparent; 147 border-radius: 50%; 148 animation: omg-spin .7s linear infinite; 149 } 150 .omg-link { 151 display: inline-flex; 152 align-items: center; 153 gap: 4px; 154 margin-top: 16px; 155 color: var(--omg-blue); 156 font-weight: 700; 157 text-underline-offset: 3px; 158 } 159 .omg-link .omg-icon { 160 transition: transform .2s var(--omg-ease); 161 } 162 .omg-link:hover .omg-icon { 163 transform: translateX(3px); 164 } 165 166 /* Header 167 --------------------------------------------- */ 168 .omg-header { 169 display: flex; 170 align-items: flex-end; 171 justify-content: space-between; 172 gap: 16px; 173 flex-wrap: wrap; 174 margin-bottom: 22px; 175 } 176 .omg-eyebrow { 177 margin: 0 0 6px; 178 color: var(--omg-muted); 179 font-size: 12px; 180 font-weight: 700; 181 letter-spacing: .08em; 182 text-transform: uppercase; 183 } 184 .omg-wrap .omg-title { 185 margin: 0; 186 padding: 0; 187 color: var(--omg-ink); 188 font-size: 30px; 189 font-weight: 800; 190 line-height: 1.15; 191 letter-spacing: -.02em; 192 } 193 .omg-header__actions { 194 display: flex; 195 gap: 10px; 196 } 197 .omg-wrap .wp-header-end { 198 margin: 0; 199 } 200 201 /* Layout & cards 202 --------------------------------------------- */ 203 .omg-layout { 204 display: grid; 205 grid-template-columns: 360px minmax(0, 1fr); 206 gap: 22px; 207 align-items: start; 208 } 209 .omg-main { 210 display: grid; 211 gap: 22px; 212 min-width: 0; 213 } 214 .omg-card { 215 position: relative; 216 background: var(--omg-surface); 217 border: 1px solid var(--omg-border); 218 border-radius: var(--omg-radius); 219 box-shadow: var(--omg-shadow); 220 padding: 24px; 221 } 222 .omg-wrap .omg-card__title { 223 margin: 0 0 18px; 224 color: var(--omg-ink); 225 font-size: 18px; 226 font-weight: 800; 227 } 228 .omg-wrap .omg-card { 229 animation: omg-rise .5s var(--omg-ease) both; 230 } 231 .omg-main > :nth-child(1) { animation-delay: .05s; } 232 .omg-promos > :nth-child(1) { animation-delay: .1s; } 233 .omg-promos > :nth-child(2) { animation-delay: .15s; } 234 .omg-info > :nth-child(1) { animation-delay: .2s; } 235 .omg-info > :nth-child(2) { animation-delay: .25s; } 236 237 /* Badges & kickers */ 238 .omg-badges { 239 display: flex; 240 gap: 8px; 241 margin-bottom: 14px; 242 } 243 .omg-badge { 244 padding: 4px 10px; 245 border-radius: 999px; 246 background: var(--omg-soft); 247 color: var(--omg-text); 248 font-size: 12px; 249 font-weight: 700; 250 } 251 .omg-badge--blue { 252 background: var(--omg-blue-soft); 253 color: var(--omg-blue); 254 } 255 .omg-kicker { 256 margin: 0 0 8px; 257 font-size: 12px; 258 font-weight: 800; 259 letter-spacing: .1em; 260 text-transform: uppercase; 261 } 262 .omg-kicker--pink { 263 color: var(--omg-pink); 264 } 265 266 /* Site setup card 267 --------------------------------------------- */ 268 .omg-setup__head { 269 display: flex; 270 align-items: baseline; 271 justify-content: space-between; 272 margin-bottom: 12px; 273 } 274 .omg-wrap .omg-setup__title { 275 margin: 0; 276 color: var(--omg-ink); 277 font-size: 18px; 278 font-weight: 800; 279 } 280 .omg-setup__count { 281 color: var(--omg-muted); 282 font-size: 13px; 283 } 284 .omg-setup__count b { 285 color: var(--omg-ink); 286 } 287 .omg-progress { 288 display: block; 289 height: 8px; 290 border-radius: 999px; 291 background: #eceef3; 292 overflow: hidden; 293 } 294 .omg-progress__bar { 295 display: block; 296 height: 100%; 297 border-radius: inherit; 298 background: var(--omg-blue); 299 transition: width .6s var(--omg-ease), background-color .3s; 300 } 301 .omg-setup.is-complete .omg-progress__bar { 302 background: var(--omg-green); 303 } 304 .omg-setup__intro { 305 margin: 14px 0 18px; 306 color: var(--omg-muted); 307 font-size: 13px; 308 line-height: 1.6; 309 } 310 .omg-setup__complete { 311 display: none; 312 align-items: center; 313 gap: 12px; 314 margin-bottom: 18px; 315 padding: 14px; 316 border-radius: var(--omg-radius-sm); 317 background: #e7f6ee; 318 color: #0b6b36; 319 font-size: 13px; 320 line-height: 1.45; 321 } 322 .omg-setup__complete strong { 323 display: block; 324 font-size: 14px; 325 } 326 .omg-setup__complete-icon { 327 display: grid; 328 place-items: center; 329 width: 34px; 330 height: 34px; 331 border-radius: 50%; 332 background: var(--omg-green); 333 color: #fff; 334 font-size: 18px; 335 flex: none; 336 } 337 .omg-setup.is-complete .omg-setup__complete { 338 display: flex; 339 animation: omg-rise .45s var(--omg-ease) both; 340 } 341 .omg-setup.is-complete .omg-setup__intro { 342 display: none; 343 } 344 345 /* Steps */ 346 .omg-wrap .omg-steps { 347 margin: 0; 348 padding: 0; 349 list-style: none; 350 } 351 .omg-wrap .omg-step { 352 position: relative; 353 margin: 0; 354 padding-bottom: 8px; 355 } 356 .omg-step:not(:last-child)::before { 357 content: ''; 358 position: absolute; 359 top: 40px; 360 bottom: 0; 361 left: 16px; 362 width: 2px; 363 background: var(--omg-border); 364 transition: background-color .4s; 365 } 366 .omg-step.is-done:not(:last-child)::before { 367 background: var(--omg-blue); 368 } 369 .omg-step__head { 370 display: flex; 371 align-items: flex-start; 372 gap: 14px; 373 width: 100%; 374 padding: 2px 0 8px; 375 border: 0; 376 background: none; 377 text-align: left; 378 font-family: inherit; 379 color: inherit; 380 cursor: pointer; 381 border-radius: var(--omg-radius-sm); 382 } 383 .omg-step__num { 384 position: relative; 385 display: grid; 386 place-items: center; 387 width: 34px; 388 height: 34px; 389 border: 2px solid var(--omg-border); 390 border-radius: 50%; 391 background: var(--omg-surface); 392 color: var(--omg-muted); 393 font-size: 13px; 394 font-weight: 800; 395 flex: none; 396 transition: border-color .3s, background-color .3s, color .3s, box-shadow .3s; 397 } 398 .omg-step__num .omg-icon { 399 position: absolute; 400 font-size: 16px; 2 401 opacity: 0; 402 transform: scale(.4); 403 transition: opacity .3s, transform .35s var(--omg-ease); 404 } 405 .omg-step__index { 406 transition: opacity .2s, transform .3s var(--omg-ease); 407 } 408 .omg-step.is-open .omg-step__num { 409 border-color: var(--omg-blue); 410 background: var(--omg-blue); 411 color: #fff; 412 box-shadow: 0 0 0 4px var(--omg-blue-soft); 413 } 414 .omg-step.is-done .omg-step__num { 415 border-color: var(--omg-blue); 416 background: var(--omg-blue); 417 color: #fff; 418 } 419 .omg-step.is-done .omg-step__num .omg-icon { 420 opacity: 1; 421 transform: scale(1); 422 } 423 .omg-step.is-done .omg-step__index { 424 opacity: 0; 425 transform: scale(.4); 426 } 427 .omg-step__text { 428 display: flex; 429 flex-direction: column; 430 gap: 2px; 431 padding-top: 6px; 432 } 433 .omg-step__title { 434 color: var(--omg-ink); 435 font-size: 15px; 436 font-weight: 700; 437 } 438 .omg-step__desc { 439 color: var(--omg-muted); 440 font-size: 12.5px; 441 } 442 .omg-step.is-done:not(.is-open) .omg-step__title { 443 color: var(--omg-muted); 444 } 445 446 /* Smooth open/close without measuring heights in JS */ 447 .omg-step__body { 448 display: grid; 449 grid-template-rows: 0fr; 450 opacity: 0; 451 transition: grid-template-rows .4s var(--omg-ease), opacity .3s; 452 } 453 .omg-step.is-open .omg-step__body { 454 grid-template-rows: 1fr; 455 opacity: 1; 456 } 457 .omg-step__inner { 458 min-height: 0; 459 overflow: hidden; 460 padding-left: 48px; 461 } 462 .omg-step.is-open .omg-step__inner { 463 padding-bottom: 14px; 464 } 465 .omg-step__note { 466 margin: 4px 0 12px; 467 color: var(--omg-muted); 468 font-size: 13px; 469 line-height: 1.55; 470 } 471 .omg-step__error { 472 margin: 0 0 10px; 473 padding: 10px 12px; 474 border-radius: var(--omg-radius-sm); 475 background: var(--omg-pink-soft); 476 color: var(--omg-pink-dark); 477 font-size: 12.5px; 478 line-height: 1.5; 479 } 480 .omg-skip { 481 display: block; 482 margin: 10px auto 0; 483 padding: 2px 4px; 484 border: 0; 485 background: none; 486 color: var(--omg-muted); 487 font-weight: 700; 488 font-size: 12.5px; 489 line-height: 1.4; 490 font-family: inherit; 491 text-decoration: underline; 492 text-underline-offset: 3px; 493 cursor: pointer; 494 } 495 .omg-skip:hover { 496 color: var(--omg-ink); 497 } 498 499 /* Plugins list */ 500 .omg-wrap .omg-plugins { 501 display: grid; 502 grid-template-columns: minmax(0, 1fr); 503 gap: 8px; 504 margin: 4px 0 12px; 505 padding: 0; 506 list-style: none; 507 } 508 .omg-wrap .omg-plugin { 509 display: flex; 510 align-items: center; 511 justify-content: space-between; 512 gap: 10px; 513 margin: 0; 514 padding: 10px 12px; 515 border: 1px solid var(--omg-border); 516 border-radius: var(--omg-radius-sm); 517 transition: border-color .2s, background-color .2s; 518 } 519 .omg-plugin:hover { 520 border-color: #cfd3dc; 521 } 522 .omg-plugin.is-working { 523 border-color: var(--omg-blue); 524 background: #f7f9ff; 525 } 526 .omg-plugin__label { 527 display: flex; 528 align-items: center; 529 gap: 10px; 530 min-width: 0; 531 flex: 1; 532 cursor: pointer; 533 } 534 .omg-wrap .omg-plugin__check { 535 margin: 0; 536 flex: none; 537 width: 18px; 538 height: 18px; 539 border-radius: 4px; 540 } 541 .omg-wrap .omg-plugin__check:checked { 542 background: var(--omg-blue); 543 border-color: var(--omg-blue); 544 } 545 .omg-wrap .omg-plugin__check:checked::before { 546 content: ''; 547 width: 10px; 548 height: 5px; 549 margin: 4px 0 0 3px; 550 border: solid #fff; 551 border-width: 0 0 2px 2px; 552 transform: rotate(-45deg); 553 float: none; 554 } 555 .omg-wrap .omg-plugin__check:disabled { 556 opacity: .7; 557 } 558 .omg-plugin__name { 559 color: var(--omg-ink); 560 font-size: 13.5px; 561 font-weight: 700; 562 overflow: hidden; 563 text-overflow: ellipsis; 564 white-space: nowrap; 565 } 566 .omg-plugin__status { 567 padding: 3px 9px; 568 border-radius: 999px; 569 font-size: 11.5px; 570 font-weight: 700; 571 white-space: nowrap; 572 flex: none; 573 } 574 .omg-plugin__status--required { 575 background: var(--omg-pink-soft); 576 color: var(--omg-pink); 577 } 578 .omg-plugin__status--optional, 579 .omg-plugin__status--working { 580 background: var(--omg-soft); 581 color: var(--omg-muted); 582 } 583 .omg-plugin__status--working { 584 color: var(--omg-blue); 585 background: var(--omg-blue-soft); 586 } 587 .omg-plugin__status--active { 588 background: #e7f6ee; 589 color: var(--omg-green); 590 } 591 .omg-plugin__status--failed { 592 background: var(--omg-pink-soft); 593 color: var(--omg-pink-dark); 594 } 595 596 /* Customize chips */ 597 .omg-chips { 598 display: grid; 599 grid-template-columns: 1fr 1fr; 600 gap: 8px; 601 margin: 4px 0 12px; 602 } 603 .omg-chip { 604 padding: 10px 12px; 605 border: 1px solid var(--omg-border); 606 border-radius: var(--omg-radius-sm); 607 color: var(--omg-ink); 608 font-size: 13px; 609 font-weight: 700; 610 text-decoration: none; 611 transition: border-color .2s, color .2s, background-color .2s; 612 } 613 .omg-chip:hover, 614 .omg-chip:focus { 615 border-color: var(--omg-blue); 616 background: #f7f9ff; 617 color: var(--omg-blue); 618 } 619 620 .omg-setup__help { 621 margin: 10px 0 0; 622 padding-top: 16px; 623 border-top: 1px solid var(--omg-border); 624 color: var(--omg-muted); 625 font-size: 13px; 626 line-height: 1.6; 627 } 628 .omg-setup__help a { 629 color: var(--omg-blue); 630 font-weight: 700; 631 } 632 633 /* Theme hero 634 --------------------------------------------- */ 635 .omg-hero { 636 display: grid; 637 grid-template-columns: minmax(0, 4fr) minmax(0, 1fr); 638 gap: 28px; 639 align-items: center; 640 } 641 .omg-wrap .omg-hero__title { 642 margin: 0 0 12px; 643 color: var(--omg-ink); 644 font-size: 28px; 645 font-weight: 800; 646 line-height: 1.15; 647 letter-spacing: -.02em; 648 } 649 .omg-hero__desc { 650 margin: 0 0 20px; 651 color: var(--omg-muted); 652 font-size: 14px; 653 line-height: 1.65; 654 } 655 .omg-hero__actions { 656 display: flex; 657 gap: 10px; 658 flex-wrap: wrap; 659 } 660 .omg-hero__media { 661 padding: 12px; 662 border-radius: var(--omg-radius); 663 background: var(--omg-soft); 664 border: 1px solid var(--omg-border); 665 overflow: hidden; 666 margin: 0 auto; 667 } 668 .omg-hero__media img { 669 display: block; 670 width: auto; 671 max-width: 100%; 672 height: 170px; 673 object-fit: cover; 674 border-radius: var(--omg-radius-sm); 675 box-shadow: 0 8px 24px rgba(17, 19, 24, .1); 676 transition: transform .6s var(--omg-ease); 677 text-align: right; 678 } 679 .omg-hero:hover .omg-hero__media img { 680 transform: scale(1.02); 681 } 682 683 /* Promo cards 684 --------------------------------------------- */ 685 .omg-promos, 686 .omg-info { 687 display: grid; 688 grid-template-columns: repeat(2, minmax(0, 1fr)); 689 gap: 22px; 690 } 691 .omg-pro, 692 .omg-bundle { 693 display: flex; 694 flex-direction: column; 695 padding: 28px; 696 overflow: hidden; 697 } 698 .omg-pro { 699 background: 700 radial-gradient(90% 70% at 0% 0%, rgba(123, 47, 247, .35), transparent 60%), 701 radial-gradient(80% 60% at 100% 100%, rgba(227, 22, 91, .28), transparent 60%), 702 var(--omg-ink); 703 border-color: var(--omg-ink); 704 color: #e8e9ee; 705 } 706 .omg-pro__ribbon { 707 position: absolute; 708 top: 26px; 709 right: -46px; 710 width: 180px; 711 padding: 7px 0; 712 background: var(--omg-pink); 713 color: #fff; 714 font-size: 12px; 715 font-weight: 800; 716 letter-spacing: .06em; 717 text-align: center; 718 text-transform: uppercase; 719 transform: rotate(40deg); 720 } 721 .omg-wrap .omg-pro__title, 722 .omg-wrap .omg-bundle__title { 723 margin: 0 0 18px; 724 font-size: 22px; 725 font-weight: 800; 726 line-height: 1.2; 727 letter-spacing: -.01em; 728 } 729 .omg-wrap .omg-pro__title { 730 max-width: 85%; 731 color: #fff; 732 } 733 .omg-wrap .omg-bundle__title { 734 color: var(--omg-ink); 735 } 736 .omg-pro__links { 737 display: grid; 738 grid-template-columns: repeat(3, minmax(0, 1fr)); 739 gap: 8px; 740 margin-bottom: 20px; 741 } 742 .omg-pro__link { 743 display: flex; 744 flex-direction: column; 745 align-items: center; 746 gap: 8px; 747 padding: 14px 8px; 748 border: 1px solid rgba(255, 255, 255, .1); 749 border-radius: var(--omg-radius-sm); 750 background: rgba(255, 255, 255, .04); 751 color: #fff; 752 font-size: 12.5px; 753 font-weight: 700; 754 line-height: 1.3; 755 text-align: center; 756 text-decoration: none; 757 transition: transform .25s var(--omg-ease), border-color .25s, background .25s; 758 } 759 .omg-pro__link .omg-icon { 760 width: 22px; 761 height: 22px; 762 color: var(--omg-pink); 763 } 764 .omg-pro__link:hover, 765 .omg-pro__link:focus { 766 border-color: var(--omg-pink); 767 background: rgba(255, 255, 255, .08); 768 color: #fff; 769 transform: translateY(-2px); 770 } 771 .omg-pro__previews { 772 display: grid; 773 grid-template-columns: repeat(3, minmax(0, 1fr)); 774 gap: 8px; 775 margin-bottom: 20px; 776 padding: 8px; 777 border: 1px solid rgba(255, 255, 255, .1); 778 border-radius: var(--omg-radius-sm); 779 background: rgba(255, 255, 255, .04); 780 } 781 .omg-pro__previews--single { 782 grid-template-columns: minmax(0, 1fr); 783 } 784 .omg-pro__previews--single .omg-pro__preview { 785 aspect-ratio: 3 / 2; 786 } 787 .omg-pro__previews--single .omg-pro__preview img { 788 object-fit: contain; 789 } 790 .omg-pro__preview { 3 791 position: relative; 4 border: none; 5 } 6 .whizzie-wrap.loaded { 7 max-width: 100% !important; 8 opacity: 1; 9 background: transparent; 10 } 11 .whizzie-menu .button-primary, .whizzie-menu .button-secondary, .whizzie-menu .button, .other_content .button{ 12 padding: 7px 26px; 13 font-size: 18px; 14 font-weight: 700; 15 } 16 .whizzie-wrap.spinning .step-loading { 792 display: block; 793 aspect-ratio: 4 / 3; 794 border: 1px solid rgba(255, 255, 255, .08); 795 border-radius: 6px; 796 background: #fff; 797 overflow: hidden; 798 transition: transform .25s var(--omg-ease), border-color .25s, box-shadow .25s; 799 } 800 .omg-pro__preview:hover, 801 .omg-pro__preview:focus { 802 border-color: var(--omg-pink); 803 transform: translateY(-2px); 804 box-shadow: 0 10px 22px rgba(0, 0, 0, .35); 805 } 806 .omg-pro__preview img { 807 display: block; 808 width: 100%; 809 height: 100%; 810 object-fit: cover; 811 object-position: top; 812 transition: transform .6s var(--omg-ease); 813 } 814 .omg-pro__preview:hover img { 815 transform: scale(1.06); 816 } 817 .omg-pro__preview-label { 818 position: absolute; 819 left: 6px; 820 bottom: 6px; 821 padding: 3px 8px; 822 border-radius: 999px; 823 background: rgba(17, 19, 24, .82); 824 color: #fff; 825 font-size: 10.5px; 826 font-weight: 700; 827 letter-spacing: .04em; 828 line-height: 1.3; 829 text-transform: uppercase; 830 } 831 .omg-wrap .omg-pro__price { 832 display: flex; 833 align-items: baseline; 834 flex-wrap: wrap; 835 gap: 4px 10px; 836 margin: 0 0 18px; 837 } 838 .omg-pro__price strong { 839 color: #fff; 840 font-size: 34px; 841 font-weight: 800; 842 line-height: 1; 843 letter-spacing: -.02em; 844 } 845 .omg-pro__price span { 846 color: #a7aab5; 847 font-size: 13px; 848 } 849 .omg-wrap .omg-checklist { 850 display: grid; 851 gap: 10px; 852 margin: 0 0 22px; 853 padding: 0; 854 list-style: none; 855 } 856 .omg-wrap .omg-checklist li { 857 display: flex; 858 align-items: center; 859 gap: 10px; 860 margin: 0; 861 font-size: 14px; 862 } 863 .omg-checklist .omg-icon { 864 color: var(--omg-pink); 865 font-size: 16px; 866 } 867 .omg-pro .omg-btn, 868 .omg-bundle .omg-btn { 869 margin-top: auto; 870 } 871 872 /* Coupon codes */ 873 .omg-code { 874 display: flex; 875 align-items: center; 876 flex-wrap: wrap; 877 gap: 10px; 878 margin-bottom: 24px; 879 } 880 .omg-code__label { 881 font-size: 13px; 882 color: #a7aab5; 883 } 884 .omg-wrap .omg-code__value { 885 padding: 7px 10px; 886 border: 1px dashed rgba(255, 255, 255, .55); 887 border-radius: 6px; 888 background: transparent; 889 color: #fff; 890 font-size: 13px; 891 font-weight: 700; 892 letter-spacing: .04em; 893 } 894 .omg-code__copy { 895 min-width: 64px; 896 padding: 7px 12px; 897 border: 1px solid rgba(255, 255, 255, .3); 898 border-radius: 6px; 899 background: transparent; 900 color: #fff; 901 font-weight: 700; 902 font-size: 13px; 903 line-height: 1.2; 904 font-family: inherit; 905 cursor: pointer; 906 transition: background-color .2s, border-color .2s, color .2s; 907 } 908 .omg-code__copy:hover { 909 border-color: #fff; 910 } 911 .omg-code__copy.is-copied { 912 background: var(--omg-green); 913 border-color: var(--omg-green); 914 color: #fff; 915 } 916 .omg-code--light .omg-code__label { 917 color: var(--omg-muted); 918 } 919 .omg-wrap .omg-code--light .omg-code__value { 920 border-color: var(--omg-pink); 921 color: var(--omg-pink); 922 } 923 .omg-code--light .omg-code__copy { 924 border-color: var(--omg-border); 925 color: var(--omg-ink); 926 } 927 .omg-code--light .omg-code__copy:hover { 928 border-color: var(--omg-ink); 929 } 930 931 .omg-bundle { 932 border: 2px solid var(--omg-pink); 933 } 934 .omg-bundle__head { 935 display: flex; 936 justify-content: space-between; 937 gap: 12px; 938 } 939 .omg-bundle__seal { 940 display: flex; 941 flex-direction: column; 942 align-items: center; 943 justify-content: center; 944 width: 72px; 945 height: 72px; 946 margin-top: -4px; 947 border-radius: 50%; 948 background: var(--omg-pink); 949 color: #fff; 950 line-height: 1; 951 text-transform: uppercase; 952 flex: none; 953 box-shadow: 0 8px 18px rgba(227, 22, 91, .3); 954 animation: omg-pulse 2.6s ease-in-out infinite; 955 } 956 .omg-bundle__seal small { 957 font-size: 9.5px; 958 font-weight: 800; 959 } 960 .omg-bundle__seal b { 961 font-size: 22px; 962 font-weight: 800; 963 } 964 .omg-bundle__media { 965 margin-bottom: 16px; 966 border-radius: var(--omg-radius-sm); 967 background: var(--omg-pink-soft); 968 overflow: hidden; 969 } 970 .omg-bundle__media img { 971 display: block; 972 width: 100%; 973 height: 110px; 974 object-fit: cover; 975 } 976 .omg-bundle__desc { 977 margin: 0 0 14px; 978 color: var(--omg-muted); 979 font-size: 14px; 980 } 981 .omg-wrap .omg-bundle .omg-checklist { 982 margin-bottom: 16px; 983 color: var(--omg-ink); 984 } 985 .omg-price { 986 display: flex; 987 align-items: baseline; 988 gap: 10px; 989 margin: 0 0 14px; 990 } 991 .omg-price del { 992 color: var(--omg-muted); 993 font-size: 16px; 994 } 995 .omg-price strong { 996 color: var(--omg-ink); 997 font-size: 34px; 998 font-weight: 800; 999 letter-spacing: -.02em; 1000 } 1001 1002 /* Free vs Pro 1003 --------------------------------------------- */ 1004 .omg-compare__table { 1005 width: 100%; 1006 border-collapse: collapse; 1007 font-size: 14px; 1008 } 1009 .omg-compare__table th { 1010 padding: 0 0 10px; 1011 color: var(--omg-muted); 1012 font-weight: 700; 1013 text-align: left; 1014 } 1015 .omg-compare__table td { 1016 padding: 11px 0; 1017 border-top: 1px solid var(--omg-border); 1018 color: var(--omg-ink); 1019 } 1020 .omg-compare__table th:not(:first-child), 1021 .omg-compare__table td:not(:first-child) { 1022 width: 64px; 1023 text-align: center; 1024 } 1025 .omg-compare__table th.omg-compare__pro { 1026 color: var(--omg-pink); 1027 font-weight: 800; 1028 } 1029 .omg-compare__table tbody tr { 1030 transition: background-color .2s; 1031 } 1032 .omg-compare__table tbody tr:hover { 1033 background: var(--omg-soft); 1034 } 1035 .omg-yes .omg-icon { 1036 color: var(--omg-green); 1037 font-size: 16px; 1038 } 1039 .omg-no .omg-icon { 1040 color: #a3a7b3; 1041 font-size: 16px; 1042 } 1043 1044 /* Important links 1045 --------------------------------------------- */ 1046 .omg-links__grid { 1047 display: grid; 1048 grid-template-columns: 1fr 1fr; 1049 gap: 10px; 1050 } 1051 .omg-links__item { 1052 display: flex; 1053 flex-direction: column; 1054 gap: 4px; 1055 padding: 14px; 1056 border: 1px solid var(--omg-border); 1057 border-radius: var(--omg-radius-sm); 1058 text-decoration: none; 1059 transition: border-color .2s, transform .2s var(--omg-ease), box-shadow .2s; 1060 } 1061 .omg-links__item strong { 1062 color: var(--omg-ink); 1063 font-size: 14px; 1064 } 1065 .omg-links__item span { 1066 color: var(--omg-muted); 1067 font-size: 12.5px; 1068 line-height: 1.45; 1069 } 1070 .omg-links__item:hover, 1071 .omg-links__item:focus { 1072 border-color: var(--omg-blue); 1073 transform: translateY(-2px); 1074 box-shadow: 0 8px 18px rgba(37, 70, 224, .08); 1075 } 1076 .omg-links__item:hover strong { 1077 color: var(--omg-blue); 1078 } 1079 1080 /* Expert banner & footer 1081 --------------------------------------------- */ 1082 .omg-links { 1083 display: flex; 1084 flex-direction: column; 1085 } 1086 .omg-expert { 1087 display: flex; 1088 flex-direction: column; 1089 align-items: flex-start; 1090 gap: 16px; 1091 margin-top: 10px; 1092 padding: 20px; 1093 border: 1px solid #d9dffb; 1094 border-radius: var(--omg-radius-sm); 1095 background: 1096 radial-gradient(60% 120% at 100% 50%, rgba(123, 47, 247, .1), transparent 60%), 1097 var(--omg-blue-soft); 1098 } 1099 .omg-links .omg-links__grid { 1100 margin-bottom: 18px; 1101 } 1102 .omg-wrap .omg-expert__list { 1103 display: flex; 1104 flex-wrap: wrap; 1105 gap: 8px; 1106 margin: 14px 0 0; 1107 padding: 0; 1108 list-style: none; 1109 } 1110 .omg-wrap .omg-expert__list li { 1111 display: inline-flex; 1112 align-items: center; 1113 gap: 6px; 1114 margin: 0; 1115 padding: 5px 11px; 1116 border-radius: 999px; 1117 background: var(--omg-surface); 1118 color: var(--omg-ink); 1119 font-size: 12.5px; 1120 font-weight: 700; 1121 } 1122 .omg-expert__list .omg-icon { 1123 color: var(--omg-blue); 1124 font-size: 14px; 1125 } 1126 .omg-expert__btn { 1127 flex: none; 1128 width: 100%; 1129 } 1130 .omg-wrap .omg-expert__title { 1131 margin: 0 0 4px; 1132 color: var(--omg-ink); 1133 font-size: 17px; 1134 font-weight: 800; 1135 } 1136 .omg-expert__desc { 1137 margin: 0; 1138 color: var(--omg-text); 1139 font-size: 14px; 1140 } 1141 .omg-footer { 1142 display: flex; 1143 justify-content: space-between; 1144 gap: 12px; 1145 flex-wrap: wrap; 1146 margin: 26px 0 10px; 1147 color: var(--omg-muted); 1148 font-size: 13px; 1149 } 1150 .omg-footer p { 1151 margin: 0; 1152 } 1153 .omg-footer a { 1154 color: var(--omg-blue); 1155 } 1156 1157 /* Welcome notice 1158 --------------------------------------------- */ 1159 .notice.omg-notice { 1160 position: relative; 1161 display: flex; 1162 align-items: center; 1163 gap: 22px; 1164 margin: 18px 20px 14px 2px; 1165 padding: 20px 56px 20px 20px; 1166 border: 1px solid var(--omg-border); 1167 border-left: 4px solid var(--omg-blue); 1168 border-radius: var(--omg-radius); 1169 background: var(--omg-surface); 1170 box-shadow: var(--omg-shadow); 1171 animation: omg-rise .45s var(--omg-ease) both; 1172 transition: opacity .3s, transform .3s var(--omg-ease); 1173 } 1174 .notice.omg-notice.is-leaving { 1175 opacity: 0; 1176 transform: translateY(-6px); 1177 } 1178 .omg-notice__media { 1179 width: 190px; 1180 padding: 8px; 1181 border-radius: var(--omg-radius-sm); 1182 background: var(--omg-soft); 1183 flex: none; 1184 } 1185 .omg-notice__media img { 1186 display: block; 1187 width: 100%; 1188 height: auto; 1189 border-radius: 6px; 1190 } 1191 .omg-notice__body { 1192 min-width: 0; 1193 } 1194 .omg-notice .omg-notice__eyebrow { 1195 margin: 0 0 4px; 1196 padding: 0; 1197 color: var(--omg-blue); 1198 font-size: 12px; 1199 font-weight: 700; 1200 letter-spacing: .06em; 1201 text-transform: uppercase; 1202 } 1203 .omg-notice .omg-notice__title { 1204 margin: 0 0 6px; 1205 color: var(--omg-ink); 1206 font-size: 19px; 1207 font-weight: 800; 1208 line-height: 1.25; 1209 } 1210 .omg-notice .omg-notice__text { 1211 margin: 0 0 12px; 1212 padding: 0; 1213 color: var(--omg-muted); 1214 font-size: 13.5px; 1215 line-height: 1.55; 1216 } 1217 .omg-notice__progress { 1218 display: flex; 1219 align-items: center; 1220 gap: 10px; 1221 max-width: 360px; 1222 margin-bottom: 14px; 1223 } 1224 .omg-notice__progress .omg-progress { 1225 flex: 1; 1226 height: 6px; 1227 } 1228 .omg-notice__count { 1229 color: var(--omg-muted); 1230 font-size: 12.5px; 1231 font-weight: 700; 1232 white-space: nowrap; 1233 } 1234 .omg-notice__actions { 1235 display: flex; 1236 gap: 10px; 1237 flex-wrap: wrap; 1238 } 1239 .omg-notice .omg-btn { 1240 min-height: 38px; 1241 font-size: 13px; 1242 text-decoration: none; 1243 } 1244 /* Core styles links inside .notice, so restate the button colors */ 1245 .notice.omg-notice .omg-btn--primary, 1246 .notice.omg-notice .omg-btn--primary:hover, 1247 .notice.omg-notice .omg-btn--primary:focus, 1248 .notice.omg-notice .omg-btn--outline-pink:hover, 1249 .notice.omg-notice .omg-btn--outline-pink:focus { 1250 color: #fff; 1251 } 1252 .notice.omg-notice .omg-btn--outline-pink { 1253 color: var(--omg-pink); 1254 } 1255 .notice.omg-notice .omg-btn--premium, 1256 .notice.omg-notice .omg-btn--premium:hover, 1257 .notice.omg-notice .omg-btn--premium:focus { 1258 color: #fff; 1259 } 1260 .notice.omg-notice .omg-btn--outline, 1261 .notice.omg-notice .omg-btn--outline:hover, 1262 .notice.omg-notice .omg-btn--outline:focus { 1263 color: var(--omg-ink); 1264 } 1265 1266 /* Setup finished: notice stays on the Dashboard only */ 1267 .notice.omg-notice--complete { 1268 border-left-color: var(--omg-green); 1269 } 1270 .omg-notice--complete .omg-notice__eyebrow { 1271 color: var(--omg-green); 1272 } 1273 .omg-notice--complete .omg-progress__bar { 1274 background: var(--omg-green); 1275 } 1276 .notice.omg-notice .omg-btn--outline-pink:hover, 1277 .notice.omg-notice .omg-btn--outline-pink:focus { 1278 color: #fff; 1279 } 1280 .omg-notice__close { 1281 position: absolute; 1282 top: 12px; 1283 right: 12px; 1284 display: grid; 1285 place-items: center; 1286 width: 30px; 1287 height: 30px; 1288 border-radius: 50%; 1289 color: var(--omg-muted); 1290 transition: background-color .2s, color .2s; 1291 } 1292 .omg-notice__close:hover, 1293 .omg-notice__close:focus { 1294 background: var(--omg-soft); 1295 color: var(--omg-ink); 1296 } 1297 .omg-notice__close svg { 1298 width: 16px; 1299 height: 16px; 1300 } 1301 1302 /* Highlights: demo & premium buttons, animated bundle border 1303 --------------------------------------------- */ 1304 .omg-btn--demo, 1305 .omg-btn--premium { 1306 position: relative; 1307 overflow: hidden; 1308 color: #fff; 1309 isolation: isolate; 1310 } 1311 .omg-btn--demo { 1312 background: linear-gradient(135deg, #7b2ff7, var(--omg-blue)); 1313 box-shadow: 0 6px 18px rgba(91, 60, 240, .35); 1314 } 1315 .omg-btn--premium { 1316 background: linear-gradient(135deg, #ff8a00, var(--omg-pink)); 1317 box-shadow: 0 6px 18px rgba(227, 22, 91, .32); 1318 } 1319 .omg-btn--demo:hover, 1320 .omg-btn--demo:focus, 1321 .omg-btn--premium:hover, 1322 .omg-btn--premium:focus { 1323 color: #fff; 1324 filter: saturate(1.15) brightness(1.05); 1325 } 1326 .omg-btn--demo:hover { 1327 box-shadow: 0 10px 24px rgba(91, 60, 240, .45); 1328 } 1329 .omg-btn--premium:hover { 1330 box-shadow: 0 10px 24px rgba(227, 22, 91, .42); 1331 } 1332 /* Light sweep across the button */ 1333 .omg-btn--demo::after, 1334 .omg-btn--premium::after { 1335 content: ''; 17 1336 position: absolute; 18 1337 top: 0; 19 bottom: 0; 20 left: 0; 21 right: 0; 22 z-index: 999; 23 background: rgba(255,255,255,0.8); 24 } 25 .spinning .step-loading .spinner { 26 float: none; 1338 left: -60%; 1339 z-index: -1; 1340 width: 40%; 1341 height: 100%; 1342 background: linear-gradient(100deg, transparent, rgba(255, 255, 255, .45), transparent); 1343 transform: skewX(-20deg); 1344 animation: omg-shine 3.4s ease-in-out infinite; 1345 } 1346 .omg-btn--premium::after { 1347 animation-delay: 1.2s; 1348 } 1349 .omg-btn--premium .omg-icon { 1350 font-size: 15px; 1351 color: #ffe27a; 1352 } 1353 .omg-live-dot { 1354 width: 8px; 1355 height: 8px; 1356 border-radius: 50%; 1357 background: #3dff9a; 1358 flex: none; 1359 animation: omg-live 1.6s ease-out infinite; 1360 } 1361 .omg-compare__demo { 1362 margin-top: 18px; 1363 } 1364 1365 /* Tags on the important links */ 1366 .omg-links__item strong { 1367 display: flex; 1368 align-items: center; 1369 gap: 6px; 1370 flex-wrap: wrap; 1371 } 1372 .omg-tag { 1373 display: inline-flex; 1374 align-items: center; 1375 gap: 5px; 1376 padding: 2px 8px; 1377 border-radius: 999px; 1378 font-size: 10.5px; 1379 font-style: normal; 1380 font-weight: 800; 1381 letter-spacing: .05em; 1382 text-transform: uppercase; 1383 } 1384 .omg-tag--live { 1385 background: #e5f8ee; 1386 color: var(--omg-green); 1387 } 1388 .omg-tag--live .omg-live-dot { 1389 width: 6px; 1390 height: 6px; 1391 background: var(--omg-green); 1392 } 1393 .omg-tag--pro { 1394 background: linear-gradient(135deg, #ff8a00, var(--omg-pink)); 1395 color: #fff; 1396 } 1397 .omg-links__item--demo, 1398 .omg-links__item--premium { 1399 border: 1.5px solid transparent; 1400 } 1401 .omg-links__item--demo { 1402 background: linear-gradient(#f8f6ff, #f8f6ff) padding-box, linear-gradient(135deg, #7b2ff7, var(--omg-blue)) border-box; 1403 } 1404 .omg-links__item--premium { 1405 background: linear-gradient(#fff8f3, #fff8f3) padding-box, linear-gradient(135deg, #ff8a00, var(--omg-pink)) border-box; 1406 } 1407 .omg-links__item--demo:hover, 1408 .omg-links__item--demo:focus, 1409 .omg-links__item--premium:hover, 1410 .omg-links__item--premium:focus { 1411 border-color: transparent; 1412 } 1413 1414 /* Hero tint */ 1415 .omg-hero { 1416 background: 1417 radial-gradient(70% 120% at 100% 0%, #eef0ff 0%, transparent 60%), 1418 radial-gradient(50% 80% at 0% 100%, #fff1f5 0%, transparent 60%), 1419 var(--omg-surface); 1420 } 1421 1422 /* Rotating gradient border on the bundle card */ 1423 .omg-card.omg-glow-border { 1424 border: 0; 1425 padding: 31px; 1426 isolation: isolate; 1427 overflow: hidden; 1428 box-shadow: 0 14px 36px rgba(227, 22, 91, .2); 1429 } 1430 .omg-glow-border::before { 1431 content: ''; 27 1432 position: absolute; 28 1433 top: 50%; 29 1434 left: 50%; 30 visibility: visible; 31 -webkit-transform: translate(-50%,-50%); 32 transform: translate(-50%,-50%); 33 } 34 .spinning a.do-it { 35 visibility: hidden; 36 } 37 .whizzie-menu li.step { 38 visibility: hidden; 39 } 40 .whizzie-menu li.active-step { 41 visibility: visible; 42 } 43 .loaded .whizzie-menu li.step { 44 visibility: visible; 45 display: none; 46 } 47 .loaded .whizzie-menu li.active-step { 48 display: list-item; 49 } 50 .spinning .spinner { 51 visibility: visible; 52 float: none; 53 text-align: center; 54 } 55 .button-wrap { 56 display: inline-block; 57 margin: 1em 0; 58 } 59 .whizzie-menu .detail ul { 1435 z-index: -2; 1436 width: 250%; 1437 aspect-ratio: 1; 1438 background: conic-gradient(from 0deg, var(--omg-pink), #ff8a00, #ffd23f, #7b2ff7, var(--omg-blue), var(--omg-pink)); 1439 transform: translate(-50%, -50%); 1440 animation: omg-rotate 4s linear infinite; 1441 } 1442 .omg-glow-border::after { 1443 content: ''; 1444 position: absolute; 1445 inset: 3px; 1446 z-index: -1; 1447 border-radius: calc(var(--omg-radius) - 3px); 1448 background: radial-gradient(90% 60% at 100% 0%, #fff0f5, transparent 60%), var(--omg-surface); 1449 } 1450 1451 /* Focus mode: only the setup card until the demo is imported 1452 --------------------------------------------- */ 1453 .omg-layout { 1454 position: relative; 1455 } 1456 .omg-wrap > :not(.omg-layout), 1457 .omg-main { 1458 transition: filter .6s var(--omg-ease), opacity .6s var(--omg-ease); 1459 } 1460 .omg-wrap.is-focus > :not(.omg-layout), 1461 .omg-wrap.is-focus .omg-main { 1462 filter: blur(5px) grayscale(.15); 1463 opacity: .45; 1464 pointer-events: none; 1465 user-select: none; 1466 } 1467 .omg-setup { 1468 transition: box-shadow .5s var(--omg-ease), border-color .5s; 1469 } 1470 .omg-wrap.is-focus .omg-setup { 1471 z-index: 2; 1472 border-color: var(--omg-blue); 1473 box-shadow: 0 0 0 5px rgba(37, 70, 224, .14), 0 24px 60px rgba(17, 19, 24, .16); 1474 } 1475 .omg-kicker--blue { 1476 color: var(--omg-blue); 1477 } 1478 .omg-focus-tip { 1479 position: absolute; 1480 top: 22px; 1481 left: calc(360px + 36px); 1482 z-index: 3; 1483 width: 330px; 1484 padding: 22px; 1485 border: 1px solid var(--omg-border); 1486 border-radius: var(--omg-radius); 1487 background: var(--omg-surface); 1488 box-shadow: 0 22px 54px rgba(17, 19, 24, .2); 1489 animation: omg-pop .5s var(--omg-ease) .3s both; 1490 transition: opacity .35s, transform .35s var(--omg-ease); 1491 } 1492 /* Arrow pointing at the setup card */ 1493 .omg-focus-tip::before { 1494 content: ''; 1495 position: absolute; 1496 top: 34px; 1497 left: -8px; 1498 width: 15px; 1499 height: 15px; 1500 border-left: 1px solid var(--omg-border); 1501 border-bottom: 1px solid var(--omg-border); 1502 background: var(--omg-surface); 1503 transform: rotate(45deg); 1504 } 1505 .omg-focus-tip.is-leaving { 1506 opacity: 0; 1507 transform: translateY(-8px) scale(.97); 1508 } 1509 .omg-focus-tip__icon { 1510 display: grid; 1511 place-items: center; 1512 width: 40px; 1513 height: 40px; 1514 margin-bottom: 12px; 1515 border-radius: 12px; 1516 background: linear-gradient(135deg, #7b2ff7, var(--omg-blue)); 1517 color: #fff; 1518 font-size: 20px; 1519 box-shadow: 0 8px 18px rgba(91, 60, 240, .3); 1520 } 1521 .omg-wrap .omg-focus-tip__title { 1522 margin: 0 0 8px; 1523 color: var(--omg-ink); 1524 font-size: 18px; 1525 font-weight: 800; 1526 } 1527 .omg-focus-tip__text { 1528 margin: 0 0 16px; 1529 color: var(--omg-muted); 1530 font-size: 13.5px; 1531 line-height: 1.6; 1532 } 1533 .omg-focus-tip__actions { 1534 display: flex; 1535 align-items: center; 1536 gap: 12px; 1537 } 1538 .omg-focus-tip__actions .omg-btn { 1539 min-height: 38px; 1540 } 1541 .omg-focus-tip__actions .omg-skip { 60 1542 margin: 0; 61 background-color: #fff; 62 } 63 .plugin-info { 64 display: flex; 65 justify-content: space-evenly; 66 border-bottom: 1px solid #B5BCC2; 67 background: #fff; 68 } 69 70 ul.whizzie-nav { 71 list-style: none; 72 display: webkit-flex; 73 justify-content: space-evenly; 74 margin: 45px 27px 45px 0; 75 display: flex; 76 position: absolute; 77 width: 100%; 78 top: 40px; 79 } 80 ul.whizzie-nav li { 81 opacity: 1; 82 transition: all 0.25s; 83 margin: -5px 0 0px 0; 84 } 85 ul.whizzie-nav li.active-step .step-number { 86 background-color: #2271B1; 87 } 88 ul.whizzie-do-plugins li span { 89 color: #50575E; 90 font-size: 13px; 91 font-weight: 300; 92 } 93 ul.whizzie-do-plugins li, ul.whizzie-do-plugins li.plugin-heading, ul.whizzie-do-plugins li.plugin-heading span { 94 display: flex; 95 justify-content: space-evenly; 96 align-items: center; 97 color: #2271B1; 98 font-size: 14px; 99 font-weight: 500; 100 padding: 10px 0; 101 } 102 ul.whizzie-do-plugins li.plugin-heading { 103 padding: 0; 104 } 105 ul.whizzie-nav li.done-step span { 106 background: #000; 107 } 108 ul.whizzie-nav .step-number { 109 font-size: 20px; 110 background: #C5C5C5; 111 padding: 15px 20px; 112 border-radius: 50%; 113 color: white !important; 114 } 115 .whizzie-wrap.loaded .summary p{ 116 font-size: 16px; 117 } 118 ul.whizzie-nav { 119 list-style: none; 120 display: webkit-flex; 121 justify-content: space-between; 122 margin: 45px 27px 45px 0; 123 display: flex; 124 position: absolute; 125 width: 100%; 126 top: 50px; 127 } 128 129 /* ------- Setup Guid --------- */ 130 li.step { 131 text-align: center; 132 } 133 #skin-care-solutions-demo-setup-guid .skin-care-solutions-setup-dots{ 134 text-align: center; 135 padding-top: 25px; 136 } 137 #skin-care-solutions-demo-setup-guid ol li{ 138 list-style: decimal; 139 font-size: 15px; 140 font-weight: 600; 141 } 142 #skin-care-solutions-demo-setup-guid h4{ 143 font-size: 17px; 144 } 145 #skin-care-solutions-demo-setup-guid h3{ 146 font-weight: 900; 147 font-size: 19px; 148 } 149 #skin-care-solutions-demo-setup-guid h3:before{ 150 content: "\f155"; 151 font-family: dashicons; 152 font-weight: 400; 153 display: inline-block; 154 position: relative; 155 top: 2px; 156 padding-right: 6px; 157 } 158 #skin-care-solutions-demo-setup-guid p{ 159 font-size: 15px; 160 } 161 .whizzie-menu .step-plugins{ 162 height: 100% !important; 163 } 164 #skin-care-solutions-demo-setup-guid .skin-care-solutions-setup-social-icon{ 165 display: none; 166 } 167 /*---------------Additional CSS----------------*/ 168 .appearance_page_skincaresolutions-wizard h1 { 169 display: none; 170 } 171 .appearance_page_skincaresolutions-wizard h2 { 172 text-align: center; 173 margin-bottom: 20px; 174 color: #000000; 175 font-weight: 700; 176 font-size: 30px; 177 } 178 .demo_content { 179 width: 75%; 180 text-align: left; 181 font-size: 12px; 182 margin-right: 3%; 183 position: relative; 184 } 185 .demo_content_image { 186 display: flex; 187 align-items: flex-start; 188 } 189 .homepage-setup-links { 190 width: 100%; 191 text-align: center; 192 } 193 .homepage-setup-links.buttons a,.btnsss a{ 194 font-size: 16px; 195 font-weight: 600; 196 padding: 0 20px; 197 border-radius: 0; 198 } 199 200 201 .customize_div.finish { 202 display: flex; 203 justify-content: center; 204 gap: 0 120px; 205 align-items: center; 206 } 207 .customize_div.finish.btns { 208 flex-direction: column; 209 } 210 .btnsss { 211 display: grid; 212 align-items: center; 213 justify-content: center; 214 grid-gap: 25px; 215 } 216 .btnsss a { 217 padding: 5px 35px !important; 218 border-radius: 0 !important; 219 } 220 .customize_div.finish.btns h3 { 221 font-size: 30px !important; 222 margin-bottom: 50px; 223 margin-top: 0; 224 } 225 .skin-care-solutions-setup-finish img { 226 width: 100%; 227 max-width: 400px; 228 } 229 .whizzie-menu h2 { 230 font-size: 30px; 231 font-weight: 700; 232 line-height: 35px; 233 margin-bottom: 140px; 234 } 235 .homepage-setup-links { 236 margin-top: 60px; 237 } 238 .blank-border { 239 position: absolute; 240 border: 4px solid #C5C5C5; 241 width: 97%; 242 z-index: -1; 243 } 244 .homepage-setup-links.buttons { 245 display: grid; 246 grid-template-columns: 1fr 1fr 1fr 1fr; 247 grid-gap: 30px; 248 place-content: center; 249 } 250 251 252 .homepage-setup-theme-bundle-three img { 253 height: 180px; 254 object-fit: cover; 255 width: 100%; 256 } 257 .homepage-setup-theme-buynow-two img { 258 object-fit: cover; 259 width: 100%; 260 } 261 .homepage-setup-theme-bundle-one h1 { 262 display: block; 263 font-size: 35px; 264 color: #000; 265 font-weight: 600; 266 padding-top: 0; 267 } 268 .homepage-setup-theme-bundle-one p,.homepage-setup-theme-buynow-three p { 269 font-size: 16px; 270 color: #000; 271 font-weight: 400; 272 margin: 0; 273 } 274 .homepage-setup-theme-bundle-one p span,.homepage-setup-theme-buynow-three p span{ 275 color: #FF1B82; 276 font-weight: 600; 277 } 278 .homepage-setup { 279 background: #fff; 280 padding: 10px; 281 border-radius: 10px; 282 box-shadow: 0px 0px 10px 10px #00000009; 283 } 284 .homepage-setup-theme-bundle { 285 display: flex; 286 align-items: center; 287 padding: 10px; 288 border-radius: 10px; 289 border: 4px solid #FF1B82; 290 } 291 .homepage-setup-theme-bundle-one { 292 width: 25%; 293 padding-left: 20px; 294 border-left: 5px solid #000; 295 } 296 297 .homepage-setup-theme-bundle-two{ 298 width: 10%; 299 } 300 301 .homepage-setup-theme-bundle-three{ 302 width: 50%; 303 padding: 0 30px; 304 } 305 306 .homepage-setup-theme-bundle-four{ 307 width: 15%; 308 text-align: center; 309 } 310 311 .homepage-setup-theme-bundle-two p { 312 font-size: 20px; 313 background: linear-gradient(180deg, #FF1980 0%, #FF685A 100%); 314 border-radius: 50%; 315 padding: 30px 14px; 316 display: flex; 317 flex-direction: column; 318 justify-content: center; 319 align-items: center; 320 color: #fff; 321 outline: 2px solid #fff; 322 outline-offset: -7px; 323 font-weight: 600; 324 margin: 0; 325 } 326 .homepage-setup-theme-bundle-two p span { 327 font-size: 40px; 328 font-weight: 900; 329 line-height: 35px; 330 } 331 332 .homepage-setup-theme-bundle-four p span { 333 font-size: 30px; 334 text-decoration: line-through; 335 font-weight: 400; 336 } 337 .homepage-setup-theme-bundle-four p { 338 color: #000; 339 font-size: 54px; 340 font-weight: 600; 341 margin: 0 0 15px; 342 } 343 344 .homepage-setup-theme-bundle-four a { 345 font-size: 22px; 346 background: linear-gradient(180deg, #FF1980 0%, #FF685A 100%); 347 border-radius: 10px; 348 padding: 15px 35px; 349 color: #fff; 350 font-weight: 600; 351 text-decoration: none; 352 margin: 0 auto; 353 text-align: center; 354 } 355 356 357 358 .homepage-setup-image { 359 width: 25%; 360 } 361 .homepage-setup-theme-buynow { 362 display: flex; 363 flex-direction: column; 364 justify-content: center; 365 padding: 15px; 366 border-radius: 10px; 367 box-shadow: 0px 0px 10px 10px #00000009; 368 background: #fff; 369 position: relative; 370 } 371 372 .homepage-setup-theme-buynow-one h1 { 373 color: #000; 374 font-weight: 600; 375 font-size: 28px; 376 display: block; 377 padding-top: 70px; 378 } 379 .homepage-setup-theme-buynow-three { 380 text-align: center; 381 } 382 .homepage-setup-theme-buynow-three p { 383 font-size: 17px; 384 color: #000; 385 font-weight: 400; 386 margin: 10px 0 0 0; 387 line-height: 18px; 388 } 389 .homepage-setup-theme-buynow-four a { 390 font-size: 18px; 391 color: #fff; 392 padding: 10px; 393 font-weight: 600; 394 text-decoration: none; 395 } 396 .homepage-setup-theme-buynow-four { 397 background: linear-gradient(180deg, #FF1980 0%, #FF685A 100%); 398 border-radius: 10px; 399 padding: 10px; 400 margin-top: 30px; 401 text-align: center; 402 } 403 404 .homepage-setup-theme-buynow-one p { 405 box-shadow: 0px 0px 8px 4px #00000020; 406 border-radius: 0px 0px 8px 10px; 407 font-size: 12px; 408 background: linear-gradient(180deg, #FF1980 0%, #FF685A 100%); 409 display: flex; 410 flex-direction: column; 411 justify-content: center; 412 align-items: center; 413 color: #fff; 414 outline: 2px solid #fff; 415 outline-offset: -8px; 416 font-weight: 500; 417 margin: 0; 418 outline-style: dashed; 419 position: absolute; 420 top: 0; 421 right: 15px; 422 padding: 15px; 423 } 424 425 .homepage-setup-theme-buynow-one p span { 426 font-size: 30px; 427 margin: 0; 428 line-height: 30px; 429 } 430 431 @media screen and (max-width: 1500px) { 432 .homepage-setup-theme-bundle-two p { 1543 } 1544 1545 /* Motion 1546 --------------------------------------------- */ 1547 @keyframes omg-rise { 1548 from { opacity: 0; transform: translateY(10px); } 1549 to { opacity: 1; transform: translateY(0); } 1550 } 1551 @keyframes omg-spin { 1552 to { transform: rotate(360deg); } 1553 } 1554 @keyframes omg-pop { 1555 from { opacity: 0; transform: translateX(-10px) scale(.96); } 1556 to { opacity: 1; transform: translateX(0) scale(1); } 1557 } 1558 @keyframes omg-rotate { 1559 to { transform: translate(-50%, -50%) rotate(360deg); } 1560 } 1561 @keyframes omg-shine { 1562 0% { left: -60%; } 1563 55%, 100% { left: 130%; } 1564 } 1565 @keyframes omg-live { 1566 0% { box-shadow: 0 0 0 0 rgba(61, 255, 154, .7); } 1567 70% { box-shadow: 0 0 0 7px rgba(61, 255, 154, 0); } 1568 100% { box-shadow: 0 0 0 0 rgba(61, 255, 154, 0); } 1569 } 1570 @keyframes omg-pulse { 1571 0%, 100% { transform: scale(1); } 1572 50% { transform: scale(1.06); } 1573 } 1574 @media (prefers-reduced-motion: reduce) { 1575 .omg-wrap *, 1576 .omg-notice, 1577 .omg-notice * { 1578 animation: none !important; 1579 transition: none !important; 1580 } 1581 } 1582 1583 /* Responsive 1584 --------------------------------------------- */ 1585 @media (max-width: 1280px) { 1586 .omg-promos, 1587 .omg-info { 1588 grid-template-columns: 1fr; 1589 } 1590 } 1591 @media (max-width: 1080px) { 1592 .omg-layout { 1593 grid-template-columns: 1fr; 1594 } 1595 .omg-focus-tip { 1596 position: relative; 1597 top: auto; 1598 left: auto; 1599 order: -1; 1600 width: auto; 1601 } 1602 .omg-focus-tip::before { 1603 top: auto; 1604 bottom: -8px; 1605 left: 40px; 1606 transform: rotate(-45deg); 1607 } 1608 } 1609 @media (max-width: 782px) { 1610 .omg-wrap { 1611 margin: 16px 10px 0 0; 1612 } 1613 .omg-wrap .omg-title { 1614 font-size: 24px; 1615 } 1616 .omg-header { 1617 align-items: flex-start; 1618 flex-direction: column; 1619 } 1620 .omg-layout, 1621 .omg-main, 1622 .omg-promos, 1623 .omg-info { 1624 gap: 16px; 1625 } 1626 .omg-hero { 1627 grid-template-columns: 1fr; 1628 gap: 20px; 1629 } 1630 .omg-hero__media { 1631 order: -1; 1632 } 1633 .omg-hero__media img { 1634 width: 100%; 1635 height: auto; 1636 } 1637 .omg-wrap .omg-hero__title { 1638 font-size: 24px; 1639 } 1640 .omg-footer { 1641 flex-direction: column; 1642 } 1643 .notice.omg-notice { 1644 margin-right: 10px; 1645 } 1646 .omg-notice__media { 1647 display: none; 1648 } 1649 } 1650 @media (max-width: 480px) { 1651 .omg-card, 1652 .omg-pro, 1653 .omg-bundle { 1654 padding: 18px; 1655 } 1656 .omg-card.omg-glow-border { 1657 padding: 21px; 1658 } 1659 .omg-wrap .omg-title { 1660 font-size: 21px; 1661 } 1662 .omg-wrap .omg-pro__title, 1663 .omg-wrap .omg-bundle__title { 1664 font-size: 19px; 1665 } 1666 .omg-wrap .omg-pro__title { 1667 max-width: 75%; 1668 } 1669 .omg-pro__ribbon { 1670 top: 18px; 1671 right: -54px; 1672 font-size: 10.5px; 1673 } 1674 .omg-pro__previews { 1675 gap: 6px; 1676 padding: 6px; 1677 } 1678 .omg-pro__preview-label { 1679 left: 4px; 1680 bottom: 4px; 1681 padding: 2px 6px; 1682 font-size: 9px; 1683 } 1684 .omg-pro__price strong, 1685 .omg-price strong { 1686 font-size: 28px; 1687 } 1688 .omg-hero__actions .omg-btn { 1689 flex: 1 1 100%; 1690 } 1691 .omg-bundle__seal { 1692 width: 60px; 1693 height: 60px; 1694 } 1695 .omg-bundle__seal b { 433 1696 font-size: 18px; 434 padding: 20px 15px; 435 } 436 .homepage-setup-theme-bundle-four p { 437 font-size: 45px; 438 } 439 .homepage-setup-theme-bundle-four a { 440 font-size: 18px; 441 padding: 15px 20px; 442 } 443 .homepage-setup-theme-buynow-four a { 444 font-size: 16px; 445 } 446 .homepage-setup-theme-buynow-one p span { 447 font-size: 25px; 448 line-height: 25px; 449 } 450 .homepage-setup-theme-buynow-one p { 451 right: 10px; 452 padding: 12px; 453 } 454 } 455 456 @media screen and (max-width: 1100px) { 457 .homepage-setup-theme-bundle { 458 display: grid; 459 grid-template-columns: 1fr 1fr; 460 } 461 .homepage-setup-theme-bundle-one,.homepage-setup-theme-bundle-three{ 462 width: 90%; 463 } 464 .homepage-setup-theme-bundle-two p { 465 font-size: 18px; 466 padding: 25px 20px; 467 } 468 .homepage-setup-image { 469 width: 35%; 470 } 471 .demo_content { 472 width: 65%; 473 } 474 .homepage-setup-theme-bundle-two,.homepage-setup-theme-bundle-four{ 1697 } 1698 .omg-expert { 1699 padding: 16px; 1700 } 1701 .omg-links__grid, 1702 .omg-chips { 1703 grid-template-columns: 1fr; 1704 } 1705 .omg-header__actions { 475 1706 width: 100%; 476 1707 } 477 .homepage-setup-theme-bundle { 478 display: grid; 479 grid-template-columns: auto auto; 480 } 481 ul.whizzie-nav { 482 top: 90px; 483 } 484 .homepage-setup-links.buttons { 485 grid-template-columns: 1fr 1fr; 486 } 487 } 488 @media screen and (max-width: 600px) { 489 ul.whizzie-nav { 490 top: 55px; 491 } 492 .homepage-setup-links.buttons { 493 grid-template-columns: 1fr; 494 } 495 .whizzie-menu h2 { 496 font-size: 22px; 497 line-height: 25px; 498 margin-bottom: 100px; 499 } 500 ul.whizzie-nav .step-number { 501 padding: 10px 15px; 502 } 503 .demo_content_image { 504 display: block; 505 } 506 .demo_content { 507 width: 100%; 508 } 509 .homepage-setup-theme-bundle { 510 grid-template-columns: auto; 511 padding-bottom: 40px; 512 } 513 .homepage-setup-theme-bundle-two { 514 margin: 10px 0; 515 } 516 .homepage-setup-image { 517 width: 100%; 518 } 519 .homepage-setup-theme-buynow { 520 margin-top: 50px; 521 } 522 .homepage-setup-theme-bundle-two p { 523 width: 120px; 524 margin: 0 auto; 525 } 526 .homepage-setup-theme-bundle-one, .homepage-setup-theme-bundle-three { 527 width: 100%; 528 } 529 .homepage-setup-theme-bundle-three { 530 padding: 0; 531 } 532 .homepage-setup-theme-bundle-one { 533 padding-left: 5px; 534 } 535 .homepage-setup-theme-bundle-four p { 536 font-size: 40px; 537 } 538 } 539 .notice-content { 540 padding: 0px 10px 20px 15px; 541 } 542 .welcome a{ 543 font-size: 21px; 544 padding: 8px 17px 38px; 545 } 546 .notice p.dismiss-link { 547 position: absolute; 548 top: 10px; 549 right: 10px; 550 margin: 0; 551 padding: 0; 552 } 553 .notice { 554 position: relative; 555 } 556 .info-link a{ 557 padding: 3px 27px; 558 font-size: 13px; 559 background: #2271b1; 560 border:1px solid #2271b1; 561 color: #fff; 562 text-decoration: none; 563 text-shadow: none; 564 display: inline-block; 565 line-height: 2.15384615; 566 border-radius: 3px; 567 cursor: pointer; 568 } 569 570 /* NOITICE BUNDLE */ 571 572 .notice-bundle { 573 background: linear-gradient(135deg, #ff7a18, #ffb347) !important; 574 color: #fff !important; 575 padding: 5px 18px !important; 576 margin-left: 10px; 577 font-weight: 600 !important; 578 text-decoration: none !important; 579 display: inline-block !important; 580 border: none !important; 581 outline: none !important; 582 } 583 584 .bundle-overlay { 585 position: fixed; 586 inset: 0; 587 background: rgba(0, 0, 0, 0.65); 588 display: none; 589 align-items: center; 590 justify-content: center; 591 z-index: 9999; 592 } 593 594 .bundle-modal { 595 background: #fff; 596 width: 90%; 597 max-width: 420px; 598 padding: 30px; 599 border-radius: 12px; 600 text-align: center; 601 animation: popupScale 0.4s ease; 602 position: relative; 603 } 604 605 @keyframes popupScale { 606 from { 607 transform: scale(0.85); 608 opacity: 0; 609 } 610 to { 611 transform: scale(1); 612 opacity: 1; 613 } 614 } 615 616 .sale-badge { 617 background: #ff3b3b; 618 color: #fff; 619 display: inline-block; 620 padding: 6px 14px; 621 border-radius: 20px; 622 font-size: 13px; 623 margin-bottom: 12px; 624 font-weight: 600; 625 animation: pulse 1s infinite; 626 } 627 628 @keyframes pulse { 629 0% { transform: scale(1); } 630 50% { transform: scale(1.08); } 631 100% { transform: scale(1); } 632 } 633 634 .bundle-modal h2 { 635 margin: 10px 0; 636 } 637 638 .bundle-modal ul { 639 text-align: center; 640 padding-left: 0; 641 } 642 643 .bundle-cta { 644 display: block; 645 margin-top: 20px; 646 background: linear-gradient(135deg, #ff7a18, #ffb347); 647 color: #fff; 648 padding: 12px; 649 border-radius: 6px; 650 text-decoration: none; 651 font-weight: bold; 652 } 653 654 .close-popup { 655 position: absolute; 656 top: 10px; 657 right: 14px; 658 font-size: 22px; 659 cursor: pointer; 660 } 661 662 663 664 665 /* NOITICE BUNDLE */ 666 667 .notice-bundle { 668 background: linear-gradient(135deg, #ff7a18, #ffb347) !important; 669 color: #fff !important; 670 padding: 5px 18px !important; 671 margin-left: 10px; 672 font-weight: 600 !important; 673 text-decoration: none !important; 674 display: inline-block !important; 675 border: none !important; 676 outline: none !important; 677 } 678 679 .bundle-overlay { 680 position: fixed; 681 inset: 0; 682 background: rgba(0, 0, 0, 0.65); 683 display: none; 684 align-items: center; 685 justify-content: center; 686 z-index: 9999; 687 } 688 689 .bundle-modal { 690 background: #fff; 691 width: 90%; 692 max-width: 420px; 693 padding: 30px; 694 border-radius: 12px; 695 text-align: center; 696 animation: popupScale 0.4s ease; 697 position: relative; 698 } 699 700 @keyframes popupScale { 701 from { 702 transform: scale(0.85); 703 opacity: 0; 704 } 705 to { 706 transform: scale(1); 707 opacity: 1; 708 } 709 } 710 711 .sale-badge { 712 background: #ff3b3b; 713 color: #fff; 714 display: inline-block; 715 padding: 6px 14px; 716 border-radius: 20px; 717 font-size: 13px; 718 margin-bottom: 12px; 719 font-weight: 600; 720 animation: pulse 1s infinite; 721 } 722 723 @keyframes pulse { 724 0% { transform: scale(1); } 725 50% { transform: scale(1.08); } 726 100% { transform: scale(1); } 727 } 728 729 .bundle-modal h2 { 730 margin: 10px 0; 731 } 732 733 .bundle-modal ul { 734 text-align: center; 735 padding-left: 0; 736 } 737 738 .bundle-cta { 739 display: block; 740 margin-top: 20px; 741 background: linear-gradient(135deg, #ff7a18, #ffb347); 742 color: #fff; 743 padding: 12px; 744 border-radius: 6px; 745 text-decoration: none; 746 font-weight: bold; 747 } 748 749 .close-popup { 750 position: absolute; 751 top: 10px; 752 right: 14px; 753 font-size: 22px; 754 cursor: pointer; 755 } 1708 .omg-header__actions .omg-btn { 1709 flex: 1; 1710 } 1711 } 1712 @media (max-width: 360px) { 1713 .omg-header__actions { 1714 flex-direction: column; 1715 } 1716 .omg-compare__table th:not(:first-child), 1717 .omg-compare__table td:not(:first-child) { 1718 width: 44px; 1719 } 1720 .omg-pro__preview-label { 1721 font-size: 8px; 1722 } 1723 } -
skin-care-solutions/1.4.2/inc/homepage-setup/assets/js/homepage-setup-script.js
r312863 r356312 1 var Skin_Care_Solutions_Whizzie = (function($){ 2 var t; 3 var current_step = ''; 4 var step_pointer = ''; 5 6 // callbacks from form button clicks. 7 var callbacks = { 8 skin_care_solutions_do_next_step: function( btn ) { 9 skin_care_solutions_do_next_step( btn ); 10 }, 11 install_plugins: function(btn){ 12 var plugins = new skin_care_solutions_PluginManager(); 13 plugins.init( btn ); 14 }, 15 skin_care_solutions_install_widgets: function( btn ) { 16 var widgets = new skin_care_solutions_WidgetManager(); 17 widgets.init( btn ); 18 }, 19 skin_care_solutions_install_content: function(btn){ 20 var content = new skin_care_solutions_ContentManager(); 21 content.init( btn ); 22 } 23 }; 24 25 function skin_care_solutions_window_loaded() { 26 var maxHeight = 0; 27 28 $( '.whizzie-menu li.step' ).each( function( index ) { 29 $(this).attr( 'data-height', $(this).innerHeight() ); 30 if( $(this).innerHeight() > maxHeight ) { 31 maxHeight = $(this).innerHeight(); 32 } 33 }); 34 35 $( '.whizzie-menu li .detail' ).each( function( index ) { 36 $(this).attr( 'data-height', $(this).innerHeight() ); 37 $(this).addClass( 'scale-down' ); 38 }); 39 40 41 $( '.whizzie-menu li.step' ).css( 'height', '100%' ); 42 $( '.whizzie-menu li.step:first-child' ).addClass( 'active-step' ); 43 $( '.whizzie-nav li:first-child' ).addClass( 'active-step' ); 44 45 $( '.whizzie-wrap' ).addClass( 'loaded' ); 46 47 // init button clicks: 48 $('.do-it').on( 'click', function(e) { 49 e.preventDefault(); 50 step_pointer = $(this).data('step'); 51 current_step = $('.step-' + $(this).data('step')); 52 $('.whizzie-wrap').addClass( 'spinning' ); 53 if($(this).data('callback') && typeof callbacks[$(this).data('callback')] != 'undefined'){ 54 // we have to process a callback before continue with form submission 55 callbacks[$(this).data('callback')](this); 56 return false; 57 } else { 58 skin_care_solutions_loading_content(); 59 return true; 60 } 61 }); 62 $('.button-upload').on( 'click', function(e) { 63 e.preventDefault(); 64 renderMediaUploader(); 65 }); 66 $('.theme-presets a').on( 'click', function(e) { 67 e.preventDefault(); 68 var $ul = $(this).parents('ul').first(); 69 $ul.find('.current').removeClass('current'); 70 var $li = $(this).parents('li').first(); 71 $li.addClass('current'); 72 var newcolor = $(this).data('style'); 73 $('#new_style').val(newcolor); 74 return false; 75 }); 76 } 77 78 function skin_care_solutions_loading_content(){} 79 80 function skin_care_solutions_do_next_step( btn ) { 81 current_step.removeClass( 'active-step' ); 82 $( '.nav-step-' + step_pointer ).removeClass( 'active-step' ); 83 current_step.addClass( 'done-step' ); 84 $( '.nav-step-' + step_pointer ).addClass( 'done-step' ); 85 current_step.fadeOut( 500, function() { 86 current_step = current_step.next(); 87 step_pointer = current_step.data( 'step' ); 88 current_step.fadeIn(); 89 current_step.addClass( 'active-step' ); 90 $( '.nav-step-' + step_pointer ).addClass( 'active-step' ); 91 $('.whizzie-wrap').removeClass( 'spinning' ); 92 }); 93 } 94 95 function skin_care_solutions_PluginManager(){ 96 97 var complete; 98 var items_completed = 0; 99 var current_item = ''; 100 var $current_node; 101 var current_item_hash = ''; 102 103 function ajax_callback(response){ 104 if(typeof response == 'object' && typeof response.message != 'undefined'){ 105 $current_node.find('span').text(response.message); 106 if(typeof response.url != 'undefined'){ 107 // we have an ajax url action to perform. 108 109 if(response.hash == current_item_hash){ 110 $current_node.find('span').text("failed"); 111 skin_care_solutions_find_next(); 112 }else { 113 current_item_hash = response.hash; 114 jQuery.post(response.url, response, function(response2) { 115 skin_care_solutions_process_current(); 116 $current_node.find('span').text(response.message + whizzie_params.verify_text); 117 }).fail(ajax_callback); 118 } 119 120 }else if(typeof response.done != 'undefined'){ 121 // finished processing this plugin, move onto next 122 skin_care_solutions_find_next(); 123 }else{ 124 // error processing this plugin 125 skin_care_solutions_find_next(); 126 } 127 }else{ 128 // error - try again with next plugin 129 $current_node.find('span').text("ajax error"); 130 skin_care_solutions_find_next(); 131 } 132 } 133 function skin_care_solutions_process_current() { 134 if(current_item){ 135 // query our ajax handler to get the ajax to send to TGM 136 // if we don't get a reply we can assume everything worked and continue onto the next one. 137 jQuery.post(whizzie_params.ajaxurl, { 138 action: 'setup_plugins', 139 wpnonce: whizzie_params.wpnonce, 140 slug: current_item 141 }, ajax_callback).fail(ajax_callback); 142 } 143 } 144 function skin_care_solutions_find_next(){ 145 var do_next = false; 146 if($current_node){ 147 if(!$current_node.data('done_item')){ 148 items_completed++; 149 $current_node.data('done_item',1); 150 } 151 $current_node.find('.spinner').css('visibility','hidden'); 152 } 153 var $li = $('.whizzie-do-plugins li'); 154 $li.each(function(){ 155 if(current_item == '' || do_next){ 156 current_item = $(this).data('slug'); 157 $current_node = $(this); 158 skin_care_solutions_process_current(); 159 do_next = false; 160 }else if($(this).data('slug') == current_item){ 161 do_next = true; 162 } 163 }); 164 if(items_completed >= $li.length){ 165 // finished all plugins! 166 complete(); 167 } 168 } 169 170 return { 171 init: function(btn){ 172 $('.envato-wizard-plugins').addClass('installing'); 173 complete = function(){ 174 skin_care_solutions_do_next_step(); 175 }; 176 skin_care_solutions_find_next(); 177 } 178 } 179 } 180 181 function skin_care_solutions_WidgetManager() { 182 function skin_care_solutions_import_widgets(){ 183 jQuery.post( 184 whizzie_params.ajaxurl, 185 { 186 action: 'skin_care_solutions_setup_widgets', 187 wpnonce: whizzie_params.wpnonce 188 }, 189 complete 190 ); 1 /** 2 * Getting Started page: setup steps, plugin installer, demo import, 3 * coupon copy buttons and the welcome notice dismiss. 4 */ 5 ( function ( $ ) { 6 'use strict'; 7 8 var params = window.skin_care_solutions_setup || {}; 9 var i18n = params.i18n || {}; 10 11 var Setup = { 12 13 init: function () { 14 this.$root = $( '#omg-setup' ); 15 if ( ! this.$root.length ) { 16 return; 17 } 18 this.total = parseInt( this.$root.data( 'total' ), 10 ) || this.$root.find( '.omg-step' ).length; 19 20 this.$root.on( 'click', '.omg-step__head', this.onToggle.bind( this ) ); 21 this.$root.on( 'click', '[data-omg-complete]', this.onComplete.bind( this ) ); 22 this.$root.on( 'change', '.omg-plugin__check', this.updatePluginCount.bind( this ) ); 23 this.$root.on( 'click', '.omg-install-plugins', this.installPlugins.bind( this ) ); 24 this.$root.on( 'click', '.omg-import-demo', this.importDemo.bind( this ) ); 25 26 this.updatePluginCount(); 27 }, 28 29 // Accordion: only one step open at a time. 30 openStep: function ( $step ) { 31 this.$root.find( '.omg-step.is-open' ).not( $step ).removeClass( 'is-open' ) 32 .find( '.omg-step__head' ).attr( 'aria-expanded', 'false' ); 33 $step.addClass( 'is-open' ).find( '.omg-step__head' ).attr( 'aria-expanded', 'true' ); 34 }, 35 36 closeStep: function ( $step ) { 37 $step.removeClass( 'is-open' ).find( '.omg-step__head' ).attr( 'aria-expanded', 'false' ); 38 }, 39 40 onToggle: function ( e ) { 41 var $step = $( e.currentTarget ).closest( '.omg-step' ); 42 if ( $step.hasClass( 'is-open' ) ) { 43 this.closeStep( $step ); 44 } else { 45 this.openStep( $step ); 46 } 47 }, 48 49 onComplete: function ( e ) { 50 var $el = $( e.currentTarget ); 51 // Links (e.g. "View your site") keep opening normally. 52 if ( ! $el.is( 'a' ) ) { 53 e.preventDefault(); 54 } 55 this.completeStep( $el.data( 'omg-complete' ), true ); 56 }, 57 58 /** 59 * Mark a step done, then move on to the next unfinished one. 60 * 61 * @param {string} id Step id. 62 * @param {boolean} save Store it on the server (imports save themselves). 63 */ 64 completeStep: function ( id, save ) { 65 var self = this; 66 var $step = this.$root.find( '.omg-step[data-step="' + id + '"]' ); 67 68 if ( save ) { 69 $.post( params.ajaxurl, { action: 'skin_care_solutions_setup_step', wpnonce: params.wpnonce, step: id } ); 70 } 71 72 $step.addClass( 'is-done' ); 73 this.updateProgress(); 74 $( document ).trigger( 'omg:step-complete', [ id ] ); 75 76 window.setTimeout( function () { 77 var $next = $step.nextAll( '.omg-step:not(.is-done)' ).first(); 78 if ( ! $next.length ) { 79 $next = self.$root.find( '.omg-step:not(.is-done)' ).first(); 80 } 81 if ( $next.length ) { 82 self.openStep( $next ); 83 } else { 84 self.closeStep( $step ); 85 } 86 }, 450 ); 87 }, 88 89 updateProgress: function () { 90 var done = this.$root.find( '.omg-step.is-done' ).length; 91 var pct = Math.max( 3, Math.round( done / this.total * 100 ) ); 92 93 this.$root.find( '.omg-setup__done' ).text( done ); 94 this.$root.find( '.omg-progress' ).attr( 'aria-valuenow', done ); 95 this.$root.find( '.omg-progress__bar' ).css( 'width', pct + '%' ); 96 this.$root.toggleClass( 'is-complete', done >= this.total ); 97 }, 98 99 showError: function ( $step, message ) { 100 $step.find( '.omg-step__error' ).text( message ).prop( 'hidden', ! message ); 101 }, 102 103 setBusy: function ( $btn, busy, label ) { 104 $btn.toggleClass( 'is-busy', busy ).prop( 'disabled', busy ); 105 if ( label ) { 106 $btn.find( '.omg-btn__label' ).text( label ); 107 } 108 }, 109 110 /* Plugins 111 --------------------------------------------- */ 112 113 pendingPlugins: function () { 114 return this.$root.find( '.omg-plugin:not(.is-ready)' ).filter( function () { 115 return $( this ).find( '.omg-plugin__check' ).is( ':checked' ); 116 } ); 117 }, 118 119 updatePluginCount: function () { 120 var count = this.pendingPlugins().length; 121 var $btn = this.$root.find( '.omg-install-plugins' ); 122 $btn.find( '.omg-btn__count' ).text( '(' + count + ')' ); 123 if ( ! $btn.hasClass( 'is-busy' ) ) { 124 $btn.prop( 'disabled', ! count ); 125 } 126 }, 127 128 setPluginStatus: function ( $item, state, text ) { 129 $item.find( '.omg-plugin__status' ) 130 .attr( 'class', 'omg-plugin__status omg-plugin__status--' + state ) 131 .text( text ); 132 }, 133 134 /** 135 * Install / update / activate one plugin through TGMPA. 136 * Our ajax handler returns the next TGMPA action until the plugin is active. 137 */ 138 installPlugin: function ( $item ) { 139 var self = this; 140 var deferred = $.Deferred(); 141 var lastHash = ''; 142 143 function fail() { 144 $item.removeClass( 'is-working' ); 145 self.setPluginStatus( $item, 'failed', i18n.failed ); 146 deferred.reject(); 147 } 148 149 function request() { 150 $.post( params.ajaxurl, { 151 action: 'setup_plugins', 152 wpnonce: params.wpnonce, 153 slug: $item.data( 'slug' ) 154 } ).done( handle ).fail( fail ); 155 } 156 157 function handle( response ) { 158 if ( ! response || 'object' !== typeof response ) { 159 return fail(); 160 } 161 if ( response.done ) { 162 $item.removeClass( 'is-working' ).addClass( 'is-ready' ); 163 $item.find( '.omg-plugin__check' ).prop( 'disabled', true ); 164 self.setPluginStatus( $item, 'active', i18n.active ); 165 return deferred.resolve(); 166 } 167 // Same action twice in a row means TGMPA could not finish it. 168 if ( ! response.url || response.hash === lastHash ) { 169 return fail(); 170 } 171 lastHash = response.hash; 172 self.setPluginStatus( $item, 'working', response.message || i18n.installing ); 173 $.post( response.url, response ).always( request ); 174 } 175 176 $item.addClass( 'is-working' ); 177 this.setPluginStatus( $item, 'working', i18n.installing ); 178 request(); 179 180 return deferred.promise(); 181 }, 182 183 installPlugins: function ( e ) { 184 var self = this; 185 var $btn = $( e.currentTarget ); 186 var $step = $btn.closest( '.omg-step' ); 187 var queue = this.pendingPlugins().toArray(); 188 var failed = 0; 189 190 if ( ! queue.length ) { 191 return; 192 } 193 194 this.showError( $step, '' ); 195 this.setBusy( $btn, true, i18n.installing ); 196 $step.find( '.omg-plugin__check, .omg-skip' ).prop( 'disabled', true ); 197 198 // One plugin at a time, TGMPA does not like parallel requests. 199 ( function next() { 200 var item = queue.shift(); 201 if ( item ) { 202 self.installPlugin( $( item ) ).fail( function () { 203 failed++; 204 } ).always( next ); 205 return; 206 } 207 208 $step.find( '.omg-skip' ).prop( 'disabled', false ); 209 $step.find( '.omg-plugin:not(.is-ready) .omg-plugin__check' ).each( function () { 210 // Required plugins stay locked. 211 var required = $( this ).closest( '.omg-plugin' ).find( '.omg-plugin__status--required' ).length; 212 $( this ).prop( 'disabled', !! required ); 213 } ); 214 215 if ( failed ) { 216 self.setBusy( $btn, false, i18n.install ); 217 self.updatePluginCount(); 218 self.showError( $step, i18n.pluginsErr ); 219 } else { 220 self.setBusy( $btn, false, i18n.installed ); 221 $btn.prop( 'disabled', true ).find( '.omg-btn__count' ).text( '' ); 222 self.completeStep( 'plugins', true ); 223 } 224 }() ); 225 }, 226 227 /* Demo import 228 --------------------------------------------- */ 229 230 importDemo: function ( e ) { 231 var self = this; 232 var $btn = $( e.currentTarget ); 233 var $step = $btn.closest( '.omg-step' ); 234 var label = $btn.find( '.omg-btn__label' ).text(); 235 // Elementor themes queue the Easy Demo Import for Omega Themes requests instead of the theme's own import. 236 var queue = ( params.importSteps || [ { action: 'skin_care_solutions_setup_widgets', wpnonce: params.wpnonce } ] ).slice(); 237 238 function fail( message ) { 239 self.setBusy( $btn, false, label ); 240 self.showError( $step, message || i18n.importErr ); 241 } 242 243 this.showError( $step, '' ); 244 this.setBusy( $btn, true, i18n.importing ); 245 246 ( function next() { 247 var data = queue.shift(); 248 if ( ! data ) { 249 self.setBusy( $btn, false, i18n.imported ); 250 $btn.prop( 'disabled', true ); 251 // The theme's own import saves the step itself. 252 self.completeStep( 'demo', false === params.importSaves ); 253 return; 254 } 255 // Read as text: PHP notices from the import should not count as a failure. 256 $.ajax( { 257 url: params.ajaxurl, 258 type: 'POST', 259 dataType: 'text', 260 data: data 261 } ).done( function ( text ) { 262 var response = parseJson( text ); 263 if ( response && false === response.success ) { 264 return fail( 'string' === typeof response.data ? response.data : '' ); 265 } 266 next(); 267 } ).fail( function () { 268 fail( '' ); 269 } ); 270 }() ); 191 271 } 192 return { 193 init: function( btn ) { 194 complete = function() { 195 skin_care_solutions_do_next_step(); 196 } 197 skin_care_solutions_import_widgets(); 272 }; 273 274 /** 275 * Parse a JSON reply that may have PHP notices printed before it. 276 * 277 * @param {string} text Raw response. 278 * @return {Object|null} 279 */ 280 function parseJson( text ) { 281 try { 282 return JSON.parse( text ); 283 } catch ( err ) { 284 try { 285 return JSON.parse( String( text ).replace( /^[\s\S]*?(\{[\s\S]*\})\s*$/, '$1' ) ); 286 } catch ( err2 ) { 287 return null; 198 288 } 199 289 } 200 290 } 201 291 202 function skin_care_solutions_ContentManager(){ 203 204 var complete; 205 var items_completed = 0; 206 var current_item = ''; 207 var $current_node; 208 var current_item_hash = ''; 209 210 function ajax_callback(response) { 211 if(typeof response == 'object' && typeof response.message != 'undefined'){ 212 $current_node.find('span').text(response.message); 213 if(typeof response.url != 'undefined'){ 214 // we have an ajax url action to perform. 215 if(response.hash == current_item_hash){ 216 $current_node.find('span').text("failed"); 217 skin_care_solutions_find_next(); 218 }else { 219 current_item_hash = response.hash; 220 jQuery.post(response.url, response, ajax_callback).fail(ajax_callback); // recuurrssionnnnn 221 } 222 }else if(typeof response.done != 'undefined'){ 223 // finished processing this plugin, move onto next 224 skin_care_solutions_find_next(); 225 }else{ 226 // error processing this plugin 227 skin_care_solutions_find_next(); 228 } 229 }else{ 230 // error - try again with next plugin 231 $current_node.find('span').text("ajax error"); 232 skin_care_solutions_find_next(); 233 } 234 } 235 236 function skin_care_solutions_process_current(){ 237 if(current_item){ 238 239 var $check = $current_node.find('input:checkbox'); 240 if($check.is(':checked')) { 241 // process htis one! 242 jQuery.post(whizzie_params.ajaxurl, { 243 action: 'envato_setup_content', 244 wpnonce: whizzie_params.wpnonce, 245 content: current_item 246 }, ajax_callback).fail(ajax_callback); 247 }else{ 248 $current_node.find('span').text("Skipping"); 249 setTimeout(skin_care_solutions_find_next,300); 250 } 251 } 252 } 253 254 255 return { 256 init: function(btn){ 257 $('.envato-setup-pages').addClass('installing'); 258 $('.envato-setup-pages').find('input').prop("disabled", true); 259 complete = function(){ 260 skin_care_solutions_loading_content(); 261 window.location.href=btn.href; 262 }; 263 skin_care_solutions_find_next(); 264 } 265 } 266 } 267 268 /** 269 * Callback function for the 'click' event of the 'Set Footer Image' 270 * anchor in its meta box. 271 * 272 * Displays the media uploader for selecting an image. 273 * 274 * @since 0.1.0 275 */ 276 function renderMediaUploader() { 277 'use strict'; 278 279 var file_frame, attachment; 280 281 if ( undefined !== file_frame ) { 282 file_frame.open(); 283 return; 284 } 285 286 file_frame = wp.media.frames.file_frame = wp.media({ 287 title: 'Upload Logo',//jQuery( this ).data( 'uploader_title' ), 288 button: { 289 text: 'Select Logo' //jQuery( this ).data( 'uploader_button_text' ) 290 }, 291 multiple: false // Set to true to allow multiple files to be selected 292 }); 293 294 // When an image is selected, run a callback. 295 file_frame.on( 'select', function() { 296 // We set multiple to false so only get one image from the uploader 297 attachment = file_frame.state().get('selection').first().toJSON(); 298 299 jQuery('.site-logo').attr('src',attachment.url); 300 jQuery('#new_logo_id').val(attachment.id); 301 // Do something with attachment.id and/or attachment.url here 302 }); 303 // Now display the actual file_frame 304 file_frame.open(); 305 306 } 307 308 return { 309 init: function(){ 310 t = this; 311 $(skin_care_solutions_window_loaded); 312 }, 313 callback: function(func){ 314 console.log(func); 315 console.log(this); 316 } 317 } 318 319 })(jQuery); 320 321 Skin_Care_Solutions_Whizzie.init(); 322 323 jQuery(document).ready(function(){ 324 325 jQuery('#skin-care-solutions-demo-setup-guid .skin-care-solutions-setup-menu').attr("checked","checked"); 326 327 jQuery('#skin-care-solutions-setup-menu').click(function(){ 328 jQuery('#skin-care-solutions-demo-setup-guid .skin-care-solutions-setup-menu').css("display","block"); 329 jQuery('#skin-care-solutions-demo-setup-guid .skin-care-solutions-setup-contact').css("display","none"); 330 jQuery('#skin-care-solutions-demo-setup-guid .skin-care-solutions-setup-widget').css("display","none"); 331 jQuery('#skin-care-solutions-demo-setup-guid .skin-care-solutions-setup-social-icon').css("display","none"); 332 }); 333 334 jQuery('#skin-care-solutions-setup-contact').click(function(){ 335 jQuery('#skin-care-solutions-demo-setup-guid .skin-care-solutions-setup-menu').css("display","none"); 336 jQuery('#skin-care-solutions-demo-setup-guid .skin-care-solutions-setup-contact').css("display","block"); 337 jQuery('#skin-care-solutions-demo-setup-guid .skin-care-solutions-setup-widget').css("display","none"); 338 jQuery('#skin-care-solutions-demo-setup-guid .skin-care-solutions-setup-social-icon').css("display","none"); 339 }); 340 341 jQuery('#skin-care-solutions-setup-widget').click(function(){ 342 jQuery('#skin-care-solutions-demo-setup-guid .skin-care-solutions-setup-menu').css("display","none"); 343 jQuery('#skin-care-solutions-demo-setup-guid .skin-care-solutions-setup-contact').css("display","none"); 344 jQuery('#skin-care-solutions-demo-setup-guid .skin-care-solutions-setup-widget').css("display","block"); 345 jQuery('#skin-care-solutions-demo-setup-guid .skin-care-solutions-setup-social-icon').css("display","none"); 346 }); 347 348 jQuery('#skin-care-solutions-setup-social').click(function(){ 349 jQuery('#skin-care-solutions-demo-setup-guid .skin-care-solutions-setup-menu').css("display","none"); 350 jQuery('#skin-care-solutions-demo-setup-guid .skin-care-solutions-setup-contact').css("display","none"); 351 jQuery('#skin-care-solutions-demo-setup-guid .skin-care-solutions-setup-widget').css("display","none"); 352 jQuery('#skin-care-solutions-demo-setup-guid .skin-care-solutions-setup-social-icon').css("display","block"); 353 }); 354 355 356 document.getElementById('bundleTrigger').addEventListener('click', function (e) { 357 e.preventDefault(); 358 document.getElementById('bundlePopup').style.display = 'flex'; 359 }); 360 361 document.querySelector('.close-popup').addEventListener('click', function () { 362 document.getElementById('bundlePopup').style.display = 'none'; 363 }); 364 365 document.getElementById('bundlePopup').addEventListener('click', function (e) { 366 if (e.target === this) { 367 this.style.display = 'none'; 368 } 369 }); 370 371 }); 292 /* Focus mode: only the setup card is usable until the demo is imported 293 --------------------------------------------- */ 294 295 var Focus = { 296 297 init: function () { 298 this.$wrap = $( '.omg-wrap.is-focus' ); 299 if ( ! this.$wrap.length ) { 300 return; 301 } 302 this.$tip = this.$wrap.find( '.omg-focus-tip' ); 303 // Keep keyboard users inside the setup card too. 304 this.$blurred = this.$wrap.children().not( '.omg-layout' ).add( this.$wrap.find( '.omg-main' ) ); 305 this.$blurred.attr( 'inert', '' ); 306 307 this.$tip.on( 'click', '.omg-focus-ok', this.hideTip.bind( this ) ); 308 this.$tip.on( 'click', '.omg-focus-exit', this.exit.bind( this ) ); 309 $( document ).on( 'omg:step-complete', function ( e, id ) { 310 if ( 'demo' === id ) { 311 Focus.exit(); 312 } 313 } ); 314 315 $( '#omg-setup' )[0].scrollIntoView( { block: 'nearest' } ); 316 }, 317 318 hideTip: function () { 319 var $tip = this.$tip; 320 $tip.addClass( 'is-leaving' ); 321 window.setTimeout( function () { 322 $tip.remove(); 323 }, 350 ); 324 }, 325 326 exit: function () { 327 if ( ! this.$wrap.hasClass( 'is-focus' ) ) { 328 return; 329 } 330 this.hideTip(); 331 this.$wrap.removeClass( 'is-focus' ); 332 this.$blurred.removeAttr( 'inert' ); 333 334 // Reloading the page should not bring the blur back. 335 if ( window.history.replaceState ) { 336 window.history.replaceState( null, '', window.location.href.replace( /([?&])omg-focus=1(&|$)/, function ( m, p1, p2 ) { 337 return p2 ? p1 : ''; 338 } ) ); 339 } 340 } 341 }; 342 343 /* Coupon copy buttons 344 --------------------------------------------- */ 345 346 function copyText( text ) { 347 if ( navigator.clipboard && window.isSecureContext ) { 348 return navigator.clipboard.writeText( text ); 349 } 350 var $tmp = $( '<textarea readonly>' ).val( text ).css( { position: 'fixed', opacity: 0 } ).appendTo( 'body' ); 351 $tmp[0].select(); 352 try { 353 document.execCommand( 'copy' ); 354 } catch ( err ) {} 355 $tmp.remove(); 356 return $.Deferred().resolve().promise(); 357 } 358 359 $( document ).on( 'click', '[data-omg-copy]', function () { 360 var $btn = $( this ); 361 var original = $btn.data( 'omg-label' ) || $btn.text(); 362 $btn.data( 'omg-label', original ); 363 364 copyText( String( $btn.data( 'omg-copy' ) ) ).then( function () { 365 $btn.addClass( 'is-copied' ).text( i18n.copied ); 366 window.clearTimeout( $btn.data( 'omg-timer' ) ); 367 $btn.data( 'omg-timer', window.setTimeout( function () { 368 $btn.removeClass( 'is-copied' ).text( original ); 369 }, 1800 ) ); 370 } ); 371 } ); 372 373 /* Welcome notice 374 --------------------------------------------- */ 375 376 $( document ).on( 'click', '.omg-notice__close', function ( e ) { 377 var $notice = $( this ).closest( '.omg-notice' ); 378 e.preventDefault(); 379 380 $.post( params.ajaxurl, { action: 'skin_care_solutions_dismiss_notice', nonce: $notice.data( 'nonce' ) } ); 381 $notice.addClass( 'is-leaving' ); 382 window.setTimeout( function () { 383 $notice.slideUp( 200, function () { 384 $notice.remove(); 385 } ); 386 }, 250 ); 387 } ); 388 389 $( function () { 390 Setup.init(); 391 Focus.init(); 392 } ); 393 394 }( jQuery ) ); -
skin-care-solutions/1.4.2/inc/homepage-setup/homepage-setup-contents.php
r354504 r356312 1 1 <?php 2 2 /** 3 * Wizard3 * Getting Started page and setup wizard 4 4 * 5 5 * @package Skin_Care_Solutions_Whizzie 6 * @author CatapultThemes6 * @author Omega Themes 7 7 * @since 1.0.0 8 8 */ 9 9 10 /** 11 * Setup step ids in the order they are shown. 12 */ 13 function skin_care_solutions_setup_step_ids() { 14 return array( 'plugins', 'demo', 'customize', 'launch' ); 15 } 16 17 /** 18 * Check whether every plugin registered with TGMPA is active and up to date. 19 */ 20 function skin_care_solutions_setup_plugins_ready() { 21 if ( ! isset( $GLOBALS['tgmpa'] ) ) { 22 return true; 23 } 24 $skin_care_solutions_instance = call_user_func( array( get_class( $GLOBALS['tgmpa'] ), 'get_instance' ) ); 25 foreach ( $skin_care_solutions_instance->plugins as $skin_care_solutions_slug => $skin_care_solutions_plugin ) { 26 if ( ! $skin_care_solutions_instance->is_plugin_active( $skin_care_solutions_slug ) || false !== $skin_care_solutions_instance->does_plugin_have_update( $skin_care_solutions_slug ) ) { 27 return false; 28 } 29 } 30 return true; 31 } 32 33 /** 34 * Get the completion state of each setup step. 35 * 36 * @return array step id => bool 37 */ 38 function skin_care_solutions_get_setup_progress() { 39 $skin_care_solutions_saved = (array) get_option( 'skin_care_solutions_setup_progress', array() ); 40 41 // Demo imported before progress tracking existed. Every Omega theme uses frontpage.php, so look for 42 // the primary menu only this theme's import creates; another theme's demo must not count. 43 $skin_care_solutions_demo_found = (bool) wp_get_nav_menu_object( 'Skin Care Solutions Primary Menu' ); 44 45 return array( 46 'plugins' => ! empty( $skin_care_solutions_saved['plugins'] ) || skin_care_solutions_setup_plugins_ready(), 47 'demo' => ! empty( $skin_care_solutions_saved['demo'] ) || $skin_care_solutions_demo_found, 48 'customize' => ! empty( $skin_care_solutions_saved['customize'] ), 49 'launch' => ! empty( $skin_care_solutions_saved['launch'] ), 50 ); 51 } 52 53 /** 54 * Save a step as done. 55 * 56 * @param string $skin_care_solutions_step Step id. 57 */ 58 function skin_care_solutions_set_setup_step_done( $skin_care_solutions_step ) { 59 if ( ! in_array( $skin_care_solutions_step, skin_care_solutions_setup_step_ids(), true ) ) { 60 return; 61 } 62 $skin_care_solutions_saved = (array) get_option( 'skin_care_solutions_setup_progress', array() ); 63 $skin_care_solutions_saved[ $skin_care_solutions_step ] = true; 64 update_option( 'skin_care_solutions_setup_progress', $skin_care_solutions_saved ); 65 } 66 10 67 class Skin_Care_Solutions_Whizzie { 11 12 protected $version = '1. 1.0';13 68 69 protected $version = '1.2.0'; 70 14 71 /** @var string Current theme name, used as namespace in actions. */ 15 72 protected $skin_care_solutions_theme_name = ''; 16 73 protected $skin_care_solutions_theme_title = ''; 17 74 18 75 /** @var string Wizard page slug and title. */ 19 76 protected $skin_care_solutions_page_slug = ''; 20 77 protected $skin_care_solutions_page_title = ''; 21 78 79 /** @var string Hook suffix returned by add_theme_page(). */ 80 protected $page_hook = ''; 81 22 82 /** @var array Wizard steps set by user. */ 23 83 protected $config_steps = array(); 24 84 25 85 /** 26 86 * Relative plugin url for this plugin folder … … 32 92 public $skin_care_solutions_plugin_path; 33 93 public $parent_slug; 34 94 35 95 /** 36 96 * TGMPA instance storage … … 39 99 */ 40 100 protected $tgmpa_instance; 41 101 42 102 /** 43 103 * TGMPA Menu slug … … 46 106 */ 47 107 protected $tgmpa_menu_slug = 'tgmpa-install-plugins'; 48 108 49 109 /** 50 110 * TGMPA Menu url … … 53 113 */ 54 114 protected $tgmpa_url = 'themes.php?page=tgmpa-install-plugins'; 55 115 56 116 /** 57 117 * Constructor 58 118 * 59 * @param $ config Our config parameters60 */ 61 public function __construct( $ config ) {62 $this->set_vars( $ config );119 * @param $skin_care_solutions_config Our config parameters 120 */ 121 public function __construct( $skin_care_solutions_config ) { 122 $this->set_vars( $skin_care_solutions_config ); 63 123 $this->init(); 64 124 } 65 125 66 126 /** 67 127 * Set some settings 68 128 * @since 1.0.0 69 * @param $ config Our config parameters70 */ 71 public function set_vars( $ config ) {72 129 * @param $skin_care_solutions_config Our config parameters 130 */ 131 public function set_vars( $skin_care_solutions_config ) { 132 73 133 require_once trailingslashit( WHIZZIE_DIR ) . 'tgm/class-tgm-plugin-activation.php'; 74 134 require_once trailingslashit( WHIZZIE_DIR ) . 'tgm/tgm.php'; 75 135 76 if( isset( $ config['skin_care_solutions_page_slug'] ) ) {77 $this->skin_care_solutions_page_slug = esc_attr( $ config['skin_care_solutions_page_slug'] );78 } 79 if( isset( $ config['skin_care_solutions_page_title'] ) ) {80 $this->skin_care_solutions_page_title = esc_attr( $ config['skin_care_solutions_page_title'] );81 } 82 if( isset( $ config['steps'] ) ) {83 $this->config_steps = $ config['steps'];84 } 85 136 if( isset( $skin_care_solutions_config['skin_care_solutions_page_slug'] ) ) { 137 $this->skin_care_solutions_page_slug = esc_attr( $skin_care_solutions_config['skin_care_solutions_page_slug'] ); 138 } 139 if( isset( $skin_care_solutions_config['skin_care_solutions_page_title'] ) ) { 140 $this->skin_care_solutions_page_title = esc_attr( $skin_care_solutions_config['skin_care_solutions_page_title'] ); 141 } 142 if( isset( $skin_care_solutions_config['steps'] ) ) { 143 $this->config_steps = $skin_care_solutions_config['steps']; 144 } 145 86 146 $this->skin_care_solutions_plugin_path = trailingslashit( dirname( __FILE__ ) ); 87 $ relative_url = str_replace( get_template_directory(), '', $this->skin_care_solutions_plugin_path );88 $this->skin_care_solutions_plugin_url = trailingslashit( get_template_directory_uri() . $ relative_url );147 $skin_care_solutions_relative_url = str_replace( get_template_directory(), '', $this->skin_care_solutions_plugin_path ); 148 $this->skin_care_solutions_plugin_url = trailingslashit( get_template_directory_uri() . $skin_care_solutions_relative_url ); 89 149 $skin_care_solutions_current_theme = wp_get_theme(); 90 150 $this->skin_care_solutions_theme_title = $skin_care_solutions_current_theme->get( 'Name' ); … … 94 154 95 155 } 96 156 97 157 /** 98 158 * Hooks and filters 99 159 * @since 1.0.0 100 */ 160 */ 101 161 public function init() { 102 162 103 163 if ( class_exists( 'TGM_Plugin_Activation' ) && isset( $GLOBALS['tgmpa'] ) ) { 104 164 add_action( 'init', array( $this, 'get_tgmpa_instance' ), 30 ); … … 111 171 add_action( 'wp_ajax_setup_plugins', array( $this, 'setup_plugins' ) ); 112 172 add_action( 'wp_ajax_skin_care_solutions_setup_widgets', array( $this, 'skin_care_solutions_setup_widgets' ) ); 113 114 } 115 116 public function enqueue_scripts() { 117 wp_enqueue_style( 'skin-care-solutions-homepage-setup-style', get_template_directory_uri() . '/inc/homepage-setup/assets/css/homepage-setup-style.css'); 118 wp_register_script( 'skin-care-solutions-homepage-setup-script', get_template_directory_uri() . '/inc/homepage-setup/assets/js/homepage-setup-script.js', array( 'jquery' ), time() ); 119 wp_localize_script( 173 add_action( 'wp_ajax_skin_care_solutions_setup_step', array( $this, 'skin_care_solutions_setup_step' ) ); 174 175 } 176 177 /** 178 * Load assets on the Getting Started page, and wherever the welcome notice is shown. 179 * 180 * @param string $skin_care_solutions_hook Current admin page hook suffix. 181 */ 182 public function enqueue_scripts( $skin_care_solutions_hook ) { 183 $skin_care_solutions_is_setup_page = ( $skin_care_solutions_hook === $this->page_hook ); 184 $skin_care_solutions_has_notice = function_exists( 'skin_care_solutions_show_admin_notice' ) && skin_care_solutions_show_admin_notice(); 185 186 if ( ! $skin_care_solutions_is_setup_page && ! $skin_care_solutions_has_notice ) { 187 return; 188 } 189 190 $skin_care_solutions_version = wp_get_theme()->get( 'Version' ); 191 192 // The bundled Plus Jakarta Sans is Regular only, so load real weights through the local webfont loader. 193 require_once get_theme_file_path( 'lib/custom/css/wptt-webfont-loader.php' ); 194 wp_enqueue_style( 'skin-care-solutions-setup-fonts', skin_care_solutions_wptt_get_webfont_url( 'https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@500;600;700;800&display=swap' ), array(), $skin_care_solutions_version ); 195 // Version the page assets by file time so browsers and caching plugins never serve a stale copy after an update. 196 $skin_care_solutions_css = 'inc/homepage-setup/assets/css/homepage-setup-style.css'; 197 $skin_care_solutions_js = 'inc/homepage-setup/assets/js/homepage-setup-script.js'; 198 wp_enqueue_style( 'skin-care-solutions-homepage-setup-style', get_theme_file_uri( $skin_care_solutions_css ), array( 'skin-care-solutions-setup-fonts' ), $skin_care_solutions_version . '.' . filemtime( get_theme_file_path( $skin_care_solutions_css ) ) ); 199 wp_register_script( 'skin-care-solutions-homepage-setup-script', get_theme_file_uri( $skin_care_solutions_js ), array( 'jquery' ), $skin_care_solutions_version . '.' . filemtime( get_theme_file_path( $skin_care_solutions_js ) ), true ); 200 wp_localize_script( 120 201 'skin-care-solutions-homepage-setup-script', 121 ' whizzie_params',202 'skin_care_solutions_setup', 122 203 array( 123 'ajaxurl' => admin_url( 'admin-ajax.php' ), 124 'wpnonce' => wp_create_nonce( 'whizzie_nonce' ), 125 'verify_text' => esc_html( 'verifying', 'skin-care-solutions' ) 204 'ajaxurl' => admin_url( 'admin-ajax.php' ), 205 'wpnonce' => wp_create_nonce( 'whizzie_nonce' ), 206 'i18n' => array( 207 'installing' => esc_html__( 'Working…', 'skin-care-solutions' ), 208 'active' => esc_html__( 'Active', 'skin-care-solutions' ), 209 'failed' => esc_html__( 'Failed', 'skin-care-solutions' ), 210 'install' => esc_html__( 'Install & activate', 'skin-care-solutions' ), 211 'installed' => esc_html__( 'Plugins ready', 'skin-care-solutions' ), 212 'pluginsErr' => esc_html__( 'Some plugins could not be installed. Try again, or install them from the plugins screen.', 'skin-care-solutions' ), 213 'importing' => esc_html__( 'Importing demo…', 'skin-care-solutions' ), 214 'imported' => esc_html__( 'Demo imported', 'skin-care-solutions' ), 215 'importErr' => esc_html__( 'The import did not finish. Please try again.', 'skin-care-solutions' ), 216 'copied' => esc_html__( 'Copied!', 'skin-care-solutions' ), 217 ), 126 218 ) 127 219 ); 128 220 wp_enqueue_script( 'skin-care-solutions-homepage-setup-script' ); 129 221 } 130 222 131 223 public static function get_instance() { 132 224 if ( ! self::$instance ) { … … 135 227 return self::$instance; 136 228 } 137 138 public function tgmpa_load( $s tatus ) {229 230 public function tgmpa_load( $skin_care_solutions_status ) { 139 231 return is_admin() || current_user_can( 'install_themes' ); 140 232 } 141 233 142 234 /** 143 235 * Get configured TGMPA instance … … 149 241 $this->tgmpa_instance = call_user_func( array( get_class( $GLOBALS['tgmpa'] ), 'get_instance' ) ); 150 242 } 151 152 /** 153 * Update $tgmpa_menu_slug and $ tgmpa_parent_slug from TGMPA instance243 244 /** 245 * Update $tgmpa_menu_slug and $skin_care_solutions_tgmpa_parent_slug from TGMPA instance 154 246 * 155 247 * @access public … … 159 251 $this->tgmpa_menu_slug = ( property_exists( $this->tgmpa_instance, 'menu' ) ) ? $this->tgmpa_instance->menu : $this->tgmpa_menu_slug; 160 252 $this->tgmpa_menu_slug = apply_filters( $this->skin_care_solutions_theme_name . '_theme_setup_wizard_tgmpa_menu_slug', $this->tgmpa_menu_slug ); 161 $ tgmpa_parent_slug = ( property_exists( $this->tgmpa_instance, 'parent_slug' ) && $this->tgmpa_instance->parent_slug !== 'themes.php' ) ? 'admin.php' : 'themes.php';162 $this->tgmpa_url = apply_filters( $this->skin_care_solutions_theme_name . '_theme_setup_wizard_tgmpa_url', $ tgmpa_parent_slug . '?page=' . $this->tgmpa_menu_slug );163 } 164 165 /** 166 * Make a modal screen for the wizard253 $skin_care_solutions_tgmpa_parent_slug = ( property_exists( $this->tgmpa_instance, 'parent_slug' ) && $this->tgmpa_instance->parent_slug !== 'themes.php' ) ? 'admin.php' : 'themes.php'; 254 $this->tgmpa_url = apply_filters( $this->skin_care_solutions_theme_name . '_theme_setup_wizard_tgmpa_url', $skin_care_solutions_tgmpa_parent_slug . '?page=' . $this->tgmpa_menu_slug ); 255 } 256 257 /** 258 * Register the Getting Started page under Appearance 167 259 */ 168 260 public function menu_page() { 169 add_theme_page( esc_html( $this->skin_care_solutions_page_title ), esc_html( $this->skin_care_solutions_page_title ), 'manage_options', $this->skin_care_solutions_page_slug, array( $this, 'wizard_page' ) ); 170 } 171 172 /** 173 * Make an interface for the wizard 174 */ 175 public function wizard_page() { 261 $this->page_hook = add_theme_page( esc_html( $this->skin_care_solutions_page_title ), esc_html( $this->skin_care_solutions_page_title ), 'manage_options', $this->skin_care_solutions_page_slug, array( $this, 'wizard_page' ) ); 262 } 263 264 /** 265 * Small inline SVG icons used on the page 266 * 267 * @param string $skin_care_solutions_name Icon name. 268 */ 269 public function icon( $skin_care_solutions_name ) { 270 $skin_care_solutions_icons = array( 271 'check' => '<svg class="omg-icon" viewBox="0 0 24 24" aria-hidden="true"><path d="M5 12.5l4.2 4.2L19 7" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round"/></svg>', 272 'arrow' => '<svg class="omg-icon" viewBox="0 0 24 24" aria-hidden="true"><path d="M5 12h14M13 6l6 6-6 6" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg>', 273 'close' => '<svg class="omg-icon" viewBox="0 0 24 24" aria-hidden="true"><path d="M6 6l12 12M18 6L6 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"/></svg>', 274 'crown' => '<svg class="omg-icon" viewBox="0 0 24 24" aria-hidden="true"><path d="M3 8l4.5 4L12 5l4.5 7L21 8l-2 11H5L3 8z" fill="currentColor" stroke="currentColor" stroke-width="1.5" stroke-linejoin="round"/></svg>', 275 'download' => '<svg class="omg-icon" viewBox="0 0 24 24" aria-hidden="true"><path d="M12 4v11M7 10l5 5 5-5M5 20h14" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg>', 276 'dash' => '<svg class="omg-icon" viewBox="0 0 24 24" aria-hidden="true"><path d="M7 12h10" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"/></svg>', 277 'eye' => '<svg class="omg-icon" viewBox="0 0 24 24" aria-hidden="true"><path d="M2 12s3.6-7 10-7 10 7 10 7-3.6 7-10 7S2 12 2 12z" fill="none" stroke="currentColor" stroke-width="2" stroke-linejoin="round"/><path d="M12 9.2a2.8 2.8 0 1 0 0 5.6 2.8 2.8 0 0 0 0-5.6z" fill="none" stroke="currentColor" stroke-width="2"/></svg>', 278 'book' => '<svg class="omg-icon" viewBox="0 0 24 24" aria-hidden="true"><path d="M4 5.5A2.5 2.5 0 0 1 6.5 3H20v15H6.5A2.5 2.5 0 0 0 4 20.5v-15zM4 20.5A2.5 2.5 0 0 0 6.5 23H20v-5" fill="none" stroke="currentColor" stroke-width="2" stroke-linejoin="round"/></svg>', 279 'table' => '<svg class="omg-icon" viewBox="0 0 24 24" aria-hidden="true"><path d="M4 5h16v14H4zM4 10h16M10 10v9" fill="none" stroke="currentColor" stroke-width="2" stroke-linejoin="round"/></svg>', 280 ); 281 return isset( $skin_care_solutions_icons[ $skin_care_solutions_name ] ) ? $skin_care_solutions_icons[ $skin_care_solutions_name ] : ''; 282 } 283 284 /** 285 * Allowed tags for printing the inline icons 286 */ 287 public function icon_kses() { 288 return array( 289 'svg' => array( 'class' => true, 'viewbox' => true, 'aria-hidden' => true ), 290 'path' => array( 'd' => true, 'fill' => true, 'stroke' => true, 'stroke-width' => true, 'stroke-linecap' => true, 'stroke-linejoin' => true ), 291 ); 292 } 293 294 /** 295 * Make an interface for the Getting Started page 296 */ 297 public function wizard_page() { 176 298 tgmpa_load_bulk_installer(); 177 299 … … 180 302 } 181 303 182 $ url = wp_nonce_url( add_query_arg( array( 'plugins' => 'go' ) ), 'whizzie-setup' );183 $ method = '';184 $ fields = array_keys( $_POST );185 186 if ( false === ( $ creds = request_filesystem_credentials( esc_url_raw( $url ), $method, false, false, $fields ) ) ) {304 $skin_care_solutions_url = wp_nonce_url( add_query_arg( array( 'plugins' => 'go' ) ), 'whizzie-setup' ); 305 $skin_care_solutions_method = ''; 306 $skin_care_solutions_fields = array_keys( $_POST ); 307 308 if ( false === ( $skin_care_solutions_creds = request_filesystem_credentials( esc_url_raw( $skin_care_solutions_url ), $skin_care_solutions_method, false, false, $skin_care_solutions_fields ) ) ) { 187 309 return true; 188 310 } 189 311 190 if ( ! WP_Filesystem( $ creds ) ) {191 request_filesystem_credentials( esc_url_raw( $ url ), $method, true, false, $fields );312 if ( ! WP_Filesystem( $skin_care_solutions_creds ) ) { 313 request_filesystem_credentials( esc_url_raw( $skin_care_solutions_url ), $skin_care_solutions_method, true, false, $skin_care_solutions_fields ); 192 314 return true; 193 315 } … … 196 318 $skin_care_solutions_theme_title = $skin_care_solutions_theme->get( 'Name' ); 197 319 $skin_care_solutions_theme_version = $skin_care_solutions_theme->get( 'Version' ); 198 320 $skin_care_solutions_theme_desc = wp_trim_words( $skin_care_solutions_theme->get( 'Description' ), 28 ); 321 322 $skin_care_solutions_steps = $this->get_steps(); 323 $skin_care_solutions_progress = skin_care_solutions_get_setup_progress(); 324 $skin_care_solutions_focus = ! empty( $_GET['omg-focus'] ) && empty( $skin_care_solutions_progress['demo'] ); // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- display flag only. 325 $skin_care_solutions_done = count( array_filter( $skin_care_solutions_progress ) ); 326 $skin_care_solutions_total = count( $skin_care_solutions_steps ); 327 328 // The first unfinished step starts open. 329 $skin_care_solutions_open = ''; 330 foreach ( $skin_care_solutions_steps as $skin_care_solutions_id => $skin_care_solutions_step ) { 331 if ( empty( $skin_care_solutions_progress[ $skin_care_solutions_id ] ) ) { 332 $skin_care_solutions_open = $skin_care_solutions_id; 333 break; 334 } 335 } 336 337 $skin_care_solutions_images = get_template_directory_uri() . '/inc/homepage-setup/assets/homepage-setup-images/'; 338 $skin_care_solutions_check = wp_kses( $this->icon( 'check' ), $this->icon_kses() ); 339 $skin_care_solutions_dash = wp_kses( $this->icon( 'dash' ), $this->icon_kses() ); 340 $skin_care_solutions_arrow = wp_kses( $this->icon( 'arrow' ), $this->icon_kses() ); 341 $skin_care_solutions_crown = wp_kses( $this->icon( 'crown' ), $this->icon_kses() ); 342 $skin_care_solutions_live = '<span class="omg-live-dot" aria-hidden="true"></span>'; 199 343 ?> 200 <div class="wrap"> 201 <?php 202 printf( '<h1>%s %s</h1>', esc_html( $skin_care_solutions_theme_title ), esc_html( '(Version :- ' . $skin_care_solutions_theme_version . ')' ) ); 203 ?> 204 <div class="homepage-setup"> 205 <div class="homepage-setup-theme-bundle"> 206 <div class="homepage-setup-theme-bundle-one"> 207 <h1><?php echo esc_html__( 'WP Theme Bundle', 'skin-care-solutions' ); ?></h1> 208 <p><?php echo wp_kses_post( 'Get <span>15% OFF</span> on all WordPress themes! Use code <span>"BNDL15OFF"</span> at checkout. Limited time offer!' ); ?></p> 209 </div> 210 <div class="homepage-setup-theme-bundle-two"> 211 <p><?php echo wp_kses_post( 'Extra <span>15%</span> OFF' ); ?></p> 212 </div> 213 <div class="homepage-setup-theme-bundle-three"> 214 <img src="<?php echo esc_url( get_template_directory_uri() . '/inc/homepage-setup/assets/homepage-setup-images/bundle-banner.png' ); ?>" alt="<?php echo esc_attr__( 'Theme Bundle Image', 'skin-care-solutions' ); ?>"> 215 </div> 216 <div class="homepage-setup-theme-bundle-four"> 217 <p><?php echo wp_kses_post( '<span>$2795</span>$69' ); ?></p> 218 <a target="_blank" href="<?php echo esc_url( SKIN_CARE_SOLUTIONS_BUNDLE_BUTTON ); ?>"><?php echo esc_html__( 'SHOP NOW', 'skin-care-solutions' ); ?> <span class="dashicons dashicons-arrow-right-alt2"></span></a> 219 </div> 344 <div class="wrap omg-wrap<?php echo $skin_care_solutions_focus ? ' is-focus' : ''; ?>"> 345 346 <div class="omg-header"> 347 <div class="omg-header__text"> 348 <h1 class="omg-title"> 349 <?php 350 /* translators: %s: theme name */ 351 printf( esc_html__( 'Welcome to %s', 'skin-care-solutions' ), esc_html( $skin_care_solutions_theme_title ) ); 352 ?> 353 </h1> 354 </div> 355 <div class="omg-header__actions"> 356 <a class="omg-btn omg-btn--demo" href="<?php echo esc_url( SKIN_CARE_SOLUTIONS_DEMO_PRO ); ?>" target="_blank"><?php echo $skin_care_solutions_live; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- static markup. ?><?php esc_html_e( 'Live Demo', 'skin-care-solutions' ); ?></a> 357 <a class="omg-btn omg-btn--premium" href="<?php echo esc_url( SKIN_CARE_SOLUTIONS_BUY_NOW ); ?>" target="_blank"><?php echo $skin_care_solutions_crown; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- escaped above. ?><?php esc_html_e( 'Go To Premium', 'skin-care-solutions' ); ?></a> 220 358 </div> 221 359 </div> 222 223 <div class="card whizzie-wrap"> 224 <div class="demo_content_image"> 225 <div class="demo_content"> 360 <hr class="wp-header-end"> 361 362 <div class="omg-layout"> 363 364 <aside class="omg-card omg-setup<?php echo $skin_care_solutions_done >= $skin_care_solutions_total ? ' is-complete' : ''; ?>" id="omg-setup" data-total="<?php echo esc_attr( $skin_care_solutions_total ); ?>"> 365 <div class="omg-setup__head"> 366 <h2 class="omg-setup__title"><?php esc_html_e( 'Site setup', 'skin-care-solutions' ); ?></h2> 367 <span class="omg-setup__count"> 368 <?php 369 /* translators: 1: steps done, 2: total steps */ 370 printf( esc_html__( '%1$s of %2$s done', 'skin-care-solutions' ), '<b class="omg-setup__done">' . esc_html( $skin_care_solutions_done ) . '</b>', esc_html( $skin_care_solutions_total ) ); 371 ?> 372 </span> 373 </div> 374 <div class="omg-progress" role="progressbar" aria-valuemin="0" aria-valuemax="<?php echo esc_attr( $skin_care_solutions_total ); ?>" aria-valuenow="<?php echo esc_attr( $skin_care_solutions_done ); ?>"> 375 <span class="omg-progress__bar" style="width: <?php echo esc_attr( max( 3, round( $skin_care_solutions_done / $skin_care_solutions_total * 100 ) ) ); ?>%"></span> 376 </div> 377 <p class="omg-setup__intro"><?php esc_html_e( 'Finish these steps to make your store look like the demo in a few minutes.', 'skin-care-solutions' ); ?></p> 378 379 <div class="omg-setup__complete"> 380 <span class="omg-setup__complete-icon"><?php echo $skin_care_solutions_check; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- escaped above. ?></span> 381 <div> 382 <strong><?php esc_html_e( 'Your store is ready', 'skin-care-solutions' ); ?></strong> 383 <span><?php esc_html_e( 'All setup steps are done. Time to add your products.', 'skin-care-solutions' ); ?></span> 384 </div> 385 </div> 386 387 <ol class="omg-steps"> 226 388 <?php 227 $skin_care_solutions_steps = $this->get_steps(); 228 echo '<ul class="whizzie-menu">'; 229 foreach ( $skin_care_solutions_steps as $skin_care_solutions_step ) { 230 $class = 'step step-' . esc_attr( $skin_care_solutions_step['id'] ); 231 echo '<li data-step="' . esc_attr( $skin_care_solutions_step['id'] ) . '" class="' . esc_attr( $class ) . '">'; 232 printf( '<h2>%s</h2>', esc_html( $skin_care_solutions_step['title'] ) ); 233 234 $content = call_user_func( array( $this, $skin_care_solutions_step['view'] ) ); 235 if ( isset( $content['summary'] ) ) { 236 printf( 237 '<div class="summary">%s</div>', 238 wp_kses_post( $content['summary'] ) 239 ); 240 } 241 if ( isset( $content['detail'] ) ) { 242 printf( 243 '<div class="detail">%s</div>', 244 wp_kses_post( $content['detail'] ) 245 ); 246 } 247 if ( isset( $skin_care_solutions_step['button_text'] ) && $skin_care_solutions_step['button_text'] ) { 248 printf( 249 '<div class="button-wrap"><a href="#" class="button button-primary do-it" data-callback="%s" data-step="%s">%s</a></div>', 250 esc_attr( $skin_care_solutions_step['callback'] ), 251 esc_attr( $skin_care_solutions_step['id'] ), 252 esc_html( $skin_care_solutions_step['button_text'] ) 253 ); 254 } 255 echo '</li>'; 389 $skin_care_solutions_number = 1; 390 foreach ( $skin_care_solutions_steps as $skin_care_solutions_id => $skin_care_solutions_step ) { 391 $skin_care_solutions_classes = array( 'omg-step' ); 392 if ( ! empty( $skin_care_solutions_progress[ $skin_care_solutions_id ] ) ) { 393 $skin_care_solutions_classes[] = 'is-done'; 256 394 } 257 echo '</ul>'; 258 ?> 259 260 <ul class="whizzie-nav"> 261 <?php 262 $step_number = 1; 263 foreach ( $skin_care_solutions_steps as $skin_care_solutions_step ) { 264 echo '<li class="nav-step-' . esc_attr( $skin_care_solutions_step['id'] ) . '">'; 265 echo '<span class="step-number">' . esc_html( $step_number ) . '</span>'; 266 echo '</li>'; 267 $step_number++; 395 if ( $skin_care_solutions_id === $skin_care_solutions_open ) { 396 $skin_care_solutions_classes[] = 'is-open'; 268 397 } 269 398 ?> 270 <div class="blank-border"></div> 271 </ul> 272 273 <div class="homepage-setup-links"> 274 <div class="homepage-setup-links buttons"> 275 <a href="<?php echo esc_url( SKIN_CARE_SOLUTIONS_LITE_DOCS_PRO ); ?>" target="_blank" class="button button-primary"><?php echo esc_html__( 'Free Documentation', 'skin-care-solutions' ); ?></a> 276 <a href="<?php echo esc_url( SKIN_CARE_SOLUTIONS_BUY_NOW ); ?>" class="button button-primary" target="_blank"><?php echo esc_html__( 'Get Premium', 'skin-care-solutions' ); ?></a> 277 <a href="<?php echo esc_url( SKIN_CARE_SOLUTIONS_DEMO_PRO ); ?>" class="button button-primary" target="_blank"><?php echo esc_html__( 'Premium Demo', 'skin-care-solutions' ); ?></a> 278 <a href="<?php echo esc_url( SKIN_CARE_SOLUTIONS_SUPPORT_FREE ); ?>" target="_blank" class="button button-primary"><?php echo esc_html__( 'Support Forum', 'skin-care-solutions' ); ?></a> 399 <li class="<?php echo esc_attr( implode( ' ', $skin_care_solutions_classes ) ); ?>" data-step="<?php echo esc_attr( $skin_care_solutions_id ); ?>"> 400 <button type="button" class="omg-step__head" aria-expanded="<?php echo $skin_care_solutions_id === $skin_care_solutions_open ? 'true' : 'false'; ?>"> 401 <span class="omg-step__num"> 402 <span class="omg-step__index"><?php echo esc_html( $skin_care_solutions_number ); ?></span> 403 <?php echo $skin_care_solutions_check; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- escaped above. ?> 404 </span> 405 <span class="omg-step__text"> 406 <span class="omg-step__title"><?php echo esc_html( $skin_care_solutions_step['title'] ); ?></span> 407 <span class="omg-step__desc"><?php echo esc_html( $skin_care_solutions_step['desc'] ); ?></span> 408 </span> 409 </button> 410 <div class="omg-step__body"> 411 <div class="omg-step__inner"> 412 <?php call_user_func( array( $this, $skin_care_solutions_step['view'] ) ); ?> 413 </div> 414 </div> 415 </li> 416 <?php 417 $skin_care_solutions_number++; 418 } 419 ?> 420 </ol> 421 422 <p class="omg-setup__help"> 423 <?php esc_html_e( 'Stuck on a step?', 'skin-care-solutions' ); ?> 424 <a href="<?php echo esc_url( SKIN_CARE_SOLUTIONS_LITE_DOCS_PRO ); ?>" target="_blank"><?php esc_html_e( 'Read the setup guide', 'skin-care-solutions' ); ?></a> 425 <?php esc_html_e( 'or', 'skin-care-solutions' ); ?> 426 <a href="<?php echo esc_url( SKIN_CARE_SOLUTIONS_SUPPORT_FREE ); ?>" target="_blank"><?php esc_html_e( 'ask on the forum', 'skin-care-solutions' ); ?></a>. 427 </p> 428 </aside> 429 430 <?php if ( $skin_care_solutions_focus ) : ?> 431 <div class="omg-focus-tip" role="dialog" aria-labelledby="omg-focus-tip-title"> 432 <span class="omg-focus-tip__icon"><?php echo wp_kses( $this->icon( 'download' ), $this->icon_kses() ); ?></span> 433 <p class="omg-kicker omg-kicker--blue"><?php esc_html_e( 'Quick setup', 'skin-care-solutions' ); ?></p> 434 <h3 class="omg-focus-tip__title" id="omg-focus-tip-title"><?php esc_html_e( 'Let’s import your demo', 'skin-care-solutions' ); ?></h3> 435 <p class="omg-focus-tip__text"><?php esc_html_e( 'Install the essential plugins, then import the demo content. The rest of this page unlocks as soon as the import finishes.', 'skin-care-solutions' ); ?></p> 436 <div class="omg-focus-tip__actions"> 437 <button type="button" class="omg-btn omg-btn--primary omg-focus-ok"><?php esc_html_e( 'Got it', 'skin-care-solutions' ); ?></button> 438 <button type="button" class="omg-skip omg-focus-exit"><?php esc_html_e( 'Skip, show everything', 'skin-care-solutions' ); ?></button> 439 </div> 440 </div> 441 <?php endif; ?> 442 443 <div class="omg-main"> 444 445 <section class="omg-card omg-hero"> 446 <div class="omg-hero__content"> 447 <div class="omg-badges"> 448 <span class="omg-badge omg-badge--blue"><?php esc_html_e( 'Active theme', 'skin-care-solutions' ); ?></span> 449 <span class="omg-badge"><?php esc_html_e( 'Free', 'skin-care-solutions' ); ?></span> 279 450 </div> 280 </div> <!-- .demo_image --> 281 282 <div class="step-loading"><span class="spinner"></span></div> 283 </div> <!-- .demo_content --> 284 285 <div class="homepage-setup-image"> 286 <div class="homepage-setup-theme-buynow"> 287 <div class="homepage-setup-theme-buynow-one"> 288 <h1><?php echo wp_kses_post( 'Skin Care<br>WordPress Theme' ); ?></h1> 289 <p><?php echo wp_kses_post( '<span>25%<br>Off</span> SHOP NOW' ); ?></p> 290 </div> 291 <div class="homepage-setup-theme-buynow-two"> 292 <img src="<?php echo esc_url( get_template_directory_uri() . '/inc/homepage-setup/assets/homepage-setup-images/skin-care-solutions.png' ); ?>" alt="<?php echo esc_attr__( 'Theme Bundle Image', 'skin-care-solutions' ); ?>"> 293 </div> 294 <div class="homepage-setup-theme-buynow-three"> 295 <p><?php echo wp_kses_post( 'Get <span>25% OFF</span> on Premium Skin Care WordPress Theme Use code <span>"NYTHEMES25"</span> at checkout.' ); ?></p> 296 </div> 297 <div class="homepage-setup-theme-buynow-four"> 298 <a target="_blank" href="<?php echo esc_url( SKIN_CARE_SOLUTIONS_BUY_NOW ); ?>"><?php echo esc_html__( 'Upgrade To Pro With Just $39', 'skin-care-solutions' ); ?></a> 451 <h2 class="omg-hero__title"><?php echo esc_html( $skin_care_solutions_theme_title ); ?></h2> 452 <p class="omg-hero__desc"><?php echo esc_html( $skin_care_solutions_theme_desc ); ?></p> 453 <div class="omg-hero__actions"> 454 <a class="omg-btn omg-btn--primary" href="<?php echo esc_url( admin_url( 'customize.php' ) ); ?>"><?php esc_html_e( 'Customize theme', 'skin-care-solutions' ); ?></a> 455 <a class="omg-btn omg-btn--outline" href="<?php echo esc_url( home_url( '/' ) ); ?>" target="_blank"><?php esc_html_e( 'View your site', 'skin-care-solutions' ); ?></a> 456 <a class="omg-btn omg-btn--pink" href="<?php echo esc_url( SKIN_CARE_SOLUTIONS_BUY_NOW ); ?>" target="_blank"><?php echo $skin_care_solutions_crown; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- escaped above. ?><?php esc_html_e( 'Upgrade to Pro', 'skin-care-solutions' ); ?></a> 457 <a class="omg-btn omg-btn--dark" href="<?php echo esc_url( SKIN_CARE_SOLUTIONS_BUNDLE_BUTTON ); ?>" target="_blank"><?php esc_html_e( 'Get the Bundle', 'skin-care-solutions' ); ?></a> 299 458 </div> 300 459 </div> 301 </div> <!-- .demo_image --> 302 303 </div> <!-- .demo_content_image --> 304 </div> <!-- .whizzie-wrap --> 305 </div> <!-- .wrap --> 460 <div class="omg-hero__media"> 461 <img src="<?php echo esc_url( get_template_directory_uri() . '/screenshot.png' ); ?>" alt="<?php echo esc_attr( $skin_care_solutions_theme_title ); ?>"> 462 </div> 463 </section> 464 465 <div class="omg-promos"> 466 <section class="omg-card omg-pro"> 467 <span class="omg-pro__ribbon"><?php esc_html_e( '25% Off', 'skin-care-solutions' ); ?></span> 468 <p class="omg-kicker omg-kicker--pink"><?php esc_html_e( 'Go Pro', 'skin-care-solutions' ); ?></p> 469 <h3 class="omg-pro__title"> 470 <?php 471 /* translators: %s: theme name */ 472 printf( esc_html__( 'Unlock %s Pro', 'skin-care-solutions' ), esc_html( $skin_care_solutions_theme_title ) ); 473 ?> 474 </h3> 475 <div class="omg-pro__links"> 476 <?php 477 $skin_care_solutions_pro_links = array( 478 array( SKIN_CARE_SOLUTIONS_DEMO_PRO, 'eye', __( 'Live demo', 'skin-care-solutions' ), true ), 479 array( SKIN_CARE_SOLUTIONS_DOCS_PRO, 'book', __( 'Pro docs', 'skin-care-solutions' ), true ), 480 array( '#omg-compare', 'table', __( 'Free vs Pro', 'skin-care-solutions' ), false ), 481 ); 482 foreach ( $skin_care_solutions_pro_links as $skin_care_solutions_pro_link ) { 483 ?> 484 <a class="omg-pro__link" href="<?php echo esc_url( $skin_care_solutions_pro_link[0] ); ?>"<?php echo $skin_care_solutions_pro_link[3] ? ' target="_blank"' : ''; ?>> 485 <?php echo wp_kses( $this->icon( $skin_care_solutions_pro_link[1] ), $this->icon_kses() ); ?> 486 <span><?php echo esc_html( $skin_care_solutions_pro_link[2] ); ?></span> 487 </a> 488 <?php 489 } 490 ?> 491 </div> 492 <ul class="omg-checklist"> 493 <li><?php echo $skin_care_solutions_check; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- escaped above. ?><?php esc_html_e( 'All premium demo layouts', 'skin-care-solutions' ); ?></li> 494 <li><?php echo $skin_care_solutions_check; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- escaped above. ?><?php esc_html_e( 'Advanced customizer controls', 'skin-care-solutions' ); ?></li> 495 <li><?php echo $skin_care_solutions_check; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- escaped above. ?><?php esc_html_e( 'Priority support & updates', 'skin-care-solutions' ); ?></li> 496 </ul> 497 <div class="omg-code"> 498 <span class="omg-code__label"><?php esc_html_e( 'Code', 'skin-care-solutions' ); ?></span> 499 <code class="omg-code__value">NYTHEMES25</code> 500 <button type="button" class="omg-code__copy" data-omg-copy="NYTHEMES25"><?php esc_html_e( 'Copy', 'skin-care-solutions' ); ?></button> 501 </div> 502 <p class="omg-pro__price"> 503 <strong>$39</strong> 504 <span><?php esc_html_e( 'Pro license · save 25% with the code above', 'skin-care-solutions' ); ?></span> 505 </p> 506 <a class="omg-btn omg-btn--pink omg-btn--block" href="<?php echo esc_url( SKIN_CARE_SOLUTIONS_BUY_NOW ); ?>" target="_blank"><?php esc_html_e( 'Upgrade to Pro — just $39', 'skin-care-solutions' ); ?></a> 507 </section> 508 509 <section class="omg-card omg-bundle omg-glow-border"> 510 <div class="omg-bundle__head"> 511 <div> 512 <p class="omg-kicker omg-kicker--pink"><?php esc_html_e( 'Best value', 'skin-care-solutions' ); ?></p> 513 <h3 class="omg-bundle__title"><?php esc_html_e( 'WP Theme Bundle', 'skin-care-solutions' ); ?></h3> 514 </div> 515 <span class="omg-bundle__seal"><small><?php esc_html_e( 'Extra', 'skin-care-solutions' ); ?></small><b>15%</b><small><?php esc_html_e( 'Off', 'skin-care-solutions' ); ?></small></span> 516 </div> 517 <div class="omg-bundle__media"> 518 <img src="<?php echo esc_url( $skin_care_solutions_images . 'bundle-banner.png' ); ?>" alt="<?php esc_attr_e( 'Theme bundle collage', 'skin-care-solutions' ); ?>"> 519 </div> 520 <p class="omg-bundle__desc"><?php esc_html_e( 'Every Omega WordPress theme in one download.', 'skin-care-solutions' ); ?></p> 521 <ul class="omg-checklist"> 522 <li><?php echo $skin_care_solutions_check; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- escaped above. ?><?php esc_html_e( 'All premium Omega themes included', 'skin-care-solutions' ); ?></li> 523 <li><?php echo $skin_care_solutions_check; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- escaped above. ?><?php esc_html_e( 'Updates for every theme in the bundle', 'skin-care-solutions' ); ?></li> 524 <li><?php echo $skin_care_solutions_check; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- escaped above. ?><?php esc_html_e( 'Priority support on all themes', 'skin-care-solutions' ); ?></li> 525 </ul> 526 <p class="omg-price"><del>$2795</del><strong>$69</strong></p> 527 <div class="omg-code omg-code--light"> 528 <span class="omg-code__label"><?php esc_html_e( 'Code', 'skin-care-solutions' ); ?></span> 529 <code class="omg-code__value">BNDL15OFF</code> 530 <button type="button" class="omg-code__copy" data-omg-copy="BNDL15OFF"><?php esc_html_e( 'Copy', 'skin-care-solutions' ); ?></button> 531 </div> 532 <a class="omg-btn omg-btn--dark omg-btn--block" href="<?php echo esc_url( SKIN_CARE_SOLUTIONS_BUNDLE_BUTTON ); ?>" target="_blank"><?php esc_html_e( 'Shop the bundle', 'skin-care-solutions' ); ?></a> 533 </section> 534 </div> 535 536 <div class="omg-info"> 537 <section class="omg-card omg-compare" id="omg-compare"> 538 <h3 class="omg-card__title"><?php esc_html_e( 'Free vs Pro', 'skin-care-solutions' ); ?></h3> 539 <table class="omg-compare__table"> 540 <thead> 541 <tr> 542 <th><?php esc_html_e( 'Feature', 'skin-care-solutions' ); ?></th> 543 <th><?php esc_html_e( 'Free', 'skin-care-solutions' ); ?></th> 544 <th class="omg-compare__pro"><?php esc_html_e( 'Pro', 'skin-care-solutions' ); ?></th> 545 </tr> 546 </thead> 547 <tbody> 548 <?php 549 $skin_care_solutions_features = array( 550 array( __( 'One-click demo import', 'skin-care-solutions' ), true ), 551 array( __( 'WooCommerce shop pages', 'skin-care-solutions' ), true ), 552 array( __( 'Responsive & RTL ready', 'skin-care-solutions' ), true ), 553 array( __( 'Premium demo layouts', 'skin-care-solutions' ), false ), 554 array( __( 'Advanced customizer options', 'skin-care-solutions' ), false ), 555 array( __( 'Priority support', 'skin-care-solutions' ), false ), 556 ); 557 foreach ( $skin_care_solutions_features as $skin_care_solutions_feature ) { 558 ?> 559 <tr> 560 <td><?php echo esc_html( $skin_care_solutions_feature[0] ); ?></td> 561 <td class="<?php echo $skin_care_solutions_feature[1] ? 'omg-yes' : 'omg-no'; ?>"><?php echo $skin_care_solutions_feature[1] ? $skin_care_solutions_check : $skin_care_solutions_dash; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- escaped above. ?></td> 562 <td class="omg-yes"><?php echo $skin_care_solutions_check; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- escaped above. ?></td> 563 </tr> 564 <?php 565 } 566 ?> 567 </tbody> 568 </table> 569 <a class="omg-btn omg-btn--demo omg-btn--block omg-compare__demo" href="<?php echo esc_url( SKIN_CARE_SOLUTIONS_DEMO_PRO ); ?>" target="_blank"><?php echo $skin_care_solutions_live; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- static markup. ?><?php esc_html_e( 'See the Pro demo', 'skin-care-solutions' ); ?> <?php echo $skin_care_solutions_arrow; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- escaped above. ?></a> 570 </section> 571 572 <section class="omg-card omg-links"> 573 <h3 class="omg-card__title"><?php esc_html_e( 'Important links', 'skin-care-solutions' ); ?></h3> 574 <div class="omg-links__grid"> 575 <?php 576 $skin_care_solutions_links = array( 577 array( SKIN_CARE_SOLUTIONS_LITE_DOCS_PRO, __( 'Free documentation', 'skin-care-solutions' ), __( 'Step-by-step setup guides', 'skin-care-solutions' ), '' ), 578 array( SKIN_CARE_SOLUTIONS_SUPPORT_FREE, __( 'Support forum', 'skin-care-solutions' ), __( 'Ask the community & our team', 'skin-care-solutions' ), '' ), 579 array( SKIN_CARE_SOLUTIONS_DEMO_PRO, __( 'Premium demo', 'skin-care-solutions' ), __( 'See every Pro layout live', 'skin-care-solutions' ), 'demo' ), 580 array( SKIN_CARE_SOLUTIONS_BUY_NOW, __( 'Get Premium', 'skin-care-solutions' ), __( 'Compare plans & pricing', 'skin-care-solutions' ), 'premium' ), 581 ); 582 foreach ( $skin_care_solutions_links as $skin_care_solutions_link ) { 583 ?> 584 <a class="omg-links__item<?php echo $skin_care_solutions_link[3] ? ' omg-links__item--' . esc_attr( $skin_care_solutions_link[3] ) : ''; ?>" href="<?php echo esc_url( $skin_care_solutions_link[0] ); ?>" target="_blank"> 585 <strong> 586 <?php echo esc_html( $skin_care_solutions_link[1] ); ?> 587 <?php if ( 'demo' === $skin_care_solutions_link[3] ) : ?> 588 <em class="omg-tag omg-tag--live"><?php echo $skin_care_solutions_live; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- static markup. ?><?php esc_html_e( 'Live', 'skin-care-solutions' ); ?></em> 589 <?php elseif ( 'premium' === $skin_care_solutions_link[3] ) : ?> 590 <em class="omg-tag omg-tag--pro"><?php esc_html_e( 'Pro', 'skin-care-solutions' ); ?></em> 591 <?php endif; ?> 592 </strong> 593 <span><?php echo esc_html( $skin_care_solutions_link[2] ); ?></span> 594 </a> 595 <?php 596 } 597 ?> 598 </div> 599 <div class="omg-expert"> 600 <div class="omg-expert__content"> 601 <h3 class="omg-expert__title"><?php esc_html_e( 'Want us to set it up for you?', 'skin-care-solutions' ); ?></h3> 602 <p class="omg-expert__desc"><?php esc_html_e( 'Our team can install the theme, add your products and match your brand.', 'skin-care-solutions' ); ?></p> 603 <ul class="omg-expert__list"> 604 <li><?php echo $skin_care_solutions_check; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- escaped above. ?><?php esc_html_e( 'Theme & plugin setup', 'skin-care-solutions' ); ?></li> 605 <li><?php echo $skin_care_solutions_check; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- escaped above. ?><?php esc_html_e( 'Demo content import', 'skin-care-solutions' ); ?></li> 606 <li><?php echo $skin_care_solutions_check; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- escaped above. ?><?php esc_html_e( 'Product upload', 'skin-care-solutions' ); ?></li> 607 </ul> 608 </div> 609 <a class="omg-btn omg-btn--primary omg-expert__btn" href="<?php echo esc_url( SKIN_CARE_SOLUTIONS_HIRE_EXPERT ); ?>" target="_blank"><?php esc_html_e( 'Hire an expert', 'skin-care-solutions' ); ?></a> 610 </div> 611 </section> 612 </div> 613 614 </div> <!-- .omg-main --> 615 </div> <!-- .omg-layout --> 616 617 <div class="omg-footer"> 618 <p> 619 <?php esc_html_e( 'Enjoying the theme?', 'skin-care-solutions' ); ?> 620 <a href="<?php echo esc_url( SKIN_CARE_SOLUTIONS_REVIEW_FREE ); ?>" target="_blank"><?php esc_html_e( 'Leave a ★★★★★ review', 'skin-care-solutions' ); ?></a> 621 </p> 622 <p> 623 <?php 624 /* translators: %s: theme version */ 625 printf( esc_html__( 'Version %s', 'skin-care-solutions' ), esc_html( $skin_care_solutions_theme_version ) ); 626 ?> 627 </p> 628 </div> 629 </div> <!-- .omg-wrap --> 306 630 <?php 307 631 } … … 316 640 public function get_steps() { 317 641 $skin_care_solutions_dev_steps = $this->config_steps; 318 $skin_care_solutions_steps = array( 642 $skin_care_solutions_steps = array( 319 643 'plugins' => array( 320 'id' => 'plugins', 321 'title' => __( 'Install and Activate Essential Plugins', 'skin-care-solutions' ), 322 'icon' => 'admin-plugins', 323 'view' => 'get_step_plugins', 324 'callback' => 'install_plugins', 325 'button_text' => __( 'Install Plugins', 'skin-care-solutions' ), 326 'can_skip' => true 644 'id' => 'plugins', 645 'title' => __( 'Install essential plugins', 'skin-care-solutions' ), 646 'desc' => __( 'Recommended for demo layouts and shop pages', 'skin-care-solutions' ), 647 'view' => 'get_step_plugins', 327 648 ), 328 'widgets' => array( 329 'id' => 'widgets', 330 'title' => __( 'Setup Home Page', 'skin-care-solutions' ), 331 'icon' => 'welcome-widgets-menus', 332 'view' => 'get_step_widgets', 333 'callback' => 'skin_care_solutions_install_widgets', 334 'button_text' => __( 'Start Home Page Setup', 'skin-care-solutions' ), 335 'can_skip' => false 649 'demo' => array( 650 'id' => 'demo', 651 'title' => __( 'Import demo content', 'skin-care-solutions' ), 652 'desc' => __( 'Pages, products, menus and widgets', 'skin-care-solutions' ), 653 'view' => 'get_step_demo', 336 654 ), 337 'done' => array( 338 'id' => 'done', 339 'title' => __( 'Customize Your Site', 'skin-care-solutions' ), 340 'icon' => 'yes', 341 'view' => 'get_step_done', 342 'callback' => '' 343 ) 655 'customize' => array( 656 'id' => 'customize', 657 'title' => __( 'Make it yours', 'skin-care-solutions' ), 658 'desc' => __( 'Logo, colors, header and homepage', 'skin-care-solutions' ), 659 'view' => 'get_step_customize', 660 ), 661 'launch' => array( 662 'id' => 'launch', 663 'title' => __( 'Launch your store', 'skin-care-solutions' ), 664 'desc' => __( 'Preview and go live', 'skin-care-solutions' ), 665 'view' => 'get_step_launch', 666 ), 344 667 ); 345 668 346 669 // Iterate through each step and replace with dev config values 347 670 if( $skin_care_solutions_dev_steps ) { 348 671 // Configurable elements - these are the only ones the dev can update from homepage-setup-settings.php 349 $ can_config = array( 'title', 'icon', 'button_text', 'can_skip' );672 $skin_care_solutions_can_config = array( 'title', 'desc' ); 350 673 foreach( $skin_care_solutions_dev_steps as $skin_care_solutions_dev_step ) { 351 674 // We can only proceed if an ID exists and matches one of our IDs 352 675 if( isset( $skin_care_solutions_dev_step['id'] ) ) { 353 $ id = $skin_care_solutions_dev_step['id'];354 if( isset( $skin_care_solutions_steps[$ id] ) ) {355 foreach( $ can_config as $element ) {356 if( isset( $skin_care_solutions_dev_step[$ element] ) ) {357 $skin_care_solutions_steps[$ id][$element] = $skin_care_solutions_dev_step[$element];676 $skin_care_solutions_id = $skin_care_solutions_dev_step['id']; 677 if( isset( $skin_care_solutions_steps[$skin_care_solutions_id] ) ) { 678 foreach( $skin_care_solutions_can_config as $skin_care_solutions_element ) { 679 if( isset( $skin_care_solutions_dev_step[$skin_care_solutions_element] ) ) { 680 $skin_care_solutions_steps[$skin_care_solutions_id][$skin_care_solutions_element] = $skin_care_solutions_dev_step[$skin_care_solutions_element]; 358 681 } 359 682 } … … 366 689 367 690 /** 368 * Get the content for the plugins step 369 * @return $content Array 691 * Print the content for the plugins step 370 692 */ 371 693 public function get_step_plugins() { 372 $plugins = $this->get_plugins(); 373 $content = array(); 374 375 // Add plugin name and type at the top 376 $content['detail'] = '<div class="plugin-info">'; 377 $content['detail'] .= '<p><strong>Plugin</strong></p>'; 378 $content['detail'] .= '<p><strong>Type</strong></p>'; 379 $content['detail'] .= '</div>'; 380 381 // The detail element is initially hidden from the user 382 $content['detail'] .= '<ul class="whizzie-do-plugins">'; 383 384 // Add each plugin into a list 385 foreach( $plugins['all'] as $slug=>$plugin ) { 386 $content['detail'] .= '<li data-slug="' . esc_attr( $slug ) . '">' . esc_html( $plugin['name'] ) . '<span>'; 387 $keys = array(); 388 if ( isset( $plugins['install'][ $slug ] ) ) { 389 $keys[] = 'Installation'; 390 } 391 if ( isset( $plugins['update'][ $slug ] ) ) { 392 $keys[] = 'Update'; 393 } 394 if ( isset( $plugins['activate'][ $slug ] ) ) { 395 $keys[] = 'Activation'; 396 } 397 $content['detail'] .= implode( ' and ', $keys ) . ' required'; 398 $content['detail'] .= '</span></li>'; 399 } 400 401 $content['detail'] .= '</ul>'; 402 403 return $content; 404 } 405 406 /** 407 * Print the content for the widgets step 408 * @since 1.1.0 409 */ 410 public function get_step_widgets() { ?> <?php } 411 694 $skin_care_solutions_instance = call_user_func( array( get_class( $GLOBALS['tgmpa'] ), 'get_instance' ) ); 695 $skin_care_solutions_pending = 0; 696 697 // WooCommerce goes first: the other plugins need it active before they can activate. 698 $skin_care_solutions_plugins = $skin_care_solutions_instance->plugins; 699 if ( isset( $skin_care_solutions_plugins['woocommerce'] ) ) { 700 $skin_care_solutions_plugins = array( 'woocommerce' => $skin_care_solutions_plugins['woocommerce'] ) + $skin_care_solutions_plugins; 701 } 702 ?> 703 <ul class="omg-plugins"> 704 <?php 705 foreach ( $skin_care_solutions_plugins as $skin_care_solutions_slug => $skin_care_solutions_plugin ) { 706 $skin_care_solutions_is_ready = $skin_care_solutions_instance->is_plugin_active( $skin_care_solutions_slug ) && false === $skin_care_solutions_instance->does_plugin_have_update( $skin_care_solutions_slug ); 707 $skin_care_solutions_is_required = ! empty( $skin_care_solutions_plugin['required'] ); 708 if ( ! $skin_care_solutions_is_ready ) { 709 $skin_care_solutions_pending++; 710 } 711 if ( $skin_care_solutions_is_ready ) { 712 $skin_care_solutions_badge = __( 'Active', 'skin-care-solutions' ); 713 } elseif ( $skin_care_solutions_is_required ) { 714 $skin_care_solutions_badge = __( 'Required', 'skin-care-solutions' ); 715 } else { 716 $skin_care_solutions_badge = __( 'Optional', 'skin-care-solutions' ); 717 } 718 ?> 719 <li class="omg-plugin<?php echo $skin_care_solutions_is_ready ? ' is-ready' : ''; ?>" data-slug="<?php echo esc_attr( $skin_care_solutions_slug ); ?>"> 720 <label class="omg-plugin__label"> 721 <input type="checkbox" class="omg-plugin__check" value="<?php echo esc_attr( $skin_care_solutions_slug ); ?>" checked <?php disabled( $skin_care_solutions_is_ready || $skin_care_solutions_is_required ); ?>> 722 <span class="omg-plugin__name"><?php echo esc_html( $skin_care_solutions_plugin['name'] ); ?></span> 723 </label> 724 <span class="omg-plugin__status omg-plugin__status--<?php echo $skin_care_solutions_is_ready ? 'active' : ( $skin_care_solutions_is_required ? 'required' : 'optional' ); ?>"><?php echo esc_html( $skin_care_solutions_badge ); ?></span> 725 </li> 726 <?php 727 } 728 ?> 729 </ul> 730 <p class="omg-step__error" hidden></p> 731 <?php if ( $skin_care_solutions_pending ) : ?> 732 <button type="button" class="omg-btn omg-btn--primary omg-btn--block omg-install-plugins"> 733 <span class="omg-btn__label"><?php esc_html_e( 'Install & activate', 'skin-care-solutions' ); ?></span> 734 <span class="omg-btn__count">(<?php echo esc_html( $skin_care_solutions_pending ); ?>)</span> 735 </button> 736 <button type="button" class="omg-skip" data-omg-complete="plugins"><?php esc_html_e( 'Skip this step', 'skin-care-solutions' ); ?></button> 737 <?php else : ?> 738 <p class="omg-step__note"><?php esc_html_e( 'All recommended plugins are installed and active.', 'skin-care-solutions' ); ?></p> 739 <?php endif; ?> 740 <?php 741 } 742 743 /** 744 * Print the content for the demo import step 745 */ 746 public function get_step_demo() { 747 ?> 748 <p class="omg-step__note"><?php esc_html_e( 'Creates the homepage, inner pages, sample posts and products and the primary menu.', 'skin-care-solutions' ); ?></p> 749 <p class="omg-step__error" hidden></p> 750 <button type="button" class="omg-btn omg-btn--primary omg-btn--block omg-import-demo"> 751 <span class="omg-btn__label"><?php esc_html_e( 'Import demo content', 'skin-care-solutions' ); ?></span> 752 </button> 753 <?php 754 } 755 756 /** 757 * Print the content for the customize step 758 */ 759 public function get_step_customize() { 760 $skin_care_solutions_targets = array( 761 array( 'section', 'title_tagline', __( 'Logo & title', 'skin-care-solutions' ) ), 762 array( 'panel', 'theme_colors_panel', __( 'Colors', 'skin-care-solutions' ) ), 763 array( 'section', 'skin_care_solutions_button_header_setting', __( 'Header', 'skin-care-solutions' ) ), 764 array( 'panel', 'theme_home_pannel', __( 'Homepage', 'skin-care-solutions' ) ), 765 ); 766 ?> 767 <div class="omg-chips"> 768 <?php foreach ( $skin_care_solutions_targets as $skin_care_solutions_target ) : ?> 769 <a class="omg-chip" href="<?php echo esc_url( add_query_arg( 'autofocus[' . $skin_care_solutions_target[0] . ']', $skin_care_solutions_target[1], admin_url( 'customize.php' ) ) ); ?>" target="_blank"><?php echo esc_html( $skin_care_solutions_target[2] ); ?></a> 770 <?php endforeach; ?> 771 </div> 772 <button type="button" class="omg-btn omg-btn--primary omg-btn--block" data-omg-complete="customize"><?php esc_html_e( 'Mark as done', 'skin-care-solutions' ); ?></button> 773 <?php 774 } 775 412 776 /** 413 777 * Print the content for the final step 414 778 */ 415 public function get_step_done() { ?> 416 <div id="skin-care-solutions-demo-setup-guid"> 417 <div class="customize_div"> 418 <div class="customize_div finish"> 419 <div class="customize_div finish btns"> 420 <h3><?php echo esc_html( 'Your Site Is Ready To View' ); ?></h3> 421 <div class="btnsss"> 422 <a target="_blank" href="<?php echo esc_url( get_home_url() ); ?>" class="button button-primary"> 423 <?php esc_html_e( 'View Your Site', 'skin-care-solutions' ); ?> 424 </a> 425 <a target="_blank" href="<?php echo esc_url( admin_url( 'customize.php' ) ); ?>" class="button button-primary"> 426 <?php esc_html_e( 'Customize Your Site', 'skin-care-solutions' ); ?> 427 </a> 428 <a href="<?php echo esc_url(admin_url()); ?>" class="button button-primary"> 429 <?php esc_html_e( 'Finsh', 'skin-care-solutions' ); ?> 430 </a> 431 </div> 432 </div> 433 <div class="skin-care-solutions-setup-finish"> 434 <img src="<?php echo esc_url( get_template_directory_uri() . '/screenshot.png' ); ?>"/> 435 </div> 436 </div> 437 </div> 438 </div> 439 <?php } 779 public function get_step_launch() { 780 ?> 781 <p class="omg-step__note"><?php esc_html_e( 'Check your store on desktop and mobile, then share it with your customers.', 'skin-care-solutions' ); ?></p> 782 <a class="omg-btn omg-btn--primary omg-btn--block" href="<?php echo esc_url( home_url( '/' ) ); ?>" target="_blank" data-omg-complete="launch"><?php esc_html_e( 'View your site', 'skin-care-solutions' ); ?></a> 783 <?php 784 } 440 785 441 786 /** … … 443 788 */ 444 789 public function get_plugins() { 445 $ instance = call_user_func( array( get_class( $GLOBALS['tgmpa'] ), 'get_instance' ) );446 $ plugins = array(790 $skin_care_solutions_instance = call_user_func( array( get_class( $GLOBALS['tgmpa'] ), 'get_instance' ) ); 791 $skin_care_solutions_plugins = array( 447 792 'all' => array(), 448 793 'install' => array(), … … 450 795 'activate' => array() 451 796 ); 452 foreach( $ instance->plugins as $slug=>$plugin ) {453 if( $ instance->is_plugin_active( $slug ) && false === $instance->does_plugin_have_update( $slug ) ) {797 foreach( $skin_care_solutions_instance->plugins as $skin_care_solutions_slug=>$skin_care_solutions_plugin ) { 798 if( $skin_care_solutions_instance->is_plugin_active( $skin_care_solutions_slug ) && false === $skin_care_solutions_instance->does_plugin_have_update( $skin_care_solutions_slug ) ) { 454 799 // Plugin is installed and up to date 455 800 continue; 456 801 } else { 457 $ plugins['all'][$slug] = $plugin;458 if( ! $ instance->is_plugin_installed( $slug ) ) {459 $ plugins['install'][$slug] = $plugin;802 $skin_care_solutions_plugins['all'][$skin_care_solutions_slug] = $skin_care_solutions_plugin; 803 if( ! $skin_care_solutions_instance->is_plugin_installed( $skin_care_solutions_slug ) ) { 804 $skin_care_solutions_plugins['install'][$skin_care_solutions_slug] = $skin_care_solutions_plugin; 460 805 } else { 461 if( false !== $ instance->does_plugin_have_update( $slug ) ) {462 $ plugins['update'][$slug] = $plugin;806 if( false !== $skin_care_solutions_instance->does_plugin_have_update( $skin_care_solutions_slug ) ) { 807 $skin_care_solutions_plugins['update'][$skin_care_solutions_slug] = $skin_care_solutions_plugin; 463 808 } 464 if( $ instance->can_plugin_activate( $slug ) ) {465 $ plugins['activate'][$slug] = $plugin;809 if( $skin_care_solutions_instance->can_plugin_activate( $skin_care_solutions_slug ) ) { 810 $skin_care_solutions_plugins['activate'][$skin_care_solutions_slug] = $skin_care_solutions_plugin; 466 811 } 467 812 } 468 813 } 469 814 } 470 return $plugins; 471 } 472 473 /** 474 * Get the widgets.wie file from the /content folder 475 * @return Mixed Either the file or false 476 * @since 1.1.0 477 */ 478 public function has_widget_file() { 479 if( file_exists( $this->widget_file_url ) ) { 480 return true; 481 } 482 return false; 483 } 484 815 return $skin_care_solutions_plugins; 816 } 817 818 /** 819 * Mark a setup step as done 820 */ 821 public function skin_care_solutions_setup_step() { 822 check_ajax_referer( 'whizzie_nonce', 'wpnonce' ); 823 if ( ! current_user_can( 'manage_options' ) ) { 824 wp_send_json_error(); 825 } 826 $skin_care_solutions_step = isset( $_POST['step'] ) ? sanitize_key( wp_unslash( $_POST['step'] ) ) : ''; 827 skin_care_solutions_set_setup_step_done( $skin_care_solutions_step ); 828 wp_send_json_success( skin_care_solutions_get_setup_progress() ); 829 } 830 485 831 public function setup_plugins() { 486 if ( ! check_ajax_referer( 'whizzie_nonce', 'wpnonce' ) || empty( $_POST['slug'] ) ) {832 if ( ! check_ajax_referer( 'whizzie_nonce', 'wpnonce' ) || empty( $_POST['slug'] ) || ! current_user_can( 'install_plugins' ) ) { 487 833 wp_send_json_error( array( 'error' => 1, 'message' => esc_html__( 'No Slug Found','skin-care-solutions' ) ) ); 488 834 } 489 $ json = array();835 $skin_care_solutions_json = array(); 490 836 // send back some json we use to hit up TGM 491 $ plugins = $this->get_plugins();492 837 $skin_care_solutions_plugins = $this->get_plugins(); 838 493 839 // what are we doing with this plugin? 494 foreach ( $ plugins['activate'] as $slug => $plugin ) {495 if ( $_POST['slug'] == $s lug ) {496 $ json = array(840 foreach ( $skin_care_solutions_plugins['activate'] as $skin_care_solutions_slug => $skin_care_solutions_plugin ) { 841 if ( $_POST['slug'] == $skin_care_solutions_slug ) { 842 $skin_care_solutions_json = array( 497 843 'url' => admin_url( $this->tgmpa_url ), 498 'plugin' => array( $s lug ),844 'plugin' => array( $skin_care_solutions_slug ), 499 845 'tgmpa-page' => $this->tgmpa_menu_slug, 500 846 'plugin_status' => 'all', … … 502 848 'action' => 'tgmpa-bulk-activate', 503 849 'action2' => - 1, 504 'message' => esc_html__( 'Activating Plugin','skin-care-solutions' ),850 'message' => esc_html__( 'Activating…','skin-care-solutions' ), 505 851 ); 506 852 break; 507 853 } 508 854 } 509 foreach ( $ plugins['update'] as $slug => $plugin ) {510 if ( $_POST['slug'] == $s lug ) {511 $ json = array(855 foreach ( $skin_care_solutions_plugins['update'] as $skin_care_solutions_slug => $skin_care_solutions_plugin ) { 856 if ( $_POST['slug'] == $skin_care_solutions_slug ) { 857 $skin_care_solutions_json = array( 512 858 'url' => admin_url( $this->tgmpa_url ), 513 'plugin' => array( $s lug ),859 'plugin' => array( $skin_care_solutions_slug ), 514 860 'tgmpa-page' => $this->tgmpa_menu_slug, 515 861 'plugin_status' => 'all', … … 517 863 'action' => 'tgmpa-bulk-update', 518 864 'action2' => - 1, 519 'message' => esc_html__( 'Updating Plugin','skin-care-solutions' ),865 'message' => esc_html__( 'Updating…','skin-care-solutions' ), 520 866 ); 521 867 break; 522 868 } 523 869 } 524 foreach ( $ plugins['install'] as $slug => $plugin ) {525 if ( $_POST['slug'] == $s lug ) {526 $ json = array(870 foreach ( $skin_care_solutions_plugins['install'] as $skin_care_solutions_slug => $skin_care_solutions_plugin ) { 871 if ( $_POST['slug'] == $skin_care_solutions_slug ) { 872 $skin_care_solutions_json = array( 527 873 'url' => admin_url( $this->tgmpa_url ), 528 'plugin' => array( $s lug ),874 'plugin' => array( $skin_care_solutions_slug ), 529 875 'tgmpa-page' => $this->tgmpa_menu_slug, 530 876 'plugin_status' => 'all', … … 532 878 'action' => 'tgmpa-bulk-install', 533 879 'action2' => - 1, 534 'message' => esc_html__( 'Installing Plugin','skin-care-solutions' ),880 'message' => esc_html__( 'Installing…','skin-care-solutions' ), 535 881 ); 536 882 break; 537 883 } 538 884 } 539 if ( $ json ) {540 $ json['hash'] = md5( serialize( $json ) ); // used for checking if duplicates happen, move to next plugin541 wp_send_json( $ json );885 if ( $skin_care_solutions_json ) { 886 $skin_care_solutions_json['hash'] = md5( serialize( $skin_care_solutions_json ) ); // used for checking if duplicates happen, move to next plugin 887 wp_send_json( $skin_care_solutions_json ); 542 888 } else { 543 wp_send_json( array( 'done' => 1, 'message' => esc_html__( ' Success','skin-care-solutions' ) ) );889 wp_send_json( array( 'done' => 1, 'message' => esc_html__( 'Active','skin-care-solutions' ) ) ); 544 890 } 545 891 exit; … … 625 971 626 972 if (!has_nav_menu($skin_care_solutions_menulocation)) { 627 $skin_care_solutions_locations = get_theme_mod( 'nav_menu_locations');973 $skin_care_solutions_locations = get_theme_mod( 'nav_menu_locations', array() ); 628 974 $skin_care_solutions_locations[$skin_care_solutions_menulocation] = $skin_care_solutions_menu_id; 629 975 set_theme_mod('nav_menu_locations', $skin_care_solutions_locations); … … 638 984 */ 639 985 public function skin_care_solutions_setup_widgets(){ 986 987 check_ajax_referer( 'whizzie_nonce', 'wpnonce' ); 988 if ( ! current_user_can( 'manage_options' ) ) { 989 wp_send_json_error(); 990 } 640 991 641 992 /* -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- MENUS PAGES -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-*/ … … 826 1177 827 1178 /* -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- PRODUCTS -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-*/ 1179 // Products need WooCommerce; skip them if the plugin step was skipped. 1180 if ( taxonomy_exists( 'product_cat' ) ) { 828 1181 829 1182 $skin_care_solutions_uncategorized_term = get_term_by('name', 'Uncategorized', 'product_cat'); … … 852 1205 'slug' => 'product_cat'.$skin_care_solutions_i 853 1206 )); 1207 // The category already exists (demo imported before): reuse it. 1208 if ( is_wp_error( $skin_care_solutions_parent_category ) ) { 1209 $skin_care_solutions_parent_category = array( 'term_id' => (int) $skin_care_solutions_parent_category->get_error_data( 'term_exists' ) ); 1210 } 854 1211 855 1212 $skin_care_solutions_image_url = get_template_directory_uri().'/inc/homepage-setup/assets/homepage-setup-images/slider-img'.$skin_care_solutions_i.'.png'; 856 1213 857 1214 $skin_care_solutions_image_name= 'slider-img'.$skin_care_solutions_i.'.png'; 1215 1216 // Fewer images than categories: reuse the first one. 1217 1218 if ( ! file_exists( get_template_directory() . '/inc/homepage-setup/assets/homepage-setup-images/' . $skin_care_solutions_image_name ) ) { 1219 1220 $skin_care_solutions_image_url = get_template_directory_uri() . '/inc/homepage-setup/assets/homepage-setup-images/slider-img1.png'; 1221 1222 $skin_care_solutions_image_name = 'slider-img1.png'; 1223 1224 } 858 1225 $upload_dir = wp_upload_dir(); 859 1226 // Set upload folder … … 897 1264 898 1265 // Create the attachment 899 $skin_care_solutions_attach_id = wp_insert_attachment( $skin_care_solutions_attachment, $file, $post_id);1266 $skin_care_solutions_attach_id = wp_insert_attachment( $skin_care_solutions_attachment, $file, 0 ); 900 1267 901 1268 // Include image.php … … 908 1275 wp_update_attachment_metadata( $skin_care_solutions_attach_id, $skin_care_solutions_attach_data ); 909 1276 910 update_ woocommerce_term_meta( $skin_care_solutions_parent_category['term_id'], 'thumbnail_id', $skin_care_solutions_attach_id );1277 update_term_meta( $skin_care_solutions_parent_category['term_id'], 'thumbnail_id', $skin_care_solutions_attach_id ); 911 1278 912 1279 // create Product START … … 997 1364 998 1365 1366 } 1367 999 1368 $this->skin_care_solutions_customizer_nav_menu(); 1000 1369 1001 exit; 1370 skin_care_solutions_set_setup_step_done( 'demo' ); 1371 wp_send_json_success( skin_care_solutions_get_setup_progress() ); 1002 1372 } 1003 1373 } -
skin-care-solutions/1.4.2/inc/homepage-setup/homepage-setup-settings.php
r262417 r356312 21 21 22 22 // Change the title and slug of your wizard page 23 $ config['skin_care_solutions_page_slug'] = 'skin-care-solutions';24 $ config['skin_care_solutions_page_title'] = 'Homepage Setup';23 $skin_care_solutions_config['skin_care_solutions_page_slug'] = 'skin-care-solutions'; 24 $skin_care_solutions_config['skin_care_solutions_page_title'] = __( 'Getting Started', 'skin-care-solutions' ); 25 25 26 $config['steps'] = array( 26 // Only 'title' and 'desc' can be changed here 27 $skin_care_solutions_config['steps'] = array( 27 28 'plugins' => array( 28 'id' => 'plugins', 29 'title' => __( 'Install and Activate Essential Plugins', 'skin-care-solutions' ), 30 'icon' => 'admin-plugins', 31 'button_text' => __( 'Install Plugins', 'skin-care-solutions' ), 32 'can_skip' => true 29 'id' => 'plugins', 30 'title' => __( 'Install essential plugins', 'skin-care-solutions' ), 31 'desc' => __( 'Recommended for demo layouts and shop pages', 'skin-care-solutions' ), 33 32 ), 34 'widgets' => array( 35 'id' => 'widgets', 36 'title' => __( 'Setup Home Page', 'skin-care-solutions' ), 37 'icon' => 'welcome-widgets-menus', 38 'button_text' => __( 'Start Home Page Setup', 'skin-care-solutions' ), 39 'can_skip' => true 33 'demo' => array( 34 'id' => 'demo', 35 'title' => __( 'Import demo content', 'skin-care-solutions' ), 36 'desc' => __( 'Pages, products, menus and widgets', 'skin-care-solutions' ), 40 37 ), 41 'done' => array( 42 'id' => 'done', 43 'title' => __( 'Customize Your Site', 'skin-care-solutions' ), 44 'icon' => 'yes', 38 'customize' => array( 39 'id' => 'customize', 40 'title' => __( 'Make it yours', 'skin-care-solutions' ), 41 'desc' => __( 'Logo, colors, header and homepage', 'skin-care-solutions' ), 42 ), 43 'launch' => array( 44 'id' => 'launch', 45 'title' => __( 'Launch your store', 'skin-care-solutions' ), 46 'desc' => __( 'Preview and go live', 'skin-care-solutions' ), 45 47 ) 46 48 ); … … 50 52 **/ 51 53 if( class_exists( 'Skin_Care_Solutions_Whizzie' ) ) { 52 $Skin_Care_Solutions_Whizzie = new Skin_Care_Solutions_Whizzie( $ config );54 $Skin_Care_Solutions_Whizzie = new Skin_Care_Solutions_Whizzie( $skin_care_solutions_config ); 53 55 } -
skin-care-solutions/1.4.2/inc/homepage-setup/tgm/class-tgm-plugin-activation.php
r354504 r356312 9 9 * 10 10 * @package TGM-Plugin-Activation 11 * @version 2.6.1 for parent theme Skin Care Solutions for publication on wordpress.org11 * @version 2.6.1 for parent theme Skin Care Solutions for publication on WordPress.org 12 12 * @link http://tgmpluginactivation.com/ 13 13 * @author Thomas Griffin, Gary Jones, Juliette Reinders Folmer … … 224 224 225 225 /** 226 * Holds the version of wordpress.226 * Holds the version of WordPress. 227 227 * 228 228 * @since 2.4.0 … … 299 299 300 300 /** 301 * Initialise the interactions between this class and wordpress.301 * Initialise the interactions between this class and WordPress. 302 302 * 303 303 * Hooks in three new methods for the class: admin_menu, notices and styles. … … 1351 1351 * characters in the plugin directory path/slug. Silly them. 1352 1352 * 1353 * @see https://developer. wordpress.org/reference/hooks/sanitize_key/1353 * @see https://developer.WordPress.org/reference/hooks/sanitize_key/ 1354 1354 * 1355 1355 * @since 2.5.0 … … 3197 3197 * 3198 3198 * @see Plugin_Upgrader::bulk_upgrade() 3199 * @see https://core.trac. wordpress.org/browser/tags/4.2.1/src/wp-admin/includes/class-wp-upgrader.php#L8383200 * (@internal Last synced: Dec 31st 2015 against https://core.trac. wordpress.org/browser/trunk?rev=36134}}3199 * @see https://core.trac.WordPress.org/browser/tags/4.2.1/src/wp-admin/includes/class-wp-upgrader.php#L838 3200 * (@internal Last synced: Dec 31st 2015 against https://core.trac.WordPress.org/browser/trunk?rev=36134}} 3201 3201 * 3202 3202 * @param array $plugins The plugin sources needed for installation. … … 3414 3414 * This was done to prevent backward compatibility issues with v2.3.6.}} 3415 3415 * 3416 * @see https://core.trac. wordpress.org/browser/trunk/src/wp-admin/includes/class-wp-upgrader-skins.php3416 * @see https://core.trac.WordPress.org/browser/trunk/src/wp-admin/includes/class-wp-upgrader-skins.php 3417 3417 * 3418 3418 * @package TGM-Plugin-Activation … … 3507 3507 $this->upgrader->strings['skin_upgrade_start'] = __( 'The installation and activation process is starting. This process may take a while on some hosts, so please be patient.', 'skin-care-solutions' ); 3508 3508 /* translators: 1: plugin name. */ 3509 $this->upgrader->strings['skin_update_successful'] = __( '%1$s installed and activated successfully.', 'skin-care-solutions' ) . ' <a href="#" class="hide-if-no-js" onclick="%2$s"><span>' . esc_html__( 'Show Details', 'skin-care-solutions' ) . '</span><span class="hidden">' . esc_html__( 'Hide Details', 'skin-care-solutions' ) . '</span>.</a>'; 3509 // Core passes only the title to this string and prints its own "More details" toggle. 3510 $this->upgrader->strings['skin_update_successful'] = __( '%1$s installed and activated successfully.', 'skin-care-solutions' ); 3510 3511 $this->upgrader->strings['skin_upgrade_end'] = __( 'All installations and activations have been completed.', 'skin-care-solutions' ); 3511 3512 /* translators: 1: plugin name, 2: action number 3: total number of actions. */ … … 3515 3516 $this->upgrader->strings['skin_upgrade_start'] = __( 'The installation process is starting. This process may take a while on some hosts, so please be patient.', 'skin-care-solutions' ); 3516 3517 /* translators: 1: plugin name. */ 3517 $this->upgrader->strings['skin_update_successful'] = esc_html__( '%1$s installed successfully.', 'skin-care-solutions' ) . ' <a href="#" class="hide-if-no-js" onclick="%2$s"><span>' . esc_html__( 'Show Details', 'skin-care-solutions' ) . '</span><span class="hidden">' . esc_html__( 'Hide Details', 'skin-care-solutions' ) . '</span>.</a>'; 3518 // Core passes only the title to this string and prints its own "More details" toggle. 3519 $this->upgrader->strings['skin_update_successful'] = esc_html__( '%1$s installed successfully.', 'skin-care-solutions' ); 3518 3520 $this->upgrader->strings['skin_upgrade_end'] = __( 'All installations have been completed.', 'skin-care-solutions' ); 3519 3521 /* translators: 1: plugin name, 2: action number 3: total number of actions. */ -
skin-care-solutions/1.4.2/inc/metabox.php
r248158 r356312 43 43 44 44 function skin_care_solutions_custom_create_term_callback($skin_care_solutions_term_id) { 45 if ( ! isset( $_REQUEST['category_custom_image_url'] ) ) { 46 return; 47 } 45 48 // add term meta data 46 49 add_term_meta( -
skin-care-solutions/1.4.2/languages/skin-care-solutions.pot
r354504 r356312 4 4 msgstr "" 5 5 "Project-Id-Version: Skin Care Solutions 1.3.1\n" 6 "Report-Msgid-Bugs-To: https:// wordpress.org/support/theme/skin-care-solutions\n"6 "Report-Msgid-Bugs-To: https://WordPress.org/support/theme/skin-care-solutions\n" 7 7 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" 8 8 "Language-Team: LANGUAGE <LL@li.org>\n" … … 88 88 89 89 #: functions.php:85 90 msgid "https:// wordpress.org/support/theme/skin-care-solutions/"90 msgid "https://WordPress.org/support/theme/skin-care-solutions/" 91 91 msgstr "" 92 92 93 93 #: functions.php:88 94 msgid "https:// wordpress.org/support/theme/skin-care-solutions/reviews/#new-post/"94 msgid "https://WordPress.org/support/theme/skin-care-solutions/reviews/#new-post/" 95 95 msgstr "" 96 96 … … 225 225 226 226 #: inc/custom-functions.php:379 227 msgid " wordpress."227 msgid "WordPress." 228 228 msgstr "" 229 229 -
skin-care-solutions/1.4.2/lib/breadcrumbs/breadcrumbs.php
r354504 r356312 1 1 <?php 2 2 /** 3 * Breadcrumb Trail - A breadcrumb menu script for wordpress.3 * Breadcrumb Trail - A breadcrumb menu script for WordPress. 4 4 * 5 5 * Breadcrumb Trail is a script for showing a breadcrumb trail for any type of page. It tries to -
skin-care-solutions/1.4.2/readme.txt
r354504 r356312 4 4 Tested up to: 7.1 5 5 Requires PHP: 5.6 6 Stable tag: 1.4. 16 Stable tag: 1.4.2 7 7 License: GPLv2 or later 8 8 License URI: http://www.gnu.org/licenses/gpl-2.0.html … … 51 51 52 52 == Code from Twenty Nineteen == 53 Copyright (c) 2018-2019 wordpress.org53 Copyright (c) 2018-2019 WordPress.org 54 54 License: GPLv2 55 Source: https:// wordpress.org/themes/twentyninteen/55 Source: https://WordPress.org/themes/twentyninteen/ 56 56 Included as part of the following classes and functions: 57 57 - Skin_Care_Solutions_SVG_Icons 58 58 59 59 == Code from Multi Blog == 60 Copyright (c) 2020-2021 wordpress.org60 Copyright (c) 2020-2021 WordPress.org 61 61 License: GPLv2 62 Source: https:// wordpress.org/themes/multi-blog/62 Source: https://WordPress.org/themes/multi-blog/ 63 63 Included as part of the following customizer code and functions 64 64 … … 86 86 87 87 == Changelog == 88 89 = 1.4.2 = 90 * Responsive Design Improvements. 88 91 89 92 = 1.4.1 = -
skin-care-solutions/1.4.2/style.css
r354504 r356312 9 9 Tested up to: 7.1 10 10 Requires PHP: 5.6 11 Version: 1.4. 111 Version: 1.4.2 12 12 License: GNU General Public License v2 or later 13 13 License URI: http://www.gnu.org/licenses/gpl-2.0.html
Note:
See TracChangeset
for help on using the changeset viewer.
![(please configure the [header_logo] section in trac.ini)](/chrome/site/your_project_logo.png)