$new_count_i18n"; $title = sprintf( $format, $update_markup ); } // Add the main admin Jetpack menu with possible information about new // modules add_menu_page( 'Jetpack', $title, 'jetpack_admin_page', 'jetpack', array( $this, 'render' ), 'div' ); // also create the submenu return add_submenu_page( 'jetpack', $title, $title, 'jetpack_admin_page', 'jetpack' ); } function add_page_actions( $hook ) { // Add landing page specific underscore templates /** * Filters the js_templates callback value * * @since 3.6.0 * * @param array array( $this, 'js_templates' ) js_templates callback. * @param string $hook Specific admin page. */ add_action( "admin_footer-$hook", apply_filters( 'jetpack_landing_page_js_templates_callback', array( $this, 'js_templates' ), $hook ) ); /** This action is documented in class.jetpack.php */ do_action( 'jetpack_admin_menu', $hook ); // Place the Jetpack menu item on top and others in the order they // appear add_filter( 'custom_menu_order', '__return_true' ); add_filter( 'menu_order', array( $this, 'jetpack_menu_order' ) ); add_action( 'jetpack_notices_update_settings', array( $this, 'show_notices_update_settings' ), 10, 1 ); } /* * Build an array of a specific module tag. * * @param string Name of the module tag * @return array The module slug, config url, and name of each Jump Start module */ function jumpstart_module_tag( $tag ) { $modules = Jetpack_Admin::init()->get_modules(); $module_info = array(); foreach ( $modules as $module => $value ) { if ( in_array( $tag, $value['feature'] ) ) { $module_info[] = array( 'module_slug' => $value['module'], 'module_name' => $value['name'], 'configure_url' => $value['configure_url'], ); } } return $module_info; } /* * Only show Jump Start on first activation. * Any option 'jumpstart' other than 'new connection' will hide it. * * The option can be of 4 things, and will be stored as such: * new_connection : Brand new connection - Show * jumpstart_activated : Jump Start has been activated - dismiss * jetpack_action_taken: Manual activation of a module already happened - dismiss * jumpstart_dismissed : Manual dismissal of Jump Start - dismiss * * @return bool | show or hide */ function jetpack_show_jumpstart() { $jumpstart_option = Jetpack_Options::get_option( 'jumpstart' ); $hide_options = array( 'jumpstart_activated', 'jetpack_action_taken', 'jumpstart_dismissed' ); if ( ! $jumpstart_option || in_array( $jumpstart_option, $hide_options ) ) { return false; } return true; } /* * List of recommended modules for the Jump Start paragraph text. * Will only show up in the paragraph if they are not active. * * @return string | comma-separated recommended modules that are not active */ function jumpstart_list_modules() { $jumpstart_recommended = $this->jumpstart_module_tag( 'Jumpstart' ); $module_name = array(); foreach ( $jumpstart_recommended as $module => $val ) { if ( ! Jetpack::is_module_active( $val['module_slug'] ) ) { $module_name[] = $val['module_name']; } } return $module_name; } function jetpack_menu_order( $menu_order ) { $jp_menu_order = array(); foreach ( $menu_order as $index => $item ) { if ( $item != 'jetpack' ) $jp_menu_order[] = $item; if ( $index == 0 ) $jp_menu_order[] = 'jetpack'; } return $jp_menu_order; } function js_templates() { Jetpack::init()->load_view( 'admin/landing-page-templates.php' ); } function page_render() { // Handle redirects to configuration pages if ( ! empty( $_GET['configure'] ) ) { return $this->render_nojs_configurable(); } global $current_user; $is_connected = Jetpack::is_active(); $user_token = Jetpack_Data::get_access_token( $current_user->ID ); $is_user_connected = $user_token && ! is_wp_error( $user_token ); $is_master_user = $current_user->ID == Jetpack_Options::get_option( 'master_user' ); if ( Jetpack::is_development_mode() ) { $is_connected = true; $is_user_connected = true; $is_master_user = false; } // Set template data for the admin page template $data = array( 'is_connected' => $is_connected, 'is_user_connected' => $is_user_connected, 'is_master_user' => $is_master_user, 'show_jumpstart' => $this->jetpack_show_jumpstart(), 'jumpstart_list' => $this->jumpstart_list_modules(), 'recommended_list' => $this->jumpstart_module_tag( 'Recommended' ), ); Jetpack::init()->load_view( 'admin/admin-page.php', $data ); } /** * Shows a notice message to users after they save Module config settings * @param string $module_id * @return null */ function show_notices_update_settings( $module_id ) { $state = Jetpack::state( 'message' ); switch( $state ) { case 'module_activated' : if ( $module = Jetpack::get_module( Jetpack::state( 'module' ) ) ) { $message = sprintf( __( '%s Activated! You can change the setting of it here.', 'jetpack' ), $module['name'] ); } break; case 'module_configured': $message = __( 'Module settings were saved. ', 'jetpack' ); break; case 'no_message' : break; } if ( isset( $message ) ) { ?>

array(), 'a' => array( 'href' => true ), 'br' => true ) ); ?>

'; echo '
'; $module_name = preg_replace( '/[^\da-z\-]+/', '', $_GET['configure'] ); if ( Jetpack::is_module( $module_name ) && current_user_can( 'jetpack_configure_modules' ) ) { Jetpack::admin_screen_configure_module( $module_name ); } else { echo '

' . esc_html__( 'Error, bad module.', 'jetpack' ) . '

'; } echo '
'; } /* * Build an array of Jump Start stats urls. * requires the build URL args passed as an array * * @param array $jumpstart_stats * @return (array) of built stats urls */ function build_jumpstart_stats_urls( $jumpstart_stats ) { $jumpstart_urls = array(); foreach ( $jumpstart_stats as $value) { $jumpstart_urls[$value] = Jetpack::build_stats_url( array( 'x_jetpack-jumpstart' => $value ) ); } return $jumpstart_urls; } /* * Build an array of NUX admin stats urls. * requires the build URL args passed as an array * * @param array $nux_admin_stats * @return (array) of built stats urls */ function build_nux_admin_stats_urls( $nux_admin_stats ) { $nux_admin_urls = array(); foreach ( $nux_admin_stats as $value) { $nux_admin_urls[ $value ] = Jetpack::build_stats_url( array( 'x_jetpack-nux' => $value ) ); } return $nux_admin_urls; } function page_admin_scripts() { // Enqueue jp.js and localize it wp_enqueue_script( 'jetpack-js', plugins_url( '_inc/jp.js', JETPACK__PLUGIN_FILE ), array( 'jquery', 'wp-util' ), JETPACK__VERSION . '-20121111' ); wp_localize_script( 'jetpack-js', 'jetpackL10n', array( 'ays_disconnect' => __( "This will deactivate all Jetpack modules.\nAre you sure you want to disconnect?", 'jetpack' ), 'ays_unlink' => __( "This will prevent user-specific modules such as Publicize, Notifications and Post By Email from working.\nAre you sure you want to unlink?", 'jetpack' ), 'ays_dismiss' => __( "This will deactivate Jetpack.\nAre you sure you want to deactivate Jetpack?", 'jetpack' ), 'view_all_features' => __( 'View all Jetpack features', 'jetpack' ), 'no_modules_found' => sprintf( __( 'Sorry, no modules were found for the search term "%s"', 'jetpack' ), '{term}' ), 'modules' => Jetpack::get_translated_modules( array_values( Jetpack_Admin::init()->get_modules() ) ), 'currentVersion' => JETPACK__VERSION, 'ajaxurl' => admin_url( 'admin-ajax.php' ), 'jumpstart_modules' => $this->jumpstart_module_tag( 'Jumpstart' ), 'show_jumpstart' => $this->jetpack_show_jumpstart(), 'activate_nonce' => wp_create_nonce( 'jetpack-jumpstart-nonce' ), 'admin_nonce' => wp_create_nonce( 'jetpack-admin-nonce' ), 'jumpstart_stats_urls' => $this->build_jumpstart_stats_urls( array( 'dismiss', 'jumpstarted', 'learnmore', 'viewed', 'manual' ) ), 'admin_stats_urls' => $this->build_nux_admin_stats_urls( array( 'enabled', 'deactivated', 'learnmore' ) ), 'site_url_manage' => Jetpack::build_raw_urls( get_site_url() ), ) ); } }