PluginProbe
Formidable Forms – WordPress Form Builder for Contact Forms, Calculators, Quizzes & More / 6.29
Formidable Forms – WordPress Form Builder for Contact Forms, Calculators, Quizzes & More v6.29
6.35 6.34 6.33.1 6.33 6.32.1 6.32 6.31 6.25 6.25.1 6.26 6.26.1 6.27 6.28 6.29 6.3 6.3.1 6.3.2 6.30 6.4 6.4.1 6.4.2 6.5 6.5.1 6.5.2 6.5.3 All 141 releases
formidable / classes / controllers / FrmSMTPController.php

FrmSMTPController.php in Formidable Forms – WordPress Form Builder for Contact Forms, Calculators, Quizzes & More 6.29, at classes/controllers/FrmSMTPController.php

570 lines 17.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 if ( ! defined( 'ABSPATH' ) ) {
3 die( 'You are not allowed to call this page directly.' );
4 }
5
6 /**
7 * SMTP Sub-page.
8 *
9 * @since 4.04.04
10 */
11 class FrmSMTPController {
12
13 /**
14 * Admin menu page slug.
15 *
16 * @since 4.04.04
17 *
18 * @var string
19 */
20 private $slug = 'formidable-smtp';
21
22 /**
23 * @since 4.04.04
24 *
25 * @var array
26 */
27 private $config = array(
28 'lite_plugin' => 'wp-mail-smtp/wp_mail_smtp.php',
29 'lite_download_url' => 'https://downloads.wordpress.org/plugin/wp-mail-smtp.zip',
30 'pro_plugin' => 'wp-mail-smtp-pro/wp_mail_smtp.php',
31 'smtp_settings' => 'admin.php?page=wp-mail-smtp',
32 );
33
34 /**
35 * Runtime data used for generating page HTML.
36 *
37 * @since 4.04.04
38 *
39 * @var array
40 */
41 private $output_data = array();
42
43 /**
44 * Hooks.
45 *
46 * @since 4.04.04
47 *
48 * @return void
49 */
50 public static function load_hooks() {
51 add_filter( 'wp_mail_smtp_is_white_labeled', '__return_true' );
52
53 $self = new self();
54
55 if ( wp_doing_ajax() ) {
56 add_action( 'wp_ajax_frm_smtp_page_check_plugin_status', array( $self, 'ajax_check_plugin_status' ) );
57 }
58
59 add_filter( 'wp_mail_smtp_core_get_upgrade_link', array( $self, 'link' ) );
60 add_action( 'admin_menu', array( $self, 'menu' ), 999 );
61 add_action( 'wp_mail_smtp_core_recommendations_plugins', 'FrmSMTPController::remove_wpforms_nag' );
62
63 // Only load if we are actually on the SMTP page.
64 if ( ! FrmAppHelper::is_admin_page( $self->slug ) ) {
65 return;
66 }
67
68 add_action( 'admin_init', array( $self, 'redirect_to_smtp_settings' ) );
69
70 // Hook for addons.
71 do_action( 'frm_admin_pages_smtp_hooks' );
72 }
73
74 /**
75 * Customize the upgrade link.
76 *
77 * @param string $link
78 *
79 * @return string
80 */
81 public function link( $link ) {
82 $new_link = 'formidableforms.com/go-wp-mail-smtp/?urllink=wpmailsmtp%2Ecom%2Flite%2Dupgrade&';
83 return str_replace( 'wpmailsmtp.com/lite-upgrade/?', $new_link, $link );
84 }
85
86 /**
87 * Don't nag people to install WPForms
88 *
89 * @since 4.04.04
90 *
91 * @param array $upsell
92 *
93 * @return array
94 */
95 public static function remove_wpforms_nag( $upsell ) {
96 if ( is_array( $upsell ) ) {
97 foreach ( $upsell as $k => $plugin ) {
98 if ( str_contains( $plugin['slug'], 'wpforms' ) ) {
99 unset( $upsell[ $k ] );
100 }
101 }
102 }
103
104 return $upsell;
105 }
106
107 /**
108 * SMTP submenu page.
109 *
110 * @return void
111 */
112 public function menu() {
113 add_submenu_page( 'formidable', __( 'SMTP', 'formidable' ) . ' | Formidable', __( 'SMTP', 'formidable' ), 'activate_plugins', $this->slug, array( $this, 'output' ) );
114 }
115
116 /**
117 * Generate and output page HTML.
118 *
119 * @since 4.04.04
120 *
121 * @return void
122 */
123 public function output() {
124 FrmAppHelper::include_svg();
125 $this->css();
126
127 echo '<div id="frm-admin-smtp" class="wrap frm-wrap frm-admin-plugin-landing">';
128
129 $this->output_section_heading();
130 $this->output_section_screenshot();
131 $this->output_section_step_install();
132 $this->output_section_step_setup();
133
134 echo '</div>';
135 }
136
137 /**
138 * Generate and output heading section HTML.
139 *
140 * @since 4.04.04
141 *
142 * @return void
143 */
144 protected function output_section_heading() {
145 $size = array(
146 'height' => 90,
147 'width' => 90,
148 );
149
150 // Heading section.
151 // phpcs:disable Generic.WhiteSpace.ScopeIndent
152 ?>
153 <section class="top">
154 <div class="frm-smtp-logos">
155 <?php
156 FrmAppHelper::show_logo( $size );
157 FrmAppHelper::icon_by_class(
158 'frmfont frm_heart_solid_icon',
159 array(
160 'aria-label' => 'Loves',
161 'style' => 'width:30px;height:30px;margin:0 35px;',
162 'color' => '#d11c25',
163 )
164 );
165 $this->stmp_logo();
166 ?>
167 </div>
168 <h1><?php esc_html_e( 'Making Email Deliverability Easy for WordPress', 'formidable' ); ?></h1>
169 <p><?php esc_html_e( 'WP Mail SMTP allows you to easily set up WordPress to use a trusted provider to reliably send emails, including form notifications.', 'formidable' ); ?></p><?php // phpcs:ignore SlevomatCodingStandard.Files.LineLength.LineTooLong ?>
170 </section>
171 <?php
172 // phpcs:enable Generic.WhiteSpace.ScopeIndent
173 }
174
175 /**
176 * Generate and output screenshot section HTML.
177 *
178 * @since 4.04.04
179 *
180 * @return void
181 */
182 protected function output_section_screenshot() {
183 printf(
184 '<section class="screenshot">
185 <div class="cont">
186 <img src="%1$s" alt="%2$s"/>
187 </div>
188 <ul>
189 <li>%3$s %4$s</li>
190 <li>%3$s %5$s</li>
191 <li>%3$s %6$s</li>
192 <li>%3$s %7$s</li>
193 </ul>
194 </section>',
195 esc_url( FrmAppHelper::plugin_url() . '/images/smtp-screenshot-tnail.png' ),
196 esc_attr__( 'WP Mail SMTP screenshot', 'formidable' ),
197 '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 492 492" width="14" height="14"><path d="M484 227L306 49a27 27 0 00-38 0l-16 16a27 27 0 000 38l104 105H27c-15 0-27 11-27 26v23c0 15 12 27 27 27h330L252 389a27 27 0 000 38l16 16a27 27 0 0038 0l178-178a27 27 0 000-38z" fill="#5bbfa5"/></svg> &nbsp;', // phpcs:ignore SlevomatCodingStandard.Files.LineLength.LineTooLong
198 esc_html__( 'Over 1,000,000 websites use WP Mail SMTP.', 'formidable' ),
199 esc_html__( 'Send emails authenticated via trusted parties.', 'formidable' ),
200 esc_html__( 'Transactional Mailers: Pepipost, SendinBlue, Mailgun, SendGrid, Amazon SES.', 'formidable' ),
201 esc_html__( 'Web Mailers: Gmail, G Suite, Office 365, Outlook.com.', 'formidable' )
202 );
203 }
204
205 /**
206 * Generate and output step 'Install' section HTML.
207 *
208 * @since 4.04.04
209 *
210 * @return void
211 */
212 protected function output_section_step_install() {
213 $step = $this->get_data_step_install();
214
215 if ( ! $step ) {
216 return;
217 }
218
219 $icon = FrmAppHelper::icon_by_class(
220 'frmfont ' . $step['icon'],
221 array(
222 'aria-label' => __( 'Step 1', 'formidable' ),
223 'echo' => false,
224 'style' => 'width:50px;height:50px;',
225 )
226 );
227
228 /* translators: %s: Name of the plugin */
229 $label = sprintf( __( 'Install and Activate %s', 'formidable' ), 'WP Mail SMTP' );
230
231 printf(
232 '<section class="step step-install">
233 <aside class="num">
234 %1$s
235 <i class="loader hidden"></i>
236 </aside>
237 <div>
238 <h2>%2$s</h2>
239 <p>%3$s</p>
240 <span><a rel="%4$s" class="button button-primary frm-button-primary %5$s" aria-label="%6$s">%7$s</a></span>
241 </div>
242 </section>',
243 FrmAppHelper::kses( $icon, array( 'a', 'i', 'span', 'use', 'svg' ) ), // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
244 esc_html( $label ),
245 esc_html__( 'Install WP Mail SMTP from the WordPress.org plugin repository.', 'formidable' ),
246 esc_attr( $step['plugin'] ),
247 esc_attr( $step['button_class'] ),
248 esc_attr( $step['button_action'] ),
249 esc_html( $step['button_text'] )
250 );
251 }
252
253 /**
254 * Generate and output step 'Setup' section HTML.
255 *
256 * @since 4.04.04
257 *
258 * @return void
259 */
260 protected function output_section_step_setup() {
261 $step = $this->get_data_step_setup();
262
263 if ( ! $step ) {
264 return;
265 }
266
267 $icon = FrmAppHelper::icon_by_class(
268 'frmfont ' . $step['icon'],
269 array(
270 'aria-label' => __( 'Step 2', 'formidable' ),
271 'echo' => false,
272 'style' => 'width:50px;height:50px;',
273 )
274 );
275
276 printf(
277 '<section class="step step-setup %1$s">
278 <aside class="num">
279 %2$s
280 <i class="loader hidden"></i>
281 </aside>
282 <div>
283 <h2>%3$s</h2>
284 <p>%4$s</p>
285 <span><a href="%5$s" class="button button-primary frm-button-primary %6$s">%7$s</a></span>
286 </div>
287 </section>',
288 esc_attr( $step['section_class'] ),
289 FrmAppHelper::kses( $icon, array( 'a', 'i', 'span', 'use', 'svg' ) ), // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
290 esc_html__( 'Set Up WP Mail SMTP', 'formidable' ),
291 esc_html__( 'Select and configure your mailer.', 'formidable' ),
292 esc_url( admin_url( $this->config['smtp_settings'] ) ),
293 esc_attr( $step['button_class'] ),
294 esc_html( $step['button_text'] )
295 );
296 }
297
298 /**
299 * Step 'Install' data.
300 *
301 * @since 4.04.04
302 *
303 * @return array Step data.
304 */
305 protected function get_data_step_install() {
306 $lite_plugin = new FrmInstallPlugin( array( 'plugin_file' => $this->config['lite_plugin'] ) );
307 $pro_plugin = new FrmInstallPlugin( array( 'plugin_file' => $this->config['pro_plugin'] ) );
308
309 $this->output_data['plugin_installed'] = $lite_plugin->is_installed();
310 $this->output_data['pro_plugin_installed'] = $pro_plugin->is_installed();
311 $this->output_data['plugin_activated'] = false;
312 $this->output_data['plugin_setup'] = false;
313
314 $step = array(
315 'icon' => 'frm_step1_icon',
316 'button_action' => '',
317 );
318
319 $is_installed = $this->output_data['plugin_installed'] || $this->output_data['pro_plugin_installed'];
320
321 if ( ! $is_installed ) {
322 // Return the download url.
323 $step['button_text'] = __( 'Install WP Mail SMTP', 'formidable' );
324 $step['button_class'] = 'frm-install-addon';
325 $step['button_action'] = __( 'Install', 'formidable' );
326 $step['plugin'] = $this->config['lite_download_url'];
327 return $step;
328 }
329
330 $this->output_data['plugin_activated'] = $this->is_smtp_activated();
331 $this->output_data['plugin_setup'] = $this->is_smtp_configured();
332
333 $step['plugin'] = $this->output_data['pro_plugin_installed'] ? $this->config['pro_plugin'] : $this->config['lite_plugin'];
334
335 if ( $this->output_data['plugin_activated'] ) {
336 $step['icon'] = 'frm_step_complete_icon';
337 $step['button_text'] = __( 'WP Mail SMTP Installed & Activated', 'formidable' );
338 $step['button_class'] = 'grey disabled';
339 } else {
340 $step['button_text'] = __( 'Activate WP Mail SMTP', 'formidable' );
341 $step['button_class'] = 'frm-activate-addon';
342 $step['button_action'] = __( 'Activate', 'formidable' );
343 }
344
345 return $step;
346 }
347
348 /**
349 * Step 'Setup' data.
350 *
351 * @since 4.04.04
352 *
353 * @return array Step data.
354 */
355 protected function get_data_step_setup() {
356 $step = array();
357
358 $step['icon'] = 'frm_step2_icon';
359 $step['section_class'] = $this->output_data['plugin_activated'] ? '' : 'grey';
360 $step['button_text'] = esc_html__( 'Start Setup', 'formidable' );
361 $step['button_class'] = 'grey disabled';
362
363 if ( $this->output_data['plugin_setup'] ) {
364 $step['icon'] = 'frm_step_complete_icon';
365 $step['section_class'] = '';
366 $step['button_text'] = esc_html__( 'Go to SMTP settings', 'formidable' );
367 } elseif ( $this->output_data['plugin_activated'] ) {
368 $step['button_class'] = '';
369 }
370
371 return $step;
372 }
373
374 /**
375 * Whether WP Mail SMTP plugin configured or not.
376 *
377 * @since 4.04.04
378 *
379 * @return bool True if some mailer is selected and configured properly.
380 */
381 protected function is_smtp_configured() {
382 if ( ! $this->is_smtp_activated() ) {
383 return false;
384 }
385
386 $phpmailer = $this->get_phpmailer();
387 $mailer = WPMailSMTP\Options::init()->get( 'mail', 'mailer' );
388 $is_mailer_complete = wp_mail_smtp()->get_providers()->get_mailer( $mailer, $phpmailer )->is_mailer_complete();
389
390 return 'mail' !== $mailer && $is_mailer_complete;
391 }
392
393 /**
394 * Whether WP Mail SMTP plugin active or not.
395 *
396 * @since 4.04.04
397 *
398 * @return bool True if SMTP plugin is active.
399 */
400 protected function is_smtp_activated() {
401 return function_exists( 'wp_mail_smtp' ) && ( is_plugin_active( $this->config['lite_plugin'] ) || is_plugin_active( $this->config['pro_plugin'] ) );
402 }
403
404 /**
405 * Get $phpmailer instance.
406 *
407 * @since 4.04.04
408 *
409 * @return PHPMailer|\WPMailSMTP\Providers\MailCatcherInterface Instance of PHPMailer.
410 */
411 protected function get_phpmailer() {
412 global $phpmailer;
413
414 if ( is_object( $phpmailer ) && is_a( $phpmailer, 'PHPMailer' ) ) {
415 return $phpmailer;
416 }
417
418 if ( is_callable( array( wp_mail_smtp(), 'generate_mail_catcher' ) ) ) {
419 $phpmailer = wp_mail_smtp()->generate_mail_catcher( true ); // phpcs:ignore
420 } else {
421 require_once ABSPATH . WPINC . '/class-phpmailer.php';
422 $phpmailer = new PHPMailer( true ); // phpcs:ignore
423 }
424
425 return $phpmailer;
426 }
427
428 /**
429 * Redirect to SMTP settings page if it is activated..
430 *
431 * @since 4.04.04
432 *
433 * @return void
434 */
435 public function redirect_to_smtp_settings() {
436 if ( $this->is_smtp_configured() ) {
437 wp_safe_redirect( admin_url( $this->config['smtp_settings'] ) );
438 exit;
439 }
440 }
441
442 /**
443 * @return void
444 */
445 private function stmp_logo() {
446 // phpcs:disable Generic.WhiteSpace.ScopeIndent
447 ?>
448 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 60 60" height="90" width="90"><defs><style>.cls-11,.cls-12{fill-rule:evenodd}.cls-4{fill:none}.cls-11{fill:#86a196}.cls-12{fill:#fff}</style></defs><path class="cls-4" d="M-6.3 0h60v60h-60z"/><path d="M16.7 8.1a15.4 15.4 0 00-8 10.2 23.5 23.5 0 1030 0 15.4 15.4 0 00-9.3-10.8 3.4 3.4 0 00-2.1-2.7A4.6 4.6 0 0018.4 3a24.4 24.4 0 00-1.7 5z" fill="#395360" fill-rule="evenodd"/><path fill="#fbaa6f" d="M18 26h12v14H18z"/><path d="M25.9 33.2l-.1-.1a1.4 1.4 0 111.6-2.3 1.9 1.9 0 00-1.2.8 1.9 1.9 0 00-.3 1.6zm-4.5 0a1.8 1.8 0 00-.4-1.6 2 2 0 00-1.2-.8 1.4 1.4 0 011.6 2.3zm7.2-3.2h.5l-1 4.8-2.2 6.5h-4.3l-3.2-5.4 1.1-3.2 2.1 2.7c.6.5 2.7.5 3.8-.6a26.2 26.2 0 003.2-4.8z" fill="#dc7f3c" fill-rule="evenodd"/><path d="M9.7 29H15v-9h-4a13 13 0 017.4-10q1.2-5 2.8-6.8l.1-.1.1-.1a2.3 2.3 0 011.1-.5 2.3 2.3 0 012.2 3.8 1.6 1.6 0 01-.4.3A15 15 0 0023 8a5 5 0 013-1.5 1.4 1.4 0 01.7.2 1.3 1.3 0 01.5 1.8 1.3 1.3 0 01-.6.6 13 13 0 0110.1 11l.1.8H33v8h4.8l1.8 13.4q-6.3 4-15.8 4T8 42.4zM25 38.4q3.8-6.4 3.8-7.6c0-2.2-3.2-4-4.8-4s-4.9 1.7-4.9 4q0 1.2 3.8 7.6a1.2 1.2 0 001 .6 1 1 0 001-.6z" fill="#bdcfc8" fill-rule="evenodd"/><path class="cls-4" d="M19 31h9.6L27 47.2h-6.4l-1.6-16z"/><path d="M39.8 48.8a20 20 0 01-32 0l.8-6a2.7 2.7 0 001 .1 2.8 2.8 0 002.8-2.4v1.2a2.8 2.8 0 005.6 0v1.6a2.9 2.9 0 005.7 0 2.8 2.8 0 005.7 0v-1.6a2.8 2.8 0 105.7 0v-1.2A2.8 2.8 0 0038 43a2.9 2.9 0 001-.2l.8 6z" fill="#809eb0" fill-rule="evenodd"/><path d="M8.3 44.6l.3-1.8a2.7 2.7 0 001 .2 2.8 2.8 0 002.8-2.5v1.2a2.8 2.8 0 005.7 0v1.7a2.9 2.9 0 005.6 0 2.8 2.8 0 005.7 0v-1.7a2.8 2.8 0 105.7 0v-1.2A2.8 2.8 0 0038 43a2.9 2.9 0 001-.2l.3 2a2.9 2.9 0 01-4.1-2.2v1.2a2.8 2.8 0 11-5.7 0v1.6a2.8 2.8 0 01-5.7 0 2.9 2.9 0 01-5.7 0v-1.7a2.8 2.8 0 01-5.7 0v-1.2A2.8 2.8 0 019.6 45a2.9 2.9 0 01-1.3-.3z" fill="#738e9e" fill-rule="evenodd"/><path class="cls-11" d="M37.8 22.4c-1-2.9-3-4.7-4.7-4.5-2.2.2-2.8 3.7-2.3 8s1.7 7.5 3.9 7.3 4-3.9 3.6-8c0 1.2-.5 2.3-1.3 2.4-1.2 0-1.5-1.2-1.6-2.9s-.2-3 1-3a1.5 1.5 0 011.4.7z"/><path class="cls-12" d="M37 21.8c-.6-1.3-1.5-2-2.4-1.9-1.5.1-1.9 2.6-1.6 5.5s1.2 5.1 2.7 5c1.1-.2 2-1.5 2.2-3.4a1.2 1.2 0 01-1 .6c-1 0-1.4-1.2-1.5-2.9s-.1-3 1-3a1.6 1.6 0 01.6 0z"/><path class="cls-11" d="M9.6 22.4c1-2.9 3-4.7 4.7-4.5 2.2.2 2.8 3.7 2.3 8s-1.7 7.5-3.9 7.3-4-3.9-3.7-8c.1 1.2.5 2.3 1.4 2.4 1.1 0 1.5-1.2 1.6-2.9s.1-3-1-3a1.5 1.5 0 00-1.4.7z"/><path class="cls-12" d="M10.4 21.8c.6-1.3 1.5-2 2.4-1.9 1.5.1 1.8 2.6 1.5 5.5s-1.1 5.1-2.6 5c-1.1-.2-2-1.5-2.2-3.4a1.2 1.2 0 00.9.6c1.1 0 1.4-1.2 1.6-2.9s.1-3-1-3a1.7 1.7 0 00-.7 0z"/><path d="M19 28.6a5.3 5.3 0 010-.7c0-2.4 1.2-5.2 4.9-5.2s4.8 2.8 4.8 5.2a4.4 4.4 0 010 1c-.9-1.3-2.4-2.1-4.9-2.1-2.4 0-3.9.7-4.8 1.8z" fill="#f4f8ff" fill-rule="evenodd"/><path class="cls-11" d="M26.5 9.2L23.3 9l4-1.2a1.4 1.4 0 01-.8 1.4zm-3.5-1l-1.3 1a16.8 16.8 0 002-3.8 6.6 6.6 0 00.3-2.7A2.4 2.4 0 0125.2 5a2.4 2.4 0 01-.7 1.5A15 15 0 0023 8.1z"/></svg><?php // phpcs:ignore SlevomatCodingStandard.Files.LineLength.LineTooLong ?>
449 <?php
450 // phpcs:enable Generic.WhiteSpace.ScopeIndent
451 }
452
453 /**
454 * @return void
455 */
456 private function css() {
457 // phpcs:disable Generic.WhiteSpace.ScopeIndent
458 ?>
459 <style>
460 #frm-admin-smtp *, #frm-admin-smtp *::before, #frm-admin-smtpp *::after {
461 box-sizing: border-box;
462 }
463 #frm-admin-smtp{
464 width: 700px;
465 margin: 0 auto;
466 }
467 #frm-admin-smtp p {
468 font-size: 15px;
469 }
470 #frm-admin-smtp section{
471 margin: 50px 0;
472 text-align: left;
473 clear: both;
474 }
475 #frm-admin-smtp .top{
476 text-align: center;
477 }
478 .frm-smtp-logos {
479 margin-bottom: 38px;
480 }
481 .frm-smtp-logos svg {
482 vertical-align: middle;
483 }
484 #frm-admin-smtp .top h1 {
485 font-size: 26px;
486 font-weight: 600;
487 margin-bottom: 0;
488 padding: 0;
489 }
490 #frm-admin-smtp .top p {
491 font-size: 17px;
492 color: #777;
493 margin-top: .5em;
494 }
495 #frm-admin-smtp .screenshot ul {
496 display: inline-block;
497 margin: 0 0 0 30px;
498 list-style-type: none;
499 max-width: calc(100% - 350px);
500 }
501 #frm-admin-smtp .screenshot li {
502 margin: 16px 0;
503 padding: 0;
504 font-size: 15px;
505 color: #777;
506 }
507 #frm-admin-smtp .screenshot .cont img {
508 max-width: 100%;
509 display: block;
510 }
511 #frm-admin-smtp .screenshot .cont {
512 display: inline-block;
513 position: relative;
514 width: 315px;
515 padding: 5px;
516 background-color: #fff;
517 border-radius: 3px;
518 }
519 #frm-admin-smtp .step,
520 #frm-admin-smtp .screenshot .cont {
521 box-shadow: 0px 2px 5px 0px rgba(0, 0, 0, 0.05);
522 }
523 #frm-admin-smtp .step {
524 background-color: #F9F9F9;
525 border: 1px solid #E5E5E5;
526 margin: 0 0 25px;
527 }
528 #frm-admin-smtp .screenshot > *,
529 #frm-admin-smtp .step > * {
530 vertical-align: middle;
531 }
532 #frm-admin-smtp .step p {
533 font-size: 16px;
534 color: #777777;
535 }
536 #frm-admin-smtp .step .num {
537 display: inline-block;
538 position: relative;
539 width: 100px;
540 height: 50px;
541 text-align: center;
542 }
543 #frm-admin-smtp .step div {
544 display: inline-block;
545 width: calc(100% - 104px);
546 background-color: #fff;
547 padding: 30px;
548 border-left: 1px solid #eee;
549 }
550 #frm-admin-smtp .grey {
551 opacity: 0.5;
552 background: #F6F6F6 !important;
553 border-color: #ddd !important;
554 color: #9FA5AA !important;
555 }
556 #frm-admin-smtp .step h2 {
557 font-size: 24px;
558 line-height: 22px;
559 margin-top: 0;
560 margin-bottom: 15px;
561 }
562 #frm-admin-smtp .button.disabled {
563 cursor: default;
564 }
565 </style>
566 <?php
567 // phpcs:enable Generic.WhiteSpace.ScopeIndent
568 }
569 }
570