' . __( 'NEW!', 'userfeedback-lite' ) . ''; // Add main Menu Item add_menu_page( __( 'UserFeedback', 'userfeedback-lite' ), __( 'UserFeedback', 'userfeedback-lite' ) . UserFeedback()->notifications->get_count_for_admin_sidebar(), 'userfeedback_create_edit_surveys', $menu_slug, 'userfeedback_surveys_page', USERFEEDBACK_PLUGIN_URL . 'assets/img/logo-outline.svg', '100' ); // Surveys add_submenu_page( $menu_slug, __( 'Surveys', 'userfeedback-lite' ), __( 'Surveys', 'userfeedback-lite' ), 'userfeedback_create_edit_surveys', 'userfeedback_surveys', 'userfeedback_surveys_page' ); // Results add_submenu_page( $menu_slug, __( 'Results', 'userfeedback-lite' ), __( 'Results', 'userfeedback-lite' ), 'userfeedback_view_results', 'userfeedback_results', 'userfeedback_results_page' ); // Post Ratings add_submenu_page( $menu_slug, __( 'Post Ratings', 'userfeedback-lite' ), __( 'Post Ratings', 'userfeedback-lite' ) . $new_indicator, 'manage_options', 'userfeedback_post_ratings', 'userfeedback_post_ratings_page' ); // Email Surveys add_submenu_page( $menu_slug, __( 'Email Surveys', 'userfeedback-lite' ), __( 'Email Surveys', 'userfeedback-lite' ) . $new_indicator, 'manage_options', 'userfeedback_email_surveys', 'userfeedback_email_surveys_page' ); // Heatmaps add_submenu_page( $menu_slug, __( 'Heatmaps', 'userfeedback-lite' ), __( 'Heatmaps', 'userfeedback-lite' ) . $new_indicator, 'manage_options', 'userfeedback_heatmaps', 'userfeedback_heatmaps_page' ); $settings_menu_slug = 'userfeedback_settings'; // Settings add_submenu_page( $menu_slug, __( 'Settings', 'userfeedback-lite' ), __( 'Settings', 'userfeedback-lite' ), 'userfeedback_save_settings', $settings_menu_slug, 'userfeedback_settings_page' ); // Addons add_submenu_page( $menu_slug, __( 'Addons', 'userfeedback-lite' ), '' . __( 'Addons', 'userfeedback-lite' ) . '', 'userfeedback_save_settings', 'userfeedback_addons', 'userfeedback_addons_page' ); $settings_submenu_base = add_query_arg( 'page', $settings_menu_slug, admin_url( 'admin.php' ) ); // Integrations add_submenu_page( $menu_slug, __( 'Integrations', 'userfeedback-lite' ), '' . __( 'Integrations', 'userfeedback-lite' ) . '', 'manage_options', $settings_submenu_base . '#/integrations' ); // SMTP add_submenu_page( $menu_slug, __( 'SMTP', 'userfeedback-lite' ), __( 'SMTP', 'userfeedback-lite' ), 'manage_options', 'userfeedback_smtp', 'userfeedback_smtp_page' ); // About Us add_submenu_page( $menu_slug, __( 'About Us', 'userfeedback-lite' ), __( 'About Us', 'userfeedback-lite' ), 'manage_options', $settings_submenu_base . '#/about' ); // Growth Tools add_submenu_page( $menu_slug, __( 'Growth Tools', 'userfeedback-lite' ), __( 'Growth Tools', 'userfeedback-lite' ), 'manage_options', $settings_submenu_base . '#/growth-tools' ); // Suggest a Feature add_submenu_page( $menu_slug, __( 'Suggest a Feature', 'userfeedback-lite' ), '' . __( 'Suggest a Feature', 'userfeedback-lite' ) . '', 'manage_options', userfeedback_get_url( 'admin-menu', '', 'https://www.userfeedback.com/suggest-feature/' ) ); if ( ! userfeedback_is_pro_version() ) { add_submenu_page( $menu_slug, __( 'Upgrade to Pro:', 'userfeedback-lite' ), ' ' . __( 'Upgrade to Pro', 'userfeedback-lite' ) . '', 'userfeedback_save_settings', userfeedback_get_upgrade_link( 'admin-menu', 'submenu', 'https://www.userfeedback.com/lite/' ) ); } } /** * Register admin bar menu items for UserFeedback. * * @since 1.3.0 * * @param $admin_bar * @return void */ function userfeedback_admin_bar_menu( $admin_bar ) { $admin_bar->add_node([ 'id' => 'userfeedback-admin-bar', 'title' => __( 'UserFeedback', 'userfeedback-lite' ) ]); $admin_bar->add_node([ 'id' => 'userfeedback-admin-bar-all-surveys', 'title' => __( 'All Surveys', 'userfeedback-lite' ), 'parent' => 'userfeedback-admin-bar', 'href' => site_url( '/wp-admin/admin.php?page=userfeedback_surveys#/' ) ]); $admin_bar->add_node([ 'id' => 'userfeedback-admin-bar-responses', 'title' => __( 'Responses', 'userfeedback-lite' ), 'parent'=> 'userfeedback-admin-bar', 'href' => site_url( '/wp-admin/admin.php?page=userfeedback_results#/' ) ]); $admin_bar->add_node([ 'id' => 'userfeedback-admin-bar-help', 'title' => __( 'Help', 'userfeedback-lite' ), 'parent' => 'userfeedback-admin-bar', 'href' => userfeedback_get_url( 'admin-menu', 'admin-bar', 'https://www.userfeedback.com/docs/' ), 'meta' => [ 'target' => '_blank' ] ]); if ( ! userfeedback_is_pro_version() ) { $admin_bar->add_node([ 'id' => 'userfeedback-admin-bar-upgrade-pro', 'title' => __( 'Upgrade to Pro', 'userfeedback-lite' ), 'parent' => 'userfeedback-admin-bar', 'href' => userfeedback_get_upgrade_link( 'admin-menu', 'admin-bar', 'https://www.userfeedback.com/lite/' ), 'meta' => [ 'target' => '_blank' ] ]); } } if ( is_admin() ) { add_action( 'admin_menu', 'userfeedback_admin_menu' ); add_action('admin_bar_menu', 'userfeedback_admin_bar_menu', 100); } // ---------------------------------------------------- // ------------ Menu Callback functions --------------- // ---------------------------------------------------- /** * Render UserFeedback Surveys page * * @return void */ function userfeedback_surveys_page() { echo '
'; } /** * Render UserFeedback Results page * * @return void */ function userfeedback_results_page() { echo '
'; } /** * Render UserFeedback Post Ratings page * * @return void */ function userfeedback_post_ratings_page() { echo '
'; } /** * Render UserFeedback Email Surveys page * * @return void */ function userfeedback_email_surveys_page() { echo '
'; } /** * Render UserFeedback Heatmap page * * @return void */ function userfeedback_heatmaps_page() { echo '
'; } /** * Render UserFeedback Settings page * * @return void */ function userfeedback_settings_page() { echo '
'; } /** * Render UserFeedback Addons page * * @return void */ function userfeedback_addons_page() { echo '
'; } /** * Render UserFeedback SMTP page * * @return void */ function userfeedback_smtp_page() { echo '
'; } // ---------------------------------------------------- // ---------------- Additional hooks ------------------ // ---------------------------------------------------- function userfeedback_hide_admin_notices() { if ( userfeedback_screen_is_userfeedback() ) { remove_all_actions( 'admin_notices' ); } } add_action( 'admin_head', 'userfeedback_hide_admin_notices', 1 ); /** * Add a link to the settings page to the plugins list * * @param array $links array of links for the plugins, adapted when the current plugin is found. * * @return array $links */ function userfeedback_add_action_links( $links ) { $docs = '' . esc_html__( 'Documentation', 'userfeedback-lite' ) . ''; array_unshift( $links, $docs ); // If Lite, support goes to forum. If pro, it goes to our website if ( userfeedback_is_pro_version() ) { $support = '' . esc_html__( 'Support', 'userfeedback-lite' ) . ''; array_unshift( $links, $support ); } else { $support = '' . esc_html__( 'Support', 'userfeedback-lite' ) . ''; array_unshift( $links, $support ); } $settings_link = '' . esc_html__( 'Settings', 'userfeedback-lite' ) . ''; array_unshift( $links, $settings_link ); // If lite, show a link where they can get pro from if ( ! userfeedback_is_pro_version() ) { $get_pro = '' . esc_html__( 'Get UserFeedback Pro', 'userfeedback-lite' ) . ''; array_unshift( $links, $get_pro ); } return $links; } add_filter( 'plugin_action_links_' . plugin_basename( USERFEEDBACK_PLUGIN_FILE ), 'userfeedback_add_action_links' ); /** * Adds one or more classes to the body tag in the dashboard. * * @param String $classes Current body classes. * @return String Altered body classes. */ function userfeedback_add_admin_body_class( $classes ) { $screen = function_exists( 'get_current_screen' ) ? get_current_screen() : false; if ( empty( $screen ) || empty( $screen->id ) || strpos( $screen->id, 'userfeedback' ) === false ) { return $classes; } return "$classes userfeedback_page "; } add_filter( 'admin_body_class', 'userfeedback_add_admin_body_class', 10, 1 ); // ---------------------------------------------------- // ---------------- Onboarding Launch ------------------ // ---------------------------------------------------- function userfeedback_onboarding_first_launch() { $surveys = UserFeedback_Survey::all(); // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Read-only check of admin page param for first-launch redirect. if (userfeedback_screen_is_userfeedback() && isset($_GET['page']) && 'userfeedback_surveys' === sanitize_key( wp_unslash( $_GET['page'] ) ) && empty($surveys)) { $surveys_screen_first_visit = userfeedback_get_option('userfeedback_surveys_screen_first_visit', false); $userfeedback_onboarding_step = userfeedback_get_option('userfeedback_onboarding_step', false); if (!$surveys_screen_first_visit && !$userfeedback_onboarding_step) { userfeedback_update_option('userfeedback_surveys_screen_first_visit', true); wp_safe_redirect(admin_url('admin.php?page=userfeedback_onboarding')); exit(); } } } add_action( 'current_screen', 'userfeedback_onboarding_first_launch', 1 );