Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
172 commits
Select commit Hold shift + click to select a range
495b6ca
Add FrmWelcomeTourController for welcome tour functionality
shervElmi Aug 19, 2025
846bac5
Add welcome tour get started modal view
shervElmi Aug 19, 2025
9008015
Add welcome tour JavaScript entry point and webpack config
shervElmi Aug 19, 2025
45fd6f9
Remove modal rendering and add visibility helper
shervElmi Aug 19, 2025
6fff4bc
Consolidate global DOM utilities into single module
shervElmi Aug 19, 2025
d3bd0f6
Add welcome tour shared constants module
shervElmi Aug 19, 2025
61e2f28
Implement welcome tour modal with JavaScript initialization
shervElmi Aug 19, 2025
6944f0a
Fix modal width parameter in makeModalIntoADialogAndOpen call
shervElmi Aug 19, 2025
2b29339
Merge branch 'master' into rock/welcome-tour
Crabcyborg Sep 3, 2025
9123801
Fix a space issue in webpack config, add event listener to begin tour…
Crabcyborg Sep 3, 2025
f6de987
Merge branch 'master' into rock/welcome-tour
Crabcyborg Sep 3, 2025
9d994f7
Add the progress bar
Crabcyborg Sep 3, 2025
5393a83
Inject the progress Checklist + progress bar using JS so it can work …
Crabcyborg Sep 4, 2025
9c609ed
Move JS into the index.js file that was already made, use global JS v…
Crabcyborg Sep 4, 2025
cf0a816
Drop file that is not being used
Crabcyborg Sep 4, 2025
6fd37cc
Put back the modal JS
Crabcyborg Sep 4, 2025
106b92d
Clean up, set up some logic for steps
Crabcyborg Sep 4, 2025
90ad94d
Clean up, determine step based on DB info
Crabcyborg Sep 4, 2025
1a39162
Clean up
Crabcyborg Sep 4, 2025
e18d6c0
Merge branch 'master' into rock/welcome-tour
Crabcyborg Sep 10, 2025
f429976
Remove the Checklist submenu item
Crabcyborg Sep 10, 2025
308a9f3
Working on the checklist element
Crabcyborg Sep 10, 2025
319b44c
Make adjustments to steps, work on adding steps to checklist element
Crabcyborg Sep 10, 2025
d3dce27
Merge branch 'master' into rock/welcome-tour
Crabcyborg Sep 11, 2025
b164246
Add the icons for welcome tour checklist, improve welcome tour scss s…
Crabcyborg Sep 11, 2025
39d3124
Show the welcome checklist based on active step, and show on editor f…
Crabcyborg Sep 11, 2025
751f329
Move welcome tour scss out of admin CSS, work on the styler step
Crabcyborg Sep 11, 2025
f45bbe6
Working on embed form step, work on adding in the progress bar, work …
Crabcyborg Sep 12, 2025
18174d4
Work on the completed step
Crabcyborg Sep 12, 2025
b38f8f6
Continue to work on completed step (use p tags, strong tag, add the link
Crabcyborg Sep 12, 2025
da5fad9
Use target=_blank
Crabcyborg Sep 12, 2025
57952ca
Commit other build files
Crabcyborg Sep 12, 2025
a8d699e
Add cta buttons to completed welcome tour step
Crabcyborg Sep 12, 2025
61750ef
Fix PHP warning by moving method call to WordPress hook
shervElmi Sep 18, 2025
db19f94
Add utility functions for DOM creation and navigation
shervElmi Sep 18, 2025
88a0b0e
Add welcome tour modal element functionality
shervElmi Sep 18, 2025
6df145a
Add elements management module for welcome tour
shervElmi Sep 18, 2025
2468886
Add event handling for welcome tour button interactions
shervElmi Sep 18, 2025
cd97ae2
Refactor shared constants destructuring and cleanup
shervElmi Sep 18, 2025
589ed44
Refactor modal module to use separate element and event modules
shervElmi Sep 18, 2025
8f3eb9e
Add page detection utilities for welcome tour
shervElmi Sep 18, 2025
5e908e9
Refactor welcome tour checklist handling
shervElmi Sep 24, 2025
9742616
Initialize completed steps and add welcome tour seen tracking
shervElmi Sep 24, 2025
d5d30d2
Refactor checklist progress tracking
shervElmi Sep 24, 2025
d75528f
Complete welcome tour checklist functionality
shervElmi Sep 24, 2025
d572f9d
Add welcome tour view templates
shervElmi Sep 24, 2025
806a903
Update welcome tour CSS with BEM methodology
shervElmi Sep 24, 2025
fdd4468
Add floating links filter and integrate with welcome tour
shervElmi Sep 24, 2025
0af7c11
Add admin check to welcome tour controller
shervElmi Sep 24, 2025
2ac4836
Refactor welcome tour step tracking and rendering logic
shervElmi Sep 24, 2025
8ada180
Simplify step template structure
shervElmi Sep 24, 2025
681598c
Add completion view template for welcome tour
shervElmi Sep 24, 2025
1a9f8df
Refactor checklist template with utility classes and dynamic includes
shervElmi Sep 24, 2025
3f00a97
Extract checklist styles to separate component file
shervElmi Sep 24, 2025
e12d7a3
Add utility classes for welcome tour styling
shervElmi Sep 24, 2025
44283af
Fix step completion property name
shervElmi Sep 25, 2025
25b8b1a
Enhance step list template with status indicators and conditional dis…
shervElmi Sep 25, 2025
539779f
Refactor completion template with improved accessibility and styling
shervElmi Sep 25, 2025
9ecbd6a
Improve checklist layout with flex properties and conditional dismiss
shervElmi Sep 25, 2025
e69b6df
Add comprehensive utility classes for welcome tour styling
shervElmi Sep 25, 2025
88e15a1
Add text decoration utility class
shervElmi Sep 25, 2025
3ffa019
Add comprehensive checklist component styling
shervElmi Sep 25, 2025
1225e8f
Add spotlight functionality to welcome tour controller
shervElmi Sep 29, 2025
01bd4df
Add spotlight view component to welcome tour
shervElmi Sep 29, 2025
c66ae64
Add spotlight SCSS styles and border radius utilities
shervElmi Sep 29, 2025
d436d78
Add spotlight JavaScript functionality and update exports
shervElmi Sep 29, 2025
aa20610
Add pulse animation to spotlight pointer
shervElmi Sep 29, 2025
1948e04
Refactor spotlight positioning to use DOM append method
shervElmi Sep 29, 2025
01e8541
Update spotlight positioning from fixed to absolute
shervElmi Sep 29, 2025
2b3b8f1
Refactor spotlight positioning with configurable left position
shervElmi Sep 29, 2025
378c339
Add dynamic left positioning logic to spotlight JavaScript
shervElmi Sep 30, 2025
9939a32
refactor: move welcome tour checklist to separate file and add spotli…
shervElmi Oct 9, 2025
3b4d9a7
feat: add conditional checklist display and update spotlight target f…
shervElmi Oct 9, 2025
06b5b6a
feat: add dialogClass parameter to modal creation for custom styling
shervElmi Oct 10, 2025
ddb2ea8
refactor: replace onDashboardPage() function with IS_DASHBOARD_PAGE c…
shervElmi Oct 10, 2025
718835d
refactor: simplify welcome tour logic and fix dashboard page visibility
shervElmi Oct 10, 2025
71abbb6
refactor: simplify welcome tour by using direct link instead of butto…
shervElmi Oct 10, 2025
bc9919f
fix: improve welcome tour checklist initialization and modal handling
shervElmi Oct 10, 2025
1b27c35
refactor: simplify welcome tour controller and improve state management
shervElmi Oct 10, 2025
05e4e1d
refactor: always show checklist in welcome tour regardless of flag
shervElmi Oct 10, 2025
37e2cdc
feat: add AJAX handlers for welcome tour checklist and dismissal
shervElmi Oct 14, 2025
8ad9b2e
refactor: simplify welcome tour controller and improve checklist func…
shervElmi Oct 14, 2025
8ef8c1b
refactor: show step descriptions for all items in welcome tour checklist
shervElmi Oct 14, 2025
4a3de3d
feat: add unique ID and class to welcome tour spotlight elements
shervElmi Oct 14, 2025
2467a67
feat: initialize welcome tour elements with checklist, dismiss, and s…
shervElmi Oct 14, 2025
4a768b2
feat: add collapsible functionality to welcome tour checklist
shervElmi Oct 14, 2025
ad79dcd
feat: add dismiss functionality to welcome tour with API integration
shervElmi Oct 14, 2025
218b766
feat: add welcome tour checklist with progress tracking and completio…
shervElmi Oct 14, 2025
9b375cc
feat: add collapsible checklist with animated transitions and spotlig…
shervElmi Oct 14, 2025
a693846
refactor: remove redundant code and simplify welcome tour controller …
shervElmi Oct 14, 2025
0f72869
feat: add clickable links to style and embed form steps in welcome tour
shervElmi Oct 14, 2025
802a3c2
refactor: replace URL variables with direct admin_url() calls in welc…
shervElmi Oct 14, 2025
2770e76
style: update checklist title font weight and remove cursor pointer s…
shervElmi Oct 14, 2025
c9a579f
refactor: improve spotlight positioning with fixed positioning and sc…
shervElmi Oct 14, 2025
4a98a68
fix: delay spotlight positioning and visibility to ensure proper targ…
shervElmi Oct 15, 2025
b7d0447
refactor: simplify spotlight positioning logic and remove viewport co…
shervElmi Oct 15, 2025
e999533
refactor: reorganize welcome tour initialization and rendering logic …
shervElmi Oct 15, 2025
5c7e173
refactor: update welcome tour positioning and simplify JS variables
shervElmi Oct 15, 2025
545aea5
refactor: update spotlight component classes for consistent styling a…
shervElmi Oct 15, 2025
9bed582
feat: add fade animation to spotlight when scrolling past top bar
shervElmi Oct 15, 2025
c3bc388
feat: add fade-in animation and timing variable to spotlight component
shervElmi Oct 15, 2025
e95f0f4
feat: add form ID caching and style link to welcome tour steps
shervElmi Oct 15, 2025
ff2f818
feat: add data-link attribute to welcome tour steps with link property
shervElmi Oct 15, 2025
d6e0502
feat: add link wrapping to checklist steps and improve step completio…
shervElmi Oct 15, 2025
30126bc
feat: add fadeOut animation with configurable duration via CSS variable
shervElmi Oct 15, 2025
14238bd
refactor: reorder admin hooks and update style form spotlight positio…
shervElmi Oct 16, 2025
84506b6
Merge remote-tracking branch 'origin/HEAD' into rock/welcome-tour
shervElmi Oct 16, 2025
de67a51
Add auto generated files
shervElmi Oct 16, 2025
ae8bca6
feat: add bottom placement option for spotlight tour pointer
shervElmi Oct 16, 2025
2453cd8
refactor: move checklist step completion logic to separate module and…
shervElmi Oct 16, 2025
20a876f
refactor: consolidate event listener initialization into single function
shervElmi Oct 16, 2025
9063c2f
refactor: improve welcome tour completion handling and code organization
shervElmi Oct 16, 2025
329c027
feat: add bottom placement support for spotlight component in welcome…
shervElmi Oct 16, 2025
8527b82
fix: always enqueue welcome tour assets and improve form ID fallback …
shervElmi Oct 16, 2025
cb7eae3
feat: add margin offset support for welcome tour spotlight positioning
shervElmi Oct 16, 2025
c16298a
feat: add event handler for styler update button in welcome tour
shervElmi Oct 16, 2025
705ad4d
Fix ESLint errors
shervElmi Oct 16, 2025
8c90de6
Fix PHPCS errors
shervElmi Oct 16, 2025
4a6797f
fix: Run Rector inspection errors
shervElmi Oct 16, 2025
6ce798a
fix: remove duplicate enqueue of welcome tour stylesheet
shervElmi Oct 16, 2025
873e85d
fix: update autoload parameter in checklist option to use false inste…
shervElmi Oct 16, 2025
2f65069
docs: add PHPDoc comment for get_current_form_id method
shervElmi Oct 16, 2025
c688d01
fix: remove redundant echo in esc_html_e function call for checklist …
shervElmi Oct 16, 2025
44af831
refactor: simplify welcome tour initialization by moving hook to admi…
shervElmi Oct 16, 2025
1c65ca6
chore: update error message from 'Step is empty' to 'Invalid step'
shervElmi Oct 16, 2025
04832c4
Merge branch 'master' into rock/welcome-tour
Crabcyborg Oct 17, 2025
253e430
chore: remove unused get_welcome_tour_progress_bar_percent method
shervElmi Oct 17, 2025
414d776
perf: replace querySelector with faster getElementById for top bar se…
shervElmi Oct 17, 2025
4b2d3b3
Add auto-generated files
shervElmi Oct 17, 2025
f8ba918
feat: track welcome tour progress and dismissal in usage analytics
shervElmi Oct 17, 2025
9b836f8
Merge remote-tracking branch 'origin/HEAD' into rock/welcome-tour
shervElmi Oct 22, 2025
ab0af68
Add auto-generated files
shervElmi Oct 22, 2025
19eab49
Merge remote-tracking branch 'origin/HEAD' into rock/welcome-tour
shervElmi Oct 23, 2025
1a2f1bf
Add auto-generated files
shervElmi Oct 23, 2025
cc47ecd
feat: only show welcome tour for new installations
shervElmi Oct 23, 2025
fbb6264
feat: add is_new_install flag to FrmSettings model
shervElmi Oct 23, 2025
04681e0
fix: update get_active_step return type from string to int in docblock
shervElmi Oct 23, 2025
f2220f7
Merge remote-tracking branch 'origin/HEAD' into rock/welcome-tour
shervElmi Oct 28, 2025
8c2b4fd
Usage tracking for welcome tour
truongwp Oct 28, 2025
0a8c766
feat: convert dismiss link to button for improved accessibility
shervElmi Oct 28, 2025
bccbed0
style: enhance checklist dismiss button hover state
shervElmi Oct 28, 2025
8026b61
Fix PHPCS
truongwp Oct 28, 2025
dcf5fe9
Track usage when click welcome tour completed links
truongwp Oct 31, 2025
da9e0dc
Fix PHPCS
truongwp Oct 31, 2025
bac1014
Add doc comment
truongwp Oct 31, 2025
db09dff
Move show_completed_links method
truongwp Oct 31, 2025
0c8e7cb
Remove unused variable
truongwp Oct 31, 2025
23f895f
Merge remote-tracking branch 'origin/HEAD' into rock/welcome-tour
shervElmi Oct 31, 2025
acce061
docs: remove redundant @since tags from method documentation
shervElmi Oct 31, 2025
89d8897
Merge pull request #2564 from Strategy11/welcome-tour-usage-tracking
Crabcyborg Nov 3, 2025
dc7d7e4
docs: add @since tags to welcome tour view files
shervElmi Nov 3, 2025
585679b
feat: improve welcome tour display logic
shervElmi Nov 3, 2025
239ae79
refactor: remove legacy Formidable Forms CSS file
shervElmi Nov 3, 2025
d0e38b8
fix: prevent duplicate checklist step completion checks
shervElmi Nov 3, 2025
c305f83
feat: add welcome tour tracking property to settings model
shervElmi Nov 3, 2025
8856427
fix: improve type checking for tour modal element
shervElmi Nov 3, 2025
777d646
feat: update modal ID to use consistent naming convention
shervElmi Nov 3, 2025
879bb12
Add auto-generated file
shervElmi Nov 3, 2025
1fc7913
handle welcome tour checklist to prevent Cypress test failures
lauramekaj1 Nov 3, 2025
3c2675b
Merge branch 'master' into rock/welcome-tour
Crabcyborg Nov 3, 2025
7d7fe7d
refactor: simplify begin tour modal validation logic
shervElmi Nov 3, 2025
2a3e2f1
dismiss welcome tour
lauramekaj1 Nov 3, 2025
4a26f7a
fix eslint error
lauramekaj1 Nov 3, 2025
ea3328e
update test
lauramekaj1 Nov 3, 2025
759d42b
Remove code breaking filters
Crabcyborg Nov 4, 2025
ed55bab
erge branch 'rock/welcome-tour' into update-e2e-tests-fo-the-welcome-…
Crabcyborg Nov 4, 2025
afc9fa5
Merge pull request #2573 from Strategy11/update-e2e-tests-fo-the-welc…
Crabcyborg Nov 4, 2025
8bfb115
feat: show welcome tour completion step only once
shervElmi Nov 4, 2025
a9859a1
Add translation support for welcome tour script
shervElmi Nov 4, 2025
2f368e2
refactor: simplify beginTourModal element addition logic
shervElmi Nov 4, 2025
8bc6d63
fix: prevent welcome tour display when no form exists
shervElmi Nov 4, 2025
457ddd5
refactor: update comment for begin tour modal registration
shervElmi Nov 4, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .eslintignore
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ js/formidable_admin.js
js/bootstrap-multiselect.js
js/formidable-settings-components.js
js/frm_testing_mode.js
js/welcome-tour.js

# Config files
*.config.js
Expand Down
11 changes: 10 additions & 1 deletion classes/controllers/FrmAppController.php
Original file line number Diff line number Diff line change
Expand Up @@ -855,10 +855,19 @@ private static function should_show_floating_links() {
return false;
}

return FrmAppHelper::is_formidable_admin() &&
$should_show = FrmAppHelper::is_formidable_admin() &&
! FrmAppHelper::is_style_editor_page() &&
! FrmAppHelper::is_admin_page( 'formidable-views-editor' ) &&
! FrmAppHelper::simple_get( 'frm_action', 'sanitize_title' );

/**
* Filters whether the floating links should be displayed.
*
* @since x.x
*
* @param bool $should_show Whether the floating links should be shown.
*/
return apply_filters( 'frm_should_show_floating_links', $should_show );
Comment thread
shervElmi marked this conversation as resolved.
}

/**
Expand Down
8 changes: 6 additions & 2 deletions classes/controllers/FrmHooksController.php
Original file line number Diff line number Diff line change
Expand Up @@ -209,6 +209,8 @@ public static function load_admin_hooks() {

add_action( 'frm_email_styles_extra_settings', 'FrmEmailStylesController::show_upsell_settings' );

add_action( 'admin_init', 'FrmWelcomeTourController::admin_init' );

FrmDashboardController::load_admin_hooks();
FrmTransLiteHooksController::load_admin_hooks();
FrmStrpLiteHooksController::load_admin_hooks();
Expand Down Expand Up @@ -310,13 +312,15 @@ public static function load_ajax_hooks() {

// Reviews.
add_action( 'wp_ajax_frm_dismiss_review', 'FrmAppController::dismiss_review' );

add_action( 'wp_ajax_frm_small_screen_proceed', 'FrmAppController::small_screen_proceed' );

add_action( 'wp_ajax_frm_sale_banner_dismiss', 'FrmSalesApi::dismiss_banner' );

add_action( 'wp_ajax_frm_email_style_preview', 'FrmEmailStylesController::ajax_preview' );
add_action( 'wp_ajax_frm_send_test_email', 'FrmEmailStylesController::ajax_send_test_email' );

// Welcome Tour.
add_action( 'wp_ajax_frm_mark_checklist_step_as_completed', 'FrmWelcomeTourController::ajax_mark_checklist_step_as_completed' );
add_action( 'wp_ajax_frm_dismiss_welcome_tour', 'FrmWelcomeTourController::ajax_dismiss_welcome_tour' );
}

/**
Expand Down
23 changes: 23 additions & 0 deletions classes/controllers/FrmStylesController.php
Original file line number Diff line number Diff line change
Expand Up @@ -497,6 +497,8 @@ private static function save_form_style() {
return;
}

$previous_style_id = $form->options['custom_style'];

// If the default style is selected, use the "Always use default" legacy option instead of the default style.
// There's also a check here for conversational forms.
// Without the check it isn't possible to select "Default" because "Always use default" will convert to "Lines" dynamically.
Expand All @@ -508,11 +510,25 @@ private static function save_form_style() {
// We want to save a string for consistency. FrmStylesHelper::get_form_count_for_style expects the custom style ID is a string.
$form->options['custom_style'] = (string) $style_id;

if ( $previous_style_id === $form->options['custom_style'] ) {
// Exit early before updating DB if nothing actually changed.
self::$message = __( 'Successfully updated style.', 'formidable' );
return;
}

global $wpdb;
$wpdb->update( $wpdb->prefix . 'frm_forms', array( 'options' => maybe_serialize( $form->options ) ), array( 'id' => $form->id ) );

FrmForm::clear_form_cache();

/**
* @since x.x
*
* @param int $form_id
* @param int $style_id
*/
do_action( 'frm_after_changed_form_style', absint( $form_id ), absint( $style_id ) );
Comment thread
shervElmi marked this conversation as resolved.

self::$message = __( 'Successfully updated style.', 'formidable' );
}

Expand Down Expand Up @@ -683,6 +699,13 @@ public static function save_style() {
$post_id = reset( $id );
}

/**
* @since x.x
*
* @param int $post_id
*/
do_action( 'frm_after_saved_style', absint( $post_id ) );
Comment thread
shervElmi marked this conversation as resolved.

self::$message = __( 'Your styling settings have been saved.', 'formidable' );
}

Expand Down
2 changes: 1 addition & 1 deletion classes/controllers/FrmUsageController.php
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ public static function send_snapshot() {
* @since 6.16.1
*/
public static function load_scripts() {
if ( self::is_forms_list_page() || FrmAppHelper::is_admin_page( 'formidable-form-templates' ) ) {
if ( self::is_forms_list_page() || FrmAppHelper::is_admin_page( 'formidable-form-templates' ) || FrmAppHelper::is_admin_page() ) {
wp_enqueue_script( 'frm-usage-tracking', FrmAppHelper::plugin_url() . '/js/admin/usage-tracking.js', array( 'formidable_dom' ), FrmAppHelper::$plug_version, true );
}
}
Expand Down
Loading